PpmPerfUpdateDomainPolicy

VOID __stdcall PpmPerfUpdateDomainPolicy(CHAR a1){
  INT64 v1; 
  CHAR v2; 
  char v3; 
  char v4; 
  char v5; 
  int v6; 
  unsigned int v7; 
  int *v8; 
  char v9; 
  __int64 v10; 
  int v11; 
  int v12; 
  unsigned int v13; 
  INT64 v14; 
  bool v15; 
  NPTEXTMETRIC *v16; 
  int v17; 
  INT64 v19; 

  v1 = PpmPerfDomainHead;
  v2 = a1;
  v3 = 0;
  v4 = 0;
  if( (INT64 *)PpmPerfDomainHead == &PpmPerfDomainHead )
  {
    if( PpmPerfVmQosSupported )
    {
      v5 = 1;
      v17 = 0;
    }
    else
    {
      v5 = 0;
      v17 = 128;
    }
    LODWORD(v19) = v17;
  }
  else
  {
    v5 = 0;
    LODWORD(v19) = 0;
    v6 = 0;
    if( (INT64 *)PpmPerfDomainHead != &PpmPerfDomainHead )
    {
      do
      {
        if( PpmPerfCalculateQosClassPolicies(v1) )
          v3 = 1;
        if( (*(_BYTE *)(v1 + 528) & 0xF) == 0 )
          v4 = 1;
        if( *(_BYTE *)(v1 + 546) )
        {
          v5 = 1;
        }
        else
        {
          v7 = 0;
          v8 = (int *)(v1 + 520);
          v9 = 1;
          v10 = 4i64;
          do
          {
            v11 = *v8;
            v12 = *v8++;
            v7 |= v11;
            v9 = (v12 & 2) != 0 ? v9 : 0;
            --v10;
          }
          while( v10 );
          v13 = v7 & 0xFFFFFFFD;
          if( v9 )
            v13 = v7;
          v6 |= v13;
        }
        v1 = *(_QWORD *)v1;
      }
      while( (INT64 *)v1 != &PpmPerfDomainHead );
      v2 = a1;
      if( v5 )
        v6 = 0;
      LODWORD(v19) = v6;
    }
  }
  v15 = PpmPerfUpdateQosDisableReasons(&v19) != 0;
  if( v5 != PpmPerfQosEnabled )
  {
    PpmPerfQosEnabled = v5;
    v2 = 1;
    v15 = 1;
  }
  *(&stru_140C23628 + 3532) = v4;
  if( v15 )
    PpmEventQosSupport(0, v14, v16);
  if( v3 || v2 )
  {
    PpmPerfSetAllDomainsToUpdate();
    PpmCheckCustomRun((PPM_CHECK_PIPELINE_ID)((v2 != 0) + 1));
  }
  else
  {
    PpmReleaseLock((INT64 *)&stru_140C23628 + 131);
  }
}

Referenced by:

PopPerfBoostPowerRequest
PopPowerInformationInternal
PpmReapplyPerfPolicy
PpmRegisterPerfStates
PpmUpdatePerfStates