PopReadResumeContext
INT64 __fastcall PopReadResumeContext(_DWORD *a1, _QWORD *a2){
_DWORD *v2;
int v5;
unsigned int *v6;
int v7;
int v8;
UINT64 v9;
unsigned __int64 v10;
unsigned __int64 v11;
__int64 pullResult[5];
PVOID a3;
PVOID P;
P = 0i64;
v2 = 0i64;
pullResult[0] = 0i64;
a3 = 0i64;
v5 = PopReadPagesFromHiberFile(0i64, 1ui64, &P);
v6 = (unsigned int *)P;
v7 = v5;
if( v5 >= 0 )
{
v8 = *(_DWORD *)P;
if( *(_DWORD *)P
&& v8 != 1380075848
&& v8 != 1381258066
&& v8 != 1162559831
&& v8 != 1347113538
&& v8 != 1297239880 )
{
goto LABEL_8;
}
v9 = *((unsigned int *)P + 216);
if( !(_DWORD)v9 )
goto LABEL_8;
v7 = PopReadPagesFromHiberFile(2ui64, v9, &a3);
if( v7 < 0 || (v7 = RtlULongLongMult(v6[216], 0x1000ui64, (UINT64 *)pullResult), v7 < 0) )
{
v2 = a3;
}
else
{
v2 = a3;
if( *(_DWORD *)a3 != 1 )
goto LABEL_8;
v10 = *((unsigned int *)a3 + 1);
if( v10 > pullResult[0] )
goto LABEL_8;
v11 = 48i64 * *((unsigned int *)a3 + 2);
if( v11 <= 0xFFFFFFFF )
{
v7 = 0;
if( (unsigned int)v11 <= (unsigned int)v10 )
{
memset((INT64)a3 + v10, 0i64);
*a1 = v2[1];
*a2 = v2;
goto LABEL_19;
}
LABEL_8:
v7 = -1073741271;
goto LABEL_19;
}
v7 = -1073741675;
}
}
LABEL_19:
if( v6 )
ExFreePoolWithTag(v6, 0x206D654Du);
if( v7 < 0 )
{
if( v2 )
ExFreePoolWithTag(v2, 0x206D654Du);
*a2 = 0i64;
*a1 = 0;
}
return(unsigned int)v7;
}Referenced by:
PopPowerInformationInternal