MiPfnReferenceCountIsZero

VOID __stdcall MiPfnReferenceCountIsZero(_MMPFN *Pfn1, UINT64 PageFrameIndex, UINT8 a3){
  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;} v4; 
  __int64 v5; 
  char v6; 
  INT64 v7; 
  UINT64 v8; 
  PVOID BugCheckParameter4; 
  UINT64 v10; 

  if( (Pfn1->u2._bf_0 & 0x3FFFFFFFFFFFFFFFi64) != 0 )
    KeBugCheckEx(0x4Eu, (PVOID)7, (PVOID)PageFrameIndex, (PVOID)(Pfn1->u2._bf_0 & 0x3FFFFFFFFFFFFFFFi64), 0i64);
  if( (Pfn1->u2._bf_0 & 0x4000000000000000i64) != 0 )
  {
    v6 = *((_BYTE *)&Pfn1->u3 + 3);
    if( (v6 & 0x10) != 0 )
      *((_BYTE *)&Pfn1->u3 + 3) = v6 & 0xEF;
    MiReleasePageFileSpace(
      *(_MI_PARTITION **)(*(&stru_140C4DB30 + 267) + 8 * (((unsigned __int64)Pfn1->u4._bf_0 >> 39) & 0x3FF)),
      Pfn1->OriginalPte,
      1ui64);
    MiInsertPageInFreeOrZeroedList(PageFrameIndex, 2ui64, v7, v8, (UINT64)BugCheckParameter4, v10);
  }
  else
  {
    v4.Long = (unsigned __int64)Pfn1->OriginalPte.u;
    v5 = -9i64;
    if( (v4.Long & 0x400) != 0 )
      v5 = -2049i64;
    Pfn1->OriginalPte.u.Long = v4.Long & v5;
    if( (*(_BYTE *)(&Pfn1->u3 + 1) & 0x10) != 0 )
      MiInsertPageInList(Pfn1, 8ui64, 0xFFu);
    else
      MiInsertPageInList(Pfn1, 4ui64, 0xFFu);
  }
}

Referenced by:

MiConvertStandbyToProto
MiCopyDataPageToImagePage
MiInsertProtectedStandbyPage
MiMakePageAvoidRead
MiMirrorPerformBrownWrites
MiNoPagesLastChance
MiPurgeBadFileOnlyPages
MiRemoveLockedPageChargeAndDecRef
MiResolveProtoPteFault
MiResolveTransitionFault
MiSwapHardFaultPage
MiUnlockImageSection
MiUnlockProtoPoolPage
MiWalkEntireImage
MmCheckCachedPageStates
MmUnlockPages