; LLVM IR from OpenMathLib/OpenBLAS :: lapack-netlib/SRC (dlaed2)

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

@.str = external hidden unnamed_addr constant [7 x i8], align 1
@c_b3 = external hidden global double, align 8
@c__1 = external hidden global i32, align 4
@.str.1 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [2 x i8], align 1

; Function Attrs: nounwind uwtable
define dso_local void @dlaed2_(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %5, ptr noundef %6, ptr noundef %7, ptr noundef %8, ptr noundef %9, ptr noundef %10, ptr noundef %11, ptr noundef %12, ptr noundef %13, ptr noundef %14, ptr noundef %15, ptr noundef %16) #0 {
  %18 = alloca ptr, align 8
  %19 = alloca ptr, align 8
  %20 = alloca ptr, align 8
  %21 = alloca ptr, align 8
  %22 = alloca ptr, align 8
  %23 = alloca ptr, align 8
  %24 = alloca ptr, align 8
  %25 = alloca ptr, align 8
  %26 = alloca ptr, align 8
  %27 = alloca ptr, align 8
  %28 = alloca ptr, align 8
  %29 = alloca ptr, align 8
  %30 = alloca ptr, align 8
  %31 = alloca ptr, align 8
  %32 = alloca ptr, align 8
  %33 = alloca ptr, align 8
  %34 = alloca ptr, align 8
  %35 = alloca i32, align 4
  %36 = alloca i32, align 4
  %37 = alloca i32, align 4
  %38 = alloca i32, align 4
  %39 = alloca double, align 8
  %40 = alloca double, align 8
  %41 = alloca double, align 8
  %42 = alloca double, align 8
  %43 = alloca i32, align 4
  %44 = alloca i32, align 4
  %45 = alloca [4 x i32], align 16
  %46 = alloca double, align 8
  %47 = alloca i32, align 4
  %48 = alloca i32, align 4
  %49 = alloca double, align 8
  %50 = alloca double, align 8
  %51 = alloca i32, align 4
  %52 = alloca i32, align 4
  %53 = alloca i32, align 4
  %54 = alloca i32, align 4
  %55 = alloca i32, align 4
  %56 = alloca i32, align 4
  %57 = alloca i32, align 4
  %58 = alloca i32, align 4
  %59 = alloca i32, align 4
  %60 = alloca double, align 8
  %61 = alloca double, align 8
  %62 = alloca double, align 8
  %63 = alloca [4 x i32], align 16
  %64 = alloca i32, align 4
  store ptr %0, ptr %18, align 8, !tbaa !5
  store ptr %1, ptr %19, align 8, !tbaa !5
  store ptr %2, ptr %20, align 8, !tbaa !5
  store ptr %3, ptr %21, align 8, !tbaa !5
  store ptr %4, ptr %22, align 8, !tbaa !5
  store ptr %5, ptr %23, align 8, !tbaa !5
  store ptr %6, ptr %24, align 8, !tbaa !5
  store ptr %7, ptr %25, align 8, !tbaa !5
  store ptr %8, ptr %26, align 8, !tbaa !5
  store ptr %9, ptr %27, align 8, !tbaa !5
  store ptr %10, ptr %28, align 8, !tbaa !5
  store ptr %11, ptr %29, align 8, !tbaa !5
  store ptr %12, ptr %30, align 8, !tbaa !5
  store ptr %13, ptr %31, align 8, !tbaa !5
  store ptr %14, ptr %32, align 8, !tbaa !5
  store ptr %15, ptr %33, align 8, !tbaa !5
  store ptr %16, ptr %34, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %35) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %36) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %37) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %38) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %43) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %44) #5
  call void @llvm.lifetime.start.p0(i64 16, ptr %45) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %47) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %48) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %49) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %50) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %51) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %52) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %53) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %54) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %55) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %56) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %57) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %58) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %59) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %60) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %61) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %62) #5
  call void @llvm.lifetime.start.p0(i64 16, ptr %63) #5
  %65 = load ptr, ptr %21, align 8, !tbaa !5
  %66 = getelementptr inbounds double, ptr %65, i32 -1
  store ptr %66, ptr %21, align 8, !tbaa !5
  %67 = load ptr, ptr %23, align 8, !tbaa !5
  %68 = load i32, ptr %67, align 4, !tbaa !9
  store i32 %68, ptr %35, align 4, !tbaa !9
  %69 = load i32, ptr %35, align 4, !tbaa !9
  %70 = mul nsw i32 %69, 1
  %71 = add nsw i32 1, %70
  store i32 %71, ptr %36, align 4, !tbaa !9
  %72 = load i32, ptr %36, align 4, !tbaa !9
  %73 = load ptr, ptr %22, align 8, !tbaa !5
  %74 = sext i32 %72 to i64
  %75 = sub i64 0, %74
  %76 = getelementptr inbounds double, ptr %73, i64 %75
  store ptr %76, ptr %22, align 8, !tbaa !5
  %77 = load ptr, ptr %24, align 8, !tbaa !5
  %78 = getelementptr inbounds i32, ptr %77, i32 -1
  store ptr %78, ptr %24, align 8, !tbaa !5
  %79 = load ptr, ptr %26, align 8, !tbaa !5
  %80 = getelementptr inbounds double, ptr %79, i32 -1
  store ptr %80, ptr %26, align 8, !tbaa !5
  %81 = load ptr, ptr %27, align 8, !tbaa !5
  %82 = getelementptr inbounds double, ptr %81, i32 -1
  store ptr %82, ptr %27, align 8, !tbaa !5
  %83 = load ptr, ptr %28, align 8, !tbaa !5
  %84 = getelementptr inbounds double, ptr %83, i32 -1
  store ptr %84, ptr %28, align 8, !tbaa !5
  %85 = load ptr, ptr %29, align 8, !tbaa !5
  %86 = getelementptr inbounds double, ptr %85, i32 -1
  store ptr %86, ptr %29, align 8, !tbaa !5
  %87 = load ptr, ptr %30, align 8, !tbaa !5
  %88 = getelementptr inbounds i32, ptr %87, i32 -1
  store ptr %88, ptr %30, align 8, !tbaa !5
  %89 = load ptr, ptr %31, align 8, !tbaa !5
  %90 = getelementptr inbounds i32, ptr %89, i32 -1
  store ptr %90, ptr %31, align 8, !tbaa !5
  %91 = load ptr, ptr %32, align 8, !tbaa !5
  %92 = getelementptr inbounds i32, ptr %91, i32 -1
  store ptr %92, ptr %32, align 8, !tbaa !5
  %93 = load ptr, ptr %33, align 8, !tbaa !5
  %94 = getelementptr inbounds i32, ptr %93, i32 -1
  store ptr %94, ptr %33, align 8, !tbaa !5
  %95 = load ptr, ptr %34, align 8, !tbaa !5
  store i32 0, ptr %95, align 4, !tbaa !9
  %96 = load ptr, ptr %19, align 8, !tbaa !5
  %97 = load i32, ptr %96, align 4, !tbaa !9
  %98 = icmp slt i32 %97, 0
  br i1 %98, label %99, label %101

99:                                               ; preds = %17
  %100 = load ptr, ptr %34, align 8, !tbaa !5
  store i32 -2, ptr %100, align 4, !tbaa !9
  br label %143

101:                                              ; preds = %17
  %102 = load ptr, ptr %23, align 8, !tbaa !5
  %103 = load i32, ptr %102, align 4, !tbaa !9
  %104 = load ptr, ptr %19, align 8, !tbaa !5
  %105 = load i32, ptr %104, align 4, !tbaa !9
  %106 = icmp sge i32 1, %105
  br i1 %106, label %107, label %108

107:                                              ; preds = %101
  br label %111

108:                                              ; preds = %101
  %109 = load ptr, ptr %19, align 8, !tbaa !5
  %110 = load i32, ptr %109, align 4, !tbaa !9
  br label %111

111:                                              ; preds = %108, %107
  %112 = phi i32 [ 1, %107 ], [ %110, %108 ]
  %113 = icmp slt i32 %103, %112
  br i1 %113, label %114, label %116

114:                                              ; preds = %111
  %115 = load ptr, ptr %34, align 8, !tbaa !5
  store i32 -6, ptr %115, align 4, !tbaa !9
  br label %142

116:                                              ; preds = %111
  store i32 1, ptr %37, align 4, !tbaa !9
  %117 = load ptr, ptr %19, align 8, !tbaa !5
  %118 = load i32, ptr %117, align 4, !tbaa !9
  %119 = sdiv i32 %118, 2
  store i32 %119, ptr %38, align 4, !tbaa !9
  %120 = load i32, ptr %37, align 4, !tbaa !9
  %121 = load i32, ptr %38, align 4, !tbaa !9
  %122 = icmp sle i32 %120, %121
  br i1 %122, label %123, label %125

123:                                              ; preds = %116
  %124 = load i32, ptr %37, align 4, !tbaa !9
  br label %127

125:                                              ; preds = %116
  %126 = load i32, ptr %38, align 4, !tbaa !9
  br label %127

127:                                              ; preds = %125, %123
  %128 = phi i32 [ %124, %123 ], [ %126, %125 ]
  %129 = load ptr, ptr %20, align 8, !tbaa !5
  %130 = load i32, ptr %129, align 4, !tbaa !9
  %131 = icmp sgt i32 %128, %130
  br i1 %131, label %139, label %132

132:                                              ; preds = %127
  %133 = load ptr, ptr %19, align 8, !tbaa !5
  %134 = load i32, ptr %133, align 4, !tbaa !9
  %135 = sdiv i32 %134, 2
  %136 = load ptr, ptr %20, align 8, !tbaa !5
  %137 = load i32, ptr %136, align 4, !tbaa !9
  %138 = icmp slt i32 %135, %137
  br i1 %138, label %139, label %141

139:                                              ; preds = %132, %127
  %140 = load ptr, ptr %34, align 8, !tbaa !5
  store i32 -3, ptr %140, align 4, !tbaa !9
  br label %141

141:                                              ; preds = %139, %132
  br label %142

142:                                              ; preds = %141, %114
  br label %143

143:                                              ; preds = %142, %99
  %144 = load ptr, ptr %34, align 8, !tbaa !5
  %145 = load i32, ptr %144, align 4, !tbaa !9
  %146 = icmp ne i32 %145, 0
  br i1 %146, label %147, label %152

147:                                              ; preds = %143
  %148 = load ptr, ptr %34, align 8, !tbaa !5
  %149 = load i32, ptr %148, align 4, !tbaa !9
  %150 = sub nsw i32 0, %149
  store i32 %150, ptr %37, align 4, !tbaa !9
  %151 = call i32 @xerbla_(ptr noundef @.str, ptr noundef %37, i32 noundef 6)
  store i32 1, ptr %64, align 4
  br label %1166

152:                                              ; preds = %143
  %153 = load ptr, ptr %19, align 8, !tbaa !5
  %154 = load i32, ptr %153, align 4, !tbaa !9
  %155 = icmp eq i32 %154, 0
  br i1 %155, label %156, label %157

156:                                              ; preds = %152
  store i32 1, ptr %64, align 4
  br label %1166

157:                                              ; preds = %152
  %158 = load ptr, ptr %19, align 8, !tbaa !5
  %159 = load i32, ptr %158, align 4, !tbaa !9
  %160 = load ptr, ptr %20, align 8, !tbaa !5
  %161 = load i32, ptr %160, align 4, !tbaa !9
  %162 = sub nsw i32 %159, %161
  store i32 %162, ptr %52, align 4, !tbaa !9
  %163 = load ptr, ptr %20, align 8, !tbaa !5
  %164 = load i32, ptr %163, align 4, !tbaa !9
  %165 = add nsw i32 %164, 1
  store i32 %165, ptr %59, align 4, !tbaa !9
  %166 = load ptr, ptr %25, align 8, !tbaa !5
  %167 = load double, ptr %166, align 8, !tbaa !11
  %168 = fcmp olt double %167, 0.000000e+00
  br i1 %168, label %169, label %174

169:                                              ; preds = %157
  %170 = load ptr, ptr %26, align 8, !tbaa !5
  %171 = load i32, ptr %59, align 4, !tbaa !9
  %172 = sext i32 %171 to i64
  %173 = getelementptr inbounds double, ptr %170, i64 %172
  call void @dscal_(ptr noundef %52, ptr noundef @c_b3, ptr noundef %173, ptr noundef @c__1)
  br label %174

174:                                              ; preds = %169, %157
  %175 = call double @sqrt(double noundef 2.000000e+00) #5
  %176 = fdiv double 1.000000e+00, %175
  store double %176, ptr %50, align 8, !tbaa !11
  %177 = load ptr, ptr %19, align 8, !tbaa !5
  %178 = load ptr, ptr %26, align 8, !tbaa !5
  %179 = getelementptr inbounds double, ptr %178, i64 1
  call void @dscal_(ptr noundef %177, ptr noundef %50, ptr noundef %179, ptr noundef @c__1)
  %180 = load ptr, ptr %25, align 8, !tbaa !5
  %181 = load double, ptr %180, align 8, !tbaa !11
  %182 = fmul double %181, 2.000000e+00
  store double %182, ptr %39, align 8, !tbaa !11
  %183 = load double, ptr %39, align 8, !tbaa !11
  %184 = fcmp oge double %183, 0.000000e+00
  br i1 %184, label %185, label %187

185:                                              ; preds = %174
  %186 = load double, ptr %39, align 8, !tbaa !11
  br label %190

187:                                              ; preds = %174
  %188 = load double, ptr %39, align 8, !tbaa !11
  %189 = fneg double %188
  br label %190

190:                                              ; preds = %187, %185
  %191 = phi double [ %186, %185 ], [ %189, %187 ]
  %192 = load ptr, ptr %25, align 8, !tbaa !5
  store double %191, ptr %192, align 8, !tbaa !11
  %193 = load ptr, ptr %19, align 8, !tbaa !5
  %194 = load i32, ptr %193, align 4, !tbaa !9
  store i32 %194, ptr %37, align 4, !tbaa !9
  %195 = load i32, ptr %59, align 4, !tbaa !9
  store i32 %195, ptr %47, align 4, !tbaa !9
  br label %196

196:                                              ; preds = %209, %190
  %197 = load i32, ptr %47, align 4, !tbaa !9
  %198 = load i32, ptr %37, align 4, !tbaa !9
  %199 = icmp sle i32 %197, %198
  br i1 %199, label %200, label %212

200:                                              ; preds = %196
  %201 = load ptr, ptr %20, align 8, !tbaa !5
  %202 = load i32, ptr %201, align 4, !tbaa !9
  %203 = load ptr, ptr %24, align 8, !tbaa !5
  %204 = load i32, ptr %47, align 4, !tbaa !9
  %205 = sext i32 %204 to i64
  %206 = getelementptr inbounds i32, ptr %203, i64 %205
  %207 = load i32, ptr %206, align 4, !tbaa !9
  %208 = add nsw i32 %207, %202
  store i32 %208, ptr %206, align 4, !tbaa !9
  br label %209

209:                                              ; preds = %200
  %210 = load i32, ptr %47, align 4, !tbaa !9
  %211 = add nsw i32 %210, 1
  store i32 %211, ptr %47, align 4, !tbaa !9
  br label %196, !llvm.loop !13

212:                                              ; preds = %196
  %213 = load ptr, ptr %19, align 8, !tbaa !5
  %214 = load i32, ptr %213, align 4, !tbaa !9
  store i32 %214, ptr %37, align 4, !tbaa !9
  store i32 1, ptr %47, align 4, !tbaa !9
  br label %215

215:                                              ; preds = %233, %212
  %216 = load i32, ptr %47, align 4, !tbaa !9
  %217 = load i32, ptr %37, align 4, !tbaa !9
  %218 = icmp sle i32 %216, %217
  br i1 %218, label %219, label %236

219:                                              ; preds = %215
  %220 = load ptr, ptr %21, align 8, !tbaa !5
  %221 = load ptr, ptr %24, align 8, !tbaa !5
  %222 = load i32, ptr %47, align 4, !tbaa !9
  %223 = sext i32 %222 to i64
  %224 = getelementptr inbounds i32, ptr %221, i64 %223
  %225 = load i32, ptr %224, align 4, !tbaa !9
  %226 = sext i32 %225 to i64
  %227 = getelementptr inbounds double, ptr %220, i64 %226
  %228 = load double, ptr %227, align 8, !tbaa !11
  %229 = load ptr, ptr %27, align 8, !tbaa !5
  %230 = load i32, ptr %47, align 4, !tbaa !9
  %231 = sext i32 %230 to i64
  %232 = getelementptr inbounds double, ptr %229, i64 %231
  store double %228, ptr %232, align 8, !tbaa !11
  br label %233

233:                                              ; preds = %219
  %234 = load i32, ptr %47, align 4, !tbaa !9
  %235 = add nsw i32 %234, 1
  store i32 %235, ptr %47, align 4, !tbaa !9
  br label %215, !llvm.loop !15

236:                                              ; preds = %215
  %237 = load ptr, ptr %20, align 8, !tbaa !5
  %238 = load ptr, ptr %27, align 8, !tbaa !5
  %239 = getelementptr inbounds double, ptr %238, i64 1
  %240 = load ptr, ptr %31, align 8, !tbaa !5
  %241 = getelementptr inbounds i32, ptr %240, i64 1
  call void @dlamrg_(ptr noundef %237, ptr noundef %52, ptr noundef %239, ptr noundef @c__1, ptr noundef @c__1, ptr noundef %241)
  %242 = load ptr, ptr %19, align 8, !tbaa !5
  %243 = load i32, ptr %242, align 4, !tbaa !9
  store i32 %243, ptr %37, align 4, !tbaa !9
  store i32 1, ptr %47, align 4, !tbaa !9
  br label %244

244:                                              ; preds = %262, %236
  %245 = load i32, ptr %47, align 4, !tbaa !9
  %246 = load i32, ptr %37, align 4, !tbaa !9
  %247 = icmp sle i32 %245, %246
  br i1 %247, label %248, label %265

248:                                              ; preds = %244
  %249 = load ptr, ptr %24, align 8, !tbaa !5
  %250 = load ptr, ptr %31, align 8, !tbaa !5
  %251 = load i32, ptr %47, align 4, !tbaa !9
  %252 = sext i32 %251 to i64
  %253 = getelementptr inbounds i32, ptr %250, i64 %252
  %254 = load i32, ptr %253, align 4, !tbaa !9
  %255 = sext i32 %254 to i64
  %256 = getelementptr inbounds i32, ptr %249, i64 %255
  %257 = load i32, ptr %256, align 4, !tbaa !9
  %258 = load ptr, ptr %30, align 8, !tbaa !5
  %259 = load i32, ptr %47, align 4, !tbaa !9
  %260 = sext i32 %259 to i64
  %261 = getelementptr inbounds i32, ptr %258, i64 %260
  store i32 %257, ptr %261, align 4, !tbaa !9
  br label %262

262:                                              ; preds = %248
  %263 = load i32, ptr %47, align 4, !tbaa !9
  %264 = add nsw i32 %263, 1
  store i32 %264, ptr %47, align 4, !tbaa !9
  br label %244, !llvm.loop !16

265:                                              ; preds = %244
  %266 = load ptr, ptr %19, align 8, !tbaa !5
  %267 = load ptr, ptr %26, align 8, !tbaa !5
  %268 = getelementptr inbounds double, ptr %267, i64 1
  %269 = call i32 @idamax_(ptr noundef %266, ptr noundef %268, ptr noundef @c__1)
  store i32 %269, ptr %43, align 4, !tbaa !9
  %270 = load ptr, ptr %19, align 8, !tbaa !5
  %271 = load ptr, ptr %21, align 8, !tbaa !5
  %272 = getelementptr inbounds double, ptr %271, i64 1
  %273 = call i32 @idamax_(ptr noundef %270, ptr noundef %272, ptr noundef @c__1)
  store i32 %273, ptr %44, align 4, !tbaa !9
  %274 = call double @dlamch_(ptr noundef @.str.1)
  store double %274, ptr %60, align 8, !tbaa !11
  %275 = load ptr, ptr %21, align 8, !tbaa !5
  %276 = load i32, ptr %44, align 4, !tbaa !9
  %277 = sext i32 %276 to i64
  %278 = getelementptr inbounds double, ptr %275, i64 %277
  %279 = load double, ptr %278, align 8, !tbaa !11
  store double %279, ptr %39, align 8, !tbaa !11
  %280 = load double, ptr %39, align 8, !tbaa !11
  %281 = fcmp oge double %280, 0.000000e+00
  br i1 %281, label %282, label %284

