ExInitializePagedHeaps
NTSTATUS __stdcall ExInitializePagedHeaps(){
unsigned int v0;
__int64 v1;
NTSTATUS result;
_RTL_RUN_ONCE v3;
_RTL_RUN_ONCE v4;
__int64 Value;
__int128 v6;
__int64 v7;
__int128 v8;
_RTL_RUN_ONCE v9;
v9.Value = 0i64;
v0 = 0;
if( dword_140C57DD0 )
{
while( 1 )
{
v8 = 0i64;
BYTE2(v8) = v0;
LOBYTE(v8) = 2;
v1 = 1048i64 * v0;
result = ExCreateHeap((__int64)&v8, 0i64, &v9);
if( result < 0 )
break;
v3.Ptr = v9.Ptr;
ExPoolState[v1 + 1826] = v9;
RtlpDynamicLookasideInitialize((char *)&ExPoolState[v1 + 1832]);
*(_QWORD *)(v3.Value + 40) = &ExPoolState[v1 + 1832];
v8 = 0i64;
BYTE2(v8) = v0;
LOBYTE(v8) = 10;
result = ExCreateHeap((__int64)&v8, 0i64, &v9);
if( result < 0 )
break;
v4.Ptr = v9.Ptr;
++v0;
ExPoolState[v1 + 1827] = v9;
*(_DWORD *)(v4.Value + 816) |= 2u;
*(_BYTE *)(v4.Value + 269) |= 8u;
*(_BYTE *)(v4.Value + 461) |= 8u;
if( v0 >= dword_140C57DD0 )
goto LABEL_5;
}
}
else
{
LABEL_5:
v8 = 0i64;
LOBYTE(v8) = 2;
result = ExCreateHeap((__int64)&v8, 0i64, &v9);
if( result >= 0 )
{
Value = v9.Value;
v8 = 0i64;
LOBYTE(v8) = 10;
v6 = v8;
*(_DWORD *)(v9.Value + 816) |= 2u;
*(_BYTE *)(Value + 269) |= 8u;
*(_BYTE *)(Value + 461) |= 8u;
qword_140CDAE10 = Value;
v8 = v6;
result = ExCreateHeap((__int64)&v8, 0i64, &v9);
if( result >= 0 )
{
v7 = v9.Value;
*(_DWORD *)(v9.Value + 816) |= 2u;
*(_BYTE *)(v7 + 269) |= 8u;
*(_BYTE *)(v7 + 461) |= 8u;
qword_140CDAE18 = v7;
return 0;
}
}
}
return result;
}Referenced by:
MiInitSystem