; LLVM IR from stonne-simulator/omega :: omega-code/stonne/src/DSwitch.ll (ZN7DSwitch14route_packagesEv)

; Unoptimized IR (clang -disable-llvm-passes):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<DataPackage *, std::allocator<DataPackage *>>::_Vector_impl" }
%"struct.std::_Vector_base<DataPackage *, std::allocator<DataPackage *>>::_Vector_impl" = type { %"struct.std::_Vector_base<DataPackage *, std::allocator<DataPackage *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<DataPackage *, std::allocator<DataPackage *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%class.DSwitch = type { %class.Unit, i32, i32, i32, i8, i32, i32, i32, %"class.std::vector", i32, ptr, ptr, ptr, i32, i64, %class.DSwitchStats }
%class.Unit = type { ptr, i32, %"class.std::__cxx11::basic_string" }
%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%class.DSwitchStats = type <{ %class.Stats, i32, i32, i32, i32, i32, [4 x i8] }>
%class.Stats = type { ptr }

@.str.1 = external hidden unnamed_addr constant [90 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [6 x i8], align 1
@__PRETTY_FUNCTION__._ZN7DSwitch14route_packagesEv = external hidden unnamed_addr constant [31 x i8], align 1

declare i32 @__gxx_personality_v0(...)

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorIP11DataPackageSaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorIP11DataPackageSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7DSwitch4sendESt6vectorIP11DataPackageSaIS2_EEP10Connection(ptr noundef nonnull align 8 dereferenceable(184), ptr noundef, ptr noundef) #1 align 2

; Function Attrs: noreturn nounwind
declare void @__assert_fail(ptr noundef, ptr noundef, i32 noundef, ptr noundef) #2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorIP11DataPackageSaIS1_EEC2ERKS3_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #1 align 2

; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #3

; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #3

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN7DSwitch14route_packagesEv(ptr noundef nonnull align 8 dereferenceable(184) %0) #1 align 2 personality ptr @__gxx_personality_v0 {
  %2 = alloca ptr, align 8
  %3 = alloca %"class.std::vector", align 8
  %4 = alloca %"class.std::vector", align 8
  %5 = alloca i32, align 4
  %6 = alloca i32, align 4
  %7 = alloca ptr, align 8
  %8 = alloca ptr, align 8
  %9 = alloca i32, align 4
  %10 = alloca ptr, align 8
  %11 = alloca ptr, align 8
  %12 = alloca i32, align 4
  %13 = alloca i32, align 4
  %14 = alloca float, align 4
  %15 = alloca ptr, align 8
  %16 = alloca ptr, align 8
  %17 = alloca i32, align 4
  %18 = alloca i32, align 4
  %19 = alloca i32, align 4
  %20 = alloca float, align 4
  %21 = alloca i8, align 1
  %22 = alloca i8, align 1
  %23 = alloca i32, align 4
  %24 = alloca ptr, align 8
  %25 = alloca i32, align 4
  %26 = alloca i32, align 4
  %27 = alloca ptr, align 8
  %28 = alloca ptr, align 8
  %29 = alloca %"class.std::vector", align 8
  %30 = alloca %"class.std::vector", align 8
  store ptr %0, ptr %2, align 8, !tbaa !5
  %31 = load ptr, ptr %2, align 8
  call void @llvm.lifetime.start.p0(i64 24, ptr %3) #9
  call void @_ZNSt6vectorIP11DataPackageSaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %3) #9
  call void @llvm.lifetime.start.p0(i64 24, ptr %4) #9
  call void @_ZNSt6vectorIP11DataPackageSaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %4) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr %5) #9
  store i32 0, ptr %5, align 4, !tbaa !9
  br label %32

32:                                               ; preds = %272, %1
  %33 = load i32, ptr %5, align 4, !tbaa !9
  %34 = sext i32 %33 to i64
  %35 = getelementptr inbounds %class.DSwitch, ptr %31, i32 0, i32 8
  %36 = call noundef i64 @_ZNKSt6vectorIP11DataPackageSaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %35) #9
  %37 = icmp ult i64 %34, %36
  br i1 %37, label %39, label %38

38:                                               ; preds = %32
  store i32 2, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %5) #9
  br label %276

39:                                               ; preds = %32
  call void @llvm.lifetime.start.p0(i64 8, ptr %7) #9
  %40 = getelementptr inbounds %class.DSwitch, ptr %31, i32 0, i32 8
  %41 = load i32, ptr %5, align 4, !tbaa !9
  %42 = sext i32 %41 to i64
  %43 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP11DataPackageSaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %40, i64 noundef %42) #9
  %44 = load ptr, ptr %43, align 8, !tbaa !5
  store ptr %44, ptr %7, align 8, !tbaa !5
  %45 = load ptr, ptr %7, align 8, !tbaa !5
  %46 = invoke noundef zeroext i1 @_ZNK11DataPackage11isBroadcastEv(ptr noundef nonnull align 8 dereferenceable(64) %45)
          to label %47 unwind label %59

47:                                               ; preds = %39
  br i1 %46, label %48, label %81

48:                                               ; preds = %47
  call void @llvm.lifetime.start.p0(i64 8, ptr %10) #9
  %49 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 64) #10
          to label %50 unwind label %63

50:                                               ; preds = %48
  %51 = load ptr, ptr %7, align 8, !tbaa !5
  invoke void @_ZN11DataPackageC1EPS_(ptr noundef nonnull align 8 dereferenceable(64) %49, ptr noundef %51)
          to label %52 unwind label %67

52:                                               ; preds = %50
  store ptr %49, ptr %10, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #9
  %53 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 64) #10
          to label %54 unwind label %71

54:                                               ; preds = %52
  %55 = load ptr, ptr %7, align 8, !tbaa !5
  invoke void @_ZN11DataPackageC1EPS_(ptr noundef nonnull align 8 dereferenceable(64) %53, ptr noundef %55)
          to label %56 unwind label %75

56:                                               ; preds = %54
  store ptr %53, ptr %11, align 8, !tbaa !5
  invoke void @_ZNSt6vectorIP11DataPackageSaIS1_EE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %3, ptr noundef nonnull align 8 dereferenceable(8) %10)
          to label %57 unwind label %71

57:                                               ; preds = %56
  invoke void @_ZNSt6vectorIP11DataPackageSaIS1_EE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %4, ptr noundef nonnull align 8 dereferenceable(8) %11)
          to label %58 unwind label %71

58:                                               ; preds = %57
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #9
  br label %267

59:                                               ; preds = %145, %81, %39
  %60 = landingpad { ptr, i32 }
          cleanup
  %61 = extractvalue { ptr, i32 } %60, 0
  store ptr %61, ptr %8, align 8
  %62 = extractvalue { ptr, i32 } %60, 1
  store i32 %62, ptr %9, align 4
  br label %275

63:                                               ; preds = %48
  %64 = landingpad { ptr, i32 }
          cleanup
  %65 = extractvalue { ptr, i32 } %64, 0
  store ptr %65, ptr %8, align 8
  %66 = extractvalue { ptr, i32 } %64, 1
  store i32 %66, ptr %9, align 4
  br label %80

67:                                               ; preds = %50
  %68 = landingpad { ptr, i32 }
          cleanup
  %69 = extractvalue { ptr, i32 } %68, 0
  store ptr %69, ptr %8, align 8
  %70 = extractvalue { ptr, i32 } %68, 1
  store i32 %70, ptr %9, align 4
  call void @_ZdlPvm(ptr noundef %49, i64 noundef 64) #11
  br label %80

71:                                               ; preds = %57, %56, %52
  %72 = landingpad { ptr, i32 }
          cleanup
  %73 = extractvalue { ptr, i32 } %72, 0
  store ptr %73, ptr %8, align 8
  %74 = extractvalue { ptr, i32 } %72, 1
  store i32 %74, ptr %9, align 4
  br label %79

