KiActivateWaiterKQueue

VOID __stdcall KiActivateWaiterKQueue(KQUEUE *Queue){
  _LIST_ENTRY *p_EntryListHead; 
  _LIST_ENTRY *Flink; 
  _LIST_ENTRY *v4; 
  _LIST_ENTRY *Blink; 
  _LIST_ENTRY *v6; 
  if( Queue->CurrentCount < Queue->MaximumCount )
  {
    p_EntryListHead = &Queue->EntryListHead;
    Flink = Queue->EntryListHead.Flink;
    if( Flink != &Queue->EntryListHead && Queue->Header.WaitListHead.Flink != &Queue->Header.WaitListHead )
    {
      v4 = Flink->Flink;
      Blink = Flink->Blink;
      if( Flink->Flink->Blink == Flink && Blink->Flink == Flink )
      {
        Blink->Flink = v4;
        v4->Blink = Blink;
        Flink->Flink = 0i64;
        if( KiWakeQueueWaiter(KeGetCurrentPrcb(), Queue, (INT64)Flink) )
        {
          --Queue->Header.SignalState;
          goto LABEL_3;
        }
        v6 = p_EntryListHead->Flink;
        if( p_EntryListHead->Flink->Blink == p_EntryListHead )
        {
          Flink->Flink = v6;
          Flink->Blink = p_EntryListHead;
          v6->Blink = Flink;
          p_EntryListHead->Flink = Flink;
          goto LABEL_3;
        }
      }
      __fastfail(3u);
    }
  }
LABEL_3:
  _InterlockedAnd(&Queue->Header.Lock, 0xFFFFFF7F);
}

Referenced by:

KiActivateWaiterQueueWithNoLocks