; LLVM IR from niuyishuai/PDCABB :: LAPACK_BLAS/LAPACK (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 i64, align 8
@.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 i32 @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 i64, align 8
  %34 = alloca i64, align 8
  %35 = alloca i64, align 8
  %36 = alloca i64, align 8
  %37 = alloca i64, align 8
  %38 = alloca i64, align 8
  %39 = alloca i64, align 8
  %40 = alloca i64, align 8
  %41 = alloca double, align 8
  %42 = alloca double, align 8
  %43 = alloca double, align 8
  %44 = alloca double, align 8
  %45 = alloca i64, align 8
  %46 = alloca i64, align 8
  %47 = alloca double, align 8
  %48 = alloca double, align 8
  %49 = alloca double, align 8
  %50 = alloca i64, align 8
  %51 = alloca i64, align 8
  %52 = alloca i64, align 8
  %53 = alloca double, align 8
  %54 = alloca double, align 8
  %55 = alloca double, align 8
  %56 = alloca double, align 8
  %57 = alloca double, align 8
  %58 = alloca double, align 8
  %59 = alloca i64, align 8
  %60 = alloca i64, align 8
  %61 = alloca double, align 8
  %62 = alloca double, align 8
  %63 = alloca double, align 8
  %64 = alloca double, align 8
  %65 = alloca [1 x i8], align 1
  %66 = alloca double, align 8
  %67 = alloca double, align 8
  %68 = alloca double, align 8
  %69 = alloca double, align 8
  %70 = alloca double, align 8
  %71 = alloca [1 x i8], align 1
  %72 = alloca double, align 8
  %73 = alloca double, align 8
  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 8, ptr %33) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #5
  call void @llvm.lifetime.start.p0(i64 8, 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 8, ptr %49) #5
  call void @llvm.lifetime.start.p0(i64 8, 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 8, ptr %55) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %56) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %57) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %58) #5
  call void @llvm.lifetime.start.p0(i64 8, 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 1, 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 8, ptr %69) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %70) #5
  call void @llvm.lifetime.start.p0(i64 1, ptr %71) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %72) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %73) #5
  %74 = load ptr, ptr %21, align 8, !tbaa !5
  %75 = load i64, ptr %74, align 8, !tbaa !9
  store i64 %75, ptr %35, align 8, !tbaa !9
  %76 = load i64, ptr %35, align 8, !tbaa !9
  %77 = add nsw i64 1, %76
  store i64 %77, ptr %36, align 8, !tbaa !9
  %78 = load i64, ptr %36, align 8, !tbaa !9
  %79 = load ptr, ptr %20, align 8, !tbaa !5
  %80 = sub i64 0, %78
  %81 = getelementptr inbounds double, ptr %79, i64 %80
  store ptr %81, ptr %20, align 8, !tbaa !5
  %82 = load ptr, ptr %24, align 8, !tbaa !5
  %83 = getelementptr inbounds double, ptr %82, i32 -1
  store ptr %83, ptr %24, align 8, !tbaa !5
  %84 = load ptr, ptr %25, align 8, !tbaa !5
  %85 = getelementptr inbounds double, ptr %84, i32 -1
  store ptr %85, ptr %25, align 8, !tbaa !5
  %86 = load ptr, ptr %27, align 8, !tbaa !5
  %87 = load i64, ptr %86, align 8, !tbaa !9
  store i64 %87, ptr %33, align 8, !tbaa !9
  %88 = load i64, ptr %33, align 8, !tbaa !9
  %89 = add nsw i64 1, %88
  store i64 %89, ptr %34, align 8, !tbaa !9
  %90 = load i64, ptr %34, align 8, !tbaa !9
  %91 = load ptr, ptr %26, align 8, !tbaa !5
  %92 = sub i64 0, %90
  %93 = getelementptr inbounds double, ptr %91, i64 %92
  store ptr %93, ptr %26, align 8, !tbaa !5
  %94 = load ptr, ptr %28, align 8, !tbaa !5
  %95 = getelementptr inbounds double, ptr %94, i32 -1
  store ptr %95, ptr %28, align 8, !tbaa !5
  %96 = load ptr, ptr %32, align 8, !tbaa !5
  store i64 0, ptr %96, align 8, !tbaa !9
  %97 = load ptr, ptr %19, align 8, !tbaa !5
  %98 = load i64, ptr %97, align 8, !tbaa !9
  %99 = sitofp i64 %98 to double
  %100 = call double @sqrt(double noundef %99) #5
  store double %100, ptr %67, align 8, !tbaa !11
  %101 = load double, ptr %67, align 8, !tbaa !11
  %102 = fdiv double 1.000000e-01, %101
  store double %102, ptr %73, align 8, !tbaa !11
  store double 1.000000e+00, ptr %41, align 8, !tbaa !11
  %103 = load ptr, ptr %29, align 8, !tbaa !5
  %104 = load double, ptr %103, align 8, !tbaa !11
  %105 = load double, ptr %67, align 8, !tbaa !11
  %106 = fmul double %104, %105
  store double %106, ptr %42, align 8, !tbaa !11
  %107 = load double, ptr %41, align 8, !tbaa !11
  %108 = load double, ptr %42, align 8, !tbaa !11
  %109 = fcmp oge double %107, %108
  br i1 %109, label %110, label %112

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

112:                                              ; preds = %16
  %113 = load double, ptr %42, align 8, !tbaa !11
  br label %114

114:                                              ; preds = %112, %110
  %115 = phi double [ %111, %110 ], [ %113, %112 ]
  %116 = load ptr, ptr %30, align 8, !tbaa !5
  %117 = load double, ptr %116, align 8, !tbaa !11
  %118 = fmul double %115, %117
  store double %118, ptr %72, align 8, !tbaa !11
  %119 = load ptr, ptr %19, align 8, !tbaa !5
  %120 = load i64, ptr %119, align 8, !tbaa !9
  store i64 %120, ptr %37, align 8, !tbaa !9
  store i64 1, ptr %46, align 8, !tbaa !9
  br label %121

121:                                              ; preds = %170, %114
  %122 = load i64, ptr %46, align 8, !tbaa !9
  %123 = load i64, ptr %37, align 8, !tbaa !9
  %124 = icmp sle i64 %122, %123
  br i1 %124, label %125, label %173

125:                                              ; preds = %121
  %126 = load i64, ptr %46, align 8, !tbaa !9
  %127 = sub nsw i64 %126, 1
  store i64 %127, ptr %38, align 8, !tbaa !9
  store i64 1, ptr %45, align 8, !tbaa !9
  br label %128

128:                                              ; preds = %148, %125
  %129 = load i64, ptr %45, align 8, !tbaa !9
  %130 = load i64, ptr %38, align 8, !tbaa !9
  %131 = icmp sle i64 %129, %130
  br i1 %131, label %132, label %151

132:                                              ; preds = %128
  %133 = load ptr, ptr %20, align 8, !tbaa !5
  %134 = load i64, ptr %45, align 8, !tbaa !9
  %135 = load i64, ptr %46, align 8, !tbaa !9
  %136 = load i64, ptr %35, align 8, !tbaa !9
  %137 = mul nsw i64 %135, %136
  %138 = add nsw i64 %134, %137
  %139 = getelementptr inbounds double, ptr %133, i64 %138
  %140 = load double, ptr %139, align 8, !tbaa !11
  %141 = load ptr, ptr %26, align 8, !tbaa !5
  %142 = load i64, ptr %45, align 8, !tbaa !9
  %143 = load i64, ptr %46, align 8, !tbaa !9
  %144 = load i64, ptr %33, align 8, !tbaa !9
  %145 = mul nsw i64 %143, %144
  %146 = add nsw i64 %142, %145
  %147 = getelementptr inbounds double, ptr %141, i64 %146
  store double %140, ptr %147, align 8, !tbaa !11
  br label %148

148:                                              ; preds = %132
  %149 = load i64, ptr %45, align 8, !tbaa !9
  %150 = add nsw i64 %149, 1
  store i64 %150, ptr %45, align 8, !tbaa !9
  br label %128, !llvm.loop !13

151:                                              ; preds = %128
  %152 = load ptr, ptr %20, align 8, !tbaa !5
  %153 = load i64, ptr %46, align 8, !tbaa !9
  %154 = load i64, ptr %46, align 8, !tbaa !9
  %155 = load i64, ptr %35, align 8, !tbaa !9
  %156 = mul nsw i64 %154, %155
  %157 = add nsw i64 %153, %156
  %158 = getelementptr inbounds double, ptr %152, i64 %157
  %159 = load double, ptr %158, align 8, !tbaa !11
  %160 = load ptr, ptr %22, align 8, !tbaa !5
  %161 = load double, ptr %160, align 8, !tbaa !11
  %162 = fsub double %159, %161
  %163 = load ptr, ptr %26, align 8, !tbaa !5
  %164 = load i64, ptr %46, align 8, !tbaa !9
  %165 = load i64, ptr %46, align 8, !tbaa !9
  %166 = load i64, ptr %33, align 8, !tbaa !9
  %167 = mul nsw i64 %165, %166
  %168 = add nsw i64 %164, %167
  %169 = getelementptr inbounds double, ptr %163, i64 %168
  store double %162, ptr %169, align 8, !tbaa !11
  br label %170

170:                                              ; preds = %151
  %171 = load i64, ptr %46, align 8, !tbaa !9
  %172 = add nsw i64 %171, 1
  store i64 %172, ptr %46, align 8, !tbaa !9
  br label %121, !llvm.loop !15

173:                                              ; preds = %121
  %174 = load ptr, ptr %23, align 8, !tbaa !5
  %175 = load double, ptr %174, align 8, !tbaa !11
  %176 = fcmp oeq double %175, 0.000000e+00
  br i1 %176, label %177, label %731

177:                                              ; preds = %173
  %178 = load ptr, ptr %18, align 8, !tbaa !5
  %179 = load i64, ptr %178, align 8, !tbaa !9
  %180 = icmp ne i64 %179, 0
  br i1 %180, label %181, label %198

181:                                              ; preds = %177
  %182 = load ptr, ptr %19, align 8, !tbaa !5
  %183 = load i64, ptr %182, align 8, !tbaa !9
  store i64 %183, ptr %37, align 8, !tbaa !9
  store i64 1, ptr %45, align 8, !tbaa !9
  br label %184

184:                                              ; preds = %194, %181
  %185 = load i64, ptr %45, align 8, !tbaa !9
  %186 = load i64, ptr %37, align 8, !tbaa !9
  %187 = icmp sle i64 %185, %186
  br i1 %187, label %188, label %197

188:                                              ; preds = %184
  %189 = load ptr, ptr %29, align 8, !tbaa !5
  %190 = load double, ptr %189, align 8, !tbaa !11
  %191 = load ptr, ptr %24, align 8, !tbaa !5
  %192 = load i64, ptr %45, align 8, !tbaa !9
  %193 = getelementptr inbounds double, ptr %191, i64 %192
  store double %190, ptr %193, align 8, !tbaa !11
  br label %194

194:                                              ; preds = %188
  %195 = load i64, ptr %45, align 8, !tbaa !9
  %196 = add nsw i64 %195, 1
  store i64 %196, ptr %45, align 8, !tbaa !9
  br label %184, !llvm.loop !16

197:                                              ; preds = %184
  br label %221

198:                                              ; preds = %177
  %199 = load ptr, ptr %19, align 8, !tbaa !5
  %200 = load ptr, ptr %24, align 8, !tbaa !5
  %201 = getelementptr inbounds double, ptr %200, i64 1
  %202 = call double @f2c_dnrm2(ptr noundef %199, ptr noundef %201, ptr noundef @c__1)
  store double %202, ptr %68, align 8, !tbaa !11
  %203 = load ptr, ptr %29, align 8, !tbaa !5
  %204 = load double, ptr %203, align 8, !tbaa !11
  %205 = load double, ptr %67, align 8, !tbaa !11
  %206 = fmul double %204, %205
  %207 = load double, ptr %68, align 8, !tbaa !11
  %208 = load double, ptr %72, align 8, !tbaa !11
  %209 = fcmp oge double %207, %208
  br i1 %209, label %210, label %212

210:                                              ; preds = %198
  %211 = load double, ptr %68, align 8, !tbaa !11
  br label %214

212:                                              ; preds = %198
  %213 = load double, ptr %72, align 8, !tbaa !11
  br label %214

214:                                              ; preds = %212, %210
  %215 = phi double [ %211, %210 ], [ %213, %212 ]
  %216 = fdiv double %206, %215
  store double %216, ptr %41, align 8, !tbaa !11
  %217 = load ptr, ptr %19, align 8, !tbaa !5
  %218 = load ptr, ptr %24, align 8, !tbaa !5
  %219 = getelementptr inbounds double, ptr %218, i64 1
  %220 = call i32 @f2c_dscal(ptr noundef %217, ptr noundef %41, ptr noundef %219, ptr noundef @c__1)
  br label %221

221:                                              ; preds = %214, %197
  %222 = load ptr, ptr %17, align 8, !tbaa !5
  %223 = load i64, ptr %222, align 8, !tbaa !9
  %224 = icmp ne i64 %223, 0
  br i1 %224, label %225, label %437

225:                                              ; preds = %221
  %226 = load ptr, ptr %19, align 8, !tbaa !5
  %227 = load i64, ptr %226, align 8, !tbaa !9
  %228 = sub nsw i64 %227, 1
  store i64 %228, ptr %37, align 8, !tbaa !9
  store i64 1, ptr %45, align 8, !tbaa !9
  br label %229

229:                                              ; preds = %408, %225
  %230 = load i64, ptr %45, align 8, !tbaa !9
  %231 = load i64, ptr %37, align 8, !tbaa !9
  %232 = icmp sle i64 %230, %231
  br i1 %232, label %233, label %411

233:                                              ; preds = %229
  %234 = load ptr, ptr %20, align 8, !tbaa !5
  %235 = load i64, ptr %45, align 8, !tbaa !9
  %236 = add nsw i64 %235, 1
  %237 = load i64, ptr %45, align 8, !tbaa !9
  %238 = load i64, ptr %35, align 8, !tbaa !9
  %239 = mul nsw i64 %237, %238
  %240 = add nsw i64 %236, %239
  %241 = getelementptr inbounds double, ptr %234, i64 %240
  %242 = load double, ptr %241, align 8, !tbaa !11
  store double %242, ptr %54, align 8, !tbaa !11
  %243 = load ptr, ptr %26, align 8, !tbaa !5
  %244 = load i64, ptr %45, align 8, !tbaa !9
  %245 = load i64, ptr %45, align 8, !tbaa !9
  %246 = load i64, ptr %33, align 8, !tbaa !9
  %247 = mul nsw i64 %245, %246
  %248 = add nsw i64 %244, %247
  %249 = getelementptr inbounds double, ptr %243, i64 %248
  %250 = load double, ptr %249, align 8, !tbaa !11
  store double %250, ptr %41, align 8, !tbaa !11
  %251 = load double, ptr %41, align 8, !tbaa !11
  %252 = fcmp oge double %251, 0.000000e+00
  br i1 %252, label %253, label %255

253:                                              ; preds = %233
  %254 = load double, ptr %41, align 8, !tbaa !11
  br label %258

255:                                              ; preds = %233
  %256 = load double, ptr %41, align 8, !tbaa !11
  %257 = fneg double %256
  br label %258

258:                                              ; preds = %255, %253
  %259 = phi double [ %254, %253 ], [ %257, %255 ]
  %260 = load double, ptr %54, align 8, !tbaa !11
  %261 = fcmp oge double %260, 0.000000e+00
  br i1 %261, label %262, label %264

262:                                              ; preds = %258
  %263 = load double, ptr %54, align 8, !tbaa !11
  br label %267

264:                                              ; preds = %258
  %265 = load double, ptr %54, align 8, !tbaa !11
  %266 = fneg double %265
  br label %267

267:                                              ; preds = %264, %262
  %268 = phi double [ %263, %262 ], [ %266, %264 ]
  %269 = fcmp olt double %259, %268
  br i1 %269, label %270, label %339

270:                                              ; preds = %267
  %271 = load ptr, ptr %26, align 8, !tbaa !5
  %272 = load i64, ptr %45, align 8, !tbaa !9
  %273 = load i64, ptr %45, align 8, !tbaa !9
  %274 = load i64, ptr %33, align 8, !tbaa !9
  %275 = mul nsw i64 %273, %274
  %276 = add nsw i64 %272, %275
  %277 = getelementptr inbounds double, ptr %271, i64 %276
  %278 = load double, ptr %277, align 8, !tbaa !11
  %279 = load double, ptr %54, align 8, !tbaa !11
  %280 = fdiv double %278, %279
  store double %280, ptr %48, align 8, !tbaa !11
  %281 = load double, ptr %54, align 8, !tbaa !11
  %282 = load ptr, ptr %26, align 8, !tbaa !5
  %283 = load i64, ptr %45, align 8, !tbaa !9
  %284 = load i64, ptr %45, align 8, !tbaa !9
  %285 = load i64, ptr %33, align 8, !tbaa !9
  %286 = mul nsw i64 %284, %285
  %287 = add nsw i64 %283, %286
  %288 = getelementptr inbounds double, ptr %282, i64 %287
  store double %281, ptr %288, align 8, !tbaa !11
  %289 = load ptr, ptr %19, align 8, !tbaa !5
  %290 = load i64, ptr %289, align 8, !tbaa !9
  store i64 %290, ptr %38, align 8, !tbaa !9
  %291 = load i64, ptr %45, align 8, !tbaa !9
  %292 = add nsw i64 %291, 1
  store i64 %292, ptr %46, align 8, !tbaa !9
  br label %293

293:                                              ; preds = %335, %270
  %294 = load i64, ptr %46, align 8, !tbaa !9
  %295 = load i64, ptr %38, align 8, !tbaa !9
  %296 = icmp sle i64 %294, %295
  br i1 %296, label %297, label %338

297:                                              ; preds = %293
  %298 = load ptr, ptr %26, align 8, !tbaa !5
  %299 = load i64, ptr %45, align 8, !tbaa !9
  %300 = add nsw i64 %299, 1
  %301 = load i64, ptr %46, align 8, !tbaa !9
  %302 = load i64, ptr %33, align 8, !tbaa !9
  %303 = mul nsw i64 %301, %302
  %304 = add nsw i64 %300, %303
  %305 = getelementptr inbounds double, ptr %298, i64 %304
  %306 = load double, ptr %305, align 8, !tbaa !11
  store double %306, ptr %61, align 8, !tbaa !11
  %307 = load ptr, ptr %26, align 8, !tbaa !5
  %308 = load i64, ptr %45, align 8, !tbaa !9
  %309 = load i64, ptr %46, align 8, !tbaa !9
  %310 = load i64, ptr %33, align 8, !tbaa !9
  %311 = mul nsw i64 %309, %310
  %312 = add nsw i64 %308, %311
  %313 = getelementptr inbounds double, ptr %307, i64 %312
  %314 = load double, ptr %313, align 8, !tbaa !11
  %315 = load double, ptr %48, align 8, !tbaa !11
  %316 = load double, ptr %61, align 8, !tbaa !11
  %317 = fneg double %315
  %318 = call double @llvm.fmuladd.f64(double %317, double %316, double %314)
  %319 = load ptr, ptr %26, align 8, !tbaa !5
  %320 = load i64, ptr %45, align 8, !tbaa !9
  %321 = add nsw i64 %320, 1
  %322 = load i64, ptr %46, align 8, !tbaa !9
  %323 = load i64, ptr %33, align 8, !tbaa !9
  %324 = mul nsw i64 %322, %323
  %325 = add nsw i64 %321, %324
  %326 = getelementptr inbounds double, ptr %319, i64 %325
  store double %318, ptr %326, align 8, !tbaa !11
  %327 = load double, ptr %61, align 8, !tbaa !11
  %328 = load ptr, ptr %26, align 8, !tbaa !5
  %329 = load i64, ptr %45, align 8, !tbaa !9
  %330 = load i64, ptr %46, align 8, !tbaa !9
  %331 = load i64, ptr %33, align 8, !tbaa !9
  %332 = mul nsw i64 %330, %331
  %333 = add nsw i64 %329, %332
  %334 = getelementptr inbounds double, ptr %328, i64 %333
  store double %327, ptr %334, align 8, !tbaa !11
  br label %335

335:                                              ; preds = %297
  %336 = load i64, ptr %46, align 8, !tbaa !9
  %337 = add nsw i64 %336, 1
  store i64 %337, ptr %46, align 8, !tbaa !9
  br label %293, !llvm.loop !17

338:                                              ; preds = %293
  br label %407

339:                                              ; preds = %267
  %340 = load ptr, ptr %26, align 8, !tbaa !5
  %341 = load i64, ptr %45, align 8, !tbaa !9
  %342 = load i64, ptr %45, align 8, !tbaa !9
  %343 = load i64, ptr %33, align 8, !tbaa !9
  %344 = mul nsw i64 %342, %343
  %345 = add nsw i64 %341, %344
  %346 = getelementptr inbounds double, ptr %340, i64 %345
  %347 = load double, ptr %346, align 8, !tbaa !11
  %348 = fcmp oeq double %347, 0.000000e+00
  br i1 %348, label %349, label %359

349:                                              ; preds = %339
  %350 = load ptr, ptr %29, align 8, !tbaa !5
  %351 = load double, ptr %350, align 8, !tbaa !11
  %352 = load ptr, ptr %26, align 8, !tbaa !5
  %353 = load i64, ptr %45, align 8, !tbaa !9
  %354 = load i64, ptr %45, align 8, !tbaa !9
  %355 = load i64, ptr %33, align 8, !tbaa !9
  %356 = mul nsw i64 %354, %355
  %357 = add nsw i64 %353, %356
  %358 = getelementptr inbounds double, ptr %352, i64 %357
  store double %351, ptr %358, align 8, !tbaa !11
  br label %359

359:                                              ; preds = %349, %339
  %360 = load double, ptr %54, align 8, !tbaa !11
  %361 = load ptr, ptr %26, align 8, !tbaa !5
  %362 = load i64, ptr %45, align 8, !tbaa !9
  %363 = load i64, ptr %45, align 8, !tbaa !9
  %364 = load i64, ptr %33, align 8, !tbaa !9
  %365 = mul nsw i64 %363, %364
  %366 = add nsw i64 %362, %365
  %367 = getelementptr inbounds double, ptr %361, i64 %366
  %368 = load double, ptr %367, align 8, !tbaa !11
  %369 = fdiv double %360, %368
  store double %369, ptr %48, align 8, !tbaa !11
  %370 = load double, ptr %48, align 8, !tbaa !11
  %371 = fcmp une double %370, 0.000000e+00
  br i1 %371, label %372, label %406

372:                                              ; preds = %359
  %373 = load ptr, ptr %19, align 8, !tbaa !5
  %374 = load i64, ptr %373, align 8, !tbaa !9
  store i64 %374, ptr %38, align 8, !tbaa !9
  %375 = load i64, ptr %45, align 8, !tbaa !9
  %376 = add nsw i64 %375, 1
  store i64 %376, ptr %46, align 8, !tbaa !9
  br label %377

377:                                              ; preds = %402, %372
  %378 = load i64, ptr %46, align 8, !tbaa !9
  %379 = load i64, ptr %38, align 8, !tbaa !9
  %380 = icmp sle i64 %378, %379
  br i1 %380, label %381, label %405

381:                                              ; preds = %377
  %382 = load double, ptr %48, align 8, !tbaa !11
  %383 = load ptr, ptr %26, align 8, !tbaa !5
  %384 = load i64, ptr %45, align 8, !tbaa !9
  %385 = load i64, ptr %46, align 8, !tbaa !9
  %386 = load i64, ptr %33, align 8, !tbaa !9
  %387 = mul nsw i64 %385, %386
  %388 = add nsw i64 %384, %387
  %389 = getelementptr inbounds double, ptr %383, i64 %388
  %390 = load double, ptr %389, align 8, !tbaa !11
  %391 = load ptr, ptr %26, align 8, !tbaa !5
  %392 = load i64, ptr %45, align 8, !tbaa !9
  %393 = add nsw i64 %392, 1
  %394 = load i64, ptr %46, align 8, !tbaa !9
  %395 = load i64, ptr %33, align 8, !tbaa !9
  %396 = mul nsw i64 %394, %395
  %397 = add nsw i64 %393, %396
  %398 = getelementptr inbounds double, ptr %391, i64 %397
  %399 = load double, ptr %398, align 8, !tbaa !11
  %400 = fneg double %382
  %401 = call double @llvm.fmuladd.f64(double %400, double %390, double %399)
  store double %401, ptr %398, align 8, !tbaa !11
  br label %402

402:                                              ; preds = %381
  %403 = load i64, ptr %46, align 8, !tbaa !9
  %404 = add nsw i64 %403, 1
  store i64 %404, ptr %46, align 8, !tbaa !9
  br label %377, !llvm.loop !18

405:                                              ; preds = %377
  br label %406

406:                                              ; preds = %405, %359
  br label %407

407:                                              ; preds = %406, %338
  br label %408

408:                                              ; preds = %407
  %409 = load i64, ptr %45, align 8, !tbaa !9
  %410 = add nsw i64 %409, 1
  store i64 %410, ptr %45, align 8, !tbaa !9
  br label %229, !llvm.loop !19

411:                                              ; preds = %229
  %412 = load ptr, ptr %26, align 8, !tbaa !5
  %413 = load ptr, ptr %19, align 8, !tbaa !5
  %414 = load i64, ptr %413, align 8, !tbaa !9
  %415 = load ptr, ptr %19, align 8, !tbaa !5
  %416 = load i64, ptr %415, align 8, !tbaa !9
  %417 = load i64, ptr %33, align 8, !tbaa !9
  %418 = mul nsw i64 %416, %417
  %419 = add nsw i64 %414, %418
  %420 = getelementptr inbounds double, ptr %412, i64 %419
  %421 = load double, ptr %420, align 8, !tbaa !11
  %422 = fcmp oeq double %421, 0.000000e+00
  br i1 %422, label %423, label %435

423:                                              ; preds = %411
  %424 = load ptr, ptr %29, align 8, !tbaa !5
  %425 = load double, ptr %424, align 8, !tbaa !11
  %426 = load ptr, ptr %26, align 8, !tbaa !5
  %427 = load ptr, ptr %19, align 8, !tbaa !5
  %428 = load i64, ptr %427, align 8, !tbaa !9
  %429 = load ptr, ptr %19, align 8, !tbaa !5
  %430 = load i64, ptr %429, align 8, !tbaa !9
  %431 = load i64, ptr %33, align 8, !tbaa !9
  %432 = mul nsw i64 %430, %431
  %433 = add nsw i64 %428, %432
  %434 = getelementptr inbounds double, ptr %426, i64 %433
  store double %425, ptr %434, align 8, !tbaa !11
  br label %435

435:                                              ; preds = %423, %411
  %436 = getelementptr inbounds [1 x i8], ptr %65, i64 0, i64 0
  store i8 78, ptr %436, align 1, !tbaa !20
  br label %633

437:                                              ; preds = %221
  %438 = load ptr, ptr %19, align 8, !tbaa !5
  %439 = load i64, ptr %438, align 8, !tbaa !9
  store i64 %439, ptr %46, align 8, !tbaa !9
  br label %440

440:                                              ; preds = %614, %437
  %441 = load i64, ptr %46, align 8, !tbaa !9
  %442 = icmp sge i64 %441, 2
  br i1 %442, label %443, label %617

443:                                              ; preds = %440
  %444 = load ptr, ptr %20, align 8, !tbaa !5
  %445 = load i64, ptr %46, align 8, !tbaa !9
  %446 = load i64, ptr %46, align 8, !tbaa !9
  %447 = sub nsw i64 %446, 1
  %448 = load i64, ptr %35, align 8, !tbaa !9
  %449 = mul nsw i64 %447, %448
  %450 = add nsw i64 %445, %449
  %451 = getelementptr inbounds double, ptr %444, i64 %450
  %452 = load double, ptr %451, align 8, !tbaa !11
  store double %452, ptr %55, align 8, !tbaa !11
  %453 = load ptr, ptr %26, align 8, !tbaa !5
  %454 = load i64, ptr %46, align 8, !tbaa !9
  %455 = load i64, ptr %46, align 8, !tbaa !9
  %456 = load i64, ptr %33, align 8, !tbaa !9
  %457 = mul nsw i64 %455, %456
  %458 = add nsw i64 %454, %457
  %459 = getelementptr inbounds double, ptr %453, i64 %458
  %460 = load double, ptr %459, align 8, !tbaa !11
  store double %460, ptr %41, align 8, !tbaa !11
  %461 = load double, ptr %41, align 8, !tbaa !11
  %462 = fcmp oge double %461, 0.000000e+00
  br i1 %462, label %463, label %465

463:                                              ; preds = %443
  %464 = load double, ptr %41, align 8, !tbaa !11
  br label %468

465:                                              ; preds = %443
  %466 = load double, ptr %41, align 8, !tbaa !11
  %467 = fneg double %466
  br label %468

468:                                              ; preds = %465, %463
  %469 = phi double [ %464, %463 ], [ %467, %465 ]
  %470 = load double, ptr %55, align 8, !tbaa !11
  %471 = fcmp oge double %470, 0.000000e+00
  br i1 %471, label %472, label %474

472:                                              ; preds = %468
  %473 = load double, ptr %55, align 8, !tbaa !11
  br label %477

474:                                              ; preds = %468
  %475 = load double, ptr %55, align 8, !tbaa !11
  %476 = fneg double %475
  br label %477

477:                                              ; preds = %474, %472
  %478 = phi double [ %473, %472 ], [ %476, %474 ]
  %479 = fcmp olt double %469, %478
  br i1 %479, label %480, label %547

480:                                              ; preds = %477
  %481 = load ptr, ptr %26, align 8, !tbaa !5
  %482 = load i64, ptr %46, align 8, !tbaa !9
  %483 = load i64, ptr %46, align 8, !tbaa !9
  %484 = load i64, ptr %33, align 8, !tbaa !9
  %485 = mul nsw i64 %483, %484
  %486 = add nsw i64 %482, %485
  %487 = getelementptr inbounds double, ptr %481, i64 %486
  %488 = load double, ptr %487, align 8, !tbaa !11
  %489 = load double, ptr %55, align 8, !tbaa !11
  %490 = fdiv double %488, %489
  store double %490, ptr %48, align 8, !tbaa !11
  %491 = load double, ptr %55, align 8, !tbaa !11
  %492 = load ptr, ptr %26, align 8, !tbaa !5
  %493 = load i64, ptr %46, align 8, !tbaa !9
  %494 = load i64, ptr %46, align 8, !tbaa !9
  %495 = load i64, ptr %33, align 8, !tbaa !9
  %496 = mul nsw i64 %494, %495
  %497 = add nsw i64 %493, %496
  %498 = getelementptr inbounds double, ptr %492, i64 %497
  store double %491, ptr %498, align 8, !tbaa !11
  %499 = load i64, ptr %46, align 8, !tbaa !9
  %500 = sub nsw i64 %499, 1
  store i64 %500, ptr %37, align 8, !tbaa !9
  store i64 1, ptr %45, align 8, !tbaa !9
  br label %501

501:                                              ; preds = %543, %480
  %502 = load i64, ptr %45, align 8, !tbaa !9
  %503 = load i64, ptr %37, align 8, !tbaa !9
  %504 = icmp sle i64 %502, %503
  br i1 %504, label %505, label %546

505:                                              ; preds = %501
  %506 = load ptr, ptr %26, align 8, !tbaa !5
  %507 = load i64, ptr %45, align 8, !tbaa !9
  %508 = load i64, ptr %46, align 8, !tbaa !9
  %509 = sub nsw i64 %508, 1
  %510 = load i64, ptr %33, align 8, !tbaa !9
  %511 = mul nsw i64 %509, %510
  %512 = add nsw i64 %507, %511
  %513 = getelementptr inbounds double, ptr %506, i64 %512
  %514 = load double, ptr %513, align 8, !tbaa !11
  store double %514, ptr %61, align 8, !tbaa !11
  %515 = load ptr, ptr %26, align 8, !tbaa !5
  %516 = load i64, ptr %45, align 8, !tbaa !9
  %517 = load i64, ptr %46, align 8, !tbaa !9
  %518 = load i64, ptr %33, align 8, !tbaa !9
  %519 = mul nsw i64 %517, %518
  %520 = add nsw i64 %516, %519
  %521 = getelementptr inbounds double, ptr %515, i64 %520
  %522 = load double, ptr %521, align 8, !tbaa !11
  %523 = load double, ptr %48, align 8, !tbaa !11
  %524 = load double, ptr %61, align 8, !tbaa !11
  %525 = fneg double %523
  %526 = call double @llvm.fmuladd.f64(double %525, double %524, double %522)
  %527 = load ptr, ptr %26, align 8, !tbaa !5
  %528 = load i64, ptr %45, align 8, !tbaa !9
  %529 = load i64, ptr %46, align 8, !tbaa !9
  %530 = sub nsw i64 %529, 1
  %531 = load i64, ptr %33, align 8, !tbaa !9
  %532 = mul nsw i64 %530, %531
  %533 = add nsw i64 %528, %532
  %534 = getelementptr inbounds double, ptr %527, i64 %533
  store double %526, ptr %534, align 8, !tbaa !11
  %535 = load double, ptr %61, align 8, !tbaa !11
  %536 = load ptr, ptr %26, align 8, !tbaa !5
  %537 = load i64, ptr %45, align 8, !tbaa !9
  %538 = load i64, ptr %46, align 8, !tbaa !9
  %539 = load i64, ptr %33, align 8, !tbaa !9
  %540 = mul nsw i64 %538, %539
  %541 = add nsw i64 %537, %540
  %542 = getelementptr inbounds double, ptr %536, i64 %541
  store double %535, ptr %542, align 8, !tbaa !11
  br label %543

543:                                              ; preds = %505
  %544 = load i64, ptr %45, align 8, !tbaa !9
  %545 = add nsw i64 %544, 1
  store i64 %545, ptr %45, align 8, !tbaa !9
  br label %501, !llvm.loop !21

