PopHiberCheckResume

UINT8 __fastcall PopHiberCheckResume(){
  ULONG_PTR v0; 
  UINT8 v1; 
  __int64 v2; 
  unsigned __int64 v3; 
  INT64 v4; 
  UINT64 *v5; 
  __int64 v6; 
  _OWORD *v7; 
  __int128 v8; 
  _BYTE *v10; 
  INT64 v11; 
  __int64 v12; 
  __int128 v13; 
  __int128 v14; 
  UINT64 v15; 
  INT64 result; 
  int v17; 
  __int64 v18; 
  __int64 v19; 
  __int128 v20; 
  __int128 v21; 
  memset((INT64)&result, 0i64);
  v0 = HiberContext;
  v1 = 0;
  v2 = *(_QWORD *)(HiberContext + 200);
  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 )
    {
      HvlConfigureMemoryZeroingOnReset(1);
      if( (HvlpFlags & 2) != 0 )
      {
        HvlNotifyDebugDeviceAvailable(v11, v10);
        HvlNotifyAcpiReenabled();
      }
    }
    if( (_BYTE)KdDebuggerEnabled && !KdPitchDebugger || KdEventLoggingEnabled )
    {
      LOBYTE(KdDebuggerEnabled) = 0;
      KdInitSystem(0i64, 0i64);
    }
    if( (_BYTE)KdDebuggerEnabled && *(_DWORD *)v2 == 1347113538 )
      __debugbreak();
    if( (*(_DWORD *)PopSimulate & 0x40000000) != 0 )
      __debugbreak();
    HalInitializeOnResume(*(MDL **)(v0 + 224), *(PVOID *)(v0 + 232));
    if( *(_QWORD *)(v2 + 928) )
    {
      v12 = *(_QWORD *)(v0 + 264);
      v13 = *(_OWORD *)(v2 + 928);
      v17 = 80;
      v14 = *(_OWORD *)(v2 + 944);
      v15 = *(_QWORD *)(v12 + 8);
      v18 = 0i64;
      v19 = 0x4000i64;
      v20 = v13;
      v21 = v14;
      MmMapMemoryDumpMdlEx2(v15, v4, (INT64)&result, 1i64);
      memset(*(void **)(*(_QWORD *)(v0 + 264) + 8i64), 0, 0x4000ui64);
    }
    v5 = &qword_140C237B8;
    v6 = 3i64;
    qword_140C19658 = *(_QWORD *)(v2 + 904);
    v7 = (_OWORD *)(v2 + 136);
    do
    {
      *(_OWORD *)v5 = *v7;
      *((_OWORD *)v5 + 1) = v7[1];
      *((_OWORD *)v5 + 2) = v7[2];
      *((_OWORD *)v5 + 3) = v7[3];
      *((_OWORD *)v5 + 4) = v7[4];
      *((_OWORD *)v5 + 5) = v7[5];
      *((_OWORD *)v5 + 6) = v7[6];
      v5 += 16;
      v8 = v7[7];
      v7 += 8;
      *((_OWORD *)v5 - 1) = v8;
      --v6;
    }
    while( v6 );
    *(_OWORD *)v5 = *v7;
    *((_OWORD *)v5 + 1) = v7[1];
    *((_OWORD *)v5 + 2) = v7[2];
    *((_OWORD *)v5 + 3) = v7[3];
    *((_OWORD *)v5 + 4) = v7[4];
    *((_OWORD *)v5 + 5) = v7[5];
    *((_OWORD *)v5 + 6) = v7[6];
    v5[14] = *((_QWORD *)v7 + 14);
    *(_BYTE *)(v0 + 4) = 0;
    qword_140C23888 = v3;
    qword_140C23818 = v3 - qword_140C23820;
    if( (HvlpFlags & 2) != 0 )
      *(_DWORD *)(v0 + 20) = 0;
    return 1;
  }
  return v1;
}

Referenced by:

PopSaveHiberContextWrapper