MiSimpleAging
VOID __stdcall MiSimpleAging(_MMSUPPORT_INSTANCE *WsInfo){
char v1;
char v2;
unsigned __int64 WorkingSetSize;
unsigned __int64 v5;
unsigned __int64 LockedEntries;
unsigned __int64 v7;
char v8;
CHAR *RandomPte;
INT64 v10[22];
__int64 v11[32];
__int64 v12[24];
int v13[68];
v2 = v1;
memset(v11, 0i64, sizeof(v11));
memset(v12, 0i64, 0xB8u);
memset(v10, 0i64, sizeof(v10));
memset(v13, 0i64, 0x108u);
if( (WsInfo->Flags._bf_0 & 0x40) != 0 )
{
WorkingSetSize = WsInfo->WorkingSetSize;
if( WorkingSetSize >= (((WsInfo->MaximumWorkingSetSize * (unsigned __int128)0xCCCCCCCCCCCCCCCDui64) >> 64) & 0xFFFFFFFFFFFFFFFCui64) )
{
v5 = WsInfo->AgeDistribution[0];
LockedEntries = WsInfo->VmWorkingSetList->LockedEntries;
if( LockedEntries + v5 >= (((WorkingSetSize * (unsigned __int128)0xCCCCCCCCCCCCCCCDui64) >> 64) & 0xFFFFFFFFFFFFFFFCui64)
&& WorkingSetSize - LockedEntries - v5 < 0x400 )
{
v7 = v5 >> 5;
if( v7 < 8 )
v7 = 8i64;
v11[6] = v7;
LODWORD(v12[0]) = MiTbFlushType(WsInfo);
WORD2(v12[0]) = 0;
v11[7] = (__int64)v12;
v12[2] = 0i64;
LODWORD(v12[1]) = 20;
v12[3] = 0i64;
if( (v8 & 7) == 0 )
{
if( WsInfo[3].AgeDistribution[1] )
{
v13[1] = 32;
v11[31] = (__int64)v13;
}
}
LODWORD(v11[0]) |= 4u;
v10[21] = (INT64)v11;
v10[3] = (INT64)WsInfo;
BYTE6(v10[0]) = v2;
RandomPte = MiGenerateRandomPte((INT64)v10);
v10[5] = -1i64;
v10[7] = (INT64)RandomPte;
v10[19] = (INT64)MiSimpleAgePte;
v10[20] = (INT64)MiSimpleAgeWorkingSetTail;
LOWORD(v10[0]) = 6;
MiWalkPageTables((INT64)v10);
}
}
}
}Referenced by:
MiReduceWs