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

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

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

; Function Attrs: nounwind uwtable
define dso_local void @dlaein_(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) #0 {
  %17 = alloca ptr, align 8
  %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 i32, align 4
  %34 = alloca i32, align 4
  %35 = alloca i32, align 4
  %36 = alloca i32, align 4
  %37 = alloca i32, align 4
  %38 = alloca i32, align 4
  %39 = alloca i32, align 4
  %40 = alloca i32, align 4
  %41 = alloca double, align 8
  %42 = alloca double, align 8
  %43 = alloca double, align 8
  %44 = alloca double, align 8
  %45 = alloca i32, align 4
  %46 = alloca double, align 8
  %47 = alloca double, align 8
  %48 = alloca double, align 8
  %49 = alloca i32, align 4
  %50 = alloca i32, align 4
  %51 = alloca double, align 8
  %52 = alloca double, align 8
  %53 = alloca double, align 8
  %54 = alloca double, align 8
  %55 = alloca [1 x i8], align 1
  %56 = alloca double, align 8
  %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 double, align 8
  %64 = alloca double, align 8
  %65 = alloca double, align 8
  %66 = alloca double, align 8
  %67 = alloca double, align 8
  %68 = alloca double, align 8
  %69 = alloca [1 x i8], align 1
  %70 = alloca double, align 8
  %71 = alloca double, align 8
  %72 = alloca double, align 8
  %73 = alloca i32, align 4
  store ptr %0, ptr %17, align 8, !tbaa !5
  store ptr %1, ptr %18, align 8, !tbaa !5
  store ptr %2, ptr %19, align 8, !tbaa !5
  store ptr %3, ptr %20, align 8, !tbaa !5
  store ptr %4, ptr %21, align 8, !tbaa !5
  store ptr %5, ptr %22, align 8, !tbaa !5
  store ptr %6, ptr %23, align 8, !tbaa !5
  store ptr %7, ptr %24, align 8, !tbaa !5
  store ptr %8, ptr %25, align 8, !tbaa !5
  store ptr %9, ptr %26, align 8, !tbaa !5
  store ptr %10, ptr %27, align 8, !tbaa !5
  store ptr %11, ptr %28, align 8, !tbaa !5
  store ptr %12, ptr %29, align 8, !tbaa !5
  store ptr %13, ptr %30, align 8, !tbaa !5
  store ptr %14, ptr %31, align 8, !tbaa !5
  store ptr %15, ptr %32, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %33) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %34) #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 4, ptr %39) #5
  call void @llvm.lifetime.start.p0(i64 4, 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 8, ptr %43) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %45) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %47) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %48) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %49) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %50) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %51) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %52) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %53) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %54) #5
  call void @llvm.lifetime.start.p0(i64 1, ptr %55) #5
  call void @llvm.lifetime.start.p0(i64 8, 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 8, ptr %63) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %64) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %65) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %66) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %67) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %68) #5
  call void @llvm.lifetime.start.p0(i64 1, ptr %69) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %70) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %71) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %72) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %73) #5
  %74 = load ptr, ptr %21, align 8, !tbaa !5
  %75 = load i32, ptr %74, align 4, !tbaa !9
  store i32 %75, ptr %35, align 4, !tbaa !9
  %76 = load i32, ptr %35, align 4, !tbaa !9
  %77 = mul nsw i32 %76, 1
  %78 = add nsw i32 1, %77
  store i32 %78, ptr %36, align 4, !tbaa !9
  %79 = load i32, ptr %36, align 4, !tbaa !9
  %80 = load ptr, ptr %20, align 8, !tbaa !5
  %81 = sext i32 %79 to i64
  %82 = sub i64 0, %81
  %83 = getelementptr inbounds double, ptr %80, i64 %82
  store ptr %83, ptr %20, align 8, !tbaa !5
  %84 = load ptr, ptr %24, align 8, !tbaa !5
  %85 = getelementptr inbounds double, ptr %84, i32 -1
  store ptr %85, ptr %24, align 8, !tbaa !5
  %86 = load ptr, ptr %25, align 8, !tbaa !5
  %87 = getelementptr inbounds double, ptr %86, i32 -1
  store ptr %87, ptr %25, align 8, !tbaa !5
  %88 = load ptr, ptr %27, align 8, !tbaa !5
  %89 = load i32, ptr %88, align 4, !tbaa !9
  store i32 %89, ptr %33, align 4, !tbaa !9
  %90 = load i32, ptr %33, align 4, !tbaa !9
  %91 = mul nsw i32 %90, 1
  %92 = add nsw i32 1, %91
  store i32 %92, ptr %34, align 4, !tbaa !9
  %93 = load i32, ptr %34, align 4, !tbaa !9
  %94 = load ptr, ptr %26, align 8, !tbaa !5
  %95 = sext i32 %93 to i64
  %96 = sub i64 0, %95
  %97 = getelementptr inbounds double, ptr %94, i64 %96
  store ptr %97, ptr %26, align 8, !tbaa !5
  %98 = load ptr, ptr %28, align 8, !tbaa !5
  %99 = getelementptr inbounds double, ptr %98, i32 -1
  store ptr %99, ptr %28, align 8, !tbaa !5
  %100 = load ptr, ptr %32, align 8, !tbaa !5
  store i32 0, ptr %100, align 4, !tbaa !9
  %101 = load ptr, ptr %19, align 8, !tbaa !5
  %102 = load i32, ptr %101, align 4, !tbaa !9
  %103 = sitofp i32 %102 to double
  %104 = call double @sqrt(double noundef %103) #5
  store double %104, ptr %60, align 8, !tbaa !11
  %105 = load double, ptr %60, align 8, !tbaa !11
  %106 = fdiv double 1.000000e-01, %105
  store double %106, ptr %71, align 8, !tbaa !11
  store double 1.000000e+00, ptr %41, align 8, !tbaa !11
  %107 = load ptr, ptr %29, align 8, !tbaa !5
  %108 = load double, ptr %107, align 8, !tbaa !11
  %109 = load double, ptr %60, align 8, !tbaa !11
  %110 = fmul double %108, %109
  store double %110, ptr %42, align 8, !tbaa !11
  %111 = load double, ptr %41, align 8, !tbaa !11
  %112 = load double, ptr %42, align 8, !tbaa !11
  %113 = fcmp oge double %111, %112
  br i1 %113, label %114, label %116

114:                                              ; preds = %16
  %115 = load double, ptr %41, align 8, !tbaa !11
  br label %118

116:                                              ; preds = %16
  %117 = load double, ptr %42, align 8, !tbaa !11
  br label %118

118:                                              ; preds = %116, %114
  %119 = phi double [ %115, %114 ], [ %117, %116 ]
  %120 = load ptr, ptr %30, align 8, !tbaa !5
  %121 = load double, ptr %120, align 8, !tbaa !11
  %122 = fmul double %119, %121
  store double %122, ptr %70, align 8, !tbaa !11
  %123 = load ptr, ptr %19, align 8, !tbaa !5
  %124 = load i32, ptr %123, align 4, !tbaa !9
  store i32 %124, ptr %37, align 4, !tbaa !9
  store i32 1, ptr %50, align 4, !tbaa !9
  br label %125

125:                                              ; preds = %178, %118
  %126 = load i32, ptr %50, align 4, !tbaa !9
  %127 = load i32, ptr %37, align 4, !tbaa !9
  %128 = icmp sle i32 %126, %127
  br i1 %128, label %129, label %181

129:                                              ; preds = %125
  %130 = load i32, ptr %50, align 4, !tbaa !9
  %131 = sub nsw i32 %130, 1
  store i32 %131, ptr %38, align 4, !tbaa !9
  store i32 1, ptr %49, align 4, !tbaa !9
  br label %132

132:                                              ; preds = %154, %129
  %133 = load i32, ptr %49, align 4, !tbaa !9
  %134 = load i32, ptr %38, align 4, !tbaa !9
  %135 = icmp sle i32 %133, %134
  br i1 %135, label %136, label %157

136:                                              ; preds = %132
  %137 = load ptr, ptr %20, align 8, !tbaa !5
  %138 = load i32, ptr %49, align 4, !tbaa !9
  %139 = load i32, ptr %50, align 4, !tbaa !9
  %140 = load i32, ptr %35, align 4, !tbaa !9
  %141 = mul nsw i32 %139, %140
  %142 = add nsw i32 %138, %141
  %143 = sext i32 %142 to i64
  %144 = getelementptr inbounds double, ptr %137, i64 %143
  %145 = load double, ptr %144, align 8, !tbaa !11
  %146 = load ptr, ptr %26, align 8, !tbaa !5
  %147 = load i32, ptr %49, align 4, !tbaa !9
  %148 = load i32, ptr %50, align 4, !tbaa !9
  %149 = load i32, ptr %33, align 4, !tbaa !9
  %150 = mul nsw i32 %148, %149
  %151 = add nsw i32 %147, %150
  %152 = sext i32 %151 to i64
  %153 = getelementptr inbounds double, ptr %146, i64 %152
  store double %145, ptr %153, align 8, !tbaa !11
  br label %154

154:                                              ; preds = %136
  %155 = load i32, ptr %49, align 4, !tbaa !9
  %156 = add nsw i32 %155, 1
  store i32 %156, ptr %49, align 4, !tbaa !9
  br label %132, !llvm.loop !13

157:                                              ; preds = %132
  %158 = load ptr, ptr %20, align 8, !tbaa !5
  %159 = load i32, ptr %50, align 4, !tbaa !9
  %160 = load i32, ptr %50, align 4, !tbaa !9
  %161 = load i32, ptr %35, align 4, !tbaa !9
  %162 = mul nsw i32 %160, %161
  %163 = add nsw i32 %159, %162
  %164 = sext i32 %163 to i64
  %165 = getelementptr inbounds double, ptr %158, i64 %164
  %166 = load double, ptr %165, align 8, !tbaa !11
  %167 = load ptr, ptr %22, align 8, !tbaa !5
  %168 = load double, ptr %167, align 8, !tbaa !11
  %169 = fsub double %166, %168
  %170 = load ptr, ptr %26, align 8, !tbaa !5
  %171 = load i32, ptr %50, align 4, !tbaa !9
  %172 = load i32, ptr %50, align 4, !tbaa !9
  %173 = load i32, ptr %33, align 4, !tbaa !9
  %174 = mul nsw i32 %172, %173
  %175 = add nsw i32 %171, %174
  %176 = sext i32 %175 to i64
  %177 = getelementptr inbounds double, ptr %170, i64 %176
  store double %169, ptr %177, align 8, !tbaa !11
  br label %178

178:                                              ; preds = %157
  %179 = load i32, ptr %50, align 4, !tbaa !9
  %180 = add nsw i32 %179, 1
  store i32 %180, ptr %50, align 4, !tbaa !9
  br label %125, !llvm.loop !15

181:                                              ; preds = %125
  %182 = load ptr, ptr %23, align 8, !tbaa !5
  %183 = load double, ptr %182, align 8, !tbaa !11
  %184 = fcmp oeq double %183, 0.000000e+00
  br i1 %184, label %185, label %771

185:                                              ; preds = %181
  %186 = load ptr, ptr %18, align 8, !tbaa !5
  %187 = load i32, ptr %186, align 4, !tbaa !9
  %188 = icmp ne i32 %187, 0
  br i1 %188, label %189, label %207

189:                                              ; preds = %185
  %190 = load ptr, ptr %19, align 8, !tbaa !5
  %191 = load i32, ptr %190, align 4, !tbaa !9
  store i32 %191, ptr %37, align 4, !tbaa !9
  store i32 1, ptr %49, align 4, !tbaa !9
  br label %192

192:                                              ; preds = %203, %189
  %193 = load i32, ptr %49, align 4, !tbaa !9
  %194 = load i32, ptr %37, align 4, !tbaa !9
  %195 = icmp sle i32 %193, %194
  br i1 %195, label %196, label %206

196:                                              ; preds = %192
  %197 = load ptr, ptr %29, align 8, !tbaa !5
  %198 = load double, ptr %197, align 8, !tbaa !11
  %199 = load ptr, ptr %24, align 8, !tbaa !5
  %200 = load i32, ptr %49, align 4, !tbaa !9
  %201 = sext i32 %200 to i64
  %202 = getelementptr inbounds double, ptr %199, i64 %201
  store double %198, ptr %202, align 8, !tbaa !11
  br label %203

203:                                              ; preds = %196
  %204 = load i32, ptr %49, align 4, !tbaa !9
  %205 = add nsw i32 %204, 1
  store i32 %205, ptr %49, align 4, !tbaa !9
  br label %192, !llvm.loop !16

206:                                              ; preds = %192
  br label %229

207:                                              ; preds = %185
  %208 = load ptr, ptr %19, align 8, !tbaa !5
  %209 = load ptr, ptr %24, align 8, !tbaa !5
  %210 = getelementptr inbounds double, ptr %209, i64 1
  %211 = call double @dnrm2_(ptr noundef %208, ptr noundef %210, ptr noundef @c__1)
  store double %211, ptr %61, align 8, !tbaa !11
  %212 = load ptr, ptr %29, align 8, !tbaa !5
  %213 = load double, ptr %212, align 8, !tbaa !11
  %214 = load double, ptr %60, align 8, !tbaa !11
  %215 = fmul double %213, %214
  %216 = load double, ptr %61, align 8, !tbaa !11
  %217 = load double, ptr %70, align 8, !tbaa !11
  %218 = fcmp oge double %216, %217
  br i1 %218, label %219, label %221

219:                                              ; preds = %207
  %220 = load double, ptr %61, align 8, !tbaa !11
  br label %223

221:                                              ; preds = %207
  %222 = load double, ptr %70, align 8, !tbaa !11
  br label %223

223:                                              ; preds = %221, %219
  %224 = phi double [ %220, %219 ], [ %222, %221 ]
  %225 = fdiv double %215, %224
  store double %225, ptr %41, align 8, !tbaa !11
  %226 = load ptr, ptr %19, align 8, !tbaa !5
  %227 = load ptr, ptr %24, align 8, !tbaa !5
  %228 = getelementptr inbounds double, ptr %227, i64 1
  call void @dscal_(ptr noundef %226, ptr noundef %41, ptr noundef %228, ptr noundef @c__1)
  br label %229

229:                                              ; preds = %223, %206
  %230 = load ptr, ptr %17, align 8, !tbaa !5
  %231 = load i32, ptr %230, align 4, !tbaa !9
  %232 = icmp ne i32 %231, 0
  br i1 %232, label %233, label %460

233:                                              ; preds = %229
  %234 = load ptr, ptr %19, align 8, !tbaa !5
  %235 = load i32, ptr %234, align 4, !tbaa !9
  %236 = sub nsw i32 %235, 1
  store i32 %236, ptr %37, align 4, !tbaa !9
  store i32 1, ptr %49, align 4, !tbaa !9
  br label %237

237:                                              ; preds = %429, %233
  %238 = load i32, ptr %49, align 4, !tbaa !9
  %239 = load i32, ptr %37, align 4, !tbaa !9
  %240 = icmp sle i32 %238, %239
  br i1 %240, label %241, label %432

241:                                              ; preds = %237
  %242 = load ptr, ptr %20, align 8, !tbaa !5
  %243 = load i32, ptr %49, align 4, !tbaa !9
  %244 = add nsw i32 %243, 1
  %245 = load i32, ptr %49, align 4, !tbaa !9
  %246 = load i32, ptr %35, align 4, !tbaa !9
  %247 = mul nsw i32 %245, %246
  %248 = add nsw i32 %244, %247
  %249 = sext i32 %248 to i64
  %250 = getelementptr inbounds double, ptr %242, i64 %249
  %251 = load double, ptr %250, align 8, !tbaa !11
  store double %251, ptr %63, align 8, !tbaa !11
  %252 = load ptr, ptr %26, align 8, !tbaa !5
  %253 = load i32, ptr %49, align 4, !tbaa !9
  %254 = load i32, ptr %49, align 4, !tbaa !9
  %255 = load i32, ptr %33, align 4, !tbaa !9
  %256 = mul nsw i32 %254, %255
  %257 = add nsw i32 %253, %256
  %258 = sext i32 %257 to i64
  %259 = getelementptr inbounds double, ptr %252, i64 %258
  %260 = load double, ptr %259, align 8, !tbaa !11
  store double %260, ptr %41, align 8, !tbaa !11
  %261 = load double, ptr %41, align 8, !tbaa !11
  %262 = fcmp oge double %261, 0.000000e+00
  br i1 %262, label %263, label %265

263:                                              ; preds = %241
  %264 = load double, ptr %41, align 8, !tbaa !11
  br label %268

265:                                              ; preds = %241
  %266 = load double, ptr %41, align 8, !tbaa !11
  %267 = fneg double %266
  br label %268

268:                                              ; preds = %265, %263
  %269 = phi double [ %264, %263 ], [ %267, %265 ]
  %270 = load double, ptr %63, align 8, !tbaa !11
  %271 = fcmp oge double %270, 0.000000e+00
  br i1 %271, label %272, label %274

272:                                              ; preds = %268
  %273 = load double, ptr %63, align 8, !tbaa !11
  br label %277

274:                                              ; preds = %268
  %275 = load double, ptr %63, align 8, !tbaa !11
  %276 = fneg double %275
  br label %277

277:                                              ; preds = %274, %272
  %278 = phi double [ %273, %272 ], [ %276, %274 ]
  %279 = fcmp olt double %269, %278
  br i1 %279, label %280, label %355

280:                                              ; preds = %277
  %281 = load ptr, ptr %26, align 8, !tbaa !5
  %282 = load i32, ptr %49, align 4, !tbaa !9
  %283 = load i32, ptr %49, align 4, !tbaa !9
  %284 = load i32, ptr %33, align 4, !tbaa !9
  %285 = mul nsw i32 %283, %284
  %286 = add nsw i32 %282, %285
  %287 = sext i32 %286 to i64
  %288 = getelementptr inbounds double, ptr %281, i64 %287
  %289 = load double, ptr %288, align 8, !tbaa !11
  %290 = load double, ptr %63, align 8, !tbaa !11
  %291 = fdiv double %289, %290
  store double %291, ptr %53, align 8, !tbaa !11
  %292 = load double, ptr %63, align 8, !tbaa !11
  %293 = load ptr, ptr %26, align 8, !tbaa !5
  %294 = load i32, ptr %49, align 4, !tbaa !9
  %295 = load i32, ptr %49, align 4, !tbaa !9
  %296 = load i32, ptr %33, align 4, !tbaa !9
  %297 = mul nsw i32 %295, %296
  %298 = add nsw i32 %294, %297
  %299 = sext i32 %298 to i64
  %300 = getelementptr inbounds double, ptr %293, i64 %299
  store double %292, ptr %300, align 8, !tbaa !11
  %301 = load ptr, ptr %19, align 8, !tbaa !5
  %302 = load i32, ptr %301, align 4, !tbaa !9
  store i32 %302, ptr %38, align 4, !tbaa !9
  %303 = load i32, ptr %49, align 4, !tbaa !9
  %304 = add nsw i32 %303, 1
  store i32 %304, ptr %50, align 4, !tbaa !9
  br label %305

305:                                              ; preds = %351, %280
  %306 = load i32, ptr %50, align 4, !tbaa !9
  %307 = load i32, ptr %38, align 4, !tbaa !9
  %308 = icmp sle i32 %306, %307
  br i1 %308, label %309, label %354

309:                                              ; preds = %305
  %310 = load ptr, ptr %26, align 8, !tbaa !5
  %311 = load i32, ptr %49, align 4, !tbaa !9
  %312 = add nsw i32 %311, 1
  %313 = load i32, ptr %50, align 4, !tbaa !9
  %314 = load i32, ptr %33, align 4, !tbaa !9
  %315 = mul nsw i32 %313, %314
  %316 = add nsw i32 %312, %315
  %317 = sext i32 %316 to i64
  %318 = getelementptr inbounds double, ptr %310, i64 %317
  %319 = load double, ptr %318, align 8, !tbaa !11
  store double %319, ptr %46, align 8, !tbaa !11
  %320 = load ptr, ptr %26, align 8, !tbaa !5
  %321 = load i32, ptr %49, align 4, !tbaa !9
  %322 = load i32, ptr %50, align 4, !tbaa !9
  %323 = load i32, ptr %33, align 4, !tbaa !9
  %324 = mul nsw i32 %322, %323
  %325 = add nsw i32 %321, %324
  %326 = sext i32 %325 to i64
  %327 = getelementptr inbounds double, ptr %320, i64 %326
  %328 = load double, ptr %327, align 8, !tbaa !11
  %329 = load double, ptr %53, align 8, !tbaa !11
  %330 = load double, ptr %46, align 8, !tbaa !11
  %331 = fneg double %329
  %332 = call double @llvm.fmuladd.f64(double %331, double %330, double %328)
  %333 = load ptr, ptr %26, align 8, !tbaa !5
  %334 = load i32, ptr %49, align 4, !tbaa !9
  %335 = add nsw i32 %334, 1
  %336 = load i32, ptr %50, align 4, !tbaa !9
  %337 = load i32, ptr %33, align 4, !tbaa !9
  %338 = mul nsw i32 %336, %337
  %339 = add nsw i32 %335, %338
  %340 = sext i32 %339 to i64
  %341 = getelementptr inbounds double, ptr %333, i64 %340
  store double %332, ptr %341, align 8, !tbaa !11
  %342 = load double, ptr %46, align 8, !tbaa !11
  %343 = load ptr, ptr %26, align 8, !tbaa !5
  %344 = load i32, ptr %49, align 4, !tbaa !9
  %345 = load i32, ptr %50, align 4, !tbaa !9
  %346 = load i32, ptr %33, align 4, !tbaa !9
  %347 = mul nsw i32 %345, %346
  %348 = add nsw i32 %344, %347
  %349 = sext i32 %348 to i64
  %350 = getelementptr inbounds double, ptr %343, i64 %349
  store double %342, ptr %350, align 8, !tbaa !11
  br label %351

351:                                              ; preds = %309
  %352 = load i32, ptr %50, align 4, !tbaa !9
  %353 = add nsw i32 %352, 1
  store i32 %353, ptr %50, align 4, !tbaa !9
  br label %305, !llvm.loop !17

354:                                              ; preds = %305
  br label %428

355:                                              ; preds = %277
  %356 = load ptr, ptr %26, align 8, !tbaa !5
  %357 = load i32, ptr %49, align 4, !tbaa !9
  %358 = load i32, ptr %49, align 4, !tbaa !9
  %359 = load i32, ptr %33, align 4, !tbaa !9
  %360 = mul nsw i32 %358, %359
  %361 = add nsw i32 %357, %360
  %362 = sext i32 %361 to i64
  %363 = getelementptr inbounds double, ptr %356, i64 %362
  %364 = load double, ptr %363, align 8, !tbaa !11
  %365 = fcmp oeq double %364, 0.000000e+00
  br i1 %365, label %366, label %377

366:                                              ; preds = %355
  %367 = load ptr, ptr %29, align 8, !tbaa !5
  %368 = load double, ptr %367, align 8, !tbaa !11
  %369 = load ptr, ptr %26, align 8, !tbaa !5
  %370 = load i32, ptr %49, align 4, !tbaa !9
  %371 = load i32, ptr %49, align 4, !tbaa !9
  %372 = load i32, ptr %33, align 4, !tbaa !9
  %373 = mul nsw i32 %371, %372
  %374 = add nsw i32 %370, %373
  %375 = sext i32 %374 to i64
  %376 = getelementptr inbounds double, ptr %369, i64 %375
  store double %368, ptr %376, align 8, !tbaa !11
  br label %377

377:                                              ; preds = %366, %355
  %378 = load double, ptr %63, align 8, !tbaa !11
  %379 = load ptr, ptr %26, align 8, !tbaa !5
  %380 = load i32, ptr %49, align 4, !tbaa !9
  %381 = load i32, ptr %49, align 4, !tbaa !9
  %382 = load i32, ptr %33, align 4, !tbaa !9
  %383 = mul nsw i32 %381, %382
  %384 = add nsw i32 %380, %383
  %385 = sext i32 %384 to i64
  %386 = getelementptr inbounds double, ptr %379, i64 %385
  %387 = load double, ptr %386, align 8, !tbaa !11
  %388 = fdiv double %378, %387
  store double %388, ptr %53, align 8, !tbaa !11
  %389 = load double, ptr %53, align 8, !tbaa !11
  %390 = fcmp une double %389, 0.000000e+00
  br i1 %390, label %391, label %427

391:                                              ; preds = %377
  %392 = load ptr, ptr %19, align 8, !tbaa !5
  %393 = load i32, ptr %392, align 4, !tbaa !9
  store i32 %393, ptr %38, align 4, !tbaa !9
  %394 = load i32, ptr %49, align 4, !tbaa !9
  %395 = add nsw i32 %394, 1
  store i32 %395, ptr %50, align 4, !tbaa !9
  br label %396

396:                                              ; preds = %423, %391
  %397 = load i32, ptr %50, align 4, !tbaa !9
  %398 = load i32, ptr %38, align 4, !tbaa !9
  %399 = icmp sle i32 %397, %398
  br i1 %399, label %400, label %426

400:                                              ; preds = %396
  %401 = load double, ptr %53, align 8, !tbaa !11
  %402 = load ptr, ptr %26, align 8, !tbaa !5
  %403 = load i32, ptr %49, align 4, !tbaa !9
  %404 = load i32, ptr %50, align 4, !tbaa !9
  %405 = load i32, ptr %33, align 4, !tbaa !9
  %406 = mul nsw i32 %404, %405
  %407 = add nsw i32 %403, %406
  %408 = sext i32 %407 to i64
  %409 = getelementptr inbounds double, ptr %402, i64 %408
  %410 = load double, ptr %409, align 8, !tbaa !11
  %411 = load ptr, ptr %26, align 8, !tbaa !5
  %412 = load i32, ptr %49, align 4, !tbaa !9
  %413 = add nsw i32 %412, 1
  %414 = load i32, ptr %50, align 4, !tbaa !9
  %415 = load i32, ptr %33, align 4, !tbaa !9
  %416 = mul nsw i32 %414, %415
  %417 = add nsw i32 %413, %416
  %418 = sext i32 %417 to i64
  %419 = getelementptr inbounds double, ptr %411, i64 %418
  %420 = load double, ptr %419, align 8, !tbaa !11
  %421 = fneg double %401
  %422 = call double @llvm.fmuladd.f64(double %421, double %410, double %420)
  store double %422, ptr %419, align 8, !tbaa !11
  br label %423

423:                                              ; preds = %400
  %424 = load i32, ptr %50, align 4, !tbaa !9
  %425 = add nsw i32 %424, 1
  store i32 %425, ptr %50, align 4, !tbaa !9
  br label %396, !llvm.loop !18

426:                                              ; preds = %396
  br label %427

427:                                              ; preds = %426, %377
  br label %428

428:                                              ; preds = %427, %354
  br label %429

429:                                              ; preds = %428
  %430 = load i32, ptr %49, align 4, !tbaa !9
  %431 = add nsw i32 %430, 1
  store i32 %431, ptr %49, align 4, !tbaa !9
  br label %237, !llvm.loop !19

432:                                              ; preds = %237
  %433 = load ptr, ptr %26, align 8, !tbaa !5
  %434 = load ptr, ptr %19, align 8, !tbaa !5
  %435 = load i32, ptr %434, align 4, !tbaa !9
  %436 = load ptr, ptr %19, align 8, !tbaa !5
  %437 = load i32, ptr %436, align 4, !tbaa !9
  %438 = load i32, ptr %33, align 4, !tbaa !9
  %439 = mul nsw i32 %437, %438
  %440 = add nsw i32 %435, %439
  %441 = sext i32 %440 to i64
  %442 = getelementptr inbounds double, ptr %433, i64 %441
  %443 = load double, ptr %442, align 8, !tbaa !11
  %444 = fcmp oeq double %443, 0.000000e+00
  br i1 %444, label %445, label %458

445:                                              ; preds = %432
  %446 = load ptr, ptr %29, align 8, !tbaa !5
  %447 = load double, ptr %446, align 8, !tbaa !11
  %448 = load ptr, ptr %26, align 8, !tbaa !5
  %449 = load ptr, ptr %19, align 8, !tbaa !5
  %450 = load i32, ptr %449, align 4, !tbaa !9
  %451 = load ptr, ptr %19, align 8, !tbaa !5
  %452 = load i32, ptr %451, align 4, !tbaa !9
  %453 = load i32, ptr %33, align 4, !tbaa !9
  %454 = mul nsw i32 %452, %453
  %455 = add nsw i32 %450, %454
  %456 = sext i32 %455 to i64
  %457 = getelementptr inbounds double, ptr %448, i64 %456
  store double %447, ptr %457, align 8, !tbaa !11
  br label %458

458:                                              ; preds = %445, %432
  %459 = getelementptr inbounds [1 x i8], ptr %55, i64 0, i64 0
  store i8 78, ptr %459, align 1, !tbaa !20
  br label %671

460:                                              ; preds = %229
  %461 = load ptr, ptr %19, align 8, !tbaa !5
  %462 = load i32, ptr %461, align 4, !tbaa !9
  store i32 %462, ptr %50, align 4, !tbaa !9
  br label %463

463:                                              ; preds = %650, %460
  %464 = load i32, ptr %50, align 4, !tbaa !9
  %465 = icmp sge i32 %464, 2
  br i1 %465, label %466, label %653

466:                                              ; preds = %463
  %467 = load ptr, ptr %20, align 8, !tbaa !5
  %468 = load i32, ptr %50, align 4, !tbaa !9
  %469 = load i32, ptr %50, align 4, !tbaa !9
  %470 = sub nsw i32 %469, 1
  %471 = load i32, ptr %35, align 4, !tbaa !9
  %472 = mul nsw i32 %470, %471
  %473 = add nsw i32 %468, %472
  %474 = sext i32 %473 to i64
  %475 = getelementptr inbounds double, ptr %467, i64 %474
  %476 = load double, ptr %475, align 8, !tbaa !11
  store double %476, ptr %64, align 8, !tbaa !11
  %477 = load ptr, ptr %26, align 8, !tbaa !5
  %478 = load i32, ptr %50, align 4, !tbaa !9
  %479 = load i32, ptr %50, align 4, !tbaa !9
  %480 = load i32, ptr %33, align 4, !tbaa !9
  %481 = mul nsw i32 %479, %480
  %482 = add nsw i32 %478, %481
  %483 = sext i32 %482 to i64
  %484 = getelementptr inbounds double, ptr %477, i64 %483
  %485 = load double, ptr %484, align 8, !tbaa !11
  store double %485, ptr %41, align 8, !tbaa !11
  %486 = load double, ptr %41, align 8, !tbaa !11
  %487 = fcmp oge double %486, 0.000000e+00
  br i1 %487, label %488, label %490

488:                                              ; preds = %466
  %489 = load double, ptr %41, align 8, !tbaa !11
  br label %493

490:                                              ; preds = %466
  %491 = load double, ptr %41, align 8, !tbaa !11
  %492 = fneg double %491
  br label %493

493:                                              ; preds = %490, %488
  %494 = phi double [ %489, %488 ], [ %492, %490 ]
  %495 = load double, ptr %64, align 8, !tbaa !11
  %496 = fcmp oge double %495, 0.000000e+00
  br i1 %496, label %497, label %499

497:                                              ; preds = %493
  %498 = load double, ptr %64, align 8, !tbaa !11
  br label %502

499:                                              ; preds = %493
  %500 = load double, ptr %64, align 8, !tbaa !11
  %501 = fneg double %500
  br label %502

502:                                              ; preds = %499, %497
  %503 = phi double [ %498, %497 ], [ %501, %499 ]
  %504 = fcmp olt double %494, %503
  br i1 %504, label %505, label %578

505:                                              ; preds = %502
  %506 = load ptr, ptr %26, align 8, !tbaa !5
  %507 = load i32, ptr %50, align 4, !tbaa !9
  %508 = load i32, ptr %50, align 4, !tbaa !9
  %509 = load i32, ptr %33, align 4, !tbaa !9
  %510 = mul nsw i32 %508, %509
  %511 = add nsw i32 %507, %510
  %512 = sext i32 %511 to i64
  %513 = getelementptr inbounds double, ptr %506, i64 %512
  %514 = load double, ptr %513, align 8, !tbaa !11
  %515 = load double, ptr %64, align 8, !tbaa !11
  %516 = fdiv double %514, %515
  store double %516, ptr %53, align 8, !tbaa !11
  %517 = load double, ptr %64, align 8, !tbaa !11
  %518 = load ptr, ptr %26, align 8, !tbaa !5
  %519 = load i32, ptr %50, align 4, !tbaa !9
  %520 = load i32, ptr %50, align 4, !tbaa !9
  %521 = load i32, ptr %33, align 4, !tbaa !9
  %522 = mul nsw i32 %520, %521
  %523 = add nsw i32 %519, %522
  %524 = sext i32 %523 to i64
  %525 = getelementptr inbounds double, ptr %518, i64 %524
  store double %517, ptr %525, align 8, !tbaa !11
  %526 = load i32, ptr %50, align 4, !tbaa !9
  %527 = sub nsw i32 %526, 1
  store i32 %527, ptr %37, align 4, !tbaa !9
  store i32 1, ptr %49, align 4, !tbaa !9
  br label %528

528:                                              ; preds = %574, %505
  %529 = load i32, ptr %49, align 4, !tbaa !9
  %530 = load i32, ptr %37, align 4, !tbaa !9
  %531 = icmp sle i32 %529, %530
  br i1 %531, label %532, label %577

532:                                              ; preds = %528
  %533 = load ptr, ptr %26, align 8, !tbaa !5
  %534 = load i32, ptr %49, align 4, !tbaa !9
  %535 = load i32, ptr %50, align 4, !tbaa !9
  %536 = sub nsw i32 %535, 1
  %537 = load i32, ptr %33, align 4, !tbaa !9
  %538 = mul nsw i32 %536, %537
  %539 = add nsw i32 %534, %538
  %540 = sext i32 %539 to i64
  %541 = getelementptr inbounds double, ptr %533, i64 %540
  %542 = load double, ptr %541, align 8, !tbaa !11
  store double %542, ptr %46, align 8, !tbaa !11
  %543 = load ptr, ptr %26, align 8, !tbaa !5
  %544 = load i32, ptr %49, align 4, !tbaa !9
  %545 = load i32, ptr %50, align 4, !tbaa !9
  %546 = load i32, ptr %33, align 4, !tbaa !9
  %547 = mul nsw i32 %545, %546
  %548 = add nsw i32 %544, %547
  %549 = sext i32 %548 to i64
  %550 = getelementptr inbounds double, ptr %543, i64 %549
  %551 = load double, ptr %550, align 8, !tbaa !11
  %552 = load double, ptr %53, align 8, !tbaa !11
  %553 = load double, ptr %46, align 8, !tbaa !11
  %554 = fneg double %552
  %555 = call double @llvm.fmuladd.f64(double %554, double %553, double %551)
  %556 = load ptr, ptr %26, align 8, !tbaa !5
  %557 = load i32, ptr %49, align 4, !tbaa !9
  %558 = load i32, ptr %50, align 4, !tbaa !9
  %559 = sub nsw i32 %558, 1
  %560 = load i32, ptr %33, align 4, !tbaa !9
  %561 = mul nsw i32 %559, %560
  %562 = add nsw i32 %557, %561
  %563 = sext i32 %562 to i64
  %564 = getelementptr inbounds double, ptr %556, i64 %563
  store double %555, ptr %564, align 8, !tbaa !11
  %565 = load double, ptr %46, align 8, !tbaa !11
  %566 = load ptr, ptr %26, align 8, !tbaa !5
  %567 = load i32, ptr %49, align 4, !tbaa !9
  %568 = load i32, ptr %50, align 4, !tbaa !9
  %569 = load i32, ptr %33, align 4, !tbaa !9
  %570 = mul nsw i32 %568, %569
  %571 = add nsw i32 %567, %570
  %572 = sext i32 %571 to i64
  %573 = getelementptr inbounds double, ptr %566, i64 %572
  store double %565, ptr %573, align 8, !tbaa !11
  br label %574

574:                                              ; preds = %532
  %575 = load i32, ptr %49, align 4, !tbaa !9
  %576 = add nsw i32 %575, 1
  store i32 %576, ptr %49, align 4, !tbaa !9
  br label %528, !llvm.loop !21

577:                                              ; preds = %528
  br label %649

578:                                              ; preds = %502
  %579 = load ptr, ptr %26, align 8, !tbaa !5
  %580 = load i32, ptr %50, align 4, !tbaa !9
  %581 = load i32, ptr %50, align 4, !tbaa !9
  %582 = load i32, ptr %33, align 4, !tbaa !9
  %583 = mul nsw i32 %581, %582
  %584 = add nsw i32 %580, %583
  %585 = sext i32 %584 to i64
  %586 = getelementptr inbounds double, ptr %579, i64 %585
  %587 = load double, ptr %586, align 8, !tbaa !11
  %588 = fcmp oeq double %587, 0.000000e+00
  br i1 %588, label %589, label %600

589:                                              ; preds = %578
  %590 = load ptr, ptr %29, align 8, !tbaa !5
  %591 = load double, ptr %590, align 8, !tbaa !11
  %592 = load ptr, ptr %26, align 8, !tbaa !5
  %593 = load i32, ptr %50, align 4, !tbaa !9
  %594 = load i32, ptr %50, align 4, !tbaa !9
  %595 = load i32, ptr %33, align 4, !tbaa !9
  %596 = mul nsw i32 %594, %595
  %597 = add nsw i32 %593, %596
  %598 = sext i32 %597 to i64
  %599 = getelementptr inbounds double, ptr %592, i64 %598
  store double %591, ptr %599, align 8, !tbaa !11
  br label %600

600:                                              ; preds = %589, %578
  %601 = load double, ptr %64, align 8, !tbaa !11
  %602 = load ptr, ptr %26, align 8, !tbaa !5
  %603 = load i32, ptr %50, align 4, !tbaa !9
  %604 = load i32, ptr %50, align 4, !tbaa !9
  %605 = load i32, ptr %33, align 4, !tbaa !9
  %606 = mul nsw i32 %604, %605
  %607 = add nsw i32 %603, %606
  %608 = sext i32 %607 to i64
  %609 = getelementptr inbounds double, ptr %602, i64 %608
  %610 = load double, ptr %609, align 8, !tbaa !11
  %611 = fdiv double %601, %610
  store double %611, ptr %53, align 8, !tbaa !11
  %612 = load double, ptr %53, align 8, !tbaa !11
  %613 = fcmp une double %612, 0.000000e+00
  br i1 %613, label %614, label %648

