MiTrimWorkingSet
INT64 __fastcall MiTrimWorkingSet(INT64 a1, UINT64 a2, CHAR a3, UINT64 a4, INT64 a5){
__int64 v6;
int v9;
UINT64 v10;
int v11;
int v12;
int v13;
bool v14;
CHAR **v15;
__int64 v16;
_QWORD *v17;
__int64 v18;
CHAR *RandomPte;
__int64 v20;
INT64 v22;
_WORD v23[2];
char v24;
CHAR v25;
INT64 v26;
__int64 v27;
CHAR *v28;
INT64(__fastcall *v29)(INT64, UINT64, INT64);
INT64(__fastcall *v30)(INT64);
INT64 *v31;
INT64 result[2];
INT64 v33;
INT64 v34;
__int64 v35;
UINT64 v36;
int v37;
__int16 v38;
__int64 v39;
__int64 v40;
__int64 v41;
INT64 *v42;
_DWORD v43[68];
v6 = (unsigned int)a4;
memset((INT64)result, 0i64);
memset((INT64)v23, 0i64);
memset((INT64)v43, 0i64);
v9 = v6 & 0xF;
LODWORD(result[0]) = v9;
if( (a5 & 2) != 0 )
{
v9 |= 0x20u;
LODWORD(result[0]) = v9;
}
if( (a5 & 4) != 0 )
{
v9 |= 0x40u;
LODWORD(result[0]) = v9;
}
if( (a5 & 1) != 0 )
{
v9 |= 0x80u;
LODWORD(result[0]) = v9;
}
if( (a5 & 8) != 0 )
{
v9 |= 0x100u;
LODWORD(result[0]) = v9;
}
if( (a5 & 0x40) != 0 )
{
v9 |= 0x1000u;
LODWORD(result[0]) = v9;
}
if( (a5 & 0x10) != 0 )
{
v10 = *(_QWORD *)(a1 + 136);
v9 |= 0x400u;
LODWORD(result[0]) = v9;
v36 = v10;
if( a2 > v10 )
a2 = v10;
if( (a5 & 0x20) != 0 )
{
v9 |= 0x800u;
LODWORD(result[0]) = v9;
}
}
if( (_DWORD)dword_140C4E568 )
LODWORD(result[0]) = v9 | 0x10;
v39 = 20i64;
v11 = MiTbFlushType(a1);
v14 = (*(_BYTE *)(a1 + 184) & 7) == 0;
v37 = v11;
v38 = 4;
v40 = 0i64;
v41 = 0i64;
if( v14 && *(_QWORD *)(a1 + 624) )
{
v43[1] = 32;
v42 = (INT64 *)v43;
}
v15 = *(CHAR ***)(a1 + 16);
v16 = 0i64;
if( (unsigned int)v6 >= 8 )
return 0i64;
v17 = (_QWORD *)(a1 + 8 * (v6 + 5));
v18 = (unsigned int)(8 - v6);
do
{
v16 += *v17++;
--v18;
}
while( v18 );
v35 = v16;
if( !v16 )
return 0i64;
result[1] = a2;
v24 = result[0] & 0xF;
v31 = result;
v23[0] = 22;
v29 = MiTrimPte;
v30 = MiTrimWorkingSetTail;
v26 = a1;
v25 = a3;
if( (v12 & v13) != 0 )
{
RandomPte = MiGenerateRandomPte((INT64)v23);
v28 = RandomPte;
}
else
{
RandomPte = *v15;
v28 = *v15;
}
v20 = v27;
if( !RandomPte )
v20 = -1i64;
v27 = v20;
MiWalkPageTables((INT64)v23);
LODWORD(v22) = a5;
MiLogTrimWs(a1, v34, v33, (unsigned int)v6, v22);
return v33;
}Referenced by:
MiForcedTrim
MiReduceWs
MiTrimOrAgeWorkingSet