; LLVM IR from ox-vgg/vise :: src/search_engine/relja_retrival/external/KMCode_relja/matrix (svdcmp)

; 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.Vector = type { %class.Matrix, ptr }
%class.Matrix = type { ptr, ptr, i32, i32 }

@_ZL7maxarg1 = external hidden global double, align 8
@_ZL7maxarg2 = external hidden global double, align 8
@_ZL8iminarg1 = external hidden global i32, align 4
@_ZL8iminarg2 = external hidden global i32, align 4
@.str = external hidden unnamed_addr constant [39 x i8], align 1

; Function Attrs: mustprogress uwtable
define dso_local void @_ZNK6Matrix3svdERS_S0_S0_(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef nonnull align 8 dereferenceable(24) %2, ptr noundef nonnull align 8 dereferenceable(24) %3) #0 align 2 personality ptr @__gxx_personality_v0 {
  %5 = alloca ptr, align 8
  %6 = alloca ptr, align 8
  %7 = alloca ptr, align 8
  %8 = alloca ptr, align 8
  %9 = alloca i32, align 4
  %10 = alloca i32, align 4
  %11 = alloca i32, align 4
  %12 = alloca i32, align 4
  %13 = alloca i32, align 4
  %14 = alloca i32, align 4
  %15 = alloca i32, align 4
  %16 = alloca i32, align 4
  %17 = alloca i32, align 4
  %18 = alloca i32, align 4
  %19 = alloca i32, align 4
  %20 = alloca double, align 8
  %21 = alloca double, align 8
  %22 = alloca double, align 8
  %23 = alloca double, align 8
  %24 = alloca double, align 8
  %25 = alloca double, align 8
  %26 = alloca double, align 8
  %27 = alloca double, align 8
  %28 = alloca double, align 8
  %29 = alloca double, align 8
  %30 = alloca %class.Vector, align 8
  %31 = alloca %class.Matrix, align 8
  %32 = alloca ptr, align 8
  %33 = alloca i32, align 4
  %34 = alloca %class.Matrix, align 8
  store ptr %0, ptr %5, align 8, !tbaa !5
  store ptr %1, ptr %6, align 8, !tbaa !5
  store ptr %2, ptr %7, align 8, !tbaa !5
  store ptr %3, ptr %8, align 8, !tbaa !5
  %35 = load ptr, ptr %5, align 8
  call void @llvm.lifetime.start.p0(i64 4, ptr %9) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %10) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %11) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #7
  store i32 0, ptr %15, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #7
  store i32 0, ptr %16, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #7
  store i32 0, ptr %19, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #7
  store double 0.000000e+00, ptr %27, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #7
  store double 0.000000e+00, ptr %28, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #7
  store double 0.000000e+00, ptr %29, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 32, ptr %30) #7
  call void @_ZN6VectorC1Ev(ptr noundef nonnull align 8 dereferenceable(32) %30)
  call void @llvm.lifetime.start.p0(i64 24, ptr %31) #7
  invoke void @_ZN6MatrixC1ERKS_(ptr noundef nonnull align 8 dereferenceable(24) %31, ptr noundef nonnull align 8 dereferenceable(24) %35)
          to label %36 unwind label %47

36:                                               ; preds = %4
  %37 = invoke noundef i32 @_ZNK6Matrix6nbRowsEv(ptr noundef nonnull align 8 dereferenceable(24) %31)
          to label %38 unwind label %51

38:                                               ; preds = %36
  %39 = invoke noundef i32 @_ZNK6Matrix6nbColsEv(ptr noundef nonnull align 8 dereferenceable(24) %31)
          to label %40 unwind label %51

40:                                               ; preds = %38
  %41 = icmp slt i32 %37, %39
  br i1 %41, label %42, label %64

42:                                               ; preds = %40
  call void @llvm.lifetime.start.p0(i64 24, ptr %34) #7
  invoke void @_ZNK6Matrix9transposeEv(ptr dead_on_unwind writable sret(%class.Matrix) align 8 %34, ptr noundef nonnull align 8 dereferenceable(24) %31)
          to label %43 unwind label %55

43:                                               ; preds = %42
  %44 = load ptr, ptr %6, align 8, !tbaa !5
  %45 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN6MatrixaSERKS_(ptr noundef nonnull align 8 dereferenceable(24) %44, ptr noundef nonnull align 8 dereferenceable(24) %34)
          to label %46 unwind label %59

46:                                               ; preds = %43
  call void @_ZN6MatrixD1Ev(ptr noundef nonnull align 8 dereferenceable(24) %34) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %34) #7
  store i32 1, ptr %19, align 4, !tbaa !9
  br label %68

47:                                               ; preds = %4
  %48 = landingpad { ptr, i32 }
          cleanup
  %49 = extractvalue { ptr, i32 } %48, 0
  store ptr %49, ptr %32, align 8
  %50 = extractvalue { ptr, i32 } %48, 1
  store i32 %50, ptr %33, align 4
  br label %1548

51:                                               ; preds = %1532, %1526, %1517, %1494, %1484, %1473, %1468, %1448, %1444, %1441, %1418, %1403, %1394, %1386, %1347, %1343, %1324, %1309, %1300, %1292, %1258, %1247, %1238, %1233, %1176, %1172, %1168, %1157, %1149, %1147, %1128, %1120, %1105, %1089, %1065, %1050, %1041, %1033, %1010, %1005, %997, %983, %954, %941, %913, %900, %878, %853, %844, %825, %809, %801, %772, %755, %731, %723, %710, %702, %676, %667, %645, %637, %609, %600, %592, %553, %544, %527, %502, %498, %476, %468, %446, %438, %414, %393, %377, %367, %358, %333, %308, %291, %266, %257, %232, %224, %194, %173, %157, %147, %138, %113, %95, %88, %81, %74, %71, %68, %64, %38, %36
  %52 = landingpad { ptr, i32 }
          cleanup
  %53 = extractvalue { ptr, i32 } %52, 0
  store ptr %53, ptr %32, align 8
  %54 = extractvalue { ptr, i32 } %52, 1
  store i32 %54, ptr %33, align 4
  br label %1547

55:                                               ; preds = %42
  %56 = landingpad { ptr, i32 }
          cleanup
  %57 = extractvalue { ptr, i32 } %56, 0
  store ptr %57, ptr %32, align 8
  %58 = extractvalue { ptr, i32 } %56, 1
  store i32 %58, ptr %33, align 4
  br label %63

59:                                               ; preds = %43
  %60 = landingpad { ptr, i32 }
          cleanup
  %61 = extractvalue { ptr, i32 } %60, 0
  store ptr %61, ptr %32, align 8
  %62 = extractvalue { ptr, i32 } %60, 1
  store i32 %62, ptr %33, align 4
  call void @_ZN6MatrixD1Ev(ptr noundef nonnull align 8 dereferenceable(24) %34) #7
  br label %63

63:                                               ; preds = %59, %55
  call void @llvm.lifetime.end.p0(i64 24, ptr %34) #7
  br label %1547

64:                                               ; preds = %40
  %65 = load ptr, ptr %6, align 8, !tbaa !5
  %66 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN6MatrixaSERKS_(ptr noundef nonnull align 8 dereferenceable(24) %65, ptr noundef nonnull align 8 dereferenceable(24) %31)
          to label %67 unwind label %51

67:                                               ; preds = %64
  br label %68

68:                                               ; preds = %67, %46
  %69 = load ptr, ptr %6, align 8, !tbaa !5
  %70 = invoke noundef i32 @_ZNK6Matrix6nbRowsEv(ptr noundef nonnull align 8 dereferenceable(24) %69)
          to label %71 unwind label %51

71:                                               ; preds = %68
  store i32 %70, ptr %17, align 4, !tbaa !9
  %72 = load ptr, ptr %6, align 8, !tbaa !5
  %73 = invoke noundef i32 @_ZNK6Matrix6nbColsEv(ptr noundef nonnull align 8 dereferenceable(24) %72)
          to label %74 unwind label %51

74:                                               ; preds = %71
  store i32 %73, ptr %18, align 4, !tbaa !9
  %75 = load ptr, ptr %7, align 8, !tbaa !5
  %76 = load i32, ptr %18, align 4, !tbaa !9
  %77 = load i32, ptr %18, align 4, !tbaa !9
  %78 = load ptr, ptr %75, align 8, !tbaa !13
  %79 = getelementptr inbounds ptr, ptr %78, i64 3
  %80 = load ptr, ptr %79, align 8
  invoke void %80(ptr noundef nonnull align 8 dereferenceable(24) %75, i32 noundef %76, i32 noundef %77, double noundef 0.000000e+00)
          to label %81 unwind label %51

81:                                               ; preds = %74
  %82 = load ptr, ptr %8, align 8, !tbaa !5
  %83 = load i32, ptr %18, align 4, !tbaa !9
  %84 = load i32, ptr %18, align 4, !tbaa !9
  %85 = load ptr, ptr %82, align 8, !tbaa !13
  %86 = getelementptr inbounds ptr, ptr %85, i64 2
  %87 = load ptr, ptr %86, align 8
  invoke void %87(ptr noundef nonnull align 8 dereferenceable(24) %82, i32 noundef %83, i32 noundef %84)
          to label %88 unwind label %51

88:                                               ; preds = %81
  %89 = load i32, ptr %18, align 4, !tbaa !9
  invoke void @_ZN6Vector6createEid(ptr noundef nonnull align 8 dereferenceable(32) %30, i32 noundef %89, double noundef 0.000000e+00)
          to label %90 unwind label %51

90:                                               ; preds = %88
  store i32 1, ptr %10, align 4, !tbaa !9
  br label %91

91:                                               ; preds = %571, %90
  %92 = load i32, ptr %10, align 4, !tbaa !9
  %93 = load i32, ptr %18, align 4, !tbaa !9
  %94 = icmp sle i32 %92, %93
  br i1 %94, label %95, label %574

95:                                               ; preds = %91
  %96 = load i32, ptr %10, align 4, !tbaa !9
  %97 = add nsw i32 %96, 1
  store i32 %97, ptr %15, align 4, !tbaa !9
  %98 = load double, ptr %29, align 8, !tbaa !11
  %99 = load double, ptr %28, align 8, !tbaa !11
  %100 = fmul double %98, %99
  %101 = load i32, ptr %10, align 4, !tbaa !9
  %102 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN6VectorclEi(ptr noundef nonnull align 8 dereferenceable(32) %30, i32 noundef %101)
          to label %103 unwind label %51

103:                                              ; preds = %95
  store double %100, ptr %102, align 8, !tbaa !11
  store double 0.000000e+00, ptr %29, align 8, !tbaa !11
  store double 0.000000e+00, ptr %23, align 8, !tbaa !11
  store double 0.000000e+00, ptr %28, align 8, !tbaa !11
  %104 = load i32, ptr %10, align 4, !tbaa !9
  %105 = load i32, ptr %17, align 4, !tbaa !9
  %106 = icmp sle i32 %104, %105
  br i1 %106, label %107, label %308

107:                                              ; preds = %103
  %108 = load i32, ptr %10, align 4, !tbaa !9
  store i32 %108, ptr %14, align 4, !tbaa !9
  br label %109

109:                                              ; preds = %126, %107
  %110 = load i32, ptr %14, align 4, !tbaa !9
  %111 = load i32, ptr %17, align 4, !tbaa !9
  %112 = icmp sle i32 %110, %111
  br i1 %112, label %113, label %129

113:                                              ; preds = %109
  %114 = load ptr, ptr %6, align 8, !tbaa !5
  %115 = load i32, ptr %14, align 4, !tbaa !9
  %116 = load i32, ptr %10, align 4, !tbaa !9
  %117 = load ptr, ptr %114, align 8, !tbaa !13
  %118 = getelementptr inbounds ptr, ptr %117, i64 6
  %119 = load ptr, ptr %118, align 8
  %120 = invoke noundef nonnull align 8 dereferenceable(8) ptr %119(ptr noundef nonnull align 8 dereferenceable(24) %114, i32 noundef %115, i32 noundef %116)
          to label %121 unwind label %51

121:                                              ; preds = %113
  %122 = load double, ptr %120, align 8, !tbaa !11
  %123 = call double @llvm.fabs.f64(double %122)
  %124 = load double, ptr %29, align 8, !tbaa !11
  %125 = fadd double %124, %123
  store double %125, ptr %29, align 8, !tbaa !11
  br label %126

126:                                              ; preds = %121
  %127 = load i32, ptr %14, align 4, !tbaa !9
  %128 = add nsw i32 %127, 1
  store i32 %128, ptr %14, align 4, !tbaa !9
  br label %109, !llvm.loop !15

129:                                              ; preds = %109
  %130 = load double, ptr %29, align 8, !tbaa !11
  %131 = fcmp une double %130, 0.000000e+00
  br i1 %131, label %132, label %307

132:                                              ; preds = %129
  %133 = load i32, ptr %10, align 4, !tbaa !9
  store i32 %133, ptr %14, align 4, !tbaa !9
  br label %134

134:                                              ; preds = %170, %132
  %135 = load i32, ptr %14, align 4, !tbaa !9
  %136 = load i32, ptr %17, align 4, !tbaa !9
  %137 = icmp sle i32 %135, %136
  br i1 %137, label %138, label %173

138:                                              ; preds = %134
  %139 = load double, ptr %29, align 8, !tbaa !11
  %140 = load ptr, ptr %6, align 8, !tbaa !5
  %141 = load i32, ptr %14, align 4, !tbaa !9
  %142 = load i32, ptr %10, align 4, !tbaa !9
  %143 = load ptr, ptr %140, align 8, !tbaa !13
  %144 = getelementptr inbounds ptr, ptr %143, i64 6
  %145 = load ptr, ptr %144, align 8
  %146 = invoke noundef nonnull align 8 dereferenceable(8) ptr %145(ptr noundef nonnull align 8 dereferenceable(24) %140, i32 noundef %141, i32 noundef %142)
          to label %147 unwind label %51

147:                                              ; preds = %138
  %148 = load double, ptr %146, align 8, !tbaa !11
  %149 = fdiv double %148, %139
  store double %149, ptr %146, align 8, !tbaa !11
  %150 = load ptr, ptr %6, align 8, !tbaa !5
  %151 = load i32, ptr %14, align 4, !tbaa !9
  %152 = load i32, ptr %10, align 4, !tbaa !9
  %153 = load ptr, ptr %150, align 8, !tbaa !13
  %154 = getelementptr inbounds ptr, ptr %153, i64 6
  %155 = load ptr, ptr %154, align 8
  %156 = invoke noundef nonnull align 8 dereferenceable(8) ptr %155(ptr noundef nonnull align 8 dereferenceable(24) %150, i32 noundef %151, i32 noundef %152)
          to label %157 unwind label %51

157:                                              ; preds = %147
  %158 = load double, ptr %156, align 8, !tbaa !11
  %159 = load ptr, ptr %6, align 8, !tbaa !5
  %160 = load i32, ptr %14, align 4, !tbaa !9
  %161 = load i32, ptr %10, align 4, !tbaa !9
  %162 = load ptr, ptr %159, align 8, !tbaa !13
  %163 = getelementptr inbounds ptr, ptr %162, i64 6
  %164 = load ptr, ptr %163, align 8
  %165 = invoke noundef nonnull align 8 dereferenceable(8) ptr %164(ptr noundef nonnull align 8 dereferenceable(24) %159, i32 noundef %160, i32 noundef %161)
          to label %166 unwind label %51

166:                                              ; preds = %157
  %167 = load double, ptr %165, align 8, !tbaa !11
  %168 = load double, ptr %23, align 8, !tbaa !11
  %169 = call double @llvm.fmuladd.f64(double %158, double %167, double %168)
  store double %169, ptr %23, align 8, !tbaa !11
  br label %170

170:                                              ; preds = %166
  %171 = load i32, ptr %14, align 4, !tbaa !9
  %172 = add nsw i32 %171, 1
  store i32 %172, ptr %14, align 4, !tbaa !9
  br label %134, !llvm.loop !17

173:                                              ; preds = %134
  %174 = load ptr, ptr %6, align 8, !tbaa !5
  %175 = load i32, ptr %10, align 4, !tbaa !9
  %176 = load i32, ptr %10, align 4, !tbaa !9
  %177 = load ptr, ptr %174, align 8, !tbaa !13
  %178 = getelementptr inbounds ptr, ptr %177, i64 6
  %179 = load ptr, ptr %178, align 8
  %180 = invoke noundef nonnull align 8 dereferenceable(8) ptr %179(ptr noundef nonnull align 8 dereferenceable(24) %174, i32 noundef %175, i32 noundef %176)
          to label %181 unwind label %51

181:                                              ; preds = %173
  %182 = load double, ptr %180, align 8, !tbaa !11
  store double %182, ptr %21, align 8, !tbaa !11
  %183 = load double, ptr %21, align 8, !tbaa !11
  %184 = fcmp oge double %183, 0.000000e+00
  br i1 %184, label %185, label %189

185:                                              ; preds = %181
  %186 = load double, ptr %23, align 8, !tbaa !11
  %187 = call double @sqrt(double noundef %186) #7
  %188 = call double @llvm.fabs.f64(double %187)
  br label %194

189:                                              ; preds = %181
  %190 = load double, ptr %23, align 8, !tbaa !11
  %191 = call double @sqrt(double noundef %190) #7
  %192 = call double @llvm.fabs.f64(double %191)
  %193 = fneg double %192
  br label %194

194:                                              ; preds = %189, %185
  %195 = phi double [ %188, %185 ], [ %193, %189 ]
  %196 = fneg double %195
  store double %196, ptr %28, align 8, !tbaa !11
  %197 = load double, ptr %21, align 8, !tbaa !11
  %198 = load double, ptr %28, align 8, !tbaa !11
  %199 = load double, ptr %23, align 8, !tbaa !11
  %200 = fneg double %199
  %201 = call double @llvm.fmuladd.f64(double %197, double %198, double %200)
  store double %201, ptr %22, align 8, !tbaa !11
  %202 = load double, ptr %21, align 8, !tbaa !11
  %203 = load double, ptr %28, align 8, !tbaa !11
  %204 = fsub double %202, %203
  %205 = load ptr, ptr %6, align 8, !tbaa !5
  %206 = load i32, ptr %10, align 4, !tbaa !9
  %207 = load i32, ptr %10, align 4, !tbaa !9
  %208 = load ptr, ptr %205, align 8, !tbaa !13
  %209 = getelementptr inbounds ptr, ptr %208, i64 6
  %210 = load ptr, ptr %209, align 8
  %211 = invoke noundef nonnull align 8 dereferenceable(8) ptr %210(ptr noundef nonnull align 8 dereferenceable(24) %205, i32 noundef %206, i32 noundef %207)
          to label %212 unwind label %51

212:                                              ; preds = %194
  store double %204, ptr %211, align 8, !tbaa !11
  %213 = load i32, ptr %15, align 4, !tbaa !9
  store i32 %213, ptr %12, align 4, !tbaa !9
  br label %214

214:                                              ; preds = %282, %212
  %215 = load i32, ptr %12, align 4, !tbaa !9
  %216 = load i32, ptr %18, align 4, !tbaa !9
  %217 = icmp sle i32 %215, %216
  br i1 %217, label %218, label %285

218:                                              ; preds = %214
  store double 0.000000e+00, ptr %23, align 8, !tbaa !11
  %219 = load i32, ptr %10, align 4, !tbaa !9
  store i32 %219, ptr %14, align 4, !tbaa !9
  br label %220

220:                                              ; preds = %245, %218
  %221 = load i32, ptr %14, align 4, !tbaa !9
  %222 = load i32, ptr %17, align 4, !tbaa !9
  %223 = icmp sle i32 %221, %222
  br i1 %223, label %224, label %248

224:                                              ; preds = %220
  %225 = load ptr, ptr %6, align 8, !tbaa !5
  %226 = load i32, ptr %14, align 4, !tbaa !9
  %227 = load i32, ptr %10, align 4, !tbaa !9
  %228 = load ptr, ptr %225, align 8, !tbaa !13
  %229 = getelementptr inbounds ptr, ptr %228, i64 6
  %230 = load ptr, ptr %229, align 8
  %231 = invoke noundef nonnull align 8 dereferenceable(8) ptr %230(ptr noundef nonnull align 8 dereferenceable(24) %225, i32 noundef %226, i32 noundef %227)
          to label %232 unwind label %51

232:                                              ; preds = %224
  %233 = load double, ptr %231, align 8, !tbaa !11
  %234 = load ptr, ptr %6, align 8, !tbaa !5
  %235 = load i32, ptr %14, align 4, !tbaa !9
  %236 = load i32, ptr %12, align 4, !tbaa !9
  %237 = load ptr, ptr %234, align 8, !tbaa !13
  %238 = getelementptr inbounds ptr, ptr %237, i64 6
  %239 = load ptr, ptr %238, align 8
  %240 = invoke noundef nonnull align 8 dereferenceable(8) ptr %239(ptr noundef nonnull align 8 dereferenceable(24) %234, i32 noundef %235, i32 noundef %236)
          to label %241 unwind label %51

241:                                              ; preds = %232
  %242 = load double, ptr %240, align 8, !tbaa !11
  %243 = load double, ptr %23, align 8, !tbaa !11
  %244 = call double @llvm.fmuladd.f64(double %233, double %242, double %243)
  store double %244, ptr %23, align 8, !tbaa !11
  br label %245

245:                                              ; preds = %241
  %246 = load i32, ptr %14, align 4, !tbaa !9
  %247 = add nsw i32 %246, 1
  store i32 %247, ptr %14, align 4, !tbaa !9
  br label %220, !llvm.loop !18

248:                                              ; preds = %220
  %249 = load double, ptr %23, align 8, !tbaa !11
  %250 = load double, ptr %22, align 8, !tbaa !11
  %251 = fdiv double %249, %250
  store double %251, ptr %21, align 8, !tbaa !11
  %252 = load i32, ptr %10, align 4, !tbaa !9
  store i32 %252, ptr %14, align 4, !tbaa !9
  br label %253

253:                                              ; preds = %278, %248
  %254 = load i32, ptr %14, align 4, !tbaa !9
  %255 = load i32, ptr %17, align 4, !tbaa !9
  %256 = icmp sle i32 %254, %255
  br i1 %256, label %257, label %281

257:                                              ; preds = %253
  %258 = load double, ptr %21, align 8, !tbaa !11
  %259 = load ptr, ptr %6, align 8, !tbaa !5
  %260 = load i32, ptr %14, align 4, !tbaa !9
  %261 = load i32, ptr %10, align 4, !tbaa !9
  %262 = load ptr, ptr %259, align 8, !tbaa !13
  %263 = getelementptr inbounds ptr, ptr %262, i64 6
  %264 = load ptr, ptr %263, align 8
  %265 = invoke noundef nonnull align 8 dereferenceable(8) ptr %264(ptr noundef nonnull align 8 dereferenceable(24) %259, i32 noundef %260, i32 noundef %261)
          to label %266 unwind label %51

266:                                              ; preds = %257
  %267 = load double, ptr %265, align 8, !tbaa !11
  %268 = load ptr, ptr %6, align 8, !tbaa !5
  %269 = load i32, ptr %14, align 4, !tbaa !9
  %270 = load i32, ptr %12, align 4, !tbaa !9
  %271 = load ptr, ptr %268, align 8, !tbaa !13
  %272 = getelementptr inbounds ptr, ptr %271, i64 6
  %273 = load ptr, ptr %272, align 8
  %274 = invoke noundef nonnull align 8 dereferenceable(8) ptr %273(ptr noundef nonnull align 8 dereferenceable(24) %268, i32 noundef %269, i32 noundef %270)
          to label %275 unwind label %51

275:                                              ; preds = %266
  %276 = load double, ptr %274, align 8, !tbaa !11
  %277 = call double @llvm.fmuladd.f64(double %258, double %267, double %276)
  store double %277, ptr %274, align 8, !tbaa !11
  br label %278

278:                                              ; preds = %275
  %279 = load i32, ptr %14, align 4, !tbaa !9
  %280 = add nsw i32 %279, 1
  store i32 %280, ptr %14, align 4, !tbaa !9
  br label %253, !llvm.loop !19

281:                                              ; preds = %253
  br label %282

282:                                              ; preds = %281
  %283 = load i32, ptr %12, align 4, !tbaa !9
  %284 = add nsw i32 %283, 1
  store i32 %284, ptr %12, align 4, !tbaa !9
  br label %214, !llvm.loop !20

285:                                              ; preds = %214
  %286 = load i32, ptr %10, align 4, !tbaa !9
  store i32 %286, ptr %14, align 4, !tbaa !9
  br label %287

287:                                              ; preds = %303, %285
  %288 = load i32, ptr %14, align 4, !tbaa !9
  %289 = load i32, ptr %17, align 4, !tbaa !9
  %290 = icmp sle i32 %288, %289
  br i1 %290, label %291, label %306

291:                                              ; preds = %287
  %292 = load double, ptr %29, align 8, !tbaa !11
  %293 = load ptr, ptr %6, align 8, !tbaa !5
  %294 = load i32, ptr %14, align 4, !tbaa !9
  %295 = load i32, ptr %10, align 4, !tbaa !9
  %296 = load ptr, ptr %293, align 8, !tbaa !13
  %297 = getelementptr inbounds ptr, ptr %296, i64 6
  %298 = load ptr, ptr %297, align 8
  %299 = invoke noundef nonnull align 8 dereferenceable(8) ptr %298(ptr noundef nonnull align 8 dereferenceable(24) %293, i32 noundef %294, i32 noundef %295)
          to label %300 unwind label %51

300:                                              ; preds = %291
  %301 = load double, ptr %299, align 8, !tbaa !11
  %302 = fmul double %301, %292
  store double %302, ptr %299, align 8, !tbaa !11
  br label %303

303:                                              ; preds = %300
  %304 = load i32, ptr %14, align 4, !tbaa !9
  %305 = add nsw i32 %304, 1
  store i32 %305, ptr %14, align 4, !tbaa !9
  br label %287, !llvm.loop !21

306:                                              ; preds = %287
  br label %307

307:                                              ; preds = %306, %129
  br label %308

308:                                              ; preds = %307, %103
  %309 = load double, ptr %29, align 8, !tbaa !11
  %310 = load double, ptr %28, align 8, !tbaa !11
  %311 = fmul double %309, %310
  %312 = load ptr, ptr %7, align 8, !tbaa !5
  %313 = load i32, ptr %10, align 4, !tbaa !9
  %314 = load i32, ptr %10, align 4, !tbaa !9
  %315 = load ptr, ptr %312, align 8, !tbaa !13
  %316 = getelementptr inbounds ptr, ptr %315, i64 6
  %317 = load ptr, ptr %316, align 8
  %318 = invoke noundef nonnull align 8 dereferenceable(8) ptr %317(ptr noundef nonnull align 8 dereferenceable(24) %312, i32 noundef %313, i32 noundef %314)
          to label %319 unwind label %51

319:                                              ; preds = %308
  store double %311, ptr %318, align 8, !tbaa !11
  store double 0.000000e+00, ptr %29, align 8, !tbaa !11
  store double 0.000000e+00, ptr %23, align 8, !tbaa !11
  store double 0.000000e+00, ptr %28, align 8, !tbaa !11
  %320 = load i32, ptr %10, align 4, !tbaa !9
  %321 = load i32, ptr %17, align 4, !tbaa !9
  %322 = icmp sle i32 %320, %321
  br i1 %322, label %323, label %544