614:                                              ; preds = %600
  %615 = load i32, ptr %50, align 4, !tbaa !9
  %616 = sub nsw i32 %615, 1
  store i32 %616, ptr %37, align 4, !tbaa !9
  store i32 1, ptr %49, align 4, !tbaa !9
  br label %617

617:                                              ; preds = %644, %614
  %618 = load i32, ptr %49, align 4, !tbaa !9
  %619 = load i32, ptr %37, align 4, !tbaa !9
  %620 = icmp sle i32 %618, %619
  br i1 %620, label %621, label %647

621:                                              ; preds = %617
  %622 = load double, ptr %53, align 8, !tbaa !11
  %623 = load ptr, ptr %26, align 8, !tbaa !5
  %624 = load i32, ptr %49, align 4, !tbaa !9
  %625 = load i32, ptr %50, align 4, !tbaa !9
  %626 = load i32, ptr %33, align 4, !tbaa !9
  %627 = mul nsw i32 %625, %626
  %628 = add nsw i32 %624, %627
  %629 = sext i32 %628 to i64
  %630 = getelementptr inbounds double, ptr %623, i64 %629
  %631 = load double, ptr %630, align 8, !tbaa !11
  %632 = load ptr, ptr %26, align 8, !tbaa !5
  %633 = load i32, ptr %49, align 4, !tbaa !9
  %634 = load i32, ptr %50, align 4, !tbaa !9
  %635 = sub nsw i32 %634, 1
  %636 = load i32, ptr %33, align 4, !tbaa !9
  %637 = mul nsw i32 %635, %636
  %638 = add nsw i32 %633, %637
  %639 = sext i32 %638 to i64
  %640 = getelementptr inbounds double, ptr %632, i64 %639
  %641 = load double, ptr %640, align 8, !tbaa !11
  %642 = fneg double %622
  %643 = call double @llvm.fmuladd.f64(double %642, double %631, double %641)
  store double %643, ptr %640, align 8, !tbaa !11
  br label %644

644:                                              ; preds = %621
  %645 = load i32, ptr %49, align 4, !tbaa !9
  %646 = add nsw i32 %645, 1
  store i32 %646, ptr %49, align 4, !tbaa !9
  br label %617, !llvm.loop !22

647:                                              ; preds = %617
  br label %648

648:                                              ; preds = %647, %600
  br label %649

649:                                              ; preds = %648, %577
  br label %650

650:                                              ; preds = %649
  %651 = load i32, ptr %50, align 4, !tbaa !9
  %652 = add nsw i32 %651, -1
  store i32 %652, ptr %50, align 4, !tbaa !9
  br label %463, !llvm.loop !23

653:                                              ; preds = %463
  %654 = load ptr, ptr %26, align 8, !tbaa !5
  %655 = load i32, ptr %33, align 4, !tbaa !9
  %656 = add nsw i32 %655, 1
  %657 = sext i32 %656 to i64
  %658 = getelementptr inbounds double, ptr %654, i64 %657
  %659 = load double, ptr %658, align 8, !tbaa !11
  %660 = fcmp oeq double %659, 0.000000e+00
  br i1 %660, label %661, label %669

661:                                              ; preds = %653
  %662 = load ptr, ptr %29, align 8, !tbaa !5
  %663 = load double, ptr %662, align 8, !tbaa !11
  %664 = load ptr, ptr %26, align 8, !tbaa !5
  %665 = load i32, ptr %33, align 4, !tbaa !9
  %666 = add nsw i32 %665, 1
  %667 = sext i32 %666 to i64
  %668 = getelementptr inbounds double, ptr %664, i64 %667
  store double %663, ptr %668, align 8, !tbaa !11
  br label %669

669:                                              ; preds = %661, %653
  %670 = getelementptr inbounds [1 x i8], ptr %55, i64 0, i64 0
  store i8 84, ptr %670, align 1, !tbaa !20
  br label %671

671:                                              ; preds = %669, %458
  %672 = getelementptr inbounds [1 x i8], ptr %69, i64 0, i64 0
  store i8 78, ptr %672, align 1, !tbaa !20
  %673 = load ptr, ptr %19, align 8, !tbaa !5
  %674 = load i32, ptr %673, align 4, !tbaa !9
  store i32 %674, ptr %37, align 4, !tbaa !9
  store i32 1, ptr %73, align 4, !tbaa !9
  br label %675

675:                                              ; preds = %743, %671
  %676 = load i32, ptr %73, align 4, !tbaa !9
  %677 = load i32, ptr %37, align 4, !tbaa !9
  %678 = icmp sle i32 %676, %677
  br i1 %678, label %679, label %746

679:                                              ; preds = %675
  %680 = getelementptr inbounds [1 x i8], ptr %55, i64 0, i64 0
  %681 = getelementptr inbounds [1 x i8], ptr %69, i64 0, i64 0
  %682 = load ptr, ptr %19, align 8, !tbaa !5
  %683 = load ptr, ptr %26, align 8, !tbaa !5
  %684 = load i32, ptr %34, align 4, !tbaa !9
  %685 = sext i32 %684 to i64
  %686 = getelementptr inbounds double, ptr %683, i64 %685
  %687 = load ptr, ptr %27, align 8, !tbaa !5
  %688 = load ptr, ptr %24, align 8, !tbaa !5
  %689 = getelementptr inbounds double, ptr %688, i64 1
  %690 = load ptr, ptr %28, align 8, !tbaa !5
  %691 = getelementptr inbounds double, ptr %690, i64 1
  call void @dlatrs_(ptr noundef @.str, ptr noundef %680, ptr noundef @.str.1, ptr noundef %681, ptr noundef %682, ptr noundef %686, ptr noundef %687, ptr noundef %689, ptr noundef %51, ptr noundef %691, ptr noundef %45)
  %692 = getelementptr inbounds [1 x i8], ptr %69, i64 0, i64 0
  store i8 89, ptr %692, align 1, !tbaa !20
  %693 = load ptr, ptr %19, align 8, !tbaa !5
  %694 = load ptr, ptr %24, align 8, !tbaa !5
  %695 = getelementptr inbounds double, ptr %694, i64 1
  %696 = call double @dasum_(ptr noundef %693, ptr noundef %695, ptr noundef @c__1)
  store double %696, ptr %61, align 8, !tbaa !11
  %697 = load double, ptr %61, align 8, !tbaa !11
  %698 = load double, ptr %71, align 8, !tbaa !11
  %699 = load double, ptr %51, align 8, !tbaa !11
  %700 = fmul double %698, %699
  %701 = fcmp oge double %697, %700
  br i1 %701, label %702, label %703

702:                                              ; preds = %679
  br label %748

703:                                              ; preds = %679
  %704 = load ptr, ptr %29, align 8, !tbaa !5
  %705 = load double, ptr %704, align 8, !tbaa !11
  %706 = load double, ptr %60, align 8, !tbaa !11
  %707 = fadd double %706, 1.000000e+00
  %708 = fdiv double %705, %707
  store double %708, ptr %46, align 8, !tbaa !11
  %709 = load ptr, ptr %29, align 8, !tbaa !5
  %710 = load double, ptr %709, align 8, !tbaa !11
  %711 = load ptr, ptr %24, align 8, !tbaa !5
  %712 = getelementptr inbounds double, ptr %711, i64 1
  store double %710, ptr %712, align 8, !tbaa !11
  %713 = load ptr, ptr %19, align 8, !tbaa !5
  %714 = load i32, ptr %713, align 4, !tbaa !9
  store i32 %714, ptr %38, align 4, !tbaa !9
  store i32 2, ptr %49, align 4, !tbaa !9
  br label %715

715:                                              ; preds = %725, %703
  %716 = load i32, ptr %49, align 4, !tbaa !9
  %717 = load i32, ptr %38, align 4, !tbaa !9
  %718 = icmp sle i32 %716, %717
  br i1 %718, label %719, label %728

719:                                              ; preds = %715
  %720 = load double, ptr %46, align 8, !tbaa !11
  %721 = load ptr, ptr %24, align 8, !tbaa !5
  %722 = load i32, ptr %49, align 4, !tbaa !9
  %723 = sext i32 %722 to i64
  %724 = getelementptr inbounds double, ptr %721, i64 %723
  store double %720, ptr %724, align 8, !tbaa !11
  br label %725

725:                                              ; preds = %719
  %726 = load i32, ptr %49, align 4, !tbaa !9
  %727 = add nsw i32 %726, 1
  store i32 %727, ptr %49, align 4, !tbaa !9
  br label %715, !llvm.loop !24

728:                                              ; preds = %715
  %729 = load ptr, ptr %29, align 8, !tbaa !5
  %730 = load double, ptr %729, align 8, !tbaa !11
  %731 = load double, ptr %60, align 8, !tbaa !11
  %732 = load ptr, ptr %24, align 8, !tbaa !5
  %733 = load ptr, ptr %19, align 8, !tbaa !5
  %734 = load i32, ptr %733, align 4, !tbaa !9
  %735 = load i32, ptr %73, align 4, !tbaa !9
  %736 = sub nsw i32 %734, %735
  %737 = add nsw i32 %736, 1
  %738 = sext i32 %737 to i64
  %739 = getelementptr inbounds double, ptr %732, i64 %738
  %740 = load double, ptr %739, align 8, !tbaa !11
  %741 = fneg double %730
  %742 = call double @llvm.fmuladd.f64(double %741, double %731, double %740)
  store double %742, ptr %739, align 8, !tbaa !11
  br label %743

743:                                              ; preds = %728
  %744 = load i32, ptr %73, align 4, !tbaa !9
  %745 = add nsw i32 %744, 1
  store i32 %745, ptr %73, align 4, !tbaa !9
  br label %675, !llvm.loop !25

746:                                              ; preds = %675
  %747 = load ptr, ptr %32, align 8, !tbaa !5
  store i32 1, ptr %747, align 4, !tbaa !9
  br label %748

748:                                              ; preds = %746, %702
  %749 = load ptr, ptr %19, align 8, !tbaa !5
  %750 = load ptr, ptr %24, align 8, !tbaa !5
  %751 = getelementptr inbounds double, ptr %750, i64 1
  %752 = call i32 @idamax_(ptr noundef %749, ptr noundef %751, ptr noundef @c__1)
  store i32 %752, ptr %49, align 4, !tbaa !9
  %753 = load ptr, ptr %24, align 8, !tbaa !5
  %754 = load i32, ptr %49, align 4, !tbaa !9
  %755 = sext i32 %754 to i64
  %756 = getelementptr inbounds double, ptr %753, i64 %755
  %757 = load double, ptr %756, align 8, !tbaa !11
  store double %757, ptr %41, align 8, !tbaa !11
  %758 = load double, ptr %41, align 8, !tbaa !11
  %759 = fcmp oge double %758, 0.000000e+00
  br i1 %759, label %760, label %762

760:                                              ; preds = %748
  %761 = load double, ptr %41, align 8, !tbaa !11
  br label %765

762:                                              ; preds = %748
  %763 = load double, ptr %41, align 8, !tbaa !11
  %764 = fneg double %763
  br label %765

765:                                              ; preds = %762, %760
  %766 = phi double [ %761, %760 ], [ %764, %762 ]
  %767 = fdiv double 1.000000e+00, %766
  store double %767, ptr %42, align 8, !tbaa !11
  %768 = load ptr, ptr %19, align 8, !tbaa !5
  %769 = load ptr, ptr %24, align 8, !tbaa !5
  %770 = getelementptr inbounds double, ptr %769, i64 1
  call void @dscal_(ptr noundef %768, ptr noundef %42, ptr noundef %770, ptr noundef @c__1)
  br label %2339

771:                                              ; preds = %181
  %772 = load ptr, ptr %18, align 8, !tbaa !5
  %773 = load i32, ptr %772, align 4, !tbaa !9
  %774 = icmp ne i32 %773, 0
  br i1 %774, label %775, label %797

775:                                              ; preds = %771
  %776 = load ptr, ptr %19, align 8, !tbaa !5
  %777 = load i32, ptr %776, align 4, !tbaa !9
  store i32 %777, ptr %37, align 4, !tbaa !9
  store i32 1, ptr %49, align 4, !tbaa !9
  br label %778

778:                                              ; preds = %793, %775
  %779 = load i32, ptr %49, align 4, !tbaa !9
  %780 = load i32, ptr %37, align 4, !tbaa !9
  %781 = icmp sle i32 %779, %780
  br i1 %781, label %782, label %796

782:                                              ; preds = %778
  %783 = load ptr, ptr %29, align 8, !tbaa !5
  %784 = load double, ptr %783, align 8, !tbaa !11
  %785 = load ptr, ptr %24, align 8, !tbaa !5
  %786 = load i32, ptr %49, align 4, !tbaa !9
  %787 = sext i32 %786 to i64
  %788 = getelementptr inbounds double, ptr %785, i64 %787
  store double %784, ptr %788, align 8, !tbaa !11
  %789 = load ptr, ptr %25, align 8, !tbaa !5
  %790 = load i32, ptr %49, align 4, !tbaa !9
  %791 = sext i32 %790 to i64
  %792 = getelementptr inbounds double, ptr %789, i64 %791
  store double 0.000000e+00, ptr %792, align 8, !tbaa !11
  br label %793

793:                                              ; preds = %782
  %794 = load i32, ptr %49, align 4, !tbaa !9
  %795 = add nsw i32 %794, 1
  store i32 %795, ptr %49, align 4, !tbaa !9
  br label %778, !llvm.loop !26

796:                                              ; preds = %778
  br label %827

797:                                              ; preds = %771
  %798 = load ptr, ptr %19, align 8, !tbaa !5
  %799 = load ptr, ptr %24, align 8, !tbaa !5
  %800 = getelementptr inbounds double, ptr %799, i64 1
  %801 = call double @dnrm2_(ptr noundef %798, ptr noundef %800, ptr noundef @c__1)
  store double %801, ptr %41, align 8, !tbaa !11
  %802 = load ptr, ptr %19, align 8, !tbaa !5
  %803 = load ptr, ptr %25, align 8, !tbaa !5
  %804 = getelementptr inbounds double, ptr %803, i64 1
  %805 = call double @dnrm2_(ptr noundef %802, ptr noundef %804, ptr noundef @c__1)
  store double %805, ptr %42, align 8, !tbaa !11
  %806 = call double @dlapy2_(ptr noundef %41, ptr noundef %42)
  store double %806, ptr %47, align 8, !tbaa !11
  %807 = load ptr, ptr %29, align 8, !tbaa !5
  %808 = load double, ptr %807, align 8, !tbaa !11
  %809 = load double, ptr %60, align 8, !tbaa !11
  %810 = fmul double %808, %809
  %811 = load double, ptr %47, align 8, !tbaa !11
  %812 = load double, ptr %70, align 8, !tbaa !11
  %813 = fcmp oge double %811, %812
  br i1 %813, label %814, label %816

814:                                              ; preds = %797
  %815 = load double, ptr %47, align 8, !tbaa !11
  br label %818

816:                                              ; preds = %797
  %817 = load double, ptr %70, align 8, !tbaa !11
  br label %818

818:                                              ; preds = %816, %814
  %819 = phi double [ %815, %814 ], [ %817, %816 ]
  %820 = fdiv double %810, %819
  store double %820, ptr %72, align 8, !tbaa !11
  %821 = load ptr, ptr %19, align 8, !tbaa !5
  %822 = load ptr, ptr %24, align 8, !tbaa !5
  %823 = getelementptr inbounds double, ptr %822, i64 1
  call void @dscal_(ptr noundef %821, ptr noundef %72, ptr noundef %823, ptr noundef @c__1)
  %824 = load ptr, ptr %19, align 8, !tbaa !5
  %825 = load ptr, ptr %25, align 8, !tbaa !5
  %826 = getelementptr inbounds double, ptr %825, i64 1
  call void @dscal_(ptr noundef %824, ptr noundef %72, ptr noundef %826, ptr noundef @c__1)
  br label %827

827:                                              ; preds = %818, %796
  %828 = load ptr, ptr %17, align 8, !tbaa !5
  %829 = load i32, ptr %828, align 4, !tbaa !9
  %830 = icmp ne i32 %829, 0
  br i1 %830, label %831, label %1323

831:                                              ; preds = %827
  %832 = load ptr, ptr %23, align 8, !tbaa !5
  %833 = load double, ptr %832, align 8, !tbaa !11
  %834 = fneg double %833
  %835 = load ptr, ptr %26, align 8, !tbaa !5
  %836 = load i32, ptr %33, align 4, !tbaa !9
  %837 = add nsw i32 %836, 2
  %838 = sext i32 %837 to i64
  %839 = getelementptr inbounds double, ptr %835, i64 %838
  store double %834, ptr %839, align 8, !tbaa !11
  %840 = load ptr, ptr %19, align 8, !tbaa !5
  %841 = load i32, ptr %840, align 4, !tbaa !9
  store i32 %841, ptr %37, align 4, !tbaa !9
  store i32 2, ptr %49, align 4, !tbaa !9
  br label %842

842:                                              ; preds = %854, %831
  %843 = load i32, ptr %49, align 4, !tbaa !9
  %844 = load i32, ptr %37, align 4, !tbaa !9
  %845 = icmp sle i32 %843, %844
  br i1 %845, label %846, label %857

846:                                              ; preds = %842
  %847 = load ptr, ptr %26, align 8, !tbaa !5
  %848 = load i32, ptr %49, align 4, !tbaa !9
  %849 = add nsw i32 %848, 1
  %850 = load i32, ptr %33, align 4, !tbaa !9
  %851 = add nsw i32 %849, %850
  %852 = sext i32 %851 to i64
  %853 = getelementptr inbounds double, ptr %847, i64 %852
  store double 0.000000e+00, ptr %853, align 8, !tbaa !11
  br label %854

854:                                              ; preds = %846
  %855 = load i32, ptr %49, align 4, !tbaa !9
  %856 = add nsw i32 %855, 1
  store i32 %856, ptr %49, align 4, !tbaa !9
  br label %842, !llvm.loop !27

857:                                              ; preds = %842
  %858 = load ptr, ptr %19, align 8, !tbaa !5
  %859 = load i32, ptr %858, align 4, !tbaa !9
  %860 = sub nsw i32 %859, 1
  store i32 %860, ptr %37, align 4, !tbaa !9
  store i32 1, ptr %49, align 4, !tbaa !9
  br label %861

861:                                              ; preds = %1272, %857
  %862 = load i32, ptr %49, align 4, !tbaa !9
  %863 = load i32, ptr %37, align 4, !tbaa !9
  %864 = icmp sle i32 %862, %863
  br i1 %864, label %865, label %1275

865:                                              ; preds = %861
  %866 = load ptr, ptr %26, align 8, !tbaa !5
  %867 = load i32, ptr %49, align 4, !tbaa !9
  %868 = load i32, ptr %49, align 4, !tbaa !9
  %869 = load i32, ptr %33, align 4, !tbaa !9
  %870 = mul nsw i32 %868, %869
  %871 = add nsw i32 %867, %870
  %872 = sext i32 %871 to i64
  %873 = getelementptr inbounds double, ptr %866, i64 %872
  %874 = load ptr, ptr %26, align 8, !tbaa !5
  %875 = load i32, ptr %49, align 4, !tbaa !9
  %876 = add nsw i32 %875, 1
  %877 = load i32, ptr %49, align 4, !tbaa !9
  %878 = load i32, ptr %33, align 4, !tbaa !9
  %879 = mul nsw i32 %877, %878
  %880 = add nsw i32 %876, %879
  %881 = sext i32 %880 to i64
  %882 = getelementptr inbounds double, ptr %874, i64 %881
  %883 = call double @dlapy2_(ptr noundef %873, ptr noundef %882)
  store double %883, ptr %65, align 8, !tbaa !11
  %884 = load ptr, ptr %20, align 8, !tbaa !5
  %885 = load i32, ptr %49, align 4, !tbaa !9
  %886 = add nsw i32 %885, 1
  %887 = load i32, ptr %49, align 4, !tbaa !9
  %888 = load i32, ptr %35, align 4, !tbaa !9
  %889 = mul nsw i32 %887, %888
  %890 = add nsw i32 %886, %889
  %891 = sext i32 %890 to i64
  %892 = getelementptr inbounds double, ptr %884, i64 %891
  %893 = load double, ptr %892, align 8, !tbaa !11
  store double %893, ptr %63, align 8, !tbaa !11
  %894 = load double, ptr %65, align 8, !tbaa !11
  %895 = load double, ptr %63, align 8, !tbaa !11
  %896 = fcmp oge double %895, 0.000000e+00
  br i1 %896, label %897, label %899

897:                                              ; preds = %865
  %898 = load double, ptr %63, align 8, !tbaa !11
  br label %902

899:                                              ; preds = %865
  %900 = load double, ptr %63, align 8, !tbaa !11
  %901 = fneg double %900
  br label %902

902:                                              ; preds = %899, %897
  %903 = phi double [ %898, %897 ], [ %901, %899 ]
  %904 = fcmp olt double %894, %903
  br i1 %904, label %905, label %1077

905:                                              ; preds = %902
  %906 = load ptr, ptr %26, align 8, !tbaa !5
  %907 = load i32, ptr %49, align 4, !tbaa !9
  %908 = load i32, ptr %49, align 4, !tbaa !9
  %909 = load i32, ptr %33, align 4, !tbaa !9
  %910 = mul nsw i32 %908, %909
  %911 = add nsw i32 %907, %910
  %912 = sext i32 %911 to i64
  %913 = getelementptr inbounds double, ptr %906, i64 %912
  %914 = load double, ptr %913, align 8, !tbaa !11
  %915 = load double, ptr %63, align 8, !tbaa !11
  %916 = fdiv double %914, %915
  store double %916, ptr %68, align 8, !tbaa !11
  %917 = load ptr, ptr %26, align 8, !tbaa !5
  %918 = load i32, ptr %49, align 4, !tbaa !9
  %919 = add nsw i32 %918, 1
  %920 = load i32, ptr %49, align 4, !tbaa !9
  %921 = load i32, ptr %33, align 4, !tbaa !9
  %922 = mul nsw i32 %920, %921
  %923 = add nsw i32 %919, %922
  %924 = sext i32 %923 to i64
  %925 = getelementptr inbounds double, ptr %917, i64 %924
  %926 = load double, ptr %925, align 8, !tbaa !11
  %927 = load double, ptr %63, align 8, !tbaa !11
  %928 = fdiv double %926, %927
  store double %928, ptr %67, align 8, !tbaa !11
  %929 = load double, ptr %63, align 8, !tbaa !11
  %930 = load ptr, ptr %26, align 8, !tbaa !5
  %931 = load i32, ptr %49, align 4, !tbaa !9
  %932 = load i32, ptr %49, align 4, !tbaa !9
  %933 = load i32, ptr %33, align 4, !tbaa !9
  %934 = mul nsw i32 %932, %933
  %935 = add nsw i32 %931, %934
  %936 = sext i32 %935 to i64
  %937 = getelementptr inbounds double, ptr %930, i64 %936
  store double %929, ptr %937, align 8, !tbaa !11
  %938 = load ptr, ptr %26, align 8, !tbaa !5
  %939 = load i32, ptr %49, align 4, !tbaa !9
  %940 = add nsw i32 %939, 1
  %941 = load i32, ptr %49, align 4, !tbaa !9
  %942 = load i32, ptr %33, align 4, !tbaa !9
  %943 = mul nsw i32 %941, %942
  %944 = add nsw i32 %940, %943
  %945 = sext i32 %944 to i64
  %946 = getelementptr inbounds double, ptr %938, i64 %945
  store double 0.000000e+00, ptr %946, align 8, !tbaa !11
  %947 = load ptr, ptr %19, align 8, !tbaa !5
  %948 = load i32, ptr %947, align 4, !tbaa !9
  store i32 %948, ptr %38, align 4, !tbaa !9
  %949 = load i32, ptr %49, align 4, !tbaa !9
  %950 = add nsw i32 %949, 1
  store i32 %950, ptr %50, align 4, !tbaa !9
  br label %951

951:                                              ; preds = %1030, %905
  %952 = load i32, ptr %50, align 4, !tbaa !9
  %953 = load i32, ptr %38, align 4, !tbaa !9
  %954 = icmp sle i32 %952, %953
  br i1 %954, label %955, label %1033

955:                                              ; preds = %951
  %956 = load ptr, ptr %26, align 8, !tbaa !5
  %957 = load i32, ptr %49, align 4, !tbaa !9
  %958 = add nsw i32 %957, 1
  %959 = load i32, ptr %50, align 4, !tbaa !9
  %960 = load i32, ptr %33, align 4, !tbaa !9
  %961 = mul nsw i32 %959, %960
  %962 = add nsw i32 %958, %961
  %963 = sext i32 %962 to i64
  %964 = getelementptr inbounds double, ptr %956, i64 %963
  %965 = load double, ptr %964, align 8, !tbaa !11
  store double %965, ptr %46, align 8, !tbaa !11
  %966 = load ptr, ptr %26, align 8, !tbaa !5
  %967 = load i32, ptr %49, align 4, !tbaa !9
  %968 = load i32, ptr %50, align 4, !tbaa !9
  %969 = load i32, ptr %33, align 4, !tbaa !9
  %970 = mul nsw i32 %968, %969
  %971 = add nsw i32 %967, %970
  %972 = sext i32 %971 to i64
  %973 = getelementptr inbounds double, ptr %966, i64 %972
  %974 = load double, ptr %973, align 8, !tbaa !11
  %975 = load double, ptr %68, align 8, !tbaa !11
  %976 = load double, ptr %46, align 8, !tbaa !11
  %977 = fneg double %975
  %978 = call double @llvm.fmuladd.f64(double %977, double %976, double %974)
  %979 = load ptr, ptr %26, align 8, !tbaa !5
  %980 = load i32, ptr %49, align 4, !tbaa !9
  %981 = add nsw i32 %980, 1
  %982 = load i32, ptr %50, align 4, !tbaa !9
  %983 = load i32, ptr %33, align 4, !tbaa !9
  %984 = mul nsw i32 %982, %983
  %985 = add nsw i32 %981, %984
  %986 = sext i32 %985 to i64
  %987 = getelementptr inbounds double, ptr %979, i64 %986
  store double %978, ptr %987, align 8, !tbaa !11
  %988 = load ptr, ptr %26, align 8, !tbaa !5
  %989 = load i32, ptr %50, align 4, !tbaa !9
  %990 = add nsw i32 %989, 1
  %991 = load i32, ptr %49, align 4, !tbaa !9
  %992 = load i32, ptr %33, align 4, !tbaa !9
  %993 = mul nsw i32 %991, %992
  %994 = add nsw i32 %990, %993
  %995 = sext i32 %994 to i64
  %996 = getelementptr inbounds double, ptr %988, i64 %995
  %997 = load double, ptr %996, align 8, !tbaa !11
  %998 = load double, ptr %67, align 8, !tbaa !11
  %999 = load double, ptr %46, align 8, !tbaa !11
  %1000 = fneg double %998
  %1001 = call double @llvm.fmuladd.f64(double %1000, double %999, double %997)
  %1002 = load ptr, ptr %26, align 8, !tbaa !5
  %1003 = load i32, ptr %50, align 4, !tbaa !9
  %1004 = add nsw i32 %1003, 1
  %1005 = load i32, ptr %49, align 4, !tbaa !9
  %1006 = add nsw i32 %1005, 1
  %1007 = load i32, ptr %33, align 4, !tbaa !9
  %1008 = mul nsw i32 %1006, %1007
  %1009 = add nsw i32 %1004, %1008
  %1010 = sext i32 %1009 to i64
  %1011 = getelementptr inbounds double, ptr %1002, i64 %1010
  store double %1001, ptr %1011, align 8, !tbaa !11
  %1012 = load double, ptr %46, align 8, !tbaa !11
  %1013 = load ptr, ptr %26, align 8, !tbaa !5
  %1014 = load i32, ptr %49, align 4, !tbaa !9
  %1015 = load i32, ptr %50, align 4, !tbaa !9
  %1016 = load i32, ptr %33, align 4, !tbaa !9
  %1017 = mul nsw i32 %1015, %1016
  %1018 = add nsw i32 %1014, %1017
  %1019 = sext i32 %1018 to i64
  %1020 = getelementptr inbounds double, ptr %1013, i64 %1019
  store double %1012, ptr %1020, align 8, !tbaa !11
  %1021 = load ptr, ptr %26, align 8, !tbaa !5
  %1022 = load i32, ptr %50, align 4, !tbaa !9
  %1023 = add nsw i32 %1022, 1
  %1024 = load i32, ptr %49, align 4, !tbaa !9
  %1025 = load i32, ptr %33, align 4, !tbaa !9
  %1026 = mul nsw i32 %1024, %1025
  %1027 = add nsw i32 %1023, %1026
  %1028 = sext i32 %1027 to i64
  %1029 = getelementptr inbounds double, ptr %1021, i64 %1028
  store double 0.000000e+00, ptr %1029, align 8, !tbaa !11
  br label %1030

1030:                                             ; preds = %955
  %1031 = load i32, ptr %50, align 4, !tbaa !9
  %1032 = add nsw i32 %1031, 1
  store i32 %1032, ptr %50, align 4, !tbaa !9
  br label %951, !llvm.loop !28

1033:                                             ; preds = %951
  %1034 = load ptr, ptr %23, align 8, !tbaa !5
  %1035 = load double, ptr %1034, align 8, !tbaa !11
  %1036 = fneg double %1035
  %1037 = load ptr, ptr %26, align 8, !tbaa !5
  %1038 = load i32, ptr %49, align 4, !tbaa !9
  %1039 = add nsw i32 %1038, 2
  %1040 = load i32, ptr %49, align 4, !tbaa !9
  %1041 = load i32, ptr %33, align 4, !tbaa !9
  %1042 = mul nsw i32 %1040, %1041
  %1043 = add nsw i32 %1039, %1042
  %1044 = sext i32 %1043 to i64
  %1045 = getelementptr inbounds double, ptr %1037, i64 %1044
  store double %1036, ptr %1045, align 8, !tbaa !11
  %1046 = load double, ptr %67, align 8, !tbaa !11
  %1047 = load ptr, ptr %23, align 8, !tbaa !5
  %1048 = load double, ptr %1047, align 8, !tbaa !11
  %1049 = load ptr, ptr %26, align 8, !tbaa !5
  %1050 = load i32, ptr %49, align 4, !tbaa !9
  %1051 = add nsw i32 %1050, 1
  %1052 = load i32, ptr %49, align 4, !tbaa !9
  %1053 = add nsw i32 %1052, 1
  %1054 = load i32, ptr %33, align 4, !tbaa !9
  %1055 = mul nsw i32 %1053, %1054
  %1056 = add nsw i32 %1051, %1055
  %1057 = sext i32 %1056 to i64
  %1058 = getelementptr inbounds double, ptr %1049, i64 %1057
  %1059 = load double, ptr %1058, align 8, !tbaa !11
  %1060 = fneg double %1046
  %1061 = call double @llvm.fmuladd.f64(double %1060, double %1048, double %1059)
  store double %1061, ptr %1058, align 8, !tbaa !11
  %1062 = load double, ptr %68, align 8, !tbaa !11
  %1063 = load ptr, ptr %23, align 8, !tbaa !5
  %1064 = load double, ptr %1063, align 8, !tbaa !11
  %1065 = load ptr, ptr %26, align 8, !tbaa !5
  %1066 = load i32, ptr %49, align 4, !tbaa !9
  %1067 = add nsw i32 %1066, 2
  %1068 = load i32, ptr %49, align 4, !tbaa !9
  %1069 = add nsw i32 %1068, 1
  %1070 = load i32, ptr %33, align 4, !tbaa !9
  %1071 = mul nsw i32 %1069, %1070
  %1072 = add nsw i32 %1067, %1071
  %1073 = sext i32 %1072 to i64
  %1074 = getelementptr inbounds double, ptr %1065, i64 %1073
  %1075 = load double, ptr %1074, align 8, !tbaa !11
  %1076 = call double @llvm.fmuladd.f64(double %1062, double %1064, double %1075)
  store double %1076, ptr %1074, align 8, !tbaa !11
  br label %1237

1077:                                             ; preds = %902
  %1078 = load double, ptr %65, align 8, !tbaa !11
  %1079 = fcmp oeq double %1078, 0.000000e+00
  br i1 %1079, label %1080, label %1102

1080:                                             ; preds = %1077
  %1081 = load ptr, ptr %29, align 8, !tbaa !5
  %1082 = load double, ptr %1081, align 8, !tbaa !11
  %1083 = load ptr, ptr %26, align 8, !tbaa !5
  %1084 = load i32, ptr %49, align 4, !tbaa !9
  %1085 = load i32, ptr %49, align 4, !tbaa !9
  %1086 = load i32, ptr %33, align 4, !tbaa !9
  %1087 = mul nsw i32 %1085, %1086
  %1088 = add nsw i32 %1084, %1087
  %1089 = sext i32 %1088 to i64
  %1090 = getelementptr inbounds double, ptr %1083, i64 %1089
  store double %1082, ptr %1090, align 8, !tbaa !11
  %1091 = load ptr, ptr %26, align 8, !tbaa !5
  %1092 = load i32, ptr %49, align 4, !tbaa !9
  %1093 = add nsw i32 %1092, 1
  %1094 = load i32, ptr %49, align 4, !tbaa !9
  %1095 = load i32, ptr %33, align 4, !tbaa !9
  %1096 = mul nsw i32 %1094, %1095
  %1097 = add nsw i32 %1093, %1096
  %1098 = sext i32 %1097 to i64
  %1099 = getelementptr inbounds double, ptr %1091, i64 %1098
  store double 0.000000e+00, ptr %1099, align 8, !tbaa !11
  %1100 = load ptr, ptr %29, align 8, !tbaa !5
  %1101 = load double, ptr %1100, align 8, !tbaa !11
  store double %1101, ptr %65, align 8, !tbaa !11
  br label %1102

1102:                                             ; preds = %1080, %1077
  %1103 = load double, ptr %63, align 8, !tbaa !11
  %1104 = load double, ptr %65, align 8, !tbaa !11
  %1105 = fdiv double %1103, %1104
  %1106 = load double, ptr %65, align 8, !tbaa !11
  %1107 = fdiv double %1105, %1106
  store double %1107, ptr %63, align 8, !tbaa !11
  %1108 = load ptr, ptr %26, align 8, !tbaa !5
  %1109 = load i32, ptr %49, align 4, !tbaa !9
  %1110 = load i32, ptr %49, align 4, !tbaa !9
  %1111 = load i32, ptr %33, align 4, !tbaa !9
  %1112 = mul nsw i32 %1110, %1111
  %1113 = add nsw i32 %1109, %1112
  %1114 = sext i32 %1113 to i64
  %1115 = getelementptr inbounds double, ptr %1108, i64 %1114
  %1116 = load double, ptr %1115, align 8, !tbaa !11
  %1117 = load double, ptr %63, align 8, !tbaa !11
  %1118 = fmul double %1116, %1117
  store double %1118, ptr %68, align 8, !tbaa !11
  %1119 = load ptr, ptr %26, align 8, !tbaa !5
  %1120 = load i32, ptr %49, align 4, !tbaa !9
  %1121 = add nsw i32 %1120, 1
  %1122 = load i32, ptr %49, align 4, !tbaa !9
  %1123 = load i32, ptr %33, align 4, !tbaa !9
  %1124 = mul nsw i32 %1122, %1123
  %1125 = add nsw i32 %1121, %1124
  %1126 = sext i32 %1125 to i64
  %1127 = getelementptr inbounds double, ptr %1119, i64 %1126
  %1128 = load double, ptr %1127, align 8, !tbaa !11
  %1129 = fneg double %1128
  %1130 = load double, ptr %63, align 8, !tbaa !11
  %1131 = fmul double %1129, %1130
  store double %1131, ptr %67, align 8, !tbaa !11
  %1132 = load ptr, ptr %19, align 8, !tbaa !5
  %1133 = load i32, ptr %1132, align 4, !tbaa !9
  store i32 %1133, ptr %38, align 4, !tbaa !9
  %1134 = load i32, ptr %49, align 4, !tbaa !9
  %1135 = add nsw i32 %1134, 1
  store i32 %1135, ptr %50, align 4, !tbaa !9
  br label %1136

1136:                                             ; preds = %1219, %1102
  %1137 = load i32, ptr %50, align 4, !tbaa !9
  %1138 = load i32, ptr %38, align 4, !tbaa !9
  %1139 = icmp sle i32 %1137, %1138
  br i1 %1139, label %1140, label %1222

