MiReleaseInPageRefs
VOID __fastcall MiReleaseInPageRefs(_MMPFN *Pfn1){
unsigned __int64 v2;
UNICODE_STRING *v3;
UINT8 v4;
PWCHAR v5;
int v6;
UINT64 v7;
__int64 v8;
MiLockAndDecrementShareCount((UINT64)MmGetPfnDb() + 48 * (*((_QWORD *)Pfn1 + 5) & 0xFFFFFFFFFi64), 0);
v2 = (unsigned __int8)MiLockPageInline((INT64)Pfn1);
*((_QWORD *)Pfn1 + 3) |= 0x4000000000000000ui64;
LOBYTE(v6) = MI_PFN_IS_PROTO((UNICODE_STRING *)Pfn1, v3, v4, v5);
if( v6 && (*((_DWORD *)Pfn1 + 4) & 0x400i64) != 0 )
{
_InterlockedAnd64((volatile signed __int64 *)Pfn1 + 3, 0x7FFFFFFFFFFFFFFFui64);
__writecr8(v2);
v8 = *((_QWORD *)Pfn1 + 2);
if( qword_140C4DC80 )
{
if( (v8 & 0x10) == 0 )
v8 &= ~qword_140C4DC80;
}
MiDereferenceControlAreaPfnList(*(_CONTROL_AREA **)(v8 >> 16), (_SUBSECTION *)(v8 >> 16), v7, 3ui64);
}
else
{
*((_QWORD *)Pfn1 + 2) &= 0xFFFFFFFFFFFFFFF9ui64;
_InterlockedAnd64((volatile signed __int64 *)Pfn1 + 3, 0x7FFFFFFFFFFFFFFFui64);
__writecr8(v2);
}
}Referenced by:
MiInvalidateCollidedIos