323:                                              ; preds = %319
  %324 = load i32, ptr %10, align 4, !tbaa !9
  %325 = load i32, ptr %18, align 4, !tbaa !9
  %326 = icmp ne i32 %324, %325
  br i1 %326, label %327, label %544

327:                                              ; preds = %323
  %328 = load i32, ptr %15, align 4, !tbaa !9
  store i32 %328, ptr %14, align 4, !tbaa !9
  br label %329

329:                                              ; preds = %346, %327
  %330 = load i32, ptr %14, align 4, !tbaa !9
  %331 = load i32, ptr %18, align 4, !tbaa !9
  %332 = icmp sle i32 %330, %331
  br i1 %332, label %333, label %349

333:                                              ; preds = %329
  %334 = load ptr, ptr %6, align 8, !tbaa !5
  %335 = load i32, ptr %10, align 4, !tbaa !9
  %336 = load i32, ptr %14, align 4, !tbaa !9
  %337 = load ptr, ptr %334, align 8, !tbaa !13
  %338 = getelementptr inbounds ptr, ptr %337, i64 6
  %339 = load ptr, ptr %338, align 8
  %340 = invoke noundef nonnull align 8 dereferenceable(8) ptr %339(ptr noundef nonnull align 8 dereferenceable(24) %334, i32 noundef %335, i32 noundef %336)
          to label %341 unwind label %51

341:                                              ; preds = %333
  %342 = load double, ptr %340, align 8, !tbaa !11
  %343 = call double @llvm.fabs.f64(double %342)
  %344 = load double, ptr %29, align 8, !tbaa !11
  %345 = fadd double %344, %343
  store double %345, ptr %29, align 8, !tbaa !11
  br label %346

346:                                              ; preds = %341
  %347 = load i32, ptr %14, align 4, !tbaa !9
  %348 = add nsw i32 %347, 1
  store i32 %348, ptr %14, align 4, !tbaa !9
  br label %329, !llvm.loop !22

349:                                              ; preds = %329
  %350 = load double, ptr %29, align 8, !tbaa !11
  %351 = fcmp une double %350, 0.000000e+00
  br i1 %351, label %352, label %543

352:                                              ; preds = %349
  %353 = load i32, ptr %15, align 4, !tbaa !9
  store i32 %353, ptr %14, align 4, !tbaa !9
  br label %354

354:                                              ; preds = %390, %352
  %355 = load i32, ptr %14, align 4, !tbaa !9
  %356 = load i32, ptr %18, align 4, !tbaa !9
  %357 = icmp sle i32 %355, %356
  br i1 %357, label %358, label %393

358:                                              ; preds = %354
  %359 = load double, ptr %29, align 8, !tbaa !11
  %360 = load ptr, ptr %6, align 8, !tbaa !5
  %361 = load i32, ptr %10, align 4, !tbaa !9
  %362 = load i32, ptr %14, align 4, !tbaa !9
  %363 = load ptr, ptr %360, align 8, !tbaa !13
  %364 = getelementptr inbounds ptr, ptr %363, i64 6
  %365 = load ptr, ptr %364, align 8
  %366 = invoke noundef nonnull align 8 dereferenceable(8) ptr %365(ptr noundef nonnull align 8 dereferenceable(24) %360, i32 noundef %361, i32 noundef %362)
          to label %367 unwind label %51

367:                                              ; preds = %358
  %368 = load double, ptr %366, align 8, !tbaa !11
  %369 = fdiv double %368, %359
  store double %369, ptr %366, align 8, !tbaa !11
  %370 = load ptr, ptr %6, align 8, !tbaa !5
  %371 = load i32, ptr %10, align 4, !tbaa !9
  %372 = load i32, ptr %14, align 4, !tbaa !9
  %373 = load ptr, ptr %370, align 8, !tbaa !13
  %374 = getelementptr inbounds ptr, ptr %373, i64 6
  %375 = load ptr, ptr %374, align 8
  %376 = invoke noundef nonnull align 8 dereferenceable(8) ptr %375(ptr noundef nonnull align 8 dereferenceable(24) %370, i32 noundef %371, i32 noundef %372)
          to label %377 unwind label %51

377:                                              ; preds = %367
  %378 = load double, ptr %376, align 8, !tbaa !11
  %379 = load ptr, ptr %6, align 8, !tbaa !5
  %380 = load i32, ptr %10, align 4, !tbaa !9
  %381 = load i32, ptr %14, align 4, !tbaa !9
  %382 = load ptr, ptr %379, align 8, !tbaa !13
  %383 = getelementptr inbounds ptr, ptr %382, i64 6
  %384 = load ptr, ptr %383, align 8
  %385 = invoke noundef nonnull align 8 dereferenceable(8) ptr %384(ptr noundef nonnull align 8 dereferenceable(24) %379, i32 noundef %380, i32 noundef %381)
          to label %386 unwind label %51

386:                                              ; preds = %377
  %387 = load double, ptr %385, align 8, !tbaa !11
  %388 = load double, ptr %23, align 8, !tbaa !11
  %389 = call double @llvm.fmuladd.f64(double %378, double %387, double %388)
  store double %389, ptr %23, align 8, !tbaa !11
  br label %390

390:                                              ; preds = %386
  %391 = load i32, ptr %14, align 4, !tbaa !9
  %392 = add nsw i32 %391, 1
  store i32 %392, ptr %14, align 4, !tbaa !9
  br label %354, !llvm.loop !23

393:                                              ; preds = %354
  %394 = load ptr, ptr %6, align 8, !tbaa !5
  %395 = load i32, ptr %10, align 4, !tbaa !9
  %396 = load i32, ptr %15, align 4, !tbaa !9
  %397 = load ptr, ptr %394, align 8, !tbaa !13
  %398 = getelementptr inbounds ptr, ptr %397, i64 6
  %399 = load ptr, ptr %398, align 8
  %400 = invoke noundef nonnull align 8 dereferenceable(8) ptr %399(ptr noundef nonnull align 8 dereferenceable(24) %394, i32 noundef %395, i32 noundef %396)
          to label %401 unwind label %51

401:                                              ; preds = %393
  %402 = load double, ptr %400, align 8, !tbaa !11
  store double %402, ptr %21, align 8, !tbaa !11
  %403 = load double, ptr %21, align 8, !tbaa !11
  %404 = fcmp oge double %403, 0.000000e+00
  br i1 %404, label %405, label %409

405:                                              ; preds = %401
  %406 = load double, ptr %23, align 8, !tbaa !11
  %407 = call double @sqrt(double noundef %406) #7
  %408 = call double @llvm.fabs.f64(double %407)
  br label %414

409:                                              ; preds = %401
  %410 = load double, ptr %23, align 8, !tbaa !11
  %411 = call double @sqrt(double noundef %410) #7
  %412 = call double @llvm.fabs.f64(double %411)
  %413 = fneg double %412
  br label %414

414:                                              ; preds = %409, %405
  %415 = phi double [ %408, %405 ], [ %413, %409 ]
  %416 = fneg double %415
  store double %416, ptr %28, align 8, !tbaa !11
  %417 = load double, ptr %21, align 8, !tbaa !11
  %418 = load double, ptr %28, align 8, !tbaa !11
  %419 = load double, ptr %23, align 8, !tbaa !11
  %420 = fneg double %419
  %421 = call double @llvm.fmuladd.f64(double %417, double %418, double %420)
  store double %421, ptr %22, align 8, !tbaa !11
  %422 = load double, ptr %21, align 8, !tbaa !11
  %423 = load double, ptr %28, align 8, !tbaa !11
  %424 = fsub double %422, %423
  %425 = load ptr, ptr %6, align 8, !tbaa !5
  %426 = load i32, ptr %10, align 4, !tbaa !9
  %427 = load i32, ptr %15, align 4, !tbaa !9
  %428 = load ptr, ptr %425, align 8, !tbaa !13
  %429 = getelementptr inbounds ptr, ptr %428, i64 6
  %430 = load ptr, ptr %429, align 8
  %431 = invoke noundef nonnull align 8 dereferenceable(8) ptr %430(ptr noundef nonnull align 8 dereferenceable(24) %425, i32 noundef %426, i32 noundef %427)
          to label %432 unwind label %51

432:                                              ; preds = %414
  store double %424, ptr %431, align 8, !tbaa !11
  %433 = load i32, ptr %15, align 4, !tbaa !9
  store i32 %433, ptr %14, align 4, !tbaa !9
  br label %434

434:                                              ; preds = %453, %432
  %435 = load i32, ptr %14, align 4, !tbaa !9
  %436 = load i32, ptr %18, align 4, !tbaa !9
  %437 = icmp sle i32 %435, %436
  br i1 %437, label %438, label %456

438:                                              ; preds = %434
  %439 = load ptr, ptr %6, align 8, !tbaa !5
  %440 = load i32, ptr %10, align 4, !tbaa !9
  %441 = load i32, ptr %14, align 4, !tbaa !9
  %442 = load ptr, ptr %439, align 8, !tbaa !13
  %443 = getelementptr inbounds ptr, ptr %442, i64 6
  %444 = load ptr, ptr %443, align 8
  %445 = invoke noundef nonnull align 8 dereferenceable(8) ptr %444(ptr noundef nonnull align 8 dereferenceable(24) %439, i32 noundef %440, i32 noundef %441)
          to label %446 unwind label %51

446:                                              ; preds = %438
  %447 = load double, ptr %445, align 8, !tbaa !11
  %448 = load double, ptr %22, align 8, !tbaa !11
  %449 = fdiv double %447, %448
  %450 = load i32, ptr %14, align 4, !tbaa !9
  %451 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN6VectorclEi(ptr noundef nonnull align 8 dereferenceable(32) %30, i32 noundef %450)
          to label %452 unwind label %51

452:                                              ; preds = %446
  store double %449, ptr %451, align 8, !tbaa !11
  br label %453

453:                                              ; preds = %452
  %454 = load i32, ptr %14, align 4, !tbaa !9
  %455 = add nsw i32 %454, 1
  store i32 %455, ptr %14, align 4, !tbaa !9
  br label %434, !llvm.loop !24

456:                                              ; preds = %434
  %457 = load i32, ptr %15, align 4, !tbaa !9
  store i32 %457, ptr %12, align 4, !tbaa !9
  br label %458

458:                                              ; preds = %518, %456
  %459 = load i32, ptr %12, align 4, !tbaa !9
  %460 = load i32, ptr %17, align 4, !tbaa !9
  %461 = icmp sle i32 %459, %460
  br i1 %461, label %462, label %521

462:                                              ; preds = %458
  store double 0.000000e+00, ptr %23, align 8, !tbaa !11
  %463 = load i32, ptr %15, align 4, !tbaa !9
  store i32 %463, ptr %14, align 4, !tbaa !9
  br label %464

464:                                              ; preds = %489, %462
  %465 = load i32, ptr %14, align 4, !tbaa !9
  %466 = load i32, ptr %18, align 4, !tbaa !9
  %467 = icmp sle i32 %465, %466
  br i1 %467, label %468, label %492

468:                                              ; preds = %464
  %469 = load ptr, ptr %6, align 8, !tbaa !5
  %470 = load i32, ptr %12, align 4, !tbaa !9
  %471 = load i32, ptr %14, align 4, !tbaa !9
  %472 = load ptr, ptr %469, align 8, !tbaa !13
  %473 = getelementptr inbounds ptr, ptr %472, i64 6
  %474 = load ptr, ptr %473, align 8
  %475 = invoke noundef nonnull align 8 dereferenceable(8) ptr %474(ptr noundef nonnull align 8 dereferenceable(24) %469, i32 noundef %470, i32 noundef %471)
          to label %476 unwind label %51

476:                                              ; preds = %468
  %477 = load double, ptr %475, align 8, !tbaa !11
  %478 = load ptr, ptr %6, align 8, !tbaa !5
  %479 = load i32, ptr %10, align 4, !tbaa !9
  %480 = load i32, ptr %14, align 4, !tbaa !9
  %481 = load ptr, ptr %478, align 8, !tbaa !13
  %482 = getelementptr inbounds ptr, ptr %481, i64 6
  %483 = load ptr, ptr %482, align 8
  %484 = invoke noundef nonnull align 8 dereferenceable(8) ptr %483(ptr noundef nonnull align 8 dereferenceable(24) %478, i32 noundef %479, i32 noundef %480)
          to label %485 unwind label %51

485:                                              ; preds = %476
  %486 = load double, ptr %484, align 8, !tbaa !11
  %487 = load double, ptr %23, align 8, !tbaa !11
  %488 = call double @llvm.fmuladd.f64(double %477, double %486, double %487)
  store double %488, ptr %23, align 8, !tbaa !11
  br label %489

489:                                              ; preds = %485
  %490 = load i32, ptr %14, align 4, !tbaa !9
  %491 = add nsw i32 %490, 1
  store i32 %491, ptr %14, align 4, !tbaa !9
  br label %464, !llvm.loop !25

492:                                              ; preds = %464
  %493 = load i32, ptr %15, align 4, !tbaa !9
  store i32 %493, ptr %14, align 4, !tbaa !9
  br label %494

494:                                              ; preds = %514, %492
  %495 = load i32, ptr %14, align 4, !tbaa !9
  %496 = load i32, ptr %18, align 4, !tbaa !9
  %497 = icmp sle i32 %495, %496
  br i1 %497, label %498, label %517

498:                                              ; preds = %494
  %499 = load double, ptr %23, align 8, !tbaa !11
  %500 = load i32, ptr %14, align 4, !tbaa !9
  %501 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN6VectorclEi(ptr noundef nonnull align 8 dereferenceable(32) %30, i32 noundef %500)
          to label %502 unwind label %51

502:                                              ; preds = %498
  %503 = load double, ptr %501, align 8, !tbaa !11
  %504 = load ptr, ptr %6, align 8, !tbaa !5
  %505 = load i32, ptr %12, align 4, !tbaa !9
  %506 = load i32, ptr %14, align 4, !tbaa !9
  %507 = load ptr, ptr %504, align 8, !tbaa !13
  %508 = getelementptr inbounds ptr, ptr %507, i64 6
  %509 = load ptr, ptr %508, align 8
  %510 = invoke noundef nonnull align 8 dereferenceable(8) ptr %509(ptr noundef nonnull align 8 dereferenceable(24) %504, i32 noundef %505, i32 noundef %506)
          to label %511 unwind label %51

511:                                              ; preds = %502
  %512 = load double, ptr %510, align 8, !tbaa !11
  %513 = call double @llvm.fmuladd.f64(double %499, double %503, double %512)
  store double %513, ptr %510, align 8, !tbaa !11
  br label %514

514:                                              ; preds = %511
  %515 = load i32, ptr %14, align 4, !tbaa !9
  %516 = add nsw i32 %515, 1
  store i32 %516, ptr %14, align 4, !tbaa !9
  br label %494, !llvm.loop !26

517:                                              ; preds = %494
  br label %518

518:                                              ; preds = %517
  %519 = load i32, ptr %12, align 4, !tbaa !9
  %520 = add nsw i32 %519, 1
  store i32 %520, ptr %12, align 4, !tbaa !9
  br label %458, !llvm.loop !27

521:                                              ; preds = %458
  %522 = load i32, ptr %15, align 4, !tbaa !9
  store i32 %522, ptr %14, align 4, !tbaa !9
  br label %523

523:                                              ; preds = %539, %521
  %524 = load i32, ptr %14, align 4, !tbaa !9
  %525 = load i32, ptr %18, align 4, !tbaa !9
  %526 = icmp sle i32 %524, %525
  br i1 %526, label %527, label %542

527:                                              ; preds = %523
  %528 = load double, ptr %29, align 8, !tbaa !11
  %529 = load ptr, ptr %6, align 8, !tbaa !5
  %530 = load i32, ptr %10, align 4, !tbaa !9
  %531 = load i32, ptr %14, align 4, !tbaa !9
  %532 = load ptr, ptr %529, align 8, !tbaa !13
  %533 = getelementptr inbounds ptr, ptr %532, i64 6
  %534 = load ptr, ptr %533, align 8
  %535 = invoke noundef nonnull align 8 dereferenceable(8) ptr %534(ptr noundef nonnull align 8 dereferenceable(24) %529, i32 noundef %530, i32 noundef %531)
          to label %536 unwind label %51

536:                                              ; preds = %527
  %537 = load double, ptr %535, align 8, !tbaa !11
  %538 = fmul double %537, %528
  store double %538, ptr %535, align 8, !tbaa !11
  br label %539

539:                                              ; preds = %536
  %540 = load i32, ptr %14, align 4, !tbaa !9
  %541 = add nsw i32 %540, 1
  store i32 %541, ptr %14, align 4, !tbaa !9
  br label %523, !llvm.loop !28

542:                                              ; preds = %523
  br label %543

543:                                              ; preds = %542, %349
  br label %544

544:                                              ; preds = %543, %323, %319
  %545 = load double, ptr %27, align 8, !tbaa !11
  store double %545, ptr @_ZL7maxarg1, align 8, !tbaa !11
  %546 = load ptr, ptr %7, align 8, !tbaa !5
  %547 = load i32, ptr %10, align 4, !tbaa !9
  %548 = load i32, ptr %10, align 4, !tbaa !9
  %549 = load ptr, ptr %546, align 8, !tbaa !13
  %550 = getelementptr inbounds ptr, ptr %549, i64 6
  %551 = load ptr, ptr %550, align 8
  %552 = invoke noundef nonnull align 8 dereferenceable(8) ptr %551(ptr noundef nonnull align 8 dereferenceable(24) %546, i32 noundef %547, i32 noundef %548)
          to label %553 unwind label %51

553:                                              ; preds = %544
  %554 = load double, ptr %552, align 8, !tbaa !11
  %555 = call double @llvm.fabs.f64(double %554)
  %556 = load i32, ptr %10, align 4, !tbaa !9
  %557 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN6VectorclEi(ptr noundef nonnull align 8 dereferenceable(32) %30, i32 noundef %556)
          to label %558 unwind label %51

558:                                              ; preds = %553
  %559 = load double, ptr %557, align 8, !tbaa !11
  %560 = call double @llvm.fabs.f64(double %559)
  %561 = fadd double %555, %560
  store double %561, ptr @_ZL7maxarg2, align 8, !tbaa !11
  %562 = load double, ptr @_ZL7maxarg1, align 8, !tbaa !11
  %563 = load double, ptr @_ZL7maxarg2, align 8, !tbaa !11
  %564 = fcmp ogt double %562, %563
  br i1 %564, label %565, label %567

565:                                              ; preds = %558
  %566 = load double, ptr @_ZL7maxarg1, align 8, !tbaa !11
  br label %569

567:                                              ; preds = %558
  %568 = load double, ptr @_ZL7maxarg2, align 8, !tbaa !11
  br label %569

569:                                              ; preds = %567, %565
  %570 = phi double [ %566, %565 ], [ %568, %567 ]
  store double %570, ptr %27, align 8, !tbaa !11
  br label %571

571:                                              ; preds = %569
  %572 = load i32, ptr %10, align 4, !tbaa !9
  %573 = add nsw i32 %572, 1
  store i32 %573, ptr %10, align 4, !tbaa !9
  br label %91, !llvm.loop !29

574:                                              ; preds = %91
  %575 = load i32, ptr %18, align 4, !tbaa !9
  store i32 %575, ptr %10, align 4, !tbaa !9
  br label %576

576:                                              ; preds = %737, %574
  %577 = load i32, ptr %10, align 4, !tbaa !9
  %578 = icmp sge i32 %577, 1
  br i1 %578, label %579, label %740

579:                                              ; preds = %576
  %580 = load i32, ptr %10, align 4, !tbaa !9
  %581 = load i32, ptr %18, align 4, !tbaa !9
  %582 = icmp slt i32 %580, %581
  br i1 %582, label %583, label %723

583:                                              ; preds = %579
  %584 = load double, ptr %28, align 8, !tbaa !11
  %585 = fcmp une double %584, 0.000000e+00
  br i1 %585, label %586, label %696

586:                                              ; preds = %583
  %587 = load i32, ptr %15, align 4, !tbaa !9
  store i32 %587, ptr %12, align 4, !tbaa !9
  br label %588

588:                                              ; preds = %622, %586
  %589 = load i32, ptr %12, align 4, !tbaa !9
  %590 = load i32, ptr %18, align 4, !tbaa !9
  %591 = icmp sle i32 %589, %590
  br i1 %591, label %592, label %625

592:                                              ; preds = %588
  %593 = load ptr, ptr %6, align 8, !tbaa !5
  %594 = load i32, ptr %10, align 4, !tbaa !9
  %595 = load i32, ptr %12, align 4, !tbaa !9
  %596 = load ptr, ptr %593, align 8, !tbaa !13
  %597 = getelementptr inbounds ptr, ptr %596, i64 6
  %598 = load ptr, ptr %597, align 8
  %599 = invoke noundef nonnull align 8 dereferenceable(8) ptr %598(ptr noundef nonnull align 8 dereferenceable(24) %593, i32 noundef %594, i32 noundef %595)
          to label %600 unwind label %51

600:                                              ; preds = %592
  %601 = load double, ptr %599, align 8, !tbaa !11
  %602 = load ptr, ptr %6, align 8, !tbaa !5
  %603 = load i32, ptr %10, align 4, !tbaa !9
  %604 = load i32, ptr %15, align 4, !tbaa !9
  %605 = load ptr, ptr %602, align 8, !tbaa !13
  %606 = getelementptr inbounds ptr, ptr %605, i64 6
  %607 = load ptr, ptr %606, align 8
  %608 = invoke noundef nonnull align 8 dereferenceable(8) ptr %607(ptr noundef nonnull align 8 dereferenceable(24) %602, i32 noundef %603, i32 noundef %604)
          to label %609 unwind label %51

609:                                              ; preds = %600
  %610 = load double, ptr %608, align 8, !tbaa !11
  %611 = fdiv double %601, %610
  %612 = load double, ptr %28, align 8, !tbaa !11
  %613 = fdiv double %611, %612
  %614 = load ptr, ptr %8, align 8, !tbaa !5
  %615 = load i32, ptr %12, align 4, !tbaa !9
  %616 = load i32, ptr %10, align 4, !tbaa !9
  %617 = load ptr, ptr %614, align 8, !tbaa !13
  %618 = getelementptr inbounds ptr, ptr %617, i64 6
  %619 = load ptr, ptr %618, align 8
  %620 = invoke noundef nonnull align 8 dereferenceable(8) ptr %619(ptr noundef nonnull align 8 dereferenceable(24) %614, i32 noundef %615, i32 noundef %616)
          to label %621 unwind label %51

621:                                              ; preds = %609
  store double %613, ptr %620, align 8, !tbaa !11
  br label %622

622:                                              ; preds = %621
  %623 = load i32, ptr %12, align 4, !tbaa !9
  %624 = add nsw i32 %623, 1
  store i32 %624, ptr %12, align 4, !tbaa !9
  br label %588, !llvm.loop !30

625:                                              ; preds = %588
  %626 = load i32, ptr %15, align 4, !tbaa !9
  store i32 %626, ptr %12, align 4, !tbaa !9
  br label %627

627:                                              ; preds = %692, %625
  %628 = load i32, ptr %12, align 4, !tbaa !9
  %629 = load i32, ptr %18, align 4, !tbaa !9
  %630 = icmp sle i32 %628, %629
  br i1 %630, label %631, label %695

631:                                              ; preds = %627
  store double 0.000000e+00, ptr %23, align 8, !tbaa !11
  %632 = load i32, ptr %15, align 4, !tbaa !9
  store i32 %632, ptr %14, align 4, !tbaa !9
  br label %633

633:                                              ; preds = %658, %631
  %634 = load i32, ptr %14, align 4, !tbaa !9
  %635 = load i32, ptr %18, align 4, !tbaa !9
  %636 = icmp sle i32 %634, %635
  br i1 %636, label %637, label %661

637:                                              ; preds = %633
  %638 = load ptr, ptr %6, align 8, !tbaa !5
  %639 = load i32, ptr %10, align 4, !tbaa !9
  %640 = load i32, ptr %14, align 4, !tbaa !9
  %641 = load ptr, ptr %638, align 8, !tbaa !13
  %642 = getelementptr inbounds ptr, ptr %641, i64 6
  %643 = load ptr, ptr %642, align 8
  %644 = invoke noundef nonnull align 8 dereferenceable(8) ptr %643(ptr noundef nonnull align 8 dereferenceable(24) %638, i32 noundef %639, i32 noundef %640)
          to label %645 unwind label %51

645:                                              ; preds = %637
  %646 = load double, ptr %644, align 8, !tbaa !11
  %647 = load ptr, ptr %8, align 8, !tbaa !5
  %648 = load i32, ptr %14, align 4, !tbaa !9
  %649 = load i32, ptr %12, align 4, !tbaa !9
  %650 = load ptr, ptr %647, align 8, !tbaa !13
  %651 = getelementptr inbounds ptr, ptr %650, i64 6
  %652 = load ptr, ptr %651, align 8
  %653 = invoke noundef nonnull align 8 dereferenceable(8) ptr %652(ptr noundef nonnull align 8 dereferenceable(24) %647, i32 noundef %648, i32 noundef %649)
          to label %654 unwind label %51

654:                                              ; preds = %645
  %655 = load double, ptr %653, align 8, !tbaa !11
  %656 = load double, ptr %23, align 8, !tbaa !11
  %657 = call double @llvm.fmuladd.f64(double %646, double %655, double %656)
  store double %657, ptr %23, align 8, !tbaa !11
  br label %658

658:                                              ; preds = %654
  %659 = load i32, ptr %14, align 4, !tbaa !9
  %660 = add nsw i32 %659, 1
  store i32 %660, ptr %14, align 4, !tbaa !9
  br label %633, !llvm.loop !31

661:                                              ; preds = %633
  %662 = load i32, ptr %15, align 4, !tbaa !9
  store i32 %662, ptr %14, align 4, !tbaa !9
  br label %663

663:                                              ; preds = %688, %661
  %664 = load i32, ptr %14, align 4, !tbaa !9
  %665 = load i32, ptr %18, align 4, !tbaa !9
  %666 = icmp sle i32 %664, %665
  br i1 %666, label %667, label %691

667:                                              ; preds = %663
  %668 = load double, ptr %23, align 8, !tbaa !11
  %669 = load ptr, ptr %8, align 8, !tbaa !5
  %670 = load i32, ptr %14, align 4, !tbaa !9
  %671 = load i32, ptr %10, align 4, !tbaa !9
  %672 = load ptr, ptr %669, align 8, !tbaa !13
  %673 = getelementptr inbounds ptr, ptr %672, i64 6
  %674 = load ptr, ptr %673, align 8
  %675 = invoke noundef nonnull align 8 dereferenceable(8) ptr %674(ptr noundef nonnull align 8 dereferenceable(24) %669, i32 noundef %670, i32 noundef %671)
          to label %676 unwind label %51

676:                                              ; preds = %667
  %677 = load double, ptr %675, align 8, !tbaa !11
  %678 = load ptr, ptr %8, align 8, !tbaa !5
  %679 = load i32, ptr %14, align 4, !tbaa !9
  %680 = load i32, ptr %12, align 4, !tbaa !9
  %681 = load ptr, ptr %678, align 8, !tbaa !13
  %682 = getelementptr inbounds ptr, ptr %681, i64 6
  %683 = load ptr, ptr %682, align 8
  %684 = invoke noundef nonnull align 8 dereferenceable(8) ptr %683(ptr noundef nonnull align 8 dereferenceable(24) %678, i32 noundef %679, i32 noundef %680)
          to label %685 unwind label %51