546:                                              ; preds = %501
  br label %613

547:                                              ; preds = %477
  %548 = load ptr, ptr %26, align 8, !tbaa !5
  %549 = load i64, ptr %46, align 8, !tbaa !9
  %550 = load i64, ptr %46, align 8, !tbaa !9
  %551 = load i64, ptr %33, align 8, !tbaa !9
  %552 = mul nsw i64 %550, %551
  %553 = add nsw i64 %549, %552
  %554 = getelementptr inbounds double, ptr %548, i64 %553
  %555 = load double, ptr %554, align 8, !tbaa !11
  %556 = fcmp oeq double %555, 0.000000e+00
  br i1 %556, label %557, label %567

557:                                              ; preds = %547
  %558 = load ptr, ptr %29, align 8, !tbaa !5
  %559 = load double, ptr %558, align 8, !tbaa !11
  %560 = load ptr, ptr %26, align 8, !tbaa !5
  %561 = load i64, ptr %46, align 8, !tbaa !9
  %562 = load i64, ptr %46, align 8, !tbaa !9
  %563 = load i64, ptr %33, align 8, !tbaa !9
  %564 = mul nsw i64 %562, %563
  %565 = add nsw i64 %561, %564
  %566 = getelementptr inbounds double, ptr %560, i64 %565
  store double %559, ptr %566, align 8, !tbaa !11
  br label %567

567:                                              ; preds = %557, %547
  %568 = load double, ptr %55, align 8, !tbaa !11
  %569 = load ptr, ptr %26, align 8, !tbaa !5
  %570 = load i64, ptr %46, align 8, !tbaa !9
  %571 = load i64, ptr %46, align 8, !tbaa !9
  %572 = load i64, ptr %33, align 8, !tbaa !9
  %573 = mul nsw i64 %571, %572
  %574 = add nsw i64 %570, %573
  %575 = getelementptr inbounds double, ptr %569, i64 %574
  %576 = load double, ptr %575, align 8, !tbaa !11
  %577 = fdiv double %568, %576
  store double %577, ptr %48, align 8, !tbaa !11
  %578 = load double, ptr %48, align 8, !tbaa !11
  %579 = fcmp une double %578, 0.000000e+00
  br i1 %579, label %580, label %612

580:                                              ; preds = %567
  %581 = load i64, ptr %46, align 8, !tbaa !9
  %582 = sub nsw i64 %581, 1
  store i64 %582, ptr %37, align 8, !tbaa !9
  store i64 1, ptr %45, align 8, !tbaa !9
  br label %583

583:                                              ; preds = %608, %580
  %584 = load i64, ptr %45, align 8, !tbaa !9
  %585 = load i64, ptr %37, align 8, !tbaa !9
  %586 = icmp sle i64 %584, %585
  br i1 %586, label %587, label %611

587:                                              ; preds = %583
  %588 = load double, ptr %48, align 8, !tbaa !11
  %589 = load ptr, ptr %26, align 8, !tbaa !5
  %590 = load i64, ptr %45, align 8, !tbaa !9
  %591 = load i64, ptr %46, align 8, !tbaa !9
  %592 = load i64, ptr %33, align 8, !tbaa !9
  %593 = mul nsw i64 %591, %592
  %594 = add nsw i64 %590, %593
  %595 = getelementptr inbounds double, ptr %589, i64 %594
  %596 = load double, ptr %595, align 8, !tbaa !11
  %597 = load ptr, ptr %26, align 8, !tbaa !5
  %598 = load i64, ptr %45, align 8, !tbaa !9
  %599 = load i64, ptr %46, align 8, !tbaa !9
  %600 = sub nsw i64 %599, 1
  %601 = load i64, ptr %33, align 8, !tbaa !9
  %602 = mul nsw i64 %600, %601
  %603 = add nsw i64 %598, %602
  %604 = getelementptr inbounds double, ptr %597, i64 %603
  %605 = load double, ptr %604, align 8, !tbaa !11
  %606 = fneg double %588
  %607 = call double @llvm.fmuladd.f64(double %606, double %596, double %605)
  store double %607, ptr %604, align 8, !tbaa !11
  br label %608

608:                                              ; preds = %587
  %609 = load i64, ptr %45, align 8, !tbaa !9
  %610 = add nsw i64 %609, 1
  store i64 %610, ptr %45, align 8, !tbaa !9
  br label %583, !llvm.loop !22

611:                                              ; preds = %583
  br label %612

612:                                              ; preds = %611, %567
  br label %613

613:                                              ; preds = %612, %546
  br label %614

614:                                              ; preds = %613
  %615 = load i64, ptr %46, align 8, !tbaa !9
  %616 = add nsw i64 %615, -1
  store i64 %616, ptr %46, align 8, !tbaa !9
  br label %440, !llvm.loop !23

617:                                              ; preds = %440
  %618 = load ptr, ptr %26, align 8, !tbaa !5
  %619 = load i64, ptr %33, align 8, !tbaa !9
  %620 = add nsw i64 %619, 1
  %621 = getelementptr inbounds double, ptr %618, i64 %620
  %622 = load double, ptr %621, align 8, !tbaa !11
  %623 = fcmp oeq double %622, 0.000000e+00
  br i1 %623, label %624, label %631

624:                                              ; preds = %617
  %625 = load ptr, ptr %29, align 8, !tbaa !5
  %626 = load double, ptr %625, align 8, !tbaa !11
  %627 = load ptr, ptr %26, align 8, !tbaa !5
  %628 = load i64, ptr %33, align 8, !tbaa !9
  %629 = add nsw i64 %628, 1
  %630 = getelementptr inbounds double, ptr %627, i64 %629
  store double %626, ptr %630, align 8, !tbaa !11
  br label %631

631:                                              ; preds = %624, %617
  %632 = getelementptr inbounds [1 x i8], ptr %65, i64 0, i64 0
  store i8 84, ptr %632, align 1, !tbaa !20
  br label %633

633:                                              ; preds = %631, %435
  %634 = getelementptr inbounds [1 x i8], ptr %71, i64 0, i64 0
  store i8 78, ptr %634, align 1, !tbaa !20
  %635 = load ptr, ptr %19, align 8, !tbaa !5
  %636 = load i64, ptr %635, align 8, !tbaa !9
  store i64 %636, ptr %37, align 8, !tbaa !9
  store i64 1, ptr %59, align 8, !tbaa !9
  br label %637

637:                                              ; preds = %703, %633
  %638 = load i64, ptr %59, align 8, !tbaa !9
  %639 = load i64, ptr %37, align 8, !tbaa !9
  %640 = icmp sle i64 %638, %639
  br i1 %640, label %641, label %706

641:                                              ; preds = %637
  %642 = getelementptr inbounds [1 x i8], ptr %65, i64 0, i64 0
  %643 = getelementptr inbounds [1 x i8], ptr %71, i64 0, i64 0
  %644 = load ptr, ptr %19, align 8, !tbaa !5
  %645 = load ptr, ptr %26, align 8, !tbaa !5
  %646 = load i64, ptr %34, align 8, !tbaa !9
  %647 = getelementptr inbounds double, ptr %645, i64 %646
  %648 = load ptr, ptr %27, align 8, !tbaa !5
  %649 = load ptr, ptr %24, align 8, !tbaa !5
  %650 = getelementptr inbounds double, ptr %649, i64 1
  %651 = load ptr, ptr %28, align 8, !tbaa !5
  %652 = getelementptr inbounds double, ptr %651, i64 1
  %653 = call i32 @dlatrs_(ptr noundef @.str, ptr noundef %642, ptr noundef @.str.1, ptr noundef %643, ptr noundef %644, ptr noundef %647, ptr noundef %648, ptr noundef %650, ptr noundef %64, ptr noundef %652, ptr noundef %60)
  %654 = getelementptr inbounds [1 x i8], ptr %71, i64 0, i64 0
  store i8 89, ptr %654, align 1, !tbaa !20
  %655 = load ptr, ptr %19, align 8, !tbaa !5
  %656 = load ptr, ptr %24, align 8, !tbaa !5
  %657 = getelementptr inbounds double, ptr %656, i64 1
  %658 = call double @f2c_dasum(ptr noundef %655, ptr noundef %657, ptr noundef @c__1)
  store double %658, ptr %68, align 8, !tbaa !11
  %659 = load double, ptr %68, align 8, !tbaa !11
  %660 = load double, ptr %73, align 8, !tbaa !11
  %661 = load double, ptr %64, align 8, !tbaa !11
  %662 = fmul double %660, %661
  %663 = fcmp oge double %659, %662
  br i1 %663, label %664, label %665

664:                                              ; preds = %641
  br label %708

665:                                              ; preds = %641
  %666 = load ptr, ptr %29, align 8, !tbaa !5
  %667 = load double, ptr %666, align 8, !tbaa !11
  %668 = load double, ptr %67, align 8, !tbaa !11
  %669 = fadd double %668, 1.000000e+00
  %670 = fdiv double %667, %669
  store double %670, ptr %61, align 8, !tbaa !11
  %671 = load ptr, ptr %29, align 8, !tbaa !5
  %672 = load double, ptr %671, align 8, !tbaa !11
  %673 = load ptr, ptr %24, align 8, !tbaa !5
  %674 = getelementptr inbounds double, ptr %673, i64 1
  store double %672, ptr %674, align 8, !tbaa !11
  %675 = load ptr, ptr %19, align 8, !tbaa !5
  %676 = load i64, ptr %675, align 8, !tbaa !9
  store i64 %676, ptr %38, align 8, !tbaa !9
  store i64 2, ptr %45, align 8, !tbaa !9
  br label %677

677:                                              ; preds = %686, %665
  %678 = load i64, ptr %45, align 8, !tbaa !9
  %679 = load i64, ptr %38, align 8, !tbaa !9
  %680 = icmp sle i64 %678, %679
  br i1 %680, label %681, label %689

681:                                              ; preds = %677
  %682 = load double, ptr %61, align 8, !tbaa !11
  %683 = load ptr, ptr %24, align 8, !tbaa !5
  %684 = load i64, ptr %45, align 8, !tbaa !9
  %685 = getelementptr inbounds double, ptr %683, i64 %684
  store double %682, ptr %685, align 8, !tbaa !11
  br label %686

686:                                              ; preds = %681
  %687 = load i64, ptr %45, align 8, !tbaa !9
  %688 = add nsw i64 %687, 1
  store i64 %688, ptr %45, align 8, !tbaa !9
  br label %677, !llvm.loop !24

689:                                              ; preds = %677
  %690 = load ptr, ptr %29, align 8, !tbaa !5
  %691 = load double, ptr %690, align 8, !tbaa !11
  %692 = load double, ptr %67, align 8, !tbaa !11
  %693 = load ptr, ptr %24, align 8, !tbaa !5
  %694 = load ptr, ptr %19, align 8, !tbaa !5
  %695 = load i64, ptr %694, align 8, !tbaa !9
  %696 = load i64, ptr %59, align 8, !tbaa !9
  %697 = sub nsw i64 %695, %696
  %698 = add nsw i64 %697, 1
  %699 = getelementptr inbounds double, ptr %693, i64 %698
  %700 = load double, ptr %699, align 8, !tbaa !11
  %701 = fneg double %691
  %702 = call double @llvm.fmuladd.f64(double %701, double %692, double %700)
  store double %702, ptr %699, align 8, !tbaa !11
  br label %703

703:                                              ; preds = %689
  %704 = load i64, ptr %59, align 8, !tbaa !9
  %705 = add nsw i64 %704, 1
  store i64 %705, ptr %59, align 8, !tbaa !9
  br label %637, !llvm.loop !25

706:                                              ; preds = %637
  %707 = load ptr, ptr %32, align 8, !tbaa !5
  store i64 1, ptr %707, align 8, !tbaa !9
  br label %708

708:                                              ; preds = %706, %664
  %709 = load ptr, ptr %19, align 8, !tbaa !5
  %710 = load ptr, ptr %24, align 8, !tbaa !5
  %711 = getelementptr inbounds double, ptr %710, i64 1
  %712 = call i64 @f2c_idamax(ptr noundef %709, ptr noundef %711, ptr noundef @c__1)
  store i64 %712, ptr %45, align 8, !tbaa !9
  %713 = load ptr, ptr %24, align 8, !tbaa !5
  %714 = load i64, ptr %45, align 8, !tbaa !9
  %715 = getelementptr inbounds double, ptr %713, i64 %714
  %716 = load double, ptr %715, align 8, !tbaa !11
  store double %716, ptr %41, align 8, !tbaa !11
  %717 = load double, ptr %41, align 8, !tbaa !11
  %718 = fcmp oge double %717, 0.000000e+00
  br i1 %718, label %719, label %721

719:                                              ; preds = %708
  %720 = load double, ptr %41, align 8, !tbaa !11
  br label %724

721:                                              ; preds = %708
  %722 = load double, ptr %41, align 8, !tbaa !11
  %723 = fneg double %722
  br label %724

724:                                              ; preds = %721, %719
  %725 = phi double [ %720, %719 ], [ %723, %721 ]
  %726 = fdiv double 1.000000e+00, %725
  store double %726, ptr %42, align 8, !tbaa !11
  %727 = load ptr, ptr %19, align 8, !tbaa !5
  %728 = load ptr, ptr %24, align 8, !tbaa !5
  %729 = getelementptr inbounds double, ptr %728, i64 1
  %730 = call i32 @f2c_dscal(ptr noundef %727, ptr noundef %42, ptr noundef %729, ptr noundef @c__1)
  br label %2193

731:                                              ; preds = %173
  %732 = load ptr, ptr %18, align 8, !tbaa !5
  %733 = load i64, ptr %732, align 8, !tbaa !9
  %734 = icmp ne i64 %733, 0
  br i1 %734, label %735, label %755

735:                                              ; preds = %731
  %736 = load ptr, ptr %19, align 8, !tbaa !5
  %737 = load i64, ptr %736, align 8, !tbaa !9
  store i64 %737, ptr %37, align 8, !tbaa !9
  store i64 1, ptr %45, align 8, !tbaa !9
  br label %738

738:                                              ; preds = %751, %735
  %739 = load i64, ptr %45, align 8, !tbaa !9
  %740 = load i64, ptr %37, align 8, !tbaa !9
  %741 = icmp sle i64 %739, %740
  br i1 %741, label %742, label %754

742:                                              ; preds = %738
  %743 = load ptr, ptr %29, align 8, !tbaa !5
  %744 = load double, ptr %743, align 8, !tbaa !11
  %745 = load ptr, ptr %24, align 8, !tbaa !5
  %746 = load i64, ptr %45, align 8, !tbaa !9
  %747 = getelementptr inbounds double, ptr %745, i64 %746
  store double %744, ptr %747, align 8, !tbaa !11
  %748 = load ptr, ptr %25, align 8, !tbaa !5
  %749 = load i64, ptr %45, align 8, !tbaa !9
  %750 = getelementptr inbounds double, ptr %748, i64 %749
  store double 0.000000e+00, ptr %750, align 8, !tbaa !11
  br label %751

751:                                              ; preds = %742
  %752 = load i64, ptr %45, align 8, !tbaa !9
  %753 = add nsw i64 %752, 1
  store i64 %753, ptr %45, align 8, !tbaa !9
  br label %738, !llvm.loop !26

754:                                              ; preds = %738
  br label %787

755:                                              ; preds = %731
  %756 = load ptr, ptr %19, align 8, !tbaa !5
  %757 = load ptr, ptr %24, align 8, !tbaa !5
  %758 = getelementptr inbounds double, ptr %757, i64 1
  %759 = call double @f2c_dnrm2(ptr noundef %756, ptr noundef %758, ptr noundef @c__1)
  store double %759, ptr %41, align 8, !tbaa !11
  %760 = load ptr, ptr %19, align 8, !tbaa !5
  %761 = load ptr, ptr %25, align 8, !tbaa !5
  %762 = getelementptr inbounds double, ptr %761, i64 1
  %763 = call double @f2c_dnrm2(ptr noundef %760, ptr noundef %762, ptr noundef @c__1)
  store double %763, ptr %42, align 8, !tbaa !11
  %764 = call double @dlapy2_(ptr noundef %41, ptr noundef %42)
  store double %764, ptr %62, align 8, !tbaa !11
  %765 = load ptr, ptr %29, align 8, !tbaa !5
  %766 = load double, ptr %765, align 8, !tbaa !11
  %767 = load double, ptr %67, align 8, !tbaa !11
  %768 = fmul double %766, %767
  %769 = load double, ptr %62, align 8, !tbaa !11
  %770 = load double, ptr %72, align 8, !tbaa !11
  %771 = fcmp oge double %769, %770
  br i1 %771, label %772, label %774

772:                                              ; preds = %755
  %773 = load double, ptr %62, align 8, !tbaa !11
  br label %776

774:                                              ; preds = %755
  %775 = load double, ptr %72, align 8, !tbaa !11
  br label %776

776:                                              ; preds = %774, %772
  %777 = phi double [ %773, %772 ], [ %775, %774 ]
  %778 = fdiv double %768, %777
  store double %778, ptr %58, align 8, !tbaa !11
  %779 = load ptr, ptr %19, align 8, !tbaa !5
  %780 = load ptr, ptr %24, align 8, !tbaa !5
  %781 = getelementptr inbounds double, ptr %780, i64 1
  %782 = call i32 @f2c_dscal(ptr noundef %779, ptr noundef %58, ptr noundef %781, ptr noundef @c__1)
  %783 = load ptr, ptr %19, align 8, !tbaa !5
  %784 = load ptr, ptr %25, align 8, !tbaa !5
  %785 = getelementptr inbounds double, ptr %784, i64 1
  %786 = call i32 @f2c_dscal(ptr noundef %783, ptr noundef %58, ptr noundef %785, ptr noundef @c__1)
  br label %787

787:                                              ; preds = %776, %754
  %788 = load ptr, ptr %17, align 8, !tbaa !5
  %789 = load i64, ptr %788, align 8, !tbaa !9
  %790 = icmp ne i64 %789, 0
  br i1 %790, label %791, label %1245

791:                                              ; preds = %787
  %792 = load ptr, ptr %23, align 8, !tbaa !5
  %793 = load double, ptr %792, align 8, !tbaa !11
  %794 = fneg double %793
  %795 = load ptr, ptr %26, align 8, !tbaa !5
  %796 = load i64, ptr %33, align 8, !tbaa !9
  %797 = add nsw i64 %796, 2
  %798 = getelementptr inbounds double, ptr %795, i64 %797
  store double %794, ptr %798, align 8, !tbaa !11
  %799 = load ptr, ptr %19, align 8, !tbaa !5
  %800 = load i64, ptr %799, align 8, !tbaa !9
  store i64 %800, ptr %37, align 8, !tbaa !9
  store i64 2, ptr %45, align 8, !tbaa !9
  br label %801

801:                                              ; preds = %812, %791
  %802 = load i64, ptr %45, align 8, !tbaa !9
  %803 = load i64, ptr %37, align 8, !tbaa !9
  %804 = icmp sle i64 %802, %803
  br i1 %804, label %805, label %815

805:                                              ; preds = %801
  %806 = load ptr, ptr %26, align 8, !tbaa !5
  %807 = load i64, ptr %45, align 8, !tbaa !9
  %808 = add nsw i64 %807, 1
  %809 = load i64, ptr %33, align 8, !tbaa !9
  %810 = add nsw i64 %808, %809
  %811 = getelementptr inbounds double, ptr %806, i64 %810
  store double 0.000000e+00, ptr %811, align 8, !tbaa !11
  br label %812

812:                                              ; preds = %805
  %813 = load i64, ptr %45, align 8, !tbaa !9
  %814 = add nsw i64 %813, 1
  store i64 %814, ptr %45, align 8, !tbaa !9
  br label %801, !llvm.loop !27

815:                                              ; preds = %801
  %816 = load ptr, ptr %19, align 8, !tbaa !5
  %817 = load i64, ptr %816, align 8, !tbaa !9
  %818 = sub nsw i64 %817, 1
  store i64 %818, ptr %37, align 8, !tbaa !9
  store i64 1, ptr %45, align 8, !tbaa !9
  br label %819

819:                                              ; preds = %1198, %815
  %820 = load i64, ptr %45, align 8, !tbaa !9
  %821 = load i64, ptr %37, align 8, !tbaa !9
  %822 = icmp sle i64 %820, %821
  br i1 %822, label %823, label %1201

823:                                              ; preds = %819
  %824 = load ptr, ptr %26, align 8, !tbaa !5
  %825 = load i64, ptr %45, align 8, !tbaa !9
  %826 = load i64, ptr %45, align 8, !tbaa !9
  %827 = load i64, ptr %33, align 8, !tbaa !9
  %828 = mul nsw i64 %826, %827
  %829 = add nsw i64 %825, %828
  %830 = getelementptr inbounds double, ptr %824, i64 %829
  %831 = load ptr, ptr %26, align 8, !tbaa !5
  %832 = load i64, ptr %45, align 8, !tbaa !9
  %833 = add nsw i64 %832, 1
  %834 = load i64, ptr %45, align 8, !tbaa !9
  %835 = load i64, ptr %33, align 8, !tbaa !9
  %836 = mul nsw i64 %834, %835
  %837 = add nsw i64 %833, %836
  %838 = getelementptr inbounds double, ptr %831, i64 %837
  %839 = call double @dlapy2_(ptr noundef %830, ptr noundef %838)
  store double %839, ptr %69, align 8, !tbaa !11
  %840 = load ptr, ptr %20, align 8, !tbaa !5
  %841 = load i64, ptr %45, align 8, !tbaa !9
  %842 = add nsw i64 %841, 1
  %843 = load i64, ptr %45, align 8, !tbaa !9
  %844 = load i64, ptr %35, align 8, !tbaa !9
  %845 = mul nsw i64 %843, %844
  %846 = add nsw i64 %842, %845
  %847 = getelementptr inbounds double, ptr %840, i64 %846
  %848 = load double, ptr %847, align 8, !tbaa !11
  store double %848, ptr %54, align 8, !tbaa !11
  %849 = load double, ptr %69, align 8, !tbaa !11
  %850 = load double, ptr %54, align 8, !tbaa !11
  %851 = fcmp oge double %850, 0.000000e+00
  br i1 %851, label %852, label %854

852:                                              ; preds = %823
  %853 = load double, ptr %54, align 8, !tbaa !11
  br label %857

854:                                              ; preds = %823
  %855 = load double, ptr %54, align 8, !tbaa !11
  %856 = fneg double %855
  br label %857

857:                                              ; preds = %854, %852
  %858 = phi double [ %853, %852 ], [ %856, %854 ]
  %859 = fcmp olt double %849, %858
  br i1 %859, label %860, label %1018

860:                                              ; preds = %857
  %861 = load ptr, ptr %26, align 8, !tbaa !5
  %862 = load i64, ptr %45, align 8, !tbaa !9
  %863 = load i64, ptr %45, align 8, !tbaa !9
  %864 = load i64, ptr %33, align 8, !tbaa !9
  %865 = mul nsw i64 %863, %864
  %866 = add nsw i64 %862, %865
  %867 = getelementptr inbounds double, ptr %861, i64 %866
  %868 = load double, ptr %867, align 8, !tbaa !11
  %869 = load double, ptr %54, align 8, !tbaa !11
  %870 = fdiv double %868, %869
  store double %870, ptr %57, align 8, !tbaa !11
  %871 = load ptr, ptr %26, align 8, !tbaa !5
  %872 = load i64, ptr %45, align 8, !tbaa !9
  %873 = add nsw i64 %872, 1
  %874 = load i64, ptr %45, align 8, !tbaa !9
  %875 = load i64, ptr %33, align 8, !tbaa !9
  %876 = mul nsw i64 %874, %875
  %877 = add nsw i64 %873, %876
  %878 = getelementptr inbounds double, ptr %871, i64 %877
  %879 = load double, ptr %878, align 8, !tbaa !11
  %880 = load double, ptr %54, align 8, !tbaa !11
  %881 = fdiv double %879, %880
  store double %881, ptr %56, align 8, !tbaa !11
  %882 = load double, ptr %54, align 8, !tbaa !11
  %883 = load ptr, ptr %26, align 8, !tbaa !5
  %884 = load i64, ptr %45, align 8, !tbaa !9
  %885 = load i64, ptr %45, align 8, !tbaa !9
  %886 = load i64, ptr %33, align 8, !tbaa !9
  %887 = mul nsw i64 %885, %886
  %888 = add nsw i64 %884, %887
  %889 = getelementptr inbounds double, ptr %883, i64 %888
  store double %882, ptr %889, align 8, !tbaa !11
  %890 = load ptr, ptr %26, align 8, !tbaa !5
  %891 = load i64, ptr %45, align 8, !tbaa !9
  %892 = add nsw i64 %891, 1
  %893 = load i64, ptr %45, align 8, !tbaa !9
  %894 = load i64, ptr %33, align 8, !tbaa !9
  %895 = mul nsw i64 %893, %894
  %896 = add nsw i64 %892, %895
  %897 = getelementptr inbounds double, ptr %890, i64 %896
  store double 0.000000e+00, ptr %897, align 8, !tbaa !11
  %898 = load ptr, ptr %19, align 8, !tbaa !5
  %899 = load i64, ptr %898, align 8, !tbaa !9
  store i64 %899, ptr %38, align 8, !tbaa !9
  %900 = load i64, ptr %45, align 8, !tbaa !9
  %901 = add nsw i64 %900, 1
  store i64 %901, ptr %46, align 8, !tbaa !9
  br label %902

902:                                              ; preds = %974, %860
  %903 = load i64, ptr %46, align 8, !tbaa !9
  %904 = load i64, ptr %38, align 8, !tbaa !9
  %905 = icmp sle i64 %903, %904
  br i1 %905, label %906, label %977

906:                                              ; preds = %902
  %907 = load ptr, ptr %26, align 8, !tbaa !5
  %908 = load i64, ptr %45, align 8, !tbaa !9
  %909 = add nsw i64 %908, 1
  %910 = load i64, ptr %46, align 8, !tbaa !9
  %911 = load i64, ptr %33, align 8, !tbaa !9
  %912 = mul nsw i64 %910, %911
  %913 = add nsw i64 %909, %912
  %914 = getelementptr inbounds double, ptr %907, i64 %913
  %915 = load double, ptr %914, align 8, !tbaa !11
  store double %915, ptr %61, align 8, !tbaa !11
  %916 = load ptr, ptr %26, align 8, !tbaa !5
  %917 = load i64, ptr %45, align 8, !tbaa !9
  %918 = load i64, ptr %46, align 8, !tbaa !9
  %919 = load i64, ptr %33, align 8, !tbaa !9
  %920 = mul nsw i64 %918, %919
  %921 = add nsw i64 %917, %920
  %922 = getelementptr inbounds double, ptr %916, i64 %921
  %923 = load double, ptr %922, align 8, !tbaa !11
  %924 = load double, ptr %57, align 8, !tbaa !11
  %925 = load double, ptr %61, align 8, !tbaa !11
  %926 = fneg double %924
  %927 = call double @llvm.fmuladd.f64(double %926, double %925, double %923)
  %928 = load ptr, ptr %26, align 8, !tbaa !5
  %929 = load i64, ptr %45, align 8, !tbaa !9
  %930 = add nsw i64 %929, 1
  %931 = load i64, ptr %46, align 8, !tbaa !9
  %932 = load i64, ptr %33, align 8, !tbaa !9
  %933 = mul nsw i64 %931, %932
  %934 = add nsw i64 %930, %933
  %935 = getelementptr inbounds double, ptr %928, i64 %934
  store double %927, ptr %935, align 8, !tbaa !11
  %936 = load ptr, ptr %26, align 8, !tbaa !5
  %937 = load i64, ptr %46, align 8, !tbaa !9
  %938 = add nsw i64 %937, 1
  %939 = load i64, ptr %45, align 8, !tbaa !9
  %940 = load i64, ptr %33, align 8, !tbaa !9
  %941 = mul nsw i64 %939, %940
  %942 = add nsw i64 %938, %941
  %943 = getelementptr inbounds double, ptr %936, i64 %942
  %944 = load double, ptr %943, align 8, !tbaa !11
  %945 = load double, ptr %56, align 8, !tbaa !11
  %946 = load double, ptr %61, align 8, !tbaa !11
  %947 = fneg double %945
  %948 = call double @llvm.fmuladd.f64(double %947, double %946, double %944)
  %949 = load ptr, ptr %26, align 8, !tbaa !5
  %950 = load i64, ptr %46, align 8, !tbaa !9
  %951 = add nsw i64 %950, 1
  %952 = load i64, ptr %45, align 8, !tbaa !9
  %953 = add nsw i64 %952, 1
  %954 = load i64, ptr %33, align 8, !tbaa !9
  %955 = mul nsw i64 %953, %954
  %956 = add nsw i64 %951, %955
  %957 = getelementptr inbounds double, ptr %949, i64 %956
  store double %948, ptr %957, align 8, !tbaa !11
  %958 = load double, ptr %61, align 8, !tbaa !11
  %959 = load ptr, ptr %26, align 8, !tbaa !5
  %960 = load i64, ptr %45, align 8, !tbaa !9
  %961 = load i64, ptr %46, align 8, !tbaa !9
  %962 = load i64, ptr %33, align 8, !tbaa !9
  %963 = mul nsw i64 %961, %962
  %964 = add nsw i64 %960, %963
  %965 = getelementptr inbounds double, ptr %959, i64 %964
  store double %958, ptr %965, align 8, !tbaa !11
  %966 = load ptr, ptr %26, align 8, !tbaa !5
  %967 = load i64, ptr %46, align 8, !tbaa !9
  %968 = add nsw i64 %967, 1
  %969 = load i64, ptr %45, align 8, !tbaa !9
  %970 = load i64, ptr %33, align 8, !tbaa !9
  %971 = mul nsw i64 %969, %970
  %972 = add nsw i64 %968, %971
  %973 = getelementptr inbounds double, ptr %966, i64 %972
  store double 0.000000e+00, ptr %973, align 8, !tbaa !11
  br label %974

974:                                              ; preds = %906
  %975 = load i64, ptr %46, align 8, !tbaa !9
  %976 = add nsw i64 %975, 1
  store i64 %976, ptr %46, align 8, !tbaa !9
  br label %902, !llvm.loop !28

977:                                              ; preds = %902
  %978 = load ptr, ptr %23, align 8, !tbaa !5
  %979 = load double, ptr %978, align 8, !tbaa !11
  %980 = fneg double %979
  %981 = load ptr, ptr %26, align 8, !tbaa !5
  %982 = load i64, ptr %45, align 8, !tbaa !9
  %983 = add nsw i64 %982, 2
  %984 = load i64, ptr %45, align 8, !tbaa !9
  %985 = load i64, ptr %33, align 8, !tbaa !9
  %986 = mul nsw i64 %984, %985
  %987 = add nsw i64 %983, %986
  %988 = getelementptr inbounds double, ptr %981, i64 %987
  store double %980, ptr %988, align 8, !tbaa !11
  %989 = load double, ptr %56, align 8, !tbaa !11
  %990 = load ptr, ptr %23, align 8, !tbaa !5
  %991 = load double, ptr %990, align 8, !tbaa !11
  %992 = load ptr, ptr %26, align 8, !tbaa !5
  %993 = load i64, ptr %45, align 8, !tbaa !9
  %994 = add nsw i64 %993, 1
  %995 = load i64, ptr %45, align 8, !tbaa !9
  %996 = add nsw i64 %995, 1
  %997 = load i64, ptr %33, align 8, !tbaa !9
  %998 = mul nsw i64 %996, %997
  %999 = add nsw i64 %994, %998
  %1000 = getelementptr inbounds double, ptr %992, i64 %999
  %1001 = load double, ptr %1000, align 8, !tbaa !11
  %1002 = fneg double %989
  %1003 = call double @llvm.fmuladd.f64(double %1002, double %991, double %1001)
  store double %1003, ptr %1000, align 8, !tbaa !11
  %1004 = load double, ptr %57, align 8, !tbaa !11
  %1005 = load ptr, ptr %23, align 8, !tbaa !5
  %1006 = load double, ptr %1005, align 8, !tbaa !11
  %1007 = load ptr, ptr %26, align 8, !tbaa !5
  %1008 = load i64, ptr %45, align 8, !tbaa !9
  %1009 = add nsw i64 %1008, 2
  %1010 = load i64, ptr %45, align 8, !tbaa !9
  %1011 = add nsw i64 %1010, 1
  %1012 = load i64, ptr %33, align 8, !tbaa !9
  %1013 = mul nsw i64 %1011, %1012
  %1014 = add nsw i64 %1009, %1013
  %1015 = getelementptr inbounds double, ptr %1007, i64 %1014
  %1016 = load double, ptr %1015, align 8, !tbaa !11
  %1017 = call double @llvm.fmuladd.f64(double %1004, double %1006, double %1016)
  store double %1017, ptr %1015, align 8, !tbaa !11
  br label %1166

1018:                                             ; preds = %857
  %1019 = load double, ptr %69, align 8, !tbaa !11
  %1020 = fcmp oeq double %1019, 0.000000e+00
  br i1 %1020, label %1021, label %1041

1021:                                             ; preds = %1018
  %1022 = load ptr, ptr %29, align 8, !tbaa !5
  %1023 = load double, ptr %1022, align 8, !tbaa !11
  %1024 = load ptr, ptr %26, align 8, !tbaa !5
  %1025 = load i64, ptr %45, align 8, !tbaa !9
  %1026 = load i64, ptr %45, align 8, !tbaa !9
  %1027 = load i64, ptr %33, align 8, !tbaa !9
  %1028 = mul nsw i64 %1026, %1027
  %1029 = add nsw i64 %1025, %1028
  %1030 = getelementptr inbounds double, ptr %1024, i64 %1029
  store double %1023, ptr %1030, align 8, !tbaa !11
  %1031 = load ptr, ptr %26, align 8, !tbaa !5
  %1032 = load i64, ptr %45, align 8, !tbaa !9
  %1033 = add nsw i64 %1032, 1
  %1034 = load i64, ptr %45, align 8, !tbaa !9
  %1035 = load i64, ptr %33, align 8, !tbaa !9
  %1036 = mul nsw i64 %1034, %1035
  %1037 = add nsw i64 %1033, %1036
  %1038 = getelementptr inbounds double, ptr %1031, i64 %1037
  store double 0.000000e+00, ptr %1038, align 8, !tbaa !11
  %1039 = load ptr, ptr %29, align 8, !tbaa !5
  %1040 = load double, ptr %1039, align 8, !tbaa !11
  store double %1040, ptr %69, align 8, !tbaa !11
  br label %1041

