KeRemoveByKeyDeviceQueue

_KDEVICE_QUEUE_ENTRY *__stdcall KeRemoveByKeyDeviceQueue(_KDEVICE_QUEUE *DeviceQueue, UINT64 SortKey){
  unsigned int v2; 
  _KDEVICE_QUEUE_ENTRY *Flink; 
  _KDEVICE_QUEUE_ENTRY *i; 
  bool v6; 
  _LIST_ENTRY *Blink; 
  _LIST_ENTRY *v8; 
  _LIST_ENTRY *v9; 
  struct _KLOCK_QUEUE_HANDLE LockHandle; 
  v2 = SortKey;
  memset(&LockHandle, 0, sizeof(LockHandle));
  Flink = 0i64;
  KeAcquireInStackQueuedSpinLockForDpc(&DeviceQueue->Lock, &LockHandle);
  if( DeviceQueue->DeviceListHead.Flink == &DeviceQueue->DeviceListHead )
  {
    DeviceQueue->Busy = 0;
  }
  else
  {
    if( LODWORD(DeviceQueue->DeviceListHead.Blink[1].Flink) >= v2 )
    {
      i = (_KDEVICE_QUEUE_ENTRY *)(*(_QWORD *)&DeviceQueue->32 >> 8);
      if( i )
      {
        v6 = v2 <= *(_DWORD *)((*(_QWORD *)&DeviceQueue->32 >> 8) + 0x10);
        if( v2 > *(_DWORD *)((*(_QWORD *)&DeviceQueue->32 >> 8) + 0x10) )
          goto LABEL_10;
      }
      for( i = (_KDEVICE_QUEUE_ENTRY *)DeviceQueue->DeviceListHead.Flink;
            ;
            i = (_KDEVICE_QUEUE_ENTRY *)i->DeviceListEntry.Flink )
      {
        v6 = v2 <= i->SortKey;
LABEL_10:
        Flink = i;
        if( v6 )
          break;
      }
    }
    else
    {
      Flink = (_KDEVICE_QUEUE_ENTRY *)DeviceQueue->DeviceListHead.Flink;
    }
    Blink = 0i64;
    if( Flink->DeviceListEntry.Blink != &DeviceQueue->DeviceListHead )
      Blink = Flink->DeviceListEntry.Blink;
    DeviceQueue->1 = ($18E3EACC1E717291AA7C720ECCD5C45C)((unsigned __int8)*(_DWORD *)&DeviceQueue->Busy | ((_QWORD)Blink << 8));
    v8 = Flink->DeviceListEntry.Flink;
    if( (_KDEVICE_QUEUE_ENTRY *)Flink->DeviceListEntry.Flink->Blink != Flink
      || (v9 = Flink->DeviceListEntry.Blink, (_KDEVICE_QUEUE_ENTRY *)v9->Flink != Flink) )
    {
      __fastfail(3u);
    }
    v9->Flink = v8;
    v8->Blink = v9;
    Flink->Inserted = 0;
  }
  KeReleaseInStackQueuedSpinLockForDpc(&LockHandle);
  return Flink;
}

Referenced by:

IopStartNextPacketByKey