; LLVM IR from InsightSoftwareConsortium/ITK :: Modules/ThirdParty/VNL/src/vxl/v3p/netlib/linalg (lsmrBase)

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

%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<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" = type { i8 }
%class.lsmrBase = type { ptr, double, double, double, double, double, double, double, double, double, double, double, double, i8, i32, i32, i32, i32, i32, ptr }

@.str = external hidden unnamed_addr constant [54 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [61 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [92 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [91 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [3 x i8], align 1

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef double @_ZSt3absd(double noundef) #3

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNK8lsmrBase5ScaleEjdPd(ptr noundef nonnull align 8 dereferenceable(136), i32 noundef, double noundef, ptr noundef) #5 align 2

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN8lsmrBase5SolveEjjPKdPd(ptr noundef nonnull align 8 dereferenceable(136) %0, i32 noundef %1, i32 noundef %2, ptr noundef %3, ptr noundef %4) #1 align 2 personality ptr @__gxx_personality_v0 {
  %6 = alloca ptr, align 8
  %7 = alloca i32, align 4
  %8 = alloca i32, align 4
  %9 = alloca ptr, align 8
  %10 = alloca ptr, align 8
  %11 = alloca double, align 8
  %12 = alloca double, align 8
  %13 = alloca double, align 8
  %14 = alloca double, align 8
  %15 = alloca i32, align 4
  %16 = alloca i32, align 4
  %17 = alloca i32, align 4
  %18 = alloca %"class.std::vector", align 8
  %19 = alloca %"class.std::allocator", align 1
  %20 = alloca ptr, align 8
  %21 = alloca i32, align 4
  %22 = alloca ptr, align 8
  %23 = alloca ptr, align 8
  %24 = alloca ptr, align 8
  %25 = alloca ptr, align 8
  %26 = alloca ptr, align 8
  %27 = alloca ptr, align 8
  %28 = alloca double, align 8
  %29 = alloca double, align 8
  %30 = alloca i32, align 4
  %31 = alloca i8, align 1
  %32 = alloca i8, align 1
  %33 = alloca i32, align 4
  %34 = alloca double, align 8
  %35 = alloca double, align 8
  %36 = alloca double, align 8
  %37 = alloca double, align 8
  %38 = alloca double, align 8
  %39 = alloca double, align 8
  %40 = alloca double, align 8
  %41 = alloca double, align 8
  %42 = alloca double, align 8
  %43 = alloca double, align 8
  %44 = alloca double, align 8
  %45 = alloca 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 double, align 8
  %51 = alloca i32, align 4
  %52 = alloca i32, align 4
  %53 = alloca double, align 8
  %54 = alloca double, align 8
  %55 = alloca double, align 8
  %56 = alloca double, align 8
  %57 = alloca double, align 8
  %58 = alloca double, align 8
  %59 = alloca double, align 8
  %60 = alloca double, align 8
  %61 = alloca double, align 8
  %62 = alloca double, align 8
  %63 = alloca double, align 8
  %64 = alloca double, align 8
  %65 = alloca i32, align 4
  %66 = alloca double, align 8
  %67 = alloca double, align 8
  %68 = alloca double, align 8
  %69 = alloca double, align 8
  %70 = alloca double, align 8
  %71 = alloca double, align 8
  %72 = alloca double, align 8
  %73 = alloca double, align 8
  %74 = alloca double, align 8
  %75 = alloca double, align 8
  %76 = alloca double, align 8
  %77 = alloca i8, align 1
  store ptr %0, ptr %6, align 8, !tbaa !5
  store i32 %1, ptr %7, align 4, !tbaa !9
  store i32 %2, ptr %8, align 4, !tbaa !9
  store ptr %3, ptr %9, align 8, !tbaa !5
  store ptr %4, ptr %10, align 8, !tbaa !5
  %78 = load ptr, ptr %6, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #7
  store double 0.000000e+00, ptr %11, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #7
  store double 1.000000e+00, ptr %12, align 8, !tbaa !11
  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 4, ptr %15) #7
  %79 = getelementptr inbounds %class.lsmrBase, ptr %78, i32 0, i32 18
  %80 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3minIjERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %7, ptr noundef nonnull align 4 dereferenceable(4) %8)
  %81 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3minIjERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %79, ptr noundef nonnull align 4 dereferenceable(4) %80)
  %82 = load i32, ptr %81, align 4, !tbaa !9
  store i32 %82, ptr %15, align 4, !tbaa !9
  %83 = getelementptr inbounds %class.lsmrBase, ptr %78, i32 0, i32 19
  %84 = load ptr, ptr %83, align 8, !tbaa !13
  %85 = icmp ne ptr %84, null
  br i1 %85, label %86, label %137

86:                                               ; preds = %5
  %87 = getelementptr inbounds %class.lsmrBase, ptr %78, i32 0, i32 19
  %88 = load ptr, ptr %87, align 8, !tbaa !13
  %89 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %88, ptr noundef @.str)
  %90 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %89, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  %91 = getelementptr inbounds %class.lsmrBase, ptr %78, i32 0, i32 19
  %92 = load ptr, ptr %91, align 8, !tbaa !13
  %93 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %92, ptr noundef @.str.1)
  %94 = load i32, ptr %7, align 4, !tbaa !9
  %95 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %93, i32 noundef %94)
  %96 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %95, ptr noundef @.str.2)
  %97 = load i32, ptr %8, align 4, !tbaa !9
  %98 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %96, i32 noundef %97)
  %99 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %98, ptr noundef @.str.3)
  %100 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %99, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  %101 = getelementptr inbounds %class.lsmrBase, ptr %78, i32 0, i32 19
  %102 = load ptr, ptr %101, align 8, !tbaa !13
  %103 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %102, ptr noundef @.str.4)
  %104 = getelementptr inbounds %class.lsmrBase, ptr %78, i32 0, i32 12
  %105 = load double, ptr %104, align 8, !tbaa !16
  %106 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %103, double noundef %105)
  %107 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %106, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  %108 = getelementptr inbounds %class.lsmrBase, ptr %78, i32 0, i32 19
  %109 = load ptr, ptr %108, align 8, !tbaa !13
  %110 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %109, ptr noundef @.str.5)
  %111 = getelementptr inbounds %class.lsmrBase, ptr %78, i32 0, i32 8
  %112 = load double, ptr %111, align 8, !tbaa !17
  %113 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %110, double noundef %112)
  %114 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %113, ptr noundef @.str.6)
  %115 = getelementptr inbounds %class.lsmrBase, ptr %78, i32 0, i32 10
  %116 = load double, ptr %115, align 8, !tbaa !18
  %117 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %114, double noundef %116)
  %118 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %117, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  %119 = getelementptr inbounds %class.lsmrBase, ptr %78, i32 0, i32 19
  %120 = load ptr, ptr %119, align 8, !tbaa !13
  %121 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %120, ptr noundef @.str.7)
  %122 = getelementptr inbounds %class.lsmrBase, ptr %78, i32 0, i32 9
  %123 = load double, ptr %122, align 8, !tbaa !19
  %124 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %121, double noundef %123)
  %125 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %124, ptr noundef @.str.8)
  %126 = getelementptr inbounds %class.lsmrBase, ptr %78, i32 0, i32 14
  %127 = load i32, ptr %126, align 4, !tbaa !20
  %128 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %125, i32 noundef %127)
  %129 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %128, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  %130 = getelementptr inbounds %class.lsmrBase, ptr %78, i32 0, i32 19
  %131 = load ptr, ptr %130, align 8, !tbaa !13
  %132 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %131, ptr noundef @.str.9)
  %133 = getelementptr inbounds %class.lsmrBase, ptr %78, i32 0, i32 18
  %134 = load i32, ptr %133, align 4, !tbaa !21
  %135 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %132, i32 noundef %134)
  %136 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %135, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  br label %137

137:                                              ; preds = %86, %5
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #7
  store i32 20, ptr %16, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #7
  store i32 0, ptr %17, align 4, !tbaa !9
  %138 = getelementptr inbounds %class.lsmrBase, ptr %78, i32 0, i32 12
  %139 = load double, ptr %138, align 8, !tbaa !16
  %140 = fcmp ogt double %139, 0.000000e+00
  %141 = getelementptr inbounds %class.lsmrBase, ptr %78, i32 0, i32 13
  %142 = zext i1 %140 to i8
  store i8 %142, ptr %141, align 8, !tbaa !22
  call void @llvm.lifetime.start.p0(i64 24, ptr %18) #7
  %143 = load i32, ptr %7, align 4, !tbaa !9
  %144 = load i32, ptr %8, align 4, !tbaa !9
  %145 = mul i32 5, %144
  %146 = add i32 %143, %145
  %147 = load i32, ptr %8, align 4, !tbaa !9
  %148 = load i32, ptr %15, align 4, !tbaa !9
  %149 = mul i32 %147, %148
  %150 = add i32 %146, %149
  %151 = zext i32 %150 to i64
  call void @llvm.lifetime.start.p0(i64 1, ptr %19) #7
  call void @_ZNSaIdEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %19) #7
  invoke void @_ZNSt6vectorIdSaIdEEC2EmRKS0_(ptr noundef nonnull align 8 dereferenceable(24) %18, i64 noundef %151, ptr noundef nonnull align 1 dereferenceable(1) %19)
          to label %152 unwind label %235

152:                                              ; preds = %137
  call void @_ZNSt15__new_allocatorIdED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %19) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %19) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #7
  %153 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %18, i64 noundef 0) #7
  store ptr %153, ptr %22, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #7
  %154 = load ptr, ptr %22, align 8, !tbaa !5
  %155 = load i32, ptr %7, align 4, !tbaa !9
  %156 = zext i32 %155 to i64
  %157 = getelementptr inbounds double, ptr %154, i64 %156
  store ptr %157, ptr %23, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #7
  %158 = load ptr, ptr %23, align 8, !tbaa !5
  %159 = load i32, ptr %8, align 4, !tbaa !9
  %160 = zext i32 %159 to i64
  %161 = getelementptr inbounds double, ptr %158, i64 %160
  store ptr %161, ptr %24, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #7
  %162 = load ptr, ptr %24, align 8, !tbaa !5
  %163 = load i32, ptr %8, align 4, !tbaa !9
  %164 = zext i32 %163 to i64
  %165 = getelementptr inbounds double, ptr %162, i64 %164
  store ptr %165, ptr %25, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #7
  %166 = load ptr, ptr %25, align 8, !tbaa !5
  %167 = load i32, ptr %8, align 4, !tbaa !9
  %168 = zext i32 %167 to i64
  %169 = getelementptr inbounds double, ptr %166, i64 %168
  store ptr %169, ptr %26, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #7
  %170 = load ptr, ptr %26, align 8, !tbaa !5
  %171 = load i32, ptr %8, align 4, !tbaa !9
  %172 = zext i32 %171 to i64
  %173 = getelementptr inbounds double, ptr %170, i64 %172
  store ptr %173, ptr %27, align 8, !tbaa !5
  %174 = load ptr, ptr %9, align 8, !tbaa !5
  %175 = load ptr, ptr %9, align 8, !tbaa !5
  %176 = load i32, ptr %7, align 4, !tbaa !9
  %177 = zext i32 %176 to i64
  %178 = getelementptr inbounds double, ptr %175, i64 %177
  %179 = load ptr, ptr %22, align 8, !tbaa !5
  %180 = invoke noundef ptr @_ZSt4copyIPKdPdET0_T_S4_S3_(ptr noundef %174, ptr noundef %178, ptr noundef %179)
          to label %181 unwind label %239

181:                                              ; preds = %152
  %182 = load ptr, ptr %23, align 8, !tbaa !5
  %183 = load ptr, ptr %23, align 8, !tbaa !5
  %184 = load i32, ptr %8, align 4, !tbaa !9
  %185 = zext i32 %184 to i64
  %186 = getelementptr inbounds double, ptr %183, i64 %185
  invoke void @_ZSt4fillIPddEvT_S1_RKT0_(ptr noundef %182, ptr noundef %186, ptr noundef nonnull align 8 dereferenceable(8) %11)
          to label %187 unwind label %239

187:                                              ; preds = %181
  %188 = load ptr, ptr %24, align 8, !tbaa !5
  %189 = load ptr, ptr %23, align 8, !tbaa !5
  %190 = load i32, ptr %8, align 4, !tbaa !9
  %191 = zext i32 %190 to i64
  %192 = getelementptr inbounds double, ptr %189, i64 %191
  invoke void @_ZSt4fillIPddEvT_S1_RKT0_(ptr noundef %188, ptr noundef %192, ptr noundef nonnull align 8 dereferenceable(8) %11)
          to label %193 unwind label %239

193:                                              ; preds = %187
  %194 = load ptr, ptr %10, align 8, !tbaa !5
  %195 = load ptr, ptr %10, align 8, !tbaa !5
  %196 = load i32, ptr %8, align 4, !tbaa !9
  %197 = zext i32 %196 to i64
  %198 = getelementptr inbounds double, ptr %195, i64 %197
  invoke void @_ZSt4fillIPddEvT_S1_RKT0_(ptr noundef %194, ptr noundef %198, ptr noundef nonnull align 8 dereferenceable(8) %11)
          to label %199 unwind label %239

199:                                              ; preds = %193
  %200 = load i32, ptr %7, align 4, !tbaa !9
  %201 = load ptr, ptr %22, align 8, !tbaa !5
  call void @_ZNK8lsmrBase5ScaleEjdPd(ptr noundef nonnull align 8 dereferenceable(136) %78, i32 noundef %200, double noundef -1.000000e+00, ptr noundef %201)
  %202 = load i32, ptr %7, align 4, !tbaa !9
  %203 = load i32, ptr %8, align 4, !tbaa !9
  %204 = load ptr, ptr %10, align 8, !tbaa !5
  %205 = load ptr, ptr %22, align 8, !tbaa !5
  %206 = load ptr, ptr %78, align 8, !tbaa !23
  %207 = getelementptr inbounds ptr, ptr %206, i64 2
  %208 = load ptr, ptr %207, align 8
  invoke void %208(ptr noundef nonnull align 8 dereferenceable(136) %78, i32 noundef %202, i32 noundef %203, ptr noundef %204, ptr noundef %205)
          to label %209 unwind label %239

209:                                              ; preds = %199
  %210 = load i32, ptr %7, align 4, !tbaa !9
  %211 = load ptr, ptr %22, align 8, !tbaa !5
  call void @_ZNK8lsmrBase5ScaleEjdPd(ptr noundef nonnull align 8 dereferenceable(136) %78, i32 noundef %210, double noundef -1.000000e+00, ptr noundef %211)
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #7
  store double 0.000000e+00, ptr %28, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #7
  %212 = load i32, ptr %7, align 4, !tbaa !9
  %213 = load ptr, ptr %22, align 8, !tbaa !5
  %214 = invoke noundef double @_ZNK8lsmrBase5Dnrm2EjPKd(ptr noundef nonnull align 8 dereferenceable(136) %78, i32 noundef %212, ptr noundef %213)
          to label %215 unwind label %243

215:                                              ; preds = %209
  store double %214, ptr %29, align 8, !tbaa !11
  %216 = load double, ptr %29, align 8, !tbaa !11
  %217 = fcmp ogt double %216, 0.000000e+00
  br i1 %217, label %218, label %247

218:                                              ; preds = %215
  %219 = load i32, ptr %7, align 4, !tbaa !9
  %220 = load double, ptr %29, align 8, !tbaa !11
  %221 = fdiv double 1.000000e+00, %220
  %222 = load ptr, ptr %22, align 8, !tbaa !5
  call void @_ZNK8lsmrBase5ScaleEjdPd(ptr noundef nonnull align 8 dereferenceable(136) %78, i32 noundef %219, double noundef %221, ptr noundef %222)
  %223 = load i32, ptr %7, align 4, !tbaa !9
  %224 = load i32, ptr %8, align 4, !tbaa !9
  %225 = load ptr, ptr %23, align 8, !tbaa !5
  %226 = load ptr, ptr %22, align 8, !tbaa !5
  %227 = load ptr, ptr %78, align 8, !tbaa !23
  %228 = getelementptr inbounds ptr, ptr %227, i64 3
  %229 = load ptr, ptr %228, align 8
  invoke void %229(ptr noundef nonnull align 8 dereferenceable(136) %78, i32 noundef %223, i32 noundef %224, ptr noundef %225, ptr noundef %226)
          to label %230 unwind label %243

230:                                              ; preds = %218
  %231 = load i32, ptr %8, align 4, !tbaa !9
  %232 = load ptr, ptr %23, align 8, !tbaa !5
  %233 = invoke noundef double @_ZNK8lsmrBase5Dnrm2EjPKd(ptr noundef nonnull align 8 dereferenceable(136) %78, i32 noundef %231, ptr noundef %232)
          to label %234 unwind label %243

234:                                              ; preds = %230
  store double %233, ptr %28, align 8, !tbaa !11
  br label %247

235:                                              ; preds = %137
  %236 = landingpad { ptr, i32 }
          cleanup
  %237 = extractvalue { ptr, i32 } %236, 0
  store ptr %237, ptr %20, align 8
  %238 = extractvalue { ptr, i32 } %236, 1
  store i32 %238, ptr %21, align 4
  call void @_ZNSt15__new_allocatorIdED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %19) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %19) #7
  br label %1014

