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

; 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.lsqrBase = type { ptr, double, double, double, double, double, double, double, double, double, double, double, double, i8, i32, i32, i32, i32, ptr, i8, ptr }

@.str = external hidden unnamed_addr constant [12 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [88 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [79 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [2 x i8], align 1

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef double @_ZNK8lsqrBase6D2NormEdd(ptr noundef nonnull align 8 dereferenceable(152), 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: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare double @llvm.fmuladd.f64(double, double, double) #3

; 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 @_ZNK8lsqrBase5ScaleEjdPd(ptr noundef nonnull align 8 dereferenceable(152), i32 noundef, double noundef, ptr noundef) #4 align 2

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN8lsqrBase5SolveEjjPKdPd(ptr noundef nonnull align 8 dereferenceable(152) %0, i32 noundef %1, i32 noundef %2, ptr noundef %3, ptr noundef %4) #1 align 2 {
  %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 i32, align 4
  %14 = alloca double, align 8
  %15 = alloca double, align 8
  %16 = alloca double, align 8
  %17 = alloca double, align 8
  %18 = alloca double, align 8
  %19 = alloca double, align 8
  %20 = alloca double, align 8
  %21 = alloca double, align 8
  %22 = alloca ptr, align 8
  %23 = alloca ptr, align 8
  %24 = alloca ptr, align 8
  %25 = alloca double, align 8
  %26 = alloca double, align 8
  %27 = alloca i32, align 4
  %28 = alloca double, align 8
  %29 = alloca double, align 8
  %30 = alloca double, align 8
  %31 = alloca double, align 8
  %32 = alloca double, align 8
  %33 = alloca double, align 8
  %34 = alloca double, align 8
  %35 = alloca double, align 8
  %36 = alloca 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 i32, align 4
  %49 = alloca double, align 8
  %50 = alloca i32, align 4
  %51 = alloca double, align 8
  %52 = alloca double, align 8
  %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 i8, align 1
  %60 = alloca i32, align 4
  %61 = alloca double, align 8
  %62 = alloca i32, align 4
  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
  %63 = load ptr, ptr %6, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #8
  store double 0.000000e+00, ptr %11, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #8
  store double 1.000000e+00, ptr %12, align 8, !tbaa !11
  %64 = getelementptr inbounds %class.lsqrBase, ptr %63, i32 0, i32 18
  %65 = load ptr, ptr %64, align 8, !tbaa !13
  %66 = icmp ne ptr %65, null
  br i1 %66, label %67, label %111

67:                                               ; preds = %5
  %68 = getelementptr inbounds %class.lsqrBase, ptr %63, i32 0, i32 18
  %69 = load ptr, ptr %68, align 8, !tbaa !13
  %70 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %69, ptr noundef @.str)
  %71 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %70, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  %72 = getelementptr inbounds %class.lsqrBase, ptr %63, i32 0, i32 18
  %73 = load ptr, ptr %72, align 8, !tbaa !13
  %74 = load i32, ptr %7, align 4, !tbaa !9
  %75 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %73, i32 noundef %74)
  %76 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %75, ptr noundef @.str.1)
  %77 = load i32, ptr %8, align 4, !tbaa !9
  %78 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %76, i32 noundef %77)
  %79 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %78, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  %80 = getelementptr inbounds %class.lsqrBase, ptr %63, i32 0, i32 18
  %81 = load ptr, ptr %80, align 8, !tbaa !13
  %82 = getelementptr inbounds %class.lsqrBase, ptr %63, i32 0, i32 12
  %83 = load double, ptr %82, align 8, !tbaa !16
  %84 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %81, double noundef %83)
  %85 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %84, ptr noundef @.str.1)
  %86 = getelementptr inbounds %class.lsqrBase, ptr %63, i32 0, i32 19
  %87 = load i8, ptr %86, align 8, !tbaa !17, !range !18, !noundef !19
  %88 = trunc i8 %87 to i1
  %89 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEb(ptr noundef nonnull align 8 dereferenceable(8) %85, i1 noundef zeroext %88)
  %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.lsqrBase, ptr %63, i32 0, i32 18
  %92 = load ptr, ptr %91, align 8, !tbaa !13
  %93 = getelementptr inbounds %class.lsqrBase, ptr %63, i32 0, i32 8
  %94 = load double, ptr %93, align 8, !tbaa !20
  %95 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %92, double 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.1)
  %97 = getelementptr inbounds %class.lsqrBase, ptr %63, i32 0, i32 10
  %98 = load double, ptr %97, align 8, !tbaa !21
  %99 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %96, double noundef %98)
  %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.lsqrBase, ptr %63, i32 0, i32 18
  %102 = load ptr, ptr %101, align 8, !tbaa !13
  %103 = getelementptr inbounds %class.lsqrBase, ptr %63, i32 0, i32 9
  %104 = load double, ptr %103, align 8, !tbaa !22
  %105 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %102, double noundef %104)
  %106 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %105, ptr noundef @.str.1)
  %107 = getelementptr inbounds %class.lsqrBase, ptr %63, i32 0, i32 14
  %108 = load i32, ptr %107, align 4, !tbaa !23
  %109 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %106, i32 noundef %108)
  %110 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %109, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  br label %111

111:                                              ; preds = %67, %5
  %112 = getelementptr inbounds %class.lsqrBase, ptr %63, i32 0, i32 12
  %113 = load double, ptr %112, align 8, !tbaa !16
  %114 = fcmp ogt double %113, 0.000000e+00
  %115 = getelementptr inbounds %class.lsqrBase, ptr %63, i32 0, i32 13
  %116 = zext i1 %114 to i8
  store i8 %116, ptr %115, align 8, !tbaa !24
  %117 = getelementptr inbounds %class.lsqrBase, ptr %63, i32 0, i32 15
  store i32 0, ptr %117, align 8, !tbaa !25
  %118 = getelementptr inbounds %class.lsqrBase, ptr %63, i32 0, i32 16
  store i32 0, ptr %118, align 4, !tbaa !26
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #8
  store i32 0, ptr %13, align 4, !tbaa !9
  %119 = getelementptr inbounds %class.lsqrBase, ptr %63, i32 0, i32 17
  store i32 0, ptr %119, align 8, !tbaa !27
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #8
  store double 0.000000e+00, ptr %14, align 8, !tbaa !11
  %120 = getelementptr inbounds %class.lsqrBase, ptr %63, i32 0, i32 10
  %121 = load double, ptr %120, align 8, !tbaa !21
  %122 = fcmp ogt double %121, 0.000000e+00
  br i1 %122, label %123, label %127

123:                                              ; preds = %111
  %124 = getelementptr inbounds %class.lsqrBase, ptr %63, i32 0, i32 10
  %125 = load double, ptr %124, align 8, !tbaa !21
  %126 = fdiv double 1.000000e+00, %125
  store double %126, ptr %14, align 8, !tbaa !11
  br label %127

127:                                              ; preds = %123, %111
  %128 = getelementptr inbounds %class.lsqrBase, ptr %63, i32 0, i32 1
  store double 0.000000e+00, ptr %128, align 8, !tbaa !28
  %129 = getelementptr inbounds %class.lsqrBase, ptr %63, i32 0, i32 2
  store double 0.000000e+00, ptr %129, align 8, !tbaa !29
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #8
  store double 0.000000e+00, ptr %15, align 8, !tbaa !11
  %130 = getelementptr inbounds %class.lsqrBase, ptr %63, i32 0, i32 7
  store double 0.000000e+00, ptr %130, align 8, !tbaa !30
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #8
  store double 0.000000e+00, ptr %16, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #8
  store double 0.000000e+00, ptr %17, align 8, !tbaa !11
  %131 = getelementptr inbounds %class.lsqrBase, ptr %63, i32 0, i32 6
  store double 0.000000e+00, ptr %131, align 8, !tbaa !31
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #8
  store double 0.000000e+00, ptr %18, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #8
  store double -1.000000e+00, ptr %19, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #8
  store double 0.000000e+00, ptr %20, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #8
  store double 0.000000e+00, ptr %21, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #8
  %132 = load i32, ptr %7, align 4, !tbaa !9
  %133 = zext i32 %132 to i64
  %134 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %133, i64 8)
  %135 = extractvalue { i64, i1 } %134, 1
  %136 = extractvalue { i64, i1 } %134, 0
  %137 = select i1 %135, i64 -1, i64 %136
  %138 = call noalias noundef nonnull ptr @_Znam(i64 noundef %137) #9
  store ptr %138, ptr %22, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #8
  %139 = load i32, ptr %8, align 4, !tbaa !9
  %140 = zext i32 %139 to i64
  %141 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %140, i64 8)
  %142 = extractvalue { i64, i1 } %141, 1
  %143 = extractvalue { i64, i1 } %141, 0
  %144 = select i1 %142, i64 -1, i64 %143
  %145 = call noalias noundef nonnull ptr @_Znam(i64 noundef %144) #9
  store ptr %145, ptr %23, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #8
  %146 = load i32, ptr %8, align 4, !tbaa !9
  %147 = zext i32 %146 to i64
  %148 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %147, i64 8)
  %149 = extractvalue { i64, i1 } %148, 1
  %150 = extractvalue { i64, i1 } %148, 0
  %151 = select i1 %149, i64 -1, i64 %150
  %152 = call noalias noundef nonnull ptr @_Znam(i64 noundef %151) #9
  store ptr %152, ptr %24, align 8, !tbaa !5
  %153 = load ptr, ptr %9, align 8, !tbaa !5
  %154 = load ptr, ptr %9, 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
  %158 = load ptr, ptr %22, align 8, !tbaa !5
  %159 = call noundef ptr @_ZSt4copyIPKdPdET0_T_S4_S3_(ptr noundef %153, ptr noundef %157, ptr noundef %158)
  %160 = load ptr, ptr %23, align 8, !tbaa !5
  %161 = load ptr, ptr %23, align 8, !tbaa !5
  %162 = load i32, ptr %8, align 4, !tbaa !9
  %163 = zext i32 %162 to i64
  %164 = getelementptr inbounds double, ptr %161, i64 %163
  call void @_ZSt4fillIPddEvT_S1_RKT0_(ptr noundef %160, ptr noundef %164, ptr noundef nonnull align 8 dereferenceable(8) %11)
  %165 = load ptr, ptr %24, align 8, !tbaa !5
  %166 = load ptr, ptr %24, 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
  call void @_ZSt4fillIPddEvT_S1_RKT0_(ptr noundef %165, ptr noundef %169, ptr noundef nonnull align 8 dereferenceable(8) %11)
  %170 = load ptr, ptr %10, align 8, !tbaa !5
  %171 = load ptr, ptr %10, align 8, !tbaa !5
  %172 = load i32, ptr %8, align 4, !tbaa !9
  %173 = zext i32 %172 to i64
  %174 = getelementptr inbounds double, ptr %171, i64 %173
  call void @_ZSt4fillIPddEvT_S1_RKT0_(ptr noundef %170, ptr noundef %174, ptr noundef nonnull align 8 dereferenceable(8) %11)
  %175 = getelementptr inbounds %class.lsqrBase, ptr %63, i32 0, i32 19
  %176 = load i8, ptr %175, align 8, !tbaa !17, !range !18, !noundef !19
  %177 = trunc i8 %176 to i1
  br i1 %177, label %178, label %186

178:                                              ; preds = %127
  %179 = getelementptr inbounds %class.lsqrBase, ptr %63, i32 0, i32 20
  %180 = load ptr, ptr %179, align 8, !tbaa !32
  %181 = getelementptr inbounds %class.lsqrBase, ptr %63, i32 0, i32 20
  %182 = load ptr, ptr %181, align 8, !tbaa !32
  %183 = load i32, ptr %8, align 4, !tbaa !9
  %184 = zext i32 %183 to i64
  %185 = getelementptr inbounds double, ptr %182, i64 %184
  call void @_ZSt4fillIPddEvT_S1_RKT0_(ptr noundef %180, ptr noundef %185, ptr noundef nonnull align 8 dereferenceable(8) %11)
  br label %186

186:                                              ; preds = %178, %127
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #8
  store double 0.000000e+00, ptr %25, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #8
  %187 = load i32, ptr %7, align 4, !tbaa !9
  %188 = load ptr, ptr %22, align 8, !tbaa !5
  %189 = call noundef double @_ZNK8lsqrBase5Dnrm2EjPKd(ptr noundef nonnull align 8 dereferenceable(152) %63, i32 noundef %187, ptr noundef %188)
  store double %189, ptr %26, align 8, !tbaa !11
  %190 = load double, ptr %26, align 8, !tbaa !11
  %191 = fcmp ogt double %190, 0.000000e+00
  br i1 %191, label %192, label %207

192:                                              ; preds = %186
  %193 = load i32, ptr %7, align 4, !tbaa !9
  %194 = load double, ptr %26, align 8, !tbaa !11
  %195 = fdiv double 1.000000e+00, %194
  %196 = load ptr, ptr %22, align 8, !tbaa !5
  call void @_ZNK8lsqrBase5ScaleEjdPd(ptr noundef nonnull align 8 dereferenceable(152) %63, i32 noundef %193, double noundef %195, ptr noundef %196)
  %197 = load i32, ptr %7, align 4, !tbaa !9
  %198 = load i32, ptr %8, align 4, !tbaa !9
  %199 = load ptr, ptr %23, align 8, !tbaa !5
  %200 = load ptr, ptr %22, align 8, !tbaa !5
  %201 = load ptr, ptr %63, align 8, !tbaa !33
  %202 = getelementptr inbounds ptr, ptr %201, i64 3
  %203 = load ptr, ptr %202, align 8
  call void %203(ptr noundef nonnull align 8 dereferenceable(152) %63, i32 noundef %197, i32 noundef %198, ptr noundef %199, ptr noundef %200)
  %204 = load i32, ptr %8, align 4, !tbaa !9
  %205 = load ptr, ptr %23, align 8, !tbaa !5
  %206 = call noundef double @_ZNK8lsqrBase5Dnrm2EjPKd(ptr noundef nonnull align 8 dereferenceable(152) %63, i32 noundef %204, ptr noundef %205)
  store double %206, ptr %25, align 8, !tbaa !11
  br label %207

207:                                              ; preds = %192, %186
  %208 = load double, ptr %25, align 8, !tbaa !11
  %209 = fcmp ogt double %208, 0.000000e+00
  br i1 %209, label %210, label %222

210:                                              ; preds = %207
  %211 = load i32, ptr %8, align 4, !tbaa !9
  %212 = load double, ptr %25, align 8, !tbaa !11
  %213 = fdiv double 1.000000e+00, %212
  %214 = load ptr, ptr %23, align 8, !tbaa !5
  call void @_ZNK8lsqrBase5ScaleEjdPd(ptr noundef nonnull align 8 dereferenceable(152) %63, i32 noundef %211, double noundef %213, ptr noundef %214)
  %215 = load ptr, ptr %23, align 8, !tbaa !5
  %216 = load ptr, ptr %23, align 8, !tbaa !5
  %217 = load i32, ptr %8, align 4, !tbaa !9
  %218 = zext i32 %217 to i64
  %219 = getelementptr inbounds double, ptr %216, i64 %218
  %220 = load ptr, ptr %24, align 8, !tbaa !5
  %221 = call noundef ptr @_ZSt4copyIPdS0_ET0_T_S2_S1_(ptr noundef %215, ptr noundef %219, ptr noundef %220)
  br label %222

