IopInterlockedRemoveHeadList

_LIST_ENTRY *__stdcall IopInterlockedRemoveHeadList(_LIST_ENTRY *ListHead){
  KIRQL v2; 
  _LIST_ENTRY *Flink; 
  _LIST_ENTRY *v5; 
  _LIST_ENTRY *Blink; 
  v2 = KeAcquireQueuedSpinLock(0xAui64);
  Flink = ListHead->Flink;
  if( ListHead->Flink == ListHead )
  {
    Flink = 0i64;
  }
  else
  {
    v5 = Flink->Flink;
    if( Flink->Flink->Blink != Flink || (Blink = Flink->Blink, Blink->Flink != Flink) )
      __fastfail(3u);
    Blink->Flink = v5;
    v5->Blink = Blink;
  }
  KeReleaseQueuedSpinLock(0xAui64, v2);
  return Flink;
}

Referenced by:

IoShutdownSystem
IopCallBootDriverReinitializationRoutines
IopCallDriverReinitializationRoutines