; LLVM IR from cfd-rg-solver/FVM-RG-Solver :: src/riemannsolver.ll (ZN16ExacRiemanSolver11computeFluxEP16SystemOfEquationd)

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

%struct.macroParam = type { %struct.Mixture, %"class.std::vector.5", %"class.std::vector.5", double, double, double, double, double, double, double, double, %"class.std::__cxx11::basic_string" }
%struct.Mixture = type <{ %"class.std::vector", i32, [4 x i8] }>
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<MixtureComponent, std::allocator<MixtureComponent>>::_Vector_impl" }
%"struct.std::_Vector_base<MixtureComponent, std::allocator<MixtureComponent>>::_Vector_impl" = type { %"struct.std::_Vector_base<MixtureComponent, std::allocator<MixtureComponent>>::_Vector_impl_data" }
%"struct.std::_Vector_base<MixtureComponent, std::allocator<MixtureComponent>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.5" = type { %"struct.std::_Vector_base.6" }
%"struct.std::_Vector_base.6" = type { %"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl" }
%"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl" = type { %"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl_data" }
%"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"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.std::allocator.7" = type { i8 }
%"class.__gnu_cxx::__normal_iterator" = type { ptr }
%struct.SystemOfEquation = type { ptr, i64, i64, i64, i64, i64, i64, %struct.Mixture, ptr, ptr, ptr, ptr, %struct.solverParams, i32, %"class.std::vector.0", %"class.std::vector.0", %"class.std::vector.0", %"class.std::vector.0" }
%struct.solverParams = type { i32, double, double, double, double, double, i32, i32, i32, i32, i32, i32 }
%"class.std::vector.0" = type { %"struct.std::_Vector_base.1" }
%"struct.std::_Vector_base.1" = type { %"struct.std::_Vector_base<Matrix, std::allocator<Matrix>>::_Vector_impl" }
%"struct.std::_Vector_base<Matrix, std::allocator<Matrix>>::_Vector_impl" = type { %"struct.std::_Vector_base<Matrix, std::allocator<Matrix>>::_Vector_impl_data" }
%"struct.std::_Vector_base<Matrix, std::allocator<Matrix>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%struct.RiemannSolver = type { ptr, double, %struct.solverParams }

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSaIdEC2Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #1 align 2

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

declare i32 @__gxx_personality_v0(...)

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt15__new_allocatorIdED2Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #1 align 2

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

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare double @llvm.fmuladd.f64(double, double, double) #3

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

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

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

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

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

33:                                               ; preds = %434, %3
  %34 = load i32, ptr %7, align 4, !tbaa !11
  %35 = sext i32 %34 to i64
  %36 = load ptr, ptr %5, align 8, !tbaa !5
  %37 = getelementptr inbounds %struct.SystemOfEquation, ptr %36, i32 0, i32 1
  %38 = load i64, ptr %37, align 8, !tbaa !13
  %39 = sub i64 %38, 1
  %40 = icmp ult i64 %35, %39
  br i1 %40, label %42, label %41

41:                                               ; preds = %33
  store i32 2, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %7) #7
  br label %447

42:                                               ; preds = %33
  call void @llvm.lifetime.start.p0(i64 176, ptr %9) #7
  call void @_ZN10macroParamC2Ev(ptr noundef nonnull align 8 dereferenceable(176) %9)
  call void @llvm.lifetime.start.p0(i64 176, ptr %10) #7
  invoke void @_ZN10macroParamC2Ev(ptr noundef nonnull align 8 dereferenceable(176) %10)
          to label %43 unwind label %216

43:                                               ; preds = %42
  call void @llvm.lifetime.start.p0(i64 176, ptr %13) #7
  invoke void @_ZN10macroParamC2Ev(ptr noundef nonnull align 8 dereferenceable(176) %13)
          to label %44 unwind label %220

44:                                               ; preds = %43
  %45 = load ptr, ptr %5, align 8, !tbaa !5
  %46 = load i32, ptr %7, align 4, !tbaa !11
  %47 = sext i32 %46 to i64
  %48 = load ptr, ptr %45, align 8, !tbaa !27
  %49 = getelementptr inbounds ptr, ptr %48, i64 1
  %50 = load ptr, ptr %49, align 8
  %51 = invoke noundef double %50(ptr noundef nonnull align 8 dereferenceable(296) %45, i64 noundef %47)
          to label %52 unwind label %224

52:                                               ; preds = %44
  %53 = getelementptr inbounds %struct.macroParam, ptr %9, i32 0, i32 3
  store double %51, ptr %53, align 8, !tbaa !29
  %54 = load ptr, ptr %5, align 8, !tbaa !5
  %55 = load i32, ptr %7, align 4, !tbaa !11
  %56 = add nsw i32 %55, 1
  %57 = sext i32 %56 to i64
  %58 = load ptr, ptr %54, align 8, !tbaa !27
  %59 = getelementptr inbounds ptr, ptr %58, i64 1
  %60 = load ptr, ptr %59, align 8
  %61 = invoke noundef double %60(ptr noundef nonnull align 8 dereferenceable(296) %54, i64 noundef %57)
          to label %62 unwind label %224

62:                                               ; preds = %52
  %63 = getelementptr inbounds %struct.macroParam, ptr %10, i32 0, i32 3
  store double %61, ptr %63, align 8, !tbaa !29
  %64 = load ptr, ptr %5, align 8, !tbaa !5
  %65 = load i32, ptr %7, align 4, !tbaa !11
  %66 = sext i32 %65 to i64
  %67 = load ptr, ptr %64, align 8, !tbaa !27
  %68 = getelementptr inbounds ptr, ptr %67, i64 0
  %69 = load ptr, ptr %68, align 8
  %70 = invoke noundef double %69(ptr noundef nonnull align 8 dereferenceable(296) %64, i64 noundef %66)
          to label %71 unwind label %224

71:                                               ; preds = %62
  %72 = getelementptr inbounds %struct.macroParam, ptr %9, i32 0, i32 4
  store double %70, ptr %72, align 8, !tbaa !37
  %73 = load ptr, ptr %5, align 8, !tbaa !5
  %74 = load i32, ptr %7, align 4, !tbaa !11
  %75 = add nsw i32 %74, 1
  %76 = sext i32 %75 to i64
  %77 = load ptr, ptr %73, align 8, !tbaa !27
  %78 = getelementptr inbounds ptr, ptr %77, i64 0
  %79 = load ptr, ptr %78, align 8
  %80 = invoke noundef double %79(ptr noundef nonnull align 8 dereferenceable(296) %73, i64 noundef %76)
          to label %81 unwind label %224

81:                                               ; preds = %71
  %82 = getelementptr inbounds %struct.macroParam, ptr %10, i32 0, i32 4
  store double %80, ptr %82, align 8, !tbaa !37
  %83 = load ptr, ptr %5, align 8, !tbaa !5
  %84 = load i32, ptr %7, align 4, !tbaa !11
  %85 = sext i32 %84 to i64
  %86 = load ptr, ptr %83, align 8, !tbaa !27
  %87 = getelementptr inbounds ptr, ptr %86, i64 3
  %88 = load ptr, ptr %87, align 8
  %89 = invoke noundef double %88(ptr noundef nonnull align 8 dereferenceable(296) %83, i64 noundef %85)
          to label %90 unwind label %224

90:                                               ; preds = %81
  %91 = getelementptr inbounds %struct.macroParam, ptr %9, i32 0, i32 7
  store double %89, ptr %91, align 8, !tbaa !38
  %92 = load ptr, ptr %5, align 8, !tbaa !5
  %93 = load i32, ptr %7, align 4, !tbaa !11
  %94 = add nsw i32 %93, 1
  %95 = sext i32 %94 to i64
  %96 = load ptr, ptr %92, align 8, !tbaa !27
  %97 = getelementptr inbounds ptr, ptr %96, i64 3
  %98 = load ptr, ptr %97, align 8
  %99 = invoke noundef double %98(ptr noundef nonnull align 8 dereferenceable(296) %92, i64 noundef %95)
          to label %100 unwind label %224

100:                                              ; preds = %90
  %101 = getelementptr inbounds %struct.macroParam, ptr %10, i32 0, i32 7
  store double %99, ptr %101, align 8, !tbaa !38
  call void @llvm.lifetime.start.p0(i64 176, ptr %14) #7
  invoke void @_ZN10macroParamC2ERKS_(ptr noundef nonnull align 8 dereferenceable(176) %15, ptr noundef nonnull align 8 dereferenceable(176) %9)
          to label %102 unwind label %228

102:                                              ; preds = %100
  invoke void @_ZN10macroParamC2ERKS_(ptr noundef nonnull align 8 dereferenceable(176) %16, ptr noundef nonnull align 8 dereferenceable(176) %10)
          to label %103 unwind label %232

103:                                              ; preds = %102
  %104 = getelementptr inbounds %struct.RiemannSolver, ptr %32, i32 0, i32 2
  %105 = getelementptr inbounds %struct.solverParams, ptr %104, i32 0, i32 3
  %106 = load double, ptr %105, align 8, !tbaa !39
  invoke void @_ZN16ExacRiemanSolver16exacRiemanSolverE10macroParamS0_d(ptr dead_on_unwind writable sret(%struct.macroParam) align 8 %14, ptr noundef nonnull align 8 dereferenceable(88) %32, ptr noundef %15, ptr noundef %16, double noundef %106)
          to label %107 unwind label %236

