MiSwapStackPageNoDpc

NTSTATUS __stdcall MiSwapStackPageNoDpc(_MMPTE_COPY_LIST *PteCopyList, _MMPFN *Pfn1, _MMPFN *NewPfn){
  unsigned __int64 v3; 
  _MMPFN *PfnDb; 
  __int64 v8; 
  signed __int64 v9; 
  signed __int64 v10; 
  char v12; 
  char v13; 

  v3 = Pfn1->PteLong | 0x8000000000000000ui64;
  PfnDb = MmGetPfnDb();
  v8 = NewPfn - PfnDb;
  LODWORD(v9) = MI_READ_PTE_LOCK_FREE(v3);
  v10 = v9 & 0xFFFFFFFFFFFFFFDFui64;
  if( v9 != _InterlockedCompareExchange64((volatile signed __int64 *)v3, v9 & 0xFFFFFFFFFFFFFFDFui64, v9) )
    return 0;
  KeFlushSingleTb((__int64)((v3 << 25) - ((_QWORD)MmGetPteBase() << 25)) >> 16, FlushKernel, 2i64);
  MiLockNestedPageAtDpcInline(NewPfn);
  MiCopyPfnEntryEx((INT64)NewPfn, (INT64)Pfn1);
  MiCopyPage(v8, Pfn1 - PfnDb, PteCopyList, 0x44ui64);
  if( v10 != _InterlockedCompareExchange64(
                (volatile signed __int64 *)v3,
                v10 ^ (v10 ^ (v8 << 12)) & 0xFFFFFFFFF000i64 | 0x20,
                v10) )
  {
    *((_BYTE *)&NewPfn->u3 + 2) = *(_BYTE *)(&NewPfn->u3 + 1) & 0xF8 | 5;
    MiSetOriginalPtePfnFromFreeList(&NewPfn->OriginalPte.u.Long);
    NewPfn->u4._bf_0 &= 0x8FFFFFFFFFFFFFFFui64;
    _InterlockedAnd64(&NewPfn->u2.Lock, 0x7FFFFFFFFFFFFFFFui64);
    return 0;
  }
  _InterlockedAnd64(&NewPfn->u2.Lock, 0x7FFFFFFFFFFFFFFFui64);
  v12 = *((_BYTE *)&Pfn1->u3 + 2);
  Pfn1->u4._bf_0 &= 0xFFFFFFFFFFFFFFFui64;
  v13 = v12 & 0xF8 | 5;
  *((_BYTE *)&Pfn1->u3 + 2) = v13;
  *((_BYTE *)&Pfn1->u3 + 2) = v13 & 0xC7;
  *((_BYTE *)&Pfn1->u3 + 3) &= ~0x20u;
  Pfn1->u2._bf_0 &= 0xC000000000000000ui64;
  return 1;
}

Referenced by:

MiJumpStackTarget
MiSwapStackPage