1041:                                             ; preds = %1021, %1018
  %1042 = load double, ptr %54, align 8, !tbaa !11
  %1043 = load double, ptr %69, align 8, !tbaa !11
  %1044 = fdiv double %1042, %1043
  %1045 = load double, ptr %69, align 8, !tbaa !11
  %1046 = fdiv double %1044, %1045
  store double %1046, ptr %54, align 8, !tbaa !11
  %1047 = load ptr, ptr %26, align 8, !tbaa !5
  %1048 = load i64, ptr %45, align 8, !tbaa !9
  %1049 = load i64, ptr %45, align 8, !tbaa !9
  %1050 = load i64, ptr %33, align 8, !tbaa !9
  %1051 = mul nsw i64 %1049, %1050
  %1052 = add nsw i64 %1048, %1051
  %1053 = getelementptr inbounds double, ptr %1047, i64 %1052
  %1054 = load double, ptr %1053, align 8, !tbaa !11
  %1055 = load double, ptr %54, align 8, !tbaa !11
  %1056 = fmul double %1054, %1055
  store double %1056, ptr %57, align 8, !tbaa !11
  %1057 = load ptr, ptr %26, align 8, !tbaa !5
  %1058 = load i64, ptr %45, align 8, !tbaa !9
  %1059 = add nsw i64 %1058, 1
  %1060 = load i64, ptr %45, align 8, !tbaa !9
  %1061 = load i64, ptr %33, align 8, !tbaa !9
  %1062 = mul nsw i64 %1060, %1061
  %1063 = add nsw i64 %1059, %1062
  %1064 = getelementptr inbounds double, ptr %1057, i64 %1063
  %1065 = load double, ptr %1064, align 8, !tbaa !11
  %1066 = fneg double %1065
  %1067 = load double, ptr %54, align 8, !tbaa !11
  %1068 = fmul double %1066, %1067
  store double %1068, ptr %56, align 8, !tbaa !11
  %1069 = load ptr, ptr %19, align 8, !tbaa !5
  %1070 = load i64, ptr %1069, align 8, !tbaa !9
  store i64 %1070, ptr %38, align 8, !tbaa !9
  %1071 = load i64, ptr %45, align 8, !tbaa !9
  %1072 = add nsw i64 %1071, 1
  store i64 %1072, ptr %46, align 8, !tbaa !9
  br label %1073

1073:                                             ; preds = %1149, %1041
  %1074 = load i64, ptr %46, align 8, !tbaa !9
  %1075 = load i64, ptr %38, align 8, !tbaa !9
  %1076 = icmp sle i64 %1074, %1075
  br i1 %1076, label %1077, label %1152

1077:                                             ; preds = %1073
  %1078 = load ptr, ptr %26, align 8, !tbaa !5
  %1079 = load i64, ptr %45, align 8, !tbaa !9
  %1080 = add nsw i64 %1079, 1
  %1081 = load i64, ptr %46, align 8, !tbaa !9
  %1082 = load i64, ptr %33, align 8, !tbaa !9
  %1083 = mul nsw i64 %1081, %1082
  %1084 = add nsw i64 %1080, %1083
  %1085 = getelementptr inbounds double, ptr %1078, i64 %1084
  %1086 = load double, ptr %1085, align 8, !tbaa !11
  %1087 = load double, ptr %57, align 8, !tbaa !11
  %1088 = load ptr, ptr %26, align 8, !tbaa !5
  %1089 = load i64, ptr %45, align 8, !tbaa !9
  %1090 = load i64, ptr %46, align 8, !tbaa !9
  %1091 = load i64, ptr %33, align 8, !tbaa !9
  %1092 = mul nsw i64 %1090, %1091
  %1093 = add nsw i64 %1089, %1092
  %1094 = getelementptr inbounds double, ptr %1088, i64 %1093
  %1095 = load double, ptr %1094, align 8, !tbaa !11
  %1096 = fneg double %1087
  %1097 = call double @llvm.fmuladd.f64(double %1096, double %1095, double %1086)
  %1098 = load double, ptr %56, align 8, !tbaa !11
  %1099 = load ptr, ptr %26, align 8, !tbaa !5
  %1100 = load i64, ptr %46, align 8, !tbaa !9
  %1101 = add nsw i64 %1100, 1
  %1102 = load i64, ptr %45, align 8, !tbaa !9
  %1103 = load i64, ptr %33, align 8, !tbaa !9
  %1104 = mul nsw i64 %1102, %1103
  %1105 = add nsw i64 %1101, %1104
  %1106 = getelementptr inbounds double, ptr %1099, i64 %1105
  %1107 = load double, ptr %1106, align 8, !tbaa !11
  %1108 = call double @llvm.fmuladd.f64(double %1098, double %1107, double %1097)
  %1109 = load ptr, ptr %26, align 8, !tbaa !5
  %1110 = load i64, ptr %45, align 8, !tbaa !9
  %1111 = add nsw i64 %1110, 1
  %1112 = load i64, ptr %46, align 8, !tbaa !9
  %1113 = load i64, ptr %33, align 8, !tbaa !9
  %1114 = mul nsw i64 %1112, %1113
  %1115 = add nsw i64 %1111, %1114
  %1116 = getelementptr inbounds double, ptr %1109, i64 %1115
  store double %1108, ptr %1116, align 8, !tbaa !11
  %1117 = load double, ptr %57, align 8, !tbaa !11
  %1118 = fneg double %1117
  %1119 = load ptr, ptr %26, align 8, !tbaa !5
  %1120 = load i64, ptr %46, align 8, !tbaa !9
  %1121 = add nsw i64 %1120, 1
  %1122 = load i64, ptr %45, align 8, !tbaa !9
  %1123 = load i64, ptr %33, align 8, !tbaa !9
  %1124 = mul nsw i64 %1122, %1123
  %1125 = add nsw i64 %1121, %1124
  %1126 = getelementptr inbounds double, ptr %1119, i64 %1125
  %1127 = load double, ptr %1126, align 8, !tbaa !11
  %1128 = load double, ptr %56, align 8, !tbaa !11
  %1129 = load ptr, ptr %26, align 8, !tbaa !5
  %1130 = load i64, ptr %45, align 8, !tbaa !9
  %1131 = load i64, ptr %46, align 8, !tbaa !9
  %1132 = load i64, ptr %33, align 8, !tbaa !9
  %1133 = mul nsw i64 %1131, %1132
  %1134 = add nsw i64 %1130, %1133
  %1135 = getelementptr inbounds double, ptr %1129, i64 %1134
  %1136 = load double, ptr %1135, align 8, !tbaa !11
  %1137 = fmul double %1128, %1136
  %1138 = fneg double %1137
  %1139 = call double @llvm.fmuladd.f64(double %1118, double %1127, double %1138)
  %1140 = load ptr, ptr %26, align 8, !tbaa !5
  %1141 = load i64, ptr %46, align 8, !tbaa !9
  %1142 = add nsw i64 %1141, 1
  %1143 = load i64, ptr %45, align 8, !tbaa !9
  %1144 = add nsw i64 %1143, 1
  %1145 = load i64, ptr %33, align 8, !tbaa !9
  %1146 = mul nsw i64 %1144, %1145
  %1147 = add nsw i64 %1142, %1146
  %1148 = getelementptr inbounds double, ptr %1140, i64 %1147
  store double %1139, ptr %1148, align 8, !tbaa !11
  br label %1149

1149:                                             ; preds = %1077
  %1150 = load i64, ptr %46, align 8, !tbaa !9
  %1151 = add nsw i64 %1150, 1
  store i64 %1151, ptr %46, align 8, !tbaa !9
  br label %1073, !llvm.loop !29

1152:                                             ; preds = %1073
  %1153 = load ptr, ptr %23, align 8, !tbaa !5
  %1154 = load double, ptr %1153, align 8, !tbaa !11
  %1155 = load ptr, ptr %26, align 8, !tbaa !5
  %1156 = load i64, ptr %45, align 8, !tbaa !9
  %1157 = add nsw i64 %1156, 2
  %1158 = load i64, ptr %45, align 8, !tbaa !9
  %1159 = add nsw i64 %1158, 1
  %1160 = load i64, ptr %33, align 8, !tbaa !9
  %1161 = mul nsw i64 %1159, %1160
  %1162 = add nsw i64 %1157, %1161
  %1163 = getelementptr inbounds double, ptr %1155, i64 %1162
  %1164 = load double, ptr %1163, align 8, !tbaa !11
  %1165 = fsub double %1164, %1154
  store double %1165, ptr %1163, align 8, !tbaa !11
  br label %1166

1166:                                             ; preds = %1152, %977
  %1167 = load ptr, ptr %19, align 8, !tbaa !5
  %1168 = load i64, ptr %1167, align 8, !tbaa !9
  %1169 = load i64, ptr %45, align 8, !tbaa !9
  %1170 = sub nsw i64 %1168, %1169
  store i64 %1170, ptr %38, align 8, !tbaa !9
  %1171 = load ptr, ptr %19, align 8, !tbaa !5
  %1172 = load i64, ptr %1171, align 8, !tbaa !9
  %1173 = load i64, ptr %45, align 8, !tbaa !9
  %1174 = sub nsw i64 %1172, %1173
  store i64 %1174, ptr %39, align 8, !tbaa !9
  %1175 = load ptr, ptr %26, align 8, !tbaa !5
  %1176 = load i64, ptr %45, align 8, !tbaa !9
  %1177 = load i64, ptr %45, align 8, !tbaa !9
  %1178 = add nsw i64 %1177, 1
  %1179 = load i64, ptr %33, align 8, !tbaa !9
  %1180 = mul nsw i64 %1178, %1179
  %1181 = add nsw i64 %1176, %1180
  %1182 = getelementptr inbounds double, ptr %1175, i64 %1181
  %1183 = load ptr, ptr %27, align 8, !tbaa !5
  %1184 = call double @f2c_dasum(ptr noundef %38, ptr noundef %1182, ptr noundef %1183)
  %1185 = load ptr, ptr %26, align 8, !tbaa !5
  %1186 = load i64, ptr %45, align 8, !tbaa !9
  %1187 = add nsw i64 %1186, 2
  %1188 = load i64, ptr %45, align 8, !tbaa !9
  %1189 = load i64, ptr %33, align 8, !tbaa !9
  %1190 = mul nsw i64 %1188, %1189
  %1191 = add nsw i64 %1187, %1190
  %1192 = getelementptr inbounds double, ptr %1185, i64 %1191
  %1193 = call double @f2c_dasum(ptr noundef %39, ptr noundef %1192, ptr noundef @c__1)
  %1194 = fadd double %1184, %1193
  %1195 = load ptr, ptr %28, align 8, !tbaa !5
  %1196 = load i64, ptr %45, align 8, !tbaa !9
  %1197 = getelementptr inbounds double, ptr %1195, i64 %1196
  store double %1194, ptr %1197, align 8, !tbaa !11
  br label %1198

1198:                                             ; preds = %1166
  %1199 = load i64, ptr %45, align 8, !tbaa !9
  %1200 = add nsw i64 %1199, 1
  store i64 %1200, ptr %45, align 8, !tbaa !9
  br label %819, !llvm.loop !30

1201:                                             ; preds = %819
  %1202 = load ptr, ptr %26, align 8, !tbaa !5
  %1203 = load ptr, ptr %19, align 8, !tbaa !5
  %1204 = load i64, ptr %1203, align 8, !tbaa !9
  %1205 = load ptr, ptr %19, align 8, !tbaa !5
  %1206 = load i64, ptr %1205, align 8, !tbaa !9
  %1207 = load i64, ptr %33, align 8, !tbaa !9
  %1208 = mul nsw i64 %1206, %1207
  %1209 = add nsw i64 %1204, %1208
  %1210 = getelementptr inbounds double, ptr %1202, i64 %1209
  %1211 = load double, ptr %1210, align 8, !tbaa !11
  %1212 = fcmp oeq double %1211, 0.000000e+00
  br i1 %1212, label %1213, label %1238

1213:                                             ; preds = %1201
  %1214 = load ptr, ptr %26, align 8, !tbaa !5
  %1215 = load ptr, ptr %19, align 8, !tbaa !5
  %1216 = load i64, ptr %1215, align 8, !tbaa !9
  %1217 = add nsw i64 %1216, 1
  %1218 = load ptr, ptr %19, align 8, !tbaa !5
  %1219 = load i64, ptr %1218, align 8, !tbaa !9
  %1220 = load i64, ptr %33, align 8, !tbaa !9
  %1221 = mul nsw i64 %1219, %1220
  %1222 = add nsw i64 %1217, %1221
  %1223 = getelementptr inbounds double, ptr %1214, i64 %1222
  %1224 = load double, ptr %1223, align 8, !tbaa !11
  %1225 = fcmp oeq double %1224, 0.000000e+00
  br i1 %1225, label %1226, label %1238

1226:                                             ; preds = %1213
  %1227 = load ptr, ptr %29, align 8, !tbaa !5
  %1228 = load double, ptr %1227, align 8, !tbaa !11
  %1229 = load ptr, ptr %26, align 8, !tbaa !5
  %1230 = load ptr, ptr %19, align 8, !tbaa !5
  %1231 = load i64, ptr %1230, align 8, !tbaa !9
  %1232 = load ptr, ptr %19, align 8, !tbaa !5
  %1233 = load i64, ptr %1232, align 8, !tbaa !9
  %1234 = load i64, ptr %33, align 8, !tbaa !9
  %1235 = mul nsw i64 %1233, %1234
  %1236 = add nsw i64 %1231, %1235
  %1237 = getelementptr inbounds double, ptr %1229, i64 %1236
  store double %1228, ptr %1237, align 8, !tbaa !11
  br label %1238

1238:                                             ; preds = %1226, %1213, %1201
  %1239 = load ptr, ptr %28, align 8, !tbaa !5
  %1240 = load ptr, ptr %19, align 8, !tbaa !5
  %1241 = load i64, ptr %1240, align 8, !tbaa !9
  %1242 = getelementptr inbounds double, ptr %1239, i64 %1241
  store double 0.000000e+00, ptr %1242, align 8, !tbaa !11
  %1243 = load ptr, ptr %19, align 8, !tbaa !5
  %1244 = load i64, ptr %1243, align 8, !tbaa !9
  store i64 %1244, ptr %50, align 8, !tbaa !9
  store i64 1, ptr %51, align 8, !tbaa !9
  store i64 -1, ptr %52, align 8, !tbaa !9
  br label %1670

1245:                                             ; preds = %787
  %1246 = load ptr, ptr %23, align 8, !tbaa !5
  %1247 = load double, ptr %1246, align 8, !tbaa !11
  %1248 = load ptr, ptr %26, align 8, !tbaa !5
  %1249 = load ptr, ptr %19, align 8, !tbaa !5
  %1250 = load i64, ptr %1249, align 8, !tbaa !9
  %1251 = add nsw i64 %1250, 1
  %1252 = load ptr, ptr %19, align 8, !tbaa !5
  %1253 = load i64, ptr %1252, align 8, !tbaa !9
  %1254 = load i64, ptr %33, align 8, !tbaa !9
  %1255 = mul nsw i64 %1253, %1254
  %1256 = add nsw i64 %1251, %1255
  %1257 = getelementptr inbounds double, ptr %1248, i64 %1256
  store double %1247, ptr %1257, align 8, !tbaa !11
  %1258 = load ptr, ptr %19, align 8, !tbaa !5
  %1259 = load i64, ptr %1258, align 8, !tbaa !9
  %1260 = sub nsw i64 %1259, 1
  store i64 %1260, ptr %37, align 8, !tbaa !9
  store i64 1, ptr %46, align 8, !tbaa !9
  br label %1261

1261:                                             ; preds = %1275, %1245
  %1262 = load i64, ptr %46, align 8, !tbaa !9
  %1263 = load i64, ptr %37, align 8, !tbaa !9
  %1264 = icmp sle i64 %1262, %1263
  br i1 %1264, label %1265, label %1278

1265:                                             ; preds = %1261
  %1266 = load ptr, ptr %26, align 8, !tbaa !5
  %1267 = load ptr, ptr %19, align 8, !tbaa !5
  %1268 = load i64, ptr %1267, align 8, !tbaa !9
  %1269 = add nsw i64 %1268, 1
  %1270 = load i64, ptr %46, align 8, !tbaa !9
  %1271 = load i64, ptr %33, align 8, !tbaa !9
  %1272 = mul nsw i64 %1270, %1271
  %1273 = add nsw i64 %1269, %1272
  %1274 = getelementptr inbounds double, ptr %1266, i64 %1273
  store double 0.000000e+00, ptr %1274, align 8, !tbaa !11
  br label %1275

1275:                                             ; preds = %1265
  %1276 = load i64, ptr %46, align 8, !tbaa !9
  %1277 = add nsw i64 %1276, 1
  store i64 %1277, ptr %46, align 8, !tbaa !9
  br label %1261, !llvm.loop !31

1278:                                             ; preds = %1261
  %1279 = load ptr, ptr %19, align 8, !tbaa !5
  %1280 = load i64, ptr %1279, align 8, !tbaa !9
  store i64 %1280, ptr %46, align 8, !tbaa !9
  br label %1281

1281:                                             ; preds = %1641, %1278
  %1282 = load i64, ptr %46, align 8, !tbaa !9
  %1283 = icmp sge i64 %1282, 2
  br i1 %1283, label %1284, label %1644

1284:                                             ; preds = %1281
  %1285 = load ptr, ptr %20, align 8, !tbaa !5
  %1286 = load i64, ptr %46, align 8, !tbaa !9
  %1287 = load i64, ptr %46, align 8, !tbaa !9
  %1288 = sub nsw i64 %1287, 1
  %1289 = load i64, ptr %35, align 8, !tbaa !9
  %1290 = mul nsw i64 %1288, %1289
  %1291 = add nsw i64 %1286, %1290
  %1292 = getelementptr inbounds double, ptr %1285, i64 %1291
  %1293 = load double, ptr %1292, align 8, !tbaa !11
  store double %1293, ptr %55, align 8, !tbaa !11
  %1294 = load ptr, ptr %26, align 8, !tbaa !5
  %1295 = load i64, ptr %46, align 8, !tbaa !9
  %1296 = load i64, ptr %46, align 8, !tbaa !9
  %1297 = load i64, ptr %33, align 8, !tbaa !9
  %1298 = mul nsw i64 %1296, %1297
  %1299 = add nsw i64 %1295, %1298
  %1300 = getelementptr inbounds double, ptr %1294, i64 %1299
  %1301 = load ptr, ptr %26, align 8, !tbaa !5
  %1302 = load i64, ptr %46, align 8, !tbaa !9
  %1303 = add nsw i64 %1302, 1
  %1304 = load i64, ptr %46, align 8, !tbaa !9
  %1305 = load i64, ptr %33, align 8, !tbaa !9
  %1306 = mul nsw i64 %1304, %1305
  %1307 = add nsw i64 %1303, %1306
  %1308 = getelementptr inbounds double, ptr %1301, i64 %1307
  %1309 = call double @dlapy2_(ptr noundef %1300, ptr noundef %1308)
  store double %1309, ptr %70, align 8, !tbaa !11
  %1310 = load double, ptr %70, align 8, !tbaa !11
  %1311 = load double, ptr %55, align 8, !tbaa !11
  %1312 = fcmp oge double %1311, 0.000000e+00
  br i1 %1312, label %1313, label %1315

1313:                                             ; preds = %1284
  %1314 = load double, ptr %55, align 8, !tbaa !11
  br label %1318

1315:                                             ; preds = %1284
  %1316 = load double, ptr %55, align 8, !tbaa !11
  %1317 = fneg double %1316
  br label %1318

1318:                                             ; preds = %1315, %1313
  %1319 = phi double [ %1314, %1313 ], [ %1317, %1315 ]
  %1320 = fcmp olt double %1310, %1319
  br i1 %1320, label %1321, label %1474

1321:                                             ; preds = %1318
  %1322 = load ptr, ptr %26, align 8, !tbaa !5
  %1323 = load i64, ptr %46, align 8, !tbaa !9
  %1324 = load i64, ptr %46, align 8, !tbaa !9
  %1325 = load i64, ptr %33, align 8, !tbaa !9
  %1326 = mul nsw i64 %1324, %1325
  %1327 = add nsw i64 %1323, %1326
  %1328 = getelementptr inbounds double, ptr %1322, i64 %1327
  %1329 = load double, ptr %1328, align 8, !tbaa !11
  %1330 = load double, ptr %55, align 8, !tbaa !11
  %1331 = fdiv double %1329, %1330
  store double %1331, ptr %57, align 8, !tbaa !11
  %1332 = load ptr, ptr %26, align 8, !tbaa !5
  %1333 = load i64, ptr %46, align 8, !tbaa !9
  %1334 = add nsw i64 %1333, 1
  %1335 = load i64, ptr %46, align 8, !tbaa !9
  %1336 = load i64, ptr %33, align 8, !tbaa !9
  %1337 = mul nsw i64 %1335, %1336
  %1338 = add nsw i64 %1334, %1337
  %1339 = getelementptr inbounds double, ptr %1332, i64 %1338
  %1340 = load double, ptr %1339, align 8, !tbaa !11
  %1341 = load double, ptr %55, align 8, !tbaa !11
  %1342 = fdiv double %1340, %1341
  store double %1342, ptr %56, align 8, !tbaa !11
  %1343 = load double, ptr %55, align 8, !tbaa !11
  %1344 = load ptr, ptr %26, align 8, !tbaa !5
  %1345 = load i64, ptr %46, align 8, !tbaa !9
  %1346 = load i64, ptr %46, align 8, !tbaa !9
  %1347 = load i64, ptr %33, align 8, !tbaa !9
  %1348 = mul nsw i64 %1346, %1347
  %1349 = add nsw i64 %1345, %1348
  %1350 = getelementptr inbounds double, ptr %1344, i64 %1349
  store double %1343, ptr %1350, align 8, !tbaa !11
  %1351 = load ptr, ptr %26, align 8, !tbaa !5
  %1352 = load i64, ptr %46, align 8, !tbaa !9
  %1353 = add nsw i64 %1352, 1
  %1354 = load i64, ptr %46, align 8, !tbaa !9
  %1355 = load i64, ptr %33, align 8, !tbaa !9
  %1356 = mul nsw i64 %1354, %1355
  %1357 = add nsw i64 %1353, %1356
  %1358 = getelementptr inbounds double, ptr %1351, i64 %1357
  store double 0.000000e+00, ptr %1358, align 8, !tbaa !11
  %1359 = load i64, ptr %46, align 8, !tbaa !9
  %1360 = sub nsw i64 %1359, 1
  store i64 %1360, ptr %37, align 8, !tbaa !9
  store i64 1, ptr %45, align 8, !tbaa !9
  br label %1361

1361:                                             ; preds = %1431, %1321
  %1362 = load i64, ptr %45, align 8, !tbaa !9
  %1363 = load i64, ptr %37, align 8, !tbaa !9
  %1364 = icmp sle i64 %1362, %1363
  br i1 %1364, label %1365, label %1434

1365:                                             ; preds = %1361
  %1366 = load ptr, ptr %26, align 8, !tbaa !5
  %1367 = load i64, ptr %45, align 8, !tbaa !9
  %1368 = load i64, ptr %46, align 8, !tbaa !9
  %1369 = sub nsw i64 %1368, 1
  %1370 = load i64, ptr %33, align 8, !tbaa !9
  %1371 = mul nsw i64 %1369, %1370
  %1372 = add nsw i64 %1367, %1371
  %1373 = getelementptr inbounds double, ptr %1366, i64 %1372
  %1374 = load double, ptr %1373, align 8, !tbaa !11
  store double %1374, ptr %61, align 8, !tbaa !11
  %1375 = load ptr, ptr %26, align 8, !tbaa !5
  %1376 = load i64, ptr %45, align 8, !tbaa !9
  %1377 = load i64, ptr %46, align 8, !tbaa !9
  %1378 = load i64, ptr %33, align 8, !tbaa !9
  %1379 = mul nsw i64 %1377, %1378
  %1380 = add nsw i64 %1376, %1379
  %1381 = getelementptr inbounds double, ptr %1375, i64 %1380
  %1382 = load double, ptr %1381, align 8, !tbaa !11
  %1383 = load double, ptr %57, align 8, !tbaa !11
  %1384 = load double, ptr %61, align 8, !tbaa !11
  %1385 = fneg double %1383
  %1386 = call double @llvm.fmuladd.f64(double %1385, double %1384, double %1382)
  %1387 = load ptr, ptr %26, align 8, !tbaa !5
  %1388 = load i64, ptr %45, align 8, !tbaa !9
  %1389 = load i64, ptr %46, align 8, !tbaa !9
  %1390 = sub nsw i64 %1389, 1
  %1391 = load i64, ptr %33, align 8, !tbaa !9
  %1392 = mul nsw i64 %1390, %1391
  %1393 = add nsw i64 %1388, %1392
  %1394 = getelementptr inbounds double, ptr %1387, i64 %1393
  store double %1386, ptr %1394, align 8, !tbaa !11
  %1395 = load ptr, ptr %26, align 8, !tbaa !5
  %1396 = load i64, ptr %46, align 8, !tbaa !9
  %1397 = add nsw i64 %1396, 1
  %1398 = load i64, ptr %45, align 8, !tbaa !9
  %1399 = load i64, ptr %33, align 8, !tbaa !9
  %1400 = mul nsw i64 %1398, %1399
  %1401 = add nsw i64 %1397, %1400
  %1402 = getelementptr inbounds double, ptr %1395, i64 %1401
  %1403 = load double, ptr %1402, align 8, !tbaa !11
  %1404 = load double, ptr %56, align 8, !tbaa !11
  %1405 = load double, ptr %61, align 8, !tbaa !11
  %1406 = fneg double %1404
  %1407 = call double @llvm.fmuladd.f64(double %1406, double %1405, double %1403)
  %1408 = load ptr, ptr %26, align 8, !tbaa !5
  %1409 = load i64, ptr %46, align 8, !tbaa !9
  %1410 = load i64, ptr %45, align 8, !tbaa !9
  %1411 = load i64, ptr %33, align 8, !tbaa !9
  %1412 = mul nsw i64 %1410, %1411
  %1413 = add nsw i64 %1409, %1412
  %1414 = getelementptr inbounds double, ptr %1408, i64 %1413
  store double %1407, ptr %1414, align 8, !tbaa !11
  %1415 = load double, ptr %61, align 8, !tbaa !11
  %1416 = load ptr, ptr %26, align 8, !tbaa !5
  %1417 = load i64, ptr %45, align 8, !tbaa !9
  %1418 = load i64, ptr %46, align 8, !tbaa !9
  %1419 = load i64, ptr %33, align 8, !tbaa !9
  %1420 = mul nsw i64 %1418, %1419
  %1421 = add nsw i64 %1417, %1420
  %1422 = getelementptr inbounds double, ptr %1416, i64 %1421
  store double %1415, ptr %1422, align 8, !tbaa !11
  %1423 = load ptr, ptr %26, align 8, !tbaa !5
  %1424 = load i64, ptr %46, align 8, !tbaa !9
  %1425 = add nsw i64 %1424, 1
  %1426 = load i64, ptr %45, align 8, !tbaa !9
  %1427 = load i64, ptr %33, align 8, !tbaa !9
  %1428 = mul nsw i64 %1426, %1427
  %1429 = add nsw i64 %1425, %1428
  %1430 = getelementptr inbounds double, ptr %1423, i64 %1429
  store double 0.000000e+00, ptr %1430, align 8, !tbaa !11
  br label %1431

1431:                                             ; preds = %1365
  %1432 = load i64, ptr %45, align 8, !tbaa !9
  %1433 = add nsw i64 %1432, 1
  store i64 %1433, ptr %45, align 8, !tbaa !9
  br label %1361, !llvm.loop !32

1434:                                             ; preds = %1361
  %1435 = load ptr, ptr %23, align 8, !tbaa !5
  %1436 = load double, ptr %1435, align 8, !tbaa !11
  %1437 = load ptr, ptr %26, align 8, !tbaa !5
  %1438 = load i64, ptr %46, align 8, !tbaa !9
  %1439 = add nsw i64 %1438, 1
  %1440 = load i64, ptr %46, align 8, !tbaa !9
  %1441 = sub nsw i64 %1440, 1
  %1442 = load i64, ptr %33, align 8, !tbaa !9
  %1443 = mul nsw i64 %1441, %1442
  %1444 = add nsw i64 %1439, %1443
  %1445 = getelementptr inbounds double, ptr %1437, i64 %1444
  store double %1436, ptr %1445, align 8, !tbaa !11
  %1446 = load double, ptr %56, align 8, !tbaa !11
  %1447 = load ptr, ptr %23, align 8, !tbaa !5
  %1448 = load double, ptr %1447, align 8, !tbaa !11
  %1449 = load ptr, ptr %26, align 8, !tbaa !5
  %1450 = load i64, ptr %46, align 8, !tbaa !9
  %1451 = sub nsw i64 %1450, 1
  %1452 = load i64, ptr %46, align 8, !tbaa !9
  %1453 = sub nsw i64 %1452, 1
  %1454 = load i64, ptr %33, align 8, !tbaa !9
  %1455 = mul nsw i64 %1453, %1454
  %1456 = add nsw i64 %1451, %1455
  %1457 = getelementptr inbounds double, ptr %1449, i64 %1456
  %1458 = load double, ptr %1457, align 8, !tbaa !11
  %1459 = call double @llvm.fmuladd.f64(double %1446, double %1448, double %1458)
  store double %1459, ptr %1457, align 8, !tbaa !11
  %1460 = load double, ptr %57, align 8, !tbaa !11
  %1461 = load ptr, ptr %23, align 8, !tbaa !5
  %1462 = load double, ptr %1461, align 8, !tbaa !11
  %1463 = load ptr, ptr %26, align 8, !tbaa !5
  %1464 = load i64, ptr %46, align 8, !tbaa !9
  %1465 = load i64, ptr %46, align 8, !tbaa !9
  %1466 = sub nsw i64 %1465, 1
  %1467 = load i64, ptr %33, align 8, !tbaa !9
  %1468 = mul nsw i64 %1466, %1467
  %1469 = add nsw i64 %1464, %1468
  %1470 = getelementptr inbounds double, ptr %1463, i64 %1469
  %1471 = load double, ptr %1470, align 8, !tbaa !11
  %1472 = fneg double %1460
  %1473 = call double @llvm.fmuladd.f64(double %1472, double %1462, double %1471)
  store double %1473, ptr %1470, align 8, !tbaa !11
  br label %1617

1474:                                             ; preds = %1318
  %1475 = load double, ptr %70, align 8, !tbaa !11
  %1476 = fcmp oeq double %1475, 0.000000e+00
  br i1 %1476, label %1477, label %1497

1477:                                             ; preds = %1474
  %1478 = load ptr, ptr %29, align 8, !tbaa !5
  %1479 = load double, ptr %1478, align 8, !tbaa !11
  %1480 = load ptr, ptr %26, align 8, !tbaa !5
  %1481 = load i64, ptr %46, align 8, !tbaa !9
  %1482 = load i64, ptr %46, align 8, !tbaa !9
  %1483 = load i64, ptr %33, align 8, !tbaa !9
  %1484 = mul nsw i64 %1482, %1483
  %1485 = add nsw i64 %1481, %1484
  %1486 = getelementptr inbounds double, ptr %1480, i64 %1485
  store double %1479, ptr %1486, align 8, !tbaa !11
  %1487 = load ptr, ptr %26, align 8, !tbaa !5
  %1488 = load i64, ptr %46, align 8, !tbaa !9
  %1489 = add nsw i64 %1488, 1
  %1490 = load i64, ptr %46, align 8, !tbaa !9
  %1491 = load i64, ptr %33, align 8, !tbaa !9
  %1492 = mul nsw i64 %1490, %1491
  %1493 = add nsw i64 %1489, %1492
  %1494 = getelementptr inbounds double, ptr %1487, i64 %1493
  store double 0.000000e+00, ptr %1494, align 8, !tbaa !11
  %1495 = load ptr, ptr %29, align 8, !tbaa !5
  %1496 = load double, ptr %1495, align 8, !tbaa !11
  store double %1496, ptr %70, align 8, !tbaa !11
  br label %1497

1497:                                             ; preds = %1477, %1474
  %1498 = load double, ptr %55, align 8, !tbaa !11
  %1499 = load double, ptr %70, align 8, !tbaa !11
  %1500 = fdiv double %1498, %1499
  %1501 = load double, ptr %70, align 8, !tbaa !11
  %1502 = fdiv double %1500, %1501
  store double %1502, ptr %55, align 8, !tbaa !11
  %1503 = load ptr, ptr %26, align 8, !tbaa !5
  %1504 = load i64, ptr %46, align 8, !tbaa !9
  %1505 = load i64, ptr %46, align 8, !tbaa !9
  %1506 = load i64, ptr %33, align 8, !tbaa !9
  %1507 = mul nsw i64 %1505, %1506
  %1508 = add nsw i64 %1504, %1507
  %1509 = getelementptr inbounds double, ptr %1503, i64 %1508
  %1510 = load double, ptr %1509, align 8, !tbaa !11
  %1511 = load double, ptr %55, align 8, !tbaa !11
  %1512 = fmul double %1510, %1511
  store double %1512, ptr %57, align 8, !tbaa !11
  %1513 = load ptr, ptr %26, align 8, !tbaa !5
  %1514 = load i64, ptr %46, align 8, !tbaa !9
  %1515 = add nsw i64 %1514, 1
  %1516 = load i64, ptr %46, align 8, !tbaa !9
  %1517 = load i64, ptr %33, align 8, !tbaa !9
  %1518 = mul nsw i64 %1516, %1517
  %1519 = add nsw i64 %1515, %1518
  %1520 = getelementptr inbounds double, ptr %1513, i64 %1519
  %1521 = load double, ptr %1520, align 8, !tbaa !11
  %1522 = fneg double %1521
  %1523 = load double, ptr %55, align 8, !tbaa !11
  %1524 = fmul double %1522, %1523
  store double %1524, ptr %56, align 8, !tbaa !11
  %1525 = load i64, ptr %46, align 8, !tbaa !9
  %1526 = sub nsw i64 %1525, 1
  store i64 %1526, ptr %37, align 8, !tbaa !9
  store i64 1, ptr %45, align 8, !tbaa !9
  br label %1527

