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

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

%"class.std::vector.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::allocator.7" = type { i8 }
%"class.std::initializer_list" = type { ptr, i64 }
%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.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 }
%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: mustprogress nounwind uwtable
declare dso_local void @_ZN13RiemannSolver13toMaxVelocityEd(ptr noundef nonnull align 8 dereferenceable(88), double noundef) #0 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSaIdEC2Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #0 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 #0 align 2

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

; Function Attrs: nounwind
declare double @sqrt(double noundef) #3

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef double @_ZSt3powIdiEN9__gnu_cxx9__promoteIDTplcvNS1_IT_Xsr3std12__is_integerIS2_EE7__valueEE6__typeELi0EcvNS1_IT0_Xsr3std12__is_integerIS5_EE7__valueEE6__typeELi0EEXsr3std12__is_integerIS8_EE7__valueEE6__typeES2_S5_(double noundef, i32 noundef) #4

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

; 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)) #4

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

; 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) #0 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) #0 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) #0 align 2

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN10HLLCSolver11computeFluxEP16SystemOfEquationdd(ptr noundef nonnull align 8 dereferenceable(88) %0, ptr noundef %1, double noundef %2, double noundef %3) unnamed_addr #2 align 2 personality ptr @__gxx_personality_v0 {
  %5 = alloca ptr, align 8
  %6 = alloca ptr, align 8
  %7 = alloca double, align 8
  %8 = alloca double, align 8
  %9 = alloca i32, align 4
  %10 = alloca i32, align 4
  %11 = alloca double, align 8
  %12 = alloca double, align 8
  %13 = alloca double, align 8
  %14 = alloca double, align 8
  %15 = alloca double, align 8
  %16 = alloca double, align 8
  %17 = alloca double, align 8
  %18 = alloca double, align 8
  %19 = alloca double, align 8
  %20 = alloca double, align 8
  %21 = alloca double, align 8
  %22 = alloca double, align 8
  %23 = alloca double, align 8
  %24 = alloca double, align 8
  %25 = alloca double, align 8
  %26 = alloca double, align 8
  %27 = alloca double, align 8
  %28 = alloca double, align 8
  %29 = alloca double, align 8
  %30 = alloca double, align 8
  %31 = alloca double, align 8
  %32 = alloca double, align 8
  %33 = alloca double, align 8
  %34 = alloca double, align 8
  %35 = alloca double, align 8
  %36 = alloca %"class.std::vector.5", align 8
  %37 = alloca %"class.std::allocator.7", align 1
  %38 = alloca ptr, align 8
  %39 = alloca i32, align 4
  %40 = alloca %"class.std::vector.5", align 8
  %41 = alloca %"class.std::allocator.7", align 1
  %42 = alloca %"class.std::initializer_list", align 8
  %43 = alloca [2 x double], align 8
  %44 = alloca %"class.std::initializer_list", align 8
  %45 = alloca [2 x double], align 8
  %46 = alloca double, align 8
  %47 = alloca double, align 8
  %48 = alloca double, align 8
  %49 = alloca double, align 8
  %50 = alloca i64, align 8
  %51 = alloca i64, align 8
  %52 = alloca i64, align 8
  %53 = alloca i64, align 8
  %54 = alloca i64, align 8
  store ptr %0, ptr %5, align 8, !tbaa !5
  store ptr %1, ptr %6, align 8, !tbaa !5
  store double %2, ptr %7, align 8, !tbaa !9
  store double %3, ptr %8, align 8, !tbaa !9
  %55 = load ptr, ptr %5, align 8
  call void @_ZN13RiemannSolver13toMaxVelocityEd(ptr noundef nonnull align 8 dereferenceable(88) %55, double noundef -1.000000e+00)
  call void @llvm.lifetime.start.p0(i64 4, ptr %9) #7
  store i32 0, ptr %9, align 4, !tbaa !11
  br label %56

56:                                               ; preds = %717, %4
  %57 = load i32, ptr %9, align 4, !tbaa !11
  %58 = sext i32 %57 to i64
  %59 = load ptr, ptr %6, align 8, !tbaa !5
  %60 = getelementptr inbounds %struct.SystemOfEquation, ptr %59, i32 0, i32 1
  %61 = load i64, ptr %60, align 8, !tbaa !13
  %62 = sub i64 %61, 1
  %63 = icmp ult i64 %58, %62
  br i1 %63, label %65, label %64

64:                                               ; preds = %56
  store i32 2, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #7
  br label %725

65:                                               ; preds = %56
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %13) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr %36) #7
  %66 = load ptr, ptr %6, align 8, !tbaa !5
  %67 = getelementptr inbounds %struct.SystemOfEquation, ptr %66, i32 0, i32 6
  %68 = load i64, ptr %67, align 8, !tbaa !27
  call void @llvm.lifetime.start.p0(i64 1, ptr %37) #7
  call void @_ZNSaIdEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %37) #7
  invoke void @_ZNSt6vectorIdSaIdEEC2EmRKS0_(ptr noundef nonnull align 8 dereferenceable(24) %36, i64 noundef %68, ptr noundef nonnull align 1 dereferenceable(1) %37)
          to label %69 unwind label %411

69:                                               ; preds = %65
  call void @_ZNSt15__new_allocatorIdED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %37) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %37) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr %40) #7
  %70 = load ptr, ptr %6, align 8, !tbaa !5
  %71 = getelementptr inbounds %struct.SystemOfEquation, ptr %70, i32 0, i32 6
  %72 = load i64, ptr %71, align 8, !tbaa !27
  call void @llvm.lifetime.start.p0(i64 1, ptr %41) #7
  call void @_ZNSaIdEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %41) #7
  invoke void @_ZNSt6vectorIdSaIdEEC2EmRKS0_(ptr noundef nonnull align 8 dereferenceable(24) %40, i64 noundef %72, ptr noundef nonnull align 1 dereferenceable(1) %41)
          to label %73 unwind label %415

73:                                               ; preds = %69
  call void @_ZNSt15__new_allocatorIdED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %41) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %41) #7
  %74 = load ptr, ptr %6, align 8, !tbaa !5
  %75 = load i32, ptr %9, align 4, !tbaa !11
  %76 = sext i32 %75 to i64
  %77 = load ptr, ptr %74, align 8, !tbaa !28
  %78 = getelementptr inbounds ptr, ptr %77, i64 5
  %79 = load ptr, ptr %78, align 8
  %80 = invoke noundef double %79(ptr noundef nonnull align 8 dereferenceable(296) %74, i64 noundef %76)
          to label %81 unwind label %419

81:                                               ; preds = %73
  store double %80, ptr %15, align 8, !tbaa !9
  %82 = load ptr, ptr %6, align 8, !tbaa !5
  %83 = load i32, ptr %9, align 4, !tbaa !11
  %84 = add nsw i32 %83, 1
  %85 = sext i32 %84 to i64
  %86 = load ptr, ptr %82, align 8, !tbaa !28
  %87 = getelementptr inbounds ptr, ptr %86, i64 5
  %88 = load ptr, ptr %87, align 8
  %89 = invoke noundef double %88(ptr noundef nonnull align 8 dereferenceable(296) %82, i64 noundef %85)
          to label %90 unwind label %419

90:                                               ; preds = %81
  store double %89, ptr %16, align 8, !tbaa !9
  %91 = load ptr, ptr %6, align 8, !tbaa !5
  %92 = load i32, ptr %9, align 4, !tbaa !11
  %93 = sext i32 %92 to i64
  %94 = load ptr, ptr %91, align 8, !tbaa !28
  %95 = getelementptr inbounds ptr, ptr %94, i64 4
  %96 = load ptr, ptr %95, align 8
  %97 = invoke noundef double %96(ptr noundef nonnull align 8 dereferenceable(296) %91, i64 noundef %93)
          to label %98 unwind label %419

98:                                               ; preds = %90
  store double %97, ptr %17, align 8, !tbaa !9
  %99 = load ptr, ptr %6, align 8, !tbaa !5
  %100 = load i32, ptr %9, align 4, !tbaa !11
  %101 = add nsw i32 %100, 1
  %102 = sext i32 %101 to i64
  %103 = load ptr, ptr %99, align 8, !tbaa !28
  %104 = getelementptr inbounds ptr, ptr %103, i64 4
  %105 = load ptr, ptr %104, align 8
  %106 = invoke noundef double %105(ptr noundef nonnull align 8 dereferenceable(296) %99, i64 noundef %102)
          to label %107 unwind label %419

107:                                              ; preds = %98
  store double %106, ptr %18, align 8, !tbaa !9
  %108 = load double, ptr %15, align 8, !tbaa !9
  %109 = invoke noundef double @_ZSt3powIdiEN9__gnu_cxx9__promoteIDTplcvNS1_IT_Xsr3std12__is_integerIS2_EE7__valueEE6__typeELi0EcvNS1_IT0_Xsr3std12__is_integerIS5_EE7__valueEE6__typeELi0EEXsr3std12__is_integerIS8_EE7__valueEE6__typeES2_S5_(double noundef %108, i32 noundef 2)
          to label %110 unwind label %419

110:                                              ; preds = %107
  %111 = load double, ptr %17, align 8, !tbaa !9
  %112 = invoke noundef double @_ZSt3powIdiEN9__gnu_cxx9__promoteIDTplcvNS1_IT_Xsr3std12__is_integerIS2_EE7__valueEE6__typeELi0EcvNS1_IT0_Xsr3std12__is_integerIS5_EE7__valueEE6__typeELi0EEXsr3std12__is_integerIS8_EE7__valueEE6__typeES2_S5_(double noundef %111, i32 noundef 2)
          to label %113 unwind label %419

113:                                              ; preds = %110
  %114 = fadd double %109, %112
  %115 = call double @sqrt(double noundef %114) #7
  store double %115, ptr %19, align 8, !tbaa !9
  %116 = load double, ptr %16, align 8, !tbaa !9
  %117 = invoke noundef double @_ZSt3powIdiEN9__gnu_cxx9__promoteIDTplcvNS1_IT_Xsr3std12__is_integerIS2_EE7__valueEE6__typeELi0EcvNS1_IT0_Xsr3std12__is_integerIS5_EE7__valueEE6__typeELi0EEXsr3std12__is_integerIS8_EE7__valueEE6__typeES2_S5_(double noundef %116, i32 noundef 2)
          to label %118 unwind label %419

118:                                              ; preds = %113
  %119 = load double, ptr %18, align 8, !tbaa !9
  %120 = invoke noundef double @_ZSt3powIdiEN9__gnu_cxx9__promoteIDTplcvNS1_IT_Xsr3std12__is_integerIS2_EE7__valueEE6__typeELi0EcvNS1_IT0_Xsr3std12__is_integerIS5_EE7__valueEE6__typeELi0EEXsr3std12__is_integerIS8_EE7__valueEE6__typeES2_S5_(double noundef %119, i32 noundef 2)
          to label %121 unwind label %419

121:                                              ; preds = %118
  %122 = fadd double %117, %120
  %123 = call double @sqrt(double noundef %122) #7
  store double %123, ptr %20, align 8, !tbaa !9
  %124 = load ptr, ptr %6, align 8, !tbaa !5
  %125 = load i32, ptr %9, align 4, !tbaa !11
  %126 = sext i32 %125 to i64
  %127 = load ptr, ptr %124, align 8, !tbaa !28
  %128 = getelementptr inbounds ptr, ptr %127, i64 6
  %129 = load ptr, ptr %128, align 8
  %130 = invoke noundef double %129(ptr noundef nonnull align 8 dereferenceable(296) %124, i64 noundef %126)
          to label %131 unwind label %419

131:                                              ; preds = %121
  store double %130, ptr %25, align 8, !tbaa !9
  %132 = load ptr, ptr %6, align 8, !tbaa !5
  %133 = load i32, ptr %9, align 4, !tbaa !11
  %134 = add nsw i32 %133, 1
  %135 = sext i32 %134 to i64
  %136 = load ptr, ptr %132, align 8, !tbaa !28
  %137 = getelementptr inbounds ptr, ptr %136, i64 6
  %138 = load ptr, ptr %137, align 8
  %139 = invoke noundef double %138(ptr noundef nonnull align 8 dereferenceable(296) %132, i64 noundef %135)
          to label %140 unwind label %419

