MiComputeSystemTrimCriteria
__int64 __fastcall MiComputeSystemTrimCriteria(_QWORD *a1, __int64 a2){
__int64 v2;
unsigned int v5;
UINT64 AvailablePagesBelowPriority;
_MI_PARTITION *v7;
unsigned int StandbyRepurposed;
int v9;
unsigned int v10;
unsigned int v11;
int v12;
unsigned int v13;
bool v14;
unsigned __int64 v15;
unsigned __int8 v16;
unsigned int v17;
UINT64 v18;
unsigned __int64 v19;
__int64 v20;
int v21;
UINT64 v22;
UINT64 v23;
__int64 v24;
int v25;
unsigned __int64 v26;
int v27;
int v28;
unsigned int v29;
unsigned __int64 v30;
unsigned __int8 v31;
UINT64 v32;
unsigned __int16 v33;
unsigned __int64 v34;
UINT16 v36;
UINT64 v37;
unsigned __int64 v38;
unsigned __int64 v39;
unsigned __int64 v40;
__int64 v41;
unsigned __int64 v42;
unsigned __int64 v43;
unsigned __int64 v44;
__int64 v45;
int v46;
unsigned int v47;
UINT64 v48;
v2 = a1[856];
v46 = 0;
v5 = *(_DWORD *)(v2 + 40);
AvailablePagesBelowPriority = MiGetAvailablePagesBelowPriority((_MI_PARTITION *)a1, 6ui64);
StandbyRepurposed = MiGetStandbyRepurposed(v7, 1ui64);
v10 = *(_DWORD *)(v2 + 44);
v11 = StandbyRepurposed;
v12 = *(_DWORD *)(v2 + 120);
v13 = StandbyRepurposed - v10;
v14 = v10 < v11;
*(_DWORD *)(v2 + 44) = v11;
v15 = *(_QWORD *)(v2 + 2400);
v16 = 0;
v17 = v14 ? v13 : 0;
v18 = v15 - AvailablePagesBelowPriority;
v47 = v17;
v19 = 0i64;
if( AvailablePagesBelowPriority > v15 )
v18 = AvailablePagesBelowPriority - v15;
v20 = v12 & 7;
*(_QWORD *)(v2 + 2200) += (v18 >> 3) - (*(_QWORD *)(v2 + 8 * v20 + 2208) >> 3);
*(_QWORD *)(v2 + 8 * v20 + 2208) = v18;
if( *(_DWORD *)(v2 + 80) == 4 && *(_WORD *)(v2 + 2348) && *(_BYTE *)(v2 + 2350) && *(_BYTE *)(v2 + 2351) )
{
v21 = v9;
}
else
{
v9 = 0;
v21 = 1;
if( AvailablePagesBelowPriority <= 0x120 )
v9 = 1;
}
v22 = *(_QWORD *)(v2 + 2400);
v23 = v22;
if( v9 == v21 )
{
v24 = 0i64;
}
else
{
v9 = 0;
v24 = AvailablePagesBelowPriority - *(_QWORD *)(v2 + 2368);
v23 = v22 >> 2;
}
if( AvailablePagesBelowPriority < v23 )
{
v37 = v22 - v24;
}
else
{
if( AvailablePagesBelowPriority >= 4 * v22 )
goto LABEL_10;
if( v24 >= 0 )
goto LABEL_10;
v37 = v22 - v24;
if( AvailablePagesBelowPriority >= v22 - v24 )
goto LABEL_10;
}
v19 = *(_QWORD *)(v2 + 2384);
v38 = v37 - AvailablePagesBelowPriority;
v16 = v21;
if( v38 <= v19 )
v19 = v38;
LABEL_10:
v48 = v17;
if( v17 >= AvailablePagesBelowPriority >> 2 )
{
v39 = v17 - (AvailablePagesBelowPriority >> 2);
if( v39 > v19 && v19 < 0x2000 && !v9 )
{
v19 = v17 - (AvailablePagesBelowPriority >> 2);
v16 = 3;
if( v39 > 0x2000 )
v19 = 0x2000i64;
}
}
v25 = MiGetStandbyRepurposed((_MI_PARTITION *)a1, 4ui64);
v28 = v25;
if( v19 )
{
if( v19 < 0x1000 && !v27 )
v19 = 4096i64;
}
else if( !v27 )
{
v29 = v25 - *(_DWORD *)(v2 + 48);
if( v29 > 0x20000 )
{
v40 = a1[888];
if( v40 >= 0x100000 || v40 >= a1[866] >> 2 )
{
*(_DWORD *)(v2 + 48) = v25;
}
else
{
v19 = 0x8000i64;
v16 = 2;
}
}
else if( v47 && v29 > 0x18000 && *(_QWORD *)(v2 + 2408) < 0x20000ui64 )
{
v46 = 1;
}
}
if( AvailablePagesBelowPriority < 4 * v26 )
{
v41 = *(_QWORD *)(v2 + 2200);
v42 = 4 * v41;
if( 4 * v41 >= v26 )
{
v44 = 2 * v41;
if( 2 * v41 <= v26 )
goto LABEL_18;
v43 = *(_QWORD *)(v2 + 2384);
*(_QWORD *)(v2 + 2400) = v44;
if( v44 <= v43 )
goto LABEL_18;
}
else
{
v43 = *(_QWORD *)(v2 + 2376);
*(_QWORD *)(v2 + 2400) = v42;
if( v42 >= v43 )
goto LABEL_18;
}
*(_QWORD *)(v2 + 2400) = v43;
goto LABEL_18;
}
if( AvailablePagesBelowPriority > 16 * v26 )
*(_QWORD *)(v2 + 2400) = *(_QWORD *)(v2 + 2392);
LABEL_18:
*(_QWORD *)(v2 + 2368) = AvailablePagesBelowPriority;
if( !v19 )
{
v30 = *(_QWORD *)(v2 + 2360);
v31 = 0;
if( v30 )
{
if( v30 > *(_QWORD *)(v2 + 2408) )
{
v32 = v48;
v31 = 10;
if( *(_WORD *)(v2 + 2346) < 0xFAu )
*(_WORD *)(v2 + 2346) = 250;
goto LABEL_25;
}
*(_QWORD *)(v2 + 2360) = 0i64;
}
if( *(_QWORD *)(v2 + 2408) >= (unsigned __int64)(4i64 * *(_QWORD *)(v2 + 2384)) )
goto LABEL_48;
if( !*(_WORD *)(v2 + 2346) )
goto LABEL_22;
v36 = MiComputeAgeDistribution((_MI_PARTITION *)a1, 1ui64);
*(_WORD *)(v2 + 2346) = v36;
if( v36 )
v31 = 11;
if( v31 )
{
LABEL_48:
v32 = v48;
}
else
{
LABEL_22:
v32 = v48;
if( v48 >= AvailablePagesBelowPriority >> 4 )
{
v31 = 9;
}
else if( v46 == 1 )
{
v31 = 8;
}
}
LABEL_25:
v33 = *(_WORD *)(v2 + 2348);
if( v33 )
{
if( *(_WORD *)(v2 + 2346) < v33 )
*(_WORD *)(v2 + 2346) = v33;
if( !v31 )
{
v31 = 12;
*(_WORD *)(v2 + 2346) = v33;
}
}
*(_BYTE *)a2 = 0;
*(_QWORD *)(a2 + 96) = 0i64;
*(_QWORD *)(a2 + 80) = 0i64;
*(_QWORD *)(a2 + 72) = a1[888];
*(_QWORD *)(a2 + 104) = 0i64;
*(_BYTE *)(a2 + 2) = v31;
*(_OWORD *)(a2 + 8) = 0i64;
*(_OWORD *)(a2 + 24) = 0i64;
*(_OWORD *)(a2 + 40) = 0i64;
*(_OWORD *)(a2 + 56) = 0i64;
if( v31 )
{
++*(_DWORD *)(v2 + 4i64 * v31 + 2488);
v5 |= 2u;
}
else if( *(_BYTE *)(v2 + 55) == 1 )
{
v5 |= 0x80u;
*(_WORD *)(v2 + 2346) = 10;
}
else if( !v5 )
{
v5 = 64;
}
goto LABEL_32;
}
MiPulseLowAvailableEvent((_MI_PARTITION *)a1);
if( (unsigned __int8)(v16 - 2) <= 1u )
*(_QWORD *)(v2 + 2360) = v19;
*(_QWORD *)(a2 + 80) = v19;
*(_BYTE *)a2 = 0;
*(_QWORD *)(a2 + 96) = 0i64;
v5 |= 1u;
v45 = a1[888];
*(_QWORD *)(a2 + 104) = 0i64;
*(_QWORD *)(a2 + 72) = v19 + v45;
v32 = v48;
*(_BYTE *)(a2 + 2) = v16;
*(_OWORD *)(a2 + 8) = 0i64;
*(_OWORD *)(a2 + 24) = 0i64;
*(_OWORD *)(a2 + 40) = 0i64;
*(_OWORD *)(a2 + 56) = 0i64;
*(_DWORD *)(v2 + 48) = v28;
++*(_DWORD *)(v2 + 4i64 * v16 + 2488);
LABEL_32:
if( AvailablePagesBelowPriority && v32 < AvailablePagesBelowPriority )
v34 = 100 * v47 / AvailablePagesBelowPriority;
else
LOBYTE(v34) = 100;
*(_BYTE *)(a2 + 3) = v34;
if( (v5 & 1) == 0 )
*(_BYTE *)(a2 + 4) = 1;
return v5;
}Referenced by:
MiProcessWorkingSets