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