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

; Unoptimized IR (clang -disable-llvm-passes):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

@.str = external hidden unnamed_addr constant [2 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [10 x i8], align 1
@c_false = external hidden global i32, align 4
@c__1 = external hidden global i32, align 4
@c_b22 = external hidden global double, align 8
@c_b25 = external hidden global double, align 8
@c__2 = external hidden global i32, align 4
@.str.8 = external hidden unnamed_addr constant [2 x i8], align 1
@c_true = external hidden global i32, align 4

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

118:                                              ; preds = %14
  %119 = load i32, ptr %60, align 4, !tbaa !9
  %120 = icmp ne i32 %119, 0
  br label %121

121:                                              ; preds = %118, %14
  %122 = phi i1 [ true, %14 ], [ %120, %118 ]
  %123 = zext i1 %122 to i32
  store i32 %123, ptr %74, align 4, !tbaa !9
  %124 = load ptr, ptr %15, align 8, !tbaa !5
  %125 = call i32 @lsame_(ptr noundef %124, ptr noundef @.str.2)
  %126 = icmp ne i32 %125, 0
  br i1 %126, label %130, label %127

127:                                              ; preds = %121
  %128 = load i32, ptr %60, align 4, !tbaa !9
  %129 = icmp ne i32 %128, 0
  br label %130

130:                                              ; preds = %127, %121
  %131 = phi i1 [ true, %121 ], [ %129, %127 ]
  %132 = zext i1 %131 to i32
  store i32 %132, ptr %59, align 4, !tbaa !9
  %133 = load ptr, ptr %16, align 8, !tbaa !5
  %134 = call i32 @lsame_(ptr noundef %133, ptr noundef @.str.3)
  store i32 %134, ptr %45, align 4, !tbaa !9
  %135 = load ptr, ptr %16, align 8, !tbaa !5
  %136 = call i32 @lsame_(ptr noundef %135, ptr noundef @.str)
  store i32 %136, ptr %50, align 4, !tbaa !9
  %137 = load ptr, ptr %16, align 8, !tbaa !5
  %138 = call i32 @lsame_(ptr noundef %137, ptr noundef @.str.4)
  store i32 %138, ptr %62, align 4, !tbaa !9
  %139 = load ptr, ptr %28, align 8, !tbaa !5
  store i32 0, ptr %139, align 4, !tbaa !9
  %140 = load i32, ptr %74, align 4, !tbaa !9
  %141 = icmp ne i32 %140, 0
  br i1 %141, label %147, label %142

142:                                              ; preds = %130
  %143 = load i32, ptr %59, align 4, !tbaa !9
  %144 = icmp ne i32 %143, 0
  br i1 %144, label %147, label %145

145:                                              ; preds = %142
  %146 = load ptr, ptr %28, align 8, !tbaa !5
  store i32 -1, ptr %146, align 4, !tbaa !9
  br label %319

147:                                              ; preds = %142, %130
  %148 = load i32, ptr %45, align 4, !tbaa !9
  %149 = icmp ne i32 %148, 0
  br i1 %149, label %158, label %150

150:                                              ; preds = %147
  %151 = load i32, ptr %50, align 4, !tbaa !9
  %152 = icmp ne i32 %151, 0
  br i1 %152, label %158, label %153

153:                                              ; preds = %150
  %154 = load i32, ptr %62, align 4, !tbaa !9
  %155 = icmp ne i32 %154, 0
  br i1 %155, label %158, label %156

156:                                              ; preds = %153
  %157 = load ptr, ptr %28, align 8, !tbaa !5
  store i32 -2, ptr %157, align 4, !tbaa !9
  br label %318

158:                                              ; preds = %153, %150, %147
  %159 = load ptr, ptr %18, align 8, !tbaa !5
  %160 = load i32, ptr %159, align 4, !tbaa !9
  %161 = icmp slt i32 %160, 0
  br i1 %161, label %162, label %164

162:                                              ; preds = %158
  %163 = load ptr, ptr %28, align 8, !tbaa !5
  store i32 -4, ptr %163, align 4, !tbaa !9
  br label %317

164:                                              ; preds = %158
  %165 = load ptr, ptr %20, align 8, !tbaa !5
  %166 = load i32, ptr %165, align 4, !tbaa !9
  %167 = load ptr, ptr %18, align 8, !tbaa !5
  %168 = load i32, ptr %167, align 4, !tbaa !9
  %169 = icmp sge i32 1, %168
  br i1 %169, label %170, label %171

170:                                              ; preds = %164
  br label %174

171:                                              ; preds = %164
  %172 = load ptr, ptr %18, align 8, !tbaa !5
  %173 = load i32, ptr %172, align 4, !tbaa !9
  br label %174

174:                                              ; preds = %171, %170
  %175 = phi i32 [ 1, %170 ], [ %173, %171 ]
  %176 = icmp slt i32 %166, %175
  br i1 %176, label %177, label %179

177:                                              ; preds = %174
  %178 = load ptr, ptr %28, align 8, !tbaa !5
  store i32 -6, ptr %178, align 4, !tbaa !9
  br label %316

179:                                              ; preds = %174
  %180 = load ptr, ptr %22, align 8, !tbaa !5
  %181 = load i32, ptr %180, align 4, !tbaa !9
  %182 = icmp slt i32 %181, 1
  br i1 %182, label %192, label %183

183:                                              ; preds = %179
  %184 = load i32, ptr %59, align 4, !tbaa !9
  %185 = icmp ne i32 %184, 0
  br i1 %185, label %186, label %194

186:                                              ; preds = %183
  %187 = load ptr, ptr %22, align 8, !tbaa !5
  %188 = load i32, ptr %187, align 4, !tbaa !9
  %189 = load ptr, ptr %18, align 8, !tbaa !5
  %190 = load i32, ptr %189, align 4, !tbaa !9
  %191 = icmp slt i32 %188, %190
  br i1 %191, label %192, label %194

192:                                              ; preds = %186, %179
  %193 = load ptr, ptr %28, align 8, !tbaa !5
  store i32 -8, ptr %193, align 4, !tbaa !9
  br label %315

194:                                              ; preds = %186, %183
  %195 = load ptr, ptr %24, align 8, !tbaa !5
  %196 = load i32, ptr %195, align 4, !tbaa !9
  %197 = icmp slt i32 %196, 1
  br i1 %197, label %207, label %198

198:                                              ; preds = %194
  %199 = load i32, ptr %74, align 4, !tbaa !9
  %200 = icmp ne i32 %199, 0
  br i1 %200, label %201, label %209

201:                                              ; preds = %198
  %202 = load ptr, ptr %24, align 8, !tbaa !5
  %203 = load i32, ptr %202, align 4, !tbaa !9
  %204 = load ptr, ptr %18, align 8, !tbaa !5
  %205 = load i32, ptr %204, align 4, !tbaa !9
  %206 = icmp slt i32 %203, %205
  br i1 %206, label %207, label %209

207:                                              ; preds = %201, %194
  %208 = load ptr, ptr %28, align 8, !tbaa !5
  store i32 -10, ptr %208, align 4, !tbaa !9
  br label %314

209:                                              ; preds = %201, %198
  %210 = load i32, ptr %62, align 4, !tbaa !9
  %211 = icmp ne i32 %210, 0
  br i1 %211, label %212, label %301

212:                                              ; preds = %209
  %213 = load ptr, ptr %26, align 8, !tbaa !5
  store i32 0, ptr %213, align 4, !tbaa !9
  store i32 0, ptr %44, align 4, !tbaa !9
  %214 = load ptr, ptr %18, align 8, !tbaa !5
  %215 = load i32, ptr %214, align 4, !tbaa !9
  store i32 %215, ptr %35, align 4, !tbaa !9
  store i32 1, ptr %54, align 4, !tbaa !9
  br label %216

216:                                              ; preds = %297, %212
  %217 = load i32, ptr %54, align 4, !tbaa !9
  %218 = load i32, ptr %35, align 4, !tbaa !9
  %219 = icmp sle i32 %217, %218
  br i1 %219, label %220, label %300

220:                                              ; preds = %216
  %221 = load i32, ptr %44, align 4, !tbaa !9
  %222 = icmp ne i32 %221, 0
  br i1 %222, label %223, label %228

223:                                              ; preds = %220
  store i32 0, ptr %44, align 4, !tbaa !9
  %224 = load ptr, ptr %17, align 8, !tbaa !5
  %225 = load i32, ptr %54, align 4, !tbaa !9
  %226 = sext i32 %225 to i64
  %227 = getelementptr inbounds i32, ptr %224, i64 %226
  store i32 0, ptr %227, align 4, !tbaa !9
  br label %296

228:                                              ; preds = %220
  %229 = load i32, ptr %54, align 4, !tbaa !9
  %230 = load ptr, ptr %18, align 8, !tbaa !5
  %231 = load i32, ptr %230, align 4, !tbaa !9
  %232 = icmp slt i32 %229, %231
  br i1 %232, label %233, label %282

233:                                              ; preds = %228
  %234 = load ptr, ptr %19, align 8, !tbaa !5
  %235 = load i32, ptr %54, align 4, !tbaa !9
  %236 = add nsw i32 %235, 1
  %237 = load i32, ptr %54, align 4, !tbaa !9
  %238 = load i32, ptr %29, align 4, !tbaa !9
  %239 = mul nsw i32 %237, %238
  %240 = add nsw i32 %236, %239
  %241 = sext i32 %240 to i64
  %242 = getelementptr inbounds double, ptr %234, i64 %241
  %243 = load double, ptr %242, align 8, !tbaa !11
  %244 = fcmp oeq double %243, 0.000000e+00
  br i1 %244, label %245, label %257

245:                                              ; preds = %233
  %246 = load ptr, ptr %17, align 8, !tbaa !5
  %247 = load i32, ptr %54, align 4, !tbaa !9
  %248 = sext i32 %247 to i64
  %249 = getelementptr inbounds i32, ptr %246, i64 %248
  %250 = load i32, ptr %249, align 4, !tbaa !9
  %251 = icmp ne i32 %250, 0
  br i1 %251, label %252, label %256

252:                                              ; preds = %245
  %253 = load ptr, ptr %26, align 8, !tbaa !5
  %254 = load i32, ptr %253, align 4, !tbaa !9
  %255 = add nsw i32 %254, 1
  store i32 %255, ptr %253, align 4, !tbaa !9
  br label %256

256:                                              ; preds = %252, %245
  br label %281

257:                                              ; preds = %233
  store i32 1, ptr %44, align 4, !tbaa !9
  %258 = load ptr, ptr %17, align 8, !tbaa !5
  %259 = load i32, ptr %54, align 4, !tbaa !9
  %260 = sext i32 %259 to i64
  %261 = getelementptr inbounds i32, ptr %258, i64 %260
  %262 = load i32, ptr %261, align 4, !tbaa !9
  %263 = icmp ne i32 %262, 0
  br i1 %263, label %272, label %264

264:                                              ; preds = %257
  %265 = load ptr, ptr %17, align 8, !tbaa !5
  %266 = load i32, ptr %54, align 4, !tbaa !9
  %267 = add nsw i32 %266, 1
  %268 = sext i32 %267 to i64
  %269 = getelementptr inbounds i32, ptr %265, i64 %268
  %270 = load i32, ptr %269, align 4, !tbaa !9
  %271 = icmp ne i32 %270, 0
  br i1 %271, label %272, label %280

272:                                              ; preds = %264, %257
  %273 = load ptr, ptr %17, align 8, !tbaa !5
  %274 = load i32, ptr %54, align 4, !tbaa !9
  %275 = sext i32 %274 to i64
  %276 = getelementptr inbounds i32, ptr %273, i64 %275
  store i32 1, ptr %276, align 4, !tbaa !9
  %277 = load ptr, ptr %26, align 8, !tbaa !5
  %278 = load i32, ptr %277, align 4, !tbaa !9
  %279 = add nsw i32 %278, 2
  store i32 %279, ptr %277, align 4, !tbaa !9
  br label %280

280:                                              ; preds = %272, %264
  br label %281

281:                                              ; preds = %280, %256
  br label %295

282:                                              ; preds = %228
  %283 = load ptr, ptr %17, align 8, !tbaa !5
  %284 = load ptr, ptr %18, align 8, !tbaa !5
  %285 = load i32, ptr %284, align 4, !tbaa !9
  %286 = sext i32 %285 to i64
  %287 = getelementptr inbounds i32, ptr %283, i64 %286
  %288 = load i32, ptr %287, align 4, !tbaa !9
  %289 = icmp ne i32 %288, 0
  br i1 %289, label %290, label %294

290:                                              ; preds = %282
  %291 = load ptr, ptr %26, align 8, !tbaa !5
  %292 = load i32, ptr %291, align 4, !tbaa !9
  %293 = add nsw i32 %292, 1
  store i32 %293, ptr %291, align 4, !tbaa !9
  br label %294

294:                                              ; preds = %290, %282
  br label %295

295:                                              ; preds = %294, %281
  br label %296

296:                                              ; preds = %295, %223
  br label %297

297:                                              ; preds = %296
  %298 = load i32, ptr %54, align 4, !tbaa !9
  %299 = add nsw i32 %298, 1
  store i32 %299, ptr %54, align 4, !tbaa !9
  br label %216, !llvm.loop !13

300:                                              ; preds = %216
  br label %305

301:                                              ; preds = %209
  %302 = load ptr, ptr %18, align 8, !tbaa !5
  %303 = load i32, ptr %302, align 4, !tbaa !9
  %304 = load ptr, ptr %26, align 8, !tbaa !5
  store i32 %303, ptr %304, align 4, !tbaa !9
  br label %305

305:                                              ; preds = %301, %300
  %306 = load ptr, ptr %25, align 8, !tbaa !5
  %307 = load i32, ptr %306, align 4, !tbaa !9
  %308 = load ptr, ptr %26, align 8, !tbaa !5
  %309 = load i32, ptr %308, align 4, !tbaa !9
  %310 = icmp slt i32 %307, %309
  br i1 %310, label %311, label %313

311:                                              ; preds = %305
  %312 = load ptr, ptr %28, align 8, !tbaa !5
  store i32 -11, ptr %312, align 4, !tbaa !9
  br label %313

313:                                              ; preds = %311, %305
  br label %314

314:                                              ; preds = %313, %207
  br label %315

315:                                              ; preds = %314, %192
  br label %316

316:                                              ; preds = %315, %177
  br label %317

317:                                              ; preds = %316, %162
  br label %318

318:                                              ; preds = %317, %156
  br label %319

319:                                              ; preds = %318, %145
  %320 = load ptr, ptr %28, align 8, !tbaa !5
  %321 = load i32, ptr %320, align 4, !tbaa !9
  %322 = icmp ne i32 %321, 0
  br i1 %322, label %323, label %328

323:                                              ; preds = %319
  %324 = load ptr, ptr %28, align 8, !tbaa !5
  %325 = load i32, ptr %324, align 4, !tbaa !9
  %326 = sub nsw i32 0, %325
  store i32 %326, ptr %35, align 4, !tbaa !9
  %327 = call i32 @xerbla_(ptr noundef @.str.5, ptr noundef %35, i32 noundef 6)
  store i32 1, ptr %78, align 4
  br label %3739

328:                                              ; preds = %319
  %329 = load ptr, ptr %18, align 8, !tbaa !5
  %330 = load i32, ptr %329, align 4, !tbaa !9
  %331 = icmp eq i32 %330, 0
  br i1 %331, label %332, label %333

332:                                              ; preds = %328
  store i32 1, ptr %78, align 4
  br label %3739

333:                                              ; preds = %328
  %334 = call double @dlamch_(ptr noundef @.str.6)
  store double %334, ptr %47, align 8, !tbaa !11
  %335 = load double, ptr %47, align 8, !tbaa !11
  %336 = fdiv double 1.000000e+00, %335
  store double %336, ptr %48, align 8, !tbaa !11
  call void @dlabad_(ptr noundef %47, ptr noundef %48)
  %337 = call double @dlamch_(ptr noundef @.str.7)
  store double %337, ptr %77, align 8, !tbaa !11
  %338 = load double, ptr %47, align 8, !tbaa !11
  %339 = load ptr, ptr %18, align 8, !tbaa !5
  %340 = load i32, ptr %339, align 4, !tbaa !9
  %341 = sitofp i32 %340 to double
  %342 = load double, ptr %77, align 8, !tbaa !11
  %343 = fdiv double %341, %342
  %344 = fmul double %338, %343
  store double %344, ptr %75, align 8, !tbaa !11
  %345 = load double, ptr %77, align 8, !tbaa !11
  %346 = fsub double 1.000000e+00, %345
  %347 = load double, ptr %75, align 8, !tbaa !11
  %348 = fdiv double %346, %347
  store double %348, ptr %73, align 8, !tbaa !11
  %349 = load ptr, ptr %27, align 8, !tbaa !5
  %350 = getelementptr inbounds double, ptr %349, i64 1
  store double 0.000000e+00, ptr %350, align 8, !tbaa !11
  %351 = load ptr, ptr %18, align 8, !tbaa !5
  %352 = load i32, ptr %351, align 4, !tbaa !9
  store i32 %352, ptr %35, align 4, !tbaa !9
  store i32 2, ptr %54, align 4, !tbaa !9
  br label %353

353:                                              ; preds = %397, %333
  %354 = load i32, ptr %54, align 4, !tbaa !9
  %355 = load i32, ptr %35, align 4, !tbaa !9
  %356 = icmp sle i32 %354, %355
  br i1 %356, label %357, label %400

357:                                              ; preds = %353
  %358 = load ptr, ptr %27, align 8, !tbaa !5
  %359 = load i32, ptr %54, align 4, !tbaa !9
  %360 = sext i32 %359 to i64
  %361 = getelementptr inbounds double, ptr %358, i64 %360
  store double 0.000000e+00, ptr %361, align 8, !tbaa !11
  %362 = load i32, ptr %54, align 4, !tbaa !9
  %363 = sub nsw i32 %362, 1
  store i32 %363, ptr %36, align 4, !tbaa !9
  store i32 1, ptr %53, align 4, !tbaa !9
  br label %364

364:                                              ; preds = %393, %357
  %365 = load i32, ptr %53, align 4, !tbaa !9
  %366 = load i32, ptr %36, align 4, !tbaa !9
  %367 = icmp sle i32 %365, %366
  br i1 %367, label %368, label %396

368:                                              ; preds = %364
  %369 = load ptr, ptr %19, align 8, !tbaa !5
  %370 = load i32, ptr %53, align 4, !tbaa !9
  %371 = load i32, ptr %54, align 4, !tbaa !9
  %372 = load i32, ptr %29, align 4, !tbaa !9
  %373 = mul nsw i32 %371, %372
  %374 = add nsw i32 %370, %373
  %375 = sext i32 %374 to i64
  %376 = getelementptr inbounds double, ptr %369, i64 %375
  %377 = load double, ptr %376, align 8, !tbaa !11
  store double %377, ptr %38, align 8, !tbaa !11
  %378 = load double, ptr %38, align 8, !tbaa !11
  %379 = fcmp oge double %378, 0.000000e+00
  br i1 %379, label %380, label %382

380:                                              ; preds = %368
  %381 = load double, ptr %38, align 8, !tbaa !11
  br label %385

382:                                              ; preds = %368
  %383 = load double, ptr %38, align 8, !tbaa !11
  %384 = fneg double %383
  br label %385

385:                                              ; preds = %382, %380
  %386 = phi double [ %381, %380 ], [ %384, %382 ]
  %387 = load ptr, ptr %27, align 8, !tbaa !5
  %388 = load i32, ptr %54, align 4, !tbaa !9
  %389 = sext i32 %388 to i64
  %390 = getelementptr inbounds double, ptr %387, i64 %389
  %391 = load double, ptr %390, align 8, !tbaa !11
  %392 = fadd double %391, %386
  store double %392, ptr %390, align 8, !tbaa !11
  br label %393

393:                                              ; preds = %385
  %394 = load i32, ptr %53, align 4, !tbaa !9
  %395 = add nsw i32 %394, 1
  store i32 %395, ptr %53, align 4, !tbaa !9
  br label %364, !llvm.loop !15

396:                                              ; preds = %364
  br label %397

397:                                              ; preds = %396
  %398 = load i32, ptr %54, align 4, !tbaa !9
  %399 = add nsw i32 %398, 1
  store i32 %399, ptr %54, align 4, !tbaa !9
  br label %353, !llvm.loop !16

400:                                              ; preds = %353
  %401 = load ptr, ptr %18, align 8, !tbaa !5
  %402 = load i32, ptr %401, align 4, !tbaa !9
  %403 = shl i32 %402, 1
  store i32 %403, ptr %65, align 4, !tbaa !9
  %404 = load i32, ptr %74, align 4, !tbaa !9
  %405 = icmp ne i32 %404, 0
  br i1 %405, label %406, label %1838

406:                                              ; preds = %400
  store i32 0, ptr %69, align 4, !tbaa !9
  %407 = load ptr, ptr %26, align 8, !tbaa !5
  %408 = load i32, ptr %407, align 4, !tbaa !9
  store i32 %408, ptr %70, align 4, !tbaa !9
  %409 = load ptr, ptr %18, align 8, !tbaa !5
  %410 = load i32, ptr %409, align 4, !tbaa !9
  store i32 %410, ptr %68, align 4, !tbaa !9
  br label %411

411:                                              ; preds = %1834, %406
  %412 = load i32, ptr %68, align 4, !tbaa !9
  %413 = icmp sge i32 %412, 1
  br i1 %413, label %414, label %1837

414:                                              ; preds = %411
  %415 = load i32, ptr %69, align 4, !tbaa !9
  %416 = icmp eq i32 %415, 1
  br i1 %416, label %417, label %418

417:                                              ; preds = %414
  br label %1825

418:                                              ; preds = %414
  %419 = load i32, ptr %68, align 4, !tbaa !9
  %420 = icmp eq i32 %419, 1
  br i1 %420, label %421, label %422

421:                                              ; preds = %418
  br label %436

422:                                              ; preds = %418
  %423 = load ptr, ptr %19, align 8, !tbaa !5
  %424 = load i32, ptr %68, align 4, !tbaa !9
  %425 = load i32, ptr %68, align 4, !tbaa !9
  %426 = sub nsw i32 %425, 1
  %427 = load i32, ptr %29, align 4, !tbaa !9
  %428 = mul nsw i32 %426, %427
  %429 = add nsw i32 %424, %428
  %430 = sext i32 %429 to i64
  %431 = getelementptr inbounds double, ptr %423, i64 %430
  %432 = load double, ptr %431, align 8, !tbaa !11
  %433 = fcmp oeq double %432, 0.000000e+00
  br i1 %433, label %434, label %435

434:                                              ; preds = %422
  br label %436

435:                                              ; preds = %422
  store i32 -1, ptr %69, align 4, !tbaa !9
  br label %436

436:                                              ; preds = %435, %434, %421
  %437 = load i32, ptr %62, align 4, !tbaa !9
  %438 = icmp ne i32 %437, 0
  br i1 %438, label %439, label %462

439:                                              ; preds = %436
  %440 = load i32, ptr %69, align 4, !tbaa !9
  %441 = icmp eq i32 %440, 0
  br i1 %441, label %442, label %451

442:                                              ; preds = %439
  %443 = load ptr, ptr %17, align 8, !tbaa !5
  %444 = load i32, ptr %68, align 4, !tbaa !9
  %445 = sext i32 %444 to i64
  %446 = getelementptr inbounds i32, ptr %443, i64 %445
  %447 = load i32, ptr %446, align 4, !tbaa !9
  %448 = icmp ne i32 %447, 0
  br i1 %448, label %450, label %449

449:                                              ; preds = %442
  br label %1825

450:                                              ; preds = %442
  br label %461

451:                                              ; preds = %439
  %452 = load ptr, ptr %17, align 8, !tbaa !5
  %453 = load i32, ptr %68, align 4, !tbaa !9
  %454 = sub nsw i32 %453, 1
  %455 = sext i32 %454 to i64
  %456 = getelementptr inbounds i32, ptr %452, i64 %455
  %457 = load i32, ptr %456, align 4, !tbaa !9
  %458 = icmp ne i32 %457, 0
  br i1 %458, label %460, label %459

459:                                              ; preds = %451
  br label %1825

460:                                              ; preds = %451
  br label %461

461:                                              ; preds = %460, %450
  br label %462

462:                                              ; preds = %461, %436
  %463 = load ptr, ptr %19, align 8, !tbaa !5
  %464 = load i32, ptr %68, align 4, !tbaa !9
  %465 = load i32, ptr %68, align 4, !tbaa !9
  %466 = load i32, ptr %29, align 4, !tbaa !9
  %467 = mul nsw i32 %465, %466
  %468 = add nsw i32 %464, %467
  %469 = sext i32 %468 to i64
  %470 = getelementptr inbounds double, ptr %463, i64 %469
  %471 = load double, ptr %470, align 8, !tbaa !11
  store double %471, ptr %72, align 8, !tbaa !11
  store double 0.000000e+00, ptr %71, align 8, !tbaa !11
  %472 = load i32, ptr %69, align 4, !tbaa !9
  %473 = icmp ne i32 %472, 0
  br i1 %473, label %474, label %516

474:                                              ; preds = %462
  %475 = load ptr, ptr %19, align 8, !tbaa !5
  %476 = load i32, ptr %68, align 4, !tbaa !9
  %477 = load i32, ptr %68, align 4, !tbaa !9
  %478 = sub nsw i32 %477, 1
  %479 = load i32, ptr %29, align 4, !tbaa !9
  %480 = mul nsw i32 %478, %479
  %481 = add nsw i32 %476, %480
  %482 = sext i32 %481 to i64
  %483 = getelementptr inbounds double, ptr %475, i64 %482
  %484 = load double, ptr %483, align 8, !tbaa !11
  store double %484, ptr %38, align 8, !tbaa !11
  %485 = load double, ptr %38, align 8, !tbaa !11
  %486 = fcmp oge double %485, 0.000000e+00
  br i1 %486, label %487, label %489

487:                                              ; preds = %474
  %488 = load double, ptr %38, align 8, !tbaa !11
  br label %492

489:                                              ; preds = %474
  %490 = load double, ptr %38, align 8, !tbaa !11
  %491 = fneg double %490
  br label %492

492:                                              ; preds = %489, %487
  %493 = phi double [ %488, %487 ], [ %491, %489 ]
  %494 = call double @sqrt(double noundef %493) #4
  %495 = load ptr, ptr %19, align 8, !tbaa !5
  %496 = load i32, ptr %68, align 4, !tbaa !9
  %497 = sub nsw i32 %496, 1
  %498 = load i32, ptr %68, align 4, !tbaa !9
  %499 = load i32, ptr %29, align 4, !tbaa !9
  %500 = mul nsw i32 %498, %499
  %501 = add nsw i32 %497, %500
  %502 = sext i32 %501 to i64
  %503 = getelementptr inbounds double, ptr %495, i64 %502
  %504 = load double, ptr %503, align 8, !tbaa !11
  store double %504, ptr %39, align 8, !tbaa !11
  %505 = load double, ptr %39, align 8, !tbaa !11
  %506 = fcmp oge double %505, 0.000000e+00
  br i1 %506, label %507, label %509

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

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

512:                                              ; preds = %509, %507
  %513 = phi double [ %508, %507 ], [ %511, %509 ]
  %514 = call double @sqrt(double noundef %513) #4
  %515 = fmul double %494, %514
  store double %515, ptr %71, align 8, !tbaa !11
  br label %516

516:                                              ; preds = %512, %462
  %517 = load double, ptr %77, align 8, !tbaa !11
  %518 = load double, ptr %72, align 8, !tbaa !11
  %519 = fcmp oge double %518, 0.000000e+00
  br i1 %519, label %520, label %522

520:                                              ; preds = %516
  %521 = load double, ptr %72, align 8, !tbaa !11
  br label %525

522:                                              ; preds = %516
  %523 = load double, ptr %72, align 8, !tbaa !11
  %524 = fneg double %523
  br label %525

525:                                              ; preds = %522, %520
  %526 = phi double [ %521, %520 ], [ %524, %522 ]
  %527 = load double, ptr %71, align 8, !tbaa !11
  %528 = fcmp oge double %527, 0.000000e+00
  br i1 %528, label %529, label %531

529:                                              ; preds = %525
  %530 = load double, ptr %71, align 8, !tbaa !11
  br label %534

531:                                              ; preds = %525
  %532 = load double, ptr %71, align 8, !tbaa !11
  %533 = fneg double %532
  br label %534

534:                                              ; preds = %531, %529
  %535 = phi double [ %530, %529 ], [ %533, %531 ]
  %536 = fadd double %526, %535
  %537 = fmul double %517, %536
  store double %537, ptr %38, align 8, !tbaa !11
  %538 = load double, ptr %38, align 8, !tbaa !11
  %539 = load double, ptr %75, align 8, !tbaa !11
  %540 = fcmp oge double %538, %539
  br i1 %540, label %541, label %543

541:                                              ; preds = %534
  %542 = load double, ptr %38, align 8, !tbaa !11
  br label %545

543:                                              ; preds = %534
  %544 = load double, ptr %75, align 8, !tbaa !11
  br label %545

545:                                              ; preds = %543, %541
  %546 = phi double [ %542, %541 ], [ %544, %543 ]
  store double %546, ptr %49, align 8, !tbaa !11
  %547 = load i32, ptr %69, align 4, !tbaa !9
  %548 = icmp eq i32 %547, 0
  br i1 %548, label %549, label %981

549:                                              ; preds = %545
  %550 = load ptr, ptr %27, align 8, !tbaa !5
  %551 = load i32, ptr %68, align 4, !tbaa !9
  %552 = load ptr, ptr %18, align 8, !tbaa !5
  %553 = load i32, ptr %552, align 4, !tbaa !9
  %554 = add nsw i32 %551, %553
  %555 = sext i32 %554 to i64
  %556 = getelementptr inbounds double, ptr %550, i64 %555
  store double 1.000000e+00, ptr %556, align 8, !tbaa !11
  %557 = load i32, ptr %68, align 4, !tbaa !9
  %558 = sub nsw i32 %557, 1
  store i32 %558, ptr %35, align 4, !tbaa !9
  store i32 1, ptr %55, align 4, !tbaa !9
  br label %559

559:                                              ; preds = %581, %549
  %560 = load i32, ptr %55, align 4, !tbaa !9
  %561 = load i32, ptr %35, align 4, !tbaa !9
  %562 = icmp sle i32 %560, %561
  br i1 %562, label %563, label %584

563:                                              ; preds = %559
  %564 = load ptr, ptr %19, align 8, !tbaa !5
  %565 = load i32, ptr %55, align 4, !tbaa !9
  %566 = load i32, ptr %68, align 4, !tbaa !9
  %567 = load i32, ptr %29, align 4, !tbaa !9
  %568 = mul nsw i32 %566, %567
  %569 = add nsw i32 %565, %568
  %570 = sext i32 %569 to i64
  %571 = getelementptr inbounds double, ptr %564, i64 %570
  %572 = load double, ptr %571, align 8, !tbaa !11
  %573 = fneg double %572
  %574 = load ptr, ptr %27, align 8, !tbaa !5
  %575 = load i32, ptr %55, align 4, !tbaa !9
  %576 = load ptr, ptr %18, align 8, !tbaa !5
  %577 = load i32, ptr %576, align 4, !tbaa !9
  %578 = add nsw i32 %575, %577
  %579 = sext i32 %578 to i64
  %580 = getelementptr inbounds double, ptr %574, i64 %579
  store double %573, ptr %580, align 8, !tbaa !11
  br label %581

581:                                              ; preds = %563
  %582 = load i32, ptr %55, align 4, !tbaa !9
  %583 = add nsw i32 %582, 1
  store i32 %583, ptr %55, align 4, !tbaa !9
  br label %559, !llvm.loop !17

584:                                              ; preds = %559
  %585 = load i32, ptr %68, align 4, !tbaa !9
  %586 = sub nsw i32 %585, 1
  store i32 %586, ptr %52, align 4, !tbaa !9
  %587 = load i32, ptr %68, align 4, !tbaa !9
  %588 = sub nsw i32 %587, 1
  store i32 %588, ptr %54, align 4, !tbaa !9
  br label %589

589:                                              ; preds = %836, %584
  %590 = load i32, ptr %54, align 4, !tbaa !9
  %591 = icmp sge i32 %590, 1
  br i1 %591, label %592, label %839

592:                                              ; preds = %589
  %593 = load i32, ptr %54, align 4, !tbaa !9
  %594 = load i32, ptr %52, align 4, !tbaa !9
  %595 = icmp sgt i32 %593, %594
  br i1 %595, label %596, label %597

596:                                              ; preds = %592
  br label %835

597:                                              ; preds = %592
  %598 = load i32, ptr %54, align 4, !tbaa !9
  store i32 %598, ptr %63, align 4, !tbaa !9
  %599 = load i32, ptr %54, align 4, !tbaa !9
  store i32 %599, ptr %64, align 4, !tbaa !9
  %600 = load i32, ptr %54, align 4, !tbaa !9
  %601 = sub nsw i32 %600, 1
  store i32 %601, ptr %52, align 4, !tbaa !9
  %602 = load i32, ptr %54, align 4, !tbaa !9
  %603 = icmp sgt i32 %602, 1
  br i1 %603, label %604, label %622

604:                                              ; preds = %597
  %605 = load ptr, ptr %19, align 8, !tbaa !5
  %606 = load i32, ptr %54, align 4, !tbaa !9
  %607 = load i32, ptr %54, align 4, !tbaa !9
  %608 = sub nsw i32 %607, 1
  %609 = load i32, ptr %29, align 4, !tbaa !9
  %610 = mul nsw i32 %608, %609
  %611 = add nsw i32 %606, %610
  %612 = sext i32 %611 to i64
  %613 = getelementptr inbounds double, ptr %605, i64 %612
  %614 = load double, ptr %613, align 8, !tbaa !11
  %615 = fcmp une double %614, 0.000000e+00
  br i1 %615, label %616, label %621

616:                                              ; preds = %604
  %617 = load i32, ptr %54, align 4, !tbaa !9
  %618 = sub nsw i32 %617, 1
  store i32 %618, ptr %63, align 4, !tbaa !9
  %619 = load i32, ptr %54, align 4, !tbaa !9
  %620 = sub nsw i32 %619, 2
  store i32 %620, ptr %52, align 4, !tbaa !9
  br label %621

621:                                              ; preds = %616, %604
  br label %622

622:                                              ; preds = %621, %597
  %623 = load i32, ptr %63, align 4, !tbaa !9
  %624 = load i32, ptr %64, align 4, !tbaa !9
  %625 = icmp eq i32 %623, %624
  br i1 %625, label %626, label %704

626:                                              ; preds = %622
  %627 = load ptr, ptr %19, align 8, !tbaa !5
  %628 = load i32, ptr %54, align 4, !tbaa !9
  %629 = load i32, ptr %54, align 4, !tbaa !9
  %630 = load i32, ptr %29, align 4, !tbaa !9
  %631 = mul nsw i32 %629, %630
  %632 = add nsw i32 %628, %631
  %633 = sext i32 %632 to i64
  %634 = getelementptr inbounds double, ptr %627, i64 %633
  %635 = load ptr, ptr %20, align 8, !tbaa !5
  %636 = load ptr, ptr %27, align 8, !tbaa !5
  %637 = load i32, ptr %54, align 4, !tbaa !9
  %638 = load ptr, ptr %18, align 8, !tbaa !5
  %639 = load i32, ptr %638, align 4, !tbaa !9
  %640 = add nsw i32 %637, %639
  %641 = sext i32 %640 to i64
  %642 = getelementptr inbounds double, ptr %636, i64 %641
  %643 = load ptr, ptr %18, align 8, !tbaa !5
  %644 = getelementptr inbounds [4 x double], ptr %57, i64 0, i64 0
  call void @dlaln2_(ptr noundef @c_false, ptr noundef @c__1, ptr noundef @c__1, ptr noundef %49, ptr noundef @c_b22, ptr noundef %634, ptr noundef %635, ptr noundef @c_b22, ptr noundef @c_b22, ptr noundef %642, ptr noundef %643, ptr noundef %72, ptr noundef @c_b25, ptr noundef %644, ptr noundef @c__2, ptr noundef %56, ptr noundef %66, ptr noundef %46)
  %645 = load double, ptr %66, align 8, !tbaa !11
  %646 = fcmp ogt double %645, 1.000000e+00
  br i1 %646, label %647, label %666

647:                                              ; preds = %626
  %648 = load ptr, ptr %27, align 8, !tbaa !5
  %649 = load i32, ptr %54, align 4, !tbaa !9
  %650 = sext i32 %649 to i64
  %651 = getelementptr inbounds double, ptr %648, i64 %650
  %652 = load double, ptr %651, align 8, !tbaa !11
  %653 = load double, ptr %73, align 8, !tbaa !11
  %654 = load double, ptr %66, align 8, !tbaa !11
  %655 = fdiv double %653, %654
  %656 = fcmp ogt double %652, %655
  br i1 %656, label %657, label %665

657:                                              ; preds = %647
  %658 = load double, ptr %66, align 8, !tbaa !11
  %659 = getelementptr inbounds [4 x double], ptr %57, i64 0, i64 0
  %660 = load double, ptr %659, align 16, !tbaa !11
  %661 = fdiv double %660, %658
  store double %661, ptr %659, align 16, !tbaa !11
  %662 = load double, ptr %66, align 8, !tbaa !11
  %663 = load double, ptr %56, align 8, !tbaa !11
  %664 = fdiv double %663, %662
  store double %664, ptr %56, align 8, !tbaa !11
  br label %665

665:                                              ; preds = %657, %647
  br label %666

666:                                              ; preds = %665, %626
  %667 = load double, ptr %56, align 8, !tbaa !11
  %668 = fcmp une double %667, 1.000000e+00
  br i1 %668, label %669, label %676

669:                                              ; preds = %666
  %670 = load ptr, ptr %27, align 8, !tbaa !5
  %671 = load ptr, ptr %18, align 8, !tbaa !5
  %672 = load i32, ptr %671, align 4, !tbaa !9
  %673 = add nsw i32 %672, 1
  %674 = sext i32 %673 to i64
  %675 = getelementptr inbounds double, ptr %670, i64 %674
  call void @dscal_(ptr noundef %68, ptr noundef %56, ptr noundef %675, ptr noundef @c__1)
  br label %676

676:                                              ; preds = %669, %666
  %677 = getelementptr inbounds [4 x double], ptr %57, i64 0, i64 0
  %678 = load double, ptr %677, align 16, !tbaa !11
  %679 = load ptr, ptr %27, align 8, !tbaa !5
  %680 = load i32, ptr %54, align 4, !tbaa !9
  %681 = load ptr, ptr %18, align 8, !tbaa !5
  %682 = load i32, ptr %681, align 4, !tbaa !9
  %683 = add nsw i32 %680, %682
  %684 = sext i32 %683 to i64
  %685 = getelementptr inbounds double, ptr %679, i64 %684
  store double %678, ptr %685, align 8, !tbaa !11
  %686 = load i32, ptr %54, align 4, !tbaa !9
  %687 = sub nsw i32 %686, 1
  store i32 %687, ptr %35, align 4, !tbaa !9
  %688 = getelementptr inbounds [4 x double], ptr %57, i64 0, i64 0
  %689 = load double, ptr %688, align 16, !tbaa !11
  %690 = fneg double %689
  store double %690, ptr %38, align 8, !tbaa !11
  %691 = load ptr, ptr %19, align 8, !tbaa !5
  %692 = load i32, ptr %54, align 4, !tbaa !9
  %693 = load i32, ptr %29, align 4, !tbaa !9
  %694 = mul nsw i32 %692, %693
  %695 = add nsw i32 %694, 1
  %696 = sext i32 %695 to i64
  %697 = getelementptr inbounds double, ptr %691, i64 %696
  %698 = load ptr, ptr %27, align 8, !tbaa !5
  %699 = load ptr, ptr %18, align 8, !tbaa !5
  %700 = load i32, ptr %699, align 4, !tbaa !9
  %701 = add nsw i32 %700, 1
  %702 = sext i32 %701 to i64
  %703 = getelementptr inbounds double, ptr %698, i64 %702
  call void @daxpy_(ptr noundef %35, ptr noundef %38, ptr noundef %697, ptr noundef @c__1, ptr noundef %703, ptr noundef @c__1)
  br label %834

704:                                              ; preds = %622
  %705 = load ptr, ptr %19, align 8, !tbaa !5
  %706 = load i32, ptr %54, align 4, !tbaa !9
  %707 = sub nsw i32 %706, 1
  %708 = load i32, ptr %54, align 4, !tbaa !9
  %709 = sub nsw i32 %708, 1
  %710 = load i32, ptr %29, align 4, !tbaa !9
  %711 = mul nsw i32 %709, %710
  %712 = add nsw i32 %707, %711
  %713 = sext i32 %712 to i64
  %714 = getelementptr inbounds double, ptr %705, i64 %713
  %715 = load ptr, ptr %20, align 8, !tbaa !5
  %716 = load ptr, ptr %27, align 8, !tbaa !5
  %717 = load i32, ptr %54, align 4, !tbaa !9
  %718 = sub nsw i32 %717, 1
  %719 = load ptr, ptr %18, align 8, !tbaa !5
  %720 = load i32, ptr %719, align 4, !tbaa !9
  %721 = add nsw i32 %718, %720
  %722 = sext i32 %721 to i64
  %723 = getelementptr inbounds double, ptr %716, i64 %722
  %724 = load ptr, ptr %18, align 8, !tbaa !5
  %725 = getelementptr inbounds [4 x double], ptr %57, i64 0, i64 0
  call void @dlaln2_(ptr noundef @c_false, ptr noundef @c__2, ptr noundef @c__1, ptr noundef %49, ptr noundef @c_b22, ptr noundef %714, ptr noundef %715, ptr noundef @c_b22, ptr noundef @c_b22, ptr noundef %723, ptr noundef %724, ptr noundef %72, ptr noundef @c_b25, ptr noundef %725, ptr noundef @c__2, ptr noundef %56, ptr noundef %66, ptr noundef %46)
  %726 = load double, ptr %66, align 8, !tbaa !11
  %727 = fcmp ogt double %726, 1.000000e+00
  br i1 %727, label %728, label %767

728:                                              ; preds = %704
  %729 = load ptr, ptr %27, align 8, !tbaa !5
  %730 = load i32, ptr %54, align 4, !tbaa !9
  %731 = sub nsw i32 %730, 1
  %732 = sext i32 %731 to i64
  %733 = getelementptr inbounds double, ptr %729, i64 %732
  %734 = load double, ptr %733, align 8, !tbaa !11
  store double %734, ptr %38, align 8, !tbaa !11
  %735 = load ptr, ptr %27, align 8, !tbaa !5
  %736 = load i32, ptr %54, align 4, !tbaa !9
  %737 = sext i32 %736 to i64
  %738 = getelementptr inbounds double, ptr %735, i64 %737
  %739 = load double, ptr %738, align 8, !tbaa !11
  store double %739, ptr %39, align 8, !tbaa !11
  %740 = load double, ptr %38, align 8, !tbaa !11
  %741 = load double, ptr %39, align 8, !tbaa !11
  %742 = fcmp oge double %740, %741
  br i1 %742, label %743, label %745

743:                                              ; preds = %728
  %744 = load double, ptr %38, align 8, !tbaa !11
  br label %747

745:                                              ; preds = %728
  %746 = load double, ptr %39, align 8, !tbaa !11
  br label %747

747:                                              ; preds = %745, %743
  %748 = phi double [ %744, %743 ], [ %746, %745 ]
  store double %748, ptr %42, align 8, !tbaa !11
  %749 = load double, ptr %42, align 8, !tbaa !11
  %750 = load double, ptr %73, align 8, !tbaa !11
  %751 = load double, ptr %66, align 8, !tbaa !11
  %752 = fdiv double %750, %751
  %753 = fcmp ogt double %749, %752
  br i1 %753, label %754, label %766

754:                                              ; preds = %747
  %755 = load double, ptr %66, align 8, !tbaa !11
  %756 = getelementptr inbounds [4 x double], ptr %57, i64 0, i64 0
  %757 = load double, ptr %756, align 16, !tbaa !11
  %758 = fdiv double %757, %755
  store double %758, ptr %756, align 16, !tbaa !11
  %759 = load double, ptr %66, align 8, !tbaa !11
  %760 = getelementptr inbounds [4 x double], ptr %57, i64 0, i64 1
  %761 = load double, ptr %760, align 8, !tbaa !11
  %762 = fdiv double %761, %759
  store double %762, ptr %760, align 8, !tbaa !11
  %763 = load double, ptr %66, align 8, !tbaa !11
  %764 = load double, ptr %56, align 8, !tbaa !11
  %765 = fdiv double %764, %763
  store double %765, ptr %56, align 8, !tbaa !11
  br label %766

766:                                              ; preds = %754, %747
  br label %767

767:                                              ; preds = %766, %704
  %768 = load double, ptr %56, align 8, !tbaa !11
  %769 = fcmp une double %768, 1.000000e+00
  br i1 %769, label %770, label %777

770:                                              ; preds = %767
  %771 = load ptr, ptr %27, align 8, !tbaa !5
  %772 = load ptr, ptr %18, align 8, !tbaa !5
  %773 = load i32, ptr %772, align 4, !tbaa !9
  %774 = add nsw i32 %773, 1
  %775 = sext i32 %774 to i64
  %776 = getelementptr inbounds double, ptr %771, i64 %775
  call void @dscal_(ptr noundef %68, ptr noundef %56, ptr noundef %776, ptr noundef @c__1)
  br label %777

777:                                              ; preds = %770, %767
  %778 = getelementptr inbounds [4 x double], ptr %57, i64 0, i64 0
  %779 = load double, ptr %778, align 16, !tbaa !11
  %780 = load ptr, ptr %27, align 8, !tbaa !5
  %781 = load i32, ptr %54, align 4, !tbaa !9
  %782 = sub nsw i32 %781, 1
  %783 = load ptr, ptr %18, align 8, !tbaa !5
  %784 = load i32, ptr %783, align 4, !tbaa !9
  %785 = add nsw i32 %782, %784
  %786 = sext i32 %785 to i64
  %787 = getelementptr inbounds double, ptr %780, i64 %786
  store double %779, ptr %787, align 8, !tbaa !11
  %788 = getelementptr inbounds [4 x double], ptr %57, i64 0, i64 1
  %789 = load double, ptr %788, align 8, !tbaa !11
  %790 = load ptr, ptr %27, align 8, !tbaa !5
  %791 = load i32, ptr %54, align 4, !tbaa !9
  %792 = load ptr, ptr %18, align 8, !tbaa !5
  %793 = load i32, ptr %792, align 4, !tbaa !9
  %794 = add nsw i32 %791, %793
  %795 = sext i32 %794 to i64
  %796 = getelementptr inbounds double, ptr %790, i64 %795
  store double %789, ptr %796, align 8, !tbaa !11
  %797 = load i32, ptr %54, align 4, !tbaa !9
  %798 = sub nsw i32 %797, 2
  store i32 %798, ptr %35, align 4, !tbaa !9
  %799 = getelementptr inbounds [4 x double], ptr %57, i64 0, i64 0
  %800 = load double, ptr %799, align 16, !tbaa !11
  %801 = fneg double %800
  store double %801, ptr %38, align 8, !tbaa !11
  %802 = load ptr, ptr %19, align 8, !tbaa !5
  %803 = load i32, ptr %54, align 4, !tbaa !9
  %804 = sub nsw i32 %803, 1
  %805 = load i32, ptr %29, align 4, !tbaa !9
  %806 = mul nsw i32 %804, %805
  %807 = add nsw i32 %806, 1
  %808 = sext i32 %807 to i64
  %809 = getelementptr inbounds double, ptr %802, i64 %808
  %810 = load ptr, ptr %27, align 8, !tbaa !5
  %811 = load ptr, ptr %18, align 8, !tbaa !5
  %812 = load i32, ptr %811, align 4, !tbaa !9
  %813 = add nsw i32 %812, 1
  %814 = sext i32 %813 to i64
  %815 = getelementptr inbounds double, ptr %810, i64 %814
  call void @daxpy_(ptr noundef %35, ptr noundef %38, ptr noundef %809, ptr noundef @c__1, ptr noundef %815, ptr noundef @c__1)
  %816 = load i32, ptr %54, align 4, !tbaa !9
  %817 = sub nsw i32 %816, 2
  store i32 %817, ptr %35, align 4, !tbaa !9
  %818 = getelementptr inbounds [4 x double], ptr %57, i64 0, i64 1
  %819 = load double, ptr %818, align 8, !tbaa !11
  %820 = fneg double %819
  store double %820, ptr %38, align 8, !tbaa !11
  %821 = load ptr, ptr %19, align 8, !tbaa !5
  %822 = load i32, ptr %54, align 4, !tbaa !9
  %823 = load i32, ptr %29, align 4, !tbaa !9
  %824 = mul nsw i32 %822, %823
  %825 = add nsw i32 %824, 1
  %826 = sext i32 %825 to i64
  %827 = getelementptr inbounds double, ptr %821, i64 %826
  %828 = load ptr, ptr %27, align 8, !tbaa !5
  %829 = load ptr, ptr %18, align 8, !tbaa !5
  %830 = load i32, ptr %829, align 4, !tbaa !9
  %831 = add nsw i32 %830, 1
  %832 = sext i32 %831 to i64
  %833 = getelementptr inbounds double, ptr %828, i64 %832
  call void @daxpy_(ptr noundef %35, ptr noundef %38, ptr noundef %827, ptr noundef @c__1, ptr noundef %833, ptr noundef @c__1)
  br label %834

834:                                              ; preds = %777, %676
  br label %835

835:                                              ; preds = %834, %596
  br label %836

836:                                              ; preds = %835
  %837 = load i32, ptr %54, align 4, !tbaa !9
  %838 = add nsw i32 %837, -1
  store i32 %838, ptr %54, align 4, !tbaa !9
  br label %589, !llvm.loop !18

839:                                              ; preds = %589
  %840 = load i32, ptr %50, align 4, !tbaa !9
  %841 = icmp ne i32 %840, 0
  br i1 %841, label %911, label %842

842:                                              ; preds = %839
  %843 = load ptr, ptr %27, align 8, !tbaa !5
  %844 = load ptr, ptr %18, align 8, !tbaa !5
  %845 = load i32, ptr %844, align 4, !tbaa !9
  %846 = add nsw i32 %845, 1
  %847 = sext i32 %846 to i64
  %848 = getelementptr inbounds double, ptr %843, i64 %847
  %849 = load ptr, ptr %23, align 8, !tbaa !5
  %850 = load i32, ptr %70, align 4, !tbaa !9
  %851 = load i32, ptr %33, align 4, !tbaa !9
  %852 = mul nsw i32 %850, %851
  %853 = add nsw i32 %852, 1
  %854 = sext i32 %853 to i64
  %855 = getelementptr inbounds double, ptr %849, i64 %854
  call void @dcopy_(ptr noundef %68, ptr noundef %848, ptr noundef @c__1, ptr noundef %855, ptr noundef @c__1)
  %856 = load ptr, ptr %23, align 8, !tbaa !5
  %857 = load i32, ptr %70, align 4, !tbaa !9
  %858 = load i32, ptr %33, align 4, !tbaa !9
  %859 = mul nsw i32 %857, %858
  %860 = add nsw i32 %859, 1
  %861 = sext i32 %860 to i64
  %862 = getelementptr inbounds double, ptr %856, i64 %861
  %863 = call i32 @idamax_(ptr noundef %68, ptr noundef %862, ptr noundef @c__1)
  store i32 %863, ptr %67, align 4, !tbaa !9
  %864 = load ptr, ptr %23, align 8, !tbaa !5
  %865 = load i32, ptr %67, align 4, !tbaa !9
  %866 = load i32, ptr %70, align 4, !tbaa !9
  %867 = load i32, ptr %33, align 4, !tbaa !9
  %868 = mul nsw i32 %866, %867
  %869 = add nsw i32 %865, %868
  %870 = sext i32 %869 to i64
  %871 = getelementptr inbounds double, ptr %864, i64 %870
  %872 = load double, ptr %871, align 8, !tbaa !11
  store double %872, ptr %38, align 8, !tbaa !11
  %873 = load double, ptr %38, align 8, !tbaa !11
  %874 = fcmp oge double %873, 0.000000e+00
  br i1 %874, label %875, label %877

875:                                              ; preds = %842
  %876 = load double, ptr %38, align 8, !tbaa !11
  br label %880

877:                                              ; preds = %842
  %878 = load double, ptr %38, align 8, !tbaa !11
  %879 = fneg double %878
  br label %880

880:                                              ; preds = %877, %875
  %881 = phi double [ %876, %875 ], [ %879, %877 ]
  %882 = fdiv double 1.000000e+00, %881
  store double %882, ptr %58, align 8, !tbaa !11
  %883 = load ptr, ptr %23, align 8, !tbaa !5
  %884 = load i32, ptr %70, align 4, !tbaa !9
  %885 = load i32, ptr %33, align 4, !tbaa !9
  %886 = mul nsw i32 %884, %885
  %887 = add nsw i32 %886, 1
  %888 = sext i32 %887 to i64
  %889 = getelementptr inbounds double, ptr %883, i64 %888
  call void @dscal_(ptr noundef %68, ptr noundef %58, ptr noundef %889, ptr noundef @c__1)
  %890 = load ptr, ptr %18, align 8, !tbaa !5
  %891 = load i32, ptr %890, align 4, !tbaa !9
  store i32 %891, ptr %35, align 4, !tbaa !9
  %892 = load i32, ptr %68, align 4, !tbaa !9
  %893 = add nsw i32 %892, 1
  store i32 %893, ptr %55, align 4, !tbaa !9
  br label %894

894:                                              ; preds = %907, %880
  %895 = load i32, ptr %55, align 4, !tbaa !9
  %896 = load i32, ptr %35, align 4, !tbaa !9
  %897 = icmp sle i32 %895, %896
  br i1 %897, label %898, label %910

898:                                              ; preds = %894
  %899 = load ptr, ptr %23, align 8, !tbaa !5
  %900 = load i32, ptr %55, align 4, !tbaa !9
  %901 = load i32, ptr %70, align 4, !tbaa !9
  %902 = load i32, ptr %33, align 4, !tbaa !9
  %903 = mul nsw i32 %901, %902
  %904 = add nsw i32 %900, %903
  %905 = sext i32 %904 to i64
  %906 = getelementptr inbounds double, ptr %899, i64 %905
  store double 0.000000e+00, ptr %906, align 8, !tbaa !11
  br label %907

907:                                              ; preds = %898
  %908 = load i32, ptr %55, align 4, !tbaa !9
  %909 = add nsw i32 %908, 1
  store i32 %909, ptr %55, align 4, !tbaa !9
  br label %894, !llvm.loop !19

910:                                              ; preds = %894
  br label %980

911:                                              ; preds = %839
  %912 = load i32, ptr %68, align 4, !tbaa !9
  %913 = icmp sgt i32 %912, 1
  br i1 %913, label %914, label %943

914:                                              ; preds = %911
  %915 = load i32, ptr %68, align 4, !tbaa !9
  %916 = sub nsw i32 %915, 1
  store i32 %916, ptr %35, align 4, !tbaa !9
  %917 = load ptr, ptr %18, align 8, !tbaa !5
  %918 = load ptr, ptr %23, align 8, !tbaa !5
  %919 = load i32, ptr %34, align 4, !tbaa !9
  %920 = sext i32 %919 to i64
  %921 = getelementptr inbounds double, ptr %918, i64 %920
  %922 = load ptr, ptr %24, align 8, !tbaa !5
  %923 = load ptr, ptr %27, align 8, !tbaa !5
  %924 = load ptr, ptr %18, align 8, !tbaa !5
  %925 = load i32, ptr %924, align 4, !tbaa !9
  %926 = add nsw i32 %925, 1
  %927 = sext i32 %926 to i64
  %928 = getelementptr inbounds double, ptr %923, i64 %927
  %929 = load ptr, ptr %27, align 8, !tbaa !5
  %930 = load i32, ptr %68, align 4, !tbaa !9
  %931 = load ptr, ptr %18, align 8, !tbaa !5
  %932 = load i32, ptr %931, align 4, !tbaa !9
  %933 = add nsw i32 %930, %932
  %934 = sext i32 %933 to i64
  %935 = getelementptr inbounds double, ptr %929, i64 %934
  %936 = load ptr, ptr %23, align 8, !tbaa !5
  %937 = load i32, ptr %68, align 4, !tbaa !9
  %938 = load i32, ptr %33, align 4, !tbaa !9
  %939 = mul nsw i32 %937, %938
  %940 = add nsw i32 %939, 1
  %941 = sext i32 %940 to i64
  %942 = getelementptr inbounds double, ptr %936, i64 %941
  call void @dgemv_(ptr noundef @.str.8, ptr noundef %917, ptr noundef %35, ptr noundef @c_b22, ptr noundef %921, ptr noundef %922, ptr noundef %928, ptr noundef @c__1, ptr noundef %935, ptr noundef %942, ptr noundef @c__1)
  br label %943

943:                                              ; preds = %914, %911
  %944 = load ptr, ptr %18, align 8, !tbaa !5
  %945 = load ptr, ptr %23, align 8, !tbaa !5
  %946 = load i32, ptr %68, align 4, !tbaa !9
  %947 = load i32, ptr %33, align 4, !tbaa !9
  %948 = mul nsw i32 %946, %947
  %949 = add nsw i32 %948, 1
  %950 = sext i32 %949 to i64
  %951 = getelementptr inbounds double, ptr %945, i64 %950
  %952 = call i32 @idamax_(ptr noundef %944, ptr noundef %951, ptr noundef @c__1)
  store i32 %952, ptr %67, align 4, !tbaa !9
  %953 = load ptr, ptr %23, align 8, !tbaa !5
  %954 = load i32, ptr %67, align 4, !tbaa !9
  %955 = load i32, ptr %68, align 4, !tbaa !9
  %956 = load i32, ptr %33, align 4, !tbaa !9
  %957 = mul nsw i32 %955, %956
  %958 = add nsw i32 %954, %957
  %959 = sext i32 %958 to i64
  %960 = getelementptr inbounds double, ptr %953, i64 %959
  %961 = load double, ptr %960, align 8, !tbaa !11
  store double %961, ptr %38, align 8, !tbaa !11
  %962 = load double, ptr %38, align 8, !tbaa !11
  %963 = fcmp oge double %962, 0.000000e+00
  br i1 %963, label %964, label %966

964:                                              ; preds = %943
  %965 = load double, ptr %38, align 8, !tbaa !11
  br label %969

966:                                              ; preds = %943
  %967 = load double, ptr %38, align 8, !tbaa !11
  %968 = fneg double %967
  br label %969

969:                                              ; preds = %966, %964
  %970 = phi double [ %965, %964 ], [ %968, %966 ]
  %971 = fdiv double 1.000000e+00, %970
  store double %971, ptr %58, align 8, !tbaa !11
  %972 = load ptr, ptr %18, align 8, !tbaa !5
  %973 = load ptr, ptr %23, align 8, !tbaa !5
  %974 = load i32, ptr %68, align 4, !tbaa !9
  %975 = load i32, ptr %33, align 4, !tbaa !9
  %976 = mul nsw i32 %974, %975
  %977 = add nsw i32 %976, 1
  %978 = sext i32 %977 to i64
  %979 = getelementptr inbounds double, ptr %973, i64 %978
  call void @dscal_(ptr noundef %972, ptr noundef %58, ptr noundef %979, ptr noundef @c__1)
  br label %980

980:                                              ; preds = %969, %910
  br label %1816

981:                                              ; preds = %545
  %982 = load ptr, ptr %19, align 8, !tbaa !5
  %983 = load i32, ptr %68, align 4, !tbaa !9
  %984 = sub nsw i32 %983, 1
  %985 = load i32, ptr %68, align 4, !tbaa !9
  %986 = load i32, ptr %29, align 4, !tbaa !9
  %987 = mul nsw i32 %985, %986
  %988 = add nsw i32 %984, %987
  %989 = sext i32 %988 to i64
  %990 = getelementptr inbounds double, ptr %982, i64 %989
  %991 = load double, ptr %990, align 8, !tbaa !11
  store double %991, ptr %38, align 8, !tbaa !11
  %992 = load double, ptr %38, align 8, !tbaa !11
  %993 = fcmp oge double %992, 0.000000e+00
  br i1 %993, label %994, label %996

994:                                              ; preds = %981
  %995 = load double, ptr %38, align 8, !tbaa !11
  br label %999

996:                                              ; preds = %981
  %997 = load double, ptr %38, align 8, !tbaa !11
  %998 = fneg double %997
  br label %999

999:                                              ; preds = %996, %994
  %1000 = phi double [ %995, %994 ], [ %998, %996 ]
  %1001 = load ptr, ptr %19, align 8, !tbaa !5
  %1002 = load i32, ptr %68, align 4, !tbaa !9
  %1003 = load i32, ptr %68, align 4, !tbaa !9
  %1004 = sub nsw i32 %1003, 1
  %1005 = load i32, ptr %29, align 4, !tbaa !9
  %1006 = mul nsw i32 %1004, %1005
  %1007 = add nsw i32 %1002, %1006
  %1008 = sext i32 %1007 to i64
  %1009 = getelementptr inbounds double, ptr %1001, i64 %1008
  %1010 = load double, ptr %1009, align 8, !tbaa !11
  store double %1010, ptr %39, align 8, !tbaa !11
  %1011 = load double, ptr %39, align 8, !tbaa !11
  %1012 = fcmp oge double %1011, 0.000000e+00
  br i1 %1012, label %1013, label %1015

1013:                                             ; preds = %999
  %1014 = load double, ptr %39, align 8, !tbaa !11
  br label %1018

1015:                                             ; preds = %999
  %1016 = load double, ptr %39, align 8, !tbaa !11
  %1017 = fneg double %1016
  br label %1018

1018:                                             ; preds = %1015, %1013
  %1019 = phi double [ %1014, %1013 ], [ %1017, %1015 ]
  %1020 = fcmp oge double %1000, %1019
  br i1 %1020, label %1021, label %1048

1021:                                             ; preds = %1018
  %1022 = load ptr, ptr %27, align 8, !tbaa !5
  %1023 = load i32, ptr %68, align 4, !tbaa !9
  %1024 = sub nsw i32 %1023, 1
  %1025 = load ptr, ptr %18, align 8, !tbaa !5
  %1026 = load i32, ptr %1025, align 4, !tbaa !9
  %1027 = add nsw i32 %1024, %1026
  %1028 = sext i32 %1027 to i64
  %1029 = getelementptr inbounds double, ptr %1022, i64 %1028
  store double 1.000000e+00, ptr %1029, align 8, !tbaa !11
  %1030 = load double, ptr %71, align 8, !tbaa !11
  %1031 = load ptr, ptr %19, align 8, !tbaa !5
  %1032 = load i32, ptr %68, align 4, !tbaa !9
  %1033 = sub nsw i32 %1032, 1
  %1034 = load i32, ptr %68, align 4, !tbaa !9
  %1035 = load i32, ptr %29, align 4, !tbaa !9
  %1036 = mul nsw i32 %1034, %1035
  %1037 = add nsw i32 %1033, %1036
  %1038 = sext i32 %1037 to i64
  %1039 = getelementptr inbounds double, ptr %1031, i64 %1038
  %1040 = load double, ptr %1039, align 8, !tbaa !11
  %1041 = fdiv double %1030, %1040
  %1042 = load ptr, ptr %27, align 8, !tbaa !5
  %1043 = load i32, ptr %68, align 4, !tbaa !9
  %1044 = load i32, ptr %65, align 4, !tbaa !9
  %1045 = add nsw i32 %1043, %1044
  %1046 = sext i32 %1045 to i64
  %1047 = getelementptr inbounds double, ptr %1042, i64 %1046
  store double %1041, ptr %1047, align 8, !tbaa !11
  br label %1076

1048:                                             ; preds = %1018
  %1049 = load double, ptr %71, align 8, !tbaa !11
  %1050 = fneg double %1049
  %1051 = load ptr, ptr %19, align 8, !tbaa !5
  %1052 = load i32, ptr %68, align 4, !tbaa !9
  %1053 = load i32, ptr %68, align 4, !tbaa !9
  %1054 = sub nsw i32 %1053, 1
  %1055 = load i32, ptr %29, align 4, !tbaa !9
  %1056 = mul nsw i32 %1054, %1055
  %1057 = add nsw i32 %1052, %1056
  %1058 = sext i32 %1057 to i64
  %1059 = getelementptr inbounds double, ptr %1051, i64 %1058
  %1060 = load double, ptr %1059, align 8, !tbaa !11
  %1061 = fdiv double %1050, %1060
  %1062 = load ptr, ptr %27, align 8, !tbaa !5
  %1063 = load i32, ptr %68, align 4, !tbaa !9
  %1064 = sub nsw i32 %1063, 1
  %1065 = load ptr, ptr %18, align 8, !tbaa !5
  %1066 = load i32, ptr %1065, align 4, !tbaa !9
  %1067 = add nsw i32 %1064, %1066
  %1068 = sext i32 %1067 to i64
  %1069 = getelementptr inbounds double, ptr %1062, i64 %1068
  store double %1061, ptr %1069, align 8, !tbaa !11
  %1070 = load ptr, ptr %27, align 8, !tbaa !5
  %1071 = load i32, ptr %68, align 4, !tbaa !9
  %1072 = load i32, ptr %65, align 4, !tbaa !9
  %1073 = add nsw i32 %1071, %1072
  %1074 = sext i32 %1073 to i64
  %1075 = getelementptr inbounds double, ptr %1070, i64 %1074
  store double 1.000000e+00, ptr %1075, align 8, !tbaa !11
  br label %1076

1076:                                             ; preds = %1048, %1021
  %1077 = load ptr, ptr %27, align 8, !tbaa !5
  %1078 = load i32, ptr %68, align 4, !tbaa !9
  %1079 = load ptr, ptr %18, align 8, !tbaa !5
  %1080 = load i32, ptr %1079, align 4, !tbaa !9
  %1081 = add nsw i32 %1078, %1080
  %1082 = sext i32 %1081 to i64
  %1083 = getelementptr inbounds double, ptr %1077, i64 %1082
  store double 0.000000e+00, ptr %1083, align 8, !tbaa !11
  %1084 = load ptr, ptr %27, align 8, !tbaa !5
  %1085 = load i32, ptr %68, align 4, !tbaa !9
  %1086 = sub nsw i32 %1085, 1
  %1087 = load i32, ptr %65, align 4, !tbaa !9
  %1088 = add nsw i32 %1086, %1087
  %1089 = sext i32 %1088 to i64
  %1090 = getelementptr inbounds double, ptr %1084, i64 %1089
  store double 0.000000e+00, ptr %1090, align 8, !tbaa !11
  %1091 = load i32, ptr %68, align 4, !tbaa !9
  %1092 = sub nsw i32 %1091, 2
  store i32 %1092, ptr %35, align 4, !tbaa !9
  store i32 1, ptr %55, align 4, !tbaa !9
  br label %1093

1093:                                             ; preds = %1150, %1076
  %1094 = load i32, ptr %55, align 4, !tbaa !9
  %1095 = load i32, ptr %35, align 4, !tbaa !9
  %1096 = icmp sle i32 %1094, %1095
  br i1 %1096, label %1097, label %1153

1097:                                             ; preds = %1093
  %1098 = load ptr, ptr %27, align 8, !tbaa !5
  %1099 = load i32, ptr %68, align 4, !tbaa !9
  %1100 = sub nsw i32 %1099, 1
  %1101 = load ptr, ptr %18, align 8, !tbaa !5
  %1102 = load i32, ptr %1101, align 4, !tbaa !9
  %1103 = add nsw i32 %1100, %1102
  %1104 = sext i32 %1103 to i64
  %1105 = getelementptr inbounds double, ptr %1098, i64 %1104
  %1106 = load double, ptr %1105, align 8, !tbaa !11
  %1107 = fneg double %1106
  %1108 = load ptr, ptr %19, align 8, !tbaa !5
  %1109 = load i32, ptr %55, align 4, !tbaa !9
  %1110 = load i32, ptr %68, align 4, !tbaa !9
  %1111 = sub nsw i32 %1110, 1
  %1112 = load i32, ptr %29, align 4, !tbaa !9
  %1113 = mul nsw i32 %1111, %1112
  %1114 = add nsw i32 %1109, %1113
  %1115 = sext i32 %1114 to i64
  %1116 = getelementptr inbounds double, ptr %1108, i64 %1115
  %1117 = load double, ptr %1116, align 8, !tbaa !11
  %1118 = fmul double %1107, %1117
  %1119 = load ptr, ptr %27, align 8, !tbaa !5
  %1120 = load i32, ptr %55, align 4, !tbaa !9
  %1121 = load ptr, ptr %18, align 8, !tbaa !5
  %1122 = load i32, ptr %1121, align 4, !tbaa !9
  %1123 = add nsw i32 %1120, %1122
  %1124 = sext i32 %1123 to i64
  %1125 = getelementptr inbounds double, ptr %1119, i64 %1124
  store double %1118, ptr %1125, align 8, !tbaa !11
  %1126 = load ptr, ptr %27, align 8, !tbaa !5
  %1127 = load i32, ptr %68, align 4, !tbaa !9
  %1128 = load i32, ptr %65, align 4, !tbaa !9
  %1129 = add nsw i32 %1127, %1128
  %1130 = sext i32 %1129 to i64
  %1131 = getelementptr inbounds double, ptr %1126, i64 %1130
  %1132 = load double, ptr %1131, align 8, !tbaa !11
  %1133 = fneg double %1132
  %1134 = load ptr, ptr %19, align 8, !tbaa !5
  %1135 = load i32, ptr %55, align 4, !tbaa !9
  %1136 = load i32, ptr %68, align 4, !tbaa !9
  %1137 = load i32, ptr %29, align 4, !tbaa !9
  %1138 = mul nsw i32 %1136, %1137
  %1139 = add nsw i32 %1135, %1138
  %1140 = sext i32 %1139 to i64
  %1141 = getelementptr inbounds double, ptr %1134, i64 %1140
  %1142 = load double, ptr %1141, align 8, !tbaa !11
  %1143 = fmul double %1133, %1142
  %1144 = load ptr, ptr %27, align 8, !tbaa !5
  %1145 = load i32, ptr %55, align 4, !tbaa !9
  %1146 = load i32, ptr %65, align 4, !tbaa !9
  %1147 = add nsw i32 %1145, %1146
  %1148 = sext i32 %1147 to i64
  %1149 = getelementptr inbounds double, ptr %1144, i64 %1148
  store double %1143, ptr %1149, align 8, !tbaa !11
  br label %1150

1150:                                             ; preds = %1097
  %1151 = load i32, ptr %55, align 4, !tbaa !9
  %1152 = add nsw i32 %1151, 1
  store i32 %1152, ptr %55, align 4, !tbaa !9
  br label %1093, !llvm.loop !20

1153:                                             ; preds = %1093
  %1154 = load i32, ptr %68, align 4, !tbaa !9
  %1155 = sub nsw i32 %1154, 2
  store i32 %1155, ptr %52, align 4, !tbaa !9
  %1156 = load i32, ptr %68, align 4, !tbaa !9
  %1157 = sub nsw i32 %1156, 2
  store i32 %1157, ptr %54, align 4, !tbaa !9
  br label %1158

1158:                                             ; preds = %1506, %1153
  %1159 = load i32, ptr %54, align 4, !tbaa !9
  %1160 = icmp sge i32 %1159, 1
  br i1 %1160, label %1161, label %1509

1161:                                             ; preds = %1158
  %1162 = load i32, ptr %54, align 4, !tbaa !9
  %1163 = load i32, ptr %52, align 4, !tbaa !9
  %1164 = icmp sgt i32 %1162, %1163
  br i1 %1164, label %1165, label %1166

1165:                                             ; preds = %1161
  br label %1505

1166:                                             ; preds = %1161
  %1167 = load i32, ptr %54, align 4, !tbaa !9
  store i32 %1167, ptr %63, align 4, !tbaa !9
  %1168 = load i32, ptr %54, align 4, !tbaa !9
  store i32 %1168, ptr %64, align 4, !tbaa !9
  %1169 = load i32, ptr %54, align 4, !tbaa !9
  %1170 = sub nsw i32 %1169, 1
  store i32 %1170, ptr %52, align 4, !tbaa !9
  %1171 = load i32, ptr %54, align 4, !tbaa !9
  %1172 = icmp sgt i32 %1171, 1
  br i1 %1172, label %1173, label %1191

1173:                                             ; preds = %1166
  %1174 = load ptr, ptr %19, align 8, !tbaa !5
  %1175 = load i32, ptr %54, align 4, !tbaa !9
  %1176 = load i32, ptr %54, align 4, !tbaa !9
  %1177 = sub nsw i32 %1176, 1
  %1178 = load i32, ptr %29, align 4, !tbaa !9
  %1179 = mul nsw i32 %1177, %1178
  %1180 = add nsw i32 %1175, %1179
  %1181 = sext i32 %1180 to i64
  %1182 = getelementptr inbounds double, ptr %1174, i64 %1181
  %1183 = load double, ptr %1182, align 8, !tbaa !11
  %1184 = fcmp une double %1183, 0.000000e+00
  br i1 %1184, label %1185, label %1190

1185:                                             ; preds = %1173
  %1186 = load i32, ptr %54, align 4, !tbaa !9
  %1187 = sub nsw i32 %1186, 1
  store i32 %1187, ptr %63, align 4, !tbaa !9
  %1188 = load i32, ptr %54, align 4, !tbaa !9
  %1189 = sub nsw i32 %1188, 2
  store i32 %1189, ptr %52, align 4, !tbaa !9
  br label %1190

1190:                                             ; preds = %1185, %1173
  br label %1191

1191:                                             ; preds = %1190, %1166
  %1192 = load i32, ptr %63, align 4, !tbaa !9
  %1193 = load i32, ptr %64, align 4, !tbaa !9
  %1194 = icmp eq i32 %1192, %1193
  br i1 %1194, label %1195, label %1307

1195:                                             ; preds = %1191
  %1196 = load ptr, ptr %19, align 8, !tbaa !5
  %1197 = load i32, ptr %54, align 4, !tbaa !9
  %1198 = load i32, ptr %54, align 4, !tbaa !9
  %1199 = load i32, ptr %29, align 4, !tbaa !9
  %1200 = mul nsw i32 %1198, %1199
  %1201 = add nsw i32 %1197, %1200
  %1202 = sext i32 %1201 to i64
  %1203 = getelementptr inbounds double, ptr %1196, i64 %1202
  %1204 = load ptr, ptr %20, align 8, !tbaa !5
  %1205 = load ptr, ptr %27, align 8, !tbaa !5
  %1206 = load i32, ptr %54, align 4, !tbaa !9
  %1207 = load ptr, ptr %18, align 8, !tbaa !5
  %1208 = load i32, ptr %1207, align 4, !tbaa !9
  %1209 = add nsw i32 %1206, %1208
  %1210 = sext i32 %1209 to i64
  %1211 = getelementptr inbounds double, ptr %1205, i64 %1210
  %1212 = load ptr, ptr %18, align 8, !tbaa !5
  %1213 = getelementptr inbounds [4 x double], ptr %57, i64 0, i64 0
  call void @dlaln2_(ptr noundef @c_false, ptr noundef @c__1, ptr noundef @c__2, ptr noundef %49, ptr noundef @c_b22, ptr noundef %1203, ptr noundef %1204, ptr noundef @c_b22, ptr noundef @c_b22, ptr noundef %1211, ptr noundef %1212, ptr noundef %72, ptr noundef %71, ptr noundef %1213, ptr noundef @c__2, ptr noundef %56, ptr noundef %66, ptr noundef %46)
  %1214 = load double, ptr %66, align 8, !tbaa !11
  %1215 = fcmp ogt double %1214, 1.000000e+00
  br i1 %1215, label %1216, label %1239

1216:                                             ; preds = %1195
  %1217 = load ptr, ptr %27, align 8, !tbaa !5
  %1218 = load i32, ptr %54, align 4, !tbaa !9
  %1219 = sext i32 %1218 to i64
  %1220 = getelementptr inbounds double, ptr %1217, i64 %1219
  %1221 = load double, ptr %1220, align 8, !tbaa !11
  %1222 = load double, ptr %73, align 8, !tbaa !11
  %1223 = load double, ptr %66, align 8, !tbaa !11
  %1224 = fdiv double %1222, %1223
  %1225 = fcmp ogt double %1221, %1224
  br i1 %1225, label %1226, label %1238

1226:                                             ; preds = %1216
  %1227 = load double, ptr %66, align 8, !tbaa !11
  %1228 = getelementptr inbounds [4 x double], ptr %57, i64 0, i64 0
  %1229 = load double, ptr %1228, align 16, !tbaa !11
  %1230 = fdiv double %1229, %1227
  store double %1230, ptr %1228, align 16, !tbaa !11
  %1231 = load double, ptr %66, align 8, !tbaa !11
  %1232 = getelementptr inbounds [4 x double], ptr %57, i64 0, i64 2
  %1233 = load double, ptr %1232, align 16, !tbaa !11
  %1234 = fdiv double %1233, %1231
  store double %1234, ptr %1232, align 16, !tbaa !11
  %1235 = load double, ptr %66, align 8, !tbaa !11
  %1236 = load double, ptr %56, align 8, !tbaa !11
  %1237 = fdiv double %1236, %1235
  store double %1237, ptr %56, align 8, !tbaa !11
  br label %1238

1238:                                             ; preds = %1226, %1216
  br label %1239

1239:                                             ; preds = %1238, %1195
  %1240 = load double, ptr %56, align 8, !tbaa !11
  %1241 = fcmp une double %1240, 1.000000e+00
  br i1 %1241, label %1242, label %1254

1242:                                             ; preds = %1239
  %1243 = load ptr, ptr %27, align 8, !tbaa !5
  %1244 = load ptr, ptr %18, align 8, !tbaa !5
  %1245 = load i32, ptr %1244, align 4, !tbaa !9
  %1246 = add nsw i32 %1245, 1
  %1247 = sext i32 %1246 to i64
  %1248 = getelementptr inbounds double, ptr %1243, i64 %1247
  call void @dscal_(ptr noundef %68, ptr noundef %56, ptr noundef %1248, ptr noundef @c__1)
  %1249 = load ptr, ptr %27, align 8, !tbaa !5
  %1250 = load i32, ptr %65, align 4, !tbaa !9
  %1251 = add nsw i32 %1250, 1
  %1252 = sext i32 %1251 to i64
  %1253 = getelementptr inbounds double, ptr %1249, i64 %1252
  call void @dscal_(ptr noundef %68, ptr noundef %56, ptr noundef %1253, ptr noundef @c__1)
  br label %1254

1254:                                             ; preds = %1242, %1239
  %1255 = getelementptr inbounds [4 x double], ptr %57, i64 0, i64 0
  %1256 = load double, ptr %1255, align 16, !tbaa !11
  %1257 = load ptr, ptr %27, align 8, !tbaa !5
  %1258 = load i32, ptr %54, align 4, !tbaa !9
  %1259 = load ptr, ptr %18, align 8, !tbaa !5
  %1260 = load i32, ptr %1259, align 4, !tbaa !9
  %1261 = add nsw i32 %1258, %1260
  %1262 = sext i32 %1261 to i64
  %1263 = getelementptr inbounds double, ptr %1257, i64 %1262
  store double %1256, ptr %1263, align 8, !tbaa !11
  %1264 = getelementptr inbounds [4 x double], ptr %57, i64 0, i64 2
  %1265 = load double, ptr %1264, align 16, !tbaa !11
  %1266 = load ptr, ptr %27, align 8, !tbaa !5
  %1267 = load i32, ptr %54, align 4, !tbaa !9
  %1268 = load i32, ptr %65, align 4, !tbaa !9
  %1269 = add nsw i32 %1267, %1268
  %1270 = sext i32 %1269 to i64
  %1271 = getelementptr inbounds double, ptr %1266, i64 %1270
  store double %1265, ptr %1271, align 8, !tbaa !11
  %1272 = load i32, ptr %54, align 4, !tbaa !9
  %1273 = sub nsw i32 %1272, 1
  store i32 %1273, ptr %35, align 4, !tbaa !9
  %1274 = getelementptr inbounds [4 x double], ptr %57, i64 0, i64 0
  %1275 = load double, ptr %1274, align 16, !tbaa !11
  %1276 = fneg double %1275
  store double %1276, ptr %38, align 8, !tbaa !11
  %1277 = load ptr, ptr %19, align 8, !tbaa !5
  %1278 = load i32, ptr %54, align 4, !tbaa !9
  %1279 = load i32, ptr %29, align 4, !tbaa !9
  %1280 = mul nsw i32 %1278, %1279
  %1281 = add nsw i32 %1280, 1
  %1282 = sext i32 %1281 to i64
  %1283 = getelementptr inbounds double, ptr %1277, i64 %1282
  %1284 = load ptr, ptr %27, align 8, !tbaa !5
  %1285 = load ptr, ptr %18, align 8, !tbaa !5
  %1286 = load i32, ptr %1285, align 4, !tbaa !9
  %1287 = add nsw i32 %1286, 1
  %1288 = sext i32 %1287 to i64
  %1289 = getelementptr inbounds double, ptr %1284, i64 %1288
  call void @daxpy_(ptr noundef %35, ptr noundef %38, ptr noundef %1283, ptr noundef @c__1, ptr noundef %1289, ptr noundef @c__1)
  %1290 = load i32, ptr %54, align 4, !tbaa !9
  %1291 = sub nsw i32 %1290, 1
  store i32 %1291, ptr %35, align 4, !tbaa !9
  %1292 = getelementptr inbounds [4 x double], ptr %57, i64 0, i64 2
  %1293 = load double, ptr %1292, align 16, !tbaa !11
  %1294 = fneg double %1293
  store double %1294, ptr %38, align 8, !tbaa !11
  %1295 = load ptr, ptr %19, align 8, !tbaa !5
  %1296 = load i32, ptr %54, align 4, !tbaa !9
  %1297 = load i32, ptr %29, align 4, !tbaa !9
  %1298 = mul nsw i32 %1296, %1297
  %1299 = add nsw i32 %1298, 1
  %1300 = sext i32 %1299 to i64
  %1301 = getelementptr inbounds double, ptr %1295, i64 %1300
  %1302 = load ptr, ptr %27, align 8, !tbaa !5
  %1303 = load i32, ptr %65, align 4, !tbaa !9
  %1304 = add nsw i32 %1303, 1
  %1305 = sext i32 %1304 to i64
  %1306 = getelementptr inbounds double, ptr %1302, i64 %1305
  call void @daxpy_(ptr noundef %35, ptr noundef %38, ptr noundef %1301, ptr noundef @c__1, ptr noundef %1306, ptr noundef @c__1)
  br label %1504

1307:                                             ; preds = %1191
  %1308 = load ptr, ptr %19, align 8, !tbaa !5
  %1309 = load i32, ptr %54, align 4, !tbaa !9
  %1310 = sub nsw i32 %1309, 1
  %1311 = load i32, ptr %54, align 4, !tbaa !9
  %1312 = sub nsw i32 %1311, 1
  %1313 = load i32, ptr %29, align 4, !tbaa !9
  %1314 = mul nsw i32 %1312, %1313
  %1315 = add nsw i32 %1310, %1314
  %1316 = sext i32 %1315 to i64
  %1317 = getelementptr inbounds double, ptr %1308, i64 %1316
  %1318 = load ptr, ptr %20, align 8, !tbaa !5
  %1319 = load ptr, ptr %27, align 8, !tbaa !5
  %1320 = load i32, ptr %54, align 4, !tbaa !9
  %1321 = sub nsw i32 %1320, 1
  %1322 = load ptr, ptr %18, align 8, !tbaa !5
  %1323 = load i32, ptr %1322, align 4, !tbaa !9
  %1324 = add nsw i32 %1321, %1323
  %1325 = sext i32 %1324 to i64
  %1326 = getelementptr inbounds double, ptr %1319, i64 %1325
  %1327 = load ptr, ptr %18, align 8, !tbaa !5
  %1328 = getelementptr inbounds [4 x double], ptr %57, i64 0, i64 0
  call void @dlaln2_(ptr noundef @c_false, ptr noundef @c__2, ptr noundef @c__2, ptr noundef %49, ptr noundef @c_b22, ptr noundef %1317, ptr noundef %1318, ptr noundef @c_b22, ptr noundef @c_b22, ptr noundef %1326, ptr noundef %1327, ptr noundef %72, ptr noundef %71, ptr noundef %1328, ptr noundef @c__2, ptr noundef %56, ptr noundef %66, ptr noundef %46)
  %1329 = load double, ptr %66, align 8, !tbaa !11
  %1330 = fcmp ogt double %1329, 1.000000e+00
  br i1 %1330, label %1331, label %1380

1331:                                             ; preds = %1307
  %1332 = load ptr, ptr %27, align 8, !tbaa !5
  %1333 = load i32, ptr %54, align 4, !tbaa !9
  %1334 = sub nsw i32 %1333, 1
  %1335 = sext i32 %1334 to i64
  %1336 = getelementptr inbounds double, ptr %1332, i64 %1335
  %1337 = load double, ptr %1336, align 8, !tbaa !11
  store double %1337, ptr %38, align 8, !tbaa !11
  %1338 = load ptr, ptr %27, align 8, !tbaa !5
  %1339 = load i32, ptr %54, align 4, !tbaa !9
  %1340 = sext i32 %1339 to i64
  %1341 = getelementptr inbounds double, ptr %1338, i64 %1340
  %1342 = load double, ptr %1341, align 8, !tbaa !11
  store double %1342, ptr %39, align 8, !tbaa !11
  %1343 = load double, ptr %38, align 8, !tbaa !11
  %1344 = load double, ptr %39, align 8, !tbaa !11
  %1345 = fcmp oge double %1343, %1344
  br i1 %1345, label %1346, label %1348

1346:                                             ; preds = %1331
  %1347 = load double, ptr %38, align 8, !tbaa !11
  br label %1350

1348:                                             ; preds = %1331
  %1349 = load double, ptr %39, align 8, !tbaa !11
  br label %1350

1350:                                             ; preds = %1348, %1346
  %1351 = phi double [ %1347, %1346 ], [ %1349, %1348 ]
  store double %1351, ptr %42, align 8, !tbaa !11
  %1352 = load double, ptr %42, align 8, !tbaa !11
  %1353 = load double, ptr %73, align 8, !tbaa !11
  %1354 = load double, ptr %66, align 8, !tbaa !11
  %1355 = fdiv double %1353, %1354
  %1356 = fcmp ogt double %1352, %1355
  br i1 %1356, label %1357, label %1379

1357:                                             ; preds = %1350
  %1358 = load double, ptr %66, align 8, !tbaa !11
  %1359 = fdiv double 1.000000e+00, %1358
  store double %1359, ptr %76, align 8, !tbaa !11
  %1360 = load double, ptr %76, align 8, !tbaa !11
  %1361 = getelementptr inbounds [4 x double], ptr %57, i64 0, i64 0
  %1362 = load double, ptr %1361, align 16, !tbaa !11
  %1363 = fmul double %1362, %1360
  store double %1363, ptr %1361, align 16, !tbaa !11
  %1364 = load double, ptr %76, align 8, !tbaa !11
  %1365 = getelementptr inbounds [4 x double], ptr %57, i64 0, i64 2
  %1366 = load double, ptr %1365, align 16, !tbaa !11
  %1367 = fmul double %1366, %1364
  store double %1367, ptr %1365, align 16, !tbaa !11
  %1368 = load double, ptr %76, align 8, !tbaa !11
  %1369 = getelementptr inbounds [4 x double], ptr %57, i64 0, i64 1
  %1370 = load double, ptr %1369, align 8, !tbaa !11
  %1371 = fmul double %1370, %1368
  store double %1371, ptr %1369, align 8, !tbaa !11
  %1372 = load double, ptr %76, align 8, !tbaa !11
  %1373 = getelementptr inbounds [4 x double], ptr %57, i64 0, i64 3
  %1374 = load double, ptr %1373, align 8, !tbaa !11
  %1375 = fmul double %1374, %1372
  store double %1375, ptr %1373, align 8, !tbaa !11
  %1376 = load double, ptr %76, align 8, !tbaa !11
  %1377 = load double, ptr %56, align 8, !tbaa !11
  %1378 = fmul double %1377, %1376
  store double %1378, ptr %56, align 8, !tbaa !11
  br label %1379

1379:                                             ; preds = %1357, %1350
  br label %1380

1380:                                             ; preds = %1379, %1307
  %1381 = load double, ptr %56, align 8, !tbaa !11
  %1382 = fcmp une double %1381, 1.000000e+00
  br i1 %1382, label %1383, label %1395

1383:                                             ; preds = %1380
  %1384 = load ptr, ptr %27, align 8, !tbaa !5
  %1385 = load ptr, ptr %18, align 8, !tbaa !5
  %1386 = load i32, ptr %1385, align 4, !tbaa !9
  %1387 = add nsw i32 %1386, 1
  %1388 = sext i32 %1387 to i64
  %1389 = getelementptr inbounds double, ptr %1384, i64 %1388
  call void @dscal_(ptr noundef %68, ptr noundef %56, ptr noundef %1389, ptr noundef @c__1)
  %1390 = load ptr, ptr %27, align 8, !tbaa !5
  %1391 = load i32, ptr %65, align 4, !tbaa !9
  %1392 = add nsw i32 %1391, 1
  %1393 = sext i32 %1392 to i64
  %1394 = getelementptr inbounds double, ptr %1390, i64 %1393
  call void @dscal_(ptr noundef %68, ptr noundef %56, ptr noundef %1394, ptr noundef @c__1)
  br label %1395

1395:                                             ; preds = %1383, %1380
  %1396 = getelementptr inbounds [4 x double], ptr %57, i64 0, i64 0
  %1397 = load double, ptr %1396, align 16, !tbaa !11
  %1398 = load ptr, ptr %27, align 8, !tbaa !5
  %1399 = load i32, ptr %54, align 4, !tbaa !9
  %1400 = sub nsw i32 %1399, 1
  %1401 = load ptr, ptr %18, align 8, !tbaa !5
  %1402 = load i32, ptr %1401, align 4, !tbaa !9
  %1403 = add nsw i32 %1400, %1402
  %1404 = sext i32 %1403 to i64
  %1405 = getelementptr inbounds double, ptr %1398, i64 %1404
  store double %1397, ptr %1405, align 8, !tbaa !11
  %1406 = getelementptr inbounds [4 x double], ptr %57, i64 0, i64 1
  %1407 = load double, ptr %1406, align 8, !tbaa !11
  %1408 = load ptr, ptr %27, align 8, !tbaa !5
  %1409 = load i32, ptr %54, align 4, !tbaa !9
  %1410 = load ptr, ptr %18, align 8, !tbaa !5
  %1411 = load i32, ptr %1410, align 4, !tbaa !9
  %1412 = add nsw i32 %1409, %1411
  %1413 = sext i32 %1412 to i64
  %1414 = getelementptr inbounds double, ptr %1408, i64 %1413
  store double %1407, ptr %1414, align 8, !tbaa !11
  %1415 = getelementptr inbounds [4 x double], ptr %57, i64 0, i64 2
  %1416 = load double, ptr %1415, align 16, !tbaa !11
  %1417 = load ptr, ptr %27, align 8, !tbaa !5
  %1418 = load i32, ptr %54, align 4, !tbaa !9
  %1419 = sub nsw i32 %1418, 1
  %1420 = load i32, ptr %65, align 4, !tbaa !9
  %1421 = add nsw i32 %1419, %1420
  %1422 = sext i32 %1421 to i64
  %1423 = getelementptr inbounds double, ptr %1417, i64 %1422
  store double %1416, ptr %1423, align 8, !tbaa !11
  %1424 = getelementptr inbounds [4 x double], ptr %57, i64 0, i64 3
  %1425 = load double, ptr %1424, align 8, !tbaa !11
  %1426 = load ptr, ptr %27, align 8, !tbaa !5
  %1427 = load i32, ptr %54, align 4, !tbaa !9
  %1428 = load i32, ptr %65, align 4, !tbaa !9
  %1429 = add nsw i32 %1427, %1428
  %1430 = sext i32 %1429 to i64
  %1431 = getelementptr inbounds double, ptr %1426, i64 %1430
  store double %1425, ptr %1431, align 8, !tbaa !11
  %1432 = load i32, ptr %54, align 4, !tbaa !9
  %1433 = sub nsw i32 %1432, 2
  store i32 %1433, ptr %35, align 4, !tbaa !9
  %1434 = getelementptr inbounds [4 x double], ptr %57, i64 0, i64 0
  %1435 = load double, ptr %1434, align 16, !tbaa !11
  %1436 = fneg double %1435
  store double %1436, ptr %38, align 8, !tbaa !11
  %1437 = load ptr, ptr %19, align 8, !tbaa !5
  %1438 = load i32, ptr %54, align 4, !tbaa !9
  %1439 = sub nsw i32 %1438, 1
  %1440 = load i32, ptr %29, align 4, !tbaa !9
  %1441 = mul nsw i32 %1439, %1440
  %1442 = add nsw i32 %1441, 1
  %1443 = sext i32 %1442 to i64
  %1444 = getelementptr inbounds double, ptr %1437, i64 %1443
  %1445 = load ptr, ptr %27, align 8, !tbaa !5
  %1446 = load ptr, ptr %18, align 8, !tbaa !5
  %1447 = load i32, ptr %1446, align 4, !tbaa !9
  %1448 = add nsw i32 %1447, 1
  %1449 = sext i32 %1448 to i64
  %1450 = getelementptr inbounds double, ptr %1445, i64 %1449
  call void @daxpy_(ptr noundef %35, ptr noundef %38, ptr noundef %1444, ptr noundef @c__1, ptr noundef %1450, ptr noundef @c__1)
  %1451 = load i32, ptr %54, align 4, !tbaa !9
  %1452 = sub nsw i32 %1451, 2
  store i32 %1452, ptr %35, align 4, !tbaa !9
  %1453 = getelementptr inbounds [4 x double], ptr %57, i64 0, i64 1
  %1454 = load double, ptr %1453, align 8, !tbaa !11
  %1455 = fneg double %1454
  store double %1455, ptr %38, align 8, !tbaa !11
  %1456 = load ptr, ptr %19, align 8, !tbaa !5
  %1457 = load i32, ptr %54, align 4, !tbaa !9
  %1458 = load i32, ptr %29, align 4, !tbaa !9
  %1459 = mul nsw i32 %1457, %1458
  %1460 = add nsw i32 %1459, 1
  %1461 = sext i32 %1460 to i64
  %1462 = getelementptr inbounds double, ptr %1456, i64 %1461
  %1463 = load ptr, ptr %27, align 8, !tbaa !5
  %1464 = load ptr, ptr %18, align 8, !tbaa !5
  %1465 = load i32, ptr %1464, align 4, !tbaa !9
  %1466 = add nsw i32 %1465, 1
  %1467 = sext i32 %1466 to i64
  %1468 = getelementptr inbounds double, ptr %1463, i64 %1467
  call void @daxpy_(ptr noundef %35, ptr noundef %38, ptr noundef %1462, ptr noundef @c__1, ptr noundef %1468, ptr noundef @c__1)
  %1469 = load i32, ptr %54, align 4, !tbaa !9
  %1470 = sub nsw i32 %1469, 2
  store i32 %1470, ptr %35, align 4, !tbaa !9
  %1471 = getelementptr inbounds [4 x double], ptr %57, i64 0, i64 2
  %1472 = load double, ptr %1471, align 16, !tbaa !11
  %1473 = fneg double %1472
  store double %1473, ptr %38, align 8, !tbaa !11
  %1474 = load ptr, ptr %19, align 8, !tbaa !5
  %1475 = load i32, ptr %54, align 4, !tbaa !9
  %1476 = sub nsw i32 %1475, 1
  %1477 = load i32, ptr %29, align 4, !tbaa !9
  %1478 = mul nsw i32 %1476, %1477
  %1479 = add nsw i32 %1478, 1
  %1480 = sext i32 %1479 to i64
  %1481 = getelementptr inbounds double, ptr %1474, i64 %1480
  %1482 = load ptr, ptr %27, align 8, !tbaa !5
  %1483 = load i32, ptr %65, align 4, !tbaa !9
  %1484 = add nsw i32 %1483, 1
  %1485 = sext i32 %1484 to i64
  %1486 = getelementptr inbounds double, ptr %1482, i64 %1485
  call void @daxpy_(ptr noundef %35, ptr noundef %38, ptr noundef %1481, ptr noundef @c__1, ptr noundef %1486, ptr noundef @c__1)
  %1487 = load i32, ptr %54, align 4, !tbaa !9
  %1488 = sub nsw i32 %1487, 2
  store i32 %1488, ptr %35, align 4, !tbaa !9
  %1489 = getelementptr inbounds [4 x double], ptr %57, i64 0, i64 3
  %1490 = load double, ptr %1489, align 8, !tbaa !11
  %1491 = fneg double %1490
  store double %1491, ptr %38, align 8, !tbaa !11
  %1492 = load ptr, ptr %19, align 8, !tbaa !5
  %1493 = load i32, ptr %54, align 4, !tbaa !9
  %1494 = load i32, ptr %29, align 4, !tbaa !9
  %1495 = mul nsw i32 %1493, %1494
  %1496 = add nsw i32 %1495, 1
  %1497 = sext i32 %1496 to i64
  %1498 = getelementptr inbounds double, ptr %1492, i64 %1497
  %1499 = load ptr, ptr %27, align 8, !tbaa !5
  %1500 = load i32, ptr %65, align 4, !tbaa !9
  %1501 = add nsw i32 %1500, 1
  %1502 = sext i32 %1501 to i64
  %1503 = getelementptr inbounds double, ptr %1499, i64 %1502
  call void @daxpy_(ptr noundef %35, ptr noundef %38, ptr noundef %1498, ptr noundef @c__1, ptr noundef %1503, ptr noundef @c__1)
  br label %1504

1504:                                             ; preds = %1395, %1254
  br label %1505

1505:                                             ; preds = %1504, %1165
  br label %1506

1506:                                             ; preds = %1505
  %1507 = load i32, ptr %54, align 4, !tbaa !9
  %1508 = add nsw i32 %1507, -1
  store i32 %1508, ptr %54, align 4, !tbaa !9
  br label %1158, !llvm.loop !21

1509:                                             ; preds = %1158
  %1510 = load i32, ptr %50, align 4, !tbaa !9
  %1511 = icmp ne i32 %1510, 0
  br i1 %1511, label %1644, label %1512

1512:                                             ; preds = %1509
  %1513 = load ptr, ptr %27, align 8, !tbaa !5
  %1514 = load ptr, ptr %18, align 8, !tbaa !5
  %1515 = load i32, ptr %1514, align 4, !tbaa !9
  %1516 = add nsw i32 %1515, 1
  %1517 = sext i32 %1516 to i64
  %1518 = getelementptr inbounds double, ptr %1513, i64 %1517
  %1519 = load ptr, ptr %23, align 8, !tbaa !5
  %1520 = load i32, ptr %70, align 4, !tbaa !9
  %1521 = sub nsw i32 %1520, 1
  %1522 = load i32, ptr %33, align 4, !tbaa !9
  %1523 = mul nsw i32 %1521, %1522
  %1524 = add nsw i32 %1523, 1
  %1525 = sext i32 %1524 to i64
  %1526 = getelementptr inbounds double, ptr %1519, i64 %1525
  call void @dcopy_(ptr noundef %68, ptr noundef %1518, ptr noundef @c__1, ptr noundef %1526, ptr noundef @c__1)
  %1527 = load ptr, ptr %27, align 8, !tbaa !5
  %1528 = load i32, ptr %65, align 4, !tbaa !9
  %1529 = add nsw i32 %1528, 1
  %1530 = sext i32 %1529 to i64
  %1531 = getelementptr inbounds double, ptr %1527, i64 %1530
  %1532 = load ptr, ptr %23, align 8, !tbaa !5
  %1533 = load i32, ptr %70, align 4, !tbaa !9
  %1534 = load i32, ptr %33, align 4, !tbaa !9
  %1535 = mul nsw i32 %1533, %1534
  %1536 = add nsw i32 %1535, 1
  %1537 = sext i32 %1536 to i64
  %1538 = getelementptr inbounds double, ptr %1532, i64 %1537
  call void @dcopy_(ptr noundef %68, ptr noundef %1531, ptr noundef @c__1, ptr noundef %1538, ptr noundef @c__1)
  store double 0.000000e+00, ptr %43, align 8, !tbaa !11
  %1539 = load i32, ptr %68, align 4, !tbaa !9
  store i32 %1539, ptr %35, align 4, !tbaa !9
  store i32 1, ptr %55, align 4, !tbaa !9
  br label %1540

1540:                                             ; preds = %1593, %1512
  %1541 = load i32, ptr %55, align 4, !tbaa !9
  %1542 = load i32, ptr %35, align 4, !tbaa !9
  %1543 = icmp sle i32 %1541, %1542
  br i1 %1543, label %1544, label %1596

1544:                                             ; preds = %1540
  %1545 = load double, ptr %43, align 8, !tbaa !11
  store double %1545, ptr %40, align 8, !tbaa !11
  %1546 = load ptr, ptr %23, align 8, !tbaa !5
  %1547 = load i32, ptr %55, align 4, !tbaa !9
  %1548 = load i32, ptr %70, align 4, !tbaa !9
  %1549 = sub nsw i32 %1548, 1
  %1550 = load i32, ptr %33, align 4, !tbaa !9
  %1551 = mul nsw i32 %1549, %1550
  %1552 = add nsw i32 %1547, %1551
  %1553 = sext i32 %1552 to i64
  %1554 = getelementptr inbounds double, ptr %1546, i64 %1553
  %1555 = load double, ptr %1554, align 8, !tbaa !11
  store double %1555, ptr %38, align 8, !tbaa !11
  %1556 = load double, ptr %38, align 8, !tbaa !11
  %1557 = fcmp oge double %1556, 0.000000e+00
  br i1 %1557, label %1558, label %1560

1558:                                             ; preds = %1544
  %1559 = load double, ptr %38, align 8, !tbaa !11
  br label %1563

1560:                                             ; preds = %1544
  %1561 = load double, ptr %38, align 8, !tbaa !11
  %1562 = fneg double %1561
  br label %1563

1563:                                             ; preds = %1560, %1558
  %1564 = phi double [ %1559, %1558 ], [ %1562, %1560 ]
  %1565 = load ptr, ptr %23, align 8, !tbaa !5
  %1566 = load i32, ptr %55, align 4, !tbaa !9
  %1567 = load i32, ptr %70, align 4, !tbaa !9
  %1568 = load i32, ptr %33, align 4, !tbaa !9
  %1569 = mul nsw i32 %1567, %1568
  %1570 = add nsw i32 %1566, %1569
  %1571 = sext i32 %1570 to i64
  %1572 = getelementptr inbounds double, ptr %1565, i64 %1571
  %1573 = load double, ptr %1572, align 8, !tbaa !11
  store double %1573, ptr %39, align 8, !tbaa !11
  %1574 = load double, ptr %39, align 8, !tbaa !11
  %1575 = fcmp oge double %1574, 0.000000e+00
  br i1 %1575, label %1576, label %1578

1576:                                             ; preds = %1563
  %1577 = load double, ptr %39, align 8, !tbaa !11
  br label %1581

1578:                                             ; preds = %1563
  %1579 = load double, ptr %39, align 8, !tbaa !11
  %1580 = fneg double %1579
  br label %1581

1581:                                             ; preds = %1578, %1576
  %1582 = phi double [ %1577, %1576 ], [ %1580, %1578 ]
  %1583 = fadd double %1564, %1582
  store double %1583, ptr %41, align 8, !tbaa !11
  %1584 = load double, ptr %40, align 8, !tbaa !11
  %1585 = load double, ptr %41, align 8, !tbaa !11
  %1586 = fcmp oge double %1584, %1585
  br i1 %1586, label %1587, label %1589

1587:                                             ; preds = %1581
  %1588 = load double, ptr %40, align 8, !tbaa !11
  br label %1591

1589:                                             ; preds = %1581
  %1590 = load double, ptr %41, align 8, !tbaa !11
  br label %1591

1591:                                             ; preds = %1589, %1587
  %1592 = phi double [ %1588, %1587 ], [ %1590, %1589 ]
  store double %1592, ptr %43, align 8, !tbaa !11
  br label %1593

1593:                                             ; preds = %1591
  %1594 = load i32, ptr %55, align 4, !tbaa !9
  %1595 = add nsw i32 %1594, 1
  store i32 %1595, ptr %55, align 4, !tbaa !9
  br label %1540, !llvm.loop !22

1596:                                             ; preds = %1540
  %1597 = load double, ptr %43, align 8, !tbaa !11
  %1598 = fdiv double 1.000000e+00, %1597
  store double %1598, ptr %58, align 8, !tbaa !11
  %1599 = load ptr, ptr %23, align 8, !tbaa !5
  %1600 = load i32, ptr %70, align 4, !tbaa !9
  %1601 = sub nsw i32 %1600, 1
  %1602 = load i32, ptr %33, align 4, !tbaa !9
  %1603 = mul nsw i32 %1601, %1602
  %1604 = add nsw i32 %1603, 1
  %1605 = sext i32 %1604 to i64
  %1606 = getelementptr inbounds double, ptr %1599, i64 %1605
  call void @dscal_(ptr noundef %68, ptr noundef %58, ptr noundef %1606, ptr noundef @c__1)
  %1607 = load ptr, ptr %23, align 8, !tbaa !5
  %1608 = load i32, ptr %70, align 4, !tbaa !9
  %1609 = load i32, ptr %33, align 4, !tbaa !9
  %1610 = mul nsw i32 %1608, %1609
  %1611 = add nsw i32 %1610, 1
  %1612 = sext i32 %1611 to i64
  %1613 = getelementptr inbounds double, ptr %1607, i64 %1612
  call void @dscal_(ptr noundef %68, ptr noundef %58, ptr noundef %1613, ptr noundef @c__1)
  %1614 = load ptr, ptr %18, align 8, !tbaa !5
  %1615 = load i32, ptr %1614, align 4, !tbaa !9
  store i32 %1615, ptr %35, align 4, !tbaa !9
  %1616 = load i32, ptr %68, align 4, !tbaa !9
  %1617 = add nsw i32 %1616, 1
  store i32 %1617, ptr %55, align 4, !tbaa !9
  br label %1618

1618:                                             ; preds = %1640, %1596
  %1619 = load i32, ptr %55, align 4, !tbaa !9
  %1620 = load i32, ptr %35, align 4, !tbaa !9
  %1621 = icmp sle i32 %1619, %1620
  br i1 %1621, label %1622, label %1643

1622:                                             ; preds = %1618
  %1623 = load ptr, ptr %23, align 8, !tbaa !5
  %1624 = load i32, ptr %55, align 4, !tbaa !9
  %1625 = load i32, ptr %70, align 4, !tbaa !9
  %1626 = sub nsw i32 %1625, 1
  %1627 = load i32, ptr %33, align 4, !tbaa !9
  %1628 = mul nsw i32 %1626, %1627
  %1629 = add nsw i32 %1624, %1628
  %1630 = sext i32 %1629 to i64
  %1631 = getelementptr inbounds double, ptr %1623, i64 %1630
  store double 0.000000e+00, ptr %1631, align 8, !tbaa !11
  %1632 = load ptr, ptr %23, align 8, !tbaa !5
  %1633 = load i32, ptr %55, align 4, !tbaa !9
  %1634 = load i32, ptr %70, align 4, !tbaa !9
  %1635 = load i32, ptr %33, align 4, !tbaa !9
  %1636 = mul nsw i32 %1634, %1635
  %1637 = add nsw i32 %1633, %1636
  %1638 = sext i32 %1637 to i64
  %1639 = getelementptr inbounds double, ptr %1632, i64 %1638
  store double 0.000000e+00, ptr %1639, align 8, !tbaa !11
  br label %1640

1640:                                             ; preds = %1622
  %1641 = load i32, ptr %55, align 4, !tbaa !9
  %1642 = add nsw i32 %1641, 1
  store i32 %1642, ptr %55, align 4, !tbaa !9
  br label %1618, !llvm.loop !23

1643:                                             ; preds = %1618
  br label %1815

1644:                                             ; preds = %1509
  %1645 = load i32, ptr %68, align 4, !tbaa !9
  %1646 = icmp sgt i32 %1645, 2
  br i1 %1646, label %1647, label %1704

1647:                                             ; preds = %1644
  %1648 = load i32, ptr %68, align 4, !tbaa !9
  %1649 = sub nsw i32 %1648, 2
  store i32 %1649, ptr %35, align 4, !tbaa !9
  %1650 = load ptr, ptr %18, align 8, !tbaa !5
  %1651 = load ptr, ptr %23, align 8, !tbaa !5
  %1652 = load i32, ptr %34, align 4, !tbaa !9
  %1653 = sext i32 %1652 to i64
  %1654 = getelementptr inbounds double, ptr %1651, i64 %1653
  %1655 = load ptr, ptr %24, align 8, !tbaa !5
  %1656 = load ptr, ptr %27, align 8, !tbaa !5
  %1657 = load ptr, ptr %18, align 8, !tbaa !5
  %1658 = load i32, ptr %1657, align 4, !tbaa !9
  %1659 = add nsw i32 %1658, 1
  %1660 = sext i32 %1659 to i64
  %1661 = getelementptr inbounds double, ptr %1656, i64 %1660
  %1662 = load ptr, ptr %27, align 8, !tbaa !5
  %1663 = load i32, ptr %68, align 4, !tbaa !9
  %1664 = sub nsw i32 %1663, 1
  %1665 = load ptr, ptr %18, align 8, !tbaa !5
  %1666 = load i32, ptr %1665, align 4, !tbaa !9
  %1667 = add nsw i32 %1664, %1666
  %1668 = sext i32 %1667 to i64
  %1669 = getelementptr inbounds double, ptr %1662, i64 %1668
  %1670 = load ptr, ptr %23, align 8, !tbaa !5
  %1671 = load i32, ptr %68, align 4, !tbaa !9
  %1672 = sub nsw i32 %1671, 1
  %1673 = load i32, ptr %33, align 4, !tbaa !9
  %1674 = mul nsw i32 %1672, %1673
  %1675 = add nsw i32 %1674, 1
  %1676 = sext i32 %1675 to i64
  %1677 = getelementptr inbounds double, ptr %1670, i64 %1676
  call void @dgemv_(ptr noundef @.str.8, ptr noundef %1650, ptr noundef %35, ptr noundef @c_b22, ptr noundef %1654, ptr noundef %1655, ptr noundef %1661, ptr noundef @c__1, ptr noundef %1669, ptr noundef %1677, ptr noundef @c__1)
  %1678 = load i32, ptr %68, align 4, !tbaa !9
  %1679 = sub nsw i32 %1678, 2
  store i32 %1679, ptr %35, align 4, !tbaa !9
  %1680 = load ptr, ptr %18, align 8, !tbaa !5
  %1681 = load ptr, ptr %23, align 8, !tbaa !5
  %1682 = load i32, ptr %34, align 4, !tbaa !9
  %1683 = sext i32 %1682 to i64
  %1684 = getelementptr inbounds double, ptr %1681, i64 %1683
  %1685 = load ptr, ptr %24, align 8, !tbaa !5
  %1686 = load ptr, ptr %27, align 8, !tbaa !5
  %1687 = load i32, ptr %65, align 4, !tbaa !9
  %1688 = add nsw i32 %1687, 1
  %1689 = sext i32 %1688 to i64
  %1690 = getelementptr inbounds double, ptr %1686, i64 %1689
  %1691 = load ptr, ptr %27, align 8, !tbaa !5
  %1692 = load i32, ptr %68, align 4, !tbaa !9
  %1693 = load i32, ptr %65, align 4, !tbaa !9
  %1694 = add nsw i32 %1692, %1693
  %1695 = sext i32 %1694 to i64
  %1696 = getelementptr inbounds double, ptr %1691, i64 %1695
  %1697 = load ptr, ptr %23, align 8, !tbaa !5
  %1698 = load i32, ptr %68, align 4, !tbaa !9
  %1699 = load i32, ptr %33, align 4, !tbaa !9
  %1700 = mul nsw i32 %1698, %1699
  %1701 = add nsw i32 %1700, 1
  %1702 = sext i32 %1701 to i64
  %1703 = getelementptr inbounds double, ptr %1697, i64 %1702
  call void @dgemv_(ptr noundef @.str.8, ptr noundef %1680, ptr noundef %35, ptr noundef @c_b22, ptr noundef %1684, ptr noundef %1685, ptr noundef %1690, ptr noundef @c__1, ptr noundef %1696, ptr noundef %1703, ptr noundef @c__1)
  br label %1736

1704:                                             ; preds = %1644
  %1705 = load ptr, ptr %18, align 8, !tbaa !5
  %1706 = load ptr, ptr %27, align 8, !tbaa !5
  %1707 = load i32, ptr %68, align 4, !tbaa !9
  %1708 = sub nsw i32 %1707, 1
  %1709 = load ptr, ptr %18, align 8, !tbaa !5
  %1710 = load i32, ptr %1709, align 4, !tbaa !9
  %1711 = add nsw i32 %1708, %1710
  %1712 = sext i32 %1711 to i64
  %1713 = getelementptr inbounds double, ptr %1706, i64 %1712
  %1714 = load ptr, ptr %23, align 8, !tbaa !5
  %1715 = load i32, ptr %68, align 4, !tbaa !9
  %1716 = sub nsw i32 %1715, 1
  %1717 = load i32, ptr %33, align 4, !tbaa !9
  %1718 = mul nsw i32 %1716, %1717
  %1719 = add nsw i32 %1718, 1
  %1720 = sext i32 %1719 to i64
  %1721 = getelementptr inbounds double, ptr %1714, i64 %1720
  call void @dscal_(ptr noundef %1705, ptr noundef %1713, ptr noundef %1721, ptr noundef @c__1)
  %1722 = load ptr, ptr %18, align 8, !tbaa !5
  %1723 = load ptr, ptr %27, align 8, !tbaa !5
  %1724 = load i32, ptr %68, align 4, !tbaa !9
  %1725 = load i32, ptr %65, align 4, !tbaa !9
  %1726 = add nsw i32 %1724, %1725
  %1727 = sext i32 %1726 to i64
  %1728 = getelementptr inbounds double, ptr %1723, i64 %1727
  %1729 = load ptr, ptr %23, align 8, !tbaa !5
  %1730 = load i32, ptr %68, align 4, !tbaa !9
  %1731 = load i32, ptr %33, align 4, !tbaa !9
  %1732 = mul nsw i32 %1730, %1731
  %1733 = add nsw i32 %1732, 1
  %1734 = sext i32 %1733 to i64
  %1735 = getelementptr inbounds double, ptr %1729, i64 %1734
  call void @dscal_(ptr noundef %1722, ptr noundef %1728, ptr noundef %1735, ptr noundef @c__1)
  br label %1736

1736:                                             ; preds = %1704, %1647
  store double 0.000000e+00, ptr %43, align 8, !tbaa !11
  %1737 = load ptr, ptr %18, align 8, !tbaa !5
  %1738 = load i32, ptr %1737, align 4, !tbaa !9
  store i32 %1738, ptr %35, align 4, !tbaa !9
  store i32 1, ptr %55, align 4, !tbaa !9
  br label %1739

1739:                                             ; preds = %1792, %1736
  %1740 = load i32, ptr %55, align 4, !tbaa !9
  %1741 = load i32, ptr %35, align 4, !tbaa !9
  %1742 = icmp sle i32 %1740, %1741
  br i1 %1742, label %1743, label %1795

1743:                                             ; preds = %1739
  %1744 = load double, ptr %43, align 8, !tbaa !11
  store double %1744, ptr %40, align 8, !tbaa !11
  %1745 = load ptr, ptr %23, align 8, !tbaa !5
  %1746 = load i32, ptr %55, align 4, !tbaa !9
  %1747 = load i32, ptr %68, align 4, !tbaa !9
  %1748 = sub nsw i32 %1747, 1
  %1749 = load i32, ptr %33, align 4, !tbaa !9
  %1750 = mul nsw i32 %1748, %1749
  %1751 = add nsw i32 %1746, %1750
  %1752 = sext i32 %1751 to i64
  %1753 = getelementptr inbounds double, ptr %1745, i64 %1752
  %1754 = load double, ptr %1753, align 8, !tbaa !11
  store double %1754, ptr %38, align 8, !tbaa !11
  %1755 = load double, ptr %38, align 8, !tbaa !11
  %1756 = fcmp oge double %1755, 0.000000e+00
  br i1 %1756, label %1757, label %1759

1757:                                             ; preds = %1743
  %1758 = load double, ptr %38, align 8, !tbaa !11
  br label %1762

1759:                                             ; preds = %1743
  %1760 = load double, ptr %38, align 8, !tbaa !11
  %1761 = fneg double %1760
  br label %1762

1762:                                             ; preds = %1759, %1757
  %1763 = phi double [ %1758, %1757 ], [ %1761, %1759 ]
  %1764 = load ptr, ptr %23, align 8, !tbaa !5
  %1765 = load i32, ptr %55, align 4, !tbaa !9
  %1766 = load i32, ptr %68, align 4, !tbaa !9
  %1767 = load i32, ptr %33, align 4, !tbaa !9
  %1768 = mul nsw i32 %1766, %1767
  %1769 = add nsw i32 %1765, %1768
  %1770 = sext i32 %1769 to i64
  %1771 = getelementptr inbounds double, ptr %1764, i64 %1770
  %1772 = load double, ptr %1771, align 8, !tbaa !11
  store double %1772, ptr %39, align 8, !tbaa !11
  %1773 = load double, ptr %39, align 8, !tbaa !11
  %1774 = fcmp oge double %1773, 0.000000e+00
  br i1 %1774, label %1775, label %1777

1775:                                             ; preds = %1762
  %1776 = load double, ptr %39, align 8, !tbaa !11
  br label %1780

1777:                                             ; preds = %1762
  %1778 = load double, ptr %39, align 8, !tbaa !11
  %1779 = fneg double %1778
  br label %1780

1780:                                             ; preds = %1777, %1775
  %1781 = phi double [ %1776, %1775 ], [ %1779, %1777 ]
  %1782 = fadd double %1763, %1781
  store double %1782, ptr %41, align 8, !tbaa !11
  %1783 = load double, ptr %40, align 8, !tbaa !11
  %1784 = load double, ptr %41, align 8, !tbaa !11
  %1785 = fcmp oge double %1783, %1784
  br i1 %1785, label %1786, label %1788

1786:                                             ; preds = %1780
  %1787 = load double, ptr %40, align 8, !tbaa !11
  br label %1790

1788:                                             ; preds = %1780
  %1789 = load double, ptr %41, align 8, !tbaa !11
  br label %1790

1790:                                             ; preds = %1788, %1786
  %1791 = phi double [ %1787, %1786 ], [ %1789, %1788 ]
  store double %1791, ptr %43, align 8, !tbaa !11
  br label %1792

1792:                                             ; preds = %1790
  %1793 = load i32, ptr %55, align 4, !tbaa !9
  %1794 = add nsw i32 %1793, 1
  store i32 %1794, ptr %55, align 4, !tbaa !9
  br label %1739, !llvm.loop !24

1795:                                             ; preds = %1739
  %1796 = load double, ptr %43, align 8, !tbaa !11
  %1797 = fdiv double 1.000000e+00, %1796
  store double %1797, ptr %58, align 8, !tbaa !11
  %1798 = load ptr, ptr %18, align 8, !tbaa !5
  %1799 = load ptr, ptr %23, align 8, !tbaa !5
  %1800 = load i32, ptr %68, align 4, !tbaa !9
  %1801 = sub nsw i32 %1800, 1
  %1802 = load i32, ptr %33, align 4, !tbaa !9
  %1803 = mul nsw i32 %1801, %1802
  %1804 = add nsw i32 %1803, 1
  %1805 = sext i32 %1804 to i64
  %1806 = getelementptr inbounds double, ptr %1799, i64 %1805
  call void @dscal_(ptr noundef %1798, ptr noundef %58, ptr noundef %1806, ptr noundef @c__1)
  %1807 = load ptr, ptr %18, align 8, !tbaa !5
  %1808 = load ptr, ptr %23, align 8, !tbaa !5
  %1809 = load i32, ptr %68, align 4, !tbaa !9
  %1810 = load i32, ptr %33, align 4, !tbaa !9
  %1811 = mul nsw i32 %1809, %1810
  %1812 = add nsw i32 %1811, 1
  %1813 = sext i32 %1812 to i64
  %1814 = getelementptr inbounds double, ptr %1808, i64 %1813
  call void @dscal_(ptr noundef %1807, ptr noundef %58, ptr noundef %1814, ptr noundef @c__1)
  br label %1815

1815:                                             ; preds = %1795, %1643
  br label %1816

1816:                                             ; preds = %1815, %980
  %1817 = load i32, ptr %70, align 4, !tbaa !9
  %1818 = add nsw i32 %1817, -1
  store i32 %1818, ptr %70, align 4, !tbaa !9
  %1819 = load i32, ptr %69, align 4, !tbaa !9
  %1820 = icmp ne i32 %1819, 0
  br i1 %1820, label %1821, label %1824

1821:                                             ; preds = %1816
  %1822 = load i32, ptr %70, align 4, !tbaa !9
  %1823 = add nsw i32 %1822, -1
  store i32 %1823, ptr %70, align 4, !tbaa !9
  br label %1824

1824:                                             ; preds = %1821, %1816
  br label %1825

1825:                                             ; preds = %1824, %459, %449, %417
  %1826 = load i32, ptr %69, align 4, !tbaa !9
  %1827 = icmp eq i32 %1826, 1
  br i1 %1827, label %1828, label %1829

1828:                                             ; preds = %1825
  store i32 0, ptr %69, align 4, !tbaa !9
  br label %1829

1829:                                             ; preds = %1828, %1825
  %1830 = load i32, ptr %69, align 4, !tbaa !9
  %1831 = icmp eq i32 %1830, -1
  br i1 %1831, label %1832, label %1833

1832:                                             ; preds = %1829
  store i32 1, ptr %69, align 4, !tbaa !9
  br label %1833

1833:                                             ; preds = %1832, %1829
  br label %1834

1834:                                             ; preds = %1833
  %1835 = load i32, ptr %68, align 4, !tbaa !9
  %1836 = add nsw i32 %1835, -1
  store i32 %1836, ptr %68, align 4, !tbaa !9
  br label %411, !llvm.loop !25

1837:                                             ; preds = %411
  br label %1838

1838:                                             ; preds = %1837, %400
  %1839 = load i32, ptr %59, align 4, !tbaa !9
  %1840 = icmp ne i32 %1839, 0
  br i1 %1840, label %1841, label %3738

1841:                                             ; preds = %1838
  store i32 0, ptr %69, align 4, !tbaa !9
  store i32 1, ptr %70, align 4, !tbaa !9
  %1842 = load ptr, ptr %18, align 8, !tbaa !5
  %1843 = load i32, ptr %1842, align 4, !tbaa !9
  store i32 %1843, ptr %35, align 4, !tbaa !9
  store i32 1, ptr %68, align 4, !tbaa !9
  br label %1844

1844:                                             ; preds = %3734, %1841
  %1845 = load i32, ptr %68, align 4, !tbaa !9
  %1846 = load i32, ptr %35, align 4, !tbaa !9
  %1847 = icmp sle i32 %1845, %1846
  br i1 %1847, label %1848, label %3737

1848:                                             ; preds = %1844
  %1849 = load i32, ptr %69, align 4, !tbaa !9
  %1850 = icmp eq i32 %1849, -1
  br i1 %1850, label %1851, label %1852

1851:                                             ; preds = %1848
  br label %3725

1852:                                             ; preds = %1848
  %1853 = load i32, ptr %68, align 4, !tbaa !9
  %1854 = load ptr, ptr %18, align 8, !tbaa !5
  %1855 = load i32, ptr %1854, align 4, !tbaa !9
  %1856 = icmp eq i32 %1853, %1855
  br i1 %1856, label %1857, label %1858

1857:                                             ; preds = %1852
  br label %1872

1858:                                             ; preds = %1852
  %1859 = load ptr, ptr %19, align 8, !tbaa !5
  %1860 = load i32, ptr %68, align 4, !tbaa !9
  %1861 = add nsw i32 %1860, 1
  %1862 = load i32, ptr %68, align 4, !tbaa !9
  %1863 = load i32, ptr %29, align 4, !tbaa !9
  %1864 = mul nsw i32 %1862, %1863
  %1865 = add nsw i32 %1861, %1864
  %1866 = sext i32 %1865 to i64
  %1867 = getelementptr inbounds double, ptr %1859, i64 %1866
  %1868 = load double, ptr %1867, align 8, !tbaa !11
  %1869 = fcmp oeq double %1868, 0.000000e+00
  br i1 %1869, label %1870, label %1871

1870:                                             ; preds = %1858
  br label %1872

1871:                                             ; preds = %1858
  store i32 1, ptr %69, align 4, !tbaa !9
  br label %1872

1872:                                             ; preds = %1871, %1870, %1857
  %1873 = load i32, ptr %62, align 4, !tbaa !9
  %1874 = icmp ne i32 %1873, 0
  br i1 %1874, label %1875, label %1884

1875:                                             ; preds = %1872
  %1876 = load ptr, ptr %17, align 8, !tbaa !5
  %1877 = load i32, ptr %68, align 4, !tbaa !9
  %1878 = sext i32 %1877 to i64
  %1879 = getelementptr inbounds i32, ptr %1876, i64 %1878
  %1880 = load i32, ptr %1879, align 4, !tbaa !9
  %1881 = icmp ne i32 %1880, 0
  br i1 %1881, label %1883, label %1882

1882:                                             ; preds = %1875
  br label %3725

1883:                                             ; preds = %1875
  br label %1884

1884:                                             ; preds = %1883, %1872
  %1885 = load ptr, ptr %19, align 8, !tbaa !5
  %1886 = load i32, ptr %68, align 4, !tbaa !9
  %1887 = load i32, ptr %68, align 4, !tbaa !9
  %1888 = load i32, ptr %29, align 4, !tbaa !9
  %1889 = mul nsw i32 %1887, %1888
  %1890 = add nsw i32 %1886, %1889
  %1891 = sext i32 %1890 to i64
  %1892 = getelementptr inbounds double, ptr %1885, i64 %1891
  %1893 = load double, ptr %1892, align 8, !tbaa !11
  store double %1893, ptr %72, align 8, !tbaa !11
  store double 0.000000e+00, ptr %71, align 8, !tbaa !11
  %1894 = load i32, ptr %69, align 4, !tbaa !9
  %1895 = icmp ne i32 %1894, 0
  br i1 %1895, label %1896, label %1938

1896:                                             ; preds = %1884
  %1897 = load ptr, ptr %19, align 8, !tbaa !5
  %1898 = load i32, ptr %68, align 4, !tbaa !9
  %1899 = load i32, ptr %68, align 4, !tbaa !9
  %1900 = add nsw i32 %1899, 1
  %1901 = load i32, ptr %29, align 4, !tbaa !9
  %1902 = mul nsw i32 %1900, %1901
  %1903 = add nsw i32 %1898, %1902
  %1904 = sext i32 %1903 to i64
  %1905 = getelementptr inbounds double, ptr %1897, i64 %1904
  %1906 = load double, ptr %1905, align 8, !tbaa !11
  store double %1906, ptr %38, align 8, !tbaa !11
  %1907 = load double, ptr %38, align 8, !tbaa !11
  %1908 = fcmp oge double %1907, 0.000000e+00
  br i1 %1908, label %1909, label %1911

1909:                                             ; preds = %1896
  %1910 = load double, ptr %38, align 8, !tbaa !11
  br label %1914

1911:                                             ; preds = %1896
  %1912 = load double, ptr %38, align 8, !tbaa !11
  %1913 = fneg double %1912
  br label %1914

1914:                                             ; preds = %1911, %1909
  %1915 = phi double [ %1910, %1909 ], [ %1913, %1911 ]
  %1916 = call double @sqrt(double noundef %1915) #4
  %1917 = load ptr, ptr %19, align 8, !tbaa !5
  %1918 = load i32, ptr %68, align 4, !tbaa !9
  %1919 = add nsw i32 %1918, 1
  %1920 = load i32, ptr %68, align 4, !tbaa !9
  %1921 = load i32, ptr %29, align 4, !tbaa !9
  %1922 = mul nsw i32 %1920, %1921
  %1923 = add nsw i32 %1919, %1922
  %1924 = sext i32 %1923 to i64
  %1925 = getelementptr inbounds double, ptr %1917, i64 %1924
  %1926 = load double, ptr %1925, align 8, !tbaa !11
  store double %1926, ptr %39, align 8, !tbaa !11
  %1927 = load double, ptr %39, align 8, !tbaa !11
  %1928 = fcmp oge double %1927, 0.000000e+00
  br i1 %1928, label %1929, label %1931

1929:                                             ; preds = %1914
  %1930 = load double, ptr %39, align 8, !tbaa !11
  br label %1934

1931:                                             ; preds = %1914
  %1932 = load double, ptr %39, align 8, !tbaa !11
  %1933 = fneg double %1932
  br label %1934

1934:                                             ; preds = %1931, %1929
  %1935 = phi double [ %1930, %1929 ], [ %1933, %1931 ]
  %1936 = call double @sqrt(double noundef %1935) #4
  %1937 = fmul double %1916, %1936
  store double %1937, ptr %71, align 8, !tbaa !11
  br label %1938

1938:                                             ; preds = %1934, %1884
  %1939 = load double, ptr %77, align 8, !tbaa !11
  %1940 = load double, ptr %72, align 8, !tbaa !11
  %1941 = fcmp oge double %1940, 0.000000e+00
  br i1 %1941, label %1942, label %1944

1942:                                             ; preds = %1938
  %1943 = load double, ptr %72, align 8, !tbaa !11
  br label %1947

1944:                                             ; preds = %1938
  %1945 = load double, ptr %72, align 8, !tbaa !11
  %1946 = fneg double %1945
  br label %1947

1947:                                             ; preds = %1944, %1942
  %1948 = phi double [ %1943, %1942 ], [ %1946, %1944 ]
  %1949 = load double, ptr %71, align 8, !tbaa !11
  %1950 = fcmp oge double %1949, 0.000000e+00
  br i1 %1950, label %1951, label %1953

1951:                                             ; preds = %1947
  %1952 = load double, ptr %71, align 8, !tbaa !11
  br label %1956

1953:                                             ; preds = %1947
  %1954 = load double, ptr %71, align 8, !tbaa !11
  %1955 = fneg double %1954
  br label %1956

1956:                                             ; preds = %1953, %1951
  %1957 = phi double [ %1952, %1951 ], [ %1955, %1953 ]
  %1958 = fadd double %1948, %1957
  %1959 = fmul double %1939, %1958
  store double %1959, ptr %38, align 8, !tbaa !11
  %1960 = load double, ptr %38, align 8, !tbaa !11
  %1961 = load double, ptr %75, align 8, !tbaa !11
  %1962 = fcmp oge double %1960, %1961
  br i1 %1962, label %1963, label %1965

1963:                                             ; preds = %1956
  %1964 = load double, ptr %38, align 8, !tbaa !11
  br label %1967

1965:                                             ; preds = %1956
  %1966 = load double, ptr %75, align 8, !tbaa !11
  br label %1967

1967:                                             ; preds = %1965, %1963
  %1968 = phi double [ %1964, %1963 ], [ %1966, %1965 ]
  store double %1968, ptr %49, align 8, !tbaa !11
  %1969 = load i32, ptr %69, align 4, !tbaa !9
  %1970 = icmp eq i32 %1969, 0
  br i1 %1970, label %1971, label %2575

1971:                                             ; preds = %1967
  %1972 = load ptr, ptr %27, align 8, !tbaa !5
  %1973 = load i32, ptr %68, align 4, !tbaa !9
  %1974 = load ptr, ptr %18, align 8, !tbaa !5
  %1975 = load i32, ptr %1974, align 4, !tbaa !9
  %1976 = add nsw i32 %1973, %1975
  %1977 = sext i32 %1976 to i64
  %1978 = getelementptr inbounds double, ptr %1972, i64 %1977
  store double 1.000000e+00, ptr %1978, align 8, !tbaa !11
  %1979 = load ptr, ptr %18, align 8, !tbaa !5
  %1980 = load i32, ptr %1979, align 4, !tbaa !9
  store i32 %1980, ptr %36, align 4, !tbaa !9
  %1981 = load i32, ptr %68, align 4, !tbaa !9
  %1982 = add nsw i32 %1981, 1
  store i32 %1982, ptr %55, align 4, !tbaa !9
  br label %1983

1983:                                             ; preds = %2005, %1971
  %1984 = load i32, ptr %55, align 4, !tbaa !9
  %1985 = load i32, ptr %36, align 4, !tbaa !9
  %1986 = icmp sle i32 %1984, %1985
  br i1 %1986, label %1987, label %2008

1987:                                             ; preds = %1983
  %1988 = load ptr, ptr %19, align 8, !tbaa !5
  %1989 = load i32, ptr %68, align 4, !tbaa !9
  %1990 = load i32, ptr %55, align 4, !tbaa !9
  %1991 = load i32, ptr %29, align 4, !tbaa !9
  %1992 = mul nsw i32 %1990, %1991
  %1993 = add nsw i32 %1989, %1992
  %1994 = sext i32 %1993 to i64
  %1995 = getelementptr inbounds double, ptr %1988, i64 %1994
  %1996 = load double, ptr %1995, align 8, !tbaa !11
  %1997 = fneg double %1996
  %1998 = load ptr, ptr %27, align 8, !tbaa !5
  %1999 = load i32, ptr %55, align 4, !tbaa !9
  %2000 = load ptr, ptr %18, align 8, !tbaa !5
  %2001 = load i32, ptr %2000, align 4, !tbaa !9
  %2002 = add nsw i32 %1999, %2001
  %2003 = sext i32 %2002 to i64
  %2004 = getelementptr inbounds double, ptr %1998, i64 %2003
  store double %1997, ptr %2004, align 8, !tbaa !11
  br label %2005

2005:                                             ; preds = %1987
  %2006 = load i32, ptr %55, align 4, !tbaa !9
  %2007 = add nsw i32 %2006, 1
  store i32 %2007, ptr %55, align 4, !tbaa !9
  br label %1983, !llvm.loop !26

2008:                                             ; preds = %1983
  store double 1.000000e+00, ptr %51, align 8, !tbaa !11
  %2009 = load double, ptr %73, align 8, !tbaa !11
  store double %2009, ptr %61, align 8, !tbaa !11
  %2010 = load i32, ptr %68, align 4, !tbaa !9
  %2011 = add nsw i32 %2010, 1
  store i32 %2011, ptr %52, align 4, !tbaa !9
  %2012 = load ptr, ptr %18, align 8, !tbaa !5
  %2013 = load i32, ptr %2012, align 4, !tbaa !9
  store i32 %2013, ptr %36, align 4, !tbaa !9
  %2014 = load i32, ptr %68, align 4, !tbaa !9
  %2015 = add nsw i32 %2014, 1
  store i32 %2015, ptr %54, align 4, !tbaa !9
  br label %2016

2016:                                             ; preds = %2400, %2008
  %2017 = load i32, ptr %54, align 4, !tbaa !9
  %2018 = load i32, ptr %36, align 4, !tbaa !9
  %2019 = icmp sle i32 %2017, %2018
  br i1 %2019, label %2020, label %2403

2020:                                             ; preds = %2016
  %2021 = load i32, ptr %54, align 4, !tbaa !9
  %2022 = load i32, ptr %52, align 4, !tbaa !9
  %2023 = icmp slt i32 %2021, %2022
  br i1 %2023, label %2024, label %2025

2024:                                             ; preds = %2020
  br label %2399

2025:                                             ; preds = %2020
  %2026 = load i32, ptr %54, align 4, !tbaa !9
  store i32 %2026, ptr %63, align 4, !tbaa !9
  %2027 = load i32, ptr %54, align 4, !tbaa !9
  store i32 %2027, ptr %64, align 4, !tbaa !9
  %2028 = load i32, ptr %54, align 4, !tbaa !9
  %2029 = add nsw i32 %2028, 1
  store i32 %2029, ptr %52, align 4, !tbaa !9
  %2030 = load i32, ptr %54, align 4, !tbaa !9
  %2031 = load ptr, ptr %18, align 8, !tbaa !5
  %2032 = load i32, ptr %2031, align 4, !tbaa !9
  %2033 = icmp slt i32 %2030, %2032
  br i1 %2033, label %2034, label %2052

2034:                                             ; preds = %2025
  %2035 = load ptr, ptr %19, align 8, !tbaa !5
  %2036 = load i32, ptr %54, align 4, !tbaa !9
  %2037 = add nsw i32 %2036, 1
  %2038 = load i32, ptr %54, align 4, !tbaa !9
  %2039 = load i32, ptr %29, align 4, !tbaa !9
  %2040 = mul nsw i32 %2038, %2039
  %2041 = add nsw i32 %2037, %2040
  %2042 = sext i32 %2041 to i64
  %2043 = getelementptr inbounds double, ptr %2035, i64 %2042
  %2044 = load double, ptr %2043, align 8, !tbaa !11
  %2045 = fcmp une double %2044, 0.000000e+00
  br i1 %2045, label %2046, label %2051

2046:                                             ; preds = %2034
  %2047 = load i32, ptr %54, align 4, !tbaa !9
  %2048 = add nsw i32 %2047, 1
  store i32 %2048, ptr %64, align 4, !tbaa !9
  %2049 = load i32, ptr %54, align 4, !tbaa !9
  %2050 = add nsw i32 %2049, 2
  store i32 %2050, ptr %52, align 4, !tbaa !9
  br label %2051

2051:                                             ; preds = %2046, %2034
  br label %2052

2052:                                             ; preds = %2051, %2025
  %2053 = load i32, ptr %63, align 4, !tbaa !9
  %2054 = load i32, ptr %64, align 4, !tbaa !9
  %2055 = icmp eq i32 %2053, %2054
  br i1 %2055, label %2056, label %2184

2056:                                             ; preds = %2052
  %2057 = load ptr, ptr %27, align 8, !tbaa !5
  %2058 = load i32, ptr %54, align 4, !tbaa !9
  %2059 = sext i32 %2058 to i64
  %2060 = getelementptr inbounds double, ptr %2057, i64 %2059
  %2061 = load double, ptr %2060, align 8, !tbaa !11
  %2062 = load double, ptr %61, align 8, !tbaa !11
  %2063 = fcmp ogt double %2061, %2062
  br i1 %2063, label %2064, label %2080

2064:                                             ; preds = %2056
  %2065 = load double, ptr %51, align 8, !tbaa !11
  %2066 = fdiv double 1.000000e+00, %2065
  store double %2066, ptr %76, align 8, !tbaa !11
  %2067 = load ptr, ptr %18, align 8, !tbaa !5
  %2068 = load i32, ptr %2067, align 4, !tbaa !9
  %2069 = load i32, ptr %68, align 4, !tbaa !9
  %2070 = sub nsw i32 %2068, %2069
  %2071 = add nsw i32 %2070, 1
  store i32 %2071, ptr %37, align 4, !tbaa !9
  %2072 = load ptr, ptr %27, align 8, !tbaa !5
  %2073 = load i32, ptr %68, align 4, !tbaa !9
  %2074 = load ptr, ptr %18, align 8, !tbaa !5
  %2075 = load i32, ptr %2074, align 4, !tbaa !9
  %2076 = add nsw i32 %2073, %2075
  %2077 = sext i32 %2076 to i64
  %2078 = getelementptr inbounds double, ptr %2072, i64 %2077
  call void @dscal_(ptr noundef %37, ptr noundef %76, ptr noundef %2078, ptr noundef @c__1)
  store double 1.000000e+00, ptr %51, align 8, !tbaa !11
  %2079 = load double, ptr %73, align 8, !tbaa !11
  store double %2079, ptr %61, align 8, !tbaa !11
  br label %2080

2080:                                             ; preds = %2064, %2056
  %2081 = load i32, ptr %54, align 4, !tbaa !9
  %2082 = load i32, ptr %68, align 4, !tbaa !9
  %2083 = sub nsw i32 %2081, %2082
  %2084 = sub nsw i32 %2083, 1
  store i32 %2084, ptr %37, align 4, !tbaa !9
  %2085 = load ptr, ptr %19, align 8, !tbaa !5
  %2086 = load i32, ptr %68, align 4, !tbaa !9
  %2087 = add nsw i32 %2086, 1
  %2088 = load i32, ptr %54, align 4, !tbaa !9
  %2089 = load i32, ptr %29, align 4, !tbaa !9
  %2090 = mul nsw i32 %2088, %2089
  %2091 = add nsw i32 %2087, %2090
  %2092 = sext i32 %2091 to i64
  %2093 = getelementptr inbounds double, ptr %2085, i64 %2092
  %2094 = load ptr, ptr %27, align 8, !tbaa !5
  %2095 = load i32, ptr %68, align 4, !tbaa !9
  %2096 = add nsw i32 %2095, 1
  %2097 = load ptr, ptr %18, align 8, !tbaa !5
  %2098 = load i32, ptr %2097, align 4, !tbaa !9
  %2099 = add nsw i32 %2096, %2098
  %2100 = sext i32 %2099 to i64
  %2101 = getelementptr inbounds double, ptr %2094, i64 %2100
  %2102 = call double @ddot_(ptr noundef %37, ptr noundef %2093, ptr noundef @c__1, ptr noundef %2101, ptr noundef @c__1)
  %2103 = load ptr, ptr %27, align 8, !tbaa !5
  %2104 = load i32, ptr %54, align 4, !tbaa !9
  %2105 = load ptr, ptr %18, align 8, !tbaa !5
  %2106 = load i32, ptr %2105, align 4, !tbaa !9
  %2107 = add nsw i32 %2104, %2106
  %2108 = sext i32 %2107 to i64
  %2109 = getelementptr inbounds double, ptr %2103, i64 %2108
  %2110 = load double, ptr %2109, align 8, !tbaa !11
  %2111 = fsub double %2110, %2102
  store double %2111, ptr %2109, align 8, !tbaa !11
  %2112 = load ptr, ptr %19, align 8, !tbaa !5
  %2113 = load i32, ptr %54, align 4, !tbaa !9
  %2114 = load i32, ptr %54, align 4, !tbaa !9
  %2115 = load i32, ptr %29, align 4, !tbaa !9
  %2116 = mul nsw i32 %2114, %2115
  %2117 = add nsw i32 %2113, %2116
  %2118 = sext i32 %2117 to i64
  %2119 = getelementptr inbounds double, ptr %2112, i64 %2118
  %2120 = load ptr, ptr %20, align 8, !tbaa !5
  %2121 = load ptr, ptr %27, align 8, !tbaa !5
  %2122 = load i32, ptr %54, align 4, !tbaa !9
  %2123 = load ptr, ptr %18, align 8, !tbaa !5
  %2124 = load i32, ptr %2123, align 4, !tbaa !9
  %2125 = add nsw i32 %2122, %2124
  %2126 = sext i32 %2125 to i64
  %2127 = getelementptr inbounds double, ptr %2121, i64 %2126
  %2128 = load ptr, ptr %18, align 8, !tbaa !5
  %2129 = getelementptr inbounds [4 x double], ptr %57, i64 0, i64 0
  call void @dlaln2_(ptr noundef @c_false, ptr noundef @c__1, ptr noundef @c__1, ptr noundef %49, ptr noundef @c_b22, ptr noundef %2119, ptr noundef %2120, ptr noundef @c_b22, ptr noundef @c_b22, ptr noundef %2127, ptr noundef %2128, ptr noundef %72, ptr noundef @c_b25, ptr noundef %2129, ptr noundef @c__2, ptr noundef %56, ptr noundef %66, ptr noundef %46)
  %2130 = load double, ptr %56, align 8, !tbaa !11
  %2131 = fcmp une double %2130, 1.000000e+00
  br i1 %2131, label %2132, label %2145

2132:                                             ; preds = %2080
  %2133 = load ptr, ptr %18, align 8, !tbaa !5
  %2134 = load i32, ptr %2133, align 4, !tbaa !9
  %2135 = load i32, ptr %68, align 4, !tbaa !9
  %2136 = sub nsw i32 %2134, %2135
  %2137 = add nsw i32 %2136, 1
  store i32 %2137, ptr %37, align 4, !tbaa !9
  %2138 = load ptr, ptr %27, align 8, !tbaa !5
  %2139 = load i32, ptr %68, align 4, !tbaa !9
  %2140 = load ptr, ptr %18, align 8, !tbaa !5
  %2141 = load i32, ptr %2140, align 4, !tbaa !9
  %2142 = add nsw i32 %2139, %2141
  %2143 = sext i32 %2142 to i64
  %2144 = getelementptr inbounds double, ptr %2138, i64 %2143
  call void @dscal_(ptr noundef %37, ptr noundef %56, ptr noundef %2144, ptr noundef @c__1)
  br label %2145

2145:                                             ; preds = %2132, %2080
  %2146 = getelementptr inbounds [4 x double], ptr %57, i64 0, i64 0
  %2147 = load double, ptr %2146, align 16, !tbaa !11
  %2148 = load ptr, ptr %27, align 8, !tbaa !5
  %2149 = load i32, ptr %54, align 4, !tbaa !9
  %2150 = load ptr, ptr %18, align 8, !tbaa !5
  %2151 = load i32, ptr %2150, align 4, !tbaa !9
  %2152 = add nsw i32 %2149, %2151
  %2153 = sext i32 %2152 to i64
  %2154 = getelementptr inbounds double, ptr %2148, i64 %2153
  store double %2147, ptr %2154, align 8, !tbaa !11
  %2155 = load ptr, ptr %27, align 8, !tbaa !5
  %2156 = load i32, ptr %54, align 4, !tbaa !9
  %2157 = load ptr, ptr %18, align 8, !tbaa !5
  %2158 = load i32, ptr %2157, align 4, !tbaa !9
  %2159 = add nsw i32 %2156, %2158
  %2160 = sext i32 %2159 to i64
  %2161 = getelementptr inbounds double, ptr %2155, i64 %2160
  %2162 = load double, ptr %2161, align 8, !tbaa !11
  store double %2162, ptr %38, align 8, !tbaa !11
  %2163 = load double, ptr %38, align 8, !tbaa !11
  %2164 = fcmp oge double %2163, 0.000000e+00
  br i1 %2164, label %2165, label %2167

2165:                                             ; preds = %2145
  %2166 = load double, ptr %38, align 8, !tbaa !11
  br label %2170

2167:                                             ; preds = %2145
  %2168 = load double, ptr %38, align 8, !tbaa !11
  %2169 = fneg double %2168
  br label %2170

2170:                                             ; preds = %2167, %2165
  %2171 = phi double [ %2166, %2165 ], [ %2169, %2167 ]
  store double %2171, ptr %39, align 8, !tbaa !11
  %2172 = load double, ptr %39, align 8, !tbaa !11
  %2173 = load double, ptr %51, align 8, !tbaa !11
  %2174 = fcmp oge double %2172, %2173
  br i1 %2174, label %2175, label %2177

2175:                                             ; preds = %2170
  %2176 = load double, ptr %39, align 8, !tbaa !11
  br label %2179

2177:                                             ; preds = %2170
  %2178 = load double, ptr %51, align 8, !tbaa !11
  br label %2179

2179:                                             ; preds = %2177, %2175
  %2180 = phi double [ %2176, %2175 ], [ %2178, %2177 ]
  store double %2180, ptr %51, align 8, !tbaa !11
  %2181 = load double, ptr %73, align 8, !tbaa !11
  %2182 = load double, ptr %51, align 8, !tbaa !11
  %2183 = fdiv double %2181, %2182
  store double %2183, ptr %61, align 8, !tbaa !11
  br label %2398

2184:                                             ; preds = %2052
  %2185 = load ptr, ptr %27, align 8, !tbaa !5
  %2186 = load i32, ptr %54, align 4, !tbaa !9
  %2187 = sext i32 %2186 to i64
  %2188 = getelementptr inbounds double, ptr %2185, i64 %2187
  %2189 = load double, ptr %2188, align 8, !tbaa !11
  store double %2189, ptr %38, align 8, !tbaa !11
  %2190 = load ptr, ptr %27, align 8, !tbaa !5
  %2191 = load i32, ptr %54, align 4, !tbaa !9
  %2192 = add nsw i32 %2191, 1
  %2193 = sext i32 %2192 to i64
  %2194 = getelementptr inbounds double, ptr %2190, i64 %2193
  %2195 = load double, ptr %2194, align 8, !tbaa !11
  store double %2195, ptr %39, align 8, !tbaa !11
  %2196 = load double, ptr %38, align 8, !tbaa !11
  %2197 = load double, ptr %39, align 8, !tbaa !11
  %2198 = fcmp oge double %2196, %2197
  br i1 %2198, label %2199, label %2201

2199:                                             ; preds = %2184
  %2200 = load double, ptr %38, align 8, !tbaa !11
  br label %2203

2201:                                             ; preds = %2184
  %2202 = load double, ptr %39, align 8, !tbaa !11
  br label %2203

2203:                                             ; preds = %2201, %2199
  %2204 = phi double [ %2200, %2199 ], [ %2202, %2201 ]
  store double %2204, ptr %42, align 8, !tbaa !11
  %2205 = load double, ptr %42, align 8, !tbaa !11
  %2206 = load double, ptr %61, align 8, !tbaa !11
  %2207 = fcmp ogt double %2205, %2206
  br i1 %2207, label %2208, label %2224

2208:                                             ; preds = %2203
  %2209 = load double, ptr %51, align 8, !tbaa !11
  %2210 = fdiv double 1.000000e+00, %2209
  store double %2210, ptr %76, align 8, !tbaa !11
  %2211 = load ptr, ptr %18, align 8, !tbaa !5
  %2212 = load i32, ptr %2211, align 4, !tbaa !9
  %2213 = load i32, ptr %68, align 4, !tbaa !9
  %2214 = sub nsw i32 %2212, %2213
  %2215 = add nsw i32 %2214, 1
  store i32 %2215, ptr %37, align 4, !tbaa !9
  %2216 = load ptr, ptr %27, align 8, !tbaa !5
  %2217 = load i32, ptr %68, align 4, !tbaa !9
  %2218 = load ptr, ptr %18, align 8, !tbaa !5
  %2219 = load i32, ptr %2218, align 4, !tbaa !9
  %2220 = add nsw i32 %2217, %2219
  %2221 = sext i32 %2220 to i64
  %2222 = getelementptr inbounds double, ptr %2216, i64 %2221
  call void @dscal_(ptr noundef %37, ptr noundef %76, ptr noundef %2222, ptr noundef @c__1)
  store double 1.000000e+00, ptr %51, align 8, !tbaa !11
  %2223 = load double, ptr %73, align 8, !tbaa !11
  store double %2223, ptr %61, align 8, !tbaa !11
  br label %2224

2224:                                             ; preds = %2208, %2203
  %2225 = load i32, ptr %54, align 4, !tbaa !9
  %2226 = load i32, ptr %68, align 4, !tbaa !9
  %2227 = sub nsw i32 %2225, %2226
  %2228 = sub nsw i32 %2227, 1
  store i32 %2228, ptr %37, align 4, !tbaa !9
  %2229 = load ptr, ptr %19, align 8, !tbaa !5
  %2230 = load i32, ptr %68, align 4, !tbaa !9
  %2231 = add nsw i32 %2230, 1
  %2232 = load i32, ptr %54, align 4, !tbaa !9
  %2233 = load i32, ptr %29, align 4, !tbaa !9
  %2234 = mul nsw i32 %2232, %2233
  %2235 = add nsw i32 %2231, %2234
  %2236 = sext i32 %2235 to i64
  %2237 = getelementptr inbounds double, ptr %2229, i64 %2236
  %2238 = load ptr, ptr %27, align 8, !tbaa !5
  %2239 = load i32, ptr %68, align 4, !tbaa !9
  %2240 = add nsw i32 %2239, 1
  %2241 = load ptr, ptr %18, align 8, !tbaa !5
  %2242 = load i32, ptr %2241, align 4, !tbaa !9
  %2243 = add nsw i32 %2240, %2242
  %2244 = sext i32 %2243 to i64
  %2245 = getelementptr inbounds double, ptr %2238, i64 %2244
  %2246 = call double @ddot_(ptr noundef %37, ptr noundef %2237, ptr noundef @c__1, ptr noundef %2245, ptr noundef @c__1)
  %2247 = load ptr, ptr %27, align 8, !tbaa !5
  %2248 = load i32, ptr %54, align 4, !tbaa !9
  %2249 = load ptr, ptr %18, align 8, !tbaa !5
  %2250 = load i32, ptr %2249, align 4, !tbaa !9
  %2251 = add nsw i32 %2248, %2250
  %2252 = sext i32 %2251 to i64
  %2253 = getelementptr inbounds double, ptr %2247, i64 %2252
  %2254 = load double, ptr %2253, align 8, !tbaa !11
  %2255 = fsub double %2254, %2246
  store double %2255, ptr %2253, align 8, !tbaa !11
  %2256 = load i32, ptr %54, align 4, !tbaa !9
  %2257 = load i32, ptr %68, align 4, !tbaa !9
  %2258 = sub nsw i32 %2256, %2257
  %2259 = sub nsw i32 %2258, 1
  store i32 %2259, ptr %37, align 4, !tbaa !9
  %2260 = load ptr, ptr %19, align 8, !tbaa !5
  %2261 = load i32, ptr %68, align 4, !tbaa !9
  %2262 = add nsw i32 %2261, 1
  %2263 = load i32, ptr %54, align 4, !tbaa !9
  %2264 = add nsw i32 %2263, 1
  %2265 = load i32, ptr %29, align 4, !tbaa !9
  %2266 = mul nsw i32 %2264, %2265
  %2267 = add nsw i32 %2262, %2266
  %2268 = sext i32 %2267 to i64
  %2269 = getelementptr inbounds double, ptr %2260, i64 %2268
  %2270 = load ptr, ptr %27, align 8, !tbaa !5
  %2271 = load i32, ptr %68, align 4, !tbaa !9
  %2272 = add nsw i32 %2271, 1
  %2273 = load ptr, ptr %18, align 8, !tbaa !5
  %2274 = load i32, ptr %2273, align 4, !tbaa !9
  %2275 = add nsw i32 %2272, %2274
  %2276 = sext i32 %2275 to i64
  %2277 = getelementptr inbounds double, ptr %2270, i64 %2276
  %2278 = call double @ddot_(ptr noundef %37, ptr noundef %2269, ptr noundef @c__1, ptr noundef %2277, ptr noundef @c__1)
  %2279 = load ptr, ptr %27, align 8, !tbaa !5
  %2280 = load i32, ptr %54, align 4, !tbaa !9
  %2281 = add nsw i32 %2280, 1
  %2282 = load ptr, ptr %18, align 8, !tbaa !5
  %2283 = load i32, ptr %2282, align 4, !tbaa !9
  %2284 = add nsw i32 %2281, %2283
  %2285 = sext i32 %2284 to i64
  %2286 = getelementptr inbounds double, ptr %2279, i64 %2285
  %2287 = load double, ptr %2286, align 8, !tbaa !11
  %2288 = fsub double %2287, %2278
  store double %2288, ptr %2286, align 8, !tbaa !11
  %2289 = load ptr, ptr %19, align 8, !tbaa !5
  %2290 = load i32, ptr %54, align 4, !tbaa !9
  %2291 = load i32, ptr %54, align 4, !tbaa !9
  %2292 = load i32, ptr %29, align 4, !tbaa !9
  %2293 = mul nsw i32 %2291, %2292
  %2294 = add nsw i32 %2290, %2293
  %2295 = sext i32 %2294 to i64
  %2296 = getelementptr inbounds double, ptr %2289, i64 %2295
  %2297 = load ptr, ptr %20, align 8, !tbaa !5
  %2298 = load ptr, ptr %27, align 8, !tbaa !5
  %2299 = load i32, ptr %54, align 4, !tbaa !9
  %2300 = load ptr, ptr %18, align 8, !tbaa !5
  %2301 = load i32, ptr %2300, align 4, !tbaa !9
  %2302 = add nsw i32 %2299, %2301
  %2303 = sext i32 %2302 to i64
  %2304 = getelementptr inbounds double, ptr %2298, i64 %2303
  %2305 = load ptr, ptr %18, align 8, !tbaa !5
  %2306 = getelementptr inbounds [4 x double], ptr %57, i64 0, i64 0
  call void @dlaln2_(ptr noundef @c_true, ptr noundef @c__2, ptr noundef @c__1, ptr noundef %49, ptr noundef @c_b22, ptr noundef %2296, ptr noundef %2297, ptr noundef @c_b22, ptr noundef @c_b22, ptr noundef %2304, ptr noundef %2305, ptr noundef %72, ptr noundef @c_b25, ptr noundef %2306, ptr noundef @c__2, ptr noundef %56, ptr noundef %66, ptr noundef %46)
  %2307 = load double, ptr %56, align 8, !tbaa !11
  %2308 = fcmp une double %2307, 1.000000e+00
  br i1 %2308, label %2309, label %2322

2309:                                             ; preds = %2224
  %2310 = load ptr, ptr %18, align 8, !tbaa !5
  %2311 = load i32, ptr %2310, align 4, !tbaa !9
  %2312 = load i32, ptr %68, align 4, !tbaa !9
  %2313 = sub nsw i32 %2311, %2312
  %2314 = add nsw i32 %2313, 1
  store i32 %2314, ptr %37, align 4, !tbaa !9
  %2315 = load ptr, ptr %27, align 8, !tbaa !5
  %2316 = load i32, ptr %68, align 4, !tbaa !9
  %2317 = load ptr, ptr %18, align 8, !tbaa !5
  %2318 = load i32, ptr %2317, align 4, !tbaa !9
  %2319 = add nsw i32 %2316, %2318
  %2320 = sext i32 %2319 to i64
  %2321 = getelementptr inbounds double, ptr %2315, i64 %2320
  call void @dscal_(ptr noundef %37, ptr noundef %56, ptr noundef %2321, ptr noundef @c__1)
  br label %2322

2322:                                             ; preds = %2309, %2224
  %2323 = getelementptr inbounds [4 x double], ptr %57, i64 0, i64 0
  %2324 = load double, ptr %2323, align 16, !tbaa !11
  %2325 = load ptr, ptr %27, align 8, !tbaa !5
  %2326 = load i32, ptr %54, align 4, !tbaa !9
  %2327 = load ptr, ptr %18, align 8, !tbaa !5
  %2328 = load i32, ptr %2327, align 4, !tbaa !9
  %2329 = add nsw i32 %2326, %2328
  %2330 = sext i32 %2329 to i64
  %2331 = getelementptr inbounds double, ptr %2325, i64 %2330
  store double %2324, ptr %2331, align 8, !tbaa !11
  %2332 = getelementptr inbounds [4 x double], ptr %57, i64 0, i64 1
  %2333 = load double, ptr %2332, align 8, !tbaa !11
  %2334 = load ptr, ptr %27, align 8, !tbaa !5
  %2335 = load i32, ptr %54, align 4, !tbaa !9
  %2336 = add nsw i32 %2335, 1
  %2337 = load ptr, ptr %18, align 8, !tbaa !5
  %2338 = load i32, ptr %2337, align 4, !tbaa !9
  %2339 = add nsw i32 %2336, %2338
  %2340 = sext i32 %2339 to i64
  %2341 = getelementptr inbounds double, ptr %2334, i64 %2340
  store double %2333, ptr %2341, align 8, !tbaa !11
  %2342 = load ptr, ptr %27, align 8, !tbaa !5
  %2343 = load i32, ptr %54, align 4, !tbaa !9
  %2344 = load ptr, ptr %18, align 8, !tbaa !5
  %2345 = load i32, ptr %2344, align 4, !tbaa !9
  %2346 = add nsw i32 %2343, %2345
  %2347 = sext i32 %2346 to i64
  %2348 = getelementptr inbounds double, ptr %2342, i64 %2347
  %2349 = load double, ptr %2348, align 8, !tbaa !11
  store double %2349, ptr %38, align 8, !tbaa !11
  %2350 = load double, ptr %38, align 8, !tbaa !11
  %2351 = fcmp oge double %2350, 0.000000e+00
  br i1 %2351, label %2352, label %2354

2352:                                             ; preds = %2322
  %2353 = load double, ptr %38, align 8, !tbaa !11
  br label %2357

2354:                                             ; preds = %2322
  %2355 = load double, ptr %38, align 8, !tbaa !11
  %2356 = fneg double %2355
  br label %2357

2357:                                             ; preds = %2354, %2352
  %2358 = phi double [ %2353, %2352 ], [ %2356, %2354 ]
  store double %2358, ptr %40, align 8, !tbaa !11
  %2359 = load ptr, ptr %27, align 8, !tbaa !5
  %2360 = load i32, ptr %54, align 4, !tbaa !9
  %2361 = add nsw i32 %2360, 1
  %2362 = load ptr, ptr %18, align 8, !tbaa !5
  %2363 = load i32, ptr %2362, align 4, !tbaa !9
  %2364 = add nsw i32 %2361, %2363
  %2365 = sext i32 %2364 to i64
  %2366 = getelementptr inbounds double, ptr %2359, i64 %2365
  %2367 = load double, ptr %2366, align 8, !tbaa !11
  store double %2367, ptr %39, align 8, !tbaa !11
  %2368 = load double, ptr %39, align 8, !tbaa !11
  %2369 = fcmp oge double %2368, 0.000000e+00
  br i1 %2369, label %2370, label %2372

2370:                                             ; preds = %2357
  %2371 = load double, ptr %39, align 8, !tbaa !11
  br label %2375

2372:                                             ; preds = %2357
  %2373 = load double, ptr %39, align 8, !tbaa !11
  %2374 = fneg double %2373
  br label %2375

2375:                                             ; preds = %2372, %2370
  %2376 = phi double [ %2371, %2370 ], [ %2374, %2372 ]
  store double %2376, ptr %41, align 8, !tbaa !11
  %2377 = load double, ptr %40, align 8, !tbaa !11
  %2378 = load double, ptr %41, align 8, !tbaa !11
  %2379 = fcmp oge double %2377, %2378
  br i1 %2379, label %2380, label %2382

2380:                                             ; preds = %2375
  %2381 = load double, ptr %40, align 8, !tbaa !11
  br label %2384

2382:                                             ; preds = %2375
  %2383 = load double, ptr %41, align 8, !tbaa !11
  br label %2384

2384:                                             ; preds = %2382, %2380
  %2385 = phi double [ %2381, %2380 ], [ %2383, %2382 ]
  store double %2385, ptr %40, align 8, !tbaa !11
  %2386 = load double, ptr %40, align 8, !tbaa !11
  %2387 = load double, ptr %51, align 8, !tbaa !11
  %2388 = fcmp oge double %2386, %2387
  br i1 %2388, label %2389, label %2391

2389:                                             ; preds = %2384
  %2390 = load double, ptr %40, align 8, !tbaa !11
  br label %2393

2391:                                             ; preds = %2384
  %2392 = load double, ptr %51, align 8, !tbaa !11
  br label %2393

2393:                                             ; preds = %2391, %2389
  %2394 = phi double [ %2390, %2389 ], [ %2392, %2391 ]
  store double %2394, ptr %51, align 8, !tbaa !11
  %2395 = load double, ptr %73, align 8, !tbaa !11
  %2396 = load double, ptr %51, align 8, !tbaa !11
  %2397 = fdiv double %2395, %2396
  store double %2397, ptr %61, align 8, !tbaa !11
  br label %2398

2398:                                             ; preds = %2393, %2179
  br label %2399

2399:                                             ; preds = %2398, %2024
  br label %2400

2400:                                             ; preds = %2399
  %2401 = load i32, ptr %54, align 4, !tbaa !9
  %2402 = add nsw i32 %2401, 1
  store i32 %2402, ptr %54, align 4, !tbaa !9
  br label %2016, !llvm.loop !27

2403:                                             ; preds = %2016
  %2404 = load i32, ptr %50, align 4, !tbaa !9
  %2405 = icmp ne i32 %2404, 0
  br i1 %2405, label %2495, label %2406

2406:                                             ; preds = %2403
  %2407 = load ptr, ptr %18, align 8, !tbaa !5
  %2408 = load i32, ptr %2407, align 4, !tbaa !9
  %2409 = load i32, ptr %68, align 4, !tbaa !9
  %2410 = sub nsw i32 %2408, %2409
  %2411 = add nsw i32 %2410, 1
  store i32 %2411, ptr %36, align 4, !tbaa !9
  %2412 = load ptr, ptr %27, align 8, !tbaa !5
  %2413 = load i32, ptr %68, align 4, !tbaa !9
  %2414 = load ptr, ptr %18, align 8, !tbaa !5
  %2415 = load i32, ptr %2414, align 4, !tbaa !9
  %2416 = add nsw i32 %2413, %2415
  %2417 = sext i32 %2416 to i64
  %2418 = getelementptr inbounds double, ptr %2412, i64 %2417
  %2419 = load ptr, ptr %21, align 8, !tbaa !5
  %2420 = load i32, ptr %68, align 4, !tbaa !9
  %2421 = load i32, ptr %70, align 4, !tbaa !9
  %2422 = load i32, ptr %31, align 4, !tbaa !9
  %2423 = mul nsw i32 %2421, %2422
  %2424 = add nsw i32 %2420, %2423
  %2425 = sext i32 %2424 to i64
  %2426 = getelementptr inbounds double, ptr %2419, i64 %2425
  call void @dcopy_(ptr noundef %36, ptr noundef %2418, ptr noundef @c__1, ptr noundef %2426, ptr noundef @c__1)
  %2427 = load ptr, ptr %18, align 8, !tbaa !5
  %2428 = load i32, ptr %2427, align 4, !tbaa !9
  %2429 = load i32, ptr %68, align 4, !tbaa !9
  %2430 = sub nsw i32 %2428, %2429
  %2431 = add nsw i32 %2430, 1
  store i32 %2431, ptr %36, align 4, !tbaa !9
  %2432 = load ptr, ptr %21, align 8, !tbaa !5
  %2433 = load i32, ptr %68, align 4, !tbaa !9
  %2434 = load i32, ptr %70, align 4, !tbaa !9
  %2435 = load i32, ptr %31, align 4, !tbaa !9
  %2436 = mul nsw i32 %2434, %2435
  %2437 = add nsw i32 %2433, %2436
  %2438 = sext i32 %2437 to i64
  %2439 = getelementptr inbounds double, ptr %2432, i64 %2438
  %2440 = call i32 @idamax_(ptr noundef %36, ptr noundef %2439, ptr noundef @c__1)
  %2441 = load i32, ptr %68, align 4, !tbaa !9
  %2442 = add nsw i32 %2440, %2441
  %2443 = sub nsw i32 %2442, 1
  store i32 %2443, ptr %67, align 4, !tbaa !9
  %2444 = load ptr, ptr %21, align 8, !tbaa !5
  %2445 = load i32, ptr %67, align 4, !tbaa !9
  %2446 = load i32, ptr %70, align 4, !tbaa !9
  %2447 = load i32, ptr %31, align 4, !tbaa !9
  %2448 = mul nsw i32 %2446, %2447
  %2449 = add nsw i32 %2445, %2448
  %2450 = sext i32 %2449 to i64
  %2451 = getelementptr inbounds double, ptr %2444, i64 %2450
  %2452 = load double, ptr %2451, align 8, !tbaa !11
  store double %2452, ptr %38, align 8, !tbaa !11
  %2453 = load double, ptr %38, align 8, !tbaa !11
  %2454 = fcmp oge double %2453, 0.000000e+00
  br i1 %2454, label %2455, label %2457

2455:                                             ; preds = %2406
  %2456 = load double, ptr %38, align 8, !tbaa !11
  br label %2460

2457:                                             ; preds = %2406
  %2458 = load double, ptr %38, align 8, !tbaa !11
  %2459 = fneg double %2458
  br label %2460

2460:                                             ; preds = %2457, %2455
  %2461 = phi double [ %2456, %2455 ], [ %2459, %2457 ]
  %2462 = fdiv double 1.000000e+00, %2461
  store double %2462, ptr %58, align 8, !tbaa !11
  %2463 = load ptr, ptr %18, align 8, !tbaa !5
  %2464 = load i32, ptr %2463, align 4, !tbaa !9
  %2465 = load i32, ptr %68, align 4, !tbaa !9
  %2466 = sub nsw i32 %2464, %2465
  %2467 = add nsw i32 %2466, 1
  store i32 %2467, ptr %36, align 4, !tbaa !9
  %2468 = load ptr, ptr %21, align 8, !tbaa !5
  %2469 = load i32, ptr %68, align 4, !tbaa !9
  %2470 = load i32, ptr %70, align 4, !tbaa !9
  %2471 = load i32, ptr %31, align 4, !tbaa !9
  %2472 = mul nsw i32 %2470, %2471
  %2473 = add nsw i32 %2469, %2472
  %2474 = sext i32 %2473 to i64
  %2475 = getelementptr inbounds double, ptr %2468, i64 %2474
  call void @dscal_(ptr noundef %36, ptr noundef %58, ptr noundef %2475, ptr noundef @c__1)
  %2476 = load i32, ptr %68, align 4, !tbaa !9
  %2477 = sub nsw i32 %2476, 1
  store i32 %2477, ptr %36, align 4, !tbaa !9
  store i32 1, ptr %55, align 4, !tbaa !9
  br label %2478

2478:                                             ; preds = %2491, %2460
  %2479 = load i32, ptr %55, align 4, !tbaa !9
  %2480 = load i32, ptr %36, align 4, !tbaa !9
  %2481 = icmp sle i32 %2479, %2480
  br i1 %2481, label %2482, label %2494

2482:                                             ; preds = %2478
  %2483 = load ptr, ptr %21, align 8, !tbaa !5
  %2484 = load i32, ptr %55, align 4, !tbaa !9
  %2485 = load i32, ptr %70, align 4, !tbaa !9
  %2486 = load i32, ptr %31, align 4, !tbaa !9
  %2487 = mul nsw i32 %2485, %2486
  %2488 = add nsw i32 %2484, %2487
  %2489 = sext i32 %2488 to i64
  %2490 = getelementptr inbounds double, ptr %2483, i64 %2489
  store double 0.000000e+00, ptr %2490, align 8, !tbaa !11
  br label %2491

2491:                                             ; preds = %2482
  %2492 = load i32, ptr %55, align 4, !tbaa !9
  %2493 = add nsw i32 %2492, 1
  store i32 %2493, ptr %55, align 4, !tbaa !9
  br label %2478, !llvm.loop !28

2494:                                             ; preds = %2478
  br label %2574

2495:                                             ; preds = %2403
  %2496 = load i32, ptr %68, align 4, !tbaa !9
  %2497 = load ptr, ptr %18, align 8, !tbaa !5
  %2498 = load i32, ptr %2497, align 4, !tbaa !9
  %2499 = icmp slt i32 %2496, %2498
  br i1 %2499, label %2500, label %2537

2500:                                             ; preds = %2495
  %2501 = load ptr, ptr %18, align 8, !tbaa !5
  %2502 = load i32, ptr %2501, align 4, !tbaa !9
  %2503 = load i32, ptr %68, align 4, !tbaa !9
  %2504 = sub nsw i32 %2502, %2503
  store i32 %2504, ptr %36, align 4, !tbaa !9
  %2505 = load ptr, ptr %18, align 8, !tbaa !5
  %2506 = load ptr, ptr %21, align 8, !tbaa !5
  %2507 = load i32, ptr %68, align 4, !tbaa !9
  %2508 = add nsw i32 %2507, 1
  %2509 = load i32, ptr %31, align 4, !tbaa !9
  %2510 = mul nsw i32 %2508, %2509
  %2511 = add nsw i32 %2510, 1
  %2512 = sext i32 %2511 to i64
  %2513 = getelementptr inbounds double, ptr %2506, i64 %2512
  %2514 = load ptr, ptr %22, align 8, !tbaa !5
  %2515 = load ptr, ptr %27, align 8, !tbaa !5
  %2516 = load i32, ptr %68, align 4, !tbaa !9
  %2517 = add nsw i32 %2516, 1
  %2518 = load ptr, ptr %18, align 8, !tbaa !5
  %2519 = load i32, ptr %2518, align 4, !tbaa !9
  %2520 = add nsw i32 %2517, %2519
  %2521 = sext i32 %2520 to i64
  %2522 = getelementptr inbounds double, ptr %2515, i64 %2521
  %2523 = load ptr, ptr %27, align 8, !tbaa !5
  %2524 = load i32, ptr %68, align 4, !tbaa !9
  %2525 = load ptr, ptr %18, align 8, !tbaa !5
  %2526 = load i32, ptr %2525, align 4, !tbaa !9
  %2527 = add nsw i32 %2524, %2526
  %2528 = sext i32 %2527 to i64
  %2529 = getelementptr inbounds double, ptr %2523, i64 %2528
  %2530 = load ptr, ptr %21, align 8, !tbaa !5
  %2531 = load i32, ptr %68, align 4, !tbaa !9
  %2532 = load i32, ptr %31, align 4, !tbaa !9
  %2533 = mul nsw i32 %2531, %2532
  %2534 = add nsw i32 %2533, 1
  %2535 = sext i32 %2534 to i64
  %2536 = getelementptr inbounds double, ptr %2530, i64 %2535
  call void @dgemv_(ptr noundef @.str.8, ptr noundef %2505, ptr noundef %36, ptr noundef @c_b22, ptr noundef %2513, ptr noundef %2514, ptr noundef %2522, ptr noundef @c__1, ptr noundef %2529, ptr noundef %2536, ptr noundef @c__1)
  br label %2537

2537:                                             ; preds = %2500, %2495
  %2538 = load ptr, ptr %18, align 8, !tbaa !5
  %2539 = load ptr, ptr %21, align 8, !tbaa !5
  %2540 = load i32, ptr %68, align 4, !tbaa !9
  %2541 = load i32, ptr %31, align 4, !tbaa !9
  %2542 = mul nsw i32 %2540, %2541
  %2543 = add nsw i32 %2542, 1
  %2544 = sext i32 %2543 to i64
  %2545 = getelementptr inbounds double, ptr %2539, i64 %2544
  %2546 = call i32 @idamax_(ptr noundef %2538, ptr noundef %2545, ptr noundef @c__1)
  store i32 %2546, ptr %67, align 4, !tbaa !9
  %2547 = load ptr, ptr %21, align 8, !tbaa !5
  %2548 = load i32, ptr %67, align 4, !tbaa !9
  %2549 = load i32, ptr %68, align 4, !tbaa !9
  %2550 = load i32, ptr %31, align 4, !tbaa !9
  %2551 = mul nsw i32 %2549, %2550
  %2552 = add nsw i32 %2548, %2551
  %2553 = sext i32 %2552 to i64
  %2554 = getelementptr inbounds double, ptr %2547, i64 %2553
  %2555 = load double, ptr %2554, align 8, !tbaa !11
  store double %2555, ptr %38, align 8, !tbaa !11
  %2556 = load double, ptr %38, align 8, !tbaa !11
  %2557 = fcmp oge double %2556, 0.000000e+00
  br i1 %2557, label %2558, label %2560

2558:                                             ; preds = %2537
  %2559 = load double, ptr %38, align 8, !tbaa !11
  br label %2563

2560:                                             ; preds = %2537
  %2561 = load double, ptr %38, align 8, !tbaa !11
  %2562 = fneg double %2561
  br label %2563

2563:                                             ; preds = %2560, %2558
  %2564 = phi double [ %2559, %2558 ], [ %2562, %2560 ]
  %2565 = fdiv double 1.000000e+00, %2564
  store double %2565, ptr %58, align 8, !tbaa !11
  %2566 = load ptr, ptr %18, align 8, !tbaa !5
  %2567 = load ptr, ptr %21, align 8, !tbaa !5
  %2568 = load i32, ptr %68, align 4, !tbaa !9
  %2569 = load i32, ptr %31, align 4, !tbaa !9
  %2570 = mul nsw i32 %2568, %2569
  %2571 = add nsw i32 %2570, 1
  %2572 = sext i32 %2571 to i64
  %2573 = getelementptr inbounds double, ptr %2567, i64 %2572
  call void @dscal_(ptr noundef %2566, ptr noundef %58, ptr noundef %2573, ptr noundef @c__1)
  br label %2574

2574:                                             ; preds = %2563, %2494
  br label %3716

2575:                                             ; preds = %1967
  %2576 = load ptr, ptr %19, align 8, !tbaa !5
  %2577 = load i32, ptr %68, align 4, !tbaa !9
  %2578 = load i32, ptr %68, align 4, !tbaa !9
  %2579 = add nsw i32 %2578, 1
  %2580 = load i32, ptr %29, align 4, !tbaa !9
  %2581 = mul nsw i32 %2579, %2580
  %2582 = add nsw i32 %2577, %2581
  %2583 = sext i32 %2582 to i64
  %2584 = getelementptr inbounds double, ptr %2576, i64 %2583
  %2585 = load double, ptr %2584, align 8, !tbaa !11
  store double %2585, ptr %38, align 8, !tbaa !11
  %2586 = load double, ptr %38, align 8, !tbaa !11
  %2587 = fcmp oge double %2586, 0.000000e+00
  br i1 %2587, label %2588, label %2590

2588:                                             ; preds = %2575
  %2589 = load double, ptr %38, align 8, !tbaa !11
  br label %2593

2590:                                             ; preds = %2575
  %2591 = load double, ptr %38, align 8, !tbaa !11
  %2592 = fneg double %2591
  br label %2593

2593:                                             ; preds = %2590, %2588
  %2594 = phi double [ %2589, %2588 ], [ %2592, %2590 ]
  %2595 = load ptr, ptr %19, align 8, !tbaa !5
  %2596 = load i32, ptr %68, align 4, !tbaa !9
  %2597 = add nsw i32 %2596, 1
  %2598 = load i32, ptr %68, align 4, !tbaa !9
  %2599 = load i32, ptr %29, align 4, !tbaa !9
  %2600 = mul nsw i32 %2598, %2599
  %2601 = add nsw i32 %2597, %2600
  %2602 = sext i32 %2601 to i64
  %2603 = getelementptr inbounds double, ptr %2595, i64 %2602
  %2604 = load double, ptr %2603, align 8, !tbaa !11
  store double %2604, ptr %39, align 8, !tbaa !11
  %2605 = load double, ptr %39, align 8, !tbaa !11
  %2606 = fcmp oge double %2605, 0.000000e+00
  br i1 %2606, label %2607, label %2609

2607:                                             ; preds = %2593
  %2608 = load double, ptr %39, align 8, !tbaa !11
  br label %2612

2609:                                             ; preds = %2593
  %2610 = load double, ptr %39, align 8, !tbaa !11
  %2611 = fneg double %2610
  br label %2612

2612:                                             ; preds = %2609, %2607
  %2613 = phi double [ %2608, %2607 ], [ %2611, %2609 ]
  %2614 = fcmp oge double %2594, %2613
  br i1 %2614, label %2615, label %2642

2615:                                             ; preds = %2612
  %2616 = load double, ptr %71, align 8, !tbaa !11
  %2617 = load ptr, ptr %19, align 8, !tbaa !5
  %2618 = load i32, ptr %68, align 4, !tbaa !9
  %2619 = load i32, ptr %68, align 4, !tbaa !9
  %2620 = add nsw i32 %2619, 1
  %2621 = load i32, ptr %29, align 4, !tbaa !9
  %2622 = mul nsw i32 %2620, %2621
  %2623 = add nsw i32 %2618, %2622
  %2624 = sext i32 %2623 to i64
  %2625 = getelementptr inbounds double, ptr %2617, i64 %2624
  %2626 = load double, ptr %2625, align 8, !tbaa !11
  %2627 = fdiv double %2616, %2626
  %2628 = load ptr, ptr %27, align 8, !tbaa !5
  %2629 = load i32, ptr %68, align 4, !tbaa !9
  %2630 = load ptr, ptr %18, align 8, !tbaa !5
  %2631 = load i32, ptr %2630, align 4, !tbaa !9
  %2632 = add nsw i32 %2629, %2631
  %2633 = sext i32 %2632 to i64
  %2634 = getelementptr inbounds double, ptr %2628, i64 %2633
  store double %2627, ptr %2634, align 8, !tbaa !11
  %2635 = load ptr, ptr %27, align 8, !tbaa !5
  %2636 = load i32, ptr %68, align 4, !tbaa !9
  %2637 = add nsw i32 %2636, 1
  %2638 = load i32, ptr %65, align 4, !tbaa !9
  %2639 = add nsw i32 %2637, %2638
  %2640 = sext i32 %2639 to i64
  %2641 = getelementptr inbounds double, ptr %2635, i64 %2640
  store double 1.000000e+00, ptr %2641, align 8, !tbaa !11
  br label %2670

2642:                                             ; preds = %2612
  %2643 = load ptr, ptr %27, align 8, !tbaa !5
  %2644 = load i32, ptr %68, align 4, !tbaa !9
  %2645 = load ptr, ptr %18, align 8, !tbaa !5
  %2646 = load i32, ptr %2645, align 4, !tbaa !9
  %2647 = add nsw i32 %2644, %2646
  %2648 = sext i32 %2647 to i64
  %2649 = getelementptr inbounds double, ptr %2643, i64 %2648
  store double 1.000000e+00, ptr %2649, align 8, !tbaa !11
  %2650 = load double, ptr %71, align 8, !tbaa !11
  %2651 = fneg double %2650
  %2652 = load ptr, ptr %19, align 8, !tbaa !5
  %2653 = load i32, ptr %68, align 4, !tbaa !9
  %2654 = add nsw i32 %2653, 1
  %2655 = load i32, ptr %68, align 4, !tbaa !9
  %2656 = load i32, ptr %29, align 4, !tbaa !9
  %2657 = mul nsw i32 %2655, %2656
  %2658 = add nsw i32 %2654, %2657
  %2659 = sext i32 %2658 to i64
  %2660 = getelementptr inbounds double, ptr %2652, i64 %2659
  %2661 = load double, ptr %2660, align 8, !tbaa !11
  %2662 = fdiv double %2651, %2661
  %2663 = load ptr, ptr %27, align 8, !tbaa !5
  %2664 = load i32, ptr %68, align 4, !tbaa !9
  %2665 = add nsw i32 %2664, 1
  %2666 = load i32, ptr %65, align 4, !tbaa !9
  %2667 = add nsw i32 %2665, %2666
  %2668 = sext i32 %2667 to i64
  %2669 = getelementptr inbounds double, ptr %2663, i64 %2668
  store double %2662, ptr %2669, align 8, !tbaa !11
  br label %2670

2670:                                             ; preds = %2642, %2615
  %2671 = load ptr, ptr %27, align 8, !tbaa !5
  %2672 = load i32, ptr %68, align 4, !tbaa !9
  %2673 = add nsw i32 %2672, 1
  %2674 = load ptr, ptr %18, align 8, !tbaa !5
  %2675 = load i32, ptr %2674, align 4, !tbaa !9
  %2676 = add nsw i32 %2673, %2675
  %2677 = sext i32 %2676 to i64
  %2678 = getelementptr inbounds double, ptr %2671, i64 %2677
  store double 0.000000e+00, ptr %2678, align 8, !tbaa !11
  %2679 = load ptr, ptr %27, align 8, !tbaa !5
  %2680 = load i32, ptr %68, align 4, !tbaa !9
  %2681 = load i32, ptr %65, align 4, !tbaa !9
  %2682 = add nsw i32 %2680, %2681
  %2683 = sext i32 %2682 to i64
  %2684 = getelementptr inbounds double, ptr %2679, i64 %2683
  store double 0.000000e+00, ptr %2684, align 8, !tbaa !11
  %2685 = load ptr, ptr %18, align 8, !tbaa !5
  %2686 = load i32, ptr %2685, align 4, !tbaa !9
  store i32 %2686, ptr %36, align 4, !tbaa !9
  %2687 = load i32, ptr %68, align 4, !tbaa !9
  %2688 = add nsw i32 %2687, 2
  store i32 %2688, ptr %55, align 4, !tbaa !9
  br label %2689

2689:                                             ; preds = %2746, %2670
  %2690 = load i32, ptr %55, align 4, !tbaa !9
  %2691 = load i32, ptr %36, align 4, !tbaa !9
  %2692 = icmp sle i32 %2690, %2691
  br i1 %2692, label %2693, label %2749

2693:                                             ; preds = %2689
  %2694 = load ptr, ptr %27, align 8, !tbaa !5
  %2695 = load i32, ptr %68, align 4, !tbaa !9
  %2696 = load ptr, ptr %18, align 8, !tbaa !5
  %2697 = load i32, ptr %2696, align 4, !tbaa !9
  %2698 = add nsw i32 %2695, %2697
  %2699 = sext i32 %2698 to i64
  %2700 = getelementptr inbounds double, ptr %2694, i64 %2699
  %2701 = load double, ptr %2700, align 8, !tbaa !11
  %2702 = fneg double %2701
  %2703 = load ptr, ptr %19, align 8, !tbaa !5
  %2704 = load i32, ptr %68, align 4, !tbaa !9
  %2705 = load i32, ptr %55, align 4, !tbaa !9
  %2706 = load i32, ptr %29, align 4, !tbaa !9
  %2707 = mul nsw i32 %2705, %2706
  %2708 = add nsw i32 %2704, %2707
  %2709 = sext i32 %2708 to i64
  %2710 = getelementptr inbounds double, ptr %2703, i64 %2709
  %2711 = load double, ptr %2710, align 8, !tbaa !11
  %2712 = fmul double %2702, %2711
  %2713 = load ptr, ptr %27, align 8, !tbaa !5
  %2714 = load i32, ptr %55, align 4, !tbaa !9
  %2715 = load ptr, ptr %18, align 8, !tbaa !5
  %2716 = load i32, ptr %2715, align 4, !tbaa !9
  %2717 = add nsw i32 %2714, %2716
  %2718 = sext i32 %2717 to i64
  %2719 = getelementptr inbounds double, ptr %2713, i64 %2718
  store double %2712, ptr %2719, align 8, !tbaa !11
  %2720 = load ptr, ptr %27, align 8, !tbaa !5
  %2721 = load i32, ptr %68, align 4, !tbaa !9
  %2722 = add nsw i32 %2721, 1
  %2723 = load i32, ptr %65, align 4, !tbaa !9
  %2724 = add nsw i32 %2722, %2723
  %2725 = sext i32 %2724 to i64
  %2726 = getelementptr inbounds double, ptr %2720, i64 %2725
  %2727 = load double, ptr %2726, align 8, !tbaa !11
  %2728 = fneg double %2727
  %2729 = load ptr, ptr %19, align 8, !tbaa !5
  %2730 = load i32, ptr %68, align 4, !tbaa !9
  %2731 = add nsw i32 %2730, 1
  %2732 = load i32, ptr %55, align 4, !tbaa !9
  %2733 = load i32, ptr %29, align 4, !tbaa !9
  %2734 = mul nsw i32 %2732, %2733
  %2735 = add nsw i32 %2731, %2734
  %2736 = sext i32 %2735 to i64
  %2737 = getelementptr inbounds double, ptr %2729, i64 %2736
  %2738 = load double, ptr %2737, align 8, !tbaa !11
  %2739 = fmul double %2728, %2738
  %2740 = load ptr, ptr %27, align 8, !tbaa !5
  %2741 = load i32, ptr %55, align 4, !tbaa !9
  %2742 = load i32, ptr %65, align 4, !tbaa !9
  %2743 = add nsw i32 %2741, %2742
  %2744 = sext i32 %2743 to i64
  %2745 = getelementptr inbounds double, ptr %2740, i64 %2744
  store double %2739, ptr %2745, align 8, !tbaa !11
  br label %2746

2746:                                             ; preds = %2693
  %2747 = load i32, ptr %55, align 4, !tbaa !9
  %2748 = add nsw i32 %2747, 1
  store i32 %2748, ptr %55, align 4, !tbaa !9
  br label %2689, !llvm.loop !29

2749:                                             ; preds = %2689
  store double 1.000000e+00, ptr %51, align 8, !tbaa !11
  %2750 = load double, ptr %73, align 8, !tbaa !11
  store double %2750, ptr %61, align 8, !tbaa !11
  %2751 = load i32, ptr %68, align 4, !tbaa !9
  %2752 = add nsw i32 %2751, 2
  store i32 %2752, ptr %52, align 4, !tbaa !9
  %2753 = load ptr, ptr %18, align 8, !tbaa !5
  %2754 = load i32, ptr %2753, align 4, !tbaa !9
  store i32 %2754, ptr %36, align 4, !tbaa !9
  %2755 = load i32, ptr %68, align 4, !tbaa !9
  %2756 = add nsw i32 %2755, 2
  store i32 %2756, ptr %54, align 4, !tbaa !9
  br label %2757

2757:                                             ; preds = %3359, %2749
  %2758 = load i32, ptr %54, align 4, !tbaa !9
  %2759 = load i32, ptr %36, align 4, !tbaa !9
  %2760 = icmp sle i32 %2758, %2759
  br i1 %2760, label %2761, label %3362

2761:                                             ; preds = %2757
  %2762 = load i32, ptr %54, align 4, !tbaa !9
  %2763 = load i32, ptr %52, align 4, !tbaa !9
  %2764 = icmp slt i32 %2762, %2763
  br i1 %2764, label %2765, label %2766

2765:                                             ; preds = %2761
  br label %3358

2766:                                             ; preds = %2761
  %2767 = load i32, ptr %54, align 4, !tbaa !9
  store i32 %2767, ptr %63, align 4, !tbaa !9
  %2768 = load i32, ptr %54, align 4, !tbaa !9
  store i32 %2768, ptr %64, align 4, !tbaa !9
  %2769 = load i32, ptr %54, align 4, !tbaa !9
  %2770 = add nsw i32 %2769, 1
  store i32 %2770, ptr %52, align 4, !tbaa !9
  %2771 = load i32, ptr %54, align 4, !tbaa !9
  %2772 = load ptr, ptr %18, align 8, !tbaa !5
  %2773 = load i32, ptr %2772, align 4, !tbaa !9
  %2774 = icmp slt i32 %2771, %2773
  br i1 %2774, label %2775, label %2793

2775:                                             ; preds = %2766
  %2776 = load ptr, ptr %19, align 8, !tbaa !5
  %2777 = load i32, ptr %54, align 4, !tbaa !9
  %2778 = add nsw i32 %2777, 1
  %2779 = load i32, ptr %54, align 4, !tbaa !9
  %2780 = load i32, ptr %29, align 4, !tbaa !9
  %2781 = mul nsw i32 %2779, %2780
  %2782 = add nsw i32 %2778, %2781
  %2783 = sext i32 %2782 to i64
  %2784 = getelementptr inbounds double, ptr %2776, i64 %2783
  %2785 = load double, ptr %2784, align 8, !tbaa !11
  %2786 = fcmp une double %2785, 0.000000e+00
  br i1 %2786, label %2787, label %2792

2787:                                             ; preds = %2775
  %2788 = load i32, ptr %54, align 4, !tbaa !9
  %2789 = add nsw i32 %2788, 1
  store i32 %2789, ptr %64, align 4, !tbaa !9
  %2790 = load i32, ptr %54, align 4, !tbaa !9
  %2791 = add nsw i32 %2790, 2
  store i32 %2791, ptr %52, align 4, !tbaa !9
  br label %2792

2792:                                             ; preds = %2787, %2775
  br label %2793

2793:                                             ; preds = %2792, %2766
  %2794 = load i32, ptr %63, align 4, !tbaa !9
  %2795 = load i32, ptr %64, align 4, !tbaa !9
  %2796 = icmp eq i32 %2794, %2795
  br i1 %2796, label %2797, label %3011

2797:                                             ; preds = %2793
  %2798 = load ptr, ptr %27, align 8, !tbaa !5
  %2799 = load i32, ptr %54, align 4, !tbaa !9
  %2800 = sext i32 %2799 to i64
  %2801 = getelementptr inbounds double, ptr %2798, i64 %2800
  %2802 = load double, ptr %2801, align 8, !tbaa !11
  %2803 = load double, ptr %61, align 8, !tbaa !11
  %2804 = fcmp ogt double %2802, %2803
  br i1 %2804, label %2805, label %2832

2805:                                             ; preds = %2797
  %2806 = load double, ptr %51, align 8, !tbaa !11
  %2807 = fdiv double 1.000000e+00, %2806
  store double %2807, ptr %76, align 8, !tbaa !11
  %2808 = load ptr, ptr %18, align 8, !tbaa !5
  %2809 = load i32, ptr %2808, align 4, !tbaa !9
  %2810 = load i32, ptr %68, align 4, !tbaa !9
  %2811 = sub nsw i32 %2809, %2810
  %2812 = add nsw i32 %2811, 1
  store i32 %2812, ptr %37, align 4, !tbaa !9
  %2813 = load ptr, ptr %27, align 8, !tbaa !5
  %2814 = load i32, ptr %68, align 4, !tbaa !9
  %2815 = load ptr, ptr %18, align 8, !tbaa !5
  %2816 = load i32, ptr %2815, align 4, !tbaa !9
  %2817 = add nsw i32 %2814, %2816
  %2818 = sext i32 %2817 to i64
  %2819 = getelementptr inbounds double, ptr %2813, i64 %2818
  call void @dscal_(ptr noundef %37, ptr noundef %76, ptr noundef %2819, ptr noundef @c__1)
  %2820 = load ptr, ptr %18, align 8, !tbaa !5
  %2821 = load i32, ptr %2820, align 4, !tbaa !9
  %2822 = load i32, ptr %68, align 4, !tbaa !9
  %2823 = sub nsw i32 %2821, %2822
  %2824 = add nsw i32 %2823, 1
  store i32 %2824, ptr %37, align 4, !tbaa !9
  %2825 = load ptr, ptr %27, align 8, !tbaa !5
  %2826 = load i32, ptr %68, align 4, !tbaa !9
  %2827 = load i32, ptr %65, align 4, !tbaa !9
  %2828 = add nsw i32 %2826, %2827
  %2829 = sext i32 %2828 to i64
  %2830 = getelementptr inbounds double, ptr %2825, i64 %2829
  call void @dscal_(ptr noundef %37, ptr noundef %76, ptr noundef %2830, ptr noundef @c__1)
  store double 1.000000e+00, ptr %51, align 8, !tbaa !11
  %2831 = load double, ptr %73, align 8, !tbaa !11
  store double %2831, ptr %61, align 8, !tbaa !11
  br label %2832

2832:                                             ; preds = %2805, %2797
  %2833 = load i32, ptr %54, align 4, !tbaa !9
  %2834 = load i32, ptr %68, align 4, !tbaa !9
  %2835 = sub nsw i32 %2833, %2834
  %2836 = sub nsw i32 %2835, 2
  store i32 %2836, ptr %37, align 4, !tbaa !9
  %2837 = load ptr, ptr %19, align 8, !tbaa !5
  %2838 = load i32, ptr %68, align 4, !tbaa !9
  %2839 = add nsw i32 %2838, 2
  %2840 = load i32, ptr %54, align 4, !tbaa !9
  %2841 = load i32, ptr %29, align 4, !tbaa !9
  %2842 = mul nsw i32 %2840, %2841
  %2843 = add nsw i32 %2839, %2842
  %2844 = sext i32 %2843 to i64
  %2845 = getelementptr inbounds double, ptr %2837, i64 %2844
  %2846 = load ptr, ptr %27, align 8, !tbaa !5
  %2847 = load i32, ptr %68, align 4, !tbaa !9
  %2848 = add nsw i32 %2847, 2
  %2849 = load ptr, ptr %18, align 8, !tbaa !5
  %2850 = load i32, ptr %2849, align 4, !tbaa !9
  %2851 = add nsw i32 %2848, %2850
  %2852 = sext i32 %2851 to i64
  %2853 = getelementptr inbounds double, ptr %2846, i64 %2852
  %2854 = call double @ddot_(ptr noundef %37, ptr noundef %2845, ptr noundef @c__1, ptr noundef %2853, ptr noundef @c__1)
  %2855 = load ptr, ptr %27, align 8, !tbaa !5
  %2856 = load i32, ptr %54, align 4, !tbaa !9
  %2857 = load ptr, ptr %18, align 8, !tbaa !5
  %2858 = load i32, ptr %2857, align 4, !tbaa !9
  %2859 = add nsw i32 %2856, %2858
  %2860 = sext i32 %2859 to i64
  %2861 = getelementptr inbounds double, ptr %2855, i64 %2860
  %2862 = load double, ptr %2861, align 8, !tbaa !11
  %2863 = fsub double %2862, %2854
  store double %2863, ptr %2861, align 8, !tbaa !11
  %2864 = load i32, ptr %54, align 4, !tbaa !9
  %2865 = load i32, ptr %68, align 4, !tbaa !9
  %2866 = sub nsw i32 %2864, %2865
  %2867 = sub nsw i32 %2866, 2
  store i32 %2867, ptr %37, align 4, !tbaa !9
  %2868 = load ptr, ptr %19, align 8, !tbaa !5
  %2869 = load i32, ptr %68, align 4, !tbaa !9
  %2870 = add nsw i32 %2869, 2
  %2871 = load i32, ptr %54, align 4, !tbaa !9
  %2872 = load i32, ptr %29, align 4, !tbaa !9
  %2873 = mul nsw i32 %2871, %2872
  %2874 = add nsw i32 %2870, %2873
  %2875 = sext i32 %2874 to i64
  %2876 = getelementptr inbounds double, ptr %2868, i64 %2875
  %2877 = load ptr, ptr %27, align 8, !tbaa !5
  %2878 = load i32, ptr %68, align 4, !tbaa !9
  %2879 = add nsw i32 %2878, 2
  %2880 = load i32, ptr %65, align 4, !tbaa !9
  %2881 = add nsw i32 %2879, %2880
  %2882 = sext i32 %2881 to i64
  %2883 = getelementptr inbounds double, ptr %2877, i64 %2882
  %2884 = call double @ddot_(ptr noundef %37, ptr noundef %2876, ptr noundef @c__1, ptr noundef %2883, ptr noundef @c__1)
  %2885 = load ptr, ptr %27, align 8, !tbaa !5
  %2886 = load i32, ptr %54, align 4, !tbaa !9
  %2887 = load i32, ptr %65, align 4, !tbaa !9
  %2888 = add nsw i32 %2886, %2887
  %2889 = sext i32 %2888 to i64
  %2890 = getelementptr inbounds double, ptr %2885, i64 %2889
  %2891 = load double, ptr %2890, align 8, !tbaa !11
  %2892 = fsub double %2891, %2884
  store double %2892, ptr %2890, align 8, !tbaa !11
  %2893 = load double, ptr %71, align 8, !tbaa !11
  %2894 = fneg double %2893
  store double %2894, ptr %38, align 8, !tbaa !11
  %2895 = load ptr, ptr %19, align 8, !tbaa !5
  %2896 = load i32, ptr %54, align 4, !tbaa !9
  %2897 = load i32, ptr %54, align 4, !tbaa !9
  %2898 = load i32, ptr %29, align 4, !tbaa !9
  %2899 = mul nsw i32 %2897, %2898
  %2900 = add nsw i32 %2896, %2899
  %2901 = sext i32 %2900 to i64
  %2902 = getelementptr inbounds double, ptr %2895, i64 %2901
  %2903 = load ptr, ptr %20, align 8, !tbaa !5
  %2904 = load ptr, ptr %27, align 8, !tbaa !5
  %2905 = load i32, ptr %54, align 4, !tbaa !9
  %2906 = load ptr, ptr %18, align 8, !tbaa !5
  %2907 = load i32, ptr %2906, align 4, !tbaa !9
  %2908 = add nsw i32 %2905, %2907
  %2909 = sext i32 %2908 to i64
  %2910 = getelementptr inbounds double, ptr %2904, i64 %2909
  %2911 = load ptr, ptr %18, align 8, !tbaa !5
  %2912 = getelementptr inbounds [4 x double], ptr %57, i64 0, i64 0
  call void @dlaln2_(ptr noundef @c_false, ptr noundef @c__1, ptr noundef @c__2, ptr noundef %49, ptr noundef @c_b22, ptr noundef %2902, ptr noundef %2903, ptr noundef @c_b22, ptr noundef @c_b22, ptr noundef %2910, ptr noundef %2911, ptr noundef %72, ptr noundef %38, ptr noundef %2912, ptr noundef @c__2, ptr noundef %56, ptr noundef %66, ptr noundef %46)
  %2913 = load double, ptr %56, align 8, !tbaa !11
  %2914 = fcmp une double %2913, 1.000000e+00
  br i1 %2914, label %2915, label %2939

2915:                                             ; preds = %2832
  %2916 = load ptr, ptr %18, align 8, !tbaa !5
  %2917 = load i32, ptr %2916, align 4, !tbaa !9
  %2918 = load i32, ptr %68, align 4, !tbaa !9
  %2919 = sub nsw i32 %2917, %2918
  %2920 = add nsw i32 %2919, 1
  store i32 %2920, ptr %37, align 4, !tbaa !9
  %2921 = load ptr, ptr %27, align 8, !tbaa !5
  %2922 = load i32, ptr %68, align 4, !tbaa !9
  %2923 = load ptr, ptr %18, align 8, !tbaa !5
  %2924 = load i32, ptr %2923, align 4, !tbaa !9
  %2925 = add nsw i32 %2922, %2924
  %2926 = sext i32 %2925 to i64
  %2927 = getelementptr inbounds double, ptr %2921, i64 %2926
  call void @dscal_(ptr noundef %37, ptr noundef %56, ptr noundef %2927, ptr noundef @c__1)
  %2928 = load ptr, ptr %18, align 8, !tbaa !5
  %2929 = load i32, ptr %2928, align 4, !tbaa !9
  %2930 = load i32, ptr %68, align 4, !tbaa !9
  %2931 = sub nsw i32 %2929, %2930
  %2932 = add nsw i32 %2931, 1
  store i32 %2932, ptr %37, align 4, !tbaa !9
  %2933 = load ptr, ptr %27, align 8, !tbaa !5
  %2934 = load i32, ptr %68, align 4, !tbaa !9
  %2935 = load i32, ptr %65, align 4, !tbaa !9
  %2936 = add nsw i32 %2934, %2935
  %2937 = sext i32 %2936 to i64
  %2938 = getelementptr inbounds double, ptr %2933, i64 %2937
  call void @dscal_(ptr noundef %37, ptr noundef %56, ptr noundef %2938, ptr noundef @c__1)
  br label %2939

2939:                                             ; preds = %2915, %2832
  %2940 = getelementptr inbounds [4 x double], ptr %57, i64 0, i64 0
  %2941 = load double, ptr %2940, align 16, !tbaa !11
  %2942 = load ptr, ptr %27, align 8, !tbaa !5
  %2943 = load i32, ptr %54, align 4, !tbaa !9
  %2944 = load ptr, ptr %18, align 8, !tbaa !5
  %2945 = load i32, ptr %2944, align 4, !tbaa !9
  %2946 = add nsw i32 %2943, %2945
  %2947 = sext i32 %2946 to i64
  %2948 = getelementptr inbounds double, ptr %2942, i64 %2947
  store double %2941, ptr %2948, align 8, !tbaa !11
  %2949 = getelementptr inbounds [4 x double], ptr %57, i64 0, i64 2
  %2950 = load double, ptr %2949, align 16, !tbaa !11
  %2951 = load ptr, ptr %27, align 8, !tbaa !5
  %2952 = load i32, ptr %54, align 4, !tbaa !9
  %2953 = load i32, ptr %65, align 4, !tbaa !9
  %2954 = add nsw i32 %2952, %2953
  %2955 = sext i32 %2954 to i64
  %2956 = getelementptr inbounds double, ptr %2951, i64 %2955
  store double %2950, ptr %2956, align 8, !tbaa !11
  %2957 = load ptr, ptr %27, align 8, !tbaa !5
  %2958 = load i32, ptr %54, align 4, !tbaa !9
  %2959 = load ptr, ptr %18, align 8, !tbaa !5
  %2960 = load i32, ptr %2959, align 4, !tbaa !9
  %2961 = add nsw i32 %2958, %2960
  %2962 = sext i32 %2961 to i64
  %2963 = getelementptr inbounds double, ptr %2957, i64 %2962
  %2964 = load double, ptr %2963, align 8, !tbaa !11
  store double %2964, ptr %38, align 8, !tbaa !11
  %2965 = load double, ptr %38, align 8, !tbaa !11
  %2966 = fcmp oge double %2965, 0.000000e+00
  br i1 %2966, label %2967, label %2969

2967:                                             ; preds = %2939
  %2968 = load double, ptr %38, align 8, !tbaa !11
  br label %2972

2969:                                             ; preds = %2939
  %2970 = load double, ptr %38, align 8, !tbaa !11
  %2971 = fneg double %2970
  br label %2972

2972:                                             ; preds = %2969, %2967
  %2973 = phi double [ %2968, %2967 ], [ %2971, %2969 ]
  store double %2973, ptr %40, align 8, !tbaa !11
  %2974 = load ptr, ptr %27, align 8, !tbaa !5
  %2975 = load i32, ptr %54, align 4, !tbaa !9
  %2976 = load i32, ptr %65, align 4, !tbaa !9
  %2977 = add nsw i32 %2975, %2976
  %2978 = sext i32 %2977 to i64
  %2979 = getelementptr inbounds double, ptr %2974, i64 %2978
  %2980 = load double, ptr %2979, align 8, !tbaa !11
  store double %2980, ptr %39, align 8, !tbaa !11
  %2981 = load double, ptr %39, align 8, !tbaa !11
  %2982 = fcmp oge double %2981, 0.000000e+00
  br i1 %2982, label %2983, label %2985

2983:                                             ; preds = %2972
  %2984 = load double, ptr %39, align 8, !tbaa !11
  br label %2988

2985:                                             ; preds = %2972
  %2986 = load double, ptr %39, align 8, !tbaa !11
  %2987 = fneg double %2986
  br label %2988

2988:                                             ; preds = %2985, %2983
  %2989 = phi double [ %2984, %2983 ], [ %2987, %2985 ]
  store double %2989, ptr %41, align 8, !tbaa !11
  %2990 = load double, ptr %40, align 8, !tbaa !11
  %2991 = load double, ptr %41, align 8, !tbaa !11
  %2992 = fcmp oge double %2990, %2991
  br i1 %2992, label %2993, label %2995

2993:                                             ; preds = %2988
  %2994 = load double, ptr %40, align 8, !tbaa !11
  br label %2997

2995:                                             ; preds = %2988
  %2996 = load double, ptr %41, align 8, !tbaa !11
  br label %2997

2997:                                             ; preds = %2995, %2993
  %2998 = phi double [ %2994, %2993 ], [ %2996, %2995 ]
  store double %2998, ptr %40, align 8, !tbaa !11
  %2999 = load double, ptr %40, align 8, !tbaa !11
  %3000 = load double, ptr %51, align 8, !tbaa !11
  %3001 = fcmp oge double %2999, %3000
  br i1 %3001, label %3002, label %3004

3002:                                             ; preds = %2997
  %3003 = load double, ptr %40, align 8, !tbaa !11
  br label %3006

3004:                                             ; preds = %2997
  %3005 = load double, ptr %51, align 8, !tbaa !11
  br label %3006

3006:                                             ; preds = %3004, %3002
  %3007 = phi double [ %3003, %3002 ], [ %3005, %3004 ]
  store double %3007, ptr %51, align 8, !tbaa !11
  %3008 = load double, ptr %73, align 8, !tbaa !11
  %3009 = load double, ptr %51, align 8, !tbaa !11
  %3010 = fdiv double %3008, %3009
  store double %3010, ptr %61, align 8, !tbaa !11
  br label %3357

3011:                                             ; preds = %2793
  %3012 = load ptr, ptr %27, align 8, !tbaa !5
  %3013 = load i32, ptr %54, align 4, !tbaa !9
  %3014 = sext i32 %3013 to i64
  %3015 = getelementptr inbounds double, ptr %3012, i64 %3014
  %3016 = load double, ptr %3015, align 8, !tbaa !11
  store double %3016, ptr %38, align 8, !tbaa !11
  %3017 = load ptr, ptr %27, align 8, !tbaa !5
  %3018 = load i32, ptr %54, align 4, !tbaa !9
  %3019 = add nsw i32 %3018, 1
  %3020 = sext i32 %3019 to i64
  %3021 = getelementptr inbounds double, ptr %3017, i64 %3020
  %3022 = load double, ptr %3021, align 8, !tbaa !11
  store double %3022, ptr %39, align 8, !tbaa !11
  %3023 = load double, ptr %38, align 8, !tbaa !11
  %3024 = load double, ptr %39, align 8, !tbaa !11
  %3025 = fcmp oge double %3023, %3024
  br i1 %3025, label %3026, label %3028

3026:                                             ; preds = %3011
  %3027 = load double, ptr %38, align 8, !tbaa !11
  br label %3030

3028:                                             ; preds = %3011
  %3029 = load double, ptr %39, align 8, !tbaa !11
  br label %3030

3030:                                             ; preds = %3028, %3026
  %3031 = phi double [ %3027, %3026 ], [ %3029, %3028 ]
  store double %3031, ptr %42, align 8, !tbaa !11
  %3032 = load double, ptr %42, align 8, !tbaa !11
  %3033 = load double, ptr %61, align 8, !tbaa !11
  %3034 = fcmp ogt double %3032, %3033
  br i1 %3034, label %3035, label %3062

3035:                                             ; preds = %3030
  %3036 = load double, ptr %51, align 8, !tbaa !11
  %3037 = fdiv double 1.000000e+00, %3036
  store double %3037, ptr %76, align 8, !tbaa !11
  %3038 = load ptr, ptr %18, align 8, !tbaa !5
  %3039 = load i32, ptr %3038, align 4, !tbaa !9
  %3040 = load i32, ptr %68, align 4, !tbaa !9
  %3041 = sub nsw i32 %3039, %3040
  %3042 = add nsw i32 %3041, 1
  store i32 %3042, ptr %37, align 4, !tbaa !9
  %3043 = load ptr, ptr %27, align 8, !tbaa !5
  %3044 = load i32, ptr %68, align 4, !tbaa !9
  %3045 = load ptr, ptr %18, align 8, !tbaa !5
  %3046 = load i32, ptr %3045, align 4, !tbaa !9
  %3047 = add nsw i32 %3044, %3046
  %3048 = sext i32 %3047 to i64
  %3049 = getelementptr inbounds double, ptr %3043, i64 %3048
  call void @dscal_(ptr noundef %37, ptr noundef %76, ptr noundef %3049, ptr noundef @c__1)
  %3050 = load ptr, ptr %18, align 8, !tbaa !5
  %3051 = load i32, ptr %3050, align 4, !tbaa !9
  %3052 = load i32, ptr %68, align 4, !tbaa !9
  %3053 = sub nsw i32 %3051, %3052
  %3054 = add nsw i32 %3053, 1
  store i32 %3054, ptr %37, align 4, !tbaa !9
  %3055 = load ptr, ptr %27, align 8, !tbaa !5
  %3056 = load i32, ptr %68, align 4, !tbaa !9
  %3057 = load i32, ptr %65, align 4, !tbaa !9
  %3058 = add nsw i32 %3056, %3057
  %3059 = sext i32 %3058 to i64
  %3060 = getelementptr inbounds double, ptr %3055, i64 %3059
  call void @dscal_(ptr noundef %37, ptr noundef %76, ptr noundef %3060, ptr noundef @c__1)
  store double 1.000000e+00, ptr %51, align 8, !tbaa !11
  %3061 = load double, ptr %73, align 8, !tbaa !11
  store double %3061, ptr %61, align 8, !tbaa !11
  br label %3062

3062:                                             ; preds = %3035, %3030
  %3063 = load i32, ptr %54, align 4, !tbaa !9
  %3064 = load i32, ptr %68, align 4, !tbaa !9
  %3065 = sub nsw i32 %3063, %3064
  %3066 = sub nsw i32 %3065, 2
  store i32 %3066, ptr %37, align 4, !tbaa !9
  %3067 = load ptr, ptr %19, align 8, !tbaa !5
  %3068 = load i32, ptr %68, align 4, !tbaa !9
  %3069 = add nsw i32 %3068, 2
  %3070 = load i32, ptr %54, align 4, !tbaa !9
  %3071 = load i32, ptr %29, align 4, !tbaa !9
  %3072 = mul nsw i32 %3070, %3071
  %3073 = add nsw i32 %3069, %3072
  %3074 = sext i32 %3073 to i64
  %3075 = getelementptr inbounds double, ptr %3067, i64 %3074
  %3076 = load ptr, ptr %27, align 8, !tbaa !5
  %3077 = load i32, ptr %68, align 4, !tbaa !9
  %3078 = add nsw i32 %3077, 2
  %3079 = load ptr, ptr %18, align 8, !tbaa !5
  %3080 = load i32, ptr %3079, align 4, !tbaa !9
  %3081 = add nsw i32 %3078, %3080
  %3082 = sext i32 %3081 to i64
  %3083 = getelementptr inbounds double, ptr %3076, i64 %3082
  %3084 = call double @ddot_(ptr noundef %37, ptr noundef %3075, ptr noundef @c__1, ptr noundef %3083, ptr noundef @c__1)
  %3085 = load ptr, ptr %27, align 8, !tbaa !5
  %3086 = load i32, ptr %54, align 4, !tbaa !9
  %3087 = load ptr, ptr %18, align 8, !tbaa !5
  %3088 = load i32, ptr %3087, align 4, !tbaa !9
  %3089 = add nsw i32 %3086, %3088
  %3090 = sext i32 %3089 to i64
  %3091 = getelementptr inbounds double, ptr %3085, i64 %3090
  %3092 = load double, ptr %3091, align 8, !tbaa !11
  %3093 = fsub double %3092, %3084
  store double %3093, ptr %3091, align 8, !tbaa !11
  %3094 = load i32, ptr %54, align 4, !tbaa !9
  %3095 = load i32, ptr %68, align 4, !tbaa !9
  %3096 = sub nsw i32 %3094, %3095
  %3097 = sub nsw i32 %3096, 2
  store i32 %3097, ptr %37, align 4, !tbaa !9
  %3098 = load ptr, ptr %19, align 8, !tbaa !5
  %3099 = load i32, ptr %68, align 4, !tbaa !9
  %3100 = add nsw i32 %3099, 2
  %3101 = load i32, ptr %54, align 4, !tbaa !9
  %3102 = load i32, ptr %29, align 4, !tbaa !9
  %3103 = mul nsw i32 %3101, %3102
  %3104 = add nsw i32 %3100, %3103
  %3105 = sext i32 %3104 to i64
  %3106 = getelementptr inbounds double, ptr %3098, i64 %3105
  %3107 = load ptr, ptr %27, align 8, !tbaa !5
  %3108 = load i32, ptr %68, align 4, !tbaa !9
  %3109 = add nsw i32 %3108, 2
  %3110 = load i32, ptr %65, align 4, !tbaa !9
  %3111 = add nsw i32 %3109, %3110
  %3112 = sext i32 %3111 to i64
  %3113 = getelementptr inbounds double, ptr %3107, i64 %3112
  %3114 = call double @ddot_(ptr noundef %37, ptr noundef %3106, ptr noundef @c__1, ptr noundef %3113, ptr noundef @c__1)
  %3115 = load ptr, ptr %27, align 8, !tbaa !5
  %3116 = load i32, ptr %54, align 4, !tbaa !9
  %3117 = load i32, ptr %65, align 4, !tbaa !9
  %3118 = add nsw i32 %3116, %3117
  %3119 = sext i32 %3118 to i64
  %3120 = getelementptr inbounds double, ptr %3115, i64 %3119
  %3121 = load double, ptr %3120, align 8, !tbaa !11
  %3122 = fsub double %3121, %3114
  store double %3122, ptr %3120, align 8, !tbaa !11
  %3123 = load i32, ptr %54, align 4, !tbaa !9
  %3124 = load i32, ptr %68, align 4, !tbaa !9
  %3125 = sub nsw i32 %3123, %3124
  %3126 = sub nsw i32 %3125, 2
  store i32 %3126, ptr %37, align 4, !tbaa !9
  %3127 = load ptr, ptr %19, align 8, !tbaa !5
  %3128 = load i32, ptr %68, align 4, !tbaa !9
  %3129 = add nsw i32 %3128, 2
  %3130 = load i32, ptr %54, align 4, !tbaa !9
  %3131 = add nsw i32 %3130, 1
  %3132 = load i32, ptr %29, align 4, !tbaa !9
  %3133 = mul nsw i32 %3131, %3132
  %3134 = add nsw i32 %3129, %3133
  %3135 = sext i32 %3134 to i64
  %3136 = getelementptr inbounds double, ptr %3127, i64 %3135
  %3137 = load ptr, ptr %27, align 8, !tbaa !5
  %3138 = load i32, ptr %68, align 4, !tbaa !9
  %3139 = add nsw i32 %3138, 2
  %3140 = load ptr, ptr %18, align 8, !tbaa !5
  %3141 = load i32, ptr %3140, align 4, !tbaa !9
  %3142 = add nsw i32 %3139, %3141
  %3143 = sext i32 %3142 to i64
  %3144 = getelementptr inbounds double, ptr %3137, i64 %3143
  %3145 = call double @ddot_(ptr noundef %37, ptr noundef %3136, ptr noundef @c__1, ptr noundef %3144, ptr noundef @c__1)
  %3146 = load ptr, ptr %27, align 8, !tbaa !5
  %3147 = load i32, ptr %54, align 4, !tbaa !9
  %3148 = add nsw i32 %3147, 1
  %3149 = load ptr, ptr %18, align 8, !tbaa !5
  %3150 = load i32, ptr %3149, align 4, !tbaa !9
  %3151 = add nsw i32 %3148, %3150
  %3152 = sext i32 %3151 to i64
  %3153 = getelementptr inbounds double, ptr %3146, i64 %3152
  %3154 = load double, ptr %3153, align 8, !tbaa !11
  %3155 = fsub double %3154, %3145
  store double %3155, ptr %3153, align 8, !tbaa !11
  %3156 = load i32, ptr %54, align 4, !tbaa !9
  %3157 = load i32, ptr %68, align 4, !tbaa !9
  %3158 = sub nsw i32 %3156, %3157
  %3159 = sub nsw i32 %3158, 2
  store i32 %3159, ptr %37, align 4, !tbaa !9
  %3160 = load ptr, ptr %19, align 8, !tbaa !5
  %3161 = load i32, ptr %68, align 4, !tbaa !9
  %3162 = add nsw i32 %3161, 2
  %3163 = load i32, ptr %54, align 4, !tbaa !9
  %3164 = add nsw i32 %3163, 1
  %3165 = load i32, ptr %29, align 4, !tbaa !9
  %3166 = mul nsw i32 %3164, %3165
  %3167 = add nsw i32 %3162, %3166
  %3168 = sext i32 %3167 to i64
  %3169 = getelementptr inbounds double, ptr %3160, i64 %3168
  %3170 = load ptr, ptr %27, align 8, !tbaa !5
  %3171 = load i32, ptr %68, align 4, !tbaa !9
  %3172 = add nsw i32 %3171, 2
  %3173 = load i32, ptr %65, align 4, !tbaa !9
  %3174 = add nsw i32 %3172, %3173
  %3175 = sext i32 %3174 to i64
  %3176 = getelementptr inbounds double, ptr %3170, i64 %3175
  %3177 = call double @ddot_(ptr noundef %37, ptr noundef %3169, ptr noundef @c__1, ptr noundef %3176, ptr noundef @c__1)
  %3178 = load ptr, ptr %27, align 8, !tbaa !5
  %3179 = load i32, ptr %54, align 4, !tbaa !9
  %3180 = add nsw i32 %3179, 1
  %3181 = load i32, ptr %65, align 4, !tbaa !9
  %3182 = add nsw i32 %3180, %3181
  %3183 = sext i32 %3182 to i64
  %3184 = getelementptr inbounds double, ptr %3178, i64 %3183
  %3185 = load double, ptr %3184, align 8, !tbaa !11
  %3186 = fsub double %3185, %3177
  store double %3186, ptr %3184, align 8, !tbaa !11
  %3187 = load double, ptr %71, align 8, !tbaa !11
  %3188 = fneg double %3187
  store double %3188, ptr %38, align 8, !tbaa !11
  %3189 = load ptr, ptr %19, align 8, !tbaa !5
  %3190 = load i32, ptr %54, align 4, !tbaa !9
  %3191 = load i32, ptr %54, align 4, !tbaa !9
  %3192 = load i32, ptr %29, align 4, !tbaa !9
  %3193 = mul nsw i32 %3191, %3192
  %3194 = add nsw i32 %3190, %3193
  %3195 = sext i32 %3194 to i64
  %3196 = getelementptr inbounds double, ptr %3189, i64 %3195
  %3197 = load ptr, ptr %20, align 8, !tbaa !5
  %3198 = load ptr, ptr %27, align 8, !tbaa !5
  %3199 = load i32, ptr %54, align 4, !tbaa !9
  %3200 = load ptr, ptr %18, align 8, !tbaa !5
  %3201 = load i32, ptr %3200, align 4, !tbaa !9
  %3202 = add nsw i32 %3199, %3201
  %3203 = sext i32 %3202 to i64
  %3204 = getelementptr inbounds double, ptr %3198, i64 %3203
  %3205 = load ptr, ptr %18, align 8, !tbaa !5
  %3206 = getelementptr inbounds [4 x double], ptr %57, i64 0, i64 0
  call void @dlaln2_(ptr noundef @c_true, ptr noundef @c__2, ptr noundef @c__2, ptr noundef %49, ptr noundef @c_b22, ptr noundef %3196, ptr noundef %3197, ptr noundef @c_b22, ptr noundef @c_b22, ptr noundef %3204, ptr noundef %3205, ptr noundef %72, ptr noundef %38, ptr noundef %3206, ptr noundef @c__2, ptr noundef %56, ptr noundef %66, ptr noundef %46)
  %3207 = load double, ptr %56, align 8, !tbaa !11
  %3208 = fcmp une double %3207, 1.000000e+00
  br i1 %3208, label %3209, label %3233

3209:                                             ; preds = %3062
  %3210 = load ptr, ptr %18, align 8, !tbaa !5
  %3211 = load i32, ptr %3210, align 4, !tbaa !9
  %3212 = load i32, ptr %68, align 4, !tbaa !9
  %3213 = sub nsw i32 %3211, %3212
  %3214 = add nsw i32 %3213, 1
  store i32 %3214, ptr %37, align 4, !tbaa !9
  %3215 = load ptr, ptr %27, align 8, !tbaa !5
  %3216 = load i32, ptr %68, align 4, !tbaa !9
  %3217 = load ptr, ptr %18, align 8, !tbaa !5
  %3218 = load i32, ptr %3217, align 4, !tbaa !9
  %3219 = add nsw i32 %3216, %3218
  %3220 = sext i32 %3219 to i64
  %3221 = getelementptr inbounds double, ptr %3215, i64 %3220
  call void @dscal_(ptr noundef %37, ptr noundef %56, ptr noundef %3221, ptr noundef @c__1)
  %3222 = load ptr, ptr %18, align 8, !tbaa !5
  %3223 = load i32, ptr %3222, align 4, !tbaa !9
  %3224 = load i32, ptr %68, align 4, !tbaa !9
  %3225 = sub nsw i32 %3223, %3224
  %3226 = add nsw i32 %3225, 1
  store i32 %3226, ptr %37, align 4, !tbaa !9
  %3227 = load ptr, ptr %27, align 8, !tbaa !5
  %3228 = load i32, ptr %68, align 4, !tbaa !9
  %3229 = load i32, ptr %65, align 4, !tbaa !9
  %3230 = add nsw i32 %3228, %3229
  %3231 = sext i32 %3230 to i64
  %3232 = getelementptr inbounds double, ptr %3227, i64 %3231
  call void @dscal_(ptr noundef %37, ptr noundef %56, ptr noundef %3232, ptr noundef @c__1)
  br label %3233

3233:                                             ; preds = %3209, %3062
  %3234 = getelementptr inbounds [4 x double], ptr %57, i64 0, i64 0
  %3235 = load double, ptr %3234, align 16, !tbaa !11
  %3236 = load ptr, ptr %27, align 8, !tbaa !5
  %3237 = load i32, ptr %54, align 4, !tbaa !9
  %3238 = load ptr, ptr %18, align 8, !tbaa !5
  %3239 = load i32, ptr %3238, align 4, !tbaa !9
  %3240 = add nsw i32 %3237, %3239
  %3241 = sext i32 %3240 to i64
  %3242 = getelementptr inbounds double, ptr %3236, i64 %3241
  store double %3235, ptr %3242, align 8, !tbaa !11
  %3243 = getelementptr inbounds [4 x double], ptr %57, i64 0, i64 2
  %3244 = load double, ptr %3243, align 16, !tbaa !11
  %3245 = load ptr, ptr %27, align 8, !tbaa !5
  %3246 = load i32, ptr %54, align 4, !tbaa !9
  %3247 = load i32, ptr %65, align 4, !tbaa !9
  %3248 = add nsw i32 %3246, %3247
  %3249 = sext i32 %3248 to i64
  %3250 = getelementptr inbounds double, ptr %3245, i64 %3249
  store double %3244, ptr %3250, align 8, !tbaa !11
  %3251 = getelementptr inbounds [4 x double], ptr %57, i64 0, i64 1
  %3252 = load double, ptr %3251, align 8, !tbaa !11
  %3253 = load ptr, ptr %27, align 8, !tbaa !5
  %3254 = load i32, ptr %54, align 4, !tbaa !9
  %3255 = add nsw i32 %3254, 1
  %3256 = load ptr, ptr %18, align 8, !tbaa !5
  %3257 = load i32, ptr %3256, align 4, !tbaa !9
  %3258 = add nsw i32 %3255, %3257
  %3259 = sext i32 %3258 to i64
  %3260 = getelementptr inbounds double, ptr %3253, i64 %3259
  store double %3252, ptr %3260, align 8, !tbaa !11
  %3261 = getelementptr inbounds [4 x double], ptr %57, i64 0, i64 3
  %3262 = load double, ptr %3261, align 8, !tbaa !11
  %3263 = load ptr, ptr %27, align 8, !tbaa !5
  %3264 = load i32, ptr %54, align 4, !tbaa !9
  %3265 = add nsw i32 %3264, 1
  %3266 = load i32, ptr %65, align 4, !tbaa !9
  %3267 = add nsw i32 %3265, %3266
  %3268 = sext i32 %3267 to i64
  %3269 = getelementptr inbounds double, ptr %3263, i64 %3268
  store double %3262, ptr %3269, align 8, !tbaa !11
  %3270 = getelementptr inbounds [4 x double], ptr %57, i64 0, i64 0
  %3271 = load double, ptr %3270, align 16, !tbaa !11
  %3272 = fcmp oge double %3271, 0.000000e+00
  br i1 %3272, label %3273, label %3276

3273:                                             ; preds = %3233
  %3274 = getelementptr inbounds [4 x double], ptr %57, i64 0, i64 0
  %3275 = load double, ptr %3274, align 16, !tbaa !11
  br label %3280

3276:                                             ; preds = %3233
  %3277 = getelementptr inbounds [4 x double], ptr %57, i64 0, i64 0
  %3278 = load double, ptr %3277, align 16, !tbaa !11
  %3279 = fneg double %3278
  br label %3280

3280:                                             ; preds = %3276, %3273
  %3281 = phi double [ %3275, %3273 ], [ %3279, %3276 ]
  store double %3281, ptr %38, align 8, !tbaa !11
  %3282 = getelementptr inbounds [4 x double], ptr %57, i64 0, i64 2
  %3283 = load double, ptr %3282, align 16, !tbaa !11
  %3284 = fcmp oge double %3283, 0.000000e+00
  br i1 %3284, label %3285, label %3288

3285:                                             ; preds = %3280
  %3286 = getelementptr inbounds [4 x double], ptr %57, i64 0, i64 2
  %3287 = load double, ptr %3286, align 16, !tbaa !11
  br label %3292

3288:                                             ; preds = %3280
  %3289 = getelementptr inbounds [4 x double], ptr %57, i64 0, i64 2
  %3290 = load double, ptr %3289, align 16, !tbaa !11
  %3291 = fneg double %3290
  br label %3292

3292:                                             ; preds = %3288, %3285
  %3293 = phi double [ %3287, %3285 ], [ %3291, %3288 ]
  store double %3293, ptr %39, align 8, !tbaa !11
  %3294 = load double, ptr %38, align 8, !tbaa !11
  %3295 = load double, ptr %39, align 8, !tbaa !11
  %3296 = fcmp oge double %3294, %3295
  br i1 %3296, label %3297, label %3299

3297:                                             ; preds = %3292
  %3298 = load double, ptr %38, align 8, !tbaa !11
  br label %3301

3299:                                             ; preds = %3292
  %3300 = load double, ptr %39, align 8, !tbaa !11
  br label %3301

3301:                                             ; preds = %3299, %3297
  %3302 = phi double [ %3298, %3297 ], [ %3300, %3299 ]
  store double %3302, ptr %38, align 8, !tbaa !11
  %3303 = getelementptr inbounds [4 x double], ptr %57, i64 0, i64 1
  %3304 = load double, ptr %3303, align 8, !tbaa !11
  %3305 = fcmp oge double %3304, 0.000000e+00
  br i1 %3305, label %3306, label %3309

3306:                                             ; preds = %3301
  %3307 = getelementptr inbounds [4 x double], ptr %57, i64 0, i64 1
  %3308 = load double, ptr %3307, align 8, !tbaa !11
  br label %3313

3309:                                             ; preds = %3301
  %3310 = getelementptr inbounds [4 x double], ptr %57, i64 0, i64 1
  %3311 = load double, ptr %3310, align 8, !tbaa !11
  %3312 = fneg double %3311
  br label %3313

3313:                                             ; preds = %3309, %3306
  %3314 = phi double [ %3308, %3306 ], [ %3312, %3309 ]
  store double %3314, ptr %39, align 8, !tbaa !11
  %3315 = load double, ptr %38, align 8, !tbaa !11
  %3316 = load double, ptr %39, align 8, !tbaa !11
  %3317 = fcmp oge double %3315, %3316
  br i1 %3317, label %3318, label %3320

3318:                                             ; preds = %3313
  %3319 = load double, ptr %38, align 8, !tbaa !11
  br label %3322

3320:                                             ; preds = %3313
  %3321 = load double, ptr %39, align 8, !tbaa !11
  br label %3322

3322:                                             ; preds = %3320, %3318
  %3323 = phi double [ %3319, %3318 ], [ %3321, %3320 ]
  store double %3323, ptr %38, align 8, !tbaa !11
  %3324 = getelementptr inbounds [4 x double], ptr %57, i64 0, i64 3
  %3325 = load double, ptr %3324, align 8, !tbaa !11
  %3326 = fcmp oge double %3325, 0.000000e+00
  br i1 %3326, label %3327, label %3330

3327:                                             ; preds = %3322
  %3328 = getelementptr inbounds [4 x double], ptr %57, i64 0, i64 3
  %3329 = load double, ptr %3328, align 8, !tbaa !11
  br label %3334

3330:                                             ; preds = %3322
  %3331 = getelementptr inbounds [4 x double], ptr %57, i64 0, i64 3
  %3332 = load double, ptr %3331, align 8, !tbaa !11
  %3333 = fneg double %3332
  br label %3334

3334:                                             ; preds = %3330, %3327
  %3335 = phi double [ %3329, %3327 ], [ %3333, %3330 ]
  store double %3335, ptr %39, align 8, !tbaa !11
  %3336 = load double, ptr %38, align 8, !tbaa !11
  %3337 = load double, ptr %39, align 8, !tbaa !11
  %3338 = fcmp oge double %3336, %3337
  br i1 %3338, label %3339, label %3341

3339:                                             ; preds = %3334
  %3340 = load double, ptr %38, align 8, !tbaa !11
  br label %3343

3341:                                             ; preds = %3334
  %3342 = load double, ptr %39, align 8, !tbaa !11
  br label %3343

3343:                                             ; preds = %3341, %3339
  %3344 = phi double [ %3340, %3339 ], [ %3342, %3341 ]
  store double %3344, ptr %38, align 8, !tbaa !11
  %3345 = load double, ptr %38, align 8, !tbaa !11
  %3346 = load double, ptr %51, align 8, !tbaa !11
  %3347 = fcmp oge double %3345, %3346
  br i1 %3347, label %3348, label %3350

3348:                                             ; preds = %3343
  %3349 = load double, ptr %38, align 8, !tbaa !11
  br label %3352

3350:                                             ; preds = %3343
  %3351 = load double, ptr %51, align 8, !tbaa !11
  br label %3352

3352:                                             ; preds = %3350, %3348
  %3353 = phi double [ %3349, %3348 ], [ %3351, %3350 ]
  store double %3353, ptr %51, align 8, !tbaa !11
  %3354 = load double, ptr %73, align 8, !tbaa !11
  %3355 = load double, ptr %51, align 8, !tbaa !11
  %3356 = fdiv double %3354, %3355
  store double %3356, ptr %61, align 8, !tbaa !11
  br label %3357

3357:                                             ; preds = %3352, %3006
  br label %3358

3358:                                             ; preds = %3357, %2765
  br label %3359

3359:                                             ; preds = %3358
  %3360 = load i32, ptr %54, align 4, !tbaa !9
  %3361 = add nsw i32 %3360, 1
  store i32 %3361, ptr %54, align 4, !tbaa !9
  br label %2757, !llvm.loop !30

3362:                                             ; preds = %2757
  %3363 = load i32, ptr %50, align 4, !tbaa !9
  %3364 = icmp ne i32 %3363, 0
  br i1 %3364, label %3523, label %3365

3365:                                             ; preds = %3362
  %3366 = load ptr, ptr %18, align 8, !tbaa !5
  %3367 = load i32, ptr %3366, align 4, !tbaa !9
  %3368 = load i32, ptr %68, align 4, !tbaa !9
  %3369 = sub nsw i32 %3367, %3368
  %3370 = add nsw i32 %3369, 1
  store i32 %3370, ptr %36, align 4, !tbaa !9
  %3371 = load ptr, ptr %27, align 8, !tbaa !5
  %3372 = load i32, ptr %68, align 4, !tbaa !9
  %3373 = load ptr, ptr %18, align 8, !tbaa !5
  %3374 = load i32, ptr %3373, align 4, !tbaa !9
  %3375 = add nsw i32 %3372, %3374
  %3376 = sext i32 %3375 to i64
  %3377 = getelementptr inbounds double, ptr %3371, i64 %3376
  %3378 = load ptr, ptr %21, align 8, !tbaa !5
  %3379 = load i32, ptr %68, align 4, !tbaa !9
  %3380 = load i32, ptr %70, align 4, !tbaa !9
  %3381 = load i32, ptr %31, align 4, !tbaa !9
  %3382 = mul nsw i32 %3380, %3381
  %3383 = add nsw i32 %3379, %3382
  %3384 = sext i32 %3383 to i64
  %3385 = getelementptr inbounds double, ptr %3378, i64 %3384
  call void @dcopy_(ptr noundef %36, ptr noundef %3377, ptr noundef @c__1, ptr noundef %3385, ptr noundef @c__1)
  %3386 = load ptr, ptr %18, align 8, !tbaa !5
  %3387 = load i32, ptr %3386, align 4, !tbaa !9
  %3388 = load i32, ptr %68, align 4, !tbaa !9
  %3389 = sub nsw i32 %3387, %3388
  %3390 = add nsw i32 %3389, 1
  store i32 %3390, ptr %36, align 4, !tbaa !9
  %3391 = load ptr, ptr %27, align 8, !tbaa !5
  %3392 = load i32, ptr %68, align 4, !tbaa !9
  %3393 = load i32, ptr %65, align 4, !tbaa !9
  %3394 = add nsw i32 %3392, %3393
  %3395 = sext i32 %3394 to i64
  %3396 = getelementptr inbounds double, ptr %3391, i64 %3395
  %3397 = load ptr, ptr %21, align 8, !tbaa !5
  %3398 = load i32, ptr %68, align 4, !tbaa !9
  %3399 = load i32, ptr %70, align 4, !tbaa !9
  %3400 = add nsw i32 %3399, 1
  %3401 = load i32, ptr %31, align 4, !tbaa !9
  %3402 = mul nsw i32 %3400, %3401
  %3403 = add nsw i32 %3398, %3402
  %3404 = sext i32 %3403 to i64
  %3405 = getelementptr inbounds double, ptr %3397, i64 %3404
  call void @dcopy_(ptr noundef %36, ptr noundef %3396, ptr noundef @c__1, ptr noundef %3405, ptr noundef @c__1)
  store double 0.000000e+00, ptr %43, align 8, !tbaa !11
  %3406 = load ptr, ptr %18, align 8, !tbaa !5
  %3407 = load i32, ptr %3406, align 4, !tbaa !9
  store i32 %3407, ptr %36, align 4, !tbaa !9
  %3408 = load i32, ptr %68, align 4, !tbaa !9
  store i32 %3408, ptr %55, align 4, !tbaa !9
  br label %3409

3409:                                             ; preds = %3462, %3365
  %3410 = load i32, ptr %55, align 4, !tbaa !9
  %3411 = load i32, ptr %36, align 4, !tbaa !9
  %3412 = icmp sle i32 %3410, %3411
  br i1 %3412, label %3413, label %3465

3413:                                             ; preds = %3409
  %3414 = load double, ptr %43, align 8, !tbaa !11
  store double %3414, ptr %40, align 8, !tbaa !11
  %3415 = load ptr, ptr %21, align 8, !tbaa !5
  %3416 = load i32, ptr %55, align 4, !tbaa !9
  %3417 = load i32, ptr %70, align 4, !tbaa !9
  %3418 = load i32, ptr %31, align 4, !tbaa !9
  %3419 = mul nsw i32 %3417, %3418
  %3420 = add nsw i32 %3416, %3419
  %3421 = sext i32 %3420 to i64
  %3422 = getelementptr inbounds double, ptr %3415, i64 %3421
  %3423 = load double, ptr %3422, align 8, !tbaa !11
  store double %3423, ptr %38, align 8, !tbaa !11
  %3424 = load double, ptr %38, align 8, !tbaa !11
  %3425 = fcmp oge double %3424, 0.000000e+00
  br i1 %3425, label %3426, label %3428

3426:                                             ; preds = %3413
  %3427 = load double, ptr %38, align 8, !tbaa !11
  br label %3431

3428:                                             ; preds = %3413
  %3429 = load double, ptr %38, align 8, !tbaa !11
  %3430 = fneg double %3429
  br label %3431

3431:                                             ; preds = %3428, %3426
  %3432 = phi double [ %3427, %3426 ], [ %3430, %3428 ]
  %3433 = load ptr, ptr %21, align 8, !tbaa !5
  %3434 = load i32, ptr %55, align 4, !tbaa !9
  %3435 = load i32, ptr %70, align 4, !tbaa !9
  %3436 = add nsw i32 %3435, 1
  %3437 = load i32, ptr %31, align 4, !tbaa !9
  %3438 = mul nsw i32 %3436, %3437
  %3439 = add nsw i32 %3434, %3438
  %3440 = sext i32 %3439 to i64
  %3441 = getelementptr inbounds double, ptr %3433, i64 %3440
  %3442 = load double, ptr %3441, align 8, !tbaa !11
  store double %3442, ptr %39, align 8, !tbaa !11
  %3443 = load double, ptr %39, align 8, !tbaa !11
  %3444 = fcmp oge double %3443, 0.000000e+00
  br i1 %3444, label %3445, label %3447

3445:                                             ; preds = %3431
  %3446 = load double, ptr %39, align 8, !tbaa !11
  br label %3450

3447:                                             ; preds = %3431
  %3448 = load double, ptr %39, align 8, !tbaa !11
  %3449 = fneg double %3448
  br label %3450

3450:                                             ; preds = %3447, %3445
  %3451 = phi double [ %3446, %3445 ], [ %3449, %3447 ]
  %3452 = fadd double %3432, %3451
  store double %3452, ptr %41, align 8, !tbaa !11
  %3453 = load double, ptr %40, align 8, !tbaa !11
  %3454 = load double, ptr %41, align 8, !tbaa !11
  %3455 = fcmp oge double %3453, %3454
  br i1 %3455, label %3456, label %3458

3456:                                             ; preds = %3450
  %3457 = load double, ptr %40, align 8, !tbaa !11
  br label %3460

3458:                                             ; preds = %3450
  %3459 = load double, ptr %41, align 8, !tbaa !11
  br label %3460

3460:                                             ; preds = %3458, %3456
  %3461 = phi double [ %3457, %3456 ], [ %3459, %3458 ]
  store double %3461, ptr %43, align 8, !tbaa !11
  br label %3462

3462:                                             ; preds = %3460
  %3463 = load i32, ptr %55, align 4, !tbaa !9
  %3464 = add nsw i32 %3463, 1
  store i32 %3464, ptr %55, align 4, !tbaa !9
  br label %3409, !llvm.loop !31

3465:                                             ; preds = %3409
  %3466 = load double, ptr %43, align 8, !tbaa !11
  %3467 = fdiv double 1.000000e+00, %3466
  store double %3467, ptr %58, align 8, !tbaa !11
  %3468 = load ptr, ptr %18, align 8, !tbaa !5
  %3469 = load i32, ptr %3468, align 4, !tbaa !9
  %3470 = load i32, ptr %68, align 4, !tbaa !9
  %3471 = sub nsw i32 %3469, %3470
  %3472 = add nsw i32 %3471, 1
  store i32 %3472, ptr %36, align 4, !tbaa !9
  %3473 = load ptr, ptr %21, align 8, !tbaa !5
  %3474 = load i32, ptr %68, align 4, !tbaa !9
  %3475 = load i32, ptr %70, align 4, !tbaa !9
  %3476 = load i32, ptr %31, align 4, !tbaa !9
  %3477 = mul nsw i32 %3475, %3476
  %3478 = add nsw i32 %3474, %3477
  %3479 = sext i32 %3478 to i64
  %3480 = getelementptr inbounds double, ptr %3473, i64 %3479
  call void @dscal_(ptr noundef %36, ptr noundef %58, ptr noundef %3480, ptr noundef @c__1)
  %3481 = load ptr, ptr %18, align 8, !tbaa !5
  %3482 = load i32, ptr %3481, align 4, !tbaa !9
  %3483 = load i32, ptr %68, align 4, !tbaa !9
  %3484 = sub nsw i32 %3482, %3483
  %3485 = add nsw i32 %3484, 1
  store i32 %3485, ptr %36, align 4, !tbaa !9
  %3486 = load ptr, ptr %21, align 8, !tbaa !5
  %3487 = load i32, ptr %68, align 4, !tbaa !9
  %3488 = load i32, ptr %70, align 4, !tbaa !9
  %3489 = add nsw i32 %3488, 1
  %3490 = load i32, ptr %31, align 4, !tbaa !9
  %3491 = mul nsw i32 %3489, %3490
  %3492 = add nsw i32 %3487, %3491
  %3493 = sext i32 %3492 to i64
  %3494 = getelementptr inbounds double, ptr %3486, i64 %3493
  call void @dscal_(ptr noundef %36, ptr noundef %58, ptr noundef %3494, ptr noundef @c__1)
  %3495 = load i32, ptr %68, align 4, !tbaa !9
  %3496 = sub nsw i32 %3495, 1
  store i32 %3496, ptr %36, align 4, !tbaa !9
  store i32 1, ptr %55, align 4, !tbaa !9
  br label %3497

3497:                                             ; preds = %3519, %3465
  %3498 = load i32, ptr %55, align 4, !tbaa !9
  %3499 = load i32, ptr %36, align 4, !tbaa !9
  %3500 = icmp sle i32 %3498, %3499
  br i1 %3500, label %3501, label %3522

3501:                                             ; preds = %3497
  %3502 = load ptr, ptr %21, align 8, !tbaa !5
  %3503 = load i32, ptr %55, align 4, !tbaa !9
  %3504 = load i32, ptr %70, align 4, !tbaa !9
  %3505 = load i32, ptr %31, align 4, !tbaa !9
  %3506 = mul nsw i32 %3504, %3505
  %3507 = add nsw i32 %3503, %3506
  %3508 = sext i32 %3507 to i64
  %3509 = getelementptr inbounds double, ptr %3502, i64 %3508
  store double 0.000000e+00, ptr %3509, align 8, !tbaa !11
  %3510 = load ptr, ptr %21, align 8, !tbaa !5
  %3511 = load i32, ptr %55, align 4, !tbaa !9
  %3512 = load i32, ptr %70, align 4, !tbaa !9
  %3513 = add nsw i32 %3512, 1
  %3514 = load i32, ptr %31, align 4, !tbaa !9
  %3515 = mul nsw i32 %3513, %3514
  %3516 = add nsw i32 %3511, %3515
  %3517 = sext i32 %3516 to i64
  %3518 = getelementptr inbounds double, ptr %3510, i64 %3517
  store double 0.000000e+00, ptr %3518, align 8, !tbaa !11
  br label %3519

3519:                                             ; preds = %3501
  %3520 = load i32, ptr %55, align 4, !tbaa !9
  %3521 = add nsw i32 %3520, 1
  store i32 %3521, ptr %55, align 4, !tbaa !9
  br label %3497, !llvm.loop !32

3522:                                             ; preds = %3497
  br label %3715

3523:                                             ; preds = %3362
  %3524 = load i32, ptr %68, align 4, !tbaa !9
  %3525 = load ptr, ptr %18, align 8, !tbaa !5
  %3526 = load i32, ptr %3525, align 4, !tbaa !9
  %3527 = sub nsw i32 %3526, 1
  %3528 = icmp slt i32 %3524, %3527
  br i1 %3528, label %3529, label %3604

3529:                                             ; preds = %3523
  %3530 = load ptr, ptr %18, align 8, !tbaa !5
  %3531 = load i32, ptr %3530, align 4, !tbaa !9
  %3532 = load i32, ptr %68, align 4, !tbaa !9
  %3533 = sub nsw i32 %3531, %3532
  %3534 = sub nsw i32 %3533, 1
  store i32 %3534, ptr %36, align 4, !tbaa !9
  %3535 = load ptr, ptr %18, align 8, !tbaa !5
  %3536 = load ptr, ptr %21, align 8, !tbaa !5
  %3537 = load i32, ptr %68, align 4, !tbaa !9
  %3538 = add nsw i32 %3537, 2
  %3539 = load i32, ptr %31, align 4, !tbaa !9
  %3540 = mul nsw i32 %3538, %3539
  %3541 = add nsw i32 %3540, 1
  %3542 = sext i32 %3541 to i64
  %3543 = getelementptr inbounds double, ptr %3536, i64 %3542
  %3544 = load ptr, ptr %22, align 8, !tbaa !5
  %3545 = load ptr, ptr %27, align 8, !tbaa !5
  %3546 = load i32, ptr %68, align 4, !tbaa !9
  %3547 = add nsw i32 %3546, 2
  %3548 = load ptr, ptr %18, align 8, !tbaa !5
  %3549 = load i32, ptr %3548, align 4, !tbaa !9
  %3550 = add nsw i32 %3547, %3549
  %3551 = sext i32 %3550 to i64
  %3552 = getelementptr inbounds double, ptr %3545, i64 %3551
  %3553 = load ptr, ptr %27, align 8, !tbaa !5
  %3554 = load i32, ptr %68, align 4, !tbaa !9
  %3555 = load ptr, ptr %18, align 8, !tbaa !5
  %3556 = load i32, ptr %3555, align 4, !tbaa !9
  %3557 = add nsw i32 %3554, %3556
  %3558 = sext i32 %3557 to i64
  %3559 = getelementptr inbounds double, ptr %3553, i64 %3558
  %3560 = load ptr, ptr %21, align 8, !tbaa !5
  %3561 = load i32, ptr %68, align 4, !tbaa !9
  %3562 = load i32, ptr %31, align 4, !tbaa !9
  %3563 = mul nsw i32 %3561, %3562
  %3564 = add nsw i32 %3563, 1
  %3565 = sext i32 %3564 to i64
  %3566 = getelementptr inbounds double, ptr %3560, i64 %3565
  call void @dgemv_(ptr noundef @.str.8, ptr noundef %3535, ptr noundef %36, ptr noundef @c_b22, ptr noundef %3543, ptr noundef %3544, ptr noundef %3552, ptr noundef @c__1, ptr noundef %3559, ptr noundef %3566, ptr noundef @c__1)
  %3567 = load ptr, ptr %18, align 8, !tbaa !5
  %3568 = load i32, ptr %3567, align 4, !tbaa !9
  %3569 = load i32, ptr %68, align 4, !tbaa !9
  %3570 = sub nsw i32 %3568, %3569
  %3571 = sub nsw i32 %3570, 1
  store i32 %3571, ptr %36, align 4, !tbaa !9
  %3572 = load ptr, ptr %18, align 8, !tbaa !5
  %3573 = load ptr, ptr %21, align 8, !tbaa !5
  %3574 = load i32, ptr %68, align 4, !tbaa !9
  %3575 = add nsw i32 %3574, 2
  %3576 = load i32, ptr %31, align 4, !tbaa !9
  %3577 = mul nsw i32 %3575, %3576
  %3578 = add nsw i32 %3577, 1
  %3579 = sext i32 %3578 to i64
  %3580 = getelementptr inbounds double, ptr %3573, i64 %3579
  %3581 = load ptr, ptr %22, align 8, !tbaa !5
  %3582 = load ptr, ptr %27, align 8, !tbaa !5
  %3583 = load i32, ptr %68, align 4, !tbaa !9
  %3584 = add nsw i32 %3583, 2
  %3585 = load i32, ptr %65, align 4, !tbaa !9
  %3586 = add nsw i32 %3584, %3585
  %3587 = sext i32 %3586 to i64
  %3588 = getelementptr inbounds double, ptr %3582, i64 %3587
  %3589 = load ptr, ptr %27, align 8, !tbaa !5
  %3590 = load i32, ptr %68, align 4, !tbaa !9
  %3591 = add nsw i32 %3590, 1
  %3592 = load i32, ptr %65, align 4, !tbaa !9
  %3593 = add nsw i32 %3591, %3592
  %3594 = sext i32 %3593 to i64
  %3595 = getelementptr inbounds double, ptr %3589, i64 %3594
  %3596 = load ptr, ptr %21, align 8, !tbaa !5
  %3597 = load i32, ptr %68, align 4, !tbaa !9
  %3598 = add nsw i32 %3597, 1
  %3599 = load i32, ptr %31, align 4, !tbaa !9
  %3600 = mul nsw i32 %3598, %3599
  %3601 = add nsw i32 %3600, 1
  %3602 = sext i32 %3601 to i64
  %3603 = getelementptr inbounds double, ptr %3596, i64 %3602
  call void @dgemv_(ptr noundef @.str.8, ptr noundef %3572, ptr noundef %36, ptr noundef @c_b22, ptr noundef %3580, ptr noundef %3581, ptr noundef %3588, ptr noundef @c__1, ptr noundef %3595, ptr noundef %3603, ptr noundef @c__1)
  br label %3636

3604:                                             ; preds = %3523
  %3605 = load ptr, ptr %18, align 8, !tbaa !5
  %3606 = load ptr, ptr %27, align 8, !tbaa !5
  %3607 = load i32, ptr %68, align 4, !tbaa !9
  %3608 = load ptr, ptr %18, align 8, !tbaa !5
  %3609 = load i32, ptr %3608, align 4, !tbaa !9
  %3610 = add nsw i32 %3607, %3609
  %3611 = sext i32 %3610 to i64
  %3612 = getelementptr inbounds double, ptr %3606, i64 %3611
  %3613 = load ptr, ptr %21, align 8, !tbaa !5
  %3614 = load i32, ptr %68, align 4, !tbaa !9
  %3615 = load i32, ptr %31, align 4, !tbaa !9
  %3616 = mul nsw i32 %3614, %3615
  %3617 = add nsw i32 %3616, 1
  %3618 = sext i32 %3617 to i64
  %3619 = getelementptr inbounds double, ptr %3613, i64 %3618
  call void @dscal_(ptr noundef %3605, ptr noundef %3612, ptr noundef %3619, ptr noundef @c__1)
  %3620 = load ptr, ptr %18, align 8, !tbaa !5
  %3621 = load ptr, ptr %27, align 8, !tbaa !5
  %3622 = load i32, ptr %68, align 4, !tbaa !9
  %3623 = add nsw i32 %3622, 1
  %3624 = load i32, ptr %65, align 4, !tbaa !9
  %3625 = add nsw i32 %3623, %3624
  %3626 = sext i32 %3625 to i64
  %3627 = getelementptr inbounds double, ptr %3621, i64 %3626
  %3628 = load ptr, ptr %21, align 8, !tbaa !5
  %3629 = load i32, ptr %68, align 4, !tbaa !9
  %3630 = add nsw i32 %3629, 1
  %3631 = load i32, ptr %31, align 4, !tbaa !9
  %3632 = mul nsw i32 %3630, %3631
  %3633 = add nsw i32 %3632, 1
  %3634 = sext i32 %3633 to i64
  %3635 = getelementptr inbounds double, ptr %3628, i64 %3634
  call void @dscal_(ptr noundef %3620, ptr noundef %3627, ptr noundef %3635, ptr noundef @c__1)
  br label %3636

3636:                                             ; preds = %3604, %3529
  store double 0.000000e+00, ptr %43, align 8, !tbaa !11
  %3637 = load ptr, ptr %18, align 8, !tbaa !5
  %3638 = load i32, ptr %3637, align 4, !tbaa !9
  store i32 %3638, ptr %36, align 4, !tbaa !9
  store i32 1, ptr %55, align 4, !tbaa !9
  br label %3639

3639:                                             ; preds = %3692, %3636
  %3640 = load i32, ptr %55, align 4, !tbaa !9
  %3641 = load i32, ptr %36, align 4, !tbaa !9
  %3642 = icmp sle i32 %3640, %3641
  br i1 %3642, label %3643, label %3695

3643:                                             ; preds = %3639
  %3644 = load double, ptr %43, align 8, !tbaa !11
  store double %3644, ptr %40, align 8, !tbaa !11
  %3645 = load ptr, ptr %21, align 8, !tbaa !5
  %3646 = load i32, ptr %55, align 4, !tbaa !9
  %3647 = load i32, ptr %68, align 4, !tbaa !9
  %3648 = load i32, ptr %31, align 4, !tbaa !9
  %3649 = mul nsw i32 %3647, %3648
  %3650 = add nsw i32 %3646, %3649
  %3651 = sext i32 %3650 to i64
  %3652 = getelementptr inbounds double, ptr %3645, i64 %3651
  %3653 = load double, ptr %3652, align 8, !tbaa !11
  store double %3653, ptr %38, align 8, !tbaa !11
  %3654 = load double, ptr %38, align 8, !tbaa !11
  %3655 = fcmp oge double %3654, 0.000000e+00
  br i1 %3655, label %3656, label %3658

3656:                                             ; preds = %3643
  %3657 = load double, ptr %38, align 8, !tbaa !11
  br label %3661

3658:                                             ; preds = %3643
  %3659 = load double, ptr %38, align 8, !tbaa !11
  %3660 = fneg double %3659
  br label %3661

3661:                                             ; preds = %3658, %3656
  %3662 = phi double [ %3657, %3656 ], [ %3660, %3658 ]
  %3663 = load ptr, ptr %21, align 8, !tbaa !5
  %3664 = load i32, ptr %55, align 4, !tbaa !9
  %3665 = load i32, ptr %68, align 4, !tbaa !9
  %3666 = add nsw i32 %3665, 1
  %3667 = load i32, ptr %31, align 4, !tbaa !9
  %3668 = mul nsw i32 %3666, %3667
  %3669 = add nsw i32 %3664, %3668
  %3670 = sext i32 %3669 to i64
  %3671 = getelementptr inbounds double, ptr %3663, i64 %3670
  %3672 = load double, ptr %3671, align 8, !tbaa !11
  store double %3672, ptr %39, align 8, !tbaa !11
  %3673 = load double, ptr %39, align 8, !tbaa !11
  %3674 = fcmp oge double %3673, 0.000000e+00
  br i1 %3674, label %3675, label %3677

3675:                                             ; preds = %3661
  %3676 = load double, ptr %39, align 8, !tbaa !11
  br label %3680

3677:                                             ; preds = %3661
  %3678 = load double, ptr %39, align 8, !tbaa !11
  %3679 = fneg double %3678
  br label %3680

3680:                                             ; preds = %3677, %3675
  %3681 = phi double [ %3676, %3675 ], [ %3679, %3677 ]
  %3682 = fadd double %3662, %3681
  store double %3682, ptr %41, align 8, !tbaa !11
  %3683 = load double, ptr %40, align 8, !tbaa !11
  %3684 = load double, ptr %41, align 8, !tbaa !11
  %3685 = fcmp oge double %3683, %3684
  br i1 %3685, label %3686, label %3688

3686:                                             ; preds = %3680
  %3687 = load double, ptr %40, align 8, !tbaa !11
  br label %3690

3688:                                             ; preds = %3680
  %3689 = load double, ptr %41, align 8, !tbaa !11
  br label %3690

3690:                                             ; preds = %3688, %3686
  %3691 = phi double [ %3687, %3686 ], [ %3689, %3688 ]
  store double %3691, ptr %43, align 8, !tbaa !11
  br label %3692

3692:                                             ; preds = %3690
  %3693 = load i32, ptr %55, align 4, !tbaa !9
  %3694 = add nsw i32 %3693, 1
  store i32 %3694, ptr %55, align 4, !tbaa !9
  br label %3639, !llvm.loop !33

3695:                                             ; preds = %3639
  %3696 = load double, ptr %43, align 8, !tbaa !11
  %3697 = fdiv double 1.000000e+00, %3696
  store double %3697, ptr %58, align 8, !tbaa !11
  %3698 = load ptr, ptr %18, align 8, !tbaa !5
  %3699 = load ptr, ptr %21, align 8, !tbaa !5
  %3700 = load i32, ptr %68, align 4, !tbaa !9
  %3701 = load i32, ptr %31, align 4, !tbaa !9
  %3702 = mul nsw i32 %3700, %3701
  %3703 = add nsw i32 %3702, 1
  %3704 = sext i32 %3703 to i64
  %3705 = getelementptr inbounds double, ptr %3699, i64 %3704
  call void @dscal_(ptr noundef %3698, ptr noundef %58, ptr noundef %3705, ptr noundef @c__1)
  %3706 = load ptr, ptr %18, align 8, !tbaa !5
  %3707 = load ptr, ptr %21, align 8, !tbaa !5
  %3708 = load i32, ptr %68, align 4, !tbaa !9
  %3709 = add nsw i32 %3708, 1
  %3710 = load i32, ptr %31, align 4, !tbaa !9
  %3711 = mul nsw i32 %3709, %3710
  %3712 = add nsw i32 %3711, 1
  %3713 = sext i32 %3712 to i64
  %3714 = getelementptr inbounds double, ptr %3707, i64 %3713
  call void @dscal_(ptr noundef %3706, ptr noundef %58, ptr noundef %3714, ptr noundef @c__1)
  br label %3715

3715:                                             ; preds = %3695, %3522
  br label %3716

3716:                                             ; preds = %3715, %2574
  %3717 = load i32, ptr %70, align 4, !tbaa !9
  %3718 = add nsw i32 %3717, 1
  store i32 %3718, ptr %70, align 4, !tbaa !9
  %3719 = load i32, ptr %69, align 4, !tbaa !9
  %3720 = icmp ne i32 %3719, 0
  br i1 %3720, label %3721, label %3724

3721:                                             ; preds = %3716
  %3722 = load i32, ptr %70, align 4, !tbaa !9
  %3723 = add nsw i32 %3722, 1
  store i32 %3723, ptr %70, align 4, !tbaa !9
  br label %3724

3724:                                             ; preds = %3721, %3716
  br label %3725

3725:                                             ; preds = %3724, %1882, %1851
  %3726 = load i32, ptr %69, align 4, !tbaa !9
  %3727 = icmp eq i32 %3726, -1
  br i1 %3727, label %3728, label %3729

3728:                                             ; preds = %3725
  store i32 0, ptr %69, align 4, !tbaa !9
  br label %3729

3729:                                             ; preds = %3728, %3725
  %3730 = load i32, ptr %69, align 4, !tbaa !9
  %3731 = icmp eq i32 %3730, 1
  br i1 %3731, label %3732, label %3733

3732:                                             ; preds = %3729
  store i32 -1, ptr %69, align 4, !tbaa !9
  br label %3733

3733:                                             ; preds = %3732, %3729
  br label %3734

3734:                                             ; preds = %3733
  %3735 = load i32, ptr %68, align 4, !tbaa !9
  %3736 = add nsw i32 %3735, 1
  store i32 %3736, ptr %68, align 4, !tbaa !9
  br label %1844, !llvm.loop !34

3737:                                             ; preds = %1844
  br label %3738

3738:                                             ; preds = %3737, %1838
  store i32 1, ptr %78, align 4
  br label %3739

3739:                                             ; preds = %3738, %332, %323
  call void @llvm.lifetime.end.p0(i64 8, ptr %77) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %76) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %74) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %73) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %72) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %71) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %70) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %69) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %68) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %67) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %65) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %64) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %63) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %62) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %60) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %59) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #4
  call void @llvm.lifetime.end.p0(i64 32, ptr %57) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %54) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %53) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #4
  ret void
}

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

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

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

declare double @dlamch_(ptr noundef) #2

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

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

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

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

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

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

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

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

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"double", !7, i64 0}
!13 = distinct !{!13, !14}
!14 = !{!"llvm.loop.mustprogress"}
!15 = distinct !{!15, !14}
!16 = distinct !{!16, !14}
!17 = distinct !{!17, !14}
!18 = distinct !{!18, !14}
!19 = distinct !{!19, !14}
!20 = distinct !{!20, !14}
!21 = distinct !{!21, !14}
!22 = distinct !{!22, !14}
!23 = distinct !{!23, !14}
!24 = distinct !{!24, !14}
!25 = distinct !{!25, !14}
!26 = distinct !{!26, !14}
!27 = distinct !{!27, !14}
!28 = distinct !{!28, !14}
!29 = distinct !{!29, !14}
!30 = distinct !{!30, !14}
!31 = distinct !{!31, !14}
!32 = distinct !{!32, !14}
!33 = distinct !{!33, !14}
!34 = distinct !{!34, !14}


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

@.str = external hidden unnamed_addr constant [2 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [10 x i8], align 1
@c_false = external hidden global i32, align 4
@c__1 = external hidden global i32, align 4
@c_b22 = external hidden global double, align 8
@c_b25 = external hidden global double, align 8
@c__2 = external hidden global i32, align 4
@.str.8 = external hidden unnamed_addr constant [2 x i8], align 1
@c_true = external hidden global i32, align 4

; Function Attrs: nounwind uwtable
define dso_local void @dtrevc_(ptr noundef %0, ptr noundef %1, ptr nocapture noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %5, ptr noundef %6, ptr noundef %7, ptr noundef %8, ptr noundef %9, ptr nocapture noundef readonly %10, ptr nocapture noundef %11, ptr noundef %12, ptr nocapture noundef %13) local_unnamed_addr #0 {
  %15 = ptrtoint ptr %4 to i64
  %16 = ptrtoint ptr %12 to i64
  %17 = ptrtoint ptr %4 to i64
  %18 = ptrtoint ptr %12 to i64
  %19 = alloca i32, align 4
  %20 = alloca i32, align 4
  %21 = alloca i32, align 4
  %22 = alloca double, align 8
  %23 = alloca i32, align 4
  %24 = alloca double, align 8
  %25 = alloca double, align 8
  %26 = alloca double, align 8
  %27 = alloca double, align 8
  %28 = alloca [4 x double], align 16
  %29 = alloca double, align 8
  %30 = alloca double, align 8
  %31 = alloca i32, align 4
  %32 = alloca double, align 8
  %33 = alloca double, align 8
  %34 = alloca double, align 8
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %19) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %20) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %21) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %22) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %23) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %24) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %25) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %26) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %27) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %28) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %29) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %30) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %31) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %32) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %33) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %34) #6
  %35 = getelementptr inbounds i8, ptr %2, i64 -4
  %36 = load i32, ptr %5, align 4, !tbaa !5
  %narrow = xor i32 %36, -1
  %37 = sext i32 %narrow to i64
  %38 = getelementptr inbounds double, ptr %4, i64 %37
  %39 = load i32, ptr %7, align 4, !tbaa !5
  %narrow1120 = xor i32 %39, -1
  %40 = sext i32 %narrow1120 to i64
  %41 = getelementptr inbounds double, ptr %6, i64 %40
  %42 = load i32, ptr %9, align 4, !tbaa !5
  %narrow1156 = xor i32 %42, -1
  %43 = sext i32 %narrow1156 to i64
  %44 = getelementptr inbounds double, ptr %8, i64 %43
  %45 = getelementptr i8, ptr %12, i64 -8
  %46 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str) #6
  %47 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.1) #6
  %48 = icmp ne i32 %47, 0
  %49 = icmp ne i32 %46, 0
  %50 = select i1 %48, i1 true, i1 %49
  %51 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.2) #6
  %52 = icmp ne i32 %51, 0
  %53 = select i1 %52, i1 true, i1 %49
  %54 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.3) #6
  %55 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str) #6
  %56 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.4) #6
  store i32 0, ptr %13, align 4, !tbaa !5
  %or.cond = select i1 %50, i1 true, i1 %53
  br i1 %or.cond, label %57, label %.thread.sink.split

57:                                               ; preds = %14
  %58 = icmp ne i32 %54, 0
  %59 = icmp ne i32 %55, 0
  %or.cond3 = select i1 %58, i1 true, i1 %59
  %60 = icmp ne i32 %56, 0
  %or.cond5 = select i1 %or.cond3, i1 true, i1 %60
  br i1 %or.cond5, label %61, label %.thread.sink.split

61:                                               ; preds = %57
  %62 = load i32, ptr %3, align 4, !tbaa !5
  %63 = icmp slt i32 %62, 0
  br i1 %63, label %.thread.sink.split, label %64

64:                                               ; preds = %61
  %65 = load i32, ptr %5, align 4, !tbaa !5
  %spec.select = tail call i32 @llvm.umax.i32(i32 %62, i32 1)
  %66 = icmp slt i32 %65, %spec.select
  br i1 %66, label %.thread.sink.split, label %67

67:                                               ; preds = %64
  %68 = load i32, ptr %7, align 4, !tbaa !5
  %69 = icmp slt i32 %68, 1
  %70 = icmp ult i32 %68, %62
  %or.cond1237 = and i1 %53, %70
  %or.cond1241 = select i1 %69, i1 true, i1 %or.cond1237
  br i1 %or.cond1241, label %.thread.sink.split, label %71

71:                                               ; preds = %67
  %72 = load i32, ptr %9, align 4, !tbaa !5
  %73 = icmp slt i32 %72, 1
  %74 = icmp ult i32 %72, %62
  %or.cond1238 = and i1 %50, %74
  %or.cond1242 = select i1 %73, i1 true, i1 %or.cond1238
  br i1 %or.cond1242, label %.thread.sink.split, label %75

75:                                               ; preds = %71
  br i1 %60, label %76, label %111

76:                                               ; preds = %75
  store i32 0, ptr %11, align 4, !tbaa !5
  %77 = load i32, ptr %3, align 4, !tbaa !5
  store i32 %77, ptr %19, align 4, !tbaa !5
  %.not1274 = icmp slt i32 %77, 1
  br i1 %.not1274, label %.loopexit1273, label %.lr.ph.preheader

.lr.ph.preheader:                                 ; preds = %76
  %78 = sext i32 %36 to i64
  %79 = add nuw i32 %77, 1
  %wide.trip.count = zext i32 %79 to i64
  %invariant.gep = getelementptr i8, ptr %38, i64 8
  br label %.lr.ph

.lr.ph:                                           ; preds = %.lr.ph.preheader, %110
  %indvars.iv = phi i64 [ 1, %.lr.ph.preheader ], [ %indvars.iv.next, %110 ]
  %.011021275 = phi i32 [ 0, %.lr.ph.preheader ], [ %.11103, %110 ]
  %.not1121 = icmp eq i32 %.011021275, 0
  br i1 %.not1121, label %82, label %80

80:                                               ; preds = %.lr.ph
  %81 = getelementptr inbounds i32, ptr %35, i64 %indvars.iv
  store i32 0, ptr %81, align 4, !tbaa !5
  br label %110

82:                                               ; preds = %.lr.ph
  %83 = load i32, ptr %3, align 4, !tbaa !5
  %84 = sext i32 %83 to i64
  %85 = icmp slt i64 %indvars.iv, %84
  br i1 %85, label %86, label %104

86:                                               ; preds = %82
  %87 = mul nsw i64 %indvars.iv, %78
  %gep1638 = getelementptr double, ptr %invariant.gep, i64 %indvars.iv
  %88 = getelementptr double, ptr %gep1638, i64 %87
  %89 = load double, ptr %88, align 8, !tbaa !9
  %90 = fcmp oeq double %89, 0.000000e+00
  %91 = getelementptr inbounds i32, ptr %35, i64 %indvars.iv
  %92 = load i32, ptr %91, align 4, !tbaa !5
  %.not1125 = icmp eq i32 %92, 0
  br i1 %90, label %93, label %97

93:                                               ; preds = %86
  br i1 %.not1125, label %110, label %94

94:                                               ; preds = %93
  %95 = load i32, ptr %11, align 4, !tbaa !5
  %96 = add nsw i32 %95, 1
  store i32 %96, ptr %11, align 4, !tbaa !5
  br label %110

97:                                               ; preds = %86
  br i1 %.not1125, label %98, label %101

98:                                               ; preds = %97
  %99 = getelementptr i32, ptr %2, i64 %indvars.iv
  %100 = load i32, ptr %99, align 4, !tbaa !5
  %.not1124 = icmp eq i32 %100, 0
  br i1 %.not1124, label %110, label %101

101:                                              ; preds = %98, %97
  store i32 1, ptr %91, align 4, !tbaa !5
  %102 = load i32, ptr %11, align 4, !tbaa !5
  %103 = add nsw i32 %102, 2
  store i32 %103, ptr %11, align 4, !tbaa !5
  br label %110

104:                                              ; preds = %82
  %105 = getelementptr inbounds i32, ptr %35, i64 %84
  %106 = load i32, ptr %105, align 4, !tbaa !5
  %.not1122 = icmp eq i32 %106, 0
  br i1 %.not1122, label %110, label %107

107:                                              ; preds = %104
  %108 = load i32, ptr %11, align 4, !tbaa !5
  %109 = add nsw i32 %108, 1
  store i32 %109, ptr %11, align 4, !tbaa !5
  br label %110

110:                                              ; preds = %80, %104, %107, %94, %93, %101, %98
  %.11103 = phi i32 [ 0, %80 ], [ 0, %94 ], [ 0, %93 ], [ 1, %101 ], [ 1, %98 ], [ 0, %107 ], [ 0, %104 ]
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count
  br i1 %exitcond.not, label %.loopexit1273.loopexit, label %.lr.ph, !llvm.loop !11

111:                                              ; preds = %75
  store i32 %62, ptr %11, align 4, !tbaa !5
  br label %.loopexit1273

.loopexit1273.loopexit:                           ; preds = %110
  %.pre = load i32, ptr %11, align 4, !tbaa !5
  br label %.loopexit1273

.loopexit1273:                                    ; preds = %.loopexit1273.loopexit, %76, %111
  %112 = phi i32 [ %.pre, %.loopexit1273.loopexit ], [ 0, %76 ], [ %62, %111 ]
  %113 = load i32, ptr %10, align 4, !tbaa !5
  %114 = icmp slt i32 %113, %112
  br i1 %114, label %.thread.sink.split, label %115

115:                                              ; preds = %.loopexit1273
  %.pr = load i32, ptr %13, align 4, !tbaa !5
  %.not1126 = icmp eq i32 %.pr, 0
  br i1 %.not1126, label %119, label %.thread

.thread.sink.split:                               ; preds = %.loopexit1273, %71, %67, %64, %61, %57, %14
  %.sink = phi i32 [ -1, %14 ], [ -2, %57 ], [ -4, %61 ], [ -6, %64 ], [ -8, %67 ], [ -10, %71 ], [ -11, %.loopexit1273 ]
  store i32 %.sink, ptr %13, align 4, !tbaa !5
  br label %.thread

.thread:                                          ; preds = %.thread.sink.split, %115
  %116 = phi i32 [ %.pr, %115 ], [ %.sink, %.thread.sink.split ]
  %117 = sub nsw i32 0, %116
  store i32 %117, ptr %19, align 4, !tbaa !5
  %118 = call i32 @xerbla_(ptr noundef nonnull @.str.5, ptr noundef nonnull %19, i32 noundef 6) #6
  br label %.loopexit1268

119:                                              ; preds = %115
  %120 = load i32, ptr %3, align 4, !tbaa !5
  %121 = icmp eq i32 %120, 0
  br i1 %121, label %.loopexit1268, label %122

122:                                              ; preds = %119
  %123 = tail call double @dlamch_(ptr noundef nonnull @.str.6) #6
  store double %123, ptr %24, align 8, !tbaa !9
  %124 = fdiv double 1.000000e+00, %123
  store double %124, ptr %25, align 8, !tbaa !9
  call void @dlabad_(ptr noundef nonnull %24, ptr noundef nonnull %25) #6
  %125 = call double @dlamch_(ptr noundef nonnull @.str.7) #6
  %126 = load double, ptr %24, align 8, !tbaa !9
  %127 = load i32, ptr %3, align 4, !tbaa !5
  %128 = sitofp i32 %127 to double
  %129 = fdiv double %128, %125
  %130 = fmul double %126, %129
  %131 = fsub double 1.000000e+00, %125
  %132 = fdiv double %131, %130
  store double 0.000000e+00, ptr %12, align 8, !tbaa !9
  %.not11271278 = icmp slt i32 %127, 2
  br i1 %.not11271278, label %159, label %.lr.ph1280.preheader

.lr.ph1280.preheader:                             ; preds = %122
  %133 = sext i32 %36 to i64
  %134 = add nuw i32 %127, 1
  %wide.trip.count1492 = zext i32 %134 to i64
  br label %.lr.ph1280

.lr.ph1280:                                       ; preds = %.lr.ph1280.preheader, %157
  %indvar = phi i64 [ 0, %.lr.ph1280.preheader ], [ %indvar.next, %157 ]
  %indvars.iv1489 = phi i64 [ 2, %.lr.ph1280.preheader ], [ %indvars.iv.next1490, %157 ]
  %135 = getelementptr inbounds double, ptr %45, i64 %indvars.iv1489
  store double 0.000000e+00, ptr %135, align 8, !tbaa !9
  %136 = mul nsw i64 %indvars.iv1489, %133
  %invariant.gep1639 = getelementptr double, ptr %38, i64 %136
  %137 = icmp eq i64 %indvar, 0
  br i1 %137, label %.unr-lcssa, label %.lr.ph1280.new

.lr.ph1280.new:                                   ; preds = %.lr.ph1280
  %138 = add i64 %indvar, 1
  %unroll_iter = and i64 %138, -2
  %invariant.gep1948 = getelementptr i8, ptr %invariant.gep1639, i64 8
  br label %139

139:                                              ; preds = %139, %.lr.ph1280.new
  %indvars.iv1484 = phi i64 [ 1, %.lr.ph1280.new ], [ %indvars.iv.next1485.1, %139 ]
  %140 = phi double [ 0.000000e+00, %.lr.ph1280.new ], [ %150, %139 ]
  %niter = phi i64 [ 0, %.lr.ph1280.new ], [ %niter.next.1, %139 ]
  %gep1640 = getelementptr double, ptr %invariant.gep1639, i64 %indvars.iv1484
  %141 = load double, ptr %gep1640, align 8, !tbaa !9
  %142 = fcmp oge double %141, 0.000000e+00
  %143 = fneg double %141
  %144 = select i1 %142, double %141, double %143
  %145 = fadd double %140, %144
  store double %145, ptr %135, align 8, !tbaa !9
  %gep1949 = getelementptr double, ptr %invariant.gep1948, i64 %indvars.iv1484
  %146 = load double, ptr %gep1949, align 8, !tbaa !9
  %147 = fcmp oge double %146, 0.000000e+00
  %148 = fneg double %146
  %149 = select i1 %147, double %146, double %148
  %150 = fadd double %145, %149
  store double %150, ptr %135, align 8, !tbaa !9
  %indvars.iv.next1485.1 = add nuw nsw i64 %indvars.iv1484, 2
  %niter.next.1 = add i64 %niter, 2
  %niter.ncmp.1 = icmp eq i64 %niter.next.1, %unroll_iter
  br i1 %niter.ncmp.1, label %.unr-lcssa, label %139, !llvm.loop !13

.unr-lcssa:                                       ; preds = %139, %.lr.ph1280
  %.lcssa1922.ph = phi double [ poison, %.lr.ph1280 ], [ %146, %139 ]
  %indvars.iv1484.unr = phi i64 [ 1, %.lr.ph1280 ], [ %indvars.iv.next1485.1, %139 ]
  %.unr = phi double [ 0.000000e+00, %.lr.ph1280 ], [ %150, %139 ]
  %151 = and i64 %indvar, 1
  %lcmp.mod.not.not = icmp eq i64 %151, 0
  br i1 %lcmp.mod.not.not, label %.epilog-lcssa, label %157

.epilog-lcssa:                                    ; preds = %.unr-lcssa
  %gep1640.epil = getelementptr double, ptr %invariant.gep1639, i64 %indvars.iv1484.unr
  %152 = load double, ptr %gep1640.epil, align 8, !tbaa !9
  %153 = fcmp oge double %152, 0.000000e+00
  %154 = fneg double %152
  %155 = select i1 %153, double %152, double %154
  %156 = fadd double %.unr, %155
  store double %156, ptr %135, align 8, !tbaa !9
  br label %157

157:                                              ; preds = %.unr-lcssa, %.epilog-lcssa
  %.lcssa1922 = phi double [ %.lcssa1922.ph, %.unr-lcssa ], [ %152, %.epilog-lcssa ]
  %indvars.iv.next1490 = add nuw nsw i64 %indvars.iv1489, 1
  %exitcond1493.not = icmp eq i64 %indvars.iv.next1490, %wide.trip.count1492
  %indvar.next = add i64 %indvar, 1
  br i1 %exitcond1493.not, label %._crit_edge, label %.lr.ph1280, !llvm.loop !14

._crit_edge:                                      ; preds = %157
  %158 = add nsw i32 %127, -1
  store i32 %158, ptr %20, align 4, !tbaa !5
  store double %.lcssa1922, ptr %22, align 8, !tbaa !9
  br label %159

159:                                              ; preds = %._crit_edge, %122
  %160 = shl i32 %127, 1
  br i1 %50, label %161, label %.loopexit1272

161:                                              ; preds = %159
  %162 = load i32, ptr %11, align 4, !tbaa !5
  %invariant.gep1351 = getelementptr i8, ptr %2, i64 -8
  %invariant.gep1353 = getelementptr i8, ptr %44, i64 8
  store i32 %127, ptr %31, align 4, !tbaa !5
  %163 = icmp sgt i32 %127, 0
  br i1 %163, label %.lr.ph1389, label %.loopexit1272

.lr.ph1389:                                       ; preds = %161
  %.not11431166 = icmp eq i32 %56, 0
  %164 = add i32 %36, 1
  %invariant.gep1286 = getelementptr i8, ptr %38, i64 8
  %165 = getelementptr inbounds i8, ptr %28, i64 16
  %166 = getelementptr inbounds i8, ptr %28, i64 8
  %167 = getelementptr inbounds i8, ptr %28, i64 24
  %168 = or disjoint i32 %160, 1
  %169 = sext i32 %168 to i64
  %170 = getelementptr inbounds double, ptr %45, i64 %169
  %.not1148 = icmp eq i32 %55, 0
  %171 = sext i32 %160 to i64
  %172 = sext i32 %36 to i64
  %173 = shl nsw i64 %43, 3
  %scevgep = getelementptr i8, ptr %8, i64 %173
  %invariant.gep1647 = getelementptr double, ptr %45, i64 %171
  %invariant.gep1649 = getelementptr double, ptr %45, i64 %171
  %invariant.gep1653 = getelementptr double, ptr %45, i64 %171
  %174 = add i64 %18, -8
  %scevgep1738 = getelementptr i8, ptr %12, i64 -8
  %175 = shl nsw i64 %171, 3
  %scevgep1740 = getelementptr i8, ptr %12, i64 %175
  %176 = getelementptr i8, ptr %12, i64 %175
  %scevgep1741 = getelementptr i8, ptr %176, i64 -8
  %177 = shl nsw i64 %37, 3
  %178 = add nsw i64 %177, 8
  %scevgep1744 = getelementptr i8, ptr %4, i64 %178
  %scevgep1746 = getelementptr i8, ptr %4, i64 %177
  %scevgep1749 = getelementptr i8, ptr %4, i64 %178
  %scevgep1751 = getelementptr i8, ptr %4, i64 %177
  br label %179

179:                                              ; preds = %.lr.ph1389, %.thread1209
  %.01387 = phi i32 [ %162, %.lr.ph1389 ], [ %.112011212, %.thread1209 ]
  %.010531386 = phi i32 [ 0, %.lr.ph1389 ], [ %736, %.thread1209 ]
  %storemerge1385 = phi i32 [ %127, %.lr.ph1389 ], [ %738, %.thread1209 ]
  %180 = icmp eq i32 %.010531386, 1
  br i1 %180, label %.thread1209, label %181

181:                                              ; preds = %179
  %182 = icmp eq i32 %storemerge1385, 1
  br i1 %182, label %191, label %183

183:                                              ; preds = %181
  %184 = add nsw i32 %storemerge1385, -1
  %185 = mul nsw i32 %184, %36
  %186 = add nsw i32 %185, %storemerge1385
  %187 = sext i32 %186 to i64
  %188 = getelementptr inbounds double, ptr %38, i64 %187
  %189 = load double, ptr %188, align 8, !tbaa !9
  %190 = fcmp oeq double %189, 0.000000e+00
  br i1 %190, label %191, label %.thread1164

191:                                              ; preds = %183, %181
  br i1 %.not11431166, label %208, label %196

.thread1164:                                      ; preds = %183
  br i1 %.not11431166, label %.thread1618, label %.thread1169

.thread1618:                                      ; preds = %.thread1164
  %192 = mul i32 %storemerge1385, %164
  %193 = sext i32 %192 to i64
  %194 = getelementptr inbounds double, ptr %38, i64 %193
  %195 = load double, ptr %194, align 8, !tbaa !9
  store double %195, ptr %33, align 8, !tbaa !9
  br label %213

196:                                              ; preds = %191
  %197 = icmp eq i32 %.010531386, 0
  br i1 %197, label %198, label %.thread1169

198:                                              ; preds = %196
  %199 = zext nneg i32 %storemerge1385 to i64
  %200 = getelementptr inbounds i32, ptr %35, i64 %199
  %201 = load i32, ptr %200, align 4, !tbaa !5
  %.not1145 = icmp eq i32 %201, 0
  br i1 %.not1145, label %.thread1209, label %.thread1612

.thread1612:                                      ; preds = %198
  %202 = mul i32 %storemerge1385, %164
  %203 = sext i32 %202 to i64
  %204 = getelementptr inbounds double, ptr %38, i64 %203
  %205 = load double, ptr %204, align 8, !tbaa !9
  store double %205, ptr %33, align 8, !tbaa !9
  store double 0.000000e+00, ptr %32, align 8, !tbaa !9
  br label %236

.thread1169:                                      ; preds = %.thread1164, %196
  %.1105411671171 = phi i32 [ %.010531386, %196 ], [ -1, %.thread1164 ]
  %206 = zext nneg i32 %storemerge1385 to i64
  %gep1352 = getelementptr i32, ptr %invariant.gep1351, i64 %206
  %207 = load i32, ptr %gep1352, align 4, !tbaa !5
  %.not1144 = icmp eq i32 %207, 0
  br i1 %.not1144, label %.thread1197, label %208

208:                                              ; preds = %.thread1169, %191
  %.110541168 = phi i32 [ %.1105411671171, %.thread1169 ], [ %.010531386, %191 ]
  %.110541168.fr = freeze i32 %.110541168
  %209 = mul i32 %storemerge1385, %164
  %210 = sext i32 %209 to i64
  %211 = getelementptr inbounds double, ptr %38, i64 %210
  %212 = load double, ptr %211, align 8, !tbaa !9
  store double %212, ptr %33, align 8, !tbaa !9
  store double 0.000000e+00, ptr %32, align 8, !tbaa !9
  %.not1146 = icmp eq i32 %.110541168.fr, 0
  br i1 %.not1146, label %236, label %213

213:                                              ; preds = %.thread1618, %208
  %.110541168.fr1622 = phi i32 [ -1, %.thread1618 ], [ %.110541168.fr, %208 ]
  %214 = add nsw i32 %storemerge1385, -1
  %215 = mul nsw i32 %214, %36
  %216 = add nsw i32 %215, %storemerge1385
  %217 = sext i32 %216 to i64
  %218 = getelementptr inbounds double, ptr %38, i64 %217
  %219 = load double, ptr %218, align 8, !tbaa !9
  %220 = fcmp oge double %219, 0.000000e+00
  %221 = fneg double %219
  %222 = select i1 %220, double %219, double %221
  %223 = call double @sqrt(double noundef %222) #6
  %224 = load i32, ptr %31, align 4, !tbaa !5
  %225 = add nsw i32 %224, -1
  %226 = mul nsw i32 %224, %36
  %227 = add nsw i32 %225, %226
  %228 = sext i32 %227 to i64
  %229 = getelementptr inbounds double, ptr %38, i64 %228
  %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 = call double @sqrt(double noundef %233) #6
  %235 = fmul double %223, %234
  store double %235, ptr %32, align 8, !tbaa !9
  %.pre1571 = load double, ptr %33, align 8
  br label %236

236:                                              ; preds = %.thread1612, %213, %208
  %.not11461617 = phi i1 [ false, %213 ], [ true, %208 ], [ true, %.thread1612 ]
  %.110541168.fr1616 = phi i32 [ %.110541168.fr1622, %213 ], [ 0, %208 ], [ 0, %.thread1612 ]
  %237 = phi double [ %235, %213 ], [ 0.000000e+00, %208 ], [ 0.000000e+00, %.thread1612 ]
  %238 = phi double [ %.pre1571, %213 ], [ %212, %208 ], [ %205, %.thread1612 ]
  %239 = fcmp oge double %238, 0.000000e+00
  %240 = fneg double %238
  %241 = select i1 %239, double %238, double %240
  %242 = fcmp oge double %237, 0.000000e+00
  %243 = fneg double %237
  %244 = select i1 %242, double %237, double %243
  %245 = fadd double %241, %244
  %246 = fmul double %125, %245
  store double %246, ptr %22, align 8, !tbaa !9
  %247 = fcmp oge double %246, %130
  %248 = select i1 %247, double %246, double %130
  store double %248, ptr %26, align 8, !tbaa !9
  %249 = load i32, ptr %31, align 4, !tbaa !5
  br i1 %.not11461617, label %250, label %432

250:                                              ; preds = %236
  %251 = load i32, ptr %3, align 4, !tbaa !5
  %252 = add nsw i32 %251, %249
  %253 = sext i32 %252 to i64
  %254 = getelementptr inbounds double, ptr %45, i64 %253
  store double 1.000000e+00, ptr %254, align 8, !tbaa !9
  %255 = add nsw i32 %249, -1
  store i32 %255, ptr %19, align 4, !tbaa !5
  %.not1153.not1323 = icmp sgt i32 %249, 1
  br i1 %.not1153.not1323, label %.lr.ph1326, label %._crit_edge1346

.lr.ph1326:                                       ; preds = %250
  %256 = mul nsw i32 %249, %36
  %257 = sext i32 %256 to i64
  %258 = sext i32 %251 to i64
  %wide.trip.count1522 = zext nneg i32 %249 to i64
  %invariant.gep1667 = getelementptr double, ptr %38, i64 %257
  %invariant.gep1669 = getelementptr double, ptr %45, i64 %258
  %259 = add nsw i64 %wide.trip.count1522, -1
  %min.iters.check = icmp ult i32 %249, 5
  br i1 %min.iters.check, label %scalar.ph.preheader, label %vector.memcheck

scalar.ph.preheader:                              ; preds = %middle.block, %vector.memcheck, %.lr.ph1326
  %indvars.iv1519.ph = phi i64 [ 1, %vector.memcheck ], [ 1, %.lr.ph1326 ], [ %ind.end, %middle.block ]
  %260 = sub nsw i64 %wide.trip.count1522, %indvars.iv1519.ph
  %xtraiter1928 = and i64 %260, 3
  %lcmp.mod1929.not = icmp eq i64 %xtraiter1928, 0
  br i1 %lcmp.mod1929.not, label %scalar.ph.prol.loopexit, label %scalar.ph.prol

scalar.ph.prol:                                   ; preds = %scalar.ph.preheader, %scalar.ph.prol
  %indvars.iv1519.prol = phi i64 [ %indvars.iv.next1520.prol, %scalar.ph.prol ], [ %indvars.iv1519.ph, %scalar.ph.preheader ]
  %prol.iter1930 = phi i64 [ %prol.iter1930.next, %scalar.ph.prol ], [ 0, %scalar.ph.preheader ]
  %gep1668.prol = getelementptr double, ptr %invariant.gep1667, i64 %indvars.iv1519.prol
  %261 = load double, ptr %gep1668.prol, align 8, !tbaa !9
  %262 = fneg double %261
  %gep1670.prol = getelementptr double, ptr %invariant.gep1669, i64 %indvars.iv1519.prol
  store double %262, ptr %gep1670.prol, align 8, !tbaa !9
  %indvars.iv.next1520.prol = add nuw nsw i64 %indvars.iv1519.prol, 1
  %prol.iter1930.next = add i64 %prol.iter1930, 1
  %prol.iter1930.cmp.not = icmp eq i64 %prol.iter1930.next, %xtraiter1928
  br i1 %prol.iter1930.cmp.not, label %scalar.ph.prol.loopexit, label %scalar.ph.prol, !llvm.loop !15

scalar.ph.prol.loopexit:                          ; preds = %scalar.ph.prol, %scalar.ph.preheader
  %indvars.iv1519.unr = phi i64 [ %indvars.iv1519.ph, %scalar.ph.preheader ], [ %indvars.iv.next1520.prol, %scalar.ph.prol ]
  %263 = sub nsw i64 %indvars.iv1519.ph, %wide.trip.count1522
  %264 = icmp ugt i64 %263, -4
  br i1 %264, label %.preheader, label %scalar.ph

vector.memcheck:                                  ; preds = %.lr.ph1326
  %265 = shl nsw i64 %258, 3
  %266 = add i64 %174, %265
  %267 = add nsw i64 %37, %257
  %268 = shl nsw i64 %267, 3
  %269 = add i64 %268, %17
  %270 = sub i64 %266, %269
  %diff.check = icmp ult i64 %270, 32
  br i1 %diff.check, label %scalar.ph.preheader, label %vector.ph

vector.ph:                                        ; preds = %vector.memcheck
  %n.vec = and i64 %259, -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
  %271 = getelementptr double, ptr %invariant.gep1667, i64 %offset.idx
  %272 = getelementptr i8, ptr %271, i64 16
  %wide.load = load <2 x double>, ptr %271, align 8, !tbaa !9
  %wide.load1720 = load <2 x double>, ptr %272, align 8, !tbaa !9
  %273 = fneg <2 x double> %wide.load
  %274 = fneg <2 x double> %wide.load1720
  %275 = getelementptr double, ptr %invariant.gep1669, i64 %offset.idx
  %276 = getelementptr i8, ptr %275, i64 16
  store <2 x double> %273, ptr %275, align 8, !tbaa !9
  store <2 x double> %274, ptr %276, align 8, !tbaa !9
  %index.next = add nuw i64 %index, 4
  %277 = icmp eq i64 %index.next, %n.vec
  br i1 %277, label %middle.block, label %vector.body, !llvm.loop !17

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

.preheader:                                       ; preds = %scalar.ph.prol.loopexit, %scalar.ph, %middle.block
  br i1 %.not1153.not1323, label %.lr.ph1345.preheader, label %._crit_edge1346

.lr.ph1345.preheader:                             ; preds = %.preheader
  %278 = zext nneg i32 %249 to i64
  %279 = add nsw i64 %278, -1
  br label %.lr.ph1345

scalar.ph:                                        ; preds = %scalar.ph.prol.loopexit, %scalar.ph
  %indvars.iv1519 = phi i64 [ %indvars.iv.next1520.3, %scalar.ph ], [ %indvars.iv1519.unr, %scalar.ph.prol.loopexit ]
  %gep1668 = getelementptr double, ptr %invariant.gep1667, i64 %indvars.iv1519
  %280 = load double, ptr %gep1668, align 8, !tbaa !9
  %281 = fneg double %280
  %gep1670 = getelementptr double, ptr %invariant.gep1669, i64 %indvars.iv1519
  store double %281, ptr %gep1670, align 8, !tbaa !9
  %indvars.iv.next1520 = add nuw nsw i64 %indvars.iv1519, 1
  %gep1668.1 = getelementptr double, ptr %invariant.gep1667, i64 %indvars.iv.next1520
  %282 = load double, ptr %gep1668.1, align 8, !tbaa !9
  %283 = fneg double %282
  %gep1670.1 = getelementptr double, ptr %invariant.gep1669, i64 %indvars.iv.next1520
  store double %283, ptr %gep1670.1, align 8, !tbaa !9
  %indvars.iv.next1520.1 = add nuw nsw i64 %indvars.iv1519, 2
  %gep1668.2 = getelementptr double, ptr %invariant.gep1667, i64 %indvars.iv.next1520.1
  %284 = load double, ptr %gep1668.2, align 8, !tbaa !9
  %285 = fneg double %284
  %gep1670.2 = getelementptr double, ptr %invariant.gep1669, i64 %indvars.iv.next1520.1
  store double %285, ptr %gep1670.2, align 8, !tbaa !9
  %indvars.iv.next1520.2 = add nuw nsw i64 %indvars.iv1519, 3
  %gep1668.3 = getelementptr double, ptr %invariant.gep1667, i64 %indvars.iv.next1520.2
  %286 = load double, ptr %gep1668.3, align 8, !tbaa !9
  %287 = fneg double %286
  %gep1670.3 = getelementptr double, ptr %invariant.gep1669, i64 %indvars.iv.next1520.2
  store double %287, ptr %gep1670.3, align 8, !tbaa !9
  %indvars.iv.next1520.3 = add nuw nsw i64 %indvars.iv1519, 4
  %exitcond1523.not.3 = icmp eq i64 %indvars.iv.next1520.3, %wide.trip.count1522
  br i1 %exitcond1523.not.3, label %.preheader, label %scalar.ph, !llvm.loop !20

.lr.ph1345:                                       ; preds = %.lr.ph1345.preheader, %.lr.ph1345._crit_edge
  %indvars.iv1524 = phi i64 [ %279, %.lr.ph1345.preheader ], [ %.pre1604, %.lr.ph1345._crit_edge ]
  %.010781343 = phi i32 [ %255, %.lr.ph1345.preheader ], [ %.21080, %.lr.ph1345._crit_edge ]
  %indvars1526 = trunc i64 %indvars.iv1524 to i32
  %288 = sext i32 %.010781343 to i64
  %289 = icmp sgt i64 %indvars.iv1524, %288
  %.pre1604 = add nsw i64 %indvars.iv1524, -1
  br i1 %289, label %.lr.ph1345._crit_edge, label %290

290:                                              ; preds = %.lr.ph1345
  %.not1157 = icmp eq i64 %indvars.iv1524, 1
  br i1 %.not1157, label %..thread1172_crit_edge, label %291

..thread1172_crit_edge:                           ; preds = %290
  %.pre1575 = load i32, ptr %3, align 4, !tbaa !5
  br label %.thread1172

291:                                              ; preds = %290
  %292 = add nsw i32 %indvars1526, -1
  %293 = mul nsw i32 %292, %36
  %294 = sext i32 %293 to i64
  %295 = getelementptr double, ptr %38, i64 %indvars.iv1524
  %296 = getelementptr double, ptr %295, i64 %294
  %297 = load double, ptr %296, align 8, !tbaa !9
  %298 = fcmp une double %297, 0.000000e+00
  %299 = trunc nuw nsw i64 %.pre1604 to i32
  %.pre1576 = load i32, ptr %3, align 4, !tbaa !5
  br i1 %298, label %.thread1176, label %.thread1172

.thread1176:                                      ; preds = %291
  %300 = mul nsw i64 %.pre1604, %172
  %301 = getelementptr double, ptr %38, i64 %.pre1604
  %302 = getelementptr double, ptr %301, i64 %294
  %303 = sext i32 %.pre1576 to i64
  %304 = getelementptr double, ptr %45, i64 %.pre1604
  %305 = getelementptr double, ptr %304, i64 %303
  call void @dlaln2_(ptr noundef nonnull @c_false, ptr noundef nonnull @c__2, ptr noundef nonnull @c__1, ptr noundef nonnull %26, ptr noundef nonnull @c_b22, ptr noundef %302, ptr noundef nonnull %5, ptr noundef nonnull @c_b22, ptr noundef nonnull @c_b22, ptr noundef nonnull %305, ptr noundef nonnull %3, ptr noundef nonnull %33, ptr noundef nonnull @c_b25, ptr noundef nonnull %28, ptr noundef nonnull @c__2, ptr noundef nonnull %27, ptr noundef nonnull %30, ptr noundef nonnull %23) #6
  %306 = load double, ptr %30, align 8, !tbaa !9
  %307 = fcmp ogt double %306, 1.000000e+00
  br i1 %307, label %342, label %thread-pre-split1182

.thread1172:                                      ; preds = %..thread1172_crit_edge, %291
  %308 = phi i32 [ %.pre1576, %291 ], [ %.pre1575, %..thread1172_crit_edge ]
  %.110791175 = phi i32 [ %299, %291 ], [ 0, %..thread1172_crit_edge ]
  %309 = mul nsw i32 %36, %indvars1526
  %310 = sext i32 %309 to i64
  %311 = getelementptr double, ptr %38, i64 %indvars.iv1524
  %312 = getelementptr double, ptr %311, i64 %310
  %313 = sext i32 %308 to i64
  %314 = getelementptr double, ptr %45, i64 %indvars.iv1524
  %315 = getelementptr double, ptr %314, i64 %313
  call void @dlaln2_(ptr noundef nonnull @c_false, ptr noundef nonnull @c__1, ptr noundef nonnull @c__1, ptr noundef nonnull %26, ptr noundef nonnull @c_b22, ptr noundef %312, ptr noundef nonnull %5, ptr noundef nonnull @c_b22, ptr noundef nonnull @c_b22, ptr noundef nonnull %315, ptr noundef nonnull %3, ptr noundef nonnull %33, ptr noundef nonnull @c_b25, ptr noundef nonnull %28, ptr noundef nonnull @c__2, ptr noundef nonnull %27, ptr noundef nonnull %30, ptr noundef nonnull %23) #6
  %316 = load double, ptr %30, align 8, !tbaa !9
  %317 = fcmp ogt double %316, 1.000000e+00
  br i1 %317, label %318, label %thread-pre-split1180

318:                                              ; preds = %.thread1172
  %319 = getelementptr inbounds double, ptr %45, i64 %indvars.iv1524
  %320 = load double, ptr %319, align 8, !tbaa !9
  %321 = fdiv double %132, %316
  %322 = fcmp ogt double %320, %321
  br i1 %322, label %323, label %thread-pre-split1180

323:                                              ; preds = %318
  %324 = load double, ptr %28, align 16, !tbaa !9
  %325 = fdiv double %324, %316
  store double %325, ptr %28, align 16, !tbaa !9
  %326 = load double, ptr %27, align 8, !tbaa !9
  %327 = fdiv double %326, %316
  store double %327, ptr %27, align 8, !tbaa !9
  br label %328

thread-pre-split1180:                             ; preds = %.thread1172, %318
  %.pr1181 = load double, ptr %27, align 8, !tbaa !9
  br label %328

328:                                              ; preds = %thread-pre-split1180, %323
  %329 = phi double [ %.pr1181, %thread-pre-split1180 ], [ %327, %323 ]
  %330 = fcmp une double %329, 1.000000e+00
  br i1 %330, label %331, label %334

331:                                              ; preds = %328
  %332 = load i32, ptr %3, align 4, !tbaa !5
  %333 = sext i32 %332 to i64
  %gep1338 = getelementptr double, ptr %12, i64 %333
  call void @dscal_(ptr noundef nonnull %31, ptr noundef nonnull %27, ptr noundef %gep1338, ptr noundef nonnull @c__1) #6
  br label %334

334:                                              ; preds = %331, %328
  %335 = load double, ptr %28, align 16, !tbaa !9
  %336 = load i32, ptr %3, align 4, !tbaa !5
  %337 = sext i32 %336 to i64
  %338 = getelementptr double, ptr %45, i64 %indvars.iv1524
  %339 = getelementptr double, ptr %338, i64 %337
  store double %335, ptr %339, align 8, !tbaa !9
  %340 = trunc nuw nsw i64 %.pre1604 to i32
  store i32 %340, ptr %19, align 4, !tbaa !5
  %341 = fneg double %335
  store double %341, ptr %22, align 8, !tbaa !9
  br label %.lr.ph1345._crit_edge.sink.split

342:                                              ; preds = %.thread1176
  %343 = getelementptr inbounds double, ptr %45, i64 %.pre1604
  %344 = load double, ptr %343, align 8, !tbaa !9
  store double %344, ptr %22, align 8, !tbaa !9
  %345 = getelementptr inbounds double, ptr %45, i64 %indvars.iv1524
  %346 = load double, ptr %345, align 8, !tbaa !9
  %347 = fcmp oge double %344, %346
  %348 = select i1 %347, double %344, double %346
  %349 = fdiv double %132, %306
  %350 = fcmp ogt double %348, %349
  br i1 %350, label %351, label %thread-pre-split1182

351:                                              ; preds = %342
  %352 = load <2 x double>, ptr %28, align 16, !tbaa !9
  %353 = insertelement <2 x double> poison, double %306, i64 0
  %354 = shufflevector <2 x double> %353, <2 x double> poison, <2 x i32> zeroinitializer
  %355 = fdiv <2 x double> %352, %354
  store <2 x double> %355, ptr %28, align 16, !tbaa !9
  %356 = load double, ptr %27, align 8, !tbaa !9
  %357 = fdiv double %356, %306
  store double %357, ptr %27, align 8, !tbaa !9
  br label %358

thread-pre-split1182:                             ; preds = %.thread1176, %342
  %.pr1183 = load double, ptr %27, align 8, !tbaa !9
  br label %358

358:                                              ; preds = %thread-pre-split1182, %351
  %359 = phi double [ %.pr1183, %thread-pre-split1182 ], [ %357, %351 ]
  %360 = fcmp une double %359, 1.000000e+00
  br i1 %360, label %361, label %364

361:                                              ; preds = %358
  %362 = load i32, ptr %3, align 4, !tbaa !5
  %363 = sext i32 %362 to i64
  %gep1328 = getelementptr double, ptr %12, i64 %363
  call void @dscal_(ptr noundef nonnull %31, ptr noundef nonnull %27, ptr noundef %gep1328, ptr noundef nonnull @c__1) #6
  br label %364

364:                                              ; preds = %361, %358
  %365 = load i32, ptr %3, align 4, !tbaa !5
  %366 = sext i32 %365 to i64
  %367 = getelementptr double, ptr %45, i64 %.pre1604
  %368 = getelementptr double, ptr %367, i64 %366
  %369 = load <2 x double>, ptr %28, align 16, !tbaa !9
  store <2 x double> %369, ptr %368, align 8, !tbaa !9
  %370 = trunc i64 %indvars.iv1524 to i32
  %371 = add i32 %370, -2
  store i32 %371, ptr %19, align 4, !tbaa !5
  %372 = extractelement <2 x double> %369, i64 0
  %373 = fneg double %372
  store double %373, ptr %22, align 8, !tbaa !9
  %gep1330 = getelementptr double, ptr %invariant.gep1286, i64 %300
  %gep1332 = getelementptr double, ptr %12, i64 %366
  call void @daxpy_(ptr noundef nonnull %19, ptr noundef nonnull %22, ptr noundef %gep1330, ptr noundef nonnull @c__1, ptr noundef %gep1332, ptr noundef nonnull @c__1) #6
  store i32 %371, ptr %19, align 4, !tbaa !5
  %374 = load double, ptr %166, align 8, !tbaa !9
  %375 = fneg double %374
  store double %375, ptr %22, align 8, !tbaa !9
  %376 = load i32, ptr %3, align 4, !tbaa !5
  %377 = sext i32 %376 to i64
  br label %.lr.ph1345._crit_edge.sink.split

.lr.ph1345._crit_edge.sink.split:                 ; preds = %334, %364
  %.sink1701 = phi i64 [ %377, %364 ], [ %337, %334 ]
  %.21080.ph = phi i32 [ %371, %364 ], [ %.110791175, %334 ]
  %.pn = mul nsw i64 %indvars.iv1524, %172
  %gep1334.sink = getelementptr double, ptr %invariant.gep1286, i64 %.pn
  %gep1336 = getelementptr double, ptr %12, i64 %.sink1701
  call void @daxpy_(ptr noundef nonnull %19, ptr noundef nonnull %22, ptr noundef %gep1334.sink, ptr noundef nonnull @c__1, ptr noundef %gep1336, ptr noundef nonnull @c__1) #6
  br label %.lr.ph1345._crit_edge

.lr.ph1345._crit_edge:                            ; preds = %.lr.ph1345._crit_edge.sink.split, %.lr.ph1345
  %.21080 = phi i32 [ %.010781343, %.lr.ph1345 ], [ %.21080.ph, %.lr.ph1345._crit_edge.sink.split ]
  %378 = icmp sgt i64 %indvars.iv1524, 1
  br i1 %378, label %.lr.ph1345, label %._crit_edge1346, !llvm.loop !21

._crit_edge1346:                                  ; preds = %.lr.ph1345._crit_edge, %250, %.preheader
  br i1 %.not1148, label %379, label %404

379:                                              ; preds = %._crit_edge1346
  %380 = load i32, ptr %3, align 4, !tbaa !5
  %381 = sext i32 %380 to i64
  %gep1382 = getelementptr double, ptr %12, i64 %381
  %382 = mul nsw i32 %.01387, %42
  %383 = sext i32 %382 to i64
  %gep1384 = getelementptr double, ptr %invariant.gep1353, i64 %383
  call void @dcopy_(ptr noundef nonnull %31, ptr noundef %gep1382, ptr noundef nonnull @c__1, ptr noundef %gep1384, ptr noundef nonnull @c__1) #6
  %384 = call i32 @idamax_(ptr noundef nonnull %31, ptr noundef %gep1384, ptr noundef nonnull @c__1) #6
  %385 = add nsw i32 %384, %382
  %386 = sext i32 %385 to i64
  %387 = getelementptr inbounds double, ptr %44, i64 %386
  %388 = load double, ptr %387, align 8, !tbaa !9
  store double %388, ptr %22, align 8, !tbaa !9
  %389 = fcmp oge double %388, 0.000000e+00
  %390 = fneg double %388
  %391 = select i1 %389, double %388, double %390
  %392 = fdiv double 1.000000e+00, %391
  store double %392, ptr %29, align 8, !tbaa !9
  call void @dscal_(ptr noundef nonnull %31, ptr noundef nonnull %29, ptr noundef %gep1384, ptr noundef nonnull @c__1) #6
  %393 = load i32, ptr %3, align 4, !tbaa !5
  store i32 %393, ptr %19, align 4, !tbaa !5
  %394 = load i32, ptr %31, align 4, !tbaa !5
  %.not1155.not1347 = icmp slt i32 %394, %393
  br i1 %.not1155.not1347, label %.lr.ph1350.preheader, label %.loopexit1269

.lr.ph1350.preheader:                             ; preds = %379
  %395 = add nsw i32 %394, 1
  %396 = add i32 %395, %382
  %397 = sext i32 %396 to i64
  %398 = shl nsw i64 %397, 3
  %scevgep1527 = getelementptr i8, ptr %scevgep, i64 %398
  %399 = xor i32 %394, -1
  %400 = add i32 %393, %399
  %401 = zext i32 %400 to i64
  %402 = shl nuw nsw i64 %401, 3
  %403 = add nuw nsw i64 %402, 8
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %scevgep1527, i8 0, i64 %403, i1 false), !tbaa !9
  br label %.loopexit1269

404:                                              ; preds = %._crit_edge1346
  %405 = load i32, ptr %31, align 4, !tbaa !5
  %406 = icmp sgt i32 %405, 1
  br i1 %406, label %407, label %416

407:                                              ; preds = %404
  %408 = add nsw i32 %405, -1
  store i32 %408, ptr %19, align 4, !tbaa !5
  %409 = load i32, ptr %3, align 4, !tbaa !5
  %410 = sext i32 %409 to i64
  %gep1374 = getelementptr double, ptr %12, i64 %410
  %411 = add nsw i32 %409, %405
  %412 = sext i32 %411 to i64
  %413 = getelementptr inbounds double, ptr %45, i64 %412
  %414 = mul nsw i32 %405, %42
  %415 = sext i32 %414 to i64
  %gep1376 = getelementptr double, ptr %invariant.gep1353, i64 %415
  call void @dgemv_(ptr noundef nonnull @.str.8, ptr noundef nonnull %3, ptr noundef nonnull %19, ptr noundef nonnull @c_b22, ptr noundef %8, ptr noundef nonnull %9, ptr noundef %gep1374, ptr noundef nonnull @c__1, ptr noundef nonnull %413, ptr noundef %gep1376, ptr noundef nonnull @c__1) #6
  %.pre1577 = load i32, ptr %31, align 4, !tbaa !5
  br label %416

416:                                              ; preds = %407, %404
  %417 = phi i32 [ %.pre1577, %407 ], [ %405, %404 ]
  %418 = mul nsw i32 %417, %42
  %419 = sext i32 %418 to i64
  %gep1378 = getelementptr double, ptr %invariant.gep1353, i64 %419
  %420 = call i32 @idamax_(ptr noundef nonnull %3, ptr noundef %gep1378, ptr noundef nonnull @c__1) #6
  %421 = load i32, ptr %31, align 4, !tbaa !5
  %422 = mul nsw i32 %421, %42
  %423 = add nsw i32 %422, %420
  %424 = sext i32 %423 to i64
  %425 = getelementptr inbounds double, ptr %44, i64 %424
  %426 = load double, ptr %425, align 8, !tbaa !9
  store double %426, ptr %22, align 8, !tbaa !9
  %427 = fcmp oge double %426, 0.000000e+00
  %428 = fneg double %426
  %429 = select i1 %427, double %426, double %428
  %430 = fdiv double 1.000000e+00, %429
  store double %430, ptr %29, align 8, !tbaa !9
  %431 = sext i32 %422 to i64
  %gep1380 = getelementptr double, ptr %invariant.gep1353, i64 %431
  call void @dscal_(ptr noundef nonnull %3, ptr noundef nonnull %29, ptr noundef %gep1380, ptr noundef nonnull @c__1) #6
  br label %.loopexit1269

432:                                              ; preds = %236
  %433 = add nsw i32 %249, -1
  %434 = mul nsw i32 %249, %36
  %435 = add nsw i32 %433, %434
  %436 = sext i32 %435 to i64
  %437 = getelementptr inbounds double, ptr %38, i64 %436
  %438 = load double, ptr %437, align 8, !tbaa !9
  store double %438, ptr %22, align 8, !tbaa !9
  %439 = fcmp oge double %438, 0.000000e+00
  %440 = fneg double %438
  %441 = select i1 %439, double %438, double %440
  %442 = mul nsw i32 %433, %36
  %443 = add nsw i32 %442, %249
  %444 = sext i32 %443 to i64
  %445 = getelementptr inbounds double, ptr %38, i64 %444
  %446 = load double, ptr %445, align 8, !tbaa !9
  %447 = fcmp oge double %446, 0.000000e+00
  %448 = fneg double %446
  %449 = select i1 %447, double %446, double %448
  %450 = fcmp ult double %441, %449
  br i1 %450, label %458, label %451

451:                                              ; preds = %432
  %452 = load i32, ptr %3, align 4, !tbaa !5
  %453 = add nsw i32 %452, %433
  %454 = sext i32 %453 to i64
  %455 = getelementptr inbounds double, ptr %45, i64 %454
  store double 1.000000e+00, ptr %455, align 8, !tbaa !9
  %456 = load double, ptr %437, align 8, !tbaa !9
  %457 = fdiv double %237, %456
  br label %464

458:                                              ; preds = %432
  %459 = fdiv double %243, %446
  %460 = load i32, ptr %3, align 4, !tbaa !5
  %461 = add nsw i32 %460, %433
  %462 = sext i32 %461 to i64
  %463 = getelementptr inbounds double, ptr %45, i64 %462
  store double %459, ptr %463, align 8, !tbaa !9
  br label %464

464:                                              ; preds = %458, %451
  %.sink1702 = phi double [ 1.000000e+00, %458 ], [ %457, %451 ]
  %465 = phi i32 [ %460, %458 ], [ %452, %451 ]
  %466 = add nsw i32 %249, %160
  %467 = sext i32 %466 to i64
  %468 = getelementptr inbounds double, ptr %45, i64 %467
  store double %.sink1702, ptr %468, align 8, !tbaa !9
  %469 = add nsw i32 %465, %249
  %470 = sext i32 %469 to i64
  %471 = getelementptr inbounds double, ptr %45, i64 %470
  store double 0.000000e+00, ptr %471, align 8, !tbaa !9
  %472 = add nsw i32 %433, %160
  %473 = sext i32 %472 to i64
  %474 = getelementptr inbounds double, ptr %45, i64 %473
  store double 0.000000e+00, ptr %474, align 8, !tbaa !9
  %475 = add i32 %249, -2
  store i32 %475, ptr %19, align 4, !tbaa !5
  %.not11471282 = icmp slt i32 %249, 3
  br i1 %.not11471282, label %._crit_edge1303, label %.lr.ph1285

.lr.ph1285:                                       ; preds = %464
  %476 = add nsw i32 %465, %433
  %477 = sext i32 %476 to i64
  %478 = getelementptr inbounds double, ptr %45, i64 %477
  %479 = add nsw i32 %249, %160
  %480 = sext i32 %479 to i64
  %481 = getelementptr inbounds double, ptr %45, i64 %480
  %482 = sext i32 %442 to i64
  %483 = sext i32 %465 to i64
  %484 = sext i32 %434 to i64
  %wide.trip.count1497 = zext nneg i32 %433 to i64
  %invariant.gep1641 = getelementptr double, ptr %38, i64 %482
  %invariant.gep1643 = getelementptr double, ptr %45, i64 %483
  %invariant.gep1645 = getelementptr double, ptr %38, i64 %484
  %485 = add nsw i64 %wide.trip.count1497, -1
  %min.iters.check1786 = icmp ult i64 %485, 16
  br i1 %min.iters.check1786, label %scalar.ph1785.preheader, label %vector.memcheck1736

scalar.ph1785.preheader:                          ; preds = %middle.block1784, %vector.memcheck1736, %.lr.ph1285
  %indvars.iv1494.ph = phi i64 [ 1, %vector.memcheck1736 ], [ 1, %.lr.ph1285 ], [ %ind.end1790, %middle.block1784 ]
  %486 = and i32 %249, 1
  %lcmp.mod1925.not = icmp eq i32 %486, 0
  br i1 %lcmp.mod1925.not, label %scalar.ph1785.prol.loopexit, label %scalar.ph1785.prol

scalar.ph1785.prol:                               ; preds = %scalar.ph1785.preheader
  %487 = load double, ptr %478, align 8, !tbaa !9
  %488 = fneg double %487
  %gep1642.prol = getelementptr double, ptr %invariant.gep1641, i64 %indvars.iv1494.ph
  %489 = load double, ptr %gep1642.prol, align 8, !tbaa !9
  %490 = fmul double %489, %488
  %gep1644.prol = getelementptr double, ptr %invariant.gep1643, i64 %indvars.iv1494.ph
  store double %490, ptr %gep1644.prol, align 8, !tbaa !9
  %491 = load double, ptr %481, align 8, !tbaa !9
  %492 = fneg double %491
  %gep1646.prol = getelementptr double, ptr %invariant.gep1645, i64 %indvars.iv1494.ph
  %493 = load double, ptr %gep1646.prol, align 8, !tbaa !9
  %494 = fmul double %493, %492
  %gep1648.prol = getelementptr double, ptr %invariant.gep1647, i64 %indvars.iv1494.ph
  store double %494, ptr %gep1648.prol, align 8, !tbaa !9
  %indvars.iv.next1495.prol = add nuw nsw i64 %indvars.iv1494.ph, 1
  br label %scalar.ph1785.prol.loopexit

scalar.ph1785.prol.loopexit:                      ; preds = %scalar.ph1785.prol, %scalar.ph1785.preheader
  %indvars.iv1494.unr = phi i64 [ %indvars.iv1494.ph, %scalar.ph1785.preheader ], [ %indvars.iv.next1495.prol, %scalar.ph1785.prol ]
  %495 = add nsw i64 %wide.trip.count1497, -1
  %496 = icmp eq i64 %indvars.iv1494.ph, %495
  br i1 %496, label %.lr.ph1302.preheader, label %scalar.ph1785

vector.memcheck1736:                              ; preds = %.lr.ph1285
  %497 = shl nsw i64 %483, 3
  %scevgep1737 = getelementptr i8, ptr %12, i64 %497
  %498 = shl nuw nsw i64 %wide.trip.count1497, 3
  %499 = getelementptr i8, ptr %scevgep1738, i64 %497
  %scevgep1739 = getelementptr i8, ptr %499, i64 %498
  %scevgep1742 = getelementptr i8, ptr %scevgep1741, i64 %498
  %500 = shl nsw i64 %477, 3
  %scevgep1743 = getelementptr i8, ptr %12, i64 %500
  %501 = shl nsw i64 %482, 3
  %scevgep1745 = getelementptr i8, ptr %scevgep1744, i64 %501
  %502 = getelementptr i8, ptr %scevgep1746, i64 %501
  %scevgep1747 = getelementptr i8, ptr %502, i64 %498
  %503 = shl nsw i64 %480, 3
  %scevgep1748 = getelementptr i8, ptr %12, i64 %503
  %504 = shl nsw i64 %484, 3
  %scevgep1750 = getelementptr i8, ptr %scevgep1749, i64 %504
  %505 = getelementptr i8, ptr %scevgep1751, i64 %504
  %scevgep1752 = getelementptr i8, ptr %505, i64 %498
  %bound0 = icmp ult ptr %scevgep1737, %scevgep1742
  %bound1 = icmp ult ptr %scevgep1740, %scevgep1739
  %found.conflict = and i1 %bound0, %bound1
  %bound01753 = icmp ult ptr %scevgep1737, %scevgep1743
  %bound11754 = icmp ult ptr %478, %scevgep1739
  %found.conflict1755 = and i1 %bound01753, %bound11754
  %conflict.rdx = or i1 %found.conflict, %found.conflict1755
  %bound01756 = icmp ult ptr %scevgep1737, %scevgep1747
  %bound11757 = icmp ult ptr %scevgep1745, %scevgep1739
  %found.conflict1758 = and i1 %bound01756, %bound11757
  %conflict.rdx1759 = or i1 %conflict.rdx, %found.conflict1758
  %bound01760 = icmp ult ptr %scevgep1737, %scevgep1748
  %bound11761 = icmp ult ptr %481, %scevgep1739
  %found.conflict1762 = and i1 %bound01760, %bound11761
  %conflict.rdx1763 = or i1 %conflict.rdx1759, %found.conflict1762
  %bound01764 = icmp ult ptr %scevgep1737, %scevgep1752
  %bound11765 = icmp ult ptr %scevgep1750, %scevgep1739
  %found.conflict1766 = and i1 %bound01764, %bound11765
  %conflict.rdx1767 = or i1 %conflict.rdx1763, %found.conflict1766
  %bound01768 = icmp ult ptr %scevgep1740, %scevgep1743
  %bound11769 = icmp ult ptr %478, %scevgep1742
  %found.conflict1770 = and i1 %bound01768, %bound11769
  %conflict.rdx1771 = or i1 %conflict.rdx1767, %found.conflict1770
  %bound01772 = icmp ult ptr %scevgep1740, %scevgep1747
  %bound11773 = icmp ult ptr %scevgep1745, %scevgep1742
  %found.conflict1774 = and i1 %bound01772, %bound11773
  %conflict.rdx1775 = or i1 %conflict.rdx1771, %found.conflict1774
  %bound01776 = icmp ult ptr %scevgep1740, %scevgep1748
  %bound11777 = icmp ult ptr %481, %scevgep1742
  %found.conflict1778 = and i1 %bound01776, %bound11777
  %conflict.rdx1779 = or i1 %conflict.rdx1775, %found.conflict1778
  %bound01780 = icmp ult ptr %scevgep1740, %scevgep1752
  %bound11781 = icmp ult ptr %scevgep1750, %scevgep1742
  %found.conflict1782 = and i1 %bound01780, %bound11781
  %conflict.rdx1783 = or i1 %conflict.rdx1779, %found.conflict1782
  br i1 %conflict.rdx1783, label %scalar.ph1785.preheader, label %vector.ph1787

vector.ph1787:                                    ; preds = %vector.memcheck1736
  %n.vec1789 = and i64 %485, -2
  %ind.end1790 = or i64 %485, 1
  %506 = load double, ptr %478, align 8, !tbaa !9, !alias.scope !22
  %broadcast.splatinsert = insertelement <2 x double> poison, double %506, i64 0
  %broadcast.splat = shufflevector <2 x double> %broadcast.splatinsert, <2 x double> poison, <2 x i32> zeroinitializer
  %507 = fneg <2 x double> %broadcast.splat
  %508 = load double, ptr %481, align 8, !tbaa !9, !alias.scope !25
  %broadcast.splatinsert1796 = insertelement <2 x double> poison, double %508, i64 0
  %broadcast.splat1797 = shufflevector <2 x double> %broadcast.splatinsert1796, <2 x double> poison, <2 x i32> zeroinitializer
  %509 = fneg <2 x double> %broadcast.splat1797
  br label %vector.body1792

vector.body1792:                                  ; preds = %vector.body1792, %vector.ph1787
  %index1793 = phi i64 [ 0, %vector.ph1787 ], [ %index.next1799, %vector.body1792 ]
  %offset.idx1794 = or disjoint i64 %index1793, 1
  %510 = getelementptr double, ptr %invariant.gep1641, i64 %offset.idx1794
  %wide.load1795 = load <2 x double>, ptr %510, align 8, !tbaa !9, !alias.scope !27
  %511 = fmul <2 x double> %wide.load1795, %507
  %512 = getelementptr double, ptr %invariant.gep1643, i64 %offset.idx1794
  store <2 x double> %511, ptr %512, align 8, !tbaa !9, !alias.scope !29, !noalias !31
  %513 = getelementptr double, ptr %invariant.gep1645, i64 %offset.idx1794
  %wide.load1798 = load <2 x double>, ptr %513, align 8, !tbaa !9, !alias.scope !34
  %514 = fmul <2 x double> %wide.load1798, %509
  %515 = getelementptr double, ptr %invariant.gep1647, i64 %offset.idx1794
  store <2 x double> %514, ptr %515, align 8, !tbaa !9, !alias.scope !35, !noalias !36
  %index.next1799 = add nuw i64 %index1793, 2
  %516 = icmp eq i64 %index.next1799, %n.vec1789
  br i1 %516, label %middle.block1784, label %vector.body1792, !llvm.loop !37

middle.block1784:                                 ; preds = %vector.body1792
  %cmp.n1800 = icmp eq i64 %485, %n.vec1789
  br i1 %cmp.n1800, label %.lr.ph1302.preheader, label %scalar.ph1785.preheader

.lr.ph1302.preheader:                             ; preds = %scalar.ph1785.prol.loopexit, %scalar.ph1785, %middle.block1784
  %517 = zext nneg i32 %475 to i64
  br label %.lr.ph1302

scalar.ph1785:                                    ; preds = %scalar.ph1785.prol.loopexit, %scalar.ph1785
  %indvars.iv1494 = phi i64 [ %indvars.iv.next1495.1, %scalar.ph1785 ], [ %indvars.iv1494.unr, %scalar.ph1785.prol.loopexit ]
  %518 = load double, ptr %478, align 8, !tbaa !9
  %519 = fneg double %518
  %gep1642 = getelementptr double, ptr %invariant.gep1641, i64 %indvars.iv1494
  %520 = load double, ptr %gep1642, align 8, !tbaa !9
  %521 = fmul double %520, %519
  %gep1644 = getelementptr double, ptr %invariant.gep1643, i64 %indvars.iv1494
  store double %521, ptr %gep1644, align 8, !tbaa !9
  %522 = load double, ptr %481, align 8, !tbaa !9
  %523 = fneg double %522
  %gep1646 = getelementptr double, ptr %invariant.gep1645, i64 %indvars.iv1494
  %524 = load double, ptr %gep1646, align 8, !tbaa !9
  %525 = fmul double %524, %523
  %gep1648 = getelementptr double, ptr %invariant.gep1647, i64 %indvars.iv1494
  store double %525, ptr %gep1648, align 8, !tbaa !9
  %indvars.iv.next1495 = add nuw nsw i64 %indvars.iv1494, 1
  %526 = load double, ptr %478, align 8, !tbaa !9
  %527 = fneg double %526
  %gep1642.1 = getelementptr double, ptr %invariant.gep1641, i64 %indvars.iv.next1495
  %528 = load double, ptr %gep1642.1, align 8, !tbaa !9
  %529 = fmul double %528, %527
  %gep1644.1 = getelementptr double, ptr %invariant.gep1643, i64 %indvars.iv.next1495
  store double %529, ptr %gep1644.1, align 8, !tbaa !9
  %530 = load double, ptr %481, align 8, !tbaa !9
  %531 = fneg double %530
  %gep1646.1 = getelementptr double, ptr %invariant.gep1645, i64 %indvars.iv.next1495
  %532 = load double, ptr %gep1646.1, align 8, !tbaa !9
  %533 = fmul double %532, %531
  %gep1648.1 = getelementptr double, ptr %invariant.gep1647, i64 %indvars.iv.next1495
  store double %533, ptr %gep1648.1, align 8, !tbaa !9
  %indvars.iv.next1495.1 = add nuw nsw i64 %indvars.iv1494, 2
  %exitcond1498.not.1 = icmp eq i64 %indvars.iv.next1495.1, %wide.trip.count1497
  br i1 %exitcond1498.not.1, label %.lr.ph1302.preheader, label %scalar.ph1785, !llvm.loop !38

.lr.ph1302:                                       ; preds = %.lr.ph1302.preheader, %.lr.ph1302._crit_edge
  %indvars.iv1499 = phi i64 [ %517, %.lr.ph1302.preheader ], [ %.pre1605, %.lr.ph1302._crit_edge ]
  %.310811300 = phi i32 [ %475, %.lr.ph1302.preheader ], [ %.51083, %.lr.ph1302._crit_edge ]
  %indvars1501 = trunc i64 %indvars.iv1499 to i32
  %534 = sext i32 %.310811300 to i64
  %535 = icmp sgt i64 %indvars.iv1499, %534
  %.pre1605 = add nsw i64 %indvars.iv1499, -1
  br i1 %535, label %.lr.ph1302._crit_edge, label %536

536:                                              ; preds = %.lr.ph1302
  %.not1152 = icmp eq i64 %indvars.iv1499, 1
  br i1 %.not1152, label %..thread1184_crit_edge, label %537

..thread1184_crit_edge:                           ; preds = %536
  %.pre1572 = load i32, ptr %3, align 4, !tbaa !5
  br label %.thread1184

537:                                              ; preds = %536
  %538 = add nsw i32 %indvars1501, -1
  %539 = mul nsw i32 %538, %36
  %540 = sext i32 %539 to i64
  %541 = getelementptr double, ptr %38, i64 %indvars.iv1499
  %542 = getelementptr double, ptr %541, i64 %540
  %543 = load double, ptr %542, align 8, !tbaa !9
  %544 = fcmp une double %543, 0.000000e+00
  %545 = trunc nuw nsw i64 %.pre1605 to i32
  %.pre1573 = load i32, ptr %3, align 4, !tbaa !5
  br i1 %544, label %.thread1188, label %.thread1184

.thread1188:                                      ; preds = %537
  %546 = mul nsw i64 %.pre1605, %172
  %547 = getelementptr double, ptr %38, i64 %.pre1605
  %548 = getelementptr double, ptr %547, i64 %540
  %549 = sext i32 %.pre1573 to i64
  %550 = getelementptr double, ptr %45, i64 %.pre1605
  %551 = getelementptr double, ptr %550, i64 %549
  call void @dlaln2_(ptr noundef nonnull @c_false, ptr noundef nonnull @c__2, ptr noundef nonnull @c__2, ptr noundef nonnull %26, ptr noundef nonnull @c_b22, ptr noundef %548, ptr noundef nonnull %5, ptr noundef nonnull @c_b22, ptr noundef nonnull @c_b22, ptr noundef nonnull %551, ptr noundef nonnull %3, ptr noundef nonnull %33, ptr noundef nonnull %32, ptr noundef nonnull %28, ptr noundef nonnull @c__2, ptr noundef nonnull %27, ptr noundef nonnull %30, ptr noundef nonnull %23) #6
  %552 = load double, ptr %30, align 8, !tbaa !9
  %553 = fcmp ogt double %552, 1.000000e+00
  br i1 %553, label %593, label %thread-pre-split1194

.thread1184:                                      ; preds = %..thread1184_crit_edge, %537
  %554 = phi i32 [ %.pre1573, %537 ], [ %.pre1572, %..thread1184_crit_edge ]
  %.410821187 = phi i32 [ %545, %537 ], [ 0, %..thread1184_crit_edge ]
  %555 = mul nsw i64 %indvars.iv1499, %172
  %556 = mul nsw i32 %36, %indvars1501
  %557 = sext i32 %556 to i64
  %558 = getelementptr double, ptr %38, i64 %indvars.iv1499
  %559 = getelementptr double, ptr %558, i64 %557
  %560 = sext i32 %554 to i64
  %561 = getelementptr double, ptr %45, i64 %indvars.iv1499
  %562 = getelementptr double, ptr %561, i64 %560
  call void @dlaln2_(ptr noundef nonnull @c_false, ptr noundef nonnull @c__1, ptr noundef nonnull @c__2, ptr noundef nonnull %26, ptr noundef nonnull @c_b22, ptr noundef %559, ptr noundef nonnull %5, ptr noundef nonnull @c_b22, ptr noundef nonnull @c_b22, ptr noundef nonnull %562, ptr noundef nonnull %3, ptr noundef nonnull %33, ptr noundef nonnull %32, ptr noundef nonnull %28, ptr noundef nonnull @c__2, ptr noundef nonnull %27, ptr noundef nonnull %30, ptr noundef nonnull %23) #6
  %563 = load double, ptr %30, align 8, !tbaa !9
  %564 = fcmp ogt double %563, 1.000000e+00
  br i1 %564, label %565, label %thread-pre-split1192

565:                                              ; preds = %.thread1184
  %566 = getelementptr inbounds double, ptr %45, i64 %indvars.iv1499
  %567 = load double, ptr %566, align 8, !tbaa !9
  %568 = fdiv double %132, %563
  %569 = fcmp ogt double %567, %568
  br i1 %569, label %570, label %thread-pre-split1192

570:                                              ; preds = %565
  %571 = load double, ptr %28, align 16, !tbaa !9
  %572 = fdiv double %571, %563
  store double %572, ptr %28, align 16, !tbaa !9
  %573 = load double, ptr %165, align 16, !tbaa !9
  %574 = fdiv double %573, %563
  store double %574, ptr %165, align 16, !tbaa !9
  %575 = load double, ptr %27, align 8, !tbaa !9
  %576 = fdiv double %575, %563
  store double %576, ptr %27, align 8, !tbaa !9
  br label %577

thread-pre-split1192:                             ; preds = %.thread1184, %565
  %.pr1193 = load double, ptr %27, align 8, !tbaa !9
  br label %577

577:                                              ; preds = %thread-pre-split1192, %570
  %578 = phi double [ %.pr1193, %thread-pre-split1192 ], [ %576, %570 ]
  %579 = fcmp une double %578, 1.000000e+00
  br i1 %579, label %580, label %583

580:                                              ; preds = %577
  %581 = load i32, ptr %3, align 4, !tbaa !5
  %582 = sext i32 %581 to i64
  %gep1295 = getelementptr double, ptr %12, i64 %582
  call void @dscal_(ptr noundef nonnull %31, ptr noundef nonnull %27, ptr noundef %gep1295, ptr noundef nonnull @c__1) #6
  call void @dscal_(ptr noundef nonnull %31, ptr noundef nonnull %27, ptr noundef nonnull %170, ptr noundef nonnull @c__1) #6
  br label %583

583:                                              ; preds = %580, %577
  %584 = load double, ptr %28, align 16, !tbaa !9
  %585 = load i32, ptr %3, align 4, !tbaa !5
  %586 = sext i32 %585 to i64
  %587 = getelementptr double, ptr %45, i64 %indvars.iv1499
  %588 = getelementptr double, ptr %587, i64 %586
  store double %584, ptr %588, align 8, !tbaa !9
  %589 = load double, ptr %165, align 16, !tbaa !9
  %gep1654 = getelementptr double, ptr %invariant.gep1653, i64 %indvars.iv1499
  store double %589, ptr %gep1654, align 8, !tbaa !9
  %590 = trunc nuw nsw i64 %.pre1605 to i32
  store i32 %590, ptr %19, align 4, !tbaa !5
  %591 = fneg double %584
  store double %591, ptr %22, align 8, !tbaa !9
  %gep1297 = getelementptr double, ptr %invariant.gep1286, i64 %555
  %gep1299 = getelementptr double, ptr %12, i64 %586
  call void @daxpy_(ptr noundef nonnull %19, ptr noundef nonnull %22, ptr noundef %gep1297, ptr noundef nonnull @c__1, ptr noundef %gep1299, ptr noundef nonnull @c__1) #6
  store i32 %590, ptr %19, align 4, !tbaa !5
  %592 = load double, ptr %165, align 16, !tbaa !9
  br label %.lr.ph1302._crit_edge.sink.split

593:                                              ; preds = %.thread1188
  %594 = getelementptr inbounds double, ptr %45, i64 %.pre1605
  %595 = load double, ptr %594, align 8, !tbaa !9
  store double %595, ptr %22, align 8, !tbaa !9
  %596 = getelementptr inbounds double, ptr %45, i64 %indvars.iv1499
  %597 = load double, ptr %596, align 8, !tbaa !9
  %598 = fcmp oge double %595, %597
  %599 = select i1 %598, double %595, double %597
  %600 = fdiv double %132, %552
  %601 = fcmp ogt double %599, %600
  br i1 %601, label %602, label %thread-pre-split1194

602:                                              ; preds = %593
  %603 = fdiv double 1.000000e+00, %552
  store double %603, ptr %34, align 8, !tbaa !9
  %604 = load <2 x double>, ptr %28, align 16, !tbaa !9
  %605 = insertelement <2 x double> poison, double %603, i64 0
  %606 = shufflevector <2 x double> %605, <2 x double> poison, <2 x i32> zeroinitializer
  %607 = fmul <2 x double> %606, %604
  store <2 x double> %607, ptr %28, align 16, !tbaa !9
  %608 = load <2 x double>, ptr %165, align 16, !tbaa !9
  %609 = fmul <2 x double> %606, %608
  store <2 x double> %609, ptr %165, align 16, !tbaa !9
  %610 = load double, ptr %27, align 8, !tbaa !9
  %611 = fmul double %603, %610
  store double %611, ptr %27, align 8, !tbaa !9
  br label %612

thread-pre-split1194:                             ; preds = %.thread1188, %593
  %.pr1195 = load double, ptr %27, align 8, !tbaa !9
  br label %612

612:                                              ; preds = %thread-pre-split1194, %602
  %613 = phi double [ %.pr1195, %thread-pre-split1194 ], [ %611, %602 ]
  %614 = fcmp une double %613, 1.000000e+00
  br i1 %614, label %615, label %618

615:                                              ; preds = %612
  %616 = load i32, ptr %3, align 4, !tbaa !5
  %617 = sext i32 %616 to i64
  %gep = getelementptr double, ptr %12, i64 %617
  call void @dscal_(ptr noundef nonnull %31, ptr noundef nonnull %27, ptr noundef %gep, ptr noundef nonnull @c__1) #6
  call void @dscal_(ptr noundef nonnull %31, ptr noundef nonnull %27, ptr noundef nonnull %170, ptr noundef nonnull @c__1) #6
  br label %618

618:                                              ; preds = %615, %612
  %619 = load i32, ptr %3, align 4, !tbaa !5
  %620 = sext i32 %619 to i64
  %621 = getelementptr double, ptr %45, i64 %.pre1605
  %622 = getelementptr double, ptr %621, i64 %620
  %623 = load <2 x double>, ptr %28, align 16, !tbaa !9
  store <2 x double> %623, ptr %622, align 8, !tbaa !9
  %gep1650 = getelementptr double, ptr %invariant.gep1649, i64 %.pre1605
  %624 = load <2 x double>, ptr %165, align 16, !tbaa !9
  store <2 x double> %624, ptr %gep1650, align 8, !tbaa !9
  %625 = trunc i64 %indvars.iv1499 to i32
  %626 = add i32 %625, -2
  store i32 %626, ptr %19, align 4, !tbaa !5
  %627 = extractelement <2 x double> %623, i64 0
  %628 = fneg double %627
  store double %628, ptr %22, align 8, !tbaa !9
  %gep1287 = getelementptr double, ptr %invariant.gep1286, i64 %546
  %gep1289 = getelementptr double, ptr %12, i64 %620
  call void @daxpy_(ptr noundef nonnull %19, ptr noundef nonnull %22, ptr noundef %gep1287, ptr noundef nonnull @c__1, ptr noundef %gep1289, ptr noundef nonnull @c__1) #6
  store i32 %626, ptr %19, align 4, !tbaa !5
  %629 = load double, ptr %166, align 8, !tbaa !9
  %630 = fneg double %629
  store double %630, ptr %22, align 8, !tbaa !9
  %631 = mul nsw i64 %indvars.iv1499, %172
  %gep1291 = getelementptr double, ptr %invariant.gep1286, i64 %631
  %632 = load i32, ptr %3, align 4, !tbaa !5
  %633 = sext i32 %632 to i64
  %gep1293 = getelementptr double, ptr %12, i64 %633
  call void @daxpy_(ptr noundef nonnull %19, ptr noundef nonnull %22, ptr noundef %gep1291, ptr noundef nonnull @c__1, ptr noundef %gep1293, ptr noundef nonnull @c__1) #6
  store i32 %626, ptr %19, align 4, !tbaa !5
  %634 = load double, ptr %165, align 16, !tbaa !9
  %635 = fneg double %634
  store double %635, ptr %22, align 8, !tbaa !9
  call void @daxpy_(ptr noundef nonnull %19, ptr noundef nonnull %22, ptr noundef %gep1287, ptr noundef nonnull @c__1, ptr noundef nonnull %170, ptr noundef nonnull @c__1) #6
  store i32 %626, ptr %19, align 4, !tbaa !5
  %636 = load double, ptr %167, align 8, !tbaa !9
  br label %.lr.ph1302._crit_edge.sink.split

.lr.ph1302._crit_edge.sink.split:                 ; preds = %583, %618
  %.sink1907 = phi double [ %592, %583 ], [ %636, %618 ]
  %gep1291.sink = phi ptr [ %gep1297, %583 ], [ %gep1291, %618 ]
  %.51083.ph = phi i32 [ %.410821187, %583 ], [ %626, %618 ]
  %637 = fneg double %.sink1907
  store double %637, ptr %22, align 8, !tbaa !9
  call void @daxpy_(ptr noundef nonnull %19, ptr noundef nonnull %22, ptr noundef %gep1291.sink, ptr noundef nonnull @c__1, ptr noundef nonnull %170, ptr noundef nonnull @c__1) #6
  br label %.lr.ph1302._crit_edge

.lr.ph1302._crit_edge:                            ; preds = %.lr.ph1302._crit_edge.sink.split, %.lr.ph1302
  %.51083 = phi i32 [ %.310811300, %.lr.ph1302 ], [ %.51083.ph, %.lr.ph1302._crit_edge.sink.split ]
  %638 = icmp sgt i64 %indvars.iv1499, 1
  br i1 %638, label %.lr.ph1302, label %._crit_edge1303, !llvm.loop !39

._crit_edge1303:                                  ; preds = %.lr.ph1302._crit_edge, %464
  br i1 %.not1148, label %639, label %677

639:                                              ; preds = %._crit_edge1303
  %640 = load i32, ptr %3, align 4, !tbaa !5
  %641 = sext i32 %640 to i64
  %gep1368 = getelementptr double, ptr %12, i64 %641
  %642 = add nsw i32 %.01387, -1
  %643 = mul nsw i32 %642, %42
  %644 = sext i32 %643 to i64
  %gep1370 = getelementptr double, ptr %invariant.gep1353, i64 %644
  call void @dcopy_(ptr noundef nonnull %31, ptr noundef %gep1368, ptr noundef nonnull @c__1, ptr noundef %gep1370, ptr noundef nonnull @c__1) #6
  %645 = mul nsw i32 %.01387, %42
  %646 = sext i32 %645 to i64
  %gep1372 = getelementptr double, ptr %invariant.gep1353, i64 %646
  call void @dcopy_(ptr noundef nonnull %31, ptr noundef nonnull %170, ptr noundef nonnull @c__1, ptr noundef %gep1372, ptr noundef nonnull @c__1) #6
  %647 = load i32, ptr %31, align 4, !tbaa !5
  store i32 %647, ptr %19, align 4, !tbaa !5
  %.not11491311 = icmp slt i32 %647, 1
  br i1 %.not11491311, label %660, label %.lr.ph1315.preheader

.lr.ph1315.preheader:                             ; preds = %639
  %648 = add nuw i32 %647, 1
  %wide.trip.count1510 = zext i32 %648 to i64
  %invariant.gep1659 = getelementptr double, ptr %44, i64 %644
  %invariant.gep1661 = getelementptr double, ptr %44, i64 %646
  br label %.lr.ph1315

.lr.ph1315:                                       ; preds = %.lr.ph1315.preheader, %.lr.ph1315
  %indvars.iv1507 = phi i64 [ 1, %.lr.ph1315.preheader ], [ %indvars.iv.next1508, %.lr.ph1315 ]
  %.010981312 = phi double [ 0.000000e+00, %.lr.ph1315.preheader ], [ %659, %.lr.ph1315 ]
  %gep1660 = getelementptr double, ptr %invariant.gep1659, i64 %indvars.iv1507
  %649 = load double, ptr %gep1660, align 8, !tbaa !9
  %650 = fcmp oge double %649, 0.000000e+00
  %651 = fneg double %649
  %652 = select i1 %650, double %649, double %651
  %gep1662 = getelementptr double, ptr %invariant.gep1661, i64 %indvars.iv1507
  %653 = load double, ptr %gep1662, align 8, !tbaa !9
  %654 = fcmp oge double %653, 0.000000e+00
  %655 = fneg double %653
  %656 = select i1 %654, double %653, double %655
  %657 = fadd double %652, %656
  %658 = fcmp oge double %.010981312, %657
  %659 = select i1 %658, double %.010981312, double %657
  %indvars.iv.next1508 = add nuw nsw i64 %indvars.iv1507, 1
  %exitcond1511.not = icmp eq i64 %indvars.iv.next1508, %wide.trip.count1510
  br i1 %exitcond1511.not, label %._crit_edge1316, label %.lr.ph1315, !llvm.loop !40

._crit_edge1316:                                  ; preds = %.lr.ph1315
  store double %649, ptr %22, align 8, !tbaa !9
  br label %660

660:                                              ; preds = %._crit_edge1316, %639
  %.01098.lcssa = phi double [ %659, %._crit_edge1316 ], [ 0.000000e+00, %639 ]
  %661 = fdiv double 1.000000e+00, %.01098.lcssa
  store double %661, ptr %29, align 8, !tbaa !9
  call void @dscal_(ptr noundef nonnull %31, ptr noundef nonnull %29, ptr noundef %gep1370, ptr noundef nonnull @c__1) #6
  call void @dscal_(ptr noundef nonnull %31, ptr noundef nonnull %29, ptr noundef %gep1372, ptr noundef nonnull @c__1) #6
  %662 = load i32, ptr %3, align 4, !tbaa !5
  store i32 %662, ptr %19, align 4, !tbaa !5
  %663 = load i32, ptr %31, align 4, !tbaa !5
  %.not1150.not1319 = icmp slt i32 %663, %662
  br i1 %.not1150.not1319, label %.lr.ph1322.preheader, label %.loopexit1269

.lr.ph1322.preheader:                             ; preds = %660
  %664 = sext i32 %663 to i64
  %wide.trip.count1517 = sext i32 %662 to i64
  %invariant.gep1663 = getelementptr double, ptr %44, i64 %644
  %invariant.gep1665 = getelementptr double, ptr %44, i64 %646
  %665 = sub nsw i64 %wide.trip.count1517, %664
  %min.iters.check1725 = icmp ult i64 %665, 4
  br i1 %min.iters.check1725, label %.lr.ph1322.preheader1917, label %vector.memcheck1721

vector.memcheck1721:                              ; preds = %.lr.ph1322.preheader
  %666 = sub nsw i64 %646, %644
  %667 = and i64 %666, 2305843009213693948
  %diff.check1722 = icmp eq i64 %667, 0
  br i1 %diff.check1722, label %.lr.ph1322.preheader1917, label %vector.ph1726

vector.ph1726:                                    ; preds = %vector.memcheck1721
  %n.vec1728 = and i64 %665, -4
  %ind.end1729 = add nsw i64 %n.vec1728, %664
  br label %vector.body1731

vector.body1731:                                  ; preds = %vector.body1731, %vector.ph1726
  %index1732 = phi i64 [ 0, %vector.ph1726 ], [ %index.next1734, %vector.body1731 ]
  %offset.idx1733 = add i64 %index1732, %664
  %668 = add nsw i64 %offset.idx1733, 1
  %669 = getelementptr double, ptr %invariant.gep1663, i64 %668
  %670 = getelementptr i8, ptr %669, i64 16
  store <2 x double> zeroinitializer, ptr %669, align 8, !tbaa !9
  store <2 x double> zeroinitializer, ptr %670, align 8, !tbaa !9
  %671 = getelementptr double, ptr %invariant.gep1665, i64 %668
  %672 = getelementptr i8, ptr %671, i64 16
  store <2 x double> zeroinitializer, ptr %671, align 8, !tbaa !9
  store <2 x double> zeroinitializer, ptr %672, align 8, !tbaa !9
  %index.next1734 = add nuw i64 %index1732, 4
  %673 = icmp eq i64 %index.next1734, %n.vec1728
  br i1 %673, label %middle.block1723, label %vector.body1731, !llvm.loop !41

middle.block1723:                                 ; preds = %vector.body1731
  %cmp.n1735 = icmp eq i64 %665, %n.vec1728
  br i1 %cmp.n1735, label %.loopexit1269, label %.lr.ph1322.preheader1917

.lr.ph1322.preheader1917:                         ; preds = %middle.block1723, %vector.memcheck1721, %.lr.ph1322.preheader
  %indvars.iv1514.ph = phi i64 [ %664, %vector.memcheck1721 ], [ %664, %.lr.ph1322.preheader ], [ %ind.end1729, %middle.block1723 ]
  %674 = sub nsw i64 %wide.trip.count1517, %indvars.iv1514.ph
  %xtraiter1926 = and i64 %674, 3
  %lcmp.mod1927.not = icmp eq i64 %xtraiter1926, 0
  br i1 %lcmp.mod1927.not, label %.lr.ph1322.prol.loopexit, label %.lr.ph1322.prol

.lr.ph1322.prol:                                  ; preds = %.lr.ph1322.preheader1917, %.lr.ph1322.prol
  %indvars.iv1514.prol = phi i64 [ %indvars.iv.next1515.prol, %.lr.ph1322.prol ], [ %indvars.iv1514.ph, %.lr.ph1322.preheader1917 ]
  %prol.iter = phi i64 [ %prol.iter.next, %.lr.ph1322.prol ], [ 0, %.lr.ph1322.preheader1917 ]
  %indvars.iv.next1515.prol = add nsw i64 %indvars.iv1514.prol, 1
  %gep1664.prol = getelementptr double, ptr %invariant.gep1663, i64 %indvars.iv.next1515.prol
  store double 0.000000e+00, ptr %gep1664.prol, align 8, !tbaa !9
  %gep1666.prol = getelementptr double, ptr %invariant.gep1665, i64 %indvars.iv.next1515.prol
  store double 0.000000e+00, ptr %gep1666.prol, align 8, !tbaa !9
  %prol.iter.next = add i64 %prol.iter, 1
  %prol.iter.cmp.not = icmp eq i64 %prol.iter.next, %xtraiter1926
  br i1 %prol.iter.cmp.not, label %.lr.ph1322.prol.loopexit, label %.lr.ph1322.prol, !llvm.loop !42

.lr.ph1322.prol.loopexit:                         ; preds = %.lr.ph1322.prol, %.lr.ph1322.preheader1917
  %indvars.iv1514.unr = phi i64 [ %indvars.iv1514.ph, %.lr.ph1322.preheader1917 ], [ %indvars.iv.next1515.prol, %.lr.ph1322.prol ]
  %675 = sub nsw i64 %indvars.iv1514.ph, %wide.trip.count1517
  %676 = icmp ugt i64 %675, -4
  br i1 %676, label %.loopexit1269, label %.lr.ph1322

.lr.ph1322:                                       ; preds = %.lr.ph1322.prol.loopexit, %.lr.ph1322
  %indvars.iv1514 = phi i64 [ %indvars.iv.next1515.3, %.lr.ph1322 ], [ %indvars.iv1514.unr, %.lr.ph1322.prol.loopexit ]
  %indvars.iv.next1515 = add nsw i64 %indvars.iv1514, 1
  %gep1664 = getelementptr double, ptr %invariant.gep1663, i64 %indvars.iv.next1515
  store double 0.000000e+00, ptr %gep1664, align 8, !tbaa !9
  %gep1666 = getelementptr double, ptr %invariant.gep1665, i64 %indvars.iv.next1515
  store double 0.000000e+00, ptr %gep1666, align 8, !tbaa !9
  %indvars.iv.next1515.1 = add nsw i64 %indvars.iv1514, 2
  %gep1664.1 = getelementptr double, ptr %invariant.gep1663, i64 %indvars.iv.next1515.1
  store double 0.000000e+00, ptr %gep1664.1, align 8, !tbaa !9
  %gep1666.1 = getelementptr double, ptr %invariant.gep1665, i64 %indvars.iv.next1515.1
  store double 0.000000e+00, ptr %gep1666.1, align 8, !tbaa !9
  %indvars.iv.next1515.2 = add nsw i64 %indvars.iv1514, 3
  %gep1664.2 = getelementptr double, ptr %invariant.gep1663, i64 %indvars.iv.next1515.2
  store double 0.000000e+00, ptr %gep1664.2, align 8, !tbaa !9
  %gep1666.2 = getelementptr double, ptr %invariant.gep1665, i64 %indvars.iv.next1515.2
  store double 0.000000e+00, ptr %gep1666.2, align 8, !tbaa !9
  %indvars.iv.next1515.3 = add nsw i64 %indvars.iv1514, 4
  %gep1664.3 = getelementptr double, ptr %invariant.gep1663, i64 %indvars.iv.next1515.3
  store double 0.000000e+00, ptr %gep1664.3, align 8, !tbaa !9
  %gep1666.3 = getelementptr double, ptr %invariant.gep1665, i64 %indvars.iv.next1515.3
  store double 0.000000e+00, ptr %gep1666.3, align 8, !tbaa !9
  %exitcond1518.not.3 = icmp eq i64 %indvars.iv.next1515.3, %wide.trip.count1517
  br i1 %exitcond1518.not.3, label %.loopexit1269, label %.lr.ph1322, !llvm.loop !43

677:                                              ; preds = %._crit_edge1303
  %678 = load i32, ptr %31, align 4, !tbaa !5
  %679 = icmp sgt i32 %678, 2
  br i1 %679, label %680, label %697

680:                                              ; preds = %677
  %681 = add nsw i32 %678, -2
  store i32 %681, ptr %19, align 4, !tbaa !5
  %682 = load i32, ptr %3, align 4, !tbaa !5
  %683 = sext i32 %682 to i64
  %gep1358 = getelementptr double, ptr %12, i64 %683
  %684 = add nsw i32 %678, -1
  %685 = add nsw i32 %682, %684
  %686 = sext i32 %685 to i64
  %687 = getelementptr inbounds double, ptr %45, i64 %686
  %688 = mul nsw i32 %684, %42
  %689 = sext i32 %688 to i64
  %gep1360 = getelementptr double, ptr %invariant.gep1353, i64 %689
  call void @dgemv_(ptr noundef nonnull @.str.8, ptr noundef nonnull %3, ptr noundef nonnull %19, ptr noundef nonnull @c_b22, ptr noundef %8, ptr noundef nonnull %9, ptr noundef %gep1358, ptr noundef nonnull @c__1, ptr noundef nonnull %687, ptr noundef %gep1360, ptr noundef nonnull @c__1) #6
  %690 = load i32, ptr %31, align 4, !tbaa !5
  %691 = add nsw i32 %690, -2
  store i32 %691, ptr %19, align 4, !tbaa !5
  %692 = add nsw i32 %690, %160
  %693 = sext i32 %692 to i64
  %694 = getelementptr inbounds double, ptr %45, i64 %693
  %695 = mul nsw i32 %690, %42
  %696 = sext i32 %695 to i64
  %gep1362 = getelementptr double, ptr %invariant.gep1353, i64 %696
  call void @dgemv_(ptr noundef nonnull @.str.8, ptr noundef nonnull %3, ptr noundef nonnull %19, ptr noundef nonnull @c_b22, ptr noundef %8, ptr noundef nonnull %9, ptr noundef nonnull %170, ptr noundef nonnull @c__1, ptr noundef nonnull %694, ptr noundef %gep1362, ptr noundef nonnull @c__1) #6
  br label %711

697:                                              ; preds = %677
  %698 = add nsw i32 %678, -1
  %699 = load i32, ptr %3, align 4, !tbaa !5
  %700 = add nsw i32 %699, %698
  %701 = sext i32 %700 to i64
  %702 = getelementptr inbounds double, ptr %45, i64 %701
  %703 = mul nsw i32 %698, %42
  %704 = sext i32 %703 to i64
  %gep1354 = getelementptr double, ptr %invariant.gep1353, i64 %704
  call void @dscal_(ptr noundef nonnull %3, ptr noundef nonnull %702, ptr noundef %gep1354, ptr noundef nonnull @c__1) #6
  %705 = load i32, ptr %31, align 4, !tbaa !5
  %706 = add nsw i32 %705, %160
  %707 = sext i32 %706 to i64
  %708 = getelementptr inbounds double, ptr %45, i64 %707
  %709 = mul nsw i32 %705, %42
  %710 = sext i32 %709 to i64
  %gep1356 = getelementptr double, ptr %invariant.gep1353, i64 %710
  call void @dscal_(ptr noundef nonnull %3, ptr noundef nonnull %708, ptr noundef %gep1356, ptr noundef nonnull @c__1) #6
  br label %711

711:                                              ; preds = %697, %680
  %712 = load i32, ptr %3, align 4, !tbaa !5
  store i32 %712, ptr %19, align 4, !tbaa !5
  %.not11511304 = icmp slt i32 %712, 1
  %.pre1574 = load i32, ptr %31, align 4, !tbaa !5
  %.pre1606 = add nsw i32 %.pre1574, -1
  %.pre1608 = mul nsw i32 %.pre1606, %42
  br i1 %.not11511304, label %._crit_edge1595, label %.lr.ph1308

._crit_edge1595:                                  ; preds = %711
  %.pre1610 = sext i32 %.pre1608 to i64
  br label %729

.lr.ph1308:                                       ; preds = %711
  %713 = mul nsw i32 %.pre1574, %42
  %714 = sext i32 %.pre1608 to i64
  %715 = sext i32 %713 to i64
  %716 = add nuw i32 %712, 1
  %wide.trip.count1505 = zext i32 %716 to i64
  %invariant.gep1655 = getelementptr double, ptr %44, i64 %714
  %invariant.gep1657 = getelementptr double, ptr %44, i64 %715
  br label %717

717:                                              ; preds = %.lr.ph1308, %717
  %indvars.iv1502 = phi i64 [ 1, %.lr.ph1308 ], [ %indvars.iv.next1503, %717 ]
  %.110991305 = phi double [ 0.000000e+00, %.lr.ph1308 ], [ %728, %717 ]
  %gep1656 = getelementptr double, ptr %invariant.gep1655, i64 %indvars.iv1502
  %718 = load double, ptr %gep1656, align 8, !tbaa !9
  %719 = fcmp oge double %718, 0.000000e+00
  %720 = fneg double %718
  %721 = select i1 %719, double %718, double %720
  %gep1658 = getelementptr double, ptr %invariant.gep1657, i64 %indvars.iv1502
  %722 = load double, ptr %gep1658, align 8, !tbaa !9
  %723 = fcmp oge double %722, 0.000000e+00
  %724 = fneg double %722
  %725 = select i1 %723, double %722, double %724
  %726 = fadd double %721, %725
  %727 = fcmp oge double %.110991305, %726
  %728 = select i1 %727, double %.110991305, double %726
  %indvars.iv.next1503 = add nuw nsw i64 %indvars.iv1502, 1
  %exitcond1506.not = icmp eq i64 %indvars.iv.next1503, %wide.trip.count1505
  br i1 %exitcond1506.not, label %._crit_edge1309, label %717, !llvm.loop !44

._crit_edge1309:                                  ; preds = %717
  store double %718, ptr %22, align 8, !tbaa !9
  br label %729

729:                                              ; preds = %._crit_edge1595, %._crit_edge1309
  %.pre-phi1611 = phi i64 [ %.pre1610, %._crit_edge1595 ], [ %714, %._crit_edge1309 ]
  %.11099.lcssa = phi double [ 0.000000e+00, %._crit_edge1595 ], [ %728, %._crit_edge1309 ]
  %730 = fdiv double 1.000000e+00, %.11099.lcssa
  store double %730, ptr %29, align 8, !tbaa !9
  %gep1364 = getelementptr double, ptr %invariant.gep1353, i64 %.pre-phi1611
  call void @dscal_(ptr noundef nonnull %3, ptr noundef nonnull %29, ptr noundef %gep1364, ptr noundef nonnull @c__1) #6
  %731 = load i32, ptr %31, align 4, !tbaa !5
  %732 = mul nsw i32 %731, %42
  %733 = sext i32 %732 to i64
  %gep1366 = getelementptr double, ptr %invariant.gep1353, i64 %733
  call void @dscal_(ptr noundef nonnull %3, ptr noundef nonnull %29, ptr noundef %gep1366, ptr noundef nonnull @c__1) #6
  br label %.loopexit1269

.loopexit1269:                                    ; preds = %.lr.ph1322.prol.loopexit, %.lr.ph1322, %middle.block1723, %.lr.ph1350.preheader, %660, %379, %416, %729
  %spec.select1160.v = phi i32 [ -1, %416 ], [ -2, %729 ], [ -1, %379 ], [ -2, %660 ], [ -1, %.lr.ph1350.preheader ], [ -2, %middle.block1723 ], [ -2, %.lr.ph1322 ], [ -2, %.lr.ph1322.prol.loopexit ]
  %spec.select1160 = add nsw i32 %spec.select1160.v, %.01387
  %734 = icmp eq i32 %.110541168.fr1616, 1
  br i1 %734, label %.thread1209, label %.thread1197

.thread1197:                                      ; preds = %.thread1169, %.loopexit1269
  %.11201 = phi i32 [ %spec.select1160, %.loopexit1269 ], [ %.01387, %.thread1169 ]
  %.fr = phi i32 [ %.110541168.fr1616, %.loopexit1269 ], [ %.1105411671171, %.thread1169 ]
  %735 = icmp eq i32 %.fr, -1
  %spec.select1239 = select i1 %735, i32 1, i32 %.fr
  br label %.thread1209

.thread1209:                                      ; preds = %.thread1197, %198, %.loopexit1269, %179
  %.112011212 = phi i32 [ %.01387, %179 ], [ %spec.select1160, %.loopexit1269 ], [ %.01387, %198 ], [ %.11201, %.thread1197 ]
  %736 = phi i32 [ 0, %179 ], [ 0, %.loopexit1269 ], [ 0, %198 ], [ %spec.select1239, %.thread1197 ]
  %737 = load i32, ptr %31, align 4, !tbaa !5
  %738 = add nsw i32 %737, -1
  store i32 %738, ptr %31, align 4, !tbaa !5
  %739 = icmp sgt i32 %737, 1
  br i1 %739, label %179, label %.loopexit1272, !llvm.loop !45

.loopexit1272:                                    ; preds = %.thread1209, %161, %159
  br i1 %53, label %740, label %.loopexit1268

740:                                              ; preds = %.loopexit1272
  %741 = load i32, ptr %3, align 4, !tbaa !5
  store i32 %741, ptr %19, align 4, !tbaa !5
  %invariant.gep1442 = getelementptr i8, ptr %41, i64 8
  store i32 1, ptr %31, align 4, !tbaa !5
  %.not11291466 = icmp slt i32 %741, 1
  br i1 %.not11291466, label %.loopexit1268, label %.lr.ph1471

.lr.ph1471:                                       ; preds = %740
  %.not1130 = icmp eq i32 %56, 0
  %742 = add i32 %36, 1
  %743 = getelementptr inbounds i8, ptr %28, i64 16
  %744 = getelementptr inbounds i8, ptr %28, i64 8
  %745 = getelementptr inbounds i8, ptr %28, i64 24
  %.not1135 = icmp eq i32 %55, 0
  %746 = sext i32 %36 to i64
  %747 = sext i32 %160 to i64
  %748 = shl nsw i64 %40, 3
  %scevgep1565 = getelementptr i8, ptr %6, i64 %748
  %invariant.gep1677 = getelementptr double, ptr %45, i64 %747
  %invariant.gep1679 = getelementptr double, ptr %45, i64 %747
  %invariant.gep1681 = getelementptr double, ptr %12, i64 %747
  %invariant.gep1683 = getelementptr double, ptr %45, i64 %747
  %749 = add i64 %16, 8
  %scevgep1836 = getelementptr i8, ptr %12, i64 -8
  %750 = shl nsw i64 %747, 3
  %751 = getelementptr i8, ptr %12, i64 %750
  %scevgep1839 = getelementptr i8, ptr %751, i64 -8
  %scevgep1841 = getelementptr i8, ptr %12, i64 %750
  %scevgep1844 = getelementptr i8, ptr %4, i64 -16
  %scevgep1846 = getelementptr i8, ptr %4, i64 -8
  %scevgep1849 = getelementptr i8, ptr %4, i64 -16
  %scevgep1851 = getelementptr i8, ptr %4, i64 -8
  %ident.check1834.not = icmp eq i32 %36, 1
  %ident.check.not = icmp eq i32 %36, 1
  br label %752

752:                                              ; preds = %.lr.ph1471, %.thread1231
  %.21469 = phi i32 [ 1, %.lr.ph1471 ], [ %.312231234, %.thread1231 ]
  %.310561468 = phi i32 [ 0, %.lr.ph1471 ], [ %1580, %.thread1231 ]
  %storemerge11281467 = phi i32 [ 1, %.lr.ph1471 ], [ %1582, %.thread1231 ]
  %753 = icmp eq i32 %.310561468, -1
  br i1 %753, label %.thread1231, label %754

754:                                              ; preds = %752
  %755 = load i32, ptr %3, align 4, !tbaa !5
  %756 = icmp eq i32 %storemerge11281467, %755
  br i1 %756, label %766, label %757

757:                                              ; preds = %754
  %758 = add nsw i32 %storemerge11281467, 1
  %759 = mul nsw i32 %storemerge11281467, %36
  %760 = add nsw i32 %758, %759
  %761 = sext i32 %760 to i64
  %762 = getelementptr inbounds double, ptr %38, i64 %761
  %763 = load double, ptr %762, align 8, !tbaa !9
  %764 = fcmp oeq double %763, 0.000000e+00
  br i1 %764, label %766, label %765

765:                                              ; preds = %757
  br label %766

766:                                              ; preds = %757, %754, %765
  %.4 = phi i32 [ %.310561468, %754 ], [ %.310561468, %757 ], [ 1, %765 ]
  br i1 %.not1130, label %771, label %767

767:                                              ; preds = %766
  %768 = sext i32 %storemerge11281467 to i64
  %769 = getelementptr inbounds i32, ptr %35, i64 %768
  %770 = load i32, ptr %769, align 4, !tbaa !5
  %.not1131 = icmp eq i32 %770, 0
  br i1 %.not1131, label %.thread1225, label %771

771:                                              ; preds = %767, %766
  %772 = mul i32 %storemerge11281467, %742
  %773 = sext i32 %772 to i64
  %774 = getelementptr inbounds double, ptr %38, i64 %773
  %775 = load double, ptr %774, align 8, !tbaa !9
  store double %775, ptr %33, align 8, !tbaa !9
  store double 0.000000e+00, ptr %32, align 8, !tbaa !9
  %.not1132 = icmp eq i32 %.4, 0
  br i1 %.not1132, label %799, label %776

776:                                              ; preds = %771
  %777 = add nsw i32 %storemerge11281467, 1
  %778 = mul nsw i32 %777, %36
  %779 = add nsw i32 %778, %storemerge11281467
  %780 = sext i32 %779 to i64
  %781 = getelementptr inbounds double, ptr %38, i64 %780
  %782 = load double, ptr %781, align 8, !tbaa !9
  %783 = fcmp oge double %782, 0.000000e+00
  %784 = fneg double %782
  %785 = select i1 %783, double %782, double %784
  %786 = call double @sqrt(double noundef %785) #6
  %787 = load i32, ptr %31, align 4, !tbaa !5
  %788 = add nsw i32 %787, 1
  %789 = mul nsw i32 %787, %36
  %790 = add nsw i32 %788, %789
  %791 = sext i32 %790 to i64
  %792 = getelementptr inbounds double, ptr %38, i64 %791
  %793 = load double, ptr %792, align 8, !tbaa !9
  %794 = fcmp oge double %793, 0.000000e+00
  %795 = fneg double %793
  %796 = select i1 %794, double %793, double %795
  %797 = call double @sqrt(double noundef %796) #6
  %798 = fmul double %786, %797
  store double %798, ptr %32, align 8, !tbaa !9
  %.pre1578 = load double, ptr %33, align 8
  br label %799

799:                                              ; preds = %776, %771
  %800 = phi double [ %798, %776 ], [ 0.000000e+00, %771 ]
  %801 = phi double [ %.pre1578, %776 ], [ %775, %771 ]
  %802 = fcmp oge double %801, 0.000000e+00
  %803 = fneg double %801
  %804 = select i1 %802, double %801, double %803
  %805 = fcmp oge double %800, 0.000000e+00
  %806 = fneg double %800
  %807 = select i1 %805, double %800, double %806
  %808 = fadd double %804, %807
  %809 = fmul double %125, %808
  store double %809, ptr %22, align 8, !tbaa !9
  %810 = fcmp oge double %809, %130
  %811 = select i1 %810, double %809, double %130
  store double %811, ptr %26, align 8, !tbaa !9
  %812 = load i32, ptr %31, align 4, !tbaa !5
  br i1 %.not1132, label %813, label %1085

813:                                              ; preds = %799
  %814 = load i32, ptr %3, align 4, !tbaa !5
  %815 = add nsw i32 %814, %812
  %816 = sext i32 %815 to i64
  %817 = getelementptr inbounds double, ptr %45, i64 %816
  store double 1.000000e+00, ptr %817, align 8, !tbaa !9
  %.not1139.not1423 = icmp slt i32 %812, %814
  br i1 %.not1139.not1423, label %.lr.ph1426.preheader, label %._crit_edge1427.thread

._crit_edge1427.thread:                           ; preds = %813
  store i32 %814, ptr %20, align 4, !tbaa !5
  br label %._crit_edge1437

.lr.ph1426.preheader:                             ; preds = %813
  %818 = sext i32 %812 to i64
  %819 = sext i32 %814 to i64
  %invariant.gep1697 = getelementptr double, ptr %38, i64 %818
  %invariant.gep1699 = getelementptr double, ptr %12, i64 %819
  %820 = sub nsw i64 %819, %818
  %min.iters.check1805 = icmp ugt i64 %820, 5
  %or.cond1908 = select i1 %min.iters.check1805, i1 %ident.check.not, i1 false
  br i1 %or.cond1908, label %vector.memcheck1801, label %.lr.ph1426.preheader1910

vector.memcheck1801:                              ; preds = %.lr.ph1426.preheader
  %821 = shl nsw i64 %819, 3
  %822 = shl nsw i64 %818, 3
  %823 = add i64 %749, %821
  %824 = add i64 %822, %15
  %825 = sub i64 %823, %824
  %diff.check1802 = icmp ult i64 %825, 32
  br i1 %diff.check1802, label %.lr.ph1426.preheader1910, label %vector.ph1806

vector.ph1806:                                    ; preds = %vector.memcheck1801
  %n.vec1808 = and i64 %820, -4
  %ind.end1809 = add nsw i64 %n.vec1808, %818
  br label %vector.body1811

vector.body1811:                                  ; preds = %vector.body1811, %vector.ph1806
  %index1812 = phi i64 [ 0, %vector.ph1806 ], [ %index.next1816, %vector.body1811 ]
  %offset.idx1813 = add i64 %index1812, %818
  %826 = getelementptr double, ptr %invariant.gep1697, i64 %offset.idx1813
  %827 = getelementptr i8, ptr %826, i64 8
  %828 = getelementptr i8, ptr %826, i64 24
  %wide.load1814 = load <2 x double>, ptr %827, align 8, !tbaa !9
  %wide.load1815 = load <2 x double>, ptr %828, align 8, !tbaa !9
  %829 = fneg <2 x double> %wide.load1814
  %830 = fneg <2 x double> %wide.load1815
  %831 = getelementptr double, ptr %invariant.gep1699, i64 %offset.idx1813
  %832 = getelementptr i8, ptr %831, i64 16
  store <2 x double> %829, ptr %831, align 8, !tbaa !9
  store <2 x double> %830, ptr %832, align 8, !tbaa !9
  %index.next1816 = add nuw i64 %index1812, 4
  %833 = icmp eq i64 %index.next1816, %n.vec1808
  br i1 %833, label %middle.block1803, label %vector.body1811, !llvm.loop !46

middle.block1803:                                 ; preds = %vector.body1811
  %cmp.n1817 = icmp eq i64 %820, %n.vec1808
  br i1 %cmp.n1817, label %._crit_edge1427, label %.lr.ph1426.preheader1910

.lr.ph1426.preheader1910:                         ; preds = %middle.block1803, %vector.memcheck1801, %.lr.ph1426.preheader
  %indvars.iv1557.ph = phi i64 [ %818, %vector.memcheck1801 ], [ %818, %.lr.ph1426.preheader ], [ %ind.end1809, %middle.block1803 ]
  %834 = sub nsw i64 %819, %indvars.iv1557.ph
  %xtraiter1934 = and i64 %834, 3
  %lcmp.mod1935.not = icmp eq i64 %xtraiter1934, 0
  br i1 %lcmp.mod1935.not, label %.lr.ph1426.prol.loopexit, label %.lr.ph1426.prol

.lr.ph1426.prol:                                  ; preds = %.lr.ph1426.preheader1910, %.lr.ph1426.prol
  %indvars.iv1557.prol = phi i64 [ %indvars.iv.next1558.prol, %.lr.ph1426.prol ], [ %indvars.iv1557.ph, %.lr.ph1426.preheader1910 ]
  %prol.iter1936 = phi i64 [ %prol.iter1936.next, %.lr.ph1426.prol ], [ 0, %.lr.ph1426.preheader1910 ]
  %indvars.iv.next1558.prol = add nsw i64 %indvars.iv1557.prol, 1
  %835 = mul nsw i64 %indvars.iv.next1558.prol, %746
  %gep1698.prol = getelementptr double, ptr %invariant.gep1697, i64 %835
  %836 = load double, ptr %gep1698.prol, align 8, !tbaa !9
  %837 = fneg double %836
  %gep1700.prol = getelementptr double, ptr %invariant.gep1699, i64 %indvars.iv1557.prol
  store double %837, ptr %gep1700.prol, align 8, !tbaa !9
  %prol.iter1936.next = add i64 %prol.iter1936, 1
  %prol.iter1936.cmp.not = icmp eq i64 %prol.iter1936.next, %xtraiter1934
  br i1 %prol.iter1936.cmp.not, label %.lr.ph1426.prol.loopexit, label %.lr.ph1426.prol, !llvm.loop !47

.lr.ph1426.prol.loopexit:                         ; preds = %.lr.ph1426.prol, %.lr.ph1426.preheader1910
  %indvars.iv1557.unr = phi i64 [ %indvars.iv1557.ph, %.lr.ph1426.preheader1910 ], [ %indvars.iv.next1558.prol, %.lr.ph1426.prol ]
  %838 = sub nsw i64 %indvars.iv1557.ph, %819
  %839 = icmp ugt i64 %838, -4
  br i1 %839, label %._crit_edge1427, label %.lr.ph1426

.lr.ph1426:                                       ; preds = %.lr.ph1426.prol.loopexit, %.lr.ph1426
  %indvars.iv1557 = phi i64 [ %indvars.iv.next1558.3, %.lr.ph1426 ], [ %indvars.iv1557.unr, %.lr.ph1426.prol.loopexit ]
  %indvars.iv.next1558 = add nsw i64 %indvars.iv1557, 1
  %840 = mul nsw i64 %indvars.iv.next1558, %746
  %gep1698 = getelementptr double, ptr %invariant.gep1697, i64 %840
  %841 = load double, ptr %gep1698, align 8, !tbaa !9
  %842 = fneg double %841
  %gep1700 = getelementptr double, ptr %invariant.gep1699, i64 %indvars.iv1557
  store double %842, ptr %gep1700, align 8, !tbaa !9
  %indvars.iv.next1558.1 = add nsw i64 %indvars.iv1557, 2
  %843 = mul nsw i64 %indvars.iv.next1558.1, %746
  %gep1698.1 = getelementptr double, ptr %invariant.gep1697, i64 %843
  %844 = load double, ptr %gep1698.1, align 8, !tbaa !9
  %845 = fneg double %844
  %gep1700.1 = getelementptr double, ptr %invariant.gep1699, i64 %indvars.iv.next1558
  store double %845, ptr %gep1700.1, align 8, !tbaa !9
  %indvars.iv.next1558.2 = add nsw i64 %indvars.iv1557, 3
  %846 = mul nsw i64 %indvars.iv.next1558.2, %746
  %gep1698.2 = getelementptr double, ptr %invariant.gep1697, i64 %846
  %847 = load double, ptr %gep1698.2, align 8, !tbaa !9
  %848 = fneg double %847
  %gep1700.2 = getelementptr double, ptr %invariant.gep1699, i64 %indvars.iv.next1558.1
  store double %848, ptr %gep1700.2, align 8, !tbaa !9
  %indvars.iv.next1558.3 = add nsw i64 %indvars.iv1557, 4
  %849 = mul nsw i64 %indvars.iv.next1558.3, %746
  %gep1698.3 = getelementptr double, ptr %invariant.gep1697, i64 %849
  %850 = load double, ptr %gep1698.3, align 8, !tbaa !9
  %851 = fneg double %850
  %gep1700.3 = getelementptr double, ptr %invariant.gep1699, i64 %indvars.iv.next1558.2
  store double %851, ptr %gep1700.3, align 8, !tbaa !9
  %exitcond1561.not.3 = icmp eq i64 %indvars.iv.next1558.3, %819
  br i1 %exitcond1561.not.3, label %._crit_edge1427, label %.lr.ph1426, !llvm.loop !48

._crit_edge1427:                                  ; preds = %.lr.ph1426.prol.loopexit, %.lr.ph1426, %middle.block1803
  store i32 %814, ptr %20, align 4, !tbaa !5
  br i1 %.not1139.not1423, label %.lr.ph1436.preheader, label %._crit_edge1437

.lr.ph1436.preheader:                             ; preds = %._crit_edge1427
  %852 = add nsw i32 %812, 1
  %853 = sext i32 %812 to i64
  br label %.lr.ph1436

.lr.ph1436:                                       ; preds = %.lr.ph1436.preheader, %1008
  %854 = phi i32 [ %814, %.lr.ph1436.preheader ], [ %1009, %1008 ]
  %indvars.iv1562 = phi i64 [ %853, %.lr.ph1436.preheader ], [ %indvars.iv.next1563, %1008 ]
  %.010611433 = phi double [ %132, %.lr.ph1436.preheader ], [ %.11062, %1008 ]
  %.610841431 = phi i32 [ %852, %.lr.ph1436.preheader ], [ %.81086, %1008 ]
  %.010901430 = phi double [ 1.000000e+00, %.lr.ph1436.preheader ], [ %.31093, %1008 ]
  %indvars1564 = trunc i64 %indvars.iv1562 to i32
  %indvars.iv.next1563 = add nsw i64 %indvars.iv1562, 1
  %indvars = trunc i64 %indvars.iv.next1563 to i32
  %855 = sext i32 %.610841431 to i64
  %856 = icmp slt i64 %indvars.iv.next1563, %855
  br i1 %856, label %1008, label %857

857:                                              ; preds = %.lr.ph1436
  %858 = add nsw i64 %indvars.iv1562, 2
  %859 = add nsw i32 %indvars1564, 2
  %860 = sext i32 %854 to i64
  %861 = icmp slt i64 %indvars.iv.next1563, %860
  br i1 %861, label %862, label %..thread1214_crit_edge

..thread1214_crit_edge:                           ; preds = %857
  %.pre1587.pre = load i32, ptr %31, align 4, !tbaa !5
  br label %.thread1214

862:                                              ; preds = %857
  %863 = mul nsw i64 %indvars.iv.next1563, %746
  %864 = getelementptr double, ptr %38, i64 %863
  %865 = getelementptr double, ptr %864, i64 %858
  %866 = load double, ptr %865, align 8, !tbaa !9
  %867 = fcmp une double %866, 0.000000e+00
  %.pre1587.pre1593 = load i32, ptr %31, align 4, !tbaa !5
  br i1 %867, label %868, label %.thread1214

868:                                              ; preds = %862
  %869 = getelementptr double, ptr %12, i64 %indvars.iv1562
  %870 = load double, ptr %869, align 8, !tbaa !9
  store double %870, ptr %22, align 8, !tbaa !9
  %871 = getelementptr inbounds double, ptr %45, i64 %858
  %872 = load double, ptr %871, align 8, !tbaa !9
  %873 = fcmp oge double %870, %872
  %874 = select i1 %873, double %870, double %872
  %875 = fcmp ogt double %874, %.010611433
  br i1 %875, label %931, label %938

.thread1214:                                      ; preds = %..thread1214_crit_edge, %862
  %.pre1587 = phi i32 [ %.pre1587.pre, %..thread1214_crit_edge ], [ %.pre1587.pre1593, %862 ]
  %876 = getelementptr double, ptr %12, i64 %indvars.iv1562
  %877 = load double, ptr %876, align 8, !tbaa !9
  %878 = fcmp ogt double %877, %.010611433
  br i1 %878, label %879, label %886

879:                                              ; preds = %.thread1214
  %880 = fdiv double 1.000000e+00, %.010901430
  store double %880, ptr %34, align 8, !tbaa !9
  %881 = add i32 %854, 1
  %882 = sub i32 %881, %.pre1587
  store i32 %882, ptr %21, align 4, !tbaa !5
  %883 = add nsw i32 %.pre1587, %854
  %884 = sext i32 %883 to i64
  %885 = getelementptr inbounds double, ptr %45, i64 %884
  call void @dscal_(ptr noundef nonnull %21, ptr noundef nonnull %34, ptr noundef nonnull %885, ptr noundef nonnull @c__1) #6
  %.pre1586 = load i32, ptr %31, align 4, !tbaa !5
  %.pre1588 = load i32, ptr %3, align 4, !tbaa !5
  br label %886

886:                                              ; preds = %879, %.thread1214
  %887 = phi i32 [ %.pre1588, %879 ], [ %854, %.thread1214 ]
  %888 = phi i32 [ %.pre1586, %879 ], [ %.pre1587, %.thread1214 ]
  %.11091 = phi double [ 1.000000e+00, %879 ], [ %.010901430, %.thread1214 ]
  %889 = sub i32 %indvars1564, %888
  store i32 %889, ptr %21, align 4, !tbaa !5
  %890 = add nsw i32 %888, 1
  %891 = mul nsw i64 %indvars.iv.next1563, %746
  %892 = mul nsw i32 %36, %indvars
  %893 = sext i32 %890 to i64
  %894 = getelementptr double, ptr %38, i64 %891
  %895 = getelementptr double, ptr %894, i64 %893
  %896 = add nsw i32 %887, %890
  %897 = sext i32 %896 to i64
  %898 = getelementptr inbounds double, ptr %45, i64 %897
  %899 = call double @ddot_(ptr noundef nonnull %21, ptr noundef %895, ptr noundef nonnull @c__1, ptr noundef nonnull %898, ptr noundef nonnull @c__1) #6
  %900 = load i32, ptr %3, align 4, !tbaa !5
  %901 = sext i32 %900 to i64
  %902 = getelementptr double, ptr %12, i64 %indvars.iv1562
  %903 = getelementptr double, ptr %902, i64 %901
  %904 = load double, ptr %903, align 8, !tbaa !9
  %905 = fsub double %904, %899
  store double %905, ptr %903, align 8, !tbaa !9
  %906 = sext i32 %892 to i64
  %907 = getelementptr double, ptr %38, i64 %indvars.iv.next1563
  %908 = getelementptr double, ptr %907, i64 %906
  call void @dlaln2_(ptr noundef nonnull @c_false, ptr noundef nonnull @c__1, ptr noundef nonnull @c__1, ptr noundef nonnull %26, ptr noundef nonnull @c_b22, ptr noundef %908, ptr noundef nonnull %5, ptr noundef nonnull @c_b22, ptr noundef nonnull @c_b22, ptr noundef nonnull %903, ptr noundef nonnull %3, ptr noundef nonnull %33, ptr noundef nonnull @c_b25, ptr noundef nonnull %28, ptr noundef nonnull @c__2, ptr noundef nonnull %27, ptr noundef nonnull %30, ptr noundef nonnull %23) #6
  %909 = load double, ptr %27, align 8, !tbaa !9
  %910 = fcmp une double %909, 1.000000e+00
  br i1 %910, label %911, label %919

911:                                              ; preds = %886
  %912 = load i32, ptr %3, align 4, !tbaa !5
  %913 = load i32, ptr %31, align 4, !tbaa !5
  %914 = add i32 %912, 1
  %915 = sub i32 %914, %913
  store i32 %915, ptr %21, align 4, !tbaa !5
  %916 = add nsw i32 %913, %912
  %917 = sext i32 %916 to i64
  %918 = getelementptr inbounds double, ptr %45, i64 %917
  call void @dscal_(ptr noundef nonnull %21, ptr noundef nonnull %27, ptr noundef nonnull %918, ptr noundef nonnull @c__1) #6
  br label %919

919:                                              ; preds = %911, %886
  %920 = load double, ptr %28, align 16, !tbaa !9
  %921 = load i32, ptr %3, align 4, !tbaa !5
  %922 = sext i32 %921 to i64
  %923 = getelementptr double, ptr %12, i64 %indvars.iv1562
  %924 = getelementptr double, ptr %923, i64 %922
  store double %920, ptr %924, align 8, !tbaa !9
  store double %920, ptr %22, align 8, !tbaa !9
  %925 = fcmp oge double %920, 0.000000e+00
  %926 = fneg double %920
  %927 = select i1 %925, double %920, double %926
  %928 = fcmp oge double %927, %.11091
  %929 = select i1 %928, double %927, double %.11091
  %930 = fdiv double %132, %929
  br label %1008

931:                                              ; preds = %868
  %932 = fdiv double 1.000000e+00, %.010901430
  store double %932, ptr %34, align 8, !tbaa !9
  %933 = add i32 %854, 1
  %934 = sub i32 %933, %.pre1587.pre1593
  store i32 %934, ptr %21, align 4, !tbaa !5
  %935 = add nsw i32 %.pre1587.pre1593, %854
  %936 = sext i32 %935 to i64
  %937 = getelementptr inbounds double, ptr %45, i64 %936
  call void @dscal_(ptr noundef nonnull %21, ptr noundef nonnull %34, ptr noundef nonnull %937, ptr noundef nonnull @c__1) #6
  %.pre1589 = load i32, ptr %31, align 4, !tbaa !5
  %.pre1591 = load i32, ptr %3, align 4, !tbaa !5
  br label %938

938:                                              ; preds = %931, %868
  %939 = phi i32 [ %.pre1591, %931 ], [ %854, %868 ]
  %940 = phi i32 [ %.pre1589, %931 ], [ %.pre1587.pre1593, %868 ]
  %.21092 = phi double [ 1.000000e+00, %931 ], [ %.010901430, %868 ]
  %941 = sub i32 %indvars1564, %940
  store i32 %941, ptr %21, align 4, !tbaa !5
  %942 = add nsw i32 %940, 1
  %943 = mul nsw i32 %36, %indvars
  %944 = sext i32 %942 to i64
  %945 = getelementptr double, ptr %38, i64 %863
  %946 = getelementptr double, ptr %945, i64 %944
  %947 = add nsw i32 %939, %942
  %948 = sext i32 %947 to i64
  %949 = getelementptr inbounds double, ptr %45, i64 %948
  %950 = call double @ddot_(ptr noundef nonnull %21, ptr noundef %946, ptr noundef nonnull @c__1, ptr noundef nonnull %949, ptr noundef nonnull @c__1) #6
  %951 = load i32, ptr %3, align 4, !tbaa !5
  %952 = sext i32 %951 to i64
  %953 = getelementptr double, ptr %12, i64 %indvars.iv1562
  %954 = getelementptr double, ptr %953, i64 %952
  %955 = load double, ptr %954, align 8, !tbaa !9
  %956 = fsub double %955, %950
  store double %956, ptr %954, align 8, !tbaa !9
  %957 = load i32, ptr %31, align 4, !tbaa !5
  %958 = sub i32 %indvars1564, %957
  store i32 %958, ptr %21, align 4, !tbaa !5
  %959 = add nsw i32 %957, 1
  %960 = mul nsw i64 %858, %746
  %961 = sext i32 %959 to i64
  %962 = getelementptr double, ptr %38, i64 %960
  %963 = getelementptr double, ptr %962, i64 %961
  %964 = add nsw i32 %959, %951
  %965 = sext i32 %964 to i64
  %966 = getelementptr inbounds double, ptr %45, i64 %965
  %967 = call double @ddot_(ptr noundef nonnull %21, ptr noundef %963, ptr noundef nonnull @c__1, ptr noundef nonnull %966, ptr noundef nonnull @c__1) #6
  %968 = load i32, ptr %3, align 4, !tbaa !5
  %969 = sext i32 %968 to i64
  %970 = getelementptr double, ptr %45, i64 %858
  %971 = getelementptr double, ptr %970, i64 %969
  %972 = load double, ptr %971, align 8, !tbaa !9
  %973 = fsub double %972, %967
  store double %973, ptr %971, align 8, !tbaa !9
  %974 = sext i32 %943 to i64
  %975 = getelementptr double, ptr %38, i64 %indvars.iv.next1563
  %976 = getelementptr double, ptr %975, i64 %974
  %977 = getelementptr double, ptr %12, i64 %indvars.iv1562
  %978 = getelementptr double, ptr %977, i64 %969
  call void @dlaln2_(ptr noundef nonnull @c_true, ptr noundef nonnull @c__2, ptr noundef nonnull @c__1, ptr noundef nonnull %26, ptr noundef nonnull @c_b22, ptr noundef %976, ptr noundef nonnull %5, ptr noundef nonnull @c_b22, ptr noundef nonnull @c_b22, ptr noundef nonnull %978, ptr noundef nonnull %3, ptr noundef nonnull %33, ptr noundef nonnull @c_b25, ptr noundef nonnull %28, ptr noundef nonnull @c__2, ptr noundef nonnull %27, ptr noundef nonnull %30, ptr noundef nonnull %23) #6
  %979 = load double, ptr %27, align 8, !tbaa !9
  %980 = fcmp une double %979, 1.000000e+00
  br i1 %980, label %981, label %989

981:                                              ; preds = %938
  %982 = load i32, ptr %3, align 4, !tbaa !5
  %983 = load i32, ptr %31, align 4, !tbaa !5
  %984 = add i32 %982, 1
  %985 = sub i32 %984, %983
  store i32 %985, ptr %21, align 4, !tbaa !5
  %986 = add nsw i32 %983, %982
  %987 = sext i32 %986 to i64
  %988 = getelementptr inbounds double, ptr %45, i64 %987
  call void @dscal_(ptr noundef nonnull %21, ptr noundef nonnull %27, ptr noundef nonnull %988, ptr noundef nonnull @c__1) #6
  br label %989

989:                                              ; preds = %981, %938
  %990 = load i32, ptr %3, align 4, !tbaa !5
  %991 = sext i32 %990 to i64
  %992 = getelementptr double, ptr %12, i64 %indvars.iv1562
  %993 = getelementptr double, ptr %992, i64 %991
  %994 = load <2 x double>, ptr %28, align 16, !tbaa !9
  store <2 x double> %994, ptr %993, align 8, !tbaa !9
  %995 = extractelement <2 x double> %994, i64 0
  store double %995, ptr %22, align 8, !tbaa !9
  %996 = fcmp oge <2 x double> %994, zeroinitializer
  %997 = fneg <2 x double> %994
  %998 = select <2 x i1> %996, <2 x double> %994, <2 x double> %997
  %999 = extractelement <2 x double> %998, i64 0
  %1000 = extractelement <2 x double> %998, i64 1
  %1001 = fcmp oge double %999, %1000
  %1002 = select i1 %1001, double %999, double %1000
  %1003 = fcmp oge double %1002, %.21092
  %1004 = select i1 %1003, double %1002, double %.21092
  %1005 = fdiv double %132, %1004
  %1006 = trunc i64 %indvars.iv1562 to i32
  %1007 = add i32 %1006, 3
  br label %1008

1008:                                             ; preds = %.lr.ph1436, %989, %919
  %1009 = phi i32 [ %854, %.lr.ph1436 ], [ %921, %919 ], [ %990, %989 ]
  %.31093 = phi double [ %.010901430, %.lr.ph1436 ], [ %929, %919 ], [ %1004, %989 ]
  %.81086 = phi i32 [ %.610841431, %.lr.ph1436 ], [ %859, %919 ], [ %1007, %989 ]
  %.11062 = phi double [ %.010611433, %.lr.ph1436 ], [ %930, %919 ], [ %1005, %989 ]
  %1010 = load i32, ptr %20, align 4, !tbaa !5
  %1011 = sext i32 %1010 to i64
  %.not1140.not = icmp slt i64 %indvars.iv.next1563, %1011
  br i1 %.not1140.not, label %.lr.ph1436, label %._crit_edge1437, !llvm.loop !49

._crit_edge1437:                                  ; preds = %1008, %._crit_edge1427.thread, %._crit_edge1427
  %1012 = phi i32 [ %814, %._crit_edge1427 ], [ %814, %._crit_edge1427.thread ], [ %1009, %1008 ]
  %1013 = load i32, ptr %31, align 4, !tbaa !5
  br i1 %.not1135, label %1014, label %1054

1014:                                             ; preds = %._crit_edge1437
  %1015 = add i32 %1012, 1
  %1016 = sub i32 %1015, %1013
  store i32 %1016, ptr %20, align 4, !tbaa !5
  %1017 = add nsw i32 %1013, %1012
  %1018 = sext i32 %1017 to i64
  %1019 = getelementptr inbounds double, ptr %45, i64 %1018
  %1020 = mul nsw i32 %.21469, %39
  %1021 = add nsw i32 %1013, %1020
  %1022 = sext i32 %1021 to i64
  %1023 = getelementptr inbounds double, ptr %41, i64 %1022
  call void @dcopy_(ptr noundef nonnull %20, ptr noundef nonnull %1019, ptr noundef nonnull @c__1, ptr noundef %1023, ptr noundef nonnull @c__1) #6
  %1024 = load i32, ptr %3, align 4, !tbaa !5
  %1025 = load i32, ptr %31, align 4, !tbaa !5
  %1026 = add i32 %1024, 1
  %1027 = sub i32 %1026, %1025
  store i32 %1027, ptr %20, align 4, !tbaa !5
  %1028 = add nsw i32 %1025, %1020
  %1029 = sext i32 %1028 to i64
  %1030 = getelementptr inbounds double, ptr %41, i64 %1029
  %1031 = call i32 @idamax_(ptr noundef nonnull %20, ptr noundef %1030, ptr noundef nonnull @c__1) #6
  %1032 = load i32, ptr %31, align 4, !tbaa !5
  %1033 = add i32 %1032, %1020
  %1034 = add i32 %1033, -1
  %1035 = add i32 %1034, %1031
  %1036 = sext i32 %1035 to i64
  %1037 = getelementptr inbounds double, ptr %41, i64 %1036
  %1038 = load double, ptr %1037, align 8, !tbaa !9
  store double %1038, ptr %22, align 8, !tbaa !9
  %1039 = fcmp oge double %1038, 0.000000e+00
  %1040 = fneg double %1038
  %1041 = select i1 %1039, double %1038, double %1040
  %1042 = fdiv double 1.000000e+00, %1041
  store double %1042, ptr %29, align 8, !tbaa !9
  %1043 = load i32, ptr %3, align 4, !tbaa !5
  %reass.sub = sub i32 %1043, %1032
  %1044 = add i32 %reass.sub, 1
  store i32 %1044, ptr %20, align 4, !tbaa !5
  %1045 = sext i32 %1033 to i64
  %1046 = getelementptr inbounds double, ptr %41, i64 %1045
  call void @dscal_(ptr noundef nonnull %20, ptr noundef nonnull %29, ptr noundef %1046, ptr noundef nonnull @c__1) #6
  %1047 = load i32, ptr %31, align 4, !tbaa !5
  %1048 = add i32 %1047, -1
  store i32 %1048, ptr %20, align 4, !tbaa !5
  %.not1142.not1438 = icmp sgt i32 %1047, 1
  br i1 %.not1142.not1438, label %.lr.ph1441.preheader, label %.loopexit

.lr.ph1441.preheader:                             ; preds = %1014
  %1049 = add i32 %1020, 1
  %1050 = sext i32 %1049 to i64
  %1051 = shl nsw i64 %1050, 3
  %scevgep1566 = getelementptr i8, ptr %scevgep1565, i64 %1051
  %1052 = zext nneg i32 %1048 to i64
  %1053 = shl nuw nsw i64 %1052, 3
  call void @llvm.memset.p0.i64(ptr align 8 %scevgep1566, i8 0, i64 %1053, i1 false), !tbaa !9
  br label %.loopexit

1054:                                             ; preds = %._crit_edge1437
  %1055 = icmp slt i32 %1013, %1012
  br i1 %1055, label %1056, label %1069

1056:                                             ; preds = %1054
  %1057 = sub nsw i32 %1012, %1013
  store i32 %1057, ptr %20, align 4, !tbaa !5
  %1058 = add nsw i32 %1013, 1
  %1059 = mul nsw i32 %1058, %39
  %1060 = sext i32 %1059 to i64
  %gep1459 = getelementptr double, ptr %invariant.gep1442, i64 %1060
  %1061 = add nsw i32 %1058, %1012
  %1062 = sext i32 %1061 to i64
  %1063 = getelementptr inbounds double, ptr %45, i64 %1062
  %1064 = add nsw i32 %1012, %1013
  %1065 = sext i32 %1064 to i64
  %1066 = getelementptr inbounds double, ptr %45, i64 %1065
  %1067 = mul nsw i32 %1013, %39
  %1068 = sext i32 %1067 to i64
  %gep1461 = getelementptr double, ptr %invariant.gep1442, i64 %1068
  call void @dgemv_(ptr noundef nonnull @.str.8, ptr noundef nonnull %3, ptr noundef nonnull %20, ptr noundef nonnull @c_b22, ptr noundef %gep1459, ptr noundef nonnull %7, ptr noundef nonnull %1063, ptr noundef nonnull @c__1, ptr noundef nonnull %1066, ptr noundef %gep1461, ptr noundef nonnull @c__1) #6
  %.pre1592 = load i32, ptr %31, align 4, !tbaa !5
  br label %1069

1069:                                             ; preds = %1056, %1054
  %1070 = phi i32 [ %.pre1592, %1056 ], [ %1013, %1054 ]
  %1071 = mul nsw i32 %1070, %39
  %1072 = sext i32 %1071 to i64
  %gep1463 = getelementptr double, ptr %invariant.gep1442, i64 %1072
  %1073 = call i32 @idamax_(ptr noundef nonnull %3, ptr noundef %gep1463, ptr noundef nonnull @c__1) #6
  %1074 = load i32, ptr %31, align 4, !tbaa !5
  %1075 = mul nsw i32 %1074, %39
  %1076 = add nsw i32 %1075, %1073
  %1077 = sext i32 %1076 to i64
  %1078 = getelementptr inbounds double, ptr %41, i64 %1077
  %1079 = load double, ptr %1078, align 8, !tbaa !9
  store double %1079, ptr %22, align 8, !tbaa !9
  %1080 = fcmp oge double %1079, 0.000000e+00
  %1081 = fneg double %1079
  %1082 = select i1 %1080, double %1079, double %1081
  %1083 = fdiv double 1.000000e+00, %1082
  store double %1083, ptr %29, align 8, !tbaa !9
  %1084 = sext i32 %1075 to i64
  %gep1465 = getelementptr double, ptr %invariant.gep1442, i64 %1084
  call void @dscal_(ptr noundef nonnull %3, ptr noundef nonnull %29, ptr noundef %gep1465, ptr noundef nonnull @c__1) #6
  br label %.loopexit

1085:                                             ; preds = %799
  %1086 = add nsw i32 %812, 1
  %1087 = mul nsw i32 %1086, %36
  %1088 = add nsw i32 %1087, %812
  %1089 = sext i32 %1088 to i64
  %1090 = getelementptr inbounds double, ptr %38, i64 %1089
  %1091 = load double, ptr %1090, align 8, !tbaa !9
  store double %1091, ptr %22, align 8, !tbaa !9
  %1092 = fcmp oge double %1091, 0.000000e+00
  %1093 = fneg double %1091
  %1094 = select i1 %1092, double %1091, double %1093
  %1095 = mul nsw i32 %812, %36
  %1096 = add nsw i32 %1086, %1095
  %1097 = sext i32 %1096 to i64
  %1098 = getelementptr inbounds double, ptr %38, i64 %1097
  %1099 = load double, ptr %1098, align 8, !tbaa !9
  %1100 = fcmp oge double %1099, 0.000000e+00
  %1101 = fneg double %1099
  %1102 = select i1 %1100, double %1099, double %1101
  %1103 = fcmp ult double %1094, %1102
  br i1 %1103, label %1110, label %1104

1104:                                             ; preds = %1085
  %1105 = fdiv double %800, %1091
  %1106 = load i32, ptr %3, align 4, !tbaa !5
  %1107 = add nsw i32 %1106, %812
  %1108 = sext i32 %1107 to i64
  %1109 = getelementptr inbounds double, ptr %45, i64 %1108
  store double %1105, ptr %1109, align 8, !tbaa !9
  br label %1117

1110:                                             ; preds = %1085
  %1111 = load i32, ptr %3, align 4, !tbaa !5
  %1112 = add nsw i32 %1111, %812
  %1113 = sext i32 %1112 to i64
  %1114 = getelementptr inbounds double, ptr %45, i64 %1113
  store double 1.000000e+00, ptr %1114, align 8, !tbaa !9
  %1115 = load double, ptr %1098, align 8, !tbaa !9
  %1116 = fdiv double %806, %1115
  br label %1117

1117:                                             ; preds = %1110, %1104
  %.sink1706 = phi double [ %1116, %1110 ], [ 1.000000e+00, %1104 ]
  %1118 = phi i32 [ %1111, %1110 ], [ %1106, %1104 ]
  %1119 = add nsw i32 %1086, %160
  %1120 = sext i32 %1119 to i64
  %1121 = getelementptr inbounds double, ptr %45, i64 %1120
  store double %.sink1706, ptr %1121, align 8, !tbaa !9
  %1122 = add nsw i32 %1118, %1086
  %1123 = sext i32 %1122 to i64
  %1124 = getelementptr inbounds double, ptr %45, i64 %1123
  store double 0.000000e+00, ptr %1124, align 8, !tbaa !9
  %1125 = add nsw i32 %812, %160
  %1126 = sext i32 %1125 to i64
  %1127 = getelementptr inbounds double, ptr %45, i64 %1126
  store double 0.000000e+00, ptr %1127, align 8, !tbaa !9
  %1128 = add nsw i32 %812, 2
  %.not11331390 = icmp sgt i32 %1128, %1118
  br i1 %.not11331390, label %._crit_edge1394.thread, label %.lr.ph1393

._crit_edge1394.thread:                           ; preds = %1117
  store i32 %1118, ptr %20, align 4, !tbaa !5
  br label %._crit_edge1402

.lr.ph1393:                                       ; preds = %1117
  %1129 = add nsw i32 %1118, %812
  %1130 = sext i32 %1129 to i64
  %1131 = getelementptr inbounds double, ptr %45, i64 %1130
  %1132 = add i32 %1086, %160
  %1133 = sext i32 %1132 to i64
  %1134 = getelementptr double, ptr %45, i64 %1133
  %1135 = sext i32 %1128 to i64
  %1136 = sext i32 %812 to i64
  %1137 = sext i32 %1086 to i64
  %1138 = sext i32 %1118 to i64
  %1139 = add i32 %1118, 1
  %invariant.gep1671 = getelementptr double, ptr %38, i64 %1136
  %invariant.gep1673 = getelementptr double, ptr %45, i64 %1138
  %invariant.gep1675 = getelementptr double, ptr %38, i64 %1137
  %1140 = add i32 %1118, -2
  %1141 = sub i32 %1140, %812
  %1142 = zext i32 %1141 to i64
  %1143 = add nuw nsw i64 %1142, 1
  %min.iters.check1890 = icmp ugt i32 %1141, 18
  %or.cond1909 = select i1 %min.iters.check1890, i1 %ident.check1834.not, i1 false
  br i1 %or.cond1909, label %vector.memcheck1835, label %scalar.ph1889.preheader

vector.memcheck1835:                              ; preds = %.lr.ph1393
  %1144 = shl nsw i64 %1135, 3
  %1145 = add nsw i64 %1138, %1135
  %1146 = shl nsw i64 %1145, 3
  %scevgep1837 = getelementptr i8, ptr %scevgep1836, i64 %1146
  %1147 = add i32 %1118, -2
  %1148 = sub i32 %1147, %812
  %1149 = zext i32 %1148 to i64
  %1150 = shl nuw nsw i64 %1149, 3
  %1151 = getelementptr i8, ptr %12, i64 %1146
  %scevgep1838 = getelementptr i8, ptr %1151, i64 %1150
  %scevgep1840 = getelementptr i8, ptr %scevgep1839, i64 %1144
  %1152 = getelementptr i8, ptr %scevgep1841, i64 %1144
  %scevgep1842 = getelementptr i8, ptr %1152, i64 %1150
  %1153 = shl nsw i64 %1130, 3
  %scevgep1843 = getelementptr i8, ptr %12, i64 %1153
  %1154 = add nsw i64 %1136, %1135
  %1155 = shl nsw i64 %1154, 3
  %scevgep1845 = getelementptr i8, ptr %scevgep1844, i64 %1155
  %1156 = getelementptr i8, ptr %scevgep1846, i64 %1155
  %scevgep1847 = getelementptr i8, ptr %1156, i64 %1150
  %1157 = shl nsw i64 %1133, 3
  %scevgep1848 = getelementptr i8, ptr %12, i64 %1157
  %1158 = add nsw i64 %1135, %1137
  %1159 = shl nsw i64 %1158, 3
  %scevgep1850 = getelementptr i8, ptr %scevgep1849, i64 %1159
  %1160 = getelementptr i8, ptr %scevgep1851, i64 %1159
  %scevgep1852 = getelementptr i8, ptr %1160, i64 %1150
  %bound01853 = icmp ult ptr %scevgep1837, %scevgep1842
  %bound11854 = icmp ult ptr %scevgep1840, %scevgep1838
  %found.conflict1855 = and i1 %bound01853, %bound11854
  %bound01856 = icmp ult ptr %scevgep1837, %scevgep1843
  %bound11857 = icmp ult ptr %1131, %scevgep1838
  %found.conflict1858 = and i1 %bound01856, %bound11857
  %conflict.rdx1859 = or i1 %found.conflict1855, %found.conflict1858
  %bound01860 = icmp ult ptr %scevgep1837, %scevgep1847
  %bound11861 = icmp ult ptr %scevgep1845, %scevgep1838
  %found.conflict1862 = and i1 %bound01860, %bound11861
  %conflict.rdx1863 = or i1 %conflict.rdx1859, %found.conflict1862
  %bound01864 = icmp ult ptr %scevgep1837, %scevgep1848
  %bound11865 = icmp ult ptr %1134, %scevgep1838
  %found.conflict1866 = and i1 %bound01864, %bound11865
  %conflict.rdx1867 = or i1 %conflict.rdx1863, %found.conflict1866
  %bound01868 = icmp ult ptr %scevgep1837, %scevgep1852
  %bound11869 = icmp ult ptr %scevgep1850, %scevgep1838
  %found.conflict1870 = and i1 %bound01868, %bound11869
  %conflict.rdx1871 = or i1 %conflict.rdx1867, %found.conflict1870
  %bound01872 = icmp ult ptr %scevgep1840, %scevgep1843
  %bound11873 = icmp ult ptr %1131, %scevgep1842
  %found.conflict1874 = and i1 %bound01872, %bound11873
  %conflict.rdx1875 = or i1 %conflict.rdx1871, %found.conflict1874
  %bound01876 = icmp ult ptr %scevgep1840, %scevgep1847
  %bound11877 = icmp ult ptr %scevgep1845, %scevgep1842
  %found.conflict1878 = and i1 %bound01876, %bound11877
  %conflict.rdx1879 = or i1 %conflict.rdx1875, %found.conflict1878
  %bound01880 = icmp ult ptr %scevgep1840, %scevgep1848
  %bound11881 = icmp ult ptr %1134, %scevgep1842
  %found.conflict1882 = and i1 %bound01880, %bound11881
  %conflict.rdx1883 = or i1 %conflict.rdx1879, %found.conflict1882
  %bound01884 = icmp ult ptr %scevgep1840, %scevgep1852
  %bound11885 = icmp ult ptr %scevgep1850, %scevgep1842
  %found.conflict1886 = and i1 %bound01884, %bound11885
  %conflict.rdx1887 = or i1 %conflict.rdx1883, %found.conflict1886
  br i1 %conflict.rdx1887, label %scalar.ph1889.preheader, label %vector.ph1891

vector.ph1891:                                    ; preds = %vector.memcheck1835
  %n.vec1893 = and i64 %1143, 8589934590
  %ind.end1894 = add nsw i64 %n.vec1893, %1135
  %1161 = load double, ptr %1131, align 8, !tbaa !9, !alias.scope !50
  %broadcast.splatinsert1899 = insertelement <2 x double> poison, double %1161, i64 0
  %broadcast.splat1900 = shufflevector <2 x double> %broadcast.splatinsert1899, <2 x double> poison, <2 x i32> zeroinitializer
  %1162 = fneg <2 x double> %broadcast.splat1900
  %1163 = load double, ptr %1134, align 8, !tbaa !9, !alias.scope !53
  %broadcast.splatinsert1902 = insertelement <2 x double> poison, double %1163, i64 0
  %broadcast.splat1903 = shufflevector <2 x double> %broadcast.splatinsert1902, <2 x double> poison, <2 x i32> zeroinitializer
  %1164 = fneg <2 x double> %broadcast.splat1903
  br label %vector.body1896

vector.body1896:                                  ; preds = %vector.body1896, %vector.ph1891
  %index1897 = phi i64 [ 0, %vector.ph1891 ], [ %index.next1905, %vector.body1896 ]
  %offset.idx1898 = add i64 %index1897, %1135
  %1165 = getelementptr double, ptr %invariant.gep1671, i64 %offset.idx1898
  %wide.load1901 = load <2 x double>, ptr %1165, align 8, !tbaa !9, !alias.scope !55
  %1166 = fmul <2 x double> %wide.load1901, %1162
  %1167 = getelementptr double, ptr %invariant.gep1673, i64 %offset.idx1898
  store <2 x double> %1166, ptr %1167, align 8, !tbaa !9, !alias.scope !57, !noalias !59
  %1168 = getelementptr double, ptr %invariant.gep1675, i64 %offset.idx1898
  %wide.load1904 = load <2 x double>, ptr %1168, align 8, !tbaa !9, !alias.scope !62
  %1169 = fmul <2 x double> %wide.load1904, %1164
  %1170 = getelementptr double, ptr %invariant.gep1677, i64 %offset.idx1898
  store <2 x double> %1169, ptr %1170, align 8, !tbaa !9, !alias.scope !63, !noalias !64
  %index.next1905 = add nuw i64 %index1897, 2
  %1171 = icmp eq i64 %index.next1905, %n.vec1893
  br i1 %1171, label %middle.block1888, label %vector.body1896, !llvm.loop !65

middle.block1888:                                 ; preds = %vector.body1896
  %cmp.n1906 = icmp eq i64 %1143, %n.vec1893
  br i1 %cmp.n1906, label %._crit_edge1394, label %scalar.ph1889.preheader

scalar.ph1889.preheader:                          ; preds = %middle.block1888, %vector.memcheck1835, %.lr.ph1393
  %indvars.iv1531.ph = phi i64 [ %1135, %vector.memcheck1835 ], [ %1135, %.lr.ph1393 ], [ %ind.end1894, %middle.block1888 ]
  br label %scalar.ph1889

scalar.ph1889:                                    ; preds = %scalar.ph1889.preheader, %scalar.ph1889
  %indvars.iv1531 = phi i64 [ %indvars.iv.next1532, %scalar.ph1889 ], [ %indvars.iv1531.ph, %scalar.ph1889.preheader ]
  %1172 = load double, ptr %1131, align 8, !tbaa !9
  %1173 = fneg double %1172
  %1174 = mul nsw i64 %indvars.iv1531, %746
  %gep1672 = getelementptr double, ptr %invariant.gep1671, i64 %1174
  %1175 = load double, ptr %gep1672, align 8, !tbaa !9
  %1176 = fmul double %1175, %1173
  %gep1674 = getelementptr double, ptr %invariant.gep1673, i64 %indvars.iv1531
  store double %1176, ptr %gep1674, align 8, !tbaa !9
  %1177 = load double, ptr %1134, align 8, !tbaa !9
  %1178 = fneg double %1177
  %gep1676 = getelementptr double, ptr %invariant.gep1675, i64 %1174
  %1179 = load double, ptr %gep1676, align 8, !tbaa !9
  %1180 = fmul double %1179, %1178
  %gep1678 = getelementptr double, ptr %invariant.gep1677, i64 %indvars.iv1531
  store double %1180, ptr %gep1678, align 8, !tbaa !9
  %indvars.iv.next1532 = add nsw i64 %indvars.iv1531, 1
  %lftr.wideiv = trunc i64 %indvars.iv.next1532 to i32
  %exitcond1534.not = icmp eq i32 %1139, %lftr.wideiv
  br i1 %exitcond1534.not, label %._crit_edge1394, label %scalar.ph1889, !llvm.loop !66

._crit_edge1394:                                  ; preds = %scalar.ph1889, %middle.block1888
  store i32 %1118, ptr %20, align 4, !tbaa !5
  br i1 %.not11331390, label %._crit_edge1402, label %.lr.ph1401.preheader

.lr.ph1401.preheader:                             ; preds = %._crit_edge1394
  %1181 = sext i32 %1128 to i64
  br label %.lr.ph1401

.lr.ph1401:                                       ; preds = %.lr.ph1401.preheader, %.lr.ph1401._crit_edge
  %1182 = phi i32 [ %1118, %.lr.ph1401.preheader ], [ %1435, %.lr.ph1401._crit_edge ]
  %indvars.iv1535 = phi i64 [ %1181, %.lr.ph1401.preheader ], [ %.pre1603, %.lr.ph1401._crit_edge ]
  %.210631399 = phi double [ %132, %.lr.ph1401.preheader ], [ %.31064, %.lr.ph1401._crit_edge ]
  %.910871397 = phi i32 [ %1128, %.lr.ph1401.preheader ], [ %.111089, %.lr.ph1401._crit_edge ]
  %.410941396 = phi double [ 1.000000e+00, %.lr.ph1401.preheader ], [ %.71097, %.lr.ph1401._crit_edge ]
  %indvars1537 = trunc i64 %indvars.iv1535 to i32
  %1183 = sext i32 %.910871397 to i64
  %1184 = icmp slt i64 %indvars.iv1535, %1183
  %.pre1603 = add nsw i64 %indvars.iv1535, 1
  br i1 %1184, label %.lr.ph1401._crit_edge, label %1185

1185:                                             ; preds = %.lr.ph1401
  %1186 = add nsw i32 %indvars1537, 1
  %1187 = sext i32 %1182 to i64
  %1188 = icmp slt i64 %indvars.iv1535, %1187
  br i1 %1188, label %1189, label %.thread1624

1189:                                             ; preds = %1185
  %1190 = mul nsw i64 %indvars.iv1535, %746
  %1191 = getelementptr double, ptr %38, i64 %.pre1603
  %1192 = getelementptr double, ptr %1191, i64 %1190
  %1193 = load double, ptr %1192, align 8, !tbaa !9
  %1194 = fcmp une double %1193, 0.000000e+00
  br i1 %1194, label %1195, label %.thread1624

1195:                                             ; preds = %1189
  %1196 = trunc i64 %indvars.iv1535 to i32
  %1197 = add i32 %1196, 2
  %1198 = getelementptr inbounds double, ptr %45, i64 %indvars.iv1535
  %1199 = load double, ptr %1198, align 8, !tbaa !9
  store double %1199, ptr %22, align 8, !tbaa !9
  %1200 = getelementptr double, ptr %12, i64 %indvars.iv1535
  %1201 = load double, ptr %1200, align 8, !tbaa !9
  %1202 = fcmp oge double %1199, %1201
  %1203 = select i1 %1202, double %1199, double %1201
  %1204 = fcmp ogt double %1203, %.210631399
  %.pre1580 = load i32, ptr %31, align 4, !tbaa !5
  br i1 %1204, label %1300, label %1314

.thread1624:                                      ; preds = %1185, %1189
  %1205 = getelementptr inbounds double, ptr %45, i64 %indvars.iv1535
  %1206 = load double, ptr %1205, align 8, !tbaa !9
  %1207 = fcmp ogt double %1206, %.210631399
  %.pre1583 = load i32, ptr %31, align 4, !tbaa !5
  br i1 %1207, label %1208, label %1222

1208:                                             ; preds = %.thread1624
  %1209 = fdiv double 1.000000e+00, %.410941396
  store double %1209, ptr %34, align 8, !tbaa !9
  %1210 = add i32 %1182, 1
  %1211 = sub i32 %1210, %.pre1583
  store i32 %1211, ptr %21, align 4, !tbaa !5
  %1212 = add nsw i32 %.pre1583, %1182
  %1213 = sext i32 %1212 to i64
  %1214 = getelementptr inbounds double, ptr %45, i64 %1213
  call void @dscal_(ptr noundef nonnull %21, ptr noundef nonnull %34, ptr noundef nonnull %1214, ptr noundef nonnull @c__1) #6
  %1215 = load i32, ptr %3, align 4, !tbaa !5
  %1216 = load i32, ptr %31, align 4, !tbaa !5
  %1217 = add i32 %1215, 1
  %1218 = sub i32 %1217, %1216
  store i32 %1218, ptr %21, align 4, !tbaa !5
  %1219 = add nsw i32 %1216, %160
  %1220 = sext i32 %1219 to i64
  %1221 = getelementptr inbounds double, ptr %45, i64 %1220
  call void @dscal_(ptr noundef nonnull %21, ptr noundef nonnull %34, ptr noundef nonnull %1221, ptr noundef nonnull @c__1) #6
  %.pre1582 = load i32, ptr %31, align 4, !tbaa !5
  %.pre1584 = load i32, ptr %3, align 4, !tbaa !5
  br label %1222

1222:                                             ; preds = %1208, %.thread1624
  %1223 = phi i32 [ %.pre1584, %1208 ], [ %1182, %.thread1624 ]
  %1224 = phi i32 [ %.pre1582, %1208 ], [ %.pre1583, %.thread1624 ]
  %.51095 = phi double [ 1.000000e+00, %1208 ], [ %.410941396, %.thread1624 ]
  %1225 = add i32 %indvars1537, -2
  %1226 = sub i32 %1225, %1224
  store i32 %1226, ptr %21, align 4, !tbaa !5
  %1227 = add nsw i32 %1224, 2
  %1228 = mul nsw i64 %indvars.iv1535, %746
  %1229 = mul nsw i32 %36, %indvars1537
  %1230 = sext i32 %1227 to i64
  %1231 = getelementptr double, ptr %38, i64 %1228
  %1232 = getelementptr double, ptr %1231, i64 %1230
  %1233 = add nsw i32 %1223, %1227
  %1234 = sext i32 %1233 to i64
  %1235 = getelementptr inbounds double, ptr %45, i64 %1234
  %1236 = call double @ddot_(ptr noundef nonnull %21, ptr noundef %1232, ptr noundef nonnull @c__1, ptr noundef nonnull %1235, ptr noundef nonnull @c__1) #6
  %1237 = load i32, ptr %3, align 4, !tbaa !5
  %1238 = sext i32 %1237 to i64
  %1239 = getelementptr double, ptr %45, i64 %indvars.iv1535
  %1240 = getelementptr double, ptr %1239, i64 %1238
  %1241 = load double, ptr %1240, align 8, !tbaa !9
  %1242 = fsub double %1241, %1236
  store double %1242, ptr %1240, align 8, !tbaa !9
  %1243 = load i32, ptr %31, align 4, !tbaa !5
  %1244 = sub i32 %1225, %1243
  store i32 %1244, ptr %21, align 4, !tbaa !5
  %1245 = add nsw i32 %1243, 2
  %1246 = sext i32 %1245 to i64
  %1247 = getelementptr double, ptr %38, i64 %1228
  %1248 = getelementptr double, ptr %1247, i64 %1246
  %1249 = add nsw i32 %1245, %160
  %1250 = sext i32 %1249 to i64
  %1251 = getelementptr inbounds double, ptr %45, i64 %1250
  %1252 = call double @ddot_(ptr noundef nonnull %21, ptr noundef %1248, ptr noundef nonnull @c__1, ptr noundef nonnull %1251, ptr noundef nonnull @c__1) #6
  %gep1684 = getelementptr double, ptr %invariant.gep1683, i64 %indvars.iv1535
  %1253 = load double, ptr %gep1684, align 8, !tbaa !9
  %1254 = fsub double %1253, %1252
  store double %1254, ptr %gep1684, align 8, !tbaa !9
  %1255 = load double, ptr %32, align 8, !tbaa !9
  %1256 = fneg double %1255
  store double %1256, ptr %22, align 8, !tbaa !9
  %1257 = sext i32 %1229 to i64
  %1258 = getelementptr double, ptr %38, i64 %indvars.iv1535
  %1259 = getelementptr double, ptr %1258, i64 %1257
  %1260 = load i32, ptr %3, align 4, !tbaa !5
  %1261 = sext i32 %1260 to i64
  %1262 = getelementptr double, ptr %45, i64 %indvars.iv1535
  %1263 = getelementptr double, ptr %1262, i64 %1261
  call void @dlaln2_(ptr noundef nonnull @c_false, ptr noundef nonnull @c__1, ptr noundef nonnull @c__2, ptr noundef nonnull %26, ptr noundef nonnull @c_b22, ptr noundef %1259, ptr noundef nonnull %5, ptr noundef nonnull @c_b22, ptr noundef nonnull @c_b22, ptr noundef nonnull %1263, ptr noundef nonnull %3, ptr noundef nonnull %33, ptr noundef nonnull %22, ptr noundef nonnull %28, ptr noundef nonnull @c__2, ptr noundef nonnull %27, ptr noundef nonnull %30, ptr noundef nonnull %23) #6
  %1264 = load double, ptr %27, align 8, !tbaa !9
  %1265 = fcmp une double %1264, 1.000000e+00
  br i1 %1265, label %1266, label %1281

1266:                                             ; preds = %1222
  %1267 = load i32, ptr %3, align 4, !tbaa !5
  %1268 = load i32, ptr %31, align 4, !tbaa !5
  %1269 = add i32 %1267, 1
  %1270 = sub i32 %1269, %1268
  store i32 %1270, ptr %21, align 4, !tbaa !5
  %1271 = add nsw i32 %1268, %1267
  %1272 = sext i32 %1271 to i64
  %1273 = getelementptr inbounds double, ptr %45, i64 %1272
  call void @dscal_(ptr noundef nonnull %21, ptr noundef nonnull %27, ptr noundef nonnull %1273, ptr noundef nonnull @c__1) #6
  %1274 = load i32, ptr %3, align 4, !tbaa !5
  %1275 = load i32, ptr %31, align 4, !tbaa !5
  %1276 = add i32 %1274, 1
  %1277 = sub i32 %1276, %1275
  store i32 %1277, ptr %21, align 4, !tbaa !5
  %1278 = add nsw i32 %1275, %160
  %1279 = sext i32 %1278 to i64
  %1280 = getelementptr inbounds double, ptr %45, i64 %1279
  call void @dscal_(ptr noundef nonnull %21, ptr noundef nonnull %27, ptr noundef nonnull %1280, ptr noundef nonnull @c__1) #6
  br label %1281

1281:                                             ; preds = %1266, %1222
  %1282 = load double, ptr %28, align 16, !tbaa !9
  %1283 = load i32, ptr %3, align 4, !tbaa !5
  %1284 = sext i32 %1283 to i64
  %1285 = getelementptr double, ptr %45, i64 %indvars.iv1535
  %1286 = getelementptr double, ptr %1285, i64 %1284
  store double %1282, ptr %1286, align 8, !tbaa !9
  %1287 = load double, ptr %743, align 16, !tbaa !9
  store double %1287, ptr %gep1684, align 8, !tbaa !9
  %1288 = load double, ptr %1286, align 8, !tbaa !9
  store double %1288, ptr %22, align 8, !tbaa !9
  %1289 = fcmp oge double %1288, 0.000000e+00
  %1290 = fneg double %1288
  %1291 = select i1 %1289, double %1288, double %1290
  %1292 = fcmp oge double %1287, 0.000000e+00
  %1293 = fneg double %1287
  %1294 = select i1 %1292, double %1287, double %1293
  %1295 = fcmp oge double %1291, %1294
  %1296 = select i1 %1295, double %1291, double %1294
  %1297 = fcmp oge double %1296, %.51095
  %1298 = select i1 %1297, double %1296, double %.51095
  %1299 = fdiv double %132, %1298
  br label %.lr.ph1401._crit_edge

1300:                                             ; preds = %1195
  %1301 = fdiv double 1.000000e+00, %.410941396
  store double %1301, ptr %34, align 8, !tbaa !9
  %1302 = add i32 %1182, 1
  %1303 = sub i32 %1302, %.pre1580
  store i32 %1303, ptr %21, align 4, !tbaa !5
  %1304 = add nsw i32 %.pre1580, %1182
  %1305 = sext i32 %1304 to i64
  %1306 = getelementptr inbounds double, ptr %45, i64 %1305
  call void @dscal_(ptr noundef nonnull %21, ptr noundef nonnull %34, ptr noundef nonnull %1306, ptr noundef nonnull @c__1) #6
  %1307 = load i32, ptr %3, align 4, !tbaa !5
  %1308 = load i32, ptr %31, align 4, !tbaa !5
  %1309 = add i32 %1307, 1
  %1310 = sub i32 %1309, %1308
  store i32 %1310, ptr %21, align 4, !tbaa !5
  %1311 = add nsw i32 %1308, %160
  %1312 = sext i32 %1311 to i64
  %1313 = getelementptr inbounds double, ptr %45, i64 %1312
  call void @dscal_(ptr noundef nonnull %21, ptr noundef nonnull %34, ptr noundef nonnull %1313, ptr noundef nonnull @c__1) #6
  %.pre1579 = load i32, ptr %31, align 4, !tbaa !5
  %.pre1581 = load i32, ptr %3, align 4, !tbaa !5
  br label %1314

1314:                                             ; preds = %1300, %1195
  %1315 = phi i32 [ %.pre1581, %1300 ], [ %1182, %1195 ]
  %1316 = phi i32 [ %.pre1579, %1300 ], [ %.pre1580, %1195 ]
  %.61096 = phi double [ 1.000000e+00, %1300 ], [ %.410941396, %1195 ]
  %1317 = add i32 %indvars1537, -2
  %1318 = sub i32 %1317, %1316
  store i32 %1318, ptr %21, align 4, !tbaa !5
  %1319 = add nsw i32 %1316, 2
  %1320 = mul nsw i64 %indvars.iv1535, %746
  %1321 = mul nsw i32 %36, %indvars1537
  %1322 = sext i32 %1319 to i64
  %1323 = getelementptr double, ptr %38, i64 %1320
  %1324 = getelementptr double, ptr %1323, i64 %1322
  %1325 = add nsw i32 %1315, %1319
  %1326 = sext i32 %1325 to i64
  %1327 = getelementptr inbounds double, ptr %45, i64 %1326
  %1328 = call double @ddot_(ptr noundef nonnull %21, ptr noundef %1324, ptr noundef nonnull @c__1, ptr noundef nonnull %1327, ptr noundef nonnull @c__1) #6
  %1329 = load i32, ptr %3, align 4, !tbaa !5
  %1330 = sext i32 %1329 to i64
  %1331 = getelementptr double, ptr %45, i64 %indvars.iv1535
  %1332 = getelementptr double, ptr %1331, i64 %1330
  %1333 = load double, ptr %1332, align 8, !tbaa !9
  %1334 = fsub double %1333, %1328
  store double %1334, ptr %1332, align 8, !tbaa !9
  %1335 = load i32, ptr %31, align 4, !tbaa !5
  %1336 = sub i32 %1317, %1335
  store i32 %1336, ptr %21, align 4, !tbaa !5
  %1337 = add nsw i32 %1335, 2
  %1338 = sext i32 %1337 to i64
  %1339 = getelementptr double, ptr %38, i64 %1320
  %1340 = getelementptr double, ptr %1339, i64 %1338
  %1341 = add nsw i32 %1337, %160
  %1342 = sext i32 %1341 to i64
  %1343 = getelementptr inbounds double, ptr %45, i64 %1342
  %1344 = call double @ddot_(ptr noundef nonnull %21, ptr noundef %1340, ptr noundef nonnull @c__1, ptr noundef nonnull %1343, ptr noundef nonnull @c__1) #6
  %gep1680 = getelementptr double, ptr %invariant.gep1679, i64 %indvars.iv1535
  %1345 = load double, ptr %gep1680, align 8, !tbaa !9
  %1346 = fsub double %1345, %1344
  store double %1346, ptr %gep1680, align 8, !tbaa !9
  %1347 = load i32, ptr %31, align 4, !tbaa !5
  %1348 = sub i32 %1317, %1347
  store i32 %1348, ptr %21, align 4, !tbaa !5
  %1349 = add nsw i32 %1347, 2
  %1350 = mul nsw i64 %.pre1603, %746
  %1351 = sext i32 %1349 to i64
  %1352 = getelementptr double, ptr %38, i64 %1350
  %1353 = getelementptr double, ptr %1352, i64 %1351
  %1354 = load i32, ptr %3, align 4, !tbaa !5
  %1355 = add nsw i32 %1354, %1349
  %1356 = sext i32 %1355 to i64
  %1357 = getelementptr inbounds double, ptr %45, i64 %1356
  %1358 = call double @ddot_(ptr noundef nonnull %21, ptr noundef %1353, ptr noundef nonnull @c__1, ptr noundef nonnull %1357, ptr noundef nonnull @c__1) #6
  %1359 = load i32, ptr %3, align 4, !tbaa !5
  %1360 = sext i32 %1359 to i64
  %1361 = getelementptr double, ptr %12, i64 %indvars.iv1535
  %1362 = getelementptr double, ptr %1361, i64 %1360
  %1363 = load double, ptr %1362, align 8, !tbaa !9
  %1364 = fsub double %1363, %1358
  store double %1364, ptr %1362, align 8, !tbaa !9
  %1365 = load i32, ptr %31, align 4, !tbaa !5
  %1366 = sub i32 %1317, %1365
  store i32 %1366, ptr %21, align 4, !tbaa !5
  %1367 = add nsw i32 %1365, 2
  %1368 = sext i32 %1367 to i64
  %1369 = getelementptr double, ptr %38, i64 %1350
  %1370 = getelementptr double, ptr %1369, i64 %1368
  %1371 = add nsw i32 %1367, %160
  %1372 = sext i32 %1371 to i64
  %1373 = getelementptr inbounds double, ptr %45, i64 %1372
  %1374 = call double @ddot_(ptr noundef nonnull %21, ptr noundef %1370, ptr noundef nonnull @c__1, ptr noundef nonnull %1373, ptr noundef nonnull @c__1) #6
  %gep1682 = getelementptr double, ptr %invariant.gep1681, i64 %indvars.iv1535
  %1375 = load double, ptr %gep1682, align 8, !tbaa !9
  %1376 = fsub double %1375, %1374
  store double %1376, ptr %gep1682, align 8, !tbaa !9
  %1377 = load double, ptr %32, align 8, !tbaa !9
  %1378 = fneg double %1377
  store double %1378, ptr %22, align 8, !tbaa !9
  %1379 = sext i32 %1321 to i64
  %1380 = getelementptr double, ptr %38, i64 %indvars.iv1535
  %1381 = getelementptr double, ptr %1380, i64 %1379
  %1382 = load i32, ptr %3, align 4, !tbaa !5
  %1383 = sext i32 %1382 to i64
  %1384 = getelementptr double, ptr %45, i64 %indvars.iv1535
  %1385 = getelementptr double, ptr %1384, i64 %1383
  call void @dlaln2_(ptr noundef nonnull @c_true, ptr noundef nonnull @c__2, ptr noundef nonnull @c__2, ptr noundef nonnull %26, ptr noundef nonnull @c_b22, ptr noundef %1381, ptr noundef nonnull %5, ptr noundef nonnull @c_b22, ptr noundef nonnull @c_b22, ptr noundef nonnull %1385, ptr noundef nonnull %3, ptr noundef nonnull %33, ptr noundef nonnull %22, ptr noundef nonnull %28, ptr noundef nonnull @c__2, ptr noundef nonnull %27, ptr noundef nonnull %30, ptr noundef nonnull %23) #6
  %1386 = load double, ptr %27, align 8, !tbaa !9
  %1387 = fcmp une double %1386, 1.000000e+00
  br i1 %1387, label %1388, label %1403

1388:                                             ; preds = %1314
  %1389 = load i32, ptr %3, align 4, !tbaa !5
  %1390 = load i32, ptr %31, align 4, !tbaa !5
  %1391 = add i32 %1389, 1
  %1392 = sub i32 %1391, %1390
  store i32 %1392, ptr %21, align 4, !tbaa !5
  %1393 = add nsw i32 %1390, %1389
  %1394 = sext i32 %1393 to i64
  %1395 = getelementptr inbounds double, ptr %45, i64 %1394
  call void @dscal_(ptr noundef nonnull %21, ptr noundef nonnull %27, ptr noundef nonnull %1395, ptr noundef nonnull @c__1) #6
  %1396 = load i32, ptr %3, align 4, !tbaa !5
  %1397 = load i32, ptr %31, align 4, !tbaa !5
  %1398 = add i32 %1396, 1
  %1399 = sub i32 %1398, %1397
  store i32 %1399, ptr %21, align 4, !tbaa !5
  %1400 = add nsw i32 %1397, %160
  %1401 = sext i32 %1400 to i64
  %1402 = getelementptr inbounds double, ptr %45, i64 %1401
  call void @dscal_(ptr noundef nonnull %21, ptr noundef nonnull %27, ptr noundef nonnull %1402, ptr noundef nonnull @c__1) #6
  br label %1403

1403:                                             ; preds = %1388, %1314
  %1404 = load double, ptr %28, align 16
  %1405 = load i32, ptr %3, align 4, !tbaa !5
  %1406 = sext i32 %1405 to i64
  %1407 = getelementptr double, ptr %45, i64 %indvars.iv1535
  %1408 = getelementptr double, ptr %1407, i64 %1406
  store double %1404, ptr %1408, align 8, !tbaa !9
  %1409 = load double, ptr %743, align 16
  store double %1409, ptr %gep1680, align 8, !tbaa !9
  %1410 = load double, ptr %744, align 8
  %1411 = getelementptr double, ptr %12, i64 %indvars.iv1535
  %1412 = getelementptr double, ptr %1411, i64 %1406
  store double %1410, ptr %1412, align 8, !tbaa !9
  %1413 = load double, ptr %745, align 8
  store double %1413, ptr %gep1682, align 8, !tbaa !9
  %1414 = fcmp oge double %1404, 0.000000e+00
  %1415 = fneg double %1404
  %1416 = select i1 %1414, double %1404, double %1415
  %1417 = fcmp oge double %1409, 0.000000e+00
  %1418 = fneg double %1409
  %1419 = select i1 %1417, double %1409, double %1418
  %1420 = fcmp oge double %1416, %1419
  %1421 = select i1 %1420, double %1416, double %1419
  %1422 = fcmp oge double %1410, 0.000000e+00
  %1423 = fneg double %1410
  %1424 = select i1 %1422, double %1410, double %1423
  %1425 = fcmp oge double %1421, %1424
  %1426 = select i1 %1425, double %1421, double %1424
  %1427 = fcmp oge double %1413, 0.000000e+00
  %1428 = fneg double %1413
  %1429 = select i1 %1427, double %1413, double %1428
  %1430 = fcmp oge double %1426, %1429
  %1431 = select i1 %1430, double %1426, double %1429
  store double %1431, ptr %22, align 8, !tbaa !9
  %1432 = fcmp oge double %1431, %.61096
  %1433 = select i1 %1432, double %1431, double %.61096
  %1434 = fdiv double %132, %1433
  br label %.lr.ph1401._crit_edge

.lr.ph1401._crit_edge:                            ; preds = %.lr.ph1401, %1403, %1281
  %1435 = phi i32 [ %1405, %1403 ], [ %1283, %1281 ], [ %1182, %.lr.ph1401 ]
  %.71097 = phi double [ %1433, %1403 ], [ %1298, %1281 ], [ %.410941396, %.lr.ph1401 ]
  %.111089 = phi i32 [ %1197, %1403 ], [ %1186, %1281 ], [ %.910871397, %.lr.ph1401 ]
  %.31064 = phi double [ %1434, %1403 ], [ %1299, %1281 ], [ %.210631399, %.lr.ph1401 ]
  %1436 = load i32, ptr %20, align 4, !tbaa !5
  %1437 = sext i32 %1436 to i64
  %.not1134.not = icmp slt i64 %indvars.iv1535, %1437
  br i1 %.not1134.not, label %.lr.ph1401, label %._crit_edge1402, !llvm.loop !67

._crit_edge1402:                                  ; preds = %.lr.ph1401._crit_edge, %._crit_edge1394.thread, %._crit_edge1394
  %1438 = phi i32 [ %1118, %._crit_edge1394 ], [ %1118, %._crit_edge1394.thread ], [ %1435, %.lr.ph1401._crit_edge ]
  %1439 = load i32, ptr %31, align 4, !tbaa !5
  br i1 %.not1135, label %1440, label %1507

1440:                                             ; preds = %._crit_edge1402
  %1441 = add i32 %1438, 1
  %1442 = sub i32 %1441, %1439
  store i32 %1442, ptr %20, align 4, !tbaa !5
  %1443 = add nsw i32 %1439, %1438
  %1444 = sext i32 %1443 to i64
  %1445 = getelementptr inbounds double, ptr %45, i64 %1444
  %1446 = mul nsw i32 %.21469, %39
  %1447 = add nsw i32 %1439, %1446
  %1448 = sext i32 %1447 to i64
  %1449 = getelementptr inbounds double, ptr %41, i64 %1448
  call void @dcopy_(ptr noundef nonnull %20, ptr noundef nonnull %1445, ptr noundef nonnull @c__1, ptr noundef %1449, ptr noundef nonnull @c__1) #6
  %1450 = load i32, ptr %3, align 4, !tbaa !5
  %1451 = load i32, ptr %31, align 4, !tbaa !5
  %1452 = add i32 %1450, 1
  %1453 = sub i32 %1452, %1451
  store i32 %1453, ptr %20, align 4, !tbaa !5
  %1454 = add nsw i32 %1451, %160
  %1455 = sext i32 %1454 to i64
  %1456 = getelementptr inbounds double, ptr %45, i64 %1455
  %1457 = add nsw i32 %.21469, 1
  %1458 = mul nsw i32 %1457, %39
  %1459 = add nsw i32 %1451, %1458
  %1460 = sext i32 %1459 to i64
  %1461 = getelementptr inbounds double, ptr %41, i64 %1460
  call void @dcopy_(ptr noundef nonnull %20, ptr noundef nonnull %1456, ptr noundef nonnull @c__1, ptr noundef %1461, ptr noundef nonnull @c__1) #6
  %1462 = load i32, ptr %3, align 4, !tbaa !5
  %1463 = load i32, ptr %31, align 4, !tbaa !5
  %.not11361411 = icmp sgt i32 %1463, %1462
  br i1 %.not11361411, label %._crit_edge1597, label %.lr.ph1415.preheader

._crit_edge1597:                                  ; preds = %1440
  %.pre1598 = add nsw i32 %1462, 1
  br label %1479

.lr.ph1415.preheader:                             ; preds = %1440
  %1464 = sext i32 %1463 to i64
  %1465 = sext i32 %1446 to i64
  %1466 = sext i32 %1458 to i64
  %1467 = add i32 %1462, 1
  %invariant.gep1689 = getelementptr double, ptr %41, i64 %1465
  %invariant.gep1691 = getelementptr double, ptr %41, i64 %1466
  br label %.lr.ph1415

.lr.ph1415:                                       ; preds = %.lr.ph1415.preheader, %.lr.ph1415
  %indvars.iv1543 = phi i64 [ %1464, %.lr.ph1415.preheader ], [ %indvars.iv.next1544, %.lr.ph1415 ]
  %.211001412 = phi double [ 0.000000e+00, %.lr.ph1415.preheader ], [ %1478, %.lr.ph1415 ]
  %gep1690 = getelementptr double, ptr %invariant.gep1689, i64 %indvars.iv1543
  %1468 = load double, ptr %gep1690, align 8, !tbaa !9
  %1469 = fcmp oge double %1468, 0.000000e+00
  %1470 = fneg double %1468
  %1471 = select i1 %1469, double %1468, double %1470
  %gep1692 = getelementptr double, ptr %invariant.gep1691, i64 %indvars.iv1543
  %1472 = load double, ptr %gep1692, align 8, !tbaa !9
  %1473 = fcmp oge double %1472, 0.000000e+00
  %1474 = fneg double %1472
  %1475 = select i1 %1473, double %1472, double %1474
  %1476 = fadd double %1471, %1475
  %1477 = fcmp oge double %.211001412, %1476
  %1478 = select i1 %1477, double %.211001412, double %1476
  %indvars.iv.next1544 = add nsw i64 %indvars.iv1543, 1
  %lftr.wideiv1546 = trunc i64 %indvars.iv.next1544 to i32
  %exitcond1547.not = icmp eq i32 %1467, %lftr.wideiv1546
  br i1 %exitcond1547.not, label %._crit_edge1416, label %.lr.ph1415, !llvm.loop !68

._crit_edge1416:                                  ; preds = %.lr.ph1415
  store double %1468, ptr %22, align 8, !tbaa !9
  br label %1479

1479:                                             ; preds = %._crit_edge1597, %._crit_edge1416
  %.pre-phi = phi i32 [ %.pre1598, %._crit_edge1597 ], [ %1467, %._crit_edge1416 ]
  %.21100.lcssa = phi double [ 0.000000e+00, %._crit_edge1597 ], [ %1478, %._crit_edge1416 ]
  %1480 = fdiv double 1.000000e+00, %.21100.lcssa
  store double %1480, ptr %29, align 8, !tbaa !9
  %1481 = sub i32 %.pre-phi, %1463
  store i32 %1481, ptr %20, align 4, !tbaa !5
  %1482 = add nsw i32 %1463, %1446
  %1483 = sext i32 %1482 to i64
  %1484 = getelementptr inbounds double, ptr %41, i64 %1483
  call void @dscal_(ptr noundef nonnull %20, ptr noundef nonnull %29, ptr noundef %1484, ptr noundef nonnull @c__1) #6
  %1485 = load i32, ptr %3, align 4, !tbaa !5
  %1486 = load i32, ptr %31, align 4, !tbaa !5
  %1487 = add i32 %1485, 1
  %1488 = sub i32 %1487, %1486
  store i32 %1488, ptr %20, align 4, !tbaa !5
  %1489 = add nsw i32 %1486, %1458
  %1490 = sext i32 %1489 to i64
  %1491 = getelementptr inbounds double, ptr %41, i64 %1490
  call void @dscal_(ptr noundef nonnull %20, ptr noundef nonnull %29, ptr noundef %1491, ptr noundef nonnull @c__1) #6
  %1492 = load i32, ptr %31, align 4, !tbaa !5
  %1493 = add nsw i32 %1492, -1
  store i32 %1493, ptr %20, align 4, !tbaa !5
  %.not1137.not1419 = icmp sgt i32 %1492, 1
  br i1 %.not1137.not1419, label %.lr.ph1422.preheader, label %.loopexit

.lr.ph1422.preheader:                             ; preds = %1479
  %1494 = sext i32 %1446 to i64
  %1495 = sext i32 %1458 to i64
  %wide.trip.count1555 = zext nneg i32 %1492 to i64
  %invariant.gep1693 = getelementptr double, ptr %41, i64 %1494
  %invariant.gep1695 = getelementptr double, ptr %41, i64 %1495
  %1496 = add nsw i64 %wide.trip.count1555, -1
  %min.iters.check1822 = icmp ult i32 %1492, 5
  br i1 %min.iters.check1822, label %.lr.ph1422.preheader1911, label %vector.memcheck1818

vector.memcheck1818:                              ; preds = %.lr.ph1422.preheader
  %1497 = sub nsw i64 %1495, %1494
  %1498 = and i64 %1497, 2305843009213693948
  %diff.check1819 = icmp eq i64 %1498, 0
  br i1 %diff.check1819, label %.lr.ph1422.preheader1911, label %vector.ph1823

vector.ph1823:                                    ; preds = %vector.memcheck1818
  %n.vec1825 = and i64 %1496, -4
  %ind.end1826 = or disjoint i64 %n.vec1825, 1
  br label %vector.body1828

vector.body1828:                                  ; preds = %vector.body1828, %vector.ph1823
  %index1829 = phi i64 [ 0, %vector.ph1823 ], [ %index.next1831, %vector.body1828 ]
  %offset.idx1830 = or disjoint i64 %index1829, 1
  %1499 = getelementptr double, ptr %invariant.gep1693, i64 %offset.idx1830
  %1500 = getelementptr i8, ptr %1499, i64 16
  store <2 x double> zeroinitializer, ptr %1499, align 8, !tbaa !9
  store <2 x double> zeroinitializer, ptr %1500, align 8, !tbaa !9
  %1501 = getelementptr double, ptr %invariant.gep1695, i64 %offset.idx1830
  %1502 = getelementptr i8, ptr %1501, i64 16
  store <2 x double> zeroinitializer, ptr %1501, align 8, !tbaa !9
  store <2 x double> zeroinitializer, ptr %1502, align 8, !tbaa !9
  %index.next1831 = add nuw i64 %index1829, 4
  %1503 = icmp eq i64 %index.next1831, %n.vec1825
  br i1 %1503, label %middle.block1820, label %vector.body1828, !llvm.loop !69

middle.block1820:                                 ; preds = %vector.body1828
  %cmp.n1832 = icmp eq i64 %1496, %n.vec1825
  br i1 %cmp.n1832, label %.loopexit, label %.lr.ph1422.preheader1911

.lr.ph1422.preheader1911:                         ; preds = %middle.block1820, %vector.memcheck1818, %.lr.ph1422.preheader
  %indvars.iv1552.ph = phi i64 [ 1, %vector.memcheck1818 ], [ 1, %.lr.ph1422.preheader ], [ %ind.end1826, %middle.block1820 ]
  %1504 = sub nsw i64 %wide.trip.count1555, %indvars.iv1552.ph
  %xtraiter1931 = and i64 %1504, 3
  %lcmp.mod1932.not = icmp eq i64 %xtraiter1931, 0
  br i1 %lcmp.mod1932.not, label %.lr.ph1422.prol.loopexit, label %.lr.ph1422.prol

.lr.ph1422.prol:                                  ; preds = %.lr.ph1422.preheader1911, %.lr.ph1422.prol
  %indvars.iv1552.prol = phi i64 [ %indvars.iv.next1553.prol, %.lr.ph1422.prol ], [ %indvars.iv1552.ph, %.lr.ph1422.preheader1911 ]
  %prol.iter1933 = phi i64 [ %prol.iter1933.next, %.lr.ph1422.prol ], [ 0, %.lr.ph1422.preheader1911 ]
  %gep1694.prol = getelementptr double, ptr %invariant.gep1693, i64 %indvars.iv1552.prol
  store double 0.000000e+00, ptr %gep1694.prol, align 8, !tbaa !9
  %gep1696.prol = getelementptr double, ptr %invariant.gep1695, i64 %indvars.iv1552.prol
  store double 0.000000e+00, ptr %gep1696.prol, align 8, !tbaa !9
  %indvars.iv.next1553.prol = add nuw nsw i64 %indvars.iv1552.prol, 1
  %prol.iter1933.next = add i64 %prol.iter1933, 1
  %prol.iter1933.cmp.not = icmp eq i64 %prol.iter1933.next, %xtraiter1931
  br i1 %prol.iter1933.cmp.not, label %.lr.ph1422.prol.loopexit, label %.lr.ph1422.prol, !llvm.loop !70

.lr.ph1422.prol.loopexit:                         ; preds = %.lr.ph1422.prol, %.lr.ph1422.preheader1911
  %indvars.iv1552.unr = phi i64 [ %indvars.iv1552.ph, %.lr.ph1422.preheader1911 ], [ %indvars.iv.next1553.prol, %.lr.ph1422.prol ]
  %1505 = sub nsw i64 %indvars.iv1552.ph, %wide.trip.count1555
  %1506 = icmp ugt i64 %1505, -4
  br i1 %1506, label %.loopexit, label %.lr.ph1422

.lr.ph1422:                                       ; preds = %.lr.ph1422.prol.loopexit, %.lr.ph1422
  %indvars.iv1552 = phi i64 [ %indvars.iv.next1553.3, %.lr.ph1422 ], [ %indvars.iv1552.unr, %.lr.ph1422.prol.loopexit ]
  %gep1694 = getelementptr double, ptr %invariant.gep1693, i64 %indvars.iv1552
  store double 0.000000e+00, ptr %gep1694, align 8, !tbaa !9
  %gep1696 = getelementptr double, ptr %invariant.gep1695, i64 %indvars.iv1552
  store double 0.000000e+00, ptr %gep1696, align 8, !tbaa !9
  %indvars.iv.next1553 = add nuw nsw i64 %indvars.iv1552, 1
  %gep1694.1 = getelementptr double, ptr %invariant.gep1693, i64 %indvars.iv.next1553
  store double 0.000000e+00, ptr %gep1694.1, align 8, !tbaa !9
  %gep1696.1 = getelementptr double, ptr %invariant.gep1695, i64 %indvars.iv.next1553
  store double 0.000000e+00, ptr %gep1696.1, align 8, !tbaa !9
  %indvars.iv.next1553.1 = add nuw nsw i64 %indvars.iv1552, 2
  %gep1694.2 = getelementptr double, ptr %invariant.gep1693, i64 %indvars.iv.next1553.1
  store double 0.000000e+00, ptr %gep1694.2, align 8, !tbaa !9
  %gep1696.2 = getelementptr double, ptr %invariant.gep1695, i64 %indvars.iv.next1553.1
  store double 0.000000e+00, ptr %gep1696.2, align 8, !tbaa !9
  %indvars.iv.next1553.2 = add nuw nsw i64 %indvars.iv1552, 3
  %gep1694.3 = getelementptr double, ptr %invariant.gep1693, i64 %indvars.iv.next1553.2
  store double 0.000000e+00, ptr %gep1694.3, align 8, !tbaa !9
  %gep1696.3 = getelementptr double, ptr %invariant.gep1695, i64 %indvars.iv.next1553.2
  store double 0.000000e+00, ptr %gep1696.3, align 8, !tbaa !9
  %indvars.iv.next1553.3 = add nuw nsw i64 %indvars.iv1552, 4
  %exitcond1556.not.3 = icmp eq i64 %indvars.iv.next1553.3, %wide.trip.count1555
  br i1 %exitcond1556.not.3, label %.loopexit, label %.lr.ph1422, !llvm.loop !71

1507:                                             ; preds = %._crit_edge1402
  %1508 = add nsw i32 %1438, -1
  %1509 = icmp slt i32 %1439, %1508
  br i1 %1509, label %1510, label %1540

1510:                                             ; preds = %1507
  %1511 = xor i32 %1439, -1
  %1512 = add i32 %1438, %1511
  store i32 %1512, ptr %20, align 4, !tbaa !5
  %1513 = add nsw i32 %1439, 2
  %1514 = mul nsw i32 %1513, %39
  %1515 = sext i32 %1514 to i64
  %gep1447 = getelementptr double, ptr %invariant.gep1442, i64 %1515
  %1516 = add nsw i32 %1513, %1438
  %1517 = sext i32 %1516 to i64
  %1518 = getelementptr inbounds double, ptr %45, i64 %1517
  %1519 = add nsw i32 %1438, %1439
  %1520 = sext i32 %1519 to i64
  %1521 = getelementptr inbounds double, ptr %45, i64 %1520
  %1522 = mul nsw i32 %1439, %39
  %1523 = sext i32 %1522 to i64
  %gep1449 = getelementptr double, ptr %invariant.gep1442, i64 %1523
  call void @dgemv_(ptr noundef nonnull @.str.8, ptr noundef nonnull %3, ptr noundef nonnull %20, ptr noundef nonnull @c_b22, ptr noundef %gep1447, ptr noundef nonnull %7, ptr noundef nonnull %1518, ptr noundef nonnull @c__1, ptr noundef nonnull %1521, ptr noundef %gep1449, ptr noundef nonnull @c__1) #6
  %1524 = load i32, ptr %3, align 4, !tbaa !5
  %1525 = load i32, ptr %31, align 4, !tbaa !5
  %1526 = xor i32 %1525, -1
  %1527 = add i32 %1524, %1526
  store i32 %1527, ptr %20, align 4, !tbaa !5
  %1528 = add nsw i32 %1525, 2
  %1529 = mul nsw i32 %1528, %39
  %1530 = sext i32 %1529 to i64
  %gep1451 = getelementptr double, ptr %invariant.gep1442, i64 %1530
  %1531 = add nsw i32 %1528, %160
  %1532 = sext i32 %1531 to i64
  %1533 = getelementptr inbounds double, ptr %45, i64 %1532
  %1534 = add nsw i32 %1525, 1
  %1535 = add nsw i32 %1534, %160
  %1536 = sext i32 %1535 to i64
  %1537 = getelementptr inbounds double, ptr %45, i64 %1536
  %1538 = mul nsw i32 %1534, %39
  %1539 = sext i32 %1538 to i64
  %gep1453 = getelementptr double, ptr %invariant.gep1442, i64 %1539
  call void @dgemv_(ptr noundef nonnull @.str.8, ptr noundef nonnull %3, ptr noundef nonnull %20, ptr noundef nonnull @c_b22, ptr noundef %gep1451, ptr noundef nonnull %7, ptr noundef nonnull %1533, ptr noundef nonnull @c__1, ptr noundef nonnull %1537, ptr noundef %gep1453, ptr noundef nonnull @c__1) #6
  br label %1553

1540:                                             ; preds = %1507
  %1541 = add nsw i32 %1438, %1439
  %1542 = sext i32 %1541 to i64
  %1543 = getelementptr inbounds double, ptr %45, i64 %1542
  %1544 = mul nsw i32 %1439, %39
  %1545 = sext i32 %1544 to i64
  %gep1443 = getelementptr double, ptr %invariant.gep1442, i64 %1545
  call void @dscal_(ptr noundef nonnull %3, ptr noundef nonnull %1543, ptr noundef %gep1443, ptr noundef nonnull @c__1) #6
  %1546 = load i32, ptr %31, align 4, !tbaa !5
  %1547 = add nsw i32 %1546, 1
  %1548 = add nsw i32 %1547, %160
  %1549 = sext i32 %1548 to i64
  %1550 = getelementptr inbounds double, ptr %45, i64 %1549
  %1551 = mul nsw i32 %1547, %39
  %1552 = sext i32 %1551 to i64
  %gep1445 = getelementptr double, ptr %invariant.gep1442, i64 %1552
  call void @dscal_(ptr noundef nonnull %3, ptr noundef nonnull %1550, ptr noundef %gep1445, ptr noundef nonnull @c__1) #6
  br label %1553

1553:                                             ; preds = %1540, %1510
  %1554 = load i32, ptr %3, align 4, !tbaa !5
  store i32 %1554, ptr %20, align 4, !tbaa !5
  %.not11381403 = icmp slt i32 %1554, 1
  %.pre1585 = load i32, ptr %31, align 4, !tbaa !5
  %.pre1599 = mul nsw i32 %.pre1585, %39
  br i1 %.not11381403, label %._crit_edge1596, label %.lr.ph1407

._crit_edge1596:                                  ; preds = %1553
  %.pre1601 = sext i32 %.pre1599 to i64
  br label %1572

.lr.ph1407:                                       ; preds = %1553
  %1555 = add nsw i32 %.pre1585, 1
  %1556 = mul nsw i32 %1555, %39
  %1557 = sext i32 %.pre1599 to i64
  %1558 = sext i32 %1556 to i64
  %1559 = add nuw i32 %1554, 1
  %wide.trip.count1541 = zext i32 %1559 to i64
  %invariant.gep1685 = getelementptr double, ptr %41, i64 %1557
  %invariant.gep1687 = getelementptr double, ptr %41, i64 %1558
  br label %1560

1560:                                             ; preds = %.lr.ph1407, %1560
  %indvars.iv1538 = phi i64 [ 1, %.lr.ph1407 ], [ %indvars.iv.next1539, %1560 ]
  %.311011404 = phi double [ 0.000000e+00, %.lr.ph1407 ], [ %1571, %1560 ]
  %gep1686 = getelementptr double, ptr %invariant.gep1685, i64 %indvars.iv1538
  %1561 = load double, ptr %gep1686, align 8, !tbaa !9
  %1562 = fcmp oge double %1561, 0.000000e+00
  %1563 = fneg double %1561
  %1564 = select i1 %1562, double %1561, double %1563
  %gep1688 = getelementptr double, ptr %invariant.gep1687, i64 %indvars.iv1538
  %1565 = load double, ptr %gep1688, align 8, !tbaa !9
  %1566 = fcmp oge double %1565, 0.000000e+00
  %1567 = fneg double %1565
  %1568 = select i1 %1566, double %1565, double %1567
  %1569 = fadd double %1564, %1568
  %1570 = fcmp oge double %.311011404, %1569
  %1571 = select i1 %1570, double %.311011404, double %1569
  %indvars.iv.next1539 = add nuw nsw i64 %indvars.iv1538, 1
  %exitcond1542.not = icmp eq i64 %indvars.iv.next1539, %wide.trip.count1541
  br i1 %exitcond1542.not, label %._crit_edge1408, label %1560, !llvm.loop !72

._crit_edge1408:                                  ; preds = %1560
  store double %1561, ptr %22, align 8, !tbaa !9
  br label %1572

1572:                                             ; preds = %._crit_edge1596, %._crit_edge1408
  %.pre-phi1602 = phi i64 [ %.pre1601, %._crit_edge1596 ], [ %1557, %._crit_edge1408 ]
  %.31101.lcssa = phi double [ 0.000000e+00, %._crit_edge1596 ], [ %1571, %._crit_edge1408 ]
  %1573 = fdiv double 1.000000e+00, %.31101.lcssa
  store double %1573, ptr %29, align 8, !tbaa !9
  %gep1455 = getelementptr double, ptr %invariant.gep1442, i64 %.pre-phi1602
  call void @dscal_(ptr noundef nonnull %3, ptr noundef nonnull %29, ptr noundef %gep1455, ptr noundef nonnull @c__1) #6
  %1574 = load i32, ptr %31, align 4, !tbaa !5
  %1575 = add nsw i32 %1574, 1
  %1576 = mul nsw i32 %1575, %39
  %1577 = sext i32 %1576 to i64
  %gep1457 = getelementptr double, ptr %invariant.gep1442, i64 %1577
  call void @dscal_(ptr noundef nonnull %3, ptr noundef nonnull %29, ptr noundef %gep1457, ptr noundef nonnull @c__1) #6
  br label %.loopexit

.loopexit:                                        ; preds = %.lr.ph1422.prol.loopexit, %.lr.ph1422, %middle.block1820, %.lr.ph1441.preheader, %1479, %1014, %1069, %1572
  %spec.select1162.v = phi i32 [ 1, %1069 ], [ 2, %1572 ], [ 1, %1014 ], [ 2, %1479 ], [ 1, %.lr.ph1441.preheader ], [ 2, %middle.block1820 ], [ 2, %.lr.ph1422 ], [ 2, %.lr.ph1422.prol.loopexit ]
  %spec.select1162 = add nsw i32 %spec.select1162.v, %.21469
  %1578 = icmp eq i32 %.4, -1
  br i1 %1578, label %.thread1231, label %.thread1225

.thread1225:                                      ; preds = %767, %.loopexit
  %.31223 = phi i32 [ %spec.select1162, %.loopexit ], [ %.21469, %767 ]
  %1579 = icmp eq i32 %.4, 1
  %spec.select1240 = select i1 %1579, i32 -1, i32 %.4
  br label %.thread1231

.thread1231:                                      ; preds = %.thread1225, %.loopexit, %752
  %.312231234 = phi i32 [ %.21469, %752 ], [ %spec.select1162, %.loopexit ], [ %.31223, %.thread1225 ]
  %1580 = phi i32 [ 0, %752 ], [ 0, %.loopexit ], [ %spec.select1240, %.thread1225 ]
  %1581 = load i32, ptr %31, align 4, !tbaa !5
  %1582 = add nsw i32 %1581, 1
  store i32 %1582, ptr %31, align 4, !tbaa !5
  %1583 = load i32, ptr %19, align 4, !tbaa !5
  %.not1129.not = icmp slt i32 %1581, %1583
  br i1 %.not1129.not, label %752, label %.loopexit1268, !llvm.loop !73

.loopexit1268:                                    ; preds = %.thread1231, %740, %.loopexit1272, %119, %.thread
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %34) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %33) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %32) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %31) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %30) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %29) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %28) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %23) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %21) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %20) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %19) #6
  ret void
}

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

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

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

declare double @dlamch_(ptr noundef) local_unnamed_addr #2

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

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

declare void @dlaln2_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, 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 #2

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

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

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

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

declare void @dgemv_(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 #2

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

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

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"double", !7, i64 0}
!11 = distinct !{!11, !12}
!12 = !{!"llvm.loop.mustprogress"}
!13 = distinct !{!13, !12}
!14 = distinct !{!14, !12}
!15 = distinct !{!15, !16}
!16 = !{!"llvm.loop.unroll.disable"}
!17 = distinct !{!17, !12, !18, !19}
!18 = !{!"llvm.loop.isvectorized", i32 1}
!19 = !{!"llvm.loop.unroll.runtime.disable"}
!20 = distinct !{!20, !12, !18}
!21 = distinct !{!21, !12}
!22 = !{!23}
!23 = distinct !{!23, !24}
!24 = distinct !{!24, !"LVerDomain"}
!25 = !{!26}
!26 = distinct !{!26, !24}
!27 = !{!28}
!28 = distinct !{!28, !24}
!29 = !{!30}
!30 = distinct !{!30, !24}
!31 = !{!32, !23, !28, !26, !33}
!32 = distinct !{!32, !24}
!33 = distinct !{!33, !24}
!34 = !{!33}
!35 = !{!32}
!36 = !{!23, !28, !26, !33}
!37 = distinct !{!37, !12, !18, !19}
!38 = distinct !{!38, !12, !18}
!39 = distinct !{!39, !12}
!40 = distinct !{!40, !12}
!41 = distinct !{!41, !12, !18, !19}
!42 = distinct !{!42, !16}
!43 = distinct !{!43, !12, !18}
!44 = distinct !{!44, !12}
!45 = distinct !{!45, !12}
!46 = distinct !{!46, !12, !18, !19}
!47 = distinct !{!47, !16}
!48 = distinct !{!48, !12, !18}
!49 = distinct !{!49, !12}
!50 = !{!51}
!51 = distinct !{!51, !52}
!52 = distinct !{!52, !"LVerDomain"}
!53 = !{!54}
!54 = distinct !{!54, !52}
!55 = !{!56}
!56 = distinct !{!56, !52}
!57 = !{!58}
!58 = distinct !{!58, !52}
!59 = !{!60, !51, !56, !54, !61}
!60 = distinct !{!60, !52}
!61 = distinct !{!61, !52}
!62 = !{!61}
!63 = !{!60}
!64 = !{!51, !56, !54, !61}
!65 = distinct !{!65, !12, !18, !19}
!66 = distinct !{!66, !12, !18}
!67 = distinct !{!67, !12}
!68 = distinct !{!68, !12}
!69 = distinct !{!69, !12, !18, !19}
!70 = distinct !{!70, !16}
!71 = distinct !{!71, !12, !18}
!72 = distinct !{!72, !12}
!73 = distinct !{!73, !12}


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