685:                                              ; preds = %676
  %686 = load double, ptr %684, align 8, !tbaa !11
  %687 = call double @llvm.fmuladd.f64(double %668, double %677, double %686)
  store double %687, ptr %684, align 8, !tbaa !11
  br label %688

688:                                              ; preds = %685
  %689 = load i32, ptr %14, align 4, !tbaa !9
  %690 = add nsw i32 %689, 1
  store i32 %690, ptr %14, align 4, !tbaa !9
  br label %663, !llvm.loop !32

691:                                              ; preds = %663
  br label %692

692:                                              ; preds = %691
  %693 = load i32, ptr %12, align 4, !tbaa !9
  %694 = add nsw i32 %693, 1
  store i32 %694, ptr %12, align 4, !tbaa !9
  br label %627, !llvm.loop !33

695:                                              ; preds = %627
  br label %696

696:                                              ; preds = %695, %583
  %697 = load i32, ptr %15, align 4, !tbaa !9
  store i32 %697, ptr %12, align 4, !tbaa !9
  br label %698

698:                                              ; preds = %719, %696
  %699 = load i32, ptr %12, align 4, !tbaa !9
  %700 = load i32, ptr %18, align 4, !tbaa !9
  %701 = icmp sle i32 %699, %700
  br i1 %701, label %702, label %722

702:                                              ; preds = %698
  %703 = load ptr, ptr %8, align 8, !tbaa !5
  %704 = load i32, ptr %12, align 4, !tbaa !9
  %705 = load i32, ptr %10, align 4, !tbaa !9
  %706 = load ptr, ptr %703, align 8, !tbaa !13
  %707 = getelementptr inbounds ptr, ptr %706, i64 6
  %708 = load ptr, ptr %707, align 8
  %709 = invoke noundef nonnull align 8 dereferenceable(8) ptr %708(ptr noundef nonnull align 8 dereferenceable(24) %703, i32 noundef %704, i32 noundef %705)
          to label %710 unwind label %51

710:                                              ; preds = %702
  store double 0.000000e+00, ptr %709, align 8, !tbaa !11
  %711 = load ptr, ptr %8, align 8, !tbaa !5
  %712 = load i32, ptr %10, align 4, !tbaa !9
  %713 = load i32, ptr %12, align 4, !tbaa !9
  %714 = load ptr, ptr %711, align 8, !tbaa !13
  %715 = getelementptr inbounds ptr, ptr %714, i64 6
  %716 = load ptr, ptr %715, align 8
  %717 = invoke noundef nonnull align 8 dereferenceable(8) ptr %716(ptr noundef nonnull align 8 dereferenceable(24) %711, i32 noundef %712, i32 noundef %713)
          to label %718 unwind label %51

718:                                              ; preds = %710
  store double 0.000000e+00, ptr %717, align 8, !tbaa !11
  br label %719

719:                                              ; preds = %718
  %720 = load i32, ptr %12, align 4, !tbaa !9
  %721 = add nsw i32 %720, 1
  store i32 %721, ptr %12, align 4, !tbaa !9
  br label %698, !llvm.loop !34

722:                                              ; preds = %698
  br label %723

723:                                              ; preds = %722, %579
  %724 = load ptr, ptr %8, align 8, !tbaa !5
  %725 = load i32, ptr %10, align 4, !tbaa !9
  %726 = load i32, ptr %10, align 4, !tbaa !9
  %727 = load ptr, ptr %724, align 8, !tbaa !13
  %728 = getelementptr inbounds ptr, ptr %727, i64 6
  %729 = load ptr, ptr %728, align 8
  %730 = invoke noundef nonnull align 8 dereferenceable(8) ptr %729(ptr noundef nonnull align 8 dereferenceable(24) %724, i32 noundef %725, i32 noundef %726)
          to label %731 unwind label %51

731:                                              ; preds = %723
  store double 1.000000e+00, ptr %730, align 8, !tbaa !11
  %732 = load i32, ptr %10, align 4, !tbaa !9
  %733 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN6VectorclEi(ptr noundef nonnull align 8 dereferenceable(32) %30, i32 noundef %732)
          to label %734 unwind label %51

734:                                              ; preds = %731
  %735 = load double, ptr %733, align 8, !tbaa !11
  store double %735, ptr %28, align 8, !tbaa !11
  %736 = load i32, ptr %10, align 4, !tbaa !9
  store i32 %736, ptr %15, align 4, !tbaa !9
  br label %737

737:                                              ; preds = %734
  %738 = load i32, ptr %10, align 4, !tbaa !9
  %739 = add nsw i32 %738, -1
  store i32 %739, ptr %10, align 4, !tbaa !9
  br label %576, !llvm.loop !35

740:                                              ; preds = %576
  %741 = load i32, ptr %17, align 4, !tbaa !9
  store i32 %741, ptr @_ZL8iminarg1, align 4, !tbaa !9
  %742 = load i32, ptr %18, align 4, !tbaa !9
  store i32 %742, ptr @_ZL8iminarg2, align 4, !tbaa !9
  %743 = load i32, ptr @_ZL8iminarg1, align 4, !tbaa !9
  %744 = load i32, ptr @_ZL8iminarg2, align 4, !tbaa !9
  %745 = icmp slt i32 %743, %744
  br i1 %745, label %746, label %748

746:                                              ; preds = %740
  %747 = load i32, ptr @_ZL8iminarg1, align 4, !tbaa !9
  br label %750

748:                                              ; preds = %740
  %749 = load i32, ptr @_ZL8iminarg2, align 4, !tbaa !9
  br label %750

750:                                              ; preds = %748, %746
  %751 = phi i32 [ %747, %746 ], [ %749, %748 ]
  store i32 %751, ptr %10, align 4, !tbaa !9
  br label %752

752:                                              ; preds = %924, %750
  %753 = load i32, ptr %10, align 4, !tbaa !9
  %754 = icmp sge i32 %753, 1
  br i1 %754, label %755, label %927

755:                                              ; preds = %752
  %756 = load i32, ptr %10, align 4, !tbaa !9
  %757 = add nsw i32 %756, 1
  store i32 %757, ptr %15, align 4, !tbaa !9
  %758 = load ptr, ptr %7, align 8, !tbaa !5
  %759 = load i32, ptr %10, align 4, !tbaa !9
  %760 = load i32, ptr %10, align 4, !tbaa !9
  %761 = load ptr, ptr %758, align 8, !tbaa !13
  %762 = getelementptr inbounds ptr, ptr %761, i64 6
  %763 = load ptr, ptr %762, align 8
  %764 = invoke noundef nonnull align 8 dereferenceable(8) ptr %763(ptr noundef nonnull align 8 dereferenceable(24) %758, i32 noundef %759, i32 noundef %760)
          to label %765 unwind label %51

765:                                              ; preds = %755
  %766 = load double, ptr %764, align 8, !tbaa !11
  store double %766, ptr %28, align 8, !tbaa !11
  %767 = load i32, ptr %15, align 4, !tbaa !9
  store i32 %767, ptr %12, align 4, !tbaa !9
  br label %768

768:                                              ; preds = %781, %765
  %769 = load i32, ptr %12, align 4, !tbaa !9
  %770 = load i32, ptr %18, align 4, !tbaa !9
  %771 = icmp sle i32 %769, %770
  br i1 %771, label %772, label %784

772:                                              ; preds = %768
  %773 = load ptr, ptr %6, align 8, !tbaa !5
  %774 = load i32, ptr %10, align 4, !tbaa !9
  %775 = load i32, ptr %12, align 4, !tbaa !9
  %776 = load ptr, ptr %773, align 8, !tbaa !13
  %777 = getelementptr inbounds ptr, ptr %776, i64 6
  %778 = load ptr, ptr %777, align 8
  %779 = invoke noundef nonnull align 8 dereferenceable(8) ptr %778(ptr noundef nonnull align 8 dereferenceable(24) %773, i32 noundef %774, i32 noundef %775)
          to label %780 unwind label %51

780:                                              ; preds = %772
  store double 0.000000e+00, ptr %779, align 8, !tbaa !11
  br label %781

781:                                              ; preds = %780
  %782 = load i32, ptr %12, align 4, !tbaa !9
  %783 = add nsw i32 %782, 1
  store i32 %783, ptr %12, align 4, !tbaa !9
  br label %768, !llvm.loop !36

784:                                              ; preds = %768
  %785 = load double, ptr %28, align 8, !tbaa !11
  %786 = fcmp une double %785, 0.000000e+00
  br i1 %786, label %787, label %894

787:                                              ; preds = %784
  %788 = load double, ptr %28, align 8, !tbaa !11
  %789 = fdiv double 1.000000e+00, %788
  store double %789, ptr %28, align 8, !tbaa !11
  %790 = load i32, ptr %15, align 4, !tbaa !9
  store i32 %790, ptr %12, align 4, !tbaa !9
  br label %791

791:                                              ; preds = %869, %787
  %792 = load i32, ptr %12, align 4, !tbaa !9
  %793 = load i32, ptr %18, align 4, !tbaa !9
  %794 = icmp sle i32 %792, %793
  br i1 %794, label %795, label %872

795:                                              ; preds = %791
  store double 0.000000e+00, ptr %23, align 8, !tbaa !11
  %796 = load i32, ptr %15, align 4, !tbaa !9
  store i32 %796, ptr %14, align 4, !tbaa !9
  br label %797

797:                                              ; preds = %822, %795
  %798 = load i32, ptr %14, align 4, !tbaa !9
  %799 = load i32, ptr %17, align 4, !tbaa !9
  %800 = icmp sle i32 %798, %799
  br i1 %800, label %801, label %825

801:                                              ; preds = %797
  %802 = load ptr, ptr %6, align 8, !tbaa !5
  %803 = load i32, ptr %14, align 4, !tbaa !9
  %804 = load i32, ptr %10, align 4, !tbaa !9
  %805 = load ptr, ptr %802, align 8, !tbaa !13
  %806 = getelementptr inbounds ptr, ptr %805, i64 6
  %807 = load ptr, ptr %806, align 8
  %808 = invoke noundef nonnull align 8 dereferenceable(8) ptr %807(ptr noundef nonnull align 8 dereferenceable(24) %802, i32 noundef %803, i32 noundef %804)
          to label %809 unwind label %51

809:                                              ; preds = %801
  %810 = load double, ptr %808, align 8, !tbaa !11
  %811 = load ptr, ptr %6, align 8, !tbaa !5
  %812 = load i32, ptr %14, align 4, !tbaa !9
  %813 = load i32, ptr %12, align 4, !tbaa !9
  %814 = load ptr, ptr %811, align 8, !tbaa !13
  %815 = getelementptr inbounds ptr, ptr %814, i64 6
  %816 = load ptr, ptr %815, align 8
  %817 = invoke noundef nonnull align 8 dereferenceable(8) ptr %816(ptr noundef nonnull align 8 dereferenceable(24) %811, i32 noundef %812, i32 noundef %813)
          to label %818 unwind label %51

818:                                              ; preds = %809
  %819 = load double, ptr %817, align 8, !tbaa !11
  %820 = load double, ptr %23, align 8, !tbaa !11
  %821 = call double @llvm.fmuladd.f64(double %810, double %819, double %820)
  store double %821, ptr %23, align 8, !tbaa !11
  br label %822

822:                                              ; preds = %818
  %823 = load i32, ptr %14, align 4, !tbaa !9
  %824 = add nsw i32 %823, 1
  store i32 %824, ptr %14, align 4, !tbaa !9
  br label %797, !llvm.loop !37

825:                                              ; preds = %797
  %826 = load double, ptr %23, align 8, !tbaa !11
  %827 = load ptr, ptr %6, align 8, !tbaa !5
  %828 = load i32, ptr %10, align 4, !tbaa !9
  %829 = load i32, ptr %10, align 4, !tbaa !9
  %830 = load ptr, ptr %827, align 8, !tbaa !13
  %831 = getelementptr inbounds ptr, ptr %830, i64 6
  %832 = load ptr, ptr %831, align 8
  %833 = invoke noundef nonnull align 8 dereferenceable(8) ptr %832(ptr noundef nonnull align 8 dereferenceable(24) %827, i32 noundef %828, i32 noundef %829)
          to label %834 unwind label %51

834:                                              ; preds = %825
  %835 = load double, ptr %833, align 8, !tbaa !11
  %836 = fdiv double %826, %835
  %837 = load double, ptr %28, align 8, !tbaa !11
  %838 = fmul double %836, %837
  store double %838, ptr %21, align 8, !tbaa !11
  %839 = load i32, ptr %10, align 4, !tbaa !9
  store i32 %839, ptr %14, align 4, !tbaa !9
  br label %840

840:                                              ; preds = %865, %834
  %841 = load i32, ptr %14, align 4, !tbaa !9
  %842 = load i32, ptr %17, align 4, !tbaa !9
  %843 = icmp sle i32 %841, %842
  br i1 %843, label %844, label %868

844:                                              ; preds = %840
  %845 = load double, ptr %21, align 8, !tbaa !11
  %846 = load ptr, ptr %6, align 8, !tbaa !5
  %847 = load i32, ptr %14, align 4, !tbaa !9
  %848 = load i32, ptr %10, align 4, !tbaa !9
  %849 = load ptr, ptr %846, align 8, !tbaa !13
  %850 = getelementptr inbounds ptr, ptr %849, i64 6
  %851 = load ptr, ptr %850, align 8
  %852 = invoke noundef nonnull align 8 dereferenceable(8) ptr %851(ptr noundef nonnull align 8 dereferenceable(24) %846, i32 noundef %847, i32 noundef %848)
          to label %853 unwind label %51

853:                                              ; preds = %844
  %854 = load double, ptr %852, align 8, !tbaa !11
  %855 = load ptr, ptr %6, align 8, !tbaa !5
  %856 = load i32, ptr %14, align 4, !tbaa !9
  %857 = load i32, ptr %12, align 4, !tbaa !9
  %858 = load ptr, ptr %855, align 8, !tbaa !13
  %859 = getelementptr inbounds ptr, ptr %858, i64 6
  %860 = load ptr, ptr %859, align 8
  %861 = invoke noundef nonnull align 8 dereferenceable(8) ptr %860(ptr noundef nonnull align 8 dereferenceable(24) %855, i32 noundef %856, i32 noundef %857)
          to label %862 unwind label %51

862:                                              ; preds = %853
  %863 = load double, ptr %861, align 8, !tbaa !11
  %864 = call double @llvm.fmuladd.f64(double %845, double %854, double %863)
  store double %864, ptr %861, align 8, !tbaa !11
  br label %865

865:                                              ; preds = %862
  %866 = load i32, ptr %14, align 4, !tbaa !9
  %867 = add nsw i32 %866, 1
  store i32 %867, ptr %14, align 4, !tbaa !9
  br label %840, !llvm.loop !38

868:                                              ; preds = %840
  br label %869

869:                                              ; preds = %868
  %870 = load i32, ptr %12, align 4, !tbaa !9
  %871 = add nsw i32 %870, 1
  store i32 %871, ptr %12, align 4, !tbaa !9
  br label %791, !llvm.loop !39

872:                                              ; preds = %791
  %873 = load i32, ptr %10, align 4, !tbaa !9
  store i32 %873, ptr %12, align 4, !tbaa !9
  br label %874

874:                                              ; preds = %890, %872
  %875 = load i32, ptr %12, align 4, !tbaa !9
  %876 = load i32, ptr %17, align 4, !tbaa !9
  %877 = icmp sle i32 %875, %876
  br i1 %877, label %878, label %893

878:                                              ; preds = %874
  %879 = load double, ptr %28, align 8, !tbaa !11
  %880 = load ptr, ptr %6, align 8, !tbaa !5
  %881 = load i32, ptr %12, align 4, !tbaa !9
  %882 = load i32, ptr %10, align 4, !tbaa !9
  %883 = load ptr, ptr %880, align 8, !tbaa !13
  %884 = getelementptr inbounds ptr, ptr %883, i64 6
  %885 = load ptr, ptr %884, align 8
  %886 = invoke noundef nonnull align 8 dereferenceable(8) ptr %885(ptr noundef nonnull align 8 dereferenceable(24) %880, i32 noundef %881, i32 noundef %882)
          to label %887 unwind label %51

887:                                              ; preds = %878
  %888 = load double, ptr %886, align 8, !tbaa !11
  %889 = fmul double %888, %879
  store double %889, ptr %886, align 8, !tbaa !11
  br label %890

890:                                              ; preds = %887
  %891 = load i32, ptr %12, align 4, !tbaa !9
  %892 = add nsw i32 %891, 1
  store i32 %892, ptr %12, align 4, !tbaa !9
  br label %874, !llvm.loop !40

893:                                              ; preds = %874
  br label %913

894:                                              ; preds = %784
  %895 = load i32, ptr %10, align 4, !tbaa !9
  store i32 %895, ptr %12, align 4, !tbaa !9
  br label %896

896:                                              ; preds = %909, %894
  %897 = load i32, ptr %12, align 4, !tbaa !9
  %898 = load i32, ptr %17, align 4, !tbaa !9
  %899 = icmp sle i32 %897, %898
  br i1 %899, label %900, label %912

900:                                              ; preds = %896
  %901 = load ptr, ptr %6, align 8, !tbaa !5
  %902 = load i32, ptr %12, align 4, !tbaa !9
  %903 = load i32, ptr %10, align 4, !tbaa !9
  %904 = load ptr, ptr %901, align 8, !tbaa !13
  %905 = getelementptr inbounds ptr, ptr %904, i64 6
  %906 = load ptr, ptr %905, align 8
  %907 = invoke noundef nonnull align 8 dereferenceable(8) ptr %906(ptr noundef nonnull align 8 dereferenceable(24) %901, i32 noundef %902, i32 noundef %903)
          to label %908 unwind label %51

908:                                              ; preds = %900
  store double 0.000000e+00, ptr %907, align 8, !tbaa !11
  br label %909

909:                                              ; preds = %908
  %910 = load i32, ptr %12, align 4, !tbaa !9
  %911 = add nsw i32 %910, 1
  store i32 %911, ptr %12, align 4, !tbaa !9
  br label %896, !llvm.loop !41

912:                                              ; preds = %896
  br label %913

913:                                              ; preds = %912, %893
  %914 = load ptr, ptr %6, align 8, !tbaa !5
  %915 = load i32, ptr %10, align 4, !tbaa !9
  %916 = load i32, ptr %10, align 4, !tbaa !9
  %917 = load ptr, ptr %914, align 8, !tbaa !13
  %918 = getelementptr inbounds ptr, ptr %917, i64 6
  %919 = load ptr, ptr %918, align 8
  %920 = invoke noundef nonnull align 8 dereferenceable(8) ptr %919(ptr noundef nonnull align 8 dereferenceable(24) %914, i32 noundef %915, i32 noundef %916)
          to label %921 unwind label %51

921:                                              ; preds = %913
  %922 = load double, ptr %920, align 8, !tbaa !11
  %923 = fadd double %922, 1.000000e+00
  store double %923, ptr %920, align 8, !tbaa !11
  br label %924

924:                                              ; preds = %921
  %925 = load i32, ptr %10, align 4, !tbaa !9
  %926 = add nsw i32 %925, -1
  store i32 %926, ptr %10, align 4, !tbaa !9
  br label %752, !llvm.loop !42

927:                                              ; preds = %752
  %928 = load i32, ptr %18, align 4, !tbaa !9
  store i32 %928, ptr %14, align 4, !tbaa !9
  br label %929

929:                                              ; preds = %1462, %927
  %930 = load i32, ptr %14, align 4, !tbaa !9
  %931 = icmp sge i32 %930, 1
  br i1 %931, label %932, label %1465

932:                                              ; preds = %929
  store i32 1, ptr %11, align 4, !tbaa !9
  br label %933

933:                                              ; preds = %1458, %932
  %934 = load i32, ptr %11, align 4, !tbaa !9
  %935 = icmp sle i32 %934, 30
  br i1 %935, label %936, label %1461

936:                                              ; preds = %933
  store i32 1, ptr %9, align 4, !tbaa !9
  %937 = load i32, ptr %14, align 4, !tbaa !9
  store i32 %937, ptr %15, align 4, !tbaa !9
  br label %938

938:                                              ; preds = %971, %936
  %939 = load i32, ptr %15, align 4, !tbaa !9
  %940 = icmp sge i32 %939, 1
  br i1 %940, label %941, label %974

941:                                              ; preds = %938
  %942 = load i32, ptr %15, align 4, !tbaa !9
  %943 = sub nsw i32 %942, 1
  store i32 %943, ptr %16, align 4, !tbaa !9
  %944 = load i32, ptr %15, align 4, !tbaa !9
  %945 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN6VectorclEi(ptr noundef nonnull align 8 dereferenceable(32) %30, i32 noundef %944)
          to label %946 unwind label %51

946:                                              ; preds = %941
  %947 = load double, ptr %945, align 8, !tbaa !11
  %948 = call double @llvm.fabs.f64(double %947)
  %949 = load double, ptr %27, align 8, !tbaa !11
  %950 = fadd double %948, %949
  %951 = load double, ptr %27, align 8, !tbaa !11
  %952 = fcmp oeq double %950, %951
  br i1 %952, label %953, label %954

953:                                              ; preds = %946
  store i32 0, ptr %9, align 4, !tbaa !9
  br label %974

954:                                              ; preds = %946
  %955 = load ptr, ptr %7, align 8, !tbaa !5
  %956 = load i32, ptr %16, align 4, !tbaa !9
  %957 = load i32, ptr %16, align 4, !tbaa !9
  %958 = load ptr, ptr %955, align 8, !tbaa !13
  %959 = getelementptr inbounds ptr, ptr %958, i64 6
  %960 = load ptr, ptr %959, align 8
  %961 = invoke noundef nonnull align 8 dereferenceable(8) ptr %960(ptr noundef nonnull align 8 dereferenceable(24) %955, i32 noundef %956, i32 noundef %957)
          to label %962 unwind label %51

962:                                              ; preds = %954
  %963 = load double, ptr %961, align 8, !tbaa !11
  %964 = call double @llvm.fabs.f64(double %963)
  %965 = load double, ptr %27, align 8, !tbaa !11
  %966 = fadd double %964, %965
  %967 = load double, ptr %27, align 8, !tbaa !11
  %968 = fcmp oeq double %966, %967
  br i1 %968, label %969, label %970

969:                                              ; preds = %962
  br label %974

970:                                              ; preds = %962
  br label %971

971:                                              ; preds = %970
  %972 = load i32, ptr %15, align 4, !tbaa !9
  %973 = add nsw i32 %972, -1
  store i32 %973, ptr %15, align 4, !tbaa !9
  br label %938, !llvm.loop !43

974:                                              ; preds = %969, %953, %938
  %975 = load i32, ptr %9, align 4, !tbaa !9
  %976 = icmp ne i32 %975, 0
  br i1 %976, label %977, label %1089

977:                                              ; preds = %974
  store double 0.000000e+00, ptr %20, align 8, !tbaa !11
  store double 1.000000e+00, ptr %23, align 8, !tbaa !11
  %978 = load i32, ptr %15, align 4, !tbaa !9
  store i32 %978, ptr %10, align 4, !tbaa !9
  br label %979

979:                                              ; preds = %1085, %977
  %980 = load i32, ptr %10, align 4, !tbaa !9
  %981 = load i32, ptr %14, align 4, !tbaa !9
  %982 = icmp sle i32 %980, %981
  br i1 %982, label %983, label %1088

983:                                              ; preds = %979
  %984 = load double, ptr %23, align 8, !tbaa !11
  %985 = load i32, ptr %10, align 4, !tbaa !9
  %986 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN6VectorclEi(ptr noundef nonnull align 8 dereferenceable(32) %30, i32 noundef %985)
          to label %987 unwind label %51

987:                                              ; preds = %983
  %988 = load double, ptr %986, align 8, !tbaa !11
  %989 = fmul double %984, %988
  store double %989, ptr %21, align 8, !tbaa !11
  %990 = load double, ptr %21, align 8, !tbaa !11
  %991 = call double @llvm.fabs.f64(double %990)
  %992 = load double, ptr %27, align 8, !tbaa !11
  %993 = fadd double %991, %992
  %994 = load double, ptr %27, align 8, !tbaa !11
  %995 = fcmp oeq double %993, %994
  br i1 %995, label %996, label %997

996:                                              ; preds = %987
  br label %1088

997:                                              ; preds = %987
  %998 = load ptr, ptr %7, align 8, !tbaa !5
  %999 = load i32, ptr %10, align 4, !tbaa !9
  %1000 = load i32, ptr %10, align 4, !tbaa !9
  %1001 = load ptr, ptr %998, align 8, !tbaa !13
  %1002 = getelementptr inbounds ptr, ptr %1001, i64 6
  %1003 = load ptr, ptr %1002, align 8
  %1004 = invoke noundef nonnull align 8 dereferenceable(8) ptr %1003(ptr noundef nonnull align 8 dereferenceable(24) %998, i32 noundef %999, i32 noundef %1000)
          to label %1005 unwind label %51

1005:                                             ; preds = %997
  %1006 = load double, ptr %1004, align 8, !tbaa !11
  store double %1006, ptr %28, align 8, !tbaa !11
  %1007 = load double, ptr %21, align 8, !tbaa !11
  %1008 = load double, ptr %28, align 8, !tbaa !11
  %1009 = invoke noundef double @_ZL6pythagdd(double noundef %1007, double noundef %1008)
          to label %1010 unwind label %51

1010:                                             ; preds = %1005
  store double %1009, ptr %22, align 8, !tbaa !11
  %1011 = load double, ptr %22, align 8, !tbaa !11
  %1012 = load ptr, ptr %7, align 8, !tbaa !5
  %1013 = load i32, ptr %10, align 4, !tbaa !9
  %1014 = load i32, ptr %10, align 4, !tbaa !9
  %1015 = load ptr, ptr %1012, align 8, !tbaa !13
  %1016 = getelementptr inbounds ptr, ptr %1015, i64 6
  %1017 = load ptr, ptr %1016, align 8
  %1018 = invoke noundef nonnull align 8 dereferenceable(8) ptr %1017(ptr noundef nonnull align 8 dereferenceable(24) %1012, i32 noundef %1013, i32 noundef %1014)
          to label %1019 unwind label %51

1019:                                             ; preds = %1010
  store double %1011, ptr %1018, align 8, !tbaa !11
  %1020 = load double, ptr %22, align 8, !tbaa !11
  %1021 = fdiv double 1.000000e+00, %1020
  store double %1021, ptr %22, align 8, !tbaa !11
  %1022 = load double, ptr %28, align 8, !tbaa !11
  %1023 = load double, ptr %22, align 8, !tbaa !11
  %1024 = fmul double %1022, %1023
  store double %1024, ptr %20, align 8, !tbaa !11
  %1025 = load double, ptr %21, align 8, !tbaa !11
  %1026 = fneg double %1025
  %1027 = load double, ptr %22, align 8, !tbaa !11
  %1028 = fmul double %1026, %1027
  store double %1028, ptr %23, align 8, !tbaa !11
  store i32 1, ptr %12, align 4, !tbaa !9
  br label %1029

