MiSwapHardFaultPage

VOID __fastcall MiSwapHardFaultPage(_MMPTE *PoINTerPte, _MMPFN *Pfn1, _MMPFN *NewPfn){
  INT64 v6; 
  _MMPFN *PfnDb; 
  __int64 v8; 
  UINT8 *v9; 
  v6 = MI_READ_PTE_LOCK_FREE((INT64)PoINTerPte);
  PfnDb = MmGetPfnDb();
  *(_QWORD *)PoINTerPte = MiUpdateTransitionPteFrame(v6, (NewPfn - PfnDb) / 48);
  MiLockNestedPageAtDpcInline((INT64)NewPfn);
  MiCopyPfnEntryEx((INT64)NewPfn, (INT64)Pfn1);
  if( ((*((_QWORD *)Pfn1 + 5) >> 60) & 7) == 3 )
    *((_QWORD *)NewPfn + 5) = *((_QWORD *)NewPfn + 5) & 0x8FFFFFFFFFFFFFFFui64 | 0x3000000000000000i64;
  *((_QWORD *)NewPfn + 3) &= 0xC000000000000000ui64;
  *((_QWORD *)Pfn1 + 3) |= 0x4000000000000000ui64;
  v8 = *((_QWORD *)Pfn1 + 2);
  if( (v8 & 4) != 0 )
  {
    v8 &= ~4ui64;
    *((_QWORD *)Pfn1 + 2) = v8;
  }
  if( (v8 & 2) != 0 )
    *((_QWORD *)Pfn1 + 2) = v8 & 0xFFFFFFFFFFFFFFFDui64;
  if( (unsigned int)MiRemoveLockedPageCharge((INT64)Pfn1) )
    MiPfnReferenceCountIsZero(Pfn1, (Pfn1 - PfnDb) / 48, v9);
  else
    *((_WORD *)NewPfn + 16) = 1;
  _InterlockedAnd64((volatile signed __int64 *)Pfn1 + 3, 0x7FFFFFFFFFFFFFFFui64);
}

Referenced by:

MiFinishHardFault
MiIdealClusterPage