282:                                              ; preds = %265
  %283 = load double, ptr %39, align 8, !tbaa !11
  br label %287

284:                                              ; preds = %265
  %285 = load double, ptr %39, align 8, !tbaa !11
  %286 = fneg double %285
  br label %287

287:                                              ; preds = %284, %282
  %288 = phi double [ %283, %282 ], [ %286, %284 ]
  store double %288, ptr %41, align 8, !tbaa !11
  %289 = load ptr, ptr %26, align 8, !tbaa !5
  %290 = load i32, ptr %43, align 4, !tbaa !9
  %291 = sext i32 %290 to i64
  %292 = getelementptr inbounds double, ptr %289, i64 %291
  %293 = load double, ptr %292, align 8, !tbaa !11
  store double %293, ptr %40, align 8, !tbaa !11
  %294 = load double, ptr %40, align 8, !tbaa !11
  %295 = fcmp oge double %294, 0.000000e+00
  br i1 %295, label %296, label %298

296:                                              ; preds = %287
  %297 = load double, ptr %40, align 8, !tbaa !11
  br label %301

298:                                              ; preds = %287
  %299 = load double, ptr %40, align 8, !tbaa !11
  %300 = fneg double %299
  br label %301

301:                                              ; preds = %298, %296
  %302 = phi double [ %297, %296 ], [ %300, %298 ]
  store double %302, ptr %42, align 8, !tbaa !11
  %303 = load double, ptr %60, align 8, !tbaa !11
  %304 = fmul double %303, 8.000000e+00
  %305 = load double, ptr %41, align 8, !tbaa !11
  %306 = load double, ptr %42, align 8, !tbaa !11
  %307 = fcmp oge double %305, %306
  br i1 %307, label %308, label %310

308:                                              ; preds = %301
  %309 = load double, ptr %41, align 8, !tbaa !11
  br label %312

310:                                              ; preds = %301
  %311 = load double, ptr %42, align 8, !tbaa !11
  br label %312

312:                                              ; preds = %310, %308
  %313 = phi double [ %309, %308 ], [ %311, %310 ]
  %314 = fmul double %304, %313
  store double %314, ptr %62, align 8, !tbaa !11
  %315 = load ptr, ptr %25, align 8, !tbaa !5
  %316 = load double, ptr %315, align 8, !tbaa !11
  %317 = load ptr, ptr %26, align 8, !tbaa !5
  %318 = load i32, ptr %43, align 4, !tbaa !9
  %319 = sext i32 %318 to i64
  %320 = getelementptr inbounds double, ptr %317, i64 %319
  %321 = load double, ptr %320, align 8, !tbaa !11
  store double %321, ptr %39, align 8, !tbaa !11
  %322 = load double, ptr %39, align 8, !tbaa !11
  %323 = fcmp oge double %322, 0.000000e+00
  br i1 %323, label %324, label %326

324:                                              ; preds = %312
  %325 = load double, ptr %39, align 8, !tbaa !11
  br label %329

326:                                              ; preds = %312
  %327 = load double, ptr %39, align 8, !tbaa !11
  %328 = fneg double %327
  br label %329

329:                                              ; preds = %326, %324
  %330 = phi double [ %325, %324 ], [ %328, %326 ]
  %331 = fmul double %316, %330
  %332 = load double, ptr %62, align 8, !tbaa !11
  %333 = fcmp ole double %331, %332
  br i1 %333, label %334, label %392

334:                                              ; preds = %329
  %335 = load ptr, ptr %18, align 8, !tbaa !5
  store i32 0, ptr %335, align 4, !tbaa !9
  store i32 1, ptr %58, align 4, !tbaa !9
  %336 = load ptr, ptr %19, align 8, !tbaa !5
  %337 = load i32, ptr %336, align 4, !tbaa !9
  store i32 %337, ptr %37, align 4, !tbaa !9
  store i32 1, ptr %48, align 4, !tbaa !9
  br label %338

338:                                              ; preds = %373, %334
  %339 = load i32, ptr %48, align 4, !tbaa !9
  %340 = load i32, ptr %37, align 4, !tbaa !9
  %341 = icmp sle i32 %339, %340
  br i1 %341, label %342, label %376

342:                                              ; preds = %338
  %343 = load ptr, ptr %30, align 8, !tbaa !5
  %344 = load i32, ptr %48, align 4, !tbaa !9
  %345 = sext i32 %344 to i64
  %346 = getelementptr inbounds i32, ptr %343, i64 %345
  %347 = load i32, ptr %346, align 4, !tbaa !9
  store i32 %347, ptr %47, align 4, !tbaa !9
  %348 = load ptr, ptr %19, align 8, !tbaa !5
  %349 = load ptr, ptr %22, align 8, !tbaa !5
  %350 = load i32, ptr %47, align 4, !tbaa !9
  %351 = load i32, ptr %35, align 4, !tbaa !9
  %352 = mul nsw i32 %350, %351
  %353 = add nsw i32 %352, 1
  %354 = sext i32 %353 to i64
  %355 = getelementptr inbounds double, ptr %349, i64 %354
  %356 = load ptr, ptr %29, align 8, !tbaa !5
  %357 = load i32, ptr %58, align 4, !tbaa !9
  %358 = sext i32 %357 to i64
  %359 = getelementptr inbounds double, ptr %356, i64 %358
  call void @dcopy_(ptr noundef %348, ptr noundef %355, ptr noundef @c__1, ptr noundef %359, ptr noundef @c__1)
  %360 = load ptr, ptr %21, align 8, !tbaa !5
  %361 = load i32, ptr %47, align 4, !tbaa !9
  %362 = sext i32 %361 to i64
  %363 = getelementptr inbounds double, ptr %360, i64 %362
  %364 = load double, ptr %363, align 8, !tbaa !11
  %365 = load ptr, ptr %27, align 8, !tbaa !5
  %366 = load i32, ptr %48, align 4, !tbaa !9
  %367 = sext i32 %366 to i64
  %368 = getelementptr inbounds double, ptr %365, i64 %367
  store double %364, ptr %368, align 8, !tbaa !11
  %369 = load ptr, ptr %19, align 8, !tbaa !5
  %370 = load i32, ptr %369, align 4, !tbaa !9
  %371 = load i32, ptr %58, align 4, !tbaa !9
  %372 = add nsw i32 %371, %370
  store i32 %372, ptr %58, align 4, !tbaa !9
  br label %373

373:                                              ; preds = %342
  %374 = load i32, ptr %48, align 4, !tbaa !9
  %375 = add nsw i32 %374, 1
  store i32 %375, ptr %48, align 4, !tbaa !9
  br label %338, !llvm.loop !17

376:                                              ; preds = %338
  %377 = load ptr, ptr %19, align 8, !tbaa !5
  %378 = load ptr, ptr %19, align 8, !tbaa !5
  %379 = load ptr, ptr %29, align 8, !tbaa !5
  %380 = getelementptr inbounds double, ptr %379, i64 1
  %381 = load ptr, ptr %19, align 8, !tbaa !5
  %382 = load ptr, ptr %22, align 8, !tbaa !5
  %383 = load i32, ptr %36, align 4, !tbaa !9
  %384 = sext i32 %383 to i64
  %385 = getelementptr inbounds double, ptr %382, i64 %384
  %386 = load ptr, ptr %23, align 8, !tbaa !5
  call void @dlacpy_(ptr noundef @.str.2, ptr noundef %377, ptr noundef %378, ptr noundef %380, ptr noundef %381, ptr noundef %385, ptr noundef %386)
  %387 = load ptr, ptr %19, align 8, !tbaa !5
  %388 = load ptr, ptr %27, align 8, !tbaa !5
  %389 = getelementptr inbounds double, ptr %388, i64 1
  %390 = load ptr, ptr %21, align 8, !tbaa !5
  %391 = getelementptr inbounds double, ptr %390, i64 1
  call void @dcopy_(ptr noundef %387, ptr noundef %389, ptr noundef @c__1, ptr noundef %391, ptr noundef @c__1)
  br label %1165

392:                                              ; preds = %329
  %393 = load ptr, ptr %20, align 8, !tbaa !5
  %394 = load i32, ptr %393, align 4, !tbaa !9
  store i32 %394, ptr %37, align 4, !tbaa !9
  store i32 1, ptr %47, align 4, !tbaa !9
  br label %395

395:                                              ; preds = %404, %392
  %396 = load i32, ptr %47, align 4, !tbaa !9
  %397 = load i32, ptr %37, align 4, !tbaa !9
  %398 = icmp sle i32 %396, %397
  br i1 %398, label %399, label %407

399:                                              ; preds = %395
  %400 = load ptr, ptr %33, align 8, !tbaa !5
  %401 = load i32, ptr %47, align 4, !tbaa !9
  %402 = sext i32 %401 to i64
  %403 = getelementptr inbounds i32, ptr %400, i64 %402
  store i32 1, ptr %403, align 4, !tbaa !9
  br label %404

404:                                              ; preds = %399
  %405 = load i32, ptr %47, align 4, !tbaa !9
  %406 = add nsw i32 %405, 1
  store i32 %406, ptr %47, align 4, !tbaa !9
  br label %395, !llvm.loop !18

407:                                              ; preds = %395
  %408 = load ptr, ptr %19, align 8, !tbaa !5
  %409 = load i32, ptr %408, align 4, !tbaa !9
  store i32 %409, ptr %37, align 4, !tbaa !9
  %410 = load i32, ptr %59, align 4, !tbaa !9
  store i32 %410, ptr %47, align 4, !tbaa !9
  br label %411

411:                                              ; preds = %420, %407
  %412 = load i32, ptr %47, align 4, !tbaa !9
  %413 = load i32, ptr %37, align 4, !tbaa !9
  %414 = icmp sle i32 %412, %413
  br i1 %414, label %415, label %423

415:                                              ; preds = %411
  %416 = load ptr, ptr %33, align 8, !tbaa !5
  %417 = load i32, ptr %47, align 4, !tbaa !9
  %418 = sext i32 %417 to i64
  %419 = getelementptr inbounds i32, ptr %416, i64 %418
  store i32 3, ptr %419, align 4, !tbaa !9
  br label %420

420:                                              ; preds = %415
  %421 = load i32, ptr %47, align 4, !tbaa !9
  %422 = add nsw i32 %421, 1
  store i32 %422, ptr %47, align 4, !tbaa !9
  br label %411, !llvm.loop !19

423:                                              ; preds = %411
  %424 = load ptr, ptr %18, align 8, !tbaa !5
  store i32 0, ptr %424, align 4, !tbaa !9
  %425 = load ptr, ptr %19, align 8, !tbaa !5
  %426 = load i32, ptr %425, align 4, !tbaa !9
  %427 = add nsw i32 %426, 1
  store i32 %427, ptr %51, align 4, !tbaa !9
  %428 = load ptr, ptr %19, align 8, !tbaa !5
  %429 = load i32, ptr %428, align 4, !tbaa !9
  store i32 %429, ptr %37, align 4, !tbaa !9
  store i32 1, ptr %48, align 4, !tbaa !9
  br label %430

430:                                              ; preds = %480, %423
  %431 = load i32, ptr %48, align 4, !tbaa !9
  %432 = load i32, ptr %37, align 4, !tbaa !9
  %433 = icmp sle i32 %431, %432
  br i1 %433, label %434, label %483

434:                                              ; preds = %430
  %435 = load ptr, ptr %30, align 8, !tbaa !5
  %436 = load i32, ptr %48, align 4, !tbaa !9
  %437 = sext i32 %436 to i64
  %438 = getelementptr inbounds i32, ptr %435, i64 %437
  %439 = load i32, ptr %438, align 4, !tbaa !9
  store i32 %439, ptr %54, align 4, !tbaa !9
  %440 = load ptr, ptr %25, align 8, !tbaa !5
  %441 = load double, ptr %440, align 8, !tbaa !11
  %442 = load ptr, ptr %26, align 8, !tbaa !5
  %443 = load i32, ptr %54, align 4, !tbaa !9
  %444 = sext i32 %443 to i64
  %445 = getelementptr inbounds double, ptr %442, i64 %444
  %446 = load double, ptr %445, align 8, !tbaa !11
  store double %446, ptr %39, align 8, !tbaa !11
  %447 = load double, ptr %39, align 8, !tbaa !11
  %448 = fcmp oge double %447, 0.000000e+00
  br i1 %448, label %449, label %451

449:                                              ; preds = %434
  %450 = load double, ptr %39, align 8, !tbaa !11
  br label %454

451:                                              ; preds = %434
  %452 = load double, ptr %39, align 8, !tbaa !11
  %453 = fneg double %452
  br label %454

454:                                              ; preds = %451, %449
  %455 = phi double [ %450, %449 ], [ %453, %451 ]
  %456 = fmul double %441, %455
  %457 = load double, ptr %62, align 8, !tbaa !11
  %458 = fcmp ole double %456, %457
  br i1 %458, label %459, label %477

459:                                              ; preds = %454
  %460 = load i32, ptr %51, align 4, !tbaa !9
  %461 = add nsw i32 %460, -1
  store i32 %461, ptr %51, align 4, !tbaa !9
  %462 = load ptr, ptr %33, align 8, !tbaa !5
  %463 = load i32, ptr %54, align 4, !tbaa !9
  %464 = sext i32 %463 to i64
  %465 = getelementptr inbounds i32, ptr %462, i64 %464
  store i32 4, ptr %465, align 4, !tbaa !9
  %466 = load i32, ptr %54, align 4, !tbaa !9
  %467 = load ptr, ptr %32, align 8, !tbaa !5
  %468 = load i32, ptr %51, align 4, !tbaa !9
  %469 = sext i32 %468 to i64
  %470 = getelementptr inbounds i32, ptr %467, i64 %469
  store i32 %466, ptr %470, align 4, !tbaa !9
  %471 = load i32, ptr %48, align 4, !tbaa !9
  %472 = load ptr, ptr %19, align 8, !tbaa !5
  %473 = load i32, ptr %472, align 4, !tbaa !9
  %474 = icmp eq i32 %471, %473
  br i1 %474, label %475, label %476

475:                                              ; preds = %459
  br label %775

476:                                              ; preds = %459
  br label %479

477:                                              ; preds = %454
  %478 = load i32, ptr %54, align 4, !tbaa !9
  store i32 %478, ptr %55, align 4, !tbaa !9
  br label %484

479:                                              ; preds = %476
  br label %480

480:                                              ; preds = %479
  %481 = load i32, ptr %48, align 4, !tbaa !9
  %482 = add nsw i32 %481, 1
  store i32 %482, ptr %48, align 4, !tbaa !9
  br label %430, !llvm.loop !20

483:                                              ; preds = %430
  br label %484

484:                                              ; preds = %774, %483, %477
  %485 = load i32, ptr %48, align 4, !tbaa !9
  %486 = add nsw i32 %485, 1
  store i32 %486, ptr %48, align 4, !tbaa !9
  %487 = load ptr, ptr %30, align 8, !tbaa !5
  %488 = load i32, ptr %48, align 4, !tbaa !9
  %489 = sext i32 %488 to i64
  %490 = getelementptr inbounds i32, ptr %487, i64 %489
  %491 = load i32, ptr %490, align 4, !tbaa !9
  store i32 %491, ptr %54, align 4, !tbaa !9
  %492 = load i32, ptr %48, align 4, !tbaa !9
  %493 = load ptr, ptr %19, align 8, !tbaa !5
  %494 = load i32, ptr %493, align 4, !tbaa !9
  %495 = icmp sgt i32 %492, %494
  br i1 %495, label %496, label %497

496:                                              ; preds = %484
  br label %775

497:                                              ; preds = %484
  %498 = load ptr, ptr %25, align 8, !tbaa !5
  %499 = load double, ptr %498, align 8, !tbaa !11
  %500 = load ptr, ptr %26, align 8, !tbaa !5
  %501 = load i32, ptr %54, align 4, !tbaa !9
  %502 = sext i32 %501 to i64
  %503 = getelementptr inbounds double, ptr %500, i64 %502
  %504 = load double, ptr %503, align 8, !tbaa !11
  store double %504, ptr %39, align 8, !tbaa !11
  %505 = load double, ptr %39, align 8, !tbaa !11
  %506 = fcmp oge double %505, 0.000000e+00
  br i1 %506, label %507, label %509

507:                                              ; preds = %497
  %508 = load double, ptr %39, align 8, !tbaa !11
  br label %512

509:                                              ; preds = %497
  %510 = load double, ptr %39, align 8, !tbaa !11
  %511 = fneg double %510
  br label %512

512:                                              ; preds = %509, %507
  %513 = phi double [ %508, %507 ], [ %511, %509 ]
  %514 = fmul double %499, %513
  %515 = load double, ptr %62, align 8, !tbaa !11
  %516 = fcmp ole double %514, %515
  br i1 %516, label %517, label %529

517:                                              ; preds = %512
  %518 = load i32, ptr %51, align 4, !tbaa !9
  %519 = add nsw i32 %518, -1
  store i32 %519, ptr %51, align 4, !tbaa !9
  %520 = load ptr, ptr %33, align 8, !tbaa !5
  %521 = load i32, ptr %54, align 4, !tbaa !9
  %522 = sext i32 %521 to i64
  %523 = getelementptr inbounds i32, ptr %520, i64 %522
  store i32 4, ptr %523, align 4, !tbaa !9
  %524 = load i32, ptr %54, align 4, !tbaa !9
  %525 = load ptr, ptr %32, align 8, !tbaa !5
  %526 = load i32, ptr %51, align 4, !tbaa !9
  %527 = sext i32 %526 to i64
  %528 = getelementptr inbounds i32, ptr %525, i64 %527
  store i32 %524, ptr %528, align 4, !tbaa !9
  br label %774

529:                                              ; preds = %512
  %530 = load ptr, ptr %26, align 8, !tbaa !5
  %531 = load i32, ptr %55, align 4, !tbaa !9
  %532 = sext i32 %531 to i64
  %533 = getelementptr inbounds double, ptr %530, i64 %532
  %534 = load double, ptr %533, align 8, !tbaa !11
  store double %534, ptr %49, align 8, !tbaa !11
  %535 = load ptr, ptr %26, align 8, !tbaa !5
  %536 = load i32, ptr %54, align 4, !tbaa !9
  %537 = sext i32 %536 to i64
  %538 = getelementptr inbounds double, ptr %535, i64 %537
  %539 = load double, ptr %538, align 8, !tbaa !11
  store double %539, ptr %46, align 8, !tbaa !11
  %540 = call double @dlapy2_(ptr noundef %46, ptr noundef %49)
  store double %540, ptr %61, align 8, !tbaa !11
  %541 = load ptr, ptr %21, align 8, !tbaa !5
  %542 = load i32, ptr %54, align 4, !tbaa !9
  %543 = sext i32 %542 to i64
  %544 = getelementptr inbounds double, ptr %541, i64 %543
  %545 = load double, ptr %544, align 8, !tbaa !11
  %546 = load ptr, ptr %21, align 8, !tbaa !5
  %547 = load i32, ptr %55, align 4, !tbaa !9
  %548 = sext i32 %547 to i64
  %549 = getelementptr inbounds double, ptr %546, i64 %548
  %550 = load double, ptr %549, align 8, !tbaa !11
  %551 = fsub double %545, %550
  store double %551, ptr %50, align 8, !tbaa !11
  %552 = load double, ptr %61, align 8, !tbaa !11
  %553 = load double, ptr %46, align 8, !tbaa !11
  %554 = fdiv double %553, %552
  store double %554, ptr %46, align 8, !tbaa !11
  %555 = load double, ptr %49, align 8, !tbaa !11
  %556 = fneg double %555
  %557 = load double, ptr %61, align 8, !tbaa !11
  %558 = fdiv double %556, %557
  store double %558, ptr %49, align 8, !tbaa !11
  %559 = load double, ptr %50, align 8, !tbaa !11
  %560 = load double, ptr %46, align 8, !tbaa !11
  %561 = fmul double %559, %560
  %562 = load double, ptr %49, align 8, !tbaa !11
  %563 = fmul double %561, %562
  store double %563, ptr %39, align 8, !tbaa !11
  %564 = load double, ptr %39, align 8, !tbaa !11
  %565 = fcmp oge double %564, 0.000000e+00
  br i1 %565, label %566, label %568