1029:                                             ; preds = %1081, %1019
  %1030 = load i32, ptr %12, align 4, !tbaa !9
  %1031 = load i32, ptr %17, align 4, !tbaa !9
  %1032 = icmp sle i32 %1030, %1031
  br i1 %1032, label %1033, label %1084

1033:                                             ; preds = %1029
  %1034 = load ptr, ptr %6, align 8, !tbaa !5
  %1035 = load i32, ptr %12, align 4, !tbaa !9
  %1036 = load i32, ptr %16, align 4, !tbaa !9
  %1037 = load ptr, ptr %1034, align 8, !tbaa !13
  %1038 = getelementptr inbounds ptr, ptr %1037, i64 6
  %1039 = load ptr, ptr %1038, align 8
  %1040 = invoke noundef nonnull align 8 dereferenceable(8) ptr %1039(ptr noundef nonnull align 8 dereferenceable(24) %1034, i32 noundef %1035, i32 noundef %1036)
          to label %1041 unwind label %51

1041:                                             ; preds = %1033
  %1042 = load double, ptr %1040, align 8, !tbaa !11
  store double %1042, ptr %25, align 8, !tbaa !11
  %1043 = load ptr, ptr %6, align 8, !tbaa !5
  %1044 = load i32, ptr %12, align 4, !tbaa !9
  %1045 = load i32, ptr %10, align 4, !tbaa !9
  %1046 = load ptr, ptr %1043, align 8, !tbaa !13
  %1047 = getelementptr inbounds ptr, ptr %1046, i64 6
  %1048 = load ptr, ptr %1047, align 8
  %1049 = invoke noundef nonnull align 8 dereferenceable(8) ptr %1048(ptr noundef nonnull align 8 dereferenceable(24) %1043, i32 noundef %1044, i32 noundef %1045)
          to label %1050 unwind label %51

1050:                                             ; preds = %1041
  %1051 = load double, ptr %1049, align 8, !tbaa !11
  store double %1051, ptr %26, align 8, !tbaa !11
  %1052 = load double, ptr %25, align 8, !tbaa !11
  %1053 = load double, ptr %20, align 8, !tbaa !11
  %1054 = load double, ptr %26, align 8, !tbaa !11
  %1055 = load double, ptr %23, align 8, !tbaa !11
  %1056 = fmul double %1054, %1055
  %1057 = call double @llvm.fmuladd.f64(double %1052, double %1053, double %1056)
  %1058 = load ptr, ptr %6, align 8, !tbaa !5
  %1059 = load i32, ptr %12, align 4, !tbaa !9
  %1060 = load i32, ptr %16, align 4, !tbaa !9
  %1061 = load ptr, ptr %1058, align 8, !tbaa !13
  %1062 = getelementptr inbounds ptr, ptr %1061, i64 6
  %1063 = load ptr, ptr %1062, align 8
  %1064 = invoke noundef nonnull align 8 dereferenceable(8) ptr %1063(ptr noundef nonnull align 8 dereferenceable(24) %1058, i32 noundef %1059, i32 noundef %1060)
          to label %1065 unwind label %51

1065:                                             ; preds = %1050
  store double %1057, ptr %1064, align 8, !tbaa !11
  %1066 = load double, ptr %26, align 8, !tbaa !11
  %1067 = load double, ptr %20, align 8, !tbaa !11
  %1068 = load double, ptr %25, align 8, !tbaa !11
  %1069 = load double, ptr %23, align 8, !tbaa !11
  %1070 = fmul double %1068, %1069
  %1071 = fneg double %1070
  %1072 = call double @llvm.fmuladd.f64(double %1066, double %1067, double %1071)
  %1073 = load ptr, ptr %6, align 8, !tbaa !5
  %1074 = load i32, ptr %12, align 4, !tbaa !9
  %1075 = load i32, ptr %10, align 4, !tbaa !9
  %1076 = load ptr, ptr %1073, align 8, !tbaa !13
  %1077 = getelementptr inbounds ptr, ptr %1076, i64 6
  %1078 = load ptr, ptr %1077, align 8
  %1079 = invoke noundef nonnull align 8 dereferenceable(8) ptr %1078(ptr noundef nonnull align 8 dereferenceable(24) %1073, i32 noundef %1074, i32 noundef %1075)
          to label %1080 unwind label %51

1080:                                             ; preds = %1065
  store double %1072, ptr %1079, align 8, !tbaa !11
  br label %1081

1081:                                             ; preds = %1080
  %1082 = load i32, ptr %12, align 4, !tbaa !9
  %1083 = add nsw i32 %1082, 1
  store i32 %1083, ptr %12, align 4, !tbaa !9
  br label %1029, !llvm.loop !44

1084:                                             ; preds = %1029
  br label %1085

1085:                                             ; preds = %1084
  %1086 = load i32, ptr %10, align 4, !tbaa !9
  %1087 = add nsw i32 %1086, 1
  store i32 %1087, ptr %10, align 4, !tbaa !9
  br label %979, !llvm.loop !45

1088:                                             ; preds = %996, %979
  br label %1089

1089:                                             ; preds = %1088, %974
  %1090 = load ptr, ptr %7, align 8, !tbaa !5
  %1091 = load i32, ptr %14, align 4, !tbaa !9
  %1092 = load i32, ptr %14, align 4, !tbaa !9
  %1093 = load ptr, ptr %1090, align 8, !tbaa !13
  %1094 = getelementptr inbounds ptr, ptr %1093, i64 6
  %1095 = load ptr, ptr %1094, align 8
  %1096 = invoke noundef nonnull align 8 dereferenceable(8) ptr %1095(ptr noundef nonnull align 8 dereferenceable(24) %1090, i32 noundef %1091, i32 noundef %1092)
          to label %1097 unwind label %51

1097:                                             ; preds = %1089
  %1098 = load double, ptr %1096, align 8, !tbaa !11
  store double %1098, ptr %26, align 8, !tbaa !11
  %1099 = load i32, ptr %15, align 4, !tbaa !9
  %1100 = load i32, ptr %14, align 4, !tbaa !9
  %1101 = icmp eq i32 %1099, %1100
  br i1 %1101, label %1102, label %1144

1102:                                             ; preds = %1097
  %1103 = load double, ptr %26, align 8, !tbaa !11
  %1104 = fcmp olt double %1103, 0.000000e+00
  br i1 %1104, label %1105, label %1143

1105:                                             ; preds = %1102
  %1106 = load double, ptr %26, align 8, !tbaa !11
  %1107 = fneg double %1106
  %1108 = load ptr, ptr %7, align 8, !tbaa !5
  %1109 = load i32, ptr %14, align 4, !tbaa !9
  %1110 = load i32, ptr %14, align 4, !tbaa !9
  %1111 = load ptr, ptr %1108, align 8, !tbaa !13
  %1112 = getelementptr inbounds ptr, ptr %1111, i64 6
  %1113 = load ptr, ptr %1112, align 8
  %1114 = invoke noundef nonnull align 8 dereferenceable(8) ptr %1113(ptr noundef nonnull align 8 dereferenceable(24) %1108, i32 noundef %1109, i32 noundef %1110)
          to label %1115 unwind label %51

1115:                                             ; preds = %1105
  store double %1107, ptr %1114, align 8, !tbaa !11
  store i32 1, ptr %12, align 4, !tbaa !9
  br label %1116

1116:                                             ; preds = %1139, %1115
  %1117 = load i32, ptr %12, align 4, !tbaa !9
  %1118 = load i32, ptr %18, align 4, !tbaa !9
  %1119 = icmp sle i32 %1117, %1118
  br i1 %1119, label %1120, label %1142

1120:                                             ; preds = %1116
  %1121 = load ptr, ptr %8, align 8, !tbaa !5
  %1122 = load i32, ptr %12, align 4, !tbaa !9
  %1123 = load i32, ptr %14, align 4, !tbaa !9
  %1124 = load ptr, ptr %1121, align 8, !tbaa !13
  %1125 = getelementptr inbounds ptr, ptr %1124, i64 6
  %1126 = load ptr, ptr %1125, align 8
  %1127 = invoke noundef nonnull align 8 dereferenceable(8) ptr %1126(ptr noundef nonnull align 8 dereferenceable(24) %1121, i32 noundef %1122, i32 noundef %1123)
          to label %1128 unwind label %51

1128:                                             ; preds = %1120
  %1129 = load double, ptr %1127, align 8, !tbaa !11
  %1130 = fneg double %1129
  %1131 = load ptr, ptr %8, align 8, !tbaa !5
  %1132 = load i32, ptr %12, align 4, !tbaa !9
  %1133 = load i32, ptr %14, align 4, !tbaa !9
  %1134 = load ptr, ptr %1131, align 8, !tbaa !13
  %1135 = getelementptr inbounds ptr, ptr %1134, i64 6
  %1136 = load ptr, ptr %1135, align 8
  %1137 = invoke noundef nonnull align 8 dereferenceable(8) ptr %1136(ptr noundef nonnull align 8 dereferenceable(24) %1131, i32 noundef %1132, i32 noundef %1133)
          to label %1138 unwind label %51

1138:                                             ; preds = %1128
  store double %1130, ptr %1137, align 8, !tbaa !11
  br label %1139

1139:                                             ; preds = %1138
  %1140 = load i32, ptr %12, align 4, !tbaa !9
  %1141 = add nsw i32 %1140, 1
  store i32 %1141, ptr %12, align 4, !tbaa !9
  br label %1116, !llvm.loop !46

1142:                                             ; preds = %1116
  br label %1143

1143:                                             ; preds = %1142, %1102
  br label %1461

1144:                                             ; preds = %1097
  %1145 = load i32, ptr %11, align 4, !tbaa !9
  %1146 = icmp eq i32 %1145, 30
  br i1 %1146, label %1147, label %1149

1147:                                             ; preds = %1144
  invoke void @_ZNK6Matrix5errorEPc(ptr noundef nonnull align 8 dereferenceable(24) %31, ptr noundef @.str)
          to label %1148 unwind label %51

1148:                                             ; preds = %1147
  br label %1149

1149:                                             ; preds = %1148, %1144
  %1150 = load ptr, ptr %7, align 8, !tbaa !5
  %1151 = load i32, ptr %15, align 4, !tbaa !9
  %1152 = load i32, ptr %15, align 4, !tbaa !9
  %1153 = load ptr, ptr %1150, align 8, !tbaa !13
  %1154 = getelementptr inbounds ptr, ptr %1153, i64 6
  %1155 = load ptr, ptr %1154, align 8
  %1156 = invoke noundef nonnull align 8 dereferenceable(8) ptr %1155(ptr noundef nonnull align 8 dereferenceable(24) %1150, i32 noundef %1151, i32 noundef %1152)
          to label %1157 unwind label %51

1157:                                             ; preds = %1149
  %1158 = load double, ptr %1156, align 8, !tbaa !11
  store double %1158, ptr %24, align 8, !tbaa !11
  %1159 = load i32, ptr %14, align 4, !tbaa !9
  %1160 = sub nsw i32 %1159, 1
  store i32 %1160, ptr %16, align 4, !tbaa !9
  %1161 = load ptr, ptr %7, align 8, !tbaa !5
  %1162 = load i32, ptr %16, align 4, !tbaa !9
  %1163 = load i32, ptr %16, align 4, !tbaa !9
  %1164 = load ptr, ptr %1161, align 8, !tbaa !13
  %1165 = getelementptr inbounds ptr, ptr %1164, i64 6
  %1166 = load ptr, ptr %1165, align 8
  %1167 = invoke noundef nonnull align 8 dereferenceable(8) ptr %1166(ptr noundef nonnull align 8 dereferenceable(24) %1161, i32 noundef %1162, i32 noundef %1163)
          to label %1168 unwind label %51

1168:                                             ; preds = %1157
  %1169 = load double, ptr %1167, align 8, !tbaa !11
  store double %1169, ptr %25, align 8, !tbaa !11
  %1170 = load i32, ptr %16, align 4, !tbaa !9
  %1171 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN6VectorclEi(ptr noundef nonnull align 8 dereferenceable(32) %30, i32 noundef %1170)
          to label %1172 unwind label %51

1172:                                             ; preds = %1168
  %1173 = load double, ptr %1171, align 8, !tbaa !11
  store double %1173, ptr %28, align 8, !tbaa !11
  %1174 = load i32, ptr %14, align 4, !tbaa !9
  %1175 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN6VectorclEi(ptr noundef nonnull align 8 dereferenceable(32) %30, i32 noundef %1174)
          to label %1176 unwind label %51

1176:                                             ; preds = %1172
  %1177 = load double, ptr %1175, align 8, !tbaa !11
  store double %1177, ptr %22, align 8, !tbaa !11
  %1178 = load double, ptr %25, align 8, !tbaa !11
  %1179 = load double, ptr %26, align 8, !tbaa !11
  %1180 = fsub double %1178, %1179
  %1181 = load double, ptr %25, align 8, !tbaa !11
  %1182 = load double, ptr %26, align 8, !tbaa !11
  %1183 = fadd double %1181, %1182
  %1184 = load double, ptr %28, align 8, !tbaa !11
  %1185 = load double, ptr %22, align 8, !tbaa !11
  %1186 = fsub double %1184, %1185
  %1187 = load double, ptr %28, align 8, !tbaa !11
  %1188 = load double, ptr %22, align 8, !tbaa !11
  %1189 = fadd double %1187, %1188
  %1190 = fmul double %1186, %1189
  %1191 = call double @llvm.fmuladd.f64(double %1180, double %1183, double %1190)
  %1192 = load double, ptr %22, align 8, !tbaa !11
  %1193 = fmul double 2.000000e+00, %1192
  %1194 = load double, ptr %25, align 8, !tbaa !11
  %1195 = fmul double %1193, %1194
  %1196 = fdiv double %1191, %1195
  store double %1196, ptr %21, align 8, !tbaa !11
  %1197 = load double, ptr %21, align 8, !tbaa !11
  %1198 = invoke noundef double @_ZL6pythagdd(double noundef %1197, double noundef 1.000000e+00)
          to label %1199 unwind label %51

1199:                                             ; preds = %1176
  store double %1198, ptr %28, align 8, !tbaa !11
  %1200 = load double, ptr %24, align 8, !tbaa !11
  %1201 = load double, ptr %26, align 8, !tbaa !11
  %1202 = fsub double %1200, %1201
  %1203 = load double, ptr %24, align 8, !tbaa !11
  %1204 = load double, ptr %26, align 8, !tbaa !11
  %1205 = fadd double %1203, %1204
  %1206 = load double, ptr %22, align 8, !tbaa !11
  %1207 = load double, ptr %25, align 8, !tbaa !11
  %1208 = load double, ptr %21, align 8, !tbaa !11
  %1209 = load double, ptr %21, align 8, !tbaa !11
  %1210 = fcmp oge double %1209, 0.000000e+00
  br i1 %1210, label %1211, label %1214

1211:                                             ; preds = %1199
  %1212 = load double, ptr %28, align 8, !tbaa !11
  %1213 = call double @llvm.fabs.f64(double %1212)
  br label %1218

1214:                                             ; preds = %1199
  %1215 = load double, ptr %28, align 8, !tbaa !11
  %1216 = call double @llvm.fabs.f64(double %1215)
  %1217 = fneg double %1216
  br label %1218

1218:                                             ; preds = %1214, %1211
  %1219 = phi double [ %1213, %1211 ], [ %1217, %1214 ]
  %1220 = fadd double %1208, %1219
  %1221 = fdiv double %1207, %1220
  %1222 = load double, ptr %22, align 8, !tbaa !11
  %1223 = fsub double %1221, %1222
  %1224 = fmul double %1206, %1223
  %1225 = call double @llvm.fmuladd.f64(double %1202, double %1205, double %1224)
  %1226 = load double, ptr %24, align 8, !tbaa !11
  %1227 = fdiv double %1225, %1226
  store double %1227, ptr %21, align 8, !tbaa !11
  store double 1.000000e+00, ptr %23, align 8, !tbaa !11
  store double 1.000000e+00, ptr %20, align 8, !tbaa !11
  %1228 = load i32, ptr %15, align 4, !tbaa !9
  store i32 %1228, ptr %12, align 4, !tbaa !9
  br label %1229

1229:                                             ; preds = %1438, %1218
  %1230 = load i32, ptr %12, align 4, !tbaa !9
  %1231 = load i32, ptr %16, align 4, !tbaa !9
  %1232 = icmp sle i32 %1230, %1231
  br i1 %1232, label %1233, label %1441

1233:                                             ; preds = %1229
  %1234 = load i32, ptr %12, align 4, !tbaa !9
  %1235 = add nsw i32 %1234, 1
  store i32 %1235, ptr %10, align 4, !tbaa !9
  %1236 = load i32, ptr %10, align 4, !tbaa !9
  %1237 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN6VectorclEi(ptr noundef nonnull align 8 dereferenceable(32) %30, i32 noundef %1236)
          to label %1238 unwind label %51

1238:                                             ; preds = %1233
  %1239 = load double, ptr %1237, align 8, !tbaa !11
  store double %1239, ptr %28, align 8, !tbaa !11
  %1240 = load ptr, ptr %7, align 8, !tbaa !5
  %1241 = load i32, ptr %10, align 4, !tbaa !9
  %1242 = load i32, ptr %10, align 4, !tbaa !9
  %1243 = load ptr, ptr %1240, align 8, !tbaa !13
  %1244 = getelementptr inbounds ptr, ptr %1243, i64 6
  %1245 = load ptr, ptr %1244, align 8
  %1246 = invoke noundef nonnull align 8 dereferenceable(8) ptr %1245(ptr noundef nonnull align 8 dereferenceable(24) %1240, i32 noundef %1241, i32 noundef %1242)
          to label %1247 unwind label %51

1247:                                             ; preds = %1238
  %1248 = load double, ptr %1246, align 8, !tbaa !11
  store double %1248, ptr %25, align 8, !tbaa !11
  %1249 = load double, ptr %23, align 8, !tbaa !11
  %1250 = load double, ptr %28, align 8, !tbaa !11
  %1251 = fmul double %1249, %1250
  store double %1251, ptr %22, align 8, !tbaa !11
  %1252 = load double, ptr %20, align 8, !tbaa !11
  %1253 = load double, ptr %28, align 8, !tbaa !11
  %1254 = fmul double %1252, %1253
  store double %1254, ptr %28, align 8, !tbaa !11
  %1255 = load double, ptr %21, align 8, !tbaa !11
  %1256 = load double, ptr %22, align 8, !tbaa !11
  %1257 = invoke noundef double @_ZL6pythagdd(double noundef %1255, double noundef %1256)
          to label %1258 unwind label %51

1258:                                             ; preds = %1247
  store double %1257, ptr %26, align 8, !tbaa !11
  %1259 = load double, ptr %26, align 8, !tbaa !11
  %1260 = load i32, ptr %12, align 4, !tbaa !9
  %1261 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN6VectorclEi(ptr noundef nonnull align 8 dereferenceable(32) %30, i32 noundef %1260)
          to label %1262 unwind label %51

1262:                                             ; preds = %1258
  store double %1259, ptr %1261, align 8, !tbaa !11
  %1263 = load double, ptr %21, align 8, !tbaa !11
  %1264 = load double, ptr %26, align 8, !tbaa !11
  %1265 = fdiv double %1263, %1264
  store double %1265, ptr %20, align 8, !tbaa !11
  %1266 = load double, ptr %22, align 8, !tbaa !11
  %1267 = load double, ptr %26, align 8, !tbaa !11
  %1268 = fdiv double %1266, %1267
  store double %1268, ptr %23, align 8, !tbaa !11
  %1269 = load double, ptr %24, align 8, !tbaa !11
  %1270 = load double, ptr %20, align 8, !tbaa !11
  %1271 = load double, ptr %28, align 8, !tbaa !11
  %1272 = load double, ptr %23, align 8, !tbaa !11
  %1273 = fmul double %1271, %1272
  %1274 = call double @llvm.fmuladd.f64(double %1269, double %1270, double %1273)
  store double %1274, ptr %21, align 8, !tbaa !11
  %1275 = load double, ptr %28, align 8, !tbaa !11
  %1276 = load double, ptr %20, align 8, !tbaa !11
  %1277 = load double, ptr %24, align 8, !tbaa !11
  %1278 = load double, ptr %23, align 8, !tbaa !11
  %1279 = fmul double %1277, %1278
  %1280 = fneg double %1279
  %1281 = call double @llvm.fmuladd.f64(double %1275, double %1276, double %1280)
  store double %1281, ptr %28, align 8, !tbaa !11
  %1282 = load double, ptr %25, align 8, !tbaa !11
  %1283 = load double, ptr %23, align 8, !tbaa !11
  %1284 = fmul double %1282, %1283
  store double %1284, ptr %22, align 8, !tbaa !11
  %1285 = load double, ptr %25, align 8, !tbaa !11
  %1286 = load double, ptr %20, align 8, !tbaa !11
  %1287 = fmul double %1285, %1286
  store double %1287, ptr %25, align 8, !tbaa !11
  store i32 1, ptr %13, align 4, !tbaa !9
  br label %1288

1288:                                             ; preds = %1340, %1262
  %1289 = load i32, ptr %13, align 4, !tbaa !9
  %1290 = load i32, ptr %18, align 4, !tbaa !9
  %1291 = icmp sle i32 %1289, %1290
  br i1 %1291, label %1292, label %1343

1292:                                             ; preds = %1288
  %1293 = load ptr, ptr %8, align 8, !tbaa !5
  %1294 = load i32, ptr %13, align 4, !tbaa !9
  %1295 = load i32, ptr %12, align 4, !tbaa !9
  %1296 = load ptr, ptr %1293, align 8, !tbaa !13
  %1297 = getelementptr inbounds ptr, ptr %1296, i64 6
  %1298 = load ptr, ptr %1297, align 8
  %1299 = invoke noundef nonnull align 8 dereferenceable(8) ptr %1298(ptr noundef nonnull align 8 dereferenceable(24) %1293, i32 noundef %1294, i32 noundef %1295)
          to label %1300 unwind label %51

1300:                                             ; preds = %1292
  %1301 = load double, ptr %1299, align 8, !tbaa !11
  store double %1301, ptr %24, align 8, !tbaa !11
  %1302 = load ptr, ptr %8, align 8, !tbaa !5
  %1303 = load i32, ptr %13, align 4, !tbaa !9
  %1304 = load i32, ptr %10, align 4, !tbaa !9
  %1305 = load ptr, ptr %1302, align 8, !tbaa !13
  %1306 = getelementptr inbounds ptr, ptr %1305, i64 6
  %1307 = load ptr, ptr %1306, align 8
  %1308 = invoke noundef nonnull align 8 dereferenceable(8) ptr %1307(ptr noundef nonnull align 8 dereferenceable(24) %1302, i32 noundef %1303, i32 noundef %1304)
          to label %1309 unwind label %51

1309:                                             ; preds = %1300
  %1310 = load double, ptr %1308, align 8, !tbaa !11
  store double %1310, ptr %26, align 8, !tbaa !11
  %1311 = load double, ptr %24, align 8, !tbaa !11
  %1312 = load double, ptr %20, align 8, !tbaa !11
  %1313 = load double, ptr %26, align 8, !tbaa !11
  %1314 = load double, ptr %23, align 8, !tbaa !11
  %1315 = fmul double %1313, %1314
  %1316 = call double @llvm.fmuladd.f64(double %1311, double %1312, double %1315)
  %1317 = load ptr, ptr %8, align 8, !tbaa !5
  %1318 = load i32, ptr %13, align 4, !tbaa !9
  %1319 = load i32, ptr %12, align 4, !tbaa !9
  %1320 = load ptr, ptr %1317, align 8, !tbaa !13
  %1321 = getelementptr inbounds ptr, ptr %1320, i64 6
  %1322 = load ptr, ptr %1321, align 8
  %1323 = invoke noundef nonnull align 8 dereferenceable(8) ptr %1322(ptr noundef nonnull align 8 dereferenceable(24) %1317, i32 noundef %1318, i32 noundef %1319)
          to label %1324 unwind label %51

1324:                                             ; preds = %1309
  store double %1316, ptr %1323, align 8, !tbaa !11
  %1325 = load double, ptr %26, align 8, !tbaa !11
  %1326 = load double, ptr %20, align 8, !tbaa !11
  %1327 = load double, ptr %24, align 8, !tbaa !11
  %1328 = load double, ptr %23, align 8, !tbaa !11
  %1329 = fmul double %1327, %1328
  %1330 = fneg double %1329
  %1331 = call double @llvm.fmuladd.f64(double %1325, double %1326, double %1330)
  %1332 = load ptr, ptr %8, align 8, !tbaa !5
  %1333 = load i32, ptr %13, align 4, !tbaa !9
  %1334 = load i32, ptr %10, align 4, !tbaa !9
  %1335 = load ptr, ptr %1332, align 8, !tbaa !13
  %1336 = getelementptr inbounds ptr, ptr %1335, i64 6
  %1337 = load ptr, ptr %1336, align 8
  %1338 = invoke noundef nonnull align 8 dereferenceable(8) ptr %1337(ptr noundef nonnull align 8 dereferenceable(24) %1332, i32 noundef %1333, i32 noundef %1334)
          to label %1339 unwind label %51

1339:                                             ; preds = %1324
  store double %1331, ptr %1338, align 8, !tbaa !11
  br label %1340

1340:                                             ; preds = %1339
  %1341 = load i32, ptr %13, align 4, !tbaa !9
  %1342 = add nsw i32 %1341, 1
  store i32 %1342, ptr %13, align 4, !tbaa !9
  br label %1288, !llvm.loop !47

1343:                                             ; preds = %1288
  %1344 = load double, ptr %21, align 8, !tbaa !11
  %1345 = load double, ptr %22, align 8, !tbaa !11
  %1346 = invoke noundef double @_ZL6pythagdd(double noundef %1344, double noundef %1345)
          to label %1347 unwind label %51

1347:                                             ; preds = %1343
  store double %1346, ptr %26, align 8, !tbaa !11
  %1348 = load double, ptr %26, align 8, !tbaa !11
  %1349 = load ptr, ptr %7, align 8, !tbaa !5
  %1350 = load i32, ptr %12, align 4, !tbaa !9
  %1351 = load i32, ptr %12, align 4, !tbaa !9
  %1352 = load ptr, ptr %1349, align 8, !tbaa !13
  %1353 = getelementptr inbounds ptr, ptr %1352, i64 6
  %1354 = load ptr, ptr %1353, align 8
  %1355 = invoke noundef nonnull align 8 dereferenceable(8) ptr %1354(ptr noundef nonnull align 8 dereferenceable(24) %1349, i32 noundef %1350, i32 noundef %1351)
          to label %1356 unwind label %51

1356:                                             ; preds = %1347
  store double %1348, ptr %1355, align 8, !tbaa !11
  %1357 = load double, ptr %26, align 8, !tbaa !11
  %1358 = fcmp une double %1357, 0.000000e+00
  br i1 %1358, label %1359, label %1368

