MiOutSwapKernelStackPage

INT64 __fastcall MiOutSwapKernelStackPage(INT64 a1, INT64 a2, INT64 a3){
  INT64 v3; 
  CHAR *AnyMultiplexedVm; 
  __int128 v8; 
  INT64 v9; 
  INT64 v10; 
  INT64 result[5]; 
  __int128 v12; 
  v3 = *(_QWORD *)(a1 + 56);
  if( !v3 )
    return 3221225643i64;
  if( *(_QWORD *)(v3 + 8) <= *(_QWORD *)(v3 + 16) || !*(_DWORD *)(a1 + 72) )
    return 3221225993i64;
  memset((INT64)result, 0i64);
  result[0] = v3;
  AnyMultiplexedVm = MiGetAnyMultiplexedVm(4i64);
  v8 = *(_OWORD *)(a1 + 64);
  result[2] = (INT64)AnyMultiplexedVm;
  result[3] = a2;
  v12 = v8;
  v9 = ((a3 << 25) - ((_QWORD)MmGetPteBase() << 25)) >> 16;
  MiOutSwapWorkingSet((INT64)AnyMultiplexedVm, 0i64, v9, v9, (INT64)result);
  v10 = 0i64;
  *(_OWORD *)(a1 + 64) = v12;
  return v10;
}

Referenced by:

MiOutPageSingleKernelStack