140:                                              ; preds = %131
  store double %139, ptr %26, align 8, !tbaa !9
  %141 = load ptr, ptr %6, align 8, !tbaa !5
  %142 = load i32, ptr %9, align 4, !tbaa !11
  %143 = sext i32 %142 to i64
  %144 = load ptr, ptr %141, align 8, !tbaa !28
  %145 = getelementptr inbounds ptr, ptr %144, i64 0
  %146 = load ptr, ptr %145, align 8
  %147 = invoke noundef double %146(ptr noundef nonnull align 8 dereferenceable(296) %141, i64 noundef %143)
          to label %148 unwind label %419

148:                                              ; preds = %140
  store double %147, ptr %23, align 8, !tbaa !9
  %149 = load ptr, ptr %6, align 8, !tbaa !5
  %150 = load i32, ptr %9, align 4, !tbaa !11
  %151 = add nsw i32 %150, 1
  %152 = sext i32 %151 to i64
  %153 = load ptr, ptr %149, align 8, !tbaa !28
  %154 = getelementptr inbounds ptr, ptr %153, i64 0
  %155 = load ptr, ptr %154, align 8
  %156 = invoke noundef double %155(ptr noundef nonnull align 8 dereferenceable(296) %149, i64 noundef %152)
          to label %157 unwind label %419

157:                                              ; preds = %148
  store double %156, ptr %24, align 8, !tbaa !9
  %158 = load ptr, ptr %6, align 8, !tbaa !5
  %159 = load i32, ptr %9, align 4, !tbaa !11
  %160 = sext i32 %159 to i64
  %161 = load ptr, ptr %158, align 8, !tbaa !28
  %162 = getelementptr inbounds ptr, ptr %161, i64 6
  %163 = load ptr, ptr %162, align 8
  %164 = invoke noundef double %163(ptr noundef nonnull align 8 dereferenceable(296) %158, i64 noundef %160)
          to label %165 unwind label %419

165:                                              ; preds = %157
  %166 = load double, ptr %19, align 8, !tbaa !9
  %167 = invoke noundef double @_ZSt3powIdiEN9__gnu_cxx9__promoteIDTplcvNS1_IT_Xsr3std12__is_integerIS2_EE7__valueEE6__typeELi0EcvNS1_IT0_Xsr3std12__is_integerIS5_EE7__valueEE6__typeELi0EEXsr3std12__is_integerIS8_EE7__valueEE6__typeES2_S5_(double noundef %166, i32 noundef 2)
          to label %168 unwind label %419

168:                                              ; preds = %165
  %169 = fsub double %164, %167
  %170 = load ptr, ptr %6, align 8, !tbaa !5
  %171 = load i32, ptr %9, align 4, !tbaa !11
  %172 = sext i32 %171 to i64
  %173 = load ptr, ptr %170, align 8, !tbaa !28
  %174 = getelementptr inbounds ptr, ptr %173, i64 0
  %175 = load ptr, ptr %174, align 8
  %176 = invoke noundef double %175(ptr noundef nonnull align 8 dereferenceable(296) %170, i64 noundef %172)
          to label %177 unwind label %419

177:                                              ; preds = %168
  %178 = load ptr, ptr %6, align 8, !tbaa !5
  %179 = load i32, ptr %9, align 4, !tbaa !11
  %180 = sext i32 %179 to i64
  %181 = load ptr, ptr %178, align 8, !tbaa !28
  %182 = getelementptr inbounds ptr, ptr %181, i64 1
  %183 = load ptr, ptr %182, align 8
  %184 = invoke noundef double %183(ptr noundef nonnull align 8 dereferenceable(296) %178, i64 noundef %180)
          to label %185 unwind label %419

185:                                              ; preds = %177
  %186 = fdiv double %176, %184
  %187 = fadd double %169, %186
  store double %187, ptr %11, align 8, !tbaa !9
  %188 = load ptr, ptr %6, align 8, !tbaa !5
  %189 = load i32, ptr %9, align 4, !tbaa !11
  %190 = add nsw i32 %189, 1
  %191 = sext i32 %190 to i64
  %192 = load ptr, ptr %188, align 8, !tbaa !28
  %193 = getelementptr inbounds ptr, ptr %192, i64 6
  %194 = load ptr, ptr %193, align 8
  %195 = invoke noundef double %194(ptr noundef nonnull align 8 dereferenceable(296) %188, i64 noundef %191)
          to label %196 unwind label %419

196:                                              ; preds = %185
  %197 = load double, ptr %20, align 8, !tbaa !9
  %198 = invoke noundef double @_ZSt3powIdiEN9__gnu_cxx9__promoteIDTplcvNS1_IT_Xsr3std12__is_integerIS2_EE7__valueEE6__typeELi0EcvNS1_IT0_Xsr3std12__is_integerIS5_EE7__valueEE6__typeELi0EEXsr3std12__is_integerIS8_EE7__valueEE6__typeES2_S5_(double noundef %197, i32 noundef 2)
          to label %199 unwind label %419

199:                                              ; preds = %196
  %200 = fsub double %195, %198
  %201 = load ptr, ptr %6, align 8, !tbaa !5
  %202 = load i32, ptr %9, align 4, !tbaa !11
  %203 = add nsw i32 %202, 1
  %204 = sext i32 %203 to i64
  %205 = load ptr, ptr %201, align 8, !tbaa !28
  %206 = getelementptr inbounds ptr, ptr %205, i64 0
  %207 = load ptr, ptr %206, align 8
  %208 = invoke noundef double %207(ptr noundef nonnull align 8 dereferenceable(296) %201, i64 noundef %204)
          to label %209 unwind label %419

209:                                              ; preds = %199
  %210 = load ptr, ptr %6, align 8, !tbaa !5
  %211 = load i32, ptr %9, align 4, !tbaa !11
  %212 = add nsw i32 %211, 1
  %213 = sext i32 %212 to i64
  %214 = load ptr, ptr %210, align 8, !tbaa !28
  %215 = getelementptr inbounds ptr, ptr %214, i64 1
  %216 = load ptr, ptr %215, align 8
  %217 = invoke noundef double %216(ptr noundef nonnull align 8 dereferenceable(296) %210, i64 noundef %213)
          to label %218 unwind label %419

218:                                              ; preds = %209
  %219 = fdiv double %208, %217
  %220 = fadd double %200, %219
  store double %220, ptr %12, align 8, !tbaa !9
  %221 = getelementptr inbounds %struct.RiemannSolver, ptr %55, i32 0, i32 2
  %222 = getelementptr inbounds %struct.solverParams, ptr %221, i32 0, i32 3
  %223 = load double, ptr %222, align 8, !tbaa !30
  %224 = fsub double %223, 1.000000e+00
  %225 = load double, ptr %11, align 8, !tbaa !9
  %226 = load double, ptr %19, align 8, !tbaa !9
  %227 = invoke noundef double @_ZSt3powIdiEN9__gnu_cxx9__promoteIDTplcvNS1_IT_Xsr3std12__is_integerIS2_EE7__valueEE6__typeELi0EcvNS1_IT0_Xsr3std12__is_integerIS5_EE7__valueEE6__typeELi0EEXsr3std12__is_integerIS8_EE7__valueEE6__typeES2_S5_(double noundef %226, i32 noundef 2)
          to label %228 unwind label %419

228:                                              ; preds = %218
  %229 = call double @llvm.fmuladd.f64(double -5.000000e-01, double %227, double %225)
  %230 = fmul double %224, %229
  %231 = call double @sqrt(double noundef %230) #7
  store double %231, ptr %13, align 8, !tbaa !9
  %232 = getelementptr inbounds %struct.RiemannSolver, ptr %55, i32 0, i32 2
  %233 = getelementptr inbounds %struct.solverParams, ptr %232, i32 0, i32 3
  %234 = load double, ptr %233, align 8, !tbaa !30
  %235 = fsub double %234, 1.000000e+00
  %236 = load double, ptr %12, align 8, !tbaa !9
  %237 = load double, ptr %20, align 8, !tbaa !9
  %238 = invoke noundef double @_ZSt3powIdiEN9__gnu_cxx9__promoteIDTplcvNS1_IT_Xsr3std12__is_integerIS2_EE7__valueEE6__typeELi0EcvNS1_IT0_Xsr3std12__is_integerIS5_EE7__valueEE6__typeELi0EEXsr3std12__is_integerIS8_EE7__valueEE6__typeES2_S5_(double noundef %237, i32 noundef 2)
          to label %239 unwind label %419

239:                                              ; preds = %228
  %240 = call double @llvm.fmuladd.f64(double -5.000000e-01, double %238, double %236)
  %241 = fmul double %235, %240
  %242 = call double @sqrt(double noundef %241) #7
  store double %242, ptr %14, align 8, !tbaa !9
  %243 = load ptr, ptr %6, align 8, !tbaa !5
  %244 = load i32, ptr %9, align 4, !tbaa !11
  %245 = sext i32 %244 to i64
  %246 = load ptr, ptr %243, align 8, !tbaa !28
  %247 = getelementptr inbounds ptr, ptr %246, i64 1
  %248 = load ptr, ptr %247, align 8
  %249 = invoke noundef double %248(ptr noundef nonnull align 8 dereferenceable(296) %243, i64 noundef %245)
          to label %250 unwind label %419

250:                                              ; preds = %239
  %251 = call double @sqrt(double noundef %249) #7
  store double %251, ptr %21, align 8, !tbaa !9
  %252 = load ptr, ptr %6, align 8, !tbaa !5
  %253 = load i32, ptr %9, align 4, !tbaa !11
  %254 = add nsw i32 %253, 1
  %255 = sext i32 %254 to i64
  %256 = load ptr, ptr %252, align 8, !tbaa !28
  %257 = getelementptr inbounds ptr, ptr %256, i64 1
  %258 = load ptr, ptr %257, align 8
  %259 = invoke noundef double %258(ptr noundef nonnull align 8 dereferenceable(296) %252, i64 noundef %255)
          to label %260 unwind label %419

260:                                              ; preds = %250
  %261 = call double @sqrt(double noundef %259) #7
  store double %261, ptr %22, align 8, !tbaa !9
  %262 = load double, ptr %21, align 8, !tbaa !9
  %263 = load double, ptr %15, align 8, !tbaa !9
  %264 = load double, ptr %22, align 8, !tbaa !9
  %265 = load double, ptr %16, align 8, !tbaa !9
  %266 = fmul double %264, %265
  %267 = call double @llvm.fmuladd.f64(double %262, double %263, double %266)
  %268 = load double, ptr %21, align 8, !tbaa !9
  %269 = load double, ptr %22, align 8, !tbaa !9
  %270 = fadd double %268, %269
  %271 = fdiv double %267, %270
  store double %271, ptr %27, align 8, !tbaa !9
  %272 = load double, ptr %21, align 8, !tbaa !9
  %273 = load double, ptr %17, align 8, !tbaa !9
  %274 = load double, ptr %22, align 8, !tbaa !9
  %275 = load double, ptr %18, align 8, !tbaa !9
  %276 = fmul double %274, %275
  %277 = call double @llvm.fmuladd.f64(double %272, double %273, double %276)
  %278 = load double, ptr %21, align 8, !tbaa !9
  %279 = load double, ptr %22, align 8, !tbaa !9
  %280 = fadd double %278, %279
  %281 = fdiv double %277, %280
  store double %281, ptr %28, align 8, !tbaa !9
  %282 = load double, ptr %21, align 8, !tbaa !9
  %283 = load double, ptr %11, align 8, !tbaa !9
  %284 = load double, ptr %22, align 8, !tbaa !9
  %285 = load double, ptr %12, align 8, !tbaa !9
  %286 = fmul double %284, %285
  %287 = call double @llvm.fmuladd.f64(double %282, double %283, double %286)
  %288 = load double, ptr %21, align 8, !tbaa !9
  %289 = load double, ptr %22, align 8, !tbaa !9
  %290 = fadd double %288, %289
  %291 = fdiv double %287, %290
  store double %291, ptr %29, align 8, !tbaa !9
  %292 = getelementptr inbounds %struct.RiemannSolver, ptr %55, i32 0, i32 2
  %293 = getelementptr inbounds %struct.solverParams, ptr %292, i32 0, i32 3
  %294 = load double, ptr %293, align 8, !tbaa !30
  %295 = load double, ptr %29, align 8, !tbaa !9
  %296 = load double, ptr %27, align 8, !tbaa !9
  %297 = invoke noundef double @_ZSt3powIdiEN9__gnu_cxx9__promoteIDTplcvNS1_IT_Xsr3std12__is_integerIS2_EE7__valueEE6__typeELi0EcvNS1_IT0_Xsr3std12__is_integerIS5_EE7__valueEE6__typeELi0EEXsr3std12__is_integerIS8_EE7__valueEE6__typeES2_S5_(double noundef %296, i32 noundef 2)
          to label %298 unwind label %419