566:                                              ; preds = %529
  %567 = load double, ptr %39, align 8, !tbaa !11
  br label %571

568:                                              ; preds = %529
  %569 = load double, ptr %39, align 8, !tbaa !11
  %570 = fneg double %569
  br label %571

571:                                              ; preds = %568, %566
  %572 = phi double [ %567, %566 ], [ %570, %568 ]
  %573 = load double, ptr %62, align 8, !tbaa !11
  %574 = fcmp ole double %572, %573
  br i1 %574, label %575, label %742

575:                                              ; preds = %571
  %576 = load double, ptr %61, align 8, !tbaa !11
  %577 = load ptr, ptr %26, align 8, !tbaa !5
  %578 = load i32, ptr %54, align 4, !tbaa !9
  %579 = sext i32 %578 to i64
  %580 = getelementptr inbounds double, ptr %577, i64 %579
  store double %576, ptr %580, align 8, !tbaa !11
  %581 = load ptr, ptr %26, align 8, !tbaa !5
  %582 = load i32, ptr %55, align 4, !tbaa !9
  %583 = sext i32 %582 to i64
  %584 = getelementptr inbounds double, ptr %581, i64 %583
  store double 0.000000e+00, ptr %584, align 8, !tbaa !11
  %585 = load ptr, ptr %33, align 8, !tbaa !5
  %586 = load i32, ptr %54, align 4, !tbaa !9
  %587 = sext i32 %586 to i64
  %588 = getelementptr inbounds i32, ptr %585, i64 %587
  %589 = load i32, ptr %588, align 4, !tbaa !9
  %590 = load ptr, ptr %33, align 8, !tbaa !5
  %591 = load i32, ptr %55, align 4, !tbaa !9
  %592 = sext i32 %591 to i64
  %593 = getelementptr inbounds i32, ptr %590, i64 %592
  %594 = load i32, ptr %593, align 4, !tbaa !9
  %595 = icmp ne i32 %589, %594
  br i1 %595, label %596, label %601

596:                                              ; preds = %575
  %597 = load ptr, ptr %33, align 8, !tbaa !5
  %598 = load i32, ptr %54, align 4, !tbaa !9
  %599 = sext i32 %598 to i64
  %600 = getelementptr inbounds i32, ptr %597, i64 %599
  store i32 2, ptr %600, align 4, !tbaa !9
  br label %601

601:                                              ; preds = %596, %575
  %602 = load ptr, ptr %33, align 8, !tbaa !5
  %603 = load i32, ptr %55, align 4, !tbaa !9
  %604 = sext i32 %603 to i64
  %605 = getelementptr inbounds i32, ptr %602, i64 %604
  store i32 4, ptr %605, align 4, !tbaa !9
  %606 = load ptr, ptr %19, align 8, !tbaa !5
  %607 = load ptr, ptr %22, align 8, !tbaa !5
  %608 = load i32, ptr %55, align 4, !tbaa !9
  %609 = load i32, ptr %35, align 4, !tbaa !9
  %610 = mul nsw i32 %608, %609
  %611 = add nsw i32 %610, 1
  %612 = sext i32 %611 to i64
  %613 = getelementptr inbounds double, ptr %607, i64 %612
  %614 = load ptr, ptr %22, align 8, !tbaa !5
  %615 = load i32, ptr %54, align 4, !tbaa !9
  %616 = load i32, ptr %35, align 4, !tbaa !9
  %617 = mul nsw i32 %615, %616
  %618 = add nsw i32 %617, 1
  %619 = sext i32 %618 to i64
  %620 = getelementptr inbounds double, ptr %614, i64 %619
  call void @drot_(ptr noundef %606, ptr noundef %613, ptr noundef @c__1, ptr noundef %620, ptr noundef @c__1, ptr noundef %46, ptr noundef %49)
  %621 = load double, ptr %46, align 8, !tbaa !11
  store double %621, ptr %39, align 8, !tbaa !11
  %622 = load double, ptr %49, align 8, !tbaa !11
  store double %622, ptr %40, align 8, !tbaa !11
  %623 = load ptr, ptr %21, align 8, !tbaa !5
  %624 = load i32, ptr %55, align 4, !tbaa !9
  %625 = sext i32 %624 to i64
  %626 = getelementptr inbounds double, ptr %623, i64 %625
  %627 = load double, ptr %626, align 8, !tbaa !11
  %628 = load double, ptr %39, align 8, !tbaa !11
  %629 = load double, ptr %39, align 8, !tbaa !11
  %630 = fmul double %628, %629
  %631 = load ptr, ptr %21, align 8, !tbaa !5
  %632 = load i32, ptr %54, align 4, !tbaa !9
  %633 = sext i32 %632 to i64
  %634 = getelementptr inbounds double, ptr %631, i64 %633
  %635 = load double, ptr %634, align 8, !tbaa !11
  %636 = load double, ptr %40, align 8, !tbaa !11
  %637 = load double, ptr %40, align 8, !tbaa !11
  %638 = fmul double %636, %637
  %639 = fmul double %635, %638
  %640 = call double @llvm.fmuladd.f64(double %627, double %630, double %639)
  store double %640, ptr %50, align 8, !tbaa !11
  %641 = load double, ptr %49, align 8, !tbaa !11
  store double %641, ptr %39, align 8, !tbaa !11
  %642 = load double, ptr %46, align 8, !tbaa !11
  store double %642, ptr %40, align 8, !tbaa !11
  %643 = load ptr, ptr %21, align 8, !tbaa !5
  %644 = load i32, ptr %55, align 4, !tbaa !9
  %645 = sext i32 %644 to i64
  %646 = getelementptr inbounds double, ptr %643, i64 %645
  %647 = load double, ptr %646, align 8, !tbaa !11
  %648 = load double, ptr %39, align 8, !tbaa !11
  %649 = load double, ptr %39, align 8, !tbaa !11
  %650 = fmul double %648, %649
  %651 = load ptr, ptr %21, align 8, !tbaa !5
  %652 = load i32, ptr %54, align 4, !tbaa !9
  %653 = sext i32 %652 to i64
  %654 = getelementptr inbounds double, ptr %651, i64 %653
  %655 = load double, ptr %654, align 8, !tbaa !11
  %656 = load double, ptr %40, align 8, !tbaa !11
  %657 = load double, ptr %40, align 8, !tbaa !11
  %658 = fmul double %656, %657
  %659 = fmul double %655, %658
  %660 = call double @llvm.fmuladd.f64(double %647, double %650, double %659)
  %661 = load ptr, ptr %21, align 8, !tbaa !5
  %662 = load i32, ptr %54, align 4, !tbaa !9
  %663 = sext i32 %662 to i64
  %664 = getelementptr inbounds double, ptr %661, i64 %663
  store double %660, ptr %664, align 8, !tbaa !11
  %665 = load double, ptr %50, align 8, !tbaa !11
  %666 = load ptr, ptr %21, align 8, !tbaa !5
  %667 = load i32, ptr %55, align 4, !tbaa !9
  %668 = sext i32 %667 to i64
  %669 = getelementptr inbounds double, ptr %666, i64 %668
  store double %665, ptr %669, align 8, !tbaa !11
  %670 = load i32, ptr %51, align 4, !tbaa !9
  %671 = add nsw i32 %670, -1
  store i32 %671, ptr %51, align 4, !tbaa !9
  store i32 1, ptr %47, align 4, !tbaa !9
  br label %672

672:                                              ; preds = %697, %601
  %673 = load i32, ptr %51, align 4, !tbaa !9
  %674 = load i32, ptr %47, align 4, !tbaa !9
  %675 = add nsw i32 %673, %674
  %676 = load ptr, ptr %19, align 8, !tbaa !5
  %677 = load i32, ptr %676, align 4, !tbaa !9
  %678 = icmp sle i32 %675, %677
  br i1 %678, label %679, label %731

679:                                              ; preds = %672
  %680 = load ptr, ptr %21, align 8, !tbaa !5
  %681 = load i32, ptr %55, align 4, !tbaa !9
  %682 = sext i32 %681 to i64
  %683 = getelementptr inbounds double, ptr %680, i64 %682
  %684 = load double, ptr %683, align 8, !tbaa !11
  %685 = load ptr, ptr %21, align 8, !tbaa !5
  %686 = load ptr, ptr %32, align 8, !tbaa !5
  %687 = load i32, ptr %51, align 4, !tbaa !9
  %688 = load i32, ptr %47, align 4, !tbaa !9
  %689 = add nsw i32 %687, %688
  %690 = sext i32 %689 to i64
  %691 = getelementptr inbounds i32, ptr %686, i64 %690
  %692 = load i32, ptr %691, align 4, !tbaa !9
  %693 = sext i32 %692 to i64
  %694 = getelementptr inbounds double, ptr %685, i64 %693
  %695 = load double, ptr %694, align 8, !tbaa !11
  %696 = fcmp olt double %684, %695
  br i1 %696, label %697, label %721

697:                                              ; preds = %679
  %698 = load ptr, ptr %32, align 8, !tbaa !5
  %699 = load i32, ptr %51, align 4, !tbaa !9
  %700 = load i32, ptr %47, align 4, !tbaa !9
  %701 = add nsw i32 %699, %700
  %702 = sext i32 %701 to i64
  %703 = getelementptr inbounds i32, ptr %698, i64 %702
  %704 = load i32, ptr %703, align 4, !tbaa !9
  %705 = load ptr, ptr %32, align 8, !tbaa !5
  %706 = load i32, ptr %51, align 4, !tbaa !9
  %707 = load i32, ptr %47, align 4, !tbaa !9
  %708 = add nsw i32 %706, %707
  %709 = sub nsw i32 %708, 1
  %710 = sext i32 %709 to i64
  %711 = getelementptr inbounds i32, ptr %705, i64 %710
  store i32 %704, ptr %711, align 4, !tbaa !9
  %712 = load i32, ptr %55, align 4, !tbaa !9
  %713 = load ptr, ptr %32, align 8, !tbaa !5
  %714 = load i32, ptr %51, align 4, !tbaa !9
  %715 = load i32, ptr %47, align 4, !tbaa !9
  %716 = add nsw i32 %714, %715
  %717 = sext i32 %716 to i64
  %718 = getelementptr inbounds i32, ptr %713, i64 %717
  store i32 %712, ptr %718, align 4, !tbaa !9
  %719 = load i32, ptr %47, align 4, !tbaa !9
  %720 = add nsw i32 %719, 1
  store i32 %720, ptr %47, align 4, !tbaa !9
  br label %672

721:                                              ; preds = %679
  %722 = load i32, ptr %55, align 4, !tbaa !9
  %723 = load ptr, ptr %32, align 8, !tbaa !5
  %724 = load i32, ptr %51, align 4, !tbaa !9
  %725 = load i32, ptr %47, align 4, !tbaa !9
  %726 = add nsw i32 %724, %725
  %727 = sub nsw i32 %726, 1
  %728 = sext i32 %727 to i64
  %729 = getelementptr inbounds i32, ptr %723, i64 %728
  store i32 %722, ptr %729, align 4, !tbaa !9
  br label %730

730:                                              ; preds = %721
  br label %740

731:                                              ; preds = %672
  %732 = load i32, ptr %55, align 4, !tbaa !9
  %733 = load ptr, ptr %32, align 8, !tbaa !5
  %734 = load i32, ptr %51, align 4, !tbaa !9
  %735 = load i32, ptr %47, align 4, !tbaa !9
  %736 = add nsw i32 %734, %735
  %737 = sub nsw i32 %736, 1
  %738 = sext i32 %737 to i64
  %739 = getelementptr inbounds i32, ptr %733, i64 %738
  store i32 %732, ptr %739, align 4, !tbaa !9
  br label %740

740:                                              ; preds = %731, %730
  %741 = load i32, ptr %54, align 4, !tbaa !9
  store i32 %741, ptr %55, align 4, !tbaa !9
  br label %773

742:                                              ; preds = %571
  %743 = load ptr, ptr %18, align 8, !tbaa !5
  %744 = load i32, ptr %743, align 4, !tbaa !9
  %745 = add nsw i32 %744, 1
  store i32 %745, ptr %743, align 4, !tbaa !9
  %746 = load ptr, ptr %21, align 8, !tbaa !5
  %747 = load i32, ptr %55, align 4, !tbaa !9
  %748 = sext i32 %747 to i64
  %749 = getelementptr inbounds double, ptr %746, i64 %748
  %750 = load double, ptr %749, align 8, !tbaa !11
  %751 = load ptr, ptr %27, align 8, !tbaa !5
  %752 = load ptr, ptr %18, align 8, !tbaa !5
  %753 = load i32, ptr %752, align 4, !tbaa !9
  %754 = sext i32 %753 to i64
  %755 = getelementptr inbounds double, ptr %751, i64 %754
  store double %750, ptr %755, align 8, !tbaa !11
  %756 = load ptr, ptr %26, align 8, !tbaa !5
  %757 = load i32, ptr %55, align 4, !tbaa !9
  %758 = sext i32 %757 to i64
  %759 = getelementptr inbounds double, ptr %756, i64 %758
  %760 = load double, ptr %759, align 8, !tbaa !11
  %761 = load ptr, ptr %28, align 8, !tbaa !5
  %762 = load ptr, ptr %18, align 8, !tbaa !5
  %763 = load i32, ptr %762, align 4, !tbaa !9
  %764 = sext i32 %763 to i64
  %765 = getelementptr inbounds double, ptr %761, i64 %764
  store double %760, ptr %765, align 8, !tbaa !11
  %766 = load i32, ptr %55, align 4, !tbaa !9
  %767 = load ptr, ptr %32, align 8, !tbaa !5
  %768 = load ptr, ptr %18, align 8, !tbaa !5
  %769 = load i32, ptr %768, align 4, !tbaa !9
  %770 = sext i32 %769 to i64
  %771 = getelementptr inbounds i32, ptr %767, i64 %770
  store i32 %766, ptr %771, align 4, !tbaa !9
  %772 = load i32, ptr %54, align 4, !tbaa !9
  store i32 %772, ptr %55, align 4, !tbaa !9
  br label %773

773:                                              ; preds = %742, %740
  br label %774

774:                                              ; preds = %773, %517
  br label %484

775:                                              ; preds = %496, %475
  %776 = load ptr, ptr %18, align 8, !tbaa !5
  %777 = load i32, ptr %776, align 4, !tbaa !9
  %778 = add nsw i32 %777, 1
  store i32 %778, ptr %776, align 4, !tbaa !9
  %779 = load ptr, ptr %21, align 8, !tbaa !5
  %780 = load i32, ptr %55, align 4, !tbaa !9
  %781 = sext i32 %780 to i64
  %782 = getelementptr inbounds double, ptr %779, i64 %781
  %783 = load double, ptr %782, align 8, !tbaa !11
  %784 = load ptr, ptr %27, align 8, !tbaa !5
  %785 = load ptr, ptr %18, align 8, !tbaa !5
  %786 = load i32, ptr %785, align 4, !tbaa !9
  %787 = sext i32 %786 to i64
  %788 = getelementptr inbounds double, ptr %784, i64 %787
  store double %783, ptr %788, align 8, !tbaa !11
  %789 = load ptr, ptr %26, align 8, !tbaa !5
  %790 = load i32, ptr %55, align 4, !tbaa !9
  %791 = sext i32 %790 to i64
  %792 = getelementptr inbounds double, ptr %789, i64 %791
  %793 = load double, ptr %792, align 8, !tbaa !11
  %794 = load ptr, ptr %28, align 8, !tbaa !5
  %795 = load ptr, ptr %18, align 8, !tbaa !5
  %796 = load i32, ptr %795, align 4, !tbaa !9
  %797 = sext i32 %796 to i64
  %798 = getelementptr inbounds double, ptr %794, i64 %797
  store double %793, ptr %798, align 8, !tbaa !11
  %799 = load i32, ptr %55, align 4, !tbaa !9
  %800 = load ptr, ptr %32, align 8, !tbaa !5
  %801 = load ptr, ptr %18, align 8, !tbaa !5
  %802 = load i32, ptr %801, align 4, !tbaa !9
  %803 = sext i32 %802 to i64
  %804 = getelementptr inbounds i32, ptr %800, i64 %803
  store i32 %799, ptr %804, align 4, !tbaa !9
  store i32 1, ptr %48, align 4, !tbaa !9
  br label %805

805:                                              ; preds = %813, %775
  %806 = load i32, ptr %48, align 4, !tbaa !9
  %807 = icmp sle i32 %806, 4
  br i1 %807, label %808, label %816

808:                                              ; preds = %805
  %809 = load i32, ptr %48, align 4, !tbaa !9
  %810 = sub nsw i32 %809, 1
  %811 = sext i32 %810 to i64
  %812 = getelementptr inbounds [4 x i32], ptr %45, i64 0, i64 %811
  store i32 0, ptr %812, align 4, !tbaa !9
  br label %813

813:                                              ; preds = %808
  %814 = load i32, ptr %48, align 4, !tbaa !9
  %815 = add nsw i32 %814, 1
  store i32 %815, ptr %48, align 4, !tbaa !9
  br label %805, !llvm.loop !21

816:                                              ; preds = %805
  %817 = load ptr, ptr %19, align 8, !tbaa !5
  %818 = load i32, ptr %817, align 4, !tbaa !9
  store i32 %818, ptr %37, align 4, !tbaa !9
  store i32 1, ptr %48, align 4, !tbaa !9
  br label %819

819:                                              ; preds = %835, %816
  %820 = load i32, ptr %48, align 4, !tbaa !9
  %821 = load i32, ptr %37, align 4, !tbaa !9
  %822 = icmp sle i32 %820, %821
  br i1 %822, label %823, label %838

823:                                              ; preds = %819
  %824 = load ptr, ptr %33, align 8, !tbaa !5
  %825 = load i32, ptr %48, align 4, !tbaa !9
  %826 = sext i32 %825 to i64
  %827 = getelementptr inbounds i32, ptr %824, i64 %826
  %828 = load i32, ptr %827, align 4, !tbaa !9
  store i32 %828, ptr %53, align 4, !tbaa !9
  %829 = load i32, ptr %53, align 4, !tbaa !9
  %830 = sub nsw i32 %829, 1
  %831 = sext i32 %830 to i64
  %832 = getelementptr inbounds [4 x i32], ptr %45, i64 0, i64 %831
  %833 = load i32, ptr %832, align 4, !tbaa !9
  %834 = add nsw i32 %833, 1
  store i32 %834, ptr %832, align 4, !tbaa !9
  br label %835

835:                                              ; preds = %823
  %836 = load i32, ptr %48, align 4, !tbaa !9
  %837 = add nsw i32 %836, 1
  store i32 %837, ptr %48, align 4, !tbaa !9
  br label %819, !llvm.loop !22

838:                                              ; preds = %819
  %839 = getelementptr inbounds [4 x i32], ptr %63, i64 0, i64 0
  store i32 1, ptr %839, align 16, !tbaa !9
  %840 = getelementptr inbounds [4 x i32], ptr %45, i64 0, i64 0
  %841 = load i32, ptr %840, align 16, !tbaa !9
  %842 = add nsw i32 %841, 1
  %843 = getelementptr inbounds [4 x i32], ptr %63, i64 0, i64 1
  store i32 %842, ptr %843, align 4, !tbaa !9
  %844 = getelementptr inbounds [4 x i32], ptr %63, i64 0, i64 1
  %845 = load i32, ptr %844, align 4, !tbaa !9
  %846 = getelementptr inbounds [4 x i32], ptr %45, i64 0, i64 1
  %847 = load i32, ptr %846, align 4, !tbaa !9
  %848 = add nsw i32 %845, %847
  %849 = getelementptr inbounds [4 x i32], ptr %63, i64 0, i64 2
  store i32 %848, ptr %849, align 8, !tbaa !9
  %850 = getelementptr inbounds [4 x i32], ptr %63, i64 0, i64 2
  %851 = load i32, ptr %850, align 8, !tbaa !9
  %852 = getelementptr inbounds [4 x i32], ptr %45, i64 0, i64 2
  %853 = load i32, ptr %852, align 8, !tbaa !9
  %854 = add nsw i32 %851, %853
  %855 = getelementptr inbounds [4 x i32], ptr %63, i64 0, i64 3
  store i32 %854, ptr %855, align 4, !tbaa !9
  %856 = load ptr, ptr %19, align 8, !tbaa !5
  %857 = load i32, ptr %856, align 4, !tbaa !9
  %858 = getelementptr inbounds [4 x i32], ptr %45, i64 0, i64 3
  %859 = load i32, ptr %858, align 4, !tbaa !9
  %860 = sub nsw i32 %857, %859
  %861 = load ptr, ptr %18, align 8, !tbaa !5
  store i32 %860, ptr %861, align 4, !tbaa !9
  %862 = load ptr, ptr %19, align 8, !tbaa !5
  %863 = load i32, ptr %862, align 4, !tbaa !9
  store i32 %863, ptr %37, align 4, !tbaa !9
  store i32 1, ptr %48, align 4, !tbaa !9
  br label %864

