; LLVM IR from ERGO-Code/HiGHS :: src/util/HighsLinearSumBounds.ll (ZN20HighsLinearSumBounds3addEiid)

; 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.HighsLinearSumBounds = type { %"class.std::vector", %"class.std::vector", %"class.std::vector.3", %"class.std::vector.3", %"class.std::vector", %"class.std::vector", %"class.std::vector.3", %"class.std::vector.3", ptr, ptr, ptr, ptr, ptr, ptr }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<HighsCDouble, std::allocator<HighsCDouble>>::_Vector_impl" }
%"struct.std::_Vector_base<HighsCDouble, std::allocator<HighsCDouble>>::_Vector_impl" = type { %"struct.std::_Vector_base<HighsCDouble, std::allocator<HighsCDouble>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HighsCDouble, std::allocator<HighsCDouble>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.3" = type { %"struct.std::_Vector_base.4" }
%"struct.std::_Vector_base.4" = type { %"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl" }
%"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl" = type { %"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl_data" }
%"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl_data" = type { ptr, ptr, ptr }

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN20HighsLinearSumBounds3addEiid(ptr noundef nonnull align 8 dereferenceable(240) %0, i32 noundef %1, i32 noundef %2, double noundef %3) #1 align 2 {
  %5 = alloca ptr, align 8
  %6 = alloca i32, align 4
  %7 = alloca i32, align 4
  %8 = alloca double, align 8
  %9 = alloca double, align 8
  %10 = alloca double, align 8
  store ptr %0, ptr %5, align 8, !tbaa !5
  store i32 %1, ptr %6, align 4, !tbaa !9
  store i32 %2, ptr %7, align 4, !tbaa !9
  store double %3, ptr %8, align 8, !tbaa !11
  %11 = load ptr, ptr %5, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %9) #4
  %12 = getelementptr inbounds %class.HighsLinearSumBounds, ptr %11, i32 0, i32 12
  %13 = load ptr, ptr %12, align 8, !tbaa !13
  %14 = load i32, ptr %7, align 4, !tbaa !9
  %15 = sext i32 %14 to i64
  %16 = getelementptr inbounds i32, ptr %13, i64 %15
  %17 = load i32, ptr %16, align 4, !tbaa !9
  %18 = load i32, ptr %6, align 4, !tbaa !9
  %19 = icmp eq i32 %17, %18
  br i1 %19, label %20, label %27

20:                                               ; preds = %4
  %21 = getelementptr inbounds %class.HighsLinearSumBounds, ptr %11, i32 0, i32 8
  %22 = load ptr, ptr %21, align 8, !tbaa !23
  %23 = load i32, ptr %7, align 4, !tbaa !9
  %24 = sext i32 %23 to i64
  %25 = getelementptr inbounds double, ptr %22, i64 %24
  %26 = load double, ptr %25, align 8, !tbaa !11
  br label %40

27:                                               ; preds = %4
  %28 = getelementptr inbounds %class.HighsLinearSumBounds, ptr %11, i32 0, i32 10
  %29 = load ptr, ptr %28, align 8, !tbaa !24
  %30 = load i32, ptr %7, align 4, !tbaa !9
  %31 = sext i32 %30 to i64
  %32 = getelementptr inbounds double, ptr %29, i64 %31
  %33 = getelementptr inbounds %class.HighsLinearSumBounds, ptr %11, i32 0, i32 8
  %34 = load ptr, ptr %33, align 8, !tbaa !23
  %35 = load i32, ptr %7, align 4, !tbaa !9
  %36 = sext i32 %35 to i64
  %37 = getelementptr inbounds double, ptr %34, i64 %36
  %38 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxIdERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %32, ptr noundef nonnull align 8 dereferenceable(8) %37)
  %39 = load double, ptr %38, align 8, !tbaa !11
  br label %40

40:                                               ; preds = %27, %20
  %41 = phi double [ %26, %20 ], [ %39, %27 ]
  store double %41, ptr %9, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %10) #4
  %42 = getelementptr inbounds %class.HighsLinearSumBounds, ptr %11, i32 0, i32 13
  %43 = load ptr, ptr %42, align 8, !tbaa !25
  %44 = load i32, ptr %7, align 4, !tbaa !9
  %45 = sext i32 %44 to i64
  %46 = getelementptr inbounds i32, ptr %43, i64 %45
  %47 = load i32, ptr %46, align 4, !tbaa !9
  %48 = load i32, ptr %6, align 4, !tbaa !9
  %49 = icmp eq i32 %47, %48
  br i1 %49, label %50, label %57