239:                                              ; preds = %199, %193, %187, %181, %152
  %240 = landingpad { ptr, i32 }
          cleanup
  %241 = extractvalue { ptr, i32 } %240, 0
  store ptr %241, ptr %20, align 8
  %242 = extractvalue { ptr, i32 } %240, 1
  store i32 %242, ptr %21, align 4
  br label %1013

243:                                              ; preds = %271, %250, %230, %218, %209
  %244 = landingpad { ptr, i32 }
          cleanup
  %245 = extractvalue { ptr, i32 } %244, 0
  store ptr %245, ptr %20, align 8
  %246 = extractvalue { ptr, i32 } %244, 1
  store i32 %246, ptr %21, align 4
  br label %1012

247:                                              ; preds = %234, %215
  %248 = load double, ptr %28, align 8, !tbaa !11
  %249 = fcmp ogt double %248, 0.000000e+00
  br i1 %249, label %250, label %263

250:                                              ; preds = %247
  %251 = load i32, ptr %8, align 4, !tbaa !9
  %252 = load double, ptr %28, align 8, !tbaa !11
  %253 = fdiv double 1.000000e+00, %252
  %254 = load ptr, ptr %23, align 8, !tbaa !5
  call void @_ZNK8lsmrBase5ScaleEjdPd(ptr noundef nonnull align 8 dereferenceable(136) %78, i32 noundef %251, double noundef %253, ptr noundef %254)
  %255 = load ptr, ptr %23, align 8, !tbaa !5
  %256 = load ptr, ptr %23, align 8, !tbaa !5
  %257 = load i32, ptr %8, align 4, !tbaa !9
  %258 = zext i32 %257 to i64
  %259 = getelementptr inbounds double, ptr %256, i64 %258
  %260 = load ptr, ptr %24, align 8, !tbaa !5
  %261 = invoke noundef ptr @_ZSt4copyIPdS0_ET0_T_S2_S1_(ptr noundef %255, ptr noundef %259, ptr noundef %260)
          to label %262 unwind label %243

262:                                              ; preds = %250
  br label %263

263:                                              ; preds = %262, %247
  %264 = load double, ptr %28, align 8, !tbaa !11
  %265 = load double, ptr %29, align 8, !tbaa !11
  %266 = fmul double %264, %265
  %267 = getelementptr inbounds %class.lsmrBase, ptr %78, i32 0, i32 5
  store double %266, ptr %267, align 8, !tbaa !25
  %268 = getelementptr inbounds %class.lsmrBase, ptr %78, i32 0, i32 5
  %269 = load double, ptr %268, align 8, !tbaa !25
  %270 = fcmp oeq double %269, 0.000000e+00
  br i1 %270, label %271, label %273

271:                                              ; preds = %263
  invoke void @_ZN8lsmrBase19TerminationPrintOutEv(ptr noundef nonnull align 8 dereferenceable(136) %78)
          to label %272 unwind label %243

272:                                              ; preds = %271
  store i32 1, ptr %30, align 4
  br label %1001

273:                                              ; preds = %263
  call void @llvm.lifetime.start.p0(i64 1, ptr %31) #7
  store i8 0, ptr %31, align 1, !tbaa !26
  call void @llvm.lifetime.start.p0(i64 1, ptr %32) #7
  store i8 0, ptr %32, align 1, !tbaa !26
  call void @llvm.lifetime.start.p0(i64 4, ptr %33) #7
  store i32 0, ptr %33, align 4, !tbaa !9
  %274 = load i32, ptr %15, align 4, !tbaa !9
  %275 = icmp ugt i32 %274, 0
  br i1 %275, label %276, label %289

276:                                              ; preds = %273
  store i8 1, ptr %31, align 1, !tbaa !26
  %277 = load ptr, ptr %23, align 8, !tbaa !5
  %278 = load ptr, ptr %23, align 8, !tbaa !5
  %279 = load i32, ptr %8, align 4, !tbaa !9
  %280 = zext i32 %279 to i64
  %281 = getelementptr inbounds double, ptr %278, i64 %280
  %282 = load ptr, ptr %27, align 8, !tbaa !5
  %283 = invoke noundef ptr @_ZSt4copyIPdS0_ET0_T_S2_S1_(ptr noundef %277, ptr noundef %281, ptr noundef %282)
          to label %284 unwind label %285

284:                                              ; preds = %276
  br label %289

285:                                              ; preds = %276
  %286 = landingpad { ptr, i32 }
          cleanup
  %287 = extractvalue { ptr, i32 } %286, 0
  store ptr %287, ptr %20, align 8
  %288 = extractvalue { ptr, i32 } %286, 1
  store i32 %288, ptr %21, align 4
  br label %1011

289:                                              ; preds = %284, %273
  %290 = getelementptr inbounds %class.lsmrBase, ptr %78, i32 0, i32 15
  store i32 0, ptr %290, align 8, !tbaa !27
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #7
  %291 = load double, ptr %28, align 8, !tbaa !11
  %292 = load double, ptr %29, align 8, !tbaa !11
  %293 = fmul double %291, %292
  store double %293, ptr %34, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #7
  %294 = load double, ptr %28, align 8, !tbaa !11
  store double %294, ptr %35, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #7
  store double 1.000000e+00, ptr %36, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #7
  store double 1.000000e+00, ptr %37, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #7
  store double 1.000000e+00, ptr %38, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #7
  store double 0.000000e+00, ptr %39, align 8, !tbaa !11
  %295 = load ptr, ptr %23, align 8, !tbaa !5
  %296 = load ptr, ptr %23, align 8, !tbaa !5
  %297 = load i32, ptr %8, align 4, !tbaa !9
  %298 = zext i32 %297 to i64
  %299 = getelementptr inbounds double, ptr %296, i64 %298
  %300 = load ptr, ptr %25, align 8, !tbaa !5
  %301 = invoke noundef ptr @_ZSt4copyIPdS0_ET0_T_S2_S1_(ptr noundef %295, ptr noundef %299, ptr noundef %300)
          to label %302 unwind label %323

302:                                              ; preds = %289
  %303 = load ptr, ptr %26, align 8, !tbaa !5
  %304 = load ptr, ptr %26, align 8, !tbaa !5
  %305 = load i32, ptr %8, align 4, !tbaa !9
  %306 = zext i32 %305 to i64
  %307 = getelementptr inbounds double, ptr %304, i64 %306
  invoke void @_ZSt4fillIPddEvT_S1_RKT0_(ptr noundef %303, ptr noundef %307, ptr noundef nonnull align 8 dereferenceable(8) %11)
          to label %308 unwind label %323

308:                                              ; preds = %302
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #7
  %309 = load double, ptr %29, align 8, !tbaa !11
  store double %309, ptr %40, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #7
  store double 0.000000e+00, ptr %41, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #7
  store double 1.000000e+00, ptr %42, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #7
  store double 0.000000e+00, ptr %43, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #7
  store double 0.000000e+00, ptr %44, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %45) #7
  store double 0.000000e+00, ptr %45, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #7
  store double 0.000000e+00, ptr %46, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %47) #7
  %310 = load double, ptr %28, align 8, !tbaa !11
  %311 = load double, ptr %28, align 8, !tbaa !11
  %312 = fmul double %310, %311
  store double %312, ptr %47, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %48) #7
  store double 0.000000e+00, ptr %48, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %49) #7
  store double 1.000000e+100, ptr %49, align 8, !tbaa !11
  %313 = load double, ptr %29, align 8, !tbaa !11
  %314 = getelementptr inbounds %class.lsmrBase, ptr %78, i32 0, i32 3
  store double %313, ptr %314, align 8, !tbaa !28
  %315 = getelementptr inbounds %class.lsmrBase, ptr %78, i32 0, i32 16
  store i32 0, ptr %315, align 4, !tbaa !29
  call void @llvm.lifetime.start.p0(i64 8, ptr %50) #7
  store double 0.000000e+00, ptr %50, align 8, !tbaa !11
  %316 = getelementptr inbounds %class.lsmrBase, ptr %78, i32 0, i32 10
  %317 = load double, ptr %316, align 8, !tbaa !18
  %318 = fcmp ogt double %317, 0.000000e+00
  br i1 %318, label %319, label %327

319:                                              ; preds = %308
  %320 = getelementptr inbounds %class.lsmrBase, ptr %78, i32 0, i32 10
  %321 = load double, ptr %320, align 8, !tbaa !18
  %322 = fdiv double 1.000000e+00, %321
  store double %322, ptr %50, align 8, !tbaa !11
  br label %327

323:                                              ; preds = %302, %289
  %324 = landingpad { ptr, i32 }
          cleanup
  %325 = extractvalue { ptr, i32 } %324, 0
  store ptr %325, ptr %20, align 8
  %326 = extractvalue { ptr, i32 } %324, 1
  store i32 %326, ptr %21, align 4
  br label %1010

327:                                              ; preds = %319, %308
  %328 = load double, ptr %29, align 8, !tbaa !11
  %329 = getelementptr inbounds %class.lsmrBase, ptr %78, i32 0, i32 4
  store double %328, ptr %329, align 8, !tbaa !30
  %330 = getelementptr inbounds %class.lsmrBase, ptr %78, i32 0, i32 19
  %331 = load ptr, ptr %330, align 8, !tbaa !13
  %332 = icmp ne ptr %331, null
  br i1 %332, label %333, label %392

333:                                              ; preds = %327
  %334 = getelementptr inbounds %class.lsmrBase, ptr %78, i32 0, i32 13
  %335 = load i8, ptr %334, align 8, !tbaa !22, !range !31, !noundef !32
  %336 = trunc i8 %335 to i1
  br i1 %336, label %337, label %346

337:                                              ; preds = %333
  %338 = getelementptr inbounds %class.lsmrBase, ptr %78, i32 0, i32 19
  %339 = load ptr, ptr %338, align 8, !tbaa !13
  %340 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %339, ptr noundef @.str.10)
          to label %341 unwind label %342

341:                                              ; preds = %337
  br label %351

342:                                              ; preds = %999, %508, %445, %431, %408, %393, %389, %386, %384, %381, %379, %375, %373, %369, %367, %362, %360, %351, %346, %337
  %343 = landingpad { ptr, i32 }
          cleanup
  %344 = extractvalue { ptr, i32 } %343, 0
  store ptr %344, ptr %20, align 8
  %345 = extractvalue { ptr, i32 } %343, 1
  store i32 %345, ptr %21, align 4
  br label %1009

346:                                              ; preds = %333
  %347 = getelementptr inbounds %class.lsmrBase, ptr %78, i32 0, i32 19
  %348 = load ptr, ptr %347, align 8, !tbaa !13
  %349 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %348, ptr noundef @.str.11)
          to label %350 unwind label %342

350:                                              ; preds = %346
  br label %351

351:                                              ; preds = %350, %341
  store double 1.000000e+00, ptr %13, align 8, !tbaa !11
  %352 = load double, ptr %28, align 8, !tbaa !11
  %353 = load double, ptr %29, align 8, !tbaa !11
  %354 = fdiv double %352, %353
  store double %354, ptr %14, align 8, !tbaa !11
  %355 = getelementptr inbounds %class.lsmrBase, ptr %78, i32 0, i32 19
  %356 = load ptr, ptr %355, align 8, !tbaa !13
  %357 = getelementptr inbounds %class.lsmrBase, ptr %78, i32 0, i32 15
  %358 = load i32, ptr %357, align 8, !tbaa !27
  %359 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %356, i32 noundef %358)
          to label %360 unwind label %342

360:                                              ; preds = %351
  %361 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %359, ptr noundef @.str.12)
          to label %362 unwind label %342

362:                                              ; preds = %360
  %363 = load ptr, ptr %10, align 8, !tbaa !5
  %364 = getelementptr inbounds double, ptr %363, i64 0
  %365 = load double, ptr %364, align 8, !tbaa !11
  %366 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %361, double noundef %365)
          to label %367 unwind label %342

367:                                              ; preds = %362
  %368 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %366, ptr noundef @.str.12)
          to label %369 unwind label %342

369:                                              ; preds = %367
  %370 = getelementptr inbounds %class.lsmrBase, ptr %78, i32 0, i32 4
  %371 = load double, ptr %370, align 8, !tbaa !30
  %372 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %368, double noundef %371)
          to label %373 unwind label %342

373:                                              ; preds = %369
  %374 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %372, ptr noundef @.str.12)
          to label %375 unwind label %342

375:                                              ; preds = %373
  %376 = getelementptr inbounds %class.lsmrBase, ptr %78, i32 0, i32 1
  %377 = load double, ptr %376, align 8, !tbaa !33
  %378 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %374, double noundef %377)
          to label %379 unwind label %342

379:                                              ; preds = %375
  %380 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %378, ptr noundef @.str.12)
          to label %381 unwind label %342

381:                                              ; preds = %379
  %382 = load double, ptr %13, align 8, !tbaa !11
  %383 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %380, double noundef %382)
          to label %384 unwind label %342

384:                                              ; preds = %381
  %385 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %383, ptr noundef @.str.12)
          to label %386 unwind label %342

386:                                              ; preds = %384
  %387 = load double, ptr %14, align 8, !tbaa !11
  %388 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %385, double noundef %387)
          to label %389 unwind label %342

389:                                              ; preds = %386
  %390 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %388, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %391 unwind label %342

391:                                              ; preds = %389
  br label %392

392:                                              ; preds = %391, %327
  br label %393

393:                                              ; preds = %995, %392
  %394 = getelementptr inbounds %class.lsmrBase, ptr %78, i32 0, i32 15
  %395 = load i32, ptr %394, align 8, !tbaa !27
  %396 = add i32 %395, 1
  store i32 %396, ptr %394, align 8, !tbaa !27
  %397 = load i32, ptr %7, align 4, !tbaa !9
  %398 = load double, ptr %28, align 8, !tbaa !11
  %399 = fneg double %398
  %400 = load ptr, ptr %22, align 8, !tbaa !5
  call void @_ZNK8lsmrBase5ScaleEjdPd(ptr noundef nonnull align 8 dereferenceable(136) %78, i32 noundef %397, double noundef %399, ptr noundef %400)
  %401 = load i32, ptr %7, align 4, !tbaa !9
  %402 = load i32, ptr %8, align 4, !tbaa !9
  %403 = load ptr, ptr %23, align 8, !tbaa !5
  %404 = load ptr, ptr %22, align 8, !tbaa !5
  %405 = load ptr, ptr %78, align 8, !tbaa !23
  %406 = getelementptr inbounds ptr, ptr %405, i64 2
  %407 = load ptr, ptr %406, align 8
  invoke void %407(ptr noundef nonnull align 8 dereferenceable(136) %78, i32 noundef %401, i32 noundef %402, ptr noundef %403, ptr noundef %404)
          to label %408 unwind label %342

408:                                              ; preds = %393
  %409 = load i32, ptr %7, align 4, !tbaa !9
  %410 = load ptr, ptr %22, align 8, !tbaa !5
  %411 = invoke noundef double @_ZNK8lsmrBase5Dnrm2EjPKd(ptr noundef nonnull align 8 dereferenceable(136) %78, i32 noundef %409, ptr noundef %410)
          to label %412 unwind label %342

412:                                              ; preds = %408
  store double %411, ptr %29, align 8, !tbaa !11
  %413 = load double, ptr %29, align 8, !tbaa !11
  %414 = fcmp ogt double %413, 0.000000e+00
  br i1 %414, label %415, label %521

415:                                              ; preds = %412
  %416 = load i32, ptr %7, align 4, !tbaa !9
  %417 = load double, ptr %29, align 8, !tbaa !11
  %418 = fdiv double 1.000000e+00, %417
  %419 = load ptr, ptr %22, align 8, !tbaa !5
  call void @_ZNK8lsmrBase5ScaleEjdPd(ptr noundef nonnull align 8 dereferenceable(136) %78, i32 noundef %416, double noundef %418, ptr noundef %419)
  %420 = load i8, ptr %31, align 1, !tbaa !26, !range !31, !noundef !32
  %421 = trunc i8 %420 to i1
  br i1 %421, label %422, label %445

422:                                              ; preds = %415
  %423 = load i32, ptr %33, align 4, !tbaa !9
  %424 = add i32 %423, 1
  %425 = load i32, ptr %15, align 4, !tbaa !9
  %426 = icmp ult i32 %424, %425
  br i1 %426, label %427, label %430

427:                                              ; preds = %422
  %428 = load i32, ptr %33, align 4, !tbaa !9
  %429 = add i32 %428, 1
  store i32 %429, ptr %33, align 4, !tbaa !9
  br label %431

430:                                              ; preds = %422
  store i32 0, ptr %33, align 4, !tbaa !9
  store i8 1, ptr %32, align 1, !tbaa !26
  br label %431