1140:                                             ; preds = %1136
  %1141 = load ptr, ptr %26, align 8, !tbaa !5
  %1142 = load i32, ptr %49, align 4, !tbaa !9
  %1143 = add nsw i32 %1142, 1
  %1144 = load i32, ptr %50, align 4, !tbaa !9
  %1145 = load i32, ptr %33, align 4, !tbaa !9
  %1146 = mul nsw i32 %1144, %1145
  %1147 = add nsw i32 %1143, %1146
  %1148 = sext i32 %1147 to i64
  %1149 = getelementptr inbounds double, ptr %1141, i64 %1148
  %1150 = load double, ptr %1149, align 8, !tbaa !11
  %1151 = load double, ptr %68, align 8, !tbaa !11
  %1152 = load ptr, ptr %26, align 8, !tbaa !5
  %1153 = load i32, ptr %49, align 4, !tbaa !9
  %1154 = load i32, ptr %50, align 4, !tbaa !9
  %1155 = load i32, ptr %33, align 4, !tbaa !9
  %1156 = mul nsw i32 %1154, %1155
  %1157 = add nsw i32 %1153, %1156
  %1158 = sext i32 %1157 to i64
  %1159 = getelementptr inbounds double, ptr %1152, i64 %1158
  %1160 = load double, ptr %1159, align 8, !tbaa !11
  %1161 = fneg double %1151
  %1162 = call double @llvm.fmuladd.f64(double %1161, double %1160, double %1150)
  %1163 = load double, ptr %67, align 8, !tbaa !11
  %1164 = load ptr, ptr %26, align 8, !tbaa !5
  %1165 = load i32, ptr %50, align 4, !tbaa !9
  %1166 = add nsw i32 %1165, 1
  %1167 = load i32, ptr %49, align 4, !tbaa !9
  %1168 = load i32, ptr %33, align 4, !tbaa !9
  %1169 = mul nsw i32 %1167, %1168
  %1170 = add nsw i32 %1166, %1169
  %1171 = sext i32 %1170 to i64
  %1172 = getelementptr inbounds double, ptr %1164, i64 %1171
  %1173 = load double, ptr %1172, align 8, !tbaa !11
  %1174 = call double @llvm.fmuladd.f64(double %1163, double %1173, double %1162)
  %1175 = load ptr, ptr %26, align 8, !tbaa !5
  %1176 = load i32, ptr %49, align 4, !tbaa !9
  %1177 = add nsw i32 %1176, 1
  %1178 = load i32, ptr %50, align 4, !tbaa !9
  %1179 = load i32, ptr %33, align 4, !tbaa !9
  %1180 = mul nsw i32 %1178, %1179
  %1181 = add nsw i32 %1177, %1180
  %1182 = sext i32 %1181 to i64
  %1183 = getelementptr inbounds double, ptr %1175, i64 %1182
  store double %1174, ptr %1183, align 8, !tbaa !11
  %1184 = load double, ptr %68, align 8, !tbaa !11
  %1185 = fneg double %1184
  %1186 = load ptr, ptr %26, align 8, !tbaa !5
  %1187 = load i32, ptr %50, align 4, !tbaa !9
  %1188 = add nsw i32 %1187, 1
  %1189 = load i32, ptr %49, align 4, !tbaa !9
  %1190 = load i32, ptr %33, align 4, !tbaa !9
  %1191 = mul nsw i32 %1189, %1190
  %1192 = add nsw i32 %1188, %1191
  %1193 = sext i32 %1192 to i64
  %1194 = getelementptr inbounds double, ptr %1186, i64 %1193
  %1195 = load double, ptr %1194, align 8, !tbaa !11
  %1196 = load double, ptr %67, align 8, !tbaa !11
  %1197 = load ptr, ptr %26, align 8, !tbaa !5
  %1198 = load i32, ptr %49, align 4, !tbaa !9
  %1199 = load i32, ptr %50, align 4, !tbaa !9
  %1200 = load i32, ptr %33, align 4, !tbaa !9
  %1201 = mul nsw i32 %1199, %1200
  %1202 = add nsw i32 %1198, %1201
  %1203 = sext i32 %1202 to i64
  %1204 = getelementptr inbounds double, ptr %1197, i64 %1203
  %1205 = load double, ptr %1204, align 8, !tbaa !11
  %1206 = fmul double %1196, %1205
  %1207 = fneg double %1206
  %1208 = call double @llvm.fmuladd.f64(double %1185, double %1195, double %1207)
  %1209 = load ptr, ptr %26, align 8, !tbaa !5
  %1210 = load i32, ptr %50, align 4, !tbaa !9
  %1211 = add nsw i32 %1210, 1
  %1212 = load i32, ptr %49, align 4, !tbaa !9
  %1213 = add nsw i32 %1212, 1
  %1214 = load i32, ptr %33, align 4, !tbaa !9
  %1215 = mul nsw i32 %1213, %1214
  %1216 = add nsw i32 %1211, %1215
  %1217 = sext i32 %1216 to i64
  %1218 = getelementptr inbounds double, ptr %1209, i64 %1217
  store double %1208, ptr %1218, align 8, !tbaa !11
  br label %1219

1219:                                             ; preds = %1140
  %1220 = load i32, ptr %50, align 4, !tbaa !9
  %1221 = add nsw i32 %1220, 1
  store i32 %1221, ptr %50, align 4, !tbaa !9
  br label %1136, !llvm.loop !29

1222:                                             ; preds = %1136
  %1223 = load ptr, ptr %23, align 8, !tbaa !5
  %1224 = load double, ptr %1223, align 8, !tbaa !11
  %1225 = load ptr, ptr %26, align 8, !tbaa !5
  %1226 = load i32, ptr %49, align 4, !tbaa !9
  %1227 = add nsw i32 %1226, 2
  %1228 = load i32, ptr %49, align 4, !tbaa !9
  %1229 = add nsw i32 %1228, 1
  %1230 = load i32, ptr %33, align 4, !tbaa !9
  %1231 = mul nsw i32 %1229, %1230
  %1232 = add nsw i32 %1227, %1231
  %1233 = sext i32 %1232 to i64
  %1234 = getelementptr inbounds double, ptr %1225, i64 %1233
  %1235 = load double, ptr %1234, align 8, !tbaa !11
  %1236 = fsub double %1235, %1224
  store double %1236, ptr %1234, align 8, !tbaa !11
  br label %1237

1237:                                             ; preds = %1222, %1033
  %1238 = load ptr, ptr %19, align 8, !tbaa !5
  %1239 = load i32, ptr %1238, align 4, !tbaa !9
  %1240 = load i32, ptr %49, align 4, !tbaa !9
  %1241 = sub nsw i32 %1239, %1240
  store i32 %1241, ptr %38, align 4, !tbaa !9
  %1242 = load ptr, ptr %19, align 8, !tbaa !5
  %1243 = load i32, ptr %1242, align 4, !tbaa !9
  %1244 = load i32, ptr %49, align 4, !tbaa !9
  %1245 = sub nsw i32 %1243, %1244
  store i32 %1245, ptr %39, align 4, !tbaa !9
  %1246 = load ptr, ptr %26, align 8, !tbaa !5
  %1247 = load i32, ptr %49, align 4, !tbaa !9
  %1248 = load i32, ptr %49, align 4, !tbaa !9
  %1249 = add nsw i32 %1248, 1
  %1250 = load i32, ptr %33, align 4, !tbaa !9
  %1251 = mul nsw i32 %1249, %1250
  %1252 = add nsw i32 %1247, %1251
  %1253 = sext i32 %1252 to i64
  %1254 = getelementptr inbounds double, ptr %1246, i64 %1253
  %1255 = load ptr, ptr %27, align 8, !tbaa !5
  %1256 = call double @dasum_(ptr noundef %38, ptr noundef %1254, ptr noundef %1255)
  %1257 = load ptr, ptr %26, align 8, !tbaa !5
  %1258 = load i32, ptr %49, align 4, !tbaa !9
  %1259 = add nsw i32 %1258, 2
  %1260 = load i32, ptr %49, align 4, !tbaa !9
  %1261 = load i32, ptr %33, align 4, !tbaa !9
  %1262 = mul nsw i32 %1260, %1261
  %1263 = add nsw i32 %1259, %1262
  %1264 = sext i32 %1263 to i64
  %1265 = getelementptr inbounds double, ptr %1257, i64 %1264
  %1266 = call double @dasum_(ptr noundef %39, ptr noundef %1265, ptr noundef @c__1)
  %1267 = fadd double %1256, %1266
  %1268 = load ptr, ptr %28, align 8, !tbaa !5
  %1269 = load i32, ptr %49, align 4, !tbaa !9
  %1270 = sext i32 %1269 to i64
  %1271 = getelementptr inbounds double, ptr %1268, i64 %1270
  store double %1267, ptr %1271, align 8, !tbaa !11
  br label %1272

1272:                                             ; preds = %1237
  %1273 = load i32, ptr %49, align 4, !tbaa !9
  %1274 = add nsw i32 %1273, 1
  store i32 %1274, ptr %49, align 4, !tbaa !9
  br label %861, !llvm.loop !30

1275:                                             ; preds = %861
  %1276 = load ptr, ptr %26, align 8, !tbaa !5
  %1277 = load ptr, ptr %19, align 8, !tbaa !5
  %1278 = load i32, ptr %1277, align 4, !tbaa !9
  %1279 = load ptr, ptr %19, align 8, !tbaa !5
  %1280 = load i32, ptr %1279, align 4, !tbaa !9
  %1281 = load i32, ptr %33, align 4, !tbaa !9
  %1282 = mul nsw i32 %1280, %1281
  %1283 = add nsw i32 %1278, %1282
  %1284 = sext i32 %1283 to i64
  %1285 = getelementptr inbounds double, ptr %1276, i64 %1284
  %1286 = load double, ptr %1285, align 8, !tbaa !11
  %1287 = fcmp oeq double %1286, 0.000000e+00
  br i1 %1287, label %1288, label %1315

1288:                                             ; preds = %1275
  %1289 = load ptr, ptr %26, align 8, !tbaa !5
  %1290 = load ptr, ptr %19, align 8, !tbaa !5
  %1291 = load i32, ptr %1290, align 4, !tbaa !9
  %1292 = add nsw i32 %1291, 1
  %1293 = load ptr, ptr %19, align 8, !tbaa !5
  %1294 = load i32, ptr %1293, align 4, !tbaa !9
  %1295 = load i32, ptr %33, align 4, !tbaa !9
  %1296 = mul nsw i32 %1294, %1295
  %1297 = add nsw i32 %1292, %1296
  %1298 = sext i32 %1297 to i64
  %1299 = getelementptr inbounds double, ptr %1289, i64 %1298
  %1300 = load double, ptr %1299, align 8, !tbaa !11
  %1301 = fcmp oeq double %1300, 0.000000e+00
  br i1 %1301, label %1302, label %1315

1302:                                             ; preds = %1288
  %1303 = load ptr, ptr %29, align 8, !tbaa !5
  %1304 = load double, ptr %1303, align 8, !tbaa !11
  %1305 = load ptr, ptr %26, align 8, !tbaa !5
  %1306 = load ptr, ptr %19, align 8, !tbaa !5
  %1307 = load i32, ptr %1306, align 4, !tbaa !9
  %1308 = load ptr, ptr %19, align 8, !tbaa !5
  %1309 = load i32, ptr %1308, align 4, !tbaa !9
  %1310 = load i32, ptr %33, align 4, !tbaa !9
  %1311 = mul nsw i32 %1309, %1310
  %1312 = add nsw i32 %1307, %1311
  %1313 = sext i32 %1312 to i64
  %1314 = getelementptr inbounds double, ptr %1305, i64 %1313
  store double %1304, ptr %1314, align 8, !tbaa !11
  br label %1315

1315:                                             ; preds = %1302, %1288, %1275
  %1316 = load ptr, ptr %28, align 8, !tbaa !5
  %1317 = load ptr, ptr %19, align 8, !tbaa !5
  %1318 = load i32, ptr %1317, align 4, !tbaa !9
  %1319 = sext i32 %1318 to i64
  %1320 = getelementptr inbounds double, ptr %1316, i64 %1319
  store double 0.000000e+00, ptr %1320, align 8, !tbaa !11
  %1321 = load ptr, ptr %19, align 8, !tbaa !5
  %1322 = load i32, ptr %1321, align 4, !tbaa !9
  store i32 %1322, ptr %57, align 4, !tbaa !9
  store i32 1, ptr %58, align 4, !tbaa !9
  store i32 -1, ptr %59, align 4, !tbaa !9
  br label %1785

1323:                                             ; preds = %827
  %1324 = load ptr, ptr %23, align 8, !tbaa !5
  %1325 = load double, ptr %1324, align 8, !tbaa !11
  %1326 = load ptr, ptr %26, align 8, !tbaa !5
  %1327 = load ptr, ptr %19, align 8, !tbaa !5
  %1328 = load i32, ptr %1327, align 4, !tbaa !9
  %1329 = add nsw i32 %1328, 1
  %1330 = load ptr, ptr %19, align 8, !tbaa !5
  %1331 = load i32, ptr %1330, align 4, !tbaa !9
  %1332 = load i32, ptr %33, align 4, !tbaa !9
  %1333 = mul nsw i32 %1331, %1332
  %1334 = add nsw i32 %1329, %1333
  %1335 = sext i32 %1334 to i64
  %1336 = getelementptr inbounds double, ptr %1326, i64 %1335
  store double %1325, ptr %1336, align 8, !tbaa !11
  %1337 = load ptr, ptr %19, align 8, !tbaa !5
  %1338 = load i32, ptr %1337, align 4, !tbaa !9
  %1339 = sub nsw i32 %1338, 1
  store i32 %1339, ptr %37, align 4, !tbaa !9
  store i32 1, ptr %50, align 4, !tbaa !9
  br label %1340

1340:                                             ; preds = %1355, %1323
  %1341 = load i32, ptr %50, align 4, !tbaa !9
  %1342 = load i32, ptr %37, align 4, !tbaa !9
  %1343 = icmp sle i32 %1341, %1342
  br i1 %1343, label %1344, label %1358

1344:                                             ; preds = %1340
  %1345 = load ptr, ptr %26, align 8, !tbaa !5
  %1346 = load ptr, ptr %19, align 8, !tbaa !5
  %1347 = load i32, ptr %1346, align 4, !tbaa !9
  %1348 = add nsw i32 %1347, 1
  %1349 = load i32, ptr %50, align 4, !tbaa !9
  %1350 = load i32, ptr %33, align 4, !tbaa !9
  %1351 = mul nsw i32 %1349, %1350
  %1352 = add nsw i32 %1348, %1351
  %1353 = sext i32 %1352 to i64
  %1354 = getelementptr inbounds double, ptr %1345, i64 %1353
  store double 0.000000e+00, ptr %1354, align 8, !tbaa !11
  br label %1355

1355:                                             ; preds = %1344
  %1356 = load i32, ptr %50, align 4, !tbaa !9
  %1357 = add nsw i32 %1356, 1
  store i32 %1357, ptr %50, align 4, !tbaa !9
  br label %1340, !llvm.loop !31

1358:                                             ; preds = %1340
  %1359 = load ptr, ptr %19, align 8, !tbaa !5
  %1360 = load i32, ptr %1359, align 4, !tbaa !9
  store i32 %1360, ptr %50, align 4, !tbaa !9
  br label %1361

1361:                                             ; preds = %1753, %1358
  %1362 = load i32, ptr %50, align 4, !tbaa !9
  %1363 = icmp sge i32 %1362, 2
  br i1 %1363, label %1364, label %1756

1364:                                             ; preds = %1361
  %1365 = load ptr, ptr %20, align 8, !tbaa !5
  %1366 = load i32, ptr %50, align 4, !tbaa !9
  %1367 = load i32, ptr %50, align 4, !tbaa !9
  %1368 = sub nsw i32 %1367, 1
  %1369 = load i32, ptr %35, align 4, !tbaa !9
  %1370 = mul nsw i32 %1368, %1369
  %1371 = add nsw i32 %1366, %1370
  %1372 = sext i32 %1371 to i64
  %1373 = getelementptr inbounds double, ptr %1365, i64 %1372
  %1374 = load double, ptr %1373, align 8, !tbaa !11
  store double %1374, ptr %64, align 8, !tbaa !11
  %1375 = load ptr, ptr %26, align 8, !tbaa !5
  %1376 = load i32, ptr %50, align 4, !tbaa !9
  %1377 = load i32, ptr %50, align 4, !tbaa !9
  %1378 = load i32, ptr %33, align 4, !tbaa !9
  %1379 = mul nsw i32 %1377, %1378
  %1380 = add nsw i32 %1376, %1379
  %1381 = sext i32 %1380 to i64
  %1382 = getelementptr inbounds double, ptr %1375, i64 %1381
  %1383 = load ptr, ptr %26, align 8, !tbaa !5
  %1384 = load i32, ptr %50, align 4, !tbaa !9
  %1385 = add nsw i32 %1384, 1
  %1386 = load i32, ptr %50, align 4, !tbaa !9
  %1387 = load i32, ptr %33, align 4, !tbaa !9
  %1388 = mul nsw i32 %1386, %1387
  %1389 = add nsw i32 %1385, %1388
  %1390 = sext i32 %1389 to i64
  %1391 = getelementptr inbounds double, ptr %1383, i64 %1390
  %1392 = call double @dlapy2_(ptr noundef %1382, ptr noundef %1391)
  store double %1392, ptr %66, align 8, !tbaa !11
  %1393 = load double, ptr %66, align 8, !tbaa !11
  %1394 = load double, ptr %64, align 8, !tbaa !11
  %1395 = fcmp oge double %1394, 0.000000e+00
  br i1 %1395, label %1396, label %1398

1396:                                             ; preds = %1364
  %1397 = load double, ptr %64, align 8, !tbaa !11
  br label %1401

1398:                                             ; preds = %1364
  %1399 = load double, ptr %64, align 8, !tbaa !11
  %1400 = fneg double %1399
  br label %1401

1401:                                             ; preds = %1398, %1396
  %1402 = phi double [ %1397, %1396 ], [ %1400, %1398 ]
  %1403 = fcmp olt double %1393, %1402
  br i1 %1403, label %1404, label %1571

1404:                                             ; preds = %1401
  %1405 = load ptr, ptr %26, align 8, !tbaa !5
  %1406 = load i32, ptr %50, align 4, !tbaa !9
  %1407 = load i32, ptr %50, align 4, !tbaa !9
  %1408 = load i32, ptr %33, align 4, !tbaa !9
  %1409 = mul nsw i32 %1407, %1408
  %1410 = add nsw i32 %1406, %1409
  %1411 = sext i32 %1410 to i64
  %1412 = getelementptr inbounds double, ptr %1405, i64 %1411
  %1413 = load double, ptr %1412, align 8, !tbaa !11
  %1414 = load double, ptr %64, align 8, !tbaa !11
  %1415 = fdiv double %1413, %1414
  store double %1415, ptr %68, align 8, !tbaa !11
  %1416 = load ptr, ptr %26, align 8, !tbaa !5
  %1417 = load i32, ptr %50, align 4, !tbaa !9
  %1418 = add nsw i32 %1417, 1
  %1419 = load i32, ptr %50, align 4, !tbaa !9
  %1420 = load i32, ptr %33, align 4, !tbaa !9
  %1421 = mul nsw i32 %1419, %1420
  %1422 = add nsw i32 %1418, %1421
  %1423 = sext i32 %1422 to i64
  %1424 = getelementptr inbounds double, ptr %1416, i64 %1423
  %1425 = load double, ptr %1424, align 8, !tbaa !11
  %1426 = load double, ptr %64, align 8, !tbaa !11
  %1427 = fdiv double %1425, %1426
  store double %1427, ptr %67, align 8, !tbaa !11
  %1428 = load double, ptr %64, align 8, !tbaa !11
  %1429 = load ptr, ptr %26, align 8, !tbaa !5
  %1430 = load i32, ptr %50, align 4, !tbaa !9
  %1431 = load i32, ptr %50, align 4, !tbaa !9
  %1432 = load i32, ptr %33, align 4, !tbaa !9
  %1433 = mul nsw i32 %1431, %1432
  %1434 = add nsw i32 %1430, %1433
  %1435 = sext i32 %1434 to i64
  %1436 = getelementptr inbounds double, ptr %1429, i64 %1435
  store double %1428, ptr %1436, align 8, !tbaa !11
  %1437 = load ptr, ptr %26, align 8, !tbaa !5
  %1438 = load i32, ptr %50, align 4, !tbaa !9
  %1439 = add nsw i32 %1438, 1
  %1440 = load i32, ptr %50, align 4, !tbaa !9
  %1441 = load i32, ptr %33, align 4, !tbaa !9
  %1442 = mul nsw i32 %1440, %1441
  %1443 = add nsw i32 %1439, %1442
  %1444 = sext i32 %1443 to i64
  %1445 = getelementptr inbounds double, ptr %1437, i64 %1444
  store double 0.000000e+00, ptr %1445, align 8, !tbaa !11
  %1446 = load i32, ptr %50, align 4, !tbaa !9
  %1447 = sub nsw i32 %1446, 1
  store i32 %1447, ptr %37, align 4, !tbaa !9
  store i32 1, ptr %49, align 4, !tbaa !9
  br label %1448

1448:                                             ; preds = %1525, %1404
  %1449 = load i32, ptr %49, align 4, !tbaa !9
  %1450 = load i32, ptr %37, align 4, !tbaa !9
  %1451 = icmp sle i32 %1449, %1450
  br i1 %1451, label %1452, label %1528

1452:                                             ; preds = %1448
  %1453 = load ptr, ptr %26, align 8, !tbaa !5
  %1454 = load i32, ptr %49, align 4, !tbaa !9
  %1455 = load i32, ptr %50, align 4, !tbaa !9
  %1456 = sub nsw i32 %1455, 1
  %1457 = load i32, ptr %33, align 4, !tbaa !9
  %1458 = mul nsw i32 %1456, %1457
  %1459 = add nsw i32 %1454, %1458
  %1460 = sext i32 %1459 to i64
  %1461 = getelementptr inbounds double, ptr %1453, i64 %1460
  %1462 = load double, ptr %1461, align 8, !tbaa !11
  store double %1462, ptr %46, align 8, !tbaa !11
  %1463 = load ptr, ptr %26, align 8, !tbaa !5
  %1464 = load i32, ptr %49, align 4, !tbaa !9
  %1465 = load i32, ptr %50, align 4, !tbaa !9
  %1466 = load i32, ptr %33, align 4, !tbaa !9
  %1467 = mul nsw i32 %1465, %1466
  %1468 = add nsw i32 %1464, %1467
  %1469 = sext i32 %1468 to i64
  %1470 = getelementptr inbounds double, ptr %1463, i64 %1469
  %1471 = load double, ptr %1470, align 8, !tbaa !11
  %1472 = load double, ptr %68, align 8, !tbaa !11
  %1473 = load double, ptr %46, align 8, !tbaa !11
  %1474 = fneg double %1472
  %1475 = call double @llvm.fmuladd.f64(double %1474, double %1473, double %1471)
  %1476 = load ptr, ptr %26, align 8, !tbaa !5
  %1477 = load i32, ptr %49, align 4, !tbaa !9
  %1478 = load i32, ptr %50, align 4, !tbaa !9
  %1479 = sub nsw i32 %1478, 1
  %1480 = load i32, ptr %33, align 4, !tbaa !9
  %1481 = mul nsw i32 %1479, %1480
  %1482 = add nsw i32 %1477, %1481
  %1483 = sext i32 %1482 to i64
  %1484 = getelementptr inbounds double, ptr %1476, i64 %1483
  store double %1475, ptr %1484, align 8, !tbaa !11
  %1485 = load ptr, ptr %26, align 8, !tbaa !5
  %1486 = load i32, ptr %50, align 4, !tbaa !9
  %1487 = add nsw i32 %1486, 1
  %1488 = load i32, ptr %49, align 4, !tbaa !9
  %1489 = load i32, ptr %33, align 4, !tbaa !9
  %1490 = mul nsw i32 %1488, %1489
  %1491 = add nsw i32 %1487, %1490
  %1492 = sext i32 %1491 to i64
  %1493 = getelementptr inbounds double, ptr %1485, i64 %1492
  %1494 = load double, ptr %1493, align 8, !tbaa !11
  %1495 = load double, ptr %67, align 8, !tbaa !11
  %1496 = load double, ptr %46, align 8, !tbaa !11
  %1497 = fneg double %1495
  %1498 = call double @llvm.fmuladd.f64(double %1497, double %1496, double %1494)
  %1499 = load ptr, ptr %26, align 8, !tbaa !5
  %1500 = load i32, ptr %50, align 4, !tbaa !9
  %1501 = load i32, ptr %49, align 4, !tbaa !9
  %1502 = load i32, ptr %33, align 4, !tbaa !9
  %1503 = mul nsw i32 %1501, %1502
  %1504 = add nsw i32 %1500, %1503
  %1505 = sext i32 %1504 to i64
  %1506 = getelementptr inbounds double, ptr %1499, i64 %1505
  store double %1498, ptr %1506, align 8, !tbaa !11
  %1507 = load double, ptr %46, align 8, !tbaa !11
  %1508 = load ptr, ptr %26, align 8, !tbaa !5
  %1509 = load i32, ptr %49, align 4, !tbaa !9
  %1510 = load i32, ptr %50, align 4, !tbaa !9
  %1511 = load i32, ptr %33, align 4, !tbaa !9
  %1512 = mul nsw i32 %1510, %1511
  %1513 = add nsw i32 %1509, %1512
  %1514 = sext i32 %1513 to i64
  %1515 = getelementptr inbounds double, ptr %1508, i64 %1514
  store double %1507, ptr %1515, align 8, !tbaa !11
  %1516 = load ptr, ptr %26, align 8, !tbaa !5
  %1517 = load i32, ptr %50, align 4, !tbaa !9
  %1518 = add nsw i32 %1517, 1
  %1519 = load i32, ptr %49, align 4, !tbaa !9
  %1520 = load i32, ptr %33, align 4, !tbaa !9
  %1521 = mul nsw i32 %1519, %1520
  %1522 = add nsw i32 %1518, %1521
  %1523 = sext i32 %1522 to i64
  %1524 = getelementptr inbounds double, ptr %1516, i64 %1523
  store double 0.000000e+00, ptr %1524, align 8, !tbaa !11
  br label %1525

1525:                                             ; preds = %1452
  %1526 = load i32, ptr %49, align 4, !tbaa !9
  %1527 = add nsw i32 %1526, 1
  store i32 %1527, ptr %49, align 4, !tbaa !9
  br label %1448, !llvm.loop !32

1528:                                             ; preds = %1448
  %1529 = load ptr, ptr %23, align 8, !tbaa !5
  %1530 = load double, ptr %1529, align 8, !tbaa !11
  %1531 = load ptr, ptr %26, align 8, !tbaa !5
  %1532 = load i32, ptr %50, align 4, !tbaa !9
  %1533 = add nsw i32 %1532, 1
  %1534 = load i32, ptr %50, align 4, !tbaa !9
  %1535 = sub nsw i32 %1534, 1
  %1536 = load i32, ptr %33, align 4, !tbaa !9
  %1537 = mul nsw i32 %1535, %1536
  %1538 = add nsw i32 %1533, %1537
  %1539 = sext i32 %1538 to i64
  %1540 = getelementptr inbounds double, ptr %1531, i64 %1539
  store double %1530, ptr %1540, align 8, !tbaa !11
  %1541 = load double, ptr %67, align 8, !tbaa !11
  %1542 = load ptr, ptr %23, align 8, !tbaa !5
  %1543 = load double, ptr %1542, align 8, !tbaa !11
  %1544 = load ptr, ptr %26, align 8, !tbaa !5
  %1545 = load i32, ptr %50, align 4, !tbaa !9
  %1546 = sub nsw i32 %1545, 1
  %1547 = load i32, ptr %50, align 4, !tbaa !9
  %1548 = sub nsw i32 %1547, 1
  %1549 = load i32, ptr %33, align 4, !tbaa !9
  %1550 = mul nsw i32 %1548, %1549
  %1551 = add nsw i32 %1546, %1550
  %1552 = sext i32 %1551 to i64
  %1553 = getelementptr inbounds double, ptr %1544, i64 %1552
  %1554 = load double, ptr %1553, align 8, !tbaa !11
  %1555 = call double @llvm.fmuladd.f64(double %1541, double %1543, double %1554)
  store double %1555, ptr %1553, align 8, !tbaa !11
  %1556 = load double, ptr %68, align 8, !tbaa !11
  %1557 = load ptr, ptr %23, align 8, !tbaa !5
  %1558 = load double, ptr %1557, align 8, !tbaa !11
  %1559 = load ptr, ptr %26, align 8, !tbaa !5
  %1560 = load i32, ptr %50, align 4, !tbaa !9
  %1561 = load i32, ptr %50, align 4, !tbaa !9
  %1562 = sub nsw i32 %1561, 1
  %1563 = load i32, ptr %33, align 4, !tbaa !9
  %1564 = mul nsw i32 %1562, %1563
  %1565 = add nsw i32 %1560, %1564
  %1566 = sext i32 %1565 to i64
  %1567 = getelementptr inbounds double, ptr %1559, i64 %1566
  %1568 = load double, ptr %1567, align 8, !tbaa !11
  %1569 = fneg double %1556
  %1570 = call double @llvm.fmuladd.f64(double %1569, double %1558, double %1568)
  store double %1570, ptr %1567, align 8, !tbaa !11
  br label %1726

1571:                                             ; preds = %1401
  %1572 = load double, ptr %66, align 8, !tbaa !11
  %1573 = fcmp oeq double %1572, 0.000000e+00
  br i1 %1573, label %1574, label %1596

1574:                                             ; preds = %1571
  %1575 = load ptr, ptr %29, align 8, !tbaa !5
  %1576 = load double, ptr %1575, align 8, !tbaa !11
  %1577 = load ptr, ptr %26, align 8, !tbaa !5
  %1578 = load i32, ptr %50, align 4, !tbaa !9
  %1579 = load i32, ptr %50, align 4, !tbaa !9
  %1580 = load i32, ptr %33, align 4, !tbaa !9
  %1581 = mul nsw i32 %1579, %1580
  %1582 = add nsw i32 %1578, %1581
  %1583 = sext i32 %1582 to i64
  %1584 = getelementptr inbounds double, ptr %1577, i64 %1583
  store double %1576, ptr %1584, align 8, !tbaa !11
  %1585 = load ptr, ptr %26, align 8, !tbaa !5
  %1586 = load i32, ptr %50, align 4, !tbaa !9
  %1587 = add nsw i32 %1586, 1
  %1588 = load i32, ptr %50, align 4, !tbaa !9
  %1589 = load i32, ptr %33, align 4, !tbaa !9
  %1590 = mul nsw i32 %1588, %1589
  %1591 = add nsw i32 %1587, %1590
  %1592 = sext i32 %1591 to i64
  %1593 = getelementptr inbounds double, ptr %1585, i64 %1592
  store double 0.000000e+00, ptr %1593, align 8, !tbaa !11
  %1594 = load ptr, ptr %29, align 8, !tbaa !5
  %1595 = load double, ptr %1594, align 8, !tbaa !11
  store double %1595, ptr %66, align 8, !tbaa !11
  br label %1596

1596:                                             ; preds = %1574, %1571
  %1597 = load double, ptr %64, align 8, !tbaa !11
  %1598 = load double, ptr %66, align 8, !tbaa !11
  %1599 = fdiv double %1597, %1598
  %1600 = load double, ptr %66, align 8, !tbaa !11
  %1601 = fdiv double %1599, %1600
  store double %1601, ptr %64, align 8, !tbaa !11
  %1602 = load ptr, ptr %26, align 8, !tbaa !5
  %1603 = load i32, ptr %50, align 4, !tbaa !9
  %1604 = load i32, ptr %50, align 4, !tbaa !9
  %1605 = load i32, ptr %33, align 4, !tbaa !9
  %1606 = mul nsw i32 %1604, %1605
  %1607 = add nsw i32 %1603, %1606
  %1608 = sext i32 %1607 to i64
  %1609 = getelementptr inbounds double, ptr %1602, i64 %1608
  %1610 = load double, ptr %1609, align 8, !tbaa !11
  %1611 = load double, ptr %64, align 8, !tbaa !11
  %1612 = fmul double %1610, %1611
  store double %1612, ptr %68, align 8, !tbaa !11
  %1613 = load ptr, ptr %26, align 8, !tbaa !5
  %1614 = load i32, ptr %50, align 4, !tbaa !9
  %1615 = add nsw i32 %1614, 1
  %1616 = load i32, ptr %50, align 4, !tbaa !9
  %1617 = load i32, ptr %33, align 4, !tbaa !9
  %1618 = mul nsw i32 %1616, %1617
  %1619 = add nsw i32 %1615, %1618
  %1620 = sext i32 %1619 to i64
  %1621 = getelementptr inbounds double, ptr %1613, i64 %1620
  %1622 = load double, ptr %1621, align 8, !tbaa !11
  %1623 = fneg double %1622
  %1624 = load double, ptr %64, align 8, !tbaa !11
  %1625 = fmul double %1623, %1624
  store double %1625, ptr %67, align 8, !tbaa !11
  %1626 = load i32, ptr %50, align 4, !tbaa !9
  %1627 = sub nsw i32 %1626, 1
  store i32 %1627, ptr %37, align 4, !tbaa !9
  store i32 1, ptr %49, align 4, !tbaa !9
  br label %1628

1628:                                             ; preds = %1709, %1596
  %1629 = load i32, ptr %49, align 4, !tbaa !9
  %1630 = load i32, ptr %37, align 4, !tbaa !9
  %1631 = icmp sle i32 %1629, %1630
  br i1 %1631, label %1632, label %1712

1632:                                             ; preds = %1628
  %1633 = load ptr, ptr %26, align 8, !tbaa !5
  %1634 = load i32, ptr %49, align 4, !tbaa !9
  %1635 = load i32, ptr %50, align 4, !tbaa !9
  %1636 = sub nsw i32 %1635, 1
  %1637 = load i32, ptr %33, align 4, !tbaa !9
  %1638 = mul nsw i32 %1636, %1637
  %1639 = add nsw i32 %1634, %1638
  %1640 = sext i32 %1639 to i64
  %1641 = getelementptr inbounds double, ptr %1633, i64 %1640
  %1642 = load double, ptr %1641, align 8, !tbaa !11
  %1643 = load double, ptr %68, align 8, !tbaa !11
  %1644 = load ptr, ptr %26, align 8, !tbaa !5
  %1645 = load i32, ptr %49, align 4, !tbaa !9
  %1646 = load i32, ptr %50, align 4, !tbaa !9
  %1647 = load i32, ptr %33, align 4, !tbaa !9
  %1648 = mul nsw i32 %1646, %1647
  %1649 = add nsw i32 %1645, %1648
  %1650 = sext i32 %1649 to i64
  %1651 = getelementptr inbounds double, ptr %1644, i64 %1650
  %1652 = load double, ptr %1651, align 8, !tbaa !11
  %1653 = fneg double %1643
  %1654 = call double @llvm.fmuladd.f64(double %1653, double %1652, double %1642)
  %1655 = load double, ptr %67, align 8, !tbaa !11
  %1656 = load ptr, ptr %26, align 8, !tbaa !5
  %1657 = load i32, ptr %50, align 4, !tbaa !9
  %1658 = add nsw i32 %1657, 1
  %1659 = load i32, ptr %49, align 4, !tbaa !9
  %1660 = load i32, ptr %33, align 4, !tbaa !9
  %1661 = mul nsw i32 %1659, %1660
  %1662 = add nsw i32 %1658, %1661
  %1663 = sext i32 %1662 to i64
  %1664 = getelementptr inbounds double, ptr %1656, i64 %1663
  %1665 = load double, ptr %1664, align 8, !tbaa !11
  %1666 = call double @llvm.fmuladd.f64(double %1655, double %1665, double %1654)
  %1667 = load ptr, ptr %26, align 8, !tbaa !5
  %1668 = load i32, ptr %49, align 4, !tbaa !9
  %1669 = load i32, ptr %50, align 4, !tbaa !9
  %1670 = sub nsw i32 %1669, 1
  %1671 = load i32, ptr %33, align 4, !tbaa !9
  %1672 = mul nsw i32 %1670, %1671
  %1673 = add nsw i32 %1668, %1672
  %1674 = sext i32 %1673 to i64
  %1675 = getelementptr inbounds double, ptr %1667, i64 %1674
  store double %1666, ptr %1675, align 8, !tbaa !11
  %1676 = load double, ptr %68, align 8, !tbaa !11
  %1677 = fneg double %1676
  %1678 = load ptr, ptr %26, align 8, !tbaa !5
  %1679 = load i32, ptr %50, align 4, !tbaa !9
  %1680 = add nsw i32 %1679, 1
  %1681 = load i32, ptr %49, align 4, !tbaa !9
  %1682 = load i32, ptr %33, align 4, !tbaa !9
  %1683 = mul nsw i32 %1681, %1682
  %1684 = add nsw i32 %1680, %1683
  %1685 = sext i32 %1684 to i64
  %1686 = getelementptr inbounds double, ptr %1678, i64 %1685
  %1687 = load double, ptr %1686, align 8, !tbaa !11
  %1688 = load double, ptr %67, align 8, !tbaa !11
  %1689 = load ptr, ptr %26, align 8, !tbaa !5
  %1690 = load i32, ptr %49, align 4, !tbaa !9
  %1691 = load i32, ptr %50, align 4, !tbaa !9
  %1692 = load i32, ptr %33, align 4, !tbaa !9
  %1693 = mul nsw i32 %1691, %1692
  %1694 = add nsw i32 %1690, %1693
  %1695 = sext i32 %1694 to i64
  %1696 = getelementptr inbounds double, ptr %1689, i64 %1695
  %1697 = load double, ptr %1696, align 8, !tbaa !11
  %1698 = fmul double %1688, %1697
  %1699 = fneg double %1698
  %1700 = call double @llvm.fmuladd.f64(double %1677, double %1687, double %1699)
  %1701 = load ptr, ptr %26, align 8, !tbaa !5
  %1702 = load i32, ptr %50, align 4, !tbaa !9
  %1703 = load i32, ptr %49, align 4, !tbaa !9
  %1704 = load i32, ptr %33, align 4, !tbaa !9
  %1705 = mul nsw i32 %1703, %1704
  %1706 = add nsw i32 %1702, %1705
  %1707 = sext i32 %1706 to i64
  %1708 = getelementptr inbounds double, ptr %1701, i64 %1707
  store double %1700, ptr %1708, align 8, !tbaa !11
  br label %1709

1709:                                             ; preds = %1632
  %1710 = load i32, ptr %49, align 4, !tbaa !9
  %1711 = add nsw i32 %1710, 1
  store i32 %1711, ptr %49, align 4, !tbaa !9
  br label %1628, !llvm.loop !33

1712:                                             ; preds = %1628
  %1713 = load ptr, ptr %23, align 8, !tbaa !5
  %1714 = load double, ptr %1713, align 8, !tbaa !11
  %1715 = load ptr, ptr %26, align 8, !tbaa !5
  %1716 = load i32, ptr %50, align 4, !tbaa !9
  %1717 = load i32, ptr %50, align 4, !tbaa !9
  %1718 = sub nsw i32 %1717, 1
  %1719 = load i32, ptr %33, align 4, !tbaa !9
  %1720 = mul nsw i32 %1718, %1719
  %1721 = add nsw i32 %1716, %1720
  %1722 = sext i32 %1721 to i64
  %1723 = getelementptr inbounds double, ptr %1715, i64 %1722
  %1724 = load double, ptr %1723, align 8, !tbaa !11
  %1725 = fadd double %1724, %1714
  store double %1725, ptr %1723, align 8, !tbaa !11
  br label %1726

