PsGetWorkOnBehalfThread

_ETHREAD *__stdcall PsGetWorkOnBehalfThread(VOID **Thread, UINT64 *DerefThread){
  _ETHREAD *v2; 
  unsigned __int8 v6; 
  unsigned __int64 v7; 

  v2 = (_ETHREAD *)Thread[184];
  *(_DWORD *)DerefThread = 0;
  if( v2 && Thread != (VOID **)KeGetCurrentThread() )
  {
    v6 = ExAcquireSpinLockShared(&PspThreadWorkOnBehalfLock);
    v2 = (_ETHREAD *)Thread[184];
    v7 = v6;
    if( v2 )
    {
      ObfReferenceObjectWithTag(Thread[184], 0x746C6644ui64);
      *(_DWORD *)DerefThread = 1;
    }
    ExReleaseSpinLockSharedFromDpcLevel((PEX_SPIN_LOCK)&PspThreadWorkOnBehalfLock);
    __writecr8(v7);
  }
  return v2;
}

Referenced by:

AlpcpCaptureAttributes
AlpcpCaptureWorkOnBehalfAttribute
IoReferenceIoAttributionFromThread
IopQueueWorkItemProlog
NtAlpcImpersonateClientContainerOfPort
NtQueryInformationThread
PsGetEffectiveContainerId