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.