KiUpdateMinimumWeight

char __fastcall KiUpdateMinimumWeight(int a1, char a2, _DWORD *a3){
  int v5; 
  unsigned int v6; 
  _QWORD **v7; 
  _QWORD *v8; 
  int v9; 
  int v10; 
  unsigned int v11; 
  if( a1 )
  {
    if( a3 )
      v5 = a3[3];
    else
      v5 = KiGroupSchedulingMinimumRate;
    v6 = 10000;
  }
  else
  {
    if( a3 )
      v5 = a3[4];
    else
      v5 = KiGroupSchedulingMinimumWeight;
    v6 = 9;
  }
  v7 = (_QWORD **)(a3 + 20);
  if( !a3 )
    v7 = &KiSchedulingGroupList;
  v8 = *v7;
  v9 = 0;
  v10 = 0;
  do
  {
    if( (*((_DWORD *)v8 - 13) & 1) == a1 )
    {
      if( !a2 && *((unsigned __int16 *)v8 - 28) == v5 )
        return 0;
      v11 = *((unsigned __int16 *)v8 - 28);
      ++v10;
      v9 += v11;
      if( v11 >= v6 )
        v11 = v6;
      v6 = v11;
    }
    v8 = (_QWORD *)*v8;
  }
  while( v8 != v7 );
  if( a1 )
  {
    if( v10 )
    {
      if( a3 )
        a3[3] = v6;
      else
        KiGroupSchedulingMinimumRate = v6;
    }
    else if( a3 )
    {
      a3[3] = 0;
    }
    else
    {
      KiGroupSchedulingMinimumRate = 0;
    }
  }
  else if( v10 )
  {
    if( a3 )
    {
      a3[4] = v6;
      if( a2 )
        a3[5] = v9;
    }
    else
    {
      KiGroupSchedulingMinimumWeight = v6;
      if( a2 )
        KiGroupSchedulingTotalWeight = v9;
    }
  }
  else if( a3 )
  {
    a3[4] = 0;
    a3[5] = 0;
  }
  else
  {
    KiGroupSchedulingMinimumWeight = 0;
    KiGroupSchedulingTotalWeight = 0;
  }
  return 1;
}

Referenced by:

KeRemoveSchedulingGroup
KeSetSchedulingGroupCpuRates
KeSetSchedulingGroupWeights