KeInsertQueue

NTSTATUS __stdcall KeInsertQueue(PRKQUEUE Queue, PLIST_ENTRY Entry){
  _LIST_ENTRY *p_WaitListHead; 
  UINT8 OldIrql; 
  struct _KPRCB *CurrentPrcb; 
  __int64 v7; 
  int v8; 
  _LIST_ENTRY *Blink; 
  int SignalState; 
  p_WaitListHead = &Queue->Header.WaitListHead;
  OldIrql = KeGetCurrentIrql();
  __writecr8(2ui64);
  CurrentPrcb = KeGetCurrentPrcb();
  v7 = *((_QWORD *)CurrentPrcb + 1);
  KiAcquireKobjectLockSafe(Queue);
  SignalState = Queue->Header.SignalState;
  if( p_WaitListHead->Flink == p_WaitListHead
    || Queue->CurrentCount >= Queue->MaximumCount
    || *(PRKQUEUE *)(v7 + 232) == Queue && *(_BYTE *)(v7 + 643) == 15
    || !KiWakeQueueWaiter(CurrentPrcb, Queue, (INT64)Entry) )
  {
    v8 = Queue->Header.SignalState;
    Queue->Header.SignalState = v8 + 1;
    Blink = Queue->EntryListHead.Blink;
    if( Blink->Flink != &Queue->EntryListHead )
      __fastfail(3u);
    Entry->Flink = &Queue->EntryListHead;
    Entry->Blink = Blink;
    Blink->Flink = Entry;
    Queue->EntryListHead.Blink = Entry;
    if( !v8 && p_WaitListHead->Flink != p_WaitListHead )
      KiWakeOtherQueueWaiters(CurrentPrcb, Queue);
  }
  _InterlockedAnd(&Queue->Header.Lock, 0xFFFFFF7F);
  KiExitDispatcher(CurrentPrcb, 0i64, AdjustUnwait, 0i64, OldIrql);
  return SignalState;
}

Referenced by:

EtwpQueueReply
FsRtlpPostStackOverflow
IopPassiveInterruptDpc
KeSynchronizeUmsThread
KiSwapToUmsThreadContinue