50:                                               ; preds = %40
  %51 = getelementptr inbounds %class.HighsLinearSumBounds, ptr %11, i32 0, i32 9
  %52 = load ptr, ptr %51, align 8, !tbaa !26
  %53 = load i32, ptr %7, align 4, !tbaa !9
  %54 = sext i32 %53 to i64
  %55 = getelementptr inbounds double, ptr %52, i64 %54
  %56 = load double, ptr %55, align 8, !tbaa !11
  br label %70

57:                                               ; preds = %40
  %58 = getelementptr inbounds %class.HighsLinearSumBounds, ptr %11, i32 0, i32 11
  %59 = load ptr, ptr %58, align 8, !tbaa !27
  %60 = load i32, ptr %7, align 4, !tbaa !9
  %61 = sext i32 %60 to i64
  %62 = getelementptr inbounds double, ptr %59, i64 %61
  %63 = getelementptr inbounds %class.HighsLinearSumBounds, ptr %11, i32 0, i32 9
  %64 = load ptr, ptr %63, align 8, !tbaa !26
  %65 = load i32, ptr %7, align 4, !tbaa !9
  %66 = sext i32 %65 to i64
  %67 = getelementptr inbounds double, ptr %64, i64 %66
  %68 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3minIdERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %62, ptr noundef nonnull align 8 dereferenceable(8) %67)
  %69 = load double, ptr %68, align 8, !tbaa !11
  br label %70

70:                                               ; preds = %57, %50
  %71 = phi double [ %56, %50 ], [ %69, %57 ]
  store double %71, ptr %10, align 8, !tbaa !11
  %72 = load double, ptr %8, align 8, !tbaa !11
  %73 = fcmp ogt double %72, 0.000000e+00
  br i1 %73, label %74, label %171

74:                                               ; preds = %70
  %75 = load double, ptr %9, align 8, !tbaa !11
  %76 = fcmp oeq double %75, 0xFFF0000000000000
  br i1 %76, label %77, label %84

77:                                               ; preds = %74
  %78 = getelementptr inbounds %class.HighsLinearSumBounds, ptr %11, i32 0, i32 6
  %79 = load i32, ptr %6, align 4, !tbaa !9
  %80 = sext i32 %79 to i64
  %81 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %78, i64 noundef %80) #4
  %82 = load i32, ptr %81, align 4, !tbaa !9
  %83 = add nsw i32 %82, 1
  store i32 %83, ptr %81, align 4, !tbaa !9
  br label %93

84:                                               ; preds = %74
  %85 = load double, ptr %9, align 8, !tbaa !11
  %86 = load double, ptr %8, align 8, !tbaa !11
  %87 = fmul double %85, %86
  %88 = getelementptr inbounds %class.HighsLinearSumBounds, ptr %11, i32 0, i32 4
  %89 = load i32, ptr %6, align 4, !tbaa !9
  %90 = sext i32 %89 to i64
  %91 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorI12HighsCDoubleSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %88, i64 noundef %90) #4
  %92 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN12HighsCDoublepLEd(ptr noundef nonnull align 8 dereferenceable(16) %91, double noundef %87)
  br label %93

93:                                               ; preds = %84, %77
  %94 = load double, ptr %10, align 8, !tbaa !11
  %95 = fcmp oeq double %94, 0x7FF0000000000000
  br i1 %95, label %96, label %103

96:                                               ; preds = %93
  %97 = getelementptr inbounds %class.HighsLinearSumBounds, ptr %11, i32 0, i32 7
  %98 = load i32, ptr %6, align 4, !tbaa !9
  %99 = sext i32 %98 to i64
  %100 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %97, i64 noundef %99) #4
  %101 = load i32, ptr %100, align 4, !tbaa !9
  %102 = add nsw i32 %101, 1
  store i32 %102, ptr %100, align 4, !tbaa !9
  br label %112

103:                                              ; preds = %93
  %104 = load double, ptr %10, align 8, !tbaa !11
  %105 = load double, ptr %8, align 8, !tbaa !11
  %106 = fmul double %104, %105
  %107 = getelementptr inbounds %class.HighsLinearSumBounds, ptr %11, i32 0, i32 5
  %108 = load i32, ptr %6, align 4, !tbaa !9
  %109 = sext i32 %108 to i64
  %110 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorI12HighsCDoubleSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %107, i64 noundef %109) #4
  %111 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN12HighsCDoublepLEd(ptr noundef nonnull align 8 dereferenceable(16) %110, double noundef %106)
  br label %112

