PopPepCompleteComponentIdleState

VOID __fastcall PopPepCompleteComponentIdleState(PEPHANDLE__ *DpmContext, UINT64 ComponentIndex){
  unsigned int v2; 
  PEPHANDLE__ *v3; 
  CHAR v5; 
  __int64 v6; 
  CHAR v7; 
  INT64 v8; 
  unsigned int ready; 
  unsigned int v10; 
  INT64 v11; 
  UINT8 v12; 
  v2 = ComponentIndex;
  v12 = 0;
  v3 = DpmContext + 50 * (unsigned int)ComponentIndex + 46;
  v5 = PopPepLockActivityLink((INT64)DpmContext, (volatile INT64 *)v3, 6ui64, 1ui64, &v12);
  v6 = *((_QWORD *)v3 + 8);
  v7 = v5;
  if( *(_DWORD *)(v6 + 12) == 1 )
  {
    *(_DWORD *)(v6 + 12) = 2;
    PopPepCountReadyActivities((UINT64 *)DpmContext, (INT64)v3, 2i64);
    **((_DWORD **)v3 + 8) |= 8u;
    _InterlockedIncrement((volatile signed __int32 *)v3 + 26);
    ready = PopPepCountReadyActivities((UINT64 *)DpmContext, (INT64)v3, v8);
    PopPepRequestWork(v10, ready);
    PopPepReleaseActivityLink((INT64)DpmContext, (volatile INT64 *)v3, v7, v12);
  }
  else
  {
    PopPepReleaseActivityLink((INT64)DpmContext, (volatile INT64 *)v3, v5, v12);
    PopPepProcessEvent((INT64)DpmContext, (volatile INT64 *)v3, 1i64, 6ui64, v11, 0i64);
    PopPlNotifyDeviceFState(*((_QWORD *)DpmContext + 4), v2, *((unsigned int *)v3 + 45), *((unsigned int *)v3 + 44), 1);
  }
}

Referenced by:

PopFxProcessWork