1726:                                             ; preds = %1712, %1528
  %1727 = load i32, ptr %50, align 4, !tbaa !9
  %1728 = sub nsw i32 %1727, 1
  store i32 %1728, ptr %37, align 4, !tbaa !9
  %1729 = load i32, ptr %50, align 4, !tbaa !9
  %1730 = sub nsw i32 %1729, 1
  store i32 %1730, ptr %38, align 4, !tbaa !9
  %1731 = load ptr, ptr %26, align 8, !tbaa !5
  %1732 = load i32, ptr %50, align 4, !tbaa !9
  %1733 = load i32, ptr %33, align 4, !tbaa !9
  %1734 = mul nsw i32 %1732, %1733
  %1735 = add nsw i32 %1734, 1
  %1736 = sext i32 %1735 to i64
  %1737 = getelementptr inbounds double, ptr %1731, i64 %1736
  %1738 = call double @dasum_(ptr noundef %37, ptr noundef %1737, ptr noundef @c__1)
  %1739 = load ptr, ptr %26, align 8, !tbaa !5
  %1740 = load i32, ptr %50, align 4, !tbaa !9
  %1741 = add nsw i32 %1740, 1
  %1742 = load i32, ptr %33, align 4, !tbaa !9
  %1743 = add nsw i32 %1741, %1742
  %1744 = sext i32 %1743 to i64
  %1745 = getelementptr inbounds double, ptr %1739, i64 %1744
  %1746 = load ptr, ptr %27, align 8, !tbaa !5
  %1747 = call double @dasum_(ptr noundef %38, ptr noundef %1745, ptr noundef %1746)
  %1748 = fadd double %1738, %1747
  %1749 = load ptr, ptr %28, align 8, !tbaa !5
  %1750 = load i32, ptr %50, align 4, !tbaa !9
  %1751 = sext i32 %1750 to i64
  %1752 = getelementptr inbounds double, ptr %1749, i64 %1751
  store double %1748, ptr %1752, align 8, !tbaa !11
  br label %1753

1753:                                             ; preds = %1726
  %1754 = load i32, ptr %50, align 4, !tbaa !9
  %1755 = add nsw i32 %1754, -1
  store i32 %1755, ptr %50, align 4, !tbaa !9
  br label %1361, !llvm.loop !34

1756:                                             ; preds = %1361
  %1757 = load ptr, ptr %26, align 8, !tbaa !5
  %1758 = load i32, ptr %33, align 4, !tbaa !9
  %1759 = add nsw i32 %1758, 1
  %1760 = sext i32 %1759 to i64
  %1761 = getelementptr inbounds double, ptr %1757, i64 %1760
  %1762 = load double, ptr %1761, align 8, !tbaa !11
  %1763 = fcmp oeq double %1762, 0.000000e+00
  br i1 %1763, label %1764, label %1780

1764:                                             ; preds = %1756
  %1765 = load ptr, ptr %26, align 8, !tbaa !5
  %1766 = load i32, ptr %33, align 4, !tbaa !9
  %1767 = add nsw i32 %1766, 2
  %1768 = sext i32 %1767 to i64
  %1769 = getelementptr inbounds double, ptr %1765, i64 %1768
  %1770 = load double, ptr %1769, align 8, !tbaa !11
  %1771 = fcmp oeq double %1770, 0.000000e+00
  br i1 %1771, label %1772, label %1780

1772:                                             ; preds = %1764
  %1773 = load ptr, ptr %29, align 8, !tbaa !5
  %1774 = load double, ptr %1773, align 8, !tbaa !11
  %1775 = load ptr, ptr %26, align 8, !tbaa !5
  %1776 = load i32, ptr %33, align 4, !tbaa !9
  %1777 = add nsw i32 %1776, 1
  %1778 = sext i32 %1777 to i64
  %1779 = getelementptr inbounds double, ptr %1775, i64 %1778
  store double %1774, ptr %1779, align 8, !tbaa !11
  br label %1780

1780:                                             ; preds = %1772, %1764, %1756
  %1781 = load ptr, ptr %28, align 8, !tbaa !5
  %1782 = getelementptr inbounds double, ptr %1781, i64 1
  store double 0.000000e+00, ptr %1782, align 8, !tbaa !11
  store i32 1, ptr %57, align 4, !tbaa !9
  %1783 = load ptr, ptr %19, align 8, !tbaa !5
  %1784 = load i32, ptr %1783, align 4, !tbaa !9
  store i32 %1784, ptr %58, align 4, !tbaa !9
  store i32 1, ptr %59, align 4, !tbaa !9
  br label %1785

1785:                                             ; preds = %1780, %1315
  %1786 = load ptr, ptr %19, align 8, !tbaa !5
  %1787 = load i32, ptr %1786, align 4, !tbaa !9
  store i32 %1787, ptr %37, align 4, !tbaa !9
  store i32 1, ptr %73, align 4, !tbaa !9
  br label %1788

1788:                                             ; preds = %2273, %1785
  %1789 = load i32, ptr %73, align 4, !tbaa !9
  %1790 = load i32, ptr %37, align 4, !tbaa !9
  %1791 = icmp sle i32 %1789, %1790
  br i1 %1791, label %1792, label %2276

1792:                                             ; preds = %1788
  store double 1.000000e+00, ptr %51, align 8, !tbaa !11
  store double 1.000000e+00, ptr %48, align 8, !tbaa !11
  %1793 = load ptr, ptr %31, align 8, !tbaa !5
  %1794 = load double, ptr %1793, align 8, !tbaa !11
  store double %1794, ptr %56, align 8, !tbaa !11
  %1795 = load i32, ptr %58, align 4, !tbaa !9
  store i32 %1795, ptr %38, align 4, !tbaa !9
  %1796 = load i32, ptr %59, align 4, !tbaa !9
  store i32 %1796, ptr %39, align 4, !tbaa !9
  %1797 = load i32, ptr %57, align 4, !tbaa !9
  store i32 %1797, ptr %49, align 4, !tbaa !9
  br label %1798

1798:                                             ; preds = %2207, %1792
  %1799 = load i32, ptr %39, align 4, !tbaa !9
  %1800 = icmp slt i32 %1799, 0
  br i1 %1800, label %1801, label %1806

1801:                                             ; preds = %1798
  %1802 = load i32, ptr %49, align 4, !tbaa !9
  %1803 = load i32, ptr %38, align 4, !tbaa !9
  %1804 = icmp sge i32 %1802, %1803
  %1805 = zext i1 %1804 to i32
  br label %1811

1806:                                             ; preds = %1798
  %1807 = load i32, ptr %49, align 4, !tbaa !9
  %1808 = load i32, ptr %38, align 4, !tbaa !9
  %1809 = icmp sle i32 %1807, %1808
  %1810 = zext i1 %1809 to i32
  br label %1811

1811:                                             ; preds = %1806, %1801
  %1812 = phi i32 [ %1805, %1801 ], [ %1810, %1806 ]
  %1813 = icmp ne i32 %1812, 0
  br i1 %1813, label %1814, label %2211

1814:                                             ; preds = %1811
  %1815 = load ptr, ptr %28, align 8, !tbaa !5
  %1816 = load i32, ptr %49, align 4, !tbaa !9
  %1817 = sext i32 %1816 to i64
  %1818 = getelementptr inbounds double, ptr %1815, i64 %1817
  %1819 = load double, ptr %1818, align 8, !tbaa !11
  %1820 = load double, ptr %56, align 8, !tbaa !11
  %1821 = fcmp ogt double %1819, %1820
  br i1 %1821, label %1822, label %1836

1822:                                             ; preds = %1814
  %1823 = load double, ptr %48, align 8, !tbaa !11
  %1824 = fdiv double 1.000000e+00, %1823
  store double %1824, ptr %72, align 8, !tbaa !11
  %1825 = load ptr, ptr %19, align 8, !tbaa !5
  %1826 = load ptr, ptr %24, align 8, !tbaa !5
  %1827 = getelementptr inbounds double, ptr %1826, i64 1
  call void @dscal_(ptr noundef %1825, ptr noundef %72, ptr noundef %1827, ptr noundef @c__1)
  %1828 = load ptr, ptr %19, align 8, !tbaa !5
  %1829 = load ptr, ptr %25, align 8, !tbaa !5
  %1830 = getelementptr inbounds double, ptr %1829, i64 1
  call void @dscal_(ptr noundef %1828, ptr noundef %72, ptr noundef %1830, ptr noundef @c__1)
  %1831 = load double, ptr %72, align 8, !tbaa !11
  %1832 = load double, ptr %51, align 8, !tbaa !11
  %1833 = fmul double %1832, %1831
  store double %1833, ptr %51, align 8, !tbaa !11
  store double 1.000000e+00, ptr %48, align 8, !tbaa !11
  %1834 = load ptr, ptr %31, align 8, !tbaa !5
  %1835 = load double, ptr %1834, align 8, !tbaa !11
  store double %1835, ptr %56, align 8, !tbaa !11
  br label %1836

1836:                                             ; preds = %1822, %1814
  %1837 = load ptr, ptr %24, align 8, !tbaa !5
  %1838 = load i32, ptr %49, align 4, !tbaa !9
  %1839 = sext i32 %1838 to i64
  %1840 = getelementptr inbounds double, ptr %1837, i64 %1839
  %1841 = load double, ptr %1840, align 8, !tbaa !11
  store double %1841, ptr %68, align 8, !tbaa !11
  %1842 = load ptr, ptr %25, align 8, !tbaa !5
  %1843 = load i32, ptr %49, align 4, !tbaa !9
  %1844 = sext i32 %1843 to i64
  %1845 = getelementptr inbounds double, ptr %1842, i64 %1844
  %1846 = load double, ptr %1845, align 8, !tbaa !11
  store double %1846, ptr %67, align 8, !tbaa !11
  %1847 = load ptr, ptr %17, align 8, !tbaa !5
  %1848 = load i32, ptr %1847, align 4, !tbaa !9
  %1849 = icmp ne i32 %1848, 0
  br i1 %1849, label %1850, label %1931

1850:                                             ; preds = %1836
  %1851 = load ptr, ptr %19, align 8, !tbaa !5
  %1852 = load i32, ptr %1851, align 4, !tbaa !9
  store i32 %1852, ptr %40, align 4, !tbaa !9
  %1853 = load i32, ptr %49, align 4, !tbaa !9
  %1854 = add nsw i32 %1853, 1
  store i32 %1854, ptr %50, align 4, !tbaa !9
  br label %1855

1855:                                             ; preds = %1927, %1850
  %1856 = load i32, ptr %50, align 4, !tbaa !9
  %1857 = load i32, ptr %40, align 4, !tbaa !9
  %1858 = icmp sle i32 %1856, %1857
  br i1 %1858, label %1859, label %1930

1859:                                             ; preds = %1855
  %1860 = load double, ptr %68, align 8, !tbaa !11
  %1861 = load ptr, ptr %26, align 8, !tbaa !5
  %1862 = load i32, ptr %49, align 4, !tbaa !9
  %1863 = load i32, ptr %50, align 4, !tbaa !9
  %1864 = load i32, ptr %33, align 4, !tbaa !9
  %1865 = mul nsw i32 %1863, %1864
  %1866 = add nsw i32 %1862, %1865
  %1867 = sext i32 %1866 to i64
  %1868 = getelementptr inbounds double, ptr %1861, i64 %1867
  %1869 = load double, ptr %1868, align 8, !tbaa !11
  %1870 = load ptr, ptr %24, align 8, !tbaa !5
  %1871 = load i32, ptr %50, align 4, !tbaa !9
  %1872 = sext i32 %1871 to i64
  %1873 = getelementptr inbounds double, ptr %1870, i64 %1872
  %1874 = load double, ptr %1873, align 8, !tbaa !11
  %1875 = fneg double %1869
  %1876 = call double @llvm.fmuladd.f64(double %1875, double %1874, double %1860)
  %1877 = load ptr, ptr %26, align 8, !tbaa !5
  %1878 = load i32, ptr %50, align 4, !tbaa !9
  %1879 = add nsw i32 %1878, 1
  %1880 = load i32, ptr %49, align 4, !tbaa !9
  %1881 = load i32, ptr %33, align 4, !tbaa !9
  %1882 = mul nsw i32 %1880, %1881
  %1883 = add nsw i32 %1879, %1882
  %1884 = sext i32 %1883 to i64
  %1885 = getelementptr inbounds double, ptr %1877, i64 %1884
  %1886 = load double, ptr %1885, align 8, !tbaa !11
  %1887 = load ptr, ptr %25, align 8, !tbaa !5
  %1888 = load i32, ptr %50, align 4, !tbaa !9
  %1889 = sext i32 %1888 to i64
  %1890 = getelementptr inbounds double, ptr %1887, i64 %1889
  %1891 = load double, ptr %1890, align 8, !tbaa !11
  %1892 = call double @llvm.fmuladd.f64(double %1886, double %1891, double %1876)
  store double %1892, ptr %68, align 8, !tbaa !11
  %1893 = load double, ptr %67, align 8, !tbaa !11
  %1894 = load ptr, ptr %26, align 8, !tbaa !5
  %1895 = load i32, ptr %49, align 4, !tbaa !9
  %1896 = load i32, ptr %50, align 4, !tbaa !9
  %1897 = load i32, ptr %33, align 4, !tbaa !9
  %1898 = mul nsw i32 %1896, %1897
  %1899 = add nsw i32 %1895, %1898
  %1900 = sext i32 %1899 to i64
  %1901 = getelementptr inbounds double, ptr %1894, i64 %1900
  %1902 = load double, ptr %1901, align 8, !tbaa !11
  %1903 = load ptr, ptr %25, align 8, !tbaa !5
  %1904 = load i32, ptr %50, align 4, !tbaa !9
  %1905 = sext i32 %1904 to i64
  %1906 = getelementptr inbounds double, ptr %1903, i64 %1905
  %1907 = load double, ptr %1906, align 8, !tbaa !11
  %1908 = fneg double %1902
  %1909 = call double @llvm.fmuladd.f64(double %1908, double %1907, double %1893)
  %1910 = load ptr, ptr %26, align 8, !tbaa !5
  %1911 = load i32, ptr %50, align 4, !tbaa !9
  %1912 = add nsw i32 %1911, 1
  %1913 = load i32, ptr %49, align 4, !tbaa !9
  %1914 = load i32, ptr %33, align 4, !tbaa !9
  %1915 = mul nsw i32 %1913, %1914
  %1916 = add nsw i32 %1912, %1915
  %1917 = sext i32 %1916 to i64
  %1918 = getelementptr inbounds double, ptr %1910, i64 %1917
  %1919 = load double, ptr %1918, align 8, !tbaa !11
  %1920 = load ptr, ptr %24, align 8, !tbaa !5
  %1921 = load i32, ptr %50, align 4, !tbaa !9
  %1922 = sext i32 %1921 to i64
  %1923 = getelementptr inbounds double, ptr %1920, i64 %1922
  %1924 = load double, ptr %1923, align 8, !tbaa !11
  %1925 = fneg double %1919
  %1926 = call double @llvm.fmuladd.f64(double %1925, double %1924, double %1909)
  store double %1926, ptr %67, align 8, !tbaa !11
  br label %1927

1927:                                             ; preds = %1859
  %1928 = load i32, ptr %50, align 4, !tbaa !9
  %1929 = add nsw i32 %1928, 1
  store i32 %1929, ptr %50, align 4, !tbaa !9
  br label %1855, !llvm.loop !35

1930:                                             ; preds = %1855
  br label %2010

1931:                                             ; preds = %1836
  %1932 = load i32, ptr %49, align 4, !tbaa !9
  %1933 = sub nsw i32 %1932, 1
  store i32 %1933, ptr %40, align 4, !tbaa !9
  store i32 1, ptr %50, align 4, !tbaa !9
  br label %1934

1934:                                             ; preds = %2006, %1931
  %1935 = load i32, ptr %50, align 4, !tbaa !9
  %1936 = load i32, ptr %40, align 4, !tbaa !9
  %1937 = icmp sle i32 %1935, %1936
  br i1 %1937, label %1938, label %2009

1938:                                             ; preds = %1934
  %1939 = load double, ptr %68, align 8, !tbaa !11
  %1940 = load ptr, ptr %26, align 8, !tbaa !5
  %1941 = load i32, ptr %50, align 4, !tbaa !9
  %1942 = load i32, ptr %49, align 4, !tbaa !9
  %1943 = load i32, ptr %33, align 4, !tbaa !9
  %1944 = mul nsw i32 %1942, %1943
  %1945 = add nsw i32 %1941, %1944
  %1946 = sext i32 %1945 to i64
  %1947 = getelementptr inbounds double, ptr %1940, i64 %1946
  %1948 = load double, ptr %1947, align 8, !tbaa !11
  %1949 = load ptr, ptr %24, align 8, !tbaa !5
  %1950 = load i32, ptr %50, align 4, !tbaa !9
  %1951 = sext i32 %1950 to i64
  %1952 = getelementptr inbounds double, ptr %1949, i64 %1951
  %1953 = load double, ptr %1952, align 8, !tbaa !11
  %1954 = fneg double %1948
  %1955 = call double @llvm.fmuladd.f64(double %1954, double %1953, double %1939)
  %1956 = load ptr, ptr %26, align 8, !tbaa !5
  %1957 = load i32, ptr %49, align 4, !tbaa !9
  %1958 = add nsw i32 %1957, 1
  %1959 = load i32, ptr %50, align 4, !tbaa !9
  %1960 = load i32, ptr %33, align 4, !tbaa !9
  %1961 = mul nsw i32 %1959, %1960
  %1962 = add nsw i32 %1958, %1961
  %1963 = sext i32 %1962 to i64
  %1964 = getelementptr inbounds double, ptr %1956, i64 %1963
  %1965 = load double, ptr %1964, align 8, !tbaa !11
  %1966 = load ptr, ptr %25, align 8, !tbaa !5
  %1967 = load i32, ptr %50, align 4, !tbaa !9
  %1968 = sext i32 %1967 to i64
  %1969 = getelementptr inbounds double, ptr %1966, i64 %1968
  %1970 = load double, ptr %1969, align 8, !tbaa !11
  %1971 = call double @llvm.fmuladd.f64(double %1965, double %1970, double %1955)
  store double %1971, ptr %68, align 8, !tbaa !11
  %1972 = load double, ptr %67, align 8, !tbaa !11
  %1973 = load ptr, ptr %26, align 8, !tbaa !5
  %1974 = load i32, ptr %50, align 4, !tbaa !9
  %1975 = load i32, ptr %49, align 4, !tbaa !9
  %1976 = load i32, ptr %33, align 4, !tbaa !9
  %1977 = mul nsw i32 %1975, %1976
  %1978 = add nsw i32 %1974, %1977
  %1979 = sext i32 %1978 to i64
  %1980 = getelementptr inbounds double, ptr %1973, i64 %1979
  %1981 = load double, ptr %1980, align 8, !tbaa !11
  %1982 = load ptr, ptr %25, align 8, !tbaa !5
  %1983 = load i32, ptr %50, align 4, !tbaa !9
  %1984 = sext i32 %1983 to i64
  %1985 = getelementptr inbounds double, ptr %1982, i64 %1984
  %1986 = load double, ptr %1985, align 8, !tbaa !11
  %1987 = fneg double %1981
  %1988 = call double @llvm.fmuladd.f64(double %1987, double %1986, double %1972)
  %1989 = load ptr, ptr %26, align 8, !tbaa !5
  %1990 = load i32, ptr %49, align 4, !tbaa !9
  %1991 = add nsw i32 %1990, 1
  %1992 = load i32, ptr %50, align 4, !tbaa !9
  %1993 = load i32, ptr %33, align 4, !tbaa !9
  %1994 = mul nsw i32 %1992, %1993
  %1995 = add nsw i32 %1991, %1994
  %1996 = sext i32 %1995 to i64
  %1997 = getelementptr inbounds double, ptr %1989, i64 %1996
  %1998 = load double, ptr %1997, align 8, !tbaa !11
  %1999 = load ptr, ptr %24, align 8, !tbaa !5
  %2000 = load i32, ptr %50, align 4, !tbaa !9
  %2001 = sext i32 %2000 to i64
  %2002 = getelementptr inbounds double, ptr %1999, i64 %2001
  %2003 = load double, ptr %2002, align 8, !tbaa !11
  %2004 = fneg double %1998
  %2005 = call double @llvm.fmuladd.f64(double %2004, double %2003, double %1988)
  store double %2005, ptr %67, align 8, !tbaa !11
  br label %2006

2006:                                             ; preds = %1938
  %2007 = load i32, ptr %50, align 4, !tbaa !9
  %2008 = add nsw i32 %2007, 1
  store i32 %2008, ptr %50, align 4, !tbaa !9
  br label %1934, !llvm.loop !36

2009:                                             ; preds = %1934
  br label %2010

2010:                                             ; preds = %2009, %1930
  %2011 = load ptr, ptr %26, align 8, !tbaa !5
  %2012 = load i32, ptr %49, align 4, !tbaa !9
  %2013 = load i32, ptr %49, align 4, !tbaa !9
  %2014 = load i32, ptr %33, align 4, !tbaa !9
  %2015 = mul nsw i32 %2013, %2014
  %2016 = add nsw i32 %2012, %2015
  %2017 = sext i32 %2016 to i64
  %2018 = getelementptr inbounds double, ptr %2011, i64 %2017
  %2019 = load double, ptr %2018, align 8, !tbaa !11
  store double %2019, ptr %41, align 8, !tbaa !11
  %2020 = load double, ptr %41, align 8, !tbaa !11
  %2021 = fcmp oge double %2020, 0.000000e+00
  br i1 %2021, label %2022, label %2024

2022:                                             ; preds = %2010
  %2023 = load double, ptr %41, align 8, !tbaa !11
  br label %2027

2024:                                             ; preds = %2010
  %2025 = load double, ptr %41, align 8, !tbaa !11
  %2026 = fneg double %2025
  br label %2027

2027:                                             ; preds = %2024, %2022
  %2028 = phi double [ %2023, %2022 ], [ %2026, %2024 ]
  %2029 = load ptr, ptr %26, align 8, !tbaa !5
  %2030 = load i32, ptr %49, align 4, !tbaa !9
  %2031 = add nsw i32 %2030, 1
  %2032 = load i32, ptr %49, align 4, !tbaa !9
  %2033 = load i32, ptr %33, align 4, !tbaa !9
  %2034 = mul nsw i32 %2032, %2033
  %2035 = add nsw i32 %2031, %2034
  %2036 = sext i32 %2035 to i64
  %2037 = getelementptr inbounds double, ptr %2029, i64 %2036
  %2038 = load double, ptr %2037, align 8, !tbaa !11
  store double %2038, ptr %42, align 8, !tbaa !11
  %2039 = load double, ptr %42, align 8, !tbaa !11
  %2040 = fcmp oge double %2039, 0.000000e+00
  br i1 %2040, label %2041, label %2043

2041:                                             ; preds = %2027
  %2042 = load double, ptr %42, align 8, !tbaa !11
  br label %2046

2043:                                             ; preds = %2027
  %2044 = load double, ptr %42, align 8, !tbaa !11
  %2045 = fneg double %2044
  br label %2046

2046:                                             ; preds = %2043, %2041
  %2047 = phi double [ %2042, %2041 ], [ %2045, %2043 ]
  %2048 = fadd double %2028, %2047
  store double %2048, ptr %52, align 8, !tbaa !11
  %2049 = load double, ptr %52, align 8, !tbaa !11
  %2050 = load ptr, ptr %30, align 8, !tbaa !5
  %2051 = load double, ptr %2050, align 8, !tbaa !11
  %2052 = fcmp ogt double %2049, %2051
  br i1 %2052, label %2053, label %2176

2053:                                             ; preds = %2046
  %2054 = load double, ptr %52, align 8, !tbaa !11
  %2055 = fcmp olt double %2054, 1.000000e+00
  br i1 %2055, label %2056, label %2108

2056:                                             ; preds = %2053
  %2057 = load double, ptr %68, align 8, !tbaa !11
  %2058 = fcmp oge double %2057, 0.000000e+00
  br i1 %2058, label %2059, label %2061

2059:                                             ; preds = %2056
  %2060 = load double, ptr %68, align 8, !tbaa !11
  br label %2064

2061:                                             ; preds = %2056
  %2062 = load double, ptr %68, align 8, !tbaa !11
  %2063 = fneg double %2062
  br label %2064

2064:                                             ; preds = %2061, %2059
  %2065 = phi double [ %2060, %2059 ], [ %2063, %2061 ]
  %2066 = load double, ptr %67, align 8, !tbaa !11
  %2067 = fcmp oge double %2066, 0.000000e+00
  br i1 %2067, label %2068, label %2070

2068:                                             ; preds = %2064
  %2069 = load double, ptr %67, align 8, !tbaa !11
  br label %2073

2070:                                             ; preds = %2064
  %2071 = load double, ptr %67, align 8, !tbaa !11
  %2072 = fneg double %2071
  br label %2073

2073:                                             ; preds = %2070, %2068
  %2074 = phi double [ %2069, %2068 ], [ %2072, %2070 ]
  %2075 = fadd double %2065, %2074
  store double %2075, ptr %62, align 8, !tbaa !11
  %2076 = load double, ptr %62, align 8, !tbaa !11
  %2077 = load double, ptr %52, align 8, !tbaa !11
  %2078 = load ptr, ptr %31, align 8, !tbaa !5
  %2079 = load double, ptr %2078, align 8, !tbaa !11
  %2080 = fmul double %2077, %2079
  %2081 = fcmp ogt double %2076, %2080
  br i1 %2081, label %2082, label %2107

2082:                                             ; preds = %2073
  %2083 = load double, ptr %62, align 8, !tbaa !11
  %2084 = fdiv double 1.000000e+00, %2083
  store double %2084, ptr %72, align 8, !tbaa !11
  %2085 = load ptr, ptr %19, align 8, !tbaa !5
  %2086 = load ptr, ptr %24, align 8, !tbaa !5
  %2087 = getelementptr inbounds double, ptr %2086, i64 1
  call void @dscal_(ptr noundef %2085, ptr noundef %72, ptr noundef %2087, ptr noundef @c__1)
  %2088 = load ptr, ptr %19, align 8, !tbaa !5
  %2089 = load ptr, ptr %25, align 8, !tbaa !5
  %2090 = getelementptr inbounds double, ptr %2089, i64 1
  call void @dscal_(ptr noundef %2088, ptr noundef %72, ptr noundef %2090, ptr noundef @c__1)
  %2091 = load ptr, ptr %24, align 8, !tbaa !5
  %2092 = load i32, ptr %49, align 4, !tbaa !9
  %2093 = sext i32 %2092 to i64
  %2094 = getelementptr inbounds double, ptr %2091, i64 %2093
  %2095 = load double, ptr %2094, align 8, !tbaa !11
  store double %2095, ptr %68, align 8, !tbaa !11
  %2096 = load ptr, ptr %25, align 8, !tbaa !5
  %2097 = load i32, ptr %49, align 4, !tbaa !9
  %2098 = sext i32 %2097 to i64
  %2099 = getelementptr inbounds double, ptr %2096, i64 %2098
  %2100 = load double, ptr %2099, align 8, !tbaa !11
  store double %2100, ptr %67, align 8, !tbaa !11
  %2101 = load double, ptr %72, align 8, !tbaa !11
  %2102 = load double, ptr %51, align 8, !tbaa !11
  %2103 = fmul double %2102, %2101
  store double %2103, ptr %51, align 8, !tbaa !11
  %2104 = load double, ptr %72, align 8, !tbaa !11
  %2105 = load double, ptr %48, align 8, !tbaa !11
  %2106 = fmul double %2105, %2104
  store double %2106, ptr %48, align 8, !tbaa !11
  br label %2107

2107:                                             ; preds = %2082, %2073
  br label %2108

2108:                                             ; preds = %2107, %2053
  %2109 = load ptr, ptr %26, align 8, !tbaa !5
  %2110 = load i32, ptr %49, align 4, !tbaa !9
  %2111 = load i32, ptr %49, align 4, !tbaa !9
  %2112 = load i32, ptr %33, align 4, !tbaa !9
  %2113 = mul nsw i32 %2111, %2112
  %2114 = add nsw i32 %2110, %2113
  %2115 = sext i32 %2114 to i64
  %2116 = getelementptr inbounds double, ptr %2109, i64 %2115
  %2117 = load ptr, ptr %26, align 8, !tbaa !5
  %2118 = load i32, ptr %49, align 4, !tbaa !9
  %2119 = add nsw i32 %2118, 1
  %2120 = load i32, ptr %49, align 4, !tbaa !9
  %2121 = load i32, ptr %33, align 4, !tbaa !9
  %2122 = mul nsw i32 %2120, %2121
  %2123 = add nsw i32 %2119, %2122
  %2124 = sext i32 %2123 to i64
  %2125 = getelementptr inbounds double, ptr %2117, i64 %2124
  %2126 = load ptr, ptr %24, align 8, !tbaa !5
  %2127 = load i32, ptr %49, align 4, !tbaa !9
  %2128 = sext i32 %2127 to i64
  %2129 = getelementptr inbounds double, ptr %2126, i64 %2128
  %2130 = load ptr, ptr %25, align 8, !tbaa !5
  %2131 = load i32, ptr %49, align 4, !tbaa !9
  %2132 = sext i32 %2131 to i64
  %2133 = getelementptr inbounds double, ptr %2130, i64 %2132
  call void @dladiv_(ptr noundef %68, ptr noundef %67, ptr noundef %2116, ptr noundef %2125, ptr noundef %2129, ptr noundef %2133)
  %2134 = load ptr, ptr %24, align 8, !tbaa !5
  %2135 = load i32, ptr %49, align 4, !tbaa !9
  %2136 = sext i32 %2135 to i64
  %2137 = getelementptr inbounds double, ptr %2134, i64 %2136
  %2138 = load double, ptr %2137, align 8, !tbaa !11
  store double %2138, ptr %41, align 8, !tbaa !11
  %2139 = load double, ptr %41, align 8, !tbaa !11
  %2140 = fcmp oge double %2139, 0.000000e+00
  br i1 %2140, label %2141, label %2143

2141:                                             ; preds = %2108
  %2142 = load double, ptr %41, align 8, !tbaa !11
  br label %2146

2143:                                             ; preds = %2108
  %2144 = load double, ptr %41, align 8, !tbaa !11
  %2145 = fneg double %2144
  br label %2146

2146:                                             ; preds = %2143, %2141
  %2147 = phi double [ %2142, %2141 ], [ %2145, %2143 ]
  %2148 = load ptr, ptr %25, align 8, !tbaa !5
  %2149 = load i32, ptr %49, align 4, !tbaa !9
  %2150 = sext i32 %2149 to i64
  %2151 = getelementptr inbounds double, ptr %2148, i64 %2150
  %2152 = load double, ptr %2151, align 8, !tbaa !11
  store double %2152, ptr %42, align 8, !tbaa !11
  %2153 = load double, ptr %42, align 8, !tbaa !11
  %2154 = fcmp oge double %2153, 0.000000e+00
  br i1 %2154, label %2155, label %2157

2155:                                             ; preds = %2146
  %2156 = load double, ptr %42, align 8, !tbaa !11
  br label %2160

2157:                                             ; preds = %2146
  %2158 = load double, ptr %42, align 8, !tbaa !11
  %2159 = fneg double %2158
  br label %2160

2160:                                             ; preds = %2157, %2155
  %2161 = phi double [ %2156, %2155 ], [ %2159, %2157 ]
  %2162 = fadd double %2147, %2161
  store double %2162, ptr %43, align 8, !tbaa !11
  %2163 = load double, ptr %43, align 8, !tbaa !11
  %2164 = load double, ptr %48, align 8, !tbaa !11
  %2165 = fcmp oge double %2163, %2164
  br i1 %2165, label %2166, label %2168

2166:                                             ; preds = %2160
  %2167 = load double, ptr %43, align 8, !tbaa !11
  br label %2170

2168:                                             ; preds = %2160
  %2169 = load double, ptr %48, align 8, !tbaa !11
  br label %2170

2170:                                             ; preds = %2168, %2166
  %2171 = phi double [ %2167, %2166 ], [ %2169, %2168 ]
  store double %2171, ptr %48, align 8, !tbaa !11
  %2172 = load ptr, ptr %31, align 8, !tbaa !5
  %2173 = load double, ptr %2172, align 8, !tbaa !11
  %2174 = load double, ptr %48, align 8, !tbaa !11
  %2175 = fdiv double %2173, %2174
  store double %2175, ptr %56, align 8, !tbaa !11
  br label %2206

2176:                                             ; preds = %2046
  %2177 = load ptr, ptr %19, align 8, !tbaa !5
  %2178 = load i32, ptr %2177, align 4, !tbaa !9
  store i32 %2178, ptr %40, align 4, !tbaa !9
  store i32 1, ptr %50, align 4, !tbaa !9
  br label %2179

2179:                                             ; preds = %2192, %2176
  %2180 = load i32, ptr %50, align 4, !tbaa !9
  %2181 = load i32, ptr %40, align 4, !tbaa !9
  %2182 = icmp sle i32 %2180, %2181
  br i1 %2182, label %2183, label %2195

2183:                                             ; preds = %2179
  %2184 = load ptr, ptr %24, align 8, !tbaa !5
  %2185 = load i32, ptr %50, align 4, !tbaa !9
  %2186 = sext i32 %2185 to i64
  %2187 = getelementptr inbounds double, ptr %2184, i64 %2186
  store double 0.000000e+00, ptr %2187, align 8, !tbaa !11
  %2188 = load ptr, ptr %25, align 8, !tbaa !5
  %2189 = load i32, ptr %50, align 4, !tbaa !9
  %2190 = sext i32 %2189 to i64
  %2191 = getelementptr inbounds double, ptr %2188, i64 %2190
  store double 0.000000e+00, ptr %2191, align 8, !tbaa !11
  br label %2192

2192:                                             ; preds = %2183
  %2193 = load i32, ptr %50, align 4, !tbaa !9
  %2194 = add nsw i32 %2193, 1
  store i32 %2194, ptr %50, align 4, !tbaa !9
  br label %2179, !llvm.loop !37

2195:                                             ; preds = %2179
  %2196 = load ptr, ptr %24, align 8, !tbaa !5
  %2197 = load i32, ptr %49, align 4, !tbaa !9
  %2198 = sext i32 %2197 to i64
  %2199 = getelementptr inbounds double, ptr %2196, i64 %2198
  store double 1.000000e+00, ptr %2199, align 8, !tbaa !11
  %2200 = load ptr, ptr %25, align 8, !tbaa !5
  %2201 = load i32, ptr %49, align 4, !tbaa !9
  %2202 = sext i32 %2201 to i64
  %2203 = getelementptr inbounds double, ptr %2200, i64 %2202
  store double 1.000000e+00, ptr %2203, align 8, !tbaa !11
  store double 0.000000e+00, ptr %51, align 8, !tbaa !11
  store double 1.000000e+00, ptr %48, align 8, !tbaa !11
  %2204 = load ptr, ptr %31, align 8, !tbaa !5
  %2205 = load double, ptr %2204, align 8, !tbaa !11
  store double %2205, ptr %56, align 8, !tbaa !11
  br label %2206

2206:                                             ; preds = %2195, %2170
  br label %2207

2207:                                             ; preds = %2206
  %2208 = load i32, ptr %39, align 4, !tbaa !9
  %2209 = load i32, ptr %49, align 4, !tbaa !9
  %2210 = add nsw i32 %2209, %2208
  store i32 %2210, ptr %49, align 4, !tbaa !9
  br label %1798, !llvm.loop !38

2211:                                             ; preds = %1811
  %2212 = load ptr, ptr %19, align 8, !tbaa !5
  %2213 = load ptr, ptr %24, align 8, !tbaa !5
  %2214 = getelementptr inbounds double, ptr %2213, i64 1
  %2215 = call double @dasum_(ptr noundef %2212, ptr noundef %2214, ptr noundef @c__1)
  %2216 = load ptr, ptr %19, align 8, !tbaa !5
  %2217 = load ptr, ptr %25, align 8, !tbaa !5
  %2218 = getelementptr inbounds double, ptr %2217, i64 1
  %2219 = call double @dasum_(ptr noundef %2216, ptr noundef %2218, ptr noundef @c__1)
  %2220 = fadd double %2215, %2219
  store double %2220, ptr %61, align 8, !tbaa !11
  %2221 = load double, ptr %61, align 8, !tbaa !11
  %2222 = load double, ptr %71, align 8, !tbaa !11
  %2223 = load double, ptr %51, align 8, !tbaa !11
  %2224 = fmul double %2222, %2223
  %2225 = fcmp oge double %2221, %2224
  br i1 %2225, label %2226, label %2227

2226:                                             ; preds = %2211
  br label %2278

2227:                                             ; preds = %2211
  %2228 = load ptr, ptr %29, align 8, !tbaa !5
  %2229 = load double, ptr %2228, align 8, !tbaa !11
  %2230 = load double, ptr %60, align 8, !tbaa !11
  %2231 = fadd double %2230, 1.000000e+00
  %2232 = fdiv double %2229, %2231
  store double %2232, ptr %54, align 8, !tbaa !11
  %2233 = load ptr, ptr %29, align 8, !tbaa !5
  %2234 = load double, ptr %2233, align 8, !tbaa !11
  %2235 = load ptr, ptr %24, align 8, !tbaa !5
  %2236 = getelementptr inbounds double, ptr %2235, i64 1
  store double %2234, ptr %2236, align 8, !tbaa !11
  %2237 = load ptr, ptr %25, align 8, !tbaa !5
  %2238 = getelementptr inbounds double, ptr %2237, i64 1
  store double 0.000000e+00, ptr %2238, align 8, !tbaa !11
  %2239 = load ptr, ptr %19, align 8, !tbaa !5
  %2240 = load i32, ptr %2239, align 4, !tbaa !9
  store i32 %2240, ptr %39, align 4, !tbaa !9
  store i32 2, ptr %49, align 4, !tbaa !9
  br label %2241

2241:                                             ; preds = %2255, %2227
  %2242 = load i32, ptr %49, align 4, !tbaa !9
  %2243 = load i32, ptr %39, align 4, !tbaa !9
  %2244 = icmp sle i32 %2242, %2243
  br i1 %2244, label %2245, label %2258

2245:                                             ; preds = %2241
  %2246 = load double, ptr %54, align 8, !tbaa !11
  %2247 = load ptr, ptr %24, align 8, !tbaa !5
  %2248 = load i32, ptr %49, align 4, !tbaa !9
  %2249 = sext i32 %2248 to i64
  %2250 = getelementptr inbounds double, ptr %2247, i64 %2249
  store double %2246, ptr %2250, align 8, !tbaa !11
  %2251 = load ptr, ptr %25, align 8, !tbaa !5
  %2252 = load i32, ptr %49, align 4, !tbaa !9
  %2253 = sext i32 %2252 to i64
  %2254 = getelementptr inbounds double, ptr %2251, i64 %2253
  store double 0.000000e+00, ptr %2254, align 8, !tbaa !11
  br label %2255