298:                                              ; preds = %260
  %299 = load double, ptr %28, align 8, !tbaa !9
  %300 = invoke noundef double @_ZSt3powIdiEN9__gnu_cxx9__promoteIDTplcvNS1_IT_Xsr3std12__is_integerIS2_EE7__valueEE6__typeELi0EcvNS1_IT0_Xsr3std12__is_integerIS5_EE7__valueEE6__typeELi0EEXsr3std12__is_integerIS8_EE7__valueEE6__typeES2_S5_(double noundef %299, i32 noundef 2)
          to label %301 unwind label %419

301:                                              ; preds = %298
  %302 = fadd double %297, %300
  %303 = call double @llvm.fmuladd.f64(double -5.000000e-01, double %302, double %295)
  %304 = fmul double %294, %303
  %305 = call double @sqrt(double noundef %304) #7
  store double %305, ptr %30, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 16, ptr %43) #7
  %306 = load double, ptr %28, align 8, !tbaa !9
  %307 = load double, ptr %30, align 8, !tbaa !9
  %308 = fsub double %306, %307
  store double %308, ptr %43, align 8, !tbaa !9
  %309 = getelementptr inbounds double, ptr %43, i64 1
  %310 = load double, ptr %17, align 8, !tbaa !9
  %311 = load double, ptr %13, align 8, !tbaa !9
  %312 = fsub double %310, %311
  store double %312, ptr %309, align 8, !tbaa !9
  %313 = getelementptr inbounds %"class.std::initializer_list", ptr %42, i32 0, i32 0
  store ptr %43, ptr %313, align 8, !tbaa !32
  %314 = getelementptr inbounds %"class.std::initializer_list", ptr %42, i32 0, i32 1
  store i64 2, ptr %314, align 8, !tbaa !34
  %315 = getelementptr inbounds { ptr, i64 }, ptr %42, i32 0, i32 0
  %316 = load ptr, ptr %315, align 8
  %317 = getelementptr inbounds { ptr, i64 }, ptr %42, i32 0, i32 1
  %318 = load i64, ptr %317, align 8
  %319 = invoke noundef double @_ZSt3minIdET_St16initializer_listIS0_E(ptr %316, i64 %318)
          to label %320 unwind label %423

320:                                              ; preds = %301
  store double %319, ptr %33, align 8, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 16, ptr %43) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %45) #7
  %321 = load double, ptr %28, align 8, !tbaa !9
  %322 = load double, ptr %30, align 8, !tbaa !9
  %323 = fadd double %321, %322
  store double %323, ptr %45, align 8, !tbaa !9
  %324 = getelementptr inbounds double, ptr %45, i64 1
  %325 = load double, ptr %18, align 8, !tbaa !9
  %326 = load double, ptr %14, align 8, !tbaa !9
  %327 = fadd double %325, %326
  store double %327, ptr %324, align 8, !tbaa !9
  %328 = getelementptr inbounds %"class.std::initializer_list", ptr %44, i32 0, i32 0
  store ptr %45, ptr %328, align 8, !tbaa !32
  %329 = getelementptr inbounds %"class.std::initializer_list", ptr %44, i32 0, i32 1
  store i64 2, ptr %329, align 8, !tbaa !34
  %330 = getelementptr inbounds { ptr, i64 }, ptr %44, i32 0, i32 0
  %331 = load ptr, ptr %330, align 8
  %332 = getelementptr inbounds { ptr, i64 }, ptr %44, i32 0, i32 1
  %333 = load i64, ptr %332, align 8
  %334 = invoke noundef double @_ZSt3maxIdET_St16initializer_listIS0_E(ptr %331, i64 %333)
          to label %335 unwind label %427

335:                                              ; preds = %320
  store double %334, ptr %34, align 8, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 16, ptr %45) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #7
  %336 = load double, ptr %33, align 8, !tbaa !9
  %337 = call double @llvm.fabs.f64(double %336)
  store double %337, ptr %46, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %47) #7
  %338 = load double, ptr %34, align 8, !tbaa !9
  %339 = call double @llvm.fabs.f64(double %338)
  store double %339, ptr %47, align 8, !tbaa !9
  %340 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxIdERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %46, ptr noundef nonnull align 8 dereferenceable(8) %47)
          to label %341 unwind label %431

341:                                              ; preds = %335
  %342 = load double, ptr %340, align 8, !tbaa !9
  invoke void @_ZN13RiemannSolver13toMaxVelocityEd(ptr noundef nonnull align 8 dereferenceable(88) %55, double noundef %342)
          to label %343 unwind label %431

343:                                              ; preds = %341
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #7
  %344 = load double, ptr %24, align 8, !tbaa !9
  %345 = load double, ptr %23, align 8, !tbaa !9
  %346 = fsub double %344, %345
  %347 = load double, ptr %21, align 8, !tbaa !9
  %348 = invoke noundef double @_ZSt3powIdiEN9__gnu_cxx9__promoteIDTplcvNS1_IT_Xsr3std12__is_integerIS2_EE7__valueEE6__typeELi0EcvNS1_IT0_Xsr3std12__is_integerIS5_EE7__valueEE6__typeELi0EEXsr3std12__is_integerIS8_EE7__valueEE6__typeES2_S5_(double noundef %347, i32 noundef 2)
          to label %349 unwind label %419

349:                                              ; preds = %343
  %350 = load double, ptr %17, align 8, !tbaa !9
  %351 = fmul double %348, %350
  %352 = load double, ptr %33, align 8, !tbaa !9
  %353 = load double, ptr %17, align 8, !tbaa !9
  %354 = fsub double %352, %353
  %355 = call double @llvm.fmuladd.f64(double %351, double %354, double %346)
  %356 = load double, ptr %22, align 8, !tbaa !9
  %357 = invoke noundef double @_ZSt3powIdiEN9__gnu_cxx9__promoteIDTplcvNS1_IT_Xsr3std12__is_integerIS2_EE7__valueEE6__typeELi0EcvNS1_IT0_Xsr3std12__is_integerIS5_EE7__valueEE6__typeELi0EEXsr3std12__is_integerIS8_EE7__valueEE6__typeES2_S5_(double noundef %356, i32 noundef 2)
          to label %358 unwind label %419

358:                                              ; preds = %349
  %359 = load double, ptr %18, align 8, !tbaa !9
  %360 = fmul double %357, %359
  %361 = load double, ptr %34, align 8, !tbaa !9
  %362 = load double, ptr %18, align 8, !tbaa !9
  %363 = fsub double %361, %362
  %364 = fneg double %360
  %365 = call double @llvm.fmuladd.f64(double %364, double %363, double %355)
  %366 = load double, ptr %21, align 8, !tbaa !9
  %367 = invoke noundef double @_ZSt3powIdiEN9__gnu_cxx9__promoteIDTplcvNS1_IT_Xsr3std12__is_integerIS2_EE7__valueEE6__typeELi0EcvNS1_IT0_Xsr3std12__is_integerIS5_EE7__valueEE6__typeELi0EEXsr3std12__is_integerIS8_EE7__valueEE6__typeES2_S5_(double noundef %366, i32 noundef 2)
          to label %368 unwind label %419

368:                                              ; preds = %358
  %369 = load double, ptr %33, align 8, !tbaa !9
  %370 = load double, ptr %17, align 8, !tbaa !9
  %371 = fsub double %369, %370
  %372 = load double, ptr %22, align 8, !tbaa !9
  %373 = invoke noundef double @_ZSt3powIdiEN9__gnu_cxx9__promoteIDTplcvNS1_IT_Xsr3std12__is_integerIS2_EE7__valueEE6__typeELi0EcvNS1_IT0_Xsr3std12__is_integerIS5_EE7__valueEE6__typeELi0EEXsr3std12__is_integerIS8_EE7__valueEE6__typeES2_S5_(double noundef %372, i32 noundef 2)
          to label %374 unwind label %419

374:                                              ; preds = %368
  %375 = load double, ptr %34, align 8, !tbaa !9
  %376 = load double, ptr %18, align 8, !tbaa !9
  %377 = fsub double %375, %376
  %378 = fmul double %373, %377
  %379 = fneg double %378
  %380 = call double @llvm.fmuladd.f64(double %367, double %371, double %379)
  %381 = fdiv double %365, %380
  store double %381, ptr %35, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %48) #7
  %382 = load double, ptr %21, align 8, !tbaa !9
  %383 = invoke noundef double @_ZSt3powIdiEN9__gnu_cxx9__promoteIDTplcvNS1_IT_Xsr3std12__is_integerIS2_EE7__valueEE6__typeELi0EcvNS1_IT0_Xsr3std12__is_integerIS5_EE7__valueEE6__typeELi0EEXsr3std12__is_integerIS8_EE7__valueEE6__typeES2_S5_(double noundef %382, i32 noundef 2)
          to label %384 unwind label %435

384:                                              ; preds = %374
  %385 = load double, ptr %33, align 8, !tbaa !9
  %386 = load double, ptr %17, align 8, !tbaa !9
  %387 = fsub double %385, %386
  %388 = load double, ptr %33, align 8, !tbaa !9
  %389 = load double, ptr %35, align 8, !tbaa !9
  %390 = fsub double %388, %389
  %391 = fdiv double %387, %390
  %392 = fmul double %383, %391
  store double %392, ptr %48, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %49) #7
  %393 = load double, ptr %22, align 8, !tbaa !9
  %394 = invoke noundef double @_ZSt3powIdiEN9__gnu_cxx9__promoteIDTplcvNS1_IT_Xsr3std12__is_integerIS2_EE7__valueEE6__typeELi0EcvNS1_IT0_Xsr3std12__is_integerIS5_EE7__valueEE6__typeELi0EEXsr3std12__is_integerIS8_EE7__valueEE6__typeES2_S5_(double noundef %393, i32 noundef 2)
          to label %395 unwind label %439

395:                                              ; preds = %384
  %396 = load double, ptr %34, align 8, !tbaa !9
  %397 = load double, ptr %18, align 8, !tbaa !9
  %398 = fsub double %396, %397
  %399 = load double, ptr %34, align 8, !tbaa !9
  %400 = load double, ptr %35, align 8, !tbaa !9
  %401 = fsub double %399, %400
  %402 = fdiv double %398, %401
  %403 = fmul double %394, %402
  store double %403, ptr %49, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %50) #7
  store i64 0, ptr %50, align 8, !tbaa !35
  br label %404

404:                                              ; preds = %450, %395
  %405 = load i64, ptr %50, align 8, !tbaa !35
  %406 = load ptr, ptr %6, align 8, !tbaa !5
  %407 = getelementptr inbounds %struct.SystemOfEquation, ptr %406, i32 0, i32 2
  %408 = load i64, ptr %407, align 8, !tbaa !36
  %409 = icmp ult i64 %405, %408
  br i1 %409, label %443, label %410

410:                                              ; preds = %404
  store i32 5, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #7
  br label %453

411:                                              ; preds = %65
  %412 = landingpad { ptr, i32 }
          cleanup
  %413 = extractvalue { ptr, i32 } %412, 0
  store ptr %413, ptr %38, align 8
  %414 = extractvalue { ptr, i32 } %412, 1
  store i32 %414, ptr %39, align 4
  call void @_ZNSt15__new_allocatorIdED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %37) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %37) #7
  br label %724