107:                                              ; preds = %103
  %108 = call noundef nonnull align 8 dereferenceable(176) ptr @_ZN10macroParamaSEOS_(ptr noundef nonnull align 8 dereferenceable(176) %13, ptr noundef nonnull align 8 dereferenceable(176) %14) #7
  call void @_ZN10macroParamD2Ev(ptr noundef nonnull align 8 dereferenceable(176) %14) #7
  call void @_ZN10macroParamD2Ev(ptr noundef nonnull align 8 dereferenceable(176) %16) #7
  call void @_ZN10macroParamD2Ev(ptr noundef nonnull align 8 dereferenceable(176) %15) #7
  call void @llvm.lifetime.end.p0(i64 176, ptr %14) #7
  %109 = load ptr, ptr %5, align 8, !tbaa !5
  %110 = getelementptr inbounds %struct.SystemOfEquation, ptr %109, i32 0, i32 7
  %111 = getelementptr inbounds %struct.macroParam, ptr %13, i32 0, i32 0
  %112 = invoke noundef nonnull align 8 dereferenceable(28) ptr @_ZN7MixtureaSERKS_(ptr noundef nonnull align 8 dereferenceable(28) %111, ptr noundef nonnull align 8 dereferenceable(28) %110)
          to label %113 unwind label %224

113:                                              ; preds = %107
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #7
  %114 = getelementptr inbounds %struct.macroParam, ptr %13, i32 0, i32 4
  %115 = load double, ptr %114, align 8, !tbaa !37
  %116 = getelementptr inbounds %struct.macroParam, ptr %13, i32 0, i32 3
  %117 = load double, ptr %116, align 8, !tbaa !29
  %118 = fmul double %117, 0x4020A100DFF9D03B
  %119 = getelementptr inbounds %struct.macroParam, ptr %13, i32 0, i32 0
  %120 = invoke noundef double @_ZN7Mixture9molarMassEv(ptr noundef nonnull align 8 dereferenceable(28) %119)
          to label %121 unwind label %242

121:                                              ; preds = %113
  %122 = fdiv double %118, %120
  %123 = fdiv double %115, %122
  store double %123, ptr %17, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #7
  %124 = load ptr, ptr %5, align 8, !tbaa !5
  %125 = getelementptr inbounds %struct.SystemOfEquation, ptr %124, i32 0, i32 10
  %126 = load ptr, ptr %125, align 8, !tbaa !41
  invoke void @_ZN10macroParamC2ERKS_(ptr noundef nonnull align 8 dereferenceable(176) %19, ptr noundef nonnull align 8 dereferenceable(176) %13)
          to label %127 unwind label %246

127:                                              ; preds = %121
  %128 = load ptr, ptr %126, align 8, !tbaa !27
  %129 = getelementptr inbounds ptr, ptr %128, i64 0
  %130 = load ptr, ptr %129, align 8
  %131 = invoke noundef double %130(ptr noundef nonnull align 8 dereferenceable(8) %126, ptr noundef %19)
          to label %132 unwind label %250

132:                                              ; preds = %127
  call void @_ZN10macroParamD2Ev(ptr noundef nonnull align 8 dereferenceable(176) %19) #7
  store double %131, ptr %18, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #7
  %133 = load ptr, ptr %5, align 8, !tbaa !5
  %134 = getelementptr inbounds %struct.SystemOfEquation, ptr %133, i32 0, i32 10
  %135 = load ptr, ptr %134, align 8, !tbaa !41
  invoke void @_ZN10macroParamC2ERKS_(ptr noundef nonnull align 8 dereferenceable(176) %21, ptr noundef nonnull align 8 dereferenceable(176) %13)
          to label %136 unwind label %254

136:                                              ; preds = %132
  %137 = load ptr, ptr %135, align 8, !tbaa !27
  %138 = getelementptr inbounds ptr, ptr %137, i64 1
  %139 = load ptr, ptr %138, align 8
  %140 = invoke noundef double %139(ptr noundef nonnull align 8 dereferenceable(8) %135, ptr noundef %21)
          to label %141 unwind label %258

141:                                              ; preds = %136
  call void @_ZN10macroParamD2Ev(ptr noundef nonnull align 8 dereferenceable(176) %21) #7
  store double %140, ptr %20, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #7
  %142 = load ptr, ptr %5, align 8, !tbaa !5
  %143 = load i32, ptr %7, align 4, !tbaa !11
  %144 = add nsw i32 %143, 1
  %145 = sext i32 %144 to i64
  %146 = load ptr, ptr %142, align 8, !tbaa !27
  %147 = getelementptr inbounds ptr, ptr %146, i64 3
  %148 = load ptr, ptr %147, align 8
  %149 = invoke noundef double %148(ptr noundef nonnull align 8 dereferenceable(296) %142, i64 noundef %145)
          to label %150 unwind label %262

150:                                              ; preds = %141
  %151 = load ptr, ptr %5, align 8, !tbaa !5
  %152 = load i32, ptr %7, align 4, !tbaa !11
  %153 = sext i32 %152 to i64
  %154 = load ptr, ptr %151, align 8, !tbaa !27
  %155 = getelementptr inbounds ptr, ptr %154, i64 3
  %156 = load ptr, ptr %155, align 8
  %157 = invoke noundef double %156(ptr noundef nonnull align 8 dereferenceable(296) %151, i64 noundef %153)
          to label %158 unwind label %262

158:                                              ; preds = %150
  %159 = fsub double %149, %157
  %160 = load double, ptr %6, align 8, !tbaa !9
  %161 = fdiv double %159, %160
  store double %161, ptr %22, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #7
  %162 = load ptr, ptr %5, align 8, !tbaa !5
  %163 = load i32, ptr %7, align 4, !tbaa !11
  %164 = add nsw i32 %163, 1
  %165 = sext i32 %164 to i64
  %166 = load ptr, ptr %162, align 8, !tbaa !27
  %167 = getelementptr inbounds ptr, ptr %166, i64 7
  %168 = load ptr, ptr %167, align 8
  %169 = invoke noundef double %168(ptr noundef nonnull align 8 dereferenceable(296) %162, i64 noundef %165)
          to label %170 unwind label %266

170:                                              ; preds = %158
  %171 = load ptr, ptr %5, align 8, !tbaa !5
  %172 = load i32, ptr %7, align 4, !tbaa !11
  %173 = sext i32 %172 to i64
  %174 = load ptr, ptr %171, align 8, !tbaa !27
  %175 = getelementptr inbounds ptr, ptr %174, i64 7
  %176 = load ptr, ptr %175, align 8
  %177 = invoke noundef double %176(ptr noundef nonnull align 8 dereferenceable(296) %171, i64 noundef %173)
          to label %178 unwind label %266

178:                                              ; preds = %170
  %179 = fsub double %169, %177
  %180 = load double, ptr %6, align 8, !tbaa !9
  %181 = fdiv double %179, %180
  store double %181, ptr %23, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 24, ptr %24) #7
  %182 = load ptr, ptr %5, align 8, !tbaa !5
  %183 = getelementptr inbounds %struct.SystemOfEquation, ptr %182, i32 0, i32 7
  %184 = getelementptr inbounds %struct.Mixture, ptr %183, i32 0, i32 1
  %185 = load i32, ptr %184, align 8, !tbaa !42
  %186 = sext i32 %185 to i64
  call void @llvm.lifetime.start.p0(i64 1, ptr %25) #7
  call void @_ZNSaIdEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %25) #7
  invoke void @_ZNSt6vectorIdSaIdEEC2EmRKS0_(ptr noundef nonnull align 8 dereferenceable(24) %24, i64 noundef %186, ptr noundef nonnull align 1 dereferenceable(1) %25)
          to label %187 unwind label %270

187:                                              ; preds = %178
  call void @_ZNSt15__new_allocatorIdED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %25) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %25) #7
  %188 = load i32, ptr %7, align 4, !tbaa !11
  %189 = icmp eq i32 %188, 0
  br i1 %189, label %198, label %190

190:                                              ; preds = %187
  %191 = load i32, ptr %7, align 4, !tbaa !11
  %192 = sext i32 %191 to i64
  %193 = load ptr, ptr %5, align 8, !tbaa !5
  %194 = getelementptr inbounds %struct.SystemOfEquation, ptr %193, i32 0, i32 1
  %195 = load i64, ptr %194, align 8, !tbaa !13
  %196 = sub i64 %195, 1
  %197 = icmp eq i64 %192, %196
  br i1 %197, label %198, label %278

198:                                              ; preds = %190, %187
  %199 = call ptr @_ZNSt6vectorIdSaIdEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %24) #7
  %200 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %26, i32 0, i32 0
  store ptr %199, ptr %200, align 8
  %201 = call ptr @_ZNSt6vectorIdSaIdEE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %24) #7
  %202 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %27, i32 0, i32 0
  store ptr %201, ptr %202, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #7
  %203 = load ptr, ptr %5, align 8, !tbaa !5
  %204 = getelementptr inbounds %struct.SystemOfEquation, ptr %203, i32 0, i32 11
  %205 = load ptr, ptr %204, align 8, !tbaa !43
  %206 = load ptr, ptr %205, align 8, !tbaa !27
  %207 = getelementptr inbounds ptr, ptr %206, i64 1
  %208 = load ptr, ptr %207, align 8
  %209 = invoke noundef double %208(ptr noundef nonnull align 8 dereferenceable(48) %205)
          to label %210 unwind label %274

