MiOrderTrimList

NTSTATUS __stdcall MiOrderTrimList(_MI_PARTITION *Partition, UINT64 TrimAge){
  unsigned int v2; 
  _BYTE *v4; 
  NTSTATUS result; 
  _QWORD *WorkingSetControl; 
  __int64 *v7; 
  __int64 v8; 
  NTSTATUS v9; 
  __int64 v10; 
  __int64 *v11; 
  __int64 v12; 
  __int64 *v13; 
  UINT64 v14; 
  unsigned __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; 
  _QWORD *v27; 
  _QWORD *v28; 
  __int64 v29; 
  unsigned __int64 v30; 
  unsigned int v31; 
  UINT64 ClaimDistribution[8]; 
  __int64 v33[24]; 

  v2 = TrimAge;
  v31 = TrimAge;
  memset(ClaimDistribution, 0i64, sizeof(ClaimDistribution));
  v4 = Partition->gap1AC8;
  if( *(_BYTE **)v4 == v4 )
    return 0;
  WorkingSetControl = Partition->WorkingSetControl;
  v7 = v33;
  v8 = 0i64;
  v9 = 0;
  v30 = 0i64;
  v10 = 12i64;
  do
  {
    v7[1] = (__int64)v7;
    *v7 = (__int64)v7;
    v7 += 2;
    --v10;
  }
  while( v10 );
  while( 1 )
  {
    v11 = *(__int64 **)v4;
    if( *(_BYTE **)v4 == v4 )
      break;
    if( (_BYTE *)v11[1] != v4 || (v12 = *v11, *(__int64 **)(*v11 + 8) != v11) )
LABEL_34:
      __fastfail(3u);
    *(_QWORD *)v4 = v12;
    v13 = v11 - 3;
    *(_QWORD *)(v12 + 8) = v4;
    MiUpdateClaimDistribution((_MMSUPPORT_INSTANCE *)(v11 - 3), ClaimDistribution);
    if( v2 )
    {
      v15 = 0i64;
      if( v2 < 8 )
      {
        v14 = 8 - v2;
        v16 = &v13[v2 + 5];
        do
        {
          v15 += *v16++;
          --v14;
        }
        while( v14 );
      }
    }
    else
    {
      v14 = v13[17];
      v15 = (v14 - v13[14]) & -(__int64)(v13[14] < v14);
    }
    v17 = *((_BYTE *)v13 + 184);
    if( (v17 & 7) == 0 && MiIsStoreProcess((_EPROCESS *)(v11 - 211)) )
    {
      i = 11;
LABEL_16:
      v9 = v30;
      goto LABEL_17;
    }
    if( *((_BYTE *)v13 + 186) == 2 && !MiWorkingSetVeryLarge((_MMSUPPORT_INSTANCE *)(v11 - 3), v14) )
    {
      i = 10;
      goto LABEL_16;
    }
    if( v15 && (v17 >= 0 || v13[17] > (unsigned __int64)v13[14]) )
    {
      for( i = 0; i < 9; ++i )
      {
        if( v15 >= 0x100000ui64 >> i )
          break;
      }
    }
    else
    {
      i = 11;
    }
    if( i >= 0xA )
      goto LABEL_16;
    v21 = -1i64;
    if( v30 + v15 >= v30 )
      v21 = v30 + v15;
    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];
  *(_QWORD *)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 = (_QWORD *)v33[2 * v22 + 1];
  *(_QWORD *)&Partition->gap1AC8[8] = v27;
  *v27 = v4;
LABEL_45:
  memmove(WorkingSetControl + 302, ClaimDistribution, 0x40u);
  v28 = WorkingSetControl + 308;
  v29 = 2i64;
  do
  {
    v8 += *v28++;
    --v29;
  }
  while( v29 );
  WorkingSetControl[301] = v8;
  *((_WORD *)WorkingSetControl + 1173) = MiComputeAgeDistribution(Partition, 0i64);
  result = v9;
  *((_BYTE *)WorkingSetControl + 54) = 1;
  return result;
}

Referenced by:

MiProcessWorkingSets