PopPepCompleteComponentIdleState

VOID __stdcall PopPepCompleteComponentIdleState(PEPHANDLE__ *DpmContext, UINT64 ComponentIndex){
  unsigned int v2; 
  PEPHANDLE__ *v3; 
  char v5; 
  __int64 v6; 
  char v7; 
  int v8; 
  unsigned int ready; 
  INT64 v10; 
  INT64 v11; 
  INT64 a5; 
  UINT8 v13; 

  v2 = ComponentIndex;
  v13 = 0;
  v3 = DpmContext + 50 * (unsigned int)ComponentIndex + 46;
  v5 = PopPepLockActivityLink((__int64)DpmContext, (INT64 *)v3, 6u, 1u, &v13);
  v6 = *((_QWORD *)v3 + 8);
  v7 = v5;
  if( *(_DWORD *)(v6 + 12) == 1 )
  {
    *(_DWORD *)(v6 + 12) = 2;
    PopPepCountReadyActivities((unsigned int *)DpmContext, (__int64)v3, 2);
    **((_DWORD **)v3 + 8) |= 8u;
    _InterlockedIncrement((volatile signed __int32 *)v3 + 26);
    ready = PopPepCountReadyActivities((unsigned int *)DpmContext, (__int64)v3, v8);
    PopPepRequestWork((unsigned int)v10, ready, v11, v10);
    PopPepReleaseActivityLink((__int64)DpmContext, (INT64 *)v3, v7, v13);
  }
  else
  {
    PopPepReleaseActivityLink((__int64)DpmContext, (INT64 *)v3, v5, v13);
    PopPepProcessEvent(
      (POP_PEP_DEVICE *)DpmContext,
      (POP_PEP_COMPONENT *)v3,
      NonSharedStart,
      MaximumActivities,
      a5,
      0i64);
    PopPlNotifyDeviceFState(*((_QWORD *)DpmContext + 4), v2, *((unsigned int *)v3 + 45), *((unsigned int *)v3 + 44), 1);
  }
}

Referenced by:

PopFxProcessWork