WmipClearIrpObjectList

VOID __stdcall WmipClearIrpObjectList(_IRP *Irp){
  struct {$817F037CBF4C641BBFB4CCB9AE79FC42 ___u0;_ETHREAD *Thread;char *AuxiliaryBuffer;_LIST_ENTRY ListEntry;$53AF3F349F2CB9475F75F7184FEA4434 ___u4;_FILE_OBJECT *OriginalFileObject;void *IrpExtension;} *p_Tail; 
  _LIST_ENTRY *Flink; 
  _LIST_ENTRY *v3; 
  _LIST_ENTRY *v4; 
  _LIST_ENTRY *v5; 
  _LIST_ENTRY *Blink; 

  p_Tail = &Irp->Tail;
  Flink = Irp->Tail.DeviceQueueEntry.DeviceListEntry.Flink;
  while( Flink != (_LIST_ENTRY *)p_Tail )
  {
    v3 = Flink;
    v4 = Flink;
    Flink = Flink->Flink;
    v3[-1].Blink = 0i64;
    v5 = v3->Flink;
    if( v3->Flink->Blink != v3 || (Blink = v3->Blink, Blink->Flink != v4) )
      __fastfail(3u);
    Blink->Flink = v5;
    v5->Blink = Blink;
  }
}

Referenced by:

WmipCompleteGuidIrpWithError
WmipNotificationIrpCancel
WmipReceiveNotifications
WmipWriteWnodeToObject