NtWorkerFactoryWorkerReady

NTSTATUS __stdcall NtWorkerFactoryWorkerReady(VOID *WorkerFactoryHandle){
  int v1; 
  _DWORD *v2; 
  int v3; 
  int v4; 
  _KLOCK_QUEUE_HANDLE LockHandle; 
  PVOID Object; 

  memset(&LockHandle, 0, sizeof(LockHandle));
  Object = 0i64;
  v1 = ObReferenceObjectByHandle(
         WorkerFactoryHandle,
         0x10ui64,
         ExpWorkerFactoryObjectType,
         KeGetCurrentThread()->PreviousMode,
         &Object,
         0i64);
  if( v1 >= 0 )
  {
    v2 = Object;
    KeAcquireInStackQueuedSpinLock(*((PKSPIN_LOCK *)Object + 2), &LockHandle);
    v3 = v2[76];
    if( v3 )
    {
      v2[76] = v3 - 1;
      v4 = v2[74];
      if( v4 )
      {
        ++v2[72];
        ++v2[73];
        v2[74] = v4 - 1;
      }
      else
      {
        v1 = -1073741558;
      }
    }
    else
    {
      v1 = -1073741823;
    }
    KeReleaseInStackQueuedSpinLockFromDpcLevel(&LockHandle);
    __writecr8(LockHandle.OldIrql);
    ObfDereferenceObjectWithTag(v2, 0x746C6644ui64);
  }
  return v1;
}

Referenced by:

No references.