222:                                              ; preds = %210, %207
  %223 = load double, ptr %25, align 8, !tbaa !11
  %224 = load double, ptr %26, align 8, !tbaa !11
  %225 = fmul double %223, %224
  %226 = getelementptr inbounds %class.lsqrBase, ptr %63, i32 0, i32 5
  store double %225, ptr %226, align 8, !tbaa !35
  %227 = getelementptr inbounds %class.lsqrBase, ptr %63, i32 0, i32 5
  %228 = load double, ptr %227, align 8, !tbaa !35
  %229 = fcmp oeq double %228, 0.000000e+00
  br i1 %229, label %230, label %243

230:                                              ; preds = %222
  call void @_ZN8lsqrBase19TerminationPrintOutEv(ptr noundef nonnull align 8 dereferenceable(152) %63)
  %231 = load ptr, ptr %22, align 8, !tbaa !5
  %232 = icmp eq ptr %231, null
  br i1 %232, label %234, label %233

233:                                              ; preds = %230
  call void @_ZdaPv(ptr noundef %231) #10
  br label %234

234:                                              ; preds = %233, %230
  %235 = load ptr, ptr %23, align 8, !tbaa !5
  %236 = icmp eq ptr %235, null
  br i1 %236, label %238, label %237

237:                                              ; preds = %234
  call void @_ZdaPv(ptr noundef %235) #10
  br label %238

238:                                              ; preds = %237, %234
  %239 = load ptr, ptr %24, align 8, !tbaa !5
  %240 = icmp eq ptr %239, null
  br i1 %240, label %242, label %241

241:                                              ; preds = %238
  call void @_ZdaPv(ptr noundef %239) #10
  br label %242

242:                                              ; preds = %241, %238
  store i32 1, ptr %27, align 4
  br label %995

243:                                              ; preds = %222
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #8
  %244 = load double, ptr %25, align 8, !tbaa !11
  store double %244, ptr %28, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #8
  %245 = load double, ptr %26, align 8, !tbaa !11
  store double %245, ptr %29, align 8, !tbaa !11
  %246 = load double, ptr %26, align 8, !tbaa !11
  %247 = getelementptr inbounds %class.lsqrBase, ptr %63, i32 0, i32 3
  store double %246, ptr %247, align 8, !tbaa !36
  %248 = load double, ptr %26, align 8, !tbaa !11
  %249 = getelementptr inbounds %class.lsqrBase, ptr %63, i32 0, i32 4
  store double %248, ptr %249, align 8, !tbaa !37
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #8
  store double 0.000000e+00, ptr %30, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #8
  store double 0.000000e+00, ptr %31, align 8, !tbaa !11
  %250 = getelementptr inbounds %class.lsqrBase, ptr %63, i32 0, i32 18
  %251 = load ptr, ptr %250, align 8, !tbaa !13
  %252 = icmp ne ptr %251, null
  br i1 %252, label %253, label %351

253:                                              ; preds = %243
  %254 = getelementptr inbounds %class.lsqrBase, ptr %63, i32 0, i32 13
  %255 = load i8, ptr %254, align 8, !tbaa !24, !range !18, !noundef !19
  %256 = trunc i8 %255 to i1
  br i1 %256, label %257, label %262

257:                                              ; preds = %253
  %258 = getelementptr inbounds %class.lsqrBase, ptr %63, i32 0, i32 18
  %259 = load ptr, ptr %258, align 8, !tbaa !13
  %260 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %259, ptr noundef @.str.2)
  %261 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %260, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  br label %267

262:                                              ; preds = %253
  %263 = getelementptr inbounds %class.lsqrBase, ptr %63, i32 0, i32 18
  %264 = load ptr, ptr %263, align 8, !tbaa !13
  %265 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %264, ptr noundef @.str.3)
  %266 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %265, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  br label %267

267:                                              ; preds = %262, %257
  store double 1.000000e+00, ptr %30, align 8, !tbaa !11
  %268 = load double, ptr %25, align 8, !tbaa !11
  %269 = load double, ptr %26, align 8, !tbaa !11
  %270 = fdiv double %268, %269
  store double %270, ptr %31, align 8, !tbaa !11
  %271 = getelementptr inbounds %class.lsqrBase, ptr %63, i32 0, i32 18
  %272 = load ptr, ptr %271, align 8, !tbaa !13
  %273 = load ptr, ptr %272, align 8, !tbaa !33
  %274 = getelementptr i8, ptr %273, i64 -24
  %275 = load i64, ptr %274, align 8
  %276 = getelementptr inbounds i8, ptr %272, i64 %275
  %277 = call noundef i64 @_ZNSt8ios_base5widthEl(ptr noundef nonnull align 8 dereferenceable(216) %276, i64 noundef 6)
  %278 = getelementptr inbounds %class.lsqrBase, ptr %63, i32 0, i32 18
  %279 = load ptr, ptr %278, align 8, !tbaa !13
  %280 = getelementptr inbounds %class.lsqrBase, ptr %63, i32 0, i32 15
  %281 = load i32, ptr %280, align 8, !tbaa !25
  %282 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %279, i32 noundef %281)
  %283 = getelementptr inbounds %class.lsqrBase, ptr %63, i32 0, i32 18
  %284 = load ptr, ptr %283, align 8, !tbaa !13
  %285 = load ptr, ptr %284, align 8, !tbaa !33
  %286 = getelementptr i8, ptr %285, i64 -24
  %287 = load i64, ptr %286, align 8
  %288 = getelementptr inbounds i8, ptr %284, i64 %287
  %289 = call noundef i64 @_ZNSt8ios_base9precisionEl(ptr noundef nonnull align 8 dereferenceable(216) %288, i64 noundef 9)
  %290 = getelementptr inbounds %class.lsqrBase, ptr %63, i32 0, i32 18
  %291 = load ptr, ptr %290, align 8, !tbaa !13
  %292 = load ptr, ptr %291, align 8, !tbaa !33
  %293 = getelementptr i8, ptr %292, i64 -24
  %294 = load i64, ptr %293, align 8
  %295 = getelementptr inbounds i8, ptr %291, i64 %294
  %296 = call noundef i64 @_ZNSt8ios_base5widthEl(ptr noundef nonnull align 8 dereferenceable(216) %295, i64 noundef 17)
  %297 = getelementptr inbounds %class.lsqrBase, ptr %63, i32 0, i32 18
  %298 = load ptr, ptr %297, align 8, !tbaa !13
  %299 = load ptr, ptr %10, align 8, !tbaa !5
  %300 = getelementptr inbounds double, ptr %299, i64 0
  %301 = load double, ptr %300, align 8, !tbaa !11
  %302 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %298, double noundef %301)
  %303 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %302, ptr noundef @.str.4)
  %304 = getelementptr inbounds %class.lsqrBase, ptr %63, i32 0, i32 18
  %305 = load ptr, ptr %304, align 8, !tbaa !13
  %306 = load ptr, ptr %305, align 8, !tbaa !33
  %307 = getelementptr i8, ptr %306, i64 -24
  %308 = load i64, ptr %307, align 8
  %309 = getelementptr inbounds i8, ptr %305, i64 %308
  %310 = call noundef i64 @_ZNSt8ios_base9precisionEl(ptr noundef nonnull align 8 dereferenceable(216) %309, i64 noundef 2)
  %311 = getelementptr inbounds %class.lsqrBase, ptr %63, i32 0, i32 18
  %312 = load ptr, ptr %311, align 8, !tbaa !13
  %313 = load ptr, ptr %312, align 8, !tbaa !33
  %314 = getelementptr i8, ptr %313, i64 -24
  %315 = load i64, ptr %314, align 8
  %316 = getelementptr inbounds i8, ptr %312, i64 %315
  %317 = call noundef i64 @_ZNSt8ios_base5widthEl(ptr noundef nonnull align 8 dereferenceable(216) %316, i64 noundef 10)
  %318 = getelementptr inbounds %class.lsqrBase, ptr %63, i32 0, i32 18
  %319 = load ptr, ptr %318, align 8, !tbaa !13
  %320 = getelementptr inbounds %class.lsqrBase, ptr %63, i32 0, i32 4
  %321 = load double, ptr %320, align 8, !tbaa !37
  %322 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %319, double noundef %321)
  %323 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %322, ptr noundef @.str.4)
  %324 = getelementptr inbounds %class.lsqrBase, ptr %63, i32 0, i32 18
  %325 = load ptr, ptr %324, align 8, !tbaa !13
  %326 = load ptr, ptr %325, align 8, !tbaa !33
  %327 = getelementptr i8, ptr %326, i64 -24
  %328 = load i64, ptr %327, align 8
  %329 = getelementptr inbounds i8, ptr %325, i64 %328
  %330 = call noundef i64 @_ZNSt8ios_base9precisionEl(ptr noundef nonnull align 8 dereferenceable(216) %329, i64 noundef 1)
  %331 = getelementptr inbounds %class.lsqrBase, ptr %63, i32 0, i32 18
  %332 = load ptr, ptr %331, align 8, !tbaa !13
  %333 = load ptr, ptr %332, align 8, !tbaa !33
  %334 = getelementptr i8, ptr %333, i64 -24
  %335 = load i64, ptr %334, align 8
  %336 = getelementptr inbounds i8, ptr %332, i64 %335
  %337 = call noundef i64 @_ZNSt8ios_base5widthEl(ptr noundef nonnull align 8 dereferenceable(216) %336, i64 noundef 9)
  %338 = getelementptr inbounds %class.lsqrBase, ptr %63, i32 0, i32 18
  %339 = load ptr, ptr %338, align 8, !tbaa !13
  %340 = load double, ptr %30, align 8, !tbaa !11
  %341 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %339, double noundef %340)
  %342 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %341, ptr noundef @.str.4)
  %343 = getelementptr inbounds %class.lsqrBase, ptr %63, i32 0, i32 18
  %344 = load ptr, ptr %343, align 8, !tbaa !13
  %345 = load double, ptr %31, align 8, !tbaa !11
  %346 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %344, double noundef %345)
  %347 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %346, ptr noundef @.str.4)
  %348 = getelementptr inbounds %class.lsqrBase, ptr %63, i32 0, i32 18
  %349 = load ptr, ptr %348, align 8, !tbaa !13
  %350 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %349, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  br label %351

351:                                              ; preds = %267, %243
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #8
  br label %352

352:                                              ; preds = %928, %351
  %353 = getelementptr inbounds %class.lsqrBase, ptr %63, i32 0, i32 15
  %354 = load i32, ptr %353, align 8, !tbaa !25
  %355 = add i32 %354, 1
  store i32 %355, ptr %353, align 8, !tbaa !25
  %356 = load i32, ptr %7, align 4, !tbaa !9
  %357 = load double, ptr %25, align 8, !tbaa !11
  %358 = fneg double %357
  %359 = load ptr, ptr %22, align 8, !tbaa !5
  call void @_ZNK8lsqrBase5ScaleEjdPd(ptr noundef nonnull align 8 dereferenceable(152) %63, i32 noundef %356, double noundef %358, ptr noundef %359)
  %360 = load i32, ptr %7, align 4, !tbaa !9
  %361 = load i32, ptr %8, align 4, !tbaa !9
  %362 = load ptr, ptr %23, align 8, !tbaa !5
  %363 = load ptr, ptr %22, align 8, !tbaa !5
  %364 = load ptr, ptr %63, align 8, !tbaa !33
  %365 = getelementptr inbounds ptr, ptr %364, i64 2
  %366 = load ptr, ptr %365, align 8
  call void %366(ptr noundef nonnull align 8 dereferenceable(152) %63, i32 noundef %360, i32 noundef %361, ptr noundef %362, ptr noundef %363)
  %367 = load i32, ptr %7, align 4, !tbaa !9
  %368 = load ptr, ptr %22, align 8, !tbaa !5
  %369 = call noundef double @_ZNK8lsqrBase5Dnrm2EjPKd(ptr noundef nonnull align 8 dereferenceable(152) %63, i32 noundef %367, ptr noundef %368)
  store double %369, ptr %26, align 8, !tbaa !11
  %370 = load double, ptr %25, align 8, !tbaa !11
  %371 = load double, ptr %26, align 8, !tbaa !11
  %372 = call noundef double @_ZNK8lsqrBase6D2NormEdd(ptr noundef nonnull align 8 dereferenceable(152) %63, double noundef %370, double noundef %371)
  store double %372, ptr %32, align 8, !tbaa !11
  %373 = load double, ptr %32, align 8, !tbaa !11
  %374 = getelementptr inbounds %class.lsqrBase, ptr %63, i32 0, i32 12
  %375 = load double, ptr %374, align 8, !tbaa !16
  %376 = call noundef double @_ZNK8lsqrBase6D2NormEdd(ptr noundef nonnull align 8 dereferenceable(152) %63, double noundef %373, double noundef %375)
  store double %376, ptr %32, align 8, !tbaa !11
  %377 = getelementptr inbounds %class.lsqrBase, ptr %63, i32 0, i32 1
  %378 = load double, ptr %377, align 8, !tbaa !28
  %379 = load double, ptr %32, align 8, !tbaa !11
  %380 = call noundef double @_ZNK8lsqrBase6D2NormEdd(ptr noundef nonnull align 8 dereferenceable(152) %63, double noundef %378, double noundef %379)
  %381 = getelementptr inbounds %class.lsqrBase, ptr %63, i32 0, i32 1
  store double %380, ptr %381, align 8, !tbaa !28
  %382 = load double, ptr %26, align 8, !tbaa !11
  %383 = fcmp ogt double %382, 0.000000e+00
  br i1 %383, label %384, label %411

384:                                              ; preds = %352
  %385 = load i32, ptr %7, align 4, !tbaa !9
  %386 = load double, ptr %26, align 8, !tbaa !11
  %387 = fdiv double 1.000000e+00, %386
  %388 = load ptr, ptr %22, align 8, !tbaa !5
  call void @_ZNK8lsqrBase5ScaleEjdPd(ptr noundef nonnull align 8 dereferenceable(152) %63, i32 noundef %385, double noundef %387, ptr noundef %388)
  %389 = load i32, ptr %8, align 4, !tbaa !9
  %390 = load double, ptr %26, align 8, !tbaa !11
  %391 = fneg double %390
  %392 = load ptr, ptr %23, align 8, !tbaa !5
  call void @_ZNK8lsqrBase5ScaleEjdPd(ptr noundef nonnull align 8 dereferenceable(152) %63, i32 noundef %389, double noundef %391, ptr noundef %392)
  %393 = load i32, ptr %7, align 4, !tbaa !9
  %394 = load i32, ptr %8, align 4, !tbaa !9
  %395 = load ptr, ptr %23, align 8, !tbaa !5
  %396 = load ptr, ptr %22, align 8, !tbaa !5
  %397 = load ptr, ptr %63, align 8, !tbaa !33
  %398 = getelementptr inbounds ptr, ptr %397, i64 3
  %399 = load ptr, ptr %398, align 8
  call void %399(ptr noundef nonnull align 8 dereferenceable(152) %63, i32 noundef %393, i32 noundef %394, ptr noundef %395, ptr noundef %396)
  %400 = load i32, ptr %8, align 4, !tbaa !9
  %401 = load ptr, ptr %23, align 8, !tbaa !5
  %402 = call noundef double @_ZNK8lsqrBase5Dnrm2EjPKd(ptr noundef nonnull align 8 dereferenceable(152) %63, i32 noundef %400, ptr noundef %401)
  store double %402, ptr %25, align 8, !tbaa !11
  %403 = load double, ptr %25, align 8, !tbaa !11
  %404 = fcmp ogt double %403, 0.000000e+00
  br i1 %404, label %405, label %410

