KeUpdateQosGroupingSets

UINT64 __stdcall KeUpdateQosGroupingSets(UINT64 QpcFrequency, PSTR LeftShift){
  int v2; 
  UINT64 result; 
  _QWORD *v4; 
  __int128 v5; 
  __int64 v6; 
  __int64 v7; 
  __int64 v8; 
  __int64 v9; 
  signed __int64 v10; 
  signed __int64 v11; 
  __int128 v12; 
  unsigned __int8 v13; 
  __int128 v14; 
  v2 = (int)LeftShift;
  LOBYTE(result) = KiIsQosGroupingActive();
  if( (_BYTE)result )
  {
    v5 = *(_OWORD *)(v4[24] + 352i64);
    v6 = *(_QWORD *)(v4[24] + 360i64);
    v7 = *(_QWORD *)(v4[24] + 352i64);
    while( 1 )
    {
      v8 = v4[25];
      v9 = v4[4235];
      v10 = *((_QWORD *)&v5 + 1);
      if( (unsigned int)(v2 - 1) > 1 )
      {
        v11 = v7 & ~v8;
        v10 = ~v9 & *((_QWORD *)&v5 + 1);
      }
      else
      {
        v11 = v7 | v8;
        if( (v9 & v11) == v9 )
          v10 = v9 | *((_QWORD *)&v5 + 1);
      }
      *(_QWORD *)&v12 = v7;
      *((_QWORD *)&v12 + 1) = v6;
      v13 = _InterlockedCompareExchange128(
              (volatile signed __int64 *)(v4[24] + 352i64),
              v10,
              v11,
              (signed __int64 *)&v12);
      result = v12;
      v7 = v12;
      v14 = v12;
      v6 = *((_QWORD *)&v12 + 1);
      if( v13 )
        break;
      *((_QWORD *)&v5 + 1) = *((_QWORD *)&v14 + 1);
    }
  }
  return result;
}

Referenced by:

PpmPerfArbitratorApplyProcessorState