MiOutSwapKernelStackPage

__int64 __fastcall MiOutSwapKernelStackPage(__int64 a1, INT64 a2, __int64 a3){
  INT64 v3; 
  VOID *v7; 
  _MMSUPPORT_INSTANCE *AnyMultiplexedVm; 
  __int128 v9; 
  __int64 v10; 
  __int64 result; 
  INT64 a5[20]; 

  v3 = *(_QWORD *)(a1 + 56);
  if( !v3 )
    return 3221225643i64;
  if( *(_QWORD *)(v3 + 8) <= *(_QWORD *)(v3 + 16) || !*(_DWORD *)(a1 + 72) )
    return 3221225993i64;
  memset(a5, 0i64, 0x98u);
  a5[0] = v3;
  AnyMultiplexedVm = MiGetAnyMultiplexedVm(MiWorkingSetTypeKernelStacks, v7);
  v9 = *(_OWORD *)(a1 + 64);
  a5[2] = (INT64)AnyMultiplexedVm;
  a5[3] = a2;
  *(_OWORD *)&a5[5] = v9;
  v10 = ((a3 << 25) - ((_QWORD)MmGetPteBase() << 25)) >> 16;
  MiOutSwapWorkingSet(AnyMultiplexedVm, 0i64, v10, v10, (INT64)a5);
  result = 0i64;
  *(_OWORD *)(a1 + 64) = *(_OWORD *)&a5[5];
  return result;
}

Referenced by:

MiOutPageSingleKernelStack