2255:                                             ; preds = %2245
  %2256 = load i32, ptr %49, align 4, !tbaa !9
  %2257 = add nsw i32 %2256, 1
  store i32 %2257, ptr %49, align 4, !tbaa !9
  br label %2241, !llvm.loop !39

2258:                                             ; preds = %2241
  %2259 = load ptr, ptr %29, align 8, !tbaa !5
  %2260 = load double, ptr %2259, align 8, !tbaa !11
  %2261 = load double, ptr %60, align 8, !tbaa !11
  %2262 = load ptr, ptr %24, align 8, !tbaa !5
  %2263 = load ptr, ptr %19, align 8, !tbaa !5
  %2264 = load i32, ptr %2263, align 4, !tbaa !9
  %2265 = load i32, ptr %73, align 4, !tbaa !9
  %2266 = sub nsw i32 %2264, %2265
  %2267 = add nsw i32 %2266, 1
  %2268 = sext i32 %2267 to i64
  %2269 = getelementptr inbounds double, ptr %2262, i64 %2268
  %2270 = load double, ptr %2269, align 8, !tbaa !11
  %2271 = fneg double %2260
  %2272 = call double @llvm.fmuladd.f64(double %2271, double %2261, double %2270)
  store double %2272, ptr %2269, align 8, !tbaa !11
  br label %2273

2273:                                             ; preds = %2258
  %2274 = load i32, ptr %73, align 4, !tbaa !9
  %2275 = add nsw i32 %2274, 1
  store i32 %2275, ptr %73, align 4, !tbaa !9
  br label %1788, !llvm.loop !40

2276:                                             ; preds = %1788
  %2277 = load ptr, ptr %32, align 8, !tbaa !5
  store i32 1, ptr %2277, align 4, !tbaa !9
  br label %2278

2278:                                             ; preds = %2276, %2226
  store double 0.000000e+00, ptr %61, align 8, !tbaa !11
  %2279 = load ptr, ptr %19, align 8, !tbaa !5
  %2280 = load i32, ptr %2279, align 4, !tbaa !9
  store i32 %2280, ptr %37, align 4, !tbaa !9
  store i32 1, ptr %49, align 4, !tbaa !9
  br label %2281

2281:                                             ; preds = %2325, %2278
  %2282 = load i32, ptr %49, align 4, !tbaa !9
  %2283 = load i32, ptr %37, align 4, !tbaa !9
  %2284 = icmp sle i32 %2282, %2283
  br i1 %2284, label %2285, label %2328

2285:                                             ; preds = %2281
  %2286 = load double, ptr %61, align 8, !tbaa !11
  store double %2286, ptr %43, align 8, !tbaa !11
  %2287 = load ptr, ptr %24, align 8, !tbaa !5
  %2288 = load i32, ptr %49, align 4, !tbaa !9
  %2289 = sext i32 %2288 to i64
  %2290 = getelementptr inbounds double, ptr %2287, i64 %2289
  %2291 = load double, ptr %2290, align 8, !tbaa !11
  store double %2291, ptr %41, align 8, !tbaa !11
  %2292 = load double, ptr %41, align 8, !tbaa !11
  %2293 = fcmp oge double %2292, 0.000000e+00
  br i1 %2293, label %2294, label %2296

2294:                                             ; preds = %2285
  %2295 = load double, ptr %41, align 8, !tbaa !11
  br label %2299

2296:                                             ; preds = %2285
  %2297 = load double, ptr %41, align 8, !tbaa !11
  %2298 = fneg double %2297
  br label %2299

2299:                                             ; preds = %2296, %2294
  %2300 = phi double [ %2295, %2294 ], [ %2298, %2296 ]
  %2301 = load ptr, ptr %25, align 8, !tbaa !5
  %2302 = load i32, ptr %49, align 4, !tbaa !9
  %2303 = sext i32 %2302 to i64
  %2304 = getelementptr inbounds double, ptr %2301, i64 %2303
  %2305 = load double, ptr %2304, align 8, !tbaa !11
  store double %2305, ptr %42, align 8, !tbaa !11
  %2306 = load double, ptr %42, align 8, !tbaa !11
  %2307 = fcmp oge double %2306, 0.000000e+00
  br i1 %2307, label %2308, label %2310

2308:                                             ; preds = %2299
  %2309 = load double, ptr %42, align 8, !tbaa !11
  br label %2313

2310:                                             ; preds = %2299
  %2311 = load double, ptr %42, align 8, !tbaa !11
  %2312 = fneg double %2311
  br label %2313

2313:                                             ; preds = %2310, %2308
  %2314 = phi double [ %2309, %2308 ], [ %2312, %2310 ]
  %2315 = fadd double %2300, %2314
  store double %2315, ptr %44, align 8, !tbaa !11
  %2316 = load double, ptr %43, align 8, !tbaa !11
  %2317 = load double, ptr %44, align 8, !tbaa !11
  %2318 = fcmp oge double %2316, %2317
  br i1 %2318, label %2319, label %2321

2319:                                             ; preds = %2313
  %2320 = load double, ptr %43, align 8, !tbaa !11
  br label %2323

2321:                                             ; preds = %2313
  %2322 = load double, ptr %44, align 8, !tbaa !11
  br label %2323

2323:                                             ; preds = %2321, %2319
  %2324 = phi double [ %2320, %2319 ], [ %2322, %2321 ]
  store double %2324, ptr %61, align 8, !tbaa !11
  br label %2325

2325:                                             ; preds = %2323
  %2326 = load i32, ptr %49, align 4, !tbaa !9
  %2327 = add nsw i32 %2326, 1
  store i32 %2327, ptr %49, align 4, !tbaa !9
  br label %2281, !llvm.loop !41

2328:                                             ; preds = %2281
  %2329 = load double, ptr %61, align 8, !tbaa !11
  %2330 = fdiv double 1.000000e+00, %2329
  store double %2330, ptr %41, align 8, !tbaa !11
  %2331 = load ptr, ptr %19, align 8, !tbaa !5
  %2332 = load ptr, ptr %24, align 8, !tbaa !5
  %2333 = getelementptr inbounds double, ptr %2332, i64 1
  call void @dscal_(ptr noundef %2331, ptr noundef %41, ptr noundef %2333, ptr noundef @c__1)
  %2334 = load double, ptr %61, align 8, !tbaa !11
  %2335 = fdiv double 1.000000e+00, %2334
  store double %2335, ptr %41, align 8, !tbaa !11
  %2336 = load ptr, ptr %19, align 8, !tbaa !5
  %2337 = load ptr, ptr %25, align 8, !tbaa !5
  %2338 = getelementptr inbounds double, ptr %2337, i64 1
  call void @dscal_(ptr noundef %2336, ptr noundef %41, ptr noundef %2338, ptr noundef @c__1)
  br label %2339

2339:                                             ; preds = %2328, %765
  call void @llvm.lifetime.end.p0(i64 4, ptr %73) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %72) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %71) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %69) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #5
  call void @llvm.lifetime.end.p0(i64 8, 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 8, ptr %56) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %55) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #5
  call void @llvm.lifetime.end.p0(i64 8, 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 4, ptr %40) #5
  call void @llvm.lifetime.end.p0(i64 4, 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
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #5
  ret void
}

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

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

declare double @dnrm2_(ptr noundef, ptr noundef, ptr noundef) #3

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

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

declare void @dlatrs_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #3

declare double @dasum_(ptr noundef, ptr noundef, ptr noundef) #3

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

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

declare void @dladiv_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #3

; 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 = { 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 #3 = { "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 = !{!7, !7, i64 0}
!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}
!29 = distinct !{!29, !14}
!30 = distinct !{!30, !14}
!31 = distinct !{!31, !14}
!32 = distinct !{!32, !14}
!33 = distinct !{!33, !14}
!34 = distinct !{!34, !14}
!35 = distinct !{!35, !14}
!36 = distinct !{!36, !14}
!37 = distinct !{!37, !14}
!38 = distinct !{!38, !14}
!39 = distinct !{!39, !14}
!40 = distinct !{!40, !14}
!41 = distinct !{!41, !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"

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

; Function Attrs: nounwind uwtable
define dso_local void @dlaein_(ptr nocapture noundef readonly %0, ptr nocapture noundef readonly %1, ptr noundef %2, ptr nocapture noundef readonly %3, ptr nocapture noundef readonly %4, ptr nocapture noundef readonly %5, ptr nocapture noundef readonly %6, ptr noundef %7, ptr noundef %8, ptr noundef %9, ptr noundef %10, ptr noundef %11, ptr nocapture noundef readonly %12, ptr nocapture noundef readonly %13, ptr nocapture noundef readonly %14, ptr nocapture noundef writeonly %15) local_unnamed_addr #0 {
  %17 = ptrtoint ptr %7 to i64
  %18 = ptrtoint ptr %8 to i64
  %19 = ptrtoint ptr %7 to i64
  %20 = ptrtoint ptr %8 to i64
  %21 = alloca i32, align 4
  %22 = alloca i32, align 4
  %23 = alloca i32, align 4
  %24 = alloca double, align 8
  %25 = alloca double, align 8
  %26 = alloca i32, align 4
  %27 = alloca double, align 8
  %28 = alloca [1 x i8], align 1
  %29 = alloca double, align 8
  %30 = alloca double, align 8
  %31 = alloca [1 x i8], align 1
  %32 = alloca double, align 8
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %21) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %22) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %23) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %24) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %25) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %26) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %27) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %28) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %29) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %30) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %31) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %32) #7
  %33 = load i32, ptr %4, align 4, !tbaa !5
  %narrow = xor i32 %33, -1
  %34 = sext i32 %narrow to i64
  %35 = getelementptr inbounds double, ptr %3, i64 %34
  %36 = getelementptr inbounds i8, ptr %7, i64 -8
  %37 = getelementptr inbounds i8, ptr %8, i64 -8
  %38 = load i32, ptr %10, align 4, !tbaa !5
  %narrow885 = xor i32 %38, -1
  %39 = sext i32 %narrow885 to i64
  %40 = getelementptr inbounds double, ptr %9, i64 %39
  %41 = getelementptr inbounds i8, ptr %11, i64 -8
  store i32 0, ptr %15, align 4, !tbaa !5
  %42 = load i32, ptr %2, align 4, !tbaa !5
  %43 = sitofp i32 %42 to double
  %44 = tail call double @sqrt(double noundef %43) #7
  %45 = fdiv double 1.000000e-01, %44
  store double 1.000000e+00, ptr %24, align 8, !tbaa !9
  %46 = load double, ptr %12, align 8, !tbaa !9
  %47 = fmul double %44, %46
  store double %47, ptr %25, align 8, !tbaa !9
  %48 = fcmp ole double %47, 1.000000e+00
  %49 = select i1 %48, double 1.000000e+00, double %47
  %50 = load double, ptr %13, align 8, !tbaa !9
  %51 = fmul double %50, %49
  %52 = load i32, ptr %2, align 4, !tbaa !5
  %.not902 = icmp slt i32 %52, 1
  br i1 %.not902, label %105, label %.lr.ph905

.lr.ph905:                                        ; preds = %16
  %53 = add i32 %33, 1
  %54 = add i32 %38, 1
  %55 = sext i32 %33 to i64
  %56 = sext i32 %38 to i64
  %57 = add nsw i32 %52, -1
  %58 = add nuw i32 %52, 1
  %wide.trip.count1056 = zext i32 %58 to i64
  %59 = shl nsw i64 %56, 3
  %60 = add nsw i64 %56, %39
  %61 = shl nsw i64 %60, 3
  %62 = add nsw i64 %61, 8
  %63 = shl nsw i64 %56, 3
  %64 = add nsw i64 %59, 8
  %65 = shl nsw i64 %55, 3
  %66 = add nsw i64 %55, %34
  %67 = shl nsw i64 %66, 3
  %68 = add nsw i64 %67, 8
  %69 = shl nsw i64 %55, 3
  %70 = add nsw i64 %65, 8
  %71 = getelementptr i8, ptr %9, i64 %62
  %72 = getelementptr i8, ptr %9, i64 %62
  %73 = getelementptr i8, ptr %3, i64 %68
  %74 = getelementptr i8, ptr %3, i64 %68
  br label %75

75:                                               ; preds = %.lr.ph905, %._crit_edge
  %indvar = phi i64 [ 0, %.lr.ph905 ], [ %indvar.next, %._crit_edge ]
  %indvars.iv1053 = phi i64 [ 1, %.lr.ph905 ], [ %indvars.iv.next1054, %._crit_edge ]
  %76 = mul i64 %63, %indvar
  %scevgep1302 = getelementptr i8, ptr %71, i64 %76
  %77 = mul i64 %64, %indvar
  %scevgep1303 = getelementptr i8, ptr %72, i64 %77
  %78 = mul i64 %69, %indvar
  %scevgep1304 = getelementptr i8, ptr %73, i64 %78
  %79 = mul i64 %70, %indvar
  %scevgep1305 = getelementptr i8, ptr %74, i64 %79
  %.not889.not900 = icmp ugt i64 %indvars.iv1053, 1
  br i1 %.not889.not900, label %.lr.ph, label %._crit_edge

.lr.ph:                                           ; preds = %75
  %80 = mul nsw i64 %indvars.iv1053, %55
  %81 = mul nsw i64 %indvars.iv1053, %56
  %invariant.gep1223 = getelementptr double, ptr %35, i64 %80
  %invariant.gep1225 = getelementptr double, ptr %40, i64 %81
  %min.iters.check = icmp ult i64 %indvar, 4
  br i1 %min.iters.check, label %scalar.ph.preheader, label %vector.memcheck

vector.memcheck:                                  ; preds = %.lr.ph
  %bound0 = icmp ult ptr %scevgep1302, %scevgep1305
  %bound1 = icmp ult ptr %scevgep1304, %scevgep1303
  %found.conflict = and i1 %bound0, %bound1
  br i1 %found.conflict, label %scalar.ph.preheader, label %vector.ph

vector.ph:                                        ; preds = %vector.memcheck
  %n.vec = and i64 %indvar, -4
  %ind.end = or disjoint i64 %n.vec, 1
  br label %vector.body

vector.body:                                      ; preds = %vector.body, %vector.ph
  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %offset.idx = or disjoint i64 %index, 1
  %82 = getelementptr double, ptr %invariant.gep1223, i64 %offset.idx
  %83 = getelementptr i8, ptr %82, i64 16
  %wide.load = load <2 x double>, ptr %82, align 8, !tbaa !9, !alias.scope !11
  %wide.load1306 = load <2 x double>, ptr %83, align 8, !tbaa !9, !alias.scope !11
  %84 = getelementptr double, ptr %invariant.gep1225, i64 %offset.idx
  %85 = getelementptr i8, ptr %84, i64 16
  store <2 x double> %wide.load, ptr %84, align 8, !tbaa !9, !alias.scope !14, !noalias !11
  store <2 x double> %wide.load1306, ptr %85, align 8, !tbaa !9, !alias.scope !14, !noalias !11
  %index.next = add nuw i64 %index, 4
  %86 = icmp eq i64 %index.next, %n.vec
  br i1 %86, label %middle.block, label %vector.body, !llvm.loop !16

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

scalar.ph.preheader:                              ; preds = %middle.block, %vector.memcheck, %.lr.ph
  %indvars.iv.ph = phi i64 [ 1, %vector.memcheck ], [ 1, %.lr.ph ], [ %ind.end, %middle.block ]
  %87 = sub i64 %indvars.iv1053, %indvars.iv.ph
  %88 = sub i64 %indvar, %indvars.iv.ph
  %xtraiter = and i64 %87, 3
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %scalar.ph.prol.loopexit, label %scalar.ph.prol

scalar.ph.prol:                                   ; preds = %scalar.ph.preheader, %scalar.ph.prol
  %indvars.iv.prol = phi i64 [ %indvars.iv.next.prol, %scalar.ph.prol ], [ %indvars.iv.ph, %scalar.ph.preheader ]
  %prol.iter = phi i64 [ %prol.iter.next, %scalar.ph.prol ], [ 0, %scalar.ph.preheader ]
  %gep1224.prol = getelementptr double, ptr %invariant.gep1223, i64 %indvars.iv.prol
  %89 = load double, ptr %gep1224.prol, align 8, !tbaa !9
  %gep1226.prol = getelementptr double, ptr %invariant.gep1225, i64 %indvars.iv.prol
  store double %89, ptr %gep1226.prol, align 8, !tbaa !9
  %indvars.iv.next.prol = add nuw nsw i64 %indvars.iv.prol, 1
  %prol.iter.next = add i64 %prol.iter, 1
  %prol.iter.cmp.not = icmp eq i64 %prol.iter.next, %xtraiter
  br i1 %prol.iter.cmp.not, label %scalar.ph.prol.loopexit, label %scalar.ph.prol, !llvm.loop !20

scalar.ph.prol.loopexit:                          ; preds = %scalar.ph.prol, %scalar.ph.preheader
  %indvars.iv.unr = phi i64 [ %indvars.iv.ph, %scalar.ph.preheader ], [ %indvars.iv.next.prol, %scalar.ph.prol ]
  %90 = icmp ult i64 %88, 3
  br i1 %90, label %._crit_edge, label %scalar.ph

scalar.ph:                                        ; preds = %scalar.ph.prol.loopexit, %scalar.ph
  %indvars.iv = phi i64 [ %indvars.iv.next.3, %scalar.ph ], [ %indvars.iv.unr, %scalar.ph.prol.loopexit ]
  %gep1224 = getelementptr double, ptr %invariant.gep1223, i64 %indvars.iv
  %91 = load double, ptr %gep1224, align 8, !tbaa !9
  %gep1226 = getelementptr double, ptr %invariant.gep1225, i64 %indvars.iv
  store double %91, ptr %gep1226, align 8, !tbaa !9
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %gep1224.1 = getelementptr double, ptr %invariant.gep1223, i64 %indvars.iv.next
  %92 = load double, ptr %gep1224.1, align 8, !tbaa !9
  %gep1226.1 = getelementptr double, ptr %invariant.gep1225, i64 %indvars.iv.next
  store double %92, ptr %gep1226.1, align 8, !tbaa !9
  %indvars.iv.next.1 = add nuw nsw i64 %indvars.iv, 2
  %gep1224.2 = getelementptr double, ptr %invariant.gep1223, i64 %indvars.iv.next.1
  %93 = load double, ptr %gep1224.2, align 8, !tbaa !9
  %gep1226.2 = getelementptr double, ptr %invariant.gep1225, i64 %indvars.iv.next.1
  store double %93, ptr %gep1226.2, align 8, !tbaa !9
  %indvars.iv.next.2 = add nuw nsw i64 %indvars.iv, 3
  %gep1224.3 = getelementptr double, ptr %invariant.gep1223, i64 %indvars.iv.next.2
  %94 = load double, ptr %gep1224.3, align 8, !tbaa !9
  %gep1226.3 = getelementptr double, ptr %invariant.gep1225, i64 %indvars.iv.next.2
  store double %94, ptr %gep1226.3, align 8, !tbaa !9
  %indvars.iv.next.3 = add nuw nsw i64 %indvars.iv, 4
  %exitcond.not.3 = icmp eq i64 %indvars.iv.next.3, %indvars.iv1053
  br i1 %exitcond.not.3, label %._crit_edge, label %scalar.ph, !llvm.loop !22

._crit_edge:                                      ; preds = %scalar.ph.prol.loopexit, %scalar.ph, %middle.block, %75
  %95 = trunc nuw nsw i64 %indvars.iv1053 to i32
  %96 = mul i32 %53, %95
  %97 = sext i32 %96 to i64
  %98 = getelementptr inbounds double, ptr %35, i64 %97
  %99 = load double, ptr %98, align 8, !tbaa !9
  %100 = load double, ptr %5, align 8, !tbaa !9
  %101 = fsub double %99, %100
  %102 = mul i32 %54, %95
  %103 = sext i32 %102 to i64
  %104 = getelementptr inbounds double, ptr %40, i64 %103
  store double %101, ptr %104, align 8, !tbaa !9
  %indvars.iv.next1054 = add nuw nsw i64 %indvars.iv1053, 1
  %exitcond1057.not = icmp eq i64 %indvars.iv.next1054, %wide.trip.count1056
  %indvar.next = add i64 %indvar, 1
  br i1 %exitcond1057.not, label %._crit_edge906, label %75, !llvm.loop !23

._crit_edge906:                                   ; preds = %._crit_edge
  store i32 %57, ptr %22, align 4, !tbaa !5
  br label %105

105:                                              ; preds = %._crit_edge906, %16
  %106 = load double, ptr %6, align 8, !tbaa !9
  %107 = fcmp oeq double %106, 0.000000e+00
  %108 = load i32, ptr %1, align 4, !tbaa !5
  %.not878 = icmp eq i32 %108, 0
  br i1 %107, label %109, label %347

109:                                              ; preds = %105
  br i1 %.not878, label %117, label %110

110:                                              ; preds = %109
  br i1 %.not902, label %.loopexit894, label %.lr.ph998.preheader

.lr.ph998.preheader:                              ; preds = %110
  %111 = add nuw i32 %52, 1
  %wide.trip.count1140 = zext i32 %111 to i64
  %.pre1190 = load double, ptr %12, align 8, !tbaa !9
  %112 = zext nneg i32 %52 to i64
  %min.iters.check1380 = icmp ult i32 %52, 4
  br i1 %min.iters.check1380, label %.lr.ph998.preheader1518, label %vector.ph1381

vector.ph1381:                                    ; preds = %.lr.ph998.preheader
  %n.vec1383 = and i64 %112, 2147483644
  %ind.end1384 = or disjoint i64 %n.vec1383, 1
  %broadcast.splatinsert1389 = insertelement <2 x double> poison, double %.pre1190, i64 0
  %broadcast.splat1390 = shufflevector <2 x double> %broadcast.splatinsert1389, <2 x double> poison, <2 x i32> zeroinitializer
  br label %vector.body1386

vector.body1386:                                  ; preds = %vector.body1386, %vector.ph1381
  %index1387 = phi i64 [ 0, %vector.ph1381 ], [ %index.next1391, %vector.body1386 ]
  %113 = getelementptr double, ptr %7, i64 %index1387
  %114 = getelementptr inbounds i8, ptr %113, i64 16
  store <2 x double> %broadcast.splat1390, ptr %113, align 8, !tbaa !9
  store <2 x double> %broadcast.splat1390, ptr %114, align 8, !tbaa !9
  %index.next1391 = add nuw i64 %index1387, 4
  %115 = icmp eq i64 %index.next1391, %n.vec1383
  br i1 %115, label %middle.block1378, label %vector.body1386, !llvm.loop !24

middle.block1378:                                 ; preds = %vector.body1386
  %cmp.n1392 = icmp eq i64 %n.vec1383, %112
  br i1 %cmp.n1392, label %.loopexit894, label %.lr.ph998.preheader1518

.lr.ph998.preheader1518:                          ; preds = %middle.block1378, %.lr.ph998.preheader
  %indvars.iv1136.ph = phi i64 [ 1, %.lr.ph998.preheader ], [ %ind.end1384, %middle.block1378 ]
  br label %.lr.ph998

.lr.ph998:                                        ; preds = %.lr.ph998.preheader1518, %.lr.ph998
  %indvars.iv1136 = phi i64 [ %indvars.iv.next1137, %.lr.ph998 ], [ %indvars.iv1136.ph, %.lr.ph998.preheader1518 ]
  %116 = getelementptr inbounds double, ptr %36, i64 %indvars.iv1136
  store double %.pre1190, ptr %116, align 8, !tbaa !9
  %indvars.iv.next1137 = add nuw nsw i64 %indvars.iv1136, 1
  %exitcond1141.not = icmp eq i64 %indvars.iv.next1137, %wide.trip.count1140
  br i1 %exitcond1141.not, label %.loopexit894, label %.lr.ph998, !llvm.loop !25

117:                                              ; preds = %109
  %118 = tail call double @dnrm2_(ptr noundef nonnull %2, ptr noundef %7, ptr noundef nonnull @c__1) #7
  %119 = load double, ptr %12, align 8, !tbaa !9
  %120 = fmul double %44, %119
  %121 = fcmp oge double %118, %51
  %122 = select i1 %121, double %118, double %51
  %123 = fdiv double %120, %122
  store double %123, ptr %24, align 8, !tbaa !9
  call void @dscal_(ptr noundef nonnull %2, ptr noundef nonnull %24, ptr noundef %7, ptr noundef nonnull @c__1) #7
  br label %.loopexit894

.loopexit894:                                     ; preds = %.lr.ph998, %middle.block1378, %110, %117
  %124 = load i32, ptr %0, align 4, !tbaa !5
  %.not880 = icmp eq i32 %124, 0
  %125 = load i32, ptr %2, align 4, !tbaa !5
  %126 = icmp sgt i32 %125, 1
  br i1 %.not880, label %184, label %127

127:                                              ; preds = %.loopexit894
  %128 = add i32 %38, 1
  br i1 %126, label %.lr.ph1010, label %._crit_edge1200

.lr.ph1010:                                       ; preds = %127
  %129 = sext i32 %38 to i64
  %130 = add nuw i32 %125, 1
  %131 = sext i32 %33 to i64
  %wide.trip.count1160 = zext nneg i32 %125 to i64
  %wide.trip.count1148 = zext i32 %130 to i64
  %wide.trip.count1154 = zext i32 %130 to i64
  %ident.check1464.not = icmp eq i32 %38, 1
  %ident.check1469.not = icmp eq i32 %38, 1
  br label %132

132:                                              ; preds = %.lr.ph1010, %.loopexit892
  %indvar1466 = phi i64 [ 0, %.lr.ph1010 ], [ %indvar.next1467, %.loopexit892 ]
  %indvars.iv1156 = phi i64 [ 1, %.lr.ph1010 ], [ %indvars.iv.next1157, %.loopexit892 ]
  %indvars.iv1142 = phi i64 [ 2, %.lr.ph1010 ], [ %indvars.iv.next1143, %.loopexit892 ]
  %133 = shl nuw nsw i64 %indvar1466, 4
  %134 = or disjoint i64 %133, 8
  %scevgep1473 = getelementptr i8, ptr %9, i64 %134
  %135 = shl nuw nsw i64 %indvar1466, 4
  %136 = or disjoint i64 %135, 8
  %scevgep1468 = getelementptr i8, ptr %9, i64 %136
  %indvars.iv.next1157 = add nuw nsw i64 %indvars.iv1156, 1
  %137 = mul nsw i64 %indvars.iv1156, %131
  %138 = getelementptr double, ptr %35, i64 %indvars.iv.next1157
  %139 = getelementptr double, ptr %138, i64 %137
  %140 = load double, ptr %139, align 8, !tbaa !9
  %141 = trunc nuw nsw i64 %indvars.iv1156 to i32
  %142 = mul i32 %128, %141
  %143 = sext i32 %142 to i64
  %144 = getelementptr inbounds double, ptr %40, i64 %143
  %145 = load double, ptr %144, align 8, !tbaa !9
  %146 = fcmp oge double %145, 0.000000e+00
  %147 = fneg double %145
  %148 = select i1 %146, double %145, double %147
  %149 = fcmp oge double %140, 0.000000e+00
  %150 = fneg double %140
  %151 = select i1 %149, double %140, double %150
  %152 = fcmp olt double %148, %151
  br i1 %152, label %.lver.check1470, label %162

.lver.check1470:                                  ; preds = %132
  store double %140, ptr %144, align 8, !tbaa !9
  %153 = fdiv double %147, %140
  %invariant.gep1279 = getelementptr double, ptr %40, i64 %indvars.iv.next1157
  %invariant.gep1281 = getelementptr double, ptr %40, i64 %indvars.iv1156
  br i1 %ident.check1469.not, label %.ph1471, label %.ph1471.lver.orig

.ph1471.lver.orig:                                ; preds = %.lver.check1470, %.ph1471.lver.orig
  %indvars.iv1150.lver.orig = phi i64 [ %indvars.iv.next1151.lver.orig, %.ph1471.lver.orig ], [ %indvars.iv1142, %.lver.check1470 ]
  %154 = mul nsw i64 %indvars.iv1150.lver.orig, %129
  %gep1280.lver.orig = getelementptr double, ptr %invariant.gep1279, i64 %154
  %155 = load double, ptr %gep1280.lver.orig, align 8, !tbaa !9
  %gep1282.lver.orig = getelementptr double, ptr %invariant.gep1281, i64 %154
  %156 = load double, ptr %gep1282.lver.orig, align 8, !tbaa !9
  %157 = call double @llvm.fmuladd.f64(double %153, double %155, double %156)
  store double %157, ptr %gep1280.lver.orig, align 8, !tbaa !9
  store double %155, ptr %gep1282.lver.orig, align 8, !tbaa !9
  %indvars.iv.next1151.lver.orig = add nuw nsw i64 %indvars.iv1150.lver.orig, 1
  %exitcond1155.not.lver.orig = icmp eq i64 %indvars.iv.next1151.lver.orig, %wide.trip.count1154
  br i1 %exitcond1155.not.lver.orig, label %.loopexit892, label %.ph1471.lver.orig, !llvm.loop !26

.ph1471:                                          ; preds = %.lver.check1470
  %load_initial1474 = load double, ptr %scevgep1473, align 8
  br label %158

158:                                              ; preds = %.ph1471, %158
  %store_forwarded1475 = phi double [ %load_initial1474, %.ph1471 ], [ %161, %158 ]
  %indvars.iv1150 = phi i64 [ %indvars.iv1142, %.ph1471 ], [ %indvars.iv.next1151, %158 ]
  %159 = mul nuw nsw i64 %indvars.iv1150, %129
  %gep1280 = getelementptr double, ptr %invariant.gep1279, i64 %159
  %160 = load double, ptr %gep1280, align 8, !tbaa !9
  %gep1282 = getelementptr double, ptr %invariant.gep1281, i64 %159
  %161 = call double @llvm.fmuladd.f64(double %153, double %160, double %store_forwarded1475)
  store double %161, ptr %gep1280, align 8, !tbaa !9
  store double %160, ptr %gep1282, align 8, !tbaa !9
  %indvars.iv.next1151 = add nuw nsw i64 %indvars.iv1150, 1
  %exitcond1155.not = icmp eq i64 %indvars.iv.next1151, %wide.trip.count1154
  br i1 %exitcond1155.not, label %.loopexit892, label %158, !llvm.loop !26

162:                                              ; preds = %132
  %163 = fcmp oeq double %145, 0.000000e+00
  br i1 %163, label %164, label %166

164:                                              ; preds = %162
  %165 = load double, ptr %12, align 8, !tbaa !9
  store double %165, ptr %144, align 8, !tbaa !9
  br label %166

166:                                              ; preds = %164, %162
  %167 = phi double [ %165, %164 ], [ %145, %162 ]
  %168 = fdiv double %140, %167
  %169 = fcmp une double %168, 0.000000e+00
  br i1 %169, label %.lver.check, label %.loopexit892

.lver.check:                                      ; preds = %166
  %170 = fneg double %168
  %invariant.gep1275 = getelementptr double, ptr %40, i64 %indvars.iv1156
  %invariant.gep1277 = getelementptr double, ptr %40, i64 %indvars.iv.next1157
  br i1 %ident.check1464.not, label %.ph, label %.ph.lver.orig

.ph.lver.orig:                                    ; preds = %.lver.check, %.ph.lver.orig
  %indvars.iv1144.lver.orig = phi i64 [ %indvars.iv.next1145.lver.orig, %.ph.lver.orig ], [ %indvars.iv1142, %.lver.check ]
  %171 = mul nsw i64 %indvars.iv1144.lver.orig, %129
  %gep1276.lver.orig = getelementptr double, ptr %invariant.gep1275, i64 %171
  %172 = load double, ptr %gep1276.lver.orig, align 8, !tbaa !9
  %gep1278.lver.orig = getelementptr double, ptr %invariant.gep1277, i64 %171
  %173 = load double, ptr %gep1278.lver.orig, align 8, !tbaa !9
  %174 = call double @llvm.fmuladd.f64(double %170, double %172, double %173)
  store double %174, ptr %gep1278.lver.orig, align 8, !tbaa !9
  %indvars.iv.next1145.lver.orig = add nuw nsw i64 %indvars.iv1144.lver.orig, 1
  %exitcond1149.not.lver.orig = icmp eq i64 %indvars.iv.next1145.lver.orig, %wide.trip.count1148
  br i1 %exitcond1149.not.lver.orig, label %.loopexit892, label %.ph.lver.orig, !llvm.loop !27

.ph:                                              ; preds = %.lver.check
  %load_initial = load double, ptr %scevgep1468, align 8
  br label %175

175:                                              ; preds = %.ph, %175
  %store_forwarded = phi double [ %load_initial, %.ph ], [ %178, %175 ]
  %indvars.iv1144 = phi i64 [ %indvars.iv1142, %.ph ], [ %indvars.iv.next1145, %175 ]
  %176 = mul nuw nsw i64 %indvars.iv1144, %129
  %gep1278 = getelementptr double, ptr %invariant.gep1277, i64 %176
  %177 = load double, ptr %gep1278, align 8, !tbaa !9
  %178 = call double @llvm.fmuladd.f64(double %170, double %store_forwarded, double %177)
  store double %178, ptr %gep1278, align 8, !tbaa !9
  %indvars.iv.next1145 = add nuw nsw i64 %indvars.iv1144, 1
  %exitcond1149.not = icmp eq i64 %indvars.iv.next1145, %wide.trip.count1148
  br i1 %exitcond1149.not, label %.loopexit892, label %175, !llvm.loop !27

.loopexit892:                                     ; preds = %.ph.lver.orig, %175, %.ph1471.lver.orig, %158, %166
  %indvars.iv.next1143 = add nuw nsw i64 %indvars.iv1142, 1
  %exitcond1161.not = icmp eq i64 %indvars.iv.next1157, %wide.trip.count1160
  %indvar.next1467 = add i64 %indvar1466, 1
  br i1 %exitcond1161.not, label %._crit_edge1011, label %132, !llvm.loop !28

._crit_edge1011:                                  ; preds = %.loopexit892
  store double %145, ptr %24, align 8, !tbaa !9
  br label %._crit_edge1200

._crit_edge1200:                                  ; preds = %127, %._crit_edge1011
  %179 = mul i32 %125, %128
  %180 = sext i32 %179 to i64
  %181 = getelementptr inbounds double, ptr %40, i64 %180
  %182 = load double, ptr %181, align 8, !tbaa !9
  %183 = fcmp oeq double %182, 0.000000e+00
  br i1 %183, label %.sink.split, label %314

184:                                              ; preds = %.loopexit894
  br i1 %126, label %.lr.ph1023.preheader, label %310

.lr.ph1023.preheader:                             ; preds = %184
  %185 = zext nneg i32 %125 to i64
  %186 = sext i32 %38 to i64
  %187 = add nuw nsw i64 %185, 2305843009213693951
  %188 = mul i64 %187, %186
  %189 = shl nsw i64 %39, 3
  %190 = add i64 %188, %39
  %191 = shl i64 %190, 3
  %192 = mul nsw i64 %186, -8
  %193 = add i64 %190, %185
  %194 = shl i64 %193, 3
  %195 = shl nsw i64 %186, 3
  %196 = sub nuw nsw i64 -8, %195
  %197 = mul nsw i64 %186, %185
  %198 = add i64 %197, %39
  %199 = shl i64 %198, 3
  %200 = add nsw i64 %195, 8
  %201 = mul i64 %200, %185
  %202 = add nuw nsw i64 %185, 2305843009213693951
  %203 = mul i64 %202, %186
  %204 = shl nsw i64 %39, 3
  %205 = add i64 %203, %39
  %206 = shl i64 %205, 3
  %207 = mul nsw i64 %186, -8
  %208 = add i64 %205, %185
  %209 = shl i64 %208, 3
  %210 = shl nsw i64 %186, 3
  %211 = sub nuw nsw i64 -8, %210
  %212 = mul nsw i64 %186, %185
  %213 = add i64 %212, %39
  %214 = shl i64 %213, 3
  %215 = add nsw i64 %210, 8
  %216 = mul i64 %215, %185
  %217 = getelementptr i8, ptr %9, i64 %206
  %218 = getelementptr i8, ptr %217, i64 8
  %219 = getelementptr i8, ptr %9, i64 %209
  %220 = getelementptr i8, ptr %9, i64 %214
  %221 = getelementptr i8, ptr %220, i64 8
  %222 = getelementptr i8, ptr %9, i64 %216
  %223 = getelementptr i8, ptr %222, i64 %204
  %224 = getelementptr i8, ptr %9, i64 %191
  %225 = getelementptr i8, ptr %224, i64 8
  %226 = getelementptr i8, ptr %9, i64 %194
  %227 = getelementptr i8, ptr %9, i64 %199
  %228 = getelementptr i8, ptr %227, i64 8
  %229 = getelementptr i8, ptr %9, i64 %201
  %230 = getelementptr i8, ptr %229, i64 %189
  br label %.lr.ph1023

.lr.ph1023:                                       ; preds = %.lr.ph1023.preheader, %.loopexit890
  %indvar1394 = phi i64 [ 0, %.lr.ph1023.preheader ], [ %indvar.next1395, %.loopexit890 ]
  %indvars.iv1176 = phi i64 [ %185, %.lr.ph1023.preheader ], [ %indvars.iv.next1177, %.loopexit890 ]
  %231 = xor i64 %indvar1394, -1
  %232 = add i64 %231, %185
  %233 = xor i64 %indvar1394, -1
  %234 = add i64 %233, %185
  %235 = xor i64 %indvar1394, -1
  %236 = add i64 %235, %185
  %237 = mul i64 %207, %indvar1394
  %scevgep1423 = getelementptr i8, ptr %218, i64 %237
  %238 = mul i64 %211, %indvar1394
  %scevgep1424 = getelementptr i8, ptr %219, i64 %238
  %scevgep1425 = getelementptr i8, ptr %221, i64 %237
  %scevgep1426 = getelementptr i8, ptr %223, i64 %238
  %239 = xor i64 %indvar1394, -1
  %240 = add i64 %239, %185
  %241 = mul i64 %192, %indvar1394
  %scevgep1396 = getelementptr i8, ptr %225, i64 %241
  %242 = mul i64 %196, %indvar1394
  %scevgep1397 = getelementptr i8, ptr %226, i64 %242
  %scevgep1398 = getelementptr i8, ptr %228, i64 %241
  %scevgep1399 = getelementptr i8, ptr %230, i64 %242
  %indvars1179 = trunc i64 %indvars.iv1176 to i32
  %indvars.iv.next1177 = add nsw i64 %indvars.iv1176, -1
  %indvars1178 = trunc i64 %indvars.iv.next1177 to i32
  %243 = mul nsw i32 %33, %indvars1178
  %244 = sext i32 %243 to i64
  %245 = getelementptr double, ptr %35, i64 %indvars.iv1176
  %246 = getelementptr double, ptr %245, i64 %244
  %247 = load double, ptr %246, align 8, !tbaa !9
  %248 = mul nsw i64 %indvars.iv1176, %186
  %249 = mul nsw i32 %38, %indvars1179
  %250 = sext i32 %249 to i64
  %251 = getelementptr double, ptr %40, i64 %indvars.iv1176
  %252 = getelementptr double, ptr %251, i64 %250
  %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 = fcmp oge double %247, 0.000000e+00
  %258 = fneg double %247
  %259 = select i1 %257, double %247, double %258
  %260 = fcmp olt double %256, %259
  br i1 %260, label %.lr.ph1020, label %281