112:                                              ; preds = %103, %96
  %113 = getelementptr inbounds %class.HighsLinearSumBounds, ptr %11, i32 0, i32 8
  %114 = load ptr, ptr %113, align 8, !tbaa !23
  %115 = load i32, ptr %7, align 4, !tbaa !9
  %116 = sext i32 %115 to i64
  %117 = getelementptr inbounds double, ptr %114, i64 %116
  %118 = load double, ptr %117, align 8, !tbaa !11
  %119 = fcmp oeq double %118, 0xFFF0000000000000
  br i1 %119, label %120, label %127

120:                                              ; preds = %112
  %121 = getelementptr inbounds %class.HighsLinearSumBounds, ptr %11, i32 0, i32 2
  %122 = load i32, ptr %6, align 4, !tbaa !9
  %123 = sext i32 %122 to i64
  %124 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %121, i64 noundef %123) #4
  %125 = load i32, ptr %124, align 4, !tbaa !9
  %126 = add nsw i32 %125, 1
  store i32 %126, ptr %124, align 4, !tbaa !9
  br label %141

127:                                              ; preds = %112
  %128 = getelementptr inbounds %class.HighsLinearSumBounds, ptr %11, i32 0, i32 8
  %129 = load ptr, ptr %128, align 8, !tbaa !23
  %130 = load i32, ptr %7, align 4, !tbaa !9
  %131 = sext i32 %130 to i64
  %132 = getelementptr inbounds double, ptr %129, i64 %131
  %133 = load double, ptr %132, align 8, !tbaa !11
  %134 = load double, ptr %8, align 8, !tbaa !11
  %135 = fmul double %133, %134
  %136 = getelementptr inbounds %class.HighsLinearSumBounds, ptr %11, i32 0, i32 0
  %137 = load i32, ptr %6, align 4, !tbaa !9
  %138 = sext i32 %137 to i64
  %139 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorI12HighsCDoubleSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %136, i64 noundef %138) #4
  %140 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN12HighsCDoublepLEd(ptr noundef nonnull align 8 dereferenceable(16) %139, double noundef %135)
  br label %141

141:                                              ; preds = %127, %120
  %142 = getelementptr inbounds %class.HighsLinearSumBounds, ptr %11, i32 0, i32 9
  %143 = load ptr, ptr %142, align 8, !tbaa !26
  %144 = load i32, ptr %7, align 4, !tbaa !9
  %145 = sext i32 %144 to i64
  %146 = getelementptr inbounds double, ptr %143, i64 %145
  %147 = load double, ptr %146, align 8, !tbaa !11
  %148 = fcmp oeq double %147, 0x7FF0000000000000
  br i1 %148, label %149, label %156

149:                                              ; preds = %141
  %150 = getelementptr inbounds %class.HighsLinearSumBounds, ptr %11, i32 0, i32 3
  %151 = load i32, ptr %6, align 4, !tbaa !9
  %152 = sext i32 %151 to i64
  %153 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %150, i64 noundef %152) #4
  %154 = load i32, ptr %153, align 4, !tbaa !9
  %155 = add nsw i32 %154, 1
  store i32 %155, ptr %153, align 4, !tbaa !9
  br label %170

156:                                              ; preds = %141
  %157 = getelementptr inbounds %class.HighsLinearSumBounds, ptr %11, i32 0, i32 9
  %158 = load ptr, ptr %157, align 8, !tbaa !26
  %159 = load i32, ptr %7, align 4, !tbaa !9
  %160 = sext i32 %159 to i64
  %161 = getelementptr inbounds double, ptr %158, i64 %160
  %162 = load double, ptr %161, align 8, !tbaa !11
  %163 = load double, ptr %8, align 8, !tbaa !11
  %164 = fmul double %162, %163
  %165 = getelementptr inbounds %class.HighsLinearSumBounds, ptr %11, i32 0, i32 1
  %166 = load i32, ptr %6, align 4, !tbaa !9
  %167 = sext i32 %166 to i64
  %168 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorI12HighsCDoubleSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %165, i64 noundef %167) #4
  %169 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN12HighsCDoublepLEd(ptr noundef nonnull align 8 dereferenceable(16) %168, double noundef %164)
  br label %170

170:                                              ; preds = %156, %149
  br label %268

171:                                              ; preds = %70
  %172 = load double, ptr %10, align 8, !tbaa !11
  %173 = fcmp oeq double %172, 0x7FF0000000000000
  br i1 %173, label %174, label %181

174:                                              ; preds = %171
  %175 = getelementptr inbounds %class.HighsLinearSumBounds, ptr %11, i32 0, i32 6
  %176 = load i32, ptr %6, align 4, !tbaa !9
  %177 = sext i32 %176 to i64
  %178 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %175, i64 noundef %177) #4
  %179 = load i32, ptr %178, align 4, !tbaa !9
  %180 = add nsw i32 %179, 1
  store i32 %180, ptr %178, align 4, !tbaa !9
  br label %190

