MiInitializeDynamicBitmap

NTSTATUS __stdcall MiInitializeDynamicBitmap(
        _RTL_BITMAP_EX *BitMap,
        VOID *BitmapStart,
        UINT64 NumberOfBits,
        UINT64 Flags){
  char v4; 
  __int64 v5; 
  UINT64 v6; 
  UINT64 PteAddress; 
  unsigned __int64 v8; 
  NTSTATUS SystemRegionType; 
  _MI_SYSTEM_VA_TYPE v10; 
  INT64 v11; 
  INT64 v12; 
  unsigned __int64 v13; 
  _MMSUPPORT_INSTANCE *AnyMultiplexedVm; 
  _MMPTE *v15; 
  unsigned __int64 v16; 
  unsigned __int64 v17; 
  bool v18; 
  unsigned __int64 v19; 
  int v20; 
  UINT64 v21; 
  VOID *v23; 
  UINT64 v24; 
  UINT64 v25; 
  unsigned __int64 PteShadow; 
  int v27; 
  _MMPFN *v28; 
  unsigned __int64 EntireField; 
  UINT64 v30; 
  UINT64 v31; 
  char v32; 
  bool v33; 
  UINT64 v34; 
  _MMPFN *PfnList; 
  UINT64 NumberOfPages; 
  char WsIrql; 

  v34 = 0i64;
  v4 = Flags;
  PteAddress = (UINT64)MiGetPteAddress(BitmapStart);
  v8 = ((unsigned __int64)(v5 + 7) >> 15) + (((v6 & 0xFFF) + 4095 + (((unsigned __int64)(v5 + 7) >> 3) & 0xFFF)) >> 12);
  SystemRegionType = MiGetSystemRegionType(v6);
  v10 = MiVaSessionSpace;
  if( SystemRegionType != 1 )
    v10 = MiVaSystemPtes;
  if( (v4 & 2) == 0 && !MiMakeZeroedPageTables((_MMPTE *)PteAddress, (_MMPTE *)(PteAddress + 8 * (v8 - 1)), 1ui64, v10) )
    return 0;
  PfnList = 0i64;
  NumberOfPages = 0i64;
  if( (v4 & 4) != 0 )
  {
    v11 = *(&stru_140C4DB30 + 498);
    v12 = *(&stru_140C4DB30 + 512);
  }
  else
  {
    v11 = *(&stru_140C4DB30 + 495);
    v12 = *(&stru_140C4DB30 + 514);
  }
  LODWORD(v13) = MiMakeValidPte((_XSTATE_CONFIGURATION *)PteAddress, v11, ((unsigned __int8)(v4 & 1) << 29) + 1);
  AnyMultiplexedVm = 0i64;
  WsIrql = 17;
  v15 = 0i64;
  v16 = 0i64;
  v17 = v13;
  if( !v8 )
    goto LABEL_14;
  v18 = (v4 & 8) != 0;
  v33 = v18;
  do
  {
    if( (PteAddress & 0xFFF) == 0 && v18 && v8 - v16 >= 0x200 )
    {
      v24 = (UINT64)MiGetPteAddress((VOID *)PteAddress);
      if( (_DWORD)InitializationPhase )
      {
        if( !AnyMultiplexedVm )
        {
          AnyMultiplexedVm = MiGetAnyMultiplexedVm(MiWorkingSetTypeSystemPtes, v23);
          MiLockWorkingSetShared();
          WsIrql = v32;
        }
        if( v15 )
        {
          if( (v24 & 0xFFF) != 0 )
            goto LABEL_23;
          MiUnlockPageTable((INT64)AnyMultiplexedVm, (UINT64)v15);
        }
        v15 = MiGetPteAddress((VOID *)v24);
        MiLockPageTable((INT64)AnyMultiplexedVm, (UINT64)v15);
      }
LABEL_23:
      LODWORD(v25) = MI_READ_PTE_LOCK_FREE(v24);
      v34 = v25;
      PteShadow = v25;
      MiTransformValidPteInPlace((INT64 *)v24, v24, v12, 1ui64);
      LOBYTE(v27) = MiPteInShadowRange((UINT64)&v34);
      if( v27 )
        PteShadow = MiReadPteShadow((__int64)&v34, PteShadow);
      MiSetPfnLink(
        &MmGetPfnDb()[(PteShadow >> 12) & 0xFFFFFFFFFi64].u1.$976DF529DAC3D73085C9E386D94B91E6::$E228DCF3D8940E384DBC5EFCA756D8B6::_bf_0,
        (__int64)PfnList);
      EntireField = v28->u4.EntireField;
      PfnList = v28;
      LODWORD(v31) = MiPartitionIdToPointer((EntireField >> 39) & 0x3FF, v30);
      NumberOfPages = v31;
      v16 += 511i64;
      PteAddress = (__int64)((v24 << 25) - ((_QWORD)MmGetPteBase() << 25) + 0x10000000) >> 16;
      goto LABEL_12;
    }
    v19 = v17;
    LOBYTE(v20) = MiPteInShadowRange(PteAddress);
    if( v20 && (KeGetCurrentThread()->ApcState.Process->Flags3 & 0x1000) != 0 && (v17 & 1) != 0 )
      v19 = v17 | 0x8000000000000000ui64;
    *(_QWORD *)PteAddress = v19;
    PteAddress += 8i64;
LABEL_12:
    v18 = v33;
    ++v16;
  }
  while( v16 < v8 );
  if( AnyMultiplexedVm )
  {
    if( v15 )
      MiUnlockPageTable((INT64)AnyMultiplexedVm, (UINT64)v15);
    LOBYTE(v21) = WsIrql;
    MiUnlockWorkingSetShared(AnyMultiplexedVm, v21);
  }
LABEL_14:
  BitMap->SizeOfBitMap = NumberOfBits;
  BitMap->Buffer = (unsigned __int64 *)BitmapStart;
  if( PfnList )
  {
    MiReturnPfnList(PfnList);
    MiReturnSplitPageCharges(NumberOfPages);
  }
  return 1;
}

Referenced by:

MiBuildDynamicRegion
MiCreatePfnBitMaps
MiCreateRetpolineBitmap
MiInitializeMirroring
MiInitializePteInfo
MiInitializeSystemPtes
MiSessionCreate