KiActivateWaiterQueueWithNoLocks

VOID __stdcall KiActivateWaiterQueueWithNoLocks(
        _ETHREAD *Thread,
        _DISPATCHER_HEADER *Queue,
        _LIST_ENTRY *DisassociateEntry){
  volatile LONG *v5; 
  __int64 v6; 
  _KTHREAD *v7; 
  char v8; 
  _LIST_ENTRY *Flink; 
  _LIST_ENTRY *Blink; 
  __int64 v11; 
  UINT64 SpinCount; 
  v5 = (volatile LONG *)&KiObjectRundownLocks[8 * (((unsigned __int64)Queue >> 4) & 0x3F)];
  ExAcquireSpinLockSharedAtDpcLevel(v5);
  v6 = *((_QWORD *)Thread + 29);
  if( v6 )
  {
    KiAcquireKobjectLockSafe(*((PVOID *)Thread + 29));
    if( !*((_QWORD *)Thread + 29) )
    {
      _InterlockedAnd((volatile signed __int32 *)v6, 0xFFFFFF7F);
      v6 = 0i64;
    }
  }
  ExReleaseSpinLockSharedFromDpcLevel(v5);
  if( v6 )
  {
    if( DisassociateEntry )
    {
      v8 = *(_BYTE *)v6 & 0x7F;
      if( v8 == 21 )
      {
        LODWORD(SpinCount) = 0;
        while( _interlockedbittestandset64((volatile signed __int32 *)Thread + 16, 0i64) )
        {
          do
            KeYieldProcessorEx(&SpinCount);
          while( *((_QWORD *)Thread + 8) );
        }
        v11 = (unsigned __int8)*((_DWORD *)Thread + 135);
        *((_DWORD *)Thread + 135) = (unsigned __int8)*((_DWORD *)Thread + 135) | 0x100;
        _InterlockedDecrement((volatile signed __int32 *)(v6 + 4 * v11 + 536));
        KiReleaseThreadLockSafe((INT64)Thread);
      }
      else
      {
        _InterlockedDecrement((volatile signed __int32 *)(v6 + 40));
      }
      Flink = DisassociateEntry->Flink;
      Blink = DisassociateEntry->Blink;
      if( DisassociateEntry->Flink->Blink != DisassociateEntry || Blink->Flink != DisassociateEntry )
        __fastfail(3u);
      Blink->Flink = Flink;
      Flink->Blink = Blink;
      *((_QWORD *)Thread + 29) = 0i64;
    }
    if( (*(_BYTE *)v6 & 0x7F) == 21 )
      KiActivateWaiterPriQueue((_KPRIQUEUE *)v6, (_KTHREAD *)v7);
    else
      KiActivateWaiterKQueue((KQUEUE *)v6);
  }
}

Referenced by:

KeTerminateThread
KiCommitThreadWait
KiPriQueueThreadPriorityChanged
KiSwitchPriQueue