WmipClearIrpObjectList

VOID __stdcall WmipClearIrpObjectList(IRP *Irp){
  char *v1; 
  char *v2; 
  char *v3; 
  char *v4; 
  __int64 v5; 
  char **v6; 
  v1 = (char *)Irp + 120;
  v2 = (char *)*((_QWORD *)Irp + 15);
  while( v2 != v1 )
  {
    v3 = v2;
    v4 = v2;
    v2 = *(char **)v2;
    *((_QWORD *)v3 - 1) = 0i64;
    v5 = *(_QWORD *)v3;
    if( *(char **)(*(_QWORD *)v3 + 8i64) != v3 || (v6 = (char **)*((_QWORD *)v3 + 1), *v6 != v4) )
      __fastfail(3u);
    *v6 = (char *)v5;
    *(_QWORD *)(v5 + 8) = v6;
  }
}

Referenced by:

WmipCompleteGuidIrpWithError
WmipNotificationIrpCancel
WmipReceiveNotifications
WmipWriteWnodeToObject