210:                                              ; preds = %198
  store double %209, ptr %28, align 8, !tbaa !9
  %211 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %26, i32 0, i32 0
  %212 = load ptr, ptr %211, align 8
  %213 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %27, i32 0, i32 0
  %214 = load ptr, ptr %213, align 8
  invoke void @_ZSt4fillIN9__gnu_cxx17__normal_iteratorIPdSt6vectorIdSaIdEEEEdEvT_S7_RKT0_(ptr %212, ptr %214, ptr noundef nonnull align 8 dereferenceable(8) %28)
          to label %215 unwind label %274

215:                                              ; preds = %210
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #7
  br label %295

216:                                              ; preds = %42
  %217 = landingpad { ptr, i32 }
          cleanup
  %218 = extractvalue { ptr, i32 } %217, 0
  store ptr %218, ptr %11, align 8
  %219 = extractvalue { ptr, i32 } %217, 1
  store i32 %219, ptr %12, align 4
  br label %446

220:                                              ; preds = %43
  %221 = landingpad { ptr, i32 }
          cleanup
  %222 = extractvalue { ptr, i32 } %221, 0
  store ptr %222, ptr %11, align 8
  %223 = extractvalue { ptr, i32 } %221, 1
  store i32 %223, ptr %12, align 4
  br label %445

224:                                              ; preds = %107, %90, %81, %71, %62, %52, %44
  %225 = landingpad { ptr, i32 }
          cleanup
  %226 = extractvalue { ptr, i32 } %225, 0
  store ptr %226, ptr %11, align 8
  %227 = extractvalue { ptr, i32 } %225, 1
  store i32 %227, ptr %12, align 4
  br label %444

228:                                              ; preds = %100
  %229 = landingpad { ptr, i32 }
          cleanup
  %230 = extractvalue { ptr, i32 } %229, 0
  store ptr %230, ptr %11, align 8
  %231 = extractvalue { ptr, i32 } %229, 1
  store i32 %231, ptr %12, align 4
  br label %241

232:                                              ; preds = %102
  %233 = landingpad { ptr, i32 }
          cleanup
  %234 = extractvalue { ptr, i32 } %233, 0
  store ptr %234, ptr %11, align 8
  %235 = extractvalue { ptr, i32 } %233, 1
  store i32 %235, ptr %12, align 4
  br label %240

236:                                              ; preds = %103
  %237 = landingpad { ptr, i32 }
          cleanup
  %238 = extractvalue { ptr, i32 } %237, 0
  store ptr %238, ptr %11, align 8
  %239 = extractvalue { ptr, i32 } %237, 1
  store i32 %239, ptr %12, align 4
  call void @_ZN10macroParamD2Ev(ptr noundef nonnull align 8 dereferenceable(176) %16) #7
  br label %240

240:                                              ; preds = %236, %232
  call void @_ZN10macroParamD2Ev(ptr noundef nonnull align 8 dereferenceable(176) %15) #7
  br label %241

241:                                              ; preds = %240, %228
  call void @llvm.lifetime.end.p0(i64 176, ptr %14) #7
  br label %444

242:                                              ; preds = %113
  %243 = landingpad { ptr, i32 }
          cleanup
  %244 = extractvalue { ptr, i32 } %243, 0
  store ptr %244, ptr %11, align 8
  %245 = extractvalue { ptr, i32 } %243, 1
  store i32 %245, ptr %12, align 4
  br label %443

246:                                              ; preds = %121
  %247 = landingpad { ptr, i32 }
          cleanup
  %248 = extractvalue { ptr, i32 } %247, 0
  store ptr %248, ptr %11, align 8
  %249 = extractvalue { ptr, i32 } %247, 1
  store i32 %249, ptr %12, align 4
  br label %442

250:                                              ; preds = %127
  %251 = landingpad { ptr, i32 }
          cleanup
  %252 = extractvalue { ptr, i32 } %251, 0
  store ptr %252, ptr %11, align 8
  %253 = extractvalue { ptr, i32 } %251, 1
  store i32 %253, ptr %12, align 4
  call void @_ZN10macroParamD2Ev(ptr noundef nonnull align 8 dereferenceable(176) %19) #7
  br label %442

254:                                              ; preds = %132
  %255 = landingpad { ptr, i32 }
          cleanup
  %256 = extractvalue { ptr, i32 } %255, 0
  store ptr %256, ptr %11, align 8
  %257 = extractvalue { ptr, i32 } %255, 1
  store i32 %257, ptr %12, align 4
  br label %441

258:                                              ; preds = %136
  %259 = landingpad { ptr, i32 }
          cleanup
  %260 = extractvalue { ptr, i32 } %259, 0
  store ptr %260, ptr %11, align 8
  %261 = extractvalue { ptr, i32 } %259, 1
  store i32 %261, ptr %12, align 4
  call void @_ZN10macroParamD2Ev(ptr noundef nonnull align 8 dereferenceable(176) %21) #7
  br label %441

262:                                              ; preds = %150, %141
  %263 = landingpad { ptr, i32 }
          cleanup
  %264 = extractvalue { ptr, i32 } %263, 0
  store ptr %264, ptr %11, align 8
  %265 = extractvalue { ptr, i32 } %263, 1
  store i32 %265, ptr %12, align 4
  br label %440

266:                                              ; preds = %170, %158
  %267 = landingpad { ptr, i32 }
          cleanup
  %268 = extractvalue { ptr, i32 } %267, 0
  store ptr %268, ptr %11, align 8
  %269 = extractvalue { ptr, i32 } %267, 1
  store i32 %269, ptr %12, align 4
  br label %439

270:                                              ; preds = %178
  %271 = landingpad { ptr, i32 }
          cleanup
  %272 = extractvalue { ptr, i32 } %271, 0
  store ptr %272, ptr %11, align 8
  %273 = extractvalue { ptr, i32 } %271, 1
  store i32 %273, ptr %12, align 4
  call void @_ZNSt15__new_allocatorIdED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %25) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %25) #7
  br label %438

274:                                              ; preds = %210, %198
  %275 = landingpad { ptr, i32 }
          cleanup
  %276 = extractvalue { ptr, i32 } %275, 0
  store ptr %276, ptr %11, align 8
  %277 = extractvalue { ptr, i32 } %275, 1
  store i32 %277, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #7
  br label %437

278:                                              ; preds = %190
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #7
  store i64 0, ptr %29, align 8, !tbaa !44
  br label %279

279:                                              ; preds = %291, %278
  %280 = load i64, ptr %29, align 8, !tbaa !44
  %281 = load ptr, ptr %5, align 8, !tbaa !5
  %282 = getelementptr inbounds %struct.SystemOfEquation, ptr %281, i32 0, i32 7
  %283 = getelementptr inbounds %struct.Mixture, ptr %282, i32 0, i32 1
  %284 = load i32, ptr %283, align 8, !tbaa !42
  %285 = sext i32 %284 to i64
  %286 = icmp ult i64 %280, %285
  br i1 %286, label %288, label %287

287:                                              ; preds = %279
  store i32 5, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #7
  br label %294

288:                                              ; preds = %279
  %289 = load i64, ptr %29, align 8, !tbaa !44
  %290 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %24, i64 noundef %289) #7
  store double 0.000000e+00, ptr %290, align 8, !tbaa !9
  br label %291

291:                                              ; preds = %288
  %292 = load i64, ptr %29, align 8, !tbaa !44
  %293 = add i64 %292, 1
  store i64 %293, ptr %29, align 8, !tbaa !44
  br label %279, !llvm.loop !45

294:                                              ; preds = %287
  br label %295

295:                                              ; preds = %294, %215
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #7
  store i64 0, ptr %30, align 8, !tbaa !44
  br label %296

296:                                              ; preds = %337, %295
  %297 = load i64, ptr %30, align 8, !tbaa !44
  %298 = load ptr, ptr %5, align 8, !tbaa !5
  %299 = getelementptr inbounds %struct.SystemOfEquation, ptr %298, i32 0, i32 7
  %300 = getelementptr inbounds %struct.Mixture, ptr %299, i32 0, i32 1
  %301 = load i32, ptr %300, align 8, !tbaa !42
  %302 = sext i32 %301 to i64
  %303 = icmp ult i64 %297, %302
  br i1 %303, label %305, label %304

304:                                              ; preds = %296
  store i32 8, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #7
  br label %340

305:                                              ; preds = %296
  %306 = load i64, ptr %30, align 8, !tbaa !44
  %307 = icmp ne i64 %306, 0
  br i1 %307, label %308, label %328

308:                                              ; preds = %305
  %309 = getelementptr inbounds %struct.macroParam, ptr %13, i32 0, i32 3
  %310 = load double, ptr %309, align 8, !tbaa !29
  %311 = fneg double %310
  %312 = fmul double %311, 0.000000e+00
  %313 = load i64, ptr %30, align 8, !tbaa !44
  %314 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %24, i64 noundef %313) #7
  %315 = load double, ptr %314, align 8, !tbaa !9
  %316 = fmul double %312, %315
  %317 = load ptr, ptr %5, align 8, !tbaa !5
  %318 = getelementptr inbounds %struct.SystemOfEquation, ptr %317, i32 0, i32 17
  %319 = load i64, ptr %30, align 8, !tbaa !44
  %320 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorI6MatrixSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %318, i64 noundef %319) #7
  %321 = load i32, ptr %7, align 4, !tbaa !11
  %322 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixixEi(ptr noundef nonnull align 8 dereferenceable(24) %320, i32 noundef %321)
          to label %323 unwind label %324

323:                                              ; preds = %308
  store double %316, ptr %322, align 8, !tbaa !9
  br label %336