415:                                              ; preds = %69
  %416 = landingpad { ptr, i32 }
          cleanup
  %417 = extractvalue { ptr, i32 } %416, 0
  store ptr %417, ptr %38, align 8
  %418 = extractvalue { ptr, i32 } %416, 1
  store i32 %418, ptr %39, align 4
  call void @_ZNSt15__new_allocatorIdED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %41) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %41) #7
  br label %723

419:                                              ; preds = %368, %358, %349, %343, %298, %260, %250, %239, %228, %218, %209, %199, %196, %185, %177, %168, %165, %157, %148, %140, %131, %121, %118, %113, %110, %107, %98, %90, %81, %73
  %420 = landingpad { ptr, i32 }
          cleanup
  %421 = extractvalue { ptr, i32 } %420, 0
  store ptr %421, ptr %38, align 8
  %422 = extractvalue { ptr, i32 } %420, 1
  store i32 %422, ptr %39, align 4
  br label %722

423:                                              ; preds = %301
  %424 = landingpad { ptr, i32 }
          cleanup
  %425 = extractvalue { ptr, i32 } %424, 0
  store ptr %425, ptr %38, align 8
  %426 = extractvalue { ptr, i32 } %424, 1
  store i32 %426, ptr %39, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %43) #7
  br label %722

427:                                              ; preds = %320
  %428 = landingpad { ptr, i32 }
          cleanup
  %429 = extractvalue { ptr, i32 } %428, 0
  store ptr %429, ptr %38, align 8
  %430 = extractvalue { ptr, i32 } %428, 1
  store i32 %430, ptr %39, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %45) #7
  br label %722

431:                                              ; preds = %341, %335
  %432 = landingpad { ptr, i32 }
          cleanup
  %433 = extractvalue { ptr, i32 } %432, 0
  store ptr %433, ptr %38, align 8
  %434 = extractvalue { ptr, i32 } %432, 1
  store i32 %434, ptr %39, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #7
  br label %722

435:                                              ; preds = %374
  %436 = landingpad { ptr, i32 }
          cleanup
  %437 = extractvalue { ptr, i32 } %436, 0
  store ptr %437, ptr %38, align 8
  %438 = extractvalue { ptr, i32 } %436, 1
  store i32 %438, ptr %39, align 4
  br label %721

439:                                              ; preds = %496, %453, %384
  %440 = landingpad { ptr, i32 }
          cleanup
  %441 = extractvalue { ptr, i32 } %440, 0
  store ptr %441, ptr %38, align 8
  %442 = extractvalue { ptr, i32 } %440, 1
  store i32 %442, ptr %39, align 4
  br label %720

443:                                              ; preds = %404
  %444 = load double, ptr %48, align 8, !tbaa !9
  %445 = load i64, ptr %50, align 8, !tbaa !35
  %446 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %36, i64 noundef %445) #7
  store double %444, ptr %446, align 8, !tbaa !9
  %447 = load double, ptr %49, align 8, !tbaa !9
  %448 = load i64, ptr %50, align 8, !tbaa !35
  %449 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %40, i64 noundef %448) #7
  store double %447, ptr %449, align 8, !tbaa !9
  br label %450

450:                                              ; preds = %443
  %451 = load i64, ptr %50, align 8, !tbaa !35
  %452 = add i64 %451, 1
  store i64 %452, ptr %50, align 8, !tbaa !35
  br label %404, !llvm.loop !37

453:                                              ; preds = %410
  %454 = load double, ptr %48, align 8, !tbaa !9
  %455 = load double, ptr %17, align 8, !tbaa !9
  %456 = fmul double %454, %455
  %457 = load ptr, ptr %6, align 8, !tbaa !5
  %458 = getelementptr inbounds %struct.SystemOfEquation, ptr %457, i32 0, i32 3
  %459 = load i64, ptr %458, align 8, !tbaa !39
  %460 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %36, i64 noundef %459) #7
  store double %456, ptr %460, align 8, !tbaa !9
  %461 = load double, ptr %49, align 8, !tbaa !9
  %462 = load double, ptr %18, align 8, !tbaa !9
  %463 = fmul double %461, %462
  %464 = load ptr, ptr %6, align 8, !tbaa !5
  %465 = getelementptr inbounds %struct.SystemOfEquation, ptr %464, i32 0, i32 3
  %466 = load i64, ptr %465, align 8, !tbaa !39
  %467 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %40, i64 noundef %466) #7
  store double %463, ptr %467, align 8, !tbaa !9
  %468 = load double, ptr %48, align 8, !tbaa !9
  %469 = load double, ptr %35, align 8, !tbaa !9
  %470 = fmul double %468, %469
  %471 = load ptr, ptr %6, align 8, !tbaa !5
  %472 = getelementptr inbounds %struct.SystemOfEquation, ptr %471, i32 0, i32 4
  %473 = load i64, ptr %472, align 8, !tbaa !40
  %474 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %36, i64 noundef %473) #7
  store double %470, ptr %474, align 8, !tbaa !9
  %475 = load double, ptr %49, align 8, !tbaa !9
  %476 = load double, ptr %35, align 8, !tbaa !9
  %477 = fmul double %475, %476
  %478 = load ptr, ptr %6, align 8, !tbaa !5
  %479 = getelementptr inbounds %struct.SystemOfEquation, ptr %478, i32 0, i32 4
  %480 = load i64, ptr %479, align 8, !tbaa !40
  %481 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %40, i64 noundef %480) #7
  store double %477, ptr %481, align 8, !tbaa !9
  %482 = load double, ptr %48, align 8, !tbaa !9
  %483 = load double, ptr %25, align 8, !tbaa !9
  %484 = load double, ptr %35, align 8, !tbaa !9
  %485 = load double, ptr %17, align 8, !tbaa !9
  %486 = fsub double %484, %485
  %487 = load double, ptr %35, align 8, !tbaa !9
  %488 = load double, ptr %23, align 8, !tbaa !9
  %489 = load ptr, ptr %6, align 8, !tbaa !5
  %490 = load i32, ptr %9, align 4, !tbaa !11
  %491 = sext i32 %490 to i64
  %492 = load ptr, ptr %489, align 8, !tbaa !28
  %493 = getelementptr inbounds ptr, ptr %492, i64 1
  %494 = load ptr, ptr %493, align 8
  %495 = invoke noundef double %494(ptr noundef nonnull align 8 dereferenceable(296) %489, i64 noundef %491)
          to label %496 unwind label %439

496:                                              ; preds = %453
  %497 = load double, ptr %33, align 8, !tbaa !9
  %498 = load double, ptr %17, align 8, !tbaa !9
  %499 = fsub double %497, %498
  %500 = fmul double %495, %499
  %501 = fdiv double %488, %500
  %502 = fadd double %487, %501
  %503 = call double @llvm.fmuladd.f64(double %486, double %502, double %483)
  %504 = fmul double %482, %503
  %505 = load ptr, ptr %6, align 8, !tbaa !5
  %506 = getelementptr inbounds %struct.SystemOfEquation, ptr %505, i32 0, i32 5
  %507 = load i64, ptr %506, align 8, !tbaa !41
  %508 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %36, i64 noundef %507) #7
  store double %504, ptr %508, align 8, !tbaa !9
  %509 = load double, ptr %49, align 8, !tbaa !9
  %510 = load double, ptr %26, align 8, !tbaa !9
  %511 = load double, ptr %35, align 8, !tbaa !9
  %512 = load double, ptr %18, align 8, !tbaa !9
  %513 = fsub double %511, %512
  %514 = load double, ptr %35, align 8, !tbaa !9
  %515 = load double, ptr %24, align 8, !tbaa !9
  %516 = load ptr, ptr %6, align 8, !tbaa !5
  %517 = load i32, ptr %9, align 4, !tbaa !11
  %518 = add nsw i32 %517, 1
  %519 = sext i32 %518 to i64
  %520 = load ptr, ptr %516, align 8, !tbaa !28
  %521 = getelementptr inbounds ptr, ptr %520, i64 1
  %522 = load ptr, ptr %521, align 8
  %523 = invoke noundef double %522(ptr noundef nonnull align 8 dereferenceable(296) %516, i64 noundef %519)
          to label %524 unwind label %439

524:                                              ; preds = %496
  %525 = load double, ptr %34, align 8, !tbaa !9
  %526 = load double, ptr %18, align 8, !tbaa !9
  %527 = fsub double %525, %526
  %528 = fmul double %523, %527
  %529 = fdiv double %515, %528
  %530 = fadd double %514, %529
  %531 = call double @llvm.fmuladd.f64(double %513, double %530, double %510)
  %532 = fmul double %509, %531
  %533 = load ptr, ptr %6, align 8, !tbaa !5
  %534 = getelementptr inbounds %struct.SystemOfEquation, ptr %533, i32 0, i32 5
  %535 = load i64, ptr %534, align 8, !tbaa !41
  %536 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %40, i64 noundef %535) #7
  store double %532, ptr %536, align 8, !tbaa !9
  %537 = load double, ptr %33, align 8, !tbaa !9
  %538 = fcmp oge double %537, 0.000000e+00
  br i1 %538, label %539, label %571

539:                                              ; preds = %524
  call void @llvm.lifetime.start.p0(i64 8, ptr %51) #7
  store i64 0, ptr %51, align 8, !tbaa !35
  br label %540

540:                                              ; preds = %563, %539
  %541 = load i64, ptr %51, align 8, !tbaa !35
  %542 = load ptr, ptr %6, align 8, !tbaa !5
  %543 = getelementptr inbounds %struct.SystemOfEquation, ptr %542, i32 0, i32 6
  %544 = load i64, ptr %543, align 8, !tbaa !27
  %545 = icmp ult i64 %541, %544
  br i1 %545, label %547, label %546

546:                                              ; preds = %540
  store i32 8, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #7
  br label %570

547:                                              ; preds = %540
  %548 = load ptr, ptr %6, align 8, !tbaa !5
  %549 = getelementptr inbounds %struct.SystemOfEquation, ptr %548, i32 0, i32 16
  %550 = load i64, ptr %51, align 8, !tbaa !35
  %551 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorI6MatrixSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %549, i64 noundef %550) #7
  %552 = load i32, ptr %9, align 4, !tbaa !11
  %553 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixixEi(ptr noundef nonnull align 8 dereferenceable(24) %551, i32 noundef %552)
          to label %554 unwind label %566

554:                                              ; preds = %547
  %555 = load double, ptr %553, align 8, !tbaa !9
  %556 = load ptr, ptr %6, align 8, !tbaa !5
  %557 = getelementptr inbounds %struct.SystemOfEquation, ptr %556, i32 0, i32 17
  %558 = load i64, ptr %51, align 8, !tbaa !35
  %559 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorI6MatrixSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %557, i64 noundef %558) #7
  %560 = load i32, ptr %9, align 4, !tbaa !11
  %561 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixixEi(ptr noundef nonnull align 8 dereferenceable(24) %559, i32 noundef %560)
          to label %562 unwind label %566

562:                                              ; preds = %554
  store double %555, ptr %561, align 8, !tbaa !9
  br label %563

563:                                              ; preds = %562
  %564 = load i64, ptr %51, align 8, !tbaa !35
  %565 = add i64 %564, 1
  store i64 %565, ptr %51, align 8, !tbaa !35
  br label %540, !llvm.loop !42

566:                                              ; preds = %554, %547
  %567 = landingpad { ptr, i32 }
          cleanup
  %568 = extractvalue { ptr, i32 } %567, 0
  store ptr %568, ptr %38, align 8
  %569 = extractvalue { ptr, i32 } %567, 1
  store i32 %569, ptr %39, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #7
  br label %720

570:                                              ; preds = %546
  br label %716

571:                                              ; preds = %524
  %572 = load double, ptr %34, align 8, !tbaa !9
  %573 = fcmp ole double %572, 0.000000e+00
  br i1 %573, label %574, label %607

574:                                              ; preds = %571
  call void @llvm.lifetime.start.p0(i64 8, ptr %52) #7
  store i64 0, ptr %52, align 8, !tbaa !35
  br label %575