864:                                              ; preds = %903, %838
  %865 = load i32, ptr %48, align 4, !tbaa !9
  %866 = load i32, ptr %37, align 4, !tbaa !9
  %867 = icmp sle i32 %865, %866
  br i1 %867, label %868, label %906

868:                                              ; preds = %864
  %869 = load ptr, ptr %32, align 8, !tbaa !5
  %870 = load i32, ptr %48, align 4, !tbaa !9
  %871 = sext i32 %870 to i64
  %872 = getelementptr inbounds i32, ptr %869, i64 %871
  %873 = load i32, ptr %872, align 4, !tbaa !9
  store i32 %873, ptr %56, align 4, !tbaa !9
  %874 = load ptr, ptr %33, align 8, !tbaa !5
  %875 = load i32, ptr %56, align 4, !tbaa !9
  %876 = sext i32 %875 to i64
  %877 = getelementptr inbounds i32, ptr %874, i64 %876
  %878 = load i32, ptr %877, align 4, !tbaa !9
  store i32 %878, ptr %53, align 4, !tbaa !9
  %879 = load i32, ptr %56, align 4, !tbaa !9
  %880 = load ptr, ptr %30, align 8, !tbaa !5
  %881 = load i32, ptr %53, align 4, !tbaa !9
  %882 = sub nsw i32 %881, 1
  %883 = sext i32 %882 to i64
  %884 = getelementptr inbounds [4 x i32], ptr %63, i64 0, i64 %883
  %885 = load i32, ptr %884, align 4, !tbaa !9
  %886 = sext i32 %885 to i64
  %887 = getelementptr inbounds i32, ptr %880, i64 %886
  store i32 %879, ptr %887, align 4, !tbaa !9
  %888 = load i32, ptr %48, align 4, !tbaa !9
  %889 = load ptr, ptr %31, align 8, !tbaa !5
  %890 = load i32, ptr %53, align 4, !tbaa !9
  %891 = sub nsw i32 %890, 1
  %892 = sext i32 %891 to i64
  %893 = getelementptr inbounds [4 x i32], ptr %63, i64 0, i64 %892
  %894 = load i32, ptr %893, align 4, !tbaa !9
  %895 = sext i32 %894 to i64
  %896 = getelementptr inbounds i32, ptr %889, i64 %895
  store i32 %888, ptr %896, align 4, !tbaa !9
  %897 = load i32, ptr %53, align 4, !tbaa !9
  %898 = sub nsw i32 %897, 1
  %899 = sext i32 %898 to i64
  %900 = getelementptr inbounds [4 x i32], ptr %63, i64 0, i64 %899
  %901 = load i32, ptr %900, align 4, !tbaa !9
  %902 = add nsw i32 %901, 1
  store i32 %902, ptr %900, align 4, !tbaa !9
  br label %903

903:                                              ; preds = %868
  %904 = load i32, ptr %48, align 4, !tbaa !9
  %905 = add nsw i32 %904, 1
  store i32 %905, ptr %48, align 4, !tbaa !9
  br label %864, !llvm.loop !23

906:                                              ; preds = %864
  store i32 1, ptr %47, align 4, !tbaa !9
  store i32 1, ptr %57, align 4, !tbaa !9
  %907 = getelementptr inbounds [4 x i32], ptr %45, i64 0, i64 0
  %908 = load i32, ptr %907, align 16, !tbaa !9
  %909 = getelementptr inbounds [4 x i32], ptr %45, i64 0, i64 1
  %910 = load i32, ptr %909, align 4, !tbaa !9
  %911 = add nsw i32 %908, %910
  %912 = load ptr, ptr %20, align 8, !tbaa !5
  %913 = load i32, ptr %912, align 4, !tbaa !9
  %914 = mul nsw i32 %911, %913
  %915 = add nsw i32 %914, 1
  store i32 %915, ptr %58, align 4, !tbaa !9
  %916 = getelementptr inbounds [4 x i32], ptr %45, i64 0, i64 0
  %917 = load i32, ptr %916, align 16, !tbaa !9
  store i32 %917, ptr %37, align 4, !tbaa !9
  store i32 1, ptr %48, align 4, !tbaa !9
  br label %918

918:                                              ; preds = %955, %906
  %919 = load i32, ptr %48, align 4, !tbaa !9
  %920 = load i32, ptr %37, align 4, !tbaa !9
  %921 = icmp sle i32 %919, %920
  br i1 %921, label %922, label %958

922:                                              ; preds = %918
  %923 = load ptr, ptr %30, align 8, !tbaa !5
  %924 = load i32, ptr %47, align 4, !tbaa !9
  %925 = sext i32 %924 to i64
  %926 = getelementptr inbounds i32, ptr %923, i64 %925
  %927 = load i32, ptr %926, align 4, !tbaa !9
  store i32 %927, ptr %56, align 4, !tbaa !9
  %928 = load ptr, ptr %20, align 8, !tbaa !5
  %929 = load ptr, ptr %22, align 8, !tbaa !5
  %930 = load i32, ptr %56, align 4, !tbaa !9
  %931 = load i32, ptr %35, align 4, !tbaa !9
  %932 = mul nsw i32 %930, %931
  %933 = add nsw i32 %932, 1
  %934 = sext i32 %933 to i64
  %935 = getelementptr inbounds double, ptr %929, i64 %934
  %936 = load ptr, ptr %29, align 8, !tbaa !5
  %937 = load i32, ptr %57, align 4, !tbaa !9
  %938 = sext i32 %937 to i64
  %939 = getelementptr inbounds double, ptr %936, i64 %938
  call void @dcopy_(ptr noundef %928, ptr noundef %935, ptr noundef @c__1, ptr noundef %939, ptr noundef @c__1)
  %940 = load ptr, ptr %21, align 8, !tbaa !5
  %941 = load i32, ptr %56, align 4, !tbaa !9
  %942 = sext i32 %941 to i64
  %943 = getelementptr inbounds double, ptr %940, i64 %942
  %944 = load double, ptr %943, align 8, !tbaa !11
  %945 = load ptr, ptr %26, align 8, !tbaa !5
  %946 = load i32, ptr %47, align 4, !tbaa !9
  %947 = sext i32 %946 to i64
  %948 = getelementptr inbounds double, ptr %945, i64 %947
  store double %944, ptr %948, align 8, !tbaa !11
  %949 = load i32, ptr %47, align 4, !tbaa !9
  %950 = add nsw i32 %949, 1
  store i32 %950, ptr %47, align 4, !tbaa !9
  %951 = load ptr, ptr %20, align 8, !tbaa !5
  %952 = load i32, ptr %951, align 4, !tbaa !9
  %953 = load i32, ptr %57, align 4, !tbaa !9
  %954 = add nsw i32 %953, %952
  store i32 %954, ptr %57, align 4, !tbaa !9
  br label %955

955:                                              ; preds = %922
  %956 = load i32, ptr %48, align 4, !tbaa !9
  %957 = add nsw i32 %956, 1
  store i32 %957, ptr %48, align 4, !tbaa !9
  br label %918, !llvm.loop !24

958:                                              ; preds = %918
  %959 = getelementptr inbounds [4 x i32], ptr %45, i64 0, i64 1
  %960 = load i32, ptr %959, align 4, !tbaa !9
  store i32 %960, ptr %37, align 4, !tbaa !9
  store i32 1, ptr %48, align 4, !tbaa !9
  br label %961

961:                                              ; preds = %1015, %958
  %962 = load i32, ptr %48, align 4, !tbaa !9
  %963 = load i32, ptr %37, align 4, !tbaa !9
  %964 = icmp sle i32 %962, %963
  br i1 %964, label %965, label %1018

965:                                              ; preds = %961
  %966 = load ptr, ptr %30, align 8, !tbaa !5
  %967 = load i32, ptr %47, align 4, !tbaa !9
  %968 = sext i32 %967 to i64
  %969 = getelementptr inbounds i32, ptr %966, i64 %968
  %970 = load i32, ptr %969, align 4, !tbaa !9
  store i32 %970, ptr %56, align 4, !tbaa !9
  %971 = load ptr, ptr %20, align 8, !tbaa !5
  %972 = load ptr, ptr %22, align 8, !tbaa !5
  %973 = load i32, ptr %56, align 4, !tbaa !9
  %974 = load i32, ptr %35, align 4, !tbaa !9
  %975 = mul nsw i32 %973, %974
  %976 = add nsw i32 %975, 1
  %977 = sext i32 %976 to i64
  %978 = getelementptr inbounds double, ptr %972, i64 %977
  %979 = load ptr, ptr %29, align 8, !tbaa !5
  %980 = load i32, ptr %57, align 4, !tbaa !9
  %981 = sext i32 %980 to i64
  %982 = getelementptr inbounds double, ptr %979, i64 %981
  call void @dcopy_(ptr noundef %971, ptr noundef %978, ptr noundef @c__1, ptr noundef %982, ptr noundef @c__1)
  %983 = load ptr, ptr %22, align 8, !tbaa !5
  %984 = load ptr, ptr %20, align 8, !tbaa !5
  %985 = load i32, ptr %984, align 4, !tbaa !9
  %986 = add nsw i32 %985, 1
  %987 = load i32, ptr %56, align 4, !tbaa !9
  %988 = load i32, ptr %35, align 4, !tbaa !9
  %989 = mul nsw i32 %987, %988
  %990 = add nsw i32 %986, %989
  %991 = sext i32 %990 to i64
  %992 = getelementptr inbounds double, ptr %983, i64 %991
  %993 = load ptr, ptr %29, align 8, !tbaa !5
  %994 = load i32, ptr %58, align 4, !tbaa !9
  %995 = sext i32 %994 to i64
  %996 = getelementptr inbounds double, ptr %993, i64 %995
  call void @dcopy_(ptr noundef %52, ptr noundef %992, ptr noundef @c__1, ptr noundef %996, ptr noundef @c__1)
  %997 = load ptr, ptr %21, align 8, !tbaa !5
  %998 = load i32, ptr %56, align 4, !tbaa !9
  %999 = sext i32 %998 to i64
  %1000 = getelementptr inbounds double, ptr %997, i64 %999
  %1001 = load double, ptr %1000, align 8, !tbaa !11
  %1002 = load ptr, ptr %26, align 8, !tbaa !5
  %1003 = load i32, ptr %47, align 4, !tbaa !9
  %1004 = sext i32 %1003 to i64
  %1005 = getelementptr inbounds double, ptr %1002, i64 %1004
  store double %1001, ptr %1005, align 8, !tbaa !11
  %1006 = load i32, ptr %47, align 4, !tbaa !9
  %1007 = add nsw i32 %1006, 1
  store i32 %1007, ptr %47, align 4, !tbaa !9
  %1008 = load ptr, ptr %20, align 8, !tbaa !5
  %1009 = load i32, ptr %1008, align 4, !tbaa !9
  %1010 = load i32, ptr %57, align 4, !tbaa !9
  %1011 = add nsw i32 %1010, %1009
  store i32 %1011, ptr %57, align 4, !tbaa !9
  %1012 = load i32, ptr %52, align 4, !tbaa !9
  %1013 = load i32, ptr %58, align 4, !tbaa !9
  %1014 = add nsw i32 %1013, %1012
  store i32 %1014, ptr %58, align 4, !tbaa !9
  br label %1015

1015:                                             ; preds = %965
  %1016 = load i32, ptr %48, align 4, !tbaa !9
  %1017 = add nsw i32 %1016, 1
  store i32 %1017, ptr %48, align 4, !tbaa !9
  br label %961, !llvm.loop !25

1018:                                             ; preds = %961
  %1019 = getelementptr inbounds [4 x i32], ptr %45, i64 0, i64 2
  %1020 = load i32, ptr %1019, align 8, !tbaa !9
  store i32 %1020, ptr %37, align 4, !tbaa !9
  store i32 1, ptr %48, align 4, !tbaa !9
  br label %1021

1021:                                             ; preds = %1059, %1018
  %1022 = load i32, ptr %48, align 4, !tbaa !9
  %1023 = load i32, ptr %37, align 4, !tbaa !9
  %1024 = icmp sle i32 %1022, %1023
  br i1 %1024, label %1025, label %1062

1025:                                             ; preds = %1021
  %1026 = load ptr, ptr %30, align 8, !tbaa !5
  %1027 = load i32, ptr %47, align 4, !tbaa !9
  %1028 = sext i32 %1027 to i64
  %1029 = getelementptr inbounds i32, ptr %1026, i64 %1028
  %1030 = load i32, ptr %1029, align 4, !tbaa !9
  store i32 %1030, ptr %56, align 4, !tbaa !9
  %1031 = load ptr, ptr %22, align 8, !tbaa !5
  %1032 = load ptr, ptr %20, align 8, !tbaa !5
  %1033 = load i32, ptr %1032, align 4, !tbaa !9
  %1034 = add nsw i32 %1033, 1
  %1035 = load i32, ptr %56, align 4, !tbaa !9
  %1036 = load i32, ptr %35, align 4, !tbaa !9
  %1037 = mul nsw i32 %1035, %1036
  %1038 = add nsw i32 %1034, %1037
  %1039 = sext i32 %1038 to i64
  %1040 = getelementptr inbounds double, ptr %1031, i64 %1039
  %1041 = load ptr, ptr %29, align 8, !tbaa !5
  %1042 = load i32, ptr %58, align 4, !tbaa !9
  %1043 = sext i32 %1042 to i64
  %1044 = getelementptr inbounds double, ptr %1041, i64 %1043
  call void @dcopy_(ptr noundef %52, ptr noundef %1040, ptr noundef @c__1, ptr noundef %1044, ptr noundef @c__1)
  %1045 = load ptr, ptr %21, align 8, !tbaa !5
  %1046 = load i32, ptr %56, align 4, !tbaa !9
  %1047 = sext i32 %1046 to i64
  %1048 = getelementptr inbounds double, ptr %1045, i64 %1047
  %1049 = load double, ptr %1048, align 8, !tbaa !11
  %1050 = load ptr, ptr %26, align 8, !tbaa !5
  %1051 = load i32, ptr %47, align 4, !tbaa !9
  %1052 = sext i32 %1051 to i64
  %1053 = getelementptr inbounds double, ptr %1050, i64 %1052
  store double %1049, ptr %1053, align 8, !tbaa !11
  %1054 = load i32, ptr %47, align 4, !tbaa !9
  %1055 = add nsw i32 %1054, 1
  store i32 %1055, ptr %47, align 4, !tbaa !9
  %1056 = load i32, ptr %52, align 4, !tbaa !9
  %1057 = load i32, ptr %58, align 4, !tbaa !9
  %1058 = add nsw i32 %1057, %1056
  store i32 %1058, ptr %58, align 4, !tbaa !9
  br label %1059

1059:                                             ; preds = %1025
  %1060 = load i32, ptr %48, align 4, !tbaa !9
  %1061 = add nsw i32 %1060, 1
  store i32 %1061, ptr %48, align 4, !tbaa !9
  br label %1021, !llvm.loop !26

1062:                                             ; preds = %1021
  %1063 = load i32, ptr %58, align 4, !tbaa !9
  store i32 %1063, ptr %57, align 4, !tbaa !9
  %1064 = getelementptr inbounds [4 x i32], ptr %45, i64 0, i64 3
  %1065 = load i32, ptr %1064, align 4, !tbaa !9
  store i32 %1065, ptr %37, align 4, !tbaa !9
  store i32 1, ptr %48, align 4, !tbaa !9
  br label %1066

1066:                                             ; preds = %1103, %1062
  %1067 = load i32, ptr %48, align 4, !tbaa !9
  %1068 = load i32, ptr %37, align 4, !tbaa !9
  %1069 = icmp sle i32 %1067, %1068
  br i1 %1069, label %1070, label %1106

1070:                                             ; preds = %1066
  %1071 = load ptr, ptr %30, align 8, !tbaa !5
  %1072 = load i32, ptr %47, align 4, !tbaa !9
  %1073 = sext i32 %1072 to i64
  %1074 = getelementptr inbounds i32, ptr %1071, i64 %1073
  %1075 = load i32, ptr %1074, align 4, !tbaa !9
  store i32 %1075, ptr %56, align 4, !tbaa !9
  %1076 = load ptr, ptr %19, align 8, !tbaa !5
  %1077 = load ptr, ptr %22, align 8, !tbaa !5
  %1078 = load i32, ptr %56, align 4, !tbaa !9
  %1079 = load i32, ptr %35, align 4, !tbaa !9
  %1080 = mul nsw i32 %1078, %1079
  %1081 = add nsw i32 %1080, 1
  %1082 = sext i32 %1081 to i64
  %1083 = getelementptr inbounds double, ptr %1077, i64 %1082
  %1084 = load ptr, ptr %29, align 8, !tbaa !5
  %1085 = load i32, ptr %58, align 4, !tbaa !9
  %1086 = sext i32 %1085 to i64
  %1087 = getelementptr inbounds double, ptr %1084, i64 %1086
  call void @dcopy_(ptr noundef %1076, ptr noundef %1083, ptr noundef @c__1, ptr noundef %1087, ptr noundef @c__1)
  %1088 = load ptr, ptr %19, align 8, !tbaa !5
  %1089 = load i32, ptr %1088, align 4, !tbaa !9
  %1090 = load i32, ptr %58, align 4, !tbaa !9
  %1091 = add nsw i32 %1090, %1089
  store i32 %1091, ptr %58, align 4, !tbaa !9
  %1092 = load ptr, ptr %21, align 8, !tbaa !5
  %1093 = load i32, ptr %56, align 4, !tbaa !9
  %1094 = sext i32 %1093 to i64
  %1095 = getelementptr inbounds double, ptr %1092, i64 %1094
  %1096 = load double, ptr %1095, align 8, !tbaa !11
  %1097 = load ptr, ptr %26, align 8, !tbaa !5
  %1098 = load i32, ptr %47, align 4, !tbaa !9
  %1099 = sext i32 %1098 to i64
  %1100 = getelementptr inbounds double, ptr %1097, i64 %1099
  store double %1096, ptr %1100, align 8, !tbaa !11
  %1101 = load i32, ptr %47, align 4, !tbaa !9
  %1102 = add nsw i32 %1101, 1
  store i32 %1102, ptr %47, align 4, !tbaa !9
  br label %1103

1103:                                             ; preds = %1070
  %1104 = load i32, ptr %48, align 4, !tbaa !9
  %1105 = add nsw i32 %1104, 1
  store i32 %1105, ptr %48, align 4, !tbaa !9
  br label %1066, !llvm.loop !27

1106:                                             ; preds = %1066
  %1107 = load ptr, ptr %18, align 8, !tbaa !5
  %1108 = load i32, ptr %1107, align 4, !tbaa !9
  %1109 = load ptr, ptr %19, align 8, !tbaa !5
  %1110 = load i32, ptr %1109, align 4, !tbaa !9
  %1111 = icmp slt i32 %1108, %1110
  br i1 %1111, label %1112, label %1147

