PpmPerfApplyDomainState

__int64 __fastcall PpmPerfApplyDomainState(__int64 a1){
  __int64 v1; 
  unsigned __int8 v3; 
  BYTE *v4; 
  CHAR PerfPolicyClass; 
  __int64 v6; 
  unsigned int v7; 
  char v8; 
  unsigned int v9; 
  unsigned int v10; 
  unsigned int v11; 
  INT64 *v12; 
  INT64 v13; 
  unsigned int v14; 
  unsigned __int64 v15; 
  unsigned int v16; 
  unsigned int v17; 
  __int64 v18; 
  __int128 *v19; 
  char v20; 
  __int64 v22; 
  int v23; 
  unsigned int v24; 
  char v25; 
  unsigned int v26; 
  unsigned int v27; 
  unsigned int v28; 
  unsigned int v29; 
  unsigned int v30; 
  unsigned int v31; 
  unsigned int v32; 
  unsigned int v33; 
  unsigned int v34; 
  __int64 v35; 
  unsigned int v36; 
  unsigned int v37; 
  unsigned int v38; 
  bool v39; 
  unsigned int v40; 
  unsigned int v41; 
  char v42; 
  unsigned int v43; 
  unsigned int v44; 
  int v45; 
  __int64 v46; 
  EVENT_DESCRIPTOR *v47; 
  int IsSubsetAffinity; 
  char v49; 
  char v50; 
  int v51; 
  char v52; 
  char v53; 
  unsigned __int8 v54; 
  char v55; 
  unsigned int v56; 
  unsigned int v57; 
  int v58; 
  unsigned int v59; 
  unsigned int v60; 
  unsigned int v61; 
  unsigned int v62; 
  unsigned int v63; 
  unsigned int v64; 
  unsigned int v65; 
  unsigned int v66; 
  __int64 v67; 
  __int64 v68; 
  __int64 v69; 
  __int128 v70; 
  __int128 v71; 
  __int64 v72; 
  v72 = 0i64;
  v1 = *(_QWORD *)(a1 + 216);
  v66 = 0;
  v68 = 0i64;
  v3 = 0;
  v70 = 0i64;
  v69 = *(_QWORD *)(v1 + 8);
  v71 = 0i64;
  v53 = 0;
  v55 = 0;
  v4 = *(BYTE **)(a1 + 16);
  v67 = (__int64)PpmCurrentProfile + 2736 * dword_140C23D0C + 40;
  PerfPolicyClass = PpmGetPerfPolicyClass(v4);
  v7 = *(_DWORD *)(a1 + 328);
  v8 = 0;
  v54 = PerfPolicyClass;
  v9 = 100;
  v10 = *(_DWORD *)(a1 + 320);
  v11 = v6;
  v56 = 100;
  v60 = v6;
  v52 = 0;
  v59 = v6;
  v62 = v10;
  v63 = v10;
  v57 = v7;
  v64 = v7;
  if( PpmPerfArtificialDomainEnabled == (_DWORD)v6
    || (IsSubsetAffinity = KeIsSubsetAffinityEx((_KAFFINITY_EX *)(a1 + 24), &PpmPerfNewCoreParkingMask),
        v7 = v57,
        v8 = 0,
        v6 = 0i64,
        IsSubsetAffinity)
    || *(_DWORD *)(a1 + 208) != v11 )
  {
    v12 = *(INT64 **)a1;
    v13 = a1;
  }
  else
  {
    v13 = PpmPerfDomainHead;
    v12 = &PpmPerfDomainHead;
  }
  if( (INT64 *)v13 != v12 )
  {
    v14 = v11;
    while( 1 )
    {
      v15 = *(unsigned int *)(v13 + 364);
      if( v13 == a1 )
        goto LABEL_6;
      if( !*(_DWORD *)(v13 + 208)
        && !(unsigned int)KeIsSubsetAffinityEx((_KAFFINITY_EX *)(v13 + 24), &PpmPerfNewCoreParkingMask)
        && *(_QWORD *)(*(_QWORD *)(a1 + 16) - 32936i64) == *(_QWORD *)(*(_QWORD *)(v13 + 16) - 32936i64) )
      {
        v49 = *(_BYTE *)(a1 + 204);
        v50 = *(_BYTE *)(v13 + 204);
        if( v49 == v50 || PpmPerfQosEnabled )
          break;
      }
LABEL_11:
      v13 = *(_QWORD *)v13;
      if( (INT64 *)v13 == v12 )
      {
        v16 = v63;
        v6 = 0i64;
        v7 = v64;
        v8 = v52;
        v59 = v14;
        v9 = v56;
        v60 = v11;
        v62 = v63;
        v57 = v64;
        goto LABEL_13;
      }
    }
    if( *(_BYTE *)(a1 + 205) != *(_BYTE *)(v13 + 205) )
    {
      v15 = (*(_QWORD *)(v13 + 344) * v15 + (*(_QWORD *)(v13 + 344) >> 1)) / *(_QWORD *)(a1 + 344);
      if( (unsigned int)v15 > *(_DWORD *)(a1 + 320) )
        LODWORD(v15) = *(_DWORD *)(a1 + 320);
    }
    if( v49 != v50 )
    {
      if( (unsigned int)v15 <= v14 )
        LODWORD(v15) = v14;
      v14 = v15;
      goto LABEL_11;
    }
LABEL_6:
    if( (unsigned int)v15 <= v11 )
      LODWORD(v15) = v11;
    v11 = v15;
    if( *(_BYTE *)(v13 + 372) )
      v52 = 1;
    v53 |= PpmPerfApplyCapsAndFloors(&v63, &v64, &v56, v13);
    goto LABEL_11;
  }
  v16 = v62;
LABEL_13:
  v17 = v6;
  v18 = v6;
  while( 1 )
  {
    if( *(_DWORD *)(a1 + 4 * v18 + 516) )
    {
      v19 = (__int128 *)(a1 + 8 * (v17 - 1 + 4i64 * (v17 - 1) + 69));
      goto LABEL_17;
    }
    v58 = v6;
    v22 = 28 * v18 + a1 + 376;
    v23 = v6;
    if( *(_BYTE *)(v22 + 21) )
    {
      v24 = *(_DWORD *)(a1 + 328);
      v23 = 1;
      v58 = 1;
    }
    else
    {
      v24 = *(_DWORD *)(a1 + 324);
    }
    if( v24 <= *(_DWORD *)(v22 + 8) )
      v24 = *(_DWORD *)(v22 + 8);
    v25 = *(_BYTE *)(v22 + 22);
    if( v25 )
    {
      v26 = *(_DWORD *)(a1 + 320);
    }
    else
    {
      v23 |= 8u;
      v26 = v9;
      v58 = v23;
      if( !PpmPerfBoostAtGuaranteed )
        v26 = 100;
    }
    if( *(_DWORD *)v22 < 0x64u && v26 >= *(_DWORD *)v22 )
      v26 = *(_DWORD *)v22;
    if( v26 >= *(_DWORD *)(v22 + 4) )
      v26 = *(_DWORD *)(v22 + 4);
    if( PpmPerfMaxOverrideEnabled )
    {
      v27 = 100;
    }
    else if( PpmCheckLatencyBoostActive )
    {
      v27 = *(unsigned __int8 *)(v22 + 23);
    }
    else if( v8 )
    {
      v27 = *(_DWORD *)(v67 + 4i64 * v54 + 112);
    }
    else
    {
      v27 = 0;
    }
    if( v27 >= v26 )
      v27 = v26;
    v28 = v27 > v24 ? v27 : v24;
    if( v28 < v9 )
    {
      v29 = v24;
      if( v27 > v24 )
        v29 = v27;
    }
    else
    {
      v29 = v9;
    }
    if( v29 > v7 )
    {
      if( v27 > v24 )
        v30 = v27;
      else
        v30 = v24;
      if( v30 < v9 )
      {
        v7 = v24;
        if( v27 > v24 )
          v7 = v27;
      }
      else
      {
        v7 = v9;
      }
    }
    v61 = v7;
    v31 = v26 > v24 ? v26 : v24;
    if( v31 < v16 )
    {
      v32 = v26;
      if( v26 <= v24 )
        v32 = v24;
    }
    else
    {
      v32 = v16;
    }
    if( v32 <= v57 )
    {
      v26 = v57;
    }
    else
    {
      v33 = v26 > v24 ? v26 : v24;
      if( v33 < v16 )
      {
        if( v26 <= v24 )
          v26 = v24;
      }
      else
      {
        v26 = v16;
      }
    }
    if( PpmPerfMaxOverrideEnabled )
    {
      v34 = v26;
      v35 = v26;
    }
    else
    {
      if( *(_BYTE *)(v22 + 24) )
      {
        v34 = v60;
        if( v60 <= v59 )
          v34 = v59;
      }
      else
      {
        v34 = v60;
      }
      v35 = v34;
      if( v34 > v26 )
      {
        v35 = v26;
        v51 = v23 | 2;
        if( !v53 )
          v51 = v23;
        v23 = v51;
        v58 = v51;
        goto LABEL_71;
      }
    }
    if( v34 < v7 )
      v35 = v7;
LABEL_71:
    if( v25 == 2 || (unsigned __int8)(v25 - 4) <= 2u )
    {
      v36 = (unsigned __int8)(v25 - 5) <= 1u || PpmPerfBoostAtGuaranteed ? v9 : 100;
      if( (unsigned int)v35 >= v36 )
        v35 = v26;
    }
    if( PpmPerfMaxOverrideEnabled )
      v37 = 0;
    else
      v37 = *(_DWORD *)(v67 + 60);
    v38 = v34 - v37;
    v39 = v37 < v34;
    v40 = v7;
    if( !v39 )
      v38 = 0;
    if( v38 >= v7 )
      v40 = v38;
    v65 = v40;
    if( v40 > v9 )
      v65 = v9;
    if( PpmPerfMaxOverrideEnabled || PpmCheckDeadlineBoostActive )
      v41 = 0;
    else
      v41 = *(_DWORD *)(v22 + 16);
    if( v52 && v41 >= *(_DWORD *)(v67 + 4i64 * v54 + 104) )
      v41 = *(_DWORD *)(v67 + 4i64 * v54 + 104);
    v42 = *(_BYTE *)(v22 + 20);
    if( !v42 )
      v58 = v23 | 4;
    v43 = (*(__int64(__fastcall **)(__int64, __int64, _QWORD, _QWORD, unsigned int, _DWORD, int, unsigned int *, __int64 *))(a1 + 280))(
            v69,
            v35,
            v7,
            v26,
            v41,
            *(_DWORD *)(v22 + 12),
            v58,
            &v66,
            &v68);
    v44 = v65;
    if( v65 > v43 )
      v44 = v43;
    HIDWORD(v72) = v42 == 0;
    *(_QWORD *)&v70 = v68;
    *(_QWORD *)&v71 = __PAIR64__(v26, v61);
    LODWORD(v72) = *(_DWORD *)(v22 + 12);
    *((_QWORD *)&v70 + 1) = __PAIR64__(v66, v43);
    *((_QWORD *)&v71 + 1) = __PAIR64__(v41, v44);
    if( !v17 && *(_QWORD *)(a1 + 304) )
      BYTE5(v72) = 1;
    v3 = v55;
    v19 = &v70;
LABEL_17:
    if( *(_BYTE *)(a1 + 764)
      || (v20 = *((_BYTE *)v19 + 36), *(_BYTE *)(a1 + 40 * v18 + 588) != v20)
      || *(_DWORD *)(a1 + 40 * v18 + 568) != *((_DWORD *)v19 + 4)
      || *(_DWORD *)(a1 + 40 * v18 + 572) != *((_DWORD *)v19 + 5)
      || *(_DWORD *)(a1 + 40 * v18 + 580) != *((_DWORD *)v19 + 7) )
    {
      v9 = v56;
LABEL_98:
      v3 = 1;
      v55 = 1;
      *(_OWORD *)(a1 + 40 * v18 + 552) = *v19;
      *(_OWORD *)(a1 + 40 * v18 + 568) = v19[1];
      *(_QWORD *)(a1 + 40 * v18 + 584) = *((_QWORD *)v19 + 4);
      goto LABEL_28;
    }
    v9 = v56;
    if( *(_DWORD *)(a1 + 40 * v18 + 584) != *((_DWORD *)v19 + 8)
      || *(_QWORD *)(a1 + 40 * v18 + 552) != *(_QWORD *)v19
      || v56 != *(_DWORD *)(a1 + 368)
      || !v20
      && (*(_DWORD *)(a1 + 40 * v18 + 576) != *((_DWORD *)v19 + 6)
       || *(_DWORD *)(a1 + 40 * v18 + 560) != *((_DWORD *)v19 + 2)) )
    {
      goto LABEL_98;
    }
LABEL_28:
    v16 = v62;
    ++v17;
    v7 = v57;
    ++v18;
    v8 = v52;
    if( v17 >= 5 )
      break;
    LODWORD(v6) = 0;
  }
  if( v3 )
  {
    v45 = *(_DWORD *)(a1 + 548) + 1;
    if( *(_DWORD *)(a1 + 548) == -1 )
      v45 = 1;
    *(_DWORD *)(a1 + 368) = v56;
    *(_DWORD *)(a1 + 548) = v45;
    *(_BYTE *)(a1 + 764) = 0;
    *(LARGE_INTEGER *)(a1 + 752) = KeQueryPerformanceCounter(0i64);
    *(_DWORD *)(a1 + 760) = 0;
    PpmEventDomainPerfStateChange(a1, v46, v47);
  }
  return v3;
}

Referenced by:

PpmPerfApplyDomainStates