75:                                               ; preds = %54
  %76 = landingpad { ptr, i32 }
          cleanup
  %77 = extractvalue { ptr, i32 } %76, 0
  store ptr %77, ptr %8, align 8
  %78 = extractvalue { ptr, i32 } %76, 1
  store i32 %78, ptr %9, align 4
  call void @_ZdlPvm(ptr noundef %53, i64 noundef 64) #11
  br label %79

79:                                               ; preds = %75, %71
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #9
  br label %80

80:                                               ; preds = %79, %67, %63
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #9
  br label %275

81:                                               ; preds = %47
  %82 = load ptr, ptr %7, align 8, !tbaa !5
  %83 = invoke noundef zeroext i1 @_ZNK11DataPackage9isUnicastEv(ptr noundef nonnull align 8 dereferenceable(64) %82)
          to label %84 unwind label %59

84:                                               ; preds = %81
  br i1 %83, label %85, label %145

85:                                               ; preds = %84
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #9
  %86 = getelementptr inbounds %class.DSwitch, ptr %31, i32 0, i32 3
  %87 = load i32, ptr %86, align 8, !tbaa !11
  %88 = getelementptr inbounds %class.DSwitch, ptr %31, i32 0, i32 1
  %89 = load i32, ptr %88, align 8, !tbaa !24
  %90 = lshr i32 %87, %89
  store i32 %90, ptr %12, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #9
  %91 = getelementptr inbounds %class.DSwitch, ptr %31, i32 0, i32 2
  %92 = load i32, ptr %91, align 4, !tbaa !25
  %93 = load i32, ptr %12, align 4, !tbaa !9
  %94 = mul i32 %92, %93
  store i32 %94, ptr %13, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #9
  %95 = load i32, ptr %13, align 4, !tbaa !9
  %96 = uitofp i32 %95 to double
  %97 = load i32, ptr %12, align 4, !tbaa !9
  %98 = sub i32 %97, 1
  %99 = uitofp i32 %98 to double
  %100 = fdiv double %99, 2.000000e+00
  %101 = fadd double %96, %100
  %102 = fptrunc double %101 to float
  store float %102, ptr %14, align 4, !tbaa !26
  %103 = load ptr, ptr %7, align 8, !tbaa !5
  %104 = invoke noundef i32 @_ZNK11DataPackage16get_unicast_destEv(ptr noundef nonnull align 8 dereferenceable(64) %103)
          to label %105 unwind label %115

105:                                              ; preds = %85
  %106 = uitofp i32 %104 to float
  %107 = load float, ptr %14, align 4, !tbaa !26
  %108 = fcmp olt float %106, %107
  br i1 %108, label %109, label %128

109:                                              ; preds = %105
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #9
  %110 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 64) #10
          to label %111 unwind label %119

111:                                              ; preds = %109
  %112 = load ptr, ptr %7, align 8, !tbaa !5
  invoke void @_ZN11DataPackageC1EPS_(ptr noundef nonnull align 8 dereferenceable(64) %110, ptr noundef %112)
          to label %113 unwind label %123

113:                                              ; preds = %111
  store ptr %110, ptr %15, align 8, !tbaa !5
  invoke void @_ZNSt6vectorIP11DataPackageSaIS1_EE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %3, ptr noundef nonnull align 8 dereferenceable(8) %15)
          to label %114 unwind label %119

114:                                              ; preds = %113
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #9
  br label %143

115:                                              ; preds = %85
  %116 = landingpad { ptr, i32 }
          cleanup
  %117 = extractvalue { ptr, i32 } %116, 0
  store ptr %117, ptr %8, align 8
  %118 = extractvalue { ptr, i32 } %116, 1
  store i32 %118, ptr %9, align 4
  br label %144

119:                                              ; preds = %113, %109
  %120 = landingpad { ptr, i32 }
          cleanup
  %121 = extractvalue { ptr, i32 } %120, 0
  store ptr %121, ptr %8, align 8
  %122 = extractvalue { ptr, i32 } %120, 1
  store i32 %122, ptr %9, align 4
  br label %127

123:                                              ; preds = %111
  %124 = landingpad { ptr, i32 }
          cleanup
  %125 = extractvalue { ptr, i32 } %124, 0
  store ptr %125, ptr %8, align 8
  %126 = extractvalue { ptr, i32 } %124, 1
  store i32 %126, ptr %9, align 4
  call void @_ZdlPvm(ptr noundef %110, i64 noundef 64) #11
  br label %127

127:                                              ; preds = %123, %119
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #9
  br label %144

128:                                              ; preds = %105
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #9
  %129 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 64) #10
          to label %130 unwind label %134

130:                                              ; preds = %128
  %131 = load ptr, ptr %7, align 8, !tbaa !5
  invoke void @_ZN11DataPackageC1EPS_(ptr noundef nonnull align 8 dereferenceable(64) %129, ptr noundef %131)
          to label %132 unwind label %138

132:                                              ; preds = %130
  store ptr %129, ptr %16, align 8, !tbaa !5
  invoke void @_ZNSt6vectorIP11DataPackageSaIS1_EE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %4, ptr noundef nonnull align 8 dereferenceable(8) %16)
          to label %133 unwind label %134

133:                                              ; preds = %132
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #9
  br label %143

134:                                              ; preds = %132, %128
  %135 = landingpad { ptr, i32 }
          cleanup
  %136 = extractvalue { ptr, i32 } %135, 0
  store ptr %136, ptr %8, align 8
  %137 = extractvalue { ptr, i32 } %135, 1
  store i32 %137, ptr %9, align 4
  br label %142

138:                                              ; preds = %130
  %139 = landingpad { ptr, i32 }
          cleanup
  %140 = extractvalue { ptr, i32 } %139, 0
  store ptr %140, ptr %8, align 8
  %141 = extractvalue { ptr, i32 } %139, 1
  store i32 %141, ptr %9, align 4
  call void @_ZdlPvm(ptr noundef %129, i64 noundef 64) #11
  br label %142

142:                                              ; preds = %138, %134
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #9
  br label %144

143:                                              ; preds = %133, %114
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #9
  br label %266

144:                                              ; preds = %142, %127, %115
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #9
  br label %275

145:                                              ; preds = %84
  %146 = load ptr, ptr %7, align 8, !tbaa !5
  %147 = invoke noundef zeroext i1 @_ZNK11DataPackage11isMulticastEv(ptr noundef nonnull align 8 dereferenceable(64) %146)
          to label %148 unwind label %59

148:                                              ; preds = %145
  br i1 %147, label %149, label %264

149:                                              ; preds = %148
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #9
  %150 = getelementptr inbounds %class.DSwitch, ptr %31, i32 0, i32 3
  %151 = load i32, ptr %150, align 8, !tbaa !11
  %152 = getelementptr inbounds %class.DSwitch, ptr %31, i32 0, i32 1
  %153 = load i32, ptr %152, align 8, !tbaa !24
  %154 = lshr i32 %151, %153
  store i32 %154, ptr %17, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #9
  %155 = getelementptr inbounds %class.DSwitch, ptr %31, i32 0, i32 2
  %156 = load i32, ptr %155, align 4, !tbaa !25
  %157 = load i32, ptr %17, align 4, !tbaa !9
  %158 = mul i32 %156, %157
  store i32 %158, ptr %18, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #9
  %159 = load i32, ptr %18, align 4, !tbaa !9
  %160 = load i32, ptr %17, align 4, !tbaa !9
  %161 = add i32 %159, %160
  store i32 %161, ptr %19, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #9
  %162 = load i32, ptr %18, align 4, !tbaa !9
  %163 = uitofp i32 %162 to double
  %164 = load i32, ptr %17, align 4, !tbaa !9
  %165 = sub i32 %164, 1
  %166 = uitofp i32 %165 to double
  %167 = fdiv double %166, 2.000000e+00
  %168 = fadd double %163, %167
  %169 = fptrunc double %168 to float
  store float %169, ptr %20, align 4, !tbaa !26
  call void @llvm.lifetime.start.p0(i64 1, ptr %21) #9
  store i8 0, ptr %21, align 1, !tbaa !28
  call void @llvm.lifetime.start.p0(i64 1, ptr %22) #9
  store i8 0, ptr %22, align 1, !tbaa !28
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #9
  %170 = load float, ptr %20, align 4, !tbaa !26
  %171 = invoke noundef float @_ZSt5floorf(float noundef %170)
          to label %172 unwind label %183