1359:                                             ; preds = %1356
  %1360 = load double, ptr %26, align 8, !tbaa !11
  %1361 = fdiv double 1.000000e+00, %1360
  store double %1361, ptr %26, align 8, !tbaa !11
  %1362 = load double, ptr %21, align 8, !tbaa !11
  %1363 = load double, ptr %26, align 8, !tbaa !11
  %1364 = fmul double %1362, %1363
  store double %1364, ptr %20, align 8, !tbaa !11
  %1365 = load double, ptr %22, align 8, !tbaa !11
  %1366 = load double, ptr %26, align 8, !tbaa !11
  %1367 = fmul double %1365, %1366
  store double %1367, ptr %23, align 8, !tbaa !11
  br label %1368

1368:                                             ; preds = %1359, %1356
  %1369 = load double, ptr %20, align 8, !tbaa !11
  %1370 = load double, ptr %28, align 8, !tbaa !11
  %1371 = load double, ptr %23, align 8, !tbaa !11
  %1372 = load double, ptr %25, align 8, !tbaa !11
  %1373 = fmul double %1371, %1372
  %1374 = call double @llvm.fmuladd.f64(double %1369, double %1370, double %1373)
  store double %1374, ptr %21, align 8, !tbaa !11
  %1375 = load double, ptr %20, align 8, !tbaa !11
  %1376 = load double, ptr %25, align 8, !tbaa !11
  %1377 = load double, ptr %23, align 8, !tbaa !11
  %1378 = load double, ptr %28, align 8, !tbaa !11
  %1379 = fmul double %1377, %1378
  %1380 = fneg double %1379
  %1381 = call double @llvm.fmuladd.f64(double %1375, double %1376, double %1380)
  store double %1381, ptr %24, align 8, !tbaa !11
  store i32 1, ptr %13, align 4, !tbaa !9
  br label %1382

1382:                                             ; preds = %1434, %1368
  %1383 = load i32, ptr %13, align 4, !tbaa !9
  %1384 = load i32, ptr %17, align 4, !tbaa !9
  %1385 = icmp sle i32 %1383, %1384
  br i1 %1385, label %1386, label %1437

1386:                                             ; preds = %1382
  %1387 = load ptr, ptr %6, align 8, !tbaa !5
  %1388 = load i32, ptr %13, align 4, !tbaa !9
  %1389 = load i32, ptr %12, align 4, !tbaa !9
  %1390 = load ptr, ptr %1387, align 8, !tbaa !13
  %1391 = getelementptr inbounds ptr, ptr %1390, i64 6
  %1392 = load ptr, ptr %1391, align 8
  %1393 = invoke noundef nonnull align 8 dereferenceable(8) ptr %1392(ptr noundef nonnull align 8 dereferenceable(24) %1387, i32 noundef %1388, i32 noundef %1389)
          to label %1394 unwind label %51

1394:                                             ; preds = %1386
  %1395 = load double, ptr %1393, align 8, !tbaa !11
  store double %1395, ptr %25, align 8, !tbaa !11
  %1396 = load ptr, ptr %6, align 8, !tbaa !5
  %1397 = load i32, ptr %13, align 4, !tbaa !9
  %1398 = load i32, ptr %10, align 4, !tbaa !9
  %1399 = load ptr, ptr %1396, align 8, !tbaa !13
  %1400 = getelementptr inbounds ptr, ptr %1399, i64 6
  %1401 = load ptr, ptr %1400, align 8
  %1402 = invoke noundef nonnull align 8 dereferenceable(8) ptr %1401(ptr noundef nonnull align 8 dereferenceable(24) %1396, i32 noundef %1397, i32 noundef %1398)
          to label %1403 unwind label %51

1403:                                             ; preds = %1394
  %1404 = load double, ptr %1402, align 8, !tbaa !11
  store double %1404, ptr %26, align 8, !tbaa !11
  %1405 = load double, ptr %25, align 8, !tbaa !11
  %1406 = load double, ptr %20, align 8, !tbaa !11
  %1407 = load double, ptr %26, align 8, !tbaa !11
  %1408 = load double, ptr %23, align 8, !tbaa !11
  %1409 = fmul double %1407, %1408
  %1410 = call double @llvm.fmuladd.f64(double %1405, double %1406, double %1409)
  %1411 = load ptr, ptr %6, align 8, !tbaa !5
  %1412 = load i32, ptr %13, align 4, !tbaa !9
  %1413 = load i32, ptr %12, align 4, !tbaa !9
  %1414 = load ptr, ptr %1411, align 8, !tbaa !13
  %1415 = getelementptr inbounds ptr, ptr %1414, i64 6
  %1416 = load ptr, ptr %1415, align 8
  %1417 = invoke noundef nonnull align 8 dereferenceable(8) ptr %1416(ptr noundef nonnull align 8 dereferenceable(24) %1411, i32 noundef %1412, i32 noundef %1413)
          to label %1418 unwind label %51

1418:                                             ; preds = %1403
  store double %1410, ptr %1417, align 8, !tbaa !11
  %1419 = load double, ptr %26, align 8, !tbaa !11
  %1420 = load double, ptr %20, align 8, !tbaa !11
  %1421 = load double, ptr %25, align 8, !tbaa !11
  %1422 = load double, ptr %23, align 8, !tbaa !11
  %1423 = fmul double %1421, %1422
  %1424 = fneg double %1423
  %1425 = call double @llvm.fmuladd.f64(double %1419, double %1420, double %1424)
  %1426 = load ptr, ptr %6, align 8, !tbaa !5
  %1427 = load i32, ptr %13, align 4, !tbaa !9
  %1428 = load i32, ptr %10, align 4, !tbaa !9
  %1429 = load ptr, ptr %1426, align 8, !tbaa !13
  %1430 = getelementptr inbounds ptr, ptr %1429, i64 6
  %1431 = load ptr, ptr %1430, align 8
  %1432 = invoke noundef nonnull align 8 dereferenceable(8) ptr %1431(ptr noundef nonnull align 8 dereferenceable(24) %1426, i32 noundef %1427, i32 noundef %1428)
          to label %1433 unwind label %51

1433:                                             ; preds = %1418
  store double %1425, ptr %1432, align 8, !tbaa !11
  br label %1434

1434:                                             ; preds = %1433
  %1435 = load i32, ptr %13, align 4, !tbaa !9
  %1436 = add nsw i32 %1435, 1
  store i32 %1436, ptr %13, align 4, !tbaa !9
  br label %1382, !llvm.loop !48

1437:                                             ; preds = %1382
  br label %1438

1438:                                             ; preds = %1437
  %1439 = load i32, ptr %12, align 4, !tbaa !9
  %1440 = add nsw i32 %1439, 1
  store i32 %1440, ptr %12, align 4, !tbaa !9
  br label %1229, !llvm.loop !49

1441:                                             ; preds = %1229
  %1442 = load i32, ptr %15, align 4, !tbaa !9
  %1443 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN6VectorclEi(ptr noundef nonnull align 8 dereferenceable(32) %30, i32 noundef %1442)
          to label %1444 unwind label %51

1444:                                             ; preds = %1441
  store double 0.000000e+00, ptr %1443, align 8, !tbaa !11
  %1445 = load double, ptr %21, align 8, !tbaa !11
  %1446 = load i32, ptr %14, align 4, !tbaa !9
  %1447 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN6VectorclEi(ptr noundef nonnull align 8 dereferenceable(32) %30, i32 noundef %1446)
          to label %1448 unwind label %51

1448:                                             ; preds = %1444
  store double %1445, ptr %1447, align 8, !tbaa !11
  %1449 = load double, ptr %24, align 8, !tbaa !11
  %1450 = load ptr, ptr %7, align 8, !tbaa !5
  %1451 = load i32, ptr %14, align 4, !tbaa !9
  %1452 = load i32, ptr %14, align 4, !tbaa !9
  %1453 = load ptr, ptr %1450, align 8, !tbaa !13
  %1454 = getelementptr inbounds ptr, ptr %1453, i64 6
  %1455 = load ptr, ptr %1454, align 8
  %1456 = invoke noundef nonnull align 8 dereferenceable(8) ptr %1455(ptr noundef nonnull align 8 dereferenceable(24) %1450, i32 noundef %1451, i32 noundef %1452)
          to label %1457 unwind label %51

1457:                                             ; preds = %1448
  store double %1449, ptr %1456, align 8, !tbaa !11
  br label %1458

1458:                                             ; preds = %1457
  %1459 = load i32, ptr %11, align 4, !tbaa !9
  %1460 = add nsw i32 %1459, 1
  store i32 %1460, ptr %11, align 4, !tbaa !9
  br label %933, !llvm.loop !50

1461:                                             ; preds = %1143, %933
  br label %1462

1462:                                             ; preds = %1461
  %1463 = load i32, ptr %14, align 4, !tbaa !9
  %1464 = add nsw i32 %1463, -1
  store i32 %1464, ptr %14, align 4, !tbaa !9
  br label %929, !llvm.loop !51

1465:                                             ; preds = %929
  %1466 = load i32, ptr %19, align 4, !tbaa !9
  %1467 = icmp ne i32 %1466, 0
  br i1 %1467, label %1468, label %1472

1468:                                             ; preds = %1465
  %1469 = load ptr, ptr %6, align 8, !tbaa !5
  %1470 = load ptr, ptr %8, align 8, !tbaa !5
  invoke void @_Z4swapR6MatrixS0_(ptr noundef nonnull align 8 dereferenceable(24) %1469, ptr noundef nonnull align 8 dereferenceable(24) %1470)
          to label %1471 unwind label %51

1471:                                             ; preds = %1468
  br label %1472

1472:                                             ; preds = %1471, %1465
  store i32 2, ptr %10, align 4, !tbaa !9
  br label %1473

1473:                                             ; preds = %1543, %1472
  %1474 = load i32, ptr %10, align 4, !tbaa !9
  %1475 = load ptr, ptr %7, align 8, !tbaa !5
  %1476 = invoke noundef i32 @_ZNK6Matrix6nbColsEv(ptr noundef nonnull align 8 dereferenceable(24) %1475)
          to label %1477 unwind label %51

1477:                                             ; preds = %1473
  %1478 = icmp sle i32 %1474, %1476
  br i1 %1478, label %1479, label %1546

1479:                                             ; preds = %1477
  %1480 = load i32, ptr %10, align 4, !tbaa !9
  store i32 %1480, ptr %12, align 4, !tbaa !9
  br label %1481

1481:                                             ; preds = %1508, %1479
  %1482 = load i32, ptr %12, align 4, !tbaa !9
  %1483 = icmp sgt i32 %1482, 1
  br i1 %1483, label %1484, label %1506

1484:                                             ; preds = %1481
  %1485 = load ptr, ptr %7, align 8, !tbaa !5
  %1486 = load i32, ptr %12, align 4, !tbaa !9
  %1487 = sub nsw i32 %1486, 1
  %1488 = load i32, ptr %12, align 4, !tbaa !9
  %1489 = sub nsw i32 %1488, 1
  %1490 = load ptr, ptr %1485, align 8, !tbaa !13
  %1491 = getelementptr inbounds ptr, ptr %1490, i64 6
  %1492 = load ptr, ptr %1491, align 8
  %1493 = invoke noundef nonnull align 8 dereferenceable(8) ptr %1492(ptr noundef nonnull align 8 dereferenceable(24) %1485, i32 noundef %1487, i32 noundef %1489)
          to label %1494 unwind label %51

1494:                                             ; preds = %1484
  %1495 = load double, ptr %1493, align 8, !tbaa !11
  %1496 = load ptr, ptr %7, align 8, !tbaa !5
  %1497 = load i32, ptr %10, align 4, !tbaa !9
  %1498 = load i32, ptr %10, align 4, !tbaa !9
  %1499 = load ptr, ptr %1496, align 8, !tbaa !13
  %1500 = getelementptr inbounds ptr, ptr %1499, i64 6
  %1501 = load ptr, ptr %1500, align 8
  %1502 = invoke noundef nonnull align 8 dereferenceable(8) ptr %1501(ptr noundef nonnull align 8 dereferenceable(24) %1496, i32 noundef %1497, i32 noundef %1498)
          to label %1503 unwind label %51

1503:                                             ; preds = %1494
  %1504 = load double, ptr %1502, align 8, !tbaa !11
  %1505 = fcmp olt double %1495, %1504
  br label %1506

1506:                                             ; preds = %1503, %1481
  %1507 = phi i1 [ false, %1481 ], [ %1505, %1503 ]
  br i1 %1507, label %1508, label %1511

1508:                                             ; preds = %1506
  %1509 = load i32, ptr %12, align 4, !tbaa !9
  %1510 = add nsw i32 %1509, -1
  store i32 %1510, ptr %12, align 4, !tbaa !9
  br label %1481, !llvm.loop !52

1511:                                             ; preds = %1506
  %1512 = load i32, ptr %10, align 4, !tbaa !9
  store i32 %1512, ptr %14, align 4, !tbaa !9
  br label %1513

1513:                                             ; preds = %1539, %1511
  %1514 = load i32, ptr %14, align 4, !tbaa !9
  %1515 = load i32, ptr %12, align 4, !tbaa !9
  %1516 = icmp sgt i32 %1514, %1515
  br i1 %1516, label %1517, label %1542

1517:                                             ; preds = %1513
  %1518 = load ptr, ptr %7, align 8, !tbaa !5
  %1519 = load i32, ptr %14, align 4, !tbaa !9
  %1520 = load i32, ptr %14, align 4, !tbaa !9
  %1521 = load i32, ptr %14, align 4, !tbaa !9
  %1522 = sub nsw i32 %1521, 1
  %1523 = load i32, ptr %14, align 4, !tbaa !9
  %1524 = sub nsw i32 %1523, 1
  %1525 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN6Matrix8swapEltsEiiii(ptr noundef nonnull align 8 dereferenceable(24) %1518, i32 noundef %1519, i32 noundef %1520, i32 noundef %1522, i32 noundef %1524)
          to label %1526 unwind label %51

1526:                                             ; preds = %1517
  %1527 = load ptr, ptr %6, align 8, !tbaa !5
  %1528 = load i32, ptr %14, align 4, !tbaa !9
  %1529 = load i32, ptr %14, align 4, !tbaa !9
  %1530 = sub nsw i32 %1529, 1
  %1531 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN6Matrix8swapColsEii(ptr noundef nonnull align 8 dereferenceable(24) %1527, i32 noundef %1528, i32 noundef %1530)
          to label %1532 unwind label %51

1532:                                             ; preds = %1526
  %1533 = load ptr, ptr %8, align 8, !tbaa !5
  %1534 = load i32, ptr %14, align 4, !tbaa !9
  %1535 = load i32, ptr %14, align 4, !tbaa !9
  %1536 = sub nsw i32 %1535, 1
  %1537 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN6Matrix8swapColsEii(ptr noundef nonnull align 8 dereferenceable(24) %1533, i32 noundef %1534, i32 noundef %1536)
          to label %1538 unwind label %51

1538:                                             ; preds = %1532
  br label %1539

1539:                                             ; preds = %1538
  %1540 = load i32, ptr %14, align 4, !tbaa !9
  %1541 = add nsw i32 %1540, -1
  store i32 %1541, ptr %14, align 4, !tbaa !9
  br label %1513, !llvm.loop !53

1542:                                             ; preds = %1513
  br label %1543

1543:                                             ; preds = %1542
  %1544 = load i32, ptr %10, align 4, !tbaa !9
  %1545 = add nsw i32 %1544, 1
  store i32 %1545, ptr %10, align 4, !tbaa !9
  br label %1473, !llvm.loop !54

1546:                                             ; preds = %1477
  call void @_ZN6MatrixD1Ev(ptr noundef nonnull align 8 dereferenceable(24) %31) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %31) #7
  call void @_ZN6VectorD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %30) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %30) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #7
  ret void

1547:                                             ; preds = %63, %51
  call void @_ZN6MatrixD1Ev(ptr noundef nonnull align 8 dereferenceable(24) %31) #7
  br label %1548

1548:                                             ; preds = %1547, %47
  call void @llvm.lifetime.end.p0(i64 24, ptr %31) #7
  call void @_ZN6VectorD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %30) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %30) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #7
  br label %1549

1549:                                             ; preds = %1548
  %1550 = load ptr, ptr %32, align 8
  %1551 = load i32, ptr %33, align 4
  %1552 = insertvalue { ptr, i32 } poison, ptr %1550, 0
  %1553 = insertvalue { ptr, i32 } %1552, i32 %1551, 1
  resume { ptr, i32 } %1553
}

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

declare void @_ZN6VectorC1Ev(ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #2

declare void @_ZN6MatrixC1ERKS_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #2

declare i32 @__gxx_personality_v0(...)

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNK6Matrix6nbRowsEv(ptr noundef nonnull align 8 dereferenceable(24)) #3 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNK6Matrix6nbColsEv(ptr noundef nonnull align 8 dereferenceable(24)) #3 align 2

declare void @_ZNK6Matrix9transposeEv(ptr dead_on_unwind writable sret(%class.Matrix) align 8, ptr noundef nonnull align 8 dereferenceable(24)) #2

declare noundef nonnull align 8 dereferenceable(24) ptr @_ZN6MatrixaSERKS_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24)) #2

; Function Attrs: nounwind
declare void @_ZN6MatrixD1Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #4

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

declare void @_ZN6Vector6createEid(ptr noundef nonnull align 8 dereferenceable(32), i32 noundef, double noundef) unnamed_addr #2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZN6VectorclEi(ptr noundef nonnull align 8 dereferenceable(32), i32 noundef) unnamed_addr #3 align 2

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare hidden noundef double @_ZL6pythagdd(double noundef, double noundef) #6

declare void @_ZNK6Matrix5errorEPc(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef) #2

declare void @_Z4swapR6MatrixS0_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24)) #2

declare noundef nonnull align 8 dereferenceable(24) ptr @_ZN6Matrix8swapEltsEiiii(ptr noundef nonnull align 8 dereferenceable(24), i32 noundef, i32 noundef, i32 noundef, i32 noundef) #2

declare noundef nonnull align 8 dereferenceable(24) ptr @_ZN6Matrix8swapColsEii(ptr noundef nonnull align 8 dereferenceable(24), i32 noundef, i32 noundef) #2

; Function Attrs: nounwind
declare void @_ZN6VectorD1Ev(ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #4

attributes #0 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { inlinehint mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { 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 #5 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #6 = { 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 #7 = { nounwind }

!llvm.module.flags = !{!0, !1, !2, !3}
!llvm.ident = !{!4}

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"double", !7, i64 0}
!13 = !{!14, !14, i64 0}
!14 = !{!"vtable pointer", !8, i64 0}
!15 = distinct !{!15, !16}
!16 = !{!"llvm.loop.mustprogress"}
!17 = distinct !{!17, !16}
!18 = distinct !{!18, !16}
!19 = distinct !{!19, !16}
!20 = distinct !{!20, !16}
!21 = distinct !{!21, !16}
!22 = distinct !{!22, !16}
!23 = distinct !{!23, !16}
!24 = distinct !{!24, !16}
!25 = distinct !{!25, !16}
!26 = distinct !{!26, !16}
!27 = distinct !{!27, !16}
!28 = distinct !{!28, !16}
!29 = distinct !{!29, !16}
!30 = distinct !{!30, !16}
!31 = distinct !{!31, !16}
!32 = distinct !{!32, !16}
!33 = distinct !{!33, !16}
!34 = distinct !{!34, !16}
!35 = distinct !{!35, !16}
!36 = distinct !{!36, !16}
!37 = distinct !{!37, !16}
!38 = distinct !{!38, !16}
!39 = distinct !{!39, !16}
!40 = distinct !{!40, !16}
!41 = distinct !{!41, !16}
!42 = distinct !{!42, !16}
!43 = distinct !{!43, !16}
!44 = distinct !{!44, !16}
!45 = distinct !{!45, !16}
!46 = distinct !{!46, !16}
!47 = distinct !{!47, !16}
!48 = distinct !{!48, !16}
!49 = distinct !{!49, !16}
!50 = distinct !{!50, !16}
!51 = distinct !{!51, !16}
!52 = distinct !{!52, !16}
!53 = distinct !{!53, !16}
!54 = distinct !{!54, !16}


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

%class.Vector = type { %class.Matrix, ptr }
%class.Matrix = type { ptr, ptr, i32, i32 }

@_ZL7maxarg1 = external hidden local_unnamed_addr global double, align 8
@_ZL7maxarg2 = external hidden local_unnamed_addr global double, align 8
@_ZL8iminarg1 = external hidden local_unnamed_addr global i32, align 4
@_ZL8iminarg2 = external hidden local_unnamed_addr global i32, align 4
@.str = external hidden unnamed_addr constant [39 x i8], align 1

; Function Attrs: mustprogress uwtable
define dso_local void @_ZNK6Matrix3svdERS_S0_S0_(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef nonnull align 8 dereferenceable(24) %2, ptr noundef nonnull align 8 dereferenceable(24) %3) local_unnamed_addr #0 align 2 personality ptr @__gxx_personality_v0 {
  %5 = alloca %class.Vector, align 8
  %6 = alloca %class.Matrix, align 8
  %7 = alloca %class.Matrix, align 8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %5) #9
  call void @_ZN6VectorC1Ev(ptr noundef nonnull align 8 dereferenceable(32) %5)
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %6) #9
  invoke void @_ZN6MatrixC1ERKS_(ptr noundef nonnull align 8 dereferenceable(24) %6, ptr noundef nonnull align 8 dereferenceable(24) %0)
          to label %8 unwind label %15

8:                                                ; preds = %4
  %9 = call noundef i32 @_ZNK6Matrix6nbRowsEv(ptr noundef nonnull align 8 dereferenceable(24) %6)
  %10 = call noundef i32 @_ZNK6Matrix6nbColsEv(ptr noundef nonnull align 8 dereferenceable(24) %6)
  %.not639 = icmp slt i32 %9, %10
  br i1 %.not639, label %11, label %22

11:                                               ; preds = %8
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %7) #9
  invoke void @_ZNK6Matrix9transposeEv(ptr dead_on_unwind nonnull writable sret(%class.Matrix) align 8 %7, ptr noundef nonnull align 8 dereferenceable(24) %6)
          to label %12 unwind label %17

12:                                               ; preds = %11
  %13 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN6MatrixaSERKS_(ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef nonnull align 8 dereferenceable(24) %7)
          to label %14 unwind label %19

14:                                               ; preds = %12
  call void @_ZN6MatrixD1Ev(ptr noundef nonnull align 8 dereferenceable(24) %7) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %7) #9
  br label %24

15:                                               ; preds = %4
  %16 = landingpad { ptr, i32 }
          cleanup
  br label %688

.loopexit:                                        ; preds = %678, %681, %683
  %lpad.loopexit = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp

.loopexit.split-lp.loopexit:                      ; preds = %667, %661
  %lpad.loopexit680 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp

.loopexit.split-lp.loopexit.split-lp.loopexit:    ; preds = %.lr.ph1008, %623, %629, %635
  %lpad.loopexit684 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp

.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit: ; preds = %584, %578, %572, %.lr.ph1003
  %lpad.loopexit686 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp

.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit: ; preds = %.lr.ph992, %444, %450, %456
  %lpad.loopexit689 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp

.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit: ; preds = %._crit_edge1004, %.lr.ph1016
  %lpad.loopexit691 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp

.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit: ; preds = %423, %428
  %lpad.loopexit694 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp

.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit: ; preds = %407
  %lpad.loopexit698 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp

.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit: ; preds = %.lr.ph1025, %488
  %lpad.loopexit702 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp

.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit: ; preds = %._crit_edge1017, %505, %500, %499, %.thread
  %lpad.loopexit706 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp

.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit: ; preds = %478
  %lpad.loopexit710 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp

.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit: ; preds = %363, %.lr.ph970
  %lpad.loopexit712 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp

.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit: ; preds = %.lr.ph964, %341
  %lpad.loopexit716 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp

.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit: ; preds = %.lr.ph976
  %lpad.loopexit720 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp

.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit: ; preds = %._crit_edge965
  %lpad.loopexit723 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp

.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit: ; preds = %.lr.ph960
  %lpad.loopexit727 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp

.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit: ; preds = %.lr.ph956
  %lpad.loopexit730 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp

.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit: ; preds = %.loopexit719, %.lr.ph980
  %lpad.loopexit732 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp

.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit: ; preds = %.lr.ph940, %284
  %lpad.loopexit736 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp

.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit: ; preds = %270, %265
  %lpad.loopexit739 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp

.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit: ; preds = %.lr.ph947, %299
  %lpad.loopexit743 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp

.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit: ; preds = %255, %249, %.lr.ph932
  %lpad.loopexit748 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp

.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit: ; preds = %.loopexit742
  %lpad.loopexit752 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp

.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit: ; preds = %.lr.ph912
  %lpad.loopexit755 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp

.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit: ; preds = %.lr.ph908, %199
  %lpad.loopexit759 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp

.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit: ; preds = %110, %.lr.ph882
  %lpad.loopexit761 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp

.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit: ; preds = %.lr.ph876, %95
  %lpad.loopexit765 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp

.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit: ; preds = %.lr.ph918
  %lpad.loopexit769 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp

.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit: ; preds = %.lr.ph904
  %lpad.loopexit773 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp

.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit: ; preds = %156, %149, %.lr.ph898
  %lpad.loopexit776 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp

.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit: ; preds = %.lr.ph892
  %lpad.loopexit780 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp

.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit: ; preds = %.lr.ph888
  %lpad.loopexit784 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp

.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit: ; preds = %.lr.ph, %54, %61
  %lpad.loopexit788 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp

.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit: ; preds = %.preheader790
  %lpad.loopexit791 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp

.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit: ; preds = %._crit_edge, %75, %.loopexit783, %._crit_edge899, %170, %.loopexit768
  %lpad.loopexit795 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp

.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp: ; preds = %22, %24, %30, %34, %656
  %lpad.loopexit.split-lp = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp

17:                                               ; preds = %11
  %18 = landingpad { ptr, i32 }
          cleanup
  br label %21

19:                                               ; preds = %12
  %20 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN6MatrixD1Ev(ptr noundef nonnull align 8 dereferenceable(24) %7) #9
  br label %21

21:                                               ; preds = %19, %17
  %.pn = phi { ptr, i32 } [ %20, %19 ], [ %18, %17 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %7) #9
  br label %.loopexit.split-lp

22:                                               ; preds = %8
  %23 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN6MatrixaSERKS_(ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef nonnull align 8 dereferenceable(24) %6)
          to label %24 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp

24:                                               ; preds = %22, %14
  %25 = call noundef i32 @_ZNK6Matrix6nbRowsEv(ptr noundef nonnull align 8 dereferenceable(24) %1)
  %26 = call noundef i32 @_ZNK6Matrix6nbColsEv(ptr noundef nonnull align 8 dereferenceable(24) %1)
  %27 = load ptr, ptr %2, align 8, !tbaa !5
  %28 = getelementptr inbounds i8, ptr %27, i64 24
  %29 = load ptr, ptr %28, align 8
  invoke void %29(ptr noundef nonnull align 8 dereferenceable(24) %2, i32 noundef %26, i32 noundef %26, double noundef 0.000000e+00)
          to label %30 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp

30:                                               ; preds = %24
  %31 = load ptr, ptr %3, align 8, !tbaa !5
  %32 = getelementptr inbounds i8, ptr %31, i64 16
  %33 = load ptr, ptr %32, align 8
  invoke void %33(ptr noundef nonnull align 8 dereferenceable(24) %3, i32 noundef %26, i32 noundef %26)
          to label %34 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp

