PopFxComponentPerfWork

VOID __stdcall PopFxComponentPerfWork(VOID *Parameter){
  __int64 v1; 
  unsigned int v3; 
  _POP_FX_DEVICE *v4; 
  signed __int32 v5; 
  signed __int32 v6; 
  __int64 v7; 

  v1 = *(_QWORD *)Parameter;
  v3 = *(_DWORD *)(*(_QWORD *)Parameter + 16i64);
  v4 = *(_POP_FX_DEVICE **)(*(_QWORD *)Parameter + 80i64);
  do
  {
    _m_prefetchw((char *)Parameter + 40);
    v5 = *((_DWORD *)Parameter + 10);
    do
    {
      v6 = v5;
      v5 = _InterlockedCompareExchange((volatile signed __int32 *)Parameter + 10, v5, v5);
    }
    while( v6 != v5 );
    PopFxCompleteComponentPerfState(v4, v3, (_POP_FX_PERF_INFO *)Parameter, (v5 & 0x40000000) != 0);
  }
  while( _InterlockedExchangeAdd((volatile signed __int32 *)Parameter + 30, 0xFFFFFFFF) != 1 );
  v7 = *(_QWORD *)(v1 + 80);
  if( _InterlockedExchangeAdd((volatile signed __int32 *)(v7 + 244), 0xFFFFFFFF) == 1 )
    KeSetEvent((PRKEVENT)(v7 + 248), 0, 0);
}

Referenced by:

No references.