PopFxActivateComponentWorker

void __fastcall PopFxActivateComponentWorker(ULONG_PTR a1, __int64 a2, char a3, int *a4){
  char v5; 
  UINT64 v8; 
  char v9; 
  EVENT_DESCRIPTOR *v10; 
  UINT64 *v11; 
  int v12; 
  __int64 v13; 
  unsigned __int8 v14; 
  unsigned __int64 v15; 
  bool v16; 
  __int64 v17; 
  __int64 v18; 
  v5 = a3;
  PopFxAddRefDevice(a1);
  if( *(_DWORD *)(a2 + 172) )
  {
    v11 = (UINT64 *)(a2 + 128);
    KeAcquireSpinLockRaiseToDpc((UINT64 *)(a2 + 128), v8);
    v12 = *(_DWORD *)(a2 + 172);
    v13 = 0i64;
    v15 = v14;
    *(_DWORD *)(a2 + 184) = v12;
    v16 = v12 == 0;
    if( v12 )
    {
      do
      {
        v17 = *(_QWORD *)(a2 + 176);
        v18 = *(_QWORD *)(*(_QWORD *)(a1 + 832) + 8i64 * *(unsigned int *)(v17 + 8 * v13));
        *(_BYTE *)(v17 + 8 * v13 + 4) = 1;
        PopFxActivateComponent(a1, v18, 2, a3);
        if( *(int *)(v18 + 88) < 0 )
        {
          *(_BYTE *)(*(_QWORD *)(a2 + 176) + 8 * v13 + 4) = 0;
          --*(_DWORD *)(a2 + 184);
        }
        v13 = (unsigned int)(v13 + 1);
      }
      while( (unsigned int)v13 < *(_DWORD *)(a2 + 172) );
      v5 = a3;
      v11 = (UINT64 *)(a2 + 128);
      v16 = *(_DWORD *)(a2 + 184) == 0;
    }
    v9 = v16;
    KxReleaseSpinLock(v11);
    __writecr8(v15);
  }
  else
  {
    v9 = 1;
  }
  if( v5 )
  {
    PopFxCompleteComponentActivation(a1, a2, 0);
  }
  else if( v9 )
  {
    if( PopPluginComponentActive(a1, *(_DWORD *)(a2 + 16), 1, a4) == 1 )
      PopFxProcessWork(0i64, a4, v10);
  }
}

Referenced by:

PoFxActivateComponent
PopFxActivateComponent
PopFxIdleWorkerTail