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