405:                                              ; preds = %384
  %406 = load i32, ptr %8, align 4, !tbaa !9
  %407 = load double, ptr %25, align 8, !tbaa !11
  %408 = fdiv double 1.000000e+00, %407
  %409 = load ptr, ptr %23, align 8, !tbaa !5
  call void @_ZNK8lsqrBase5ScaleEjdPd(ptr noundef nonnull align 8 dereferenceable(152) %63, i32 noundef %406, double noundef %408, ptr noundef %409)
  br label %410

410:                                              ; preds = %405, %384
  br label %411

411:                                              ; preds = %410, %352
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #8
  %412 = load double, ptr %28, align 8, !tbaa !11
  store double %412, ptr %35, align 8, !tbaa !11
  %413 = getelementptr inbounds %class.lsqrBase, ptr %63, i32 0, i32 13
  %414 = load i8, ptr %413, align 8, !tbaa !24, !range !18, !noundef !19
  %415 = trunc i8 %414 to i1
  br i1 %415, label %416, label %434

416:                                              ; preds = %411
  %417 = load double, ptr %28, align 8, !tbaa !11
  %418 = getelementptr inbounds %class.lsqrBase, ptr %63, i32 0, i32 12
  %419 = load double, ptr %418, align 8, !tbaa !16
  %420 = call noundef double @_ZNK8lsqrBase6D2NormEdd(ptr noundef nonnull align 8 dereferenceable(152) %63, double noundef %417, double noundef %419)
  store double %420, ptr %35, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #8
  %421 = load double, ptr %28, align 8, !tbaa !11
  %422 = load double, ptr %35, align 8, !tbaa !11
  %423 = fdiv double %421, %422
  store double %423, ptr %36, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #8
  %424 = getelementptr inbounds %class.lsqrBase, ptr %63, i32 0, i32 12
  %425 = load double, ptr %424, align 8, !tbaa !16
  %426 = load double, ptr %35, align 8, !tbaa !11
  %427 = fdiv double %425, %426
  store double %427, ptr %37, align 8, !tbaa !11
  %428 = load double, ptr %37, align 8, !tbaa !11
  %429 = load double, ptr %29, align 8, !tbaa !11
  %430 = fmul double %428, %429
  store double %430, ptr %17, align 8, !tbaa !11
  %431 = load double, ptr %36, align 8, !tbaa !11
  %432 = load double, ptr %29, align 8, !tbaa !11
  %433 = fmul double %431, %432
  store double %433, ptr %29, align 8, !tbaa !11
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #8
  br label %434

434:                                              ; preds = %416, %411
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #8
  %435 = load double, ptr %35, align 8, !tbaa !11
  %436 = load double, ptr %26, align 8, !tbaa !11
  %437 = call noundef double @_ZNK8lsqrBase6D2NormEdd(ptr noundef nonnull align 8 dereferenceable(152) %63, double noundef %435, double noundef %436)
  store double %437, ptr %38, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #8
  %438 = load double, ptr %35, align 8, !tbaa !11
  %439 = load double, ptr %38, align 8, !tbaa !11
  %440 = fdiv double %438, %439
  store double %440, ptr %39, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #8
  %441 = load double, ptr %26, align 8, !tbaa !11
  %442 = load double, ptr %38, align 8, !tbaa !11
  %443 = fdiv double %441, %442
  store double %443, ptr %40, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #8
  %444 = load double, ptr %40, align 8, !tbaa !11
  %445 = load double, ptr %25, align 8, !tbaa !11
  %446 = fmul double %444, %445
  store double %446, ptr %41, align 8, !tbaa !11
  %447 = load double, ptr %39, align 8, !tbaa !11
  %448 = fneg double %447
  %449 = load double, ptr %25, align 8, !tbaa !11
  %450 = fmul double %448, %449
  store double %450, ptr %28, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #8
  %451 = load double, ptr %39, align 8, !tbaa !11
  %452 = load double, ptr %29, align 8, !tbaa !11
  %453 = fmul double %451, %452
  store double %453, ptr %42, align 8, !tbaa !11
  %454 = load double, ptr %40, align 8, !tbaa !11
  %455 = load double, ptr %29, align 8, !tbaa !11
  %456 = fmul double %454, %455
  store double %456, ptr %29, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #8
  %457 = load double, ptr %40, align 8, !tbaa !11
  %458 = load double, ptr %42, align 8, !tbaa !11
  %459 = fmul double %457, %458
  store double %459, ptr %43, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #8
  %460 = load double, ptr %42, align 8, !tbaa !11
  %461 = load double, ptr %38, align 8, !tbaa !11
  %462 = fdiv double %460, %461
  store double %462, ptr %44, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %45) #8
  %463 = load double, ptr %41, align 8, !tbaa !11
  %464 = fneg double %463
  %465 = load double, ptr %38, align 8, !tbaa !11
  %466 = fdiv double %464, %465
  store double %466, ptr %45, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #8
  %467 = load double, ptr %38, align 8, !tbaa !11
  %468 = fdiv double 1.000000e+00, %467
  store double %468, ptr %46, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %47) #8
  store double 0.000000e+00, ptr %47, align 8, !tbaa !11
  %469 = getelementptr inbounds %class.lsqrBase, ptr %63, i32 0, i32 19
  %470 = load i8, ptr %469, align 8, !tbaa !17, !range !18, !noundef !19
  %471 = trunc i8 %470 to i1
  br i1 %471, label %472, label %535

472:                                              ; preds = %434
  call void @llvm.lifetime.start.p0(i64 4, ptr %48) #8
  store i32 0, ptr %48, align 4, !tbaa !9
  br label %473

473:                                              ; preds = %531, %472
  %474 = load i32, ptr %48, align 4, !tbaa !9
  %475 = load i32, ptr %8, align 4, !tbaa !9
  %476 = icmp ult i32 %474, %475
  br i1 %476, label %478, label %477

477:                                              ; preds = %473
  store i32 4, ptr %27, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #8
  br label %534

478:                                              ; preds = %473
  call void @llvm.lifetime.start.p0(i64 8, ptr %49) #8
  %479 = load ptr, ptr %24, align 8, !tbaa !5
  %480 = load i32, ptr %48, align 4, !tbaa !9
  %481 = zext i32 %480 to i64
  %482 = getelementptr inbounds double, ptr %479, i64 %481
  %483 = load double, ptr %482, align 8, !tbaa !11
  store double %483, ptr %49, align 8, !tbaa !11
  %484 = load double, ptr %44, align 8, !tbaa !11
  %485 = load double, ptr %49, align 8, !tbaa !11
  %486 = load ptr, ptr %10, align 8, !tbaa !5
  %487 = load i32, ptr %48, align 4, !tbaa !9
  %488 = zext i32 %487 to i64
  %489 = getelementptr inbounds double, ptr %486, i64 %488
  %490 = load double, ptr %489, align 8, !tbaa !11
  %491 = call double @llvm.fmuladd.f64(double %484, double %485, double %490)
  %492 = load ptr, ptr %10, align 8, !tbaa !5
  %493 = load i32, ptr %48, align 4, !tbaa !9
  %494 = zext i32 %493 to i64
  %495 = getelementptr inbounds double, ptr %492, i64 %494
  store double %491, ptr %495, align 8, !tbaa !11
  %496 = load double, ptr %45, align 8, !tbaa !11
  %497 = load double, ptr %49, align 8, !tbaa !11
  %498 = load ptr, ptr %23, align 8, !tbaa !5
  %499 = load i32, ptr %48, align 4, !tbaa !9
  %500 = zext i32 %499 to i64
  %501 = getelementptr inbounds double, ptr %498, i64 %500
  %502 = load double, ptr %501, align 8, !tbaa !11
  %503 = call double @llvm.fmuladd.f64(double %496, double %497, double %502)
  %504 = load ptr, ptr %24, align 8, !tbaa !5
  %505 = load i32, ptr %48, align 4, !tbaa !9
  %506 = zext i32 %505 to i64
  %507 = getelementptr inbounds double, ptr %504, i64 %506
  store double %503, ptr %507, align 8, !tbaa !11
  %508 = load double, ptr %46, align 8, !tbaa !11
  %509 = load double, ptr %49, align 8, !tbaa !11
  %510 = fmul double %508, %509
  %511 = load double, ptr %46, align 8, !tbaa !11
  %512 = load double, ptr %49, align 8, !tbaa !11
  %513 = fmul double %511, %512
  %514 = fmul double %510, %513
  store double %514, ptr %49, align 8, !tbaa !11
  %515 = load double, ptr %49, align 8, !tbaa !11
  %516 = getelementptr inbounds %class.lsqrBase, ptr %63, i32 0, i32 20
  %517 = load ptr, ptr %516, align 8, !tbaa !32
  %518 = load i32, ptr %48, align 4, !tbaa !9
  %519 = zext i32 %518 to i64
  %520 = getelementptr inbounds double, ptr %517, i64 %519
  %521 = load double, ptr %520, align 8, !tbaa !11
  %522 = fadd double %515, %521
  %523 = getelementptr inbounds %class.lsqrBase, ptr %63, i32 0, i32 20
  %524 = load ptr, ptr %523, align 8, !tbaa !32
  %525 = load i32, ptr %48, align 4, !tbaa !9
  %526 = zext i32 %525 to i64
  %527 = getelementptr inbounds double, ptr %524, i64 %526
  store double %522, ptr %527, align 8, !tbaa !11
  %528 = load double, ptr %49, align 8, !tbaa !11
  %529 = load double, ptr %47, align 8, !tbaa !11
  %530 = fadd double %528, %529
  store double %530, ptr %47, align 8, !tbaa !11
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #8
  br label %531

531:                                              ; preds = %478
  %532 = load i32, ptr %48, align 4, !tbaa !9
  %533 = add i32 %532, 1
  store i32 %533, ptr %48, align 4, !tbaa !9
  br label %473, !llvm.loop !38

534:                                              ; preds = %477
  br label %583

535:                                              ; preds = %434
  call void @llvm.lifetime.start.p0(i64 4, ptr %50) #8
  store i32 0, ptr %50, align 4, !tbaa !9
  br label %536

536:                                              ; preds = %579, %535
  %537 = load i32, ptr %50, align 4, !tbaa !9
  %538 = load i32, ptr %8, align 4, !tbaa !9
  %539 = icmp ult i32 %537, %538
  br i1 %539, label %541, label %540

540:                                              ; preds = %536
  store i32 7, ptr %27, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #8
  br label %582

541:                                              ; preds = %536
  call void @llvm.lifetime.start.p0(i64 8, ptr %51) #8
  %542 = load ptr, ptr %24, align 8, !tbaa !5
  %543 = load i32, ptr %50, align 4, !tbaa !9
  %544 = zext i32 %543 to i64
  %545 = getelementptr inbounds double, ptr %542, i64 %544
  %546 = load double, ptr %545, align 8, !tbaa !11
  store double %546, ptr %51, align 8, !tbaa !11
  %547 = load double, ptr %44, align 8, !tbaa !11
  %548 = load double, ptr %51, align 8, !tbaa !11
  %549 = load ptr, ptr %10, align 8, !tbaa !5
  %550 = load i32, ptr %50, align 4, !tbaa !9
  %551 = zext i32 %550 to i64
  %552 = getelementptr inbounds double, ptr %549, i64 %551
  %553 = load double, ptr %552, align 8, !tbaa !11
  %554 = call double @llvm.fmuladd.f64(double %547, double %548, double %553)
  %555 = load ptr, ptr %10, align 8, !tbaa !5
  %556 = load i32, ptr %50, align 4, !tbaa !9
  %557 = zext i32 %556 to i64
  %558 = getelementptr inbounds double, ptr %555, i64 %557
  store double %554, ptr %558, align 8, !tbaa !11
  %559 = load double, ptr %45, align 8, !tbaa !11
  %560 = load double, ptr %51, align 8, !tbaa !11
  %561 = load ptr, ptr %23, align 8, !tbaa !5
  %562 = load i32, ptr %50, align 4, !tbaa !9
  %563 = zext i32 %562 to i64
  %564 = getelementptr inbounds double, ptr %561, i64 %563
  %565 = load double, ptr %564, align 8, !tbaa !11
  %566 = call double @llvm.fmuladd.f64(double %559, double %560, double %565)
  %567 = load ptr, ptr %24, align 8, !tbaa !5
  %568 = load i32, ptr %50, align 4, !tbaa !9
  %569 = zext i32 %568 to i64
  %570 = getelementptr inbounds double, ptr %567, i64 %569
  store double %566, ptr %570, align 8, !tbaa !11
  %571 = load double, ptr %46, align 8, !tbaa !11
  %572 = load double, ptr %51, align 8, !tbaa !11
  %573 = fmul double %571, %572
  %574 = load double, ptr %46, align 8, !tbaa !11
  %575 = load double, ptr %51, align 8, !tbaa !11
  %576 = fmul double %574, %575
  %577 = load double, ptr %47, align 8, !tbaa !11
  %578 = call double @llvm.fmuladd.f64(double %573, double %576, double %577)
  store double %578, ptr %47, align 8, !tbaa !11
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #8
  br label %579

579:                                              ; preds = %541
  %580 = load i32, ptr %50, align 4, !tbaa !9
  %581 = add i32 %580, 1
  store i32 %581, ptr %50, align 4, !tbaa !9
  br label %536, !llvm.loop !40

582:                                              ; preds = %540
  br label %583

583:                                              ; preds = %582, %534
  %584 = load double, ptr %47, align 8, !tbaa !11
  %585 = call double @sqrt(double noundef %584) #8
  store double %585, ptr %47, align 8, !tbaa !11
  %586 = load double, ptr %15, align 8, !tbaa !11
  %587 = load double, ptr %47, align 8, !tbaa !11
  %588 = call noundef double @_ZNK8lsqrBase6D2NormEdd(ptr noundef nonnull align 8 dereferenceable(152) %63, double noundef %586, double noundef %587)
  store double %588, ptr %15, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %52) #8
  %589 = load double, ptr %42, align 8, !tbaa !11
  %590 = load double, ptr %47, align 8, !tbaa !11
  %591 = fmul double %589, %590
  %592 = call double @llvm.fabs.f64(double %591)
  store double %592, ptr %52, align 8, !tbaa !11
  %593 = getelementptr inbounds %class.lsqrBase, ptr %63, i32 0, i32 7
  %594 = load double, ptr %593, align 8, !tbaa !30
  %595 = load double, ptr %52, align 8, !tbaa !11
  %596 = fcmp olt double %594, %595
  br i1 %596, label %597, label %603