575:                                              ; preds = %599, %574
  %576 = load i64, ptr %52, align 8, !tbaa !35
  %577 = load ptr, ptr %6, align 8, !tbaa !5
  %578 = getelementptr inbounds %struct.SystemOfEquation, ptr %577, i32 0, i32 6
  %579 = load i64, ptr %578, align 8, !tbaa !27
  %580 = icmp ult i64 %576, %579
  br i1 %580, label %582, label %581

581:                                              ; preds = %575
  store i32 11, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #7
  br label %606

582:                                              ; preds = %575
  %583 = load ptr, ptr %6, align 8, !tbaa !5
  %584 = getelementptr inbounds %struct.SystemOfEquation, ptr %583, i32 0, i32 16
  %585 = load i64, ptr %52, align 8, !tbaa !35
  %586 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorI6MatrixSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %584, i64 noundef %585) #7
  %587 = load i32, ptr %9, align 4, !tbaa !11
  %588 = add nsw i32 %587, 1
  %589 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixixEi(ptr noundef nonnull align 8 dereferenceable(24) %586, i32 noundef %588)
          to label %590 unwind label %602

590:                                              ; preds = %582
  %591 = load double, ptr %589, align 8, !tbaa !9
  %592 = load ptr, ptr %6, align 8, !tbaa !5
  %593 = getelementptr inbounds %struct.SystemOfEquation, ptr %592, i32 0, i32 17
  %594 = load i64, ptr %52, align 8, !tbaa !35
  %595 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorI6MatrixSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %593, i64 noundef %594) #7
  %596 = load i32, ptr %9, align 4, !tbaa !11
  %597 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixixEi(ptr noundef nonnull align 8 dereferenceable(24) %595, i32 noundef %596)
          to label %598 unwind label %602

598:                                              ; preds = %590
  store double %591, ptr %597, align 8, !tbaa !9
  br label %599

599:                                              ; preds = %598
  %600 = load i64, ptr %52, align 8, !tbaa !35
  %601 = add i64 %600, 1
  store i64 %601, ptr %52, align 8, !tbaa !35
  br label %575, !llvm.loop !43

602:                                              ; preds = %590, %582
  %603 = landingpad { ptr, i32 }
          cleanup
  %604 = extractvalue { ptr, i32 } %603, 0
  store ptr %604, ptr %38, align 8
  %605 = extractvalue { ptr, i32 } %603, 1
  store i32 %605, ptr %39, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #7
  br label %720

606:                                              ; preds = %581
  br label %715

607:                                              ; preds = %571
  %608 = load double, ptr %35, align 8, !tbaa !9
  %609 = fcmp ole double %608, 0.000000e+00
  br i1 %609, label %610, label %661

610:                                              ; preds = %607
  %611 = load double, ptr %34, align 8, !tbaa !9
  %612 = fcmp oge double %611, 0.000000e+00
  br i1 %612, label %613, label %661

613:                                              ; preds = %610
  call void @llvm.lifetime.start.p0(i64 8, ptr %53) #7
  store i64 0, ptr %53, align 8, !tbaa !35
  br label %614

614:                                              ; preds = %653, %613
  %615 = load i64, ptr %53, align 8, !tbaa !35
  %616 = load ptr, ptr %6, align 8, !tbaa !5
  %617 = getelementptr inbounds %struct.SystemOfEquation, ptr %616, i32 0, i32 6
  %618 = load i64, ptr %617, align 8, !tbaa !27
  %619 = icmp ult i64 %615, %618
  br i1 %619, label %621, label %620

620:                                              ; preds = %614
  store i32 14, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #7
  br label %660

621:                                              ; preds = %614
  %622 = load ptr, ptr %6, align 8, !tbaa !5
  %623 = getelementptr inbounds %struct.SystemOfEquation, ptr %622, i32 0, i32 16
  %624 = load i64, ptr %53, align 8, !tbaa !35
  %625 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorI6MatrixSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %623, i64 noundef %624) #7
  %626 = load i32, ptr %9, align 4, !tbaa !11
  %627 = add nsw i32 %626, 1
  %628 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixixEi(ptr noundef nonnull align 8 dereferenceable(24) %625, i32 noundef %627)
          to label %629 unwind label %656

629:                                              ; preds = %621
  %630 = load double, ptr %628, align 8, !tbaa !9
  %631 = load double, ptr %35, align 8, !tbaa !9
  %632 = load i64, ptr %53, align 8, !tbaa !35
  %633 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %40, i64 noundef %632) #7
  %634 = load double, ptr %633, align 8, !tbaa !9
  %635 = load ptr, ptr %6, align 8, !tbaa !5
  %636 = getelementptr inbounds %struct.SystemOfEquation, ptr %635, i32 0, i32 14
  %637 = load i64, ptr %53, align 8, !tbaa !35
  %638 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorI6MatrixSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %636, i64 noundef %637) #7
  %639 = load i32, ptr %9, align 4, !tbaa !11
  %640 = add nsw i32 %639, 1
  %641 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixixEi(ptr noundef nonnull align 8 dereferenceable(24) %638, i32 noundef %640)
          to label %642 unwind label %656

642:                                              ; preds = %629
  %643 = load double, ptr %641, align 8, !tbaa !9
  %644 = fsub double %634, %643
  %645 = call double @llvm.fmuladd.f64(double %631, double %644, double %630)
  %646 = load ptr, ptr %6, align 8, !tbaa !5
  %647 = getelementptr inbounds %struct.SystemOfEquation, ptr %646, i32 0, i32 17
  %648 = load i64, ptr %53, align 8, !tbaa !35
  %649 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorI6MatrixSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %647, i64 noundef %648) #7
  %650 = load i32, ptr %9, align 4, !tbaa !11
  %651 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixixEi(ptr noundef nonnull align 8 dereferenceable(24) %649, i32 noundef %650)
          to label %652 unwind label %656

652:                                              ; preds = %642
  store double %645, ptr %651, align 8, !tbaa !9
  br label %653

653:                                              ; preds = %652
  %654 = load i64, ptr %53, align 8, !tbaa !35
  %655 = add i64 %654, 1
  store i64 %655, ptr %53, align 8, !tbaa !35
  br label %614, !llvm.loop !44

656:                                              ; preds = %642, %629, %621
  %657 = landingpad { ptr, i32 }
          cleanup
  %658 = extractvalue { ptr, i32 } %657, 0
  store ptr %658, ptr %38, align 8
  %659 = extractvalue { ptr, i32 } %657, 1
  store i32 %659, ptr %39, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #7
  br label %720

660:                                              ; preds = %620
  br label %714

661:                                              ; preds = %610, %607
  %662 = load double, ptr %33, align 8, !tbaa !9
  %663 = fcmp ole double %662, 0.000000e+00
  br i1 %663, label %664, label %713

664:                                              ; preds = %661
  %665 = load double, ptr %35, align 8, !tbaa !9
  %666 = fcmp oge double %665, 0.000000e+00
  br i1 %666, label %667, label %713

667:                                              ; preds = %664
  call void @llvm.lifetime.start.p0(i64 8, ptr %54) #7
  store i64 0, ptr %54, align 8, !tbaa !35
  br label %668

668:                                              ; preds = %705, %667
  %669 = load i64, ptr %54, align 8, !tbaa !35
  %670 = load ptr, ptr %6, align 8, !tbaa !5
  %671 = getelementptr inbounds %struct.SystemOfEquation, ptr %670, i32 0, i32 6
  %672 = load i64, ptr %671, align 8, !tbaa !27
  %673 = icmp ult i64 %669, %672
  br i1 %673, label %675, label %674

674:                                              ; preds = %668
  store i32 17, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #7
  br label %712

675:                                              ; preds = %668
  %676 = load ptr, ptr %6, align 8, !tbaa !5
  %677 = getelementptr inbounds %struct.SystemOfEquation, ptr %676, i32 0, i32 16
  %678 = load i64, ptr %54, align 8, !tbaa !35
  %679 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorI6MatrixSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %677, i64 noundef %678) #7
  %680 = load i32, ptr %9, align 4, !tbaa !11
  %681 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixixEi(ptr noundef nonnull align 8 dereferenceable(24) %679, i32 noundef %680)
          to label %682 unwind label %708

682:                                              ; preds = %675
  %683 = load double, ptr %681, align 8, !tbaa !9
  %684 = load double, ptr %35, align 8, !tbaa !9
  %685 = load i64, ptr %54, align 8, !tbaa !35
  %686 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %36, i64 noundef %685) #7
  %687 = load double, ptr %686, align 8, !tbaa !9
  %688 = load ptr, ptr %6, align 8, !tbaa !5
  %689 = getelementptr inbounds %struct.SystemOfEquation, ptr %688, i32 0, i32 14
  %690 = load i64, ptr %54, align 8, !tbaa !35
  %691 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorI6MatrixSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %689, i64 noundef %690) #7
  %692 = load i32, ptr %9, align 4, !tbaa !11
  %693 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixixEi(ptr noundef nonnull align 8 dereferenceable(24) %691, i32 noundef %692)
          to label %694 unwind label %708

694:                                              ; preds = %682
  %695 = load double, ptr %693, align 8, !tbaa !9
  %696 = fsub double %687, %695
  %697 = call double @llvm.fmuladd.f64(double %684, double %696, double %683)
  %698 = load ptr, ptr %6, align 8, !tbaa !5
  %699 = getelementptr inbounds %struct.SystemOfEquation, ptr %698, i32 0, i32 17
  %700 = load i64, ptr %54, align 8, !tbaa !35
  %701 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorI6MatrixSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %699, i64 noundef %700) #7
  %702 = load i32, ptr %9, align 4, !tbaa !11
  %703 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixixEi(ptr noundef nonnull align 8 dereferenceable(24) %701, i32 noundef %702)
          to label %704 unwind label %708

704:                                              ; preds = %694
  store double %697, ptr %703, align 8, !tbaa !9
  br label %705

705:                                              ; preds = %704
  %706 = load i64, ptr %54, align 8, !tbaa !35
  %707 = add i64 %706, 1
  store i64 %707, ptr %54, align 8, !tbaa !35
  br label %668, !llvm.loop !45

708:                                              ; preds = %694, %682, %675
  %709 = landingpad { ptr, i32 }
          cleanup
  %710 = extractvalue { ptr, i32 } %709, 0
  store ptr %710, ptr %38, align 8
  %711 = extractvalue { ptr, i32 } %709, 1
  store i32 %711, ptr %39, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #7
  br label %720

712:                                              ; preds = %674
  br label %713

713:                                              ; preds = %712, %664, %661
  br label %714

714:                                              ; preds = %713, %660
  br label %715

715:                                              ; preds = %714, %606
  br label %716

716:                                              ; preds = %715, %570
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #7
  call void @_ZNSt6vectorIdSaIdEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %40) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %40) #7
  call void @_ZNSt6vectorIdSaIdEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %36) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %36) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #7
  call void @llvm.lifetime.end.p0(i64 8, 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 %21) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #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 @llvm.lifetime.end.p0(i64 8, ptr %16) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #7
  br label %717

717:                                              ; preds = %716
  %718 = load i32, ptr %9, align 4, !tbaa !11
  %719 = add nsw i32 %718, 1
  store i32 %719, ptr %9, align 4, !tbaa !11
  br label %56, !llvm.loop !46

720:                                              ; preds = %708, %656, %602, %566, %439
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #7
  br label %721

721:                                              ; preds = %720, %435
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #7
  br label %722

722:                                              ; preds = %721, %431, %427, %423, %419
  call void @_ZNSt6vectorIdSaIdEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %40) #7
  br label %723

723:                                              ; preds = %722, %415
  call void @llvm.lifetime.end.p0(i64 24, ptr %40) #7
  call void @_ZNSt6vectorIdSaIdEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %36) #7
  br label %724

724:                                              ; preds = %723, %411
  call void @llvm.lifetime.end.p0(i64 24, ptr %36) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #7
  call void @llvm.lifetime.end.p0(i64 8, 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 %21) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #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 @llvm.lifetime.end.p0(i64 8, ptr %16) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #7
  br label %726

725:                                              ; preds = %64
  ret void