181:                                              ; preds = %171
  %182 = load double, ptr %10, align 8, !tbaa !11
  %183 = load double, ptr %8, align 8, !tbaa !11
  %184 = fmul double %182, %183
  %185 = getelementptr inbounds %class.HighsLinearSumBounds, ptr %11, i32 0, i32 4
  %186 = load i32, ptr %6, align 4, !tbaa !9
  %187 = sext i32 %186 to i64
  %188 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorI12HighsCDoubleSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %185, i64 noundef %187) #4
  %189 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN12HighsCDoublepLEd(ptr noundef nonnull align 8 dereferenceable(16) %188, double noundef %184)
  br label %190

190:                                              ; preds = %181, %174
  %191 = load double, ptr %9, align 8, !tbaa !11
  %192 = fcmp oeq double %191, 0xFFF0000000000000
  br i1 %192, label %193, label %200

193:                                              ; preds = %190
  %194 = getelementptr inbounds %class.HighsLinearSumBounds, ptr %11, i32 0, i32 7
  %195 = load i32, ptr %6, align 4, !tbaa !9
  %196 = sext i32 %195 to i64
  %197 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %194, i64 noundef %196) #4
  %198 = load i32, ptr %197, align 4, !tbaa !9
  %199 = add nsw i32 %198, 1
  store i32 %199, ptr %197, align 4, !tbaa !9
  br label %209

200:                                              ; preds = %190
  %201 = load double, ptr %9, align 8, !tbaa !11
  %202 = load double, ptr %8, align 8, !tbaa !11
  %203 = fmul double %201, %202
  %204 = getelementptr inbounds %class.HighsLinearSumBounds, ptr %11, i32 0, i32 5
  %205 = load i32, ptr %6, align 4, !tbaa !9
  %206 = sext i32 %205 to i64
  %207 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorI12HighsCDoubleSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %204, i64 noundef %206) #4
  %208 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN12HighsCDoublepLEd(ptr noundef nonnull align 8 dereferenceable(16) %207, double noundef %203)
  br label %209

209:                                              ; preds = %200, %193
  %210 = getelementptr inbounds %class.HighsLinearSumBounds, ptr %11, i32 0, i32 9
  %211 = load ptr, ptr %210, align 8, !tbaa !26
  %212 = load i32, ptr %7, align 4, !tbaa !9
  %213 = sext i32 %212 to i64
  %214 = getelementptr inbounds double, ptr %211, i64 %213
  %215 = load double, ptr %214, align 8, !tbaa !11
  %216 = fcmp oeq double %215, 0x7FF0000000000000
  br i1 %216, label %217, label %224

217:                                              ; preds = %209
  %218 = getelementptr inbounds %class.HighsLinearSumBounds, ptr %11, i32 0, i32 2
  %219 = load i32, ptr %6, align 4, !tbaa !9
  %220 = sext i32 %219 to i64
  %221 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %218, i64 noundef %220) #4
  %222 = load i32, ptr %221, align 4, !tbaa !9
  %223 = add nsw i32 %222, 1
  store i32 %223, ptr %221, align 4, !tbaa !9
  br label %238

224:                                              ; preds = %209
  %225 = getelementptr inbounds %class.HighsLinearSumBounds, ptr %11, i32 0, i32 9
  %226 = load ptr, ptr %225, align 8, !tbaa !26
  %227 = load i32, ptr %7, align 4, !tbaa !9
  %228 = sext i32 %227 to i64
  %229 = getelementptr inbounds double, ptr %226, i64 %228
  %230 = load double, ptr %229, align 8, !tbaa !11
  %231 = load double, ptr %8, align 8, !tbaa !11
  %232 = fmul double %230, %231
  %233 = getelementptr inbounds %class.HighsLinearSumBounds, ptr %11, i32 0, i32 0
  %234 = load i32, ptr %6, align 4, !tbaa !9
  %235 = sext i32 %234 to i64
  %236 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorI12HighsCDoubleSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %233, i64 noundef %235) #4
  %237 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN12HighsCDoublepLEd(ptr noundef nonnull align 8 dereferenceable(16) %236, double noundef %232)
  br label %238

238:                                              ; preds = %224, %217
  %239 = getelementptr inbounds %class.HighsLinearSumBounds, ptr %11, i32 0, i32 8
  %240 = load ptr, ptr %239, align 8, !tbaa !23
  %241 = load i32, ptr %7, align 4, !tbaa !9
  %242 = sext i32 %241 to i64
  %243 = getelementptr inbounds double, ptr %240, i64 %242
  %244 = load double, ptr %243, align 8, !tbaa !11
  %245 = fcmp oeq double %244, 0xFFF0000000000000
  br i1 %245, label %246, label %253