.lr.ph1020:                                       ; preds = %.lr.ph1023
  store double %247, ptr %252, align 8, !tbaa !9
  store i32 %indvars1178, ptr %21, align 4, !tbaa !5
  %261 = mul nsw i64 %indvars.iv.next1177, %186
  %262 = fdiv double %255, %247
  %invariant.gep1287 = getelementptr double, ptr %40, i64 %261
  %invariant.gep1289 = getelementptr double, ptr %40, i64 %248
  %min.iters.check1405 = icmp ult i64 %240, 4
  br i1 %min.iters.check1405, label %scalar.ph1404.preheader, label %vector.memcheck1393

vector.memcheck1393:                              ; preds = %.lr.ph1020
  %bound01400 = icmp ult ptr %scevgep1396, %scevgep1399
  %bound11401 = icmp ult ptr %scevgep1398, %scevgep1397
  %found.conflict1402 = and i1 %bound01400, %bound11401
  br i1 %found.conflict1402, label %scalar.ph1404.preheader, label %vector.ph1406

vector.ph1406:                                    ; preds = %vector.memcheck1393
  %n.vec1408 = and i64 %240, -4
  %ind.end1409 = or disjoint i64 %n.vec1408, 1
  %broadcast.splatinsert1418 = insertelement <2 x double> poison, double %262, i64 0
  %broadcast.splat1419 = shufflevector <2 x double> %broadcast.splatinsert1418, <2 x double> poison, <2 x i32> zeroinitializer
  br label %vector.body1411

vector.body1411:                                  ; preds = %vector.body1411, %vector.ph1406
  %index1412 = phi i64 [ 0, %vector.ph1406 ], [ %index.next1420, %vector.body1411 ]
  %offset.idx1413 = or disjoint i64 %index1412, 1
  %263 = getelementptr double, ptr %invariant.gep1287, i64 %offset.idx1413
  %264 = getelementptr i8, ptr %263, i64 16
  %wide.load1414 = load <2 x double>, ptr %263, align 8, !tbaa !9, !alias.scope !29, !noalias !32
  %wide.load1415 = load <2 x double>, ptr %264, align 8, !tbaa !9, !alias.scope !29, !noalias !32
  %265 = getelementptr double, ptr %invariant.gep1289, i64 %offset.idx1413
  %266 = getelementptr i8, ptr %265, i64 16
  %wide.load1416 = load <2 x double>, ptr %265, align 8, !tbaa !9, !alias.scope !32
  %wide.load1417 = load <2 x double>, ptr %266, align 8, !tbaa !9, !alias.scope !32
  %267 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %broadcast.splat1419, <2 x double> %wide.load1414, <2 x double> %wide.load1416)
  %268 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %broadcast.splat1419, <2 x double> %wide.load1415, <2 x double> %wide.load1417)
  store <2 x double> %267, ptr %263, align 8, !tbaa !9, !alias.scope !29, !noalias !32
  store <2 x double> %268, ptr %264, align 8, !tbaa !9, !alias.scope !29, !noalias !32
  store <2 x double> %wide.load1414, ptr %265, align 8, !tbaa !9, !alias.scope !32
  store <2 x double> %wide.load1415, ptr %266, align 8, !tbaa !9, !alias.scope !32
  %index.next1420 = add nuw i64 %index1412, 4
  %269 = icmp eq i64 %index.next1420, %n.vec1408
  br i1 %269, label %middle.block1403, label %vector.body1411, !llvm.loop !34

middle.block1403:                                 ; preds = %vector.body1411
  %cmp.n1421 = icmp eq i64 %240, %n.vec1408
  br i1 %cmp.n1421, label %.loopexit890, label %scalar.ph1404.preheader

scalar.ph1404.preheader:                          ; preds = %middle.block1403, %vector.memcheck1393, %.lr.ph1020
  %indvars.iv1170.ph = phi i64 [ 1, %vector.memcheck1393 ], [ 1, %.lr.ph1020 ], [ %ind.end1409, %middle.block1403 ]
  %270 = and i64 %indvars.iv1176, 1
  %lcmp.mod1549.not.not = icmp eq i64 %270, 0
  br i1 %lcmp.mod1549.not.not, label %scalar.ph1404.prol, label %scalar.ph1404.prol.loopexit

scalar.ph1404.prol:                               ; preds = %scalar.ph1404.preheader
  %gep1288.prol = getelementptr double, ptr %invariant.gep1287, i64 %indvars.iv1170.ph
  %271 = load double, ptr %gep1288.prol, align 8, !tbaa !9
  %gep1290.prol = getelementptr double, ptr %invariant.gep1289, i64 %indvars.iv1170.ph
  %272 = load double, ptr %gep1290.prol, align 8, !tbaa !9
  %273 = call double @llvm.fmuladd.f64(double %262, double %271, double %272)
  store double %273, ptr %gep1288.prol, align 8, !tbaa !9
  store double %271, ptr %gep1290.prol, align 8, !tbaa !9
  %indvars.iv.next1171.prol = add nuw nsw i64 %indvars.iv1170.ph, 1
  br label %scalar.ph1404.prol.loopexit

scalar.ph1404.prol.loopexit:                      ; preds = %scalar.ph1404.prol, %scalar.ph1404.preheader
  %indvars.iv1170.unr = phi i64 [ %indvars.iv1170.ph, %scalar.ph1404.preheader ], [ %indvars.iv.next1171.prol, %scalar.ph1404.prol ]
  %274 = icmp eq i64 %232, %indvars.iv1170.ph
  br i1 %274, label %.loopexit890, label %scalar.ph1404

scalar.ph1404:                                    ; preds = %scalar.ph1404.prol.loopexit, %scalar.ph1404
  %indvars.iv1170 = phi i64 [ %indvars.iv.next1171.1, %scalar.ph1404 ], [ %indvars.iv1170.unr, %scalar.ph1404.prol.loopexit ]
  %gep1288 = getelementptr double, ptr %invariant.gep1287, i64 %indvars.iv1170
  %275 = load double, ptr %gep1288, align 8, !tbaa !9
  %gep1290 = getelementptr double, ptr %invariant.gep1289, i64 %indvars.iv1170
  %276 = load double, ptr %gep1290, align 8, !tbaa !9
  %277 = call double @llvm.fmuladd.f64(double %262, double %275, double %276)
  store double %277, ptr %gep1288, align 8, !tbaa !9
  store double %275, ptr %gep1290, align 8, !tbaa !9
  %indvars.iv.next1171 = add nuw nsw i64 %indvars.iv1170, 1
  %gep1288.1 = getelementptr double, ptr %invariant.gep1287, i64 %indvars.iv.next1171
  %278 = load double, ptr %gep1288.1, align 8, !tbaa !9
  %gep1290.1 = getelementptr double, ptr %invariant.gep1289, i64 %indvars.iv.next1171
  %279 = load double, ptr %gep1290.1, align 8, !tbaa !9
  %280 = call double @llvm.fmuladd.f64(double %262, double %278, double %279)
  store double %280, ptr %gep1288.1, align 8, !tbaa !9
  store double %278, ptr %gep1290.1, align 8, !tbaa !9
  %indvars.iv.next1171.1 = add nuw nsw i64 %indvars.iv1170, 2
  %exitcond1175.not.1 = icmp eq i64 %indvars.iv.next1171.1, %indvars.iv1176
  br i1 %exitcond1175.not.1, label %.loopexit890, label %scalar.ph1404, !llvm.loop !35

281:                                              ; preds = %.lr.ph1023
  %282 = fcmp oeq double %253, 0.000000e+00
  br i1 %282, label %283, label %285

283:                                              ; preds = %281
  %284 = load double, ptr %12, align 8, !tbaa !9
  store double %284, ptr %252, align 8, !tbaa !9
  br label %285

285:                                              ; preds = %283, %281
  %286 = phi double [ %284, %283 ], [ %253, %281 ]
  %287 = fdiv double %247, %286
  %288 = fcmp une double %287, 0.000000e+00
  br i1 %288, label %.lr.ph1016, label %.loopexit890

.lr.ph1016:                                       ; preds = %285
  store i32 %indvars1178, ptr %21, align 4, !tbaa !5
  %289 = mul nsw i64 %indvars.iv.next1177, %186
  %290 = fneg double %287
  %invariant.gep1283 = getelementptr double, ptr %40, i64 %248
  %invariant.gep1285 = getelementptr double, ptr %40, i64 %289
  %min.iters.check1432 = icmp ult i64 %236, 4
  br i1 %min.iters.check1432, label %scalar.ph1431.preheader, label %vector.memcheck1422

vector.memcheck1422:                              ; preds = %.lr.ph1016
  %bound01427 = icmp ult ptr %scevgep1423, %scevgep1426
  %bound11428 = icmp ult ptr %scevgep1425, %scevgep1424
  %found.conflict1429 = and i1 %bound01427, %bound11428
  br i1 %found.conflict1429, label %scalar.ph1431.preheader, label %vector.ph1433

vector.ph1433:                                    ; preds = %vector.memcheck1422
  %n.vec1435 = and i64 %236, -4
  %ind.end1436 = or disjoint i64 %n.vec1435, 1
  %broadcast.splatinsert1445 = insertelement <2 x double> poison, double %290, i64 0
  %broadcast.splat1446 = shufflevector <2 x double> %broadcast.splatinsert1445, <2 x double> poison, <2 x i32> zeroinitializer
  br label %vector.body1438

vector.body1438:                                  ; preds = %vector.body1438, %vector.ph1433
  %index1439 = phi i64 [ 0, %vector.ph1433 ], [ %index.next1447, %vector.body1438 ]
  %offset.idx1440 = or disjoint i64 %index1439, 1
  %291 = getelementptr double, ptr %invariant.gep1283, i64 %offset.idx1440
  %292 = getelementptr i8, ptr %291, i64 16
  %wide.load1441 = load <2 x double>, ptr %291, align 8, !tbaa !9, !alias.scope !36
  %wide.load1442 = load <2 x double>, ptr %292, align 8, !tbaa !9, !alias.scope !36
  %293 = getelementptr double, ptr %invariant.gep1285, i64 %offset.idx1440
  %294 = getelementptr i8, ptr %293, i64 16
  %wide.load1443 = load <2 x double>, ptr %293, align 8, !tbaa !9, !alias.scope !39, !noalias !36
  %wide.load1444 = load <2 x double>, ptr %294, align 8, !tbaa !9, !alias.scope !39, !noalias !36
  %295 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %broadcast.splat1446, <2 x double> %wide.load1441, <2 x double> %wide.load1443)
  %296 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %broadcast.splat1446, <2 x double> %wide.load1442, <2 x double> %wide.load1444)
  store <2 x double> %295, ptr %293, align 8, !tbaa !9, !alias.scope !39, !noalias !36
  store <2 x double> %296, ptr %294, align 8, !tbaa !9, !alias.scope !39, !noalias !36
  %index.next1447 = add nuw i64 %index1439, 4
  %297 = icmp eq i64 %index.next1447, %n.vec1435
  br i1 %297, label %middle.block1430, label %vector.body1438, !llvm.loop !41

middle.block1430:                                 ; preds = %vector.body1438
  %cmp.n1448 = icmp eq i64 %236, %n.vec1435
  br i1 %cmp.n1448, label %.loopexit890, label %scalar.ph1431.preheader

scalar.ph1431.preheader:                          ; preds = %middle.block1430, %vector.memcheck1422, %.lr.ph1016
  %indvars.iv1162.ph = phi i64 [ 1, %vector.memcheck1422 ], [ 1, %.lr.ph1016 ], [ %ind.end1436, %middle.block1430 ]
  %298 = and i64 %indvars.iv1176, 1
  %lcmp.mod1546.not.not = icmp eq i64 %298, 0
  br i1 %lcmp.mod1546.not.not, label %scalar.ph1431.prol, label %scalar.ph1431.prol.loopexit

scalar.ph1431.prol:                               ; preds = %scalar.ph1431.preheader
  %gep1284.prol = getelementptr double, ptr %invariant.gep1283, i64 %indvars.iv1162.ph
  %299 = load double, ptr %gep1284.prol, align 8, !tbaa !9
  %gep1286.prol = getelementptr double, ptr %invariant.gep1285, i64 %indvars.iv1162.ph
  %300 = load double, ptr %gep1286.prol, align 8, !tbaa !9
  %301 = call double @llvm.fmuladd.f64(double %290, double %299, double %300)
  store double %301, ptr %gep1286.prol, align 8, !tbaa !9
  %indvars.iv.next1163.prol = add nuw nsw i64 %indvars.iv1162.ph, 1
  br label %scalar.ph1431.prol.loopexit

scalar.ph1431.prol.loopexit:                      ; preds = %scalar.ph1431.prol, %scalar.ph1431.preheader
  %indvars.iv1162.unr = phi i64 [ %indvars.iv1162.ph, %scalar.ph1431.preheader ], [ %indvars.iv.next1163.prol, %scalar.ph1431.prol ]
  %302 = icmp eq i64 %234, %indvars.iv1162.ph
  br i1 %302, label %.loopexit890, label %scalar.ph1431

scalar.ph1431:                                    ; preds = %scalar.ph1431.prol.loopexit, %scalar.ph1431
  %indvars.iv1162 = phi i64 [ %indvars.iv.next1163.1, %scalar.ph1431 ], [ %indvars.iv1162.unr, %scalar.ph1431.prol.loopexit ]
  %gep1284 = getelementptr double, ptr %invariant.gep1283, i64 %indvars.iv1162
  %303 = load double, ptr %gep1284, align 8, !tbaa !9
  %gep1286 = getelementptr double, ptr %invariant.gep1285, i64 %indvars.iv1162
  %304 = load double, ptr %gep1286, align 8, !tbaa !9
  %305 = call double @llvm.fmuladd.f64(double %290, double %303, double %304)
  store double %305, ptr %gep1286, align 8, !tbaa !9
  %indvars.iv.next1163 = add nuw nsw i64 %indvars.iv1162, 1
  %gep1284.1 = getelementptr double, ptr %invariant.gep1283, i64 %indvars.iv.next1163
  %306 = load double, ptr %gep1284.1, align 8, !tbaa !9
  %gep1286.1 = getelementptr double, ptr %invariant.gep1285, i64 %indvars.iv.next1163
  %307 = load double, ptr %gep1286.1, align 8, !tbaa !9
  %308 = call double @llvm.fmuladd.f64(double %290, double %306, double %307)
  store double %308, ptr %gep1286.1, align 8, !tbaa !9
  %indvars.iv.next1163.1 = add nuw nsw i64 %indvars.iv1162, 2
  %exitcond1167.not.1 = icmp eq i64 %indvars.iv.next1163.1, %indvars.iv1176
  br i1 %exitcond1167.not.1, label %.loopexit890, label %scalar.ph1431, !llvm.loop !42

.loopexit890:                                     ; preds = %scalar.ph1431.prol.loopexit, %scalar.ph1431, %scalar.ph1404.prol.loopexit, %scalar.ph1404, %middle.block1430, %middle.block1403, %285
  %309 = icmp sgt i64 %indvars.iv1176, 2
  %indvar.next1395 = add i64 %indvar1394, 1
  br i1 %309, label %.lr.ph1023, label %._crit_edge1024, !llvm.loop !43

._crit_edge1024:                                  ; preds = %.loopexit890
  store double %253, ptr %24, align 8, !tbaa !9
  br label %310

310:                                              ; preds = %._crit_edge1024, %184
  %311 = load double, ptr %9, align 8, !tbaa !9
  %312 = fcmp oeq double %311, 0.000000e+00
  br i1 %312, label %.sink.split, label %314

.sink.split:                                      ; preds = %310, %._crit_edge1200
  %.sink1291 = phi ptr [ %181, %._crit_edge1200 ], [ %9, %310 ]
  %storemerge.ph = phi i8 [ 78, %._crit_edge1200 ], [ 84, %310 ]
  %313 = load double, ptr %12, align 8, !tbaa !9
  store double %313, ptr %.sink1291, align 8, !tbaa !9
  br label %314

314:                                              ; preds = %.sink.split, %310, %._crit_edge1200
  %storemerge = phi i8 [ 78, %._crit_edge1200 ], [ 84, %310 ], [ %storemerge.ph, %.sink.split ]
  store i8 %storemerge, ptr %28, align 1, !tbaa !44
  store i8 78, ptr %31, align 1, !tbaa !44
  store i32 %125, ptr %21, align 4, !tbaa !5
  %.not8841033 = icmp slt i32 %125, 1
  br i1 %.not8841033, label %._crit_edge1037, label %.lr.ph1036

.lr.ph1036:                                       ; preds = %314
  %315 = fadd double %44, 1.000000e+00
  br label %316

316:                                              ; preds = %.lr.ph1036, %._crit_edge1030
  %.01034 = phi i32 [ 1, %.lr.ph1036 ], [ %337, %._crit_edge1030 ]
  call void @dlatrs_(ptr noundef nonnull @.str, ptr noundef nonnull %28, ptr noundef nonnull @.str.1, ptr noundef nonnull %31, ptr noundef nonnull %2, ptr noundef %9, ptr noundef nonnull %10, ptr noundef %7, ptr noundef nonnull %27, ptr noundef %11, ptr noundef nonnull %26) #7
  store i8 89, ptr %31, align 1, !tbaa !44
  %317 = call double @dasum_(ptr noundef nonnull %2, ptr noundef %7, ptr noundef nonnull @c__1) #7
  %318 = load double, ptr %27, align 8, !tbaa !9
  %319 = fmul double %45, %318
  %320 = fcmp ult double %317, %319
  br i1 %320, label %321, label %.loopexit

321:                                              ; preds = %316
  %322 = load double, ptr %12, align 8, !tbaa !9
  %323 = fdiv double %322, %315
  store double %322, ptr %7, align 8, !tbaa !9
  %324 = load i32, ptr %2, align 4, !tbaa !5
  %.not8861026 = icmp slt i32 %324, 2
  br i1 %.not8861026, label %._crit_edge1030, label %.lr.ph1029.preheader

.lr.ph1029.preheader:                             ; preds = %321
  %325 = add nuw i32 %324, 1
  %wide.trip.count1184 = zext i32 %325 to i64
  %326 = add nsw i64 %wide.trip.count1184, -2
  %min.iters.check1451 = icmp ult i64 %326, 4
  br i1 %min.iters.check1451, label %.lr.ph1029.preheader1512, label %vector.ph1452

vector.ph1452:                                    ; preds = %.lr.ph1029.preheader
  %n.vec1454 = and i64 %326, -4
  %ind.end1455 = or disjoint i64 %n.vec1454, 2
  %broadcast.splatinsert1460 = insertelement <2 x double> poison, double %323, i64 0
  %broadcast.splat1461 = shufflevector <2 x double> %broadcast.splatinsert1460, <2 x double> poison, <2 x i32> zeroinitializer
  br label %vector.body1457

vector.body1457:                                  ; preds = %vector.body1457, %vector.ph1452
  %index1458 = phi i64 [ 0, %vector.ph1452 ], [ %index.next1462, %vector.body1457 ]
  %offset.idx1459 = or disjoint i64 %index1458, 2
  %327 = getelementptr inbounds double, ptr %36, i64 %offset.idx1459
  %328 = getelementptr inbounds i8, ptr %327, i64 16
  store <2 x double> %broadcast.splat1461, ptr %327, align 8, !tbaa !9
  store <2 x double> %broadcast.splat1461, ptr %328, align 8, !tbaa !9
  %index.next1462 = add nuw i64 %index1458, 4
  %329 = icmp eq i64 %index.next1462, %n.vec1454
  br i1 %329, label %middle.block1449, label %vector.body1457, !llvm.loop !45

middle.block1449:                                 ; preds = %vector.body1457
  %cmp.n1463 = icmp eq i64 %326, %n.vec1454
  br i1 %cmp.n1463, label %._crit_edge1030.loopexit, label %.lr.ph1029.preheader1512

.lr.ph1029.preheader1512:                         ; preds = %middle.block1449, %.lr.ph1029.preheader
  %indvars.iv1180.ph = phi i64 [ 2, %.lr.ph1029.preheader ], [ %ind.end1455, %middle.block1449 ]
  br label %.lr.ph1029

.lr.ph1029:                                       ; preds = %.lr.ph1029.preheader1512, %.lr.ph1029
  %indvars.iv1180 = phi i64 [ %indvars.iv.next1181, %.lr.ph1029 ], [ %indvars.iv1180.ph, %.lr.ph1029.preheader1512 ]
  %330 = getelementptr inbounds double, ptr %36, i64 %indvars.iv1180
  store double %323, ptr %330, align 8, !tbaa !9
  %indvars.iv.next1181 = add nuw nsw i64 %indvars.iv1180, 1
  %exitcond1185.not = icmp eq i64 %indvars.iv.next1181, %wide.trip.count1184
  br i1 %exitcond1185.not, label %._crit_edge1030.loopexit, label %.lr.ph1029, !llvm.loop !46

._crit_edge1030.loopexit:                         ; preds = %.lr.ph1029, %middle.block1449
  %.pre1193 = load double, ptr %12, align 8, !tbaa !9
  br label %._crit_edge1030

._crit_edge1030:                                  ; preds = %._crit_edge1030.loopexit, %321
  %331 = phi double [ %.pre1193, %._crit_edge1030.loopexit ], [ %322, %321 ]
  %332 = sub nsw i32 %324, %.01034
  %333 = sext i32 %332 to i64
  %gep1032 = getelementptr double, ptr %7, i64 %333
  %334 = load double, ptr %gep1032, align 8, !tbaa !9
  %335 = fneg double %331
  %336 = call double @llvm.fmuladd.f64(double %335, double %44, double %334)
  store double %336, ptr %gep1032, align 8, !tbaa !9
  %337 = add nuw nsw i32 %.01034, 1
  %338 = load i32, ptr %21, align 4, !tbaa !5
  %.not884.not = icmp slt i32 %.01034, %338
  br i1 %.not884.not, label %316, label %._crit_edge1037, !llvm.loop !47

._crit_edge1037:                                  ; preds = %._crit_edge1030, %314
  store i32 1, ptr %15, align 4, !tbaa !5
  br label %.loopexit

.loopexit:                                        ; preds = %316, %._crit_edge1037
  %339 = call i32 @idamax_(ptr noundef nonnull %2, ptr noundef %7, ptr noundef nonnull @c__1) #7
  %340 = sext i32 %339 to i64
  %341 = getelementptr inbounds double, ptr %36, i64 %340
  %342 = load double, ptr %341, align 8, !tbaa !9
  store double %342, ptr %24, align 8, !tbaa !9
  %343 = fcmp oge double %342, 0.000000e+00
  %344 = fneg double %342
  %345 = select i1 %343, double %342, double %344
  %346 = fdiv double 1.000000e+00, %345
  store double %346, ptr %25, align 8, !tbaa !9
  call void @dscal_(ptr noundef nonnull %2, ptr noundef nonnull %25, ptr noundef %7, ptr noundef nonnull @c__1) #7
  br label %905

347:                                              ; preds = %105
  br i1 %.not878, label %378, label %348

348:                                              ; preds = %347
  br i1 %.not902, label %.loopexit899, label %.lr.ph910.preheader

.lr.ph910.preheader:                              ; preds = %348
  %349 = add nuw i32 %52, 1
  %wide.trip.count = zext i32 %349 to i64
  %350 = zext nneg i32 %52 to i64
  %min.iters.check1323 = icmp ult i32 %52, 22
  br i1 %min.iters.check1323, label %.lr.ph910.preheader1531, label %vector.memcheck1307

vector.memcheck1307:                              ; preds = %.lr.ph910.preheader
  %351 = shl nuw nsw i64 %wide.trip.count, 3
  %352 = add nsw i64 %351, -8
  %scevgep1308 = getelementptr i8, ptr %7, i64 %352
  %scevgep1309 = getelementptr i8, ptr %8, i64 %352
  %scevgep1310 = getelementptr i8, ptr %12, i64 8
  %bound01311 = icmp ugt ptr %scevgep1309, %7
  %bound11312 = icmp ugt ptr %scevgep1308, %8
  %found.conflict1313 = and i1 %bound01311, %bound11312
  %bound01314 = icmp ugt ptr %scevgep1310, %7
  %bound11315 = icmp ugt ptr %scevgep1308, %12
  %found.conflict1316 = and i1 %bound01314, %bound11315
  %conflict.rdx = or i1 %found.conflict1313, %found.conflict1316
  %bound01317 = icmp ugt ptr %scevgep1310, %8
  %bound11318 = icmp ugt ptr %scevgep1309, %12
  %found.conflict1319 = and i1 %bound01317, %bound11318
  %conflict.rdx1320 = or i1 %conflict.rdx, %found.conflict1319
  br i1 %conflict.rdx1320, label %.lr.ph910.preheader1531, label %vector.ph1324

vector.ph1324:                                    ; preds = %vector.memcheck1307
  %n.vec1326 = and i64 %350, 2147483644
  %ind.end1327 = or disjoint i64 %n.vec1326, 1
  %353 = load double, ptr %12, align 8, !tbaa !9, !alias.scope !48
  %broadcast.splatinsert1332 = insertelement <2 x double> poison, double %353, i64 0
  %broadcast.splat1333 = shufflevector <2 x double> %broadcast.splatinsert1332, <2 x double> poison, <2 x i32> zeroinitializer
  br label %vector.body1329

vector.body1329:                                  ; preds = %vector.body1329, %vector.ph1324
  %index1330 = phi i64 [ 0, %vector.ph1324 ], [ %index.next1334, %vector.body1329 ]
  %354 = getelementptr double, ptr %7, i64 %index1330
  %355 = getelementptr inbounds i8, ptr %354, i64 16
  store <2 x double> %broadcast.splat1333, ptr %354, align 8, !tbaa !9, !alias.scope !51, !noalias !53
  store <2 x double> %broadcast.splat1333, ptr %355, align 8, !tbaa !9, !alias.scope !51, !noalias !53
  %356 = getelementptr double, ptr %8, i64 %index1330
  %357 = getelementptr inbounds i8, ptr %356, i64 16
  store <2 x double> zeroinitializer, ptr %356, align 8, !tbaa !9, !alias.scope !55, !noalias !48
  store <2 x double> zeroinitializer, ptr %357, align 8, !tbaa !9, !alias.scope !55, !noalias !48
  %index.next1334 = add nuw i64 %index1330, 4
  %358 = icmp eq i64 %index.next1334, %n.vec1326
  br i1 %358, label %middle.block1321, label %vector.body1329, !llvm.loop !56

middle.block1321:                                 ; preds = %vector.body1329
  %cmp.n1335 = icmp eq i64 %n.vec1326, %350
  br i1 %cmp.n1335, label %.loopexit899, label %.lr.ph910.preheader1531

.lr.ph910.preheader1531:                          ; preds = %middle.block1321, %vector.memcheck1307, %.lr.ph910.preheader
  %indvars.iv1058.ph = phi i64 [ 1, %vector.memcheck1307 ], [ 1, %.lr.ph910.preheader ], [ %ind.end1327, %middle.block1321 ]
  %359 = sub nsw i64 %wide.trip.count, %indvars.iv1058.ph
  %360 = zext nneg i32 %52 to i64
  %361 = sub nsw i64 %360, %indvars.iv1058.ph
  %xtraiter1532 = and i64 %359, 3
  %lcmp.mod1533.not = icmp eq i64 %xtraiter1532, 0
  br i1 %lcmp.mod1533.not, label %.lr.ph910.prol.loopexit, label %.lr.ph910.prol

.lr.ph910.prol:                                   ; preds = %.lr.ph910.preheader1531, %.lr.ph910.prol
  %indvars.iv1058.prol = phi i64 [ %indvars.iv.next1059.prol, %.lr.ph910.prol ], [ %indvars.iv1058.ph, %.lr.ph910.preheader1531 ]
  %prol.iter1534 = phi i64 [ %prol.iter1534.next, %.lr.ph910.prol ], [ 0, %.lr.ph910.preheader1531 ]
  %362 = load double, ptr %12, align 8, !tbaa !9
  %363 = getelementptr inbounds double, ptr %36, i64 %indvars.iv1058.prol
  store double %362, ptr %363, align 8, !tbaa !9
  %364 = getelementptr inbounds double, ptr %37, i64 %indvars.iv1058.prol
  store double 0.000000e+00, ptr %364, align 8, !tbaa !9
  %indvars.iv.next1059.prol = add nuw nsw i64 %indvars.iv1058.prol, 1
  %prol.iter1534.next = add i64 %prol.iter1534, 1
  %prol.iter1534.cmp.not = icmp eq i64 %prol.iter1534.next, %xtraiter1532
  br i1 %prol.iter1534.cmp.not, label %.lr.ph910.prol.loopexit, label %.lr.ph910.prol, !llvm.loop !57

.lr.ph910.prol.loopexit:                          ; preds = %.lr.ph910.prol, %.lr.ph910.preheader1531
  %indvars.iv1058.unr = phi i64 [ %indvars.iv1058.ph, %.lr.ph910.preheader1531 ], [ %indvars.iv.next1059.prol, %.lr.ph910.prol ]
  %365 = icmp ult i64 %361, 3
  br i1 %365, label %.loopexit899, label %.lr.ph910

.lr.ph910:                                        ; preds = %.lr.ph910.prol.loopexit, %.lr.ph910
  %indvars.iv1058 = phi i64 [ %indvars.iv.next1059.3, %.lr.ph910 ], [ %indvars.iv1058.unr, %.lr.ph910.prol.loopexit ]
  %366 = load double, ptr %12, align 8, !tbaa !9
  %367 = getelementptr inbounds double, ptr %36, i64 %indvars.iv1058
  store double %366, ptr %367, align 8, !tbaa !9
  %368 = getelementptr inbounds double, ptr %37, i64 %indvars.iv1058
  store double 0.000000e+00, ptr %368, align 8, !tbaa !9
  %369 = load double, ptr %12, align 8, !tbaa !9
  %370 = getelementptr double, ptr %7, i64 %indvars.iv1058
  store double %369, ptr %370, align 8, !tbaa !9
  %371 = getelementptr double, ptr %8, i64 %indvars.iv1058
  store double 0.000000e+00, ptr %371, align 8, !tbaa !9
  %indvars.iv.next1059.1 = add nuw nsw i64 %indvars.iv1058, 2
  %372 = load double, ptr %12, align 8, !tbaa !9
  %373 = getelementptr inbounds double, ptr %36, i64 %indvars.iv.next1059.1
  store double %372, ptr %373, align 8, !tbaa !9
  %374 = getelementptr inbounds double, ptr %37, i64 %indvars.iv.next1059.1
  store double 0.000000e+00, ptr %374, align 8, !tbaa !9
  %indvars.iv.next1059.2 = add nuw nsw i64 %indvars.iv1058, 3
  %375 = load double, ptr %12, align 8, !tbaa !9
  %376 = getelementptr inbounds double, ptr %36, i64 %indvars.iv.next1059.2
  store double %375, ptr %376, align 8, !tbaa !9
  %377 = getelementptr inbounds double, ptr %37, i64 %indvars.iv.next1059.2
  store double 0.000000e+00, ptr %377, align 8, !tbaa !9
  %indvars.iv.next1059.3 = add nuw nsw i64 %indvars.iv1058, 4
  %exitcond1061.not.3 = icmp eq i64 %indvars.iv.next1059.3, %wide.trip.count
  br i1 %exitcond1061.not.3, label %.loopexit899, label %.lr.ph910, !llvm.loop !58

378:                                              ; preds = %347
  %379 = tail call double @dnrm2_(ptr noundef nonnull %2, ptr noundef %7, ptr noundef nonnull @c__1) #7
  store double %379, ptr %24, align 8, !tbaa !9
  %380 = tail call double @dnrm2_(ptr noundef nonnull %2, ptr noundef %8, ptr noundef nonnull @c__1) #7
  store double %380, ptr %25, align 8, !tbaa !9
  %381 = call double @dlapy2_(ptr noundef nonnull %24, ptr noundef nonnull %25) #7
  %382 = load double, ptr %12, align 8, !tbaa !9
  %383 = fmul double %44, %382
  %384 = fcmp oge double %381, %51
  %385 = select i1 %384, double %381, double %51
  %386 = fdiv double %383, %385
  store double %386, ptr %32, align 8, !tbaa !9
  call void @dscal_(ptr noundef nonnull %2, ptr noundef nonnull %32, ptr noundef %7, ptr noundef nonnull @c__1) #7
  call void @dscal_(ptr noundef nonnull %2, ptr noundef nonnull %32, ptr noundef %8, ptr noundef nonnull @c__1) #7
  br label %.loopexit899

.loopexit899:                                     ; preds = %.lr.ph910.prol.loopexit, %.lr.ph910, %middle.block1321, %348, %378
  %387 = load i32, ptr %0, align 4, !tbaa !5
  %.not863.not = icmp eq i32 %387, 0
  %388 = load double, ptr %6, align 8, !tbaa !9
  br i1 %.not863.not, label %533, label %389

389:                                              ; preds = %.loopexit899
  %390 = fneg double %388
  %391 = sext i32 %38 to i64
  %392 = getelementptr double, ptr %40, i64 %391
  %393 = getelementptr i8, ptr %392, i64 16
  store double %390, ptr %393, align 8, !tbaa !9
  %394 = load i32, ptr %2, align 4, !tbaa !5
  %.not867911 = icmp slt i32 %394, 2
  br i1 %.not867911, label %._crit_edge930, label %.lr.ph929.preheader

.lr.ph929.preheader:                              ; preds = %389
  %395 = add i32 %38, 3
  %396 = sext i32 %395 to i64
  %397 = add nsw i64 %39, %396
  %398 = shl nsw i64 %397, 3
  %scevgep = getelementptr i8, ptr %9, i64 %398
  %399 = add nsw i32 %394, -1
  %400 = zext nneg i32 %399 to i64
  %401 = shl nuw nsw i64 %400, 3
  call void @llvm.memset.p0.i64(ptr align 8 %scevgep, i8 0, i64 %401, i1 false), !tbaa !9
  store i32 %399, ptr %21, align 4, !tbaa !5
  %402 = sext i32 %33 to i64
  %invariant.gep1557 = getelementptr i8, ptr %9, i64 16
  %invariant.gep1559 = getelementptr i8, ptr %9, i64 16
  %ident.check1492.not = icmp eq i32 %38, 1
  %ident.check1503.not = icmp eq i32 %38, 1
  br label %.lr.ph929

.lr.ph929:                                        ; preds = %.lr.ph929.preheader, %501
  %indvar1496 = phi i64 [ 0, %.lr.ph929.preheader ], [ %indvar.next1497, %501 ]
  %indvars.iv1079 = phi i64 [ 1, %.lr.ph929.preheader ], [ %indvars.iv.next1080, %501 ]
  %indvars.iv1065 = phi i64 [ 2, %.lr.ph929.preheader ], [ %indvars.iv.next1066, %501 ]
  %403 = shl nuw nsw i64 %indvar1496, 4
  %gep1558 = getelementptr i8, ptr %invariant.gep1557, i64 %403
  %404 = shl nuw nsw i64 %indvar1496, 4
  %gep1560 = getelementptr i8, ptr %invariant.gep1559, i64 %404
  %indvars1081 = trunc i64 %indvars.iv1079 to i32
  %405 = mul nsw i64 %indvars.iv1079, %391
  %406 = mul nsw i32 %38, %indvars1081
  %407 = sext i32 %406 to i64
  %408 = getelementptr double, ptr %40, i64 %indvars.iv1079
  %409 = getelementptr double, ptr %408, i64 %407
  %indvars.iv.next1080 = add nuw nsw i64 %indvars.iv1079, 1
  %indvars = trunc i64 %indvars.iv.next1080 to i32
  %410 = getelementptr double, ptr %40, i64 %indvars.iv.next1080
  %411 = getelementptr double, ptr %410, i64 %405
  %412 = call double @dlapy2_(ptr noundef %409, ptr noundef %411) #7
  %413 = mul nsw i64 %indvars.iv1079, %402
  %414 = getelementptr double, ptr %35, i64 %indvars.iv.next1080
  %415 = getelementptr double, ptr %414, i64 %413
  %416 = load double, ptr %415, align 8, !tbaa !9
  %417 = fcmp oge double %416, 0.000000e+00
  %418 = fneg double %416
  %419 = select i1 %417, double %416, double %418
  %420 = fcmp olt double %412, %419
  br i1 %420, label %421, label %459

421:                                              ; preds = %.lr.ph929
  %422 = load double, ptr %409, align 8, !tbaa !9
  %423 = fdiv double %422, %416
  store double %423, ptr %30, align 8, !tbaa !9
  %424 = load double, ptr %411, align 8, !tbaa !9
  %425 = fdiv double %424, %416
  store double %425, ptr %29, align 8, !tbaa !9
  store double %416, ptr %409, align 8, !tbaa !9
  store double 0.000000e+00, ptr %411, align 8, !tbaa !9
  %426 = load i32, ptr %2, align 4, !tbaa !5
  %427 = sext i32 %426 to i64
  %.not877921.not = icmp slt i64 %indvars.iv1079, %427
  %428 = fneg double %425
  br i1 %.not877921.not, label %.lver.check1504, label %.._crit_edge925_crit_edge

.._crit_edge925_crit_edge:                        ; preds = %421
  %.pre1205 = mul nsw i64 %indvars.iv.next1080, %391
  br label %._crit_edge925

