PopPreallocateHibernateMemory
INT64 __stdcall PopPreallocateHibernateMemory(){
__int64 v0;
UINT64 HighestPhysicalPage;
unsigned int v2;
int v3;
unsigned __int64 v4;
unsigned int v5;
unsigned int v6;
__int64 v7;
__int64 v8;
__int64 v9;
unsigned int v10;
char *PoolWithTag;
char *v12;
INT64 result;
__int64 v14;
__int64 v15;
__int64 v16;
__int64 v17;
__int64 v18;
__int64 v19;
if( dword_140C19650 == 2 )
v0 = 102400i64;
else
v0 = v14;
HighestPhysicalPage = MmGetHighestPhysicalPage(0i64);
v4 = (HighestPhysicalPage + 32) & 0xFFFFFFFFFFFFFFE0ui64;
if( v4 < HighestPhysicalPage || v4 > 0xFFFFFFFF )
return 3221225626i64;
v16 = v2;
v5 = ((unsigned int)v4 >> 3) + v2;
v17 = v5;
v18 = (v5 + ((unsigned int)v4 >> 3) + 7) & 0xFFFFFFF8;
v6 = ((((v5 + ((unsigned int)v4 >> 3) + 7) & 0xFFFFFFF8) + 247) & 0xFFFFFFF8) + 176;
v19 = (((v5 + ((unsigned int)v4 >> 3) + 7) & 0xFFFFFFF8) + 247) & 0xFFFFFFF8;
if( v3 == 2 )
{
v7 = ((((v5 + ((unsigned int)v4 >> 3) + 7) & 0xFFFFFFF8) + 247) & 0xFFFFFFF8) + 176;
v6 = ((((v5 + ((unsigned int)v4 >> 3) + 7) & 0xFFFFFFF8) + 247) & 0xFFFFFFF8) + 232;
}
else
{
v7 = v15;
}
v8 = v6;
v9 = (v6 + 135) & 0xFFFFFFF8;
if( (HvlpFlags & 2) == 0 || (result = HvlpPreallocatePageListResources(), (int)result >= 0) )
{
v10 = (((v9 + 4159) & 0xFFFFF000) + 0x3FFF) & 0xFFFFF000;
PoolWithTag = (char *)ExAllocatePoolWithTag(PagedPool, v10, 0x72626968ui64);
v12 = PoolWithTag;
if( PoolWithTag )
{
if( (unsigned int)MmObtainChargesToLockPagedPool(PoolWithTag, v10) )
{
qword_140C234A8 = (__int64)(v12 + 4096);
Length = v10;
PagedPoolVa = v12;
qword_140C234A0 = (__int64)v12;
if( dword_140C19650 == 2 )
qword_140C234F8 = (__int64)&v12[v0];
else
qword_140C234F8 = 0i64;
LODWORD(xmmword_140C234C0) = v4;
*((_QWORD *)&xmmword_140C234C0 + 1) = &v12[v16];
LODWORD(xmmword_140C234B0) = v4;
*((_QWORD *)&xmmword_140C234B0 + 1) = &v12[v17];
qword_140C234D0 = (__int64)&v12[v18];
if( dword_140C19650 == 2 )
qword_140C23500 = (__int64)&v12[v7];
else
qword_140C23500 = 0i64;
qword_140C234D8 = (INT64)&v12[v9];
Address = &v12[((_DWORD)v9 + 4159) & 0xFFFFF000];
qword_140C234E8 = (INT64)&v12[v8];
qword_140C234F0 = (__int64)&v12[v19];
return 0i64;
}
ExFreePoolWithTag(v12, 0x72626968u);
}
return 3221225626i64;
}
return result;
}Referenced by:
PopEnableHiberFile