172:                                              ; preds = %149
  %173 = fptosi float %171 to i32
  store i32 %173, ptr %23, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #9
  %174 = load ptr, ptr %7, align 8, !tbaa !5
  %175 = invoke noundef ptr @_ZNK11DataPackage9get_destsEv(ptr noundef nonnull align 8 dereferenceable(64) %174)
          to label %176 unwind label %187

176:                                              ; preds = %172
  store ptr %175, ptr %24, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #9
  %177 = load i32, ptr %18, align 4, !tbaa !9
  store i32 %177, ptr %25, align 4, !tbaa !9
  br label %178

178:                                              ; preds = %200, %176
  %179 = load i32, ptr %25, align 4, !tbaa !9
  %180 = load i32, ptr %23, align 4, !tbaa !9
  %181 = icmp sle i32 %179, %180
  br i1 %181, label %191, label %182

182:                                              ; preds = %178
  store i32 5, ptr %6, align 4
  br label %203

183:                                              ; preds = %149
  %184 = landingpad { ptr, i32 }
          cleanup
  %185 = extractvalue { ptr, i32 } %184, 0
  store ptr %185, ptr %8, align 8
  %186 = extractvalue { ptr, i32 } %184, 1
  store i32 %186, ptr %9, align 4
  br label %263

187:                                              ; preds = %172
  %188 = landingpad { ptr, i32 }
          cleanup
  %189 = extractvalue { ptr, i32 } %188, 0
  store ptr %189, ptr %8, align 8
  %190 = extractvalue { ptr, i32 } %188, 1
  store i32 %190, ptr %9, align 4
  br label %262

191:                                              ; preds = %178
  %192 = load ptr, ptr %24, align 8, !tbaa !5
  %193 = load i32, ptr %25, align 4, !tbaa !9
  %194 = sext i32 %193 to i64
  %195 = getelementptr inbounds i8, ptr %192, i64 %194
  %196 = load i8, ptr %195, align 1, !tbaa !28, !range !29, !noundef !30
  %197 = trunc i8 %196 to i1
  br i1 %197, label %198, label %199

198:                                              ; preds = %191
  store i8 1, ptr %22, align 1, !tbaa !28
  store i32 5, ptr %6, align 4
  br label %203

199:                                              ; preds = %191
  br label %200

200:                                              ; preds = %199
  %201 = load i32, ptr %25, align 4, !tbaa !9
  %202 = add nsw i32 %201, 1
  store i32 %202, ptr %25, align 4, !tbaa !9
  br label %178, !llvm.loop !31

203:                                              ; preds = %198, %182
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #9
  br label %204

204:                                              ; preds = %203
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #9
  %205 = load i32, ptr %23, align 4, !tbaa !9
  %206 = add nsw i32 %205, 1
  store i32 %206, ptr %26, align 4, !tbaa !9
  br label %207

207:                                              ; preds = %221, %204
  %208 = load i32, ptr %26, align 4, !tbaa !9
  %209 = load i32, ptr %19, align 4, !tbaa !9
  %210 = icmp ult i32 %208, %209
  br i1 %210, label %212, label %211

211:                                              ; preds = %207
  store i32 8, ptr %6, align 4
  br label %224

212:                                              ; preds = %207
  %213 = load ptr, ptr %24, align 8, !tbaa !5
  %214 = load i32, ptr %26, align 4, !tbaa !9
  %215 = sext i32 %214 to i64
  %216 = getelementptr inbounds i8, ptr %213, i64 %215
  %217 = load i8, ptr %216, align 1, !tbaa !28, !range !29, !noundef !30
  %218 = trunc i8 %217 to i1
  br i1 %218, label %219, label %220

219:                                              ; preds = %212
  store i8 1, ptr %21, align 1, !tbaa !28
  store i32 8, ptr %6, align 4
  br label %224

220:                                              ; preds = %212
  br label %221

221:                                              ; preds = %220
  %222 = load i32, ptr %26, align 4, !tbaa !9
  %223 = add nsw i32 %222, 1
  store i32 %223, ptr %26, align 4, !tbaa !9
  br label %207, !llvm.loop !33

224:                                              ; preds = %219, %211
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #9
  br label %225

225:                                              ; preds = %224
  %226 = load i8, ptr %22, align 1, !tbaa !28, !range !29, !noundef !30
  %227 = trunc i8 %226 to i1
  br i1 %227, label %228, label %243

228:                                              ; preds = %225
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #9
  %229 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 64) #10
          to label %230 unwind label %234

230:                                              ; preds = %228
  %231 = load ptr, ptr %7, align 8, !tbaa !5
  invoke void @_ZN11DataPackageC1EPS_(ptr noundef nonnull align 8 dereferenceable(64) %229, ptr noundef %231)
          to label %232 unwind label %238

232:                                              ; preds = %230
  store ptr %229, ptr %27, align 8, !tbaa !5
  invoke void @_ZNSt6vectorIP11DataPackageSaIS1_EE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %3, ptr noundef nonnull align 8 dereferenceable(8) %27)
          to label %233 unwind label %234

233:                                              ; preds = %232
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #9
  br label %243

234:                                              ; preds = %232, %228
  %235 = landingpad { ptr, i32 }
          cleanup
  %236 = extractvalue { ptr, i32 } %235, 0
  store ptr %236, ptr %8, align 8
  %237 = extractvalue { ptr, i32 } %235, 1
  store i32 %237, ptr %9, align 4
  br label %242

238:                                              ; preds = %230
  %239 = landingpad { ptr, i32 }
          cleanup
  %240 = extractvalue { ptr, i32 } %239, 0
  store ptr %240, ptr %8, align 8
  %241 = extractvalue { ptr, i32 } %239, 1
  store i32 %241, ptr %9, align 4
  call void @_ZdlPvm(ptr noundef %229, i64 noundef 64) #11
  br label %242

242:                                              ; preds = %238, %234
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #9
  br label %262

243:                                              ; preds = %233, %225
  %244 = load i8, ptr %21, align 1, !tbaa !28, !range !29, !noundef !30
  %245 = trunc i8 %244 to i1
  br i1 %245, label %246, label %261

246:                                              ; preds = %243
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #9
  %247 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 64) #10
          to label %248 unwind label %252

248:                                              ; preds = %246
  %249 = load ptr, ptr %7, align 8, !tbaa !5
  invoke void @_ZN11DataPackageC1EPS_(ptr noundef nonnull align 8 dereferenceable(64) %247, ptr noundef %249)
          to label %250 unwind label %256

250:                                              ; preds = %248
  store ptr %247, ptr %28, align 8, !tbaa !5
  invoke void @_ZNSt6vectorIP11DataPackageSaIS1_EE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %4, ptr noundef nonnull align 8 dereferenceable(8) %28)
          to label %251 unwind label %252

251:                                              ; preds = %250
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #9
  br label %261

252:                                              ; preds = %250, %246
  %253 = landingpad { ptr, i32 }
          cleanup
  %254 = extractvalue { ptr, i32 } %253, 0
  store ptr %254, ptr %8, align 8
  %255 = extractvalue { ptr, i32 } %253, 1
  store i32 %255, ptr %9, align 4
  br label %260