1527:                                             ; preds = %1601, %1497
  %1528 = load i64, ptr %45, align 8, !tbaa !9
  %1529 = load i64, ptr %37, align 8, !tbaa !9
  %1530 = icmp sle i64 %1528, %1529
  br i1 %1530, label %1531, label %1604

1531:                                             ; preds = %1527
  %1532 = load ptr, ptr %26, align 8, !tbaa !5
  %1533 = load i64, ptr %45, align 8, !tbaa !9
  %1534 = load i64, ptr %46, align 8, !tbaa !9
  %1535 = sub nsw i64 %1534, 1
  %1536 = load i64, ptr %33, align 8, !tbaa !9
  %1537 = mul nsw i64 %1535, %1536
  %1538 = add nsw i64 %1533, %1537
  %1539 = getelementptr inbounds double, ptr %1532, i64 %1538
  %1540 = load double, ptr %1539, align 8, !tbaa !11
  %1541 = load double, ptr %57, align 8, !tbaa !11
  %1542 = load ptr, ptr %26, align 8, !tbaa !5
  %1543 = load i64, ptr %45, align 8, !tbaa !9
  %1544 = load i64, ptr %46, align 8, !tbaa !9
  %1545 = load i64, ptr %33, align 8, !tbaa !9
  %1546 = mul nsw i64 %1544, %1545
  %1547 = add nsw i64 %1543, %1546
  %1548 = getelementptr inbounds double, ptr %1542, i64 %1547
  %1549 = load double, ptr %1548, align 8, !tbaa !11
  %1550 = fneg double %1541
  %1551 = call double @llvm.fmuladd.f64(double %1550, double %1549, double %1540)
  %1552 = load double, ptr %56, align 8, !tbaa !11
  %1553 = load ptr, ptr %26, align 8, !tbaa !5
  %1554 = load i64, ptr %46, align 8, !tbaa !9
  %1555 = add nsw i64 %1554, 1
  %1556 = load i64, ptr %45, align 8, !tbaa !9
  %1557 = load i64, ptr %33, align 8, !tbaa !9
  %1558 = mul nsw i64 %1556, %1557
  %1559 = add nsw i64 %1555, %1558
  %1560 = getelementptr inbounds double, ptr %1553, i64 %1559
  %1561 = load double, ptr %1560, align 8, !tbaa !11
  %1562 = call double @llvm.fmuladd.f64(double %1552, double %1561, double %1551)
  %1563 = load ptr, ptr %26, align 8, !tbaa !5
  %1564 = load i64, ptr %45, align 8, !tbaa !9
  %1565 = load i64, ptr %46, align 8, !tbaa !9
  %1566 = sub nsw i64 %1565, 1
  %1567 = load i64, ptr %33, align 8, !tbaa !9
  %1568 = mul nsw i64 %1566, %1567
  %1569 = add nsw i64 %1564, %1568
  %1570 = getelementptr inbounds double, ptr %1563, i64 %1569
  store double %1562, ptr %1570, align 8, !tbaa !11
  %1571 = load double, ptr %57, align 8, !tbaa !11
  %1572 = fneg double %1571
  %1573 = load ptr, ptr %26, align 8, !tbaa !5
  %1574 = load i64, ptr %46, align 8, !tbaa !9
  %1575 = add nsw i64 %1574, 1
  %1576 = load i64, ptr %45, align 8, !tbaa !9
  %1577 = load i64, ptr %33, align 8, !tbaa !9
  %1578 = mul nsw i64 %1576, %1577
  %1579 = add nsw i64 %1575, %1578
  %1580 = getelementptr inbounds double, ptr %1573, i64 %1579
  %1581 = load double, ptr %1580, align 8, !tbaa !11
  %1582 = load double, ptr %56, align 8, !tbaa !11
  %1583 = load ptr, ptr %26, align 8, !tbaa !5
  %1584 = load i64, ptr %45, align 8, !tbaa !9
  %1585 = load i64, ptr %46, align 8, !tbaa !9
  %1586 = load i64, ptr %33, align 8, !tbaa !9
  %1587 = mul nsw i64 %1585, %1586
  %1588 = add nsw i64 %1584, %1587
  %1589 = getelementptr inbounds double, ptr %1583, i64 %1588
  %1590 = load double, ptr %1589, align 8, !tbaa !11
  %1591 = fmul double %1582, %1590
  %1592 = fneg double %1591
  %1593 = call double @llvm.fmuladd.f64(double %1572, double %1581, double %1592)
  %1594 = load ptr, ptr %26, align 8, !tbaa !5
  %1595 = load i64, ptr %46, align 8, !tbaa !9
  %1596 = load i64, ptr %45, align 8, !tbaa !9
  %1597 = load i64, ptr %33, align 8, !tbaa !9
  %1598 = mul nsw i64 %1596, %1597
  %1599 = add nsw i64 %1595, %1598
  %1600 = getelementptr inbounds double, ptr %1594, i64 %1599
  store double %1593, ptr %1600, align 8, !tbaa !11
  br label %1601

1601:                                             ; preds = %1531
  %1602 = load i64, ptr %45, align 8, !tbaa !9
  %1603 = add nsw i64 %1602, 1
  store i64 %1603, ptr %45, align 8, !tbaa !9
  br label %1527, !llvm.loop !33

1604:                                             ; preds = %1527
  %1605 = load ptr, ptr %23, align 8, !tbaa !5
  %1606 = load double, ptr %1605, align 8, !tbaa !11
  %1607 = load ptr, ptr %26, align 8, !tbaa !5
  %1608 = load i64, ptr %46, align 8, !tbaa !9
  %1609 = load i64, ptr %46, align 8, !tbaa !9
  %1610 = sub nsw i64 %1609, 1
  %1611 = load i64, ptr %33, align 8, !tbaa !9
  %1612 = mul nsw i64 %1610, %1611
  %1613 = add nsw i64 %1608, %1612
  %1614 = getelementptr inbounds double, ptr %1607, i64 %1613
  %1615 = load double, ptr %1614, align 8, !tbaa !11
  %1616 = fadd double %1615, %1606
  store double %1616, ptr %1614, align 8, !tbaa !11
  br label %1617

1617:                                             ; preds = %1604, %1434
  %1618 = load i64, ptr %46, align 8, !tbaa !9
  %1619 = sub nsw i64 %1618, 1
  store i64 %1619, ptr %37, align 8, !tbaa !9
  %1620 = load i64, ptr %46, align 8, !tbaa !9
  %1621 = sub nsw i64 %1620, 1
  store i64 %1621, ptr %38, align 8, !tbaa !9
  %1622 = load ptr, ptr %26, align 8, !tbaa !5
  %1623 = load i64, ptr %46, align 8, !tbaa !9
  %1624 = load i64, ptr %33, align 8, !tbaa !9
  %1625 = mul nsw i64 %1623, %1624
  %1626 = add nsw i64 %1625, 1
  %1627 = getelementptr inbounds double, ptr %1622, i64 %1626
  %1628 = call double @f2c_dasum(ptr noundef %37, ptr noundef %1627, ptr noundef @c__1)
  %1629 = load ptr, ptr %26, align 8, !tbaa !5
  %1630 = load i64, ptr %46, align 8, !tbaa !9
  %1631 = add nsw i64 %1630, 1
  %1632 = load i64, ptr %33, align 8, !tbaa !9
  %1633 = add nsw i64 %1631, %1632
  %1634 = getelementptr inbounds double, ptr %1629, i64 %1633
  %1635 = load ptr, ptr %27, align 8, !tbaa !5
  %1636 = call double @f2c_dasum(ptr noundef %38, ptr noundef %1634, ptr noundef %1635)
  %1637 = fadd double %1628, %1636
  %1638 = load ptr, ptr %28, align 8, !tbaa !5
  %1639 = load i64, ptr %46, align 8, !tbaa !9
  %1640 = getelementptr inbounds double, ptr %1638, i64 %1639
  store double %1637, ptr %1640, align 8, !tbaa !11
  br label %1641

1641:                                             ; preds = %1617
  %1642 = load i64, ptr %46, align 8, !tbaa !9
  %1643 = add nsw i64 %1642, -1
  store i64 %1643, ptr %46, align 8, !tbaa !9
  br label %1281, !llvm.loop !34

1644:                                             ; preds = %1281
  %1645 = load ptr, ptr %26, align 8, !tbaa !5
  %1646 = load i64, ptr %33, align 8, !tbaa !9
  %1647 = add nsw i64 %1646, 1
  %1648 = getelementptr inbounds double, ptr %1645, i64 %1647
  %1649 = load double, ptr %1648, align 8, !tbaa !11
  %1650 = fcmp oeq double %1649, 0.000000e+00
  br i1 %1650, label %1651, label %1665

1651:                                             ; preds = %1644
  %1652 = load ptr, ptr %26, align 8, !tbaa !5
  %1653 = load i64, ptr %33, align 8, !tbaa !9
  %1654 = add nsw i64 %1653, 2
  %1655 = getelementptr inbounds double, ptr %1652, i64 %1654
  %1656 = load double, ptr %1655, align 8, !tbaa !11
  %1657 = fcmp oeq double %1656, 0.000000e+00
  br i1 %1657, label %1658, label %1665

1658:                                             ; preds = %1651
  %1659 = load ptr, ptr %29, align 8, !tbaa !5
  %1660 = load double, ptr %1659, align 8, !tbaa !11
  %1661 = load ptr, ptr %26, align 8, !tbaa !5
  %1662 = load i64, ptr %33, align 8, !tbaa !9
  %1663 = add nsw i64 %1662, 1
  %1664 = getelementptr inbounds double, ptr %1661, i64 %1663
  store double %1660, ptr %1664, align 8, !tbaa !11
  br label %1665

1665:                                             ; preds = %1658, %1651, %1644
  %1666 = load ptr, ptr %28, align 8, !tbaa !5
  %1667 = getelementptr inbounds double, ptr %1666, i64 1
  store double 0.000000e+00, ptr %1667, align 8, !tbaa !11
  store i64 1, ptr %50, align 8, !tbaa !9
  %1668 = load ptr, ptr %19, align 8, !tbaa !5
  %1669 = load i64, ptr %1668, align 8, !tbaa !9
  store i64 %1669, ptr %51, align 8, !tbaa !9
  store i64 1, ptr %52, align 8, !tbaa !9
  br label %1670

1670:                                             ; preds = %1665, %1238
  %1671 = load ptr, ptr %19, align 8, !tbaa !5
  %1672 = load i64, ptr %1671, align 8, !tbaa !9
  store i64 %1672, ptr %37, align 8, !tbaa !9
  store i64 1, ptr %59, align 8, !tbaa !9
  br label %1673

1673:                                             ; preds = %2127, %1670
  %1674 = load i64, ptr %59, align 8, !tbaa !9
  %1675 = load i64, ptr %37, align 8, !tbaa !9
  %1676 = icmp sle i64 %1674, %1675
  br i1 %1676, label %1677, label %2130

1677:                                             ; preds = %1673
  store double 1.000000e+00, ptr %64, align 8, !tbaa !11
  store double 1.000000e+00, ptr %63, align 8, !tbaa !11
  %1678 = load ptr, ptr %31, align 8, !tbaa !5
  %1679 = load double, ptr %1678, align 8, !tbaa !11
  store double %1679, ptr %66, align 8, !tbaa !11
  %1680 = load i64, ptr %51, align 8, !tbaa !9
  store i64 %1680, ptr %38, align 8, !tbaa !9
  %1681 = load i64, ptr %52, align 8, !tbaa !9
  store i64 %1681, ptr %39, align 8, !tbaa !9
  %1682 = load i64, ptr %50, align 8, !tbaa !9
  store i64 %1682, ptr %45, align 8, !tbaa !9
  br label %1683

1683:                                             ; preds = %2064, %1677
  %1684 = load i64, ptr %39, align 8, !tbaa !9
  %1685 = icmp slt i64 %1684, 0
  br i1 %1685, label %1686, label %1691

1686:                                             ; preds = %1683
  %1687 = load i64, ptr %45, align 8, !tbaa !9
  %1688 = load i64, ptr %38, align 8, !tbaa !9
  %1689 = icmp sge i64 %1687, %1688
  %1690 = zext i1 %1689 to i32
  br label %1696

1691:                                             ; preds = %1683
  %1692 = load i64, ptr %45, align 8, !tbaa !9
  %1693 = load i64, ptr %38, align 8, !tbaa !9
  %1694 = icmp sle i64 %1692, %1693
  %1695 = zext i1 %1694 to i32
  br label %1696

1696:                                             ; preds = %1691, %1686
  %1697 = phi i32 [ %1690, %1686 ], [ %1695, %1691 ]
  %1698 = icmp ne i32 %1697, 0
  br i1 %1698, label %1699, label %2068

1699:                                             ; preds = %1696
  %1700 = load ptr, ptr %28, align 8, !tbaa !5
  %1701 = load i64, ptr %45, align 8, !tbaa !9
  %1702 = getelementptr inbounds double, ptr %1700, i64 %1701
  %1703 = load double, ptr %1702, align 8, !tbaa !11
  %1704 = load double, ptr %66, align 8, !tbaa !11
  %1705 = fcmp ogt double %1703, %1704
  br i1 %1705, label %1706, label %1722

1706:                                             ; preds = %1699
  %1707 = load double, ptr %63, align 8, !tbaa !11
  %1708 = fdiv double 1.000000e+00, %1707
  store double %1708, ptr %58, align 8, !tbaa !11
  %1709 = load ptr, ptr %19, align 8, !tbaa !5
  %1710 = load ptr, ptr %24, align 8, !tbaa !5
  %1711 = getelementptr inbounds double, ptr %1710, i64 1
  %1712 = call i32 @f2c_dscal(ptr noundef %1709, ptr noundef %58, ptr noundef %1711, ptr noundef @c__1)
  %1713 = load ptr, ptr %19, align 8, !tbaa !5
  %1714 = load ptr, ptr %25, align 8, !tbaa !5
  %1715 = getelementptr inbounds double, ptr %1714, i64 1
  %1716 = call i32 @f2c_dscal(ptr noundef %1713, ptr noundef %58, ptr noundef %1715, ptr noundef @c__1)
  %1717 = load double, ptr %58, align 8, !tbaa !11
  %1718 = load double, ptr %64, align 8, !tbaa !11
  %1719 = fmul double %1718, %1717
  store double %1719, ptr %64, align 8, !tbaa !11
  store double 1.000000e+00, ptr %63, align 8, !tbaa !11
  %1720 = load ptr, ptr %31, align 8, !tbaa !5
  %1721 = load double, ptr %1720, align 8, !tbaa !11
  store double %1721, ptr %66, align 8, !tbaa !11
  br label %1722

1722:                                             ; preds = %1706, %1699
  %1723 = load ptr, ptr %24, align 8, !tbaa !5
  %1724 = load i64, ptr %45, align 8, !tbaa !9
  %1725 = getelementptr inbounds double, ptr %1723, i64 %1724
  %1726 = load double, ptr %1725, align 8, !tbaa !11
  store double %1726, ptr %57, align 8, !tbaa !11
  %1727 = load ptr, ptr %25, align 8, !tbaa !5
  %1728 = load i64, ptr %45, align 8, !tbaa !9
  %1729 = getelementptr inbounds double, ptr %1727, i64 %1728
  %1730 = load double, ptr %1729, align 8, !tbaa !11
  store double %1730, ptr %56, align 8, !tbaa !11
  %1731 = load ptr, ptr %17, align 8, !tbaa !5
  %1732 = load i64, ptr %1731, align 8, !tbaa !9
  %1733 = icmp ne i64 %1732, 0
  br i1 %1733, label %1734, label %1807

1734:                                             ; preds = %1722
  %1735 = load ptr, ptr %19, align 8, !tbaa !5
  %1736 = load i64, ptr %1735, align 8, !tbaa !9
  store i64 %1736, ptr %40, align 8, !tbaa !9
  %1737 = load i64, ptr %45, align 8, !tbaa !9
  %1738 = add nsw i64 %1737, 1
  store i64 %1738, ptr %46, align 8, !tbaa !9
  br label %1739

1739:                                             ; preds = %1803, %1734
  %1740 = load i64, ptr %46, align 8, !tbaa !9
  %1741 = load i64, ptr %40, align 8, !tbaa !9
  %1742 = icmp sle i64 %1740, %1741
  br i1 %1742, label %1743, label %1806

1743:                                             ; preds = %1739
  %1744 = load double, ptr %57, align 8, !tbaa !11
  %1745 = load ptr, ptr %26, align 8, !tbaa !5
  %1746 = load i64, ptr %45, align 8, !tbaa !9
  %1747 = load i64, ptr %46, align 8, !tbaa !9
  %1748 = load i64, ptr %33, align 8, !tbaa !9
  %1749 = mul nsw i64 %1747, %1748
  %1750 = add nsw i64 %1746, %1749
  %1751 = getelementptr inbounds double, ptr %1745, i64 %1750
  %1752 = load double, ptr %1751, align 8, !tbaa !11
  %1753 = load ptr, ptr %24, align 8, !tbaa !5
  %1754 = load i64, ptr %46, align 8, !tbaa !9
  %1755 = getelementptr inbounds double, ptr %1753, i64 %1754
  %1756 = load double, ptr %1755, align 8, !tbaa !11
  %1757 = fneg double %1752
  %1758 = call double @llvm.fmuladd.f64(double %1757, double %1756, double %1744)
  %1759 = load ptr, ptr %26, align 8, !tbaa !5
  %1760 = load i64, ptr %46, align 8, !tbaa !9
  %1761 = add nsw i64 %1760, 1
  %1762 = load i64, ptr %45, align 8, !tbaa !9
  %1763 = load i64, ptr %33, align 8, !tbaa !9
  %1764 = mul nsw i64 %1762, %1763
  %1765 = add nsw i64 %1761, %1764
  %1766 = getelementptr inbounds double, ptr %1759, i64 %1765
  %1767 = load double, ptr %1766, align 8, !tbaa !11
  %1768 = load ptr, ptr %25, align 8, !tbaa !5
  %1769 = load i64, ptr %46, align 8, !tbaa !9
  %1770 = getelementptr inbounds double, ptr %1768, i64 %1769
  %1771 = load double, ptr %1770, align 8, !tbaa !11
  %1772 = call double @llvm.fmuladd.f64(double %1767, double %1771, double %1758)
  store double %1772, ptr %57, align 8, !tbaa !11
  %1773 = load double, ptr %56, align 8, !tbaa !11
  %1774 = load ptr, ptr %26, align 8, !tbaa !5
  %1775 = load i64, ptr %45, align 8, !tbaa !9
  %1776 = load i64, ptr %46, align 8, !tbaa !9
  %1777 = load i64, ptr %33, align 8, !tbaa !9
  %1778 = mul nsw i64 %1776, %1777
  %1779 = add nsw i64 %1775, %1778
  %1780 = getelementptr inbounds double, ptr %1774, i64 %1779
  %1781 = load double, ptr %1780, align 8, !tbaa !11
  %1782 = load ptr, ptr %25, align 8, !tbaa !5
  %1783 = load i64, ptr %46, align 8, !tbaa !9
  %1784 = getelementptr inbounds double, ptr %1782, i64 %1783
  %1785 = load double, ptr %1784, align 8, !tbaa !11
  %1786 = fneg double %1781
  %1787 = call double @llvm.fmuladd.f64(double %1786, double %1785, double %1773)
  %1788 = load ptr, ptr %26, align 8, !tbaa !5
  %1789 = load i64, ptr %46, align 8, !tbaa !9
  %1790 = add nsw i64 %1789, 1
  %1791 = load i64, ptr %45, align 8, !tbaa !9
  %1792 = load i64, ptr %33, align 8, !tbaa !9
  %1793 = mul nsw i64 %1791, %1792
  %1794 = add nsw i64 %1790, %1793
  %1795 = getelementptr inbounds double, ptr %1788, i64 %1794
  %1796 = load double, ptr %1795, align 8, !tbaa !11
  %1797 = load ptr, ptr %24, align 8, !tbaa !5
  %1798 = load i64, ptr %46, align 8, !tbaa !9
  %1799 = getelementptr inbounds double, ptr %1797, i64 %1798
  %1800 = load double, ptr %1799, align 8, !tbaa !11
  %1801 = fneg double %1796
  %1802 = call double @llvm.fmuladd.f64(double %1801, double %1800, double %1787)
  store double %1802, ptr %56, align 8, !tbaa !11
  br label %1803

1803:                                             ; preds = %1743
  %1804 = load i64, ptr %46, align 8, !tbaa !9
  %1805 = add nsw i64 %1804, 1
  store i64 %1805, ptr %46, align 8, !tbaa !9
  br label %1739, !llvm.loop !35

1806:                                             ; preds = %1739
  br label %1878

1807:                                             ; preds = %1722
  %1808 = load i64, ptr %45, align 8, !tbaa !9
  %1809 = sub nsw i64 %1808, 1
  store i64 %1809, ptr %40, align 8, !tbaa !9
  store i64 1, ptr %46, align 8, !tbaa !9
  br label %1810

1810:                                             ; preds = %1874, %1807
  %1811 = load i64, ptr %46, align 8, !tbaa !9
  %1812 = load i64, ptr %40, align 8, !tbaa !9
  %1813 = icmp sle i64 %1811, %1812
  br i1 %1813, label %1814, label %1877

1814:                                             ; preds = %1810
  %1815 = load double, ptr %57, align 8, !tbaa !11
  %1816 = load ptr, ptr %26, align 8, !tbaa !5
  %1817 = load i64, ptr %46, align 8, !tbaa !9
  %1818 = load i64, ptr %45, align 8, !tbaa !9
  %1819 = load i64, ptr %33, align 8, !tbaa !9
  %1820 = mul nsw i64 %1818, %1819
  %1821 = add nsw i64 %1817, %1820
  %1822 = getelementptr inbounds double, ptr %1816, i64 %1821
  %1823 = load double, ptr %1822, align 8, !tbaa !11
  %1824 = load ptr, ptr %24, align 8, !tbaa !5
  %1825 = load i64, ptr %46, align 8, !tbaa !9
  %1826 = getelementptr inbounds double, ptr %1824, i64 %1825
  %1827 = load double, ptr %1826, align 8, !tbaa !11
  %1828 = fneg double %1823
  %1829 = call double @llvm.fmuladd.f64(double %1828, double %1827, double %1815)
  %1830 = load ptr, ptr %26, align 8, !tbaa !5
  %1831 = load i64, ptr %45, align 8, !tbaa !9
  %1832 = add nsw i64 %1831, 1
  %1833 = load i64, ptr %46, align 8, !tbaa !9
  %1834 = load i64, ptr %33, align 8, !tbaa !9
  %1835 = mul nsw i64 %1833, %1834
  %1836 = add nsw i64 %1832, %1835
  %1837 = getelementptr inbounds double, ptr %1830, i64 %1836
  %1838 = load double, ptr %1837, align 8, !tbaa !11
  %1839 = load ptr, ptr %25, align 8, !tbaa !5
  %1840 = load i64, ptr %46, align 8, !tbaa !9
  %1841 = getelementptr inbounds double, ptr %1839, i64 %1840
  %1842 = load double, ptr %1841, align 8, !tbaa !11
  %1843 = call double @llvm.fmuladd.f64(double %1838, double %1842, double %1829)
  store double %1843, ptr %57, align 8, !tbaa !11
  %1844 = load double, ptr %56, align 8, !tbaa !11
  %1845 = load ptr, ptr %26, align 8, !tbaa !5
  %1846 = load i64, ptr %46, align 8, !tbaa !9
  %1847 = load i64, ptr %45, align 8, !tbaa !9
  %1848 = load i64, ptr %33, align 8, !tbaa !9
  %1849 = mul nsw i64 %1847, %1848
  %1850 = add nsw i64 %1846, %1849
  %1851 = getelementptr inbounds double, ptr %1845, i64 %1850
  %1852 = load double, ptr %1851, align 8, !tbaa !11
  %1853 = load ptr, ptr %25, align 8, !tbaa !5
  %1854 = load i64, ptr %46, align 8, !tbaa !9
  %1855 = getelementptr inbounds double, ptr %1853, i64 %1854
  %1856 = load double, ptr %1855, align 8, !tbaa !11
  %1857 = fneg double %1852
  %1858 = call double @llvm.fmuladd.f64(double %1857, double %1856, double %1844)
  %1859 = load ptr, ptr %26, align 8, !tbaa !5
  %1860 = load i64, ptr %45, align 8, !tbaa !9
  %1861 = add nsw i64 %1860, 1
  %1862 = load i64, ptr %46, align 8, !tbaa !9
  %1863 = load i64, ptr %33, align 8, !tbaa !9
  %1864 = mul nsw i64 %1862, %1863
  %1865 = add nsw i64 %1861, %1864
  %1866 = getelementptr inbounds double, ptr %1859, i64 %1865
  %1867 = load double, ptr %1866, align 8, !tbaa !11
  %1868 = load ptr, ptr %24, align 8, !tbaa !5
  %1869 = load i64, ptr %46, align 8, !tbaa !9
  %1870 = getelementptr inbounds double, ptr %1868, i64 %1869
  %1871 = load double, ptr %1870, align 8, !tbaa !11
  %1872 = fneg double %1867
  %1873 = call double @llvm.fmuladd.f64(double %1872, double %1871, double %1858)
  store double %1873, ptr %56, align 8, !tbaa !11
  br label %1874

1874:                                             ; preds = %1814
  %1875 = load i64, ptr %46, align 8, !tbaa !9
  %1876 = add nsw i64 %1875, 1
  store i64 %1876, ptr %46, align 8, !tbaa !9
  br label %1810, !llvm.loop !36

1877:                                             ; preds = %1810
  br label %1878

1878:                                             ; preds = %1877, %1806
  %1879 = load ptr, ptr %26, align 8, !tbaa !5
  %1880 = load i64, ptr %45, align 8, !tbaa !9
  %1881 = load i64, ptr %45, align 8, !tbaa !9
  %1882 = load i64, ptr %33, align 8, !tbaa !9
  %1883 = mul nsw i64 %1881, %1882
  %1884 = add nsw i64 %1880, %1883
  %1885 = getelementptr inbounds double, ptr %1879, i64 %1884
  %1886 = load double, ptr %1885, align 8, !tbaa !11
  store double %1886, ptr %41, align 8, !tbaa !11
  %1887 = load double, ptr %41, align 8, !tbaa !11
  %1888 = fcmp oge double %1887, 0.000000e+00
  br i1 %1888, label %1889, label %1891

1889:                                             ; preds = %1878
  %1890 = load double, ptr %41, align 8, !tbaa !11
  br label %1894

1891:                                             ; preds = %1878
  %1892 = load double, ptr %41, align 8, !tbaa !11
  %1893 = fneg double %1892
  br label %1894

1894:                                             ; preds = %1891, %1889
  %1895 = phi double [ %1890, %1889 ], [ %1893, %1891 ]
  %1896 = load ptr, ptr %26, align 8, !tbaa !5
  %1897 = load i64, ptr %45, align 8, !tbaa !9
  %1898 = add nsw i64 %1897, 1
  %1899 = load i64, ptr %45, align 8, !tbaa !9
  %1900 = load i64, ptr %33, align 8, !tbaa !9
  %1901 = mul nsw i64 %1899, %1900
  %1902 = add nsw i64 %1898, %1901
  %1903 = getelementptr inbounds double, ptr %1896, i64 %1902
  %1904 = load double, ptr %1903, align 8, !tbaa !11
  store double %1904, ptr %42, align 8, !tbaa !11
  %1905 = load double, ptr %42, align 8, !tbaa !11
  %1906 = fcmp oge double %1905, 0.000000e+00
  br i1 %1906, label %1907, label %1909

1907:                                             ; preds = %1894
  %1908 = load double, ptr %42, align 8, !tbaa !11
  br label %1912

1909:                                             ; preds = %1894
  %1910 = load double, ptr %42, align 8, !tbaa !11
  %1911 = fneg double %1910
  br label %1912

1912:                                             ; preds = %1909, %1907
  %1913 = phi double [ %1908, %1907 ], [ %1911, %1909 ]
  %1914 = fadd double %1895, %1913
  store double %1914, ptr %47, align 8, !tbaa !11
  %1915 = load double, ptr %47, align 8, !tbaa !11
  %1916 = load ptr, ptr %30, align 8, !tbaa !5
  %1917 = load double, ptr %1916, align 8, !tbaa !11
  %1918 = fcmp ogt double %1915, %1917
  br i1 %1918, label %1919, label %2037

1919:                                             ; preds = %1912
  %1920 = load double, ptr %47, align 8, !tbaa !11
  %1921 = fcmp olt double %1920, 1.000000e+00
  br i1 %1921, label %1922, label %1974

1922:                                             ; preds = %1919
  %1923 = load double, ptr %57, align 8, !tbaa !11
  %1924 = fcmp oge double %1923, 0.000000e+00
  br i1 %1924, label %1925, label %1927

1925:                                             ; preds = %1922
  %1926 = load double, ptr %57, align 8, !tbaa !11
  br label %1930

1927:                                             ; preds = %1922
  %1928 = load double, ptr %57, align 8, !tbaa !11
  %1929 = fneg double %1928
  br label %1930

1930:                                             ; preds = %1927, %1925
  %1931 = phi double [ %1926, %1925 ], [ %1929, %1927 ]
  %1932 = load double, ptr %56, align 8, !tbaa !11
  %1933 = fcmp oge double %1932, 0.000000e+00
  br i1 %1933, label %1934, label %1936

1934:                                             ; preds = %1930
  %1935 = load double, ptr %56, align 8, !tbaa !11
  br label %1939

1936:                                             ; preds = %1930
  %1937 = load double, ptr %56, align 8, !tbaa !11
  %1938 = fneg double %1937
  br label %1939

1939:                                             ; preds = %1936, %1934
  %1940 = phi double [ %1935, %1934 ], [ %1938, %1936 ]
  %1941 = fadd double %1931, %1940
  store double %1941, ptr %53, align 8, !tbaa !11
  %1942 = load double, ptr %53, align 8, !tbaa !11
  %1943 = load double, ptr %47, align 8, !tbaa !11
  %1944 = load ptr, ptr %31, align 8, !tbaa !5
  %1945 = load double, ptr %1944, align 8, !tbaa !11
  %1946 = fmul double %1943, %1945
  %1947 = fcmp ogt double %1942, %1946
  br i1 %1947, label %1948, label %1973

1948:                                             ; preds = %1939
  %1949 = load double, ptr %53, align 8, !tbaa !11
  %1950 = fdiv double 1.000000e+00, %1949
  store double %1950, ptr %58, align 8, !tbaa !11
  %1951 = load ptr, ptr %19, align 8, !tbaa !5
  %1952 = load ptr, ptr %24, align 8, !tbaa !5
  %1953 = getelementptr inbounds double, ptr %1952, i64 1
  %1954 = call i32 @f2c_dscal(ptr noundef %1951, ptr noundef %58, ptr noundef %1953, ptr noundef @c__1)
  %1955 = load ptr, ptr %19, align 8, !tbaa !5
  %1956 = load ptr, ptr %25, align 8, !tbaa !5
  %1957 = getelementptr inbounds double, ptr %1956, i64 1
  %1958 = call i32 @f2c_dscal(ptr noundef %1955, ptr noundef %58, ptr noundef %1957, ptr noundef @c__1)
  %1959 = load ptr, ptr %24, align 8, !tbaa !5
  %1960 = load i64, ptr %45, align 8, !tbaa !9
  %1961 = getelementptr inbounds double, ptr %1959, i64 %1960
  %1962 = load double, ptr %1961, align 8, !tbaa !11
  store double %1962, ptr %57, align 8, !tbaa !11
  %1963 = load ptr, ptr %25, align 8, !tbaa !5
  %1964 = load i64, ptr %45, align 8, !tbaa !9
  %1965 = getelementptr inbounds double, ptr %1963, i64 %1964
  %1966 = load double, ptr %1965, align 8, !tbaa !11
  store double %1966, ptr %56, align 8, !tbaa !11
  %1967 = load double, ptr %58, align 8, !tbaa !11
  %1968 = load double, ptr %64, align 8, !tbaa !11
  %1969 = fmul double %1968, %1967
  store double %1969, ptr %64, align 8, !tbaa !11
  %1970 = load double, ptr %58, align 8, !tbaa !11
  %1971 = load double, ptr %63, align 8, !tbaa !11
  %1972 = fmul double %1971, %1970
  store double %1972, ptr %63, align 8, !tbaa !11
  br label %1973

1973:                                             ; preds = %1948, %1939
  br label %1974