726:                                              ; preds = %724
  %727 = load ptr, ptr %38, align 8
  %728 = load i32, ptr %39, align 4
  %729 = insertvalue { ptr, i32 } poison, ptr %727, 0
  %730 = insertvalue { ptr, i32 } %729, i32 %728, 1
  resume { ptr, i32 } %730
}

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef double @_ZSt3minIdET_St16initializer_listIS0_E(ptr, i64) #6

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef double @_ZSt3maxIdET_St16initializer_listIS0_E(ptr, i64) #6

attributes #0 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
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 = { nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { 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 #5 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #6 = { 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 #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 = !{!14, !15, i64 48}
!28 = !{!29, !29, i64 0}
!29 = !{!"vtable pointer", !8, i64 0}
!30 = !{!31, !10, i64 40}
!31 = !{!"_ZTS13RiemannSolver", !10, i64 8, !21, i64 16}
!32 = !{!33, !6, i64 0}
!33 = !{!"_ZTSSt16initializer_listIdE", !6, i64 0, !15, i64 8}
!34 = !{!33, !15, i64 8}
!35 = !{!15, !15, i64 0}
!36 = !{!14, !15, i64 16}
!37 = distinct !{!37, !38}
!38 = !{!"llvm.loop.mustprogress"}
!39 = !{!14, !15, i64 24}
!40 = !{!14, !15, i64 32}
!41 = !{!14, !15, i64 40}
!42 = distinct !{!42, !38}
!43 = distinct !{!43, !38}
!44 = distinct !{!44, !38}
!45 = distinct !{!45, !38}
!46 = distinct !{!46, !38}


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

%"class.std::vector.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::allocator.7" = type { i8 }

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN13RiemannSolver13toMaxVelocityEd(ptr noundef nonnull align 8 dereferenceable(88), double noundef) local_unnamed_addr #0 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSaIdEC2Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #0 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 #0 align 2

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

; Function Attrs: mustprogress nofree nounwind willreturn memory(write)
declare double @sqrt(double noundef) local_unnamed_addr #3

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef double @_ZSt3powIdiEN9__gnu_cxx9__promoteIDTplcvNS1_IT_Xsr3std12__is_integerIS2_EE7__valueEE6__typeELi0EcvNS1_IT0_Xsr3std12__is_integerIS5_EE7__valueEE6__typeELi0EEXsr3std12__is_integerIS8_EE7__valueEE6__typeES2_S5_(double noundef, i32 noundef) local_unnamed_addr #4

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

; 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 #4

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

; 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 #0 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 #0 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 #0 align 2

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN10HLLCSolver11computeFluxEP16SystemOfEquationdd(ptr noundef nonnull align 8 dereferenceable(88) %0, ptr noundef %1, double noundef %2, double noundef %3) unnamed_addr #2 align 2 personality ptr @__gxx_personality_v0 {
  %5 = alloca %"class.std::vector.5", align 8
  %6 = alloca %"class.std::allocator.7", align 1
  %7 = alloca %"class.std::vector.5", align 8
  %8 = alloca %"class.std::allocator.7", align 1
  %9 = alloca [2 x double], align 16
  %10 = alloca [2 x double], align 16
  %11 = alloca double, align 8
  %12 = alloca double, align 8
  tail call void @_ZN13RiemannSolver13toMaxVelocityEd(ptr noundef nonnull align 8 dereferenceable(88) %0, double noundef -1.000000e+00)
  %13 = getelementptr inbounds i8, ptr %1, i64 8
  %14 = load i64, ptr %13, align 8, !tbaa !5
  %.not = icmp eq i64 %14, 1
  br i1 %.not, label %._crit_edge239, label %.lr.ph238

.lr.ph238:                                        ; preds = %4
  %15 = getelementptr inbounds i8, ptr %1, i64 48
  %16 = getelementptr inbounds i8, ptr %0, i64 40
  %17 = getelementptr inbounds i8, ptr %1, i64 16
  %18 = getelementptr inbounds i8, ptr %1, i64 24
  %19 = getelementptr inbounds i8, ptr %1, i64 32
  %20 = getelementptr inbounds i8, ptr %1, i64 40
  %21 = getelementptr inbounds i8, ptr %1, i64 248
  %22 = getelementptr inbounds i8, ptr %1, i64 272
  %23 = getelementptr inbounds i8, ptr %1, i64 200
  br label %24

._crit_edge239:                                   ; preds = %.loopexit, %4
  ret void

24:                                               ; preds = %.lr.ph238, %.loopexit
  %indvars.iv = phi i64 [ 0, %.lr.ph238 ], [ %indvars.iv.next, %.loopexit ]
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %5) #7
  %25 = load i64, ptr %15, align 8, !tbaa !24
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %6) #7
  call void @_ZNSaIdEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %6) #7
  invoke void @_ZNSt6vectorIdSaIdEEC2EmRKS0_(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef %25, ptr noundef nonnull align 1 dereferenceable(1) %6)
          to label %26 unwind label %209

26:                                               ; preds = %24
  call void @_ZNSt15__new_allocatorIdED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %6) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %6) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %7) #7
  %27 = load i64, ptr %15, align 8, !tbaa !24
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %8) #7
  call void @_ZNSaIdEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %8) #7
  invoke void @_ZNSt6vectorIdSaIdEEC2EmRKS0_(ptr noundef nonnull align 8 dereferenceable(24) %7, i64 noundef %27, ptr noundef nonnull align 1 dereferenceable(1) %8)
          to label %28 unwind label %211

28:                                               ; preds = %26
  call void @_ZNSt15__new_allocatorIdED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %8) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %8) #7
  %29 = load ptr, ptr %1, align 8, !tbaa !25
  %30 = getelementptr inbounds i8, ptr %29, i64 40
  %31 = load ptr, ptr %30, align 8
  %32 = invoke noundef double %31(ptr noundef nonnull align 8 dereferenceable(296) %1, i64 noundef %indvars.iv)
          to label %33 unwind label %213

33:                                               ; preds = %28
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %34 = load ptr, ptr %1, align 8, !tbaa !25
  %35 = getelementptr inbounds i8, ptr %34, i64 40
  %36 = load ptr, ptr %35, align 8
  %37 = invoke noundef double %36(ptr noundef nonnull align 8 dereferenceable(296) %1, i64 noundef %indvars.iv.next)
          to label %38 unwind label %213

38:                                               ; preds = %33
  %39 = load ptr, ptr %1, align 8, !tbaa !25
  %40 = getelementptr inbounds i8, ptr %39, i64 32
  %41 = load ptr, ptr %40, align 8
  %42 = invoke noundef double %41(ptr noundef nonnull align 8 dereferenceable(296) %1, i64 noundef %indvars.iv)
          to label %43 unwind label %213

43:                                               ; preds = %38
  %44 = load ptr, ptr %1, align 8, !tbaa !25
  %45 = getelementptr inbounds i8, ptr %44, i64 32
  %46 = load ptr, ptr %45, align 8
  %47 = invoke noundef double %46(ptr noundef nonnull align 8 dereferenceable(296) %1, i64 noundef %indvars.iv.next)
          to label %48 unwind label %213

48:                                               ; preds = %43
  %49 = call noundef double @_ZSt3powIdiEN9__gnu_cxx9__promoteIDTplcvNS1_IT_Xsr3std12__is_integerIS2_EE7__valueEE6__typeELi0EcvNS1_IT0_Xsr3std12__is_integerIS5_EE7__valueEE6__typeELi0EEXsr3std12__is_integerIS8_EE7__valueEE6__typeES2_S5_(double noundef %32, i32 noundef 2)
  %50 = call noundef double @_ZSt3powIdiEN9__gnu_cxx9__promoteIDTplcvNS1_IT_Xsr3std12__is_integerIS2_EE7__valueEE6__typeELi0EcvNS1_IT0_Xsr3std12__is_integerIS5_EE7__valueEE6__typeELi0EEXsr3std12__is_integerIS8_EE7__valueEE6__typeES2_S5_(double noundef %42, i32 noundef 2)
  %51 = fadd double %49, %50
  %52 = call double @sqrt(double noundef %51) #7
  %53 = call noundef double @_ZSt3powIdiEN9__gnu_cxx9__promoteIDTplcvNS1_IT_Xsr3std12__is_integerIS2_EE7__valueEE6__typeELi0EcvNS1_IT0_Xsr3std12__is_integerIS5_EE7__valueEE6__typeELi0EEXsr3std12__is_integerIS8_EE7__valueEE6__typeES2_S5_(double noundef %37, i32 noundef 2)
  %54 = call noundef double @_ZSt3powIdiEN9__gnu_cxx9__promoteIDTplcvNS1_IT_Xsr3std12__is_integerIS2_EE7__valueEE6__typeELi0EcvNS1_IT0_Xsr3std12__is_integerIS5_EE7__valueEE6__typeELi0EEXsr3std12__is_integerIS8_EE7__valueEE6__typeES2_S5_(double noundef %47, i32 noundef 2)
  %55 = fadd double %53, %54
  %56 = call double @sqrt(double noundef %55) #7
  %57 = load ptr, ptr %1, align 8, !tbaa !25
  %58 = getelementptr inbounds i8, ptr %57, i64 48
  %59 = load ptr, ptr %58, align 8
  %60 = invoke noundef double %59(ptr noundef nonnull align 8 dereferenceable(296) %1, i64 noundef %indvars.iv)
          to label %61 unwind label %213

61:                                               ; preds = %48
  %62 = load ptr, ptr %1, align 8, !tbaa !25
  %63 = getelementptr inbounds i8, ptr %62, i64 48
  %64 = load ptr, ptr %63, align 8
  %65 = invoke noundef double %64(ptr noundef nonnull align 8 dereferenceable(296) %1, i64 noundef %indvars.iv.next)
          to label %66 unwind label %213

66:                                               ; preds = %61
  %67 = load ptr, ptr %1, align 8, !tbaa !25
  %68 = load ptr, ptr %67, align 8
  %69 = invoke noundef double %68(ptr noundef nonnull align 8 dereferenceable(296) %1, i64 noundef %indvars.iv)
          to label %70 unwind label %213

70:                                               ; preds = %66
  %71 = load ptr, ptr %1, align 8, !tbaa !25
  %72 = load ptr, ptr %71, align 8
  %73 = invoke noundef double %72(ptr noundef nonnull align 8 dereferenceable(296) %1, i64 noundef %indvars.iv.next)
          to label %74 unwind label %213

74:                                               ; preds = %70
  %75 = load ptr, ptr %1, align 8, !tbaa !25
  %76 = getelementptr inbounds i8, ptr %75, i64 48
  %77 = load ptr, ptr %76, align 8
  %78 = invoke noundef double %77(ptr noundef nonnull align 8 dereferenceable(296) %1, i64 noundef %indvars.iv)
          to label %79 unwind label %213

79:                                               ; preds = %74
  %80 = call noundef double @_ZSt3powIdiEN9__gnu_cxx9__promoteIDTplcvNS1_IT_Xsr3std12__is_integerIS2_EE7__valueEE6__typeELi0EcvNS1_IT0_Xsr3std12__is_integerIS5_EE7__valueEE6__typeELi0EEXsr3std12__is_integerIS8_EE7__valueEE6__typeES2_S5_(double noundef %52, i32 noundef 2)
  %81 = fsub double %78, %80
  %82 = load ptr, ptr %1, align 8, !tbaa !25
  %83 = load ptr, ptr %82, align 8
  %84 = invoke noundef double %83(ptr noundef nonnull align 8 dereferenceable(296) %1, i64 noundef %indvars.iv)
          to label %85 unwind label %213

85:                                               ; preds = %79
  %86 = load ptr, ptr %1, align 8, !tbaa !25
  %87 = getelementptr inbounds i8, ptr %86, i64 8
  %88 = load ptr, ptr %87, align 8
  %89 = invoke noundef double %88(ptr noundef nonnull align 8 dereferenceable(296) %1, i64 noundef %indvars.iv)
          to label %90 unwind label %213

