MiProcessWsInSwapSupport
void __fastcall MiProcessWsInSwapSupport(__int64 a1, char a2){
_QWORD *v2;
__int64 v3;
char **v5;
unsigned __int64 v6;
__int64 v7;
__int64 v8;
__int64 v9;
unsigned __int64 v10;
v2 = *(_QWORD **)a1;
v3 = 0i64;
v5 = *(char ***)a1;
v6 = *(_QWORD *)a1 + 16i64 * *(_QWORD *)(a1 + 16);
if( *(_QWORD *)a1 < v6 )
{
do
{
v7 = v2[1] >> 12;
if( (unsigned __int64)(v7 + v3) >= 0x1000 )
{
v8 = 4096 - v3;
if( (a2 & 4) != 0 )
{
v10 = *v2 + (v8 << 12);
if( ((*v2 ^ (v10 - 1)) & 0xFFFFFFFFFFE00000ui64) != 0 )
v8 -= (v10 >> 12) & 0x1FF;
}
v9 = v7 - v8;
v2[1] = v8 << 12;
MiProcessWsInSwapRanges(v5, (unsigned __int64)v2, a2);
if( v9 )
{
v5 = (char **)v2;
*v2 += v2[1];
v2[1] = v9 << 12;
v2 -= 2;
}
else
{
v5 = (char **)(v2 + 2);
}
v3 = 0i64;
}
else
{
v3 += v7;
}
v2 += 2;
}
while( (unsigned __int64)v2 < v6 );
if( v3 )
MiProcessWsInSwapRanges(v5, (unsigned __int64)(v2 - 2), a2);
}
}Referenced by:
MiInSwapSharedWorkingSetWorker
MmInSwapVirtualAddresses
MmInSwapWorkingSet