1974:                                             ; preds = %1973, %1919
  %1975 = load ptr, ptr %26, align 8, !tbaa !5
  %1976 = load i64, ptr %45, align 8, !tbaa !9
  %1977 = load i64, ptr %45, align 8, !tbaa !9
  %1978 = load i64, ptr %33, align 8, !tbaa !9
  %1979 = mul nsw i64 %1977, %1978
  %1980 = add nsw i64 %1976, %1979
  %1981 = getelementptr inbounds double, ptr %1975, i64 %1980
  %1982 = load ptr, ptr %26, align 8, !tbaa !5
  %1983 = load i64, ptr %45, align 8, !tbaa !9
  %1984 = add nsw i64 %1983, 1
  %1985 = load i64, ptr %45, align 8, !tbaa !9
  %1986 = load i64, ptr %33, align 8, !tbaa !9
  %1987 = mul nsw i64 %1985, %1986
  %1988 = add nsw i64 %1984, %1987
  %1989 = getelementptr inbounds double, ptr %1982, i64 %1988
  %1990 = load ptr, ptr %24, align 8, !tbaa !5
  %1991 = load i64, ptr %45, align 8, !tbaa !9
  %1992 = getelementptr inbounds double, ptr %1990, i64 %1991
  %1993 = load ptr, ptr %25, align 8, !tbaa !5
  %1994 = load i64, ptr %45, align 8, !tbaa !9
  %1995 = getelementptr inbounds double, ptr %1993, i64 %1994
  %1996 = call i32 @dladiv_(ptr noundef %57, ptr noundef %56, ptr noundef %1981, ptr noundef %1989, ptr noundef %1992, ptr noundef %1995)
  %1997 = load ptr, ptr %24, align 8, !tbaa !5
  %1998 = load i64, ptr %45, align 8, !tbaa !9
  %1999 = getelementptr inbounds double, ptr %1997, i64 %1998
  %2000 = load double, ptr %1999, align 8, !tbaa !11
  store double %2000, ptr %41, align 8, !tbaa !11
  %2001 = load double, ptr %41, align 8, !tbaa !11
  %2002 = fcmp oge double %2001, 0.000000e+00
  br i1 %2002, label %2003, label %2005

2003:                                             ; preds = %1974
  %2004 = load double, ptr %41, align 8, !tbaa !11
  br label %2008

2005:                                             ; preds = %1974
  %2006 = load double, ptr %41, align 8, !tbaa !11
  %2007 = fneg double %2006
  br label %2008

2008:                                             ; preds = %2005, %2003
  %2009 = phi double [ %2004, %2003 ], [ %2007, %2005 ]
  %2010 = load ptr, ptr %25, align 8, !tbaa !5
  %2011 = load i64, ptr %45, align 8, !tbaa !9
  %2012 = getelementptr inbounds double, ptr %2010, i64 %2011
  %2013 = load double, ptr %2012, align 8, !tbaa !11
  store double %2013, ptr %42, align 8, !tbaa !11
  %2014 = load double, ptr %42, align 8, !tbaa !11
  %2015 = fcmp oge double %2014, 0.000000e+00
  br i1 %2015, label %2016, label %2018

2016:                                             ; preds = %2008
  %2017 = load double, ptr %42, align 8, !tbaa !11
  br label %2021

2018:                                             ; preds = %2008
  %2019 = load double, ptr %42, align 8, !tbaa !11
  %2020 = fneg double %2019
  br label %2021

2021:                                             ; preds = %2018, %2016
  %2022 = phi double [ %2017, %2016 ], [ %2020, %2018 ]
  %2023 = fadd double %2009, %2022
  store double %2023, ptr %43, align 8, !tbaa !11
  %2024 = load double, ptr %43, align 8, !tbaa !11
  %2025 = load double, ptr %63, align 8, !tbaa !11
  %2026 = fcmp oge double %2024, %2025
  br i1 %2026, label %2027, label %2029

2027:                                             ; preds = %2021
  %2028 = load double, ptr %43, align 8, !tbaa !11
  br label %2031

2029:                                             ; preds = %2021
  %2030 = load double, ptr %63, align 8, !tbaa !11
  br label %2031

2031:                                             ; preds = %2029, %2027
  %2032 = phi double [ %2028, %2027 ], [ %2030, %2029 ]
  store double %2032, ptr %63, align 8, !tbaa !11
  %2033 = load ptr, ptr %31, align 8, !tbaa !5
  %2034 = load double, ptr %2033, align 8, !tbaa !11
  %2035 = load double, ptr %63, align 8, !tbaa !11
  %2036 = fdiv double %2034, %2035
  store double %2036, ptr %66, align 8, !tbaa !11
  br label %2063

2037:                                             ; preds = %1912
  %2038 = load ptr, ptr %19, align 8, !tbaa !5
  %2039 = load i64, ptr %2038, align 8, !tbaa !9
  store i64 %2039, ptr %40, align 8, !tbaa !9
  store i64 1, ptr %46, align 8, !tbaa !9
  br label %2040

2040:                                             ; preds = %2051, %2037
  %2041 = load i64, ptr %46, align 8, !tbaa !9
  %2042 = load i64, ptr %40, align 8, !tbaa !9
  %2043 = icmp sle i64 %2041, %2042
  br i1 %2043, label %2044, label %2054

2044:                                             ; preds = %2040
  %2045 = load ptr, ptr %24, align 8, !tbaa !5
  %2046 = load i64, ptr %46, align 8, !tbaa !9
  %2047 = getelementptr inbounds double, ptr %2045, i64 %2046
  store double 0.000000e+00, ptr %2047, align 8, !tbaa !11
  %2048 = load ptr, ptr %25, align 8, !tbaa !5
  %2049 = load i64, ptr %46, align 8, !tbaa !9
  %2050 = getelementptr inbounds double, ptr %2048, i64 %2049
  store double 0.000000e+00, ptr %2050, align 8, !tbaa !11
  br label %2051

2051:                                             ; preds = %2044
  %2052 = load i64, ptr %46, align 8, !tbaa !9
  %2053 = add nsw i64 %2052, 1
  store i64 %2053, ptr %46, align 8, !tbaa !9
  br label %2040, !llvm.loop !37

2054:                                             ; preds = %2040
  %2055 = load ptr, ptr %24, align 8, !tbaa !5
  %2056 = load i64, ptr %45, align 8, !tbaa !9
  %2057 = getelementptr inbounds double, ptr %2055, i64 %2056
  store double 1.000000e+00, ptr %2057, align 8, !tbaa !11
  %2058 = load ptr, ptr %25, align 8, !tbaa !5
  %2059 = load i64, ptr %45, align 8, !tbaa !9
  %2060 = getelementptr inbounds double, ptr %2058, i64 %2059
  store double 1.000000e+00, ptr %2060, align 8, !tbaa !11
  store double 0.000000e+00, ptr %64, align 8, !tbaa !11
  store double 1.000000e+00, ptr %63, align 8, !tbaa !11
  %2061 = load ptr, ptr %31, align 8, !tbaa !5
  %2062 = load double, ptr %2061, align 8, !tbaa !11
  store double %2062, ptr %66, align 8, !tbaa !11
  br label %2063

2063:                                             ; preds = %2054, %2031
  br label %2064

2064:                                             ; preds = %2063
  %2065 = load i64, ptr %39, align 8, !tbaa !9
  %2066 = load i64, ptr %45, align 8, !tbaa !9
  %2067 = add nsw i64 %2066, %2065
  store i64 %2067, ptr %45, align 8, !tbaa !9
  br label %1683, !llvm.loop !38

2068:                                             ; preds = %1696
  %2069 = load ptr, ptr %19, align 8, !tbaa !5
  %2070 = load ptr, ptr %24, align 8, !tbaa !5
  %2071 = getelementptr inbounds double, ptr %2070, i64 1
  %2072 = call double @f2c_dasum(ptr noundef %2069, ptr noundef %2071, ptr noundef @c__1)
  %2073 = load ptr, ptr %19, align 8, !tbaa !5
  %2074 = load ptr, ptr %25, align 8, !tbaa !5
  %2075 = getelementptr inbounds double, ptr %2074, i64 1
  %2076 = call double @f2c_dasum(ptr noundef %2073, ptr noundef %2075, ptr noundef @c__1)
  %2077 = fadd double %2072, %2076
  store double %2077, ptr %68, align 8, !tbaa !11
  %2078 = load double, ptr %68, align 8, !tbaa !11
  %2079 = load double, ptr %73, align 8, !tbaa !11
  %2080 = load double, ptr %64, align 8, !tbaa !11
  %2081 = fmul double %2079, %2080
  %2082 = fcmp oge double %2078, %2081
  br i1 %2082, label %2083, label %2084

2083:                                             ; preds = %2068
  br label %2132

2084:                                             ; preds = %2068
  %2085 = load ptr, ptr %29, align 8, !tbaa !5
  %2086 = load double, ptr %2085, align 8, !tbaa !11
  %2087 = load double, ptr %67, align 8, !tbaa !11
  %2088 = fadd double %2087, 1.000000e+00
  %2089 = fdiv double %2086, %2088
  store double %2089, ptr %49, align 8, !tbaa !11
  %2090 = load ptr, ptr %29, align 8, !tbaa !5
  %2091 = load double, ptr %2090, align 8, !tbaa !11
  %2092 = load ptr, ptr %24, align 8, !tbaa !5
  %2093 = getelementptr inbounds double, ptr %2092, i64 1
  store double %2091, ptr %2093, align 8, !tbaa !11
  %2094 = load ptr, ptr %25, align 8, !tbaa !5
  %2095 = getelementptr inbounds double, ptr %2094, i64 1
  store double 0.000000e+00, ptr %2095, align 8, !tbaa !11
  %2096 = load ptr, ptr %19, align 8, !tbaa !5
  %2097 = load i64, ptr %2096, align 8, !tbaa !9
  store i64 %2097, ptr %39, align 8, !tbaa !9
  store i64 2, ptr %45, align 8, !tbaa !9
  br label %2098

2098:                                             ; preds = %2110, %2084
  %2099 = load i64, ptr %45, align 8, !tbaa !9
  %2100 = load i64, ptr %39, align 8, !tbaa !9
  %2101 = icmp sle i64 %2099, %2100
  br i1 %2101, label %2102, label %2113

2102:                                             ; preds = %2098
  %2103 = load double, ptr %49, align 8, !tbaa !11
  %2104 = load ptr, ptr %24, align 8, !tbaa !5
  %2105 = load i64, ptr %45, align 8, !tbaa !9
  %2106 = getelementptr inbounds double, ptr %2104, i64 %2105
  store double %2103, ptr %2106, align 8, !tbaa !11
  %2107 = load ptr, ptr %25, align 8, !tbaa !5
  %2108 = load i64, ptr %45, align 8, !tbaa !9
  %2109 = getelementptr inbounds double, ptr %2107, i64 %2108
  store double 0.000000e+00, ptr %2109, align 8, !tbaa !11
  br label %2110

2110:                                             ; preds = %2102
  %2111 = load i64, ptr %45, align 8, !tbaa !9
  %2112 = add nsw i64 %2111, 1
  store i64 %2112, ptr %45, align 8, !tbaa !9
  br label %2098, !llvm.loop !39

2113:                                             ; preds = %2098
  %2114 = load ptr, ptr %29, align 8, !tbaa !5
  %2115 = load double, ptr %2114, align 8, !tbaa !11
  %2116 = load double, ptr %67, align 8, !tbaa !11
  %2117 = load ptr, ptr %24, align 8, !tbaa !5
  %2118 = load ptr, ptr %19, align 8, !tbaa !5
  %2119 = load i64, ptr %2118, align 8, !tbaa !9
  %2120 = load i64, ptr %59, align 8, !tbaa !9
  %2121 = sub nsw i64 %2119, %2120
  %2122 = add nsw i64 %2121, 1
  %2123 = getelementptr inbounds double, ptr %2117, i64 %2122
  %2124 = load double, ptr %2123, align 8, !tbaa !11
  %2125 = fneg double %2115
  %2126 = call double @llvm.fmuladd.f64(double %2125, double %2116, double %2124)
  store double %2126, ptr %2123, align 8, !tbaa !11
  br label %2127

2127:                                             ; preds = %2113
  %2128 = load i64, ptr %59, align 8, !tbaa !9
  %2129 = add nsw i64 %2128, 1
  store i64 %2129, ptr %59, align 8, !tbaa !9
  br label %1673, !llvm.loop !40

2130:                                             ; preds = %1673
  %2131 = load ptr, ptr %32, align 8, !tbaa !5
  store i64 1, ptr %2131, align 8, !tbaa !9
  br label %2132

2132:                                             ; preds = %2130, %2083
  store double 0.000000e+00, ptr %68, align 8, !tbaa !11
  %2133 = load ptr, ptr %19, align 8, !tbaa !5
  %2134 = load i64, ptr %2133, align 8, !tbaa !9
  store i64 %2134, ptr %37, align 8, !tbaa !9
  store i64 1, ptr %45, align 8, !tbaa !9
  br label %2135

2135:                                             ; preds = %2177, %2132
  %2136 = load i64, ptr %45, align 8, !tbaa !9
  %2137 = load i64, ptr %37, align 8, !tbaa !9
  %2138 = icmp sle i64 %2136, %2137
  br i1 %2138, label %2139, label %2180

2139:                                             ; preds = %2135
  %2140 = load double, ptr %68, align 8, !tbaa !11
  store double %2140, ptr %43, align 8, !tbaa !11
  %2141 = load ptr, ptr %24, align 8, !tbaa !5
  %2142 = load i64, ptr %45, align 8, !tbaa !9
  %2143 = getelementptr inbounds double, ptr %2141, i64 %2142
  %2144 = load double, ptr %2143, align 8, !tbaa !11
  store double %2144, ptr %41, align 8, !tbaa !11
  %2145 = load double, ptr %41, align 8, !tbaa !11
  %2146 = fcmp oge double %2145, 0.000000e+00
  br i1 %2146, label %2147, label %2149

2147:                                             ; preds = %2139
  %2148 = load double, ptr %41, align 8, !tbaa !11
  br label %2152

2149:                                             ; preds = %2139
  %2150 = load double, ptr %41, align 8, !tbaa !11
  %2151 = fneg double %2150
  br label %2152

2152:                                             ; preds = %2149, %2147
  %2153 = phi double [ %2148, %2147 ], [ %2151, %2149 ]
  %2154 = load ptr, ptr %25, align 8, !tbaa !5
  %2155 = load i64, ptr %45, align 8, !tbaa !9
  %2156 = getelementptr inbounds double, ptr %2154, i64 %2155
  %2157 = load double, ptr %2156, align 8, !tbaa !11
  store double %2157, ptr %42, align 8, !tbaa !11
  %2158 = load double, ptr %42, align 8, !tbaa !11
  %2159 = fcmp oge double %2158, 0.000000e+00
  br i1 %2159, label %2160, label %2162

2160:                                             ; preds = %2152
  %2161 = load double, ptr %42, align 8, !tbaa !11
  br label %2165

2162:                                             ; preds = %2152
  %2163 = load double, ptr %42, align 8, !tbaa !11
  %2164 = fneg double %2163
  br label %2165

2165:                                             ; preds = %2162, %2160
  %2166 = phi double [ %2161, %2160 ], [ %2164, %2162 ]
  %2167 = fadd double %2153, %2166
  store double %2167, ptr %44, align 8, !tbaa !11
  %2168 = load double, ptr %43, align 8, !tbaa !11
  %2169 = load double, ptr %44, align 8, !tbaa !11
  %2170 = fcmp oge double %2168, %2169
  br i1 %2170, label %2171, label %2173

2171:                                             ; preds = %2165
  %2172 = load double, ptr %43, align 8, !tbaa !11
  br label %2175

2173:                                             ; preds = %2165
  %2174 = load double, ptr %44, align 8, !tbaa !11
  br label %2175

2175:                                             ; preds = %2173, %2171
  %2176 = phi double [ %2172, %2171 ], [ %2174, %2173 ]
  store double %2176, ptr %68, align 8, !tbaa !11
  br label %2177

2177:                                             ; preds = %2175
  %2178 = load i64, ptr %45, align 8, !tbaa !9
  %2179 = add nsw i64 %2178, 1
  store i64 %2179, ptr %45, align 8, !tbaa !9
  br label %2135, !llvm.loop !41

2180:                                             ; preds = %2135
  %2181 = load double, ptr %68, align 8, !tbaa !11
  %2182 = fdiv double 1.000000e+00, %2181
  store double %2182, ptr %41, align 8, !tbaa !11
  %2183 = load ptr, ptr %19, align 8, !tbaa !5
  %2184 = load ptr, ptr %24, align 8, !tbaa !5
  %2185 = getelementptr inbounds double, ptr %2184, i64 1
  %2186 = call i32 @f2c_dscal(ptr noundef %2183, ptr noundef %41, ptr noundef %2185, ptr noundef @c__1)
  %2187 = load double, ptr %68, align 8, !tbaa !11
  %2188 = fdiv double 1.000000e+00, %2187
  store double %2188, ptr %41, align 8, !tbaa !11
  %2189 = load ptr, ptr %19, align 8, !tbaa !5
  %2190 = load ptr, ptr %25, align 8, !tbaa !5
  %2191 = getelementptr inbounds double, ptr %2190, i64 1
  %2192 = call i32 @f2c_dscal(ptr noundef %2189, ptr noundef %41, ptr noundef %2191, ptr noundef @c__1)
  br label %2193

2193:                                             ; preds = %2180, %724
  call void @llvm.lifetime.end.p0(i64 8, ptr %73) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %72) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %71) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #5
  call void @llvm.lifetime.end.p0(i64 8, 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 1, 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 8, ptr %59) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #5
  call void @llvm.lifetime.end.p0(i64 8, 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 8, ptr %50) #5
  call void @llvm.lifetime.end.p0(i64 8, 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 8, 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 8, ptr %40) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #5
  ret i32 0
}

; 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 @f2c_dnrm2(ptr noundef, ptr noundef, ptr noundef) #3

declare i32 @f2c_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 i32 @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 @f2c_dasum(ptr noundef, ptr noundef, ptr noundef) #3

declare i64 @f2c_idamax(ptr noundef, ptr noundef, ptr noundef) #3

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

declare i32 @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 = !{!"long", !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 i64, align 8
@.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 noundef i32 @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 i64, align 8
  %22 = alloca i64, align 8
  %23 = alloca i64, align 8
  %24 = alloca double, align 8
  %25 = alloca double, align 8
  %26 = alloca double, align 8
  %27 = alloca double, align 8
  %28 = alloca double, align 8
  %29 = alloca i64, align 8
  %30 = alloca double, align 8
  %31 = alloca [1 x i8], align 1
  %32 = alloca [1 x i8], align 1
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %21) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %22) #7
  call void @llvm.lifetime.start.p0(i64 8, 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 8, ptr nonnull %26) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %27) #7
  call void @llvm.lifetime.start.p0(i64 8, 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 1, ptr nonnull %32) #7
  %33 = load i64, ptr %4, align 8, !tbaa !5
  %34 = xor i64 %33, -1
  %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 i64, ptr %10, align 8, !tbaa !5
  %39 = xor i64 %38, -1
  %40 = getelementptr inbounds double, ptr %9, i64 %39
  %41 = getelementptr inbounds i8, ptr %11, i64 -8
  store i64 0, ptr %15, align 8, !tbaa !5
  %42 = load i64, ptr %2, align 8, !tbaa !5
  %43 = sitofp i64 %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 i64, ptr %2, align 8, !tbaa !5
  %.not903 = icmp slt i64 %52, 1
  br i1 %.not903, label %93, label %.lr.ph906

.lr.ph906:                                        ; preds = %16
  %53 = add i64 %33, 1
  %54 = add i64 %38, 1
  %55 = shl i64 %38, 3
  %56 = add i64 %55, 8
  %57 = shl i64 %33, 3
  %58 = add i64 %57, 8
  br label %59

59:                                               ; preds = %.lr.ph906, %._crit_edge
  %indvar = phi i64 [ 0, %.lr.ph906 ], [ %indvar.next, %._crit_edge ]
  %.0840904 = phi i64 [ 1, %.lr.ph906 ], [ %91, %._crit_edge ]
  %60 = mul i64 %55, %indvar
  %scevgep1129 = getelementptr i8, ptr %9, i64 %60
  %61 = mul i64 %56, %indvar
  %scevgep1130 = getelementptr i8, ptr %9, i64 %61
  %62 = mul i64 %57, %indvar
  %scevgep1131 = getelementptr i8, ptr %3, i64 %62
  %63 = mul i64 %58, %indvar
  %scevgep1132 = getelementptr i8, ptr %3, i64 %63
  %.not888.not899 = icmp ugt i64 %.0840904, 1
  br i1 %.not888.not899, label %.lr.ph, label %._crit_edge

.lr.ph:                                           ; preds = %59
  %64 = mul nsw i64 %.0840904, %33
  %invariant.gep = getelementptr double, ptr %35, i64 %64
  %65 = mul nsw i64 %.0840904, %38
  %invariant.gep901 = getelementptr double, ptr %40, i64 %65
  %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 %scevgep1129, %scevgep1132
  %bound1 = icmp ult ptr %scevgep1131, %scevgep1130
  %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
  %66 = getelementptr double, ptr %invariant.gep, i64 %offset.idx
  %67 = getelementptr i8, ptr %66, i64 16
  %wide.load = load <2 x double>, ptr %66, align 8, !tbaa !9, !alias.scope !11
  %wide.load1133 = load <2 x double>, ptr %67, align 8, !tbaa !9, !alias.scope !11
  %68 = getelementptr double, ptr %invariant.gep901, i64 %offset.idx
  %69 = getelementptr i8, ptr %68, i64 16
  store <2 x double> %wide.load, ptr %68, align 8, !tbaa !9, !alias.scope !14, !noalias !11
  store <2 x double> %wide.load1133, ptr %69, align 8, !tbaa !9, !alias.scope !14, !noalias !11
  %index.next = add nuw i64 %index, 4
  %70 = icmp eq i64 %index.next, %n.vec
  br i1 %70, 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
  %.0844900.ph = phi i64 [ 1, %vector.memcheck ], [ 1, %.lr.ph ], [ %ind.end, %middle.block ]
  %71 = sub i64 %.0840904, %.0844900.ph
  %72 = sub i64 %indvar, %.0844900.ph
  %xtraiter = and i64 %71, 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
  %.0844900.prol = phi i64 [ %74, %scalar.ph.prol ], [ %.0844900.ph, %scalar.ph.preheader ]
  %prol.iter = phi i64 [ %prol.iter.next, %scalar.ph.prol ], [ 0, %scalar.ph.preheader ]
  %gep.prol = getelementptr double, ptr %invariant.gep, i64 %.0844900.prol
  %73 = load double, ptr %gep.prol, align 8, !tbaa !9
  %gep902.prol = getelementptr double, ptr %invariant.gep901, i64 %.0844900.prol
  store double %73, ptr %gep902.prol, align 8, !tbaa !9
  %74 = add nuw nsw i64 %.0844900.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
  %.0844900.unr = phi i64 [ %.0844900.ph, %scalar.ph.preheader ], [ %74, %scalar.ph.prol ]
  %75 = icmp ult i64 %72, 3
  br i1 %75, label %._crit_edge, label %scalar.ph

scalar.ph:                                        ; preds = %scalar.ph.prol.loopexit, %scalar.ph
  %.0844900 = phi i64 [ %83, %scalar.ph ], [ %.0844900.unr, %scalar.ph.prol.loopexit ]
  %gep = getelementptr double, ptr %invariant.gep, i64 %.0844900
  %76 = load double, ptr %gep, align 8, !tbaa !9
  %gep902 = getelementptr double, ptr %invariant.gep901, i64 %.0844900
  store double %76, ptr %gep902, align 8, !tbaa !9
  %77 = add nuw nsw i64 %.0844900, 1
  %gep.1 = getelementptr double, ptr %invariant.gep, i64 %77
  %78 = load double, ptr %gep.1, align 8, !tbaa !9
  %gep902.1 = getelementptr double, ptr %invariant.gep901, i64 %77
  store double %78, ptr %gep902.1, align 8, !tbaa !9
  %79 = add nuw nsw i64 %.0844900, 2
  %gep.2 = getelementptr double, ptr %invariant.gep, i64 %79
  %80 = load double, ptr %gep.2, align 8, !tbaa !9
  %gep902.2 = getelementptr double, ptr %invariant.gep901, i64 %79
  store double %80, ptr %gep902.2, align 8, !tbaa !9
  %81 = add nuw nsw i64 %.0844900, 3
  %gep.3 = getelementptr double, ptr %invariant.gep, i64 %81
  %82 = load double, ptr %gep.3, align 8, !tbaa !9
  %gep902.3 = getelementptr double, ptr %invariant.gep901, i64 %81
  store double %82, ptr %gep902.3, align 8, !tbaa !9
  %83 = add nuw nsw i64 %.0844900, 4
  %exitcond.not.3 = icmp eq i64 %83, %.0840904
  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, %59
  %84 = mul i64 %.0840904, %53
  %85 = getelementptr inbounds double, ptr %35, i64 %84
  %86 = load double, ptr %85, align 8, !tbaa !9
  %87 = load double, ptr %5, align 8, !tbaa !9
  %88 = fsub double %86, %87
  %89 = mul i64 %.0840904, %54
  %90 = getelementptr inbounds double, ptr %40, i64 %89
  store double %88, ptr %90, align 8, !tbaa !9
  %91 = add nuw i64 %.0840904, 1
  %exitcond1060.not = icmp eq i64 %.0840904, %52
  %indvar.next = add i64 %indvar, 1
  br i1 %exitcond1060.not, label %._crit_edge907, label %59, !llvm.loop !23

._crit_edge907:                                   ; preds = %._crit_edge
  %92 = add nsw i64 %52, -1
  store i64 %92, ptr %22, align 8, !tbaa !5
  br label %93

93:                                               ; preds = %._crit_edge907, %16
  %94 = load double, ptr %6, align 8, !tbaa !9
  %95 = fcmp oeq double %94, 0.000000e+00
  %96 = load i64, ptr %1, align 8, !tbaa !5
  %.not878 = icmp eq i64 %96, 0
  br i1 %95, label %97, label %319

97:                                               ; preds = %93
  br i1 %.not878, label %104, label %98

98:                                               ; preds = %97
  br i1 %.not903, label %.loopexit893, label %.lr.ph1010.preheader

.lr.ph1010.preheader:                             ; preds = %98
  %.pre1090 = load double, ptr %12, align 8, !tbaa !9
  %min.iters.check1207 = icmp ult i64 %52, 4
  br i1 %min.iters.check1207, label %.lr.ph1010.preheader1346, label %vector.ph1208

vector.ph1208:                                    ; preds = %.lr.ph1010.preheader
  %n.vec1210 = and i64 %52, 9223372036854775804
  %ind.end1211 = or disjoint i64 %n.vec1210, 1
  %broadcast.splatinsert1216 = insertelement <2 x double> poison, double %.pre1090, i64 0
  %broadcast.splat1217 = shufflevector <2 x double> %broadcast.splatinsert1216, <2 x double> poison, <2 x i32> zeroinitializer
  br label %vector.body1213

vector.body1213:                                  ; preds = %vector.body1213, %vector.ph1208
  %index1214 = phi i64 [ 0, %vector.ph1208 ], [ %index.next1218, %vector.body1213 ]
  %99 = getelementptr double, ptr %7, i64 %index1214
  %100 = getelementptr inbounds i8, ptr %99, i64 16
  store <2 x double> %broadcast.splat1217, ptr %99, align 8, !tbaa !9
  store <2 x double> %broadcast.splat1217, ptr %100, align 8, !tbaa !9
  %index.next1218 = add nuw i64 %index1214, 4
  %101 = icmp eq i64 %index.next1218, %n.vec1210
  br i1 %101, label %middle.block1205, label %vector.body1213, !llvm.loop !24

middle.block1205:                                 ; preds = %vector.body1213
  %cmp.n1219 = icmp eq i64 %52, %n.vec1210
  br i1 %cmp.n1219, label %.loopexit893, label %.lr.ph1010.preheader1346

.lr.ph1010.preheader1346:                         ; preds = %middle.block1205, %.lr.ph1010.preheader
  %.18451008.ph = phi i64 [ 1, %.lr.ph1010.preheader ], [ %ind.end1211, %middle.block1205 ]
  br label %.lr.ph1010

.lr.ph1010:                                       ; preds = %.lr.ph1010.preheader1346, %.lr.ph1010
  %.18451008 = phi i64 [ %103, %.lr.ph1010 ], [ %.18451008.ph, %.lr.ph1010.preheader1346 ]
  %102 = getelementptr inbounds double, ptr %36, i64 %.18451008
  store double %.pre1090, ptr %102, align 8, !tbaa !9
  %103 = add nuw i64 %.18451008, 1
  %exitcond1071.not = icmp eq i64 %.18451008, %52
  br i1 %exitcond1071.not, label %.loopexit893, label %.lr.ph1010, !llvm.loop !25

104:                                              ; preds = %97
  %105 = tail call double @f2c_dnrm2(ptr noundef nonnull %2, ptr noundef %7, ptr noundef nonnull @c__1) #7
  %106 = load double, ptr %12, align 8, !tbaa !9
  %107 = fmul double %44, %106
  %108 = fcmp oge double %105, %51
  %109 = select i1 %108, double %105, double %51
  %110 = fdiv double %107, %109
  store double %110, ptr %24, align 8, !tbaa !9
  %111 = call i32 @f2c_dscal(ptr noundef nonnull %2, ptr noundef nonnull %24, ptr noundef %7, ptr noundef nonnull @c__1) #7
  br label %.loopexit893

.loopexit893:                                     ; preds = %.lr.ph1010, %middle.block1205, %98, %104
  %112 = load i64, ptr %0, align 8, !tbaa !5
  %.not880 = icmp eq i64 %112, 0
  %113 = load i64, ptr %2, align 8, !tbaa !5
  %114 = icmp sgt i64 %113, 1
  br i1 %.not880, label %181, label %115

115:                                              ; preds = %.loopexit893
  %116 = add i64 %38, 1
  br i1 %114, label %.lr.ph1022.preheader, label %._crit_edge1097

.lr.ph1022.preheader:                             ; preds = %115
  %ident.check1291.not = icmp eq i64 %38, 1
  %ident.check1296.not = icmp eq i64 %38, 1
  br label %.lr.ph1022

.lr.ph1022:                                       ; preds = %.lr.ph1022.preheader, %.loopexit891
  %indvar1293 = phi i64 [ %indvar.next1294, %.loopexit891 ], [ 0, %.lr.ph1022.preheader ]
  %.28461020 = phi i64 [ %121, %.loopexit891 ], [ 1, %.lr.ph1022.preheader ]
  %117 = shl i64 %indvar1293, 4
  %118 = or disjoint i64 %117, 8
  %scevgep1300 = getelementptr i8, ptr %9, i64 %118
  %119 = shl i64 %indvar1293, 4
  %120 = or disjoint i64 %119, 8
  %scevgep1295 = getelementptr i8, ptr %9, i64 %120
  %121 = add nuw nsw i64 %.28461020, 1
  %122 = mul nsw i64 %.28461020, %33
  %123 = getelementptr double, ptr %35, i64 %121
  %124 = getelementptr double, ptr %123, i64 %122
  %125 = load double, ptr %124, align 8, !tbaa !9
  %126 = mul i64 %.28461020, %116
  %127 = getelementptr inbounds double, ptr %40, i64 %126
  %128 = load double, ptr %127, align 8, !tbaa !9
  %129 = fcmp oge double %128, 0.000000e+00
  %130 = fneg double %128
  %131 = select i1 %129, double %128, double %130
  %132 = fcmp oge double %125, 0.000000e+00
  %133 = fneg double %125
  %134 = select i1 %132, double %125, double %133
  %135 = fcmp olt double %131, %134
  br i1 %135, label %.lver.check1297, label %153

.lver.check1297:                                  ; preds = %.lr.ph1022
  store double %125, ptr %127, align 8, !tbaa !9
  %136 = getelementptr double, ptr %40, i64 %121
  %137 = getelementptr double, ptr %40, i64 %.28461020
  %138 = fdiv double %130, %125
  br i1 %ident.check1296.not, label %.ph1298, label %.ph1298.lver.orig

.ph1298.lver.orig:                                ; preds = %.lver.check1297, %.ph1298.lver.orig
  %.18411016.lver.orig = phi i64 [ %145, %.ph1298.lver.orig ], [ %121, %.lver.check1297 ]
  %139 = mul nsw i64 %.18411016.lver.orig, %38
  %140 = getelementptr double, ptr %136, i64 %139
  %141 = load double, ptr %140, align 8, !tbaa !9
  %142 = getelementptr double, ptr %137, i64 %139
  %143 = load double, ptr %142, align 8, !tbaa !9
  %144 = call double @llvm.fmuladd.f64(double %138, double %141, double %143)
  store double %144, ptr %140, align 8, !tbaa !9
  store double %141, ptr %142, align 8, !tbaa !9
  %145 = add nuw nsw i64 %.18411016.lver.orig, 1
  %.not887.not.lver.orig = icmp slt i64 %.18411016.lver.orig, %113
  br i1 %.not887.not.lver.orig, label %.ph1298.lver.orig, label %.loopexit891, !llvm.loop !26

.ph1298:                                          ; preds = %.lver.check1297
  %load_initial1301 = load double, ptr %scevgep1300, align 8
  br label %146

146:                                              ; preds = %.ph1298, %146
  %store_forwarded1302 = phi double [ %load_initial1301, %.ph1298 ], [ %151, %146 ]
  %.18411016 = phi i64 [ %121, %.ph1298 ], [ %152, %146 ]
  %147 = mul nuw nsw i64 %.18411016, %38
  %148 = getelementptr double, ptr %136, i64 %147
  %149 = load double, ptr %148, align 8, !tbaa !9
  %150 = getelementptr double, ptr %137, i64 %147
  %151 = call double @llvm.fmuladd.f64(double %138, double %149, double %store_forwarded1302)
  store double %151, ptr %148, align 8, !tbaa !9
  store double %149, ptr %150, align 8, !tbaa !9
  %152 = add nuw nsw i64 %.18411016, 1
  %.not887.not = icmp slt i64 %.18411016, %113
  br i1 %.not887.not, label %146, label %.loopexit891, !llvm.loop !26

153:                                              ; preds = %.lr.ph1022
  %154 = fcmp oeq double %128, 0.000000e+00
  br i1 %154, label %155, label %157

155:                                              ; preds = %153
  %156 = load double, ptr %12, align 8, !tbaa !9
  store double %156, ptr %127, align 8, !tbaa !9
  br label %157

157:                                              ; preds = %155, %153
  %158 = phi double [ %156, %155 ], [ %128, %153 ]
  %159 = fdiv double %125, %158
  %160 = fcmp une double %159, 0.000000e+00
  br i1 %160, label %.lver.check, label %.loopexit891

