MiComparePageHash
__int64 __fastcall MiComparePageHash(__int64 a1, unsigned int a2, int a3){
INT64 *v3;
__int64 v4;
unsigned int v6;
int v8;
unsigned __int64 v9;
unsigned __int64 v10;
UINT64 v11;
UINT64 v13;
v3 = (INT64 *)(a1 + 232);
v4 = a2;
v6 = 0;
v8 = 0;
v9 = ExAcquireSpinLockExclusive((PEX_SPIN_LOCK)(a1 + 232));
v10 = *(_QWORD *)(a1 + 216) + 4 * v4;
v13 = MI_READ_PTE_LOCK_FREE((INT64)MmGetPteBase() + ((v10 >> 9) & 0x7FFFFFFFF8i64));
v11 = v13;
if( (v13 & 1) != 0 && *(_DWORD *)v10 != a3 )
{
MiPteInShadowRange((UINT64)&v13);
if( (*((_BYTE *)MmGetPfnDb() + 48 * ((v11 >> 12) & 0xFFFFFFFFFi64) + 34) & 0x10) != 0 )
{
if( !byte_140C4E5C0 )
v8 = -1073741761;
}
else
{
*(_DWORD *)v10 = a3;
}
ExReleaseSpinLockExclusiveFromDpcLevel(v3);
v6 = v8;
}
else
{
ExReleaseSpinLockExclusiveFromDpcLevel(v3);
}
__writecr8(v9);
return v6;
}Referenced by:
MiValidatePagefilePageHash