1112:                                             ; preds = %1106
  %1113 = load ptr, ptr %19, align 8, !tbaa !5
  %1114 = getelementptr inbounds [4 x i32], ptr %45, i64 0, i64 3
  %1115 = load ptr, ptr %29, align 8, !tbaa !5
  %1116 = load i32, ptr %57, align 4, !tbaa !9
  %1117 = sext i32 %1116 to i64
  %1118 = getelementptr inbounds double, ptr %1115, i64 %1117
  %1119 = load ptr, ptr %19, align 8, !tbaa !5
  %1120 = load ptr, ptr %22, align 8, !tbaa !5
  %1121 = load ptr, ptr %18, align 8, !tbaa !5
  %1122 = load i32, ptr %1121, align 4, !tbaa !9
  %1123 = add nsw i32 %1122, 1
  %1124 = load i32, ptr %35, align 4, !tbaa !9
  %1125 = mul nsw i32 %1123, %1124
  %1126 = add nsw i32 %1125, 1
  %1127 = sext i32 %1126 to i64
  %1128 = getelementptr inbounds double, ptr %1120, i64 %1127
  %1129 = load ptr, ptr %23, align 8, !tbaa !5
  call void @dlacpy_(ptr noundef @.str.2, ptr noundef %1113, ptr noundef %1114, ptr noundef %1118, ptr noundef %1119, ptr noundef %1128, ptr noundef %1129)
  %1130 = load ptr, ptr %19, align 8, !tbaa !5
  %1131 = load i32, ptr %1130, align 4, !tbaa !9
  %1132 = load ptr, ptr %18, align 8, !tbaa !5
  %1133 = load i32, ptr %1132, align 4, !tbaa !9
  %1134 = sub nsw i32 %1131, %1133
  store i32 %1134, ptr %37, align 4, !tbaa !9
  %1135 = load ptr, ptr %26, align 8, !tbaa !5
  %1136 = load ptr, ptr %18, align 8, !tbaa !5
  %1137 = load i32, ptr %1136, align 4, !tbaa !9
  %1138 = add nsw i32 %1137, 1
  %1139 = sext i32 %1138 to i64
  %1140 = getelementptr inbounds double, ptr %1135, i64 %1139
  %1141 = load ptr, ptr %21, align 8, !tbaa !5
  %1142 = load ptr, ptr %18, align 8, !tbaa !5
  %1143 = load i32, ptr %1142, align 4, !tbaa !9
  %1144 = add nsw i32 %1143, 1
  %1145 = sext i32 %1144 to i64
  %1146 = getelementptr inbounds double, ptr %1141, i64 %1145
  call void @dcopy_(ptr noundef %37, ptr noundef %1140, ptr noundef @c__1, ptr noundef %1146, ptr noundef @c__1)
  br label %1147

1147:                                             ; preds = %1112, %1106
  store i32 1, ptr %48, align 4, !tbaa !9
  br label %1148

1148:                                             ; preds = %1161, %1147
  %1149 = load i32, ptr %48, align 4, !tbaa !9
  %1150 = icmp sle i32 %1149, 4
  br i1 %1150, label %1151, label %1164

1151:                                             ; preds = %1148
  %1152 = load i32, ptr %48, align 4, !tbaa !9
  %1153 = sub nsw i32 %1152, 1
  %1154 = sext i32 %1153 to i64
  %1155 = getelementptr inbounds [4 x i32], ptr %45, i64 0, i64 %1154
  %1156 = load i32, ptr %1155, align 4, !tbaa !9
  %1157 = load ptr, ptr %33, align 8, !tbaa !5
  %1158 = load i32, ptr %48, align 4, !tbaa !9
  %1159 = sext i32 %1158 to i64
  %1160 = getelementptr inbounds i32, ptr %1157, i64 %1159
  store i32 %1156, ptr %1160, align 4, !tbaa !9
  br label %1161

1161:                                             ; preds = %1151
  %1162 = load i32, ptr %48, align 4, !tbaa !9
  %1163 = add nsw i32 %1162, 1
  store i32 %1163, ptr %48, align 4, !tbaa !9
  br label %1148, !llvm.loop !28

1164:                                             ; preds = %1148
  br label %1165

1165:                                             ; preds = %1164, %376
  store i32 1, ptr %64, align 4
  br label %1166

1166:                                             ; preds = %1165, %156, %147
  call void @llvm.lifetime.end.p0(i64 16, ptr %63) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %59) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %58) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %56) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %54) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %53) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %45) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #5
  ret void
}

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

declare i32 @xerbla_(ptr noundef, ptr noundef, i32 noundef) #2

declare void @dscal_(ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

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

declare void @dlamrg_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

declare i32 @idamax_(ptr noundef, ptr noundef, ptr noundef) #2

declare double @dlamch_(ptr noundef) #2

declare void @dcopy_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

declare void @dlacpy_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

declare double @dlapy2_(ptr noundef, ptr noundef) #2

declare void @drot_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

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

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

attributes #0 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #5 = { 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/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"double", !7, i64 0}
!13 = distinct !{!13, !14}
!14 = !{!"llvm.loop.mustprogress"}
!15 = distinct !{!15, !14}
!16 = distinct !{!16, !14}
!17 = distinct !{!17, !14}
!18 = distinct !{!18, !14}
!19 = distinct !{!19, !14}
!20 = distinct !{!20, !14}
!21 = distinct !{!21, !14}
!22 = distinct !{!22, !14}
!23 = distinct !{!23, !14}
!24 = distinct !{!24, !14}
!25 = distinct !{!25, !14}
!26 = distinct !{!26, !14}
!27 = distinct !{!27, !14}
!28 = distinct !{!28, !14}


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

@.str = external hidden unnamed_addr constant [7 x i8], align 1
@c_b3 = external hidden global double, align 8
@c__1 = external hidden global i32, align 4
@.str.1 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [2 x i8], align 1

; Function Attrs: nounwind uwtable
define dso_local void @dlaed2_(ptr nocapture noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %5, ptr nocapture noundef %6, ptr nocapture noundef %7, ptr noundef %8, ptr noundef %9, ptr nocapture noundef writeonly %10, ptr noundef %11, ptr nocapture noundef %12, ptr noundef %13, ptr nocapture noundef %14, ptr nocapture noundef %15, ptr nocapture noundef writeonly %16) local_unnamed_addr #0 {
  %18 = alloca i32, align 4
  %19 = alloca [4 x i32], align 16
  %20 = alloca double, align 8
  %21 = alloca double, align 8
  %22 = alloca double, align 8
  %23 = alloca i32, align 4
  %24 = alloca [4 x i32], align 16
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %18) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %19) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %20) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %21) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %22) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %23) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %24) #7
  %25 = getelementptr inbounds i8, ptr %3, i64 -8
  %26 = load i32, ptr %5, align 4, !tbaa !5
  %narrow = xor i32 %26, -1
  %27 = sext i32 %narrow to i64
  %28 = getelementptr inbounds double, ptr %4, i64 %27
  %29 = getelementptr inbounds i8, ptr %6, i64 -4
  %30 = getelementptr inbounds i8, ptr %8, i64 -8
  %31 = getelementptr inbounds i8, ptr %9, i64 -8
  %32 = getelementptr inbounds i8, ptr %10, i64 -8
  %33 = getelementptr inbounds i8, ptr %11, i64 -8
  %34 = getelementptr inbounds i8, ptr %12, i64 -4
  %35 = getelementptr inbounds i8, ptr %13, i64 -4
  %36 = getelementptr inbounds i8, ptr %14, i64 -4
  %37 = getelementptr inbounds i8, ptr %15, i64 -4
  store i32 0, ptr %16, align 4, !tbaa !5
  %38 = load i32, ptr %1, align 4, !tbaa !5
  %39 = icmp slt i32 %38, 0
  br i1 %39, label %.thread, label %40

40:                                               ; preds = %17
  %41 = load i32, ptr %5, align 4, !tbaa !5
  %spec.select = tail call i32 @llvm.umax.i32(i32 %38, i32 1)
  %42 = icmp slt i32 %41, %spec.select
  br i1 %42, label %.thread, label %43

43:                                               ; preds = %40
  store i32 1, ptr %18, align 4, !tbaa !5
  %44 = lshr i32 %38, 1
  %45 = icmp ugt i32 %38, 1
  %46 = zext i1 %45 to i32
  %47 = load i32, ptr %2, align 4, !tbaa !5
  %48 = icmp slt i32 %47, %46
  %49 = icmp slt i32 %44, %47
  %or.cond = or i1 %48, %49
  br i1 %or.cond, label %.thread, label %51

.thread:                                          ; preds = %43, %40, %17
  %.sink = phi i32 [ -2, %17 ], [ -6, %40 ], [ -3, %43 ]
  %.neg = phi i32 [ 2, %17 ], [ 6, %40 ], [ 3, %43 ]
  store i32 %.sink, ptr %16, align 4, !tbaa !5
  store i32 %.neg, ptr %18, align 4, !tbaa !5
  %50 = call i32 @xerbla_(ptr noundef nonnull @.str, ptr noundef nonnull %18, i32 noundef 6) #7
  br label %.loopexit

51:                                               ; preds = %43
  %52 = icmp eq i32 %38, 0
  br i1 %52, label %.loopexit, label %53

53:                                               ; preds = %51
  %54 = sub nsw i32 %38, %47
  store i32 %54, ptr %23, align 4, !tbaa !5
  %55 = load double, ptr %7, align 8, !tbaa !9
  %56 = fcmp olt double %55, 0.000000e+00
  br i1 %56, label %57, label %61

57:                                               ; preds = %53
  %58 = zext nneg i32 %47 to i64
  %59 = getelementptr double, ptr %30, i64 %58
  %60 = getelementptr i8, ptr %59, i64 8
  call void @dscal_(ptr noundef nonnull %23, ptr noundef nonnull @c_b3, ptr noundef nonnull %60, ptr noundef nonnull @c__1) #7
  br label %61

61:                                               ; preds = %57, %53
  store double 0x3FE6A09E667F3BCC, ptr %22, align 8, !tbaa !9
  call void @dscal_(ptr noundef nonnull %1, ptr noundef nonnull %22, ptr noundef %8, ptr noundef nonnull @c__1) #7
  %62 = load double, ptr %7, align 8, !tbaa !9
  %63 = fmul double %62, 2.000000e+00
  %64 = fcmp oge double %63, 0.000000e+00
  %65 = fneg double %63
  %66 = select i1 %64, double %63, double %65
  store double %66, ptr %7, align 8, !tbaa !9
  %67 = load i32, ptr %1, align 4, !tbaa !5
  %.not437460.not = icmp slt i32 %47, %67
  br i1 %.not437460.not, label %.lr.ph.preheader, label %._crit_edge

.lr.ph.preheader:                                 ; preds = %61
  %68 = zext i32 %47 to i64
  %69 = add nuw nsw i64 %68, 1
  %70 = add nuw i32 %67, 1
  %71 = xor i32 %47, -1
  %72 = add i32 %67, %71
  %73 = zext i32 %72 to i64
  %74 = add nuw nsw i64 %73, 1
  %min.iters.check = icmp ult i32 %72, 15
  br i1 %min.iters.check, label %.lr.ph.preheader747, label %vector.memcheck

vector.memcheck:                                  ; preds = %.lr.ph.preheader
  %75 = shl nuw nsw i64 %68, 2
  %scevgep = getelementptr i8, ptr %6, i64 %75
  %76 = xor i32 %47, -1
  %77 = add i32 %67, %76
  %78 = zext i32 %77 to i64
  %79 = add nuw nsw i64 %68, %78
  %80 = shl nuw nsw i64 %79, 2
  %81 = getelementptr i8, ptr %6, i64 %80
  %scevgep696 = getelementptr i8, ptr %81, i64 4
  %scevgep697 = getelementptr i8, ptr %2, i64 4
  %bound0 = icmp ult ptr %scevgep, %scevgep697
  %bound1 = icmp ugt ptr %scevgep696, %2
  %found.conflict = and i1 %bound0, %bound1
  br i1 %found.conflict, label %.lr.ph.preheader747, label %vector.ph

vector.ph:                                        ; preds = %vector.memcheck
  %n.vec = and i64 %74, 8589934584
  %ind.end = add nuw nsw i64 %69, %n.vec
  %82 = load i32, ptr %2, align 4, !tbaa !5, !alias.scope !11
  %broadcast.splatinsert699 = insertelement <4 x i32> poison, i32 %82, i64 0
  %broadcast.splat700 = shufflevector <4 x i32> %broadcast.splatinsert699, <4 x i32> poison, <4 x i32> zeroinitializer
  %83 = getelementptr i32, ptr %6, i64 %68
  br label %vector.body

vector.body:                                      ; preds = %vector.body, %vector.ph
  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %84 = getelementptr i32, ptr %83, i64 %index
  %85 = getelementptr inbounds i8, ptr %84, i64 16
  %wide.load = load <4 x i32>, ptr %84, align 4, !tbaa !5, !alias.scope !14, !noalias !11
  %wide.load698 = load <4 x i32>, ptr %85, align 4, !tbaa !5, !alias.scope !14, !noalias !11
  %86 = add nsw <4 x i32> %wide.load, %broadcast.splat700
  %87 = add nsw <4 x i32> %wide.load698, %broadcast.splat700
  store <4 x i32> %86, ptr %84, align 4, !tbaa !5, !alias.scope !14, !noalias !11
  store <4 x i32> %87, ptr %85, align 4, !tbaa !5, !alias.scope !14, !noalias !11
  %index.next = add nuw i64 %index, 8
  %88 = icmp eq i64 %index.next, %n.vec
  br i1 %88, label %middle.block, label %vector.body, !llvm.loop !16

middle.block:                                     ; preds = %vector.body
  %cmp.n = icmp eq i64 %74, %n.vec
  br i1 %cmp.n, label %._crit_edge.loopexit, label %.lr.ph.preheader747

.lr.ph.preheader747:                              ; preds = %middle.block, %vector.memcheck, %.lr.ph.preheader
  %indvars.iv.ph = phi i64 [ %69, %vector.memcheck ], [ %69, %.lr.ph.preheader ], [ %ind.end, %middle.block ]
  %89 = add i32 %67, 1
  %90 = trunc i64 %indvars.iv.ph to i32
  %91 = sub i32 %89, %90
  %92 = sub i32 %67, %90
  %xtraiter = and i32 %91, 3
  %lcmp.mod.not = icmp eq i32 %xtraiter, 0
  br i1 %lcmp.mod.not, label %.lr.ph.prol.loopexit, label %.lr.ph.prol

.lr.ph.prol:                                      ; preds = %.lr.ph.preheader747, %.lr.ph.prol
  %indvars.iv.prol = phi i64 [ %indvars.iv.next.prol, %.lr.ph.prol ], [ %indvars.iv.ph, %.lr.ph.preheader747 ]
  %prol.iter = phi i32 [ %prol.iter.next, %.lr.ph.prol ], [ 0, %.lr.ph.preheader747 ]
  %93 = load i32, ptr %2, align 4, !tbaa !5
  %94 = getelementptr inbounds i32, ptr %29, i64 %indvars.iv.prol
  %95 = load i32, ptr %94, align 4, !tbaa !5
  %96 = add nsw i32 %95, %93
  store i32 %96, ptr %94, align 4, !tbaa !5
  %indvars.iv.next.prol = add nuw nsw i64 %indvars.iv.prol, 1
  %prol.iter.next = add i32 %prol.iter, 1
  %prol.iter.cmp.not = icmp eq i32 %prol.iter.next, %xtraiter
  br i1 %prol.iter.cmp.not, label %.lr.ph.prol.loopexit, label %.lr.ph.prol, !llvm.loop !20

.lr.ph.prol.loopexit:                             ; preds = %.lr.ph.prol, %.lr.ph.preheader747
  %indvars.iv.unr = phi i64 [ %indvars.iv.ph, %.lr.ph.preheader747 ], [ %indvars.iv.next.prol, %.lr.ph.prol ]
  %97 = icmp ult i32 %92, 3
  br i1 %97, label %._crit_edge.loopexit, label %.lr.ph.preheader747.new

.lr.ph.preheader747.new:                          ; preds = %.lr.ph.prol.loopexit
  %invariant.gep782 = getelementptr i8, ptr %29, i64 8
  %invariant.gep784 = getelementptr i8, ptr %29, i64 12
  br label %.lr.ph

.lr.ph:                                           ; preds = %.lr.ph, %.lr.ph.preheader747.new
  %indvars.iv = phi i64 [ %indvars.iv.unr, %.lr.ph.preheader747.new ], [ %indvars.iv.next.3, %.lr.ph ]
  %98 = load i32, ptr %2, align 4, !tbaa !5
  %99 = getelementptr inbounds i32, ptr %29, i64 %indvars.iv
  %100 = load i32, ptr %99, align 4, !tbaa !5
  %101 = add nsw i32 %100, %98
  store i32 %101, ptr %99, align 4, !tbaa !5
  %102 = load i32, ptr %2, align 4, !tbaa !5
  %103 = getelementptr i32, ptr %6, i64 %indvars.iv
  %104 = load i32, ptr %103, align 4, !tbaa !5
  %105 = add nsw i32 %104, %102
  store i32 %105, ptr %103, align 4, !tbaa !5
  %106 = load i32, ptr %2, align 4, !tbaa !5
  %gep783 = getelementptr i32, ptr %invariant.gep782, i64 %indvars.iv
  %107 = load i32, ptr %gep783, align 4, !tbaa !5
  %108 = add nsw i32 %107, %106
  store i32 %108, ptr %gep783, align 4, !tbaa !5
  %109 = load i32, ptr %2, align 4, !tbaa !5
  %gep785 = getelementptr i32, ptr %invariant.gep784, i64 %indvars.iv
  %110 = load i32, ptr %gep785, align 4, !tbaa !5
  %111 = add nsw i32 %110, %109
  store i32 %111, ptr %gep785, align 4, !tbaa !5
  %indvars.iv.next.3 = add nuw nsw i64 %indvars.iv, 4
  %lftr.wideiv.3 = trunc i64 %indvars.iv.next.3 to i32
  %exitcond.not.3 = icmp eq i32 %70, %lftr.wideiv.3
  br i1 %exitcond.not.3, label %._crit_edge.loopexit, label %.lr.ph, !llvm.loop !22

._crit_edge.loopexit:                             ; preds = %.lr.ph.prol.loopexit, %.lr.ph, %middle.block
  %.pre = load i32, ptr %1, align 4, !tbaa !5
  br label %._crit_edge

._crit_edge:                                      ; preds = %._crit_edge.loopexit, %61
  %112 = phi i32 [ %.pre, %._crit_edge.loopexit ], [ %67, %61 ]
  store i32 %112, ptr %18, align 4, !tbaa !5
  %.not438462 = icmp slt i32 %112, 1
  br i1 %.not438462, label %._crit_edge466, label %.lr.ph465.preheader

.lr.ph465.preheader:                              ; preds = %._crit_edge
  %113 = zext nneg i32 %112 to i64
  %xtraiter748 = and i64 %113, 3
  %114 = icmp ult i32 %112, 4
  br i1 %114, label %._crit_edge466.loopexit.unr-lcssa, label %.lr.ph465.preheader.new

.lr.ph465.preheader.new:                          ; preds = %.lr.ph465.preheader
  %unroll_iter = and i64 %113, 2147483644
  br label %.lr.ph465

.lr.ph465:                                        ; preds = %.lr.ph465, %.lr.ph465.preheader.new
  %indvars.iv581 = phi i64 [ 1, %.lr.ph465.preheader.new ], [ %indvars.iv.next582.3, %.lr.ph465 ]
  %niter = phi i64 [ 0, %.lr.ph465.preheader.new ], [ %niter.next.3, %.lr.ph465 ]
  %115 = getelementptr inbounds i32, ptr %29, i64 %indvars.iv581
  %116 = load i32, ptr %115, align 4, !tbaa !5
  %117 = sext i32 %116 to i64
  %118 = getelementptr inbounds double, ptr %25, i64 %117
  %119 = load double, ptr %118, align 8, !tbaa !9
  %120 = getelementptr inbounds double, ptr %31, i64 %indvars.iv581
  store double %119, ptr %120, align 8, !tbaa !9
  %121 = getelementptr i32, ptr %6, i64 %indvars.iv581
  %122 = load i32, ptr %121, align 4, !tbaa !5
  %123 = sext i32 %122 to i64
  %124 = getelementptr inbounds double, ptr %25, i64 %123
  %125 = load double, ptr %124, align 8, !tbaa !9
  %126 = getelementptr double, ptr %9, i64 %indvars.iv581
  store double %125, ptr %126, align 8, !tbaa !9
  %indvars.iv.next582.1 = add nuw nsw i64 %indvars.iv581, 2
  %127 = getelementptr inbounds i32, ptr %29, i64 %indvars.iv.next582.1
  %128 = load i32, ptr %127, align 4, !tbaa !5
  %129 = sext i32 %128 to i64
  %130 = getelementptr inbounds double, ptr %25, i64 %129
  %131 = load double, ptr %130, align 8, !tbaa !9
  %132 = getelementptr inbounds double, ptr %31, i64 %indvars.iv.next582.1
  store double %131, ptr %132, align 8, !tbaa !9
  %indvars.iv.next582.2 = add nuw nsw i64 %indvars.iv581, 3
  %133 = getelementptr inbounds i32, ptr %29, i64 %indvars.iv.next582.2
  %134 = load i32, ptr %133, align 4, !tbaa !5
  %135 = sext i32 %134 to i64
  %136 = getelementptr inbounds double, ptr %25, i64 %135
  %137 = load double, ptr %136, align 8, !tbaa !9
  %138 = getelementptr inbounds double, ptr %31, i64 %indvars.iv.next582.2
  store double %137, ptr %138, align 8, !tbaa !9
  %indvars.iv.next582.3 = add nuw nsw i64 %indvars.iv581, 4
  %niter.next.3 = add i64 %niter, 4
  %niter.ncmp.3 = icmp eq i64 %niter.next.3, %unroll_iter
  br i1 %niter.ncmp.3, label %._crit_edge466.loopexit.unr-lcssa, label %.lr.ph465, !llvm.loop !23

