KiAttemptFastRemoveQueue

_KQUEUE *__fastcall KiAttemptFastRemoveQueue(_KQUEUE *Queue, _LIST_ENTRY **EntryArray, UINT64 Count){
  _LIST_ENTRY **v3; 
  unsigned int v4; 
  _LIST_ENTRY *v7; 
  _KQUEUE *result; 
  _LIST_ENTRY *Flink; 
  _LIST_ENTRY *Blink; 

  v3 = (_LIST_ENTRY **)((char *)Queue + 24);
  v4 = Count;
  v7 = (_LIST_ENTRY *)*((_QWORD *)Queue + 3);
  result = 0i64;
  do
  {
    --*((_DWORD *)Queue + 1);
    Flink = v7->Flink;
    if( !v7->Flink )
      KeBugCheckEx(0x96u, v7, Queue, *(&WheapDeferredInternalLogsEventLock + 337), v7[1].Flink);
    if( Flink->Blink != v7 || (Blink = v7->Blink, Blink->Flink != v7) )
      __fastfail(3u);
    Blink->Flink = Flink;
    Flink->Blink = Blink;
    v7->Flink = 0i64;
    EntryArray[(_QWORD)result] = v7;
    result = (_KQUEUE *)(unsigned int)((_DWORD)result + 1);
    v7 = *v3;
  }
  while( *v3 != (_LIST_ENTRY *)v3 && (unsigned int)result < v4 );
  return result;
}

Referenced by:

KeRemoveQueueEx