431:                                              ; preds = %430, %427
  %432 = load ptr, ptr %23, align 8, !tbaa !5
  %433 = load ptr, ptr %23, align 8, !tbaa !5
  %434 = load i32, ptr %8, align 4, !tbaa !9
  %435 = zext i32 %434 to i64
  %436 = getelementptr inbounds double, ptr %433, i64 %435
  %437 = load ptr, ptr %27, align 8, !tbaa !5
  %438 = load i32, ptr %33, align 4, !tbaa !9
  %439 = load i32, ptr %8, align 4, !tbaa !9
  %440 = mul i32 %438, %439
  %441 = zext i32 %440 to i64
  %442 = getelementptr inbounds double, ptr %437, i64 %441
  %443 = invoke noundef ptr @_ZSt4copyIPdS0_ET0_T_S2_S1_(ptr noundef %432, ptr noundef %436, ptr noundef %442)
          to label %444 unwind label %342

444:                                              ; preds = %431
  br label %445

445:                                              ; preds = %444, %415
  %446 = load i32, ptr %8, align 4, !tbaa !9
  %447 = load double, ptr %29, align 8, !tbaa !11
  %448 = fneg double %447
  %449 = load ptr, ptr %23, align 8, !tbaa !5
  call void @_ZNK8lsmrBase5ScaleEjdPd(ptr noundef nonnull align 8 dereferenceable(136) %78, i32 noundef %446, double noundef %448, ptr noundef %449)
  %450 = load i32, ptr %7, align 4, !tbaa !9
  %451 = load i32, ptr %8, align 4, !tbaa !9
  %452 = load ptr, ptr %23, align 8, !tbaa !5
  %453 = load ptr, ptr %22, align 8, !tbaa !5
  %454 = load ptr, ptr %78, align 8, !tbaa !23
  %455 = getelementptr inbounds ptr, ptr %454, i64 3
  %456 = load ptr, ptr %455, align 8
  invoke void %456(ptr noundef nonnull align 8 dereferenceable(136) %78, i32 noundef %450, i32 noundef %451, ptr noundef %452, ptr noundef %453)
          to label %457 unwind label %342

457:                                              ; preds = %445
  %458 = load i8, ptr %31, align 1, !tbaa !26, !range !31, !noundef !32
  %459 = trunc i8 %458 to i1
  br i1 %459, label %460, label %508

460:                                              ; preds = %457
  call void @llvm.lifetime.start.p0(i64 4, ptr %51) #7
  %461 = load i8, ptr %32, align 1, !tbaa !26, !range !31, !noundef !32
  %462 = trunc i8 %461 to i1
  br i1 %462, label %463, label %465

463:                                              ; preds = %460
  %464 = load i32, ptr %15, align 4, !tbaa !9
  br label %468

465:                                              ; preds = %460
  %466 = load i32, ptr %33, align 4, !tbaa !9
  %467 = add i32 %466, 1
  br label %468

468:                                              ; preds = %465, %463
  %469 = phi i32 [ %464, %463 ], [ %467, %465 ]
  store i32 %469, ptr %51, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %52) #7
  store i32 0, ptr %52, align 4, !tbaa !9
  br label %470

470:                                              ; preds = %500, %468
  %471 = load i32, ptr %52, align 4, !tbaa !9
  %472 = load i32, ptr %51, align 4, !tbaa !9
  %473 = icmp ult i32 %471, %472
  br i1 %473, label %475, label %474

474:                                              ; preds = %470
  store i32 4, ptr %30, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #7
  br label %507

475:                                              ; preds = %470
  call void @llvm.lifetime.start.p0(i64 8, ptr %53) #7
  %476 = load ptr, ptr %23, align 8, !tbaa !5
  %477 = load ptr, ptr %23, align 8, !tbaa !5
  %478 = load i32, ptr %8, align 4, !tbaa !9
  %479 = zext i32 %478 to i64
  %480 = getelementptr inbounds double, ptr %477, i64 %479
  %481 = load ptr, ptr %27, align 8, !tbaa !5
  %482 = load i32, ptr %8, align 4, !tbaa !9
  %483 = load i32, ptr %52, align 4, !tbaa !9
  %484 = mul i32 %482, %483
  %485 = zext i32 %484 to i64
  %486 = getelementptr inbounds double, ptr %481, i64 %485
  %487 = invoke noundef double @_ZSt13inner_productIPdS0_dET1_T_S2_T0_S1_(ptr noundef %476, ptr noundef %480, ptr noundef %486, double noundef 0.000000e+00)
          to label %488 unwind label %503

488:                                              ; preds = %475
  store double %487, ptr %53, align 8, !tbaa !11
  %489 = load i32, ptr %8, align 4, !tbaa !9
  %490 = load double, ptr %53, align 8, !tbaa !11
  %491 = fneg double %490
  %492 = load ptr, ptr %27, align 8, !tbaa !5
  %493 = load i32, ptr %52, align 4, !tbaa !9
  %494 = load i32, ptr %8, align 4, !tbaa !9
  %495 = mul i32 %493, %494
  %496 = zext i32 %495 to i64
  %497 = getelementptr inbounds double, ptr %492, i64 %496
  %498 = load ptr, ptr %23, align 8, !tbaa !5
  invoke void @_Z5daxpyjdPKdPd(i32 noundef %489, double noundef %491, ptr noundef %497, ptr noundef %498)
          to label %499 unwind label %503

499:                                              ; preds = %488
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #7
  br label %500

500:                                              ; preds = %499
  %501 = load i32, ptr %52, align 4, !tbaa !9
  %502 = add i32 %501, 1
  store i32 %502, ptr %52, align 4, !tbaa !9
  br label %470, !llvm.loop !34

503:                                              ; preds = %488, %475
  %504 = landingpad { ptr, i32 }
          cleanup
  %505 = extractvalue { ptr, i32 } %504, 0
  store ptr %505, ptr %20, align 8
  %506 = extractvalue { ptr, i32 } %504, 1
  store i32 %506, ptr %21, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #7
  br label %1009

507:                                              ; preds = %474
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #7
  br label %508

508:                                              ; preds = %507, %457
  %509 = load i32, ptr %8, align 4, !tbaa !9
  %510 = load ptr, ptr %23, align 8, !tbaa !5
  %511 = invoke noundef double @_ZNK8lsmrBase5Dnrm2EjPKd(ptr noundef nonnull align 8 dereferenceable(136) %78, i32 noundef %509, ptr noundef %510)
          to label %512 unwind label %342

512:                                              ; preds = %508
  store double %511, ptr %28, align 8, !tbaa !11
  %513 = load double, ptr %28, align 8, !tbaa !11
  %514 = fcmp ogt double %513, 0.000000e+00
  br i1 %514, label %515, label %520

515:                                              ; preds = %512
  %516 = load i32, ptr %8, align 4, !tbaa !9
  %517 = load double, ptr %28, align 8, !tbaa !11
  %518 = fdiv double 1.000000e+00, %517
  %519 = load ptr, ptr %23, align 8, !tbaa !5
  call void @_ZNK8lsmrBase5ScaleEjdPd(ptr noundef nonnull align 8 dereferenceable(136) %78, i32 noundef %516, double noundef %518, ptr noundef %519)
  br label %520

520:                                              ; preds = %515, %512
  br label %521

521:                                              ; preds = %520, %412
  call void @llvm.lifetime.start.p0(i64 8, ptr %54) #7
  %522 = load double, ptr %35, align 8, !tbaa !11
  %523 = getelementptr inbounds %class.lsmrBase, ptr %78, i32 0, i32 12
  %524 = load double, ptr %523, align 8, !tbaa !16
  %525 = invoke noundef double @_ZNK8lsmrBase6D2NormEdd(ptr noundef nonnull align 8 dereferenceable(136) %78, double noundef %522, double noundef %524)
          to label %526 unwind label %585

526:                                              ; preds = %521
  store double %525, ptr %54, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %55) #7
  %527 = load double, ptr %35, align 8, !tbaa !11
  %528 = load double, ptr %54, align 8, !tbaa !11
  %529 = fdiv double %527, %528
  store double %529, ptr %55, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %56) #7
  %530 = getelementptr inbounds %class.lsmrBase, ptr %78, i32 0, i32 12
  %531 = load double, ptr %530, align 8, !tbaa !16
  %532 = load double, ptr %54, align 8, !tbaa !11
  %533 = fdiv double %531, %532
  store double %533, ptr %56, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %57) #7
  %534 = load double, ptr %36, align 8, !tbaa !11
  store double %534, ptr %57, align 8, !tbaa !11
  %535 = load double, ptr %54, align 8, !tbaa !11
  %536 = load double, ptr %29, align 8, !tbaa !11
  %537 = invoke noundef double @_ZNK8lsmrBase6D2NormEdd(ptr noundef nonnull align 8 dereferenceable(136) %78, double noundef %535, double noundef %536)
          to label %538 unwind label %589

538:                                              ; preds = %526
  store double %537, ptr %36, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %58) #7
  %539 = load double, ptr %54, align 8, !tbaa !11
  %540 = load double, ptr %36, align 8, !tbaa !11
  %541 = fdiv double %539, %540
  store double %541, ptr %58, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %59) #7
  %542 = load double, ptr %29, align 8, !tbaa !11
  %543 = load double, ptr %36, align 8, !tbaa !11
  %544 = fdiv double %542, %543
  store double %544, ptr %59, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %60) #7
  %545 = load double, ptr %59, align 8, !tbaa !11
  %546 = load double, ptr %28, align 8, !tbaa !11
  %547 = fmul double %545, %546
  store double %547, ptr %60, align 8, !tbaa !11
  %548 = load double, ptr %58, align 8, !tbaa !11
  %549 = load double, ptr %28, align 8, !tbaa !11
  %550 = fmul double %548, %549
  store double %550, ptr %35, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %61) #7
  %551 = load double, ptr %37, align 8, !tbaa !11
  store double %551, ptr %61, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %62) #7
  %552 = load double, ptr %45, align 8, !tbaa !11
  store double %552, ptr %62, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %63) #7
  %553 = load double, ptr %39, align 8, !tbaa !11
  %554 = load double, ptr %36, align 8, !tbaa !11
  %555 = fmul double %553, %554
  store double %555, ptr %63, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %64) #7
  %556 = load double, ptr %38, align 8, !tbaa !11
  %557 = load double, ptr %36, align 8, !tbaa !11
  %558 = fmul double %556, %557
  store double %558, ptr %64, align 8, !tbaa !11
  %559 = load double, ptr %38, align 8, !tbaa !11
  %560 = load double, ptr %36, align 8, !tbaa !11
  %561 = fmul double %559, %560
  %562 = load double, ptr %60, align 8, !tbaa !11
  %563 = invoke noundef double @_ZNK8lsmrBase6D2NormEdd(ptr noundef nonnull align 8 dereferenceable(136) %78, double noundef %561, double noundef %562)
          to label %564 unwind label %593

564:                                              ; preds = %538
  store double %563, ptr %37, align 8, !tbaa !11
  %565 = load double, ptr %38, align 8, !tbaa !11
  %566 = load double, ptr %36, align 8, !tbaa !11
  %567 = fmul double %565, %566
  %568 = load double, ptr %37, align 8, !tbaa !11
  %569 = fdiv double %567, %568
  store double %569, ptr %38, align 8, !tbaa !11
  %570 = load double, ptr %60, align 8, !tbaa !11
  %571 = load double, ptr %37, align 8, !tbaa !11
  %572 = fdiv double %570, %571
  store double %572, ptr %39, align 8, !tbaa !11
  %573 = load double, ptr %38, align 8, !tbaa !11
  %574 = load double, ptr %34, align 8, !tbaa !11
  %575 = fmul double %573, %574
  store double %575, ptr %45, align 8, !tbaa !11
  %576 = load double, ptr %39, align 8, !tbaa !11
  %577 = fneg double %576
  %578 = load double, ptr %34, align 8, !tbaa !11
  %579 = fmul double %577, %578
  store double %579, ptr %34, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %65) #7
  store i32 0, ptr %65, align 4, !tbaa !9
  br label %580

580:                                              ; preds = %660, %564
  %581 = load i32, ptr %65, align 4, !tbaa !9
  %582 = load i32, ptr %8, align 4, !tbaa !9
  %583 = icmp ult i32 %581, %582
  br i1 %583, label %597, label %584

584:                                              ; preds = %580
  store i32 7, ptr %30, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %65) #7
  br label %663

585:                                              ; preds = %521
  %586 = landingpad { ptr, i32 }
          cleanup
  %587 = extractvalue { ptr, i32 } %586, 0
  store ptr %587, ptr %20, align 8
  %588 = extractvalue { ptr, i32 } %586, 1
  store i32 %588, ptr %21, align 4
  br label %1008

589:                                              ; preds = %526
  %590 = landingpad { ptr, i32 }
          cleanup
  %591 = extractvalue { ptr, i32 } %590, 0
  store ptr %591, ptr %20, align 8
  %592 = extractvalue { ptr, i32 } %590, 1
  store i32 %592, ptr %21, align 4
  br label %1007

593:                                              ; preds = %538
  %594 = landingpad { ptr, i32 }
          cleanup
  %595 = extractvalue { ptr, i32 } %594, 0
  store ptr %595, ptr %20, align 8
  %596 = extractvalue { ptr, i32 } %594, 1
  store i32 %596, ptr %21, align 4
  br label %1006

597:                                              ; preds = %580
  %598 = load ptr, ptr %25, align 8, !tbaa !5
  %599 = load i32, ptr %65, align 4, !tbaa !9
  %600 = zext i32 %599 to i64
  %601 = getelementptr inbounds double, ptr %598, i64 %600
  %602 = load double, ptr %601, align 8, !tbaa !11
  %603 = load double, ptr %63, align 8, !tbaa !11
  %604 = load double, ptr %36, align 8, !tbaa !11
  %605 = fmul double %603, %604
  %606 = load double, ptr %57, align 8, !tbaa !11
  %607 = load double, ptr %61, align 8, !tbaa !11
  %608 = fmul double %606, %607
  %609 = fdiv double %605, %608
  %610 = load ptr, ptr %26, align 8, !tbaa !5
  %611 = load i32, ptr %65, align 4, !tbaa !9
  %612 = zext i32 %611 to i64
  %613 = getelementptr inbounds double, ptr %610, i64 %612
  %614 = load double, ptr %613, align 8, !tbaa !11
  %615 = fneg double %609
  %616 = call double @llvm.fmuladd.f64(double %615, double %614, double %602)
  %617 = load ptr, ptr %26, align 8, !tbaa !5
  %618 = load i32, ptr %65, align 4, !tbaa !9
  %619 = zext i32 %618 to i64
  %620 = getelementptr inbounds double, ptr %617, i64 %619
  store double %616, ptr %620, align 8, !tbaa !11
  %621 = load ptr, ptr %10, align 8, !tbaa !5
  %622 = load i32, ptr %65, align 4, !tbaa !9
  %623 = zext i32 %622 to i64
  %624 = getelementptr inbounds double, ptr %621, i64 %623
  %625 = load double, ptr %624, align 8, !tbaa !11
  %626 = load double, ptr %45, align 8, !tbaa !11
  %627 = load double, ptr %36, align 8, !tbaa !11
  %628 = load double, ptr %37, align 8, !tbaa !11
  %629 = fmul double %627, %628
  %630 = fdiv double %626, %629
  %631 = load ptr, ptr %26, align 8, !tbaa !5
  %632 = load i32, ptr %65, align 4, !tbaa !9
  %633 = zext i32 %632 to i64
  %634 = getelementptr inbounds double, ptr %631, i64 %633
  %635 = load double, ptr %634, align 8, !tbaa !11
  %636 = call double @llvm.fmuladd.f64(double %630, double %635, double %625)
  %637 = load ptr, ptr %10, align 8, !tbaa !5
  %638 = load i32, ptr %65, align 4, !tbaa !9
  %639 = zext i32 %638 to i64
  %640 = getelementptr inbounds double, ptr %637, i64 %639
  store double %636, ptr %640, align 8, !tbaa !11
  %641 = load ptr, ptr %23, align 8, !tbaa !5
  %642 = load i32, ptr %65, align 4, !tbaa !9
  %643 = zext i32 %642 to i64
  %644 = getelementptr inbounds double, ptr %641, i64 %643
  %645 = load double, ptr %644, align 8, !tbaa !11
  %646 = load double, ptr %60, align 8, !tbaa !11
  %647 = load double, ptr %36, align 8, !tbaa !11
  %648 = fdiv double %646, %647
  %649 = load ptr, ptr %25, align 8, !tbaa !5
  %650 = load i32, ptr %65, align 4, !tbaa !9
  %651 = zext i32 %650 to i64
  %652 = getelementptr inbounds double, ptr %649, i64 %651
  %653 = load double, ptr %652, align 8, !tbaa !11
  %654 = fneg double %648
  %655 = call double @llvm.fmuladd.f64(double %654, double %653, double %645)
  %656 = load ptr, ptr %25, align 8, !tbaa !5
  %657 = load i32, ptr %65, align 4, !tbaa !9
  %658 = zext i32 %657 to i64
  %659 = getelementptr inbounds double, ptr %656, i64 %658
  store double %655, ptr %659, align 8, !tbaa !11
  br label %660

660:                                              ; preds = %597
  %661 = load i32, ptr %65, align 4, !tbaa !9
  %662 = add i32 %661, 1
  store i32 %662, ptr %65, align 4, !tbaa !9
  br label %580, !llvm.loop !36