324:                                              ; preds = %328, %308
  %325 = landingpad { ptr, i32 }
          cleanup
  %326 = extractvalue { ptr, i32 } %325, 0
  store ptr %326, ptr %11, align 8
  %327 = extractvalue { ptr, i32 } %325, 1
  store i32 %327, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #7
  br label %437

328:                                              ; preds = %305
  %329 = load ptr, ptr %5, align 8, !tbaa !5
  %330 = getelementptr inbounds %struct.SystemOfEquation, ptr %329, i32 0, i32 17
  %331 = load i64, ptr %30, align 8, !tbaa !44
  %332 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorI6MatrixSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %330, i64 noundef %331) #7
  %333 = load i32, ptr %7, align 4, !tbaa !11
  %334 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixixEi(ptr noundef nonnull align 8 dereferenceable(24) %332, i32 noundef %333)
          to label %335 unwind label %324

335:                                              ; preds = %328
  store double 0.000000e+00, ptr %334, align 8, !tbaa !9
  br label %336

336:                                              ; preds = %335, %323
  br label %337

337:                                              ; preds = %336
  %338 = load i64, ptr %30, align 8, !tbaa !44
  %339 = add i64 %338, 1
  store i64 %339, ptr %30, align 8, !tbaa !44
  br label %296, !llvm.loop !47

340:                                              ; preds = %304
  %341 = load double, ptr %18, align 8, !tbaa !9
  %342 = fneg double %341
  %343 = load double, ptr %22, align 8, !tbaa !9
  %344 = fmul double %342, %343
  %345 = load ptr, ptr %5, align 8, !tbaa !5
  %346 = getelementptr inbounds %struct.SystemOfEquation, ptr %345, i32 0, i32 17
  %347 = load ptr, ptr %5, align 8, !tbaa !5
  %348 = getelementptr inbounds %struct.SystemOfEquation, ptr %347, i32 0, i32 3
  %349 = load i64, ptr %348, align 8, !tbaa !48
  %350 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorI6MatrixSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %346, i64 noundef %349) #7
  %351 = load i32, ptr %7, align 4, !tbaa !11
  %352 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixixEi(ptr noundef nonnull align 8 dereferenceable(24) %350, i32 noundef %351)
          to label %353 unwind label %381

353:                                              ; preds = %340
  store double %344, ptr %352, align 8, !tbaa !9
  %354 = load ptr, ptr %5, align 8, !tbaa !5
  %355 = getelementptr inbounds %struct.SystemOfEquation, ptr %354, i32 0, i32 17
  %356 = load ptr, ptr %5, align 8, !tbaa !5
  %357 = getelementptr inbounds %struct.SystemOfEquation, ptr %356, i32 0, i32 4
  %358 = load i64, ptr %357, align 8, !tbaa !49
  %359 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorI6MatrixSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %355, i64 noundef %358) #7
  %360 = load i32, ptr %7, align 4, !tbaa !11
  %361 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixixEi(ptr noundef nonnull align 8 dereferenceable(24) %359, i32 noundef %360)
          to label %362 unwind label %381

362:                                              ; preds = %353
  store double 0.000000e+00, ptr %361, align 8, !tbaa !9
  %363 = load ptr, ptr %5, align 8, !tbaa !5
  %364 = getelementptr inbounds %struct.SystemOfEquation, ptr %363, i32 0, i32 17
  %365 = load ptr, ptr %5, align 8, !tbaa !5
  %366 = getelementptr inbounds %struct.SystemOfEquation, ptr %365, i32 0, i32 5
  %367 = load i64, ptr %366, align 8, !tbaa !50
  %368 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorI6MatrixSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %364, i64 noundef %367) #7
  %369 = load i32, ptr %7, align 4, !tbaa !11
  %370 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixixEi(ptr noundef nonnull align 8 dereferenceable(24) %368, i32 noundef %369)
          to label %371 unwind label %381

371:                                              ; preds = %362
  store double 0.000000e+00, ptr %370, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #7
  store i64 0, ptr %31, align 8, !tbaa !44
  br label %372

372:                                              ; preds = %404, %371
  %373 = load i64, ptr %31, align 8, !tbaa !44
  %374 = load ptr, ptr %5, align 8, !tbaa !5
  %375 = getelementptr inbounds %struct.SystemOfEquation, ptr %374, i32 0, i32 7
  %376 = getelementptr inbounds %struct.Mixture, ptr %375, i32 0, i32 1
  %377 = load i32, ptr %376, align 8, !tbaa !42
  %378 = sext i32 %377 to i64
  %379 = icmp ult i64 %373, %378
  br i1 %379, label %385, label %380

380:                                              ; preds = %372
  store i32 11, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #7
  br label %411

381:                                              ; preds = %411, %362, %353, %340
  %382 = landingpad { ptr, i32 }
          cleanup
  %383 = extractvalue { ptr, i32 } %382, 0
  store ptr %383, ptr %11, align 8
  %384 = extractvalue { ptr, i32 } %382, 1
  store i32 %384, ptr %12, align 4
  br label %437

385:                                              ; preds = %372
  %386 = getelementptr inbounds %struct.macroParam, ptr %13, i32 0, i32 3
  %387 = load double, ptr %386, align 8, !tbaa !29
  %388 = fneg double %387
  %389 = fmul double %388, 0.000000e+00
  %390 = load i64, ptr %31, align 8, !tbaa !44
  %391 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %24, i64 noundef %390) #7
  %392 = load double, ptr %391, align 8, !tbaa !9
  %393 = load ptr, ptr %5, align 8, !tbaa !5
  %394 = getelementptr inbounds %struct.SystemOfEquation, ptr %393, i32 0, i32 17
  %395 = load ptr, ptr %5, align 8, !tbaa !5
  %396 = getelementptr inbounds %struct.SystemOfEquation, ptr %395, i32 0, i32 5
  %397 = load i64, ptr %396, align 8, !tbaa !50
  %398 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorI6MatrixSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %394, i64 noundef %397) #7
  %399 = load i32, ptr %7, align 4, !tbaa !11
  %400 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixixEi(ptr noundef nonnull align 8 dereferenceable(24) %398, i32 noundef %399)
          to label %401 unwind label %407

401:                                              ; preds = %385
  %402 = load double, ptr %400, align 8, !tbaa !9
  %403 = call double @llvm.fmuladd.f64(double %389, double %392, double %402)
  store double %403, ptr %400, align 8, !tbaa !9
  br label %404

404:                                              ; preds = %401
  %405 = load i64, ptr %31, align 8, !tbaa !44
  %406 = add i64 %405, 1
  store i64 %406, ptr %31, align 8, !tbaa !44
  br label %372, !llvm.loop !51

407:                                              ; preds = %385
  %408 = landingpad { ptr, i32 }
          cleanup
  %409 = extractvalue { ptr, i32 } %408, 0
  store ptr %409, ptr %11, align 8
  %410 = extractvalue { ptr, i32 } %408, 1
  store i32 %410, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #7
  br label %437

411:                                              ; preds = %380
  %412 = load double, ptr %20, align 8, !tbaa !9
  %413 = fneg double %412
  %414 = load double, ptr %23, align 8, !tbaa !9
  %415 = load double, ptr %18, align 8, !tbaa !9
  %416 = getelementptr inbounds %struct.macroParam, ptr %13, i32 0, i32 7
  %417 = load double, ptr %416, align 8, !tbaa !38
  %418 = fmul double %415, %417
  %419 = load double, ptr %22, align 8, !tbaa !9
  %420 = fmul double %418, %419
  %421 = fneg double %420
  %422 = call double @llvm.fmuladd.f64(double %413, double %414, double %421)
  %423 = load ptr, ptr %5, align 8, !tbaa !5
  %424 = getelementptr inbounds %struct.SystemOfEquation, ptr %423, i32 0, i32 17
  %425 = load ptr, ptr %5, align 8, !tbaa !5
  %426 = getelementptr inbounds %struct.SystemOfEquation, ptr %425, i32 0, i32 5
  %427 = load i64, ptr %426, align 8, !tbaa !50
  %428 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorI6MatrixSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %424, i64 noundef %427) #7
  %429 = load i32, ptr %7, align 4, !tbaa !11
  %430 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixixEi(ptr noundef nonnull align 8 dereferenceable(24) %428, i32 noundef %429)
          to label %431 unwind label %381

431:                                              ; preds = %411
  %432 = load double, ptr %430, align 8, !tbaa !9
  %433 = fadd double %432, %422
  store double %433, ptr %430, align 8, !tbaa !9
  call void @_ZNSt6vectorIdSaIdEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %24) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %24) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #7
  call void @_ZN10macroParamD2Ev(ptr noundef nonnull align 8 dereferenceable(176) %13) #7
  call void @llvm.lifetime.end.p0(i64 176, ptr %13) #7
  call void @_ZN10macroParamD2Ev(ptr noundef nonnull align 8 dereferenceable(176) %10) #7
  call void @llvm.lifetime.end.p0(i64 176, ptr %10) #7
  call void @_ZN10macroParamD2Ev(ptr noundef nonnull align 8 dereferenceable(176) %9) #7
  call void @llvm.lifetime.end.p0(i64 176, ptr %9) #7
  br label %434

434:                                              ; preds = %431
  %435 = load i32, ptr %7, align 4, !tbaa !11
  %436 = add nsw i32 %435, 1
  store i32 %436, ptr %7, align 4, !tbaa !11
  br label %33, !llvm.loop !52