.lver.check:                                      ; preds = %157
  %161 = getelementptr double, ptr %40, i64 %.28461020
  %162 = getelementptr double, ptr %40, i64 %121
  %163 = fneg double %159
  br i1 %ident.check1291.not, label %.ph, label %.ph.lver.orig

.ph.lver.orig:                                    ; preds = %.lver.check, %.ph.lver.orig
  %.28421012.lver.orig = phi i64 [ %170, %.ph.lver.orig ], [ %121, %.lver.check ]
  %164 = mul nsw i64 %.28421012.lver.orig, %38
  %165 = getelementptr double, ptr %161, i64 %164
  %166 = load double, ptr %165, align 8, !tbaa !9
  %167 = getelementptr double, ptr %162, i64 %164
  %168 = load double, ptr %167, align 8, !tbaa !9
  %169 = call double @llvm.fmuladd.f64(double %163, double %166, double %168)
  store double %169, ptr %167, align 8, !tbaa !9
  %170 = add nuw nsw i64 %.28421012.lver.orig, 1
  %.not886.not.lver.orig = icmp slt i64 %.28421012.lver.orig, %113
  br i1 %.not886.not.lver.orig, label %.ph.lver.orig, label %.loopexit891, !llvm.loop !27

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

171:                                              ; preds = %.ph, %171
  %store_forwarded = phi double [ %load_initial, %.ph ], [ %175, %171 ]
  %.28421012 = phi i64 [ %121, %.ph ], [ %176, %171 ]
  %172 = mul nuw nsw i64 %.28421012, %38
  %173 = getelementptr double, ptr %162, i64 %172
  %174 = load double, ptr %173, align 8, !tbaa !9
  %175 = call double @llvm.fmuladd.f64(double %163, double %store_forwarded, double %174)
  store double %175, ptr %173, align 8, !tbaa !9
  %176 = add nuw nsw i64 %.28421012, 1
  %.not886.not = icmp slt i64 %.28421012, %113
  br i1 %.not886.not, label %171, label %.loopexit891, !llvm.loop !27

.loopexit891:                                     ; preds = %.ph.lver.orig, %171, %.ph1298.lver.orig, %146, %157
  %exitcond1072.not = icmp eq i64 %121, %113
  %indvar.next1294 = add i64 %indvar1293, 1
  br i1 %exitcond1072.not, label %._crit_edge1023, label %.lr.ph1022, !llvm.loop !28

._crit_edge1023:                                  ; preds = %.loopexit891
  store double %128, ptr %24, align 8, !tbaa !9
  br label %._crit_edge1097

._crit_edge1097:                                  ; preds = %115, %._crit_edge1023
  %177 = mul i64 %113, %116
  %178 = getelementptr inbounds double, ptr %40, i64 %177
  %179 = load double, ptr %178, align 8, !tbaa !9
  %180 = fcmp oeq double %179, 0.000000e+00
  br i1 %180, label %.sink.split, label %285

181:                                              ; preds = %.loopexit893
  br i1 %114, label %.lr.ph1035.preheader, label %281

.lr.ph1035.preheader:                             ; preds = %181
  %182 = shl i64 %113, 3
  %183 = add i64 %182, -16
  %184 = mul i64 %38, %183
  %185 = mul i64 %38, -8
  %186 = shl i64 %38, 3
  %187 = sub nuw nsw i64 -8, %186
  %188 = add i64 %182, -8
  %189 = mul i64 %38, %188
  %190 = shl i64 %113, 3
  %191 = add i64 %190, -16
  %192 = mul i64 %38, %191
  %193 = mul i64 %38, -8
  %194 = shl i64 %38, 3
  %195 = sub nuw nsw i64 -8, %194
  %196 = add i64 %190, -8
  %197 = mul i64 %38, %196
  %198 = getelementptr i8, ptr %9, i64 %192
  %199 = getelementptr i8, ptr %9, i64 %192
  %200 = getelementptr i8, ptr %199, i64 %190
  %201 = getelementptr i8, ptr %200, i64 -8
  %202 = getelementptr i8, ptr %9, i64 %197
  %203 = getelementptr i8, ptr %9, i64 %197
  %204 = getelementptr i8, ptr %203, i64 %190
  %205 = getelementptr i8, ptr %204, i64 -8
  %206 = getelementptr i8, ptr %9, i64 %184
  %207 = getelementptr i8, ptr %9, i64 %184
  %208 = getelementptr i8, ptr %207, i64 %182
  %209 = getelementptr i8, ptr %208, i64 -8
  %210 = getelementptr i8, ptr %9, i64 %189
  %211 = getelementptr i8, ptr %9, i64 %189
  %212 = getelementptr i8, ptr %211, i64 %182
  %213 = getelementptr i8, ptr %212, i64 -8
  br label %.lr.ph1035

.lr.ph1035:                                       ; preds = %.lr.ph1035.preheader, %.loopexit889
  %indvar1221 = phi i64 [ 0, %.lr.ph1035.preheader ], [ %indvar.next1222, %.loopexit889 ]
  %.38431033 = phi i64 [ %113, %.lr.ph1035.preheader ], [ %222, %.loopexit889 ]
  %214 = xor i64 %indvar1221, -1
  %215 = add i64 %113, %214
  %216 = mul i64 %193, %indvar1221
  %scevgep1250 = getelementptr i8, ptr %198, i64 %216
  %217 = mul i64 %195, %indvar1221
  %scevgep1251 = getelementptr i8, ptr %201, i64 %217
  %scevgep1252 = getelementptr i8, ptr %202, i64 %216
  %scevgep1253 = getelementptr i8, ptr %205, i64 %217
  %218 = xor i64 %indvar1221, -1
  %219 = add i64 %113, %218
  %220 = mul i64 %185, %indvar1221
  %scevgep1223 = getelementptr i8, ptr %206, i64 %220
  %221 = mul i64 %187, %indvar1221
  %scevgep1224 = getelementptr i8, ptr %209, i64 %221
  %scevgep1225 = getelementptr i8, ptr %210, i64 %220
  %scevgep1226 = getelementptr i8, ptr %213, i64 %221
  %222 = add nsw i64 %.38431033, -1
  %223 = mul nsw i64 %222, %33
  %224 = getelementptr double, ptr %35, i64 %.38431033
  %225 = getelementptr double, ptr %224, i64 %223
  %226 = load double, ptr %225, align 8, !tbaa !9
  %227 = mul nsw i64 %.38431033, %38
  %228 = getelementptr double, ptr %40, i64 %.38431033
  %229 = getelementptr double, ptr %228, i64 %227
  %230 = load double, ptr %229, align 8, !tbaa !9
  %231 = fcmp oge double %230, 0.000000e+00
  %232 = fneg double %230
  %233 = select i1 %231, double %230, double %232
  %234 = fcmp oge double %226, 0.000000e+00
  %235 = fneg double %226
  %236 = select i1 %234, double %226, double %235
  %237 = fcmp olt double %233, %236
  br i1 %237, label %.lr.ph1032, label %255

.lr.ph1032:                                       ; preds = %.lr.ph1035
  store double %226, ptr %229, align 8, !tbaa !9
  store i64 %222, ptr %21, align 8, !tbaa !5
  %238 = mul nsw i64 %222, %38
  %239 = fdiv double %232, %226
  %min.iters.check1232 = icmp ult i64 %219, 4
  br i1 %min.iters.check1232, label %scalar.ph1231.preheader, label %vector.memcheck1220

vector.memcheck1220:                              ; preds = %.lr.ph1032
  %bound01227 = icmp ult ptr %scevgep1223, %scevgep1226
  %bound11228 = icmp ult ptr %scevgep1225, %scevgep1224
  %found.conflict1229 = and i1 %bound01227, %bound11228
  br i1 %found.conflict1229, label %scalar.ph1231.preheader, label %vector.ph1233

vector.ph1233:                                    ; preds = %vector.memcheck1220
  %n.vec1235 = and i64 %219, -4
  %ind.end1236 = or disjoint i64 %n.vec1235, 1
  %broadcast.splatinsert1245 = insertelement <2 x double> poison, double %239, i64 0
  %broadcast.splat1246 = shufflevector <2 x double> %broadcast.splatinsert1245, <2 x double> poison, <2 x i32> zeroinitializer
  br label %vector.body1238

vector.body1238:                                  ; preds = %vector.body1238, %vector.ph1233
  %index1239 = phi i64 [ 0, %vector.ph1233 ], [ %index.next1247, %vector.body1238 ]
  %offset.idx1240 = or disjoint i64 %index1239, 1
  %240 = getelementptr double, ptr %40, i64 %offset.idx1240
  %241 = getelementptr double, ptr %240, i64 %238
  %242 = getelementptr i8, ptr %241, i64 16
  %wide.load1241 = load <2 x double>, ptr %241, align 8, !tbaa !9, !alias.scope !29, !noalias !32
  %wide.load1242 = load <2 x double>, ptr %242, align 8, !tbaa !9, !alias.scope !29, !noalias !32
  %243 = getelementptr double, ptr %240, i64 %227
  %244 = getelementptr i8, ptr %243, i64 16
  %wide.load1243 = load <2 x double>, ptr %243, align 8, !tbaa !9, !alias.scope !32
  %wide.load1244 = load <2 x double>, ptr %244, align 8, !tbaa !9, !alias.scope !32
  %245 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %broadcast.splat1246, <2 x double> %wide.load1241, <2 x double> %wide.load1243)
  %246 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %broadcast.splat1246, <2 x double> %wide.load1242, <2 x double> %wide.load1244)
  store <2 x double> %245, ptr %241, align 8, !tbaa !9, !alias.scope !29, !noalias !32
  store <2 x double> %246, ptr %242, align 8, !tbaa !9, !alias.scope !29, !noalias !32
  store <2 x double> %wide.load1241, ptr %243, align 8, !tbaa !9, !alias.scope !32
  store <2 x double> %wide.load1242, ptr %244, align 8, !tbaa !9, !alias.scope !32
  %index.next1247 = add nuw i64 %index1239, 4
  %247 = icmp eq i64 %index.next1247, %n.vec1235
  br i1 %247, label %middle.block1230, label %vector.body1238, !llvm.loop !34

middle.block1230:                                 ; preds = %vector.body1238
  %cmp.n1248 = icmp eq i64 %219, %n.vec1235
  br i1 %cmp.n1248, label %.loopexit889, label %scalar.ph1231.preheader

scalar.ph1231.preheader:                          ; preds = %middle.block1230, %vector.memcheck1220, %.lr.ph1032
  %.38471030.ph = phi i64 [ 1, %vector.memcheck1220 ], [ 1, %.lr.ph1032 ], [ %ind.end1236, %middle.block1230 ]
  br label %scalar.ph1231

scalar.ph1231:                                    ; preds = %scalar.ph1231.preheader, %scalar.ph1231
  %.38471030 = phi i64 [ %254, %scalar.ph1231 ], [ %.38471030.ph, %scalar.ph1231.preheader ]
  %248 = getelementptr double, ptr %40, i64 %.38471030
  %249 = getelementptr double, ptr %248, i64 %238
  %250 = load double, ptr %249, align 8, !tbaa !9
  %251 = getelementptr double, ptr %248, i64 %227
  %252 = load double, ptr %251, align 8, !tbaa !9
  %253 = call double @llvm.fmuladd.f64(double %239, double %250, double %252)
  store double %253, ptr %249, align 8, !tbaa !9
  store double %250, ptr %251, align 8, !tbaa !9
  %254 = add nuw nsw i64 %.38471030, 1
  %.not882.not = icmp slt i64 %254, %.38431033
  br i1 %.not882.not, label %scalar.ph1231, label %.loopexit889, !llvm.loop !35

255:                                              ; preds = %.lr.ph1035
  %256 = fcmp oeq double %230, 0.000000e+00
  br i1 %256, label %257, label %259

257:                                              ; preds = %255
  %258 = load double, ptr %12, align 8, !tbaa !9
  store double %258, ptr %229, align 8, !tbaa !9
  br label %259

259:                                              ; preds = %257, %255
  %260 = phi double [ %258, %257 ], [ %230, %255 ]
  %261 = fdiv double %226, %260
  %262 = fcmp une double %261, 0.000000e+00
  br i1 %262, label %.lr.ph1028, label %.loopexit889

.lr.ph1028:                                       ; preds = %259
  store i64 %222, ptr %21, align 8, !tbaa !5
  %263 = mul nsw i64 %222, %38
  %264 = fneg double %261
  %min.iters.check1259 = icmp ult i64 %215, 4
  br i1 %min.iters.check1259, label %scalar.ph1258.preheader, label %vector.memcheck1249

vector.memcheck1249:                              ; preds = %.lr.ph1028
  %bound01254 = icmp ult ptr %scevgep1250, %scevgep1253
  %bound11255 = icmp ult ptr %scevgep1252, %scevgep1251
  %found.conflict1256 = and i1 %bound01254, %bound11255
  br i1 %found.conflict1256, label %scalar.ph1258.preheader, label %vector.ph1260

vector.ph1260:                                    ; preds = %vector.memcheck1249
  %n.vec1262 = and i64 %215, -4
  %ind.end1263 = or disjoint i64 %n.vec1262, 1
  %broadcast.splatinsert1272 = insertelement <2 x double> poison, double %264, i64 0
  %broadcast.splat1273 = shufflevector <2 x double> %broadcast.splatinsert1272, <2 x double> poison, <2 x i32> zeroinitializer
  br label %vector.body1265

vector.body1265:                                  ; preds = %vector.body1265, %vector.ph1260
  %index1266 = phi i64 [ 0, %vector.ph1260 ], [ %index.next1274, %vector.body1265 ]
  %offset.idx1267 = or disjoint i64 %index1266, 1
  %265 = getelementptr double, ptr %40, i64 %offset.idx1267
  %266 = getelementptr double, ptr %265, i64 %227
  %267 = getelementptr i8, ptr %266, i64 16
  %wide.load1268 = load <2 x double>, ptr %266, align 8, !tbaa !9, !alias.scope !36
  %wide.load1269 = load <2 x double>, ptr %267, align 8, !tbaa !9, !alias.scope !36
  %268 = getelementptr double, ptr %265, i64 %263
  %269 = getelementptr i8, ptr %268, i64 16
  %wide.load1270 = load <2 x double>, ptr %268, align 8, !tbaa !9, !alias.scope !39, !noalias !36
  %wide.load1271 = load <2 x double>, ptr %269, align 8, !tbaa !9, !alias.scope !39, !noalias !36
  %270 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %broadcast.splat1273, <2 x double> %wide.load1268, <2 x double> %wide.load1270)
  %271 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %broadcast.splat1273, <2 x double> %wide.load1269, <2 x double> %wide.load1271)
  store <2 x double> %270, ptr %268, align 8, !tbaa !9, !alias.scope !39, !noalias !36
  store <2 x double> %271, ptr %269, align 8, !tbaa !9, !alias.scope !39, !noalias !36
  %index.next1274 = add nuw i64 %index1266, 4
  %272 = icmp eq i64 %index.next1274, %n.vec1262
  br i1 %272, label %middle.block1257, label %vector.body1265, !llvm.loop !41

middle.block1257:                                 ; preds = %vector.body1265
  %cmp.n1275 = icmp eq i64 %215, %n.vec1262
  br i1 %cmp.n1275, label %.loopexit889, label %scalar.ph1258.preheader

scalar.ph1258.preheader:                          ; preds = %middle.block1257, %vector.memcheck1249, %.lr.ph1028
  %.48481026.ph = phi i64 [ 1, %vector.memcheck1249 ], [ 1, %.lr.ph1028 ], [ %ind.end1263, %middle.block1257 ]
  br label %scalar.ph1258

scalar.ph1258:                                    ; preds = %scalar.ph1258.preheader, %scalar.ph1258
  %.48481026 = phi i64 [ %279, %scalar.ph1258 ], [ %.48481026.ph, %scalar.ph1258.preheader ]
  %273 = getelementptr double, ptr %40, i64 %.48481026
  %274 = getelementptr double, ptr %273, i64 %227
  %275 = load double, ptr %274, align 8, !tbaa !9
  %276 = getelementptr double, ptr %273, i64 %263
  %277 = load double, ptr %276, align 8, !tbaa !9
  %278 = call double @llvm.fmuladd.f64(double %264, double %275, double %277)
  store double %278, ptr %276, align 8, !tbaa !9
  %279 = add nuw nsw i64 %.48481026, 1
  %.not881.not = icmp slt i64 %279, %.38431033
  br i1 %.not881.not, label %scalar.ph1258, label %.loopexit889, !llvm.loop !42

.loopexit889:                                     ; preds = %scalar.ph1258, %scalar.ph1231, %middle.block1257, %middle.block1230, %259
  %280 = icmp sgt i64 %.38431033, 2
  %indvar.next1222 = add i64 %indvar1221, 1
  br i1 %280, label %.lr.ph1035, label %._crit_edge1036, !llvm.loop !43

._crit_edge1036:                                  ; preds = %.loopexit889
  store double %230, ptr %24, align 8, !tbaa !9
  br label %281

281:                                              ; preds = %._crit_edge1036, %181
  %282 = load double, ptr %9, align 8, !tbaa !9
  %283 = fcmp oeq double %282, 0.000000e+00
  br i1 %283, label %.sink.split, label %285

.sink.split:                                      ; preds = %281, %._crit_edge1097
  %.sink1118 = phi ptr [ %178, %._crit_edge1097 ], [ %9, %281 ]
  %storemerge.ph = phi i8 [ 78, %._crit_edge1097 ], [ 84, %281 ]
  %284 = load double, ptr %12, align 8, !tbaa !9
  store double %284, ptr %.sink1118, align 8, !tbaa !9
  br label %285

285:                                              ; preds = %.sink.split, %281, %._crit_edge1097
  %storemerge = phi i8 [ 78, %._crit_edge1097 ], [ 84, %281 ], [ %storemerge.ph, %.sink.split ]
  store i8 %storemerge, ptr %31, align 1, !tbaa !44
  store i8 78, ptr %32, align 1, !tbaa !44
  store i64 %113, ptr %21, align 8, !tbaa !5
  %.not8841043 = icmp slt i64 %113, 1
  br i1 %.not8841043, label %._crit_edge1047, label %.lr.ph1046

.lr.ph1046:                                       ; preds = %285
  %286 = fadd double %44, 1.000000e+00
  br label %287

287:                                              ; preds = %.lr.ph1046, %._crit_edge1042
  %.08351044 = phi i64 [ 1, %.lr.ph1046 ], [ %309, %._crit_edge1042 ]
  %288 = call i32 @dlatrs_(ptr noundef nonnull @.str, ptr noundef nonnull %31, ptr noundef nonnull @.str.1, ptr noundef nonnull %32, ptr noundef nonnull %2, ptr noundef %9, ptr noundef nonnull %10, ptr noundef %7, ptr noundef nonnull %30, ptr noundef %11, ptr noundef nonnull %29) #7
  store i8 89, ptr %32, align 1, !tbaa !44
  %289 = call double @f2c_dasum(ptr noundef nonnull %2, ptr noundef %7, ptr noundef nonnull @c__1) #7
  %290 = load double, ptr %30, align 8, !tbaa !9
  %291 = fmul double %45, %290
  %292 = fcmp ult double %289, %291
  br i1 %292, label %293, label %.loopexit

293:                                              ; preds = %287
  %294 = load double, ptr %12, align 8, !tbaa !9
  %295 = fdiv double %294, %286
  store double %294, ptr %7, align 8, !tbaa !9
  %296 = load i64, ptr %2, align 8, !tbaa !5
  %.not8851038 = icmp slt i64 %296, 2
  br i1 %.not8851038, label %._crit_edge1042, label %.lr.ph1041.preheader

.lr.ph1041.preheader:                             ; preds = %293
  %297 = add nsw i64 %296, -1
  %min.iters.check1278 = icmp ult i64 %296, 5
  br i1 %min.iters.check1278, label %.lr.ph1041.preheader1340, label %vector.ph1279

vector.ph1279:                                    ; preds = %.lr.ph1041.preheader
  %n.vec1281 = and i64 %297, -4
  %ind.end1282 = or disjoint i64 %n.vec1281, 2
  %broadcast.splatinsert1287 = insertelement <2 x double> poison, double %295, i64 0
  %broadcast.splat1288 = shufflevector <2 x double> %broadcast.splatinsert1287, <2 x double> poison, <2 x i32> zeroinitializer
  br label %vector.body1284

vector.body1284:                                  ; preds = %vector.body1284, %vector.ph1279
  %index1285 = phi i64 [ 0, %vector.ph1279 ], [ %index.next1289, %vector.body1284 ]
  %offset.idx1286 = or disjoint i64 %index1285, 2
  %298 = getelementptr inbounds double, ptr %36, i64 %offset.idx1286
  %299 = getelementptr inbounds i8, ptr %298, i64 16
  store <2 x double> %broadcast.splat1288, ptr %298, align 8, !tbaa !9
  store <2 x double> %broadcast.splat1288, ptr %299, align 8, !tbaa !9
  %index.next1289 = add nuw i64 %index1285, 4
  %300 = icmp eq i64 %index.next1289, %n.vec1281
  br i1 %300, label %middle.block1276, label %vector.body1284, !llvm.loop !45

middle.block1276:                                 ; preds = %vector.body1284
  %cmp.n1290 = icmp eq i64 %297, %n.vec1281
  br i1 %cmp.n1290, label %._crit_edge1042.loopexit, label %.lr.ph1041.preheader1340

.lr.ph1041.preheader1340:                         ; preds = %middle.block1276, %.lr.ph1041.preheader
  %.58491039.ph = phi i64 [ 2, %.lr.ph1041.preheader ], [ %ind.end1282, %middle.block1276 ]
  br label %.lr.ph1041

.lr.ph1041:                                       ; preds = %.lr.ph1041.preheader1340, %.lr.ph1041
  %.58491039 = phi i64 [ %302, %.lr.ph1041 ], [ %.58491039.ph, %.lr.ph1041.preheader1340 ]
  %301 = getelementptr inbounds double, ptr %36, i64 %.58491039
  store double %295, ptr %301, align 8, !tbaa !9
  %302 = add nuw i64 %.58491039, 1
  %exitcond1074.not = icmp eq i64 %.58491039, %296
  br i1 %exitcond1074.not, label %._crit_edge1042.loopexit, label %.lr.ph1041, !llvm.loop !46

._crit_edge1042.loopexit:                         ; preds = %.lr.ph1041, %middle.block1276
  %.pre1093 = load double, ptr %12, align 8, !tbaa !9
  br label %._crit_edge1042

._crit_edge1042:                                  ; preds = %._crit_edge1042.loopexit, %293
  %303 = phi double [ %.pre1093, %._crit_edge1042.loopexit ], [ %294, %293 ]
  %304 = sub nsw i64 %296, %.08351044
  %305 = getelementptr double, ptr %7, i64 %304
  %306 = load double, ptr %305, align 8, !tbaa !9
  %307 = fneg double %303
  %308 = call double @llvm.fmuladd.f64(double %307, double %44, double %306)
  store double %308, ptr %305, align 8, !tbaa !9
  %309 = add nuw nsw i64 %.08351044, 1
  %310 = load i64, ptr %21, align 8, !tbaa !5
  %.not884.not = icmp slt i64 %.08351044, %310
  br i1 %.not884.not, label %287, label %._crit_edge1047, !llvm.loop !47

._crit_edge1047:                                  ; preds = %._crit_edge1042, %285
  store i64 1, ptr %15, align 8, !tbaa !5
  br label %.loopexit

.loopexit:                                        ; preds = %287, %._crit_edge1047
  %311 = call i64 @f2c_idamax(ptr noundef nonnull %2, ptr noundef %7, ptr noundef nonnull @c__1) #7
  %312 = getelementptr inbounds double, ptr %36, i64 %311
  %313 = load double, ptr %312, align 8, !tbaa !9
  store double %313, ptr %24, align 8, !tbaa !9
  %314 = fcmp oge double %313, 0.000000e+00
  %315 = fneg double %313
  %316 = select i1 %314, double %313, double %315
  %317 = fdiv double 1.000000e+00, %316
  store double %317, ptr %25, align 8, !tbaa !9
  %318 = call i32 @f2c_dscal(ptr noundef nonnull %2, ptr noundef nonnull %25, ptr noundef %7, ptr noundef nonnull @c__1) #7
  br label %906

319:                                              ; preds = %93
  br i1 %.not878, label %351, label %320

320:                                              ; preds = %319
  br i1 %.not903, label %.loopexit898, label %.lr.ph911.preheader

.lr.ph911.preheader:                              ; preds = %320
  %min.iters.check1150 = icmp ult i64 %52, 20
  br i1 %min.iters.check1150, label %.lr.ph911.preheader1359, label %vector.memcheck1134

vector.memcheck1134:                              ; preds = %.lr.ph911.preheader
  %321 = shl i64 %52, 3
  %scevgep1135 = getelementptr i8, ptr %7, i64 %321
  %scevgep1136 = getelementptr i8, ptr %8, i64 %321
  %scevgep1137 = getelementptr i8, ptr %12, i64 8
  %bound01138 = icmp ugt ptr %scevgep1136, %7
  %bound11139 = icmp ugt ptr %scevgep1135, %8
  %found.conflict1140 = and i1 %bound01138, %bound11139
  %bound01141 = icmp ugt ptr %scevgep1137, %7
  %bound11142 = icmp ugt ptr %scevgep1135, %12
  %found.conflict1143 = and i1 %bound01141, %bound11142
  %conflict.rdx = or i1 %found.conflict1140, %found.conflict1143
  %bound01144 = icmp ugt ptr %scevgep1137, %8
  %bound11145 = icmp ugt ptr %scevgep1136, %12
  %found.conflict1146 = and i1 %bound01144, %bound11145
  %conflict.rdx1147 = or i1 %conflict.rdx, %found.conflict1146
  br i1 %conflict.rdx1147, label %.lr.ph911.preheader1359, label %vector.ph1151

vector.ph1151:                                    ; preds = %vector.memcheck1134
  %n.vec1153 = and i64 %52, 9223372036854775804
  %ind.end1154 = or disjoint i64 %n.vec1153, 1
  %322 = load double, ptr %12, align 8, !tbaa !9, !alias.scope !48
  %broadcast.splatinsert1159 = insertelement <2 x double> poison, double %322, i64 0
  %broadcast.splat1160 = shufflevector <2 x double> %broadcast.splatinsert1159, <2 x double> poison, <2 x i32> zeroinitializer
  br label %vector.body1156

vector.body1156:                                  ; preds = %vector.body1156, %vector.ph1151
  %index1157 = phi i64 [ 0, %vector.ph1151 ], [ %index.next1161, %vector.body1156 ]
  %323 = getelementptr double, ptr %7, i64 %index1157
  %324 = getelementptr inbounds i8, ptr %323, i64 16
  store <2 x double> %broadcast.splat1160, ptr %323, align 8, !tbaa !9, !alias.scope !51, !noalias !53
  store <2 x double> %broadcast.splat1160, ptr %324, align 8, !tbaa !9, !alias.scope !51, !noalias !53
  %325 = getelementptr double, ptr %8, i64 %index1157
  %326 = getelementptr inbounds i8, ptr %325, i64 16
  store <2 x double> zeroinitializer, ptr %325, align 8, !tbaa !9, !alias.scope !55, !noalias !48
  store <2 x double> zeroinitializer, ptr %326, align 8, !tbaa !9, !alias.scope !55, !noalias !48
  %index.next1161 = add nuw i64 %index1157, 4
  %327 = icmp eq i64 %index.next1161, %n.vec1153
  br i1 %327, label %middle.block1148, label %vector.body1156, !llvm.loop !56

middle.block1148:                                 ; preds = %vector.body1156
  %cmp.n1162 = icmp eq i64 %52, %n.vec1153
  br i1 %cmp.n1162, label %.loopexit898, label %.lr.ph911.preheader1359

.lr.ph911.preheader1359:                          ; preds = %middle.block1148, %vector.memcheck1134, %.lr.ph911.preheader
  %.6850909.ph = phi i64 [ 1, %vector.memcheck1134 ], [ 1, %.lr.ph911.preheader ], [ %ind.end1154, %middle.block1148 ]
  %328 = add nuw i64 %52, 1
  %329 = sub i64 %328, %.6850909.ph
  %330 = sub i64 %52, %.6850909.ph
  %xtraiter1360 = and i64 %329, 3
  %lcmp.mod1361.not = icmp eq i64 %xtraiter1360, 0
  br i1 %lcmp.mod1361.not, label %.lr.ph911.prol.loopexit, label %.lr.ph911.prol

.lr.ph911.prol:                                   ; preds = %.lr.ph911.preheader1359, %.lr.ph911.prol
  %.6850909.prol = phi i64 [ %334, %.lr.ph911.prol ], [ %.6850909.ph, %.lr.ph911.preheader1359 ]
  %prol.iter1362 = phi i64 [ %prol.iter1362.next, %.lr.ph911.prol ], [ 0, %.lr.ph911.preheader1359 ]
  %331 = load double, ptr %12, align 8, !tbaa !9
  %332 = getelementptr inbounds double, ptr %36, i64 %.6850909.prol
  store double %331, ptr %332, align 8, !tbaa !9
  %333 = getelementptr inbounds double, ptr %37, i64 %.6850909.prol
  store double 0.000000e+00, ptr %333, align 8, !tbaa !9
  %334 = add nuw i64 %.6850909.prol, 1
  %prol.iter1362.next = add i64 %prol.iter1362, 1
  %prol.iter1362.cmp.not = icmp eq i64 %prol.iter1362.next, %xtraiter1360
  br i1 %prol.iter1362.cmp.not, label %.lr.ph911.prol.loopexit, label %.lr.ph911.prol, !llvm.loop !57

.lr.ph911.prol.loopexit:                          ; preds = %.lr.ph911.prol, %.lr.ph911.preheader1359
  %.6850909.unr = phi i64 [ %.6850909.ph, %.lr.ph911.preheader1359 ], [ %334, %.lr.ph911.prol ]
  %335 = icmp ult i64 %330, 3
  br i1 %335, label %.loopexit898, label %.lr.ph911

.lr.ph911:                                        ; preds = %.lr.ph911.prol.loopexit, %.lr.ph911
  %.6850909 = phi i64 [ %350, %.lr.ph911 ], [ %.6850909.unr, %.lr.ph911.prol.loopexit ]
  %336 = load double, ptr %12, align 8, !tbaa !9
  %337 = getelementptr inbounds double, ptr %36, i64 %.6850909
  store double %336, ptr %337, align 8, !tbaa !9
  %338 = getelementptr inbounds double, ptr %37, i64 %.6850909
  store double 0.000000e+00, ptr %338, align 8, !tbaa !9
  %339 = load double, ptr %12, align 8, !tbaa !9
  %340 = getelementptr double, ptr %7, i64 %.6850909
  store double %339, ptr %340, align 8, !tbaa !9
  %341 = getelementptr double, ptr %8, i64 %.6850909
  store double 0.000000e+00, ptr %341, align 8, !tbaa !9
  %342 = add nuw i64 %.6850909, 2
  %343 = load double, ptr %12, align 8, !tbaa !9
  %344 = getelementptr inbounds double, ptr %36, i64 %342
  store double %343, ptr %344, align 8, !tbaa !9
  %345 = getelementptr inbounds double, ptr %37, i64 %342
  store double 0.000000e+00, ptr %345, align 8, !tbaa !9
  %346 = add nuw i64 %.6850909, 3
  %347 = load double, ptr %12, align 8, !tbaa !9
  %348 = getelementptr inbounds double, ptr %36, i64 %346
  store double %347, ptr %348, align 8, !tbaa !9
  %349 = getelementptr inbounds double, ptr %37, i64 %346
  store double 0.000000e+00, ptr %349, align 8, !tbaa !9
  %350 = add nuw i64 %.6850909, 4
  %exitcond1061.not.3 = icmp eq i64 %346, %52
  br i1 %exitcond1061.not.3, label %.loopexit898, label %.lr.ph911, !llvm.loop !58

351:                                              ; preds = %319
  %352 = tail call double @f2c_dnrm2(ptr noundef nonnull %2, ptr noundef %7, ptr noundef nonnull @c__1) #7
  store double %352, ptr %24, align 8, !tbaa !9
  %353 = tail call double @f2c_dnrm2(ptr noundef nonnull %2, ptr noundef %8, ptr noundef nonnull @c__1) #7
  store double %353, ptr %25, align 8, !tbaa !9
  %354 = call double @dlapy2_(ptr noundef nonnull %24, ptr noundef nonnull %25) #7
  %355 = load double, ptr %12, align 8, !tbaa !9
  %356 = fmul double %44, %355
  %357 = fcmp oge double %354, %51
  %358 = select i1 %357, double %354, double %51
  %359 = fdiv double %356, %358
  store double %359, ptr %28, align 8, !tbaa !9
  %360 = call i32 @f2c_dscal(ptr noundef nonnull %2, ptr noundef nonnull %28, ptr noundef %7, ptr noundef nonnull @c__1) #7
  %361 = call i32 @f2c_dscal(ptr noundef nonnull %2, ptr noundef nonnull %28, ptr noundef %8, ptr noundef nonnull @c__1) #7
  br label %.loopexit898

.loopexit898:                                     ; preds = %.lr.ph911.prol.loopexit, %.lr.ph911, %middle.block1148, %320, %351
  %362 = load i64, ptr %0, align 8, !tbaa !5
  %.not863.not = icmp eq i64 %362, 0
  %363 = load double, ptr %6, align 8, !tbaa !9
  br i1 %.not863.not, label %509, label %364

364:                                              ; preds = %.loopexit898
  %365 = fneg double %363
  %366 = getelementptr inbounds i8, ptr %9, i64 8
  store double %365, ptr %366, align 8, !tbaa !9
  %367 = load i64, ptr %2, align 8, !tbaa !5
  %.not867912 = icmp slt i64 %367, 2
  br i1 %.not867912, label %._crit_edge933, label %.lr.ph932.preheader

