MiReleaseInPageRefs

VOID __stdcall MiReleaseInPageRefs(_MMPFN *Pfn1){
  unsigned __int64 v2; 
  _UNICODE_STRING *v3; 
  UINT8 v4; 
  PWCHAR v5; 
  int v6; 
  UINT64 v7; 
  union {unsigned __int64 Long;volatile unsigned __int64 VolatileLong;_MMPTE_HARDWARE Hard;_MMPTE_PROTOTYPE Proto;_MMPTE_SOFTWARE Soft;_MMPTE_TIMESTAMP TimeStamp;_MMPTE_TRANSITION Trans;_MMPTE_SUBSECTION Subsect;_MMPTE_LIST List;} v8; 

  MiLockAndDecrementShareCount(&MmGetPfnDb()[Pfn1->u4._bf_0 & 0xFFFFFFFFFi64], 0i64);
  v2 = MiLockPageInline(Pfn1);
  Pfn1->u2._bf_0 |= 0x4000000000000000ui64;
  LOBYTE(v6) = MI_PFN_IS_PROTO((_UNICODE_STRING *)Pfn1, v3, v4, v5);
  if( v6 && (*(_DWORD *)(&Pfn1->3 + 1) & 0x400i64) != 0 )
  {
    _InterlockedAnd64(&Pfn1->u2.Lock, 0x7FFFFFFFFFFFFFFFui64);
    __writecr8(v2);
    v8.Long = (unsigned __int64)Pfn1->OriginalPte.u;
    if( *(&stru_140C4DB30 + 42) )
    {
      if( (v8.Long & 0x10) == 0 )
        v8.Long &= ~*(&stru_140C4DB30 + 42);
    }
    MiDereferenceControlAreaPfnList(
      *(_CONTROL_AREA **)(v8.Hard._bf_0 >> 16),
      (_SUBSECTION *)(v8.Hard._bf_0 >> 16),
      v7,
      3ui64);
  }
  else
  {
    Pfn1->OriginalPte.u.Long &= 0xFFFFFFFFFFFFFFF9ui64;
    _InterlockedAnd64(&Pfn1->u2.Lock, 0x7FFFFFFFFFFFFFFFui64);
    __writecr8(v2);
  }
}

Referenced by:

MiInvalidateCollidedIos