437:                                              ; preds = %407, %381, %324, %274
  call void @_ZNSt6vectorIdSaIdEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %24) #7
  br label %438

438:                                              ; preds = %437, %270
  call void @llvm.lifetime.end.p0(i64 24, ptr %24) #7
  br label %439

439:                                              ; preds = %438, %266
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #7
  br label %440

440:                                              ; preds = %439, %262
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #7
  br label %441

441:                                              ; preds = %440, %258, %254
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #7
  br label %442

442:                                              ; preds = %441, %250, %246
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #7
  br label %443

443:                                              ; preds = %442, %242
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #7
  br label %444

444:                                              ; preds = %443, %241, %224
  call void @_ZN10macroParamD2Ev(ptr noundef nonnull align 8 dereferenceable(176) %13) #7
  br label %445

445:                                              ; preds = %444, %220
  call void @llvm.lifetime.end.p0(i64 176, ptr %13) #7
  call void @_ZN10macroParamD2Ev(ptr noundef nonnull align 8 dereferenceable(176) %10) #7
  br label %446

446:                                              ; preds = %445, %216
  call void @llvm.lifetime.end.p0(i64 176, ptr %10) #7
  call void @_ZN10macroParamD2Ev(ptr noundef nonnull align 8 dereferenceable(176) %9) #7
  call void @llvm.lifetime.end.p0(i64 176, ptr %9) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %7) #7
  br label %448

447:                                              ; preds = %41
  ret void

448:                                              ; preds = %446
  %449 = load ptr, ptr %11, align 8
  %450 = load i32, ptr %12, align 4
  %451 = insertvalue { ptr, i32 } poison, ptr %449, 0
  %452 = insertvalue { ptr, i32 } %451, i32 %450, 1
  resume { ptr, i32 } %452
}

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN10macroParamC2Ev(ptr noundef nonnull align 8 dereferenceable(176)) unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN16ExacRiemanSolver16exacRiemanSolverE10macroParamS0_d(ptr dead_on_unwind noalias writable sret(%struct.macroParam) align 8, ptr noundef nonnull align 8 dereferenceable(88), ptr noundef, ptr noundef, double noundef) #2 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN10macroParamC2ERKS_(ptr noundef nonnull align 8 dereferenceable(176), ptr noundef nonnull align 8 dereferenceable(176)) unnamed_addr #4 align 2

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN10macroParamD2Ev(ptr noundef nonnull align 8 dereferenceable(176)) unnamed_addr #5 align 2

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

