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