MiSimpleAging
INT64 __fastcall MiSimpleAging(INT64 a1, CHAR a2){
unsigned __int128 v4;
unsigned __int64 v5;
unsigned __int64 v6;
__int64 v7;
unsigned __int64 v8;
char v9;
CHAR *RandomPte;
_WORD v12[3];
CHAR v13;
INT64 v14;
__int64 v15;
CHAR *v16;
INT64(__fastcall *v17)(INT64, UINT64, INT64);
INT64(__fastcall *v18)(INT64);
INT64 *v19;
INT64 result[32];
int v21;
__int16 v22;
int v23;
__int64 v24;
__int64 v25;
_DWORD v26[68];
memset((INT64)result, 0i64);
memset((INT64)&v21, 0i64);
memset((INT64)v12, 0i64);
*(_QWORD *)&v4 = memset((INT64)v26, 0i64);
if( (*(_BYTE *)(a1 + 184) & 0x40) != 0 )
{
v5 = *(_QWORD *)(a1 + 136);
v4 = *(unsigned __int64 *)(a1 + 152) * (unsigned __int128)0xCCCCCCCCCCCCCCCDui64;
if( v5 >= (*((_QWORD *)&v4 + 1) & 0xFFFFFFFFFFFFFFFCui64) )
{
v6 = *(_QWORD *)(a1 + 40);
v4 = v5 * (unsigned __int128)0xCCCCCCCCCCCCCCCDui64;
v7 = *(_QWORD *)(*(_QWORD *)(a1 + 16) + 32i64);
if( v7 + v6 >= (*((_QWORD *)&v4 + 1) & 0xFFFFFFFFFFFFFFFCui64) && v5 - v7 - v6 < 0x400 )
{
v8 = v6 >> 5;
if( v8 < 8 )
v8 = 8i64;
result[6] = v8;
v21 = MiTbFlushType(a1);
v22 = 0;
result[7] = (INT64)&v21;
v24 = 0i64;
v23 = 20;
v25 = 0i64;
if( (v9 & 7) == 0 && *(_QWORD *)(a1 + 624) )
{
v26[1] = 32;
result[31] = (INT64)v26;
}
LODWORD(result[0]) |= 4u;
v19 = result;
v14 = a1;
v13 = a2;
RandomPte = MiGenerateRandomPte((INT64)v12);
v15 = -1i64;
v16 = RandomPte;
v17 = MiSimpleAgePte;
v18 = MiSimpleAgeWorkingSetTail;
v12[0] = 6;
*(_QWORD *)&v4 = MiWalkPageTables((INT64)v12);
}
}
}
return v4;
}Referenced by:
MiReduceWs