MiReserveWorkingSetSwapSpace

UINT64 __fastcall MiReserveWorkingSetSwapSpace(
        __int64 a1,
        void *a2,
        __int64 a3,
        unsigned int a4,
        unsigned int a5,
        unsigned __int64 a6){
  unsigned int v6; 
  unsigned int *i; 
  unsigned int v10; 
  UINT64 v11; 
  UINT64 result; 
  v6 = a4;
  for( i = *(unsigned int **)(a1 + 8i64 * a4 + 6944); ; i = *(unsigned int **)(a1 + 8i64 * a5 + 6944) )
  {
    if( v6 == a5 || a5 == 16 )
    {
      v11 = 1i64;
    }
    else
    {
      v10 = *i;
      v11 = (i[51] & 0x20) != 0 ? v10 >> 1 : v10 - (v10 >> 6);
    }
    result = MiReserveWorkingSetSwapSpaceRuns(a1, a6, v6, v11, (UINT64)a2);
    if( !result )
      break;
    MiFreeReservationRuns(a1, (UINT64)a2);
    memset((INT64)a2, 0i64);
    if( v6 == a5 || a5 >= 0x10 )
      return 3221226021i64;
    v6 = a5;
  }
  return result;
}

Referenced by:

MmOutSwapVirtualAddresses
MmOutSwapWorkingSet