663:                                              ; preds = %584
  call void @llvm.lifetime.start.p0(i64 8, ptr %66) #7
  %664 = load double, ptr %55, align 8, !tbaa !11
  %665 = load double, ptr %40, align 8, !tbaa !11
  %666 = fmul double %664, %665
  store double %666, ptr %66, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %67) #7
  %667 = load double, ptr %56, align 8, !tbaa !11
  %668 = fneg double %667
  %669 = load double, ptr %40, align 8, !tbaa !11
  %670 = fmul double %668, %669
  store double %670, ptr %67, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %68) #7
  %671 = load double, ptr %58, align 8, !tbaa !11
  %672 = load double, ptr %66, align 8, !tbaa !11
  %673 = fmul double %671, %672
  store double %673, ptr %68, align 8, !tbaa !11
  %674 = load double, ptr %59, align 8, !tbaa !11
  %675 = fneg double %674
  %676 = load double, ptr %66, align 8, !tbaa !11
  %677 = fmul double %675, %676
  store double %677, ptr %40, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %69) #7
  %678 = load double, ptr %44, align 8, !tbaa !11
  store double %678, ptr %69, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %70) #7
  %679 = load double, ptr %42, align 8, !tbaa !11
  %680 = load double, ptr %63, align 8, !tbaa !11
  %681 = invoke noundef double @_ZNK8lsmrBase6D2NormEdd(ptr noundef nonnull align 8 dereferenceable(136) %78, double noundef %679, double noundef %680)
          to label %682 unwind label %754

682:                                              ; preds = %663
  store double %681, ptr %70, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %71) #7
  %683 = load double, ptr %42, align 8, !tbaa !11
  %684 = load double, ptr %70, align 8, !tbaa !11
  %685 = fdiv double %683, %684
  store double %685, ptr %71, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %72) #7
  %686 = load double, ptr %63, align 8, !tbaa !11
  %687 = load double, ptr %70, align 8, !tbaa !11
  %688 = fdiv double %686, %687
  store double %688, ptr %72, align 8, !tbaa !11
  %689 = load double, ptr %72, align 8, !tbaa !11
  %690 = load double, ptr %37, align 8, !tbaa !11
  %691 = fmul double %689, %690
  store double %691, ptr %44, align 8, !tbaa !11
  %692 = load double, ptr %71, align 8, !tbaa !11
  %693 = load double, ptr %37, align 8, !tbaa !11
  %694 = fmul double %692, %693
  store double %694, ptr %42, align 8, !tbaa !11
  %695 = load double, ptr %72, align 8, !tbaa !11
  %696 = fneg double %695
  %697 = load double, ptr %41, align 8, !tbaa !11
  %698 = load double, ptr %71, align 8, !tbaa !11
  %699 = load double, ptr %68, align 8, !tbaa !11
  %700 = fmul double %698, %699
  %701 = call double @llvm.fmuladd.f64(double %696, double %697, double %700)
  store double %701, ptr %41, align 8, !tbaa !11
  %702 = load double, ptr %62, align 8, !tbaa !11
  %703 = load double, ptr %69, align 8, !tbaa !11
  %704 = load double, ptr %43, align 8, !tbaa !11
  %705 = fneg double %703
  %706 = call double @llvm.fmuladd.f64(double %705, double %704, double %702)
  %707 = load double, ptr %70, align 8, !tbaa !11
  %708 = fdiv double %706, %707
  store double %708, ptr %43, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %73) #7
  %709 = load double, ptr %45, align 8, !tbaa !11
  %710 = load double, ptr %44, align 8, !tbaa !11
  %711 = load double, ptr %43, align 8, !tbaa !11
  %712 = fneg double %710
  %713 = call double @llvm.fmuladd.f64(double %712, double %711, double %709)
  %714 = load double, ptr %42, align 8, !tbaa !11
  %715 = fdiv double %713, %714
  store double %715, ptr %73, align 8, !tbaa !11
  %716 = load double, ptr %46, align 8, !tbaa !11
  %717 = load double, ptr %67, align 8, !tbaa !11
  %718 = load double, ptr %67, align 8, !tbaa !11
  %719 = call double @llvm.fmuladd.f64(double %717, double %718, double %716)
  store double %719, ptr %46, align 8, !tbaa !11
  %720 = load double, ptr %46, align 8, !tbaa !11
  %721 = load double, ptr %41, align 8, !tbaa !11
  %722 = load double, ptr %73, align 8, !tbaa !11
  %723 = fsub double %721, %722
  %724 = load double, ptr %41, align 8, !tbaa !11
  %725 = load double, ptr %73, align 8, !tbaa !11
  %726 = fsub double %724, %725
  %727 = call double @llvm.fmuladd.f64(double %723, double %726, double %720)
  %728 = load double, ptr %40, align 8, !tbaa !11
  %729 = load double, ptr %40, align 8, !tbaa !11
  %730 = call double @llvm.fmuladd.f64(double %728, double %729, double %727)
  %731 = call double @sqrt(double noundef %730) #7
  %732 = getelementptr inbounds %class.lsmrBase, ptr %78, i32 0, i32 4
  store double %731, ptr %732, align 8, !tbaa !30
  %733 = load double, ptr %47, align 8, !tbaa !11
  %734 = load double, ptr %29, align 8, !tbaa !11
  %735 = load double, ptr %29, align 8, !tbaa !11
  %736 = call double @llvm.fmuladd.f64(double %734, double %735, double %733)
  store double %736, ptr %47, align 8, !tbaa !11
  %737 = load double, ptr %47, align 8, !tbaa !11
  %738 = call double @sqrt(double noundef %737) #7
  %739 = getelementptr inbounds %class.lsmrBase, ptr %78, i32 0, i32 1
  store double %738, ptr %739, align 8, !tbaa !33
  %740 = load double, ptr %47, align 8, !tbaa !11
  %741 = load double, ptr %28, align 8, !tbaa !11
  %742 = load double, ptr %28, align 8, !tbaa !11
  %743 = call double @llvm.fmuladd.f64(double %741, double %742, double %740)
  store double %743, ptr %47, align 8, !tbaa !11
  %744 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxIdERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %48, ptr noundef nonnull align 8 dereferenceable(8) %61)
          to label %745 unwind label %758

745:                                              ; preds = %682
  %746 = load double, ptr %744, align 8, !tbaa !11
  store double %746, ptr %48, align 8, !tbaa !11
  %747 = getelementptr inbounds %class.lsmrBase, ptr %78, i32 0, i32 15
  %748 = load i32, ptr %747, align 8, !tbaa !27
  %749 = icmp ugt i32 %748, 1
  br i1 %749, label %750, label %762

750:                                              ; preds = %745
  %751 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3minIdERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %49, ptr noundef nonnull align 8 dereferenceable(8) %61)
          to label %752 unwind label %758

752:                                              ; preds = %750
  %753 = load double, ptr %751, align 8, !tbaa !11
  store double %753, ptr %49, align 8, !tbaa !11
  br label %762

754:                                              ; preds = %663
  %755 = landingpad { ptr, i32 }
          cleanup
  %756 = extractvalue { ptr, i32 } %755, 0
  store ptr %756, ptr %20, align 8
  %757 = extractvalue { ptr, i32 } %755, 1
  store i32 %757, ptr %21, align 4
  br label %1005

758:                                              ; preds = %773, %767, %764, %762, %750, %682
  %759 = landingpad { ptr, i32 }
          cleanup
  %760 = extractvalue { ptr, i32 } %759, 0
  store ptr %760, ptr %20, align 8
  %761 = extractvalue { ptr, i32 } %759, 1
  store i32 %761, ptr %21, align 4
  br label %1004

762:                                              ; preds = %752, %745
  %763 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxIdERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %48, ptr noundef nonnull align 8 dereferenceable(8) %64)
          to label %764 unwind label %758

764:                                              ; preds = %762
  %765 = load double, ptr %763, align 8, !tbaa !11
  %766 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3minIdERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %49, ptr noundef nonnull align 8 dereferenceable(8) %64)
          to label %767 unwind label %758

767:                                              ; preds = %764
  %768 = load double, ptr %766, align 8, !tbaa !11
  %769 = fdiv double %765, %768
  %770 = getelementptr inbounds %class.lsmrBase, ptr %78, i32 0, i32 2
  store double %769, ptr %770, align 8, !tbaa !37
  %771 = load double, ptr %34, align 8, !tbaa !11
  %772 = invoke noundef double @_ZSt3absd(double noundef %771)
          to label %773 unwind label %758

773:                                              ; preds = %767
  %774 = getelementptr inbounds %class.lsmrBase, ptr %78, i32 0, i32 5
  store double %772, ptr %774, align 8, !tbaa !25
  %775 = load i32, ptr %8, align 4, !tbaa !9
  %776 = load ptr, ptr %10, align 8, !tbaa !5
  %777 = invoke noundef double @_ZNK8lsmrBase5Dnrm2EjPKd(ptr noundef nonnull align 8 dereferenceable(136) %78, i32 noundef %775, ptr noundef %776)
          to label %778 unwind label %758

778:                                              ; preds = %773
  %779 = getelementptr inbounds %class.lsmrBase, ptr %78, i32 0, i32 6
  store double %777, ptr %779, align 8, !tbaa !38
  %780 = getelementptr inbounds %class.lsmrBase, ptr %78, i32 0, i32 4
  %781 = load double, ptr %780, align 8, !tbaa !30
  %782 = getelementptr inbounds %class.lsmrBase, ptr %78, i32 0, i32 3
  %783 = load double, ptr %782, align 8, !tbaa !28
  %784 = fdiv double %781, %783
  store double %784, ptr %13, align 8, !tbaa !11
  %785 = getelementptr inbounds %class.lsmrBase, ptr %78, i32 0, i32 5
  %786 = load double, ptr %785, align 8, !tbaa !25
  %787 = getelementptr inbounds %class.lsmrBase, ptr %78, i32 0, i32 1
  %788 = load double, ptr %787, align 8, !tbaa !33
  %789 = getelementptr inbounds %class.lsmrBase, ptr %78, i32 0, i32 4
  %790 = load double, ptr %789, align 8, !tbaa !30
  %791 = fmul double %788, %790
  %792 = fdiv double %786, %791
  store double %792, ptr %14, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %74) #7
  %793 = getelementptr inbounds %class.lsmrBase, ptr %78, i32 0, i32 2
  %794 = load double, ptr %793, align 8, !tbaa !37
  %795 = fdiv double 1.000000e+00, %794
  store double %795, ptr %74, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %75) #7
  %796 = load double, ptr %13, align 8, !tbaa !11
  %797 = getelementptr inbounds %class.lsmrBase, ptr %78, i32 0, i32 1
  %798 = load double, ptr %797, align 8, !tbaa !33
  %799 = getelementptr inbounds %class.lsmrBase, ptr %78, i32 0, i32 6
  %800 = load double, ptr %799, align 8, !tbaa !38
  %801 = fmul double %798, %800
  %802 = getelementptr inbounds %class.lsmrBase, ptr %78, i32 0, i32 3
  %803 = load double, ptr %802, align 8, !tbaa !28
  %804 = fdiv double %801, %803
  %805 = fadd double 1.000000e+00, %804
  %806 = fdiv double %796, %805
  store double %806, ptr %75, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %76) #7
  %807 = getelementptr inbounds %class.lsmrBase, ptr %78, i32 0, i32 9
  %808 = load double, ptr %807, align 8, !tbaa !19
  %809 = getelementptr inbounds %class.lsmrBase, ptr %78, i32 0, i32 8
  %810 = load double, ptr %809, align 8, !tbaa !17
  %811 = getelementptr inbounds %class.lsmrBase, ptr %78, i32 0, i32 1
  %812 = load double, ptr %811, align 8, !tbaa !33
  %813 = fmul double %810, %812
  %814 = getelementptr inbounds %class.lsmrBase, ptr %78, i32 0, i32 6
  %815 = load double, ptr %814, align 8, !tbaa !38
  %816 = fmul double %813, %815
  %817 = getelementptr inbounds %class.lsmrBase, ptr %78, i32 0, i32 3
  %818 = load double, ptr %817, align 8, !tbaa !28
  %819 = fdiv double %816, %818
  %820 = fadd double %808, %819
  store double %820, ptr %76, align 8, !tbaa !11
  %821 = getelementptr inbounds %class.lsmrBase, ptr %78, i32 0, i32 15
  %822 = load i32, ptr %821, align 8, !tbaa !27
  %823 = getelementptr inbounds %class.lsmrBase, ptr %78, i32 0, i32 14
  %824 = load i32, ptr %823, align 4, !tbaa !20
  %825 = icmp uge i32 %822, %824
  br i1 %825, label %826, label %828

826:                                              ; preds = %778
  %827 = getelementptr inbounds %class.lsmrBase, ptr %78, i32 0, i32 16
  store i32 7, ptr %827, align 4, !tbaa !29
  br label %828

828:                                              ; preds = %826, %778
  %829 = load double, ptr %74, align 8, !tbaa !11
  %830 = fadd double 1.000000e+00, %829
  %831 = fcmp ole double %830, 1.000000e+00
  br i1 %831, label %832, label %834

832:                                              ; preds = %828
  %833 = getelementptr inbounds %class.lsmrBase, ptr %78, i32 0, i32 16
  store i32 6, ptr %833, align 4, !tbaa !29
  br label %834

834:                                              ; preds = %832, %828
  %835 = load double, ptr %14, align 8, !tbaa !11
  %836 = fadd double 1.000000e+00, %835
  %837 = fcmp ole double %836, 1.000000e+00
  br i1 %837, label %838, label %840

838:                                              ; preds = %834
  %839 = getelementptr inbounds %class.lsmrBase, ptr %78, i32 0, i32 16
  store i32 5, ptr %839, align 4, !tbaa !29
  br label %840

840:                                              ; preds = %838, %834
  %841 = load double, ptr %75, align 8, !tbaa !11
  %842 = fadd double 1.000000e+00, %841
  %843 = fcmp ole double %842, 1.000000e+00
  br i1 %843, label %844, label %846

844:                                              ; preds = %840
  %845 = getelementptr inbounds %class.lsmrBase, ptr %78, i32 0, i32 16
  store i32 4, ptr %845, align 4, !tbaa !29
  br label %846

846:                                              ; preds = %844, %840
  %847 = load double, ptr %74, align 8, !tbaa !11
  %848 = load double, ptr %50, align 8, !tbaa !11
  %849 = fcmp ole double %847, %848
  br i1 %849, label %850, label %852

850:                                              ; preds = %846
  %851 = getelementptr inbounds %class.lsmrBase, ptr %78, i32 0, i32 16
  store i32 3, ptr %851, align 4, !tbaa !29
  br label %852

852:                                              ; preds = %850, %846
  %853 = load double, ptr %14, align 8, !tbaa !11
  %854 = getelementptr inbounds %class.lsmrBase, ptr %78, i32 0, i32 8
  %855 = load double, ptr %854, align 8, !tbaa !17
  %856 = fcmp ole double %853, %855
  br i1 %856, label %857, label %859

857:                                              ; preds = %852
  %858 = getelementptr inbounds %class.lsmrBase, ptr %78, i32 0, i32 16
  store i32 2, ptr %858, align 4, !tbaa !29
  br label %859

859:                                              ; preds = %857, %852
  %860 = load double, ptr %13, align 8, !tbaa !11
  %861 = load double, ptr %76, align 8, !tbaa !11
  %862 = fcmp ole double %860, %861
  br i1 %862, label %863, label %865

863:                                              ; preds = %859
  %864 = getelementptr inbounds %class.lsmrBase, ptr %78, i32 0, i32 16
  store i32 1, ptr %864, align 4, !tbaa !29
  br label %865

865:                                              ; preds = %863, %859
  %866 = getelementptr inbounds %class.lsmrBase, ptr %78, i32 0, i32 19
  %867 = load ptr, ptr %866, align 8, !tbaa !13
  %868 = icmp ne ptr %867, null
  br i1 %868, label %869, label %994

869:                                              ; preds = %865
  call void @llvm.lifetime.start.p0(i64 1, ptr %77) #7
  store i8 0, ptr %77, align 1, !tbaa !26
  %870 = load i32, ptr %8, align 4, !tbaa !9
  %871 = icmp ule i32 %870, 40
  br i1 %871, label %872, label %873

872:                                              ; preds = %869
  store i8 1, ptr %77, align 1, !tbaa !26
  br label %873

873:                                              ; preds = %872, %869
  %874 = getelementptr inbounds %class.lsmrBase, ptr %78, i32 0, i32 15
  %875 = load i32, ptr %874, align 8, !tbaa !27
  %876 = icmp ule i32 %875, 10
  br i1 %876, label %877, label %878

877:                                              ; preds = %873
  store i8 1, ptr %77, align 1, !tbaa !26
  br label %878