597:                                              ; preds = %583
  %598 = load double, ptr %52, align 8, !tbaa !11
  %599 = getelementptr inbounds %class.lsqrBase, ptr %63, i32 0, i32 7
  store double %598, ptr %599, align 8, !tbaa !30
  %600 = getelementptr inbounds %class.lsqrBase, ptr %63, i32 0, i32 15
  %601 = load i32, ptr %600, align 8, !tbaa !25
  %602 = getelementptr inbounds %class.lsqrBase, ptr %63, i32 0, i32 17
  store i32 %601, ptr %602, align 8, !tbaa !27
  br label %603

603:                                              ; preds = %597, %583
  call void @llvm.lifetime.start.p0(i64 8, ptr %53) #8
  %604 = load double, ptr %20, align 8, !tbaa !11
  %605 = load double, ptr %38, align 8, !tbaa !11
  %606 = fmul double %604, %605
  store double %606, ptr %53, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %54) #8
  %607 = load double, ptr %19, align 8, !tbaa !11
  %608 = fneg double %607
  %609 = load double, ptr %38, align 8, !tbaa !11
  %610 = fmul double %608, %609
  store double %610, ptr %54, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %55) #8
  %611 = load double, ptr %42, align 8, !tbaa !11
  %612 = load double, ptr %53, align 8, !tbaa !11
  %613 = load double, ptr %21, align 8, !tbaa !11
  %614 = fneg double %612
  %615 = call double @llvm.fmuladd.f64(double %614, double %613, double %611)
  store double %615, ptr %55, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %56) #8
  %616 = load double, ptr %55, align 8, !tbaa !11
  %617 = load double, ptr %54, align 8, !tbaa !11
  %618 = fdiv double %616, %617
  store double %618, ptr %56, align 8, !tbaa !11
  %619 = load double, ptr %18, align 8, !tbaa !11
  %620 = load double, ptr %56, align 8, !tbaa !11
  %621 = call noundef double @_ZNK8lsqrBase6D2NormEdd(ptr noundef nonnull align 8 dereferenceable(152) %63, double noundef %619, double noundef %620)
  %622 = getelementptr inbounds %class.lsqrBase, ptr %63, i32 0, i32 6
  store double %621, ptr %622, align 8, !tbaa !31
  call void @llvm.lifetime.start.p0(i64 8, ptr %57) #8
  %623 = load double, ptr %54, align 8, !tbaa !11
  %624 = load double, ptr %41, align 8, !tbaa !11
  %625 = call noundef double @_ZNK8lsqrBase6D2NormEdd(ptr noundef nonnull align 8 dereferenceable(152) %63, double noundef %623, double noundef %624)
  store double %625, ptr %57, align 8, !tbaa !11
  %626 = load double, ptr %54, align 8, !tbaa !11
  %627 = load double, ptr %57, align 8, !tbaa !11
  %628 = fdiv double %626, %627
  store double %628, ptr %19, align 8, !tbaa !11
  %629 = load double, ptr %41, align 8, !tbaa !11
  %630 = load double, ptr %57, align 8, !tbaa !11
  %631 = fdiv double %629, %630
  store double %631, ptr %20, align 8, !tbaa !11
  %632 = load double, ptr %55, align 8, !tbaa !11
  %633 = load double, ptr %57, align 8, !tbaa !11
  %634 = fdiv double %632, %633
  store double %634, ptr %21, align 8, !tbaa !11
  %635 = load double, ptr %18, align 8, !tbaa !11
  %636 = load double, ptr %21, align 8, !tbaa !11
  %637 = call noundef double @_ZNK8lsqrBase6D2NormEdd(ptr noundef nonnull align 8 dereferenceable(152) %63, double noundef %635, double noundef %636)
  store double %637, ptr %18, align 8, !tbaa !11
  %638 = getelementptr inbounds %class.lsqrBase, ptr %63, i32 0, i32 1
  %639 = load double, ptr %638, align 8, !tbaa !28
  %640 = load double, ptr %15, align 8, !tbaa !11
  %641 = fmul double %639, %640
  %642 = getelementptr inbounds %class.lsqrBase, ptr %63, i32 0, i32 2
  store double %641, ptr %642, align 8, !tbaa !29
  %643 = load double, ptr %16, align 8, !tbaa !11
  %644 = load double, ptr %17, align 8, !tbaa !11
  %645 = call noundef double @_ZNK8lsqrBase6D2NormEdd(ptr noundef nonnull align 8 dereferenceable(152) %63, double noundef %643, double noundef %644)
  store double %645, ptr %16, align 8, !tbaa !11
  %646 = load double, ptr %16, align 8, !tbaa !11
  %647 = load double, ptr %29, align 8, !tbaa !11
  %648 = call noundef double @_ZNK8lsqrBase6D2NormEdd(ptr noundef nonnull align 8 dereferenceable(152) %63, double noundef %646, double noundef %647)
  %649 = getelementptr inbounds %class.lsqrBase, ptr %63, i32 0, i32 4
  store double %648, ptr %649, align 8, !tbaa !37
  %650 = getelementptr inbounds %class.lsqrBase, ptr %63, i32 0, i32 4
  %651 = load double, ptr %650, align 8, !tbaa !37
  %652 = fadd double %651, 1.000000e-30
  store double %652, ptr %650, align 8, !tbaa !37
  %653 = load double, ptr %25, align 8, !tbaa !11
  %654 = load double, ptr %43, align 8, !tbaa !11
  %655 = call double @llvm.fabs.f64(double %654)
  %656 = fmul double %653, %655
  %657 = getelementptr inbounds %class.lsqrBase, ptr %63, i32 0, i32 5
  store double %656, ptr %657, align 8, !tbaa !35
  call void @llvm.lifetime.start.p0(i64 8, ptr %58) #8
  %658 = getelementptr inbounds %class.lsqrBase, ptr %63, i32 0, i32 4
  %659 = load double, ptr %658, align 8, !tbaa !37
  %660 = load double, ptr %15, align 8, !tbaa !11
  %661 = getelementptr inbounds %class.lsqrBase, ptr %63, i32 0, i32 6
  %662 = load double, ptr %661, align 8, !tbaa !31
  %663 = fmul double %660, %662
  %664 = fdiv double %659, %663
  %665 = call double @sqrt(double noundef %664) #8
  store double %665, ptr %58, align 8, !tbaa !11
  %666 = getelementptr inbounds %class.lsqrBase, ptr %63, i32 0, i32 4
  %667 = load double, ptr %666, align 8, !tbaa !37
  %668 = getelementptr inbounds %class.lsqrBase, ptr %63, i32 0, i32 3
  %669 = load double, ptr %668, align 8, !tbaa !36
  %670 = fdiv double %667, %669
  store double %670, ptr %30, align 8, !tbaa !11
  %671 = getelementptr inbounds %class.lsqrBase, ptr %63, i32 0, i32 5
  %672 = load double, ptr %671, align 8, !tbaa !35
  %673 = getelementptr inbounds %class.lsqrBase, ptr %63, i32 0, i32 1
  %674 = load double, ptr %673, align 8, !tbaa !28
  %675 = getelementptr inbounds %class.lsqrBase, ptr %63, i32 0, i32 4
  %676 = load double, ptr %675, align 8, !tbaa !37
  %677 = fmul double %674, %676
  %678 = fdiv double %672, %677
  store double %678, ptr %31, align 8, !tbaa !11
  %679 = getelementptr inbounds %class.lsqrBase, ptr %63, i32 0, i32 2
  %680 = load double, ptr %679, align 8, !tbaa !29
  %681 = fdiv double 1.000000e+00, %680
  store double %681, ptr %33, align 8, !tbaa !11
  %682 = load double, ptr %30, align 8, !tbaa !11
  %683 = getelementptr inbounds %class.lsqrBase, ptr %63, i32 0, i32 1
  %684 = load double, ptr %683, align 8, !tbaa !28
  %685 = getelementptr inbounds %class.lsqrBase, ptr %63, i32 0, i32 6
  %686 = load double, ptr %685, align 8, !tbaa !31
  %687 = fmul double %684, %686
  %688 = getelementptr inbounds %class.lsqrBase, ptr %63, i32 0, i32 3
  %689 = load double, ptr %688, align 8, !tbaa !36
  %690 = fdiv double %687, %689
  %691 = fadd double 1.000000e+00, %690
  %692 = fdiv double %682, %691
  store double %692, ptr %44, align 8, !tbaa !11
  %693 = getelementptr inbounds %class.lsqrBase, ptr %63, i32 0, i32 9
  %694 = load double, ptr %693, align 8, !tbaa !22
  %695 = getelementptr inbounds %class.lsqrBase, ptr %63, i32 0, i32 8
  %696 = load double, ptr %695, align 8, !tbaa !20
  %697 = getelementptr inbounds %class.lsqrBase, ptr %63, i32 0, i32 1
  %698 = load double, ptr %697, align 8, !tbaa !28
  %699 = fmul double %696, %698
  %700 = getelementptr inbounds %class.lsqrBase, ptr %63, i32 0, i32 6
  %701 = load double, ptr %700, align 8, !tbaa !31
  %702 = fmul double %699, %701
  %703 = getelementptr inbounds %class.lsqrBase, ptr %63, i32 0, i32 3
  %704 = load double, ptr %703, align 8, !tbaa !36
  %705 = fdiv double %702, %704
  %706 = fadd double %694, %705
  store double %706, ptr %34, align 8, !tbaa !11
  %707 = load double, ptr %33, align 8, !tbaa !11
  %708 = fadd double 1.000000e+00, %707
  store double %708, ptr %46, align 8, !tbaa !11
  %709 = load double, ptr %31, align 8, !tbaa !11
  %710 = fadd double 1.000000e+00, %709
  store double %710, ptr %45, align 8, !tbaa !11
  %711 = load double, ptr %44, align 8, !tbaa !11
  %712 = fadd double 1.000000e+00, %711
  store double %712, ptr %44, align 8, !tbaa !11
  %713 = getelementptr inbounds %class.lsqrBase, ptr %63, i32 0, i32 15
  %714 = load i32, ptr %713, align 8, !tbaa !25
  %715 = getelementptr inbounds %class.lsqrBase, ptr %63, i32 0, i32 14
  %716 = load i32, ptr %715, align 4, !tbaa !23
  %717 = icmp uge i32 %714, %716
  br i1 %717, label %718, label %720

718:                                              ; preds = %603
  %719 = getelementptr inbounds %class.lsqrBase, ptr %63, i32 0, i32 16
  store i32 5, ptr %719, align 4, !tbaa !26
  br label %720

720:                                              ; preds = %718, %603
  %721 = load double, ptr %46, align 8, !tbaa !11
  %722 = fcmp ole double %721, 1.000000e+00
  br i1 %722, label %723, label %725

723:                                              ; preds = %720
  %724 = getelementptr inbounds %class.lsqrBase, ptr %63, i32 0, i32 16
  store i32 4, ptr %724, align 4, !tbaa !26
  br label %725

725:                                              ; preds = %723, %720
  %726 = load double, ptr %45, align 8, !tbaa !11
  %727 = fcmp ole double %726, 1.000000e+00
  br i1 %727, label %728, label %730

728:                                              ; preds = %725
  %729 = getelementptr inbounds %class.lsqrBase, ptr %63, i32 0, i32 16
  store i32 2, ptr %729, align 4, !tbaa !26
  br label %730

730:                                              ; preds = %728, %725
  %731 = load double, ptr %44, align 8, !tbaa !11
  %732 = fcmp ole double %731, 1.000000e+00
  br i1 %732, label %733, label %735

733:                                              ; preds = %730
  %734 = getelementptr inbounds %class.lsqrBase, ptr %63, i32 0, i32 16
  store i32 1, ptr %734, align 4, !tbaa !26
  br label %735

735:                                              ; preds = %733, %730
  %736 = load double, ptr %33, align 8, !tbaa !11
  %737 = load double, ptr %14, align 8, !tbaa !11
  %738 = fcmp ole double %736, %737
  br i1 %738, label %739, label %741

739:                                              ; preds = %735
  %740 = getelementptr inbounds %class.lsqrBase, ptr %63, i32 0, i32 16
  store i32 4, ptr %740, align 4, !tbaa !26
  br label %741

741:                                              ; preds = %739, %735
  %742 = load double, ptr %31, align 8, !tbaa !11
  %743 = getelementptr inbounds %class.lsqrBase, ptr %63, i32 0, i32 8
  %744 = load double, ptr %743, align 8, !tbaa !20
  %745 = fcmp ole double %742, %744
  br i1 %745, label %746, label %748

746:                                              ; preds = %741
  %747 = getelementptr inbounds %class.lsqrBase, ptr %63, i32 0, i32 16
  store i32 2, ptr %747, align 4, !tbaa !26
  br label %748

748:                                              ; preds = %746, %741
  %749 = load double, ptr %30, align 8, !tbaa !11
  %750 = load double, ptr %34, align 8, !tbaa !11
  %751 = fcmp ole double %749, %750
  br i1 %751, label %752, label %754

752:                                              ; preds = %748
  %753 = getelementptr inbounds %class.lsqrBase, ptr %63, i32 0, i32 16
  store i32 1, ptr %753, align 4, !tbaa !26
  br label %754

754:                                              ; preds = %752, %748
  call void @llvm.lifetime.start.p0(i64 1, ptr %59) #8
  store i8 0, ptr %59, align 1, !tbaa !41
  %755 = getelementptr inbounds %class.lsqrBase, ptr %63, i32 0, i32 18
  %756 = load ptr, ptr %755, align 8, !tbaa !13
  %757 = icmp ne ptr %756, null
  br i1 %757, label %758, label %908

758:                                              ; preds = %754
  %759 = load i32, ptr %8, align 4, !tbaa !9
  %760 = icmp ule i32 %759, 40
  br i1 %760, label %761, label %762

761:                                              ; preds = %758
  store i8 1, ptr %59, align 1, !tbaa !41
  br label %762

762:                                              ; preds = %761, %758
  %763 = getelementptr inbounds %class.lsqrBase, ptr %63, i32 0, i32 15
  %764 = load i32, ptr %763, align 8, !tbaa !25
  %765 = icmp ule i32 %764, 10
  br i1 %765, label %766, label %767

766:                                              ; preds = %762
  store i8 1, ptr %59, align 1, !tbaa !41
  br label %767

767:                                              ; preds = %766, %762
  %768 = getelementptr inbounds %class.lsqrBase, ptr %63, i32 0, i32 15
  %769 = load i32, ptr %768, align 8, !tbaa !25
  %770 = getelementptr inbounds %class.lsqrBase, ptr %63, i32 0, i32 14
  %771 = load i32, ptr %770, align 4, !tbaa !23
  %772 = sub i32 %771, 10
  %773 = icmp uge i32 %769, %772
  br i1 %773, label %774, label %775

774:                                              ; preds = %767
  store i8 1, ptr %59, align 1, !tbaa !41
  br label %775

775:                                              ; preds = %774, %767
  %776 = getelementptr inbounds %class.lsqrBase, ptr %63, i32 0, i32 15
  %777 = load i32, ptr %776, align 8, !tbaa !25
  %778 = urem i32 %777, 10
  %779 = icmp eq i32 %778, 0
  br i1 %779, label %780, label %781

