PpmPerfApplyDomainState

UINT8 __stdcall PpmPerfApplyDomainState(_KPRCB *Master){
  __int64 v1; 
  UINT8 v3; 
  _ETHREAD *NextThread; 
  CHAR PerfPolicyClass; 
  __int64 v6; 
  unsigned int KernelDr7; 
  char v8; 
  unsigned int v9; 
  int KernelDr6; 
  unsigned int v11; 
  INT64 *v12; 
  _KPRCB *v13; 
  unsigned int v14; 
  unsigned __int64 Base_high; 
  unsigned int v16; 
  unsigned int v17; 
  __int64 v18; 
  unsigned __int16 *v19; 
  char v20; 
  char *v22; 
  int v23; 
  unsigned int KernelDr6_high; 
  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; 
  unsigned int v45; 
  int v46; 
  int v47; 
  char v48; 
  char v49; 
  int v50; 
  char v51; 
  char v52; 
  unsigned __int8 v53; 
  char v54; 
  UINT64 GuaranteedPercent; 
  int v56; 
  unsigned int v57; 
  unsigned int v58; 
  unsigned int v59; 
  unsigned int v60; 
  UINT64 MaxConstraint; 
  unsigned int v62; 
  unsigned int v63; 
  __int64 v64; 
  __int64 v65; 
  __int64 v66; 
  __int128 v67; 
  __int128 v68; 
  __int64 v69; 

  v69 = 0i64;
  v1 = *(_QWORD *)&Master->ScbOffset;
  v63 = 0;
  v65 = 0i64;
  v3 = 0;
  v67 = 0i64;
  v66 = *(_QWORD *)(v1 + 8);
  v68 = 0i64;
  v52 = 0;
  v54 = 0;
  NextThread = Master->NextThread;
  v64 = 2736i64 * *(&stru_140C23628 + 441) + *(&stru_140C00F40 + 365) + 40i64;
  PerfPolicyClass = PpmGetPerfPolicyClass(NextThread);
  KernelDr7 = Master->ProcessorState.SpecialRegisters.KernelDr7;
  v8 = 0;
  v53 = PerfPolicyClass;
  v9 = 100;
  KernelDr6 = Master->ProcessorState.SpecialRegisters.KernelDr6;
  v11 = v6;
  LODWORD(GuaranteedPercent) = 100;
  v58 = v6;
  v51 = 0;
  v57 = v6;
  v60 = KernelDr6;
  MaxConstraint = __PAIR64__(KernelDr7, KernelDr6);
  HIDWORD(GuaranteedPercent) = KernelDr7;
  if( PpmPerfArtificialDomainEnabled == (_DWORD)v6
    || (KeIsSubsetAffinityEx((_KAFFINITY_EX *)&Master->IdleThread, &PpmPerfNewCoreParkingMask),
        KernelDr7 = HIDWORD(GuaranteedPercent),
        v8 = 0,
        v6 = 0i64,
        v46)
    || *(_DWORD *)&Master->Group != v11 )
  {
    v12 = *(INT64 **)&Master->_MxCsr;
    v13 = Master;
  }
  else
  {
    v13 = (_KPRCB *)PpmPerfDomainHead;
    v12 = &PpmPerfDomainHead;
  }
  if( v13 != (_KPRCB *)v12 )
  {
    v14 = v11;
    while( 1 )
    {
      Base_high = HIDWORD(v13->ProcessorState.SpecialRegisters.Idtr.Base);
      if( v13 == Master )
        goto LABEL_6;
      if( !*(_DWORD *)&v13->Group )
      {
        KeIsSubsetAffinityEx((_KAFFINITY_EX *)&v13->IdleThread, &PpmPerfNewCoreParkingMask);
        if( !v47 && Master->NextThread[-15].Tcb.ThreadLock == v13->NextThread[-15].Tcb.ThreadLock )
        {
          v48 = BYTE4(Master->GroupSetMember);
          v49 = BYTE4(v13->GroupSetMember);
          if( v48 == v49 || PpmPerfQosEnabled )
            break;
        }
      }
LABEL_11:
      v13 = *(_KPRCB **)&v13->_MxCsr;
      if( v13 == (_KPRCB *)v12 )
      {
        v16 = MaxConstraint;
        v6 = 0i64;
        KernelDr7 = HIDWORD(MaxConstraint);
        v8 = v51;
        v57 = v14;
        v9 = GuaranteedPercent;
        v58 = v11;
        HIDWORD(GuaranteedPercent) = HIDWORD(MaxConstraint);
        v60 = MaxConstraint;
        goto LABEL_13;
      }
    }
    if( BYTE5(Master->GroupSetMember) != BYTE5(v13->GroupSetMember) )
    {
      Base_high = ((unsigned __int64)v13->ProcessorState.SpecialRegisters.Gdtr.Base * Base_high
                 + ((unsigned __int64)v13->ProcessorState.SpecialRegisters.Gdtr.Base >> 1))
                / (unsigned __int64)Master->ProcessorState.SpecialRegisters.Gdtr.Base;
      if( (unsigned int)Base_high > LODWORD(Master->ProcessorState.SpecialRegisters.KernelDr6) )
        LODWORD(Base_high) = Master->ProcessorState.SpecialRegisters.KernelDr6;
    }
    if( v48 != v49 )
    {
      if( (unsigned int)Base_high <= v14 )
        LODWORD(Base_high) = v14;
      v14 = Base_high;
      goto LABEL_11;
    }
LABEL_6:
    if( (unsigned int)Base_high <= v11 )
      LODWORD(Base_high) = v11;
    v11 = Base_high;
    if( LOBYTE(v13->ProcessorState.SpecialRegisters._MxCsr) )
      v51 = 1;
    v52 |= PpmPerfApplyCapsAndFloors(
             &MaxConstraint,
             (UINT64 *)((char *)&MaxConstraint + 4),
             &GuaranteedPercent,
             (_PROC_PERF_DOMAIN *)v13);
    goto LABEL_11;
  }
  v16 = v60;
LABEL_13:
  v17 = v6;
  v18 = v6;
  while( 1 )
  {
    if( *((_DWORD *)&Master->ProcessorState.ContextFrame.P3Home + v18 + 1) )
    {
      v19 = (unsigned __int16 *)(&Master->ProcessorState.ContextFrame.P3Home + 4 * v17 + v17);
      goto LABEL_17;
    }
    v56 = v6;
    v22 = (char *)&Master->ProcessorState.SpecialRegisters.DebugControl + 28 * v18;
    v23 = v6;
    if( v22[21] )
    {
      KernelDr6_high = Master->ProcessorState.SpecialRegisters.KernelDr7;
      v23 = 1;
      v56 = 1;
    }
    else
    {
      KernelDr6_high = HIDWORD(Master->ProcessorState.SpecialRegisters.KernelDr6);
    }
    if( KernelDr6_high <= *((_DWORD *)v22 + 2) )
      KernelDr6_high = *((_DWORD *)v22 + 2);
    v25 = v22[22];
    if( v25 )
    {
      v26 = Master->ProcessorState.SpecialRegisters.KernelDr6;
    }
    else
    {
      v23 |= 8u;
      v26 = v9;
      v56 = v23;
      if( !PpmPerfBoostAtGuaranteed )
        v26 = 100;
    }
    if( *(_DWORD *)v22 < 0x64u && v26 >= *(_DWORD *)v22 )
      v26 = *(_DWORD *)v22;
    if( v26 >= *((_DWORD *)v22 + 1) )
      v26 = *((_DWORD *)v22 + 1);
    if( *(&stru_140C23628 + 3472) )
    {
      v27 = 100;
    }
    else if( *(&PopIrpWorkerControlEvent + 315) )
    {
      v27 = (unsigned __int8)v22[23];
    }
    else if( v8 )
    {
      v27 = *(_DWORD *)(v64 + 4i64 * v53 + 112);
    }
    else
    {
      v27 = 0;
    }
    if( v27 >= v26 )
      v27 = v26;
    v28 = v27 > KernelDr6_high ? v27 : KernelDr6_high;
    if( v28 < v9 )
    {
      v29 = KernelDr6_high;
      if( v27 > KernelDr6_high )
        v29 = v27;
    }
    else
    {
      v29 = v9;
    }
    if( v29 > KernelDr7 )
    {
      if( v27 > KernelDr6_high )
        v30 = v27;
      else
        v30 = KernelDr6_high;
      if( v30 < v9 )
      {
        KernelDr7 = KernelDr6_high;
        if( v27 > KernelDr6_high )
          KernelDr7 = v27;
      }
      else
      {
        KernelDr7 = v9;
      }
    }
    v59 = KernelDr7;
    v31 = v26 > KernelDr6_high ? v26 : KernelDr6_high;
    if( v31 < v16 )
    {
      v32 = v26;
      if( v26 <= KernelDr6_high )
        v32 = KernelDr6_high;
    }
    else
    {
      v32 = v16;
    }
    if( v32 <= HIDWORD(GuaranteedPercent) )
    {
      v26 = HIDWORD(GuaranteedPercent);
    }
    else
    {
      v33 = v26 > KernelDr6_high ? v26 : KernelDr6_high;
      if( v33 < v16 )
      {
        if( v26 <= KernelDr6_high )
          v26 = KernelDr6_high;
      }
      else
      {
        v26 = v16;
      }
    }
    if( *(&stru_140C23628 + 3472) )
    {
      v34 = v26;
      v35 = v26;
    }
    else
    {
      if( v22[24] )
      {
        v34 = v58;
        if( v58 <= v57 )
          v34 = v57;
      }
      else
      {
        v34 = v58;
      }
      v35 = v34;
      if( v34 > v26 )
      {
        v35 = v26;
        v50 = v23 | 2;
        if( !v52 )
          v50 = v23;
        v23 = v50;
        v56 = v50;
        goto LABEL_71;
      }
    }
    if( v34 < KernelDr7 )
      v35 = KernelDr7;
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( *(&stru_140C23628 + 3472) )
      v37 = 0;
    else
      v37 = *(_DWORD *)(v64 + 60);
    v38 = v34 - v37;
    v39 = v37 < v34;
    v40 = KernelDr7;
    if( !v39 )
      v38 = 0;
    if( v38 >= KernelDr7 )
      v40 = v38;
    v62 = v40;
    if( v40 > v9 )
      v62 = v9;
    if( *(&stru_140C23628 + 3472) || *(&PopIrpWorkerControlEvent + 314) )
      v41 = 0;
    else
      v41 = *((_DWORD *)v22 + 4);
    if( v51 && v41 >= *(_DWORD *)(v64 + 4i64 * v53 + 104) )
      v41 = *(_DWORD *)(v64 + 4i64 * v53 + 104);
    v42 = v22[20];
    if( !v42 )
      v56 = v23 | 4;
    v43 = ((__int64(__fastcall *)(__int64, __int64, _QWORD, _QWORD, unsigned int, _DWORD, int, unsigned int *, __int64 *))Master->ProcessorState.SpecialRegisters.Cr4)(
            v66,
            v35,
            KernelDr7,
            v26,
            v41,
            *((_DWORD *)v22 + 3),
            v56,
            &v63,
            &v65);
    v44 = v62;
    if( v62 > v43 )
      v44 = v43;
    HIDWORD(v69) = v42 == 0;
    *(_QWORD *)&v67 = v65;
    *(_QWORD *)&v68 = __PAIR64__(v26, v59);
    LODWORD(v69) = *((_DWORD *)v22 + 3);
    *((_QWORD *)&v67 + 1) = __PAIR64__(v63, v43);
    *((_QWORD *)&v68 + 1) = __PAIR64__(v41, v44);
    if( !v17 && Master->ProcessorState.SpecialRegisters.KernelDr2 )
      BYTE5(v69) = 1;
    v3 = v54;
    v19 = (unsigned __int16 *)&v67;
LABEL_17:
    if( BYTE4(Master->ProcessorState.ContextFrame.Header[0].High)
      || (v20 = *((_BYTE *)v19 + 36), *((_BYTE *)&Master->ProcessorState.ContextFrame.Dr2 + 40 * v18 + 4) != v20)
      || *((_DWORD *)&Master->ProcessorState.ContextFrame.Dr0 + 10 * v18) != *((_DWORD *)v19 + 4)
      || *((_DWORD *)&Master->ProcessorState.ContextFrame.Dr0 + 10 * v18 + 1) != *((_DWORD *)v19 + 5)
      || *((_DWORD *)&Master->ProcessorState.ContextFrame.Dr1 + 10 * v18 + 1) != *((_DWORD *)v19 + 7) )
    {
      v9 = GuaranteedPercent;
LABEL_98:
      v3 = 1;
      v54 = 1;
      *(_OWORD *)(&Master->ProcessorState.ContextFrame.SegCs + 20 * v18) = *(_OWORD *)v19;
      *(_OWORD *)(&Master->ProcessorState.ContextFrame.Dr0 + 5 * v18) = *((_OWORD *)v19 + 1);
      *(&Master->ProcessorState.ContextFrame.Dr2 + 5 * v18) = *((_QWORD *)v19 + 4);
      goto LABEL_28;
    }
    v9 = GuaranteedPercent;
    if( *((_DWORD *)&Master->ProcessorState.ContextFrame.Dr2 + 10 * v18) != *((_DWORD *)v19 + 8)
      || *((_QWORD *)&Master->ProcessorState.ContextFrame.SegCs + 5 * v18) != *(_QWORD *)v19
      || (_DWORD)GuaranteedPercent != *(_DWORD *)&Master->ProcessorState.SpecialRegisters.Tr
      || !v20
      && (*((_DWORD *)&Master->ProcessorState.ContextFrame.Dr1 + 10 * v18) != *((_DWORD *)v19 + 6)
       || *((_DWORD *)&Master->ProcessorState.ContextFrame.SegGs + 10 * v18) != *((_DWORD *)v19 + 2)) )
    {
      goto LABEL_98;
    }
LABEL_28:
    v16 = v60;
    ++v17;
    KernelDr7 = HIDWORD(GuaranteedPercent);
    ++v18;
    v8 = v51;
    if( v17 >= 5 )
      break;
    LODWORD(v6) = 0;
  }
  if( v3 )
  {
    v45 = Master->ProcessorState.ContextFrame._MxCsr + 1;
    if( Master->ProcessorState.ContextFrame._MxCsr == -1 )
      v45 = 1;
    *(_DWORD *)&Master->ProcessorState.SpecialRegisters.Tr = GuaranteedPercent;
    Master->ProcessorState.ContextFrame._MxCsr = v45;
    BYTE4(Master->ProcessorState.ContextFrame.Header[0].High) = 0;
    Master->ProcessorState.ContextFrame.Header[0].Low = KeQueryPerformanceCounter(0i64);
    Master->ProcessorState.ContextFrame.FltSave.ErrorOffset = 0;
    PpmEventDomainPerfStateChange((_PROC_PERF_DOMAIN *)Master);
  }
  return v3;
}

Referenced by:

PpmPerfApplyDomainStates