._crit_edge466.loopexit.unr-lcssa:                ; preds = %.lr.ph465, %.lr.ph465.preheader
  %indvars.iv581.unr = phi i64 [ 1, %.lr.ph465.preheader ], [ %indvars.iv.next582.3, %.lr.ph465 ]
  %lcmp.mod749.not = icmp eq i64 %xtraiter748, 0
  br i1 %lcmp.mod749.not, label %._crit_edge466, label %.lr.ph465.epil

.lr.ph465.epil:                                   ; preds = %._crit_edge466.loopexit.unr-lcssa, %.lr.ph465.epil
  %indvars.iv581.epil = phi i64 [ %indvars.iv.next582.epil, %.lr.ph465.epil ], [ %indvars.iv581.unr, %._crit_edge466.loopexit.unr-lcssa ]
  %epil.iter = phi i64 [ %epil.iter.next, %.lr.ph465.epil ], [ 0, %._crit_edge466.loopexit.unr-lcssa ]
  %139 = getelementptr inbounds i32, ptr %29, i64 %indvars.iv581.epil
  %140 = load i32, ptr %139, align 4, !tbaa !5
  %141 = sext i32 %140 to i64
  %142 = getelementptr inbounds double, ptr %25, i64 %141
  %143 = load double, ptr %142, align 8, !tbaa !9
  %144 = getelementptr inbounds double, ptr %31, i64 %indvars.iv581.epil
  store double %143, ptr %144, align 8, !tbaa !9
  %indvars.iv.next582.epil = add nuw nsw i64 %indvars.iv581.epil, 1
  %epil.iter.next = add i64 %epil.iter, 1
  %epil.iter.cmp.not = icmp eq i64 %epil.iter.next, %xtraiter748
  br i1 %epil.iter.cmp.not, label %._crit_edge466, label %.lr.ph465.epil, !llvm.loop !24

._crit_edge466:                                   ; preds = %._crit_edge466.loopexit.unr-lcssa, %.lr.ph465.epil, %._crit_edge
  call void @dlamrg_(ptr noundef nonnull %2, ptr noundef nonnull %23, ptr noundef %9, ptr noundef nonnull @c__1, ptr noundef nonnull @c__1, ptr noundef %13) #7
  %145 = load i32, ptr %1, align 4, !tbaa !5
  store i32 %145, ptr %18, align 4, !tbaa !5
  %.not439467 = icmp slt i32 %145, 1
  br i1 %.not439467, label %._crit_edge471, label %.lr.ph470.preheader

.lr.ph470.preheader:                              ; preds = %._crit_edge466
  %146 = zext nneg i32 %145 to i64
  %xtraiter750 = and i64 %146, 3
  %147 = icmp ult i32 %145, 4
  br i1 %147, label %._crit_edge471.loopexit.unr-lcssa, label %.lr.ph470.preheader.new

.lr.ph470.preheader.new:                          ; preds = %.lr.ph470.preheader
  %unroll_iter753 = and i64 %146, 2147483644
  br label %.lr.ph470

.lr.ph470:                                        ; preds = %.lr.ph470, %.lr.ph470.preheader.new
  %indvars.iv585 = phi i64 [ 1, %.lr.ph470.preheader.new ], [ %indvars.iv.next586.3, %.lr.ph470 ]
  %niter754 = phi i64 [ 0, %.lr.ph470.preheader.new ], [ %niter754.next.3, %.lr.ph470 ]
  %148 = getelementptr inbounds i32, ptr %35, i64 %indvars.iv585
  %149 = load i32, ptr %148, align 4, !tbaa !5
  %150 = sext i32 %149 to i64
  %151 = getelementptr inbounds i32, ptr %29, i64 %150
  %152 = load i32, ptr %151, align 4, !tbaa !5
  %153 = getelementptr inbounds i32, ptr %34, i64 %indvars.iv585
  store i32 %152, ptr %153, align 4, !tbaa !5
  %154 = getelementptr i32, ptr %13, i64 %indvars.iv585
  %155 = load i32, ptr %154, align 4, !tbaa !5
  %156 = sext i32 %155 to i64
  %157 = getelementptr inbounds i32, ptr %29, i64 %156
  %158 = load i32, ptr %157, align 4, !tbaa !5
  %159 = getelementptr i32, ptr %12, i64 %indvars.iv585
  store i32 %158, ptr %159, align 4, !tbaa !5
  %indvars.iv.next586.1 = add nuw nsw i64 %indvars.iv585, 2
  %160 = getelementptr inbounds i32, ptr %35, i64 %indvars.iv.next586.1
  %161 = load i32, ptr %160, align 4, !tbaa !5
  %162 = sext i32 %161 to i64
  %163 = getelementptr inbounds i32, ptr %29, i64 %162
  %164 = load i32, ptr %163, align 4, !tbaa !5
  %165 = getelementptr inbounds i32, ptr %34, i64 %indvars.iv.next586.1
  store i32 %164, ptr %165, align 4, !tbaa !5
  %indvars.iv.next586.2 = add nuw nsw i64 %indvars.iv585, 3
  %166 = getelementptr inbounds i32, ptr %35, i64 %indvars.iv.next586.2
  %167 = load i32, ptr %166, align 4, !tbaa !5
  %168 = sext i32 %167 to i64
  %169 = getelementptr inbounds i32, ptr %29, i64 %168
  %170 = load i32, ptr %169, align 4, !tbaa !5
  %171 = getelementptr inbounds i32, ptr %34, i64 %indvars.iv.next586.2
  store i32 %170, ptr %171, align 4, !tbaa !5
  %indvars.iv.next586.3 = add nuw nsw i64 %indvars.iv585, 4
  %niter754.next.3 = add i64 %niter754, 4
  %niter754.ncmp.3 = icmp eq i64 %niter754.next.3, %unroll_iter753
  br i1 %niter754.ncmp.3, label %._crit_edge471.loopexit.unr-lcssa, label %.lr.ph470, !llvm.loop !25

._crit_edge471.loopexit.unr-lcssa:                ; preds = %.lr.ph470, %.lr.ph470.preheader
  %indvars.iv585.unr = phi i64 [ 1, %.lr.ph470.preheader ], [ %indvars.iv.next586.3, %.lr.ph470 ]
  %lcmp.mod752.not = icmp eq i64 %xtraiter750, 0
  br i1 %lcmp.mod752.not, label %._crit_edge471, label %.lr.ph470.epil

.lr.ph470.epil:                                   ; preds = %._crit_edge471.loopexit.unr-lcssa, %.lr.ph470.epil
  %indvars.iv585.epil = phi i64 [ %indvars.iv.next586.epil, %.lr.ph470.epil ], [ %indvars.iv585.unr, %._crit_edge471.loopexit.unr-lcssa ]
  %epil.iter751 = phi i64 [ %epil.iter751.next, %.lr.ph470.epil ], [ 0, %._crit_edge471.loopexit.unr-lcssa ]
  %172 = getelementptr inbounds i32, ptr %35, i64 %indvars.iv585.epil
  %173 = load i32, ptr %172, align 4, !tbaa !5
  %174 = sext i32 %173 to i64
  %175 = getelementptr inbounds i32, ptr %29, i64 %174
  %176 = load i32, ptr %175, align 4, !tbaa !5
  %177 = getelementptr inbounds i32, ptr %34, i64 %indvars.iv585.epil
  store i32 %176, ptr %177, align 4, !tbaa !5
  %indvars.iv.next586.epil = add nuw nsw i64 %indvars.iv585.epil, 1
  %epil.iter751.next = add i64 %epil.iter751, 1
  %epil.iter751.cmp.not = icmp eq i64 %epil.iter751.next, %xtraiter750
  br i1 %epil.iter751.cmp.not, label %._crit_edge471, label %.lr.ph470.epil, !llvm.loop !26

._crit_edge471:                                   ; preds = %._crit_edge471.loopexit.unr-lcssa, %.lr.ph470.epil, %._crit_edge466
  %178 = call i32 @idamax_(ptr noundef nonnull %1, ptr noundef %8, ptr noundef nonnull @c__1) #7
  %179 = call i32 @idamax_(ptr noundef nonnull %1, ptr noundef %3, ptr noundef nonnull @c__1) #7
  %180 = call double @dlamch_(ptr noundef nonnull @.str.1) #7
  %181 = sext i32 %179 to i64
  %182 = getelementptr inbounds double, ptr %25, i64 %181
  %183 = load double, ptr %182, align 8, !tbaa !9
  %184 = fcmp oge double %183, 0.000000e+00
  %185 = fneg double %183
  %186 = select i1 %184, double %183, double %185
  %187 = sext i32 %178 to i64
  %188 = getelementptr inbounds double, ptr %30, i64 %187
  %189 = load double, ptr %188, align 8, !tbaa !9
  %190 = fcmp oge double %189, 0.000000e+00
  %191 = fneg double %189
  %192 = select i1 %190, double %189, double %191
  %193 = fmul double %180, 8.000000e+00
  %194 = fcmp oge double %186, %192
  %195 = select i1 %194, double %186, double %192
  %196 = fmul double %193, %195
  %197 = load double, ptr %7, align 8, !tbaa !9
  %198 = fmul double %197, %192
  %199 = fcmp ugt double %198, %196
  br i1 %199, label %216, label %200

200:                                              ; preds = %._crit_edge471
  store i32 0, ptr %0, align 4, !tbaa !5
  %201 = load i32, ptr %1, align 4, !tbaa !5
  store i32 %201, ptr %18, align 4, !tbaa !5
  %invariant.gep = getelementptr i8, ptr %28, i64 8
  %.not452472 = icmp slt i32 %201, 1
  br i1 %.not452472, label %._crit_edge477, label %.lr.ph476

.lr.ph476:                                        ; preds = %200, %.lr.ph476
  %indvars.iv590 = phi i64 [ %indvars.iv.next591, %.lr.ph476 ], [ 1, %200 ]
  %.0474 = phi i32 [ %213, %.lr.ph476 ], [ 1, %200 ]
  %202 = getelementptr inbounds i32, ptr %34, i64 %indvars.iv590
  %203 = load i32, ptr %202, align 4, !tbaa !5
  %204 = mul nsw i32 %203, %26
  %205 = sext i32 %204 to i64
  %gep = getelementptr double, ptr %invariant.gep, i64 %205
  %206 = sext i32 %.0474 to i64
  %207 = getelementptr inbounds double, ptr %33, i64 %206
  call void @dcopy_(ptr noundef nonnull %1, ptr noundef %gep, ptr noundef nonnull @c__1, ptr noundef nonnull %207, ptr noundef nonnull @c__1) #7
  %208 = sext i32 %203 to i64
  %209 = getelementptr inbounds double, ptr %25, i64 %208
  %210 = load double, ptr %209, align 8, !tbaa !9
  %211 = getelementptr inbounds double, ptr %31, i64 %indvars.iv590
  store double %210, ptr %211, align 8, !tbaa !9
  %212 = load i32, ptr %1, align 4, !tbaa !5
  %213 = add nsw i32 %212, %.0474
  %indvars.iv.next591 = add nuw nsw i64 %indvars.iv590, 1
  %214 = load i32, ptr %18, align 4, !tbaa !5
  %215 = sext i32 %214 to i64
  %.not452.not = icmp slt i64 %indvars.iv590, %215
  br i1 %.not452.not, label %.lr.ph476, label %._crit_edge477, !llvm.loop !27

._crit_edge477:                                   ; preds = %.lr.ph476, %200
  call void @dlacpy_(ptr noundef nonnull @.str.2, ptr noundef nonnull %1, ptr noundef nonnull %1, ptr noundef %11, ptr noundef nonnull %1, ptr noundef %4, ptr noundef nonnull %5) #7
  call void @dcopy_(ptr noundef nonnull %1, ptr noundef %9, ptr noundef nonnull @c__1, ptr noundef nonnull %3, ptr noundef nonnull @c__1) #7
  br label %.loopexit

216:                                              ; preds = %._crit_edge471
  %217 = load i32, ptr %2, align 4, !tbaa !5
  %.not440478 = icmp slt i32 %217, 1
  br i1 %.not440478, label %._crit_edge482, label %.lr.ph481.preheader

.lr.ph481.preheader:                              ; preds = %216
  %218 = add nuw i32 %217, 1
  %wide.trip.count596 = zext i32 %218 to i64
  %219 = zext nneg i32 %217 to i64
  %min.iters.check703 = icmp ult i32 %217, 8
  br i1 %min.iters.check703, label %.lr.ph481.preheader746, label %vector.ph704

vector.ph704:                                     ; preds = %.lr.ph481.preheader
  %n.vec706 = and i64 %219, 2147483640
  %ind.end707 = or disjoint i64 %n.vec706, 1
  br label %vector.body709

vector.body709:                                   ; preds = %vector.body709, %vector.ph704
  %index710 = phi i64 [ 0, %vector.ph704 ], [ %index.next712, %vector.body709 ]
  %220 = getelementptr i32, ptr %15, i64 %index710
  %221 = getelementptr inbounds i8, ptr %220, i64 16
  store <4 x i32> <i32 1, i32 1, i32 1, i32 1>, ptr %220, align 4, !tbaa !5
  store <4 x i32> <i32 1, i32 1, i32 1, i32 1>, ptr %221, align 4, !tbaa !5
  %index.next712 = add nuw i64 %index710, 8
  %222 = icmp eq i64 %index.next712, %n.vec706
  br i1 %222, label %middle.block701, label %vector.body709, !llvm.loop !28

middle.block701:                                  ; preds = %vector.body709
  %cmp.n713 = icmp eq i64 %n.vec706, %219
  br i1 %cmp.n713, label %._crit_edge482, label %.lr.ph481.preheader746

.lr.ph481.preheader746:                           ; preds = %middle.block701, %.lr.ph481.preheader
  %indvars.iv593.ph = phi i64 [ 1, %.lr.ph481.preheader ], [ %ind.end707, %middle.block701 ]
  br label %.lr.ph481

.lr.ph481:                                        ; preds = %.lr.ph481.preheader746, %.lr.ph481
  %indvars.iv593 = phi i64 [ %indvars.iv.next594, %.lr.ph481 ], [ %indvars.iv593.ph, %.lr.ph481.preheader746 ]
  %223 = getelementptr inbounds i32, ptr %37, i64 %indvars.iv593
  store i32 1, ptr %223, align 4, !tbaa !5
  %indvars.iv.next594 = add nuw nsw i64 %indvars.iv593, 1
  %exitcond597.not = icmp eq i64 %indvars.iv.next594, %wide.trip.count596
  br i1 %exitcond597.not, label %._crit_edge482, label %.lr.ph481, !llvm.loop !29

._crit_edge482:                                   ; preds = %.lr.ph481, %middle.block701, %216
  %224 = load i32, ptr %1, align 4, !tbaa !5
  %.not441483.not = icmp slt i32 %47, %224
  br i1 %.not441483.not, label %.lr.ph486.preheader, label %._crit_edge487

.lr.ph486.preheader:                              ; preds = %._crit_edge482
  %225 = sext i32 %47 to i64
  %226 = add nsw i64 %225, 1
  %227 = add i32 %224, 1
  %228 = xor i32 %47, -1
  %229 = add i32 %224, %228
  %230 = zext i32 %229 to i64
  %231 = add nuw nsw i64 %230, 1
  %min.iters.check716 = icmp ult i32 %229, 7
  br i1 %min.iters.check716, label %.lr.ph486.preheader745, label %vector.ph717

vector.ph717:                                     ; preds = %.lr.ph486.preheader
  %n.vec719 = and i64 %231, 8589934584
  %ind.end720 = add nsw i64 %226, %n.vec719
  %232 = getelementptr i32, ptr %15, i64 %225
  br label %vector.body722

vector.body722:                                   ; preds = %vector.body722, %vector.ph717
  %index723 = phi i64 [ 0, %vector.ph717 ], [ %index.next725, %vector.body722 ]
  %233 = getelementptr i32, ptr %232, i64 %index723
  %234 = getelementptr inbounds i8, ptr %233, i64 16
  store <4 x i32> <i32 3, i32 3, i32 3, i32 3>, ptr %233, align 4, !tbaa !5
  store <4 x i32> <i32 3, i32 3, i32 3, i32 3>, ptr %234, align 4, !tbaa !5
  %index.next725 = add nuw i64 %index723, 8
  %235 = icmp eq i64 %index.next725, %n.vec719
  br i1 %235, label %middle.block714, label %vector.body722, !llvm.loop !30

middle.block714:                                  ; preds = %vector.body722
  %cmp.n726 = icmp eq i64 %231, %n.vec719
  br i1 %cmp.n726, label %._crit_edge487, label %.lr.ph486.preheader745

.lr.ph486.preheader745:                           ; preds = %middle.block714, %.lr.ph486.preheader
  %indvars.iv598.ph = phi i64 [ %226, %.lr.ph486.preheader ], [ %ind.end720, %middle.block714 ]
  br label %.lr.ph486

.lr.ph486:                                        ; preds = %.lr.ph486.preheader745, %.lr.ph486
  %indvars.iv598 = phi i64 [ %indvars.iv.next599, %.lr.ph486 ], [ %indvars.iv598.ph, %.lr.ph486.preheader745 ]
  %236 = getelementptr inbounds i32, ptr %37, i64 %indvars.iv598
  store i32 3, ptr %236, align 4, !tbaa !5
  %indvars.iv.next599 = add nsw i64 %indvars.iv598, 1
  %lftr.wideiv601 = trunc i64 %indvars.iv.next599 to i32
  %exitcond602.not = icmp eq i32 %227, %lftr.wideiv601
  br i1 %exitcond602.not, label %._crit_edge487, label %.lr.ph486, !llvm.loop !31

._crit_edge487:                                   ; preds = %.lr.ph486, %middle.block714, %._crit_edge482
  store i32 0, ptr %0, align 4, !tbaa !5
  %237 = load i32, ptr %1, align 4, !tbaa !5
  %238 = add i32 %237, 1
  store i32 %237, ptr %18, align 4, !tbaa !5
  %.not442488 = icmp slt i32 %237, 1
  br i1 %.not442488, label %.preheader, label %.lr.ph492.preheader

.lr.ph492.preheader:                              ; preds = %._crit_edge487
  %239 = sext i32 %238 to i64
  %wide.trip.count610 = zext i32 %238 to i64
  %240 = load i32, ptr %12, align 4, !tbaa !5
  %241 = sext i32 %240 to i64
  %242 = getelementptr inbounds double, ptr %30, i64 %241
  %243 = load double, ptr %242, align 8, !tbaa !9
  %244 = fcmp oge double %243, 0.000000e+00
  %245 = fneg double %243
  %246 = select i1 %244, double %243, double %245
  %247 = fmul double %197, %246
  %248 = fcmp ugt double %247, %196
  br i1 %248, label %.preheader.loopexit.split.loop.exit665, label %.lr.ph692