878:                                              ; preds = %877, %873
  %879 = getelementptr inbounds %class.lsmrBase, ptr %78, i32 0, i32 15
  %880 = load i32, ptr %879, align 8, !tbaa !27
  %881 = getelementptr inbounds %class.lsmrBase, ptr %78, i32 0, i32 14
  %882 = load i32, ptr %881, align 4, !tbaa !20
  %883 = sub i32 %882, 10
  %884 = icmp uge i32 %880, %883
  br i1 %884, label %885, label %886

885:                                              ; preds = %878
  store i8 1, ptr %77, align 1, !tbaa !26
  br label %886

886:                                              ; preds = %885, %878
  %887 = getelementptr inbounds %class.lsmrBase, ptr %78, i32 0, i32 15
  %888 = load i32, ptr %887, align 8, !tbaa !27
  %889 = urem i32 %888, 10
  %890 = icmp eq i32 %889, 0
  br i1 %890, label %891, label %892

891:                                              ; preds = %886
  store i8 1, ptr %77, align 1, !tbaa !26
  br label %892

892:                                              ; preds = %891, %886
  %893 = load double, ptr %74, align 8, !tbaa !11
  %894 = load double, ptr %50, align 8, !tbaa !11
  %895 = fmul double 1.100000e+00, %894
  %896 = fcmp ole double %893, %895
  br i1 %896, label %897, label %898

897:                                              ; preds = %892
  store i8 1, ptr %77, align 1, !tbaa !26
  br label %898

898:                                              ; preds = %897, %892
  %899 = load double, ptr %14, align 8, !tbaa !11
  %900 = getelementptr inbounds %class.lsmrBase, ptr %78, i32 0, i32 8
  %901 = load double, ptr %900, align 8, !tbaa !17
  %902 = fmul double 1.100000e+00, %901
  %903 = fcmp ole double %899, %902
  br i1 %903, label %904, label %905

904:                                              ; preds = %898
  store i8 1, ptr %77, align 1, !tbaa !26
  br label %905

905:                                              ; preds = %904, %898
  %906 = load double, ptr %13, align 8, !tbaa !11
  %907 = load double, ptr %76, align 8, !tbaa !11
  %908 = fmul double 1.100000e+00, %907
  %909 = fcmp ole double %906, %908
  br i1 %909, label %910, label %911

910:                                              ; preds = %905
  store i8 1, ptr %77, align 1, !tbaa !26
  br label %911

911:                                              ; preds = %910, %905
  %912 = getelementptr inbounds %class.lsmrBase, ptr %78, i32 0, i32 16
  %913 = load i32, ptr %912, align 4, !tbaa !29
  %914 = icmp ne i32 %913, 0
  br i1 %914, label %915, label %916

915:                                              ; preds = %911
  store i8 1, ptr %77, align 1, !tbaa !26
  br label %916

916:                                              ; preds = %915, %911
  %917 = load i8, ptr %77, align 1, !tbaa !26, !range !31, !noundef !32
  %918 = trunc i8 %917 to i1
  br i1 %918, label %919, label %993

919:                                              ; preds = %916
  %920 = load i32, ptr %17, align 4, !tbaa !9
  %921 = icmp sge i32 %920, 20
  br i1 %921, label %922, label %941

922:                                              ; preds = %919
  store i32 0, ptr %17, align 4, !tbaa !9
  %923 = getelementptr inbounds %class.lsmrBase, ptr %78, i32 0, i32 13
  %924 = load i8, ptr %923, align 8, !tbaa !22, !range !31, !noundef !32
  %925 = trunc i8 %924 to i1
  br i1 %925, label %926, label %935

926:                                              ; preds = %922
  %927 = getelementptr inbounds %class.lsmrBase, ptr %78, i32 0, i32 19
  %928 = load ptr, ptr %927, align 8, !tbaa !13
  %929 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %928, ptr noundef @.str.10)
          to label %930 unwind label %931

930:                                              ; preds = %926
  br label %940

931:                                              ; preds = %990, %986, %984, %980, %978, %975, %973, %970, %968, %964, %962, %958, %956, %951, %949, %941, %935, %926
  %932 = landingpad { ptr, i32 }
          cleanup
  %933 = extractvalue { ptr, i32 } %932, 0
  store ptr %933, ptr %20, align 8
  %934 = extractvalue { ptr, i32 } %932, 1
  store i32 %934, ptr %21, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %77) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %76) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %74) #7
  br label %1004

935:                                              ; preds = %922
  %936 = getelementptr inbounds %class.lsmrBase, ptr %78, i32 0, i32 19
  %937 = load ptr, ptr %936, align 8, !tbaa !13
  %938 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %937, ptr noundef @.str.11)
          to label %939 unwind label %931

939:                                              ; preds = %935
  br label %940

940:                                              ; preds = %939, %930
  br label %941

941:                                              ; preds = %940, %919
  %942 = load i32, ptr %17, align 4, !tbaa !9
  %943 = add nsw i32 %942, 1
  store i32 %943, ptr %17, align 4, !tbaa !9
  %944 = getelementptr inbounds %class.lsmrBase, ptr %78, i32 0, i32 19
  %945 = load ptr, ptr %944, align 8, !tbaa !13
  %946 = getelementptr inbounds %class.lsmrBase, ptr %78, i32 0, i32 15
  %947 = load i32, ptr %946, align 8, !tbaa !27
  %948 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %945, i32 noundef %947)
          to label %949 unwind label %931

949:                                              ; preds = %941
  %950 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %948, ptr noundef @.str.12)
          to label %951 unwind label %931

951:                                              ; preds = %949
  %952 = load ptr, ptr %10, align 8, !tbaa !5
  %953 = getelementptr inbounds double, ptr %952, i64 0
  %954 = load double, ptr %953, align 8, !tbaa !11
  %955 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %950, double noundef %954)
          to label %956 unwind label %931

956:                                              ; preds = %951
  %957 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %955, ptr noundef @.str.12)
          to label %958 unwind label %931

958:                                              ; preds = %956
  %959 = getelementptr inbounds %class.lsmrBase, ptr %78, i32 0, i32 4
  %960 = load double, ptr %959, align 8, !tbaa !30
  %961 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %957, double noundef %960)
          to label %962 unwind label %931

962:                                              ; preds = %958
  %963 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %961, ptr noundef @.str.12)
          to label %964 unwind label %931

964:                                              ; preds = %962
  %965 = getelementptr inbounds %class.lsmrBase, ptr %78, i32 0, i32 5
  %966 = load double, ptr %965, align 8, !tbaa !25
  %967 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %963, double noundef %966)
          to label %968 unwind label %931

968:                                              ; preds = %964
  %969 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %967, ptr noundef @.str.12)
          to label %970 unwind label %931

970:                                              ; preds = %968
  %971 = load double, ptr %13, align 8, !tbaa !11
  %972 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %969, double noundef %971)
          to label %973 unwind label %931

973:                                              ; preds = %970
  %974 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %972, ptr noundef @.str.12)
          to label %975 unwind label %931

975:                                              ; preds = %973
  %976 = load double, ptr %14, align 8, !tbaa !11
  %977 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %974, double noundef %976)
          to label %978 unwind label %931

978:                                              ; preds = %975
  %979 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %977, ptr noundef @.str.12)
          to label %980 unwind label %931

980:                                              ; preds = %978
  %981 = getelementptr inbounds %class.lsmrBase, ptr %78, i32 0, i32 1
  %982 = load double, ptr %981, align 8, !tbaa !33
  %983 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %979, double noundef %982)
          to label %984 unwind label %931

984:                                              ; preds = %980
  %985 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %983, ptr noundef @.str.12)
          to label %986 unwind label %931

986:                                              ; preds = %984
  %987 = getelementptr inbounds %class.lsmrBase, ptr %78, i32 0, i32 2
  %988 = load double, ptr %987, align 8, !tbaa !37
  %989 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %985, double noundef %988)
          to label %990 unwind label %931

990:                                              ; preds = %986
  %991 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %989, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %992 unwind label %931

992:                                              ; preds = %990
  br label %993

993:                                              ; preds = %992, %916
  call void @llvm.lifetime.end.p0(i64 1, ptr %77) #7
  br label %994

994:                                              ; preds = %993, %865
  call void @llvm.lifetime.end.p0(i64 8, ptr %76) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %74) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %73) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %72) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %71) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #7
  br label %995

995:                                              ; preds = %994
  %996 = getelementptr inbounds %class.lsmrBase, ptr %78, i32 0, i32 16
  %997 = load i32, ptr %996, align 4, !tbaa !29
  %998 = icmp eq i32 %997, 0
  br i1 %998, label %393, label %999, !llvm.loop !39

999:                                              ; preds = %995
  invoke void @_ZN8lsmrBase19TerminationPrintOutEv(ptr noundef nonnull align 8 dereferenceable(136) %78)
          to label %1000 unwind label %342

1000:                                             ; preds = %999
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #7
  call void @llvm.lifetime.end.p0(i64 8, 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 4, ptr %33) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %32) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %31) #7
  store i32 0, ptr %30, align 4
  br label %1001

1001:                                             ; preds = %1000, %272
  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 @_ZNSt6vectorIdSaIdEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %18) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %18) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #7
  call void @llvm.lifetime.end.p0(i64 4, 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
  %1002 = load i32, ptr %30, align 4
  switch i32 %1002, label %1020 [
    i32 0, label %1003
    i32 1, label %1003
  ]

1003:                                             ; preds = %1001, %1001
  ret void

1004:                                             ; preds = %931, %758
  call void @llvm.lifetime.end.p0(i64 8, ptr %73) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %72) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %71) #7
  br label %1005

1005:                                             ; preds = %1004, %754
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #7
  br label %1006

1006:                                             ; preds = %1005, %593
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #7
  br label %1007

1007:                                             ; preds = %1006, %589
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #7
  br label %1008

1008:                                             ; preds = %1007, %585
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #7
  br label %1009

1009:                                             ; preds = %1008, %503, %342
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #7
  br label %1010

1010:                                             ; preds = %1009, %323
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #7
  call void @llvm.lifetime.end.p0(i64 8, 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
  br label %1011

1011:                                             ; preds = %1010, %285
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %32) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %31) #7
  br label %1012

1012:                                             ; preds = %1011, %243
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #7
  br label %1013

1013:                                             ; preds = %1012, %239
  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 @_ZNSt6vectorIdSaIdEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %18) #7
  br label %1014

1014:                                             ; preds = %1013, %235
  call void @llvm.lifetime.end.p0(i64 24, ptr %18) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #7
  call void @llvm.lifetime.end.p0(i64 4, 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 %1015

1015:                                             ; preds = %1014
  %1016 = load ptr, ptr %20, align 8
  %1017 = load i32, ptr %21, align 4
  %1018 = insertvalue { ptr, i32 } poison, ptr %1016, 0
  %1019 = insertvalue { ptr, i32 } %1018, i32 %1017, 1
  resume { ptr, i32 } %1019

1020:                                             ; preds = %1001
  unreachable
}

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3minIjERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 4 dereferenceable(4)) #3

; Function Attrs: inlinehint mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) #6

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

; Function Attrs: inlinehint mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_(ptr noundef nonnull align 8 dereferenceable(8)) #6

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

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

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

declare i32 @__gxx_personality_v0(...)

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

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

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef double @_ZSt13inner_productIPdS0_dET1_T_S2_T0_S1_(ptr noundef, ptr noundef, ptr noundef, double noundef) #3

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_Z5daxpyjdPKdPd(i32 noundef, double noundef, ptr noundef, ptr noundef) #3

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

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

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

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

attributes #0 = { 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 #1 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #3 = { 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 #4 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #5 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { 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 = !{!"int", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"double", !7, i64 0}
!13 = !{!14, !6, i64 128}
!14 = !{!"_ZTS8lsmrBase", !12, i64 8, !12, i64 16, !12, i64 24, !12, i64 32, !12, i64 40, !12, i64 48, !12, i64 56, !12, i64 64, !12, i64 72, !12, i64 80, !12, i64 88, !12, i64 96, !15, i64 104, !10, i64 108, !10, i64 112, !10, i64 116, !10, i64 120, !10, i64 124, !6, i64 128}
!15 = !{!"bool", !7, i64 0}
!16 = !{!14, !12, i64 96}
!17 = !{!14, !12, i64 64}
!18 = !{!14, !12, i64 80}
!19 = !{!14, !12, i64 72}
!20 = !{!14, !10, i64 108}
!21 = !{!14, !10, i64 124}
!22 = !{!14, !15, i64 104}
!23 = !{!24, !24, i64 0}
!24 = !{!"vtable pointer", !8, i64 0}
!25 = !{!14, !12, i64 40}
!26 = !{!15, !15, i64 0}
!27 = !{!14, !10, i64 112}
!28 = !{!14, !12, i64 24}
!29 = !{!14, !10, i64 116}
!30 = !{!14, !12, i64 32}
!31 = !{i8 0, i8 2}
!32 = !{}
!33 = !{!14, !12, i64 8}
!34 = distinct !{!34, !35}
!35 = !{!"llvm.loop.mustprogress"}
!36 = distinct !{!36, !35}
!37 = !{!14, !12, i64 16}
!38 = !{!14, !12, i64 48}
!39 = distinct !{!39, !35}


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

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

@.str = external hidden unnamed_addr constant [54 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [61 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [92 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [91 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [3 x i8], align 1

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef double @_ZSt3absd(double noundef) local_unnamed_addr #3

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNK8lsmrBase5ScaleEjdPd(ptr noundef nonnull align 8 dereferenceable(136), i32 noundef, double noundef, ptr noundef) local_unnamed_addr #5 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef double @_ZNK8lsmrBase5Dnrm2EjPKd(ptr noundef nonnull align 8 dereferenceable(136), i32 noundef, ptr noundef) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN8lsmrBase5SolveEjjPKdPd(ptr noundef nonnull align 8 dereferenceable(136) %0, i32 noundef %1, i32 noundef %2, ptr noundef %3, ptr noundef %4) local_unnamed_addr #1 align 2 personality ptr @__gxx_personality_v0 {
  %6 = alloca i32, align 4
  %7 = alloca i32, align 4
  %8 = alloca double, align 8
  %9 = alloca %"class.std::vector", align 8
  %10 = alloca %"class.std::allocator", align 1
  %11 = alloca double, align 8
  %12 = alloca double, align 8
  %13 = alloca double, align 8
  %14 = alloca double, align 8
  store i32 %1, ptr %6, align 4, !tbaa !5
  store i32 %2, ptr %7, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %8) #8
  store double 0.000000e+00, ptr %8, align 8, !tbaa !9
  %15 = getelementptr inbounds i8, ptr %0, i64 124
  %16 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3minIjERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %6, ptr noundef nonnull align 4 dereferenceable(4) %7)
  %17 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3minIjERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %15, ptr noundef nonnull align 4 dereferenceable(4) %16)
  %18 = load i32, ptr %17, align 4, !tbaa !5
  %19 = getelementptr inbounds i8, ptr %0, i64 128
  %20 = load ptr, ptr %19, align 8, !tbaa !11
  %.not = icmp eq ptr %20, null
  br i1 %.not, label %64, label %21

21:                                               ; preds = %5
  %22 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %20, ptr noundef nonnull @.str)
  %23 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %22, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  %24 = load ptr, ptr %19, align 8, !tbaa !11
  %25 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %24, ptr noundef nonnull @.str.1)
  %26 = load i32, ptr %6, align 4, !tbaa !5
  %27 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %25, i32 noundef %26)
  %28 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %27, ptr noundef nonnull @.str.2)
  %29 = load i32, ptr %7, align 4, !tbaa !5
  %30 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %28, i32 noundef %29)
  %31 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %30, ptr noundef nonnull @.str.3)
  %32 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %31, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  %33 = load ptr, ptr %19, align 8, !tbaa !11
  %34 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %33, ptr noundef nonnull @.str.4)
  %35 = getelementptr inbounds i8, ptr %0, i64 96
  %36 = load double, ptr %35, align 8, !tbaa !15
  %37 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %34, double noundef %36)
  %38 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %37, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  %39 = load ptr, ptr %19, align 8, !tbaa !11
  %40 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %39, ptr noundef nonnull @.str.5)
  %41 = getelementptr inbounds i8, ptr %0, i64 64
  %42 = load double, ptr %41, align 8, !tbaa !16
  %43 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %40, double noundef %42)
  %44 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %43, ptr noundef nonnull @.str.6)
  %45 = getelementptr inbounds i8, ptr %0, i64 80
  %46 = load double, ptr %45, align 8, !tbaa !17
  %47 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %44, double noundef %46)
  %48 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %47, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  %49 = load ptr, ptr %19, align 8, !tbaa !11
  %50 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %49, ptr noundef nonnull @.str.7)
  %51 = getelementptr inbounds i8, ptr %0, i64 72
  %52 = load double, ptr %51, align 8, !tbaa !18
  %53 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %50, double noundef %52)
  %54 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %53, ptr noundef nonnull @.str.8)
  %55 = getelementptr inbounds i8, ptr %0, i64 108
  %56 = load i32, ptr %55, align 4, !tbaa !19
  %57 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %54, i32 noundef %56)
  %58 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %57, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  %59 = load ptr, ptr %19, align 8, !tbaa !11
  %60 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %59, ptr noundef nonnull @.str.9)
  %61 = load i32, ptr %15, align 4, !tbaa !20
  %62 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %60, i32 noundef %61)
  %63 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %62, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  br label %64