256:                                              ; preds = %248
  %257 = landingpad { ptr, i32 }
          cleanup
  %258 = extractvalue { ptr, i32 } %257, 0
  store ptr %258, ptr %8, align 8
  %259 = extractvalue { ptr, i32 } %257, 1
  store i32 %259, ptr %9, align 4
  call void @_ZdlPvm(ptr noundef %247, i64 noundef 64) #11
  br label %260

260:                                              ; preds = %256, %252
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #9
  br label %262

261:                                              ; preds = %251, %243
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %22) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %21) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #9
  br label %265

262:                                              ; preds = %260, %242, %187
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #9
  br label %263

263:                                              ; preds = %262, %183
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %22) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %21) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #9
  br label %275

264:                                              ; preds = %148
  call void @__assert_fail(ptr noundef @.str.2, ptr noundef @.str.1, i32 noundef 161, ptr noundef @__PRETTY_FUNCTION__._ZN7DSwitch14route_packagesEv) #12
  unreachable

265:                                              ; preds = %261
  br label %266

266:                                              ; preds = %265, %143
  br label %267

267:                                              ; preds = %266, %58
  %268 = load ptr, ptr %7, align 8, !tbaa !5
  %269 = icmp eq ptr %268, null
  br i1 %269, label %271, label %270

270:                                              ; preds = %267
  call void @_ZN11DataPackageD1Ev(ptr noundef nonnull align 8 dereferenceable(64) %268) #9
  call void @_ZdlPvm(ptr noundef %268, i64 noundef 64) #11
  br label %271

271:                                              ; preds = %270, %267
  call void @llvm.lifetime.end.p0(i64 8, ptr %7) #9
  br label %272

272:                                              ; preds = %271
  %273 = load i32, ptr %5, align 4, !tbaa !9
  %274 = add nsw i32 %273, 1
  store i32 %274, ptr %5, align 4, !tbaa !9
  br label %32, !llvm.loop !34

275:                                              ; preds = %263, %144, %80, %59
  call void @llvm.lifetime.end.p0(i64 8, ptr %7) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %5) #9
  br label %337

276:                                              ; preds = %38
  %277 = call noundef i64 @_ZNKSt6vectorIP11DataPackageSaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %3) #9
  %278 = icmp ugt i64 %277, 0
  br i1 %278, label %279, label %287

279:                                              ; preds = %276
  %280 = call noundef i64 @_ZNKSt6vectorIP11DataPackageSaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %4) #9
  %281 = icmp ugt i64 %280, 0
  br i1 %281, label %282, label %287

282:                                              ; preds = %279
  %283 = getelementptr inbounds %class.DSwitch, ptr %31, i32 0, i32 15
  %284 = getelementptr inbounds %class.DSwitchStats, ptr %283, i32 0, i32 2
  %285 = load i32, ptr %284, align 4, !tbaa !35
  %286 = add i32 %285, 1
  store i32 %286, ptr %284, align 4, !tbaa !35
  br label %299

287:                                              ; preds = %279, %276
  %288 = call noundef i64 @_ZNKSt6vectorIP11DataPackageSaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %3) #9
  %289 = icmp ugt i64 %288, 0
  br i1 %289, label %293, label %290

290:                                              ; preds = %287
  %291 = call noundef i64 @_ZNKSt6vectorIP11DataPackageSaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %4) #9
  %292 = icmp ugt i64 %291, 0
  br i1 %292, label %293, label %298

293:                                              ; preds = %290, %287
  %294 = getelementptr inbounds %class.DSwitch, ptr %31, i32 0, i32 15
  %295 = getelementptr inbounds %class.DSwitchStats, ptr %294, i32 0, i32 3
  %296 = load i32, ptr %295, align 8, !tbaa !36
  %297 = add i32 %296, 1
  store i32 %297, ptr %295, align 8, !tbaa !36
  br label %298

298:                                              ; preds = %293, %290
  br label %299

299:                                              ; preds = %298, %282
  %300 = call noundef i64 @_ZNKSt6vectorIP11DataPackageSaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %3) #9
  %301 = icmp ugt i64 %300, 0
  br i1 %301, label %302, label %319

302:                                              ; preds = %299
  invoke void @_ZNSt6vectorIP11DataPackageSaIS1_EEC2ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %29, ptr noundef nonnull align 8 dereferenceable(24) %3)
          to label %303 unwind label %311

303:                                              ; preds = %302
  %304 = getelementptr inbounds %class.DSwitch, ptr %31, i32 0, i32 10
  %305 = load ptr, ptr %304, align 8, !tbaa !37
  invoke void @_ZN7DSwitch4sendESt6vectorIP11DataPackageSaIS2_EEP10Connection(ptr noundef nonnull align 8 dereferenceable(184) %31, ptr noundef %29, ptr noundef %305)
          to label %306 unwind label %315

306:                                              ; preds = %303
  call void @_ZNSt6vectorIP11DataPackageSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %29) #9
  %307 = getelementptr inbounds %class.DSwitch, ptr %31, i32 0, i32 15
  %308 = getelementptr inbounds %class.DSwitchStats, ptr %307, i32 0, i32 4
  %309 = load i32, ptr %308, align 4, !tbaa !38
  %310 = add i32 %309, 1
  store i32 %310, ptr %308, align 4, !tbaa !38
  br label %319

311:                                              ; preds = %322, %302
  %312 = landingpad { ptr, i32 }
          cleanup
  %313 = extractvalue { ptr, i32 } %312, 0
  store ptr %313, ptr %8, align 8
  %314 = extractvalue { ptr, i32 } %312, 1
  store i32 %314, ptr %9, align 4
  br label %337

315:                                              ; preds = %303
  %316 = landingpad { ptr, i32 }
          cleanup
  %317 = extractvalue { ptr, i32 } %316, 0
  store ptr %317, ptr %8, align 8
  %318 = extractvalue { ptr, i32 } %316, 1
  store i32 %318, ptr %9, align 4
  call void @_ZNSt6vectorIP11DataPackageSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %29) #9
  br label %337

319:                                              ; preds = %306, %299
  %320 = call noundef i64 @_ZNKSt6vectorIP11DataPackageSaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %4) #9
  %321 = icmp ugt i64 %320, 0
  br i1 %321, label %322, label %335

322:                                              ; preds = %319
  invoke void @_ZNSt6vectorIP11DataPackageSaIS1_EEC2ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %30, ptr noundef nonnull align 8 dereferenceable(24) %4)
          to label %323 unwind label %311

323:                                              ; preds = %322
  %324 = getelementptr inbounds %class.DSwitch, ptr %31, i32 0, i32 11
  %325 = load ptr, ptr %324, align 8, !tbaa !39
  invoke void @_ZN7DSwitch4sendESt6vectorIP11DataPackageSaIS2_EEP10Connection(ptr noundef nonnull align 8 dereferenceable(184) %31, ptr noundef %30, ptr noundef %325)
          to label %326 unwind label %331

326:                                              ; preds = %323
  call void @_ZNSt6vectorIP11DataPackageSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %30) #9
  %327 = getelementptr inbounds %class.DSwitch, ptr %31, i32 0, i32 15
  %328 = getelementptr inbounds %class.DSwitchStats, ptr %327, i32 0, i32 5
  %329 = load i32, ptr %328, align 8, !tbaa !40
  %330 = add i32 %329, 1
  store i32 %330, ptr %328, align 8, !tbaa !40
  br label %335

331:                                              ; preds = %323
  %332 = landingpad { ptr, i32 }
          cleanup
  %333 = extractvalue { ptr, i32 } %332, 0
  store ptr %333, ptr %8, align 8
  %334 = extractvalue { ptr, i32 } %332, 1
  store i32 %334, ptr %9, align 4
  call void @_ZNSt6vectorIP11DataPackageSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %30) #9
  br label %337