.lr.ph492:                                        ; preds = %270
  %249 = getelementptr i32, ptr %12, i64 %indvars.iv605690
  %250 = load i32, ptr %249, align 4, !tbaa !5
  %251 = sext i32 %250 to i64
  %252 = getelementptr inbounds double, ptr %30, i64 %251
  %253 = load double, ptr %252, align 8, !tbaa !9
  %254 = fcmp oge double %253, 0.000000e+00
  %255 = fneg double %253
  %256 = select i1 %254, double %253, double %255
  %257 = fmul double %197, %256
  %258 = fcmp ugt double %257, %196
  br i1 %258, label %.preheader.loopexit.split.loop.exit665, label %.lr.ph692, !llvm.loop !32

.preheader.loopexit.split.loop.exit665:           ; preds = %.lr.ph492, %.lr.ph492.preheader
  %.lcssa685 = phi i32 [ %237, %.lr.ph492.preheader ], [ %267, %.lr.ph492 ]
  %indvars.iv605.lcssa = phi i64 [ 1, %.lr.ph492.preheader ], [ %indvars.iv.next606, %.lr.ph492 ]
  %indvars.iv603.lcssa = phi i64 [ %239, %.lr.ph492.preheader ], [ %indvars.iv.next604, %.lr.ph492 ]
  %.lcssa678 = phi i32 [ %240, %.lr.ph492.preheader ], [ %250, %.lr.ph492 ]
  %259 = trunc nsw i64 %indvars.iv603.lcssa to i32
  %260 = trunc nuw nsw i64 %indvars.iv605.lcssa to i32
  br label %.preheader

.preheader:                                       ; preds = %270, %.preheader.loopexit.split.loop.exit665, %._crit_edge487
  %261 = phi i32 [ %237, %._crit_edge487 ], [ %.lcssa685, %.preheader.loopexit.split.loop.exit665 ], [ %267, %270 ]
  %.1415.lcssa = phi i32 [ 1, %._crit_edge487 ], [ %260, %.preheader.loopexit.split.loop.exit665 ], [ %238, %270 ]
  %.0411.lcssa = phi i32 [ %238, %._crit_edge487 ], [ %259, %.preheader.loopexit.split.loop.exit665 ], [ 1, %270 ]
  %.0408.ph = phi i32 [ undef, %._crit_edge487 ], [ %.lcssa678, %.preheader.loopexit.split.loop.exit665 ], [ %264, %270 ]
  %invariant.gep505 = getelementptr i8, ptr %28, i64 8
  %invariant.gep509 = getelementptr i8, ptr %14, i64 -8
  %.not443511 = icmp slt i32 %.1415.lcssa, %261
  br i1 %.not443511, label %.lr.ph514.preheader, label %.loopexit454

.lr.ph514.preheader:                              ; preds = %.preheader
  %262 = sext i32 %.1415.lcssa to i64
  br label %.lr.ph514

.lr.ph692:                                        ; preds = %.lr.ph492.preheader, %.lr.ph492
  %263 = phi i64 [ %251, %.lr.ph492 ], [ %241, %.lr.ph492.preheader ]
  %264 = phi i32 [ %250, %.lr.ph492 ], [ %240, %.lr.ph492.preheader ]
  %indvars.iv603691 = phi i64 [ %indvars.iv.next604, %.lr.ph492 ], [ %239, %.lr.ph492.preheader ]
  %indvars.iv605690 = phi i64 [ %indvars.iv.next606, %.lr.ph492 ], [ 1, %.lr.ph492.preheader ]
  %indvars.iv.next604 = add nsw i64 %indvars.iv603691, -1
  %265 = getelementptr inbounds i32, ptr %37, i64 %263
  store i32 4, ptr %265, align 4, !tbaa !5
  %266 = getelementptr inbounds i32, ptr %36, i64 %indvars.iv.next604
  store i32 %264, ptr %266, align 4, !tbaa !5
  %267 = load i32, ptr %1, align 4, !tbaa !5
  %268 = zext i32 %267 to i64
  %269 = icmp eq i64 %indvars.iv605690, %268
  br i1 %269, label %.loopexit454, label %270

270:                                              ; preds = %.lr.ph692
  %indvars.iv.next606 = add nuw nsw i64 %indvars.iv605690, 1
  %exitcond611.not = icmp eq i64 %indvars.iv.next606, %wide.trip.count610
  br i1 %exitcond611.not, label %.preheader, label %.lr.ph492, !llvm.loop !32

.lr.ph514:                                        ; preds = %.lr.ph514.preheader, %358
  %indvars.iv615 = phi i64 [ %262, %.lr.ph514.preheader ], [ %indvars.iv.next616, %358 ]
  %.0408513 = phi i32 [ %.0408.ph, %.lr.ph514.preheader ], [ %.1409, %358 ]
  %.1412512 = phi i32 [ %.0411.lcssa, %.lr.ph514.preheader ], [ %.2413, %358 ]
  %indvars.iv.next616 = add nsw i64 %indvars.iv615, 1
  %.in = getelementptr i32, ptr %12, i64 %indvars.iv615
  %271 = load i32, ptr %.in, align 4, !tbaa !5
  %272 = load double, ptr %7, align 8, !tbaa !9
  %273 = sext i32 %271 to i64
  %274 = getelementptr inbounds double, ptr %30, i64 %273
  %275 = load double, ptr %274, align 8, !tbaa !9
  %276 = fcmp oge double %275, 0.000000e+00
  %277 = fneg double %275
  %278 = select i1 %276, double %275, double %277
  %279 = fmul double %272, %278
  %280 = fcmp ugt double %279, %196
  br i1 %280, label %286, label %281

281:                                              ; preds = %.lr.ph514
  %282 = add nsw i32 %.1412512, -1
  %283 = getelementptr inbounds i32, ptr %37, i64 %273
  store i32 4, ptr %283, align 4, !tbaa !5
  %284 = sext i32 %282 to i64
  %285 = getelementptr inbounds i32, ptr %36, i64 %284
  store i32 %271, ptr %285, align 4, !tbaa !5
  br label %358

286:                                              ; preds = %.lr.ph514
  %287 = sext i32 %.0408513 to i64
  %288 = getelementptr inbounds double, ptr %30, i64 %287
  %289 = load double, ptr %288, align 8, !tbaa !9
  store double %289, ptr %21, align 8, !tbaa !9
  store double %275, ptr %20, align 8, !tbaa !9
  %290 = call double @dlapy2_(ptr noundef nonnull %20, ptr noundef nonnull %21) #7
  %291 = getelementptr inbounds double, ptr %25, i64 %273
  %292 = load double, ptr %291, align 8, !tbaa !9
  %293 = getelementptr inbounds double, ptr %25, i64 %287
  %294 = load double, ptr %293, align 8, !tbaa !9
  %295 = fsub double %292, %294
  store double %295, ptr %22, align 8, !tbaa !9
  %296 = load double, ptr %20, align 8, !tbaa !9
  %297 = load double, ptr %21, align 8, !tbaa !9
  %298 = fneg double %297
  %299 = insertelement <2 x double> poison, double %296, i64 0
  %300 = insertelement <2 x double> %299, double %298, i64 1
  %301 = insertelement <2 x double> poison, double %290, i64 0
  %302 = shufflevector <2 x double> %301, <2 x double> poison, <2 x i32> zeroinitializer
  %303 = fdiv <2 x double> %300, %302
  %304 = extractelement <2 x double> %303, i64 0
  store double %304, ptr %20, align 8, !tbaa !9
  %305 = extractelement <2 x double> %303, i64 1
  store double %305, ptr %21, align 8, !tbaa !9
  %306 = fmul double %295, %304
  %307 = fmul double %306, %305
  %308 = fcmp oge double %307, 0.000000e+00
  %309 = fneg double %307
  %310 = select i1 %308, double %307, double %309
  %311 = fcmp ugt double %310, %196
  br i1 %311, label %350, label %312

312:                                              ; preds = %286
  store double %290, ptr %274, align 8, !tbaa !9
  store double 0.000000e+00, ptr %288, align 8, !tbaa !9
  %313 = getelementptr inbounds i32, ptr %37, i64 %273
  %314 = load i32, ptr %313, align 4, !tbaa !5
  %315 = getelementptr inbounds i32, ptr %37, i64 %287
  %316 = load i32, ptr %315, align 4, !tbaa !5
  %.not444 = icmp eq i32 %314, %316
  br i1 %.not444, label %318, label %317

317:                                              ; preds = %312
  store i32 2, ptr %313, align 4, !tbaa !5
  br label %318

318:                                              ; preds = %317, %312
  store i32 4, ptr %315, align 4, !tbaa !5
  %319 = mul nsw i32 %.0408513, %26
  %320 = sext i32 %319 to i64
  %gep506 = getelementptr double, ptr %invariant.gep505, i64 %320
  %321 = mul nsw i32 %271, %26
  %322 = sext i32 %321 to i64
  %gep508 = getelementptr double, ptr %invariant.gep505, i64 %322
  call void @drot_(ptr noundef nonnull %1, ptr noundef %gep506, ptr noundef nonnull @c__1, ptr noundef %gep508, ptr noundef nonnull @c__1, ptr noundef nonnull %20, ptr noundef nonnull %21) #7
  %323 = load double, ptr %20, align 8, !tbaa !9
  %324 = load double, ptr %21, align 8, !tbaa !9
  %325 = load double, ptr %293, align 8, !tbaa !9
  %326 = fmul double %323, %323
  %327 = load double, ptr %291, align 8, !tbaa !9
  %328 = fmul double %324, %324
  %329 = fmul double %328, %327
  %330 = call double @llvm.fmuladd.f64(double %325, double %326, double %329)
  store double %330, ptr %22, align 8, !tbaa !9
  %331 = fmul double %326, %327
  %332 = call double @llvm.fmuladd.f64(double %325, double %328, double %331)
  store double %332, ptr %291, align 8, !tbaa !9
  store double %330, ptr %293, align 8, !tbaa !9
  %333 = add nsw i32 %.1412512, -1
  %334 = load i32, ptr %1, align 4, !tbaa !5
  %.not445499 = icmp sgt i32 %.1412512, %334
  br i1 %.not445499, label %._crit_edge503, label %.lr.ph502

.lr.ph502:                                        ; preds = %318, %344
  %indvars.iv612 = phi i64 [ %indvars.iv.next613, %344 ], [ 1, %318 ]
  %335 = phi i32 [ %346, %344 ], [ %.1412512, %318 ]
  %336 = sext i32 %335 to i64
  %337 = getelementptr inbounds i32, ptr %36, i64 %336
  %338 = load i32, ptr %337, align 4, !tbaa !5
  %339 = sext i32 %338 to i64
  %340 = getelementptr inbounds double, ptr %25, i64 %339
  %341 = load double, ptr %340, align 8, !tbaa !9
  %342 = fcmp olt double %330, %341
  %343 = getelementptr i8, ptr %337, i64 -4
  br i1 %342, label %344, label %348

344:                                              ; preds = %.lr.ph502
  store i32 %338, ptr %343, align 4, !tbaa !5
  store i32 %.0408513, ptr %337, align 4, !tbaa !5
  %indvars.iv.next613 = add nuw nsw i64 %indvars.iv612, 1
  %345 = trunc nuw nsw i64 %indvars.iv612 to i32
  %346 = add i32 %.1412512, %345
  %347 = load i32, ptr %1, align 4, !tbaa !5
  %.not445 = icmp sgt i32 %346, %347
  br i1 %.not445, label %._crit_edge503, label %.lr.ph502

348:                                              ; preds = %.lr.ph502
  store i32 %.0408513, ptr %343, align 4, !tbaa !5
  br label %358

._crit_edge503:                                   ; preds = %344, %318
  %.lcssa = phi i32 [ %.1412512, %318 ], [ %346, %344 ]
  %349 = sext i32 %.lcssa to i64
  %gep510 = getelementptr i32, ptr %invariant.gep509, i64 %349
  store i32 %.0408513, ptr %gep510, align 4, !tbaa !5
  br label %358

350:                                              ; preds = %286
  %351 = load i32, ptr %0, align 4, !tbaa !5
  %352 = add nsw i32 %351, 1
  store i32 %352, ptr %0, align 4, !tbaa !5
  %353 = sext i32 %352 to i64
  %354 = getelementptr inbounds double, ptr %31, i64 %353
  store double %294, ptr %354, align 8, !tbaa !9
  %355 = load double, ptr %288, align 8, !tbaa !9
  %356 = getelementptr inbounds double, ptr %32, i64 %353
  store double %355, ptr %356, align 8, !tbaa !9
  %357 = getelementptr inbounds i32, ptr %36, i64 %353
  store i32 %.0408513, ptr %357, align 4, !tbaa !5
  br label %358

358:                                              ; preds = %348, %._crit_edge503, %350, %281
  %.2413 = phi i32 [ %282, %281 ], [ %.1412512, %350 ], [ %333, %._crit_edge503 ], [ %333, %348 ]
  %.1409 = phi i32 [ %.0408513, %281 ], [ %271, %350 ], [ %271, %._crit_edge503 ], [ %271, %348 ]
  %359 = load i32, ptr %1, align 4, !tbaa !5
  %360 = sext i32 %359 to i64
  %.not443 = icmp slt i64 %indvars.iv.next616, %360
  br i1 %.not443, label %.lr.ph514, label %.loopexit454

.loopexit454:                                     ; preds = %.lr.ph692, %358, %.preheader
  %.2410 = phi i32 [ %.0408.ph, %.preheader ], [ %.1409, %358 ], [ undef, %.lr.ph692 ]
  %361 = load i32, ptr %0, align 4, !tbaa !5
  %362 = add nsw i32 %361, 1
  store i32 %362, ptr %0, align 4, !tbaa !5
  %363 = sext i32 %.2410 to i64
  %364 = getelementptr inbounds double, ptr %25, i64 %363
  %365 = load double, ptr %364, align 8, !tbaa !9
  %366 = sext i32 %362 to i64
  %367 = getelementptr inbounds double, ptr %31, i64 %366
  store double %365, ptr %367, align 8, !tbaa !9
  %368 = getelementptr inbounds double, ptr %30, i64 %363
  %369 = load double, ptr %368, align 8, !tbaa !9
  %370 = getelementptr inbounds double, ptr %32, i64 %366
  store double %369, ptr %370, align 8, !tbaa !9
  %371 = getelementptr inbounds i32, ptr %36, i64 %366
  store i32 %.2410, ptr %371, align 4, !tbaa !5
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(16) %19, i8 0, i64 16, i1 false), !tbaa !5
  %372 = load i32, ptr %1, align 4, !tbaa !5
  %.not446517 = icmp slt i32 %372, 1
  br i1 %.not446517, label %._crit_edge521, label %.lr.ph520.preheader

.lr.ph520.preheader:                              ; preds = %.loopexit454
  %373 = zext nneg i32 %372 to i64
  %xtraiter755 = and i64 %373, 1
  %374 = icmp eq i32 %372, 1
  br i1 %374, label %._crit_edge521.loopexit.unr-lcssa, label %.lr.ph520.preheader.new

.lr.ph520.preheader.new:                          ; preds = %.lr.ph520.preheader
  %unroll_iter758 = and i64 %373, 2147483646
  br label %.lr.ph520

.lr.ph520:                                        ; preds = %.lr.ph520, %.lr.ph520.preheader.new
  %indvars.iv621 = phi i64 [ 1, %.lr.ph520.preheader.new ], [ %indvars.iv.next622.1, %.lr.ph520 ]
  %niter759 = phi i64 [ 0, %.lr.ph520.preheader.new ], [ %niter759.next.1, %.lr.ph520 ]
  %375 = getelementptr inbounds i32, ptr %37, i64 %indvars.iv621
  %376 = load i32, ptr %375, align 4, !tbaa !5
  %377 = add nsw i32 %376, -1
  %378 = sext i32 %377 to i64
  %379 = getelementptr inbounds [4 x i32], ptr %19, i64 0, i64 %378
  %380 = load i32, ptr %379, align 4, !tbaa !5
  %381 = add nsw i32 %380, 1
  store i32 %381, ptr %379, align 4, !tbaa !5
  %382 = getelementptr i32, ptr %15, i64 %indvars.iv621
  %383 = load i32, ptr %382, align 4, !tbaa !5
  %384 = add nsw i32 %383, -1
  %385 = sext i32 %384 to i64
  %386 = getelementptr inbounds [4 x i32], ptr %19, i64 0, i64 %385
  %387 = load i32, ptr %386, align 4, !tbaa !5
  %388 = add nsw i32 %387, 1
  store i32 %388, ptr %386, align 4, !tbaa !5
  %indvars.iv.next622.1 = add nuw nsw i64 %indvars.iv621, 2
  %niter759.next.1 = add i64 %niter759, 2
  %niter759.ncmp.1 = icmp eq i64 %niter759.next.1, %unroll_iter758
  br i1 %niter759.ncmp.1, label %._crit_edge521.loopexit.unr-lcssa, label %.lr.ph520, !llvm.loop !33

._crit_edge521.loopexit.unr-lcssa:                ; preds = %.lr.ph520, %.lr.ph520.preheader
  %indvars.iv621.unr = phi i64 [ 1, %.lr.ph520.preheader ], [ %indvars.iv.next622.1, %.lr.ph520 ]
  %lcmp.mod757.not = icmp eq i64 %xtraiter755, 0
  br i1 %lcmp.mod757.not, label %._crit_edge521.loopexit, label %.lr.ph520.epil

.lr.ph520.epil:                                   ; preds = %._crit_edge521.loopexit.unr-lcssa
  %389 = getelementptr inbounds i32, ptr %37, i64 %indvars.iv621.unr
  %390 = load i32, ptr %389, align 4, !tbaa !5
  %391 = add nsw i32 %390, -1
  %392 = sext i32 %391 to i64
  %393 = getelementptr inbounds [4 x i32], ptr %19, i64 0, i64 %392
  %394 = load i32, ptr %393, align 4, !tbaa !5
  %395 = add nsw i32 %394, 1
  store i32 %395, ptr %393, align 4, !tbaa !5
  br label %._crit_edge521.loopexit

._crit_edge521.loopexit:                          ; preds = %._crit_edge521.loopexit.unr-lcssa, %.lr.ph520.epil
  %.pre648 = load i32, ptr %19, align 16, !tbaa !5
  %.phi.trans.insert = getelementptr inbounds i8, ptr %19, i64 4
  %.pre649 = load i32, ptr %.phi.trans.insert, align 4, !tbaa !5
  %.phi.trans.insert650 = getelementptr inbounds i8, ptr %19, i64 8
  %.pre651 = load i32, ptr %.phi.trans.insert650, align 8, !tbaa !5
  %.phi.trans.insert652 = getelementptr inbounds i8, ptr %19, i64 12
  %.pre653 = load i32, ptr %.phi.trans.insert652, align 4, !tbaa !5
  br label %._crit_edge521

._crit_edge521:                                   ; preds = %._crit_edge521.loopexit, %.loopexit454
  %396 = phi i32 [ %.pre653, %._crit_edge521.loopexit ], [ 0, %.loopexit454 ]
  %397 = phi i32 [ %.pre651, %._crit_edge521.loopexit ], [ 0, %.loopexit454 ]
  %398 = phi i32 [ %.pre649, %._crit_edge521.loopexit ], [ 0, %.loopexit454 ]
  %399 = phi i32 [ %.pre648, %._crit_edge521.loopexit ], [ 0, %.loopexit454 ]
  store i32 1, ptr %24, align 16, !tbaa !5
  %400 = add nsw i32 %399, 1
  %401 = getelementptr inbounds i8, ptr %24, i64 4
  store i32 %400, ptr %401, align 4, !tbaa !5
  %402 = getelementptr inbounds i8, ptr %19, i64 4
  %403 = add nsw i32 %398, %400
  %404 = getelementptr inbounds i8, ptr %24, i64 8
  store i32 %403, ptr %404, align 8, !tbaa !5
  %405 = getelementptr inbounds i8, ptr %19, i64 8
  %406 = add nsw i32 %397, %403
  %407 = getelementptr inbounds i8, ptr %24, i64 12
  store i32 %406, ptr %407, align 4, !tbaa !5
  %408 = getelementptr inbounds i8, ptr %19, i64 12
  %409 = sub nsw i32 %372, %396
  store i32 %409, ptr %0, align 4, !tbaa !5
  %410 = load i32, ptr %1, align 4, !tbaa !5
  %.not447522 = icmp slt i32 %410, 1
  br i1 %.not447522, label %._crit_edge526, label %.lr.ph525.preheader

