MiBuildDynamicRegion

NTSTATUS __stdcall MiBuildDynamicRegion(_RTL_BITMAP *BitMap, VOID *BaseVa, UINT64 NumberOfBytes){
  UINT64 v4; 
  UINT64 v5; 
  _MMPTE *PteBase; 
  UINT64 v7; 
  UINT64 v8; 
  _MMPTE *v9; 
  _MMPTE *v10; 
  UINT64 v11; 
  unsigned int *Buffer; 

  if( BitMap == (_RTL_BITMAP *)((char *)&stru_140C4DB30 + 968) )
    *(&stru_140C4DB30 + 75) = NumberOfBytes;
  *(_QWORD *)&BitMap[4].SizeOfBitMap = 0i64;
  *(_QWORD *)&BitMap[2].SizeOfBitMap = BaseVa;
  v4 = NumberOfBytes >> 21;
  v5 = ExGenRandom(ExGenRandomDomainUserVisible) & 0x7FFF;
  BitMap[1].Buffer = (unsigned int *)v5;
  if( BitMap == (_RTL_BITMAP *)((char *)&stru_140C4DB30 + 680) )
    BitMap[1].Buffer = (unsigned int *)(v5 & 0xFFF);
  *(_QWORD *)&BitMap[1].SizeOfBitMap = v4;
  PteBase = MmGetPteBase();
  v7 = 1i64;
  if( BitMap == (_RTL_BITMAP *)((char *)&stru_140C4DB30 + 680) && (Buffer = BitMap->Buffer) != 0i64 )
  {
    v10 = (_MMPTE *)((char *)PteBase + (((unsigned __int64)Buffer >> 9) & 0x7FFFFFFFF8i64));
  }
  else
  {
    v8 = 8 * ((v4 >> 6) + ((v4 & 0x3F) != 0));
    v9 = MiReservePtes(
           (_MI_SYSTEM_PTE_TYPE *)((char *)&stru_140C4DB30 + 4432),
           (unsigned int)(v8 >> 12) + ((v8 & 0xFFF) != 0));
    v10 = v9;
    if( !v9 )
      return(int)v9;
    v7 = 3i64;
  }
  MiInitializeDynamicBitmap(
    (_RTL_BITMAP_EX *)BitMap,
    (VOID *)((__int64)(((_QWORD)v10 << 25) - ((_QWORD)PteBase << 25)) >> 16),
    v4,
    v7);
  *(_QWORD *)&BitMap->SizeOfBitMap = 0i64;
  v11 = ExGenRandom(ExGenRandomDomainUserVisible) & 0x7FFF;
  BitMap[1].Buffer = (unsigned int *)v11;
  if( BitMap == (_RTL_BITMAP *)((char *)&stru_140C4DB30 + 680) )
    BitMap[1].Buffer = (unsigned int *)(v11 & 0xFFF);
  LODWORD(v9) = 1;
  return(int)v9;
}

Referenced by:

MiBuildPagedPool
MiInitializeDriverImages
MiInitializeDynamicRegion
MiInitializeKernelStacks
MiInitializeNonPagedPool
MiInitializeSystemPtes