PspThreadFromTicket

INT64 __fastcall PspThreadFromTicket(_QWORD *a1, _QWORD *a2){
  _ETHREAD *CurrentThread; 
  __int64 v4; 
  __int64 v5; 
  _EJOB *CurrentServerSilo; 
  bool v7; 
  int v9[10]; 
  __int64 v10; 
  CurrentThread = (_ETHREAD *)KeGetCurrentThread();
  v10 = PspWorkOnBehalfEncodingKey ^ *a1;
  --*((_WORD *)CurrentThread + 243);
  LODWORD(v4) = PspReferenceCidTableEntry((PVOID)(int)v10, 6u);
  v5 = v4;
  if( v4 )
  {
    CurrentServerSilo = PsGetCurrentServerSilo();
    if( (*(_DWORD *)(v5 + 1296) & 2) == 0 )
    {
      _InterlockedOr(v9, 0);
      if( (*(_QWORD *)(v5 + 1280) & 1) != 0 )
        ExfAcquireReleasePushLockExclusive((VOID *)(v5 + 1280));
      if( (*(_DWORD *)(v5 + 1296) & 2) == 0 )
        goto LABEL_7;
    }
    if( !PsIsProcessInSilo(*(_QWORD *)(v5 + 544), (__int64)CurrentServerSilo) )
    {
LABEL_7:
      HalPutDmaAdapter((PADAPTER_OBJECT)v5);
      v5 = 0i64;
    }
  }
  v7 = (*((_WORD *)CurrentThread + 243))++ == 0xFFFF;
  if( v7 && *((_ETHREAD **)CurrentThread + 19) != (_ETHREAD *)((char *)CurrentThread + 152) )
    KiCheckForKernelApcDelivery();
  if( !v5 )
    return 3221225483i64;
  *a2 = v5;
  if( *(_DWORD *)(v5 + 1072) == HIDWORD(v10) )
    return 0i64;
  HalPutDmaAdapter((PADAPTER_OBJECT)v5);
  return 3221226021i64;
}

Referenced by:

NtSetInformationThread