PopRunMaximumIrpWorkers

VOID __stdcall PopRunMaximumIrpWorkers(){
  __int64 v0; 
  unsigned int v1; 
  bool v2; 
  unsigned int v3; 
  __int64 v4; 
  KSEMAPHORE Object; 
  *(&Object.Limit + 1) = 0;
  ExAcquireFastMutex(&PopIrpWorkerMutex);
  PopCreateIrpWorkerAllowed = 0;
  v0 = (unsigned int)(15 - PopIrpWorkerPendingCount - PopIrpWorkerCount);
  PopIrpWorkerPendingCount += v0;
  KeReleaseGuardedMutex(&PopIrpWorkerMutex);
  Object.Header.SignalState = 0;
  Object.Header.WaitListHead.Blink = &Object.Header.WaitListHead;
  v1 = 0;
  Object.Header.LockNV = 524293;
  Object.Header.WaitListHead.Flink = &Object.Header.WaitListHead;
  Object.Limit = v0;
  if( (_DWORD)v0 )
  {
    do
    {
      v2 = PopCreateDynamicIrpWorker(&Object) < 0;
      v3 = v1 + 1;
      if( v2 )
        v3 = v1;
      v1 = v3;
      --v0;
    }
    while( v0 );
    if( v3 )
    {
      v4 = v3;
      do
      {
        KeWaitForSingleObject(&Object, Executive, 0, 0, 0i64);
        --v4;
      }
      while( v4 );
    }
  }
}

Referenced by:

PopTransitionSystemPowerStateEx