.lver.check1504:                                  ; preds = %421
  %429 = fneg double %423
  %430 = mul nsw i64 %indvars.iv.next1080, %391
  %431 = add i32 %426, 1
  %wide.trip.count1077 = zext i32 %431 to i64
  %invariant.gep1235 = getelementptr double, ptr %40, i64 %indvars.iv.next1080
  %invariant.gep1237 = getelementptr double, ptr %40, i64 %indvars.iv1079
  %invariant.gep1239 = getelementptr double, ptr %40, i64 %405
  %invariant.gep1241 = getelementptr double, ptr %40, i64 %430
  br i1 %ident.check1503.not, label %.ph1505, label %.ph1505.lver.orig

.ph1505.lver.orig:                                ; preds = %.lver.check1504, %.ph1505.lver.orig
  %indvars.iv1074.lver.orig = phi i64 [ %indvars.iv.next1075.lver.orig, %.ph1505.lver.orig ], [ %indvars.iv1065, %.lver.check1504 ]
  %432 = mul nsw i64 %indvars.iv1074.lver.orig, %391
  %gep1236.lver.orig = getelementptr double, ptr %invariant.gep1235, i64 %432
  %433 = load double, ptr %gep1236.lver.orig, align 8, !tbaa !9
  %gep1238.lver.orig = getelementptr double, ptr %invariant.gep1237, i64 %432
  %434 = load double, ptr %gep1238.lver.orig, align 8, !tbaa !9
  %435 = call double @llvm.fmuladd.f64(double %429, double %433, double %434)
  store double %435, ptr %gep1236.lver.orig, align 8, !tbaa !9
  %indvars.iv.next1075.lver.orig = add nuw nsw i64 %indvars.iv1074.lver.orig, 1
  %gep1240.lver.orig = getelementptr double, ptr %invariant.gep1239, i64 %indvars.iv.next1075.lver.orig
  %436 = load double, ptr %gep1240.lver.orig, align 8, !tbaa !9
  %437 = call double @llvm.fmuladd.f64(double %428, double %433, double %436)
  %gep1242.lver.orig = getelementptr double, ptr %invariant.gep1241, i64 %indvars.iv.next1075.lver.orig
  store double %437, ptr %gep1242.lver.orig, align 8, !tbaa !9
  store double %433, ptr %gep1238.lver.orig, align 8, !tbaa !9
  store double 0.000000e+00, ptr %gep1240.lver.orig, align 8, !tbaa !9
  %exitcond1078.not.lver.orig = icmp eq i64 %indvars.iv.next1075.lver.orig, %wide.trip.count1077
  br i1 %exitcond1078.not.lver.orig, label %._crit_edge925, label %.ph1505.lver.orig, !llvm.loop !59

.ph1505:                                          ; preds = %.lver.check1504
  %load_initial1508 = load double, ptr %gep1558, align 8
  br label %438

438:                                              ; preds = %.ph1505, %438
  %store_forwarded1509 = phi double [ %load_initial1508, %.ph1505 ], [ %443, %438 ]
  %indvars.iv1074 = phi i64 [ %indvars.iv1065, %.ph1505 ], [ %indvars.iv.next1075, %438 ]
  %439 = mul nuw nsw i64 %indvars.iv1074, %391
  %gep1236 = getelementptr double, ptr %invariant.gep1235, i64 %439
  %gep1238 = getelementptr double, ptr %invariant.gep1237, i64 %439
  %440 = load double, ptr %gep1238, align 8, !tbaa !9
  %441 = call double @llvm.fmuladd.f64(double %429, double %store_forwarded1509, double %440)
  store double %441, ptr %gep1236, align 8, !tbaa !9
  %indvars.iv.next1075 = add nuw nsw i64 %indvars.iv1074, 1
  %gep1240 = getelementptr double, ptr %invariant.gep1239, i64 %indvars.iv.next1075
  %442 = load double, ptr %gep1240, align 8, !tbaa !9
  %443 = call double @llvm.fmuladd.f64(double %428, double %store_forwarded1509, double %442)
  %gep1242 = getelementptr double, ptr %invariant.gep1241, i64 %indvars.iv.next1075
  store double %443, ptr %gep1242, align 8, !tbaa !9
  store double %store_forwarded1509, ptr %gep1238, align 8, !tbaa !9
  store double 0.000000e+00, ptr %gep1240, align 8, !tbaa !9
  %exitcond1078.not = icmp eq i64 %indvars.iv.next1075, %wide.trip.count1077
  br i1 %exitcond1078.not, label %._crit_edge925, label %438, !llvm.loop !59

._crit_edge925:                                   ; preds = %.ph1505.lver.orig, %438, %.._crit_edge925_crit_edge
  %.pre-phi1206 = phi i64 [ %.pre1205, %.._crit_edge925_crit_edge ], [ %430, %438 ], [ %430, %.ph1505.lver.orig ]
  %444 = load double, ptr %6, align 8, !tbaa !9
  %445 = fneg double %444
  %446 = add nuw nsw i64 %indvars.iv1079, 2
  %447 = add nsw i64 %446, %405
  %448 = getelementptr inbounds double, ptr %40, i64 %447
  store double %445, ptr %448, align 8, !tbaa !9
  %449 = load double, ptr %6, align 8, !tbaa !9
  %450 = getelementptr double, ptr %40, i64 %.pre-phi1206
  %451 = getelementptr double, ptr %450, i64 %indvars.iv.next1080
  %452 = load double, ptr %451, align 8, !tbaa !9
  %453 = call double @llvm.fmuladd.f64(double %428, double %449, double %452)
  store double %453, ptr %451, align 8, !tbaa !9
  %454 = load double, ptr %6, align 8, !tbaa !9
  %455 = getelementptr double, ptr %40, i64 %.pre-phi1206
  %456 = getelementptr double, ptr %455, i64 %446
  %457 = load double, ptr %456, align 8, !tbaa !9
  %458 = call double @llvm.fmuladd.f64(double %423, double %454, double %457)
  store double %458, ptr %456, align 8, !tbaa !9
  br label %501

459:                                              ; preds = %.lr.ph929
  %460 = fcmp oeq double %412, 0.000000e+00
  br i1 %460, label %461, label %._crit_edge1186

._crit_edge1186:                                  ; preds = %459
  %.pre = load double, ptr %411, align 8, !tbaa !9
  br label %464

461:                                              ; preds = %459
  %462 = load double, ptr %12, align 8, !tbaa !9
  store double %462, ptr %409, align 8, !tbaa !9
  store double 0.000000e+00, ptr %411, align 8, !tbaa !9
  %463 = load double, ptr %12, align 8, !tbaa !9
  br label %464

464:                                              ; preds = %._crit_edge1186, %461
  %465 = phi double [ 0.000000e+00, %461 ], [ %.pre, %._crit_edge1186 ]
  %.0831 = phi double [ %463, %461 ], [ %412, %._crit_edge1186 ]
  %466 = fdiv double %416, %.0831
  %467 = fdiv double %466, %.0831
  %468 = load double, ptr %409, align 8, !tbaa !9
  %469 = fmul double %468, %467
  store double %469, ptr %30, align 8, !tbaa !9
  %470 = fneg double %465
  %471 = fmul double %467, %470
  store double %471, ptr %29, align 8, !tbaa !9
  %472 = load i32, ptr %2, align 4, !tbaa !5
  %473 = sext i32 %472 to i64
  %.not876916.not = icmp slt i64 %indvars.iv1079, %473
  br i1 %.not876916.not, label %.lver.check1493, label %.._crit_edge920_crit_edge

.._crit_edge920_crit_edge:                        ; preds = %464
  %.pre1209 = mul nsw i64 %indvars.iv.next1080, %391
  br label %._crit_edge920

.lver.check1493:                                  ; preds = %464
  %474 = fneg double %469
  %475 = fneg double %471
  %476 = mul nsw i64 %indvars.iv.next1080, %391
  %477 = add i32 %472, 1
  %wide.trip.count1070 = zext i32 %477 to i64
  %invariant.gep1227 = getelementptr double, ptr %40, i64 %indvars.iv.next1080
  %invariant.gep1229 = getelementptr double, ptr %40, i64 %indvars.iv1079
  %invariant.gep1231 = getelementptr double, ptr %40, i64 %405
  %invariant.gep1233 = getelementptr double, ptr %40, i64 %476
  br i1 %ident.check1492.not, label %.ph1494, label %.ph1494.lver.orig

.ph1494.lver.orig:                                ; preds = %.lver.check1493, %.ph1494.lver.orig
  %indvars.iv1067.lver.orig = phi i64 [ %indvars.iv.next1068.lver.orig, %.ph1494.lver.orig ], [ %indvars.iv1065, %.lver.check1493 ]
  %478 = mul nsw i64 %indvars.iv1067.lver.orig, %391
  %gep1228.lver.orig = getelementptr double, ptr %invariant.gep1227, i64 %478
  %479 = load double, ptr %gep1228.lver.orig, align 8, !tbaa !9
  %gep1230.lver.orig = getelementptr double, ptr %invariant.gep1229, i64 %478
  %480 = load double, ptr %gep1230.lver.orig, align 8, !tbaa !9
  %481 = call double @llvm.fmuladd.f64(double %474, double %480, double %479)
  %indvars.iv.next1068.lver.orig = add nuw nsw i64 %indvars.iv1067.lver.orig, 1
  %gep1232.lver.orig = getelementptr double, ptr %invariant.gep1231, i64 %indvars.iv.next1068.lver.orig
  %482 = load double, ptr %gep1232.lver.orig, align 8, !tbaa !9
  %483 = call double @llvm.fmuladd.f64(double %471, double %482, double %481)
  store double %483, ptr %gep1228.lver.orig, align 8, !tbaa !9
  %484 = load double, ptr %gep1232.lver.orig, align 8, !tbaa !9
  %485 = fmul double %480, %475
  %486 = call double @llvm.fmuladd.f64(double %474, double %484, double %485)
  %gep1234.lver.orig = getelementptr double, ptr %invariant.gep1233, i64 %indvars.iv.next1068.lver.orig
  store double %486, ptr %gep1234.lver.orig, align 8, !tbaa !9
  %exitcond1071.not.lver.orig = icmp eq i64 %indvars.iv.next1068.lver.orig, %wide.trip.count1070
  br i1 %exitcond1071.not.lver.orig, label %._crit_edge920, label %.ph1494.lver.orig, !llvm.loop !60

.ph1494:                                          ; preds = %.lver.check1493
  %load_initial1499 = load double, ptr %gep1560, align 8
  br label %487

487:                                              ; preds = %.ph1494, %487
  %store_forwarded1500 = phi double [ %load_initial1499, %.ph1494 ], [ %494, %487 ]
  %indvars.iv1067 = phi i64 [ %indvars.iv1065, %.ph1494 ], [ %indvars.iv.next1068, %487 ]
  %488 = mul nuw nsw i64 %indvars.iv1067, %391
  %gep1228 = getelementptr double, ptr %invariant.gep1227, i64 %488
  %gep1230 = getelementptr double, ptr %invariant.gep1229, i64 %488
  %489 = load double, ptr %gep1230, align 8, !tbaa !9
  %490 = call double @llvm.fmuladd.f64(double %474, double %489, double %store_forwarded1500)
  %indvars.iv.next1068 = add nuw nsw i64 %indvars.iv1067, 1
  %gep1232 = getelementptr double, ptr %invariant.gep1231, i64 %indvars.iv.next1068
  %491 = call double @llvm.fmuladd.f64(double %471, double %store_forwarded1500, double %490)
  store double %491, ptr %gep1228, align 8, !tbaa !9
  %492 = load double, ptr %gep1232, align 8, !tbaa !9
  %493 = fmul double %489, %475
  %494 = call double @llvm.fmuladd.f64(double %474, double %492, double %493)
  %gep1234 = getelementptr double, ptr %invariant.gep1233, i64 %indvars.iv.next1068
  store double %494, ptr %gep1234, align 8, !tbaa !9
  %exitcond1071.not = icmp eq i64 %indvars.iv.next1068, %wide.trip.count1070
  br i1 %exitcond1071.not, label %._crit_edge920, label %487, !llvm.loop !60

._crit_edge920:                                   ; preds = %.ph1494.lver.orig, %487, %.._crit_edge920_crit_edge
  %.pre-phi1210 = phi i64 [ %.pre1209, %.._crit_edge920_crit_edge ], [ %476, %487 ], [ %476, %.ph1494.lver.orig ]
  %495 = load double, ptr %6, align 8, !tbaa !9
  %496 = add nuw nsw i64 %indvars.iv1079, 2
  %497 = getelementptr double, ptr %40, i64 %496
  %498 = getelementptr double, ptr %497, i64 %.pre-phi1210
  %499 = load double, ptr %498, align 8, !tbaa !9
  %500 = fsub double %499, %495
  store double %500, ptr %498, align 8, !tbaa !9
  %.pre1198 = add nsw i64 %496, %405
  br label %501

501:                                              ; preds = %._crit_edge920, %._crit_edge925
  %.pre-phi1199 = phi i64 [ %.pre1198, %._crit_edge920 ], [ %447, %._crit_edge925 ]
  %502 = phi i32 [ %472, %._crit_edge920 ], [ %426, %._crit_edge925 ]
  %503 = sub nsw i32 %502, %indvars1081
  store i32 %503, ptr %22, align 4, !tbaa !5
  store i32 %503, ptr %23, align 4, !tbaa !5
  %504 = mul nsw i32 %38, %indvars
  %505 = sext i32 %504 to i64
  %506 = getelementptr double, ptr %40, i64 %indvars.iv1079
  %507 = getelementptr double, ptr %506, i64 %505
  %508 = call double @dasum_(ptr noundef nonnull %22, ptr noundef %507, ptr noundef nonnull %10) #7
  %509 = getelementptr inbounds double, ptr %40, i64 %.pre-phi1199
  %510 = call double @dasum_(ptr noundef nonnull %23, ptr noundef %509, ptr noundef nonnull @c__1) #7
  %511 = fadd double %508, %510
  %512 = getelementptr inbounds double, ptr %41, i64 %indvars.iv1079
  store double %511, ptr %512, align 8, !tbaa !9
  %513 = load i32, ptr %21, align 4, !tbaa !5
  %514 = sext i32 %513 to i64
  %.not868.not = icmp slt i64 %indvars.iv1079, %514
  %indvars.iv.next1066 = add nuw nsw i64 %indvars.iv1065, 1
  %indvar.next1497 = add i64 %indvar1496, 1
  br i1 %.not868.not, label %.lr.ph929, label %._crit_edge930.loopexit, !llvm.loop !61

._crit_edge930.loopexit:                          ; preds = %501
  %.pre1187 = load i32, ptr %2, align 4, !tbaa !5
  br label %._crit_edge930

._crit_edge930:                                   ; preds = %389, %._crit_edge930.loopexit
  %515 = phi i32 [ %.pre1187, %._crit_edge930.loopexit ], [ %394, %389 ]
  %516 = add i32 %38, 1
  %517 = mul i32 %515, %516
  %518 = sext i32 %517 to i64
  %519 = getelementptr inbounds double, ptr %40, i64 %518
  %520 = load double, ptr %519, align 8, !tbaa !9
  %521 = fcmp oeq double %520, 0.000000e+00
  br i1 %521, label %522, label %530

522:                                              ; preds = %._crit_edge930
  %523 = add i32 %517, 1
  %524 = sext i32 %523 to i64
  %525 = getelementptr inbounds double, ptr %40, i64 %524
  %526 = load double, ptr %525, align 8, !tbaa !9
  %527 = fcmp oeq double %526, 0.000000e+00
  br i1 %527, label %528, label %530

528:                                              ; preds = %522
  %529 = load double, ptr %12, align 8, !tbaa !9
  store double %529, ptr %519, align 8, !tbaa !9
  br label %530

530:                                              ; preds = %528, %522, %._crit_edge930
  %531 = sext i32 %515 to i64
  %532 = getelementptr inbounds double, ptr %41, i64 %531
  store double 0.000000e+00, ptr %532, align 8, !tbaa !9
  br label %679

533:                                              ; preds = %.loopexit899
  %534 = load i32, ptr %2, align 4, !tbaa !5
  %535 = add nsw i32 %534, 1
  %536 = mul nsw i32 %534, %38
  %537 = add nsw i32 %535, %536
  %538 = sext i32 %537 to i64
  %539 = getelementptr inbounds double, ptr %40, i64 %538
  store double %388, ptr %539, align 8, !tbaa !9
  %540 = add nsw i32 %534, -1
  store i32 %540, ptr %21, align 4, !tbaa !5
  %.not864.not931 = icmp sgt i32 %534, 1
  br i1 %.not864.not931, label %.lr.ph934.preheader, label %._crit_edge947

.lr.ph934.preheader:                              ; preds = %533
  %541 = sext i32 %38 to i64
  %542 = zext nneg i32 %535 to i64
  %wide.trip.count1086 = zext nneg i32 %534 to i64
  %invariant.gep1243 = getelementptr double, ptr %40, i64 %542
  %543 = add nsw i64 %wide.trip.count1086, -1
  %min.iters.check1338 = icmp ugt i32 %534, 4
  %ident.check.not = icmp eq i32 %38, 1
  %or.cond = select i1 %min.iters.check1338, i1 %ident.check.not, i1 false
  br i1 %or.cond, label %vector.ph1339, label %.lr.ph934.preheader1528

.lr.ph934.preheader1528:                          ; preds = %middle.block1336, %.lr.ph934.preheader
  %indvars.iv1082.ph = phi i64 [ 1, %.lr.ph934.preheader ], [ %ind.end1342, %middle.block1336 ]
  %544 = sub nsw i64 %wide.trip.count1086, %indvars.iv1082.ph
  %xtraiter1535 = and i64 %544, 3
  %lcmp.mod1536.not = icmp eq i64 %xtraiter1535, 0
  br i1 %lcmp.mod1536.not, label %.lr.ph934.prol.loopexit, label %.lr.ph934.prol

.lr.ph934.prol:                                   ; preds = %.lr.ph934.preheader1528, %.lr.ph934.prol
  %indvars.iv1082.prol = phi i64 [ %indvars.iv.next1083.prol, %.lr.ph934.prol ], [ %indvars.iv1082.ph, %.lr.ph934.preheader1528 ]
  %prol.iter1537 = phi i64 [ %prol.iter1537.next, %.lr.ph934.prol ], [ 0, %.lr.ph934.preheader1528 ]
  %545 = mul nsw i64 %indvars.iv1082.prol, %541
  %gep1244.prol = getelementptr double, ptr %invariant.gep1243, i64 %545
  store double 0.000000e+00, ptr %gep1244.prol, align 8, !tbaa !9
  %indvars.iv.next1083.prol = add nuw nsw i64 %indvars.iv1082.prol, 1
  %prol.iter1537.next = add i64 %prol.iter1537, 1
  %prol.iter1537.cmp.not = icmp eq i64 %prol.iter1537.next, %xtraiter1535
  br i1 %prol.iter1537.cmp.not, label %.lr.ph934.prol.loopexit, label %.lr.ph934.prol, !llvm.loop !62

.lr.ph934.prol.loopexit:                          ; preds = %.lr.ph934.prol, %.lr.ph934.preheader1528
  %indvars.iv1082.unr = phi i64 [ %indvars.iv1082.ph, %.lr.ph934.preheader1528 ], [ %indvars.iv.next1083.prol, %.lr.ph934.prol ]
  %546 = sub nsw i64 %indvars.iv1082.ph, %wide.trip.count1086
  %547 = icmp ugt i64 %546, -4
  br i1 %547, label %.preheader898, label %.lr.ph934

vector.ph1339:                                    ; preds = %.lr.ph934.preheader
  %n.vec1341 = and i64 %543, -4
  %ind.end1342 = or disjoint i64 %n.vec1341, 1
  br label %vector.body1344

vector.body1344:                                  ; preds = %vector.body1344, %vector.ph1339
  %index1345 = phi i64 [ 0, %vector.ph1339 ], [ %index.next1347, %vector.body1344 ]
  %offset.idx1346 = or disjoint i64 %index1345, 1
  %548 = getelementptr double, ptr %invariant.gep1243, i64 %offset.idx1346
  %549 = getelementptr i8, ptr %548, i64 16
  store <2 x double> zeroinitializer, ptr %548, align 8, !tbaa !9
  store <2 x double> zeroinitializer, ptr %549, align 8, !tbaa !9
  %index.next1347 = add nuw i64 %index1345, 4
  %550 = icmp eq i64 %index.next1347, %n.vec1341
  br i1 %550, label %middle.block1336, label %vector.body1344, !llvm.loop !63

middle.block1336:                                 ; preds = %vector.body1344
  %cmp.n1348 = icmp eq i64 %543, %n.vec1341
  br i1 %cmp.n1348, label %.preheader898, label %.lr.ph934.preheader1528

.preheader898:                                    ; preds = %.lr.ph934.prol.loopexit, %.lr.ph934, %middle.block1336
  %invariant.gep = getelementptr i8, ptr %40, i64 8
  br i1 %.not864.not931, label %.lr.ph946.preheader, label %._crit_edge947

.lr.ph946.preheader:                              ; preds = %.preheader898
  %551 = sext i32 %38 to i64
  %552 = zext nneg i32 %534 to i64
  %invariant.gep1261 = getelementptr double, ptr %40, i64 %551
  %553 = shl nuw nsw i64 %wide.trip.count1086, 3
  %554 = add nsw i64 %553, -16
  %555 = shl nuw nsw i64 %wide.trip.count1086, 3
  %556 = add nsw i64 %555, -8
  %ident.check1476.not = icmp eq i32 %38, 1
  %ident.check1485.not = icmp eq i32 %38, 1
  br label %.lr.ph946

.lr.ph934:                                        ; preds = %.lr.ph934.prol.loopexit, %.lr.ph934
  %indvars.iv1082 = phi i64 [ %indvars.iv.next1083.3, %.lr.ph934 ], [ %indvars.iv1082.unr, %.lr.ph934.prol.loopexit ]
  %557 = mul nsw i64 %indvars.iv1082, %541
  %gep1244 = getelementptr double, ptr %invariant.gep1243, i64 %557
  store double 0.000000e+00, ptr %gep1244, align 8, !tbaa !9
  %indvars.iv.next1083 = add nuw nsw i64 %indvars.iv1082, 1
  %558 = mul nsw i64 %indvars.iv.next1083, %541
  %gep1244.1 = getelementptr double, ptr %invariant.gep1243, i64 %558
  store double 0.000000e+00, ptr %gep1244.1, align 8, !tbaa !9
  %indvars.iv.next1083.1 = add nuw nsw i64 %indvars.iv1082, 2
  %559 = mul nsw i64 %indvars.iv.next1083.1, %541
  %gep1244.2 = getelementptr double, ptr %invariant.gep1243, i64 %559
  store double 0.000000e+00, ptr %gep1244.2, align 8, !tbaa !9
  %indvars.iv.next1083.2 = add nuw nsw i64 %indvars.iv1082, 3
  %560 = mul nsw i64 %indvars.iv.next1083.2, %541
  %gep1244.3 = getelementptr double, ptr %invariant.gep1243, i64 %560
  store double 0.000000e+00, ptr %gep1244.3, align 8, !tbaa !9
  %indvars.iv.next1083.3 = add nuw nsw i64 %indvars.iv1082, 4
  %exitcond1087.not.3 = icmp eq i64 %indvars.iv.next1083.3, %wide.trip.count1086
  br i1 %exitcond1087.not.3, label %.preheader898, label %.lr.ph934, !llvm.loop !64

.lr.ph946:                                        ; preds = %.lr.ph946.preheader, %661
  %indvar1480 = phi i64 [ 0, %.lr.ph946.preheader ], [ %indvar.next1481, %661 ]
  %indvars.iv1102 = phi i64 [ %552, %.lr.ph946.preheader ], [ %indvars.iv.next1103, %661 ]
  %561 = shl i64 %indvar1480, 3
  %562 = sub i64 %556, %561
  %scevgep1489 = getelementptr i8, ptr %9, i64 %562
  %563 = shl i64 %indvar1480, 3
  %564 = sub i64 %554, %563
  %scevgep1482 = getelementptr i8, ptr %9, i64 %564
  %indvars1105 = trunc i64 %indvars.iv1102 to i32
  %indvars.iv.next1103 = add nsw i64 %indvars.iv1102, -1
  %indvars1104 = trunc i64 %indvars.iv.next1103 to i32
  %565 = mul nsw i32 %33, %indvars1104
  %566 = sext i32 %565 to i64
  %567 = getelementptr double, ptr %35, i64 %indvars.iv1102
  %568 = getelementptr double, ptr %567, i64 %566
  %569 = load double, ptr %568, align 8, !tbaa !9
  %570 = mul nsw i64 %indvars.iv1102, %551
  %571 = mul nsw i32 %38, %indvars1105
  %572 = sext i32 %571 to i64
  %573 = getelementptr double, ptr %40, i64 %indvars.iv1102
  %574 = getelementptr double, ptr %573, i64 %572
  %575 = add nuw nsw i64 %indvars.iv1102, 1
  %576 = getelementptr double, ptr %40, i64 %575
  %577 = getelementptr double, ptr %576, i64 %570
  %578 = call double @dlapy2_(ptr noundef %574, ptr noundef %577) #7
  %579 = fcmp oge double %569, 0.000000e+00
  %580 = fneg double %569
  %581 = select i1 %579, double %569, double %580
  %582 = fcmp olt double %578, %581
  br i1 %582, label %.lver.check1486, label %619

.lver.check1486:                                  ; preds = %.lr.ph946
  %583 = load double, ptr %574, align 8, !tbaa !9
  %584 = fdiv double %583, %569
  store double %584, ptr %30, align 8, !tbaa !9
  %585 = load double, ptr %577, align 8, !tbaa !9
  %586 = fdiv double %585, %569
  store double %586, ptr %29, align 8, !tbaa !9
  store double %569, ptr %574, align 8, !tbaa !9
  store double 0.000000e+00, ptr %577, align 8, !tbaa !9
  %587 = mul nsw i64 %indvars.iv.next1103, %551
  %588 = fneg double %584
  %589 = fneg double %586
  %invariant.gep1253 = getelementptr double, ptr %40, i64 %587
  %invariant.gep1255 = getelementptr double, ptr %40, i64 %570
  %invariant.gep1257 = getelementptr double, ptr %40, i64 %575
  %invariant.gep1259 = getelementptr double, ptr %40, i64 %indvars.iv1102
  br i1 %ident.check1485.not, label %.ph1487, label %.ph1487.lver.orig

.ph1487.lver.orig:                                ; preds = %.lver.check1486, %.ph1487.lver.orig
  %indvars.iv1096.lver.orig = phi i64 [ %indvars.iv.next1097.lver.orig, %.ph1487.lver.orig ], [ 1, %.lver.check1486 ]
  %gep1254.lver.orig = getelementptr double, ptr %invariant.gep1253, i64 %indvars.iv1096.lver.orig
  %590 = load double, ptr %gep1254.lver.orig, align 8, !tbaa !9
  %gep1256.lver.orig = getelementptr double, ptr %invariant.gep1255, i64 %indvars.iv1096.lver.orig
  %591 = load double, ptr %gep1256.lver.orig, align 8, !tbaa !9
  %592 = call double @llvm.fmuladd.f64(double %588, double %590, double %591)
  store double %592, ptr %gep1254.lver.orig, align 8, !tbaa !9
  %593 = mul nsw i64 %indvars.iv1096.lver.orig, %551
  %gep1258.lver.orig = getelementptr double, ptr %invariant.gep1257, i64 %593
  %594 = load double, ptr %gep1258.lver.orig, align 8, !tbaa !9
  %595 = call double @llvm.fmuladd.f64(double %589, double %590, double %594)
  %gep1260.lver.orig = getelementptr double, ptr %invariant.gep1259, i64 %593
  store double %595, ptr %gep1260.lver.orig, align 8, !tbaa !9
  store double %590, ptr %gep1256.lver.orig, align 8, !tbaa !9
  store double 0.000000e+00, ptr %gep1258.lver.orig, align 8, !tbaa !9
  %indvars.iv.next1097.lver.orig = add nuw nsw i64 %indvars.iv1096.lver.orig, 1
  %exitcond1101.not.lver.orig = icmp eq i64 %indvars.iv.next1097.lver.orig, %indvars.iv1102
  br i1 %exitcond1101.not.lver.orig, label %._crit_edge944, label %.ph1487.lver.orig, !llvm.loop !65

.ph1487:                                          ; preds = %.lver.check1486
  %load_initial1490 = load double, ptr %scevgep1489, align 8
  %gep1254.peel = getelementptr i8, ptr %invariant.gep1253, i64 8
  %596 = load double, ptr %gep1254.peel, align 8, !tbaa !9
  %gep1256.peel = getelementptr i8, ptr %invariant.gep1255, i64 8
  %597 = call double @llvm.fmuladd.f64(double %588, double %596, double %load_initial1490)
  store double %597, ptr %gep1254.peel, align 8, !tbaa !9
  %gep1258.peel = getelementptr double, ptr %invariant.gep1257, i64 %551
  %598 = load double, ptr %gep1258.peel, align 8, !tbaa !9
  %599 = call double @llvm.fmuladd.f64(double %589, double %596, double %598)
  %gep1260.peel = getelementptr double, ptr %invariant.gep1259, i64 %551
  store double %599, ptr %gep1260.peel, align 8, !tbaa !9
  store double %596, ptr %gep1256.peel, align 8, !tbaa !9
  store double 0.000000e+00, ptr %gep1258.peel, align 8, !tbaa !9
  %exitcond1101.not.peel = icmp eq i64 %indvars.iv1102, 2
  br i1 %exitcond1101.not.peel, label %._crit_edge944, label %.ph1487.peel.newph

.ph1487.peel.newph:                               ; preds = %.ph1487, %.ph1487.peel.newph
  %indvars.iv1096 = phi i64 [ %indvars.iv.next1097, %.ph1487.peel.newph ], [ 2, %.ph1487 ]
  %gep1254 = getelementptr double, ptr %invariant.gep1253, i64 %indvars.iv1096
  %600 = load double, ptr %gep1254, align 8, !tbaa !9
  %gep1256 = getelementptr double, ptr %invariant.gep1255, i64 %indvars.iv1096
  %601 = call double @llvm.fmuladd.f64(double %588, double %600, double 0.000000e+00)
  store double %601, ptr %gep1254, align 8, !tbaa !9
  %602 = mul nuw nsw i64 %indvars.iv1096, %551
  %gep1258 = getelementptr double, ptr %invariant.gep1257, i64 %602
  %603 = load double, ptr %gep1258, align 8, !tbaa !9
  %604 = call double @llvm.fmuladd.f64(double %589, double %600, double %603)
  %gep1260 = getelementptr double, ptr %invariant.gep1259, i64 %602
  store double %604, ptr %gep1260, align 8, !tbaa !9
  store double %600, ptr %gep1256, align 8, !tbaa !9
  store double 0.000000e+00, ptr %gep1258, align 8, !tbaa !9
  %indvars.iv.next1097 = add nuw nsw i64 %indvars.iv1096, 1
  %exitcond1101.not = icmp eq i64 %indvars.iv.next1097, %indvars.iv1102
  br i1 %exitcond1101.not, label %._crit_edge944, label %.ph1487.peel.newph, !llvm.loop !66

._crit_edge944:                                   ; preds = %.ph1487.lver.orig, %.ph1487, %.ph1487.peel.newph
  %605 = load double, ptr %6, align 8, !tbaa !9
  %606 = mul nsw i32 %38, %indvars1104
  %607 = getelementptr double, ptr %40, i64 %587
  %608 = getelementptr double, ptr %607, i64 %575
  store double %605, ptr %608, align 8, !tbaa !9
  %609 = getelementptr double, ptr %40, i64 %587
  %610 = getelementptr double, ptr %609, i64 %indvars.iv.next1103
  %611 = load double, ptr %610, align 8, !tbaa !9
  %612 = call double @llvm.fmuladd.f64(double %586, double %605, double %611)
  store double %612, ptr %610, align 8, !tbaa !9
  %613 = load double, ptr %6, align 8, !tbaa !9
  %614 = sext i32 %606 to i64
  %615 = getelementptr double, ptr %40, i64 %indvars.iv1102
  %616 = getelementptr double, ptr %615, i64 %614
  %617 = load double, ptr %616, align 8, !tbaa !9
  %618 = call double @llvm.fmuladd.f64(double %588, double %613, double %617)
  store double %618, ptr %616, align 8, !tbaa !9
  br label %661

619:                                              ; preds = %.lr.ph946
  %620 = fcmp oeq double %578, 0.000000e+00
  br i1 %620, label %621, label %._crit_edge1188

._crit_edge1188:                                  ; preds = %619
  %.pre1189 = load double, ptr %577, align 8, !tbaa !9
  br label %.lver.check1477

621:                                              ; preds = %619
  %622 = load double, ptr %12, align 8, !tbaa !9
  store double %622, ptr %574, align 8, !tbaa !9
  store double 0.000000e+00, ptr %577, align 8, !tbaa !9
  %623 = load double, ptr %12, align 8, !tbaa !9
  br label %.lver.check1477

.lver.check1477:                                  ; preds = %621, %._crit_edge1188
  %624 = phi double [ 0.000000e+00, %621 ], [ %.pre1189, %._crit_edge1188 ]
  %.0830 = phi double [ %623, %621 ], [ %578, %._crit_edge1188 ]
  %625 = fdiv double %569, %.0830
  %626 = fdiv double %625, %.0830
  %627 = load double, ptr %574, align 8, !tbaa !9
  %628 = fmul double %627, %626
  store double %628, ptr %30, align 8, !tbaa !9
  %629 = fneg double %624
  %630 = fmul double %626, %629
  store double %630, ptr %29, align 8, !tbaa !9
  %631 = mul nsw i64 %indvars.iv.next1103, %551
  %632 = fneg double %628
  %633 = fneg double %630
  %invariant.gep1245 = getelementptr double, ptr %40, i64 %631
  %invariant.gep1247 = getelementptr double, ptr %40, i64 %570
  %invariant.gep1249 = getelementptr double, ptr %40, i64 %575
  %invariant.gep1251 = getelementptr double, ptr %40, i64 %indvars.iv1102
  br i1 %ident.check1476.not, label %.ph1478, label %.ph1478.lver.orig

.ph1478.lver.orig:                                ; preds = %.lver.check1477, %.ph1478.lver.orig
  %indvars.iv1088.lver.orig = phi i64 [ %indvars.iv.next1089.lver.orig, %.ph1478.lver.orig ], [ 1, %.lver.check1477 ]
  %gep1246.lver.orig = getelementptr double, ptr %invariant.gep1245, i64 %indvars.iv1088.lver.orig
  %634 = load double, ptr %gep1246.lver.orig, align 8, !tbaa !9
  %gep1248.lver.orig = getelementptr double, ptr %invariant.gep1247, i64 %indvars.iv1088.lver.orig
  %635 = load double, ptr %gep1248.lver.orig, align 8, !tbaa !9
  %636 = call double @llvm.fmuladd.f64(double %632, double %635, double %634)
  %637 = mul nsw i64 %indvars.iv1088.lver.orig, %551
  %gep1250.lver.orig = getelementptr double, ptr %invariant.gep1249, i64 %637
  %638 = load double, ptr %gep1250.lver.orig, align 8, !tbaa !9
  %639 = call double @llvm.fmuladd.f64(double %630, double %638, double %636)
  store double %639, ptr %gep1246.lver.orig, align 8, !tbaa !9
  %640 = load double, ptr %gep1250.lver.orig, align 8, !tbaa !9
  %641 = load double, ptr %gep1248.lver.orig, align 8, !tbaa !9
  %642 = fmul double %641, %633
  %643 = call double @llvm.fmuladd.f64(double %632, double %640, double %642)
  %gep1252.lver.orig = getelementptr double, ptr %invariant.gep1251, i64 %637
  store double %643, ptr %gep1252.lver.orig, align 8, !tbaa !9
  %indvars.iv.next1089.lver.orig = add nuw nsw i64 %indvars.iv1088.lver.orig, 1
  %exitcond1093.not.lver.orig = icmp eq i64 %indvars.iv.next1089.lver.orig, %indvars.iv1102
  br i1 %exitcond1093.not.lver.orig, label %._crit_edge939, label %.ph1478.lver.orig, !llvm.loop !68

.ph1478:                                          ; preds = %.lver.check1477
  %load_initial1483 = load double, ptr %scevgep1482, align 8
  br label %644

644:                                              ; preds = %.ph1478, %644
  %store_forwarded1484 = phi double [ %load_initial1483, %.ph1478 ], [ %653, %644 ]
  %indvars.iv1088 = phi i64 [ 1, %.ph1478 ], [ %indvars.iv.next1089, %644 ]
  %gep1246 = getelementptr double, ptr %invariant.gep1245, i64 %indvars.iv1088
  %gep1248 = getelementptr double, ptr %invariant.gep1247, i64 %indvars.iv1088
  %645 = load double, ptr %gep1248, align 8, !tbaa !9
  %646 = call double @llvm.fmuladd.f64(double %632, double %645, double %store_forwarded1484)
  %647 = mul nuw nsw i64 %indvars.iv1088, %551
  %gep1250 = getelementptr double, ptr %invariant.gep1249, i64 %647
  %648 = load double, ptr %gep1250, align 8, !tbaa !9
  %649 = call double @llvm.fmuladd.f64(double %630, double %648, double %646)
  store double %649, ptr %gep1246, align 8, !tbaa !9
  %650 = load double, ptr %gep1250, align 8, !tbaa !9
  %651 = load double, ptr %gep1248, align 8, !tbaa !9
  %652 = fmul double %651, %633
  %653 = call double @llvm.fmuladd.f64(double %632, double %650, double %652)
  %gep1252 = getelementptr double, ptr %invariant.gep1251, i64 %647
  store double %653, ptr %gep1252, align 8, !tbaa !9
  %indvars.iv.next1089 = add nuw nsw i64 %indvars.iv1088, 1
  %exitcond1093.not = icmp eq i64 %indvars.iv.next1089, %indvars.iv1102
  br i1 %exitcond1093.not, label %._crit_edge939, label %644, !llvm.loop !68

._crit_edge939:                                   ; preds = %.ph1478.lver.orig, %644
  %654 = load double, ptr %6, align 8, !tbaa !9
  %655 = mul nsw i32 %38, %indvars1104
  %656 = sext i32 %655 to i64
  %657 = getelementptr double, ptr %40, i64 %indvars.iv1102
  %658 = getelementptr double, ptr %657, i64 %656
  %659 = load double, ptr %658, align 8, !tbaa !9
  %660 = fadd double %654, %659
  store double %660, ptr %658, align 8, !tbaa !9
  br label %661