declare noundef double @_ZN7Mixture9molarMassEv(ptr noundef nonnull align 8 dereferenceable(28)) #6

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZSt4fillIN9__gnu_cxx17__normal_iteratorIPdSt6vectorIdSaIdEEEEdEvT_S7_RKT0_(ptr, ptr, ptr noundef nonnull align 8 dereferenceable(8)) #4

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

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

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { 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 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 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #4 = { inlinehint 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 #5 = { 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 #6 = { "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 = { 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 = !{!"double", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"int", !7, i64 0}
!13 = !{!14, !15, i64 8}
!14 = !{!"_ZTS16SystemOfEquation", !15, i64 8, !15, i64 16, !15, i64 24, !15, i64 32, !15, i64 40, !15, i64 48, !16, i64 56, !6, i64 88, !6, i64 96, !6, i64 104, !6, i64 112, !21, i64 120, !22, i64 192, !23, i64 200, !23, i64 224, !23, i64 248, !23, i64 272}
!15 = !{!"long", !7, i64 0}
!16 = !{!"_ZTS7Mixture", !17, i64 0, !12, i64 24}
!17 = !{!"_ZTSSt6vectorI16MixtureComponentSaIS0_EE", !18, i64 0}
!18 = !{!"_ZTSSt12_Vector_baseI16MixtureComponentSaIS0_EE", !19, i64 0}
!19 = !{!"_ZTSNSt12_Vector_baseI16MixtureComponentSaIS0_EE12_Vector_implE", !20, i64 0}
!20 = !{!"_ZTSNSt12_Vector_baseI16MixtureComponentSaIS0_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!21 = !{!"_ZTS12solverParams", !12, i64 0, !10, i64 8, !10, i64 16, !10, i64 24, !10, i64 32, !10, i64 40, !12, i64 48, !12, i64 52, !12, i64 56, !12, i64 60, !12, i64 64, !12, i64 68}
!22 = !{!"_ZTS20SystemOfEquationType", !7, i64 0}
!23 = !{!"_ZTSSt6vectorI6MatrixSaIS0_EE", !24, i64 0}
!24 = !{!"_ZTSSt12_Vector_baseI6MatrixSaIS0_EE", !25, i64 0}
!25 = !{!"_ZTSNSt12_Vector_baseI6MatrixSaIS0_EE12_Vector_implE", !26, i64 0}
!26 = !{!"_ZTSNSt12_Vector_baseI6MatrixSaIS0_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!27 = !{!28, !28, i64 0}
!28 = !{!"vtable pointer", !8, i64 0}
!29 = !{!30, !10, i64 80}
!30 = !{!"_ZTS10macroParam", !16, i64 0, !31, i64 32, !31, i64 56, !10, i64 80, !10, i64 88, !10, i64 96, !10, i64 104, !10, i64 112, !10, i64 120, !10, i64 128, !10, i64 136, !35, i64 144}
!31 = !{!"_ZTSSt6vectorIdSaIdEE", !32, i64 0}
!32 = !{!"_ZTSSt12_Vector_baseIdSaIdEE", !33, i64 0}
!33 = !{!"_ZTSNSt12_Vector_baseIdSaIdEE12_Vector_implE", !34, i64 0}
!34 = !{!"_ZTSNSt12_Vector_baseIdSaIdEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!35 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !36, i64 0, !15, i64 8, !7, i64 16}
!36 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !6, i64 0}
!37 = !{!30, !10, i64 88}
!38 = !{!30, !10, i64 112}
!39 = !{!40, !10, i64 40}
!40 = !{!"_ZTS13RiemannSolver", !10, i64 8, !21, i64 16}
!41 = !{!14, !6, i64 104}
!42 = !{!14, !12, i64 80}
!43 = !{!14, !6, i64 112}
!44 = !{!15, !15, i64 0}
!45 = distinct !{!45, !46}
!46 = !{!"llvm.loop.mustprogress"}
!47 = distinct !{!47, !46}
!48 = !{!14, !15, i64 24}
!49 = !{!14, !15, i64 32}
!50 = !{!14, !15, i64 40}
!51 = distinct !{!51, !46}
!52 = distinct !{!52, !46}


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

%struct.macroParam = type { %struct.Mixture, %"class.std::vector.5", %"class.std::vector.5", double, double, double, double, double, double, double, double, %"class.std::__cxx11::basic_string" }
%struct.Mixture = type <{ %"class.std::vector", i32, [4 x i8] }>
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<MixtureComponent, std::allocator<MixtureComponent>>::_Vector_impl" }
%"struct.std::_Vector_base<MixtureComponent, std::allocator<MixtureComponent>>::_Vector_impl" = type { %"struct.std::_Vector_base<MixtureComponent, std::allocator<MixtureComponent>>::_Vector_impl_data" }
%"struct.std::_Vector_base<MixtureComponent, std::allocator<MixtureComponent>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.5" = type { %"struct.std::_Vector_base.6" }
%"struct.std::_Vector_base.6" = type { %"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl" }
%"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl" = type { %"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl_data" }
%"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"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.std::allocator.7" = type { i8 }

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSaIdEC2Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #1 align 2

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

declare i32 @__gxx_personality_v0(...)

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt15__new_allocatorIdED2Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #1 align 2

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

; Function Attrs: mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare double @llvm.fmuladd.f64(double, double, double) #3

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN16ExacRiemanSolver11computeFluxEP16SystemOfEquationd(ptr noundef nonnull align 8 dereferenceable(88) %0, ptr noundef %1, double noundef %2) unnamed_addr #2 align 2 personality ptr @__gxx_personality_v0 {
  %4 = alloca %struct.macroParam, align 8
  %5 = alloca %struct.macroParam, align 8
  %6 = alloca %struct.macroParam, align 8
  %7 = alloca %struct.macroParam, align 8
  %8 = alloca %struct.macroParam, align 8
  %9 = alloca %struct.macroParam, align 8
  %10 = alloca %struct.macroParam, align 8
  %11 = alloca %struct.macroParam, align 8
  %12 = alloca %"class.std::vector.5", align 8
  %13 = alloca %"class.std::allocator.7", align 1
  %14 = alloca double, align 8
  %15 = getelementptr inbounds i8, ptr %1, i64 8
  %16 = load i64, ptr %15, align 8, !tbaa !5
  %.not115 = icmp eq i64 %16, 1
  br i1 %.not115, label %._crit_edge114, label %.lr.ph113

.lr.ph113:                                        ; preds = %3
  %17 = getelementptr inbounds i8, ptr %4, i64 80
  %18 = getelementptr inbounds i8, ptr %5, i64 80
  %19 = getelementptr inbounds i8, ptr %4, i64 88
  %20 = getelementptr inbounds i8, ptr %5, i64 88
  %21 = getelementptr inbounds i8, ptr %4, i64 112
  %22 = getelementptr inbounds i8, ptr %5, i64 112
  %23 = getelementptr inbounds i8, ptr %0, i64 40
  %24 = getelementptr inbounds i8, ptr %1, i64 56
  %25 = getelementptr inbounds i8, ptr %6, i64 80
  %26 = getelementptr inbounds i8, ptr %1, i64 104
  %27 = getelementptr inbounds i8, ptr %1, i64 80
  %28 = getelementptr inbounds i8, ptr %1, i64 112
  %29 = getelementptr inbounds i8, ptr %1, i64 272
  %30 = getelementptr inbounds i8, ptr %1, i64 24
  %31 = getelementptr inbounds i8, ptr %1, i64 32
  %32 = getelementptr inbounds i8, ptr %1, i64 40
  %33 = getelementptr inbounds i8, ptr %6, i64 112
  br label %34

._crit_edge114:                                   ; preds = %._crit_edge110, %3
  ret void

34:                                               ; preds = %.lr.ph113, %._crit_edge110
  %indvars.iv = phi i64 [ 0, %.lr.ph113 ], [ %indvars.iv.next, %._crit_edge110 ]
  call void @llvm.lifetime.start.p0(i64 176, ptr nonnull %4) #7
  call void @_ZN10macroParamC2Ev(ptr noundef nonnull align 8 dereferenceable(176) %4)
  call void @llvm.lifetime.start.p0(i64 176, ptr nonnull %5) #7
  invoke void @_ZN10macroParamC2Ev(ptr noundef nonnull align 8 dereferenceable(176) %5)
          to label %35 unwind label %130

35:                                               ; preds = %34
  call void @llvm.lifetime.start.p0(i64 176, ptr nonnull %6) #7
  invoke void @_ZN10macroParamC2Ev(ptr noundef nonnull align 8 dereferenceable(176) %6)
          to label %36 unwind label %132

36:                                               ; preds = %35
  %37 = load ptr, ptr %1, align 8, !tbaa !24
  %38 = getelementptr inbounds i8, ptr %37, i64 8
  %39 = load ptr, ptr %38, align 8
  %40 = invoke noundef double %39(ptr noundef nonnull align 8 dereferenceable(296) %1, i64 noundef %indvars.iv)
          to label %41 unwind label %134

41:                                               ; preds = %36
  store double %40, ptr %17, align 8, !tbaa !26
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %42 = load ptr, ptr %1, align 8, !tbaa !24
  %43 = getelementptr inbounds i8, ptr %42, i64 8
  %44 = load ptr, ptr %43, align 8
  %45 = invoke noundef double %44(ptr noundef nonnull align 8 dereferenceable(296) %1, i64 noundef %indvars.iv.next)
          to label %46 unwind label %134

46:                                               ; preds = %41
  store double %45, ptr %18, align 8, !tbaa !26
  %47 = load ptr, ptr %1, align 8, !tbaa !24
  %48 = load ptr, ptr %47, align 8
  %49 = invoke noundef double %48(ptr noundef nonnull align 8 dereferenceable(296) %1, i64 noundef %indvars.iv)
          to label %50 unwind label %134

50:                                               ; preds = %46
  store double %49, ptr %19, align 8, !tbaa !34
  %51 = load ptr, ptr %1, align 8, !tbaa !24
  %52 = load ptr, ptr %51, align 8
  %53 = invoke noundef double %52(ptr noundef nonnull align 8 dereferenceable(296) %1, i64 noundef %indvars.iv.next)
          to label %54 unwind label %134

54:                                               ; preds = %50
  store double %53, ptr %20, align 8, !tbaa !34
  %55 = load ptr, ptr %1, align 8, !tbaa !24
  %56 = getelementptr inbounds i8, ptr %55, i64 24
  %57 = load ptr, ptr %56, align 8
  %58 = invoke noundef double %57(ptr noundef nonnull align 8 dereferenceable(296) %1, i64 noundef %indvars.iv)
          to label %59 unwind label %134

59:                                               ; preds = %54
  store double %58, ptr %21, align 8, !tbaa !35
  %60 = load ptr, ptr %1, align 8, !tbaa !24
  %61 = getelementptr inbounds i8, ptr %60, i64 24
  %62 = load ptr, ptr %61, align 8
  %63 = invoke noundef double %62(ptr noundef nonnull align 8 dereferenceable(296) %1, i64 noundef %indvars.iv.next)
          to label %64 unwind label %134

64:                                               ; preds = %59
  store double %63, ptr %22, align 8, !tbaa !35
  call void @llvm.lifetime.start.p0(i64 176, ptr nonnull %7) #7
  invoke void @_ZN10macroParamC2ERKS_(ptr noundef nonnull align 8 dereferenceable(176) %8, ptr noundef nonnull align 8 dereferenceable(176) %4)
          to label %65 unwind label %136

65:                                               ; preds = %64
  invoke void @_ZN10macroParamC2ERKS_(ptr noundef nonnull align 8 dereferenceable(176) %9, ptr noundef nonnull align 8 dereferenceable(176) %5)
          to label %66 unwind label %138

66:                                               ; preds = %65
  %67 = load double, ptr %23, align 8, !tbaa !36
  invoke void @_ZN16ExacRiemanSolver16exacRiemanSolverE10macroParamS0_d(ptr dead_on_unwind nonnull writable sret(%struct.macroParam) align 8 %7, ptr noundef nonnull align 8 dereferenceable(88) %0, ptr noundef nonnull %8, ptr noundef nonnull %9, double noundef %67)
          to label %68 unwind label %140

68:                                               ; preds = %66
  %69 = call noundef nonnull align 8 dereferenceable(176) ptr @_ZN10macroParamaSEOS_(ptr noundef nonnull align 8 dereferenceable(176) %6, ptr noundef nonnull align 8 dereferenceable(176) %7) #7
  call void @_ZN10macroParamD2Ev(ptr noundef nonnull align 8 dereferenceable(176) %7) #7
  call void @_ZN10macroParamD2Ev(ptr noundef nonnull align 8 dereferenceable(176) %9) #7
  call void @_ZN10macroParamD2Ev(ptr noundef nonnull align 8 dereferenceable(176) %8) #7
  call void @llvm.lifetime.end.p0(i64 176, ptr nonnull %7) #7
  %70 = invoke noundef nonnull align 8 dereferenceable(28) ptr @_ZN7MixtureaSERKS_(ptr noundef nonnull align 8 dereferenceable(28) %6, ptr noundef nonnull align 8 dereferenceable(28) %24)
          to label %71 unwind label %134

71:                                               ; preds = %68
  %72 = invoke noundef double @_ZN7Mixture9molarMassEv(ptr noundef nonnull align 8 dereferenceable(28) %6)
          to label %73 unwind label %144

73:                                               ; preds = %71
  %74 = load ptr, ptr %26, align 8, !tbaa !38
  invoke void @_ZN10macroParamC2ERKS_(ptr noundef nonnull align 8 dereferenceable(176) %10, ptr noundef nonnull align 8 dereferenceable(176) %6)
          to label %75 unwind label %146

75:                                               ; preds = %73
  %76 = load ptr, ptr %74, align 8, !tbaa !24
  %77 = load ptr, ptr %76, align 8
  %78 = invoke noundef double %77(ptr noundef nonnull align 8 dereferenceable(8) %74, ptr noundef nonnull %10)
          to label %79 unwind label %148

79:                                               ; preds = %75
  call void @_ZN10macroParamD2Ev(ptr noundef nonnull align 8 dereferenceable(176) %10) #7
  %80 = load ptr, ptr %26, align 8, !tbaa !38
  invoke void @_ZN10macroParamC2ERKS_(ptr noundef nonnull align 8 dereferenceable(176) %11, ptr noundef nonnull align 8 dereferenceable(176) %6)
          to label %81 unwind label %150

81:                                               ; preds = %79
  %82 = load ptr, ptr %80, align 8, !tbaa !24
  %83 = getelementptr inbounds i8, ptr %82, i64 8
  %84 = load ptr, ptr %83, align 8
  %85 = invoke noundef double %84(ptr noundef nonnull align 8 dereferenceable(8) %80, ptr noundef nonnull %11)
          to label %86 unwind label %152

86:                                               ; preds = %81
  call void @_ZN10macroParamD2Ev(ptr noundef nonnull align 8 dereferenceable(176) %11) #7
  %87 = load ptr, ptr %1, align 8, !tbaa !24
  %88 = getelementptr inbounds i8, ptr %87, i64 24
  %89 = load ptr, ptr %88, align 8
  %90 = invoke noundef double %89(ptr noundef nonnull align 8 dereferenceable(296) %1, i64 noundef %indvars.iv.next)
          to label %91 unwind label %154

91:                                               ; preds = %86
  %92 = load ptr, ptr %1, align 8, !tbaa !24
  %93 = getelementptr inbounds i8, ptr %92, i64 24
  %94 = load ptr, ptr %93, align 8
  %95 = invoke noundef double %94(ptr noundef nonnull align 8 dereferenceable(296) %1, i64 noundef %indvars.iv)
          to label %96 unwind label %154

96:                                               ; preds = %91
  %97 = fsub double %90, %95
  %98 = fdiv double %97, %2
  %99 = load ptr, ptr %1, align 8, !tbaa !24
  %100 = getelementptr inbounds i8, ptr %99, i64 56
  %101 = load ptr, ptr %100, align 8
  %102 = invoke noundef double %101(ptr noundef nonnull align 8 dereferenceable(296) %1, i64 noundef %indvars.iv.next)
          to label %103 unwind label %156

103:                                              ; preds = %96
  %104 = load ptr, ptr %1, align 8, !tbaa !24
  %105 = getelementptr inbounds i8, ptr %104, i64 56
  %106 = load ptr, ptr %105, align 8
  %107 = invoke noundef double %106(ptr noundef nonnull align 8 dereferenceable(296) %1, i64 noundef %indvars.iv)
          to label %108 unwind label %156

108:                                              ; preds = %103
  %109 = fsub double %102, %107
  %110 = fdiv double %109, %2
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %12) #7
  %111 = load i32, ptr %27, align 8, !tbaa !39
  %112 = sext i32 %111 to i64
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %13) #7
  call void @_ZNSaIdEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %13) #7
  invoke void @_ZNSt6vectorIdSaIdEEC2EmRKS0_(ptr noundef nonnull align 8 dereferenceable(24) %12, i64 noundef %112, ptr noundef nonnull align 1 dereferenceable(1) %13)
          to label %113 unwind label %158

