PopReadResumeContext
__int64 __fastcall PopReadResumeContext(_DWORD *a1, _QWORD *a2){
_DWORD *v2;
NTSTATUS PagesFromHiberFile;
unsigned int *v6;
NTSTATUS v7;
int v8;
UINT64 v9;
unsigned __int64 v10;
unsigned __int64 v11;
__int64 pullResult[5];
_XSTATE_FEATURE v14;
PVOID P;
P = 0i64;
v2 = 0i64;
pullResult[0] = 0i64;
v14 = 0i64;
PagesFromHiberFile = PopReadPagesFromHiberFile(0i64, 1ui64, (_XSTATE_FEATURE *)&P);
v6 = (unsigned int *)P;
v7 = PagesFromHiberFile;
if( PagesFromHiberFile >= 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, &v14);
if( v7 < 0 || (v7 = RtlULongLongMult(v6[216], 0x1000ui64, (ULONGLONG *)pullResult), v7 < 0) )
{
v2 = (_DWORD *)v14;
}
else
{
v2 = (_DWORD *)v14;
if( *(_DWORD *)v14.Offset != 1 )
goto LABEL_8;
v10 = *(unsigned int *)(*(_QWORD *)&v14 + 4i64);
if( v10 > pullResult[0] )
goto LABEL_8;
v11 = 48i64 * *(unsigned int *)(*(_QWORD *)&v14 + 8i64);
if( v11 <= 0xFFFFFFFF )
{
v7 = 0;
if( (unsigned int)v11 <= (unsigned int)v10 )
{
memset((VOID *)(*(_QWORD *)&v14 + v10), 0i64, LODWORD(pullResult[0]) - v10);
*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