64:                                               ; preds = %21, %5
  %65 = getelementptr inbounds i8, ptr %0, i64 96
  %66 = load double, ptr %65, align 8, !tbaa !15
  %67 = fcmp ogt double %66, 0.000000e+00
  %68 = getelementptr inbounds i8, ptr %0, i64 104
  %69 = zext i1 %67 to i8
  store i8 %69, ptr %68, align 8, !tbaa !21
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %9) #8
  %70 = load i32, ptr %6, align 4, !tbaa !5
  %71 = load i32, ptr %7, align 4, !tbaa !5
  %reass.add = add i32 %18, 5
  %reass.mul = mul i32 %71, %reass.add
  %72 = add i32 %reass.mul, %70
  %73 = zext i32 %72 to i64
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %10) #8
  call void @_ZNSaIdEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %10) #8
  invoke void @_ZNSt6vectorIdSaIdEEC2EmRKS0_(ptr noundef nonnull align 8 dereferenceable(24) %9, i64 noundef %73, ptr noundef nonnull align 1 dereferenceable(1) %10)
          to label %74 unwind label %123

74:                                               ; preds = %64
  call void @_ZNSt15__new_allocatorIdED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %10) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %10) #8
  %75 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %9, i64 noundef 0) #8
  %76 = load i32, ptr %6, align 4, !tbaa !5
  %77 = zext i32 %76 to i64
  %78 = getelementptr double, ptr %75, i64 %77
  %79 = load i32, ptr %7, align 4, !tbaa !5
  %80 = zext i32 %79 to i64
  %81 = getelementptr double, ptr %78, i64 %80
  %82 = getelementptr double, ptr %81, i64 %80
  %83 = getelementptr double, ptr %82, i64 %80
  %84 = getelementptr inbounds double, ptr %83, i64 %80
  %85 = getelementptr inbounds double, ptr %3, i64 %77
  %86 = invoke noundef ptr @_ZSt4copyIPKdPdET0_T_S4_S3_(ptr noundef %3, ptr noundef %85, ptr noundef nonnull %75)
          to label %87 unwind label %125

87:                                               ; preds = %74
  %88 = load i32, ptr %7, align 4, !tbaa !5
  %89 = zext i32 %88 to i64
  %90 = getelementptr inbounds double, ptr %78, i64 %89
  invoke void @_ZSt4fillIPddEvT_S1_RKT0_(ptr noundef nonnull %78, ptr noundef nonnull %90, ptr noundef nonnull align 8 dereferenceable(8) %8)
          to label %91 unwind label %125

91:                                               ; preds = %87
  %92 = load i32, ptr %7, align 4, !tbaa !5
  %93 = zext i32 %92 to i64
  %94 = getelementptr inbounds double, ptr %78, i64 %93
  invoke void @_ZSt4fillIPddEvT_S1_RKT0_(ptr noundef nonnull %81, ptr noundef nonnull %94, ptr noundef nonnull align 8 dereferenceable(8) %8)
          to label %95 unwind label %125

95:                                               ; preds = %91
  %96 = load i32, ptr %7, align 4, !tbaa !5
  %97 = zext i32 %96 to i64
  %98 = getelementptr inbounds double, ptr %4, i64 %97
  invoke void @_ZSt4fillIPddEvT_S1_RKT0_(ptr noundef %4, ptr noundef %98, ptr noundef nonnull align 8 dereferenceable(8) %8)
          to label %99 unwind label %125

99:                                               ; preds = %95
  %100 = load i32, ptr %6, align 4, !tbaa !5
  call void @_ZNK8lsmrBase5ScaleEjdPd(ptr noundef nonnull align 8 dereferenceable(136) %0, i32 noundef %100, double noundef -1.000000e+00, ptr noundef nonnull %75)
  %101 = load i32, ptr %6, align 4, !tbaa !5
  %102 = load i32, ptr %7, align 4, !tbaa !5
  %103 = load ptr, ptr %0, align 8, !tbaa !22
  %104 = getelementptr inbounds i8, ptr %103, i64 16
  %105 = load ptr, ptr %104, align 8
  invoke void %105(ptr noundef nonnull align 8 dereferenceable(136) %0, i32 noundef %101, i32 noundef %102, ptr noundef %4, ptr noundef nonnull %75)
          to label %106 unwind label %125

106:                                              ; preds = %99
  %107 = load i32, ptr %6, align 4, !tbaa !5
  call void @_ZNK8lsmrBase5ScaleEjdPd(ptr noundef nonnull align 8 dereferenceable(136) %0, i32 noundef %107, double noundef -1.000000e+00, ptr noundef nonnull %75)
  %108 = load i32, ptr %6, align 4, !tbaa !5
  %109 = invoke noundef double @_ZNK8lsmrBase5Dnrm2EjPKd(ptr noundef nonnull align 8 dereferenceable(136) %0, i32 noundef %108, ptr noundef nonnull %75)
          to label %110 unwind label %127

110:                                              ; preds = %106
  %111 = fcmp ogt double %109, 0.000000e+00
  br i1 %111, label %112, label %.thread

112:                                              ; preds = %110
  %113 = load i32, ptr %6, align 4, !tbaa !5
  %114 = fdiv double 1.000000e+00, %109
  call void @_ZNK8lsmrBase5ScaleEjdPd(ptr noundef nonnull align 8 dereferenceable(136) %0, i32 noundef %113, double noundef %114, ptr noundef nonnull %75)
  %115 = load i32, ptr %6, align 4, !tbaa !5
  %116 = load i32, ptr %7, align 4, !tbaa !5
  %117 = load ptr, ptr %0, align 8, !tbaa !22
  %118 = getelementptr inbounds i8, ptr %117, i64 24
  %119 = load ptr, ptr %118, align 8
  invoke void %119(ptr noundef nonnull align 8 dereferenceable(136) %0, i32 noundef %115, i32 noundef %116, ptr noundef nonnull %78, ptr noundef nonnull %75)
          to label %120 unwind label %127

120:                                              ; preds = %112
  %121 = load i32, ptr %7, align 4, !tbaa !5
  %122 = invoke noundef double @_ZNK8lsmrBase5Dnrm2EjPKd(ptr noundef nonnull align 8 dereferenceable(136) %0, i32 noundef %121, ptr noundef nonnull %78)
          to label %129 unwind label %127

123:                                              ; preds = %64
  %124 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIdED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %10) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %10) #8
  br label %527

125:                                              ; preds = %99, %95, %91, %87, %74
  %126 = landingpad { ptr, i32 }
          cleanup
  br label %526

127:                                              ; preds = %141, %131, %120, %112, %106
  %128 = landingpad { ptr, i32 }
          cleanup
  br label %526

129:                                              ; preds = %120
  %130 = fcmp ogt double %122, 0.000000e+00
  br i1 %130, label %131, label %.thread

131:                                              ; preds = %129
  %132 = load i32, ptr %7, align 4, !tbaa !5
  %133 = fdiv double 1.000000e+00, %122
  call void @_ZNK8lsmrBase5ScaleEjdPd(ptr noundef nonnull align 8 dereferenceable(136) %0, i32 noundef %132, double noundef %133, ptr noundef nonnull %78)
  %134 = load i32, ptr %7, align 4, !tbaa !5
  %135 = zext i32 %134 to i64
  %136 = getelementptr inbounds double, ptr %78, i64 %135
  %137 = invoke noundef ptr @_ZSt4copyIPdS0_ET0_T_S2_S1_(ptr noundef nonnull %78, ptr noundef nonnull %136, ptr noundef nonnull %81)
          to label %.thread unwind label %127

.thread:                                          ; preds = %110, %131, %129
  %.0250313 = phi double [ %122, %131 ], [ %122, %129 ], [ 0.000000e+00, %110 ]
  %138 = fmul double %109, %.0250313
  %139 = getelementptr inbounds i8, ptr %0, i64 40
  store double %138, ptr %139, align 8, !tbaa !24
  %140 = fcmp oeq double %138, 0.000000e+00
  br i1 %140, label %141, label %142

141:                                              ; preds = %.thread
  invoke void @_ZN8lsmrBase19TerminationPrintOutEv(ptr noundef nonnull align 8 dereferenceable(136) %0)
          to label %523 unwind label %127

142:                                              ; preds = %.thread
  %.not288.not = icmp eq i32 %18, 0
  br i1 %.not288.not, label %150, label %143

143:                                              ; preds = %142
  %144 = load i32, ptr %7, align 4, !tbaa !5
  %145 = zext i32 %144 to i64
  %146 = getelementptr inbounds double, ptr %78, i64 %145
  %147 = invoke noundef ptr @_ZSt4copyIPdS0_ET0_T_S2_S1_(ptr noundef nonnull %78, ptr noundef nonnull %146, ptr noundef nonnull %84)
          to label %150 unwind label %148

148:                                              ; preds = %143
  %149 = landingpad { ptr, i32 }
          cleanup
  br label %526

150:                                              ; preds = %143, %142
  %151 = getelementptr inbounds i8, ptr %0, i64 112
  store i32 0, ptr %151, align 8, !tbaa !25
  %152 = load i32, ptr %7, align 4, !tbaa !5
  %153 = zext i32 %152 to i64
  %154 = getelementptr inbounds double, ptr %78, i64 %153
  %155 = invoke noundef ptr @_ZSt4copyIPdS0_ET0_T_S2_S1_(ptr noundef nonnull %78, ptr noundef nonnull %154, ptr noundef nonnull %82)
          to label %156 unwind label %170

156:                                              ; preds = %150
  %157 = load i32, ptr %7, align 4, !tbaa !5
  %158 = zext i32 %157 to i64
  %159 = getelementptr inbounds double, ptr %83, i64 %158
  invoke void @_ZSt4fillIPddEvT_S1_RKT0_(ptr noundef nonnull %83, ptr noundef nonnull %159, ptr noundef nonnull align 8 dereferenceable(8) %8)
          to label %160 unwind label %170

160:                                              ; preds = %156
  %161 = fmul double %.0250313, %.0250313
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %11) #8
  store double 0.000000e+00, ptr %11, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %12) #8
  store double 1.000000e+100, ptr %12, align 8, !tbaa !9
  %162 = getelementptr inbounds i8, ptr %0, i64 24
  store double %109, ptr %162, align 8, !tbaa !26
  %163 = getelementptr inbounds i8, ptr %0, i64 116
  store i32 0, ptr %163, align 4, !tbaa !27
  %164 = getelementptr inbounds i8, ptr %0, i64 80
  %165 = load double, ptr %164, align 8, !tbaa !17
  %166 = fcmp ogt double %165, 0.000000e+00
  %167 = fdiv double 1.000000e+00, %165
  %.0275 = select i1 %166, double %167, double 0.000000e+00
  %168 = getelementptr inbounds i8, ptr %0, i64 32
  store double %109, ptr %168, align 8, !tbaa !28
  %169 = load ptr, ptr %19, align 8, !tbaa !11
  %.not289 = icmp eq ptr %169, null
  br i1 %.not289, label %206, label %.invoke

170:                                              ; preds = %156, %150
  %171 = landingpad { ptr, i32 }
          cleanup
  br label %526

.invoke:                                          ; preds = %160
  %172 = load i8, ptr %68, align 8, !tbaa !21, !range !29, !noundef !30
  %173 = trunc nuw i8 %172 to i1
  %spec.select334 = select i1 %173, ptr @.str.10, ptr @.str.11
  %174 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %169, ptr noundef nonnull %spec.select334)
          to label %175 unwind label %.loopexit.split-lp

.loopexit321:                                     ; preds = %219, %231, %239, %249, %.loopexit
  %lpad.loopexit = landingpad { ptr, i32 }
          cleanup
  br label %525

.loopexit.split-lp:                               ; preds = %.invoke, %175, %180, %182, %185, %187, %190, %192, %196, %198, %200, %202, %204, %521
  %lpad.loopexit.split-lp = landingpad { ptr, i32 }
          cleanup
  br label %525

175:                                              ; preds = %.invoke
  %176 = fdiv double %.0250313, %109
  %177 = load ptr, ptr %19, align 8, !tbaa !11
  %178 = load i32, ptr %151, align 8, !tbaa !25
  %179 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %177, i32 noundef %178)
          to label %180 unwind label %.loopexit.split-lp

180:                                              ; preds = %175
  %181 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %179, ptr noundef nonnull @.str.12)
          to label %182 unwind label %.loopexit.split-lp

182:                                              ; preds = %180
  %183 = load double, ptr %4, align 8, !tbaa !9
  %184 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %181, double noundef %183)
          to label %185 unwind label %.loopexit.split-lp

185:                                              ; preds = %182
  %186 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %184, ptr noundef nonnull @.str.12)
          to label %187 unwind label %.loopexit.split-lp

187:                                              ; preds = %185
  %188 = load double, ptr %168, align 8, !tbaa !28
  %189 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %186, double noundef %188)
          to label %190 unwind label %.loopexit.split-lp

190:                                              ; preds = %187
  %191 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %189, ptr noundef nonnull @.str.12)
          to label %192 unwind label %.loopexit.split-lp

192:                                              ; preds = %190
  %193 = getelementptr inbounds i8, ptr %0, i64 8
  %194 = load double, ptr %193, align 8, !tbaa !31
  %195 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %191, double noundef %194)
          to label %196 unwind label %.loopexit.split-lp

196:                                              ; preds = %192
  %197 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %195, ptr noundef nonnull @.str.12)
          to label %198 unwind label %.loopexit.split-lp

198:                                              ; preds = %196
  %199 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %197, double noundef 1.000000e+00)
          to label %200 unwind label %.loopexit.split-lp

200:                                              ; preds = %198
  %201 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %199, ptr noundef nonnull @.str.12)
          to label %202 unwind label %.loopexit.split-lp

202:                                              ; preds = %200
  %203 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %201, double noundef %176)
          to label %204 unwind label %.loopexit.split-lp

204:                                              ; preds = %202
  %205 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %203, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %206 unwind label %.loopexit.split-lp

206:                                              ; preds = %204, %160
  %207 = getelementptr inbounds i8, ptr %0, i64 8
  %208 = getelementptr inbounds i8, ptr %0, i64 16
  %209 = getelementptr inbounds i8, ptr %0, i64 48
  %210 = getelementptr inbounds i8, ptr %0, i64 72
  %211 = getelementptr inbounds i8, ptr %0, i64 64
  %212 = getelementptr inbounds i8, ptr %0, i64 108
  %213 = fmul double %.0275, 1.100000e+00
  %214 = mul nuw nsw i64 %80, 24
  %215 = shl nuw nsw i64 %77, 3
  %216 = getelementptr i8, ptr %75, i64 %214
  %scevgep = getelementptr i8, ptr %216, i64 %215
  %217 = shl nuw nsw i64 %80, 4
  %218 = getelementptr i8, ptr %75, i64 %217
  %scevgep337 = getelementptr i8, ptr %218, i64 %215
  %scevgep339 = getelementptr inbounds i8, ptr %13, i64 8
  %scevgep340 = getelementptr i8, ptr %75, i64 %215
  %bound0345 = icmp ult ptr %83, %scevgep339
  %bound0357 = icmp ugt ptr %scevgep339, %4
  %bound0365 = icmp ult ptr %82, %scevgep339
  br label %219

219:                                              ; preds = %518, %206
  %.0278 = phi double [ 0.000000e+00, %206 ], [ %306, %518 ]
  %.0277 = phi double [ 0.000000e+00, %206 ], [ %379, %518 ]
  %.0276 = phi double [ %161, %206 ], [ %386, %518 ]
  %.0272 = phi double [ 0.000000e+00, %206 ], [ %373, %518 ]
  %.0270 = phi double [ 0.000000e+00, %206 ], [ %369, %518 ]
  %.0269 = phi double [ %109, %206 ], [ %331, %518 ]
  %.0266 = phi double [ 1.000000e+00, %206 ], [ %300, %518 ]
  %.0265 = phi double [ 1.000000e+00, %206 ], [ %287, %518 ]
  %.0264 = phi double [ %.0250313, %206 ], [ %291, %518 ]
  %.0263 = phi double [ %138, %206 ], [ %309, %518 ]
  %.0258 = phi i32 [ 0, %206 ], [ %.3261, %518 ]
  %.0254 = phi i1 [ false, %206 ], [ %.3257, %518 ]
  %.1251 = phi double [ %.0250313, %206 ], [ %.2252, %518 ]
  %.0231 = phi i32 [ 0, %206 ], [ %.3234, %518 ]
  %220 = phi <2 x double> [ <double 0.000000e+00, double 1.000000e+00>, %206 ], [ %304, %518 ]
  %221 = phi <2 x double> [ <double 0.000000e+00, double 1.000000e+00>, %206 ], [ %364, %518 ]
  %222 = load i32, ptr %151, align 8, !tbaa !25
  %223 = add i32 %222, 1
  store i32 %223, ptr %151, align 8, !tbaa !25
  %224 = load i32, ptr %6, align 4, !tbaa !5
  %225 = fneg double %.1251
  call void @_ZNK8lsmrBase5ScaleEjdPd(ptr noundef nonnull align 8 dereferenceable(136) %0, i32 noundef %224, double noundef %225, ptr noundef nonnull %75)
  %226 = load i32, ptr %6, align 4, !tbaa !5
  %227 = load i32, ptr %7, align 4, !tbaa !5
  %228 = load ptr, ptr %0, align 8, !tbaa !22
  %229 = getelementptr inbounds i8, ptr %228, i64 16
  %230 = load ptr, ptr %229, align 8
  invoke void %230(ptr noundef nonnull align 8 dereferenceable(136) %0, i32 noundef %226, i32 noundef %227, ptr noundef nonnull %78, ptr noundef nonnull %75)
          to label %231 unwind label %.loopexit321

