PopRunMaximumIrpWorkers

VOID __stdcall PopRunMaximumIrpWorkers(){
  __int64 v0; 
  unsigned int v1; 
  bool v2; 
  unsigned int v3; 
  __int64 v4; 
  _KSEMAPHORE StartedSemaphore; 

  *(&StartedSemaphore.Limit + 1) = 0;
  StartedSemaphore.gap0[1] = 0;
  StartedSemaphore.gap0[3] = 0;
  ExAcquireFastMutex((PFAST_MUTEX)((char *)&PopIrpWorkerControlEvent + 64));
  PopCreateIrpWorkerAllowed = 0;
  v0 = (unsigned int)(15 - *(&PopIrpWorkerControlEvent + 30) - *(&PopIrpWorkerControlEvent + 7));
  *(&PopIrpWorkerControlEvent + 30) += v0;
  KeReleaseGuardedMutex((PKGUARDED_MUTEX)((char *)&PopIrpWorkerControlEvent + 64));
  *(_DWORD *)&StartedSemaphore.gap0[4] = 0;
  *(_QWORD *)&StartedSemaphore.gap0[16] = &StartedSemaphore.gap0[8];
  v1 = 0;
  StartedSemaphore.gap0[0] = 5;
  *(_QWORD *)&StartedSemaphore.gap0[8] = &StartedSemaphore.gap0[8];
  StartedSemaphore.gap0[2] = 8;
  StartedSemaphore.Limit = v0;
  if( (_DWORD)v0 )
  {
    do
    {
      v2 = PopCreateDynamicIrpWorker(&StartedSemaphore) < 0;
      v3 = v1 + 1;
      if( v2 )
        v3 = v1;
      v1 = v3;
      --v0;
    }
    while( v0 );
    if( v3 )
    {
      v4 = v3;
      do
      {
        KeWaitForSingleObject((UINT64)&StartedSemaphore, 0, 0, 0, 0i64);
        --v4;
      }
      while( v4 );
    }
  }
}

Referenced by:

PopTransitionSystemPowerStateEx