MiInitializeUltraSpace
NTSTATUS __stdcall MiInitializeUltraSpace(INT64 a1, INT64 a2){
char *Pool;
char *v5;
int v6;
bool v7;
int v8;
int v9;
int v10;
Pool = (char *)MiAllocatePool(66i64, 0x1000ui64, 0x20206D4Dui64);
v5 = Pool;
if( Pool )
{
*(_QWORD *)(a1 + 24) = 0x4000i64;
*(_QWORD *)(a1 + 32) = Pool;
RtlSetAllBitsEx((_RTL_BITMAP_EX *)(a1 + 24));
v6 = ExGenRandom(ExGenRandomDomainUserVisible);
v7 = !_BitScanReverse((unsigned int *)&v8, 0x4000u);
v9 = v6;
v10 = 0x4000;
if( !v7 )
v10 = 1 << v8;
*(_QWORD *)(a1 + 16) = v9 & (unsigned int)(v10 - 1);
*(_QWORD *)(a1 + 48) = v5 + 2048;
*(_QWORD *)(a1 + 40) = 0x4000i64;
memset(v5 + 2048, 0i64, 0x800u);
*(_QWORD *)(a1 + 8) = a2;
LODWORD(Pool) = 1;
_InterlockedExchange((volatile __int32 *)(a1 + 56), 0x4000);
}
return(int)Pool;
}Referenced by:
MiCreateTopLevelUltraMappings