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