231:                                              ; preds = %219
  %232 = load i32, ptr %6, align 4, !tbaa !5
  %233 = invoke noundef double @_ZNK8lsmrBase5Dnrm2EjPKd(ptr noundef nonnull align 8 dereferenceable(136) %0, i32 noundef %232, ptr noundef nonnull %75)
          to label %234 unwind label %.loopexit321

234:                                              ; preds = %231
  %235 = fcmp ogt double %233, 0.000000e+00
  br i1 %235, label %236, label %281

236:                                              ; preds = %234
  %237 = load i32, ptr %6, align 4, !tbaa !5
  %238 = fdiv double 1.000000e+00, %233
  call void @_ZNK8lsmrBase5ScaleEjdPd(ptr noundef nonnull align 8 dereferenceable(136) %0, i32 noundef %237, double noundef %238, ptr noundef nonnull %75)
  br i1 %.not288.not, label %249, label %239

239:                                              ; preds = %236
  %240 = add i32 %.0258, 1
  %241 = icmp uge i32 %240, %18
  %. = select i1 %241, i32 0, i32 %240
  %.0254. = select i1 %241, i1 true, i1 %.0254
  %242 = load i32, ptr %7, align 4, !tbaa !5
  %243 = zext i32 %242 to i64
  %244 = getelementptr inbounds double, ptr %78, i64 %243
  %245 = mul i32 %242, %.
  %246 = zext i32 %245 to i64
  %247 = getelementptr inbounds double, ptr %84, i64 %246
  %248 = invoke noundef ptr @_ZSt4copyIPdS0_ET0_T_S2_S1_(ptr noundef nonnull %78, ptr noundef nonnull %244, ptr noundef %247)
          to label %249 unwind label %.loopexit321

249:                                              ; preds = %239, %236
  %.2260 = phi i32 [ %., %239 ], [ %.0258, %236 ]
  %.2256 = phi i1 [ %.0254., %239 ], [ %.0254, %236 ]
  %250 = load i32, ptr %7, align 4, !tbaa !5
  %251 = fneg double %233
  call void @_ZNK8lsmrBase5ScaleEjdPd(ptr noundef nonnull align 8 dereferenceable(136) %0, i32 noundef %250, double noundef %251, ptr noundef nonnull %78)
  %252 = load i32, ptr %6, align 4, !tbaa !5
  %253 = load i32, ptr %7, align 4, !tbaa !5
  %254 = load ptr, ptr %0, align 8, !tbaa !22
  %255 = getelementptr inbounds i8, ptr %254, i64 24
  %256 = load ptr, ptr %255, align 8
  invoke void %256(ptr noundef nonnull align 8 dereferenceable(136) %0, i32 noundef %252, i32 noundef %253, ptr noundef nonnull %78, ptr noundef nonnull %75)
          to label %257 unwind label %.loopexit321

257:                                              ; preds = %249
  br i1 %.not288.not, label %.loopexit, label %258

258:                                              ; preds = %257
  %259 = add i32 %.2260, 1
  %260 = select i1 %.2256, i32 %18, i32 %259
  %.not325 = icmp eq i32 %260, 0
  br i1 %.not325, label %.loopexit, label %.lr.ph

.lr.ph:                                           ; preds = %258, %.lr.ph
  %.0273322 = phi i32 [ %273, %.lr.ph ], [ 0, %258 ]
  %261 = load i32, ptr %7, align 4, !tbaa !5
  %262 = zext i32 %261 to i64
  %263 = getelementptr inbounds double, ptr %78, i64 %262
  %264 = mul i32 %261, %.0273322
  %265 = zext i32 %264 to i64
  %266 = getelementptr inbounds double, ptr %84, i64 %265
  %267 = call noundef double @_ZSt13inner_productIPdS0_dET1_T_S2_T0_S1_(ptr noundef nonnull %78, ptr noundef nonnull %263, ptr noundef %266, double noundef 0.000000e+00)
  %268 = load i32, ptr %7, align 4, !tbaa !5
  %269 = fneg double %267
  %270 = mul i32 %268, %.0273322
  %271 = zext i32 %270 to i64
  %272 = getelementptr inbounds double, ptr %84, i64 %271
  call void @_Z5daxpyjdPKdPd(i32 noundef %268, double noundef %269, ptr noundef %272, ptr noundef nonnull %78)
  %273 = add nuw i32 %.0273322, 1
  %exitcond.not = icmp eq i32 %273, %260
  br i1 %exitcond.not, label %.loopexit, label %.lr.ph, !llvm.loop !32

.loopexit:                                        ; preds = %.lr.ph, %258, %257
  %274 = load i32, ptr %7, align 4, !tbaa !5
  %275 = invoke noundef double @_ZNK8lsmrBase5Dnrm2EjPKd(ptr noundef nonnull align 8 dereferenceable(136) %0, i32 noundef %274, ptr noundef nonnull %78)
          to label %276 unwind label %.loopexit321

276:                                              ; preds = %.loopexit
  %277 = fcmp ogt double %275, 0.000000e+00
  br i1 %277, label %278, label %281

278:                                              ; preds = %276
  %279 = load i32, ptr %7, align 4, !tbaa !5
  %280 = fdiv double 1.000000e+00, %275
  call void @_ZNK8lsmrBase5ScaleEjdPd(ptr noundef nonnull align 8 dereferenceable(136) %0, i32 noundef %279, double noundef %280, ptr noundef nonnull %78)
  br label %281

281:                                              ; preds = %276, %278, %234
  %.3261 = phi i32 [ %.2260, %278 ], [ %.2260, %276 ], [ %.0258, %234 ]
  %.3257 = phi i1 [ %.2256, %278 ], [ %.2256, %276 ], [ %.0254, %234 ]
  %.2252 = phi double [ %275, %278 ], [ %275, %276 ], [ %.1251, %234 ]
  %282 = load double, ptr %65, align 8, !tbaa !15
  %283 = invoke noundef double @_ZNK8lsmrBase6D2NormEdd(ptr noundef nonnull align 8 dereferenceable(136) %0, double noundef %.0264, double noundef %282)
          to label %284 unwind label %334

284:                                              ; preds = %281
  %285 = fdiv double %.0264, %283
  %286 = load double, ptr %65, align 8, !tbaa !15
  %287 = invoke noundef double @_ZNK8lsmrBase6D2NormEdd(ptr noundef nonnull align 8 dereferenceable(136) %0, double noundef %283, double noundef %233)
          to label %288 unwind label %336

288:                                              ; preds = %284
  %289 = fdiv double %283, %287
  %290 = fdiv double %233, %287
  %291 = fmul double %.2252, %289
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %13) #8
  store double %.0266, ptr %13, align 8, !tbaa !9
  %292 = extractelement <2 x double> %220, i64 0
  %293 = fmul double %292, %287
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %14) #8
  %294 = insertelement <2 x double> %220, double %.2252, i64 0
  %295 = insertelement <2 x double> poison, double %290, i64 0
  %296 = insertelement <2 x double> %295, double %287, i64 1
  %297 = fmul <2 x double> %294, %296
  %298 = extractelement <2 x double> %297, i64 1
  store double %298, ptr %14, align 8, !tbaa !9
  %299 = extractelement <2 x double> %297, i64 0
  %300 = invoke noundef double @_ZNK8lsmrBase6D2NormEdd(ptr noundef nonnull align 8 dereferenceable(136) %0, double noundef %298, double noundef %299)
          to label %301 unwind label %338

301:                                              ; preds = %288
  %302 = insertelement <2 x double> poison, double %300, i64 0
  %303 = shufflevector <2 x double> %302, <2 x double> poison, <2 x i32> zeroinitializer
  %304 = fdiv <2 x double> %297, %303
  %305 = extractelement <2 x double> %304, i64 1
  %306 = fmul double %.0263, %305
  %307 = extractelement <2 x double> %304, i64 0
  %308 = fneg double %307
  %309 = fmul double %.0263, %308
  %310 = load i32, ptr %7, align 4, !tbaa !5
  %.not326 = icmp eq i32 %310, 0
  br i1 %.not326, label %._crit_edge, label %.lr.ph324

.lr.ph324:                                        ; preds = %301
  %311 = fneg double %293
  %312 = fmul double %287, %311
  %313 = fmul double %287, %300
  %314 = fdiv double %306, %313
  %315 = fneg double %299
  %316 = fdiv double %315, %287
  %wide.trip.count = zext i32 %310 to i64
  %min.iters.check = icmp ult i32 %310, 4
  br i1 %min.iters.check, label %scalar.ph.preheader, label %vector.memcheck

scalar.ph.preheader:                              ; preds = %middle.block, %vector.memcheck, %.lr.ph324
  %indvars.iv.ph = phi i64 [ 0, %vector.memcheck ], [ 0, %.lr.ph324 ], [ %n.vec, %middle.block ]
  br label %scalar.ph

vector.memcheck:                                  ; preds = %.lr.ph324
  %317 = shl nuw nsw i64 %wide.trip.count, 3
  %scevgep335 = getelementptr i8, ptr %scevgep, i64 %317
  %scevgep336 = getelementptr i8, ptr %4, i64 %317
  %scevgep338 = getelementptr i8, ptr %scevgep337, i64 %317
  %scevgep341 = getelementptr i8, ptr %scevgep340, i64 %317
  %bound0 = icmp ult ptr %83, %scevgep336
  %bound1 = icmp ugt ptr %scevgep335, %4
  %found.conflict = and i1 %bound0, %bound1
  %bound0342 = icmp ult ptr %83, %scevgep338
  %bound1343 = icmp ult ptr %82, %scevgep335
  %found.conflict344 = and i1 %bound0342, %bound1343
  %conflict.rdx = or i1 %found.conflict, %found.conflict344
  %bound1346 = icmp ult ptr %13, %scevgep335
  %found.conflict347 = and i1 %bound0345, %bound1346
  %conflict.rdx348 = or i1 %conflict.rdx, %found.conflict347
  %bound0349 = icmp ult ptr %83, %scevgep341
  %bound1350 = icmp ult ptr %78, %scevgep335
  %found.conflict351 = and i1 %bound0349, %bound1350
  %conflict.rdx352 = or i1 %conflict.rdx348, %found.conflict351
  %bound0353 = icmp ugt ptr %scevgep338, %4
  %bound1354 = icmp ult ptr %82, %scevgep336
  %found.conflict355 = and i1 %bound0353, %bound1354
  %conflict.rdx356 = or i1 %conflict.rdx352, %found.conflict355
  %bound1358 = icmp ult ptr %13, %scevgep336
  %found.conflict359 = and i1 %bound0357, %bound1358
  %conflict.rdx360 = or i1 %conflict.rdx356, %found.conflict359
  %bound0361 = icmp ugt ptr %scevgep341, %4
  %bound1362 = icmp ult ptr %78, %scevgep336
  %found.conflict363 = and i1 %bound0361, %bound1362
  %conflict.rdx364 = or i1 %conflict.rdx360, %found.conflict363
  %bound1366 = icmp ult ptr %13, %scevgep338
  %found.conflict367 = and i1 %bound0365, %bound1366
  %conflict.rdx368 = or i1 %conflict.rdx364, %found.conflict367
  %bound0369 = icmp ult ptr %82, %scevgep341
  %bound1370 = icmp ult ptr %78, %scevgep338
  %found.conflict371 = and i1 %bound0369, %bound1370
  %conflict.rdx372 = or i1 %conflict.rdx368, %found.conflict371
  br i1 %conflict.rdx372, label %scalar.ph.preheader, label %vector.ph

vector.ph:                                        ; preds = %vector.memcheck
  %n.vec = and i64 %wide.trip.count, 4294967294
  %broadcast.splatinsert379 = insertelement <2 x double> poison, double %314, i64 0
  %broadcast.splat380 = shufflevector <2 x double> %broadcast.splatinsert379, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splatinsert383 = insertelement <2 x double> poison, double %316, i64 0
  %broadcast.splat384 = shufflevector <2 x double> %broadcast.splatinsert383, <2 x double> poison, <2 x i32> zeroinitializer
  %318 = load double, ptr %13, align 8, !tbaa !9, !alias.scope !34
  %.scalar = fmul double %.0265, %318
  %.scalar385 = fdiv double %312, %.scalar
  %319 = insertelement <2 x double> poison, double %.scalar385, i64 0
  %320 = shufflevector <2 x double> %319, <2 x double> poison, <2 x i32> zeroinitializer
  br label %vector.body

vector.body:                                      ; preds = %vector.body, %vector.ph
  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %321 = getelementptr inbounds double, ptr %82, i64 %index
  %wide.load = load <2 x double>, ptr %321, align 8, !tbaa !9, !alias.scope !37, !noalias !39
  %322 = getelementptr inbounds double, ptr %83, i64 %index
  %wide.load375 = load <2 x double>, ptr %322, align 8, !tbaa !9, !alias.scope !41, !noalias !43
  %323 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %320, <2 x double> %wide.load375, <2 x double> %wide.load)
  store <2 x double> %323, ptr %322, align 8, !tbaa !9, !alias.scope !41, !noalias !43
  %324 = getelementptr inbounds double, ptr %4, i64 %index
  %wide.load378 = load <2 x double>, ptr %324, align 8, !tbaa !9, !alias.scope !45, !noalias !46
  %325 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %broadcast.splat380, <2 x double> %323, <2 x double> %wide.load378)
  store <2 x double> %325, ptr %324, align 8, !tbaa !9, !alias.scope !45, !noalias !46
  %326 = getelementptr inbounds double, ptr %78, i64 %index
  %wide.load381 = load <2 x double>, ptr %326, align 8, !tbaa !9, !alias.scope !47
  %wide.load382 = load <2 x double>, ptr %321, align 8, !tbaa !9, !alias.scope !37, !noalias !39
  %327 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %broadcast.splat384, <2 x double> %wide.load382, <2 x double> %wide.load381)
  store <2 x double> %327, ptr %321, align 8, !tbaa !9, !alias.scope !37, !noalias !39
  %index.next = add nuw i64 %index, 2
  %328 = icmp eq i64 %index.next, %n.vec
  br i1 %328, label %middle.block, label %vector.body, !llvm.loop !48

middle.block:                                     ; preds = %vector.body
  %cmp.n = icmp eq i64 %n.vec, %wide.trip.count
  br i1 %cmp.n, label %._crit_edge, label %scalar.ph.preheader

._crit_edge:                                      ; preds = %scalar.ph, %middle.block, %301
  %329 = fmul double %.0269, %285
  %330 = fneg double %290
  %331 = fmul double %329, %330
  %332 = extractelement <2 x double> %221, i64 1
  %333 = invoke noundef double @_ZNK8lsmrBase6D2NormEdd(ptr noundef nonnull align 8 dereferenceable(136) %0, double noundef %332, double noundef %293)
          to label %355 unwind label %394

334:                                              ; preds = %281
  %335 = landingpad { ptr, i32 }
          cleanup
  br label %525

336:                                              ; preds = %284
  %337 = landingpad { ptr, i32 }
          cleanup
  br label %525

338:                                              ; preds = %288
  %339 = landingpad { ptr, i32 }
          cleanup
  br label %524

scalar.ph:                                        ; preds = %scalar.ph.preheader, %scalar.ph
  %indvars.iv = phi i64 [ %indvars.iv.next, %scalar.ph ], [ %indvars.iv.ph, %scalar.ph.preheader ]
  %340 = getelementptr inbounds double, ptr %82, i64 %indvars.iv
  %341 = load double, ptr %340, align 8, !tbaa !9
  %342 = load double, ptr %13, align 8, !tbaa !9
  %343 = fmul double %.0265, %342
  %344 = getelementptr inbounds double, ptr %83, i64 %indvars.iv
  %345 = load double, ptr %344, align 8, !tbaa !9
  %346 = fdiv double %312, %343
  %347 = call double @llvm.fmuladd.f64(double %346, double %345, double %341)
  store double %347, ptr %344, align 8, !tbaa !9
  %348 = getelementptr inbounds double, ptr %4, i64 %indvars.iv
  %349 = load double, ptr %348, align 8, !tbaa !9
  %350 = call double @llvm.fmuladd.f64(double %314, double %347, double %349)
  store double %350, ptr %348, align 8, !tbaa !9
  %351 = getelementptr inbounds double, ptr %78, i64 %indvars.iv
  %352 = load double, ptr %351, align 8, !tbaa !9
  %353 = load double, ptr %340, align 8, !tbaa !9
  %354 = call double @llvm.fmuladd.f64(double %316, double %353, double %352)
  store double %354, ptr %340, align 8, !tbaa !9
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %exitcond328.not = icmp eq i64 %indvars.iv.next, %wide.trip.count
  br i1 %exitcond328.not, label %._crit_edge, label %scalar.ph, !llvm.loop !51

