PspThreadFromTicket

NTSTATUS __stdcall PspThreadFromTicket(_ALPC_WORK_ON_BEHALF_TICKET *Ticket, _ETHREAD **WOBThread){
  _ETHREAD **v2; 
  _ETHREAD *CurrentThread; 
  _ETHREAD *v4; 
  _EJOB *CurrentServerSilo; 
  bool v6; 
  int v8[10]; 
  __int64 v9; 

  v2 = WOBThread;
  CurrentThread = (_ETHREAD *)KeGetCurrentThread();
  v9 = PspWorkOnBehalfEncodingKey ^ *(_QWORD *)Ticket;
  --CurrentThread->Tcb.SpecialApcDisable;
  LOBYTE(WOBThread) = 6;
  v4 = (_ETHREAD *)PspReferenceCidTableEntry((VOID *)(int)v9, (INT64)WOBThread);
  if( v4 )
  {
    CurrentServerSilo = PsGetCurrentServerSilo();
    if( (v4->CrossThreadFlags & 2) == 0 )
    {
      _InterlockedOr(v8, 0);
      if( (v4->ThreadLock._bf_0 & 1) != 0 )
        ExfAcquireReleasePushLockExclusive(&v4->ThreadLock);
      if( (v4->CrossThreadFlags & 2) == 0 )
        goto LABEL_7;
    }
    if( !PsIsProcessInSilo(v4->Tcb.Process, CurrentServerSilo) )
    {
LABEL_7:
      HalPutDmaAdapter((PADAPTER_OBJECT)v4);
      v4 = 0i64;
    }
  }
  v6 = CurrentThread->Tcb.SpecialApcDisable++ == -1;
  if( v6
    && ($F25F8C4BA33AF922A5F1AF68CD89DDDF *)CurrentThread->Tcb.ApcState.ApcListHead[0].Flink != &CurrentThread->Tcb.152 )
  {
    KiCheckForKernelApcDelivery();
  }
  if( !v4 )
    return -1073741813;
  *v2 = v4;
  if( v4->CreateTime.anonymous_0.LowPart == HIDWORD(v9) )
    return 0;
  HalPutDmaAdapter((PADAPTER_OBJECT)v4);
  return -1073741275;
}

Referenced by:

NtSetInformationThread