335:                                              ; preds = %326, %319
  %336 = getelementptr inbounds %class.DSwitch, ptr %31, i32 0, i32 4
  store i8 0, ptr %336, align 4, !tbaa !41
  call void @_ZNSt6vectorIP11DataPackageSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %4) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %4) #9
  call void @_ZNSt6vectorIP11DataPackageSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %3) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %3) #9
  ret void

337:                                              ; preds = %331, %315, %311, %275
  call void @_ZNSt6vectorIP11DataPackageSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %4) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %4) #9
  call void @_ZNSt6vectorIP11DataPackageSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %3) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %3) #9
  br label %338

338:                                              ; preds = %337
  %339 = load ptr, ptr %8, align 8
  %340 = load i32, ptr %9, align 4
  %341 = insertvalue { ptr, i32 } poison, ptr %339, 0
  %342 = insertvalue { ptr, i32 } %341, i32 %340, 1
  resume { ptr, i32 } %342
}

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZNKSt6vectorIP11DataPackageSaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24)) #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP11DataPackageSaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK11DataPackage11isBroadcastEv(ptr noundef nonnull align 8 dereferenceable(64)) #0 align 2

; Function Attrs: nobuiltin allocsize(0)
declare noundef nonnull ptr @_Znwm(i64 noundef) #4

declare void @_ZN11DataPackageC1EPS_(ptr noundef nonnull align 8 dereferenceable(64), ptr noundef) unnamed_addr #5

; Function Attrs: nobuiltin nounwind
declare void @_ZdlPvm(ptr noundef, i64 noundef) #6

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorIP11DataPackageSaIS1_EE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(8)) #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK11DataPackage9isUnicastEv(ptr noundef nonnull align 8 dereferenceable(64)) #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNK11DataPackage16get_unicast_destEv(ptr noundef nonnull align 8 dereferenceable(64)) #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK11DataPackage11isMulticastEv(ptr noundef nonnull align 8 dereferenceable(64)) #0 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef float @_ZSt5floorf(float noundef) #7

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZNK11DataPackage9get_destsEv(ptr noundef nonnull align 8 dereferenceable(64)) #0 align 2

; Function Attrs: nounwind
declare void @_ZN11DataPackageD1Ev(ptr noundef nonnull align 8 dereferenceable(64)) unnamed_addr #8

attributes #0 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { noreturn nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #4 = { nobuiltin allocsize(0) "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { nobuiltin nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #7 = { inlinehint mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #8 = { nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #9 = { nounwind }
attributes #10 = { builtin allocsize(0) }
attributes #11 = { builtin nounwind }
attributes #12 = { noreturn nounwind }

!llvm.module.flags = !{!0, !1, !2, !3}
!llvm.ident = !{!4}

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!12, !10, i64 56}
!12 = !{!"_ZTS7DSwitch", !13, i64 0, !10, i64 48, !10, i64 52, !10, i64 56, !17, i64 60, !10, i64 64, !10, i64 68, !10, i64 72, !18, i64 80, !10, i64 104, !6, i64 112, !6, i64 120, !6, i64 128, !10, i64 136, !16, i64 144, !22, i64 152}
!13 = !{!"_ZTS4Unit", !10, i64 8, !14, i64 16}
!14 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !15, i64 0, !16, i64 8, !7, i64 16}
!15 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !6, i64 0}
!16 = !{!"long", !7, i64 0}
!17 = !{!"bool", !7, i64 0}
!18 = !{!"_ZTSSt6vectorIP11DataPackageSaIS1_EE", !19, i64 0}
!19 = !{!"_ZTSSt12_Vector_baseIP11DataPackageSaIS1_EE", !20, i64 0}
!20 = !{!"_ZTSNSt12_Vector_baseIP11DataPackageSaIS1_EE12_Vector_implE", !21, i64 0}
!21 = !{!"_ZTSNSt12_Vector_baseIP11DataPackageSaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!22 = !{!"_ZTS12DSwitchStats", !23, i64 0, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !10, i64 24}
!23 = !{!"_ZTS5Stats"}
!24 = !{!12, !10, i64 48}
!25 = !{!12, !10, i64 52}
!26 = !{!27, !27, i64 0}
!27 = !{!"float", !7, i64 0}
!28 = !{!17, !17, i64 0}
!29 = !{i8 0, i8 2}
!30 = !{}
!31 = distinct !{!31, !32}
!32 = !{!"llvm.loop.mustprogress"}
!33 = distinct !{!33, !32}
!34 = distinct !{!34, !32}
!35 = !{!12, !10, i64 164}
!36 = !{!12, !10, i64 168}
!37 = !{!12, !6, i64 112}
!38 = !{!12, !10, i64 172}
!39 = !{!12, !6, i64 120}
!40 = !{!12, !10, i64 176}
!41 = !{!12, !17, i64 60}


; Optimized IR (opt -passes='default<O3>'):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<DataPackage *, std::allocator<DataPackage *>>::_Vector_impl" }
%"struct.std::_Vector_base<DataPackage *, std::allocator<DataPackage *>>::_Vector_impl" = type { %"struct.std::_Vector_base<DataPackage *, std::allocator<DataPackage *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<DataPackage *, std::allocator<DataPackage *>>::_Vector_impl_data" = type { ptr, ptr, ptr }

@.str.1 = external hidden unnamed_addr constant [90 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [6 x i8], align 1
@__PRETTY_FUNCTION__._ZN7DSwitch14route_packagesEv = external hidden unnamed_addr constant [31 x i8], align 1

declare i32 @__gxx_personality_v0(...)

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorIP11DataPackageSaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorIP11DataPackageSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7DSwitch4sendESt6vectorIP11DataPackageSaIS2_EEP10Connection(ptr noundef nonnull align 8 dereferenceable(184), ptr noundef, ptr noundef) local_unnamed_addr #1 align 2

; Function Attrs: noreturn nounwind
declare void @__assert_fail(ptr noundef, ptr noundef, i32 noundef, ptr noundef) local_unnamed_addr #2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorIP11DataPackageSaIS1_EEC2ERKS3_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #1 align 2

; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #3

; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #3

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN7DSwitch14route_packagesEv(ptr noundef nonnull align 8 dereferenceable(184) %0) local_unnamed_addr #1 align 2 personality ptr @__gxx_personality_v0 {
  %2 = alloca %"class.std::vector", align 8
  %3 = alloca %"class.std::vector", align 8
  %4 = alloca ptr, align 8
  %5 = alloca ptr, align 8
  %6 = alloca ptr, align 8
  %7 = alloca ptr, align 8
  %8 = alloca ptr, align 8
  %9 = alloca ptr, align 8
  %10 = alloca %"class.std::vector", align 8
  %11 = alloca %"class.std::vector", align 8
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %2) #9
  call void @_ZNSt6vectorIP11DataPackageSaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %2) #9
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %3) #9
  call void @_ZNSt6vectorIP11DataPackageSaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %3) #9
  %12 = getelementptr inbounds i8, ptr %0, i64 80
  %13 = call noundef i64 @_ZNKSt6vectorIP11DataPackageSaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %12) #9
  %.not94 = icmp eq i64 %13, 0
  br i1 %.not94, label %._crit_edge93, label %.lr.ph92

.lr.ph92:                                         ; preds = %1
  %14 = getelementptr inbounds i8, ptr %0, i64 56
  %15 = getelementptr inbounds i8, ptr %0, i64 48
  %16 = getelementptr inbounds i8, ptr %0, i64 52
  br label %18

