PopRequestShutdownWait

NTSTATUS __stdcall PopRequestShutdownWait(_ETHREAD *Thread){
  VOID **PoolWithTag; 
  NTSTATUS v3; 
  VOID **v4; 

  PoolWithTag = ExAllocatePoolWithTag(1ui64, 0x10ui64, 1280536400i64);
  v3 = 0;
  v4 = PoolWithTag;
  if( !PoolWithTag )
    return -1073741801;
  PoolWithTag[1] = Thread;
  ObfReferenceObjectWithTag(Thread, 0x64536F50ui64);
  KeAcquireGuardedMutex((PKGUARDED_MUTEX)((char *)&stru_140C23628 + 3352));
  if( PopShutdownListAvailable )
  {
    *v4 = (VOID *)*(&stru_140C23628 + 433);
    *(&stru_140C23628 + 433) = v4;
  }
  else
  {
    ObfDereferenceObjectWithTag(Thread, 0x64536F50ui64);
    ExFreePoolWithTag(v4, 0);
    v3 = -1073741823;
  }
  KeReleaseGuardedMutex((PKGUARDED_MUTEX)((char *)&stru_140C23628 + 3352));
  return v3;
}

Referenced by:

PoRequestShutdownEvent