34:                                               ; preds = %30
  invoke void @_ZN6Vector6createEid(ptr noundef nonnull align 8 dereferenceable(32) %5, i32 noundef %26, double noundef 0.000000e+00)
          to label %.preheader794 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp

.preheader794:                                    ; preds = %34
  %.not919 = icmp sgt i32 %26, 0
  br i1 %.not919, label %.lr.ph926.preheader, label %._crit_edge952

.lr.ph926.preheader:                              ; preds = %.preheader794
  %35 = add nuw i32 %26, 1
  br label %.lr.ph926

.lr.ph926:                                        ; preds = %.lr.ph926.preheader, %232
  %.0571925 = phi double [ %.4, %232 ], [ 0.000000e+00, %.lr.ph926.preheader ]
  %.0574924 = phi double [ %.2576, %232 ], [ 0.000000e+00, %.lr.ph926.preheader ]
  %.0578923 = phi double [ %241, %232 ], [ 0.000000e+00, %.lr.ph926.preheader ]
  %.0590920 = phi i32 [ %36, %232 ], [ 1, %.lr.ph926.preheader ]
  %36 = add nuw i32 %.0590920, 1
  %37 = fmul double %.0574924, %.0571925
  %38 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN6VectorclEi(ptr noundef nonnull align 8 dereferenceable(32) %5, i32 noundef %.0590920)
  store double %37, ptr %38, align 8, !tbaa !8
  %.not659 = icmp sgt i32 %.0590920, %25
  br i1 %.not659, label %.loopexit783, label %.preheader790

.preheader790:                                    ; preds = %.lr.ph926, %43
  %.1572869 = phi double [ %46, %43 ], [ 0.000000e+00, %.lr.ph926 ]
  %.0603868 = phi i32 [ %47, %43 ], [ %.0590920, %.lr.ph926 ]
  %39 = load ptr, ptr %1, align 8, !tbaa !5
  %40 = getelementptr inbounds i8, ptr %39, i64 48
  %41 = load ptr, ptr %40, align 8
  %42 = invoke noundef nonnull align 8 dereferenceable(8) ptr %41(ptr noundef nonnull align 8 dereferenceable(24) %1, i32 noundef %.0603868, i32 noundef %.0590920)
          to label %43 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

43:                                               ; preds = %.preheader790
  %44 = load double, ptr %42, align 8, !tbaa !8
  %45 = call double @llvm.fabs.f64(double %44)
  %46 = fadd double %.1572869, %45
  %47 = add nuw i32 %.0603868, 1
  %exitcond.not = icmp eq i32 %.0603868, %25
  br i1 %exitcond.not, label %48, label %.preheader790, !llvm.loop !11

48:                                               ; preds = %43
  %49 = fcmp une double %46, 0.000000e+00
  br i1 %49, label %.lr.ph, label %.loopexit783

.lr.ph:                                           ; preds = %48, %67
  %.0580872 = phi double [ %69, %67 ], [ 0.000000e+00, %48 ]
  %.1604871 = phi i32 [ %70, %67 ], [ %.0590920, %48 ]
  %50 = load ptr, ptr %1, align 8, !tbaa !5
  %51 = getelementptr inbounds i8, ptr %50, i64 48
  %52 = load ptr, ptr %51, align 8
  %53 = invoke noundef nonnull align 8 dereferenceable(8) ptr %52(ptr noundef nonnull align 8 dereferenceable(24) %1, i32 noundef %.1604871, i32 noundef %.0590920)
          to label %54 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

54:                                               ; preds = %.lr.ph
  %55 = load double, ptr %53, align 8, !tbaa !8
  %56 = fdiv double %55, %46
  store double %56, ptr %53, align 8, !tbaa !8
  %57 = load ptr, ptr %1, align 8, !tbaa !5
  %58 = getelementptr inbounds i8, ptr %57, i64 48
  %59 = load ptr, ptr %58, align 8
  %60 = invoke noundef nonnull align 8 dereferenceable(8) ptr %59(ptr noundef nonnull align 8 dereferenceable(24) %1, i32 noundef %.1604871, i32 noundef %.0590920)
          to label %61 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

61:                                               ; preds = %54
  %62 = load double, ptr %60, align 8, !tbaa !8
  %63 = load ptr, ptr %1, align 8, !tbaa !5
  %64 = getelementptr inbounds i8, ptr %63, i64 48
  %65 = load ptr, ptr %64, align 8
  %66 = invoke noundef nonnull align 8 dereferenceable(8) ptr %65(ptr noundef nonnull align 8 dereferenceable(24) %1, i32 noundef %.1604871, i32 noundef %.0590920)
          to label %67 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

67:                                               ; preds = %61
  %68 = load double, ptr %66, align 8, !tbaa !8
  %69 = call double @llvm.fmuladd.f64(double %62, double %68, double %.0580872)
  %70 = add nuw i32 %.1604871, 1
  %exitcond1070.not = icmp eq i32 %.1604871, %25
  br i1 %exitcond1070.not, label %._crit_edge, label %.lr.ph, !llvm.loop !13

._crit_edge:                                      ; preds = %67
  %71 = load ptr, ptr %1, align 8, !tbaa !5
  %72 = getelementptr inbounds i8, ptr %71, i64 48
  %73 = load ptr, ptr %72, align 8
  %74 = invoke noundef nonnull align 8 dereferenceable(8) ptr %73(ptr noundef nonnull align 8 dereferenceable(24) %1, i32 noundef %.0590920, i32 noundef %.0590920)
          to label %75 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

75:                                               ; preds = %._crit_edge
  %76 = load double, ptr %74, align 8, !tbaa !8
  %77 = fcmp ult double %76, 0.000000e+00
  %78 = call double @sqrt(double noundef %69) #9
  %79 = call double @llvm.fabs.f64(double %78)
  %80 = fneg double %79
  %81 = select i1 %77, double %80, double %79
  %82 = fneg double %81
  %83 = fneg double %69
  %84 = call double @llvm.fmuladd.f64(double %76, double %82, double %83)
  %85 = load ptr, ptr %1, align 8, !tbaa !5
  %86 = getelementptr inbounds i8, ptr %85, i64 48
  %87 = load ptr, ptr %86, align 8
  %88 = invoke noundef nonnull align 8 dereferenceable(8) ptr %87(ptr noundef nonnull align 8 dereferenceable(24) %1, i32 noundef %.0590920, i32 noundef %.0590920)
          to label %89 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

89:                                               ; preds = %75
  %90 = fadd double %76, %81
  store double %90, ptr %88, align 8, !tbaa !8
  %.not662884.not = icmp slt i32 %.0590920, %26
  br i1 %.not662884.not, label %.lr.ph876.preheader, label %.lr.ph888.preheader

.lr.ph876.preheader:                              ; preds = %89, %._crit_edge883
  %.0614885 = phi i32 [ %120, %._crit_edge883 ], [ %36, %89 ]
  br label %.lr.ph876

.lr.ph876:                                        ; preds = %.lr.ph876.preheader, %101
  %.1581875 = phi double [ %103, %101 ], [ 0.000000e+00, %.lr.ph876.preheader ]
  %.2605874 = phi i32 [ %104, %101 ], [ %.0590920, %.lr.ph876.preheader ]
  %91 = load ptr, ptr %1, align 8, !tbaa !5
  %92 = getelementptr inbounds i8, ptr %91, i64 48
  %93 = load ptr, ptr %92, align 8
  %94 = invoke noundef nonnull align 8 dereferenceable(8) ptr %93(ptr noundef nonnull align 8 dereferenceable(24) %1, i32 noundef %.2605874, i32 noundef %.0590920)
          to label %95 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

95:                                               ; preds = %.lr.ph876
  %96 = load double, ptr %94, align 8, !tbaa !8
  %97 = load ptr, ptr %1, align 8, !tbaa !5
  %98 = getelementptr inbounds i8, ptr %97, i64 48
  %99 = load ptr, ptr %98, align 8
  %100 = invoke noundef nonnull align 8 dereferenceable(8) ptr %99(ptr noundef nonnull align 8 dereferenceable(24) %1, i32 noundef %.2605874, i32 noundef %.0614885)
          to label %101 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

101:                                              ; preds = %95
  %102 = load double, ptr %100, align 8, !tbaa !8
  %103 = call double @llvm.fmuladd.f64(double %96, double %102, double %.1581875)
  %104 = add nuw i32 %.2605874, 1
  %exitcond1071.not = icmp eq i32 %.2605874, %25
  br i1 %exitcond1071.not, label %.lr.ph882.preheader, label %.lr.ph876, !llvm.loop !14

.lr.ph882.preheader:                              ; preds = %101
  %105 = fdiv double %103, %84
  br label %.lr.ph882

.lr.ph882:                                        ; preds = %.lr.ph882.preheader, %116
  %.3606880 = phi i32 [ %119, %116 ], [ %.0590920, %.lr.ph882.preheader ]
  %106 = load ptr, ptr %1, align 8, !tbaa !5
  %107 = getelementptr inbounds i8, ptr %106, i64 48
  %108 = load ptr, ptr %107, align 8
  %109 = invoke noundef nonnull align 8 dereferenceable(8) ptr %108(ptr noundef nonnull align 8 dereferenceable(24) %1, i32 noundef %.3606880, i32 noundef %.0590920)
          to label %110 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

110:                                              ; preds = %.lr.ph882
  %111 = load double, ptr %109, align 8, !tbaa !8
  %112 = load ptr, ptr %1, align 8, !tbaa !5
  %113 = getelementptr inbounds i8, ptr %112, i64 48
  %114 = load ptr, ptr %113, align 8
  %115 = invoke noundef nonnull align 8 dereferenceable(8) ptr %114(ptr noundef nonnull align 8 dereferenceable(24) %1, i32 noundef %.3606880, i32 noundef %.0614885)
          to label %116 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

116:                                              ; preds = %110
  %117 = load double, ptr %115, align 8, !tbaa !8
  %118 = call double @llvm.fmuladd.f64(double %105, double %111, double %117)
  store double %118, ptr %115, align 8, !tbaa !8
  %119 = add nuw i32 %.3606880, 1
  %exitcond1072.not = icmp eq i32 %.3606880, %25
  br i1 %exitcond1072.not, label %._crit_edge883, label %.lr.ph882, !llvm.loop !15

._crit_edge883:                                   ; preds = %116
  %120 = add i32 %.0614885, 1
  %exitcond1073.not = icmp eq i32 %.0614885, %26
  br i1 %exitcond1073.not, label %.lr.ph888.preheader, label %.lr.ph876.preheader, !llvm.loop !16

.lr.ph888.preheader:                              ; preds = %._crit_edge883, %89
  br label %.lr.ph888

.lr.ph888:                                        ; preds = %.lr.ph888.preheader, %125
  %.4607887 = phi i32 [ %128, %125 ], [ %.0590920, %.lr.ph888.preheader ]
  %121 = load ptr, ptr %1, align 8, !tbaa !5
  %122 = getelementptr inbounds i8, ptr %121, i64 48
  %123 = load ptr, ptr %122, align 8
  %124 = invoke noundef nonnull align 8 dereferenceable(8) ptr %123(ptr noundef nonnull align 8 dereferenceable(24) %1, i32 noundef %.4607887, i32 noundef %.0590920)
          to label %125 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

125:                                              ; preds = %.lr.ph888
  %126 = load double, ptr %124, align 8, !tbaa !8
  %127 = fmul double %46, %126
  store double %127, ptr %124, align 8, !tbaa !8
  %128 = add nuw i32 %.4607887, 1
  %exitcond1074.not = icmp eq i32 %.4607887, %25
  br i1 %exitcond1074.not, label %.loopexit783, label %.lr.ph888, !llvm.loop !17

.loopexit783:                                     ; preds = %125, %48, %.lr.ph926
  %.1575 = phi double [ 0.000000e+00, %48 ], [ 0.000000e+00, %.lr.ph926 ], [ %82, %125 ]
  %.2573 = phi double [ %46, %48 ], [ 0.000000e+00, %.lr.ph926 ], [ %46, %125 ]
  %129 = load ptr, ptr %2, align 8, !tbaa !5
  %130 = getelementptr inbounds i8, ptr %129, i64 48
  %131 = load ptr, ptr %130, align 8
  %132 = invoke noundef nonnull align 8 dereferenceable(8) ptr %131(ptr noundef nonnull align 8 dereferenceable(24) %2, i32 noundef %.0590920, i32 noundef %.0590920)
          to label %133 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

133:                                              ; preds = %.loopexit783
  %134 = fmul double %.1575, %.2573
  store double %134, ptr %132, align 8, !tbaa !8
  %.not664 = icmp eq i32 %.0590920, %26
  %or.cond = or i1 %.not659, %.not664
  br i1 %or.cond, label %.loopexit768, label %.preheader779

.preheader779:                                    ; preds = %133
  %.not665889.not = icmp slt i32 %.0590920, %26
  br i1 %.not665889.not, label %.lr.ph892, label %.loopexit768

.lr.ph892:                                        ; preds = %.preheader779, %139
  %.3891 = phi double [ %142, %139 ], [ 0.000000e+00, %.preheader779 ]
  %.5608890 = phi i32 [ %143, %139 ], [ %36, %.preheader779 ]
  %135 = load ptr, ptr %1, align 8, !tbaa !5
  %136 = getelementptr inbounds i8, ptr %135, i64 48
  %137 = load ptr, ptr %136, align 8
  %138 = invoke noundef nonnull align 8 dereferenceable(8) ptr %137(ptr noundef nonnull align 8 dereferenceable(24) %1, i32 noundef %.0590920, i32 noundef %.5608890)
          to label %139 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

139:                                              ; preds = %.lr.ph892
  %140 = load double, ptr %138, align 8, !tbaa !8
  %141 = call double @llvm.fabs.f64(double %140)
  %142 = fadd double %.3891, %141
  %143 = add i32 %.5608890, 1
  %exitcond1075.not = icmp eq i32 %.5608890, %26
  br i1 %exitcond1075.not, label %._crit_edge893, label %.lr.ph892, !llvm.loop !18

._crit_edge893:                                   ; preds = %139
  %144 = fcmp une double %142, 0.000000e+00
  br i1 %144, label %.preheader775, label %.loopexit768

.preheader775:                                    ; preds = %._crit_edge893
  br i1 %.not665889.not, label %.lr.ph898, label %._crit_edge899

.lr.ph898:                                        ; preds = %.preheader775, %162
  %.2582897 = phi double [ %164, %162 ], [ 0.000000e+00, %.preheader775 ]
  %.6609896 = phi i32 [ %165, %162 ], [ %36, %.preheader775 ]
  %145 = load ptr, ptr %1, align 8, !tbaa !5
  %146 = getelementptr inbounds i8, ptr %145, i64 48
  %147 = load ptr, ptr %146, align 8
  %148 = invoke noundef nonnull align 8 dereferenceable(8) ptr %147(ptr noundef nonnull align 8 dereferenceable(24) %1, i32 noundef %.0590920, i32 noundef %.6609896)
          to label %149 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

149:                                              ; preds = %.lr.ph898
  %150 = load double, ptr %148, align 8, !tbaa !8
  %151 = fdiv double %150, %142
  store double %151, ptr %148, align 8, !tbaa !8
  %152 = load ptr, ptr %1, align 8, !tbaa !5
  %153 = getelementptr inbounds i8, ptr %152, i64 48
  %154 = load ptr, ptr %153, align 8
  %155 = invoke noundef nonnull align 8 dereferenceable(8) ptr %154(ptr noundef nonnull align 8 dereferenceable(24) %1, i32 noundef %.0590920, i32 noundef %.6609896)
          to label %156 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

156:                                              ; preds = %149
  %157 = load double, ptr %155, align 8, !tbaa !8
  %158 = load ptr, ptr %1, align 8, !tbaa !5
  %159 = getelementptr inbounds i8, ptr %158, i64 48
  %160 = load ptr, ptr %159, align 8
  %161 = invoke noundef nonnull align 8 dereferenceable(8) ptr %160(ptr noundef nonnull align 8 dereferenceable(24) %1, i32 noundef %.0590920, i32 noundef %.6609896)
          to label %162 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

162:                                              ; preds = %156
  %163 = load double, ptr %161, align 8, !tbaa !8
  %164 = call double @llvm.fmuladd.f64(double %157, double %163, double %.2582897)
  %165 = add i32 %.6609896, 1
  %exitcond1076.not = icmp eq i32 %.6609896, %26
  br i1 %exitcond1076.not, label %._crit_edge899, label %.lr.ph898, !llvm.loop !19

._crit_edge899:                                   ; preds = %162, %.preheader775
  %.2582.lcssa = phi double [ 0.000000e+00, %.preheader775 ], [ %164, %162 ]
  %166 = load ptr, ptr %1, align 8, !tbaa !5
  %167 = getelementptr inbounds i8, ptr %166, i64 48
  %168 = load ptr, ptr %167, align 8
  %169 = invoke noundef nonnull align 8 dereferenceable(8) ptr %168(ptr noundef nonnull align 8 dereferenceable(24) %1, i32 noundef %.0590920, i32 noundef %36)
          to label %170 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

170:                                              ; preds = %._crit_edge899
  %171 = load double, ptr %169, align 8, !tbaa !8
  %172 = fcmp ult double %171, 0.000000e+00
  %173 = call double @sqrt(double noundef %.2582.lcssa) #9
  %174 = call double @llvm.fabs.f64(double %173)
  %175 = fneg double %174
  %176 = select i1 %172, double %175, double %174
  %177 = fneg double %176
  %178 = fneg double %.2582.lcssa
  %179 = call double @llvm.fmuladd.f64(double %171, double %177, double %178)
  %180 = load ptr, ptr %1, align 8, !tbaa !5
  %181 = getelementptr inbounds i8, ptr %180, i64 48
  %182 = load ptr, ptr %181, align 8
  %183 = invoke noundef nonnull align 8 dereferenceable(8) ptr %182(ptr noundef nonnull align 8 dereferenceable(24) %1, i32 noundef %.0590920, i32 noundef %36)
          to label %184 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

184:                                              ; preds = %170
  %185 = fadd double %171, %176
  store double %185, ptr %183, align 8, !tbaa !8
  br i1 %.not665889.not, label %.lr.ph904, label %.preheader772

.preheader772:                                    ; preds = %190, %184
  %.not668914.not = icmp slt i32 %.0590920, %25
  br i1 %.not668914.not, label %.preheader758, label %.preheader767

.lr.ph904:                                        ; preds = %184, %190
  %.7610902 = phi i32 [ %194, %190 ], [ %36, %184 ]
  %186 = load ptr, ptr %1, align 8, !tbaa !5
  %187 = getelementptr inbounds i8, ptr %186, i64 48
  %188 = load ptr, ptr %187, align 8
  %189 = invoke noundef nonnull align 8 dereferenceable(8) ptr %188(ptr noundef nonnull align 8 dereferenceable(24) %1, i32 noundef %.0590920, i32 noundef %.7610902)
          to label %190 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

190:                                              ; preds = %.lr.ph904
  %191 = load double, ptr %189, align 8, !tbaa !8
  %192 = fdiv double %191, %179
  %193 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN6VectorclEi(ptr noundef nonnull align 8 dereferenceable(32) %5, i32 noundef %.7610902)
  store double %192, ptr %193, align 8, !tbaa !8
  %194 = add i32 %.7610902, 1
  %exitcond1077.not = icmp eq i32 %.7610902, %26
  br i1 %exitcond1077.not, label %.preheader772, label %.lr.ph904, !llvm.loop !20

.preheader767:                                    ; preds = %._crit_edge913, %.preheader772
  br i1 %.not665889.not, label %.lr.ph918, label %.loopexit768

.preheader758:                                    ; preds = %.preheader772, %._crit_edge913
  %.1615915 = phi i32 [ %219, %._crit_edge913 ], [ %36, %.preheader772 ]
  br i1 %.not665889.not, label %.lr.ph908, label %._crit_edge913

.preheader754:                                    ; preds = %205
  br i1 %.not665889.not, label %.lr.ph912, label %._crit_edge913

.lr.ph908:                                        ; preds = %.preheader758, %205
  %.3583907 = phi double [ %207, %205 ], [ 0.000000e+00, %.preheader758 ]
  %.8611906 = phi i32 [ %208, %205 ], [ %36, %.preheader758 ]
  %195 = load ptr, ptr %1, align 8, !tbaa !5
  %196 = getelementptr inbounds i8, ptr %195, i64 48
  %197 = load ptr, ptr %196, align 8
  %198 = invoke noundef nonnull align 8 dereferenceable(8) ptr %197(ptr noundef nonnull align 8 dereferenceable(24) %1, i32 noundef %.1615915, i32 noundef %.8611906)
          to label %199 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

199:                                              ; preds = %.lr.ph908
  %200 = load double, ptr %198, align 8, !tbaa !8
  %201 = load ptr, ptr %1, align 8, !tbaa !5
  %202 = getelementptr inbounds i8, ptr %201, i64 48
  %203 = load ptr, ptr %202, align 8
  %204 = invoke noundef nonnull align 8 dereferenceable(8) ptr %203(ptr noundef nonnull align 8 dereferenceable(24) %1, i32 noundef %.0590920, i32 noundef %.8611906)
          to label %205 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

205:                                              ; preds = %199
  %206 = load double, ptr %204, align 8, !tbaa !8
  %207 = call double @llvm.fmuladd.f64(double %200, double %206, double %.3583907)
  %208 = add i32 %.8611906, 1
  %exitcond1078.not = icmp eq i32 %.8611906, %26
  br i1 %exitcond1078.not, label %.preheader754, label %.lr.ph908, !llvm.loop !21

.lr.ph912:                                        ; preds = %.preheader754, %215
  %.9911 = phi i32 [ %218, %215 ], [ %36, %.preheader754 ]
  %209 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN6VectorclEi(ptr noundef nonnull align 8 dereferenceable(32) %5, i32 noundef %.9911)
  %210 = load double, ptr %209, align 8, !tbaa !8
  %211 = load ptr, ptr %1, align 8, !tbaa !5
  %212 = getelementptr inbounds i8, ptr %211, i64 48
  %213 = load ptr, ptr %212, align 8
  %214 = invoke noundef nonnull align 8 dereferenceable(8) ptr %213(ptr noundef nonnull align 8 dereferenceable(24) %1, i32 noundef %.1615915, i32 noundef %.9911)
          to label %215 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

215:                                              ; preds = %.lr.ph912
  %216 = load double, ptr %214, align 8, !tbaa !8
  %217 = call double @llvm.fmuladd.f64(double %207, double %210, double %216)
  store double %217, ptr %214, align 8, !tbaa !8
  %218 = add i32 %.9911, 1
  %exitcond1079.not = icmp eq i32 %.9911, %26
  br i1 %exitcond1079.not, label %._crit_edge913, label %.lr.ph912, !llvm.loop !22

._crit_edge913:                                   ; preds = %215, %.preheader758, %.preheader754
  %219 = add i32 %.1615915, 1
  %exitcond1080.not = icmp eq i32 %.1615915, %25
  br i1 %exitcond1080.not, label %.preheader767, label %.preheader758, !llvm.loop !23

.lr.ph918:                                        ; preds = %.preheader767, %224
  %.10917 = phi i32 [ %227, %224 ], [ %36, %.preheader767 ]
  %220 = load ptr, ptr %1, align 8, !tbaa !5
  %221 = getelementptr inbounds i8, ptr %220, i64 48
  %222 = load ptr, ptr %221, align 8
  %223 = invoke noundef nonnull align 8 dereferenceable(8) ptr %222(ptr noundef nonnull align 8 dereferenceable(24) %1, i32 noundef %.0590920, i32 noundef %.10917)
          to label %224 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

224:                                              ; preds = %.lr.ph918
  %225 = load double, ptr %223, align 8, !tbaa !8
  %226 = fmul double %142, %225
  store double %226, ptr %223, align 8, !tbaa !8
  %227 = add i32 %.10917, 1
  %exitcond1081.not = icmp eq i32 %.10917, %26
  br i1 %exitcond1081.not, label %.loopexit768, label %.lr.ph918, !llvm.loop !24

.loopexit768:                                     ; preds = %224, %.preheader779, %.preheader767, %._crit_edge893, %133
  %.2576 = phi double [ 0.000000e+00, %._crit_edge893 ], [ 0.000000e+00, %133 ], [ %177, %.preheader767 ], [ 0.000000e+00, %.preheader779 ], [ %177, %224 ]
  %.4 = phi double [ %142, %._crit_edge893 ], [ 0.000000e+00, %133 ], [ %142, %.preheader767 ], [ 0.000000e+00, %.preheader779 ], [ %142, %224 ]
  store double %.0578923, ptr @_ZL7maxarg1, align 8, !tbaa !8
  %228 = load ptr, ptr %2, align 8, !tbaa !5
  %229 = getelementptr inbounds i8, ptr %228, i64 48
  %230 = load ptr, ptr %229, align 8
  %231 = invoke noundef nonnull align 8 dereferenceable(8) ptr %230(ptr noundef nonnull align 8 dereferenceable(24) %2, i32 noundef %.0590920, i32 noundef %.0590920)
          to label %232 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

232:                                              ; preds = %.loopexit768
  %233 = load double, ptr %231, align 8, !tbaa !8
  %234 = call double @llvm.fabs.f64(double %233)
  %235 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN6VectorclEi(ptr noundef nonnull align 8 dereferenceable(32) %5, i32 noundef %.0590920)
  %236 = load double, ptr %235, align 8, !tbaa !8
  %237 = call double @llvm.fabs.f64(double %236)
  %238 = fadd double %234, %237
  store double %238, ptr @_ZL7maxarg2, align 8, !tbaa !8
  %239 = load double, ptr @_ZL7maxarg1, align 8
  %240 = fcmp ogt double %239, %238
  %241 = select i1 %240, double %239, double %238
  %exitcond1082.not = icmp eq i32 %.0590920, %26
  br i1 %exitcond1082.not, label %.lr.ph951, label %.lr.ph926, !llvm.loop !25

.lr.ph951:                                        ; preds = %232, %310
  %.3577950 = phi double [ %312, %310 ], [ %.2576, %232 ]
  %.1591949 = phi i32 [ %313, %310 ], [ %26, %232 ]
  %.1601948 = phi i32 [ %.1591949, %310 ], [ %35, %232 ]
  %242 = icmp slt i32 %.1591949, %26
  br i1 %242, label %243, label %.loopexit742

243:                                              ; preds = %.lr.ph951
  %244 = fcmp une double %.3577950, 0.000000e+00
  br i1 %244, label %.preheader747, label %.loopexit746

.preheader747:                                    ; preds = %243
  %.not654930 = icmp sgt i32 %.1601948, %26
  br i1 %.not654930, label %.loopexit746, label %.lr.ph932

.preheader745:                                    ; preds = %261
  br i1 %.not654930, label %.loopexit746, label %.preheader738

.lr.ph932:                                        ; preds = %.preheader747, %261
  %.2616931 = phi i32 [ %264, %261 ], [ %.1601948, %.preheader747 ]
  %245 = load ptr, ptr %1, align 8, !tbaa !5
  %246 = getelementptr inbounds i8, ptr %245, i64 48
  %247 = load ptr, ptr %246, align 8
  %248 = invoke noundef nonnull align 8 dereferenceable(8) ptr %247(ptr noundef nonnull align 8 dereferenceable(24) %1, i32 noundef %.1591949, i32 noundef %.2616931)
          to label %249 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