355:                                              ; preds = %._crit_edge
  %356 = fmul double %329, %289
  %357 = fneg double %286
  %358 = fdiv double %357, %283
  %359 = fmul double %.0269, %358
  %360 = insertelement <2 x double> %221, double %293, i64 0
  %361 = insertelement <2 x double> poison, double %333, i64 0
  %362 = shufflevector <2 x double> %361, <2 x double> poison, <2 x i32> zeroinitializer
  %363 = fdiv <2 x double> %360, %362
  %364 = fmul <2 x double> %303, %363
  %365 = extractelement <2 x double> %363, i64 0
  %366 = fneg double %365
  %367 = extractelement <2 x double> %363, i64 1
  %368 = fmul double %356, %367
  %369 = call double @llvm.fmuladd.f64(double %366, double %.0270, double %368)
  %370 = extractelement <2 x double> %221, i64 0
  %371 = fneg double %370
  %372 = call double @llvm.fmuladd.f64(double %371, double %.0272, double %.0278)
  %373 = fdiv double %372, %333
  %374 = extractelement <2 x double> %364, i64 0
  %375 = fneg double %374
  %376 = call double @llvm.fmuladd.f64(double %375, double %373, double %306)
  %377 = extractelement <2 x double> %364, i64 1
  %378 = fdiv double %376, %377
  %379 = call double @llvm.fmuladd.f64(double %359, double %359, double %.0277)
  %380 = fsub double %369, %378
  %381 = call double @llvm.fmuladd.f64(double %380, double %380, double %379)
  %382 = call double @llvm.fmuladd.f64(double %331, double %331, double %381)
  %383 = call double @sqrt(double noundef %382) #8
  store double %383, ptr %168, align 8, !tbaa !28
  %384 = call double @llvm.fmuladd.f64(double %233, double %233, double %.0276)
  %385 = call double @sqrt(double noundef %384) #8
  store double %385, ptr %207, align 8, !tbaa !31
  %386 = call double @llvm.fmuladd.f64(double %.2252, double %.2252, double %384)
  %387 = 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) %13)
  %388 = load double, ptr %387, align 8, !tbaa !9
  store double %388, ptr %11, align 8, !tbaa !9
  %389 = load i32, ptr %151, align 8, !tbaa !25
  %390 = icmp ugt i32 %389, 1
  br i1 %390, label %391, label %398

391:                                              ; preds = %355
  %392 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3minIdERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %12, ptr noundef nonnull align 8 dereferenceable(8) %13)
  %393 = load double, ptr %392, align 8, !tbaa !9
  store double %393, ptr %12, align 8, !tbaa !9
  br label %398

394:                                              ; preds = %._crit_edge
  %395 = landingpad { ptr, i32 }
          cleanup
  br label %524

396:                                              ; preds = %398
  %397 = landingpad { ptr, i32 }
          cleanup
  br label %524

398:                                              ; preds = %391, %355
  %399 = 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) %14)
  %400 = load double, ptr %399, align 8, !tbaa !9
  %401 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3minIdERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %12, ptr noundef nonnull align 8 dereferenceable(8) %14)
  %402 = load double, ptr %401, align 8, !tbaa !9
  %403 = fdiv double %400, %402
  store double %403, ptr %208, align 8, !tbaa !52
  %404 = call noundef double @_ZSt3absd(double noundef %309)
  store double %404, ptr %139, align 8, !tbaa !24
  %405 = load i32, ptr %7, align 4, !tbaa !5
  %406 = invoke noundef double @_ZNK8lsmrBase5Dnrm2EjPKd(ptr noundef nonnull align 8 dereferenceable(136) %0, i32 noundef %405, ptr noundef %4)
          to label %407 unwind label %396

407:                                              ; preds = %398
  store double %406, ptr %209, align 8, !tbaa !53
  %408 = load double, ptr %168, align 8, !tbaa !28
  %409 = load double, ptr %162, align 8, !tbaa !26
  %410 = load double, ptr %139, align 8, !tbaa !24
  %411 = load double, ptr %207, align 8, !tbaa !31
  %412 = fmul double %408, %411
  %413 = fdiv double %410, %412
  %414 = load double, ptr %208, align 8, !tbaa !52
  %415 = fdiv double 1.000000e+00, %414
  %416 = fmul double %406, %411
  %417 = insertelement <2 x double> poison, double %408, i64 0
  %418 = insertelement <2 x double> %417, double %416, i64 1
  %419 = insertelement <2 x double> poison, double %409, i64 0
  %420 = shufflevector <2 x double> %419, <2 x double> poison, <2 x i32> zeroinitializer
  %421 = fdiv <2 x double> %418, %420
  %422 = extractelement <2 x double> %421, i64 1
  %423 = fadd double %422, 1.000000e+00
  %424 = extractelement <2 x double> %421, i64 0
  %425 = fdiv double %424, %423
  %426 = load double, ptr %210, align 8, !tbaa !18
  %427 = load double, ptr %211, align 8, !tbaa !16
  %428 = fmul double %411, %427
  %429 = fmul double %406, %428
  %430 = fdiv double %429, %409
  %431 = fadd double %426, %430
  %432 = load i32, ptr %151, align 8, !tbaa !25
  %433 = load i32, ptr %212, align 4, !tbaa !19
  %.not290 = icmp uge i32 %432, %433
  %434 = fadd double %415, 1.000000e+00
  %435 = fcmp ole double %434, 1.000000e+00
  %436 = fadd double %413, 1.000000e+00
  %437 = fcmp ole double %436, 1.000000e+00
  %438 = fadd double %425, 1.000000e+00
  %439 = fcmp ole double %438, 1.000000e+00
  %440 = fcmp ole double %415, %.0275
  %441 = fcmp ole double %413, %427
  %442 = fcmp ole double %424, %431
  %443 = or i1 %.not290, %442
  %444 = or i1 %441, %443
  %445 = or i1 %435, %444
  %446 = or i1 %437, %445
  %447 = or i1 %439, %446
  %448 = or i1 %440, %447
  br i1 %448, label %449, label %450

449:                                              ; preds = %407
  %simplifycfg.merge = select i1 %435, i32 6, i32 7
  %simplifycfg.merge308 = select i1 %437, i32 5, i32 %simplifycfg.merge
  %simplifycfg.merge309 = select i1 %439, i32 4, i32 %simplifycfg.merge308
  %simplifycfg.merge310 = select i1 %440, i32 3, i32 %simplifycfg.merge309
  %simplifycfg.merge311 = select i1 %441, i32 2, i32 %simplifycfg.merge310
  %spec.select315 = select i1 %442, i32 1, i32 %simplifycfg.merge311
  store i32 %spec.select315, ptr %163, align 4, !tbaa !27
  br label %450

450:                                              ; preds = %407, %449
  %451 = load ptr, ptr %19, align 8, !tbaa !11
  %.not291 = icmp eq ptr %451, null
  br i1 %.not291, label %thread-pre-split, label %452

452:                                              ; preds = %450
  %453 = load i32, ptr %7, align 4, !tbaa !5
  %454 = icmp ult i32 %453, 41
  %455 = icmp ult i32 %432, 11
  %456 = add i32 %433, -10
  %.not292 = icmp uge i32 %432, %456
  %457 = or i1 %455, %.not292
  %458 = urem i32 %432, 10
  %459 = icmp eq i32 %458, 0
  %460 = or i1 %459, %457
  %narrow = select i1 %460, i1 true, i1 %454
  %461 = fcmp ugt double %415, %213
  br i1 %461, label %463, label %462

462:                                              ; preds = %452
  br label %463

463:                                              ; preds = %462, %452
  %.0 = phi i1 [ true, %462 ], [ %narrow, %452 ]
  %464 = fmul double %431, 1.100000e+00
  %465 = fcmp ugt double %424, %464
  br i1 %465, label %466, label %.thread329

466:                                              ; preds = %463
  %467 = fmul double %427, 1.100000e+00
  %468 = fcmp ole double %413, %467
  %469 = load i32, ptr %163, align 4, !tbaa !27
  %.not294 = icmp ne i32 %469, 0
  %470 = or i1 %.not294, %468
  %spec.select = select i1 %470, i1 true, i1 %.0
  br i1 %spec.select, label %.thread329, label %518

.thread329:                                       ; preds = %463, %466
  %471 = icmp sgt i32 %.0231, 19
  br i1 %471, label %.invoke333, label %478

.invoke333:                                       ; preds = %.thread329
  %472 = load i8, ptr %68, align 8, !tbaa !21, !range !29, !noundef !30
  %473 = trunc nuw i8 %472 to i1
  %474 = select i1 %473, ptr @.str.10, ptr @.str.11
  %475 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %451, ptr noundef nonnull %474)
          to label %478 unwind label %476

476:                                              ; preds = %.invoke333, %516, %513, %511, %508, %506, %504, %502, %500, %498, %495, %493, %490, %488, %485, %483, %478
  %477 = landingpad { ptr, i32 }
          cleanup
  br label %524

478:                                              ; preds = %.invoke333, %.thread329
  %.1232 = phi i32 [ %.0231, %.thread329 ], [ 0, %.invoke333 ]
  %479 = add nsw i32 %.1232, 1
  %480 = load ptr, ptr %19, align 8, !tbaa !11
  %481 = load i32, ptr %151, align 8, !tbaa !25
  %482 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %480, i32 noundef %481)
          to label %483 unwind label %476

483:                                              ; preds = %478
  %484 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %482, ptr noundef nonnull @.str.12)
          to label %485 unwind label %476

485:                                              ; preds = %483
  %486 = load double, ptr %4, align 8, !tbaa !9
  %487 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %484, double noundef %486)
          to label %488 unwind label %476

488:                                              ; preds = %485
  %489 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %487, ptr noundef nonnull @.str.12)
          to label %490 unwind label %476

490:                                              ; preds = %488
  %491 = load double, ptr %168, align 8, !tbaa !28
  %492 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %489, double noundef %491)
          to label %493 unwind label %476

493:                                              ; preds = %490
  %494 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %492, ptr noundef nonnull @.str.12)
          to label %495 unwind label %476

495:                                              ; preds = %493
  %496 = load double, ptr %139, align 8, !tbaa !24
  %497 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %494, double noundef %496)
          to label %498 unwind label %476

498:                                              ; preds = %495
  %499 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %497, ptr noundef nonnull @.str.12)
          to label %500 unwind label %476

500:                                              ; preds = %498
  %501 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %499, double noundef %424)
          to label %502 unwind label %476

502:                                              ; preds = %500
  %503 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %501, ptr noundef nonnull @.str.12)
          to label %504 unwind label %476

504:                                              ; preds = %502
  %505 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %503, double noundef %413)
          to label %506 unwind label %476

506:                                              ; preds = %504
  %507 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %505, ptr noundef nonnull @.str.12)
          to label %508 unwind label %476

508:                                              ; preds = %506
  %509 = load double, ptr %207, align 8, !tbaa !31
  %510 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %507, double noundef %509)
          to label %511 unwind label %476

511:                                              ; preds = %508
  %512 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %510, ptr noundef nonnull @.str.12)
          to label %513 unwind label %476

513:                                              ; preds = %511
  %514 = load double, ptr %208, align 8, !tbaa !52
  %515 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %512, double noundef %514)
          to label %516 unwind label %476

516:                                              ; preds = %513
  %517 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %515, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %thread-pre-split unwind label %476

thread-pre-split:                                 ; preds = %450, %516
  %.3234.ph = phi i32 [ %479, %516 ], [ %.0231, %450 ]
  %.pr = load i32, ptr %163, align 4, !tbaa !27
  br label %518

518:                                              ; preds = %thread-pre-split, %466
  %519 = phi i32 [ %.pr, %thread-pre-split ], [ 0, %466 ]
  %.3234 = phi i32 [ %.3234.ph, %thread-pre-split ], [ %.0231, %466 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #8
  %520 = icmp eq i32 %519, 0
  br i1 %520, label %219, label %521, !llvm.loop !54

521:                                              ; preds = %518
  invoke void @_ZN8lsmrBase19TerminationPrintOutEv(ptr noundef nonnull align 8 dereferenceable(136) %0)
          to label %522 unwind label %.loopexit.split-lp

522:                                              ; preds = %521
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #8
  br label %523

523:                                              ; preds = %141, %522
  call void @_ZNSt6vectorIdSaIdEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %9) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %9) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #8
  ret void

524:                                              ; preds = %394, %476, %396, %338
  %.pn.pn.pn = phi { ptr, i32 } [ %339, %338 ], [ %395, %394 ], [ %477, %476 ], [ %397, %396 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #8
  br label %525

525:                                              ; preds = %.loopexit321, %.loopexit.split-lp, %334, %524, %336
  %.pn300 = phi { ptr, i32 } [ %335, %334 ], [ %.pn.pn.pn, %524 ], [ %337, %336 ], [ %lpad.loopexit, %.loopexit321 ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #8
  br label %526

526:                                              ; preds = %127, %170, %525, %148, %125
  %.pn304.pn = phi { ptr, i32 } [ %126, %125 ], [ %128, %127 ], [ %149, %148 ], [ %.pn300, %525 ], [ %171, %170 ]
  call void @_ZNSt6vectorIdSaIdEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %9) #8
  br label %527

527:                                              ; preds = %526, %123
  %.pn304.pn.pn = phi { ptr, i32 } [ %.pn304.pn, %526 ], [ %124, %123 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %9) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #8
  resume { ptr, i32 } %.pn304.pn.pn
}

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3minIjERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 4 dereferenceable(4)) local_unnamed_addr #3

; Function Attrs: inlinehint mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) local_unnamed_addr #6

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

; Function Attrs: inlinehint mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_(ptr noundef nonnull align 8 dereferenceable(8)) #6

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

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

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

declare i32 @__gxx_personality_v0(...)

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

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

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef double @_ZSt13inner_productIPdS0_dET1_T_S2_T0_S1_(ptr noundef, ptr noundef, ptr noundef, double noundef) local_unnamed_addr #3

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_Z5daxpyjdPKdPd(i32 noundef, double noundef, ptr noundef, ptr noundef) local_unnamed_addr #3

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

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

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

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

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare <2 x double> @llvm.fmuladd.v2f64(<2 x double>, <2 x double>, <2 x double>) #7

attributes #0 = { 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 #1 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #3 = { 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 #4 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #5 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { 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 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #8 = { 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 = !{!"int", !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, !14, i64 128}
!12 = !{!"_ZTS8lsmrBase", !10, i64 8, !10, i64 16, !10, i64 24, !10, i64 32, !10, i64 40, !10, i64 48, !10, i64 56, !10, i64 64, !10, i64 72, !10, i64 80, !10, i64 88, !10, i64 96, !13, i64 104, !6, i64 108, !6, i64 112, !6, i64 116, !6, i64 120, !6, i64 124, !14, i64 128}
!13 = !{!"bool", !7, i64 0}
!14 = !{!"any pointer", !7, i64 0}
!15 = !{!12, !10, i64 96}
!16 = !{!12, !10, i64 64}
!17 = !{!12, !10, i64 80}
!18 = !{!12, !10, i64 72}
!19 = !{!12, !6, i64 108}
!20 = !{!12, !6, i64 124}
!21 = !{!12, !13, i64 104}
!22 = !{!23, !23, i64 0}
!23 = !{!"vtable pointer", !8, i64 0}
!24 = !{!12, !10, i64 40}
!25 = !{!12, !6, i64 112}
!26 = !{!12, !10, i64 24}
!27 = !{!12, !6, i64 116}
!28 = !{!12, !10, i64 32}
!29 = !{i8 0, i8 2}
!30 = !{}
!31 = !{!12, !10, i64 8}
!32 = distinct !{!32, !33}
!33 = !{!"llvm.loop.mustprogress"}
!34 = !{!35}
!35 = distinct !{!35, !36}
!36 = distinct !{!36, !"LVerDomain"}
!37 = !{!38}
!38 = distinct !{!38, !36}
!39 = !{!35, !40}
!40 = distinct !{!40, !36}
!41 = !{!42}
!42 = distinct !{!42, !36}
!43 = !{!44, !38, !35, !40}
!44 = distinct !{!44, !36}
!45 = !{!44}
!46 = !{!38, !35, !40}
!47 = !{!40}
!48 = distinct !{!48, !33, !49, !50}
!49 = !{!"llvm.loop.isvectorized", i32 1}
!50 = !{!"llvm.loop.unroll.runtime.disable"}
!51 = distinct !{!51, !33, !49}
!52 = !{!12, !10, i64 16}
!53 = !{!12, !10, i64 48}
!54 = distinct !{!54, !33}


; Effective O3 passes: AggressiveInstCombinePass,CorrelatedValuePropagationPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,LICMPass,LoopLoadEliminationPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,LoopVectorizePass,ReassociatePass,SLPVectorizerPass,SROAPass,SimplifyCFGPass,VectorCombinePass