780:                                              ; preds = %775
  store i8 1, ptr %59, align 1, !tbaa !41
  br label %781

781:                                              ; preds = %780, %775
  %782 = load double, ptr %33, align 8, !tbaa !11
  %783 = load double, ptr %14, align 8, !tbaa !11
  %784 = fmul double 2.000000e+00, %783
  %785 = fcmp ole double %782, %784
  br i1 %785, label %786, label %787

786:                                              ; preds = %781
  store i8 1, ptr %59, align 1, !tbaa !41
  br label %787

787:                                              ; preds = %786, %781
  %788 = load double, ptr %31, align 8, !tbaa !11
  %789 = getelementptr inbounds %class.lsqrBase, ptr %63, i32 0, i32 8
  %790 = load double, ptr %789, align 8, !tbaa !20
  %791 = fmul double 1.000000e+01, %790
  %792 = fcmp ole double %788, %791
  br i1 %792, label %793, label %794

793:                                              ; preds = %787
  store i8 1, ptr %59, align 1, !tbaa !41
  br label %794

794:                                              ; preds = %793, %787
  %795 = load double, ptr %30, align 8, !tbaa !11
  %796 = load double, ptr %34, align 8, !tbaa !11
  %797 = fmul double 1.000000e+01, %796
  %798 = fcmp ole double %795, %797
  br i1 %798, label %799, label %800

799:                                              ; preds = %794
  store i8 1, ptr %59, align 1, !tbaa !41
  br label %800

800:                                              ; preds = %799, %794
  %801 = getelementptr inbounds %class.lsqrBase, ptr %63, i32 0, i32 16
  %802 = load i32, ptr %801, align 4, !tbaa !26
  %803 = icmp ne i32 %802, 0
  br i1 %803, label %804, label %805

804:                                              ; preds = %800
  store i8 1, ptr %59, align 1, !tbaa !41
  br label %805

805:                                              ; preds = %804, %800
  %806 = load i8, ptr %59, align 1, !tbaa !41, !range !18, !noundef !19
  %807 = trunc i8 %806 to i1
  br i1 %807, label %808, label %907

808:                                              ; preds = %805
  %809 = getelementptr inbounds %class.lsqrBase, ptr %63, i32 0, i32 18
  %810 = load ptr, ptr %809, align 8, !tbaa !13
  %811 = load ptr, ptr %810, align 8, !tbaa !33
  %812 = getelementptr i8, ptr %811, i64 -24
  %813 = load i64, ptr %812, align 8
  %814 = getelementptr inbounds i8, ptr %810, i64 %813
  %815 = call noundef i64 @_ZNSt8ios_base5widthEl(ptr noundef nonnull align 8 dereferenceable(216) %814, i64 noundef 6)
  %816 = getelementptr inbounds %class.lsqrBase, ptr %63, i32 0, i32 18
  %817 = load ptr, ptr %816, align 8, !tbaa !13
  %818 = getelementptr inbounds %class.lsqrBase, ptr %63, i32 0, i32 15
  %819 = load i32, ptr %818, align 8, !tbaa !25
  %820 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %817, i32 noundef %819)
  %821 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %820, ptr noundef @.str.4)
  %822 = getelementptr inbounds %class.lsqrBase, ptr %63, i32 0, i32 18
  %823 = load ptr, ptr %822, align 8, !tbaa !13
  %824 = load ptr, ptr %823, align 8, !tbaa !33
  %825 = getelementptr i8, ptr %824, i64 -24
  %826 = load i64, ptr %825, align 8
  %827 = getelementptr inbounds i8, ptr %823, i64 %826
  %828 = call noundef i64 @_ZNSt8ios_base9precisionEl(ptr noundef nonnull align 8 dereferenceable(216) %827, i64 noundef 9)
  %829 = getelementptr inbounds %class.lsqrBase, ptr %63, i32 0, i32 18
  %830 = load ptr, ptr %829, align 8, !tbaa !13
  %831 = load ptr, ptr %830, align 8, !tbaa !33
  %832 = getelementptr i8, ptr %831, i64 -24
  %833 = load i64, ptr %832, align 8
  %834 = getelementptr inbounds i8, ptr %830, i64 %833
  %835 = call noundef i64 @_ZNSt8ios_base5widthEl(ptr noundef nonnull align 8 dereferenceable(216) %834, i64 noundef 17)
  %836 = getelementptr inbounds %class.lsqrBase, ptr %63, i32 0, i32 18
  %837 = load ptr, ptr %836, align 8, !tbaa !13
  %838 = load ptr, ptr %10, align 8, !tbaa !5
  %839 = getelementptr inbounds double, ptr %838, i64 0
  %840 = load double, ptr %839, align 8, !tbaa !11
  %841 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %837, double noundef %840)
  %842 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %841, ptr noundef @.str.4)
  %843 = getelementptr inbounds %class.lsqrBase, ptr %63, i32 0, i32 18
  %844 = load ptr, ptr %843, align 8, !tbaa !13
  %845 = load ptr, ptr %844, align 8, !tbaa !33
  %846 = getelementptr i8, ptr %845, i64 -24
  %847 = load i64, ptr %846, align 8
  %848 = getelementptr inbounds i8, ptr %844, i64 %847
  %849 = call noundef i64 @_ZNSt8ios_base9precisionEl(ptr noundef nonnull align 8 dereferenceable(216) %848, i64 noundef 2)
  %850 = getelementptr inbounds %class.lsqrBase, ptr %63, i32 0, i32 18
  %851 = load ptr, ptr %850, align 8, !tbaa !13
  %852 = load ptr, ptr %851, align 8, !tbaa !33
  %853 = getelementptr i8, ptr %852, i64 -24
  %854 = load i64, ptr %853, align 8
  %855 = getelementptr inbounds i8, ptr %851, i64 %854
  %856 = call noundef i64 @_ZNSt8ios_base5widthEl(ptr noundef nonnull align 8 dereferenceable(216) %855, i64 noundef 10)
  %857 = getelementptr inbounds %class.lsqrBase, ptr %63, i32 0, i32 18
  %858 = load ptr, ptr %857, align 8, !tbaa !13
  %859 = getelementptr inbounds %class.lsqrBase, ptr %63, i32 0, i32 4
  %860 = load double, ptr %859, align 8, !tbaa !37
  %861 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %858, double noundef %860)
  %862 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %861, ptr noundef @.str.4)
  %863 = getelementptr inbounds %class.lsqrBase, ptr %63, i32 0, i32 18
  %864 = load ptr, ptr %863, align 8, !tbaa !13
  %865 = load ptr, ptr %864, align 8, !tbaa !33
  %866 = getelementptr i8, ptr %865, i64 -24
  %867 = load i64, ptr %866, align 8
  %868 = getelementptr inbounds i8, ptr %864, i64 %867
  %869 = call noundef i64 @_ZNSt8ios_base9precisionEl(ptr noundef nonnull align 8 dereferenceable(216) %868, i64 noundef 1)
  %870 = getelementptr inbounds %class.lsqrBase, ptr %63, i32 0, i32 18
  %871 = load ptr, ptr %870, align 8, !tbaa !13
  %872 = load ptr, ptr %871, align 8, !tbaa !33
  %873 = getelementptr i8, ptr %872, i64 -24
  %874 = load i64, ptr %873, align 8
  %875 = getelementptr inbounds i8, ptr %871, i64 %874
  %876 = call noundef i64 @_ZNSt8ios_base5widthEl(ptr noundef nonnull align 8 dereferenceable(216) %875, i64 noundef 9)
  %877 = getelementptr inbounds %class.lsqrBase, ptr %63, i32 0, i32 18
  %878 = load ptr, ptr %877, align 8, !tbaa !13
  %879 = load double, ptr %30, align 8, !tbaa !11
  %880 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %878, double noundef %879)
  %881 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %880, ptr noundef @.str.4)
  %882 = getelementptr inbounds %class.lsqrBase, ptr %63, i32 0, i32 18
  %883 = load ptr, ptr %882, align 8, !tbaa !13
  %884 = load double, ptr %31, align 8, !tbaa !11
  %885 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %883, double noundef %884)
  %886 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %885, ptr noundef @.str.4)
  %887 = getelementptr inbounds %class.lsqrBase, ptr %63, i32 0, i32 18
  %888 = load ptr, ptr %887, align 8, !tbaa !13
  %889 = getelementptr inbounds %class.lsqrBase, ptr %63, i32 0, i32 1
  %890 = load double, ptr %889, align 8, !tbaa !28
  %891 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %888, double noundef %890)
  %892 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %891, ptr noundef @.str.4)
  %893 = getelementptr inbounds %class.lsqrBase, ptr %63, i32 0, i32 18
  %894 = load ptr, ptr %893, align 8, !tbaa !13
  %895 = getelementptr inbounds %class.lsqrBase, ptr %63, i32 0, i32 2
  %896 = load double, ptr %895, align 8, !tbaa !29
  %897 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %894, double noundef %896)
  %898 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %897, ptr noundef @.str.4)
  %899 = getelementptr inbounds %class.lsqrBase, ptr %63, i32 0, i32 18
  %900 = load ptr, ptr %899, align 8, !tbaa !13
  %901 = load double, ptr %58, align 8, !tbaa !11
  %902 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %900, double noundef %901)
  %903 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %902, ptr noundef @.str.4)
  %904 = getelementptr inbounds %class.lsqrBase, ptr %63, i32 0, i32 18
  %905 = load ptr, ptr %904, align 8, !tbaa !13
  %906 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %905, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  br label %907

907:                                              ; preds = %808, %805
  br label %908

908:                                              ; preds = %907, %754
  %909 = getelementptr inbounds %class.lsqrBase, ptr %63, i32 0, i32 16
  %910 = load i32, ptr %909, align 4, !tbaa !26
  %911 = icmp eq i32 %910, 0
  br i1 %911, label %912, label %913

912:                                              ; preds = %908
  store i32 0, ptr %13, align 4, !tbaa !9
  br label %927

913:                                              ; preds = %908
  call void @llvm.lifetime.start.p0(i64 4, ptr %60) #8
  store i32 1, ptr %60, align 4, !tbaa !9
  %914 = load i32, ptr %13, align 4, !tbaa !9
  %915 = add i32 %914, 1
  store i32 %915, ptr %13, align 4, !tbaa !9
  %916 = load i32, ptr %13, align 4, !tbaa !9
  %917 = icmp ult i32 %916, 1
  br i1 %917, label %918, label %926

918:                                              ; preds = %913
  %919 = getelementptr inbounds %class.lsqrBase, ptr %63, i32 0, i32 15
  %920 = load i32, ptr %919, align 8, !tbaa !25
  %921 = getelementptr inbounds %class.lsqrBase, ptr %63, i32 0, i32 14
  %922 = load i32, ptr %921, align 4, !tbaa !23
  %923 = icmp ult i32 %920, %922
  br i1 %923, label %924, label %926

924:                                              ; preds = %918
  %925 = getelementptr inbounds %class.lsqrBase, ptr %63, i32 0, i32 16
  store i32 0, ptr %925, align 4, !tbaa !26
  br label %926

926:                                              ; preds = %924, %918, %913
  call void @llvm.lifetime.end.p0(i64 4, ptr %60) #8
  br label %927

927:                                              ; preds = %926, %912
  call void @llvm.lifetime.end.p0(i64 1, ptr %59) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #8
  br label %928

928:                                              ; preds = %927
  %929 = getelementptr inbounds %class.lsqrBase, ptr %63, i32 0, i32 16
  %930 = load i32, ptr %929, align 4, !tbaa !26
  %931 = icmp eq i32 %930, 0
  br i1 %931, label %352, label %932, !llvm.loop !42

932:                                              ; preds = %928
  %933 = getelementptr inbounds %class.lsqrBase, ptr %63, i32 0, i32 19
  %934 = load i8, ptr %933, align 8, !tbaa !17, !range !18, !noundef !19
  %935 = trunc i8 %934 to i1
  br i1 %935, label %936, label %982

936:                                              ; preds = %932
  call void @llvm.lifetime.start.p0(i64 8, ptr %61) #8
  store double 1.000000e+00, ptr %61, align 8, !tbaa !11
  %937 = load i32, ptr %7, align 4, !tbaa !9
  %938 = load i32, ptr %8, align 4, !tbaa !9
  %939 = icmp ugt i32 %937, %938
  br i1 %939, label %940, label %945

940:                                              ; preds = %936
  %941 = load i32, ptr %7, align 4, !tbaa !9
  %942 = load i32, ptr %8, align 4, !tbaa !9
  %943 = sub i32 %941, %942
  %944 = uitofp i32 %943 to double
  store double %944, ptr %61, align 8, !tbaa !11
  br label %945

945:                                              ; preds = %940, %936
  %946 = getelementptr inbounds %class.lsqrBase, ptr %63, i32 0, i32 13
  %947 = load i8, ptr %946, align 8, !tbaa !24, !range !18, !noundef !19
  %948 = trunc i8 %947 to i1
  br i1 %948, label %949, label %952

949:                                              ; preds = %945
  %950 = load i32, ptr %7, align 4, !tbaa !9
  %951 = uitofp i32 %950 to double
  store double %951, ptr %61, align 8, !tbaa !11
  br label %952

952:                                              ; preds = %949, %945
  %953 = getelementptr inbounds %class.lsqrBase, ptr %63, i32 0, i32 4
  %954 = load double, ptr %953, align 8, !tbaa !37
  %955 = load double, ptr %61, align 8, !tbaa !11
  %956 = call double @sqrt(double noundef %955) #8
  %957 = fdiv double %954, %956
  store double %957, ptr %61, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %62) #8
  store i32 0, ptr %62, align 4, !tbaa !9
  br label %958

958:                                              ; preds = %978, %952
  %959 = load i32, ptr %62, align 4, !tbaa !9
  %960 = load i32, ptr %8, align 4, !tbaa !9
  %961 = icmp ult i32 %959, %960
  br i1 %961, label %963, label %962

962:                                              ; preds = %958
  store i32 10, ptr %27, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %62) #8
  br label %981

963:                                              ; preds = %958
  %964 = load double, ptr %61, align 8, !tbaa !11
  %965 = getelementptr inbounds %class.lsqrBase, ptr %63, i32 0, i32 20
  %966 = load ptr, ptr %965, align 8, !tbaa !32
  %967 = load i32, ptr %62, align 4, !tbaa !9
  %968 = zext i32 %967 to i64
  %969 = getelementptr inbounds double, ptr %966, i64 %968
  %970 = load double, ptr %969, align 8, !tbaa !11
  %971 = call double @sqrt(double noundef %970) #8
  %972 = fmul double %964, %971
  %973 = getelementptr inbounds %class.lsqrBase, ptr %63, i32 0, i32 20
  %974 = load ptr, ptr %973, align 8, !tbaa !32
  %975 = load i32, ptr %62, align 4, !tbaa !9
  %976 = zext i32 %975 to i64
  %977 = getelementptr inbounds double, ptr %974, i64 %976
  store double %972, ptr %977, align 8, !tbaa !11
  br label %978