246:                                              ; preds = %238
  %247 = getelementptr inbounds %class.HighsLinearSumBounds, ptr %11, i32 0, i32 3
  %248 = load i32, ptr %6, align 4, !tbaa !9
  %249 = sext i32 %248 to i64
  %250 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %247, i64 noundef %249) #4
  %251 = load i32, ptr %250, align 4, !tbaa !9
  %252 = add nsw i32 %251, 1
  store i32 %252, ptr %250, align 4, !tbaa !9
  br label %267

253:                                              ; preds = %238
  %254 = getelementptr inbounds %class.HighsLinearSumBounds, ptr %11, i32 0, i32 8
  %255 = load ptr, ptr %254, align 8, !tbaa !23
  %256 = load i32, ptr %7, align 4, !tbaa !9
  %257 = sext i32 %256 to i64
  %258 = getelementptr inbounds double, ptr %255, i64 %257
  %259 = load double, ptr %258, align 8, !tbaa !11
  %260 = load double, ptr %8, align 8, !tbaa !11
  %261 = fmul double %259, %260
  %262 = getelementptr inbounds %class.HighsLinearSumBounds, ptr %11, i32 0, i32 1
  %263 = load i32, ptr %6, align 4, !tbaa !9
  %264 = sext i32 %263 to i64
  %265 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorI12HighsCDoubleSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %262, i64 noundef %264) #4
  %266 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN12HighsCDoublepLEd(ptr noundef nonnull align 8 dereferenceable(16) %265, double noundef %261)
  br label %267

267:                                              ; preds = %253, %246
  br label %268

268:                                              ; preds = %267, %170
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #4
  ret void
}

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxIdERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) #2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3minIdERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) #2

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(16) ptr @_ZN12HighsCDoublepLEd(ptr noundef nonnull align 8 dereferenceable(16), double noundef) #1 align 2

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
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 = { 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 #3 = { 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 #4 = { 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, !12, i64 0}
!12 = !{!"double", !7, i64 0}
!13 = !{!14, !6, i64 224}
!14 = !{!"_ZTS20HighsLinearSumBounds", !15, i64 0, !15, i64 24, !19, i64 48, !19, i64 72, !15, i64 96, !15, i64 120, !19, i64 144, !19, i64 168, !6, i64 192, !6, i64 200, !6, i64 208, !6, i64 216, !6, i64 224, !6, i64 232}
!15 = !{!"_ZTSSt6vectorI12HighsCDoubleSaIS0_EE", !16, i64 0}
!16 = !{!"_ZTSSt12_Vector_baseI12HighsCDoubleSaIS0_EE", !17, i64 0}
!17 = !{!"_ZTSNSt12_Vector_baseI12HighsCDoubleSaIS0_EE12_Vector_implE", !18, i64 0}
!18 = !{!"_ZTSNSt12_Vector_baseI12HighsCDoubleSaIS0_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!19 = !{!"_ZTSSt6vectorIiSaIiEE", !20, i64 0}
!20 = !{!"_ZTSSt12_Vector_baseIiSaIiEE", !21, i64 0}
!21 = !{!"_ZTSNSt12_Vector_baseIiSaIiEE12_Vector_implE", !22, i64 0}
!22 = !{!"_ZTSNSt12_Vector_baseIiSaIiEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!23 = !{!14, !6, i64 192}
!24 = !{!14, !6, i64 208}
!25 = !{!14, !6, i64 232}
!26 = !{!14, !6, i64 200}
!27 = !{!14, !6, i64 216}


; 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"

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN20HighsLinearSumBounds3addEiid(ptr noundef nonnull align 8 dereferenceable(240) %0, i32 noundef %1, i32 noundef %2, double noundef %3) local_unnamed_addr #0 align 2 {
  %5 = getelementptr inbounds i8, ptr %0, i64 224
  %6 = load ptr, ptr %5, align 8, !tbaa !5
  %7 = sext i32 %2 to i64
  %8 = getelementptr inbounds i32, ptr %6, i64 %7
  %9 = load i32, ptr %8, align 4, !tbaa !18
  %10 = icmp eq i32 %9, %1
  br i1 %10, label %11, label %15

11:                                               ; preds = %4
  %12 = getelementptr inbounds i8, ptr %0, i64 192
  %13 = load ptr, ptr %12, align 8, !tbaa !20
  %14 = getelementptr inbounds double, ptr %13, i64 %7
  br label %23

15:                                               ; preds = %4
  %16 = getelementptr inbounds i8, ptr %0, i64 208
  %17 = load ptr, ptr %16, align 8, !tbaa !21
  %18 = getelementptr inbounds double, ptr %17, i64 %7
  %19 = getelementptr inbounds i8, ptr %0, i64 192
  %20 = load ptr, ptr %19, align 8, !tbaa !20
  %21 = getelementptr inbounds double, ptr %20, i64 %7
  %22 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxIdERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %18, ptr noundef nonnull align 8 dereferenceable(8) %21)
  br label %23

23:                                               ; preds = %15, %11
  %.in = phi ptr [ %14, %11 ], [ %22, %15 ]
  %24 = load double, ptr %.in, align 8, !tbaa !22
  %25 = getelementptr inbounds i8, ptr %0, i64 232
  %26 = load ptr, ptr %25, align 8, !tbaa !24
  %27 = getelementptr inbounds i32, ptr %26, i64 %7
  %28 = load i32, ptr %27, align 4, !tbaa !18
  %29 = icmp eq i32 %28, %1
  br i1 %29, label %30, label %34

30:                                               ; preds = %23
  %31 = getelementptr inbounds i8, ptr %0, i64 200
  %32 = load ptr, ptr %31, align 8, !tbaa !25
  %33 = getelementptr inbounds double, ptr %32, i64 %7
  br label %42

34:                                               ; preds = %23
  %35 = getelementptr inbounds i8, ptr %0, i64 216
  %36 = load ptr, ptr %35, align 8, !tbaa !26
  %37 = getelementptr inbounds double, ptr %36, i64 %7
  %38 = getelementptr inbounds i8, ptr %0, i64 200
  %39 = load ptr, ptr %38, align 8, !tbaa !25
  %40 = getelementptr inbounds double, ptr %39, i64 %7
  %41 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3minIdERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %37, ptr noundef nonnull align 8 dereferenceable(8) %40)
  br label %42

42:                                               ; preds = %34, %30
  %.in59 = phi ptr [ %33, %30 ], [ %41, %34 ]
  %43 = load double, ptr %.in59, align 8, !tbaa !22
  %44 = fcmp ogt double %3, 0.000000e+00
  br i1 %44, label %45, label %107

45:                                               ; preds = %42
  %46 = fcmp oeq double %24, 0xFFF0000000000000
  br i1 %46, label %47, label %53

47:                                               ; preds = %45
  %48 = getelementptr inbounds i8, ptr %0, i64 144
  %49 = sext i32 %1 to i64
  %50 = tail call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %48, i64 noundef %49) #3
  %51 = load i32, ptr %50, align 4, !tbaa !18
  %52 = add nsw i32 %51, 1
  store i32 %52, ptr %50, align 4, !tbaa !18
  br label %59