249:                                              ; preds = %.lr.ph932
  %250 = load double, ptr %248, align 8, !tbaa !8
  %251 = load ptr, ptr %1, align 8, !tbaa !5
  %252 = getelementptr inbounds i8, ptr %251, i64 48
  %253 = load ptr, ptr %252, align 8
  %254 = invoke noundef nonnull align 8 dereferenceable(8) ptr %253(ptr noundef nonnull align 8 dereferenceable(24) %1, i32 noundef %.1591949, i32 noundef %.1601948)
          to label %255 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

255:                                              ; preds = %249
  %256 = load double, ptr %254, align 8, !tbaa !8
  %257 = load ptr, ptr %3, align 8, !tbaa !5
  %258 = getelementptr inbounds i8, ptr %257, i64 48
  %259 = load ptr, ptr %258, align 8
  %260 = invoke noundef nonnull align 8 dereferenceable(8) ptr %259(ptr noundef nonnull align 8 dereferenceable(24) %3, i32 noundef %.2616931, i32 noundef %.1591949)
          to label %261 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

261:                                              ; preds = %255
  %262 = fdiv double %250, %256
  %263 = fdiv double %262, %.3577950
  store double %263, ptr %260, align 8, !tbaa !8
  %264 = add i32 %.2616931, 1
  %exitcond1083.not = icmp eq i32 %.2616931, %26
  br i1 %exitcond1083.not, label %.preheader745, label %.lr.ph932, !llvm.loop !26

.preheader738:                                    ; preds = %.preheader745, %._crit_edge941
  %.3617943 = phi i32 [ %294, %._crit_edge941 ], [ %.1601948, %.preheader745 ]
  br label %265

265:                                              ; preds = %.preheader738, %276
  %.4584935 = phi double [ 0.000000e+00, %.preheader738 ], [ %278, %276 ]
  %.11934 = phi i32 [ %.1601948, %.preheader738 ], [ %279, %276 ]
  %266 = load ptr, ptr %1, align 8, !tbaa !5
  %267 = getelementptr inbounds i8, ptr %266, i64 48
  %268 = load ptr, ptr %267, align 8
  %269 = invoke noundef nonnull align 8 dereferenceable(8) ptr %268(ptr noundef nonnull align 8 dereferenceable(24) %1, i32 noundef %.1591949, i32 noundef %.11934)
          to label %270 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

270:                                              ; preds = %265
  %271 = load double, ptr %269, align 8, !tbaa !8
  %272 = load ptr, ptr %3, align 8, !tbaa !5
  %273 = getelementptr inbounds i8, ptr %272, i64 48
  %274 = load ptr, ptr %273, align 8
  %275 = invoke noundef nonnull align 8 dereferenceable(8) ptr %274(ptr noundef nonnull align 8 dereferenceable(24) %3, i32 noundef %.11934, i32 noundef %.3617943)
          to label %276 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

276:                                              ; preds = %270
  %277 = load double, ptr %275, align 8, !tbaa !8
  %278 = call double @llvm.fmuladd.f64(double %271, double %277, double %.4584935)
  %279 = add i32 %.11934, 1
  %exitcond1084.not = icmp eq i32 %.11934, %26
  br i1 %exitcond1084.not, label %.lr.ph940, label %265, !llvm.loop !27

.lr.ph940:                                        ; preds = %276, %290
  %.12939 = phi i32 [ %293, %290 ], [ %.1601948, %276 ]
  %280 = load ptr, ptr %3, align 8, !tbaa !5
  %281 = getelementptr inbounds i8, ptr %280, i64 48
  %282 = load ptr, ptr %281, align 8
  %283 = invoke noundef nonnull align 8 dereferenceable(8) ptr %282(ptr noundef nonnull align 8 dereferenceable(24) %3, i32 noundef %.12939, i32 noundef %.1591949)
          to label %284 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

284:                                              ; preds = %.lr.ph940
  %285 = load double, ptr %283, align 8, !tbaa !8
  %286 = load ptr, ptr %3, align 8, !tbaa !5
  %287 = getelementptr inbounds i8, ptr %286, i64 48
  %288 = load ptr, ptr %287, align 8
  %289 = invoke noundef nonnull align 8 dereferenceable(8) ptr %288(ptr noundef nonnull align 8 dereferenceable(24) %3, i32 noundef %.12939, i32 noundef %.3617943)
          to label %290 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

290:                                              ; preds = %284
  %291 = load double, ptr %289, align 8, !tbaa !8
  %292 = call double @llvm.fmuladd.f64(double %278, double %285, double %291)
  store double %292, ptr %289, align 8, !tbaa !8
  %293 = add i32 %.12939, 1
  %exitcond1085.not = icmp eq i32 %.12939, %26
  br i1 %exitcond1085.not, label %._crit_edge941, label %.lr.ph940, !llvm.loop !28

._crit_edge941:                                   ; preds = %290
  %294 = add i32 %.3617943, 1
  %exitcond1086.not = icmp eq i32 %.3617943, %26
  br i1 %exitcond1086.not, label %.loopexit746, label %.preheader738, !llvm.loop !29

.loopexit746:                                     ; preds = %._crit_edge941, %.preheader747, %.preheader745, %243
  %.not656944 = icmp sgt i32 %.1601948, %26
  br i1 %.not656944, label %.loopexit742, label %.lr.ph947

.lr.ph947:                                        ; preds = %.loopexit746, %304
  %.4618945 = phi i32 [ %305, %304 ], [ %.1601948, %.loopexit746 ]
  %295 = load ptr, ptr %3, align 8, !tbaa !5
  %296 = getelementptr inbounds i8, ptr %295, i64 48
  %297 = load ptr, ptr %296, align 8
  %298 = invoke noundef nonnull align 8 dereferenceable(8) ptr %297(ptr noundef nonnull align 8 dereferenceable(24) %3, i32 noundef %.4618945, i32 noundef %.1591949)
          to label %299 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

299:                                              ; preds = %.lr.ph947
  store double 0.000000e+00, ptr %298, align 8, !tbaa !8
  %300 = load ptr, ptr %3, align 8, !tbaa !5
  %301 = getelementptr inbounds i8, ptr %300, i64 48
  %302 = load ptr, ptr %301, align 8
  %303 = invoke noundef nonnull align 8 dereferenceable(8) ptr %302(ptr noundef nonnull align 8 dereferenceable(24) %3, i32 noundef %.1591949, i32 noundef %.4618945)
          to label %304 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

304:                                              ; preds = %299
  store double 0.000000e+00, ptr %303, align 8, !tbaa !8
  %305 = add i32 %.4618945, 1
  %exitcond1087.not = icmp eq i32 %.4618945, %26
  br i1 %exitcond1087.not, label %.loopexit742, label %.lr.ph947, !llvm.loop !30

.loopexit742:                                     ; preds = %304, %.loopexit746, %.lr.ph951
  %306 = load ptr, ptr %3, align 8, !tbaa !5
  %307 = getelementptr inbounds i8, ptr %306, i64 48
  %308 = load ptr, ptr %307, align 8
  %309 = invoke noundef nonnull align 8 dereferenceable(8) ptr %308(ptr noundef nonnull align 8 dereferenceable(24) %3, i32 noundef %.1591949, i32 noundef %.1591949)
          to label %310 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

310:                                              ; preds = %.loopexit742
  store double 1.000000e+00, ptr %309, align 8, !tbaa !8
  %311 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN6VectorclEi(ptr noundef nonnull align 8 dereferenceable(32) %5, i32 noundef %.1591949)
  %312 = load double, ptr %311, align 8, !tbaa !8
  %313 = add nsw i32 %.1591949, -1
  %314 = icmp sgt i32 %.1591949, 1
  br i1 %314, label %.lr.ph951, label %._crit_edge952, !llvm.loop !31

._crit_edge952:                                   ; preds = %310, %.preheader794
  %.0578.lcssa1100 = phi double [ 0.000000e+00, %.preheader794 ], [ %241, %310 ]
  store i32 %25, ptr @_ZL8iminarg1, align 4, !tbaa !32
  store i32 %26, ptr @_ZL8iminarg2, align 4, !tbaa !32
  %315 = call i32 @llvm.smin.i32(i32 %25, i32 %26)
  %316 = icmp sgt i32 %315, 0
  br i1 %316, label %.lr.ph980, label %.preheader709

.preheader709:                                    ; preds = %392, %._crit_edge952
  br i1 %.not919, label %.preheader704.lr.ph, label %._crit_edge1029

.preheader704.lr.ph:                              ; preds = %.preheader709
  %.not643989 = icmp slt i32 %25, 1
  %317 = add nuw i32 %26, 1
  br label %.preheader704

.lr.ph980:                                        ; preds = %._crit_edge952, %392
  %.2592977 = phi i32 [ %395, %392 ], [ %315, %._crit_edge952 ]
  %318 = add nuw nsw i32 %.2592977, 1
  %319 = load ptr, ptr %2, align 8, !tbaa !5
  %320 = getelementptr inbounds i8, ptr %319, i64 48
  %321 = load ptr, ptr %320, align 8
  %322 = invoke noundef nonnull align 8 dereferenceable(8) ptr %321(ptr noundef nonnull align 8 dereferenceable(24) %2, i32 noundef %.2592977, i32 noundef %.2592977)
          to label %323 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

323:                                              ; preds = %.lr.ph980
  %324 = load double, ptr %322, align 8, !tbaa !8
  %.not648953.not = icmp slt i32 %.2592977, %26
  br i1 %.not648953.not, label %.lr.ph956, label %._crit_edge957.thread

.lr.ph956:                                        ; preds = %323, %329
  %.5619954 = phi i32 [ %330, %329 ], [ %318, %323 ]
  %325 = load ptr, ptr %1, align 8, !tbaa !5
  %326 = getelementptr inbounds i8, ptr %325, i64 48
  %327 = load ptr, ptr %326, align 8
  %328 = invoke noundef nonnull align 8 dereferenceable(8) ptr %327(ptr noundef nonnull align 8 dereferenceable(24) %1, i32 noundef %.2592977, i32 noundef %.5619954)
          to label %329 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

329:                                              ; preds = %.lr.ph956
  store double 0.000000e+00, ptr %328, align 8, !tbaa !8
  %330 = add nuw nsw i32 %.5619954, 1
  %.not648.not = icmp slt i32 %.5619954, %26
  br i1 %.not648.not, label %.lr.ph956, label %._crit_edge957, !llvm.loop !34

._crit_edge957:                                   ; preds = %329
  %331 = fcmp une double %324, 0.000000e+00
  br i1 %331, label %334, label %.preheader725

._crit_edge957.thread:                            ; preds = %323
  %332 = fcmp une double %324, 0.000000e+00
  br i1 %332, label %.thread1103, label %.preheader725

.thread1103:                                      ; preds = %._crit_edge957.thread
  %333 = fdiv double 1.000000e+00, %324
  br label %.preheader718

.preheader725:                                    ; preds = %._crit_edge957.thread, %._crit_edge957
  %.not649958 = icmp sgt i32 %.2592977, %25
  br i1 %.not649958, label %.loopexit719, label %.lr.ph960

334:                                              ; preds = %._crit_edge957
  %335 = fdiv double 1.000000e+00, %324
  br i1 %.not648953.not, label %.preheader715.lr.ph, label %.preheader718

.preheader715.lr.ph:                              ; preds = %334
  %.not652961.not = icmp slt i32 %.2592977, %25
  %.not653967 = icmp sgt i32 %.2592977, %25
  br label %.preheader715

.preheader718:                                    ; preds = %._crit_edge971, %.thread1103, %334
  %336 = phi double [ %333, %.thread1103 ], [ %335, %334 ], [ %335, %._crit_edge971 ]
  %.not651974 = icmp sgt i32 %.2592977, %25
  br i1 %.not651974, label %.loopexit719, label %.lr.ph976

.preheader715:                                    ; preds = %.preheader715.lr.ph, %._crit_edge971
  %.6620973 = phi i32 [ %318, %.preheader715.lr.ph ], [ %373, %._crit_edge971 ]
  br i1 %.not652961.not, label %.lr.ph964, label %._crit_edge965

.lr.ph964:                                        ; preds = %.preheader715, %347
  %.5963 = phi double [ %349, %347 ], [ 0.000000e+00, %.preheader715 ]
  %.13962 = phi i32 [ %350, %347 ], [ %318, %.preheader715 ]
  %337 = load ptr, ptr %1, align 8, !tbaa !5
  %338 = getelementptr inbounds i8, ptr %337, i64 48
  %339 = load ptr, ptr %338, align 8
  %340 = invoke noundef nonnull align 8 dereferenceable(8) ptr %339(ptr noundef nonnull align 8 dereferenceable(24) %1, i32 noundef %.13962, i32 noundef %.2592977)
          to label %341 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

341:                                              ; preds = %.lr.ph964
  %342 = load double, ptr %340, align 8, !tbaa !8
  %343 = load ptr, ptr %1, align 8, !tbaa !5
  %344 = getelementptr inbounds i8, ptr %343, i64 48
  %345 = load ptr, ptr %344, align 8
  %346 = invoke noundef nonnull align 8 dereferenceable(8) ptr %345(ptr noundef nonnull align 8 dereferenceable(24) %1, i32 noundef %.13962, i32 noundef %.6620973)
          to label %347 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

347:                                              ; preds = %341
  %348 = load double, ptr %346, align 8, !tbaa !8
  %349 = call double @llvm.fmuladd.f64(double %342, double %348, double %.5963)
  %350 = add nuw nsw i32 %.13962, 1
  %.not652.not = icmp slt i32 %.13962, %25
  br i1 %.not652.not, label %.lr.ph964, label %._crit_edge965, !llvm.loop !35

._crit_edge965:                                   ; preds = %347, %.preheader715
  %.5.lcssa = phi double [ 0.000000e+00, %.preheader715 ], [ %349, %347 ]
  %351 = load ptr, ptr %1, align 8, !tbaa !5
  %352 = getelementptr inbounds i8, ptr %351, i64 48
  %353 = load ptr, ptr %352, align 8
  %354 = invoke noundef nonnull align 8 dereferenceable(8) ptr %353(ptr noundef nonnull align 8 dereferenceable(24) %1, i32 noundef %.2592977, i32 noundef %.2592977)
          to label %355 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

355:                                              ; preds = %._crit_edge965
  %356 = load double, ptr %354, align 8, !tbaa !8
  %357 = fdiv double %.5.lcssa, %356
  %358 = fmul double %335, %357
  br i1 %.not653967, label %._crit_edge971, label %.lr.ph970

.lr.ph970:                                        ; preds = %355, %369
  %.14968 = phi i32 [ %372, %369 ], [ %.2592977, %355 ]
  %359 = load ptr, ptr %1, align 8, !tbaa !5
  %360 = getelementptr inbounds i8, ptr %359, i64 48
  %361 = load ptr, ptr %360, align 8
  %362 = invoke noundef nonnull align 8 dereferenceable(8) ptr %361(ptr noundef nonnull align 8 dereferenceable(24) %1, i32 noundef %.14968, i32 noundef %.2592977)
          to label %363 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

363:                                              ; preds = %.lr.ph970
  %364 = load double, ptr %362, align 8, !tbaa !8
  %365 = load ptr, ptr %1, align 8, !tbaa !5
  %366 = getelementptr inbounds i8, ptr %365, i64 48
  %367 = load ptr, ptr %366, align 8
  %368 = invoke noundef nonnull align 8 dereferenceable(8) ptr %367(ptr noundef nonnull align 8 dereferenceable(24) %1, i32 noundef %.14968, i32 noundef %.6620973)
          to label %369 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

369:                                              ; preds = %363
  %370 = load double, ptr %368, align 8, !tbaa !8
  %371 = call double @llvm.fmuladd.f64(double %358, double %364, double %370)
  store double %371, ptr %368, align 8, !tbaa !8
  %372 = add i32 %.14968, 1
  %exitcond1089.not = icmp eq i32 %.14968, %25
  br i1 %exitcond1089.not, label %._crit_edge971, label %.lr.ph970, !llvm.loop !36

._crit_edge971:                                   ; preds = %369, %355
  %373 = add nuw nsw i32 %.6620973, 1
  %.not650.not = icmp slt i32 %.6620973, %26
  br i1 %.not650.not, label %.preheader715, label %.preheader718, !llvm.loop !37

.lr.ph976:                                        ; preds = %.preheader718, %378
  %.7621975 = phi i32 [ %381, %378 ], [ %.2592977, %.preheader718 ]
  %374 = load ptr, ptr %1, align 8, !tbaa !5
  %375 = getelementptr inbounds i8, ptr %374, i64 48
  %376 = load ptr, ptr %375, align 8
  %377 = invoke noundef nonnull align 8 dereferenceable(8) ptr %376(ptr noundef nonnull align 8 dereferenceable(24) %1, i32 noundef %.7621975, i32 noundef %.2592977)
          to label %378 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

378:                                              ; preds = %.lr.ph976
  %379 = load double, ptr %377, align 8, !tbaa !8
  %380 = fmul double %336, %379
  store double %380, ptr %377, align 8, !tbaa !8
  %381 = add i32 %.7621975, 1
  %exitcond1090.not = icmp eq i32 %.7621975, %25
  br i1 %exitcond1090.not, label %.loopexit719, label %.lr.ph976, !llvm.loop !38

.lr.ph960:                                        ; preds = %.preheader725, %386
  %.8622959 = phi i32 [ %387, %386 ], [ %.2592977, %.preheader725 ]
  %382 = load ptr, ptr %1, align 8, !tbaa !5
  %383 = getelementptr inbounds i8, ptr %382, i64 48
  %384 = load ptr, ptr %383, align 8
  %385 = invoke noundef nonnull align 8 dereferenceable(8) ptr %384(ptr noundef nonnull align 8 dereferenceable(24) %1, i32 noundef %.8622959, i32 noundef %.2592977)
          to label %386 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

386:                                              ; preds = %.lr.ph960
  store double 0.000000e+00, ptr %385, align 8, !tbaa !8
  %387 = add i32 %.8622959, 1
  %exitcond1088.not = icmp eq i32 %.8622959, %25
  br i1 %exitcond1088.not, label %.loopexit719, label %.lr.ph960, !llvm.loop !39

.loopexit719:                                     ; preds = %386, %378, %.preheader725, %.preheader718
  %388 = load ptr, ptr %1, align 8, !tbaa !5
  %389 = getelementptr inbounds i8, ptr %388, i64 48
  %390 = load ptr, ptr %389, align 8
  %391 = invoke noundef nonnull align 8 dereferenceable(8) ptr %390(ptr noundef nonnull align 8 dereferenceable(24) %1, i32 noundef %.2592977, i32 noundef %.2592977)
          to label %392 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

392:                                              ; preds = %.loopexit719
  %393 = load double, ptr %391, align 8, !tbaa !8
  %394 = fadd double %393, 1.000000e+00
  store double %394, ptr %391, align 8, !tbaa !8
  %395 = add nsw i32 %.2592977, -1
  %396 = icmp sgt i32 %.2592977, 1
  br i1 %396, label %.lr.ph980, label %.preheader709, !llvm.loop !40

.preheader704:                                    ; preds = %.preheader704.lr.ph, %.loopexit701
  %indvars.iv = phi i32 [ %317, %.preheader704.lr.ph ], [ %indvars.iv.next, %.loopexit701 ]
  %.151026 = phi i32 [ %26, %.preheader704.lr.ph ], [ %397, %.loopexit701 ]
  %397 = add nsw i32 %.151026, -1
  br label %.preheader696

.preheader696:                                    ; preds = %.preheader704, %653
  %.06271020 = phi i32 [ 1, %.preheader704 ], [ %654, %653 ]
  br label %400

398:                                              ; preds = %412
  %399 = icmp sgt i32 %.2602981, 1
  br i1 %399, label %400, label %._crit_edge983, !llvm.loop !41

400:                                              ; preds = %.preheader696, %398
  %.2602981 = phi i32 [ %.151026, %.preheader696 ], [ %401, %398 ]
  %401 = add nsw i32 %.2602981, -1
  %402 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN6VectorclEi(ptr noundef nonnull align 8 dereferenceable(32) %5, i32 noundef %.2602981)
  %403 = load double, ptr %402, align 8, !tbaa !8
  %404 = call double @llvm.fabs.f64(double %403)
  %405 = fadd double %.0578.lcssa1100, %404
  %406 = fcmp oeq double %405, %.0578.lcssa1100
  br i1 %406, label %.thread, label %407

407:                                              ; preds = %400
  %408 = load ptr, ptr %2, align 8, !tbaa !5
  %409 = getelementptr inbounds i8, ptr %408, i64 48
  %410 = load ptr, ptr %409, align 8
  %411 = invoke noundef nonnull align 8 dereferenceable(8) ptr %410(ptr noundef nonnull align 8 dereferenceable(24) %2, i32 noundef %401, i32 noundef %401)
          to label %412 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

412:                                              ; preds = %407
  %413 = load double, ptr %411, align 8, !tbaa !8
  %414 = call double @llvm.fabs.f64(double %413)
  %415 = fadd double %.0578.lcssa1100, %414
  %416 = fcmp oeq double %415, %.0578.lcssa1100
  br i1 %416, label %._crit_edge983, label %398, !llvm.loop !41

._crit_edge983:                                   ; preds = %398, %412
  %.2602.lcssa = phi i32 [ %.2602981, %412 ], [ %401, %398 ]
  %.not642994 = icmp sgt i32 %.2602.lcssa, %.151026
  br i1 %.not642994, label %.thread, label %.lr.ph998

.lr.ph998:                                        ; preds = %._crit_edge983, %._crit_edge993
  %.6996 = phi double [ %439, %._crit_edge993 ], [ 1.000000e+00, %._crit_edge983 ]
  %.3593995 = phi i32 [ %468, %._crit_edge993 ], [ %.2602.lcssa, %._crit_edge983 ]
  %417 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN6VectorclEi(ptr noundef nonnull align 8 dereferenceable(32) %5, i32 noundef %.3593995)
  %418 = load double, ptr %417, align 8, !tbaa !8
  %419 = fmul double %.6996, %418
  %420 = call double @llvm.fabs.f64(double %419)
  %421 = fadd double %.0578.lcssa1100, %420
  %422 = fcmp oeq double %421, %.0578.lcssa1100
  br i1 %422, label %.thread, label %423

423:                                              ; preds = %.lr.ph998
  %424 = load ptr, ptr %2, align 8, !tbaa !5
  %425 = getelementptr inbounds i8, ptr %424, i64 48
  %426 = load ptr, ptr %425, align 8
  %427 = invoke noundef nonnull align 8 dereferenceable(8) ptr %426(ptr noundef nonnull align 8 dereferenceable(24) %2, i32 noundef %.3593995, i32 noundef %.3593995)
          to label %428 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

428:                                              ; preds = %423
  %429 = load double, ptr %427, align 8, !tbaa !8
  %430 = call noundef double @_ZL6pythagdd(double noundef %419, double noundef %429)
  %431 = load ptr, ptr %2, align 8, !tbaa !5
  %432 = getelementptr inbounds i8, ptr %431, i64 48
  %433 = load ptr, ptr %432, align 8
  %434 = invoke noundef nonnull align 8 dereferenceable(8) ptr %433(ptr noundef nonnull align 8 dereferenceable(24) %2, i32 noundef %.3593995, i32 noundef %.3593995)
          to label %435 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

435:                                              ; preds = %428
  store double %430, ptr %434, align 8, !tbaa !8
  %436 = fdiv double 1.000000e+00, %430
  %437 = fmul double %429, %436
  %438 = fneg double %419
  %439 = fmul double %436, %438
  br i1 %.not643989, label %._crit_edge993, label %.lr.ph992

.lr.ph992:                                        ; preds = %435, %463
  %.9623990 = phi i32 [ %467, %463 ], [ 1, %435 ]
  %440 = load ptr, ptr %1, align 8, !tbaa !5
  %441 = getelementptr inbounds i8, ptr %440, i64 48
  %442 = load ptr, ptr %441, align 8
  %443 = invoke noundef nonnull align 8 dereferenceable(8) ptr %442(ptr noundef nonnull align 8 dereferenceable(24) %1, i32 noundef %.9623990, i32 noundef %401)
          to label %444 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

444:                                              ; preds = %.lr.ph992
  %445 = load double, ptr %443, align 8, !tbaa !8
  %446 = load ptr, ptr %1, align 8, !tbaa !5
  %447 = getelementptr inbounds i8, ptr %446, i64 48
  %448 = load ptr, ptr %447, align 8
  %449 = invoke noundef nonnull align 8 dereferenceable(8) ptr %448(ptr noundef nonnull align 8 dereferenceable(24) %1, i32 noundef %.9623990, i32 noundef %.3593995)
          to label %450 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

450:                                              ; preds = %444
  %451 = load double, ptr %449, align 8, !tbaa !8
  %452 = load ptr, ptr %1, align 8, !tbaa !5
  %453 = getelementptr inbounds i8, ptr %452, i64 48
  %454 = load ptr, ptr %453, align 8
  %455 = invoke noundef nonnull align 8 dereferenceable(8) ptr %454(ptr noundef nonnull align 8 dereferenceable(24) %1, i32 noundef %.9623990, i32 noundef %401)
          to label %456 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

456:                                              ; preds = %450
  %457 = fmul double %439, %451
  %458 = call double @llvm.fmuladd.f64(double %445, double %437, double %457)
  store double %458, ptr %455, align 8, !tbaa !8
  %459 = load ptr, ptr %1, align 8, !tbaa !5
  %460 = getelementptr inbounds i8, ptr %459, i64 48
  %461 = load ptr, ptr %460, align 8
  %462 = invoke noundef nonnull align 8 dereferenceable(8) ptr %461(ptr noundef nonnull align 8 dereferenceable(24) %1, i32 noundef %.9623990, i32 noundef %.3593995)
          to label %463 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

463:                                              ; preds = %456
  %464 = fneg double %445
  %465 = fmul double %439, %464
  %466 = call double @llvm.fmuladd.f64(double %451, double %437, double %465)
  store double %466, ptr %462, align 8, !tbaa !8
  %467 = add nuw i32 %.9623990, 1
  %exitcond1091.not = icmp eq i32 %.9623990, %25
  br i1 %exitcond1091.not, label %._crit_edge993, label %.lr.ph992, !llvm.loop !42

._crit_edge993:                                   ; preds = %463, %435
  %468 = add i32 %.3593995, 1
  %exitcond1092.not = icmp eq i32 %468, %indvars.iv
  br i1 %exitcond1092.not, label %.thread, label %.lr.ph998, !llvm.loop !43

.thread:                                          ; preds = %400, %.lr.ph998, %._crit_edge993, %._crit_edge983
  %.2602801 = phi i32 [ %.2602.lcssa, %._crit_edge983 ], [ %.2602.lcssa, %._crit_edge993 ], [ %.2602.lcssa, %.lr.ph998 ], [ %.2602981, %400 ]
  %469 = load ptr, ptr %2, align 8, !tbaa !5
  %470 = getelementptr inbounds i8, ptr %469, i64 48
  %471 = load ptr, ptr %470, align 8
  %472 = invoke noundef nonnull align 8 dereferenceable(8) ptr %471(ptr noundef nonnull align 8 dereferenceable(24) %2, i32 noundef %.151026, i32 noundef %.151026)
          to label %473 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

