PopHiberCheckResume
UINT8 __stdcall PopHiberCheckResume(){
_QWORD *v0;
UINT8 v1;
__int64 v2;
unsigned __int64 v3;
__int64 v4;
INT64 v5;
char *v6;
__int64 v7;
_OWORD *v8;
__int128 v9;
_BYTE *v11;
INT64 v12;
__int64 v13;
__int128 v14;
__int128 v15;
UINT64 v16;
INT64 v17[40];
memset(v17, 0i64, 0x138u);
v0 = HiberContext;
v1 = 0;
v2 = *((_QWORD *)HiberContext + 25);
if( *(_DWORD *)v2 )
{
PopCheckpointSystemSleep(PopSleepCheckpointHiberKernelHandoff);
((void(__fastcall *)(_QWORD))off_140C00838[0])(0i64);
PoResumeFromHibernate = 1;
v3 = __rdtsc();
((void(__fastcall *)(__int64))off_140C006C0[0])(5i64);
((void(__fastcall *)(__int64))off_140C00838[0])(1i64);
if( (_BYTE)HvlHypervisorConnected )
{
HvlRestoreEnlightenment();
off_140C007A8[0]();
}
((void(__fastcall *)(__int64))off_140C007C0)(5i64);
if( (_BYTE)HvlHypervisorConnected )
{
LOBYTE(v4) = 1;
HvlConfigureMemoryZeroingOnReset(v4);
if( (HvlpFlags & 2) != 0 )
{
HvlNotifyDebugDeviceAvailable(v12, v11);
HvlNotifyAcpiReenabled();
}
}
if( (_BYTE)KdDebuggerEnabled && !KdPitchDebugger || KdEventLoggingEnabled )
{
LOBYTE(KdDebuggerEnabled) = 0;
KdInitSystem(0i64, 0i64);
}
if( (_BYTE)KdDebuggerEnabled && *(_DWORD *)v2 == 1347113538 )
__debugbreak();
if( (*(&stru_140C23628 + 582) & 0x40000000) != 0 )
__debugbreak();
HalInitializeOnResume(v0[28], v0[29]);
if( *(_QWORD *)(v2 + 928) )
{
v13 = v0[33];
v14 = *(_OWORD *)(v2 + 928);
LODWORD(v17[1]) = 80;
v15 = *(_OWORD *)(v2 + 944);
v16 = *(_QWORD *)(v13 + 8);
v17[4] = 0i64;
v17[5] = 0x4000i64;
*(_OWORD *)&v17[6] = v14;
*(_OWORD *)&v17[8] = v15;
MmMapMemoryDumpMdlEx2(v16, v5, (INT64)v17, 1i64);
memset(*(void **)(v0[33] + 8i64), 0, 0x4000ui64);
}
v6 = (char *)&stru_140C23628 + 400;
v7 = 3i64;
*(&ExBootDevicesRemovedEvent + 139) = *(_QWORD *)(v2 + 904);
v8 = (_OWORD *)(v2 + 136);
do
{
*(_OWORD *)v6 = *v8;
*((_OWORD *)v6 + 1) = v8[1];
*((_OWORD *)v6 + 2) = v8[2];
*((_OWORD *)v6 + 3) = v8[3];
*((_OWORD *)v6 + 4) = v8[4];
*((_OWORD *)v6 + 5) = v8[5];
*((_OWORD *)v6 + 6) = v8[6];
v6 += 128;
v9 = v8[7];
v8 += 8;
*((_OWORD *)v6 - 1) = v9;
--v7;
}
while( v7 );
*(_OWORD *)v6 = *v8;
*((_OWORD *)v6 + 1) = v8[1];
*((_OWORD *)v6 + 2) = v8[2];
*((_OWORD *)v6 + 3) = v8[3];
*((_OWORD *)v6 + 4) = v8[4];
*((_OWORD *)v6 + 5) = v8[5];
*((_OWORD *)v6 + 6) = v8[6];
*((_QWORD *)v6 + 14) = *((_QWORD *)v8 + 14);
*((_BYTE *)v0 + 4) = 0;
*(&stru_140C23628 + 76) = v3;
*(&stru_140C23628 + 62) = v3 - *(&stru_140C23628 + 63);
if( (HvlpFlags & 2) != 0 )
*((_DWORD *)v0 + 5) = 0;
return 1;
}
return v1;
}Referenced by:
PopSaveHiberContextWrapper