._crit_edge93:                                    ; preds = %135, %1
  %17 = call noundef i64 @_ZNKSt6vectorIP11DataPackageSaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %2) #9
  %.not = icmp eq i64 %17, 0
  br i1 %.not, label %144, label %138

18:                                               ; preds = %.lr.ph92, %135
  %indvars.iv106 = phi i64 [ 0, %.lr.ph92 ], [ %indvars.iv.next107, %135 ]
  %19 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP11DataPackageSaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %12, i64 noundef %indvars.iv106) #9
  %20 = load ptr, ptr %19, align 8, !tbaa !5
  %21 = call noundef zeroext i1 @_ZNK11DataPackage11isBroadcastEv(ptr noundef nonnull align 8 dereferenceable(64) %20)
  br i1 %21, label %22, label %41

22:                                               ; preds = %18
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %4) #9
  %23 = invoke noalias noundef nonnull dereferenceable(64) ptr @_Znwm(i64 noundef 64) #10
          to label %24 unwind label %31

24:                                               ; preds = %22
  invoke void @_ZN11DataPackageC1EPS_(ptr noundef nonnull align 8 dereferenceable(64) %23, ptr noundef nonnull %20)
          to label %25 unwind label %33

25:                                               ; preds = %24
  store ptr %23, ptr %4, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %5) #9
  %26 = invoke noalias noundef nonnull dereferenceable(64) ptr @_Znwm(i64 noundef 64) #10
          to label %27 unwind label %35

27:                                               ; preds = %25
  invoke void @_ZN11DataPackageC1EPS_(ptr noundef nonnull align 8 dereferenceable(64) %26, ptr noundef nonnull %20)
          to label %28 unwind label %37

28:                                               ; preds = %27
  store ptr %26, ptr %5, align 8, !tbaa !5
  invoke void @_ZNSt6vectorIP11DataPackageSaIS1_EE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %2, ptr noundef nonnull align 8 dereferenceable(8) %4)
          to label %29 unwind label %35

29:                                               ; preds = %28
  invoke void @_ZNSt6vectorIP11DataPackageSaIS1_EE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %3, ptr noundef nonnull align 8 dereferenceable(8) %5)
          to label %30 unwind label %35

30:                                               ; preds = %29
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) #9
  br label %135

31:                                               ; preds = %22
  %32 = landingpad { ptr, i32 }
          cleanup
  br label %40

33:                                               ; preds = %24
  %34 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %23, i64 noundef 64) #11
  br label %40

35:                                               ; preds = %29, %28, %25
  %36 = landingpad { ptr, i32 }
          cleanup
  br label %39

37:                                               ; preds = %27
  %38 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %26, i64 noundef 64) #11
  br label %39

39:                                               ; preds = %37, %35
  %.pn72 = phi { ptr, i32 } [ %36, %35 ], [ %38, %37 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #9
  br label %40

40:                                               ; preds = %39, %33, %31
  %.pn72.pn = phi { ptr, i32 } [ %.pn72, %39 ], [ %34, %33 ], [ %32, %31 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) #9
  br label %180

41:                                               ; preds = %18
  %42 = call noundef zeroext i1 @_ZNK11DataPackage9isUnicastEv(ptr noundef nonnull align 8 dereferenceable(64) %20)
  br i1 %42, label %43, label %78

43:                                               ; preds = %41
  %44 = load i32, ptr %14, align 8, !tbaa !9
  %45 = load i32, ptr %15, align 8, !tbaa !23
  %46 = lshr i32 %44, %45
  %47 = load i32, ptr %16, align 4, !tbaa !24
  %48 = mul i32 %47, %46
  %49 = uitofp i32 %48 to double
  %50 = add i32 %46, -1
  %51 = uitofp i32 %50 to double
  %52 = fmul double %51, 5.000000e-01
  %53 = fadd double %52, %49
  %54 = fptrunc double %53 to float
  %55 = call noundef i32 @_ZNK11DataPackage16get_unicast_destEv(ptr noundef nonnull align 8 dereferenceable(64) %20)
  %56 = uitofp i32 %55 to float
  %57 = fcmp olt float %56, %54
  br i1 %57, label %58, label %68

58:                                               ; preds = %43
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %6) #9
  %59 = invoke noalias noundef nonnull dereferenceable(64) ptr @_Znwm(i64 noundef 64) #10
          to label %60 unwind label %63

60:                                               ; preds = %58
  invoke void @_ZN11DataPackageC1EPS_(ptr noundef nonnull align 8 dereferenceable(64) %59, ptr noundef nonnull %20)
          to label %61 unwind label %65

61:                                               ; preds = %60
  store ptr %59, ptr %6, align 8, !tbaa !5
  invoke void @_ZNSt6vectorIP11DataPackageSaIS1_EE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %2, ptr noundef nonnull align 8 dereferenceable(8) %6)
          to label %62 unwind label %63

62:                                               ; preds = %61
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #9
  br label %135

63:                                               ; preds = %61, %58
  %64 = landingpad { ptr, i32 }
          cleanup
  br label %67

65:                                               ; preds = %60
  %66 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %59, i64 noundef 64) #11
  br label %67

67:                                               ; preds = %65, %63
  %.pn69 = phi { ptr, i32 } [ %64, %63 ], [ %66, %65 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #9
  br label %180

68:                                               ; preds = %43
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %7) #9
  %69 = invoke noalias noundef nonnull dereferenceable(64) ptr @_Znwm(i64 noundef 64) #10
          to label %70 unwind label %73

70:                                               ; preds = %68
  invoke void @_ZN11DataPackageC1EPS_(ptr noundef nonnull align 8 dereferenceable(64) %69, ptr noundef nonnull %20)
          to label %71 unwind label %75

71:                                               ; preds = %70
  store ptr %69, ptr %7, align 8, !tbaa !5
  invoke void @_ZNSt6vectorIP11DataPackageSaIS1_EE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %3, ptr noundef nonnull align 8 dereferenceable(8) %7)
          to label %72 unwind label %73

72:                                               ; preds = %71
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #9
  br label %135

73:                                               ; preds = %71, %68
  %74 = landingpad { ptr, i32 }
          cleanup
  br label %77

75:                                               ; preds = %70
  %76 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %69, i64 noundef 64) #11
  br label %77