.lr.ph525.preheader:                              ; preds = %._crit_edge521
  %411 = zext nneg i32 %410 to i64
  %xtraiter760 = and i64 %411, 1
  %412 = icmp eq i32 %410, 1
  br i1 %412, label %._crit_edge526.loopexit.unr-lcssa, label %.lr.ph525.preheader.new

.lr.ph525.preheader.new:                          ; preds = %.lr.ph525.preheader
  %unroll_iter763 = and i64 %411, 2147483646
  br label %.lr.ph525

.lr.ph525:                                        ; preds = %.lr.ph525, %.lr.ph525.preheader.new
  %indvars.iv626 = phi i64 [ 1, %.lr.ph525.preheader.new ], [ %indvars.iv.next627.1, %.lr.ph525 ]
  %niter764 = phi i64 [ 0, %.lr.ph525.preheader.new ], [ %niter764.next.1, %.lr.ph525 ]
  %413 = getelementptr inbounds i32, ptr %36, i64 %indvars.iv626
  %414 = load i32, ptr %413, align 4, !tbaa !5
  %415 = sext i32 %414 to i64
  %416 = getelementptr inbounds i32, ptr %37, i64 %415
  %417 = load i32, ptr %416, align 4, !tbaa !5
  %418 = add nsw i32 %417, -1
  %419 = sext i32 %418 to i64
  %420 = getelementptr inbounds [4 x i32], ptr %24, i64 0, i64 %419
  %421 = load i32, ptr %420, align 4, !tbaa !5
  %422 = sext i32 %421 to i64
  %423 = getelementptr inbounds i32, ptr %34, i64 %422
  store i32 %414, ptr %423, align 4, !tbaa !5
  %424 = getelementptr inbounds i32, ptr %35, i64 %422
  %425 = trunc nuw nsw i64 %indvars.iv626 to i32
  store i32 %425, ptr %424, align 4, !tbaa !5
  %426 = add nsw i32 %421, 1
  store i32 %426, ptr %420, align 4, !tbaa !5
  %427 = getelementptr i32, ptr %14, i64 %indvars.iv626
  %428 = load i32, ptr %427, align 4, !tbaa !5
  %429 = sext i32 %428 to i64
  %430 = getelementptr inbounds i32, ptr %37, i64 %429
  %431 = load i32, ptr %430, align 4, !tbaa !5
  %432 = add nsw i32 %431, -1
  %433 = sext i32 %432 to i64
  %434 = getelementptr inbounds [4 x i32], ptr %24, i64 0, i64 %433
  %435 = load i32, ptr %434, align 4, !tbaa !5
  %436 = sext i32 %435 to i64
  %437 = getelementptr inbounds i32, ptr %34, i64 %436
  store i32 %428, ptr %437, align 4, !tbaa !5
  %438 = getelementptr inbounds i32, ptr %35, i64 %436
  %439 = trunc i64 %indvars.iv626 to i32
  %440 = add i32 %439, 1
  store i32 %440, ptr %438, align 4, !tbaa !5
  %441 = add nsw i32 %435, 1
  store i32 %441, ptr %434, align 4, !tbaa !5
  %indvars.iv.next627.1 = add nuw nsw i64 %indvars.iv626, 2
  %niter764.next.1 = add i64 %niter764, 2
  %niter764.ncmp.1 = icmp eq i64 %niter764.next.1, %unroll_iter763
  br i1 %niter764.ncmp.1, label %._crit_edge526.loopexit.unr-lcssa, label %.lr.ph525, !llvm.loop !34

._crit_edge526.loopexit.unr-lcssa:                ; preds = %.lr.ph525, %.lr.ph525.preheader
  %indvars.iv626.unr = phi i64 [ 1, %.lr.ph525.preheader ], [ %indvars.iv.next627.1, %.lr.ph525 ]
  %lcmp.mod762.not = icmp eq i64 %xtraiter760, 0
  br i1 %lcmp.mod762.not, label %._crit_edge526, label %.lr.ph525.epil

.lr.ph525.epil:                                   ; preds = %._crit_edge526.loopexit.unr-lcssa
  %442 = getelementptr inbounds i32, ptr %36, i64 %indvars.iv626.unr
  %443 = load i32, ptr %442, align 4, !tbaa !5
  %444 = sext i32 %443 to i64
  %445 = getelementptr inbounds i32, ptr %37, i64 %444
  %446 = load i32, ptr %445, align 4, !tbaa !5
  %447 = add nsw i32 %446, -1
  %448 = sext i32 %447 to i64
  %449 = getelementptr inbounds [4 x i32], ptr %24, i64 0, i64 %448
  %450 = load i32, ptr %449, align 4, !tbaa !5
  %451 = sext i32 %450 to i64
  %452 = getelementptr inbounds i32, ptr %34, i64 %451
  store i32 %443, ptr %452, align 4, !tbaa !5
  %453 = getelementptr inbounds i32, ptr %35, i64 %451
  %454 = trunc nuw nsw i64 %indvars.iv626.unr to i32
  store i32 %454, ptr %453, align 4, !tbaa !5
  %455 = add nsw i32 %450, 1
  store i32 %455, ptr %449, align 4, !tbaa !5
  br label %._crit_edge526

._crit_edge526:                                   ; preds = %.lr.ph525.epil, %._crit_edge526.loopexit.unr-lcssa, %._crit_edge521
  %456 = add nsw i32 %398, %399
  %457 = load i32, ptr %2, align 4, !tbaa !5
  %458 = mul nsw i32 %457, %456
  %459 = add nsw i32 %458, 1
  store i32 %399, ptr %18, align 4, !tbaa !5
  %invariant.gep527 = getelementptr i8, ptr %28, i64 8
  %.not448529 = icmp slt i32 %399, 1
  br i1 %.not448529, label %._crit_edge535, label %.lr.ph534

.lr.ph534:                                        ; preds = %._crit_edge526, %.lr.ph534
  %indvars.iv631 = phi i64 [ %indvars.iv.next632, %.lr.ph534 ], [ 1, %._crit_edge526 ]
  %.0406532 = phi i32 [ %471, %.lr.ph534 ], [ 1, %._crit_edge526 ]
  %indvars633 = trunc i64 %indvars.iv631 to i32
  %460 = getelementptr inbounds i32, ptr %34, i64 %indvars.iv631
  %461 = load i32, ptr %460, align 4, !tbaa !5
  %462 = mul nsw i32 %461, %26
  %463 = sext i32 %462 to i64
  %gep528 = getelementptr double, ptr %invariant.gep527, i64 %463
  %464 = sext i32 %.0406532 to i64
  %465 = getelementptr inbounds double, ptr %33, i64 %464
  call void @dcopy_(ptr noundef nonnull %2, ptr noundef %gep528, ptr noundef nonnull @c__1, ptr noundef nonnull %465, ptr noundef nonnull @c__1) #7
  %466 = sext i32 %461 to i64
  %467 = getelementptr inbounds double, ptr %25, i64 %466
  %468 = load double, ptr %467, align 8, !tbaa !9
  %469 = getelementptr inbounds double, ptr %30, i64 %indvars.iv631
  store double %468, ptr %469, align 8, !tbaa !9
  %indvars.iv.next632 = add nuw nsw i64 %indvars.iv631, 1
  %470 = load i32, ptr %2, align 4, !tbaa !5
  %471 = add nsw i32 %470, %.0406532
  %472 = load i32, ptr %18, align 4, !tbaa !5
  %.not448.not = icmp sgt i32 %472, %indvars633
  br i1 %.not448.not, label %.lr.ph534, label %._crit_edge535.loopexit, !llvm.loop !35

._crit_edge535.loopexit:                          ; preds = %.lr.ph534
  %473 = trunc nuw i64 %indvars.iv.next632 to i32
  br label %._crit_edge535

._crit_edge535:                                   ; preds = %._crit_edge535.loopexit, %._crit_edge526
  %.6424.lcssa = phi i32 [ 1, %._crit_edge526 ], [ %473, %._crit_edge535.loopexit ]
  %.0406.lcssa = phi i32 [ 1, %._crit_edge526 ], [ %471, %._crit_edge535.loopexit ]
  %474 = load i32, ptr %402, align 4, !tbaa !5
  store i32 %474, ptr %18, align 4, !tbaa !5
  %.not449540 = icmp slt i32 %474, 1
  br i1 %.not449540, label %._crit_edge547, label %.lr.ph546.preheader

.lr.ph546.preheader:                              ; preds = %._crit_edge535
  %475 = zext i32 %.6424.lcssa to i64
  br label %.lr.ph546

.lr.ph546:                                        ; preds = %.lr.ph546.preheader, %.lr.ph546
  %indvars.iv636 = phi i64 [ %475, %.lr.ph546.preheader ], [ %indvars.iv.next637, %.lr.ph546 ]
  %.1544 = phi i32 [ %459, %.lr.ph546.preheader ], [ %496, %.lr.ph546 ]
  %.1407543 = phi i32 [ %.0406.lcssa, %.lr.ph546.preheader ], [ %494, %.lr.ph546 ]
  %.7542 = phi i32 [ 1, %.lr.ph546.preheader ], [ %497, %.lr.ph546 ]
  %476 = getelementptr inbounds i32, ptr %34, i64 %indvars.iv636
  %477 = load i32, ptr %476, align 4, !tbaa !5
  %478 = mul nsw i32 %477, %26
  %479 = sext i32 %478 to i64
  %gep539 = getelementptr double, ptr %invariant.gep527, i64 %479
  %480 = sext i32 %.1407543 to i64
  %481 = getelementptr inbounds double, ptr %33, i64 %480
  call void @dcopy_(ptr noundef nonnull %2, ptr noundef %gep539, ptr noundef nonnull @c__1, ptr noundef nonnull %481, ptr noundef nonnull @c__1) #7
  %482 = load i32, ptr %2, align 4, !tbaa !5
  %483 = add i32 %478, 1
  %484 = add i32 %483, %482
  %485 = sext i32 %484 to i64
  %486 = getelementptr inbounds double, ptr %28, i64 %485
  %487 = sext i32 %.1544 to i64
  %488 = getelementptr inbounds double, ptr %33, i64 %487
  call void @dcopy_(ptr noundef nonnull %23, ptr noundef %486, ptr noundef nonnull @c__1, ptr noundef nonnull %488, ptr noundef nonnull @c__1) #7
  %489 = sext i32 %477 to i64
  %490 = getelementptr inbounds double, ptr %25, i64 %489
  %491 = load double, ptr %490, align 8, !tbaa !9
  %492 = getelementptr inbounds double, ptr %30, i64 %indvars.iv636
  store double %491, ptr %492, align 8, !tbaa !9
  %indvars.iv.next637 = add nuw nsw i64 %indvars.iv636, 1
  %493 = load i32, ptr %2, align 4, !tbaa !5
  %494 = add nsw i32 %493, %.1407543
  %495 = load i32, ptr %23, align 4, !tbaa !5
  %496 = add nsw i32 %495, %.1544
  %497 = add nuw nsw i32 %.7542, 1
  %498 = load i32, ptr %18, align 4, !tbaa !5
  %.not449.not = icmp slt i32 %.7542, %498
  br i1 %.not449.not, label %.lr.ph546, label %._crit_edge547.loopexit, !llvm.loop !36

._crit_edge547.loopexit:                          ; preds = %.lr.ph546
  %499 = trunc nuw i64 %indvars.iv.next637 to i32
  br label %._crit_edge547

._crit_edge547:                                   ; preds = %._crit_edge547.loopexit, %._crit_edge535
  %.7425.lcssa = phi i32 [ %.6424.lcssa, %._crit_edge535 ], [ %499, %._crit_edge547.loopexit ]
  %.1.lcssa = phi i32 [ %459, %._crit_edge535 ], [ %496, %._crit_edge547.loopexit ]
  %500 = load i32, ptr %405, align 8, !tbaa !5
  store i32 %500, ptr %18, align 4, !tbaa !5
  %.not450550 = icmp slt i32 %500, 1
  br i1 %.not450550, label %._crit_edge556, label %.lr.ph555.preheader

.lr.ph555.preheader:                              ; preds = %._crit_edge547
  %501 = zext i32 %.7425.lcssa to i64
  br label %.lr.ph555

.lr.ph555:                                        ; preds = %.lr.ph555.preheader, %.lr.ph555
  %indvars.iv639 = phi i64 [ %501, %.lr.ph555.preheader ], [ %indvars.iv.next640, %.lr.ph555 ]
  %.2553 = phi i32 [ %.1.lcssa, %.lr.ph555.preheader ], [ %517, %.lr.ph555 ]
  %.8552 = phi i32 [ 1, %.lr.ph555.preheader ], [ %518, %.lr.ph555 ]
  %502 = getelementptr inbounds i32, ptr %34, i64 %indvars.iv639
  %503 = load i32, ptr %502, align 4, !tbaa !5
  %504 = load i32, ptr %2, align 4, !tbaa !5
  %505 = add nsw i32 %504, 1
  %506 = mul nsw i32 %503, %26
  %507 = add nsw i32 %505, %506
  %508 = sext i32 %507 to i64
  %509 = getelementptr inbounds double, ptr %28, i64 %508
  %510 = sext i32 %.2553 to i64
  %511 = getelementptr inbounds double, ptr %33, i64 %510
  call void @dcopy_(ptr noundef nonnull %23, ptr noundef %509, ptr noundef nonnull @c__1, ptr noundef nonnull %511, ptr noundef nonnull @c__1) #7
  %512 = sext i32 %503 to i64
  %513 = getelementptr inbounds double, ptr %25, i64 %512
  %514 = load double, ptr %513, align 8, !tbaa !9
  %515 = getelementptr inbounds double, ptr %30, i64 %indvars.iv639
  store double %514, ptr %515, align 8, !tbaa !9
  %indvars.iv.next640 = add nuw nsw i64 %indvars.iv639, 1
  %516 = load i32, ptr %23, align 4, !tbaa !5
  %517 = add nsw i32 %516, %.2553
  %518 = add nuw nsw i32 %.8552, 1
  %519 = load i32, ptr %18, align 4, !tbaa !5
  %.not450.not = icmp slt i32 %.8552, %519
  br i1 %.not450.not, label %.lr.ph555, label %._crit_edge556.loopexit, !llvm.loop !37

._crit_edge556.loopexit:                          ; preds = %.lr.ph555
  %520 = trunc nuw i64 %indvars.iv.next640 to i32
  br label %._crit_edge556

._crit_edge556:                                   ; preds = %._crit_edge556.loopexit, %._crit_edge547
  %.8426.lcssa = phi i32 [ %.7425.lcssa, %._crit_edge547 ], [ %520, %._crit_edge556.loopexit ]
  %.2.lcssa = phi i32 [ %.1.lcssa, %._crit_edge547 ], [ %517, %._crit_edge556.loopexit ]
  %521 = load i32, ptr %408, align 4, !tbaa !5
  store i32 %521, ptr %18, align 4, !tbaa !5
  %.not451561 = icmp slt i32 %521, 1
  br i1 %.not451561, label %._crit_edge556.._crit_edge567_crit_edge, label %.lr.ph566.preheader

._crit_edge556.._crit_edge567_crit_edge:          ; preds = %._crit_edge556
  %.pre654 = load i32, ptr %1, align 4, !tbaa !5
  br label %._crit_edge567

.lr.ph566.preheader:                              ; preds = %._crit_edge556
  %522 = zext i32 %.8426.lcssa to i64
  br label %.lr.ph566

.lr.ph566:                                        ; preds = %.lr.ph566.preheader, %.lr.ph566
  %indvars.iv642 = phi i64 [ %522, %.lr.ph566.preheader ], [ %indvars.iv.next643, %.lr.ph566 ]
  %.3564 = phi i32 [ %.2.lcssa, %.lr.ph566.preheader ], [ %530, %.lr.ph566 ]
  %.9563 = phi i32 [ 1, %.lr.ph566.preheader ], [ %535, %.lr.ph566 ]
  %523 = getelementptr inbounds i32, ptr %34, i64 %indvars.iv642
  %524 = load i32, ptr %523, align 4, !tbaa !5
  %525 = mul nsw i32 %524, %26
  %526 = sext i32 %525 to i64
  %gep560 = getelementptr double, ptr %invariant.gep527, i64 %526
  %527 = sext i32 %.3564 to i64
  %528 = getelementptr inbounds double, ptr %33, i64 %527
  call void @dcopy_(ptr noundef nonnull %1, ptr noundef %gep560, ptr noundef nonnull @c__1, ptr noundef nonnull %528, ptr noundef nonnull @c__1) #7
  %529 = load i32, ptr %1, align 4, !tbaa !5
  %530 = add nsw i32 %529, %.3564
  %531 = sext i32 %524 to i64
  %532 = getelementptr inbounds double, ptr %25, i64 %531
  %533 = load double, ptr %532, align 8, !tbaa !9
  %534 = getelementptr inbounds double, ptr %30, i64 %indvars.iv642
  store double %533, ptr %534, align 8, !tbaa !9
  %indvars.iv.next643 = add nuw nsw i64 %indvars.iv642, 1
  %535 = add nuw nsw i32 %.9563, 1
  %536 = load i32, ptr %18, align 4, !tbaa !5
  %.not451.not = icmp slt i32 %.9563, %536
  br i1 %.not451.not, label %.lr.ph566, label %._crit_edge567, !llvm.loop !38

._crit_edge567:                                   ; preds = %.lr.ph566, %._crit_edge556.._crit_edge567_crit_edge
  %537 = phi i32 [ %.pre654, %._crit_edge556.._crit_edge567_crit_edge ], [ %529, %.lr.ph566 ]
  %538 = load i32, ptr %0, align 4, !tbaa !5
  %539 = icmp slt i32 %538, %537
  br i1 %539, label %540, label %.loopexit.loopexit

540:                                              ; preds = %._crit_edge567
  %541 = sext i32 %.2.lcssa to i64
  %542 = getelementptr inbounds double, ptr %33, i64 %541
  %543 = add nsw i32 %538, 1
  %544 = mul nsw i32 %543, %26
  %545 = sext i32 %544 to i64
  %546 = getelementptr double, ptr %28, i64 %545
  %547 = getelementptr i8, ptr %546, i64 8
  call void @dlacpy_(ptr noundef nonnull @.str.2, ptr noundef nonnull %1, ptr noundef nonnull %408, ptr noundef nonnull %542, ptr noundef nonnull %1, ptr noundef %547, ptr noundef nonnull %5) #7
  %548 = load i32, ptr %1, align 4, !tbaa !5
  %549 = load i32, ptr %0, align 4, !tbaa !5
  %550 = sub nsw i32 %548, %549
  store i32 %550, ptr %18, align 4, !tbaa !5
  %551 = add nsw i32 %549, 1
  %552 = sext i32 %551 to i64
  %553 = getelementptr inbounds double, ptr %30, i64 %552
  %554 = getelementptr inbounds double, ptr %25, i64 %552
  call void @dcopy_(ptr noundef nonnull %18, ptr noundef nonnull %553, ptr noundef nonnull @c__1, ptr noundef nonnull %554, ptr noundef nonnull @c__1) #7
  br label %.loopexit.loopexit

.loopexit.loopexit:                               ; preds = %540, %._crit_edge567
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(16) %15, ptr noundef nonnull align 16 dereferenceable(16) %19, i64 16, i1 false), !tbaa !5
  br label %.loopexit

.loopexit:                                        ; preds = %.loopexit.loopexit, %._crit_edge477, %51, %.thread
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %24) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %23) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %19) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %18) #7
  ret void
}

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

declare i32 @xerbla_(ptr noundef, ptr noundef, i32 noundef) local_unnamed_addr #2

declare void @dscal_(ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

declare void @dlamrg_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

declare i32 @idamax_(ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

declare double @dlamch_(ptr noundef) local_unnamed_addr #2

declare void @dcopy_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

declare void @dlacpy_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

declare double @dlapy2_(ptr noundef, ptr noundef) local_unnamed_addr #2

declare void @drot_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

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

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

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

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

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite)
declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #6

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


; Effective O3 passes: CorrelatedValuePropagationPass,DSEPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopIdiomRecognizePass,LoopLoadEliminationPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,LoopVectorizePass,PostOrderFunctionAttrsPass,ReassociatePass,SCCPPass,SLPVectorizerPass,SROAPass,SimplifyCFGPass,TailCallElimPass