MiBuildDynamicRegion

NTSTATUS __stdcall MiBuildDynamicRegion(RTL_BITMAP *BitMap, PVOID BaseVa, UINT64 a3){
  UINT64 v4; 
  INT64 v5; 
  _MMPTE *PteBase; 
  UINT64 v7; 
  UINT64 v8; 
  INT64 v9; 
  INT64 v10; 
  INT64 v11; 
  unsigned int *Buffer; 
  if( BitMap == (RTL_BITMAP *)&qword_140C4DEF8 )
    qword_140C4DD88 = a3;
  *(_QWORD *)&BitMap[4].SizeOfBitMap = 0i64;
  *(_QWORD *)&BitMap[2].SizeOfBitMap = BaseVa;
  v4 = a3 >> 21;
  v5 = ExGenRandom(1i64) & 0x7FFF;
  BitMap[1].Buffer = (unsigned int *)v5;
  if( BitMap == (RTL_BITMAP *)&qword_140C4DDD8 )
    BitMap[1].Buffer = (unsigned int *)(v5 & 0xFFF);
  *(_QWORD *)&BitMap[1].SizeOfBitMap = v4;
  PteBase = MmGetPteBase();
  v7 = 1i64;
  if( BitMap == (RTL_BITMAP *)&qword_140C4DDD8 && (Buffer = BitMap->Buffer) != 0i64 )
  {
    v10 = (INT64)PteBase + (((unsigned __int64)Buffer >> 9) & 0x7FFFFFFFF8i64);
  }
  else
  {
    v8 = 8 * ((v4 >> 6) + ((v4 & 0x3F) != 0));
    v9 = MiReservePtes((INT64)&qword_140C4EC80, (unsigned int)(v8 >> 12) + ((v8 & 0xFFF) != 0));
    v10 = v9;
    if( !v9 )
      return v9;
    v7 = 3i64;
  }
  MiInitializeDynamicBitmap(BitMap, (PVOID)(((v10 << 25) - ((_QWORD)PteBase << 25)) >> 16), v4, v7);
  *(_QWORD *)&BitMap->SizeOfBitMap = 0i64;
  v11 = ExGenRandom(1i64) & 0x7FFF;
  BitMap[1].Buffer = (unsigned int *)v11;
  if( BitMap == (RTL_BITMAP *)&qword_140C4DDD8 )
    BitMap[1].Buffer = (unsigned int *)(v11 & 0xFFF);
  LODWORD(v9) = 1;
  return v9;
}

Referenced by:

MiBuildPagedPool
MiInitializeDriverImages
MiInitializeDynamicRegion
MiInitializeKernelStacks
MiInitializeNonPagedPool
MiInitializeSystemPtes