MiMarkNonPagedHiberPhasePte

NTSTATUS __stdcall MiMarkNonPagedHiberPhasePte(INT64 a1, INT64 a2, INT64 a3){
  int v3; 
  UINT64 v4; 
  __int64 v5; 
  unsigned __int64 PteShadow; 
  int v7; 
  __int64 v8; 
  int v9; 
  UINT64 v10; 
  __int64 v11; 
  _MMPFN *v12; 
  __int64 v13; 
  UINT64 Tag; 
  UINT64 v16; 

  v3 = a3;
  LODWORD(v4) = MI_READ_PTE_LOCK_FREE(a2);
  v16 = v4;
  v5 = v4;
  if( (v4 & 1) != 0 )
  {
    PteShadow = v4;
    LOBYTE(v7) = MiPteInShadowRange((UINT64)&v16);
    if( v7 )
      PteShadow = MiReadPteShadow((__int64)&v16, v5);
    v8 = (PteShadow >> 12) & 0xFFFFFFFFFi64;
    MiIsPfn(v8);
    if( v9 )
    {
      if( (v5 & 0x80u) == 0i64 )
      {
        if( v3 )
          return 0;
        v12 = &MmGetPfnDb()[v8];
        if( v12->u3.ReferenceCount <= 1u && MiIsPfnTradable(v12) && (*(_BYTE *)(v13 + 35) & 8) == 0 )
          return 0;
        v10 = 1i64;
      }
      else
      {
        v10 = 512i64;
        if( v3 <= 1 )
        {
LABEL_16:
          LODWORD(Tag) = 1818521678;
          PoSetHiberRange(0i64, 0x14000ui64, (VOID *)v8, v10, Tag);
          return 0;
        }
        v11 = (unsigned int)(v3 - 1);
        do
        {
          v10 <<= 9;
          --v11;
        }
        while( v11 );
      }
      if( v10 )
        goto LABEL_16;
    }
  }
  return 0;
}

Referenced by:

No references.