MiCreateSlabAllocationsFromLoaderBlock

NTSTATUS __stdcall MiCreateSlabAllocationsFromLoaderBlock(INT64 a1){
  int BootSlabEntries; 
  _DEVICE_OBJECT *v4; 
  __int64 **v5; 
  _DEVICE_OBJECT *v6; 
  __int64 *i; 
  int v8; 
  unsigned __int64 v9; 
  unsigned __int64 v10; 
  INT64 v11[14]; 

  if( (dword_140C50AC4[0] & 8) != 0 )
  {
    LODWORD(v4) = MiGetSlabAllocator((INT64)&Irp, 0i64, 24);
    v5 = (__int64 **)(a1 + 32);
    v6 = v4;
    for( i = *v5; i != (__int64 *)v5; i = (__int64 *)*i )
    {
      v8 = *((_DWORD *)i + 4);
      if( v8 == 29 || v8 == 36 )
      {
        v9 = i[4];
        v10 = i[3];
        if( ((v10 | v9) & 0x1FF) != 0 || !v10 || !v9 || v9 + v10 < v10 || v9 + v10 - 1 > 0xFFFFFFFFFi64 )
          KeBugCheckEx(0x1Au, (PVOID)0x3030310, (PVOID)v10, (PVOID)v9, 0i64);
        BootSlabEntries = MiCreateBootSlabEntries(v6, i[3], i[4], 0i64);
        if( BootSlabEntries < 0 )
          return BootSlabEntries;
      }
    }
  }
  BootSlabEntries = 0;
  if( (MiFlags & 0x8000) != 0 )
  {
    memset(v11, 0i64, 0x68u);
    v11[1] = (dword_140C50AC4[0] >> 3) & 1;
    return VslpEnterIumSecureMode(2u, 219, 0i64, (INT64)v11);
  }
  return BootSlabEntries;
}

Referenced by:

MiInitSystem