MiOrderTrimList

UINT64 __stdcall MiOrderTrimList(_MI_PARTITION *Partition, UINT64 TrimAge){
  unsigned int v2; 
  __int64 *v4; 
  UINT64 result; 
  __int64 v6; 
  __int64 *v7; 
  __int64 v8; 
  UINT64 v9; 
  __int64 v10; 
  __int64 *v11; 
  __int64 v12; 
  __int64 *v13; 
  unsigned __int64 v14; 
  __int64 v15; 
  __int64 *v16; 
  char v17; 
  unsigned int i; 
  __int64 *v19; 
  __int64 v20; 
  __int64 v21; 
  unsigned int v22; 
  __int64 *v23; 
  unsigned int v24; 
  __int64 v25; 
  __int64 *v26; 
  __int64 **v27; 
  _QWORD *v28; 
  __int64 v29; 
  unsigned __int64 v30; 
  unsigned int v31; 
  __int64 Src[8]; 
  __int64 v33[24]; 
  v2 = TrimAge;
  v31 = TrimAge;
  memset((INT64)Src, 0i64);
  v4 = (__int64 *)((char *)Partition + 6856);
  if( (__int64 *)*v4 == v4 )
    return 0i64;
  v6 = *((_QWORD *)Partition + 856);
  v7 = v33;
  v8 = 0i64;
  v9 = 0i64;
  v30 = 0i64;
  v10 = 12i64;
  do
  {
    v7[1] = (__int64)v7;
    *v7 = (__int64)v7;
    v7 += 2;
    --v10;
  }
  while( v10 );
  while( 1 )
  {
    v11 = (__int64 *)*v4;
    if( (__int64 *)*v4 == v4 )
      break;
    if( (__int64 *)v11[1] != v4 || (v12 = *v11, *(__int64 **)(*v11 + 8) != v11) )
LABEL_34:
      __fastfail(3u);
    *v4 = v12;
    v13 = v11 - 3;
    *(_QWORD *)(v12 + 8) = v4;
    MiUpdateClaimDistribution((INT64)(v11 - 3), (UINT64 *)Src);
    if( v2 )
    {
      v14 = 0i64;
      if( v2 < 8 )
      {
        v15 = 8 - v2;
        v16 = &v13[v2 + 5];
        do
        {
          v14 += *v16++;
          --v15;
        }
        while( v15 );
      }
    }
    else
    {
      v14 = (v13[17] - v13[14]) & -(__int64)(v13[14] < (unsigned __int64)v13[17]);
    }
    v17 = *((_BYTE *)v13 + 184);
    if( (v17 & 7) == 0 && (unsigned int)MiIsStoreProcess((__int64)(v11 - 211)) )
    {
      i = 11;
LABEL_16:
      v9 = v30;
      goto LABEL_17;
    }
    if( *((_BYTE *)v13 + 186) == 2 && !MiWorkingSetVeryLarge((INT64)(v11 - 3)) )
    {
      i = 10;
      goto LABEL_16;
    }
    if( v14 && (v17 >= 0 || v13[17] > (unsigned __int64)v13[14]) )
    {
      for( i = 0; i < 9; ++i )
      {
        if( v14 >= 0x100000ui64 >> i )
          break;
      }
    }
    else
    {
      i = 11;
    }
    if( i >= 0xA )
      goto LABEL_16;
    v21 = -1i64;
    if( v30 + v14 >= v30 )
      v21 = v30 + v14;
    v9 = v21;
    v30 = v21;
LABEL_17:
    v19 = &v33[2 * i];
    v20 = *v19;
    if( *(__int64 **)(*v19 + 8) != v19 )
      goto LABEL_34;
    v2 = v31;
    *v11 = v20;
    v11[1] = (__int64)v19;
    *(_QWORD *)(v20 + 8) = v11;
    *v19 = (__int64)v11;
  }
  v22 = 0;
  v23 = v33;
  while( 1 )
  {
    v24 = v22 + 1;
    if( (__int64 *)*v23 != v23 )
      break;
    v23 += 2;
    ++v22;
    if( v24 >= 0xC )
      goto LABEL_45;
  }
  v25 = v33[2 * v22];
  *v4 = v25;
  *(_QWORD *)(v25 + 8) = v4;
  if( v24 < 0xC )
  {
    v26 = &v33[2 * v24];
    do
    {
      if( (__int64 *)*v26 != v26 )
      {
        *(_QWORD *)v33[2 * v22 + 1] = *v26;
        *(_QWORD *)(*v26 + 8) = v33[2 * v22 + 1];
        v22 = v24;
      }
      ++v24;
      v26 += 2;
    }
    while( v24 < 0xC );
  }
  v27 = (__int64 **)v33[2 * v22 + 1];
  *((_QWORD *)Partition + 858) = v27;
  *v27 = v4;
LABEL_45:
  memmove((UINT8 *)(v6 + 2416), (UINT8 *)Src, 0x40ui64);
  v28 = (_QWORD *)(v6 + 2464);
  v29 = 2i64;
  do
  {
    v8 += *v28++;
    --v29;
  }
  while( v29 );
  *(_QWORD *)(v6 + 2408) = v8;
  *(_WORD *)(v6 + 2346) = MiComputeAgeDistribution(Partition, 0i64);
  result = v9;
  *(_BYTE *)(v6 + 54) = 1;
  return result;
}

Referenced by:

MiProcessWorkingSets