53:                                               ; preds = %45
  %54 = fmul double %24, %3
  %55 = getelementptr inbounds i8, ptr %0, i64 96
  %56 = sext i32 %1 to i64
  %57 = tail call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorI12HighsCDoubleSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %55, i64 noundef %56) #3
  %58 = tail call noundef nonnull align 8 dereferenceable(16) ptr @_ZN12HighsCDoublepLEd(ptr noundef nonnull align 8 dereferenceable(16) %57, double noundef %54)
  br label %59

59:                                               ; preds = %53, %47
  %60 = fcmp oeq double %43, 0x7FF0000000000000
  br i1 %60, label %61, label %67

61:                                               ; preds = %59
  %62 = getelementptr inbounds i8, ptr %0, i64 168
  %63 = sext i32 %1 to i64
  %64 = tail call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %62, i64 noundef %63) #3
  %65 = load i32, ptr %64, align 4, !tbaa !18
  %66 = add nsw i32 %65, 1
  store i32 %66, ptr %64, align 4, !tbaa !18
  br label %73

67:                                               ; preds = %59
  %68 = fmul double %43, %3
  %69 = getelementptr inbounds i8, ptr %0, i64 120
  %70 = sext i32 %1 to i64
  %71 = tail call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorI12HighsCDoubleSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %69, i64 noundef %70) #3
  %72 = tail call noundef nonnull align 8 dereferenceable(16) ptr @_ZN12HighsCDoublepLEd(ptr noundef nonnull align 8 dereferenceable(16) %71, double noundef %68)
  br label %73

73:                                               ; preds = %67, %61
  %74 = getelementptr inbounds i8, ptr %0, i64 192
  %75 = load ptr, ptr %74, align 8, !tbaa !20
  %76 = getelementptr inbounds double, ptr %75, i64 %7
  %77 = load double, ptr %76, align 8, !tbaa !22
  %78 = fcmp oeq double %77, 0xFFF0000000000000
  %79 = sext i32 %1 to i64
  br i1 %78, label %80, label %85