.lr.ph932.preheader:                              ; preds = %364
  %scevgep = getelementptr i8, ptr %9, i64 16
  %368 = shl i64 %367, 3
  %369 = add i64 %368, -8
  call void @llvm.memset.p0.i64(ptr align 8 %scevgep, i8 0, i64 %369, i1 false), !tbaa !9
  %370 = add nsw i64 %367, -1
  store i64 %370, ptr %21, align 8, !tbaa !5
  %invariant.gep927 = getelementptr i8, ptr %40, i64 16
  %invariant.gep1384 = getelementptr i8, ptr %9, i64 16
  %invariant.gep1386 = getelementptr i8, ptr %9, i64 16
  %ident.check1319.not = icmp eq i64 %38, 1
  %ident.check1330.not = icmp eq i64 %38, 1
  br label %.lr.ph932

.lr.ph932:                                        ; preds = %.lr.ph932.preheader, %483
  %indvar1323 = phi i64 [ 0, %.lr.ph932.preheader ], [ %indvar.next1324, %483 ]
  %.8852930 = phi i64 [ 1, %.lr.ph932.preheader ], [ %376, %483 ]
  %371 = shl i64 %indvar1323, 4
  %gep1385 = getelementptr i8, ptr %invariant.gep1384, i64 %371
  %372 = shl i64 %indvar1323, 4
  %gep1387 = getelementptr i8, ptr %invariant.gep1386, i64 %372
  %373 = mul nsw i64 %.8852930, %38
  %374 = getelementptr double, ptr %40, i64 %.8852930
  %375 = getelementptr double, ptr %374, i64 %373
  %376 = add nuw nsw i64 %.8852930, 1
  %377 = getelementptr double, ptr %40, i64 %376
  %378 = getelementptr double, ptr %377, i64 %373
  %379 = call double @dlapy2_(ptr noundef %375, ptr noundef %378) #7
  %380 = mul nsw i64 %.8852930, %33
  %381 = getelementptr double, ptr %35, i64 %376
  %382 = getelementptr double, ptr %381, i64 %380
  %383 = load double, ptr %382, align 8, !tbaa !9
  %384 = fcmp oge double %383, 0.000000e+00
  %385 = fneg double %383
  %386 = select i1 %384, double %383, double %385
  %387 = fcmp olt double %379, %386
  br i1 %387, label %388, label %432

388:                                              ; preds = %.lr.ph932
  %389 = load double, ptr %375, align 8, !tbaa !9
  %390 = fdiv double %389, %383
  store double %390, ptr %27, align 8, !tbaa !9
  %391 = load double, ptr %378, align 8, !tbaa !9
  %392 = fdiv double %391, %383
  store double %392, ptr %26, align 8, !tbaa !9
  store double %383, ptr %375, align 8, !tbaa !9
  store double 0.000000e+00, ptr %378, align 8, !tbaa !9
  %393 = load i64, ptr %2, align 8, !tbaa !5
  %.not877922.not = icmp slt i64 %.8852930, %393
  %394 = fneg double %392
  br i1 %.not877922.not, label %.lver.check1331, label %.._crit_edge926_crit_edge

.._crit_edge926_crit_edge:                        ; preds = %388
  %.pre1100 = mul nsw i64 %376, %38
  br label %._crit_edge926

.lver.check1331:                                  ; preds = %388
  %395 = fneg double %390
  %396 = mul nsw i64 %376, %38
  br i1 %ident.check1330.not, label %.ph1332, label %.ph1332.lver.orig

.ph1332.lver.orig:                                ; preds = %.lver.check1331, %.ph1332.lver.orig
  %.4923.lver.orig = phi i64 [ %403, %.ph1332.lver.orig ], [ %376, %.lver.check1331 ]
  %397 = mul nsw i64 %.4923.lver.orig, %38
  %398 = getelementptr double, ptr %377, i64 %397
  %399 = load double, ptr %398, align 8, !tbaa !9
  %400 = getelementptr double, ptr %374, i64 %397
  %401 = load double, ptr %400, align 8, !tbaa !9
  %402 = call double @llvm.fmuladd.f64(double %395, double %399, double %401)
  store double %402, ptr %398, align 8, !tbaa !9
  %403 = add nuw nsw i64 %.4923.lver.orig, 1
  %404 = getelementptr double, ptr %40, i64 %403
  %405 = getelementptr double, ptr %404, i64 %373
  %406 = load double, ptr %405, align 8, !tbaa !9
  %407 = call double @llvm.fmuladd.f64(double %394, double %399, double %406)
  %408 = getelementptr double, ptr %404, i64 %396
  store double %407, ptr %408, align 8, !tbaa !9
  store double %399, ptr %400, align 8, !tbaa !9
  store double 0.000000e+00, ptr %405, align 8, !tbaa !9
  %.not877.not.lver.orig = icmp slt i64 %.4923.lver.orig, %393
  br i1 %.not877.not.lver.orig, label %.ph1332.lver.orig, label %._crit_edge926, !llvm.loop !59

.ph1332:                                          ; preds = %.lver.check1331
  %load_initial1335 = load double, ptr %gep1385, align 8
  br label %409

409:                                              ; preds = %.ph1332, %409
  %store_forwarded1336 = phi double [ %load_initial1335, %.ph1332 ], [ %419, %409 ]
  %.4923 = phi i64 [ %376, %.ph1332 ], [ %415, %409 ]
  %410 = mul nuw nsw i64 %.4923, %38
  %411 = getelementptr double, ptr %377, i64 %410
  %412 = getelementptr double, ptr %374, i64 %410
  %413 = load double, ptr %412, align 8, !tbaa !9
  %414 = call double @llvm.fmuladd.f64(double %395, double %store_forwarded1336, double %413)
  store double %414, ptr %411, align 8, !tbaa !9
  %415 = add nuw nsw i64 %.4923, 1
  %416 = getelementptr double, ptr %40, i64 %415
  %417 = getelementptr double, ptr %416, i64 %373
  %418 = load double, ptr %417, align 8, !tbaa !9
  %419 = call double @llvm.fmuladd.f64(double %394, double %store_forwarded1336, double %418)
  %420 = getelementptr double, ptr %416, i64 %396
  store double %419, ptr %420, align 8, !tbaa !9
  store double %store_forwarded1336, ptr %412, align 8, !tbaa !9
  store double 0.000000e+00, ptr %417, align 8, !tbaa !9
  %.not877.not = icmp slt i64 %.4923, %393
  br i1 %.not877.not, label %409, label %._crit_edge926, !llvm.loop !59

._crit_edge926:                                   ; preds = %.ph1332.lver.orig, %409, %.._crit_edge926_crit_edge
  %.pre-phi1101 = phi i64 [ %.pre1100, %.._crit_edge926_crit_edge ], [ %396, %409 ], [ %396, %.ph1332.lver.orig ]
  %421 = load double, ptr %6, align 8, !tbaa !9
  %422 = fneg double %421
  %gep928 = getelementptr double, ptr %invariant.gep927, i64 %.8852930
  %423 = getelementptr double, ptr %gep928, i64 %373
  store double %422, ptr %423, align 8, !tbaa !9
  %424 = load double, ptr %6, align 8, !tbaa !9
  %425 = getelementptr double, ptr %377, i64 %.pre-phi1101
  %426 = load double, ptr %425, align 8, !tbaa !9
  %427 = call double @llvm.fmuladd.f64(double %394, double %424, double %426)
  store double %427, ptr %425, align 8, !tbaa !9
  %428 = load double, ptr %6, align 8, !tbaa !9
  %429 = getelementptr double, ptr %gep928, i64 %.pre-phi1101
  %430 = load double, ptr %429, align 8, !tbaa !9
  %431 = call double @llvm.fmuladd.f64(double %390, double %428, double %430)
  store double %431, ptr %429, align 8, !tbaa !9
  br label %483

432:                                              ; preds = %.lr.ph932
  %433 = fcmp oeq double %379, 0.000000e+00
  br i1 %433, label %434, label %._crit_edge1075

._crit_edge1075:                                  ; preds = %432
  %.pre = load double, ptr %375, align 8, !tbaa !9
  %.pre1076 = load double, ptr %378, align 8, !tbaa !9
  br label %437

434:                                              ; preds = %432
  %435 = load double, ptr %12, align 8, !tbaa !9
  store double %435, ptr %375, align 8, !tbaa !9
  store double 0.000000e+00, ptr %378, align 8, !tbaa !9
  %436 = load double, ptr %12, align 8, !tbaa !9
  br label %437

437:                                              ; preds = %._crit_edge1075, %434
  %438 = phi double [ 0.000000e+00, %434 ], [ %.pre1076, %._crit_edge1075 ]
  %439 = phi double [ %435, %434 ], [ %.pre, %._crit_edge1075 ]
  %.0830 = phi double [ %436, %434 ], [ %379, %._crit_edge1075 ]
  %440 = fdiv double %383, %.0830
  %441 = fdiv double %440, %.0830
  %442 = fmul double %439, %441
  store double %442, ptr %27, align 8, !tbaa !9
  %443 = fneg double %438
  %444 = fmul double %441, %443
  store double %444, ptr %26, align 8, !tbaa !9
  %445 = load i64, ptr %2, align 8, !tbaa !5
  %.not876917.not = icmp slt i64 %.8852930, %445
  br i1 %.not876917.not, label %.lver.check1320, label %.._crit_edge921_crit_edge

.._crit_edge921_crit_edge:                        ; preds = %437
  %.pre1104 = mul nsw i64 %376, %38
  br label %._crit_edge921

.lver.check1320:                                  ; preds = %437
  %446 = fneg double %442
  %447 = fneg double %444
  %448 = mul nsw i64 %376, %38
  br i1 %ident.check1319.not, label %.ph1321, label %.ph1321.lver.orig

.ph1321.lver.orig:                                ; preds = %.lver.check1320, %.ph1321.lver.orig
  %.5918.lver.orig = phi i64 [ %455, %.ph1321.lver.orig ], [ %376, %.lver.check1320 ]
  %449 = mul nsw i64 %.5918.lver.orig, %38
  %450 = getelementptr double, ptr %377, i64 %449
  %451 = load double, ptr %450, align 8, !tbaa !9
  %452 = getelementptr double, ptr %374, i64 %449
  %453 = load double, ptr %452, align 8, !tbaa !9
  %454 = call double @llvm.fmuladd.f64(double %446, double %453, double %451)
  %455 = add nuw nsw i64 %.5918.lver.orig, 1
  %456 = getelementptr double, ptr %40, i64 %455
  %457 = getelementptr double, ptr %456, i64 %373
  %458 = load double, ptr %457, align 8, !tbaa !9
  %459 = call double @llvm.fmuladd.f64(double %444, double %458, double %454)
  store double %459, ptr %450, align 8, !tbaa !9
  %460 = load double, ptr %457, align 8, !tbaa !9
  %461 = fmul double %453, %447
  %462 = call double @llvm.fmuladd.f64(double %446, double %460, double %461)
  %463 = getelementptr double, ptr %456, i64 %448
  store double %462, ptr %463, align 8, !tbaa !9
  %.not876.not.lver.orig = icmp slt i64 %.5918.lver.orig, %445
  br i1 %.not876.not.lver.orig, label %.ph1321.lver.orig, label %._crit_edge921, !llvm.loop !60

.ph1321:                                          ; preds = %.lver.check1320
  %load_initial1326 = load double, ptr %gep1387, align 8
  br label %464

464:                                              ; preds = %.ph1321, %464
  %store_forwarded1327 = phi double [ %load_initial1326, %.ph1321 ], [ %476, %464 ]
  %.5918 = phi i64 [ %376, %.ph1321 ], [ %470, %464 ]
  %465 = mul nuw nsw i64 %.5918, %38
  %466 = getelementptr double, ptr %377, i64 %465
  %467 = getelementptr double, ptr %374, i64 %465
  %468 = load double, ptr %467, align 8, !tbaa !9
  %469 = call double @llvm.fmuladd.f64(double %446, double %468, double %store_forwarded1327)
  %470 = add nuw nsw i64 %.5918, 1
  %471 = getelementptr double, ptr %40, i64 %470
  %472 = getelementptr double, ptr %471, i64 %373
  %473 = call double @llvm.fmuladd.f64(double %444, double %store_forwarded1327, double %469)
  store double %473, ptr %466, align 8, !tbaa !9
  %474 = load double, ptr %472, align 8, !tbaa !9
  %475 = fmul double %468, %447
  %476 = call double @llvm.fmuladd.f64(double %446, double %474, double %475)
  %477 = getelementptr double, ptr %471, i64 %448
  store double %476, ptr %477, align 8, !tbaa !9
  %.not876.not = icmp slt i64 %.5918, %445
  br i1 %.not876.not, label %464, label %._crit_edge921, !llvm.loop !60

._crit_edge921:                                   ; preds = %.ph1321.lver.orig, %464, %.._crit_edge921_crit_edge
  %.pre-phi1105 = phi i64 [ %.pre1104, %.._crit_edge921_crit_edge ], [ %448, %464 ], [ %448, %.ph1321.lver.orig ]
  %478 = load double, ptr %6, align 8, !tbaa !9
  %479 = getelementptr i8, ptr %374, i64 16
  %480 = getelementptr double, ptr %479, i64 %.pre-phi1105
  %481 = load double, ptr %480, align 8, !tbaa !9
  %482 = fsub double %481, %478
  store double %482, ptr %480, align 8, !tbaa !9
  br label %483

483:                                              ; preds = %._crit_edge921, %._crit_edge926
  %.pre-phi1096 = phi i64 [ %.pre-phi1105, %._crit_edge921 ], [ %.pre-phi1101, %._crit_edge926 ]
  %484 = phi i64 [ %445, %._crit_edge921 ], [ %393, %._crit_edge926 ]
  %485 = sub nsw i64 %484, %.8852930
  store i64 %485, ptr %22, align 8, !tbaa !5
  store i64 %485, ptr %23, align 8, !tbaa !5
  %486 = getelementptr double, ptr %374, i64 %.pre-phi1096
  %487 = call double @f2c_dasum(ptr noundef nonnull %22, ptr noundef %486, ptr noundef nonnull %10) #7
  %488 = getelementptr i8, ptr %374, i64 16
  %489 = getelementptr double, ptr %488, i64 %373
  %490 = call double @f2c_dasum(ptr noundef nonnull %23, ptr noundef %489, ptr noundef nonnull @c__1) #7
  %491 = fadd double %487, %490
  %492 = getelementptr inbounds double, ptr %41, i64 %.8852930
  store double %491, ptr %492, align 8, !tbaa !9
  %493 = load i64, ptr %21, align 8, !tbaa !5
  %.not868.not = icmp slt i64 %.8852930, %493
  %indvar.next1324 = add i64 %indvar1323, 1
  br i1 %.not868.not, label %.lr.ph932, label %._crit_edge933.loopexit, !llvm.loop !61

._crit_edge933.loopexit:                          ; preds = %483
  %.pre1077 = load i64, ptr %2, align 8, !tbaa !5
  br label %._crit_edge933

._crit_edge933:                                   ; preds = %364, %._crit_edge933.loopexit
  %494 = phi i64 [ %.pre1077, %._crit_edge933.loopexit ], [ %367, %364 ]
  %495 = mul nsw i64 %494, %38
  %496 = getelementptr double, ptr %40, i64 %494
  %497 = getelementptr double, ptr %496, i64 %495
  %498 = load double, ptr %497, align 8, !tbaa !9
  %499 = fcmp oeq double %498, 0.000000e+00
  br i1 %499, label %500, label %507

500:                                              ; preds = %._crit_edge933
  %501 = getelementptr i8, ptr %496, i64 8
  %502 = getelementptr double, ptr %501, i64 %495
  %503 = load double, ptr %502, align 8, !tbaa !9
  %504 = fcmp oeq double %503, 0.000000e+00
  br i1 %504, label %505, label %507

505:                                              ; preds = %500
  %506 = load double, ptr %12, align 8, !tbaa !9
  store double %506, ptr %497, align 8, !tbaa !9
  br label %507

507:                                              ; preds = %505, %500, %._crit_edge933
  %508 = getelementptr inbounds double, ptr %41, i64 %494
  store double 0.000000e+00, ptr %508, align 8, !tbaa !9
  br label %673

509:                                              ; preds = %.loopexit898
  %510 = load i64, ptr %2, align 8, !tbaa !5
  %511 = mul nsw i64 %510, %38
  %512 = getelementptr double, ptr %40, i64 %510
  %513 = getelementptr i8, ptr %512, i64 8
  %514 = getelementptr double, ptr %513, i64 %511
  store double %363, ptr %514, align 8, !tbaa !9
  %515 = add nsw i64 %510, -1
  store i64 %515, ptr %21, align 8, !tbaa !5
  %.not864.not934 = icmp sgt i64 %510, 1
  br i1 %.not864.not934, label %.lr.ph937.preheader, label %._crit_edge955

.lr.ph937.preheader:                              ; preds = %509
  %516 = add nsw i64 %510, -1
  %min.iters.check1165 = icmp ugt i64 %510, 4
  %ident.check.not = icmp eq i64 %38, 1
  %or.cond = select i1 %min.iters.check1165, i1 %ident.check.not, i1 false
  br i1 %or.cond, label %vector.ph1166, label %.lr.ph937.preheader1356

.lr.ph937.preheader1356:                          ; preds = %middle.block1163, %.lr.ph937.preheader
  %.6935.ph = phi i64 [ 1, %.lr.ph937.preheader ], [ %ind.end1169, %middle.block1163 ]
  %517 = sub i64 %510, %.6935.ph
  %xtraiter1363 = and i64 %517, 3
  %lcmp.mod1364.not = icmp eq i64 %xtraiter1363, 0
  br i1 %lcmp.mod1364.not, label %.lr.ph937.prol.loopexit, label %.lr.ph937.prol

.lr.ph937.prol:                                   ; preds = %.lr.ph937.preheader1356, %.lr.ph937.prol
  %.6935.prol = phi i64 [ %520, %.lr.ph937.prol ], [ %.6935.ph, %.lr.ph937.preheader1356 ]
  %prol.iter1365 = phi i64 [ %prol.iter1365.next, %.lr.ph937.prol ], [ 0, %.lr.ph937.preheader1356 ]
  %518 = mul nsw i64 %.6935.prol, %38
  %519 = getelementptr double, ptr %513, i64 %518
  store double 0.000000e+00, ptr %519, align 8, !tbaa !9
  %520 = add nuw nsw i64 %.6935.prol, 1
  %prol.iter1365.next = add i64 %prol.iter1365, 1
  %prol.iter1365.cmp.not = icmp eq i64 %prol.iter1365.next, %xtraiter1363
  br i1 %prol.iter1365.cmp.not, label %.lr.ph937.prol.loopexit, label %.lr.ph937.prol, !llvm.loop !62

.lr.ph937.prol.loopexit:                          ; preds = %.lr.ph937.prol, %.lr.ph937.preheader1356
  %.6935.unr = phi i64 [ %.6935.ph, %.lr.ph937.preheader1356 ], [ %520, %.lr.ph937.prol ]
  %521 = sub i64 %.6935.ph, %510
  %522 = icmp ugt i64 %521, -4
  br i1 %522, label %.preheader897, label %.lr.ph937

vector.ph1166:                                    ; preds = %.lr.ph937.preheader
  %n.vec1168 = and i64 %516, -4
  %ind.end1169 = or disjoint i64 %n.vec1168, 1
  br label %vector.body1171

vector.body1171:                                  ; preds = %vector.body1171, %vector.ph1166
  %index1172 = phi i64 [ 0, %vector.ph1166 ], [ %index.next1174, %vector.body1171 ]
  %offset.idx1173 = or disjoint i64 %index1172, 1
  %523 = getelementptr double, ptr %513, i64 %offset.idx1173
  %524 = getelementptr i8, ptr %523, i64 16
  store <2 x double> zeroinitializer, ptr %523, align 8, !tbaa !9
  store <2 x double> zeroinitializer, ptr %524, align 8, !tbaa !9
  %index.next1174 = add nuw i64 %index1172, 4
  %525 = icmp eq i64 %index.next1174, %n.vec1168
  br i1 %525, label %middle.block1163, label %vector.body1171, !llvm.loop !63

middle.block1163:                                 ; preds = %vector.body1171
  %cmp.n1175 = icmp eq i64 %516, %n.vec1168
  br i1 %cmp.n1175, label %.preheader897, label %.lr.ph937.preheader1356

.preheader897:                                    ; preds = %.lr.ph937.prol.loopexit, %.lr.ph937, %middle.block1163
  %invariant.gep948 = getelementptr i8, ptr %40, i64 8
  br i1 %.not864.not934, label %.lr.ph954.preheader, label %._crit_edge955

.lr.ph954.preheader:                              ; preds = %.preheader897
  %526 = shl i64 %510, 3
  %527 = add i64 %526, -16
  %528 = add i64 %526, -8
  %ident.check1303.not = icmp eq i64 %38, 1
  %ident.check1312.not = icmp eq i64 %38, 1
  %529 = getelementptr i8, ptr %40, i64 8
  br label %.lr.ph954

.lr.ph937:                                        ; preds = %.lr.ph937.prol.loopexit, %.lr.ph937
  %.6935 = phi i64 [ %541, %.lr.ph937 ], [ %.6935.unr, %.lr.ph937.prol.loopexit ]
  %530 = mul nsw i64 %.6935, %38
  %531 = getelementptr double, ptr %513, i64 %530
  store double 0.000000e+00, ptr %531, align 8, !tbaa !9
  %532 = add nuw nsw i64 %.6935, 1
  %533 = mul nsw i64 %532, %38
  %534 = getelementptr double, ptr %513, i64 %533
  store double 0.000000e+00, ptr %534, align 8, !tbaa !9
  %535 = add nuw nsw i64 %.6935, 2
  %536 = mul nsw i64 %535, %38
  %537 = getelementptr double, ptr %513, i64 %536
  store double 0.000000e+00, ptr %537, align 8, !tbaa !9
  %538 = add nuw nsw i64 %.6935, 3
  %539 = mul nsw i64 %538, %38
  %540 = getelementptr double, ptr %513, i64 %539
  store double 0.000000e+00, ptr %540, align 8, !tbaa !9
  %541 = add nuw nsw i64 %.6935, 4
  %exitcond1063.not.3 = icmp eq i64 %541, %510
  br i1 %exitcond1063.not.3, label %.preheader897, label %.lr.ph937, !llvm.loop !64

.lr.ph954:                                        ; preds = %.lr.ph954.preheader, %656
  %indvar1307 = phi i64 [ 0, %.lr.ph954.preheader ], [ %indvar.next1308, %656 ]
  %.7952 = phi i64 [ %510, %.lr.ph954.preheader ], [ %546, %656 ]
  %542 = shl i64 %indvar1307, 3
  %543 = sub i64 %528, %542
  %scevgep1316 = getelementptr i8, ptr %9, i64 %543
  %544 = shl i64 %indvar1307, 3
  %545 = sub i64 %527, %544
  %scevgep1309 = getelementptr i8, ptr %9, i64 %545
  %546 = add nsw i64 %.7952, -1
  %547 = mul nsw i64 %546, %33
  %548 = getelementptr double, ptr %35, i64 %.7952
  %549 = getelementptr double, ptr %548, i64 %547
  %550 = load double, ptr %549, align 8, !tbaa !9
  %551 = mul nsw i64 %.7952, %38
  %552 = getelementptr double, ptr %40, i64 %.7952
  %553 = getelementptr double, ptr %552, i64 %551
  %gep949 = getelementptr double, ptr %invariant.gep948, i64 %.7952
  %554 = getelementptr double, ptr %gep949, i64 %551
  %555 = call double @dlapy2_(ptr noundef %553, ptr noundef %554) #7
  %556 = fcmp oge double %550, 0.000000e+00
  %557 = fneg double %550
  %558 = select i1 %556, double %550, double %557
  %559 = fcmp olt double %555, %558
  br i1 %559, label %.lver.check1313, label %606

.lver.check1313:                                  ; preds = %.lr.ph954
  %560 = load double, ptr %553, align 8, !tbaa !9
  %561 = fdiv double %560, %550
  store double %561, ptr %27, align 8, !tbaa !9
  %562 = load double, ptr %554, align 8, !tbaa !9
  %563 = fdiv double %562, %550
  store double %563, ptr %26, align 8, !tbaa !9
  store double %550, ptr %553, align 8, !tbaa !9
  store double 0.000000e+00, ptr %554, align 8, !tbaa !9
  %564 = mul nsw i64 %546, %38
  %565 = fneg double %561
  %566 = fneg double %563
  br i1 %ident.check1312.not, label %.ph1314, label %.ph1314.lver.orig

.ph1314.lver.orig:                                ; preds = %.lver.check1313, %.ph1314.lver.orig
  %.9853944.lver.orig = phi i64 [ %578, %.ph1314.lver.orig ], [ 1, %.lver.check1313 ]
  %567 = getelementptr double, ptr %40, i64 %.9853944.lver.orig
  %568 = getelementptr double, ptr %567, i64 %564
  %569 = load double, ptr %568, align 8, !tbaa !9
  %570 = getelementptr double, ptr %567, i64 %551
  %571 = load double, ptr %570, align 8, !tbaa !9
  %572 = call double @llvm.fmuladd.f64(double %565, double %569, double %571)
  store double %572, ptr %568, align 8, !tbaa !9
  %573 = mul nsw i64 %.9853944.lver.orig, %38
  %574 = getelementptr double, ptr %gep949, i64 %573
  %575 = load double, ptr %574, align 8, !tbaa !9
  %576 = call double @llvm.fmuladd.f64(double %566, double %569, double %575)
  %577 = getelementptr double, ptr %552, i64 %573
  store double %576, ptr %577, align 8, !tbaa !9
  store double %569, ptr %570, align 8, !tbaa !9
  store double 0.000000e+00, ptr %574, align 8, !tbaa !9
  %578 = add nuw nsw i64 %.9853944.lver.orig, 1
  %.not866.not.lver.orig = icmp slt i64 %578, %.7952
  br i1 %.not866.not.lver.orig, label %.ph1314.lver.orig, label %._crit_edge947, !llvm.loop !65

.ph1314:                                          ; preds = %.lver.check1313
  %load_initial1317 = load double, ptr %scevgep1316, align 8
  %579 = getelementptr double, ptr %529, i64 %564
  %580 = load double, ptr %579, align 8, !tbaa !9
  %581 = getelementptr double, ptr %529, i64 %551
  %582 = call double @llvm.fmuladd.f64(double %565, double %580, double %load_initial1317)
  store double %582, ptr %579, align 8, !tbaa !9
  %583 = getelementptr double, ptr %gep949, i64 %38
  %584 = load double, ptr %583, align 8, !tbaa !9
  %585 = call double @llvm.fmuladd.f64(double %566, double %580, double %584)
  %586 = getelementptr double, ptr %552, i64 %38
  store double %585, ptr %586, align 8, !tbaa !9
  store double %580, ptr %581, align 8, !tbaa !9
  store double 0.000000e+00, ptr %583, align 8, !tbaa !9
  %.not866.not.peel = icmp sgt i64 %.7952, 2
  br i1 %.not866.not.peel, label %.ph1314.peel.newph, label %._crit_edge947

.ph1314.peel.newph:                               ; preds = %.ph1314, %.ph1314.peel.newph
  %.9853944 = phi i64 [ %597, %.ph1314.peel.newph ], [ 2, %.ph1314 ]
  %587 = getelementptr double, ptr %40, i64 %.9853944
  %588 = getelementptr double, ptr %587, i64 %564
  %589 = load double, ptr %588, align 8, !tbaa !9
  %590 = getelementptr double, ptr %587, i64 %551
  %591 = call double @llvm.fmuladd.f64(double %565, double %589, double 0.000000e+00)
  store double %591, ptr %588, align 8, !tbaa !9
  %592 = mul nuw nsw i64 %.9853944, %38
  %593 = getelementptr double, ptr %gep949, i64 %592
  %594 = load double, ptr %593, align 8, !tbaa !9
  %595 = call double @llvm.fmuladd.f64(double %566, double %589, double %594)
  %596 = getelementptr double, ptr %552, i64 %592
  store double %595, ptr %596, align 8, !tbaa !9
  store double %589, ptr %590, align 8, !tbaa !9
  store double 0.000000e+00, ptr %593, align 8, !tbaa !9
  %597 = add nuw nsw i64 %.9853944, 1
  %.not866.not = icmp slt i64 %597, %.7952
  br i1 %.not866.not, label %.ph1314.peel.newph, label %._crit_edge947, !llvm.loop !66

._crit_edge947:                                   ; preds = %.ph1314.lver.orig, %.ph1314, %.ph1314.peel.newph
  %.phi.trans.insert1088 = getelementptr double, ptr %552, i64 %564
  %.pre1089 = load double, ptr %.phi.trans.insert1088, align 8, !tbaa !9
  %.phi.trans.insert1085 = getelementptr double, ptr %40, i64 %546
  %.phi.trans.insert1086 = getelementptr double, ptr %.phi.trans.insert1085, i64 %564
  %.pre1087 = load double, ptr %.phi.trans.insert1086, align 8, !tbaa !9
  %598 = load double, ptr %6, align 8, !tbaa !9
  %599 = getelementptr double, ptr %gep949, i64 %564
  store double %598, ptr %599, align 8, !tbaa !9
  %600 = getelementptr double, ptr %40, i64 %546
  %601 = getelementptr double, ptr %600, i64 %564
  %602 = call double @llvm.fmuladd.f64(double %563, double %598, double %.pre1087)
  store double %602, ptr %601, align 8, !tbaa !9
  %603 = load double, ptr %6, align 8, !tbaa !9
  %604 = getelementptr double, ptr %552, i64 %564
  %605 = call double @llvm.fmuladd.f64(double %565, double %603, double %.pre1089)
  store double %605, ptr %604, align 8, !tbaa !9
  br label %656

606:                                              ; preds = %.lr.ph954
  %607 = fcmp oeq double %555, 0.000000e+00
  br i1 %607, label %608, label %._crit_edge1078

._crit_edge1078:                                  ; preds = %606
  %.pre1079 = load double, ptr %553, align 8, !tbaa !9
  %.pre1080 = load double, ptr %554, align 8, !tbaa !9
  br label %.lver.check1304

608:                                              ; preds = %606
  %609 = load double, ptr %12, align 8, !tbaa !9
  store double %609, ptr %553, align 8, !tbaa !9
  store double 0.000000e+00, ptr %554, align 8, !tbaa !9
  %610 = load double, ptr %12, align 8, !tbaa !9
  br label %.lver.check1304

.lver.check1304:                                  ; preds = %608, %._crit_edge1078
  %611 = phi double [ 0.000000e+00, %608 ], [ %.pre1080, %._crit_edge1078 ]
  %612 = phi double [ %609, %608 ], [ %.pre1079, %._crit_edge1078 ]
  %.0 = phi double [ %610, %608 ], [ %555, %._crit_edge1078 ]
  %613 = fdiv double %550, %.0
  %614 = fdiv double %613, %.0
  %615 = fmul double %612, %614
  store double %615, ptr %27, align 8, !tbaa !9
  %616 = fneg double %611
  %617 = fmul double %614, %616
  store double %617, ptr %26, align 8, !tbaa !9
  %618 = mul nsw i64 %546, %38
  %619 = fneg double %615
  %620 = fneg double %617
  br i1 %ident.check1303.not, label %.ph1305, label %.ph1305.lver.orig

.ph1305.lver.orig:                                ; preds = %.lver.check1304, %.ph1305.lver.orig
  %.10854939.lver.orig = phi i64 [ %636, %.ph1305.lver.orig ], [ 1, %.lver.check1304 ]
  %621 = getelementptr double, ptr %40, i64 %.10854939.lver.orig
  %622 = getelementptr double, ptr %621, i64 %618
  %623 = load double, ptr %622, align 8, !tbaa !9
  %624 = getelementptr double, ptr %621, i64 %551
  %625 = load double, ptr %624, align 8, !tbaa !9
  %626 = call double @llvm.fmuladd.f64(double %619, double %625, double %623)
  %627 = mul nsw i64 %.10854939.lver.orig, %38
  %628 = getelementptr double, ptr %gep949, i64 %627
  %629 = load double, ptr %628, align 8, !tbaa !9
  %630 = call double @llvm.fmuladd.f64(double %617, double %629, double %626)
  store double %630, ptr %622, align 8, !tbaa !9
  %631 = load double, ptr %628, align 8, !tbaa !9
  %632 = load double, ptr %624, align 8, !tbaa !9
  %633 = fmul double %632, %620
  %634 = call double @llvm.fmuladd.f64(double %619, double %631, double %633)
  %635 = getelementptr double, ptr %552, i64 %627
  store double %634, ptr %635, align 8, !tbaa !9
  %636 = add nuw nsw i64 %.10854939.lver.orig, 1
  %.not865.not.lver.orig = icmp slt i64 %636, %.7952
  br i1 %.not865.not.lver.orig, label %.ph1305.lver.orig, label %._crit_edge942, !llvm.loop !68

.ph1305:                                          ; preds = %.lver.check1304
  %load_initial1310 = load double, ptr %scevgep1309, align 8
  br label %637

637:                                              ; preds = %.ph1305, %637
  %store_forwarded1311 = phi double [ %load_initial1310, %.ph1305 ], [ %650, %637 ]
  %.10854939 = phi i64 [ 1, %.ph1305 ], [ %652, %637 ]
  %638 = getelementptr double, ptr %40, i64 %.10854939
  %639 = getelementptr double, ptr %638, i64 %618
  %640 = getelementptr double, ptr %638, i64 %551
  %641 = load double, ptr %640, align 8, !tbaa !9
  %642 = call double @llvm.fmuladd.f64(double %619, double %641, double %store_forwarded1311)
  %643 = mul nuw nsw i64 %.10854939, %38
  %644 = getelementptr double, ptr %gep949, i64 %643
  %645 = load double, ptr %644, align 8, !tbaa !9
  %646 = call double @llvm.fmuladd.f64(double %617, double %645, double %642)
  store double %646, ptr %639, align 8, !tbaa !9
  %647 = load double, ptr %644, align 8, !tbaa !9
  %648 = load double, ptr %640, align 8, !tbaa !9
  %649 = fmul double %648, %620
  %650 = call double @llvm.fmuladd.f64(double %619, double %647, double %649)
  %651 = getelementptr double, ptr %552, i64 %643
  store double %650, ptr %651, align 8, !tbaa !9
  %652 = add nuw nsw i64 %.10854939, 1
  %.not865.not = icmp slt i64 %652, %.7952
  br i1 %.not865.not, label %637, label %._crit_edge942, !llvm.loop !68