473:                                              ; preds = %.thread
  %474 = load double, ptr %472, align 8, !tbaa !8
  %475 = icmp eq i32 %.2602801, %.151026
  br i1 %475, label %476, label %497

476:                                              ; preds = %473
  %477 = fcmp olt double %474, 0.000000e+00
  br i1 %477, label %478, label %.loopexit701

478:                                              ; preds = %476
  %479 = load ptr, ptr %2, align 8, !tbaa !5
  %480 = getelementptr inbounds i8, ptr %479, i64 48
  %481 = load ptr, ptr %480, align 8
  %482 = invoke noundef nonnull align 8 dereferenceable(8) ptr %481(ptr noundef nonnull align 8 dereferenceable(24) %2, i32 noundef %.151026, i32 noundef %.151026)
          to label %.lr.ph1025.preheader unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

.lr.ph1025.preheader:                             ; preds = %478
  %483 = fneg double %474
  store double %483, ptr %482, align 8, !tbaa !8
  br label %.lr.ph1025

.lr.ph1025:                                       ; preds = %.lr.ph1025.preheader, %494
  %.106241023 = phi i32 [ %496, %494 ], [ 1, %.lr.ph1025.preheader ]
  %484 = load ptr, ptr %3, align 8, !tbaa !5
  %485 = getelementptr inbounds i8, ptr %484, i64 48
  %486 = load ptr, ptr %485, align 8
  %487 = invoke noundef nonnull align 8 dereferenceable(8) ptr %486(ptr noundef nonnull align 8 dereferenceable(24) %3, i32 noundef %.106241023, i32 noundef %.151026)
          to label %488 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

488:                                              ; preds = %.lr.ph1025
  %489 = load double, ptr %487, align 8, !tbaa !8
  %490 = load ptr, ptr %3, align 8, !tbaa !5
  %491 = getelementptr inbounds i8, ptr %490, i64 48
  %492 = load ptr, ptr %491, align 8
  %493 = invoke noundef nonnull align 8 dereferenceable(8) ptr %492(ptr noundef nonnull align 8 dereferenceable(24) %3, i32 noundef %.106241023, i32 noundef %.151026)
          to label %494 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

494:                                              ; preds = %488
  %495 = fneg double %489
  store double %495, ptr %493, align 8, !tbaa !8
  %496 = add nuw i32 %.106241023, 1
  %exitcond1096.not = icmp eq i32 %.106241023, %26
  br i1 %exitcond1096.not, label %.loopexit701, label %.lr.ph1025, !llvm.loop !44

497:                                              ; preds = %473
  %498 = icmp eq i32 %.06271020, 30
  br i1 %498, label %499, label %500

499:                                              ; preds = %497
  invoke void @_ZNK6Matrix5errorEPc(ptr noundef nonnull align 8 dereferenceable(24) %6, ptr noundef nonnull @.str)
          to label %500 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

500:                                              ; preds = %499, %497
  %501 = load ptr, ptr %2, align 8, !tbaa !5
  %502 = getelementptr inbounds i8, ptr %501, i64 48
  %503 = load ptr, ptr %502, align 8
  %504 = invoke noundef nonnull align 8 dereferenceable(8) ptr %503(ptr noundef nonnull align 8 dereferenceable(24) %2, i32 noundef %.2602801, i32 noundef %.2602801)
          to label %505 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

505:                                              ; preds = %500
  %506 = load double, ptr %504, align 8, !tbaa !8
  %507 = load ptr, ptr %2, align 8, !tbaa !5
  %508 = getelementptr inbounds i8, ptr %507, i64 48
  %509 = load ptr, ptr %508, align 8
  %510 = invoke noundef nonnull align 8 dereferenceable(8) ptr %509(ptr noundef nonnull align 8 dereferenceable(24) %2, i32 noundef %397, i32 noundef %397)
          to label %511 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

511:                                              ; preds = %505
  %512 = load double, ptr %510, align 8, !tbaa !8
  %513 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN6VectorclEi(ptr noundef nonnull align 8 dereferenceable(32) %5, i32 noundef %397)
  %514 = load double, ptr %513, align 8, !tbaa !8
  %515 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN6VectorclEi(ptr noundef nonnull align 8 dereferenceable(32) %5, i32 noundef %.151026)
  %516 = load double, ptr %515, align 8, !tbaa !8
  %517 = fsub double %512, %474
  %518 = fadd double %474, %512
  %519 = fsub double %514, %516
  %520 = fadd double %514, %516
  %521 = fmul double %519, %520
  %522 = call double @llvm.fmuladd.f64(double %517, double %518, double %521)
  %523 = fmul double %516, 2.000000e+00
  %524 = fmul double %512, %523
  %525 = fdiv double %522, %524
  %526 = call noundef double @_ZL6pythagdd(double noundef %525, double noundef 1.000000e+00)
  %527 = fsub double %506, %474
  %528 = fadd double %474, %506
  %529 = fcmp ult double %525, 0.000000e+00
  %530 = call double @llvm.fabs.f64(double %526)
  %531 = fneg double %530
  %532 = select i1 %529, double %531, double %530
  %533 = fadd double %525, %532
  %534 = fdiv double %512, %533
  %535 = fsub double %534, %516
  %536 = fmul double %516, %535
  %537 = call double @llvm.fmuladd.f64(double %527, double %528, double %536)
  %538 = fdiv double %537, %506
  %.not644.not1009 = icmp slt i32 %.2602801, %.151026
  br i1 %.not644.not1009, label %.lr.ph1016, label %._crit_edge1017

.loopexit683:                                     ; preds = %642, %601
  %.not644.not = icmp slt i32 %540, %.151026
  br i1 %.not644.not, label %.lr.ph1016, label %._crit_edge1017, !llvm.loop !45

.lr.ph1016:                                       ; preds = %511, %.loopexit683
  %.05791014 = phi double [ %618, %.loopexit683 ], [ %506, %511 ]
  %.05851012 = phi double [ %615, %.loopexit683 ], [ %538, %511 ]
  %.116251010 = phi i32 [ %540, %.loopexit683 ], [ %.2602801, %511 ]
  %539 = phi <2 x double> [ %611, %.loopexit683 ], [ <double 1.000000e+00, double 1.000000e+00>, %511 ]
  %540 = add nuw nsw i32 %.116251010, 1
  %541 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN6VectorclEi(ptr noundef nonnull align 8 dereferenceable(32) %5, i32 noundef %540)
  %542 = load double, ptr %541, align 8, !tbaa !8
  %543 = load ptr, ptr %2, align 8, !tbaa !5
  %544 = getelementptr inbounds i8, ptr %543, i64 48
  %545 = load ptr, ptr %544, align 8
  %546 = invoke noundef nonnull align 8 dereferenceable(8) ptr %545(ptr noundef nonnull align 8 dereferenceable(24) %2, i32 noundef %540, i32 noundef %540)
          to label %.lr.ph1003.preheader unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

.lr.ph1003.preheader:                             ; preds = %.lr.ph1016
  %547 = load double, ptr %546, align 8, !tbaa !8
  %548 = extractelement <2 x double> %539, i64 0
  %549 = fmul double %548, %542
  %550 = extractelement <2 x double> %539, i64 1
  %551 = fmul double %550, %542
  %552 = call noundef double @_ZL6pythagdd(double noundef %.05851012, double noundef %549)
  %553 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN6VectorclEi(ptr noundef nonnull align 8 dereferenceable(32) %5, i32 noundef %.116251010)
  store double %552, ptr %553, align 8, !tbaa !8
  %554 = insertelement <2 x double> poison, double %549, i64 0
  %555 = insertelement <2 x double> %554, double %.05851012, i64 1
  %556 = insertelement <2 x double> poison, double %552, i64 0
  %557 = shufflevector <2 x double> %556, <2 x double> poison, <2 x i32> zeroinitializer
  %558 = fdiv <2 x double> %555, %557
  %559 = extractelement <2 x double> %558, i64 0
  %560 = fmul double %551, %559
  %561 = extractelement <2 x double> %558, i64 1
  %562 = call double @llvm.fmuladd.f64(double %.05791014, double %561, double %560)
  %563 = fneg double %.05791014
  %564 = fmul double %559, %563
  %565 = call double @llvm.fmuladd.f64(double %551, double %561, double %564)
  %566 = fmul double %547, %559
  %567 = fmul double %547, %561
  br label %.lr.ph1003

.lr.ph1003:                                       ; preds = %.lr.ph1003.preheader, %591
  %.06121001 = phi i32 [ %595, %591 ], [ 1, %.lr.ph1003.preheader ]
  %568 = load ptr, ptr %3, align 8, !tbaa !5
  %569 = getelementptr inbounds i8, ptr %568, i64 48
  %570 = load ptr, ptr %569, align 8
  %571 = invoke noundef nonnull align 8 dereferenceable(8) ptr %570(ptr noundef nonnull align 8 dereferenceable(24) %3, i32 noundef %.06121001, i32 noundef %.116251010)
          to label %572 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

572:                                              ; preds = %.lr.ph1003
  %573 = load double, ptr %571, align 8, !tbaa !8
  %574 = load ptr, ptr %3, align 8, !tbaa !5
  %575 = getelementptr inbounds i8, ptr %574, i64 48
  %576 = load ptr, ptr %575, align 8
  %577 = invoke noundef nonnull align 8 dereferenceable(8) ptr %576(ptr noundef nonnull align 8 dereferenceable(24) %3, i32 noundef %.06121001, i32 noundef %540)
          to label %578 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

578:                                              ; preds = %572
  %579 = load double, ptr %577, align 8, !tbaa !8
  %580 = load ptr, ptr %3, align 8, !tbaa !5
  %581 = getelementptr inbounds i8, ptr %580, i64 48
  %582 = load ptr, ptr %581, align 8
  %583 = invoke noundef nonnull align 8 dereferenceable(8) ptr %582(ptr noundef nonnull align 8 dereferenceable(24) %3, i32 noundef %.06121001, i32 noundef %.116251010)
          to label %584 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

584:                                              ; preds = %578
  %585 = fmul double %559, %579
  %586 = call double @llvm.fmuladd.f64(double %573, double %561, double %585)
  store double %586, ptr %583, align 8, !tbaa !8
  %587 = load ptr, ptr %3, align 8, !tbaa !5
  %588 = getelementptr inbounds i8, ptr %587, i64 48
  %589 = load ptr, ptr %588, align 8
  %590 = invoke noundef nonnull align 8 dereferenceable(8) ptr %589(ptr noundef nonnull align 8 dereferenceable(24) %3, i32 noundef %.06121001, i32 noundef %540)
          to label %591 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

591:                                              ; preds = %584
  %592 = fneg double %573
  %593 = fmul double %559, %592
  %594 = call double @llvm.fmuladd.f64(double %579, double %561, double %593)
  store double %594, ptr %590, align 8, !tbaa !8
  %595 = add nuw i32 %.06121001, 1
  %exitcond1093.not = icmp eq i32 %.06121001, %26
  br i1 %exitcond1093.not, label %._crit_edge1004, label %.lr.ph1003, !llvm.loop !46

._crit_edge1004:                                  ; preds = %591
  %596 = call noundef double @_ZL6pythagdd(double noundef %562, double noundef %566)
  %597 = load ptr, ptr %2, align 8, !tbaa !5
  %598 = getelementptr inbounds i8, ptr %597, i64 48
  %599 = load ptr, ptr %598, align 8
  %600 = invoke noundef nonnull align 8 dereferenceable(8) ptr %599(ptr noundef nonnull align 8 dereferenceable(24) %2, i32 noundef %.116251010, i32 noundef %.116251010)
          to label %601 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

601:                                              ; preds = %._crit_edge1004
  store double %596, ptr %600, align 8, !tbaa !8
  %602 = fcmp une double %596, 0.000000e+00
  %603 = fdiv double 1.000000e+00, %596
  %604 = insertelement <2 x double> poison, double %566, i64 0
  %605 = insertelement <2 x double> %604, double %562, i64 1
  %606 = insertelement <2 x double> poison, double %603, i64 0
  %607 = shufflevector <2 x double> %606, <2 x double> poison, <2 x i32> zeroinitializer
  %608 = fmul <2 x double> %605, %607
  %609 = insertelement <2 x i1> poison, i1 %602, i64 0
  %610 = shufflevector <2 x i1> %609, <2 x i1> poison, <2 x i32> zeroinitializer
  %611 = select <2 x i1> %610, <2 x double> %608, <2 x double> %558
  %612 = extractelement <2 x double> %611, i64 0
  %613 = fmul double %567, %612
  %614 = extractelement <2 x double> %611, i64 1
  %615 = call double @llvm.fmuladd.f64(double %614, double %565, double %613)
  %616 = fneg double %612
  %617 = fmul double %565, %616
  %618 = call double @llvm.fmuladd.f64(double %614, double %567, double %617)
  br i1 %.not643989, label %.loopexit683, label %.lr.ph1008

.lr.ph1008:                                       ; preds = %601, %642
  %.16131006 = phi i32 [ %646, %642 ], [ 1, %601 ]
  %619 = load ptr, ptr %1, align 8, !tbaa !5
  %620 = getelementptr inbounds i8, ptr %619, i64 48
  %621 = load ptr, ptr %620, align 8
  %622 = invoke noundef nonnull align 8 dereferenceable(8) ptr %621(ptr noundef nonnull align 8 dereferenceable(24) %1, i32 noundef %.16131006, i32 noundef %.116251010)
          to label %623 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit

623:                                              ; preds = %.lr.ph1008
  %624 = load double, ptr %622, align 8, !tbaa !8
  %625 = load ptr, ptr %1, align 8, !tbaa !5
  %626 = getelementptr inbounds i8, ptr %625, i64 48
  %627 = load ptr, ptr %626, align 8
  %628 = invoke noundef nonnull align 8 dereferenceable(8) ptr %627(ptr noundef nonnull align 8 dereferenceable(24) %1, i32 noundef %.16131006, i32 noundef %540)
          to label %629 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit

629:                                              ; preds = %623
  %630 = load double, ptr %628, align 8, !tbaa !8
  %631 = load ptr, ptr %1, align 8, !tbaa !5
  %632 = getelementptr inbounds i8, ptr %631, i64 48
  %633 = load ptr, ptr %632, align 8
  %634 = invoke noundef nonnull align 8 dereferenceable(8) ptr %633(ptr noundef nonnull align 8 dereferenceable(24) %1, i32 noundef %.16131006, i32 noundef %.116251010)
          to label %635 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit

635:                                              ; preds = %629
  %636 = fmul double %612, %630
  %637 = call double @llvm.fmuladd.f64(double %624, double %614, double %636)
  store double %637, ptr %634, align 8, !tbaa !8
  %638 = load ptr, ptr %1, align 8, !tbaa !5
  %639 = getelementptr inbounds i8, ptr %638, i64 48
  %640 = load ptr, ptr %639, align 8
  %641 = invoke noundef nonnull align 8 dereferenceable(8) ptr %640(ptr noundef nonnull align 8 dereferenceable(24) %1, i32 noundef %.16131006, i32 noundef %540)
          to label %642 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit

642:                                              ; preds = %635
  %643 = fneg double %624
  %644 = fmul double %612, %643
  %645 = call double @llvm.fmuladd.f64(double %630, double %614, double %644)
  store double %645, ptr %641, align 8, !tbaa !8
  %646 = add nuw i32 %.16131006, 1
  %exitcond1094.not = icmp eq i32 %.16131006, %25
  br i1 %exitcond1094.not, label %.loopexit683, label %.lr.ph1008, !llvm.loop !47

._crit_edge1017:                                  ; preds = %.loopexit683, %511
  %.0585.lcssa = phi double [ %538, %511 ], [ %615, %.loopexit683 ]
  %.0579.lcssa = phi double [ %506, %511 ], [ %618, %.loopexit683 ]
  %647 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN6VectorclEi(ptr noundef nonnull align 8 dereferenceable(32) %5, i32 noundef %.2602801)
  store double 0.000000e+00, ptr %647, align 8, !tbaa !8
  %648 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN6VectorclEi(ptr noundef nonnull align 8 dereferenceable(32) %5, i32 noundef %.151026)
  store double %.0585.lcssa, ptr %648, align 8, !tbaa !8
  %649 = load ptr, ptr %2, align 8, !tbaa !5
  %650 = getelementptr inbounds i8, ptr %649, i64 48
  %651 = load ptr, ptr %650, align 8
  %652 = invoke noundef nonnull align 8 dereferenceable(8) ptr %651(ptr noundef nonnull align 8 dereferenceable(24) %2, i32 noundef %.151026, i32 noundef %.151026)
          to label %653 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit

653:                                              ; preds = %._crit_edge1017
  store double %.0579.lcssa, ptr %652, align 8, !tbaa !8
  %654 = add nuw nsw i32 %.06271020, 1
  %exitcond1095.not = icmp eq i32 %654, 31
  br i1 %exitcond1095.not, label %.loopexit701, label %.preheader696, !llvm.loop !48

.loopexit701:                                     ; preds = %653, %494, %476
  %655 = icmp sgt i32 %.151026, 1
  %indvars.iv.next = add i32 %indvars.iv, -1
  br i1 %655, label %.preheader704, label %._crit_edge1029, !llvm.loop !49

._crit_edge1029:                                  ; preds = %.loopexit701, %.preheader709
  br i1 %.not639, label %656, label %657

656:                                              ; preds = %._crit_edge1029
  invoke void @_Z4swapR6MatrixS0_(ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef nonnull align 8 dereferenceable(24) %3)
          to label %657 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp

657:                                              ; preds = %656, %._crit_edge1029
  %658 = call noundef i32 @_ZNK6Matrix6nbColsEv(ptr noundef nonnull align 8 dereferenceable(24) %2)
  %.not6401030 = icmp slt i32 %658, 2
  br i1 %.not6401030, label %._crit_edge1032, label %.preheader

.preheader:                                       ; preds = %657, %685
  %.45941031 = phi i32 [ %686, %685 ], [ 2, %657 ]
  br label %659

659:                                              ; preds = %.preheader, %673
  %.12626 = phi i32 [ %662, %673 ], [ %.45941031, %.preheader ]
  %660 = icmp sgt i32 %.12626, 1
  br i1 %660, label %661, label %.critedge

661:                                              ; preds = %659
  %662 = add nsw i32 %.12626, -1
  %663 = load ptr, ptr %2, align 8, !tbaa !5
  %664 = getelementptr inbounds i8, ptr %663, i64 48
  %665 = load ptr, ptr %664, align 8
  %666 = invoke noundef nonnull align 8 dereferenceable(8) ptr %665(ptr noundef nonnull align 8 dereferenceable(24) %2, i32 noundef %662, i32 noundef %662)
          to label %667 unwind label %.loopexit.split-lp.loopexit

667:                                              ; preds = %661
  %668 = load double, ptr %666, align 8, !tbaa !8
  %669 = load ptr, ptr %2, align 8, !tbaa !5
  %670 = getelementptr inbounds i8, ptr %669, i64 48
  %671 = load ptr, ptr %670, align 8
  %672 = invoke noundef nonnull align 8 dereferenceable(8) ptr %671(ptr noundef nonnull align 8 dereferenceable(24) %2, i32 noundef %.45941031, i32 noundef %.45941031)
          to label %673 unwind label %.loopexit.split-lp.loopexit

673:                                              ; preds = %667
  %674 = load double, ptr %672, align 8, !tbaa !8
  %675 = fcmp olt double %668, %674
  br i1 %675, label %659, label %.critedge, !llvm.loop !50

.critedge:                                        ; preds = %659, %673
  %.12626.lcssa = phi i32 [ 1, %659 ], [ %.12626, %673 ]
  br label %676

676:                                              ; preds = %683, %.critedge
  %.16 = phi i32 [ %.45941031, %.critedge ], [ %679, %683 ]
  %677 = icmp sgt i32 %.16, %.12626.lcssa
  br i1 %677, label %678, label %685

678:                                              ; preds = %676
  %679 = add nsw i32 %.16, -1
  %680 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN6Matrix8swapEltsEiiii(ptr noundef nonnull align 8 dereferenceable(24) %2, i32 noundef %.16, i32 noundef %.16, i32 noundef %679, i32 noundef %679)
          to label %681 unwind label %.loopexit

681:                                              ; preds = %678
  %682 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN6Matrix8swapColsEii(ptr noundef nonnull align 8 dereferenceable(24) %1, i32 noundef %.16, i32 noundef %679)
          to label %683 unwind label %.loopexit

683:                                              ; preds = %681
  %684 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN6Matrix8swapColsEii(ptr noundef nonnull align 8 dereferenceable(24) %3, i32 noundef %.16, i32 noundef %679)
          to label %676 unwind label %.loopexit, !llvm.loop !51

685:                                              ; preds = %676
  %686 = add nuw nsw i32 %.45941031, 1
  %687 = call noundef i32 @_ZNK6Matrix6nbColsEv(ptr noundef nonnull align 8 dereferenceable(24) %2)
  %.not640.not = icmp slt i32 %.45941031, %687
  br i1 %.not640.not, label %.preheader, label %._crit_edge1032, !llvm.loop !52

._crit_edge1032:                                  ; preds = %685, %657
  call void @_ZN6MatrixD1Ev(ptr noundef nonnull align 8 dereferenceable(24) %6) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %6) #9
  call void @_ZN6VectorD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %5) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5) #9
  ret void

.loopexit.split-lp:                               ; preds = %.loopexit, %.loopexit.split-lp.loopexit.split-lp.loopexit, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit, %.loopexit.split-lp.loopexit, %21
  %.pn674 = phi { ptr, i32 } [ %.pn, %21 ], [ %lpad.loopexit, %.loopexit ], [ %lpad.loopexit680, %.loopexit.split-lp.loopexit ], [ %lpad.loopexit684, %.loopexit.split-lp.loopexit.split-lp.loopexit ], [ %lpad.loopexit686, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit ], [ %lpad.loopexit689, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit ], [ %lpad.loopexit691, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit ], [ %lpad.loopexit694, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit ], [ %lpad.loopexit698, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit ], [ %lpad.loopexit702, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit ], [ %lpad.loopexit706, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit ], [ %lpad.loopexit710, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit ], [ %lpad.loopexit712, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit ], [ %lpad.loopexit716, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit ], [ %lpad.loopexit720, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit ], [ %lpad.loopexit723, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit ], [ %lpad.loopexit727, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit ], [ %lpad.loopexit730, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit ], [ %lpad.loopexit732, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit ], [ %lpad.loopexit736, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit ], [ %lpad.loopexit739, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit ], [ %lpad.loopexit743, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit ], [ %lpad.loopexit748, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit ], [ %lpad.loopexit752, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit ], [ %lpad.loopexit755, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit ], [ %lpad.loopexit759, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit ], [ %lpad.loopexit761, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit ], [ %lpad.loopexit765, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit ], [ %lpad.loopexit769, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit ], [ %lpad.loopexit773, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit ], [ %lpad.loopexit776, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit ], [ %lpad.loopexit780, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit ], [ %lpad.loopexit784, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit ], [ %lpad.loopexit788, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit ], [ %lpad.loopexit791, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit ], [ %lpad.loopexit795, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp ]
  call void @_ZN6MatrixD1Ev(ptr noundef nonnull align 8 dereferenceable(24) %6) #9
  br label %688

688:                                              ; preds = %.loopexit.split-lp, %15
  %.pn674.pn = phi { ptr, i32 } [ %.pn674, %.loopexit.split-lp ], [ %16, %15 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %6) #9
  call void @_ZN6VectorD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %5) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5) #9
  resume { ptr, i32 } %.pn674.pn
}

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

declare void @_ZN6VectorC1Ev(ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #2

declare void @_ZN6MatrixC1ERKS_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #2

declare i32 @__gxx_personality_v0(...)

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNK6Matrix6nbRowsEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #3 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNK6Matrix6nbColsEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #3 align 2

declare void @_ZNK6Matrix9transposeEv(ptr dead_on_unwind writable sret(%class.Matrix) align 8, ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #2

declare noundef nonnull align 8 dereferenceable(24) ptr @_ZN6MatrixaSERKS_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #2

; Function Attrs: nounwind
declare void @_ZN6MatrixD1Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #4

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

declare void @_ZN6Vector6createEid(ptr noundef nonnull align 8 dereferenceable(32), i32 noundef, double noundef) unnamed_addr #2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZN6VectorclEi(ptr noundef nonnull align 8 dereferenceable(32), i32 noundef) unnamed_addr #3 align 2

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare hidden noundef double @_ZL6pythagdd(double noundef, double noundef) local_unnamed_addr #7

declare void @_ZNK6Matrix5errorEPc(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef) local_unnamed_addr #2

declare void @_Z4swapR6MatrixS0_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #2

declare noundef nonnull align 8 dereferenceable(24) ptr @_ZN6Matrix8swapEltsEiiii(ptr noundef nonnull align 8 dereferenceable(24), i32 noundef, i32 noundef, i32 noundef, i32 noundef) local_unnamed_addr #2

declare noundef nonnull align 8 dereferenceable(24) ptr @_ZN6Matrix8swapColsEii(ptr noundef nonnull align 8 dereferenceable(24), i32 noundef, i32 noundef) local_unnamed_addr #2

; Function Attrs: nounwind
declare void @_ZN6VectorD1Ev(ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #4

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i32 @llvm.smin.i32(i32, i32) #8

attributes #0 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { inlinehint mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { 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 #5 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #6 = { 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 #7 = { 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 #8 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #9 = { 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 = !{!"vtable pointer", !7, i64 0}
!7 = !{!"Simple C++ TBAA"}
!8 = !{!9, !9, i64 0}
!9 = !{!"double", !10, i64 0}
!10 = !{!"omnipotent char", !7, i64 0}
!11 = distinct !{!11, !12}
!12 = !{!"llvm.loop.mustprogress"}
!13 = distinct !{!13, !12}
!14 = distinct !{!14, !12}
!15 = distinct !{!15, !12}
!16 = distinct !{!16, !12}
!17 = distinct !{!17, !12}
!18 = distinct !{!18, !12}
!19 = distinct !{!19, !12}
!20 = distinct !{!20, !12}
!21 = distinct !{!21, !12}
!22 = distinct !{!22, !12}
!23 = distinct !{!23, !12}
!24 = distinct !{!24, !12}
!25 = distinct !{!25, !12}
!26 = distinct !{!26, !12}
!27 = distinct !{!27, !12}
!28 = distinct !{!28, !12}
!29 = distinct !{!29, !12}
!30 = distinct !{!30, !12}
!31 = distinct !{!31, !12}
!32 = !{!33, !33, i64 0}
!33 = !{!"int", !10, i64 0}
!34 = distinct !{!34, !12}
!35 = distinct !{!35, !12}
!36 = distinct !{!36, !12}
!37 = distinct !{!37, !12}
!38 = distinct !{!38, !12}
!39 = distinct !{!39, !12}
!40 = distinct !{!40, !12}
!41 = distinct !{!41, !12}
!42 = distinct !{!42, !12}
!43 = distinct !{!43, !12}
!44 = distinct !{!44, !12}
!45 = distinct !{!45, !12}
!46 = distinct !{!46, !12}
!47 = distinct !{!47, !12}
!48 = distinct !{!48, !12}
!49 = distinct !{!49, !12}
!50 = distinct !{!50, !12}
!51 = distinct !{!51, !12}
!52 = distinct !{!52, !12}


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