90:                                               ; preds = %85
  %91 = fdiv double %84, %89
  %92 = fadd double %81, %91
  %93 = load ptr, ptr %1, align 8, !tbaa !25
  %94 = getelementptr inbounds i8, ptr %93, i64 48
  %95 = load ptr, ptr %94, align 8
  %96 = invoke noundef double %95(ptr noundef nonnull align 8 dereferenceable(296) %1, i64 noundef %indvars.iv.next)
          to label %97 unwind label %213

97:                                               ; preds = %90
  %98 = call noundef double @_ZSt3powIdiEN9__gnu_cxx9__promoteIDTplcvNS1_IT_Xsr3std12__is_integerIS2_EE7__valueEE6__typeELi0EcvNS1_IT0_Xsr3std12__is_integerIS5_EE7__valueEE6__typeELi0EEXsr3std12__is_integerIS8_EE7__valueEE6__typeES2_S5_(double noundef %56, i32 noundef 2)
  %99 = fsub double %96, %98
  %100 = load ptr, ptr %1, align 8, !tbaa !25
  %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 %213

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

108:                                              ; preds = %103
  %109 = fdiv double %102, %107
  %110 = fadd double %99, %109
  %111 = load double, ptr %16, align 8, !tbaa !27
  %112 = fadd double %111, -1.000000e+00
  %113 = call noundef double @_ZSt3powIdiEN9__gnu_cxx9__promoteIDTplcvNS1_IT_Xsr3std12__is_integerIS2_EE7__valueEE6__typeELi0EcvNS1_IT0_Xsr3std12__is_integerIS5_EE7__valueEE6__typeELi0EEXsr3std12__is_integerIS8_EE7__valueEE6__typeES2_S5_(double noundef %52, i32 noundef 2)
  %114 = call double @llvm.fmuladd.f64(double %113, double -5.000000e-01, double %92)
  %115 = fmul double %112, %114
  %116 = call double @sqrt(double noundef %115) #7
  %117 = load double, ptr %16, align 8, !tbaa !27
  %118 = fadd double %117, -1.000000e+00
  %119 = call noundef double @_ZSt3powIdiEN9__gnu_cxx9__promoteIDTplcvNS1_IT_Xsr3std12__is_integerIS2_EE7__valueEE6__typeELi0EcvNS1_IT0_Xsr3std12__is_integerIS5_EE7__valueEE6__typeELi0EEXsr3std12__is_integerIS8_EE7__valueEE6__typeES2_S5_(double noundef %56, i32 noundef 2)
  %120 = call double @llvm.fmuladd.f64(double %119, double -5.000000e-01, double %110)
  %121 = fmul double %118, %120
  %122 = call double @sqrt(double noundef %121) #7
  %123 = load ptr, ptr %1, align 8, !tbaa !25
  %124 = getelementptr inbounds i8, ptr %123, i64 8
  %125 = load ptr, ptr %124, align 8
  %126 = invoke noundef double %125(ptr noundef nonnull align 8 dereferenceable(296) %1, i64 noundef %indvars.iv)
          to label %127 unwind label %213

127:                                              ; preds = %108
  %128 = call double @sqrt(double noundef %126) #7
  %129 = load ptr, ptr %1, align 8, !tbaa !25
  %130 = getelementptr inbounds i8, ptr %129, i64 8
  %131 = load ptr, ptr %130, align 8
  %132 = invoke noundef double %131(ptr noundef nonnull align 8 dereferenceable(296) %1, i64 noundef %indvars.iv.next)
          to label %133 unwind label %213

133:                                              ; preds = %127
  %134 = call double @sqrt(double noundef %132) #7
  %135 = fmul double %37, %134
  %136 = call double @llvm.fmuladd.f64(double %128, double %32, double %135)
  %137 = fadd double %128, %134
  %138 = fdiv double %136, %137
  %139 = fmul double %47, %134
  %140 = call double @llvm.fmuladd.f64(double %128, double %42, double %139)
  %141 = fdiv double %140, %137
  %142 = fmul double %110, %134
  %143 = call double @llvm.fmuladd.f64(double %128, double %92, double %142)
  %144 = fdiv double %143, %137
  %145 = load double, ptr %16, align 8, !tbaa !27
  %146 = call noundef double @_ZSt3powIdiEN9__gnu_cxx9__promoteIDTplcvNS1_IT_Xsr3std12__is_integerIS2_EE7__valueEE6__typeELi0EcvNS1_IT0_Xsr3std12__is_integerIS5_EE7__valueEE6__typeELi0EEXsr3std12__is_integerIS8_EE7__valueEE6__typeES2_S5_(double noundef %138, i32 noundef 2)
  %147 = call noundef double @_ZSt3powIdiEN9__gnu_cxx9__promoteIDTplcvNS1_IT_Xsr3std12__is_integerIS2_EE7__valueEE6__typeELi0EcvNS1_IT0_Xsr3std12__is_integerIS5_EE7__valueEE6__typeELi0EEXsr3std12__is_integerIS8_EE7__valueEE6__typeES2_S5_(double noundef %141, i32 noundef 2)
  %148 = fadd double %146, %147
  %149 = call double @llvm.fmuladd.f64(double %148, double -5.000000e-01, double %144)
  %150 = fmul double %145, %149
  %151 = call double @sqrt(double noundef %150) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %9) #7
  %152 = insertelement <2 x double> poison, double %141, i64 0
  %153 = insertelement <2 x double> %152, double %42, i64 1
  %154 = insertelement <2 x double> poison, double %151, i64 0
  %155 = insertelement <2 x double> %154, double %116, i64 1
  %156 = fsub <2 x double> %153, %155
  store <2 x double> %156, ptr %9, align 16, !tbaa !29
  %157 = invoke noundef double @_ZSt3minIdET_St16initializer_listIS0_E(ptr nonnull %9, i64 2)
          to label %158 unwind label %215

158:                                              ; preds = %133
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %9) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %10) #7
  %159 = insertelement <2 x double> %152, double %47, i64 1
  %160 = insertelement <2 x double> %154, double %122, i64 1
  %161 = fadd <2 x double> %159, %160
  store <2 x double> %161, ptr %10, align 16, !tbaa !29
  %162 = invoke noundef double @_ZSt3maxIdET_St16initializer_listIS0_E(ptr nonnull %10, i64 2)
          to label %163 unwind label %217

163:                                              ; preds = %158
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %10) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %11) #7
  %164 = call double @llvm.fabs.f64(double %157)
  store double %164, ptr %11, align 8, !tbaa !29
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %12) #7
  %165 = call double @llvm.fabs.f64(double %162)
  store double %165, ptr %12, align 8, !tbaa !29
  %166 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxIdERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %11, ptr noundef nonnull align 8 dereferenceable(8) %12)
  %167 = load double, ptr %166, align 8, !tbaa !29
  call void @_ZN13RiemannSolver13toMaxVelocityEd(ptr noundef nonnull align 8 dereferenceable(88) %0, double noundef %167)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #7
  %168 = fsub double %73, %69
  %169 = call noundef double @_ZSt3powIdiEN9__gnu_cxx9__promoteIDTplcvNS1_IT_Xsr3std12__is_integerIS2_EE7__valueEE6__typeELi0EcvNS1_IT0_Xsr3std12__is_integerIS5_EE7__valueEE6__typeELi0EEXsr3std12__is_integerIS8_EE7__valueEE6__typeES2_S5_(double noundef %128, i32 noundef 2)
  %170 = fmul double %42, %169
  %171 = fsub double %157, %42
  %172 = call double @llvm.fmuladd.f64(double %170, double %171, double %168)
  %173 = call noundef double @_ZSt3powIdiEN9__gnu_cxx9__promoteIDTplcvNS1_IT_Xsr3std12__is_integerIS2_EE7__valueEE6__typeELi0EcvNS1_IT0_Xsr3std12__is_integerIS5_EE7__valueEE6__typeELi0EEXsr3std12__is_integerIS8_EE7__valueEE6__typeES2_S5_(double noundef %134, i32 noundef 2)
  %174 = fsub double %162, %47
  %175 = fneg double %173
  %176 = fmul double %47, %175
  %177 = call double @llvm.fmuladd.f64(double %176, double %174, double %172)
  %178 = call noundef double @_ZSt3powIdiEN9__gnu_cxx9__promoteIDTplcvNS1_IT_Xsr3std12__is_integerIS2_EE7__valueEE6__typeELi0EcvNS1_IT0_Xsr3std12__is_integerIS5_EE7__valueEE6__typeELi0EEXsr3std12__is_integerIS8_EE7__valueEE6__typeES2_S5_(double noundef %128, i32 noundef 2)
  %179 = call noundef double @_ZSt3powIdiEN9__gnu_cxx9__promoteIDTplcvNS1_IT_Xsr3std12__is_integerIS2_EE7__valueEE6__typeELi0EcvNS1_IT0_Xsr3std12__is_integerIS5_EE7__valueEE6__typeELi0EEXsr3std12__is_integerIS8_EE7__valueEE6__typeES2_S5_(double noundef %134, i32 noundef 2)
  %180 = fneg double %179
  %181 = fmul double %174, %180
  %182 = call double @llvm.fmuladd.f64(double %178, double %171, double %181)
  %183 = fdiv double %177, %182
  %184 = call noundef double @_ZSt3powIdiEN9__gnu_cxx9__promoteIDTplcvNS1_IT_Xsr3std12__is_integerIS2_EE7__valueEE6__typeELi0EcvNS1_IT0_Xsr3std12__is_integerIS5_EE7__valueEE6__typeELi0EEXsr3std12__is_integerIS8_EE7__valueEE6__typeES2_S5_(double noundef %128, i32 noundef 2)
  %185 = fsub double %157, %183
  %186 = fdiv double %171, %185
  %187 = fmul double %184, %186
  %188 = call noundef double @_ZSt3powIdiEN9__gnu_cxx9__promoteIDTplcvNS1_IT_Xsr3std12__is_integerIS2_EE7__valueEE6__typeELi0EcvNS1_IT0_Xsr3std12__is_integerIS5_EE7__valueEE6__typeELi0EEXsr3std12__is_integerIS8_EE7__valueEE6__typeES2_S5_(double noundef %134, i32 noundef 2)
  %189 = fsub double %162, %183
  %190 = fdiv double %174, %189
  %191 = fmul double %188, %190
  %192 = load i64, ptr %17, align 8, !tbaa !30
  %.not240 = icmp eq i64 %192, 0
  br i1 %.not240, label %._crit_edge, label %.lr.ph

._crit_edge:                                      ; preds = %.lr.ph, %163
  %193 = fmul double %42, %187
  %194 = load i64, ptr %18, align 8, !tbaa !31
  %195 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef %194) #7
  store double %193, ptr %195, align 8, !tbaa !29
  %196 = fmul double %47, %191
  %197 = load i64, ptr %18, align 8, !tbaa !31
  %198 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %7, i64 noundef %197) #7
  store double %196, ptr %198, align 8, !tbaa !29
  %199 = fmul double %183, %187
  %200 = load i64, ptr %19, align 8, !tbaa !32
  %201 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef %200) #7
  store double %199, ptr %201, align 8, !tbaa !29
  %202 = fmul double %183, %191
  %203 = load i64, ptr %19, align 8, !tbaa !32
  %204 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %7, i64 noundef %203) #7
  store double %202, ptr %204, align 8, !tbaa !29
  %205 = load ptr, ptr %1, align 8, !tbaa !25
  %206 = getelementptr inbounds i8, ptr %205, i64 8
  %207 = load ptr, ptr %206, align 8
  %208 = invoke noundef double %207(ptr noundef nonnull align 8 dereferenceable(296) %1, i64 noundef %indvars.iv)
          to label %226 unwind label %219

209:                                              ; preds = %24
  %210 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIdED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %6) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %6) #7
  br label %318

211:                                              ; preds = %26
  %212 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIdED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %8) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %8) #7
  br label %317

213:                                              ; preds = %127, %108, %103, %97, %90, %85, %79, %74, %70, %66, %61, %48, %43, %38, %33, %28
  %214 = landingpad { ptr, i32 }
          cleanup
  br label %316

215:                                              ; preds = %133
  %216 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %9) #7
  br label %316

217:                                              ; preds = %158
  %218 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %10) #7
  br label %316