80:                                               ; preds = %73
  %81 = getelementptr inbounds i8, ptr %0, i64 48
  %82 = tail call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %81, i64 noundef %79) #3
  %83 = load i32, ptr %82, align 4, !tbaa !18
  %84 = add nsw i32 %83, 1
  store i32 %84, ptr %82, align 4, !tbaa !18
  br label %89

85:                                               ; preds = %73
  %86 = fmul double %77, %3
  %87 = tail call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorI12HighsCDoubleSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %0, i64 noundef %79) #3
  %88 = tail call noundef nonnull align 8 dereferenceable(16) ptr @_ZN12HighsCDoublepLEd(ptr noundef nonnull align 8 dereferenceable(16) %87, double noundef %86)
  br label %89

89:                                               ; preds = %85, %80
  %90 = getelementptr inbounds i8, ptr %0, i64 200
  %91 = load ptr, ptr %90, align 8, !tbaa !25
  %92 = getelementptr inbounds double, ptr %91, i64 %7
  %93 = load double, ptr %92, align 8, !tbaa !22
  %94 = fcmp oeq double %93, 0x7FF0000000000000
  br i1 %94, label %95, label %101

95:                                               ; preds = %89
  %96 = getelementptr inbounds i8, ptr %0, i64 72
  %97 = sext i32 %1 to i64
  %98 = tail call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %96, i64 noundef %97) #3
  %99 = load i32, ptr %98, align 4, !tbaa !18
  %100 = add nsw i32 %99, 1
  store i32 %100, ptr %98, align 4, !tbaa !18
  br label %169

101:                                              ; preds = %89
  %102 = fmul double %93, %3
  %103 = getelementptr inbounds i8, ptr %0, i64 24
  %104 = sext i32 %1 to i64
  %105 = tail call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorI12HighsCDoubleSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %103, i64 noundef %104) #3
  %106 = tail call noundef nonnull align 8 dereferenceable(16) ptr @_ZN12HighsCDoublepLEd(ptr noundef nonnull align 8 dereferenceable(16) %105, double noundef %102)
  br label %169

107:                                              ; preds = %42
  %108 = fcmp oeq double %43, 0x7FF0000000000000
  br i1 %108, label %109, label %115

109:                                              ; preds = %107
  %110 = getelementptr inbounds i8, ptr %0, i64 144
  %111 = sext i32 %1 to i64
  %112 = tail call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %110, i64 noundef %111) #3
  %113 = load i32, ptr %112, align 4, !tbaa !18
  %114 = add nsw i32 %113, 1
  store i32 %114, ptr %112, align 4, !tbaa !18
  br label %121

115:                                              ; preds = %107
  %116 = fmul double %43, %3
  %117 = getelementptr inbounds i8, ptr %0, i64 96
  %118 = sext i32 %1 to i64
  %119 = tail call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorI12HighsCDoubleSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %117, i64 noundef %118) #3
  %120 = tail call noundef nonnull align 8 dereferenceable(16) ptr @_ZN12HighsCDoublepLEd(ptr noundef nonnull align 8 dereferenceable(16) %119, double noundef %116)
  br label %121

121:                                              ; preds = %115, %109
  %122 = fcmp oeq double %24, 0xFFF0000000000000
  br i1 %122, label %123, label %129

123:                                              ; preds = %121
  %124 = getelementptr inbounds i8, ptr %0, i64 168
  %125 = sext i32 %1 to i64
  %126 = tail call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %124, i64 noundef %125) #3
  %127 = load i32, ptr %126, align 4, !tbaa !18
  %128 = add nsw i32 %127, 1
  store i32 %128, ptr %126, align 4, !tbaa !18
  br label %135

129:                                              ; preds = %121
  %130 = fmul double %24, %3
  %131 = getelementptr inbounds i8, ptr %0, i64 120
  %132 = sext i32 %1 to i64
  %133 = tail call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorI12HighsCDoubleSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %131, i64 noundef %132) #3
  %134 = tail call noundef nonnull align 8 dereferenceable(16) ptr @_ZN12HighsCDoublepLEd(ptr noundef nonnull align 8 dereferenceable(16) %133, double noundef %130)
  br label %135

135:                                              ; preds = %129, %123
  %136 = getelementptr inbounds i8, ptr %0, i64 200
  %137 = load ptr, ptr %136, align 8, !tbaa !25
  %138 = getelementptr inbounds double, ptr %137, i64 %7
  %139 = load double, ptr %138, align 8, !tbaa !22
  %140 = fcmp oeq double %139, 0x7FF0000000000000
  %141 = sext i32 %1 to i64
  br i1 %140, label %142, label %147