978:                                              ; preds = %963
  %979 = load i32, ptr %62, align 4, !tbaa !9
  %980 = add i32 %979, 1
  store i32 %980, ptr %62, align 4, !tbaa !9
  br label %958, !llvm.loop !43

981:                                              ; preds = %962
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #8
  br label %982

982:                                              ; preds = %981, %932
  call void @_ZN8lsqrBase19TerminationPrintOutEv(ptr noundef nonnull align 8 dereferenceable(152) %63)
  %983 = load ptr, ptr %22, align 8, !tbaa !5
  %984 = icmp eq ptr %983, null
  br i1 %984, label %986, label %985

985:                                              ; preds = %982
  call void @_ZdaPv(ptr noundef %983) #10
  br label %986

986:                                              ; preds = %985, %982
  %987 = load ptr, ptr %23, align 8, !tbaa !5
  %988 = icmp eq ptr %987, null
  br i1 %988, label %990, label %989

989:                                              ; preds = %986
  call void @_ZdaPv(ptr noundef %987) #10
  br label %990

990:                                              ; preds = %989, %986
  %991 = load ptr, ptr %24, align 8, !tbaa !5
  %992 = icmp eq ptr %991, null
  br i1 %992, label %994, label %993

993:                                              ; preds = %990
  call void @_ZdaPv(ptr noundef %991) #10
  br label %994

994:                                              ; preds = %993, %990
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #8
  store i32 0, ptr %27, align 4
  br label %995

995:                                              ; preds = %994, %242
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #8
  %996 = load i32, ptr %27, align 4
  switch i32 %996, label %998 [
    i32 0, label %997
    i32 1, label %997
  ]

997:                                              ; preds = %995, %995
  ret void

998:                                              ; preds = %995
  unreachable
}

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

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

; 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 uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEb(ptr noundef nonnull align 8 dereferenceable(8), i1 noundef zeroext) #1 align 2

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare { i64, i1 } @llvm.umul.with.overflow.i64(i64, i64) #3

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

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

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

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

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

; Function Attrs: nobuiltin nounwind
declare void @_ZdaPv(ptr noundef) #7

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

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

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

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


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

@.str = external hidden unnamed_addr constant [12 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [88 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [79 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [2 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 @_ZNK8lsqrBase6D2NormEdd(ptr noundef nonnull align 8 dereferenceable(152), 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: mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare double @llvm.fmuladd.f64(double, double, double) #3

; 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 @_ZNK8lsqrBase5ScaleEjdPd(ptr noundef nonnull align 8 dereferenceable(152), i32 noundef, double noundef, ptr noundef) local_unnamed_addr #4 align 2

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN8lsqrBase5SolveEjjPKdPd(ptr noundef nonnull align 8 dereferenceable(152) %0, i32 noundef %1, i32 noundef %2, ptr noundef %3, ptr noundef %4) local_unnamed_addr #1 align 2 {
  %6 = alloca double, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %6) #10
  store double 0.000000e+00, ptr %6, align 8, !tbaa !5
  %7 = getelementptr inbounds i8, ptr %0, i64 128
  %8 = load ptr, ptr %7, align 8, !tbaa !9
  %.not = icmp eq ptr %8, null
  br i1 %.not, label %45, label %9

9:                                                ; preds = %5
  %10 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %8, ptr noundef nonnull @.str)
  %11 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %10, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  %12 = load ptr, ptr %7, align 8, !tbaa !9
  %13 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %12, i32 noundef %1)
  %14 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %13, ptr noundef nonnull @.str.1)
  %15 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %14, i32 noundef %2)
  %16 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %15, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  %17 = load ptr, ptr %7, align 8, !tbaa !9
  %18 = getelementptr inbounds i8, ptr %0, i64 96
  %19 = load double, ptr %18, align 8, !tbaa !14
  %20 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %17, double noundef %19)
  %21 = tail 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.1)
  %22 = getelementptr inbounds i8, ptr %0, i64 136
  %23 = load i8, ptr %22, align 8, !tbaa !15, !range !16, !noundef !17
  %24 = trunc nuw i8 %23 to i1
  %25 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEb(ptr noundef nonnull align 8 dereferenceable(8) %21, i1 noundef zeroext %24)
  %26 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %25, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  %27 = load ptr, ptr %7, align 8, !tbaa !9
  %28 = getelementptr inbounds i8, ptr %0, i64 64
  %29 = load double, ptr %28, align 8, !tbaa !18
  %30 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %27, double noundef %29)
  %31 = tail 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.1)
  %32 = getelementptr inbounds i8, ptr %0, i64 80
  %33 = load double, ptr %32, align 8, !tbaa !19
  %34 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %31, double noundef %33)
  %35 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %34, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  %36 = load ptr, ptr %7, align 8, !tbaa !9
  %37 = getelementptr inbounds i8, ptr %0, i64 72
  %38 = load double, ptr %37, align 8, !tbaa !20
  %39 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %36, double noundef %38)
  %40 = tail 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.1)
  %41 = getelementptr inbounds i8, ptr %0, i64 108
  %42 = load i32, ptr %41, align 4, !tbaa !21
  %43 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %40, i32 noundef %42)
  %44 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %43, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  br label %45

45:                                               ; preds = %9, %5
  %46 = getelementptr inbounds i8, ptr %0, i64 96
  %47 = load double, ptr %46, align 8, !tbaa !14
  %48 = fcmp ogt double %47, 0.000000e+00
  %49 = getelementptr inbounds i8, ptr %0, i64 104
  %50 = zext i1 %48 to i8
  store i8 %50, ptr %49, align 8, !tbaa !22
  %51 = getelementptr inbounds i8, ptr %0, i64 112
  store i32 0, ptr %51, align 8, !tbaa !23
  %52 = getelementptr inbounds i8, ptr %0, i64 116
  store i32 0, ptr %52, align 4, !tbaa !24
  %53 = getelementptr inbounds i8, ptr %0, i64 120
  store i32 0, ptr %53, align 8, !tbaa !25
  %54 = getelementptr inbounds i8, ptr %0, i64 80
  %55 = load double, ptr %54, align 8, !tbaa !19
  %56 = fcmp ogt double %55, 0.000000e+00
  %57 = fdiv double 1.000000e+00, %55
  %.0242 = select i1 %56, double %57, double 0.000000e+00
  %58 = getelementptr inbounds i8, ptr %0, i64 8
  %59 = getelementptr inbounds i8, ptr %0, i64 16
  %60 = getelementptr inbounds i8, ptr %0, i64 56
  %61 = getelementptr inbounds i8, ptr %0, i64 48
  %62 = zext i32 %1 to i64
  %63 = shl nuw nsw i64 %62, 3
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %58, i8 0, i64 16, i1 false)
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %61, i8 0, i64 16, i1 false)
  %64 = tail call noalias noundef nonnull ptr @_Znam(i64 noundef %63) #11
  %65 = zext i32 %2 to i64
  %66 = shl nuw nsw i64 %65, 3
  %67 = tail call noalias noundef nonnull ptr @_Znam(i64 noundef %66) #11
  %68 = tail call noalias noundef nonnull ptr @_Znam(i64 noundef %66) #11
  %69 = getelementptr inbounds double, ptr %3, i64 %62
  %70 = tail call noundef ptr @_ZSt4copyIPKdPdET0_T_S4_S3_(ptr noundef %3, ptr noundef %69, ptr noundef nonnull %64)
  %71 = getelementptr inbounds double, ptr %67, i64 %65
  call void @_ZSt4fillIPddEvT_S1_RKT0_(ptr noundef nonnull %67, ptr noundef nonnull %71, ptr noundef nonnull align 8 dereferenceable(8) %6)
  %72 = getelementptr inbounds double, ptr %68, i64 %65
  call void @_ZSt4fillIPddEvT_S1_RKT0_(ptr noundef nonnull %68, ptr noundef nonnull %72, ptr noundef nonnull align 8 dereferenceable(8) %6)
  %73 = getelementptr inbounds double, ptr %4, i64 %65
  call void @_ZSt4fillIPddEvT_S1_RKT0_(ptr noundef %4, ptr noundef %73, ptr noundef nonnull align 8 dereferenceable(8) %6)
  %74 = getelementptr inbounds i8, ptr %0, i64 136
  %75 = load i8, ptr %74, align 8, !tbaa !15, !range !16, !noundef !17
  %76 = trunc nuw i8 %75 to i1
  br i1 %76, label %77, label %81

77:                                               ; preds = %45
  %78 = getelementptr inbounds i8, ptr %0, i64 144
  %79 = load ptr, ptr %78, align 8, !tbaa !26
  %80 = getelementptr inbounds double, ptr %79, i64 %65
  call void @_ZSt4fillIPddEvT_S1_RKT0_(ptr noundef %79, ptr noundef %80, ptr noundef nonnull align 8 dereferenceable(8) %6)
  br label %81

81:                                               ; preds = %77, %45
  %82 = call noundef double @_ZNK8lsqrBase5Dnrm2EjPKd(ptr noundef nonnull align 8 dereferenceable(152) %0, i32 noundef %1, ptr noundef nonnull %64)
  %83 = fcmp ogt double %82, 0.000000e+00
  br i1 %83, label %84, label %.thread

84:                                               ; preds = %81
  %85 = fdiv double 1.000000e+00, %82
  call void @_ZNK8lsqrBase5ScaleEjdPd(ptr noundef nonnull align 8 dereferenceable(152) %0, i32 noundef %1, double noundef %85, ptr noundef nonnull %64)
  %86 = load ptr, ptr %0, align 8, !tbaa !27
  %87 = getelementptr inbounds i8, ptr %86, i64 24
  %88 = load ptr, ptr %87, align 8
  call void %88(ptr noundef nonnull align 8 dereferenceable(152) %0, i32 noundef %1, i32 noundef %2, ptr noundef nonnull %67, ptr noundef nonnull %64)
  %89 = call noundef double @_ZNK8lsqrBase5Dnrm2EjPKd(ptr noundef nonnull align 8 dereferenceable(152) %0, i32 noundef %2, ptr noundef nonnull %67)
  %90 = fcmp ogt double %89, 0.000000e+00
  br i1 %90, label %91, label %.thread

91:                                               ; preds = %84
  %92 = fdiv double 1.000000e+00, %89
  call void @_ZNK8lsqrBase5ScaleEjdPd(ptr noundef nonnull align 8 dereferenceable(152) %0, i32 noundef %2, double noundef %92, ptr noundef nonnull %67)
  %93 = call noundef ptr @_ZSt4copyIPdS0_ET0_T_S2_S1_(ptr noundef nonnull %67, ptr noundef nonnull %71, ptr noundef nonnull %68)
  br label %.thread

.thread:                                          ; preds = %81, %91, %84
  %.0252285 = phi double [ %89, %91 ], [ %89, %84 ], [ 0.000000e+00, %81 ]
  %94 = fmul double %82, %.0252285
  %95 = getelementptr inbounds i8, ptr %0, i64 40
  store double %94, ptr %95, align 8, !tbaa !29
  %96 = fcmp oeq double %94, 0.000000e+00
  br i1 %96, label %.loopexit, label %97

97:                                               ; preds = %.thread
  %98 = getelementptr inbounds i8, ptr %0, i64 24
  store double %82, ptr %98, align 8, !tbaa !30
  %99 = getelementptr inbounds i8, ptr %0, i64 32
  store double %82, ptr %99, align 8, !tbaa !31
  %100 = load ptr, ptr %7, align 8, !tbaa !9
  %.not273 = icmp eq ptr %100, null
  br i1 %.not273, label %168, label %101

101:                                              ; preds = %97
  %102 = load i8, ptr %49, align 8, !tbaa !22, !range !16, !noundef !17
  %103 = trunc nuw i8 %102 to i1
  %.str.2..str.3 = select i1 %103, ptr @.str.2, ptr @.str.3
  %104 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %100, ptr noundef nonnull %.str.2..str.3)
  %105 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %104, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  %106 = fdiv double %.0252285, %82
  %107 = load ptr, ptr %7, align 8, !tbaa !9
  %108 = load ptr, ptr %107, align 8, !tbaa !27
  %109 = getelementptr i8, ptr %108, i64 -24
  %110 = load i64, ptr %109, align 8
  %111 = getelementptr inbounds i8, ptr %107, i64 %110
  %112 = call noundef i64 @_ZNSt8ios_base5widthEl(ptr noundef nonnull align 8 dereferenceable(216) %111, i64 noundef 6)
  %113 = load ptr, ptr %7, align 8, !tbaa !9
  %114 = load i32, ptr %51, align 8, !tbaa !23
  %115 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %113, i32 noundef %114)
  %116 = load ptr, ptr %7, align 8, !tbaa !9
  %117 = load ptr, ptr %116, align 8, !tbaa !27
  %118 = getelementptr i8, ptr %117, i64 -24
  %119 = load i64, ptr %118, align 8
  %120 = getelementptr inbounds i8, ptr %116, i64 %119
  %121 = call noundef i64 @_ZNSt8ios_base9precisionEl(ptr noundef nonnull align 8 dereferenceable(216) %120, i64 noundef 9)
  %122 = load ptr, ptr %7, align 8, !tbaa !9
  %123 = load ptr, ptr %122, align 8, !tbaa !27
  %124 = getelementptr i8, ptr %123, i64 -24
  %125 = load i64, ptr %124, align 8
  %126 = getelementptr inbounds i8, ptr %122, i64 %125
  %127 = call noundef i64 @_ZNSt8ios_base5widthEl(ptr noundef nonnull align 8 dereferenceable(216) %126, i64 noundef 17)
  %128 = load ptr, ptr %7, align 8, !tbaa !9
  %129 = load double, ptr %4, align 8, !tbaa !5
  %130 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %128, double noundef %129)
  %131 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %130, ptr noundef nonnull @.str.4)
  %132 = load ptr, ptr %7, align 8, !tbaa !9
  %133 = load ptr, ptr %132, align 8, !tbaa !27
  %134 = getelementptr i8, ptr %133, i64 -24
  %135 = load i64, ptr %134, align 8
  %136 = getelementptr inbounds i8, ptr %132, i64 %135
  %137 = call noundef i64 @_ZNSt8ios_base9precisionEl(ptr noundef nonnull align 8 dereferenceable(216) %136, i64 noundef 2)
  %138 = load ptr, ptr %7, align 8, !tbaa !9
  %139 = load ptr, ptr %138, align 8, !tbaa !27
  %140 = getelementptr i8, ptr %139, i64 -24
  %141 = load i64, ptr %140, align 8
  %142 = getelementptr inbounds i8, ptr %138, i64 %141
  %143 = call noundef i64 @_ZNSt8ios_base5widthEl(ptr noundef nonnull align 8 dereferenceable(216) %142, i64 noundef 10)
  %144 = load ptr, ptr %7, align 8, !tbaa !9
  %145 = load double, ptr %99, align 8, !tbaa !31
  %146 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %144, double noundef %145)
  %147 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %146, ptr noundef nonnull @.str.4)
  %148 = load ptr, ptr %7, align 8, !tbaa !9
  %149 = load ptr, ptr %148, align 8, !tbaa !27
  %150 = getelementptr i8, ptr %149, i64 -24
  %151 = load i64, ptr %150, align 8
  %152 = getelementptr inbounds i8, ptr %148, i64 %151
  %153 = call noundef i64 @_ZNSt8ios_base9precisionEl(ptr noundef nonnull align 8 dereferenceable(216) %152, i64 noundef 1)
  %154 = load ptr, ptr %7, align 8, !tbaa !9
  %155 = load ptr, ptr %154, align 8, !tbaa !27
  %156 = getelementptr i8, ptr %155, i64 -24
  %157 = load i64, ptr %156, align 8
  %158 = getelementptr inbounds i8, ptr %154, i64 %157
  %159 = call noundef i64 @_ZNSt8ios_base5widthEl(ptr noundef nonnull align 8 dereferenceable(216) %158, i64 noundef 9)
  %160 = load ptr, ptr %7, align 8, !tbaa !9
  %161 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %160, double noundef 1.000000e+00)
  %162 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %161, ptr noundef nonnull @.str.4)
  %163 = load ptr, ptr %7, align 8, !tbaa !9
  %164 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %163, double noundef %106)
  %165 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %164, ptr noundef nonnull @.str.4)
  %166 = load ptr, ptr %7, align 8, !tbaa !9
  %167 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %166, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  br label %168