77:                                               ; preds = %75, %73
  %.pn67 = phi { ptr, i32 } [ %74, %73 ], [ %76, %75 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #9
  br label %180

78:                                               ; preds = %41
  %79 = call noundef zeroext i1 @_ZNK11DataPackage11isMulticastEv(ptr noundef nonnull align 8 dereferenceable(64) %20)
  br i1 %79, label %80, label %134

80:                                               ; preds = %78
  %81 = load i32, ptr %14, align 8, !tbaa !9
  %82 = load i32, ptr %15, align 8, !tbaa !23
  %83 = lshr i32 %81, %82
  %84 = load i32, ptr %16, align 4, !tbaa !24
  %85 = mul i32 %84, %83
  %86 = add i32 %85, %83
  %87 = uitofp i32 %85 to double
  %88 = add i32 %83, -1
  %89 = uitofp i32 %88 to double
  %90 = fmul double %89, 5.000000e-01
  %91 = fadd double %90, %87
  %92 = fptrunc double %91 to float
  %93 = call noundef float @_ZSt5floorf(float noundef %92)
  %94 = fptosi float %93 to i32
  %95 = call noundef ptr @_ZNK11DataPackage9get_destsEv(ptr noundef nonnull align 8 dereferenceable(64) %20)
  %.not62.not85 = icmp sgt i32 %85, %94
  br i1 %.not62.not85, label %.._crit_edge_crit_edge, label %.lr.ph.preheader

.._crit_edge_crit_edge:                           ; preds = %80
  %.pre = sext i32 %94 to i64
  br label %._crit_edge

.lr.ph.preheader:                                 ; preds = %80
  %96 = sext i32 %85 to i64
  %97 = sext i32 %94 to i64
  %98 = add i32 %94, 1
  %99 = getelementptr inbounds i8, ptr %95, i64 %96
  %100 = load i8, ptr %99, align 1, !tbaa !25, !range !26, !noundef !27
  %101 = trunc nuw i8 %100 to i1
  br i1 %101, label %._crit_edge, label %.lr.ph126

.lr.ph126:                                        ; preds = %.lr.ph.preheader, %.lr.ph
  %indvars.iv125 = phi i64 [ %indvars.iv.next, %.lr.ph ], [ %96, %.lr.ph.preheader ]
  %indvars.iv.next = add nsw i64 %indvars.iv125, 1
  %lftr.wideiv = trunc i64 %indvars.iv.next to i32
  %exitcond = icmp eq i32 %98, %lftr.wideiv
  br i1 %exitcond, label %._crit_edge.loopexit, label %.lr.ph, !llvm.loop !28

.lr.ph:                                           ; preds = %.lr.ph126
  %102 = getelementptr inbounds i8, ptr %95, i64 %indvars.iv.next
  %103 = load i8, ptr %102, align 1, !tbaa !25, !range !26, !noundef !27
  %104 = trunc nuw i8 %103 to i1
  br i1 %104, label %._crit_edge.loopexit, label %.lr.ph126, !llvm.loop !28

._crit_edge.loopexit:                             ; preds = %.lr.ph126, %.lr.ph
  %.not62.not.le = icmp sge i64 %indvars.iv125, %97
  br label %._crit_edge

._crit_edge:                                      ; preds = %._crit_edge.loopexit, %.lr.ph.preheader, %.._crit_edge_crit_edge
  %.pre-phi = phi i64 [ %.pre, %.._crit_edge_crit_edge ], [ %97, %.lr.ph.preheader ], [ %97, %._crit_edge.loopexit ]
  %.not62.not.lcssa = phi i1 [ true, %.._crit_edge_crit_edge ], [ false, %.lr.ph.preheader ], [ %.not62.not.le, %._crit_edge.loopexit ]
  br label %105

105:                                              ; preds = %108, %._crit_edge
  %indvars.iv103 = phi i64 [ %indvars.iv.next104, %108 ], [ %.pre-phi, %._crit_edge ]
  %indvars.iv.next104 = add nsw i64 %indvars.iv103, 1
  %106 = trunc nsw i64 %indvars.iv.next104 to i32
  %107 = icmp ugt i32 %86, %106
  br i1 %107, label %108, label %112

108:                                              ; preds = %105
  %109 = getelementptr inbounds i8, ptr %95, i64 %indvars.iv.next104
  %110 = load i8, ptr %109, align 1, !tbaa !25, !range !26, !noundef !27
  %111 = trunc nuw i8 %110 to i1
  br i1 %111, label %112, label %105, !llvm.loop !30

112:                                              ; preds = %108, %105
  br i1 %.not62.not.lcssa, label %123, label %113

113:                                              ; preds = %112
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %8) #9
  %114 = invoke noalias noundef nonnull dereferenceable(64) ptr @_Znwm(i64 noundef 64) #10
          to label %115 unwind label %118

115:                                              ; preds = %113
  invoke void @_ZN11DataPackageC1EPS_(ptr noundef nonnull align 8 dereferenceable(64) %114, ptr noundef nonnull %20)
          to label %116 unwind label %120

116:                                              ; preds = %115
  store ptr %114, ptr %8, align 8, !tbaa !5
  invoke void @_ZNSt6vectorIP11DataPackageSaIS1_EE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %2, ptr noundef nonnull align 8 dereferenceable(8) %8)
          to label %117 unwind label %118

117:                                              ; preds = %116
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #9
  br label %123

118:                                              ; preds = %116, %113
  %119 = landingpad { ptr, i32 }
          cleanup
  br label %122

120:                                              ; preds = %115
  %121 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %114, i64 noundef 64) #11
  br label %122

122:                                              ; preds = %120, %118
  %.pn = phi { ptr, i32 } [ %119, %118 ], [ %121, %120 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #9
  br label %180

123:                                              ; preds = %117, %112
  br i1 %107, label %124, label %135

124:                                              ; preds = %123
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %9) #9
  %125 = invoke noalias noundef nonnull dereferenceable(64) ptr @_Znwm(i64 noundef 64) #10
          to label %126 unwind label %129

126:                                              ; preds = %124
  invoke void @_ZN11DataPackageC1EPS_(ptr noundef nonnull align 8 dereferenceable(64) %125, ptr noundef nonnull %20)
          to label %127 unwind label %131

127:                                              ; preds = %126
  store ptr %125, ptr %9, align 8, !tbaa !5
  invoke void @_ZNSt6vectorIP11DataPackageSaIS1_EE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %3, ptr noundef nonnull align 8 dereferenceable(8) %9)
          to label %128 unwind label %129

128:                                              ; preds = %127
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #9
  br label %135

129:                                              ; preds = %127, %124
  %130 = landingpad { ptr, i32 }
          cleanup
  br label %133

131:                                              ; preds = %126
  %132 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %125, i64 noundef 64) #11
  br label %133

133:                                              ; preds = %131, %129
  %.pn64 = phi { ptr, i32 } [ %130, %129 ], [ %132, %131 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #9
  br label %180

134:                                              ; preds = %78
  call void @__assert_fail(ptr noundef nonnull @.str.2, ptr noundef nonnull @.str.1, i32 noundef 161, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN7DSwitch14route_packagesEv) #12
  unreachable

135:                                              ; preds = %30, %72, %62, %128, %123
  call void @_ZN11DataPackageD1Ev(ptr noundef nonnull align 8 dereferenceable(64) %20) #9
  call void @_ZdlPvm(ptr noundef %20, i64 noundef 64) #11
  %indvars.iv.next107 = add nuw nsw i64 %indvars.iv106, 1
  %136 = call noundef i64 @_ZNKSt6vectorIP11DataPackageSaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %12) #9
  %137 = icmp ugt i64 %136, %indvars.iv.next107
  br i1 %137, label %18, label %._crit_edge93, !llvm.loop !31

138:                                              ; preds = %._crit_edge93
  %139 = call noundef i64 @_ZNKSt6vectorIP11DataPackageSaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %3) #9
  %.not57 = icmp eq i64 %139, 0
  br i1 %.not57, label %144, label %140

140:                                              ; preds = %138
  %141 = getelementptr inbounds i8, ptr %0, i64 164
  %142 = load i32, ptr %141, align 4, !tbaa !32
  %143 = add i32 %142, 1
  store i32 %143, ptr %141, align 4, !tbaa !32
  br label %152

144:                                              ; preds = %138, %._crit_edge93
  %145 = call noundef i64 @_ZNKSt6vectorIP11DataPackageSaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %2) #9
  %.not58 = icmp eq i64 %145, 0
  br i1 %.not58, label %146, label %148

146:                                              ; preds = %144
  %147 = call noundef i64 @_ZNKSt6vectorIP11DataPackageSaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %3) #9
  %.not59 = icmp eq i64 %147, 0
  br i1 %.not59, label %152, label %148

148:                                              ; preds = %146, %144
  %149 = getelementptr inbounds i8, ptr %0, i64 168
  %150 = load i32, ptr %149, align 8, !tbaa !33
  %151 = add i32 %150, 1
  store i32 %151, ptr %149, align 8, !tbaa !33
  br label %152

152:                                              ; preds = %146, %148, %140
  %153 = call noundef i64 @_ZNKSt6vectorIP11DataPackageSaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %2) #9
  %.not60 = icmp eq i64 %153, 0
  br i1 %.not60, label %166, label %154

