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