168:                                              ; preds = %101, %97
  %.not306 = icmp eq i32 %2, 0
  %169 = getelementptr inbounds i8, ptr %0, i64 144
  %170 = getelementptr inbounds i8, ptr %0, i64 72
  %171 = getelementptr inbounds i8, ptr %0, i64 64
  %172 = getelementptr inbounds i8, ptr %0, i64 108
  %173 = icmp ult i32 %2, 41
  %174 = fmul double %.0242, 2.000000e+00
  %175 = insertelement <2 x double> <double poison, double 0.000000e+00>, double %82, i64 0
  br label %thread-pre-split286

thread-pre-split286:                              ; preds = %thread-pre-split286.backedge, %168
  %.0259 = phi double [ %.0252285, %168 ], [ %222, %thread-pre-split286.backedge ]
  %.1253 = phi double [ %.0252285, %168 ], [ %.2254, %thread-pre-split286.backedge ]
  %.0248 = phi double [ -1.000000e+00, %168 ], [ %278, %thread-pre-split286.backedge ]
  %.0247 = phi double [ 0.000000e+00, %168 ], [ %285, %thread-pre-split286.backedge ]
  %.0244 = phi double [ 0.000000e+00, %168 ], [ %289, %thread-pre-split286.backedge ]
  %.0243 = phi double [ 0.000000e+00, %168 ], [ %260, %thread-pre-split286.backedge ]
  %176 = phi <2 x double> [ %175, %168 ], [ %.be, %thread-pre-split286.backedge ]
  %177 = phi <2 x double> [ zeroinitializer, %168 ], [ %283, %thread-pre-split286.backedge ]
  %178 = load i32, ptr %51, align 8, !tbaa !23
  %179 = add i32 %178, 1
  store i32 %179, ptr %51, align 8, !tbaa !23
  %180 = fneg double %.1253
  call void @_ZNK8lsqrBase5ScaleEjdPd(ptr noundef nonnull align 8 dereferenceable(152) %0, i32 noundef %1, double noundef %180, ptr noundef nonnull %64)
  %181 = load ptr, ptr %0, align 8, !tbaa !27
  %182 = getelementptr inbounds i8, ptr %181, i64 16
  %183 = load ptr, ptr %182, align 8
  call void %183(ptr noundef nonnull align 8 dereferenceable(152) %0, i32 noundef %1, i32 noundef %2, ptr noundef nonnull %67, ptr noundef nonnull %64)
  %184 = call noundef double @_ZNK8lsqrBase5Dnrm2EjPKd(ptr noundef nonnull align 8 dereferenceable(152) %0, i32 noundef %1, ptr noundef nonnull %64)
  %185 = call noundef double @_ZNK8lsqrBase6D2NormEdd(ptr noundef nonnull align 8 dereferenceable(152) %0, double noundef %.1253, double noundef %184)
  %186 = load double, ptr %46, align 8, !tbaa !14
  %187 = call noundef double @_ZNK8lsqrBase6D2NormEdd(ptr noundef nonnull align 8 dereferenceable(152) %0, double noundef %185, double noundef %186)
  %188 = load double, ptr %58, align 8, !tbaa !32
  %189 = call noundef double @_ZNK8lsqrBase6D2NormEdd(ptr noundef nonnull align 8 dereferenceable(152) %0, double noundef %188, double noundef %187)
  store double %189, ptr %58, align 8, !tbaa !32
  %190 = fcmp ogt double %184, 0.000000e+00
  br i1 %190, label %191, label %201

191:                                              ; preds = %thread-pre-split286
  %192 = fdiv double 1.000000e+00, %184
  call void @_ZNK8lsqrBase5ScaleEjdPd(ptr noundef nonnull align 8 dereferenceable(152) %0, i32 noundef %1, double noundef %192, ptr noundef nonnull %64)
  %193 = fneg double %184
  call void @_ZNK8lsqrBase5ScaleEjdPd(ptr noundef nonnull align 8 dereferenceable(152) %0, i32 noundef %2, double noundef %193, ptr noundef nonnull %67)
  %194 = load ptr, ptr %0, align 8, !tbaa !27
  %195 = getelementptr inbounds i8, ptr %194, i64 24
  %196 = load ptr, ptr %195, align 8
  call void %196(ptr noundef nonnull align 8 dereferenceable(152) %0, i32 noundef %1, i32 noundef %2, ptr noundef nonnull %67, ptr noundef nonnull %64)
  %197 = call noundef double @_ZNK8lsqrBase5Dnrm2EjPKd(ptr noundef nonnull align 8 dereferenceable(152) %0, i32 noundef %2, ptr noundef nonnull %67)
  %198 = fcmp ogt double %197, 0.000000e+00
  br i1 %198, label %199, label %201

199:                                              ; preds = %191
  %200 = fdiv double 1.000000e+00, %197
  call void @_ZNK8lsqrBase5ScaleEjdPd(ptr noundef nonnull align 8 dereferenceable(152) %0, i32 noundef %2, double noundef %200, ptr noundef nonnull %67)
  br label %201

201:                                              ; preds = %191, %199, %thread-pre-split286
  %.2254 = phi double [ %197, %199 ], [ %197, %191 ], [ %.1253, %thread-pre-split286 ]
  %202 = load i8, ptr %49, align 8, !tbaa !22, !range !16, !noundef !17
  %203 = trunc nuw i8 %202 to i1
  br i1 %203, label %204, label %215

204:                                              ; preds = %201
  %205 = load double, ptr %46, align 8, !tbaa !14
  %206 = call noundef double @_ZNK8lsqrBase6D2NormEdd(ptr noundef nonnull align 8 dereferenceable(152) %0, double noundef %.0259, double noundef %205)
  %207 = load double, ptr %46, align 8, !tbaa !14
  %208 = insertelement <2 x double> poison, double %.0259, i64 0
  %209 = insertelement <2 x double> %208, double %207, i64 1
  %210 = insertelement <2 x double> poison, double %206, i64 0
  %211 = shufflevector <2 x double> %210, <2 x double> poison, <2 x i32> zeroinitializer
  %212 = fdiv <2 x double> %209, %211
  %213 = shufflevector <2 x double> %176, <2 x double> poison, <2 x i32> zeroinitializer
  %214 = fmul <2 x double> %213, %212
  br label %215

215:                                              ; preds = %204, %201
  %.0262 = phi double [ %206, %204 ], [ %.0259, %201 ]
  %216 = phi <2 x double> [ %214, %204 ], [ %176, %201 ]
  %217 = call noundef double @_ZNK8lsqrBase6D2NormEdd(ptr noundef nonnull align 8 dereferenceable(152) %0, double noundef %.0262, double noundef %184)
  %218 = fdiv double %.0262, %217
  %219 = fdiv double %184, %217
  %220 = fmul double %.2254, %219
  %221 = fneg double %218
  %222 = fmul double %.2254, %221
  %223 = extractelement <2 x double> %216, i64 0
  %224 = fmul double %223, %218
  %225 = fmul double %223, %219
  %226 = fmul double %219, %224
  %227 = fdiv double %224, %217
  %228 = fneg double %220
  %229 = fdiv double %228, %217
  %230 = fdiv double 1.000000e+00, %217
  %231 = load i8, ptr %74, align 8, !tbaa !15, !range !16, !noundef !17
  %232 = trunc nuw i8 %231 to i1
  br i1 %232, label %.preheader, label %.preheader296

.preheader296:                                    ; preds = %215
  br i1 %.not306, label %.loopexit295, label %.lr.ph

.preheader:                                       ; preds = %215
  br i1 %.not306, label %.loopexit295, label %.lr.ph302

.lr.ph302:                                        ; preds = %.preheader
  %233 = load ptr, ptr %169, align 8, !tbaa !26
  br label %234

234:                                              ; preds = %.lr.ph302, %234
  %indvars.iv312 = phi i64 [ 0, %.lr.ph302 ], [ %indvars.iv.next313, %234 ]
  %.0256300 = phi double [ 0.000000e+00, %.lr.ph302 ], [ %248, %234 ]
  %235 = getelementptr inbounds double, ptr %68, i64 %indvars.iv312
  %236 = load double, ptr %235, align 8, !tbaa !5
  %237 = getelementptr inbounds double, ptr %4, i64 %indvars.iv312
  %238 = load double, ptr %237, align 8, !tbaa !5
  %239 = call double @llvm.fmuladd.f64(double %227, double %236, double %238)
  store double %239, ptr %237, align 8, !tbaa !5
  %240 = getelementptr inbounds double, ptr %67, i64 %indvars.iv312
  %241 = load double, ptr %240, align 8, !tbaa !5
  %242 = call double @llvm.fmuladd.f64(double %229, double %236, double %241)
  store double %242, ptr %235, align 8, !tbaa !5
  %243 = fmul double %230, %236
  %244 = fmul double %243, %243
  %245 = getelementptr inbounds double, ptr %233, i64 %indvars.iv312
  %246 = load double, ptr %245, align 8, !tbaa !5
  %247 = fadd double %244, %246
  store double %247, ptr %245, align 8, !tbaa !5
  %248 = fadd double %.0256300, %244
  %indvars.iv.next313 = add nuw nsw i64 %indvars.iv312, 1
  %exitcond316.not = icmp eq i64 %indvars.iv.next313, %65
  br i1 %exitcond316.not, label %.loopexit295, label %234, !llvm.loop !33

.lr.ph:                                           ; preds = %.preheader296, %.lr.ph
  %indvars.iv = phi i64 [ %indvars.iv.next, %.lr.ph ], [ 0, %.preheader296 ]
  %.1257298 = phi double [ %258, %.lr.ph ], [ 0.000000e+00, %.preheader296 ]
  %249 = getelementptr inbounds double, ptr %68, i64 %indvars.iv
  %250 = load double, ptr %249, align 8, !tbaa !5
  %251 = getelementptr inbounds double, ptr %4, i64 %indvars.iv
  %252 = load double, ptr %251, align 8, !tbaa !5
  %253 = call double @llvm.fmuladd.f64(double %227, double %250, double %252)
  store double %253, ptr %251, align 8, !tbaa !5
  %254 = getelementptr inbounds double, ptr %67, i64 %indvars.iv
  %255 = load double, ptr %254, align 8, !tbaa !5
  %256 = call double @llvm.fmuladd.f64(double %229, double %250, double %255)
  store double %256, ptr %249, align 8, !tbaa !5
  %257 = fmul double %230, %250
  %258 = call double @llvm.fmuladd.f64(double %257, double %257, double %.1257298)
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next, %65
  br i1 %exitcond.not, label %.loopexit295, label %.lr.ph, !llvm.loop !35

.loopexit295:                                     ; preds = %.lr.ph, %234, %.preheader296, %.preheader
  %.2258 = phi double [ 0.000000e+00, %.preheader ], [ 0.000000e+00, %.preheader296 ], [ %248, %234 ], [ %258, %.lr.ph ]
  %259 = call double @sqrt(double noundef %.2258) #10
  %260 = call noundef double @_ZNK8lsqrBase6D2NormEdd(ptr noundef nonnull align 8 dereferenceable(152) %0, double noundef %.0243, double noundef %259)
  %261 = fmul double %224, %259
  %262 = call double @llvm.fabs.f64(double %261)
  %263 = load double, ptr %60, align 8, !tbaa !36
  %264 = fcmp olt double %263, %262
  br i1 %264, label %265, label %267

265:                                              ; preds = %.loopexit295
  store double %262, ptr %60, align 8, !tbaa !36
  %266 = load i32, ptr %51, align 8, !tbaa !23
  store i32 %266, ptr %53, align 8, !tbaa !25
  br label %267

267:                                              ; preds = %265, %.loopexit295
  %268 = fneg double %.0248
  %269 = fmul double %217, %268
  %270 = extractelement <2 x double> %177, i64 1
  %271 = fneg double %270
  %272 = fmul double %217, %271
  %273 = extractelement <2 x double> %177, i64 0
  %274 = call double @llvm.fmuladd.f64(double %272, double %273, double %224)
  %275 = fdiv double %274, %269
  %276 = call noundef double @_ZNK8lsqrBase6D2NormEdd(ptr noundef nonnull align 8 dereferenceable(152) %0, double noundef %.0247, double noundef %275)
  store double %276, ptr %61, align 8, !tbaa !37
  %277 = call noundef double @_ZNK8lsqrBase6D2NormEdd(ptr noundef nonnull align 8 dereferenceable(152) %0, double noundef %269, double noundef %220)
  %278 = fdiv double %269, %277
  %279 = insertelement <2 x double> poison, double %274, i64 0
  %280 = insertelement <2 x double> %279, double %220, i64 1
  %281 = insertelement <2 x double> poison, double %277, i64 0
  %282 = shufflevector <2 x double> %281, <2 x double> poison, <2 x i32> zeroinitializer
  %283 = fdiv <2 x double> %280, %282
  %284 = extractelement <2 x double> %283, i64 0
  %285 = call noundef double @_ZNK8lsqrBase6D2NormEdd(ptr noundef nonnull align 8 dereferenceable(152) %0, double noundef %.0247, double noundef %284)
  %286 = load double, ptr %58, align 8, !tbaa !32
  %287 = fmul double %260, %286
  store double %287, ptr %59, align 8, !tbaa !38
  %288 = extractelement <2 x double> %216, i64 1
  %289 = call noundef double @_ZNK8lsqrBase6D2NormEdd(ptr noundef nonnull align 8 dereferenceable(152) %0, double noundef %.0244, double noundef %288)
  %290 = call noundef double @_ZNK8lsqrBase6D2NormEdd(ptr noundef nonnull align 8 dereferenceable(152) %0, double noundef %289, double noundef %225)
  %291 = fadd double %290, 1.000000e-30
  store double %291, ptr %99, align 8, !tbaa !31
  %292 = call double @llvm.fabs.f64(double %226)
  %293 = fmul double %.2254, %292
  store double %293, ptr %95, align 8, !tbaa !29
  %294 = load double, ptr %61, align 8, !tbaa !37
  %295 = fmul double %260, %294
  %296 = fdiv double %291, %295
  %297 = call double @sqrt(double noundef %296) #10
  %298 = load double, ptr %99, align 8, !tbaa !31
  %299 = load double, ptr %98, align 8, !tbaa !30
  %300 = load double, ptr %95, align 8, !tbaa !29
  %301 = load double, ptr %58, align 8, !tbaa !32
  %302 = fmul double %298, %301
  %303 = fdiv double %300, %302
  %304 = load double, ptr %59, align 8, !tbaa !38
  %305 = fdiv double 1.000000e+00, %304
  %306 = load double, ptr %61, align 8, !tbaa !37
  %307 = fmul double %301, %306
  %308 = insertelement <2 x double> poison, double %298, i64 0
  %309 = insertelement <2 x double> %308, double %307, i64 1
  %310 = insertelement <2 x double> poison, double %299, i64 0
  %311 = shufflevector <2 x double> %310, <2 x double> poison, <2 x i32> zeroinitializer
  %312 = fdiv <2 x double> %309, %311
  %313 = extractelement <2 x double> %312, i64 1
  %314 = fadd double %313, 1.000000e+00
  %315 = extractelement <2 x double> %312, i64 0
  %316 = fdiv double %315, %314
  %317 = load double, ptr %170, align 8, !tbaa !20
  %318 = load double, ptr %171, align 8, !tbaa !18
  %319 = fmul double %301, %318
  %320 = fmul double %306, %319
  %321 = fdiv double %320, %299
  %322 = fadd double %317, %321
  %323 = fadd double %305, 1.000000e+00
  %324 = fadd double %303, 1.000000e+00
  %325 = fadd double %316, 1.000000e+00
  %326 = load i32, ptr %51, align 8, !tbaa !23
  %327 = load i32, ptr %172, align 4, !tbaa !21
  %.not274 = icmp uge i32 %326, %327
  %328 = fcmp ole double %323, 1.000000e+00
  %329 = fcmp ole double %324, 1.000000e+00
  %330 = fcmp ole double %325, 1.000000e+00
  %331 = fcmp ole double %305, %.0242
  %332 = fcmp ole double %303, %318
  %333 = fcmp ole double %315, %322
  %334 = or i1 %.not274, %333
  %335 = or i1 %332, %334
  %336 = or i1 %328, %335
  %337 = or i1 %329, %336
  %338 = or i1 %330, %337
  %339 = or i1 %331, %338
  br i1 %339, label %340, label %341

