MiInitializeDynamicBitmap

UINT64 __stdcall MiInitializeDynamicBitmap(RTL_BITMAP *BitMap, PVOID BitmapStart, UINT64 NumberOfBits, UINT64 Flags){
  char v4; 
  __int64 v5; 
  UINT64 v6; 
  UINT64 PteAddress; 
  unsigned __int64 v8; 
  int v9; 
  INT64 v10; 
  INT64 v11; 
  CHAR *AnyMultiplexedVm; 
  MMPTE *v13; 
  unsigned __int64 v14; 
  UINT64 ValidPte; 
  bool v16; 
  UINT64 v18; 
  unsigned __int64 v19; 
  __int64 v20; 
  UINT64 v21; 
  UINT64 v22; 
  INT64 v23; 
  bool v24; 
  _MMPFN *a2; 
  UINT64 NumberOfPages; 
  UINT8 v30; 
  v4 = Flags;
  PteAddress = (UINT64)MiGetPteAddress(BitmapStart);
  v8 = ((unsigned __int64)(v5 + 7) >> 15) + (((v6 & 0xFFF) + 4095 + (((unsigned __int64)(v5 + 7) >> 3) & 0xFFF)) >> 12);
  MiGetSystemRegionType(v6);
  if( (v4 & 2) == 0 )
  {
    LOBYTE(v9) = MiMakeZeroedPageTables((PVOID)PteAddress);
    if( !v9 )
      return 0i64;
  }
  a2 = 0i64;
  NumberOfPages = 0i64;
  if( (v4 & 4) != 0 )
  {
    v10 = qword_140C4EAC0;
    v11 = qword_140C4EB30;
  }
  else
  {
    v10 = qword_140C4EAA8;
    v11 = qword_140C4EB40;
  }
  AnyMultiplexedVm = 0i64;
  v30 = 17;
  v13 = 0i64;
  v14 = 0i64;
  ValidPte = MiMakeValidPte(PteAddress, v10, ((unsigned __int8)(v4 & 1) << 29) + 1);
  if( !v8 )
    goto LABEL_11;
  v16 = (v4 & 8) != 0;
  v24 = v16;
  do
  {
    if( (PteAddress & 0xFFF) != 0 || !v16 || v8 - v14 < 0x200 )
    {
      *(_QWORD *)PteAddress = ValidPte;
      PteAddress += 8i64;
      goto LABEL_9;
    }
    v18 = (UINT64)MiGetPteAddress((PVOID)PteAddress);
    if( *(_DWORD *)InitializationPhase )
    {
      if( !AnyMultiplexedVm )
      {
        AnyMultiplexedVm = MiGetAnyMultiplexedVm(3i64);
        v30 = MiLockWorkingSetShared((INT64)AnyMultiplexedVm);
      }
      if( !v13 )
        goto LABEL_22;
      if( (v18 & 0xFFF) == 0 )
      {
        MiUnlockPageTable((INT64)AnyMultiplexedVm, (UINT64)v13);
LABEL_22:
        v13 = MiGetPteAddress((PVOID)v18);
        MiLockPageTable((INT64)AnyMultiplexedVm, (UINT64)v13);
      }
    }
    v19 = MI_READ_PTE_LOCK_FREE(v18);
    MiTransformValidPteInPlace((volatile INT64 *)v18, v18, v11, 1ui64);
    MiSetPfnLink((_QWORD *)MmGetPfnDb() + 6 * ((v19 >> 12) & 0xFFFFFFFFFi64), (INT64)a2);
    a2 = (_MMPFN *)v20;
    LODWORD(v22) = MiPartitionIdToPointer((*(_QWORD *)(v20 + 40) >> 39) & 0x3FF, v21);
    NumberOfPages = v22;
    v14 += 511i64;
    PteAddress = (__int64)((v18 << 25) - ((_QWORD)MmGetPteBase() << 25) + 0x10000000) >> 16;
LABEL_9:
    v16 = v24;
    ++v14;
  }
  while( v14 < v8 );
  if( AnyMultiplexedVm )
  {
    if( v13 )
      MiUnlockPageTable((INT64)AnyMultiplexedVm, (UINT64)v13);
    MiUnlockWorkingSetShared((INT64)AnyMultiplexedVm, v30);
  }
LABEL_11:
  *(_QWORD *)&BitMap->SizeOfBitMap = NumberOfBits;
  BitMap->Buffer = (unsigned int *)BitmapStart;
  if( a2 )
  {
    v23 = MiReturnPfnList(a2);
    MiReturnSplitPageCharges(NumberOfPages, v23);
  }
  return 1i64;
}

Referenced by:

MiBuildDynamicRegion
MiCreatePfnBitMaps
MiCreateRetpolineBitmap
MiInitializeMirroring
MiInitializePteInfo
MiInitializeSystemPtes
MiSessionCreate