661:                                              ; preds = %._crit_edge939, %._crit_edge944
  store i32 %indvars1104, ptr %21, align 4, !tbaa !5
  store i32 %indvars1104, ptr %22, align 4, !tbaa !5
  %gep = getelementptr double, ptr %invariant.gep, i64 %570
  %662 = call double @dasum_(ptr noundef nonnull %21, ptr noundef %gep, ptr noundef nonnull @c__1) #7
  %gep1262 = getelementptr double, ptr %invariant.gep1261, i64 %575
  %663 = call double @dasum_(ptr noundef nonnull %22, ptr noundef %gep1262, ptr noundef nonnull %10) #7
  %664 = fadd double %662, %663
  %665 = getelementptr inbounds double, ptr %41, i64 %indvars.iv1102
  store double %664, ptr %665, align 8, !tbaa !9
  %666 = icmp sgt i64 %indvars.iv1102, 2
  %indvar.next1481 = add i64 %indvar1480, 1
  br i1 %666, label %.lr.ph946, label %._crit_edge947, !llvm.loop !69

._crit_edge947:                                   ; preds = %661, %533, %.preheader898
  %667 = load double, ptr %9, align 8, !tbaa !9
  %668 = fcmp oeq double %667, 0.000000e+00
  br i1 %668, label %669, label %677

669:                                              ; preds = %._crit_edge947
  %670 = sext i32 %38 to i64
  %671 = getelementptr double, ptr %40, i64 %670
  %672 = getelementptr i8, ptr %671, i64 16
  %673 = load double, ptr %672, align 8, !tbaa !9
  %674 = fcmp oeq double %673, 0.000000e+00
  br i1 %674, label %675, label %677

675:                                              ; preds = %669
  %676 = load double, ptr %12, align 8, !tbaa !9
  store double %676, ptr %9, align 8, !tbaa !9
  br label %677

677:                                              ; preds = %675, %669, %._crit_edge947
  store double 0.000000e+00, ptr %11, align 8, !tbaa !9
  %678 = load i32, ptr %2, align 4, !tbaa !5
  br label %679

679:                                              ; preds = %677, %530
  %680 = phi i32 [ %515, %530 ], [ %678, %677 ]
  %.0835 = phi i32 [ %515, %530 ], [ 1, %677 ]
  %.0834 = phi i32 [ 1, %530 ], [ %678, %677 ]
  %.0833 = phi i32 [ -1, %530 ], [ 1, %677 ]
  store i32 %680, ptr %21, align 4, !tbaa !5
  %.not869982 = icmp slt i32 %680, 1
  br i1 %.not869982, label %._crit_edge986, label %.lr.ph985

.lr.ph985:                                        ; preds = %679
  %681 = fadd double %44, 1.000000e+00
  %682 = sext i32 %38 to i64
  %683 = icmp sge i32 %.0835, %.0834
  %684 = icmp sle i32 %.0835, %.0834
  %.in967 = select i1 %.not863.not, i1 %684, i1 %683
  %invariant.gep1273 = getelementptr i8, ptr %40, i64 8
  %685 = sub i64 %20, %19
  %686 = sub i64 %18, %17
  %diff.check1364 = icmp ult i64 %686, 32
  %diff.check = icmp ult i64 %685, 32
  br label %687

687:                                              ; preds = %.lr.ph985, %._crit_edge979
  %.1983 = phi i32 [ 1, %.lr.ph985 ], [ %886, %._crit_edge979 ]
  %688 = load double, ptr %14, align 8, !tbaa !9
  store i32 %.0834, ptr %22, align 4, !tbaa !5
  store i32 %.0833, ptr %23, align 4, !tbaa !5
  br i1 %.in967, label %.lr.ph973, label %._crit_edge974

.lr.ph973:                                        ; preds = %687, %841
  %689 = phi double [ %842, %841 ], [ 1.000000e+00, %687 ]
  %.0836971 = phi double [ %.1837, %841 ], [ %688, %687 ]
  %.11969 = phi i32 [ %844, %841 ], [ %.0835, %687 ]
  %.0851968 = phi double [ %.3854, %841 ], [ 1.000000e+00, %687 ]
  %690 = sext i32 %.11969 to i64
  %691 = getelementptr inbounds double, ptr %41, i64 %690
  %692 = load double, ptr %691, align 8, !tbaa !9
  %693 = fcmp ogt double %692, %.0836971
  br i1 %693, label %694, label %698

694:                                              ; preds = %.lr.ph973
  %695 = fdiv double 1.000000e+00, %.0851968
  store double %695, ptr %32, align 8, !tbaa !9
  call void @dscal_(ptr noundef nonnull %2, ptr noundef nonnull %32, ptr noundef %7, ptr noundef nonnull @c__1) #7
  call void @dscal_(ptr noundef nonnull %2, ptr noundef nonnull %32, ptr noundef %8, ptr noundef nonnull @c__1) #7
  %696 = load double, ptr %32, align 8, !tbaa !9
  %697 = fmul double %696, %689
  br label %698

698:                                              ; preds = %694, %.lr.ph973
  %699 = phi double [ %697, %694 ], [ %689, %.lr.ph973 ]
  %.1852 = phi double [ 1.000000e+00, %694 ], [ %.0851968, %.lr.ph973 ]
  %700 = getelementptr inbounds double, ptr %36, i64 %690
  %701 = load double, ptr %700, align 8, !tbaa !9
  store double %701, ptr %30, align 8, !tbaa !9
  %702 = getelementptr inbounds double, ptr %37, i64 %690
  %703 = load double, ptr %702, align 8, !tbaa !9
  store double %703, ptr %29, align 8, !tbaa !9
  %704 = load i32, ptr %0, align 4, !tbaa !5
  %.not872 = icmp eq i32 %704, 0
  br i1 %.not872, label %.preheader, label %710

.preheader:                                       ; preds = %698
  %.not873.not957 = icmp sgt i32 %.11969, 1
  %705 = insertelement <2 x double> poison, double %703, i64 0
  %706 = insertelement <2 x double> %705, double %701, i64 1
  br i1 %.not873.not957, label %.lr.ph959, label %.loopexit895

.lr.ph959:                                        ; preds = %.preheader
  %707 = mul nsw i32 %.11969, %38
  %708 = sext i32 %707 to i64
  %wide.trip.count1115 = zext nneg i32 %.11969 to i64
  %invariant.gep1267 = getelementptr double, ptr %40, i64 %708
  %709 = zext nneg i32 %.11969 to i64
  %gep1274 = getelementptr double, ptr %invariant.gep1273, i64 %709
  br label %739

710:                                              ; preds = %698
  %711 = load i32, ptr %2, align 4, !tbaa !5
  %.not874949.not = icmp slt i32 %.11969, %711
  %712 = insertelement <2 x double> poison, double %703, i64 0
  %713 = insertelement <2 x double> %712, double %701, i64 1
  br i1 %.not874949.not, label %.lr.ph952, label %.loopexit895

.lr.ph952:                                        ; preds = %710
  %714 = mul nsw i32 %.11969, %38
  %715 = add nsw i64 %690, 1
  %716 = sext i32 %714 to i64
  %717 = add i32 %711, 1
  %invariant.gep1263 = getelementptr double, ptr %40, i64 %690
  %invariant.gep1265 = getelementptr double, ptr %40, i64 %716
  br label %718

718:                                              ; preds = %.lr.ph952, %718
  %indvars.iv1106 = phi i64 [ %715, %.lr.ph952 ], [ %indvars.iv.next1107, %718 ]
  %719 = phi <2 x double> [ %713, %.lr.ph952 ], [ %738, %718 ]
  %720 = mul nsw i64 %indvars.iv1106, %682
  %gep1264 = getelementptr double, ptr %invariant.gep1263, i64 %720
  %721 = load double, ptr %gep1264, align 8, !tbaa !9
  %722 = getelementptr inbounds double, ptr %36, i64 %indvars.iv1106
  %723 = load double, ptr %722, align 8, !tbaa !9
  %724 = fneg double %721
  %indvars.iv.next1107 = add nsw i64 %indvars.iv1106, 1
  %gep1266 = getelementptr double, ptr %invariant.gep1265, i64 %indvars.iv.next1107
  %725 = load double, ptr %gep1266, align 8, !tbaa !9
  %726 = getelementptr inbounds double, ptr %37, i64 %indvars.iv1106
  %727 = load double, ptr %726, align 8, !tbaa !9
  %728 = insertelement <2 x double> poison, double %724, i64 0
  %729 = shufflevector <2 x double> %728, <2 x double> poison, <2 x i32> zeroinitializer
  %730 = insertelement <2 x double> poison, double %727, i64 0
  %731 = insertelement <2 x double> %730, double %723, i64 1
  %732 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %729, <2 x double> %731, <2 x double> %719)
  %733 = fneg double %725
  %734 = insertelement <2 x double> poison, double %733, i64 0
  %735 = insertelement <2 x double> %734, double %725, i64 1
  %736 = insertelement <2 x double> poison, double %723, i64 0
  %737 = insertelement <2 x double> %736, double %727, i64 1
  %738 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %735, <2 x double> %737, <2 x double> %732)
  %lftr.wideiv = trunc i64 %indvars.iv.next1107 to i32
  %exitcond1110.not = icmp eq i32 %717, %lftr.wideiv
  br i1 %exitcond1110.not, label %..loopexit896_crit_edge, label %718, !llvm.loop !70

739:                                              ; preds = %.lr.ph959, %739
  %indvars.iv1111 = phi i64 [ 1, %.lr.ph959 ], [ %indvars.iv.next1112, %739 ]
  %740 = phi <2 x double> [ %706, %.lr.ph959 ], [ %759, %739 ]
  %gep1268 = getelementptr double, ptr %invariant.gep1267, i64 %indvars.iv1111
  %741 = load double, ptr %gep1268, align 8, !tbaa !9
  %742 = getelementptr inbounds double, ptr %36, i64 %indvars.iv1111
  %743 = load double, ptr %742, align 8, !tbaa !9
  %744 = fneg double %741
  %745 = mul nsw i64 %indvars.iv1111, %682
  %gep1272 = getelementptr double, ptr %gep1274, i64 %745
  %746 = load double, ptr %gep1272, align 8, !tbaa !9
  %747 = getelementptr inbounds double, ptr %37, i64 %indvars.iv1111
  %748 = load double, ptr %747, align 8, !tbaa !9
  %749 = insertelement <2 x double> poison, double %744, i64 0
  %750 = shufflevector <2 x double> %749, <2 x double> poison, <2 x i32> zeroinitializer
  %751 = insertelement <2 x double> poison, double %748, i64 0
  %752 = insertelement <2 x double> %751, double %743, i64 1
  %753 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %750, <2 x double> %752, <2 x double> %740)
  %754 = fneg double %746
  %755 = insertelement <2 x double> poison, double %754, i64 0
  %756 = insertelement <2 x double> %755, double %746, i64 1
  %757 = insertelement <2 x double> poison, double %743, i64 0
  %758 = insertelement <2 x double> %757, double %748, i64 1
  %759 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %756, <2 x double> %758, <2 x double> %753)
  %indvars.iv.next1112 = add nuw nsw i64 %indvars.iv1111, 1
  %exitcond1116.not = icmp eq i64 %indvars.iv.next1112, %wide.trip.count1115
  br i1 %exitcond1116.not, label %..loopexit895_crit_edge, label %739, !llvm.loop !71

..loopexit895_crit_edge:                          ; preds = %739
  %760 = extractelement <2 x double> %759, i64 1
  store double %760, ptr %30, align 8, !tbaa !9
  %761 = extractelement <2 x double> %759, i64 0
  store double %761, ptr %29, align 8, !tbaa !9
  br label %.loopexit895

..loopexit896_crit_edge:                          ; preds = %718
  %762 = extractelement <2 x double> %738, i64 1
  store double %762, ptr %30, align 8, !tbaa !9
  %763 = extractelement <2 x double> %738, i64 0
  store double %763, ptr %29, align 8, !tbaa !9
  br label %.loopexit895

.loopexit895:                                     ; preds = %710, %..loopexit896_crit_edge, %.preheader, %..loopexit895_crit_edge
  %764 = phi <2 x double> [ %713, %710 ], [ %738, %..loopexit896_crit_edge ], [ %706, %.preheader ], [ %759, %..loopexit895_crit_edge ]
  %765 = mul nsw i32 %.11969, %38
  %766 = add nsw i32 %765, %.11969
  %767 = sext i32 %766 to i64
  %768 = getelementptr inbounds double, ptr %40, i64 %767
  %769 = load double, ptr %768, align 8, !tbaa !9
  store double %769, ptr %24, align 8, !tbaa !9
  %770 = fcmp oge double %769, 0.000000e+00
  %771 = fneg double %769
  %772 = select i1 %770, double %769, double %771
  %773 = add nsw i32 %.11969, 1
  %774 = add nsw i32 %773, %765
  %775 = sext i32 %774 to i64
  %776 = getelementptr inbounds double, ptr %40, i64 %775
  %777 = load double, ptr %776, align 8, !tbaa !9
  store double %777, ptr %25, align 8, !tbaa !9
  %778 = fcmp oge double %777, 0.000000e+00
  %779 = fneg double %777
  %780 = select i1 %778, double %777, double %779
  %781 = fadd double %772, %780
  %782 = load double, ptr %13, align 8, !tbaa !9
  %783 = fcmp ogt double %781, %782
  br i1 %783, label %784, label %817

784:                                              ; preds = %.loopexit895
  %785 = fcmp olt double %781, 1.000000e+00
  br i1 %785, label %786, label %802

786:                                              ; preds = %784
  %787 = fcmp oge <2 x double> %764, zeroinitializer
  %788 = fneg <2 x double> %764
  %789 = select <2 x i1> %787, <2 x double> %764, <2 x double> %788
  %shift = shufflevector <2 x double> %789, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %790 = fadd <2 x double> %shift, %789
  %791 = extractelement <2 x double> %790, i64 0
  %792 = load double, ptr %14, align 8, !tbaa !9
  %793 = fmul double %781, %792
  %794 = fcmp ogt double %791, %793
  br i1 %794, label %795, label %802

795:                                              ; preds = %786
  %796 = fdiv double 1.000000e+00, %791
  store double %796, ptr %32, align 8, !tbaa !9
  call void @dscal_(ptr noundef nonnull %2, ptr noundef nonnull %32, ptr noundef nonnull %7, ptr noundef nonnull @c__1) #7
  call void @dscal_(ptr noundef nonnull %2, ptr noundef nonnull %32, ptr noundef nonnull %8, ptr noundef nonnull @c__1) #7
  %797 = load double, ptr %700, align 8, !tbaa !9
  store double %797, ptr %30, align 8, !tbaa !9
  %798 = load double, ptr %702, align 8, !tbaa !9
  store double %798, ptr %29, align 8, !tbaa !9
  %799 = load double, ptr %32, align 8, !tbaa !9
  %800 = fmul double %799, %699
  %801 = fmul double %.1852, %799
  br label %802

802:                                              ; preds = %786, %795, %784
  %803 = phi double [ %800, %795 ], [ %699, %786 ], [ %699, %784 ]
  %.2853 = phi double [ %801, %795 ], [ %.1852, %786 ], [ %.1852, %784 ]
  call void @dladiv_(ptr noundef nonnull %30, ptr noundef nonnull %29, ptr noundef nonnull %768, ptr noundef nonnull %776, ptr noundef nonnull %700, ptr noundef nonnull %702) #7
  %804 = load double, ptr %700, align 8, !tbaa !9
  store double %804, ptr %24, align 8, !tbaa !9
  %805 = fcmp oge double %804, 0.000000e+00
  %806 = fneg double %804
  %807 = select i1 %805, double %804, double %806
  %808 = load double, ptr %702, align 8, !tbaa !9
  store double %808, ptr %25, align 8, !tbaa !9
  %809 = fcmp oge double %808, 0.000000e+00
  %810 = fneg double %808
  %811 = select i1 %809, double %808, double %810
  %812 = fadd double %807, %811
  %813 = fcmp oge double %812, %.2853
  %814 = select i1 %813, double %812, double %.2853
  %815 = load double, ptr %14, align 8, !tbaa !9
  %816 = fdiv double %815, %814
  br label %841

817:                                              ; preds = %.loopexit895
  %818 = load i32, ptr %2, align 4, !tbaa !5
  %.not875962 = icmp slt i32 %818, 1
  br i1 %.not875962, label %._crit_edge966, label %.lr.ph965.preheader

.lr.ph965.preheader:                              ; preds = %817
  %819 = add nuw i32 %818, 1
  %wide.trip.count1121 = zext i32 %819 to i64
  %820 = zext nneg i32 %818 to i64
  %min.iters.check1367 = icmp ult i32 %818, 4
  %or.cond1510 = or i1 %min.iters.check1367, %diff.check1364
  br i1 %or.cond1510, label %.lr.ph965.preheader1521, label %vector.ph1368

vector.ph1368:                                    ; preds = %.lr.ph965.preheader
  %n.vec1370 = and i64 %820, 2147483644
  %ind.end1371 = or disjoint i64 %n.vec1370, 1
  br label %vector.body1373

vector.body1373:                                  ; preds = %vector.body1373, %vector.ph1368
  %index1374 = phi i64 [ 0, %vector.ph1368 ], [ %index.next1376, %vector.body1373 ]
  %821 = getelementptr double, ptr %7, i64 %index1374
  %822 = getelementptr inbounds i8, ptr %821, i64 16
  store <2 x double> zeroinitializer, ptr %821, align 8, !tbaa !9
  store <2 x double> zeroinitializer, ptr %822, align 8, !tbaa !9
  %823 = getelementptr double, ptr %8, i64 %index1374
  %824 = getelementptr inbounds i8, ptr %823, i64 16
  store <2 x double> zeroinitializer, ptr %823, align 8, !tbaa !9
  store <2 x double> zeroinitializer, ptr %824, align 8, !tbaa !9
  %index.next1376 = add nuw i64 %index1374, 4
  %825 = icmp eq i64 %index.next1376, %n.vec1370
  br i1 %825, label %middle.block1365, label %vector.body1373, !llvm.loop !72

middle.block1365:                                 ; preds = %vector.body1373
  %cmp.n1377 = icmp eq i64 %n.vec1370, %820
  br i1 %cmp.n1377, label %._crit_edge966, label %.lr.ph965.preheader1521

.lr.ph965.preheader1521:                          ; preds = %middle.block1365, %.lr.ph965.preheader
  %indvars.iv1117.ph = phi i64 [ 1, %.lr.ph965.preheader ], [ %ind.end1371, %middle.block1365 ]
  %826 = sub nsw i64 %wide.trip.count1121, %indvars.iv1117.ph
  %827 = zext nneg i32 %818 to i64
  %828 = sub nsw i64 %827, %indvars.iv1117.ph
  %xtraiter1539 = and i64 %826, 3
  %lcmp.mod1540.not = icmp eq i64 %xtraiter1539, 0
  br i1 %lcmp.mod1540.not, label %.lr.ph965.prol.loopexit, label %.lr.ph965.prol

.lr.ph965.prol:                                   ; preds = %.lr.ph965.preheader1521, %.lr.ph965.prol
  %indvars.iv1117.prol = phi i64 [ %indvars.iv.next1118.prol, %.lr.ph965.prol ], [ %indvars.iv1117.ph, %.lr.ph965.preheader1521 ]
  %prol.iter1541 = phi i64 [ %prol.iter1541.next, %.lr.ph965.prol ], [ 0, %.lr.ph965.preheader1521 ]
  %829 = getelementptr inbounds double, ptr %36, i64 %indvars.iv1117.prol
  store double 0.000000e+00, ptr %829, align 8, !tbaa !9
  %830 = getelementptr inbounds double, ptr %37, i64 %indvars.iv1117.prol
  store double 0.000000e+00, ptr %830, align 8, !tbaa !9
  %indvars.iv.next1118.prol = add nuw nsw i64 %indvars.iv1117.prol, 1
  %prol.iter1541.next = add i64 %prol.iter1541, 1
  %prol.iter1541.cmp.not = icmp eq i64 %prol.iter1541.next, %xtraiter1539
  br i1 %prol.iter1541.cmp.not, label %.lr.ph965.prol.loopexit, label %.lr.ph965.prol, !llvm.loop !73

.lr.ph965.prol.loopexit:                          ; preds = %.lr.ph965.prol, %.lr.ph965.preheader1521
  %indvars.iv1117.unr = phi i64 [ %indvars.iv1117.ph, %.lr.ph965.preheader1521 ], [ %indvars.iv.next1118.prol, %.lr.ph965.prol ]
  %831 = icmp ult i64 %828, 3
  br i1 %831, label %._crit_edge966, label %.lr.ph965

.lr.ph965:                                        ; preds = %.lr.ph965.prol.loopexit, %.lr.ph965
  %indvars.iv1117 = phi i64 [ %indvars.iv.next1118.3, %.lr.ph965 ], [ %indvars.iv1117.unr, %.lr.ph965.prol.loopexit ]
  %832 = getelementptr inbounds double, ptr %36, i64 %indvars.iv1117
  store double 0.000000e+00, ptr %832, align 8, !tbaa !9
  %833 = getelementptr inbounds double, ptr %37, i64 %indvars.iv1117
  store double 0.000000e+00, ptr %833, align 8, !tbaa !9
  %834 = getelementptr double, ptr %7, i64 %indvars.iv1117
  store double 0.000000e+00, ptr %834, align 8, !tbaa !9
  %835 = getelementptr double, ptr %8, i64 %indvars.iv1117
  store double 0.000000e+00, ptr %835, align 8, !tbaa !9
  %indvars.iv.next1118.1 = add nuw nsw i64 %indvars.iv1117, 2
  %836 = getelementptr inbounds double, ptr %36, i64 %indvars.iv.next1118.1
  store double 0.000000e+00, ptr %836, align 8, !tbaa !9
  %837 = getelementptr inbounds double, ptr %37, i64 %indvars.iv.next1118.1
  store double 0.000000e+00, ptr %837, align 8, !tbaa !9
  %indvars.iv.next1118.2 = add nuw nsw i64 %indvars.iv1117, 3
  %838 = getelementptr inbounds double, ptr %36, i64 %indvars.iv.next1118.2
  store double 0.000000e+00, ptr %838, align 8, !tbaa !9
  %839 = getelementptr inbounds double, ptr %37, i64 %indvars.iv.next1118.2
  store double 0.000000e+00, ptr %839, align 8, !tbaa !9
  %indvars.iv.next1118.3 = add nuw nsw i64 %indvars.iv1117, 4
  %exitcond1122.not.3 = icmp eq i64 %indvars.iv.next1118.3, %wide.trip.count1121
  br i1 %exitcond1122.not.3, label %._crit_edge966, label %.lr.ph965, !llvm.loop !74

._crit_edge966:                                   ; preds = %.lr.ph965.prol.loopexit, %.lr.ph965, %middle.block1365, %817
  store double 1.000000e+00, ptr %700, align 8, !tbaa !9
  store double 1.000000e+00, ptr %702, align 8, !tbaa !9
  %840 = load double, ptr %14, align 8, !tbaa !9
  br label %841

841:                                              ; preds = %802, %._crit_edge966
  %842 = phi double [ %803, %802 ], [ 0.000000e+00, %._crit_edge966 ]
  %.3854 = phi double [ %814, %802 ], [ 1.000000e+00, %._crit_edge966 ]
  %.1837 = phi double [ %816, %802 ], [ %840, %._crit_edge966 ]
  %843 = load i32, ptr %23, align 4, !tbaa !5
  %844 = add nsw i32 %843, %.11969
  %845 = icmp slt i32 %843, 0
  %846 = load i32, ptr %22, align 4
  %847 = icmp sge i32 %844, %846
  %848 = icmp sle i32 %844, %846
  %.in = select i1 %845, i1 %847, i1 %848
  br i1 %.in, label %.lr.ph973, label %._crit_edge974, !llvm.loop !75

._crit_edge974:                                   ; preds = %841, %687
  %849 = phi double [ 1.000000e+00, %687 ], [ %842, %841 ]
  %850 = call double @dasum_(ptr noundef nonnull %2, ptr noundef %7, ptr noundef nonnull @c__1) #7
  %851 = call double @dasum_(ptr noundef nonnull %2, ptr noundef %8, ptr noundef nonnull @c__1) #7
  %852 = fadd double %850, %851
  %853 = fmul double %45, %849
  %854 = fcmp ult double %852, %853
  br i1 %854, label %855, label %.loopexit897

855:                                              ; preds = %._crit_edge974
  %856 = load double, ptr %12, align 8, !tbaa !9
  %857 = fdiv double %856, %681
  store double %856, ptr %7, align 8, !tbaa !9
  store double 0.000000e+00, ptr %8, align 8, !tbaa !9
  %858 = load i32, ptr %2, align 4, !tbaa !5
  store i32 %858, ptr %23, align 4, !tbaa !5
  %.not870975 = icmp slt i32 %858, 2
  br i1 %.not870975, label %._crit_edge979, label %.lr.ph978.preheader

.lr.ph978.preheader:                              ; preds = %855
  %859 = add nuw i32 %858, 1
  %wide.trip.count1128 = zext i32 %859 to i64
  %860 = add nsw i64 %wide.trip.count1128, -2
  %min.iters.check1352 = icmp ult i64 %860, 4
  %or.cond1511 = or i1 %min.iters.check1352, %diff.check
  br i1 %or.cond1511, label %.lr.ph978.preheader1522, label %vector.ph1353

vector.ph1353:                                    ; preds = %.lr.ph978.preheader
  %n.vec1355 = and i64 %860, -4
  %ind.end1356 = or disjoint i64 %n.vec1355, 2
  %broadcast.splatinsert = insertelement <2 x double> poison, double %857, i64 0
  %broadcast.splat = shufflevector <2 x double> %broadcast.splatinsert, <2 x double> poison, <2 x i32> zeroinitializer
  br label %vector.body1358

vector.body1358:                                  ; preds = %vector.body1358, %vector.ph1353
  %index1359 = phi i64 [ 0, %vector.ph1353 ], [ %index.next1361, %vector.body1358 ]
  %offset.idx1360 = or disjoint i64 %index1359, 2
  %861 = getelementptr inbounds double, ptr %36, i64 %offset.idx1360
  %862 = getelementptr inbounds i8, ptr %861, i64 16
  store <2 x double> %broadcast.splat, ptr %861, align 8, !tbaa !9
  store <2 x double> %broadcast.splat, ptr %862, align 8, !tbaa !9
  %863 = getelementptr inbounds double, ptr %37, i64 %offset.idx1360
  %864 = getelementptr inbounds i8, ptr %863, i64 16
  store <2 x double> zeroinitializer, ptr %863, align 8, !tbaa !9
  store <2 x double> zeroinitializer, ptr %864, align 8, !tbaa !9
  %index.next1361 = add nuw i64 %index1359, 4
  %865 = icmp eq i64 %index.next1361, %n.vec1355
  br i1 %865, label %middle.block1350, label %vector.body1358, !llvm.loop !76

middle.block1350:                                 ; preds = %vector.body1358
  %cmp.n1362 = icmp eq i64 %860, %n.vec1355
  br i1 %cmp.n1362, label %._crit_edge979, label %.lr.ph978.preheader1522

.lr.ph978.preheader1522:                          ; preds = %middle.block1350, %.lr.ph978.preheader
  %indvars.iv1124.ph = phi i64 [ 2, %.lr.ph978.preheader ], [ %ind.end1356, %middle.block1350 ]
  %866 = sub nsw i64 %wide.trip.count1128, %indvars.iv1124.ph
  %867 = zext nneg i32 %858 to i64
  %868 = sub nsw i64 %867, %indvars.iv1124.ph
  %xtraiter1542 = and i64 %866, 3
  %lcmp.mod1543.not = icmp eq i64 %xtraiter1542, 0
  br i1 %lcmp.mod1543.not, label %.lr.ph978.prol.loopexit, label %.lr.ph978.prol

.lr.ph978.prol:                                   ; preds = %.lr.ph978.preheader1522, %.lr.ph978.prol
  %indvars.iv1124.prol = phi i64 [ %indvars.iv.next1125.prol, %.lr.ph978.prol ], [ %indvars.iv1124.ph, %.lr.ph978.preheader1522 ]
  %prol.iter1544 = phi i64 [ %prol.iter1544.next, %.lr.ph978.prol ], [ 0, %.lr.ph978.preheader1522 ]
  %869 = getelementptr inbounds double, ptr %36, i64 %indvars.iv1124.prol
  store double %857, ptr %869, align 8, !tbaa !9
  %870 = getelementptr inbounds double, ptr %37, i64 %indvars.iv1124.prol
  store double 0.000000e+00, ptr %870, align 8, !tbaa !9
  %indvars.iv.next1125.prol = add nuw nsw i64 %indvars.iv1124.prol, 1
  %prol.iter1544.next = add i64 %prol.iter1544, 1
  %prol.iter1544.cmp.not = icmp eq i64 %prol.iter1544.next, %xtraiter1542
  br i1 %prol.iter1544.cmp.not, label %.lr.ph978.prol.loopexit, label %.lr.ph978.prol, !llvm.loop !77

.lr.ph978.prol.loopexit:                          ; preds = %.lr.ph978.prol, %.lr.ph978.preheader1522
  %indvars.iv1124.unr = phi i64 [ %indvars.iv1124.ph, %.lr.ph978.preheader1522 ], [ %indvars.iv.next1125.prol, %.lr.ph978.prol ]
  %871 = icmp ult i64 %868, 3
  br i1 %871, label %._crit_edge979, label %.lr.ph978

.lr.ph978:                                        ; preds = %.lr.ph978.prol.loopexit, %.lr.ph978
  %indvars.iv1124 = phi i64 [ %indvars.iv.next1125.3, %.lr.ph978 ], [ %indvars.iv1124.unr, %.lr.ph978.prol.loopexit ]
  %872 = getelementptr inbounds double, ptr %36, i64 %indvars.iv1124
  store double %857, ptr %872, align 8, !tbaa !9
  %873 = getelementptr inbounds double, ptr %37, i64 %indvars.iv1124
  store double 0.000000e+00, ptr %873, align 8, !tbaa !9
  %874 = getelementptr double, ptr %7, i64 %indvars.iv1124
  store double %857, ptr %874, align 8, !tbaa !9
  %875 = getelementptr double, ptr %8, i64 %indvars.iv1124
  store double 0.000000e+00, ptr %875, align 8, !tbaa !9
  %indvars.iv.next1125.1 = add nuw nsw i64 %indvars.iv1124, 2
  %876 = getelementptr inbounds double, ptr %36, i64 %indvars.iv.next1125.1
  store double %857, ptr %876, align 8, !tbaa !9
  %877 = getelementptr inbounds double, ptr %37, i64 %indvars.iv.next1125.1
  store double 0.000000e+00, ptr %877, align 8, !tbaa !9
  %indvars.iv.next1125.2 = add nuw nsw i64 %indvars.iv1124, 3
  %878 = getelementptr inbounds double, ptr %36, i64 %indvars.iv.next1125.2
  store double %857, ptr %878, align 8, !tbaa !9
  %879 = getelementptr inbounds double, ptr %37, i64 %indvars.iv.next1125.2
  store double 0.000000e+00, ptr %879, align 8, !tbaa !9
  %indvars.iv.next1125.3 = add nuw nsw i64 %indvars.iv1124, 4
  %exitcond1129.not.3 = icmp eq i64 %indvars.iv.next1125.3, %wide.trip.count1128
  br i1 %exitcond1129.not.3, label %._crit_edge979, label %.lr.ph978, !llvm.loop !78

._crit_edge979:                                   ; preds = %.lr.ph978.prol.loopexit, %.lr.ph978, %middle.block1350, %855
  %880 = load double, ptr %12, align 8, !tbaa !9
  %881 = sub nsw i32 %858, %.1983
  %882 = sext i32 %881 to i64
  %gep981 = getelementptr double, ptr %7, i64 %882
  %883 = load double, ptr %gep981, align 8, !tbaa !9
  %884 = fneg double %880
  %885 = call double @llvm.fmuladd.f64(double %884, double %44, double %883)
  store double %885, ptr %gep981, align 8, !tbaa !9
  %886 = add nuw nsw i32 %.1983, 1
  %887 = load i32, ptr %21, align 4, !tbaa !5
  %.not869.not = icmp slt i32 %.1983, %887
  br i1 %.not869.not, label %687, label %._crit_edge986, !llvm.loop !79

._crit_edge986:                                   ; preds = %._crit_edge979, %679
  store i32 1, ptr %15, align 4, !tbaa !5
  br label %.loopexit897

.loopexit897:                                     ; preds = %._crit_edge974, %._crit_edge986
  %888 = load i32, ptr %2, align 4, !tbaa !5
  store i32 %888, ptr %21, align 4, !tbaa !5
  %.not871987 = icmp slt i32 %888, 1
  br i1 %.not871987, label %903, label %.lr.ph991.preheader

.lr.ph991.preheader:                              ; preds = %.loopexit897
  %889 = add nuw i32 %888, 1
  %wide.trip.count1134 = zext i32 %889 to i64
  br label %.lr.ph991

.lr.ph991:                                        ; preds = %.lr.ph991.preheader, %.lr.ph991
  %indvars.iv1130 = phi i64 [ 1, %.lr.ph991.preheader ], [ %indvars.iv.next1131, %.lr.ph991 ]
  %.0832989 = phi double [ 0.000000e+00, %.lr.ph991.preheader ], [ %902, %.lr.ph991 ]
  %890 = getelementptr inbounds double, ptr %36, i64 %indvars.iv1130
  %891 = load double, ptr %890, align 8, !tbaa !9
  %892 = fcmp oge double %891, 0.000000e+00
  %893 = fneg double %891
  %894 = select i1 %892, double %891, double %893
  %895 = getelementptr inbounds double, ptr %37, i64 %indvars.iv1130
  %896 = load double, ptr %895, align 8, !tbaa !9
  %897 = fcmp oge double %896, 0.000000e+00
  %898 = fneg double %896
  %899 = select i1 %897, double %896, double %898
  %900 = fadd double %894, %899
  %901 = fcmp oge double %.0832989, %900
  %902 = select i1 %901, double %.0832989, double %900
  %indvars.iv.next1131 = add nuw nsw i64 %indvars.iv1130, 1
  %exitcond1135.not = icmp eq i64 %indvars.iv.next1131, %wide.trip.count1134
  br i1 %exitcond1135.not, label %._crit_edge992, label %.lr.ph991, !llvm.loop !80

._crit_edge992:                                   ; preds = %.lr.ph991
  store double %896, ptr %25, align 8, !tbaa !9
  br label %903

903:                                              ; preds = %._crit_edge992, %.loopexit897
  %.0832.lcssa = phi double [ %902, %._crit_edge992 ], [ 0.000000e+00, %.loopexit897 ]
  %904 = fdiv double 1.000000e+00, %.0832.lcssa
  store double %904, ptr %24, align 8, !tbaa !9
  call void @dscal_(ptr noundef nonnull %2, ptr noundef nonnull %24, ptr noundef %7, ptr noundef nonnull @c__1) #7
  store double %904, ptr %24, align 8, !tbaa !9
  call void @dscal_(ptr noundef nonnull %2, ptr noundef nonnull %24, ptr noundef %8, ptr noundef nonnull @c__1) #7
  br label %905

905:                                              ; preds = %903, %.loopexit
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %32) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %31) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %30) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %29) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %28) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %26) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %23) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %22) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %21) #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

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

declare double @dnrm2_(ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #3

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

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

declare void @dlatrs_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #3

declare double @dasum_(ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #3

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

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

declare void @dladiv_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #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 nounwind willreturn memory(argmem: write)
declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #5

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare <2 x double> @llvm.fmuladd.v2f64(<2 x double>, <2 x double>, <2 x double>) #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 = { mustprogress nofree nounwind willreturn memory(write) "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #5 = { nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #6 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
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, !17, !18, !19}
!25 = distinct !{!25, !17, !19, !18}
!26 = distinct !{!26, !17}
!27 = distinct !{!27, !17}
!28 = distinct !{!28, !17}
!29 = !{!30}
!30 = distinct !{!30, !31}
!31 = distinct !{!31, !"LVerDomain"}
!32 = !{!33}
!33 = distinct !{!33, !31}
!34 = distinct !{!34, !17, !18, !19}
!35 = distinct !{!35, !17, !18}
!36 = !{!37}
!37 = distinct !{!37, !38}
!38 = distinct !{!38, !"LVerDomain"}
!39 = !{!40}
!40 = distinct !{!40, !38}
!41 = distinct !{!41, !17, !18, !19}
!42 = distinct !{!42, !17, !18}
!43 = distinct !{!43, !17}
!44 = !{!7, !7, i64 0}
!45 = distinct !{!45, !17, !18, !19}
!46 = distinct !{!46, !17, !19, !18}
!47 = distinct !{!47, !17}
!48 = !{!49}
!49 = distinct !{!49, !50}
!50 = distinct !{!50, !"LVerDomain"}
!51 = !{!52}
!52 = distinct !{!52, !50}
!53 = !{!54, !49}
!54 = distinct !{!54, !50}
!55 = !{!54}
!56 = distinct !{!56, !17, !18, !19}
!57 = distinct !{!57, !21}
!58 = distinct !{!58, !17, !18}
!59 = distinct !{!59, !17}
!60 = distinct !{!60, !17}
!61 = distinct !{!61, !17}
!62 = distinct !{!62, !21}
!63 = distinct !{!63, !17, !18, !19}
!64 = distinct !{!64, !17, !18}
!65 = distinct !{!65, !17}
!66 = distinct !{!66, !17, !67}
!67 = !{!"llvm.loop.peeled.count", i32 1}
!68 = distinct !{!68, !17}
!69 = distinct !{!69, !17}
!70 = distinct !{!70, !17}
!71 = distinct !{!71, !17}
!72 = distinct !{!72, !17, !18, !19}
!73 = distinct !{!73, !21}
!74 = distinct !{!74, !17, !18}
!75 = distinct !{!75, !17}
!76 = distinct !{!76, !17, !18, !19}
!77 = distinct !{!77, !21}
!78 = distinct !{!78, !17, !18}
!79 = distinct !{!79, !17}
!80 = distinct !{!80, !17}


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