PopFxUpdateComponentPerfStateNominalChange

VOID __stdcall PopFxUpdateComponentPerfStateNominalChange(
        _POP_FX_DEVICE *FxDevice,
        UINT64 Component,
        UINT8 DeviceTransition,
        UINT64 PowerState){
  unsigned int v5; 
  unsigned int v7; 
  unsigned int v8; 
  __int64 v9; 
  __int64 v10; 
  __int64 v11; 
  _PO_FX_PERF_STATE_CHANGE *CurrentPerf; 
  UINT64 v13; 
  UINT8 PerfChanged; 

  v5 = PowerState;
  v13 = 0i64;
  PerfChanged = 0;
  v7 = 0;
  v8 = 0;
  v9 = *(_QWORD *)(*((_QWORD *)FxDevice + 104) + 8i64 * (unsigned int)Component);
  v10 = *(_QWORD *)(v9 + 424);
  v11 = *(_QWORD *)(v10 + 48);
  if( *(_DWORD *)(v10 + 144) )
  {
    do
    {
      PopFxQueryCurrentComponentPerfState(FxDevice, (_POP_FX_COMPONENT *)v9, v8, 1u, &v13, &PerfChanged);
      if( PerfChanged )
      {
        ++v7;
        *(_QWORD *)(v11 + 8) = v13;
        *(_DWORD *)v11 = v8;
        v11 += 16i64;
      }
      ++v8;
    }
    while( v8 < *(_DWORD *)(v10 + 144) );
    if( v7 )
    {
      *(_DWORD *)(v10 + 56) = v7;
      *(_QWORD *)(v10 + 64) = *(_QWORD *)&KUSER_SHARED_DATA.InterruptTime.LowPart;
      CurrentPerf = *(_PO_FX_PERF_STATE_CHANGE **)(v10 + 48);
      *(_BYTE *)(v10 + 72) = 1;
      PopDiagTraceFxPerfNominalChange((_POP_FX_PERF_INFO *)v10, DeviceTransition, v5, v7, CurrentPerf);
    }
  }
}

Referenced by:

PopPepCompleteComponentIdleStateChangeActivity
PopPepDeviceDState