154:                                              ; preds = %152
  invoke void @_ZNSt6vectorIP11DataPackageSaIS1_EEC2ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %10, ptr noundef nonnull align 8 dereferenceable(24) %2)
          to label %155 unwind label %162

155:                                              ; preds = %154
  %156 = getelementptr inbounds i8, ptr %0, i64 112
  %157 = load ptr, ptr %156, align 8, !tbaa !34
  invoke void @_ZN7DSwitch4sendESt6vectorIP11DataPackageSaIS2_EEP10Connection(ptr noundef nonnull align 8 dereferenceable(184) %0, ptr noundef nonnull %10, ptr noundef %157)
          to label %158 unwind label %164

158:                                              ; preds = %155
  call void @_ZNSt6vectorIP11DataPackageSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %10) #9
  %159 = getelementptr inbounds i8, ptr %0, i64 172
  %160 = load i32, ptr %159, align 4, !tbaa !35
  %161 = add i32 %160, 1
  store i32 %161, ptr %159, align 4, !tbaa !35
  br label %166

162:                                              ; preds = %168, %154
  %163 = landingpad { ptr, i32 }
          cleanup
  br label %180

164:                                              ; preds = %155
  %165 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorIP11DataPackageSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %10) #9
  br label %180

166:                                              ; preds = %158, %152
  %167 = call noundef i64 @_ZNKSt6vectorIP11DataPackageSaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %3) #9
  %.not61 = icmp eq i64 %167, 0
  br i1 %.not61, label %178, label %168

168:                                              ; preds = %166
  invoke void @_ZNSt6vectorIP11DataPackageSaIS1_EEC2ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %11, ptr noundef nonnull align 8 dereferenceable(24) %3)
          to label %169 unwind label %162

169:                                              ; preds = %168
  %170 = getelementptr inbounds i8, ptr %0, i64 120
  %171 = load ptr, ptr %170, align 8, !tbaa !36
  invoke void @_ZN7DSwitch4sendESt6vectorIP11DataPackageSaIS2_EEP10Connection(ptr noundef nonnull align 8 dereferenceable(184) %0, ptr noundef nonnull %11, ptr noundef %171)
          to label %172 unwind label %176

172:                                              ; preds = %169
  call void @_ZNSt6vectorIP11DataPackageSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %11) #9
  %173 = getelementptr inbounds i8, ptr %0, i64 176
  %174 = load i32, ptr %173, align 8, !tbaa !37
  %175 = add i32 %174, 1
  store i32 %175, ptr %173, align 8, !tbaa !37
  br label %178

176:                                              ; preds = %169
  %177 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorIP11DataPackageSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %11) #9
  br label %180

178:                                              ; preds = %172, %166
  %179 = getelementptr inbounds i8, ptr %0, i64 60
  store i8 0, ptr %179, align 4, !tbaa !38
  call void @_ZNSt6vectorIP11DataPackageSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %3) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %3) #9
  call void @_ZNSt6vectorIP11DataPackageSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %2) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %2) #9
  ret void

180:                                              ; preds = %40, %77, %67, %133, %122, %176, %164, %162
  %.pn72.pn.pn.pn = phi { ptr, i32 } [ %177, %176 ], [ %163, %162 ], [ %165, %164 ], [ %.pn72.pn, %40 ], [ %.pn69, %67 ], [ %.pn67, %77 ], [ %.pn64, %133 ], [ %.pn, %122 ]
  call void @_ZNSt6vectorIP11DataPackageSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %3) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %3) #9
  call void @_ZNSt6vectorIP11DataPackageSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %2) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %2) #9
  resume { ptr, i32 } %.pn72.pn.pn.pn
}

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZNKSt6vectorIP11DataPackageSaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP11DataPackageSaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) local_unnamed_addr #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK11DataPackage11isBroadcastEv(ptr noundef nonnull align 8 dereferenceable(64)) local_unnamed_addr #0 align 2

; Function Attrs: nobuiltin allocsize(0)
declare noundef nonnull ptr @_Znwm(i64 noundef) local_unnamed_addr #4

declare void @_ZN11DataPackageC1EPS_(ptr noundef nonnull align 8 dereferenceable(64), ptr noundef) unnamed_addr #5

; Function Attrs: nobuiltin nounwind
declare void @_ZdlPvm(ptr noundef, i64 noundef) local_unnamed_addr #6

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorIP11DataPackageSaIS1_EE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK11DataPackage9isUnicastEv(ptr noundef nonnull align 8 dereferenceable(64)) local_unnamed_addr #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNK11DataPackage16get_unicast_destEv(ptr noundef nonnull align 8 dereferenceable(64)) local_unnamed_addr #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK11DataPackage11isMulticastEv(ptr noundef nonnull align 8 dereferenceable(64)) local_unnamed_addr #0 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef float @_ZSt5floorf(float noundef) local_unnamed_addr #7

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZNK11DataPackage9get_destsEv(ptr noundef nonnull align 8 dereferenceable(64)) local_unnamed_addr #0 align 2

; Function Attrs: nounwind
declare void @_ZN11DataPackageD1Ev(ptr noundef nonnull align 8 dereferenceable(64)) unnamed_addr #8

attributes #0 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { noreturn nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #4 = { nobuiltin allocsize(0) "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { nobuiltin nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #7 = { inlinehint mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #8 = { nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #9 = { nounwind }
attributes #10 = { builtin allocsize(0) }
attributes #11 = { builtin nounwind }
attributes #12 = { noreturn nounwind }

!llvm.module.flags = !{!0, !1, !2, !3}
!llvm.ident = !{!4}

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !12, i64 56}
!10 = !{!"_ZTS7DSwitch", !11, i64 0, !12, i64 48, !12, i64 52, !12, i64 56, !16, i64 60, !12, i64 64, !12, i64 68, !12, i64 72, !17, i64 80, !12, i64 104, !6, i64 112, !6, i64 120, !6, i64 128, !12, i64 136, !15, i64 144, !21, i64 152}
!11 = !{!"_ZTS4Unit", !12, i64 8, !13, i64 16}
!12 = !{!"int", !7, i64 0}
!13 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !14, i64 0, !15, i64 8, !7, i64 16}
!14 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !6, i64 0}
!15 = !{!"long", !7, i64 0}
!16 = !{!"bool", !7, i64 0}
!17 = !{!"_ZTSSt6vectorIP11DataPackageSaIS1_EE", !18, i64 0}
!18 = !{!"_ZTSSt12_Vector_baseIP11DataPackageSaIS1_EE", !19, i64 0}
!19 = !{!"_ZTSNSt12_Vector_baseIP11DataPackageSaIS1_EE12_Vector_implE", !20, i64 0}
!20 = !{!"_ZTSNSt12_Vector_baseIP11DataPackageSaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!21 = !{!"_ZTS12DSwitchStats", !22, i64 0, !12, i64 8, !12, i64 12, !12, i64 16, !12, i64 20, !12, i64 24}
!22 = !{!"_ZTS5Stats"}
!23 = !{!10, !12, i64 48}
!24 = !{!10, !12, i64 52}
!25 = !{!16, !16, i64 0}
!26 = !{i8 0, i8 2}
!27 = !{}
!28 = distinct !{!28, !29}
!29 = !{!"llvm.loop.mustprogress"}
!30 = distinct !{!30, !29}
!31 = distinct !{!31, !29}
!32 = !{!10, !12, i64 164}
!33 = !{!10, !12, i64 168}
!34 = !{!10, !6, i64 112}
!35 = !{!10, !12, i64 172}
!36 = !{!10, !6, i64 120}
!37 = !{!10, !12, i64 176}
!38 = !{!10, !16, i64 60}


; Effective O3 passes: CorrelatedValuePropagationPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopInstSimplifyPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,ReassociatePass,SROAPass,SimplifyCFGPass