PopRequestShutdownWait

INT64 __stdcall PopRequestShutdownWait(_ETHREAD *Thread){
  _QWORD *PoolWithTag; 
  unsigned int v3; 
  _QWORD *v4; 
  PoolWithTag = ExAllocatePoolWithTag(PagedPool, 0x10ui64, 0x4C536F50ui64);
  v3 = 0;
  v4 = PoolWithTag;
  if( !PoolWithTag )
    return 3221225495i64;
  PoolWithTag[1] = Thread;
  ObfReferenceObjectWithTag(Thread, 0x64536F50u);
  KeAcquireGuardedMutex(&PopShutdownListMutex);
  if( PopShutdownListAvailable )
  {
    *v4 = PopShutdownThreadList;
    PopShutdownThreadList = v4;
  }
  else
  {
    ObfDereferenceObjectWithTag(Thread, 0x64536F50ui64);
    ExFreePoolWithTag(v4, 0);
    v3 = -1073741823;
  }
  KeReleaseGuardedMutex(&PopShutdownListMutex);
  return v3;
}

Referenced by:

PoRequestShutdownEvent