MiReserveWorkingSetSwapSpaceRuns

NTSTATUS __stdcall MiReserveWorkingSetSwapSpaceRuns(
        _MI_PARTITION *Partition,
        UINT64 NumberOfPages,
        UINT64 PageFileNumber,
        UINT64 ReservationBoundary,
        _MI_WS_SWAP_RESERVATION_RUN *ReservationRuns){
  char v5; 
  unsigned __int64 v6; 
  INT64 v7; 
  _MI_WS_SWAP_RESERVATION_RUN *v9; 
  __int64 v10; 
  __int64 v11; 
  unsigned int FreePageFileSpace; 

  v5 = PageFileNumber;
  v6 = NumberOfPages;
  v7 = (unsigned int)ReservationBoundary;
  if( Partition->Vp.PagingFile[(unsigned int)PageFileNumber]->FreeReservationSpace >= NumberOfPages )
  {
    v9 = ReservationRuns;
    if( ReservationRuns < ReservationRuns + 20 )
    {
      v10 = 80i64;
      do
      {
        if( !v6 )
          break;
        LODWORD(v11) = MiMakePageFilePte(v7);
        *(_QWORD *)v9 = ((unsigned __int64)(v5 & 0xF) << 12) | v11 & 0xFFFFFFFFFFFF0FFFui64;
        FreePageFileSpace = MiFindFreePageFileSpace(Partition, (_MMPTE *)v9, v6, 0x29ui64);
        v9[2] = FreePageFileSpace;
        if( (unsigned __int64)FreePageFileSpace * (v10 >> 4) < v6 )
          break;
        v6 -= FreePageFileSpace;
        v9 += 4;
        v10 -= 16i64;
      }
      while( v9 < ReservationRuns + 20 );
    }
  }
  return v6;
}

Referenced by:

MiReserveWorkingSetSwapSpace