340:                                              ; preds = %267
  %simplifycfg.merge = select i1 %328, i32 4, i32 5
  %simplifycfg.merge278 = select i1 %329, i32 2, i32 %simplifycfg.merge
  %simplifycfg.merge279 = select i1 %330, i32 1, i32 %simplifycfg.merge278
  %simplifycfg.merge280 = select i1 %331, i32 4, i32 %simplifycfg.merge279
  %simplifycfg.merge281 = select i1 %332, i32 2, i32 %simplifycfg.merge280
  %spec.select289 = select i1 %333, i32 1, i32 %simplifycfg.merge281
  store i32 %spec.select289, ptr %52, align 4, !tbaa !24
  br label %341

341:                                              ; preds = %267, %340
  %342 = load ptr, ptr %7, align 8, !tbaa !9
  %.not275 = icmp eq ptr %342, null
  br i1 %.not275, label %430, label %343

343:                                              ; preds = %341
  %344 = icmp ult i32 %326, 11
  %.1241 = or i1 %173, %344
  %345 = add i32 %327, -10
  %.not276 = icmp uge i32 %326, %345
  %spec.select283 = or i1 %.1241, %.not276
  %346 = urem i32 %326, 10
  %347 = icmp eq i32 %346, 0
  %spec.select = or i1 %347, %spec.select283
  %348 = fcmp ugt double %305, %174
  br i1 %348, label %350, label %349

349:                                              ; preds = %343
  br label %350

350:                                              ; preds = %349, %343
  %.4 = phi i1 [ true, %349 ], [ %spec.select, %343 ]
  %351 = fmul double %322, 1.000000e+01
  %352 = fcmp ugt double %315, %351
  br i1 %352, label %353, label %.thread323

353:                                              ; preds = %350
  %354 = fmul double %318, 1.000000e+01
  %355 = fcmp ole double %303, %354
  %.5 = or i1 %355, %.4
  %356 = load i32, ptr %52, align 4, !tbaa !24
  %.not277 = icmp ne i32 %356, 0
  %spec.select282 = select i1 %.not277, i1 true, i1 %.5
  %357 = insertelement <2 x double> %216, double %225, i64 0
  br i1 %spec.select282, label %.thread323, label %thread-pre-split286.backedge

thread-pre-split286.backedge:                     ; preds = %353, %430
  %.be = phi <2 x double> [ %357, %353 ], [ %432, %430 ]
  br label %thread-pre-split286, !llvm.loop !39

.thread323:                                       ; preds = %350, %353
  %358 = load ptr, ptr %342, align 8, !tbaa !27
  %359 = getelementptr i8, ptr %358, i64 -24
  %360 = load i64, ptr %359, align 8
  %361 = getelementptr inbounds i8, ptr %342, i64 %360
  %362 = call noundef i64 @_ZNSt8ios_base5widthEl(ptr noundef nonnull align 8 dereferenceable(216) %361, i64 noundef 6)
  %363 = load ptr, ptr %7, align 8, !tbaa !9
  %364 = load i32, ptr %51, align 8, !tbaa !23
  %365 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %363, i32 noundef %364)
  %366 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %365, ptr noundef nonnull @.str.4)
  %367 = load ptr, ptr %7, align 8, !tbaa !9
  %368 = load ptr, ptr %367, align 8, !tbaa !27
  %369 = getelementptr i8, ptr %368, i64 -24
  %370 = load i64, ptr %369, align 8
  %371 = getelementptr inbounds i8, ptr %367, i64 %370
  %372 = call noundef i64 @_ZNSt8ios_base9precisionEl(ptr noundef nonnull align 8 dereferenceable(216) %371, i64 noundef 9)
  %373 = load ptr, ptr %7, align 8, !tbaa !9
  %374 = load ptr, ptr %373, align 8, !tbaa !27
  %375 = getelementptr i8, ptr %374, i64 -24
  %376 = load i64, ptr %375, align 8
  %377 = getelementptr inbounds i8, ptr %373, i64 %376
  %378 = call noundef i64 @_ZNSt8ios_base5widthEl(ptr noundef nonnull align 8 dereferenceable(216) %377, i64 noundef 17)
  %379 = load ptr, ptr %7, align 8, !tbaa !9
  %380 = load double, ptr %4, align 8, !tbaa !5
  %381 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %379, double noundef %380)
  %382 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %381, ptr noundef nonnull @.str.4)
  %383 = load ptr, ptr %7, align 8, !tbaa !9
  %384 = load ptr, ptr %383, align 8, !tbaa !27
  %385 = getelementptr i8, ptr %384, i64 -24
  %386 = load i64, ptr %385, align 8
  %387 = getelementptr inbounds i8, ptr %383, i64 %386
  %388 = call noundef i64 @_ZNSt8ios_base9precisionEl(ptr noundef nonnull align 8 dereferenceable(216) %387, i64 noundef 2)
  %389 = load ptr, ptr %7, align 8, !tbaa !9
  %390 = load ptr, ptr %389, align 8, !tbaa !27
  %391 = getelementptr i8, ptr %390, i64 -24
  %392 = load i64, ptr %391, align 8
  %393 = getelementptr inbounds i8, ptr %389, i64 %392
  %394 = call noundef i64 @_ZNSt8ios_base5widthEl(ptr noundef nonnull align 8 dereferenceable(216) %393, i64 noundef 10)
  %395 = load ptr, ptr %7, align 8, !tbaa !9
  %396 = load double, ptr %99, align 8, !tbaa !31
  %397 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %395, double noundef %396)
  %398 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %397, ptr noundef nonnull @.str.4)
  %399 = load ptr, ptr %7, align 8, !tbaa !9
  %400 = load ptr, ptr %399, align 8, !tbaa !27
  %401 = getelementptr i8, ptr %400, i64 -24
  %402 = load i64, ptr %401, align 8
  %403 = getelementptr inbounds i8, ptr %399, i64 %402
  %404 = call noundef i64 @_ZNSt8ios_base9precisionEl(ptr noundef nonnull align 8 dereferenceable(216) %403, i64 noundef 1)
  %405 = load ptr, ptr %7, align 8, !tbaa !9
  %406 = load ptr, ptr %405, align 8, !tbaa !27
  %407 = getelementptr i8, ptr %406, i64 -24
  %408 = load i64, ptr %407, align 8
  %409 = getelementptr inbounds i8, ptr %405, i64 %408
  %410 = call noundef i64 @_ZNSt8ios_base5widthEl(ptr noundef nonnull align 8 dereferenceable(216) %409, i64 noundef 9)
  %411 = load ptr, ptr %7, align 8, !tbaa !9
  %412 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %411, double noundef %315)
  %413 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %412, ptr noundef nonnull @.str.4)
  %414 = load ptr, ptr %7, align 8, !tbaa !9
  %415 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %414, double noundef %303)
  %416 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %415, ptr noundef nonnull @.str.4)
  %417 = load ptr, ptr %7, align 8, !tbaa !9
  %418 = load double, ptr %58, align 8, !tbaa !32
  %419 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %417, double noundef %418)
  %420 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %419, ptr noundef nonnull @.str.4)
  %421 = load ptr, ptr %7, align 8, !tbaa !9
  %422 = load double, ptr %59, align 8, !tbaa !38
  %423 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %421, double noundef %422)
  %424 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %423, ptr noundef nonnull @.str.4)
  %425 = load ptr, ptr %7, align 8, !tbaa !9
  %426 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %425, double noundef %297)
  %427 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %426, ptr noundef nonnull @.str.4)
  %428 = load ptr, ptr %7, align 8, !tbaa !9
  %429 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %428, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  br label %430

430:                                              ; preds = %.thread323, %341
  %.pr = load i32, ptr %52, align 4, !tbaa !24
  %431 = icmp eq i32 %.pr, 0
  %432 = insertelement <2 x double> %216, double %225, i64 0
  br i1 %431, label %thread-pre-split286.backedge, label %433

433:                                              ; preds = %430
  %434 = load i8, ptr %74, align 8, !tbaa !15, !range !16, !noundef !17
  %435 = trunc nuw i8 %434 to i1
  br i1 %435, label %436, label %.loopexit

436:                                              ; preds = %433
  %437 = icmp ugt i32 %1, %2
  %438 = sub i32 %1, %2
  %439 = uitofp i32 %438 to double
  %.0237 = select i1 %437, double %439, double 1.000000e+00
  %440 = load i8, ptr %49, align 8, !tbaa !22, !range !16, !noundef !17
  %441 = trunc nuw i8 %440 to i1
  %442 = uitofp i32 %1 to double
  %.1 = select i1 %441, double %442, double %.0237
  %443 = load double, ptr %99, align 8, !tbaa !31
  %sqrt = call double @llvm.sqrt.f64(double %.1)
  %444 = fdiv double %443, %sqrt
  br i1 %.not306, label %.loopexit, label %.lr.ph305

.lr.ph305:                                        ; preds = %436
  %.pre = load ptr, ptr %169, align 8, !tbaa !26
  %xtraiter = and i64 %65, 1
  %445 = icmp eq i32 %2, 1
  br i1 %445, label %.loopexit.loopexit.unr-lcssa, label %.lr.ph305.new

.lr.ph305.new:                                    ; preds = %.lr.ph305
  %unroll_iter = and i64 %65, 4294967294
  br label %446

446:                                              ; preds = %446, %.lr.ph305.new
  %447 = phi ptr [ %.pre, %.lr.ph305.new ], [ %458, %446 ]
  %indvars.iv317 = phi i64 [ 0, %.lr.ph305.new ], [ %indvars.iv.next318.1, %446 ]
  %niter = phi i64 [ 0, %.lr.ph305.new ], [ %niter.next.1, %446 ]
  %448 = getelementptr inbounds double, ptr %447, i64 %indvars.iv317
  %449 = load double, ptr %448, align 8, !tbaa !5
  %450 = call double @sqrt(double noundef %449) #10
  %451 = fmul double %444, %450
  %452 = load ptr, ptr %169, align 8, !tbaa !26
  %453 = getelementptr inbounds double, ptr %452, i64 %indvars.iv317
  store double %451, ptr %453, align 8, !tbaa !5
  %indvars.iv.next318 = or disjoint i64 %indvars.iv317, 1
  %454 = getelementptr inbounds double, ptr %452, i64 %indvars.iv.next318
  %455 = load double, ptr %454, align 8, !tbaa !5
  %456 = call double @sqrt(double noundef %455) #10
  %457 = fmul double %444, %456
  %458 = load ptr, ptr %169, align 8, !tbaa !26
  %459 = getelementptr inbounds double, ptr %458, i64 %indvars.iv.next318
  store double %457, ptr %459, align 8, !tbaa !5
  %indvars.iv.next318.1 = add nuw nsw i64 %indvars.iv317, 2
  %niter.next.1 = add i64 %niter, 2
  %niter.ncmp.1 = icmp eq i64 %niter.next.1, %unroll_iter
  br i1 %niter.ncmp.1, label %.loopexit.loopexit.unr-lcssa, label %446, !llvm.loop !40

.loopexit.loopexit.unr-lcssa:                     ; preds = %446, %.lr.ph305
  %.unr = phi ptr [ %.pre, %.lr.ph305 ], [ %458, %446 ]
  %indvars.iv317.unr = phi i64 [ 0, %.lr.ph305 ], [ %indvars.iv.next318.1, %446 ]
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %.loopexit, label %.loopexit.loopexit.epilog-lcssa

.loopexit.loopexit.epilog-lcssa:                  ; preds = %.loopexit.loopexit.unr-lcssa
  %460 = getelementptr inbounds double, ptr %.unr, i64 %indvars.iv317.unr
  %461 = load double, ptr %460, align 8, !tbaa !5
  %462 = call double @sqrt(double noundef %461) #10
  %463 = fmul double %444, %462
  %464 = load ptr, ptr %169, align 8, !tbaa !26
  %465 = getelementptr inbounds double, ptr %464, i64 %indvars.iv317.unr
  store double %463, ptr %465, align 8, !tbaa !5
  br label %.loopexit

.loopexit:                                        ; preds = %.loopexit.loopexit.epilog-lcssa, %.loopexit.loopexit.unr-lcssa, %433, %436, %.thread
  call void @_ZN8lsqrBase19TerminationPrintOutEv(ptr noundef nonnull align 8 dereferenceable(152) %0)
  call void @_ZdaPv(ptr noundef nonnull %64) #12
  call void @_ZdaPv(ptr noundef nonnull %67) #12
  call void @_ZdaPv(ptr noundef nonnull %68) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #10
  ret void
}

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

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

; 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 uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEb(ptr noundef nonnull align 8 dereferenceable(8), i1 noundef zeroext) local_unnamed_addr #1 align 2

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

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

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

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

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

; Function Attrs: nobuiltin nounwind
declare void @_ZdaPv(ptr noundef) local_unnamed_addr #7

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

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

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

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

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write)
declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #9

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


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