113:                                              ; preds = %108
  call void @_ZNSt15__new_allocatorIdED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %13) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %13) #7
  %114 = icmp eq i64 %indvars.iv, 0
  br i1 %114, label %120, label %115

115:                                              ; preds = %113
  %116 = load i64, ptr %15, align 8, !tbaa !5
  %117 = add i64 %116, -1
  %118 = icmp eq i64 %117, %indvars.iv
  br i1 %118, label %120, label %.preheader

.preheader:                                       ; preds = %115
  %119 = load i32, ptr %27, align 8, !tbaa !39
  %.not116 = icmp eq i32 %119, 0
  br i1 %.not116, label %._crit_edge, label %.lr.ph

120:                                              ; preds = %115, %113
  %121 = call ptr @_ZNSt6vectorIdSaIdEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %12) #7
  %122 = call ptr @_ZNSt6vectorIdSaIdEE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %12) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %14) #7
  %123 = load ptr, ptr %28, align 8, !tbaa !40
  %124 = load ptr, ptr %123, align 8, !tbaa !24
  %125 = getelementptr inbounds i8, ptr %124, i64 8
  %126 = load ptr, ptr %125, align 8
  %127 = invoke noundef double %126(ptr noundef nonnull align 8 dereferenceable(48) %123)
          to label %128 unwind label %160

128:                                              ; preds = %120
  store double %127, ptr %14, align 8, !tbaa !41
  invoke void @_ZSt4fillIN9__gnu_cxx17__normal_iteratorIPdSt6vectorIdSaIdEEEEdEvT_S7_RKT0_(ptr %121, ptr %122, ptr noundef nonnull align 8 dereferenceable(8) %14)
          to label %129 unwind label %160

129:                                              ; preds = %128
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #7
  %.pre = load i32, ptr %27, align 8, !tbaa !39
  br label %.loopexit

130:                                              ; preds = %34
  %131 = landingpad { ptr, i32 }
          cleanup
  br label %227

132:                                              ; preds = %35
  %133 = landingpad { ptr, i32 }
          cleanup
  br label %226

134:                                              ; preds = %68, %59, %54, %50, %46, %41, %36
  %135 = landingpad { ptr, i32 }
          cleanup
  br label %225

136:                                              ; preds = %64
  %137 = landingpad { ptr, i32 }
          cleanup
  br label %143

138:                                              ; preds = %65
  %139 = landingpad { ptr, i32 }
          cleanup
  br label %142

140:                                              ; preds = %66
  %141 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN10macroParamD2Ev(ptr noundef nonnull align 8 dereferenceable(176) %9) #7
  br label %142

142:                                              ; preds = %140, %138
  %.pn = phi { ptr, i32 } [ %141, %140 ], [ %139, %138 ]
  call void @_ZN10macroParamD2Ev(ptr noundef nonnull align 8 dereferenceable(176) %8) #7
  br label %143

143:                                              ; preds = %142, %136
  %.pn.pn = phi { ptr, i32 } [ %.pn, %142 ], [ %137, %136 ]
  call void @llvm.lifetime.end.p0(i64 176, ptr nonnull %7) #7
  br label %225

144:                                              ; preds = %71
  %145 = landingpad { ptr, i32 }
          cleanup
  br label %225

146:                                              ; preds = %73
  %147 = landingpad { ptr, i32 }
          cleanup
  br label %225

148:                                              ; preds = %75
  %149 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN10macroParamD2Ev(ptr noundef nonnull align 8 dereferenceable(176) %10) #7
  br label %225

150:                                              ; preds = %79
  %151 = landingpad { ptr, i32 }
          cleanup
  br label %225

152:                                              ; preds = %81
  %153 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN10macroParamD2Ev(ptr noundef nonnull align 8 dereferenceable(176) %11) #7
  br label %225

154:                                              ; preds = %91, %86
  %155 = landingpad { ptr, i32 }
          cleanup
  br label %225

156:                                              ; preds = %103, %96
  %157 = landingpad { ptr, i32 }
          cleanup
  br label %225

158:                                              ; preds = %108
  %159 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIdED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %13) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %13) #7
  br label %224

160:                                              ; preds = %128, %120
  %161 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #7
  call void @_ZNSt6vectorIdSaIdEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %12) #7
  br label %224

.lr.ph:                                           ; preds = %.preheader, %.lr.ph
  %.077104 = phi i64 [ %163, %.lr.ph ], [ 0, %.preheader ]
  %162 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %12, i64 noundef %.077104) #7
  store double 0.000000e+00, ptr %162, align 8, !tbaa !41
  %163 = add nuw i64 %.077104, 1
  %164 = load i32, ptr %27, align 8, !tbaa !39
  %165 = sext i32 %164 to i64
  %166 = icmp ult i64 %163, %165
  br i1 %166, label %.lr.ph, label %.loopexit, !llvm.loop !42

.loopexit:                                        ; preds = %.lr.ph, %129
  %167 = phi i32 [ %.pre, %129 ], [ %164, %.lr.ph ]
  %.not117 = icmp eq i32 %167, 0
  br i1 %.not117, label %._crit_edge, label %168

168:                                              ; preds = %.loopexit
  %169 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorI6MatrixSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %29, i64 noundef 0) #7
  %170 = trunc nuw nsw i64 %indvars.iv to i32
  %171 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixixEi(ptr noundef nonnull align 8 dereferenceable(24) %169, i32 noundef %170)
  store double 0.000000e+00, ptr %171, align 8, !tbaa !41
  %.pre121 = load i32, ptr %27, align 8, !tbaa !39
  %172 = icmp ugt i32 %.pre121, 1
  br i1 %172, label %.lr.ph106.peel.next, label %._crit_edge

.lr.ph106.peel.next:                              ; preds = %168
  %173 = trunc nuw nsw i64 %indvars.iv to i32
  br label %187

._crit_edge:                                      ; preds = %187, %.preheader, %168, %.loopexit
  %174 = fneg double %78
  %175 = fmul double %98, %174
  %176 = load i64, ptr %30, align 8, !tbaa !44
  %177 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorI6MatrixSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %29, i64 noundef %176) #7
  %178 = trunc nuw nsw i64 %indvars.iv to i32
  %179 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixixEi(ptr noundef nonnull align 8 dereferenceable(24) %177, i32 noundef %178)
  store double %175, ptr %179, align 8, !tbaa !41
  %180 = load i64, ptr %31, align 8, !tbaa !45
  %181 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorI6MatrixSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %29, i64 noundef %180) #7
  %182 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixixEi(ptr noundef nonnull align 8 dereferenceable(24) %181, i32 noundef %178)
  store double 0.000000e+00, ptr %182, align 8, !tbaa !41
  %183 = load i64, ptr %32, align 8, !tbaa !46
  %184 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorI6MatrixSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %29, i64 noundef %183) #7
  %185 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixixEi(ptr noundef nonnull align 8 dereferenceable(24) %184, i32 noundef %178)
  store double 0.000000e+00, ptr %185, align 8, !tbaa !41
  %186 = load i32, ptr %27, align 8, !tbaa !39
  %.not118 = icmp eq i32 %186, 0
  br i1 %.not118, label %._crit_edge110, label %.lr.ph109

187:                                              ; preds = %.lr.ph106.peel.next, %187
  %.076105 = phi i64 [ %195, %187 ], [ 1, %.lr.ph106.peel.next ]
  %188 = load double, ptr %25, align 8, !tbaa !26
  %189 = fmul double %188, -0.000000e+00
  %190 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %12, i64 noundef %.076105) #7
  %191 = load double, ptr %190, align 8, !tbaa !41
  %192 = fmul double %189, %191
  %193 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorI6MatrixSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %29, i64 noundef %.076105) #7
  %194 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixixEi(ptr noundef nonnull align 8 dereferenceable(24) %193, i32 noundef %173)
  store double %192, ptr %194, align 8, !tbaa !41
  %.pre122 = load i32, ptr %27, align 8, !tbaa !39
  %195 = add nuw i64 %.076105, 1
  %196 = sext i32 %.pre122 to i64
  %197 = icmp ult i64 %195, %196
  br i1 %197, label %187, label %._crit_edge, !llvm.loop !47