219:                                              ; preds = %226, %._crit_edge
  %220 = landingpad { ptr, i32 }
          cleanup
  br label %316

.lr.ph:                                           ; preds = %163, %.lr.ph
  %.0207227 = phi i64 [ %223, %.lr.ph ], [ 0, %163 ]
  %221 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef %.0207227) #7
  store double %187, ptr %221, align 8, !tbaa !29
  %222 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %7, i64 noundef %.0207227) #7
  store double %191, ptr %222, align 8, !tbaa !29
  %223 = add nuw i64 %.0207227, 1
  %224 = load i64, ptr %17, align 8, !tbaa !30
  %225 = icmp ult i64 %223, %224
  br i1 %225, label %.lr.ph, label %._crit_edge, !llvm.loop !33

226:                                              ; preds = %._crit_edge
  %227 = fsub double %183, %42
  %228 = fmul double %171, %208
  %229 = fdiv double %69, %228
  %230 = fadd double %183, %229
  %231 = call double @llvm.fmuladd.f64(double %227, double %230, double %60)
  %232 = fmul double %187, %231
  %233 = load i64, ptr %20, align 8, !tbaa !35
  %234 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef %233) #7
  store double %232, ptr %234, align 8, !tbaa !29
  %235 = load ptr, ptr %1, align 8, !tbaa !25
  %236 = getelementptr inbounds i8, ptr %235, i64 8
  %237 = load ptr, ptr %236, align 8
  %238 = invoke noundef double %237(ptr noundef nonnull align 8 dereferenceable(296) %1, i64 noundef %indvars.iv.next)
          to label %239 unwind label %219

239:                                              ; preds = %226
  %240 = fsub double %183, %47
  %241 = fmul double %174, %238
  %242 = fdiv double %73, %241
  %243 = fadd double %183, %242
  %244 = call double @llvm.fmuladd.f64(double %240, double %243, double %65)
  %245 = fmul double %191, %244
  %246 = load i64, ptr %20, align 8, !tbaa !35
  %247 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %7, i64 noundef %246) #7
  store double %245, ptr %247, align 8, !tbaa !29
  %248 = fcmp ult double %157, 0.000000e+00
  br i1 %248, label %259, label %.preheader225

.preheader225:                                    ; preds = %239
  %249 = load i64, ptr %15, align 8, !tbaa !24
  %.not241 = icmp eq i64 %249, 0
  br i1 %.not241, label %.loopexit, label %.lr.ph229.preheader

.lr.ph229.preheader:                              ; preds = %.preheader225
  %250 = trunc nuw nsw i64 %indvars.iv to i32
  br label %.lr.ph229

.lr.ph229:                                        ; preds = %.lr.ph229.preheader, %.lr.ph229
  %.0206228 = phi i64 [ %256, %.lr.ph229 ], [ 0, %.lr.ph229.preheader ]
  %251 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorI6MatrixSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %21, i64 noundef %.0206228) #7
  %252 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixixEi(ptr noundef nonnull align 8 dereferenceable(24) %251, i32 noundef %250)
  %253 = load double, ptr %252, align 8, !tbaa !29
  %254 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorI6MatrixSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %22, i64 noundef %.0206228) #7
  %255 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixixEi(ptr noundef nonnull align 8 dereferenceable(24) %254, i32 noundef %250)
  store double %253, ptr %255, align 8, !tbaa !29
  %256 = add nuw i64 %.0206228, 1
  %257 = load i64, ptr %15, align 8, !tbaa !24
  %258 = icmp ult i64 %256, %257
  br i1 %258, label %.lr.ph229, label %.loopexit, !llvm.loop !36

259:                                              ; preds = %239
  %260 = fcmp ugt double %162, 0.000000e+00
  br i1 %260, label %272, label %.preheader223

.preheader223:                                    ; preds = %259
  %261 = load i64, ptr %15, align 8, !tbaa !24
  %.not242 = icmp eq i64 %261, 0
  br i1 %.not242, label %.loopexit, label %.lr.ph231.preheader

.lr.ph231.preheader:                              ; preds = %.preheader223
  %262 = trunc nuw i64 %indvars.iv.next to i32
  %263 = trunc nuw nsw i64 %indvars.iv to i32
  br label %.lr.ph231

.lr.ph231:                                        ; preds = %.lr.ph231.preheader, %.lr.ph231
  %.0205230 = phi i64 [ %269, %.lr.ph231 ], [ 0, %.lr.ph231.preheader ]
  %264 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorI6MatrixSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %21, i64 noundef %.0205230) #7
  %265 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixixEi(ptr noundef nonnull align 8 dereferenceable(24) %264, i32 noundef %262)
  %266 = load double, ptr %265, align 8, !tbaa !29
  %267 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorI6MatrixSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %22, i64 noundef %.0205230) #7
  %268 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixixEi(ptr noundef nonnull align 8 dereferenceable(24) %267, i32 noundef %263)
  store double %266, ptr %268, align 8, !tbaa !29
  %269 = add nuw i64 %.0205230, 1
  %270 = load i64, ptr %15, align 8, !tbaa !24
  %271 = icmp ult i64 %269, %270
  br i1 %271, label %.lr.ph231, label %.loopexit, !llvm.loop !37

272:                                              ; preds = %259
  %273 = fcmp ole double %183, 0.000000e+00
  %274 = fcmp oge double %162, 0.000000e+00
  %or.cond = and i1 %274, %273
  br i1 %or.cond, label %.preheader, label %293

.preheader:                                       ; preds = %272
  %275 = load i64, ptr %15, align 8, !tbaa !24
  %.not244 = icmp eq i64 %275, 0
  br i1 %.not244, label %.loopexit, label %.lr.ph235.preheader

.lr.ph235.preheader:                              ; preds = %.preheader
  %276 = trunc nuw i64 %indvars.iv.next to i32
  %277 = trunc nuw nsw i64 %indvars.iv to i32
  br label %.lr.ph235

.lr.ph235:                                        ; preds = %.lr.ph235.preheader, %.lr.ph235
  %.0204234 = phi i64 [ %290, %.lr.ph235 ], [ 0, %.lr.ph235.preheader ]
  %278 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorI6MatrixSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %21, i64 noundef %.0204234) #7
  %279 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixixEi(ptr noundef nonnull align 8 dereferenceable(24) %278, i32 noundef %276)
  %280 = load double, ptr %279, align 8, !tbaa !29
  %281 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %7, i64 noundef %.0204234) #7
  %282 = load double, ptr %281, align 8, !tbaa !29
  %283 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorI6MatrixSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %23, i64 noundef %.0204234) #7
  %284 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixixEi(ptr noundef nonnull align 8 dereferenceable(24) %283, i32 noundef %276)
  %285 = load double, ptr %284, align 8, !tbaa !29
  %286 = fsub double %282, %285
  %287 = call double @llvm.fmuladd.f64(double %183, double %286, double %280)
  %288 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorI6MatrixSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %22, i64 noundef %.0204234) #7
  %289 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixixEi(ptr noundef nonnull align 8 dereferenceable(24) %288, i32 noundef %277)
  store double %287, ptr %289, align 8, !tbaa !29
  %290 = add nuw i64 %.0204234, 1
  %291 = load i64, ptr %15, align 8, !tbaa !24
  %292 = icmp ult i64 %290, %291
  br i1 %292, label %.lr.ph235, label %.loopexit, !llvm.loop !38

293:                                              ; preds = %272
  %294 = fcmp ole double %157, 0.000000e+00
  %295 = fcmp oge double %183, 0.000000e+00
  %or.cond3 = and i1 %294, %295
  br i1 %or.cond3, label %.preheader221, label %.loopexit

.preheader221:                                    ; preds = %293
  %296 = load i64, ptr %15, align 8, !tbaa !24
  %.not243 = icmp eq i64 %296, 0
  br i1 %.not243, label %.loopexit, label %.lr.ph233.preheader

.lr.ph233.preheader:                              ; preds = %.preheader221
  %297 = trunc nuw nsw i64 %indvars.iv to i32
  br label %.lr.ph233

.lr.ph233:                                        ; preds = %.lr.ph233.preheader, %.lr.ph233
  %.0232 = phi i64 [ %310, %.lr.ph233 ], [ 0, %.lr.ph233.preheader ]
  %298 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorI6MatrixSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %21, i64 noundef %.0232) #7
  %299 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixixEi(ptr noundef nonnull align 8 dereferenceable(24) %298, i32 noundef %297)
  %300 = load double, ptr %299, align 8, !tbaa !29
  %301 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef %.0232) #7
  %302 = load double, ptr %301, align 8, !tbaa !29
  %303 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorI6MatrixSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %23, i64 noundef %.0232) #7
  %304 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixixEi(ptr noundef nonnull align 8 dereferenceable(24) %303, i32 noundef %297)
  %305 = load double, ptr %304, align 8, !tbaa !29
  %306 = fsub double %302, %305
  %307 = call double @llvm.fmuladd.f64(double %183, double %306, double %300)
  %308 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorI6MatrixSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %22, i64 noundef %.0232) #7
  %309 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixixEi(ptr noundef nonnull align 8 dereferenceable(24) %308, i32 noundef %297)
  store double %307, ptr %309, align 8, !tbaa !29
  %310 = add nuw i64 %.0232, 1
  %311 = load i64, ptr %15, align 8, !tbaa !24
  %312 = icmp ult i64 %310, %311
  br i1 %312, label %.lr.ph233, label %.loopexit, !llvm.loop !39

.loopexit:                                        ; preds = %.lr.ph229, %.lr.ph231, %.lr.ph233, %.lr.ph235, %.preheader225, %.preheader223, %.preheader221, %.preheader, %293
  call void @_ZNSt6vectorIdSaIdEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %7) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %7) #7
  call void @_ZNSt6vectorIdSaIdEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %5) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %5) #7
  %313 = load i64, ptr %13, align 8, !tbaa !5
  %314 = add i64 %313, -1
  %315 = icmp ugt i64 %314, %indvars.iv.next
  br i1 %315, label %24, label %._crit_edge239, !llvm.loop !40

316:                                              ; preds = %219, %217, %215, %213
  %.pn = phi { ptr, i32 } [ %220, %219 ], [ %218, %217 ], [ %216, %215 ], [ %214, %213 ]
  call void @_ZNSt6vectorIdSaIdEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %7) #7
  br label %317

317:                                              ; preds = %316, %211
  %.pn.pn = phi { ptr, i32 } [ %.pn, %316 ], [ %212, %211 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %7) #7
  call void @_ZNSt6vectorIdSaIdEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %5) #7
  br label %318

318:                                              ; preds = %317, %209
  %.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn, %317 ], [ %210, %209 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %5) #7
  resume { ptr, i32 } %.pn.pn.pn
}

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef double @_ZSt3minIdET_St16initializer_listIS0_E(ptr, i64) local_unnamed_addr #6

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef double @_ZSt3maxIdET_St16initializer_listIS0_E(ptr, i64) local_unnamed_addr #6

attributes #0 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
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 nofree nounwind willreturn memory(write) "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 = { 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 #5 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #6 = { 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 #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 = !{!6, !7, i64 48}
!25 = !{!26, !26, i64 0}
!26 = !{!"vtable pointer", !9, i64 0}
!27 = !{!28, !18, i64 40}
!28 = !{!"_ZTS13RiemannSolver", !18, i64 8, !17, i64 16}
!29 = !{!18, !18, i64 0}
!30 = !{!6, !7, i64 16}
!31 = !{!6, !7, i64 24}
!32 = !{!6, !7, i64 32}
!33 = distinct !{!33, !34}
!34 = !{!"llvm.loop.mustprogress"}
!35 = !{!6, !7, i64 40}
!36 = distinct !{!36, !34}
!37 = distinct !{!37, !34}
!38 = distinct !{!38, !34}
!39 = distinct !{!39, !34}
!40 = distinct !{!40, !34}


; Effective O3 passes: CorrelatedValuePropagationPass,EarlyCSEPass,GVNPass,GlobalOptPass,IndVarSimplifyPass,InferAlignmentPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,LICMPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,ReassociatePass,SLPVectorizerPass,SROAPass,SimplifyCFGPass,TailCallElimPass