142:                                              ; preds = %135
  %143 = getelementptr inbounds i8, ptr %0, i64 48
  %144 = tail call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %143, i64 noundef %141) #3
  %145 = load i32, ptr %144, align 4, !tbaa !18
  %146 = add nsw i32 %145, 1
  store i32 %146, ptr %144, align 4, !tbaa !18
  br label %151

147:                                              ; preds = %135
  %148 = fmul double %139, %3
  %149 = tail call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorI12HighsCDoubleSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %0, i64 noundef %141) #3
  %150 = tail call noundef nonnull align 8 dereferenceable(16) ptr @_ZN12HighsCDoublepLEd(ptr noundef nonnull align 8 dereferenceable(16) %149, double noundef %148)
  br label %151

151:                                              ; preds = %147, %142
  %152 = getelementptr inbounds i8, ptr %0, i64 192
  %153 = load ptr, ptr %152, align 8, !tbaa !20
  %154 = getelementptr inbounds double, ptr %153, i64 %7
  %155 = load double, ptr %154, align 8, !tbaa !22
  %156 = fcmp oeq double %155, 0xFFF0000000000000
  br i1 %156, label %157, label %163

157:                                              ; preds = %151
  %158 = getelementptr inbounds i8, ptr %0, i64 72
  %159 = sext i32 %1 to i64
  %160 = tail call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %158, i64 noundef %159) #3
  %161 = load i32, ptr %160, align 4, !tbaa !18
  %162 = add nsw i32 %161, 1
  store i32 %162, ptr %160, align 4, !tbaa !18
  br label %169

163:                                              ; preds = %151
  %164 = fmul double %155, %3
  %165 = getelementptr inbounds i8, ptr %0, i64 24
  %166 = sext i32 %1 to i64
  %167 = tail call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorI12HighsCDoubleSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %165, i64 noundef %166) #3
  %168 = tail call noundef nonnull align 8 dereferenceable(16) ptr @_ZN12HighsCDoublepLEd(ptr noundef nonnull align 8 dereferenceable(16) %167, double noundef %164)
  br label %169

169:                                              ; preds = %157, %163, %95, %101
  ret void
}

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxIdERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #1

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3minIdERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #1

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(16) ptr @_ZN12HighsCDoublepLEd(ptr noundef nonnull align 8 dereferenceable(16), double noundef) local_unnamed_addr #0 align 2

attributes #0 = { 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 #1 = { 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 #2 = { 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 #3 = { 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, !11, i64 224}
!6 = !{!"_ZTS20HighsLinearSumBounds", !7, i64 0, !7, i64 24, !14, i64 48, !14, i64 72, !7, i64 96, !7, i64 120, !14, i64 144, !14, i64 168, !11, i64 192, !11, i64 200, !11, i64 208, !11, i64 216, !11, i64 224, !11, i64 232}
!7 = !{!"_ZTSSt6vectorI12HighsCDoubleSaIS0_EE", !8, i64 0}
!8 = !{!"_ZTSSt12_Vector_baseI12HighsCDoubleSaIS0_EE", !9, i64 0}
!9 = !{!"_ZTSNSt12_Vector_baseI12HighsCDoubleSaIS0_EE12_Vector_implE", !10, i64 0}
!10 = !{!"_ZTSNSt12_Vector_baseI12HighsCDoubleSaIS0_EE17_Vector_impl_dataE", !11, i64 0, !11, i64 8, !11, i64 16}
!11 = !{!"any pointer", !12, i64 0}
!12 = !{!"omnipotent char", !13, i64 0}
!13 = !{!"Simple C++ TBAA"}
!14 = !{!"_ZTSSt6vectorIiSaIiEE", !15, i64 0}
!15 = !{!"_ZTSSt12_Vector_baseIiSaIiEE", !16, i64 0}
!16 = !{!"_ZTSNSt12_Vector_baseIiSaIiEE12_Vector_implE", !17, i64 0}
!17 = !{!"_ZTSNSt12_Vector_baseIiSaIiEE17_Vector_impl_dataE", !11, i64 0, !11, i64 8, !11, i64 16}
!18 = !{!19, !19, i64 0}
!19 = !{!"int", !12, i64 0}
!20 = !{!6, !11, i64 192}
!21 = !{!6, !11, i64 208}
!22 = !{!23, !23, i64 0}
!23 = !{!"double", !12, i64 0}
!24 = !{!6, !11, i64 232}
!25 = !{!6, !11, i64 200}
!26 = !{!6, !11, i64 216}


; Effective O3 passes: EarlyCSEPass,GlobalOptPass,InferFunctionAttrsPass,InstCombinePass,ReassociatePass,SROAPass,SimplifyCFGPass,TailCallElimPass