._crit_edge110:                                   ; preds = %.lr.ph109, %._crit_edge
  %198 = fneg double %85
  %199 = load double, ptr %33, align 8, !tbaa !35
  %200 = fmul double %199, %174
  %201 = fmul double %98, %200
  %202 = call double @llvm.fmuladd.f64(double %198, double %110, double %201)
  %203 = load i64, ptr %32, align 8, !tbaa !46
  %204 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorI6MatrixSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %29, i64 noundef %203) #7
  %205 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixixEi(ptr noundef nonnull align 8 dereferenceable(24) %204, i32 noundef %178)
  %206 = load double, ptr %205, align 8, !tbaa !41
  %207 = fadd double %202, %206
  store double %207, ptr %205, align 8, !tbaa !41
  call void @_ZNSt6vectorIdSaIdEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %12) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %12) #7
  call void @_ZN10macroParamD2Ev(ptr noundef nonnull align 8 dereferenceable(176) %6) #7
  call void @llvm.lifetime.end.p0(i64 176, ptr nonnull %6) #7
  call void @_ZN10macroParamD2Ev(ptr noundef nonnull align 8 dereferenceable(176) %5) #7
  call void @llvm.lifetime.end.p0(i64 176, ptr nonnull %5) #7
  call void @_ZN10macroParamD2Ev(ptr noundef nonnull align 8 dereferenceable(176) %4) #7
  call void @llvm.lifetime.end.p0(i64 176, ptr nonnull %4) #7
  %208 = load i64, ptr %15, align 8, !tbaa !5
  %209 = add i64 %208, -1
  %210 = icmp ugt i64 %209, %indvars.iv.next
  br i1 %210, label %34, label %._crit_edge114, !llvm.loop !49

.lr.ph109:                                        ; preds = %._crit_edge, %.lr.ph109
  %.0107 = phi i64 [ %220, %.lr.ph109 ], [ 0, %._crit_edge ]
  %211 = load double, ptr %25, align 8, !tbaa !26
  %212 = fmul double %211, -0.000000e+00
  %213 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %12, i64 noundef %.0107) #7
  %214 = load double, ptr %213, align 8, !tbaa !41
  %215 = load i64, ptr %32, align 8, !tbaa !46
  %216 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorI6MatrixSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %29, i64 noundef %215) #7
  %217 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixixEi(ptr noundef nonnull align 8 dereferenceable(24) %216, i32 noundef %178)
  %218 = load double, ptr %217, align 8, !tbaa !41
  %219 = call double @llvm.fmuladd.f64(double %212, double %214, double %218)
  store double %219, ptr %217, align 8, !tbaa !41
  %220 = add nuw i64 %.0107, 1
  %221 = load i32, ptr %27, align 8, !tbaa !39
  %222 = sext i32 %221 to i64
  %223 = icmp ult i64 %220, %222
  br i1 %223, label %.lr.ph109, label %._crit_edge110, !llvm.loop !50

224:                                              ; preds = %160, %158
  %.pn94 = phi { ptr, i32 } [ %161, %160 ], [ %159, %158 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %12) #7
  br label %225

225:                                              ; preds = %144, %150, %152, %156, %224, %154, %148, %146, %143, %134
  %.pn94.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %135, %134 ], [ %.pn.pn, %143 ], [ %145, %144 ], [ %149, %148 ], [ %147, %146 ], [ %153, %152 ], [ %151, %150 ], [ %155, %154 ], [ %.pn94, %224 ], [ %157, %156 ]
  call void @_ZN10macroParamD2Ev(ptr noundef nonnull align 8 dereferenceable(176) %6) #7
  br label %226

226:                                              ; preds = %225, %132
  %.pn94.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn94.pn.pn.pn.pn.pn.pn, %225 ], [ %133, %132 ]
  call void @llvm.lifetime.end.p0(i64 176, ptr nonnull %6) #7
  call void @_ZN10macroParamD2Ev(ptr noundef nonnull align 8 dereferenceable(176) %5) #7
  br label %227

227:                                              ; preds = %226, %130
  %.pn94.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn94.pn.pn.pn.pn.pn.pn.pn, %226 ], [ %131, %130 ]
  call void @llvm.lifetime.end.p0(i64 176, ptr nonnull %5) #7
  call void @_ZN10macroParamD2Ev(ptr noundef nonnull align 8 dereferenceable(176) %4) #7
  call void @llvm.lifetime.end.p0(i64 176, ptr nonnull %4) #7
  resume { ptr, i32 } %.pn94.pn.pn.pn.pn.pn.pn.pn.pn
}

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN10macroParamC2Ev(ptr noundef nonnull align 8 dereferenceable(176)) unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN16ExacRiemanSolver16exacRiemanSolverE10macroParamS0_d(ptr dead_on_unwind noalias writable sret(%struct.macroParam) align 8, ptr noundef nonnull align 8 dereferenceable(88), ptr noundef, ptr noundef, double noundef) local_unnamed_addr #2 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN10macroParamC2ERKS_(ptr noundef nonnull align 8 dereferenceable(176), ptr noundef nonnull align 8 dereferenceable(176)) unnamed_addr #4 align 2

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN10macroParamD2Ev(ptr noundef nonnull align 8 dereferenceable(176)) unnamed_addr #5 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(28) ptr @_ZN7MixtureaSERKS_(ptr noundef nonnull align 8 dereferenceable(28), ptr noundef nonnull align 8 dereferenceable(28)) local_unnamed_addr #4 align 2

declare noundef double @_ZN7Mixture9molarMassEv(ptr noundef nonnull align 8 dereferenceable(28)) local_unnamed_addr #6

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZSt4fillIN9__gnu_cxx17__normal_iteratorIPdSt6vectorIdSaIdEEEEdEvT_S7_RKT0_(ptr, ptr, ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #4

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

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

attributes #0 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { 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 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 nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #4 = { inlinehint 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 #5 = { 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 #6 = { "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 = { 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, !7, i64 8}
!6 = !{!"_ZTS16SystemOfEquation", !7, i64 8, !7, i64 16, !7, i64 24, !7, i64 32, !7, i64 40, !7, i64 48, !10, i64 56, !15, i64 88, !15, i64 96, !15, i64 104, !15, i64 112, !17, i64 120, !19, i64 192, !20, i64 200, !20, i64 224, !20, i64 248, !20, i64 272}
!7 = !{!"long", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C++ TBAA"}
!10 = !{!"_ZTS7Mixture", !11, i64 0, !16, i64 24}
!11 = !{!"_ZTSSt6vectorI16MixtureComponentSaIS0_EE", !12, i64 0}
!12 = !{!"_ZTSSt12_Vector_baseI16MixtureComponentSaIS0_EE", !13, i64 0}
!13 = !{!"_ZTSNSt12_Vector_baseI16MixtureComponentSaIS0_EE12_Vector_implE", !14, i64 0}
!14 = !{!"_ZTSNSt12_Vector_baseI16MixtureComponentSaIS0_EE17_Vector_impl_dataE", !15, i64 0, !15, i64 8, !15, i64 16}
!15 = !{!"any pointer", !8, i64 0}
!16 = !{!"int", !8, i64 0}
!17 = !{!"_ZTS12solverParams", !16, i64 0, !18, i64 8, !18, i64 16, !18, i64 24, !18, i64 32, !18, i64 40, !16, i64 48, !16, i64 52, !16, i64 56, !16, i64 60, !16, i64 64, !16, i64 68}
!18 = !{!"double", !8, i64 0}
!19 = !{!"_ZTS20SystemOfEquationType", !8, i64 0}
!20 = !{!"_ZTSSt6vectorI6MatrixSaIS0_EE", !21, i64 0}
!21 = !{!"_ZTSSt12_Vector_baseI6MatrixSaIS0_EE", !22, i64 0}
!22 = !{!"_ZTSNSt12_Vector_baseI6MatrixSaIS0_EE12_Vector_implE", !23, i64 0}
!23 = !{!"_ZTSNSt12_Vector_baseI6MatrixSaIS0_EE17_Vector_impl_dataE", !15, i64 0, !15, i64 8, !15, i64 16}
!24 = !{!25, !25, i64 0}
!25 = !{!"vtable pointer", !9, i64 0}
!26 = !{!27, !18, i64 80}
!27 = !{!"_ZTS10macroParam", !10, i64 0, !28, i64 32, !28, i64 56, !18, i64 80, !18, i64 88, !18, i64 96, !18, i64 104, !18, i64 112, !18, i64 120, !18, i64 128, !18, i64 136, !32, i64 144}
!28 = !{!"_ZTSSt6vectorIdSaIdEE", !29, i64 0}
!29 = !{!"_ZTSSt12_Vector_baseIdSaIdEE", !30, i64 0}
!30 = !{!"_ZTSNSt12_Vector_baseIdSaIdEE12_Vector_implE", !31, i64 0}
!31 = !{!"_ZTSNSt12_Vector_baseIdSaIdEE17_Vector_impl_dataE", !15, i64 0, !15, i64 8, !15, i64 16}
!32 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !33, i64 0, !7, i64 8, !8, i64 16}
!33 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !15, i64 0}
!34 = !{!27, !18, i64 88}
!35 = !{!27, !18, i64 112}
!36 = !{!37, !18, i64 40}
!37 = !{!"_ZTS13RiemannSolver", !18, i64 8, !17, i64 16}
!38 = !{!6, !15, i64 104}
!39 = !{!6, !16, i64 80}
!40 = !{!6, !15, i64 112}
!41 = !{!18, !18, i64 0}
!42 = distinct !{!42, !43}
!43 = !{!"llvm.loop.mustprogress"}
!44 = !{!6, !7, i64 24}
!45 = !{!6, !7, i64 32}
!46 = !{!6, !7, i64 40}
!47 = distinct !{!47, !43, !48}
!48 = !{!"llvm.loop.peeled.count", i32 1}
!49 = distinct !{!49, !43}
!50 = distinct !{!50, !43}


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