PopCreateDynamicIrpWorker

NTSTATUS __stdcall PopCreateDynamicIrpWorker(KSEMAPHORE *StartedSemaphore){
  KSEMAPHORE **v2; 
  KSEMAPHORE **v3; 
  int PowerThread; 
  LODWORD(v2) = ExAllocateFromNPagedLookasideList((NPAGED_LOOKASIDE_LIST *)PopDynamicIrpWorkerLookaside);
  v3 = v2;
  if( !v2 )
  {
    PowerThread = -1073741670;
LABEL_7:
    if( v3 )
      ExFreeToNPagedLookasideList((NPAGED_LOOKASIDE_LIST *)PopDynamicIrpWorkerLookaside, v3);
    ExAcquireFastMutex(&PopIrpWorkerMutex);
    --PopIrpWorkerPendingCount;
    KeReleaseGuardedMutex(&PopIrpWorkerMutex);
    return PowerThread;
  }
  *v2 = StartedSemaphore;
  PowerThread = PopCreatePowerThread((KSTART_ROUTINE *)PopIrpWorker, v2);
  if( PowerThread >= 0 )
    PowerThread = 0;
  if( PowerThread < 0 )
    goto LABEL_7;
  return PowerThread;
}

Referenced by:

PopIrpWorkerControl
PopRunMaximumIrpWorkers