._crit_edge942:                                   ; preds = %.ph1305.lver.orig, %637
  %.phi.trans.insert = getelementptr double, ptr %552, i64 %618
  %.pre1082 = load double, ptr %.phi.trans.insert, align 8, !tbaa !9
  %653 = load double, ptr %6, align 8, !tbaa !9
  %654 = getelementptr double, ptr %552, i64 %618
  %655 = fadd double %653, %.pre1082
  store double %655, ptr %654, align 8, !tbaa !9
  br label %656

656:                                              ; preds = %._crit_edge942, %._crit_edge947
  store i64 %546, ptr %21, align 8, !tbaa !5
  store i64 %546, ptr %22, align 8, !tbaa !5
  %gep951 = getelementptr double, ptr %invariant.gep948, i64 %551
  %657 = call double @f2c_dasum(ptr noundef nonnull %21, ptr noundef %gep951, ptr noundef nonnull @c__1) #7
  %658 = getelementptr inbounds double, ptr %9, i64 %.7952
  %659 = call double @f2c_dasum(ptr noundef nonnull %22, ptr noundef nonnull %658, ptr noundef nonnull %10) #7
  %660 = fadd double %657, %659
  %661 = getelementptr inbounds double, ptr %41, i64 %.7952
  store double %660, ptr %661, align 8, !tbaa !9
  %662 = icmp sgt i64 %.7952, 2
  %indvar.next1308 = add i64 %indvar1307, 1
  br i1 %662, label %.lr.ph954, label %._crit_edge955, !llvm.loop !69

._crit_edge955:                                   ; preds = %656, %509, %.preheader897
  %663 = load double, ptr %9, align 8, !tbaa !9
  %664 = fcmp oeq double %663, 0.000000e+00
  br i1 %664, label %665, label %671

665:                                              ; preds = %._crit_edge955
  %666 = getelementptr inbounds i8, ptr %9, i64 8
  %667 = load double, ptr %666, align 8, !tbaa !9
  %668 = fcmp oeq double %667, 0.000000e+00
  br i1 %668, label %669, label %671

669:                                              ; preds = %665
  %670 = load double, ptr %12, align 8, !tbaa !9
  store double %670, ptr %9, align 8, !tbaa !9
  br label %671

671:                                              ; preds = %669, %665, %._crit_edge955
  store double 0.000000e+00, ptr %11, align 8, !tbaa !9
  %672 = load i64, ptr %2, align 8, !tbaa !5
  br label %673

673:                                              ; preds = %671, %507
  %674 = phi i64 [ %494, %507 ], [ %672, %671 ]
  %.0839 = phi i64 [ %494, %507 ], [ 1, %671 ]
  %.0838 = phi i64 [ 1, %507 ], [ %672, %671 ]
  %.0837 = phi i64 [ -1, %507 ], [ 1, %671 ]
  store i64 %674, ptr %21, align 8, !tbaa !5
  %.not869994 = icmp slt i64 %674, 1
  br i1 %.not869994, label %._crit_edge998, label %.lr.ph997

.lr.ph997:                                        ; preds = %673
  %invariant.gep979 = getelementptr i8, ptr %40, i64 8
  %675 = fadd double %44, 1.000000e+00
  %676 = icmp sge i64 %.0839, %.0838
  %677 = icmp sle i64 %.0839, %.0838
  %.in981 = select i1 %.not863.not, i1 %677, i1 %676
  %678 = sub i64 %20, %19
  %679 = sub i64 %18, %17
  %diff.check1191 = icmp ult i64 %679, 32
  %diff.check = icmp ult i64 %678, 32
  br label %680

680:                                              ; preds = %.lr.ph997, %._crit_edge993
  %.1836995 = phi i64 [ 1, %.lr.ph997 ], [ %885, %._crit_edge993 ]
  %681 = load double, ptr %14, align 8, !tbaa !9
  store i64 %.0838, ptr %22, align 8, !tbaa !5
  store i64 %.0837, ptr %23, align 8, !tbaa !5
  br i1 %.in981, label %.lr.ph987, label %._crit_edge988

.lr.ph987:                                        ; preds = %680, %837
  %682 = phi double [ %838, %837 ], [ 1.000000e+00, %680 ]
  %.0832985 = phi double [ %.1, %837 ], [ %681, %680 ]
  %.0833984 = phi double [ %.3, %837 ], [ 1.000000e+00, %680 ]
  %.11982 = phi i64 [ %840, %837 ], [ %.0839, %680 ]
  %683 = getelementptr inbounds double, ptr %41, i64 %.11982
  %684 = load double, ptr %683, align 8, !tbaa !9
  %685 = fcmp ogt double %684, %.0832985
  br i1 %685, label %686, label %692

686:                                              ; preds = %.lr.ph987
  %687 = fdiv double 1.000000e+00, %.0833984
  store double %687, ptr %28, align 8, !tbaa !9
  %688 = call i32 @f2c_dscal(ptr noundef nonnull %2, ptr noundef nonnull %28, ptr noundef %7, ptr noundef nonnull @c__1) #7
  %689 = call i32 @f2c_dscal(ptr noundef nonnull %2, ptr noundef nonnull %28, ptr noundef %8, ptr noundef nonnull @c__1) #7
  %690 = load double, ptr %28, align 8, !tbaa !9
  %691 = fmul double %690, %682
  br label %692

692:                                              ; preds = %686, %.lr.ph987
  %693 = phi double [ %691, %686 ], [ %682, %.lr.ph987 ]
  %.1834 = phi double [ 1.000000e+00, %686 ], [ %.0833984, %.lr.ph987 ]
  %694 = getelementptr inbounds double, ptr %36, i64 %.11982
  %695 = load double, ptr %694, align 8, !tbaa !9
  store double %695, ptr %27, align 8, !tbaa !9
  %696 = getelementptr inbounds double, ptr %37, i64 %.11982
  %697 = load double, ptr %696, align 8, !tbaa !9
  store double %697, ptr %26, align 8, !tbaa !9
  %698 = load i64, ptr %0, align 8, !tbaa !5
  %.not872 = icmp eq i64 %698, 0
  br i1 %.not872, label %.preheader, label %702

.preheader:                                       ; preds = %692
  %.not873.not967 = icmp sgt i64 %.11982, 1
  %699 = insertelement <2 x double> poison, double %697, i64 0
  %700 = insertelement <2 x double> %699, double %695, i64 1
  br i1 %.not873.not967, label %.lr.ph969, label %.loopexit894

.lr.ph969:                                        ; preds = %.preheader
  %701 = mul nsw i64 %.11982, %38
  %invariant.gep970 = getelementptr double, ptr %40, i64 %701
  %gep980 = getelementptr double, ptr %invariant.gep979, i64 %.11982
  br label %732

702:                                              ; preds = %692
  %703 = load i64, ptr %2, align 8, !tbaa !5
  %.not874957.not = icmp slt i64 %.11982, %703
  %704 = insertelement <2 x double> poison, double %697, i64 0
  %705 = insertelement <2 x double> %704, double %695, i64 1
  br i1 %.not874957.not, label %.lr.ph960, label %.loopexit894

.lr.ph960:                                        ; preds = %702
  %706 = add nsw i64 %.11982, 1
  %707 = getelementptr double, ptr %40, i64 %.11982
  %708 = mul nsw i64 %.11982, %38
  %invariant.gep961 = getelementptr double, ptr %40, i64 %708
  br label %709

709:                                              ; preds = %.lr.ph960, %709
  %.8958 = phi i64 [ %706, %.lr.ph960 ], [ %717, %709 ]
  %710 = phi <2 x double> [ %705, %.lr.ph960 ], [ %731, %709 ]
  %711 = mul nsw i64 %.8958, %38
  %712 = getelementptr double, ptr %707, i64 %711
  %713 = load double, ptr %712, align 8, !tbaa !9
  %714 = getelementptr inbounds double, ptr %36, i64 %.8958
  %715 = load double, ptr %714, align 8, !tbaa !9
  %716 = fneg double %713
  %717 = add nsw i64 %.8958, 1
  %gep962 = getelementptr double, ptr %invariant.gep961, i64 %717
  %718 = load double, ptr %gep962, align 8, !tbaa !9
  %719 = getelementptr inbounds double, ptr %37, i64 %.8958
  %720 = load double, ptr %719, align 8, !tbaa !9
  %721 = insertelement <2 x double> poison, double %716, i64 0
  %722 = shufflevector <2 x double> %721, <2 x double> poison, <2 x i32> zeroinitializer
  %723 = insertelement <2 x double> poison, double %720, i64 0
  %724 = insertelement <2 x double> %723, double %715, i64 1
  %725 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %722, <2 x double> %724, <2 x double> %710)
  %726 = fneg double %718
  %727 = insertelement <2 x double> poison, double %726, i64 0
  %728 = insertelement <2 x double> %727, double %718, i64 1
  %729 = insertelement <2 x double> poison, double %715, i64 0
  %730 = insertelement <2 x double> %729, double %720, i64 1
  %731 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %728, <2 x double> %730, <2 x double> %725)
  %exitcond1065.not = icmp eq i64 %.8958, %703
  br i1 %exitcond1065.not, label %..loopexit895_crit_edge, label %709, !llvm.loop !70

732:                                              ; preds = %.lr.ph969, %732
  %.9968 = phi i64 [ 1, %.lr.ph969 ], [ %754, %732 ]
  %733 = phi <2 x double> [ %700, %.lr.ph969 ], [ %753, %732 ]
  %gep971 = getelementptr double, ptr %invariant.gep970, i64 %.9968
  %734 = load double, ptr %gep971, align 8, !tbaa !9
  %735 = getelementptr inbounds double, ptr %36, i64 %.9968
  %736 = load double, ptr %735, align 8, !tbaa !9
  %737 = fneg double %734
  %738 = mul nsw i64 %.9968, %38
  %739 = getelementptr double, ptr %gep980, i64 %738
  %740 = load double, ptr %739, align 8, !tbaa !9
  %741 = getelementptr inbounds double, ptr %37, i64 %.9968
  %742 = load double, ptr %741, align 8, !tbaa !9
  %743 = insertelement <2 x double> poison, double %737, i64 0
  %744 = shufflevector <2 x double> %743, <2 x double> poison, <2 x i32> zeroinitializer
  %745 = insertelement <2 x double> poison, double %742, i64 0
  %746 = insertelement <2 x double> %745, double %736, i64 1
  %747 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %744, <2 x double> %746, <2 x double> %733)
  %748 = fneg double %740
  %749 = insertelement <2 x double> poison, double %748, i64 0
  %750 = insertelement <2 x double> %749, double %740, i64 1
  %751 = insertelement <2 x double> poison, double %736, i64 0
  %752 = insertelement <2 x double> %751, double %742, i64 1
  %753 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %750, <2 x double> %752, <2 x double> %747)
  %754 = add nuw nsw i64 %.9968, 1
  %exitcond1066.not = icmp eq i64 %754, %.11982
  br i1 %exitcond1066.not, label %..loopexit894_crit_edge, label %732, !llvm.loop !71

..loopexit894_crit_edge:                          ; preds = %732
  %755 = extractelement <2 x double> %753, i64 1
  store double %755, ptr %27, align 8, !tbaa !9
  %756 = extractelement <2 x double> %753, i64 0
  store double %756, ptr %26, align 8, !tbaa !9
  br label %.loopexit894

..loopexit895_crit_edge:                          ; preds = %709
  %757 = extractelement <2 x double> %731, i64 1
  store double %757, ptr %27, align 8, !tbaa !9
  %758 = extractelement <2 x double> %731, i64 0
  store double %758, ptr %26, align 8, !tbaa !9
  br label %.loopexit894

.loopexit894:                                     ; preds = %702, %..loopexit895_crit_edge, %.preheader, %..loopexit894_crit_edge
  %759 = phi <2 x double> [ %705, %702 ], [ %731, %..loopexit895_crit_edge ], [ %700, %.preheader ], [ %753, %..loopexit894_crit_edge ]
  %760 = mul nsw i64 %.11982, %38
  %761 = getelementptr double, ptr %40, i64 %.11982
  %762 = getelementptr double, ptr %761, i64 %760
  %763 = getelementptr i8, ptr %761, i64 8
  %764 = getelementptr double, ptr %763, i64 %760
  %765 = load <2 x double>, ptr %762, align 8, !tbaa !9
  %766 = extractelement <2 x double> %765, i64 0
  store double %766, ptr %24, align 8, !tbaa !9
  %767 = extractelement <2 x double> %765, i64 1
  store double %767, ptr %25, align 8, !tbaa !9
  %768 = fcmp oge <2 x double> %765, zeroinitializer
  %769 = fneg <2 x double> %765
  %770 = select <2 x i1> %768, <2 x double> %765, <2 x double> %769
  %shift = shufflevector <2 x double> %770, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %771 = fadd <2 x double> %770, %shift
  %772 = extractelement <2 x double> %771, i64 0
  %773 = load double, ptr %13, align 8, !tbaa !9
  %774 = fcmp ogt double %772, %773
  br i1 %774, label %775, label %811

775:                                              ; preds = %.loopexit894
  %776 = fcmp olt double %772, 1.000000e+00
  br i1 %776, label %777, label %795

777:                                              ; preds = %775
  %778 = fcmp oge <2 x double> %759, zeroinitializer
  %779 = fneg <2 x double> %759
  %780 = select <2 x i1> %778, <2 x double> %759, <2 x double> %779
  %shift1339 = shufflevector <2 x double> %780, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %781 = fadd <2 x double> %shift1339, %780
  %782 = extractelement <2 x double> %781, i64 0
  %783 = load double, ptr %14, align 8, !tbaa !9
  %784 = fmul double %772, %783
  %785 = fcmp ogt double %782, %784
  br i1 %785, label %786, label %795

786:                                              ; preds = %777
  %787 = fdiv double 1.000000e+00, %782
  store double %787, ptr %28, align 8, !tbaa !9
  %788 = call i32 @f2c_dscal(ptr noundef nonnull %2, ptr noundef nonnull %28, ptr noundef nonnull %7, ptr noundef nonnull @c__1) #7
  %789 = call i32 @f2c_dscal(ptr noundef nonnull %2, ptr noundef nonnull %28, ptr noundef nonnull %8, ptr noundef nonnull @c__1) #7
  %790 = load double, ptr %694, align 8, !tbaa !9
  store double %790, ptr %27, align 8, !tbaa !9
  %791 = load double, ptr %696, align 8, !tbaa !9
  store double %791, ptr %26, align 8, !tbaa !9
  %792 = load double, ptr %28, align 8, !tbaa !9
  %793 = fmul double %792, %693
  %794 = fmul double %.1834, %792
  br label %795

795:                                              ; preds = %777, %786, %775
  %796 = phi double [ %793, %786 ], [ %693, %777 ], [ %693, %775 ]
  %.2 = phi double [ %794, %786 ], [ %.1834, %777 ], [ %.1834, %775 ]
  %797 = call i32 @dladiv_(ptr noundef nonnull %27, ptr noundef nonnull %26, ptr noundef nonnull %762, ptr noundef nonnull %764, ptr noundef nonnull %694, ptr noundef nonnull %696) #7
  %798 = load double, ptr %694, align 8, !tbaa !9
  store double %798, ptr %24, align 8, !tbaa !9
  %799 = fcmp oge double %798, 0.000000e+00
  %800 = fneg double %798
  %801 = select i1 %799, double %798, double %800
  %802 = load double, ptr %696, align 8, !tbaa !9
  store double %802, ptr %25, align 8, !tbaa !9
  %803 = fcmp oge double %802, 0.000000e+00
  %804 = fneg double %802
  %805 = select i1 %803, double %802, double %804
  %806 = fadd double %801, %805
  %807 = fcmp oge double %806, %.2
  %808 = select i1 %807, double %806, double %.2
  %809 = load double, ptr %14, align 8, !tbaa !9
  %810 = fdiv double %809, %808
  br label %837

811:                                              ; preds = %.loopexit894
  %812 = load i64, ptr %2, align 8, !tbaa !5
  %.not875974 = icmp slt i64 %812, 1
  br i1 %.not875974, label %._crit_edge978, label %.lr.ph977.preheader

.lr.ph977.preheader:                              ; preds = %811
  %min.iters.check1194 = icmp ult i64 %812, 4
  %or.cond1337 = or i1 %min.iters.check1194, %diff.check1191
  br i1 %or.cond1337, label %.lr.ph977.preheader1349, label %vector.ph1195

vector.ph1195:                                    ; preds = %.lr.ph977.preheader
  %n.vec1197 = and i64 %812, 9223372036854775804
  %ind.end1198 = or disjoint i64 %n.vec1197, 1
  br label %vector.body1200

vector.body1200:                                  ; preds = %vector.body1200, %vector.ph1195
  %index1201 = phi i64 [ 0, %vector.ph1195 ], [ %index.next1203, %vector.body1200 ]
  %813 = getelementptr double, ptr %7, i64 %index1201
  %814 = getelementptr inbounds i8, ptr %813, i64 16
  store <2 x double> zeroinitializer, ptr %813, align 8, !tbaa !9
  store <2 x double> zeroinitializer, ptr %814, align 8, !tbaa !9
  %815 = getelementptr double, ptr %8, i64 %index1201
  %816 = getelementptr inbounds i8, ptr %815, i64 16
  store <2 x double> zeroinitializer, ptr %815, align 8, !tbaa !9
  store <2 x double> zeroinitializer, ptr %816, align 8, !tbaa !9
  %index.next1203 = add nuw i64 %index1201, 4
  %817 = icmp eq i64 %index.next1203, %n.vec1197
  br i1 %817, label %middle.block1192, label %vector.body1200, !llvm.loop !72

middle.block1192:                                 ; preds = %vector.body1200
  %cmp.n1204 = icmp eq i64 %812, %n.vec1197
  br i1 %cmp.n1204, label %._crit_edge978, label %.lr.ph977.preheader1349

.lr.ph977.preheader1349:                          ; preds = %middle.block1192, %.lr.ph977.preheader
  %.10975.ph = phi i64 [ 1, %.lr.ph977.preheader ], [ %ind.end1198, %middle.block1192 ]
  %818 = add nuw i64 %812, 1
  %819 = sub i64 %818, %.10975.ph
  %820 = sub i64 %812, %.10975.ph
  %xtraiter1367 = and i64 %819, 3
  %lcmp.mod1368.not = icmp eq i64 %xtraiter1367, 0
  br i1 %lcmp.mod1368.not, label %.lr.ph977.prol.loopexit, label %.lr.ph977.prol

.lr.ph977.prol:                                   ; preds = %.lr.ph977.preheader1349, %.lr.ph977.prol
  %.10975.prol = phi i64 [ %823, %.lr.ph977.prol ], [ %.10975.ph, %.lr.ph977.preheader1349 ]
  %prol.iter1369 = phi i64 [ %prol.iter1369.next, %.lr.ph977.prol ], [ 0, %.lr.ph977.preheader1349 ]
  %821 = getelementptr inbounds double, ptr %36, i64 %.10975.prol
  store double 0.000000e+00, ptr %821, align 8, !tbaa !9
  %822 = getelementptr inbounds double, ptr %37, i64 %.10975.prol
  store double 0.000000e+00, ptr %822, align 8, !tbaa !9
  %823 = add nuw i64 %.10975.prol, 1
  %prol.iter1369.next = add i64 %prol.iter1369, 1
  %prol.iter1369.cmp.not = icmp eq i64 %prol.iter1369.next, %xtraiter1367
  br i1 %prol.iter1369.cmp.not, label %.lr.ph977.prol.loopexit, label %.lr.ph977.prol, !llvm.loop !73

.lr.ph977.prol.loopexit:                          ; preds = %.lr.ph977.prol, %.lr.ph977.preheader1349
  %.10975.unr = phi i64 [ %.10975.ph, %.lr.ph977.preheader1349 ], [ %823, %.lr.ph977.prol ]
  %824 = icmp ult i64 %820, 3
  br i1 %824, label %._crit_edge978, label %.lr.ph977

.lr.ph977:                                        ; preds = %.lr.ph977.prol.loopexit, %.lr.ph977
  %.10975 = phi i64 [ %835, %.lr.ph977 ], [ %.10975.unr, %.lr.ph977.prol.loopexit ]
  %825 = getelementptr inbounds double, ptr %36, i64 %.10975
  store double 0.000000e+00, ptr %825, align 8, !tbaa !9
  %826 = getelementptr inbounds double, ptr %37, i64 %.10975
  store double 0.000000e+00, ptr %826, align 8, !tbaa !9
  %827 = getelementptr double, ptr %7, i64 %.10975
  store double 0.000000e+00, ptr %827, align 8, !tbaa !9
  %828 = getelementptr double, ptr %8, i64 %.10975
  store double 0.000000e+00, ptr %828, align 8, !tbaa !9
  %829 = add nuw i64 %.10975, 2
  %830 = getelementptr inbounds double, ptr %36, i64 %829
  store double 0.000000e+00, ptr %830, align 8, !tbaa !9
  %831 = getelementptr inbounds double, ptr %37, i64 %829
  store double 0.000000e+00, ptr %831, align 8, !tbaa !9
  %832 = add nuw i64 %.10975, 3
  %833 = getelementptr inbounds double, ptr %36, i64 %832
  store double 0.000000e+00, ptr %833, align 8, !tbaa !9
  %834 = getelementptr inbounds double, ptr %37, i64 %832
  store double 0.000000e+00, ptr %834, align 8, !tbaa !9
  %835 = add nuw i64 %.10975, 4
  %exitcond1067.not.3 = icmp eq i64 %832, %812
  br i1 %exitcond1067.not.3, label %._crit_edge978, label %.lr.ph977, !llvm.loop !74

._crit_edge978:                                   ; preds = %.lr.ph977.prol.loopexit, %.lr.ph977, %middle.block1192, %811
  store double 1.000000e+00, ptr %694, align 8, !tbaa !9
  store double 1.000000e+00, ptr %696, align 8, !tbaa !9
  %836 = load double, ptr %14, align 8, !tbaa !9
  br label %837

837:                                              ; preds = %795, %._crit_edge978
  %838 = phi double [ %796, %795 ], [ 0.000000e+00, %._crit_edge978 ]
  %.3 = phi double [ %808, %795 ], [ 1.000000e+00, %._crit_edge978 ]
  %.1 = phi double [ %810, %795 ], [ %836, %._crit_edge978 ]
  %839 = load i64, ptr %23, align 8, !tbaa !5
  %840 = add nsw i64 %839, %.11982
  %841 = icmp slt i64 %839, 0
  %842 = load i64, ptr %22, align 8
  %843 = icmp sge i64 %840, %842
  %844 = icmp sle i64 %840, %842
  %.in = select i1 %841, i1 %843, i1 %844
  br i1 %.in, label %.lr.ph987, label %._crit_edge988, !llvm.loop !75

._crit_edge988:                                   ; preds = %837, %680
  %845 = phi double [ 1.000000e+00, %680 ], [ %838, %837 ]
  %846 = call double @f2c_dasum(ptr noundef nonnull %2, ptr noundef %7, ptr noundef nonnull @c__1) #7
  %847 = call double @f2c_dasum(ptr noundef nonnull %2, ptr noundef %8, ptr noundef nonnull @c__1) #7
  %848 = fadd double %846, %847
  %849 = fmul double %45, %845
  %850 = fcmp ult double %848, %849
  br i1 %850, label %851, label %.loopexit896

851:                                              ; preds = %._crit_edge988
  %852 = load double, ptr %12, align 8, !tbaa !9
  %853 = fdiv double %852, %675
  store double %852, ptr %7, align 8, !tbaa !9
  store double 0.000000e+00, ptr %8, align 8, !tbaa !9
  %854 = load i64, ptr %2, align 8, !tbaa !5
  store i64 %854, ptr %23, align 8, !tbaa !5
  %.not870989 = icmp slt i64 %854, 2
  br i1 %.not870989, label %._crit_edge993, label %.lr.ph992.preheader

.lr.ph992.preheader:                              ; preds = %851
  %855 = add nsw i64 %854, -1
  %min.iters.check1179 = icmp ult i64 %854, 5
  %or.cond1338 = or i1 %min.iters.check1179, %diff.check
  br i1 %or.cond1338, label %.lr.ph992.preheader1350, label %vector.ph1180

vector.ph1180:                                    ; preds = %.lr.ph992.preheader
  %n.vec1182 = and i64 %855, -4
  %ind.end1183 = or disjoint i64 %n.vec1182, 2
  %broadcast.splatinsert = insertelement <2 x double> poison, double %853, i64 0
  %broadcast.splat = shufflevector <2 x double> %broadcast.splatinsert, <2 x double> poison, <2 x i32> zeroinitializer
  br label %vector.body1185

vector.body1185:                                  ; preds = %vector.body1185, %vector.ph1180
  %index1186 = phi i64 [ 0, %vector.ph1180 ], [ %index.next1188, %vector.body1185 ]
  %offset.idx1187 = or disjoint i64 %index1186, 2
  %856 = getelementptr inbounds double, ptr %36, i64 %offset.idx1187
  %857 = getelementptr inbounds i8, ptr %856, i64 16
  store <2 x double> %broadcast.splat, ptr %856, align 8, !tbaa !9
  store <2 x double> %broadcast.splat, ptr %857, align 8, !tbaa !9
  %858 = getelementptr inbounds double, ptr %37, i64 %offset.idx1187
  %859 = getelementptr inbounds i8, ptr %858, i64 16
  store <2 x double> zeroinitializer, ptr %858, align 8, !tbaa !9
  store <2 x double> zeroinitializer, ptr %859, align 8, !tbaa !9
  %index.next1188 = add nuw i64 %index1186, 4
  %860 = icmp eq i64 %index.next1188, %n.vec1182
  br i1 %860, label %middle.block1177, label %vector.body1185, !llvm.loop !76

middle.block1177:                                 ; preds = %vector.body1185
  %cmp.n1189 = icmp eq i64 %855, %n.vec1182
  br i1 %cmp.n1189, label %._crit_edge993, label %.lr.ph992.preheader1350

.lr.ph992.preheader1350:                          ; preds = %middle.block1177, %.lr.ph992.preheader
  %.12990.ph = phi i64 [ 2, %.lr.ph992.preheader ], [ %ind.end1183, %middle.block1177 ]
  %861 = add nuw i64 %854, 1
  %862 = sub i64 %861, %.12990.ph
  %863 = sub i64 %854, %.12990.ph
  %xtraiter1370 = and i64 %862, 3
  %lcmp.mod1371.not = icmp eq i64 %xtraiter1370, 0
  br i1 %lcmp.mod1371.not, label %.lr.ph992.prol.loopexit, label %.lr.ph992.prol

.lr.ph992.prol:                                   ; preds = %.lr.ph992.preheader1350, %.lr.ph992.prol
  %.12990.prol = phi i64 [ %866, %.lr.ph992.prol ], [ %.12990.ph, %.lr.ph992.preheader1350 ]
  %prol.iter1372 = phi i64 [ %prol.iter1372.next, %.lr.ph992.prol ], [ 0, %.lr.ph992.preheader1350 ]
  %864 = getelementptr inbounds double, ptr %36, i64 %.12990.prol
  store double %853, ptr %864, align 8, !tbaa !9
  %865 = getelementptr inbounds double, ptr %37, i64 %.12990.prol
  store double 0.000000e+00, ptr %865, align 8, !tbaa !9
  %866 = add nuw i64 %.12990.prol, 1
  %prol.iter1372.next = add i64 %prol.iter1372, 1
  %prol.iter1372.cmp.not = icmp eq i64 %prol.iter1372.next, %xtraiter1370
  br i1 %prol.iter1372.cmp.not, label %.lr.ph992.prol.loopexit, label %.lr.ph992.prol, !llvm.loop !77

.lr.ph992.prol.loopexit:                          ; preds = %.lr.ph992.prol, %.lr.ph992.preheader1350
  %.12990.unr = phi i64 [ %.12990.ph, %.lr.ph992.preheader1350 ], [ %866, %.lr.ph992.prol ]
  %867 = icmp ult i64 %863, 3
  br i1 %867, label %._crit_edge993, label %.lr.ph992

.lr.ph992:                                        ; preds = %.lr.ph992.prol.loopexit, %.lr.ph992
  %.12990 = phi i64 [ %878, %.lr.ph992 ], [ %.12990.unr, %.lr.ph992.prol.loopexit ]
  %868 = getelementptr inbounds double, ptr %36, i64 %.12990
  store double %853, ptr %868, align 8, !tbaa !9
  %869 = getelementptr inbounds double, ptr %37, i64 %.12990
  store double 0.000000e+00, ptr %869, align 8, !tbaa !9
  %870 = getelementptr double, ptr %7, i64 %.12990
  store double %853, ptr %870, align 8, !tbaa !9
  %871 = getelementptr double, ptr %8, i64 %.12990
  store double 0.000000e+00, ptr %871, align 8, !tbaa !9
  %872 = add nuw i64 %.12990, 2
  %873 = getelementptr inbounds double, ptr %36, i64 %872
  store double %853, ptr %873, align 8, !tbaa !9
  %874 = getelementptr inbounds double, ptr %37, i64 %872
  store double 0.000000e+00, ptr %874, align 8, !tbaa !9
  %875 = add nuw i64 %.12990, 3
  %876 = getelementptr inbounds double, ptr %36, i64 %875
  store double %853, ptr %876, align 8, !tbaa !9
  %877 = getelementptr inbounds double, ptr %37, i64 %875
  store double 0.000000e+00, ptr %877, align 8, !tbaa !9
  %878 = add nuw i64 %.12990, 4
  %exitcond1069.not.3 = icmp eq i64 %875, %854
  br i1 %exitcond1069.not.3, label %._crit_edge993, label %.lr.ph992, !llvm.loop !78

._crit_edge993:                                   ; preds = %.lr.ph992.prol.loopexit, %.lr.ph992, %middle.block1177, %851
  %879 = load double, ptr %12, align 8, !tbaa !9
  %880 = sub nsw i64 %854, %.1836995
  %881 = getelementptr double, ptr %7, i64 %880
  %882 = load double, ptr %881, align 8, !tbaa !9
  %883 = fneg double %879
  %884 = call double @llvm.fmuladd.f64(double %883, double %44, double %882)
  store double %884, ptr %881, align 8, !tbaa !9
  %885 = add nuw nsw i64 %.1836995, 1
  %886 = load i64, ptr %21, align 8, !tbaa !5
  %.not869.not = icmp slt i64 %.1836995, %886
  br i1 %.not869.not, label %680, label %._crit_edge998, !llvm.loop !79

._crit_edge998:                                   ; preds = %._crit_edge993, %673
  store i64 1, ptr %15, align 8, !tbaa !5
  br label %.loopexit896

.loopexit896:                                     ; preds = %._crit_edge988, %._crit_edge998
  %887 = load i64, ptr %2, align 8, !tbaa !5
  store i64 %887, ptr %21, align 8, !tbaa !5
  %.not871999 = icmp slt i64 %887, 1
  br i1 %.not871999, label %902, label %.lr.ph1003

.lr.ph1003:                                       ; preds = %.loopexit896, %.lr.ph1003
  %.08311001 = phi double [ %900, %.lr.ph1003 ], [ 0.000000e+00, %.loopexit896 ]
  %.131000 = phi i64 [ %901, %.lr.ph1003 ], [ 1, %.loopexit896 ]
  %888 = getelementptr inbounds double, ptr %36, i64 %.131000
  %889 = load double, ptr %888, align 8, !tbaa !9
  %890 = fcmp oge double %889, 0.000000e+00
  %891 = fneg double %889
  %892 = select i1 %890, double %889, double %891
  %893 = getelementptr inbounds double, ptr %37, i64 %.131000
  %894 = load double, ptr %893, align 8, !tbaa !9
  %895 = fcmp oge double %894, 0.000000e+00
  %896 = fneg double %894
  %897 = select i1 %895, double %894, double %896
  %898 = fadd double %892, %897
  %899 = fcmp oge double %.08311001, %898
  %900 = select i1 %899, double %.08311001, double %898
  %901 = add nuw i64 %.131000, 1
  %exitcond1070.not = icmp eq i64 %.131000, %887
  br i1 %exitcond1070.not, label %._crit_edge1004, label %.lr.ph1003, !llvm.loop !80

._crit_edge1004:                                  ; preds = %.lr.ph1003
  store double %894, ptr %25, align 8, !tbaa !9
  br label %902

902:                                              ; preds = %._crit_edge1004, %.loopexit896
  %.0831.lcssa = phi double [ %900, %._crit_edge1004 ], [ 0.000000e+00, %.loopexit896 ]
  %903 = fdiv double 1.000000e+00, %.0831.lcssa
  store double %903, ptr %24, align 8, !tbaa !9
  %904 = call i32 @f2c_dscal(ptr noundef nonnull %2, ptr noundef nonnull %24, ptr noundef %7, ptr noundef nonnull @c__1) #7
  store double %903, ptr %24, align 8, !tbaa !9
  %905 = call i32 @f2c_dscal(ptr noundef nonnull %2, ptr noundef nonnull %24, ptr noundef %8, ptr noundef nonnull @c__1) #7
  br label %906

906:                                              ; preds = %902, %.loopexit
  call void @llvm.lifetime.end.p0(i64 1, 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 8, ptr nonnull %28) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #7
  call void @llvm.lifetime.end.p0(i64 8, 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 8, ptr nonnull %23) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #7
  ret i32 0
}

; 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 @f2c_dnrm2(ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #3

declare i32 @f2c_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 i32 @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 @f2c_dasum(ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #3

declare i64 @f2c_idamax(ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #3

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

declare i32 @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 = !{!"long", !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