MiSwapStackPageNoDpc

__int64 __fastcall MiSwapStackPageNoDpc(__int64 a1, __int64 a2, __int64 a3){
  unsigned __int64 v3; 
  _MMPFN *PfnDb; 
  __int64 v8; 
  signed __int64 v9; 
  signed __int64 v10; 
  char v12; 
  char v13; 
  v3 = *(_QWORD *)(a2 + 8) | 0x8000000000000000ui64;
  PfnDb = MmGetPfnDb();
  v8 = (a3 - (__int64)PfnDb) / 48;
  v9 = MI_READ_PTE_LOCK_FREE(v3);
  v10 = v9 & 0xFFFFFFFFFFFFFFDFui64;
  if( v9 != _InterlockedCompareExchange64((volatile signed __int64 *)v3, v9 & 0xFFFFFFFFFFFFFFDFui64, v9) )
    return 0i64;
  KeFlushSingleTb((__int64)((v3 << 25) - ((_QWORD)MmGetPteBase() << 25)) >> 16, 0i64, 2i64);
  MiLockNestedPageAtDpcInline(a3);
  MiCopyPfnEntryEx(a3, a2);
  MiCopyPage(v8, (a2 - (__int64)PfnDb) / 48, (__int128 *)a1, 68);
  if( v10 != _InterlockedCompareExchange64(
                (volatile signed __int64 *)v3,
                v10 ^ (v10 ^ (v8 << 12)) & 0xFFFFFFFFF000i64 | 0x20,
                v10) )
  {
    *(_BYTE *)(a3 + 34) = *(_BYTE *)(a3 + 34) & 0xF8 | 5;
    MiSetOriginalPtePfnFromFreeList((UINT64 *)(a3 + 16));
    *(_QWORD *)(a3 + 40) &= 0x8FFFFFFFFFFFFFFFui64;
    _InterlockedAnd64((volatile signed __int64 *)(a3 + 24), 0x7FFFFFFFFFFFFFFFui64);
    return 0i64;
  }
  _InterlockedAnd64((volatile signed __int64 *)(a3 + 24), 0x7FFFFFFFFFFFFFFFui64);
  v12 = *(_BYTE *)(a2 + 34);
  *(_QWORD *)(a2 + 40) &= 0xFFFFFFFFFFFFFFFui64;
  v13 = v12 & 0xF8 | 5;
  *(_BYTE *)(a2 + 34) = v13;
  *(_BYTE *)(a2 + 34) = v13 & 0xC7;
  *(_BYTE *)(a2 + 35) &= ~0x20u;
  *(_QWORD *)(a2 + 24) &= 0xC000000000000000ui64;
  return 1i64;
}

Referenced by:

MiJumpStackTarget
MiSwapStackPage