MiCreateBootSlabEntries

NTSTATUS __stdcall MiCreateBootSlabEntries(_DEVICE_OBJECT *DeviceObject, UINT64 NumberOfPages, INT64 a3, INT64 a4){
  int v4; 
  INT64 v5; 
  UINT64 v6; 
  _MMPFN *v8; 
  _RTL_BITMAP *Pool; 
  _RTL_BITMAP *v10; 
  int v12; 
  UINT64 v13; 

  v4 = a4;
  v5 = a3;
  v6 = NumberOfPages;
  v8 = &MmGetPfnDb()[NumberOfPages];
  if( !a3 )
    return 0;
  while( 1 )
  {
    Pool = (_RTL_BITMAP *)MiAllocatePool(64i64, 0x90ui64, 0x6553694Dui64);
    v10 = Pool;
    if( !Pool )
      break;
    Pool[2].Buffer = (unsigned int *)DeviceObject;
    Pool[3].SizeOfBitMap = 512;
    Pool[3].Buffer = &Pool[4].SizeOfBitMap;
    *(_QWORD *)&Pool[2].SizeOfBitMap = v6 + 511;
    Pool[1].Buffer = (unsigned int *)v6;
    RtlSetAllBits(Pool + 3);
    if( v4 )
      HIDWORD(v10[8].Buffer) |= 1u;
    if( !DeviceObject->Flags )
    {
      v12 = 512;
      do
      {
        if( !v8->PteLong )
          --*(&stru_140C4DB30 + 569);
        ++v8;
        --v12;
      }
      while( v12 );
    }
    if( _bittest64(*(&stru_140C50B28 + 756), v6 >> 9) )
      KeBugCheckEx(0x1Au, (PVOID)0x3030311, v10[1].Buffer, (PVOID)(int)DeviceObject->Flags, 0i64);
    LODWORD(v13) = 0;
    _bittestandset64(*(&stru_140C50B28 + 756), v6 >> 9);
    MiUpdateLargePageBitMap((UINT64)&Irp, v6, 0x200ui64, 1ui64, v13);
    MiInsertSlabEntry((_IRP *)&Irp, DeviceObject);
    v6 += 512i64;
    v5 -= 512i64;
    if( !v5 )
      return 0;
  }
  return -1073741670;
}

Referenced by:

MiCreateKernelHalSlabRange
MiCreateSlabAllocationsFromLoaderBlock