; LLVM IR from niuyishuai/PDCABB :: LAPACK_BLAS/LAPACK (dtgsen)

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

@.str = external hidden unnamed_addr constant [7 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [2 x i8], align 1
@c__1 = external hidden global i64, align 8
@.str.3 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [2 x i8], align 1
@c__2 = external hidden global i64, align 8
@c_b28 = external hidden global double, align 8

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

139:                                              ; preds = %25
  %140 = load ptr, ptr %50, align 8, !tbaa !5
  %141 = load i64, ptr %140, align 8, !tbaa !9
  %142 = icmp eq i64 %141, -1
  br label %143

143:                                              ; preds = %139, %25
  %144 = phi i1 [ true, %25 ], [ %142, %139 ]
  %145 = zext i1 %144 to i32
  %146 = sext i32 %145 to i64
  store i64 %146, ptr %87, align 8, !tbaa !9
  %147 = load ptr, ptr %27, align 8, !tbaa !5
  %148 = load i64, ptr %147, align 8, !tbaa !9
  %149 = icmp slt i64 %148, 0
  br i1 %149, label %154, label %150

150:                                              ; preds = %143
  %151 = load ptr, ptr %27, align 8, !tbaa !5
  %152 = load i64, ptr %151, align 8, !tbaa !9
  %153 = icmp sgt i64 %152, 5
  br i1 %153, label %154, label %156

154:                                              ; preds = %150, %143
  %155 = load ptr, ptr %51, align 8, !tbaa !5
  store i64 -1, ptr %155, align 8, !tbaa !9
  br label %229

156:                                              ; preds = %150
  %157 = load ptr, ptr %31, align 8, !tbaa !5
  %158 = load i64, ptr %157, align 8, !tbaa !9
  %159 = icmp slt i64 %158, 0
  br i1 %159, label %160, label %162

160:                                              ; preds = %156
  %161 = load ptr, ptr %51, align 8, !tbaa !5
  store i64 -5, ptr %161, align 8, !tbaa !9
  br label %228

162:                                              ; preds = %156
  %163 = load ptr, ptr %33, align 8, !tbaa !5
  %164 = load i64, ptr %163, align 8, !tbaa !9
  %165 = load ptr, ptr %31, align 8, !tbaa !5
  %166 = load i64, ptr %165, align 8, !tbaa !9
  %167 = icmp sge i64 1, %166
  br i1 %167, label %168, label %169

168:                                              ; preds = %162
  br label %172

169:                                              ; preds = %162
  %170 = load ptr, ptr %31, align 8, !tbaa !5
  %171 = load i64, ptr %170, align 8, !tbaa !9
  br label %172

172:                                              ; preds = %169, %168
  %173 = phi i64 [ 1, %168 ], [ %171, %169 ]
  %174 = icmp slt i64 %164, %173
  br i1 %174, label %175, label %177

175:                                              ; preds = %172
  %176 = load ptr, ptr %51, align 8, !tbaa !5
  store i64 -7, ptr %176, align 8, !tbaa !9
  br label %227

177:                                              ; preds = %172
  %178 = load ptr, ptr %35, align 8, !tbaa !5
  %179 = load i64, ptr %178, align 8, !tbaa !9
  %180 = load ptr, ptr %31, align 8, !tbaa !5
  %181 = load i64, ptr %180, align 8, !tbaa !9
  %182 = icmp sge i64 1, %181
  br i1 %182, label %183, label %184

183:                                              ; preds = %177
  br label %187

184:                                              ; preds = %177
  %185 = load ptr, ptr %31, align 8, !tbaa !5
  %186 = load i64, ptr %185, align 8, !tbaa !9
  br label %187

187:                                              ; preds = %184, %183
  %188 = phi i64 [ 1, %183 ], [ %186, %184 ]
  %189 = icmp slt i64 %179, %188
  br i1 %189, label %190, label %192

190:                                              ; preds = %187
  %191 = load ptr, ptr %51, align 8, !tbaa !5
  store i64 -9, ptr %191, align 8, !tbaa !9
  br label %226

192:                                              ; preds = %187
  %193 = load ptr, ptr %40, align 8, !tbaa !5
  %194 = load i64, ptr %193, align 8, !tbaa !9
  %195 = icmp slt i64 %194, 1
  br i1 %195, label %206, label %196

196:                                              ; preds = %192
  %197 = load ptr, ptr %28, align 8, !tbaa !5
  %198 = load i64, ptr %197, align 8, !tbaa !9
  %199 = icmp ne i64 %198, 0
  br i1 %199, label %200, label %208

200:                                              ; preds = %196
  %201 = load ptr, ptr %40, align 8, !tbaa !5
  %202 = load i64, ptr %201, align 8, !tbaa !9
  %203 = load ptr, ptr %31, align 8, !tbaa !5
  %204 = load i64, ptr %203, align 8, !tbaa !9
  %205 = icmp slt i64 %202, %204
  br i1 %205, label %206, label %208

206:                                              ; preds = %200, %192
  %207 = load ptr, ptr %51, align 8, !tbaa !5
  store i64 -14, ptr %207, align 8, !tbaa !9
  br label %225

208:                                              ; preds = %200, %196
  %209 = load ptr, ptr %42, align 8, !tbaa !5
  %210 = load i64, ptr %209, align 8, !tbaa !9
  %211 = icmp slt i64 %210, 1
  br i1 %211, label %222, label %212

212:                                              ; preds = %208
  %213 = load ptr, ptr %29, align 8, !tbaa !5
  %214 = load i64, ptr %213, align 8, !tbaa !9
  %215 = icmp ne i64 %214, 0
  br i1 %215, label %216, label %224

216:                                              ; preds = %212
  %217 = load ptr, ptr %42, align 8, !tbaa !5
  %218 = load i64, ptr %217, align 8, !tbaa !9
  %219 = load ptr, ptr %31, align 8, !tbaa !5
  %220 = load i64, ptr %219, align 8, !tbaa !9
  %221 = icmp slt i64 %218, %220
  br i1 %221, label %222, label %224

222:                                              ; preds = %216, %208
  %223 = load ptr, ptr %51, align 8, !tbaa !5
  store i64 -16, ptr %223, align 8, !tbaa !9
  br label %224

224:                                              ; preds = %222, %216, %212
  br label %225

225:                                              ; preds = %224, %206
  br label %226

226:                                              ; preds = %225, %190
  br label %227

227:                                              ; preds = %226, %175
  br label %228

228:                                              ; preds = %227, %160
  br label %229

229:                                              ; preds = %228, %154
  %230 = load ptr, ptr %51, align 8, !tbaa !5
  %231 = load i64, ptr %230, align 8, !tbaa !9
  %232 = icmp ne i64 %231, 0
  br i1 %232, label %233, label %238

233:                                              ; preds = %229
  %234 = load ptr, ptr %51, align 8, !tbaa !5
  %235 = load i64, ptr %234, align 8, !tbaa !9
  %236 = sub nsw i64 0, %235
  store i64 %236, ptr %60, align 8, !tbaa !9
  %237 = call i32 @xerbla_(ptr noundef @.str, ptr noundef %60)
  store i32 0, ptr %26, align 4
  store i32 1, ptr %88, align 4
  br label %1539

238:                                              ; preds = %229
  %239 = call double @dlamch_(ptr noundef @.str.1)
  store double %239, ptr %71, align 8, !tbaa !11
  %240 = call double @dlamch_(ptr noundef @.str.2)
  %241 = load double, ptr %71, align 8, !tbaa !11
  %242 = fdiv double %240, %241
  store double %242, ptr %86, align 8, !tbaa !11
  store i64 0, ptr %74, align 8, !tbaa !9
  %243 = load ptr, ptr %27, align 8, !tbaa !5
  %244 = load i64, ptr %243, align 8, !tbaa !9
  %245 = icmp eq i64 %244, 1
  br i1 %245, label %250, label %246

246:                                              ; preds = %238
  %247 = load ptr, ptr %27, align 8, !tbaa !5
  %248 = load i64, ptr %247, align 8, !tbaa !9
  %249 = icmp sge i64 %248, 4
  br label %250

250:                                              ; preds = %246, %238
  %251 = phi i1 [ true, %238 ], [ %249, %246 ]
  %252 = zext i1 %251 to i32
  %253 = sext i32 %252 to i64
  store i64 %253, ptr %80, align 8, !tbaa !9
  %254 = load ptr, ptr %27, align 8, !tbaa !5
  %255 = load i64, ptr %254, align 8, !tbaa !9
  %256 = icmp eq i64 %255, 2
  br i1 %256, label %261, label %257

257:                                              ; preds = %250
  %258 = load ptr, ptr %27, align 8, !tbaa !5
  %259 = load i64, ptr %258, align 8, !tbaa !9
  %260 = icmp eq i64 %259, 4
  br label %261

261:                                              ; preds = %257, %250
  %262 = phi i1 [ true, %250 ], [ %260, %257 ]
  %263 = zext i1 %262 to i32
  %264 = sext i32 %263 to i64
  store i64 %264, ptr %81, align 8, !tbaa !9
  %265 = load ptr, ptr %27, align 8, !tbaa !5
  %266 = load i64, ptr %265, align 8, !tbaa !9
  %267 = icmp eq i64 %266, 3
  br i1 %267, label %272, label %268

268:                                              ; preds = %261
  %269 = load ptr, ptr %27, align 8, !tbaa !5
  %270 = load i64, ptr %269, align 8, !tbaa !9
  %271 = icmp eq i64 %270, 5
  br label %272

272:                                              ; preds = %268, %261
  %273 = phi i1 [ true, %261 ], [ %271, %268 ]
  %274 = zext i1 %273 to i32
  %275 = sext i32 %274 to i64
  store i64 %275, ptr %82, align 8, !tbaa !9
  %276 = load i64, ptr %81, align 8, !tbaa !9
  %277 = icmp ne i64 %276, 0
  br i1 %277, label %281, label %278

278:                                              ; preds = %272
  %279 = load i64, ptr %82, align 8, !tbaa !9
  %280 = icmp ne i64 %279, 0
  br label %281

281:                                              ; preds = %278, %272
  %282 = phi i1 [ true, %272 ], [ %280, %278 ]
  %283 = zext i1 %282 to i32
  %284 = sext i32 %283 to i64
  store i64 %284, ptr %78, align 8, !tbaa !9
  %285 = load ptr, ptr %43, align 8, !tbaa !5
  store i64 0, ptr %285, align 8, !tbaa !9
  store i64 0, ptr %73, align 8, !tbaa !9
  %286 = load ptr, ptr %31, align 8, !tbaa !5
  %287 = load i64, ptr %286, align 8, !tbaa !9
  store i64 %287, ptr %60, align 8, !tbaa !9
  store i64 1, ptr %64, align 8, !tbaa !9
  br label %288

288:                                              ; preds = %356, %281
  %289 = load i64, ptr %64, align 8, !tbaa !9
  %290 = load i64, ptr %60, align 8, !tbaa !9
  %291 = icmp sle i64 %289, %290
  br i1 %291, label %292, label %359

292:                                              ; preds = %288
  %293 = load i64, ptr %73, align 8, !tbaa !9
  %294 = icmp ne i64 %293, 0
  br i1 %294, label %295, label %296

295:                                              ; preds = %292
  store i64 0, ptr %73, align 8, !tbaa !9
  br label %355

296:                                              ; preds = %292
  %297 = load i64, ptr %64, align 8, !tbaa !9
  %298 = load ptr, ptr %31, align 8, !tbaa !5
  %299 = load i64, ptr %298, align 8, !tbaa !9
  %300 = icmp slt i64 %297, %299
  br i1 %300, label %301, label %342

301:                                              ; preds = %296
  %302 = load ptr, ptr %32, align 8, !tbaa !5
  %303 = load i64, ptr %64, align 8, !tbaa !9
  %304 = add nsw i64 %303, 1
  %305 = load i64, ptr %64, align 8, !tbaa !9
  %306 = load i64, ptr %52, align 8, !tbaa !9
  %307 = mul nsw i64 %305, %306
  %308 = add nsw i64 %304, %307
  %309 = getelementptr inbounds double, ptr %302, i64 %308
  %310 = load double, ptr %309, align 8, !tbaa !11
  %311 = fcmp oeq double %310, 0.000000e+00
  br i1 %311, label %312, label %323

312:                                              ; preds = %301
  %313 = load ptr, ptr %30, align 8, !tbaa !5
  %314 = load i64, ptr %64, align 8, !tbaa !9
  %315 = getelementptr inbounds i64, ptr %313, i64 %314
  %316 = load i64, ptr %315, align 8, !tbaa !9
  %317 = icmp ne i64 %316, 0
  br i1 %317, label %318, label %322

318:                                              ; preds = %312
  %319 = load ptr, ptr %43, align 8, !tbaa !5
  %320 = load i64, ptr %319, align 8, !tbaa !9
  %321 = add nsw i64 %320, 1
  store i64 %321, ptr %319, align 8, !tbaa !9
  br label %322

322:                                              ; preds = %318, %312
  br label %341

323:                                              ; preds = %301
  store i64 1, ptr %73, align 8, !tbaa !9
  %324 = load ptr, ptr %30, align 8, !tbaa !5
  %325 = load i64, ptr %64, align 8, !tbaa !9
  %326 = getelementptr inbounds i64, ptr %324, i64 %325
  %327 = load i64, ptr %326, align 8, !tbaa !9
  %328 = icmp ne i64 %327, 0
  br i1 %328, label %336, label %329

329:                                              ; preds = %323
  %330 = load ptr, ptr %30, align 8, !tbaa !5
  %331 = load i64, ptr %64, align 8, !tbaa !9
  %332 = add nsw i64 %331, 1
  %333 = getelementptr inbounds i64, ptr %330, i64 %332
  %334 = load i64, ptr %333, align 8, !tbaa !9
  %335 = icmp ne i64 %334, 0
  br i1 %335, label %336, label %340

336:                                              ; preds = %329, %323
  %337 = load ptr, ptr %43, align 8, !tbaa !5
  %338 = load i64, ptr %337, align 8, !tbaa !9
  %339 = add nsw i64 %338, 2
  store i64 %339, ptr %337, align 8, !tbaa !9
  br label %340

340:                                              ; preds = %336, %329
  br label %341

341:                                              ; preds = %340, %322
  br label %354

342:                                              ; preds = %296
  %343 = load ptr, ptr %30, align 8, !tbaa !5
  %344 = load ptr, ptr %31, align 8, !tbaa !5
  %345 = load i64, ptr %344, align 8, !tbaa !9
  %346 = getelementptr inbounds i64, ptr %343, i64 %345
  %347 = load i64, ptr %346, align 8, !tbaa !9
  %348 = icmp ne i64 %347, 0
  br i1 %348, label %349, label %353

349:                                              ; preds = %342
  %350 = load ptr, ptr %43, align 8, !tbaa !5
  %351 = load i64, ptr %350, align 8, !tbaa !9
  %352 = add nsw i64 %351, 1
  store i64 %352, ptr %350, align 8, !tbaa !9
  br label %353

353:                                              ; preds = %349, %342
  br label %354

354:                                              ; preds = %353, %341
  br label %355

355:                                              ; preds = %354, %295
  br label %356

356:                                              ; preds = %355
  %357 = load i64, ptr %64, align 8, !tbaa !9
  %358 = add nsw i64 %357, 1
  store i64 %358, ptr %64, align 8, !tbaa !9
  br label %288, !llvm.loop !13

359:                                              ; preds = %288
  %360 = load ptr, ptr %27, align 8, !tbaa !5
  %361 = load i64, ptr %360, align 8, !tbaa !9
  %362 = icmp eq i64 %361, 1
  br i1 %362, label %371, label %363

363:                                              ; preds = %359
  %364 = load ptr, ptr %27, align 8, !tbaa !5
  %365 = load i64, ptr %364, align 8, !tbaa !9
  %366 = icmp eq i64 %365, 2
  br i1 %366, label %371, label %367

367:                                              ; preds = %363
  %368 = load ptr, ptr %27, align 8, !tbaa !5
  %369 = load i64, ptr %368, align 8, !tbaa !9
  %370 = icmp eq i64 %369, 4
  br i1 %370, label %371, label %415

371:                                              ; preds = %367, %363, %359
  store i64 1, ptr %60, align 8, !tbaa !9
  %372 = load ptr, ptr %31, align 8, !tbaa !5
  %373 = load i64, ptr %372, align 8, !tbaa !9
  %374 = shl i64 %373, 2
  %375 = add nsw i64 %374, 16
  store i64 %375, ptr %61, align 8, !tbaa !9
  %376 = load i64, ptr %60, align 8, !tbaa !9
  %377 = load i64, ptr %61, align 8, !tbaa !9
  %378 = icmp sge i64 %376, %377
  br i1 %378, label %379, label %381

379:                                              ; preds = %371
  %380 = load i64, ptr %60, align 8, !tbaa !9
  br label %383

381:                                              ; preds = %371
  %382 = load i64, ptr %61, align 8, !tbaa !9
  br label %383

383:                                              ; preds = %381, %379
  %384 = phi i64 [ %380, %379 ], [ %382, %381 ]
  store i64 %384, ptr %60, align 8, !tbaa !9
  %385 = load ptr, ptr %43, align 8, !tbaa !5
  %386 = load i64, ptr %385, align 8, !tbaa !9
  %387 = shl i64 %386, 1
  %388 = load ptr, ptr %31, align 8, !tbaa !5
  %389 = load i64, ptr %388, align 8, !tbaa !9
  %390 = load ptr, ptr %43, align 8, !tbaa !5
  %391 = load i64, ptr %390, align 8, !tbaa !9
  %392 = sub nsw i64 %389, %391
  %393 = mul nsw i64 %387, %392
  store i64 %393, ptr %61, align 8, !tbaa !9
  %394 = load i64, ptr %60, align 8, !tbaa !9
  %395 = load i64, ptr %61, align 8, !tbaa !9
  %396 = icmp sge i64 %394, %395
  br i1 %396, label %397, label %399

397:                                              ; preds = %383
  %398 = load i64, ptr %60, align 8, !tbaa !9
  br label %401

399:                                              ; preds = %383
  %400 = load i64, ptr %61, align 8, !tbaa !9
  br label %401

401:                                              ; preds = %399, %397
  %402 = phi i64 [ %398, %397 ], [ %400, %399 ]
  store i64 %402, ptr %79, align 8, !tbaa !9
  store i64 1, ptr %60, align 8, !tbaa !9
  %403 = load ptr, ptr %31, align 8, !tbaa !5
  %404 = load i64, ptr %403, align 8, !tbaa !9
  %405 = add nsw i64 %404, 6
  store i64 %405, ptr %61, align 8, !tbaa !9
  %406 = load i64, ptr %60, align 8, !tbaa !9
  %407 = load i64, ptr %61, align 8, !tbaa !9
  %408 = icmp sge i64 %406, %407
  br i1 %408, label %409, label %411

409:                                              ; preds = %401
  %410 = load i64, ptr %60, align 8, !tbaa !9
  br label %413

411:                                              ; preds = %401
  %412 = load i64, ptr %61, align 8, !tbaa !9
  br label %413

413:                                              ; preds = %411, %409
  %414 = phi i64 [ %410, %409 ], [ %412, %411 ]
  store i64 %414, ptr %85, align 8, !tbaa !9
  br label %500

415:                                              ; preds = %367
  %416 = load ptr, ptr %27, align 8, !tbaa !5
  %417 = load i64, ptr %416, align 8, !tbaa !9
  %418 = icmp eq i64 %417, 3
  br i1 %418, label %423, label %419

419:                                              ; preds = %415
  %420 = load ptr, ptr %27, align 8, !tbaa !5
  %421 = load i64, ptr %420, align 8, !tbaa !9
  %422 = icmp eq i64 %421, 5
  br i1 %422, label %423, label %485

423:                                              ; preds = %419, %415
  store i64 1, ptr %60, align 8, !tbaa !9
  %424 = load ptr, ptr %31, align 8, !tbaa !5
  %425 = load i64, ptr %424, align 8, !tbaa !9
  %426 = shl i64 %425, 2
  %427 = add nsw i64 %426, 16
  store i64 %427, ptr %61, align 8, !tbaa !9
  %428 = load i64, ptr %60, align 8, !tbaa !9
  %429 = load i64, ptr %61, align 8, !tbaa !9
  %430 = icmp sge i64 %428, %429
  br i1 %430, label %431, label %433

431:                                              ; preds = %423
  %432 = load i64, ptr %60, align 8, !tbaa !9
  br label %435

433:                                              ; preds = %423
  %434 = load i64, ptr %61, align 8, !tbaa !9
  br label %435

435:                                              ; preds = %433, %431
  %436 = phi i64 [ %432, %431 ], [ %434, %433 ]
  store i64 %436, ptr %60, align 8, !tbaa !9
  %437 = load ptr, ptr %43, align 8, !tbaa !5
  %438 = load i64, ptr %437, align 8, !tbaa !9
  %439 = shl i64 %438, 2
  %440 = load ptr, ptr %31, align 8, !tbaa !5
  %441 = load i64, ptr %440, align 8, !tbaa !9
  %442 = load ptr, ptr %43, align 8, !tbaa !5
  %443 = load i64, ptr %442, align 8, !tbaa !9
  %444 = sub nsw i64 %441, %443
  %445 = mul nsw i64 %439, %444
  store i64 %445, ptr %61, align 8, !tbaa !9
  %446 = load i64, ptr %60, align 8, !tbaa !9
  %447 = load i64, ptr %61, align 8, !tbaa !9
  %448 = icmp sge i64 %446, %447
  br i1 %448, label %449, label %451

449:                                              ; preds = %435
  %450 = load i64, ptr %60, align 8, !tbaa !9
  br label %453

451:                                              ; preds = %435
  %452 = load i64, ptr %61, align 8, !tbaa !9
  br label %453

453:                                              ; preds = %451, %449
  %454 = phi i64 [ %450, %449 ], [ %452, %451 ]
  store i64 %454, ptr %79, align 8, !tbaa !9
  store i64 1, ptr %60, align 8, !tbaa !9
  %455 = load ptr, ptr %43, align 8, !tbaa !5
  %456 = load i64, ptr %455, align 8, !tbaa !9
  %457 = shl i64 %456, 1
  %458 = load ptr, ptr %31, align 8, !tbaa !5
  %459 = load i64, ptr %458, align 8, !tbaa !9
  %460 = load ptr, ptr %43, align 8, !tbaa !5
  %461 = load i64, ptr %460, align 8, !tbaa !9
  %462 = sub nsw i64 %459, %461
  %463 = mul nsw i64 %457, %462
  store i64 %463, ptr %61, align 8, !tbaa !9
  %464 = load i64, ptr %60, align 8, !tbaa !9
  %465 = load i64, ptr %61, align 8, !tbaa !9
  %466 = icmp sge i64 %464, %465
  br i1 %466, label %467, label %469

467:                                              ; preds = %453
  %468 = load i64, ptr %60, align 8, !tbaa !9
  br label %471

469:                                              ; preds = %453
  %470 = load i64, ptr %61, align 8, !tbaa !9
  br label %471

471:                                              ; preds = %469, %467
  %472 = phi i64 [ %468, %467 ], [ %470, %469 ]
  store i64 %472, ptr %60, align 8, !tbaa !9
  %473 = load ptr, ptr %31, align 8, !tbaa !5
  %474 = load i64, ptr %473, align 8, !tbaa !9
  %475 = add nsw i64 %474, 6
  store i64 %475, ptr %61, align 8, !tbaa !9
  %476 = load i64, ptr %60, align 8, !tbaa !9
  %477 = load i64, ptr %61, align 8, !tbaa !9
  %478 = icmp sge i64 %476, %477
  br i1 %478, label %479, label %481

479:                                              ; preds = %471
  %480 = load i64, ptr %60, align 8, !tbaa !9
  br label %483

481:                                              ; preds = %471
  %482 = load i64, ptr %61, align 8, !tbaa !9
  br label %483

483:                                              ; preds = %481, %479
  %484 = phi i64 [ %480, %479 ], [ %482, %481 ]
  store i64 %484, ptr %85, align 8, !tbaa !9
  br label %499

485:                                              ; preds = %419
  store i64 1, ptr %60, align 8, !tbaa !9
  %486 = load ptr, ptr %31, align 8, !tbaa !5
  %487 = load i64, ptr %486, align 8, !tbaa !9
  %488 = shl i64 %487, 2
  %489 = add nsw i64 %488, 16
  store i64 %489, ptr %61, align 8, !tbaa !9
  %490 = load i64, ptr %60, align 8, !tbaa !9
  %491 = load i64, ptr %61, align 8, !tbaa !9
  %492 = icmp sge i64 %490, %491
  br i1 %492, label %493, label %495

493:                                              ; preds = %485
  %494 = load i64, ptr %60, align 8, !tbaa !9
  br label %497

495:                                              ; preds = %485
  %496 = load i64, ptr %61, align 8, !tbaa !9
  br label %497

497:                                              ; preds = %495, %493
  %498 = phi i64 [ %494, %493 ], [ %496, %495 ]
  store i64 %498, ptr %79, align 8, !tbaa !9
  store i64 1, ptr %85, align 8, !tbaa !9
  br label %499

499:                                              ; preds = %497, %483
  br label %500

500:                                              ; preds = %499, %413
  %501 = load i64, ptr %79, align 8, !tbaa !9
  %502 = sitofp i64 %501 to double
  %503 = load ptr, ptr %47, align 8, !tbaa !5
  %504 = getelementptr inbounds double, ptr %503, i64 1
  store double %502, ptr %504, align 8, !tbaa !11
  %505 = load i64, ptr %85, align 8, !tbaa !9
  %506 = load ptr, ptr %49, align 8, !tbaa !5
  %507 = getelementptr inbounds i64, ptr %506, i64 1
  store i64 %505, ptr %507, align 8, !tbaa !9
  %508 = load ptr, ptr %48, align 8, !tbaa !5
  %509 = load i64, ptr %508, align 8, !tbaa !9
  %510 = load i64, ptr %79, align 8, !tbaa !9
  %511 = icmp slt i64 %509, %510
  br i1 %511, label %512, label %517

512:                                              ; preds = %500
  %513 = load i64, ptr %87, align 8, !tbaa !9
  %514 = icmp ne i64 %513, 0
  br i1 %514, label %517, label %515

515:                                              ; preds = %512
  %516 = load ptr, ptr %51, align 8, !tbaa !5
  store i64 -22, ptr %516, align 8, !tbaa !9
  br label %528

517:                                              ; preds = %512, %500
  %518 = load ptr, ptr %50, align 8, !tbaa !5
  %519 = load i64, ptr %518, align 8, !tbaa !9
  %520 = load i64, ptr %85, align 8, !tbaa !9
  %521 = icmp slt i64 %519, %520
  br i1 %521, label %522, label %527

522:                                              ; preds = %517
  %523 = load i64, ptr %87, align 8, !tbaa !9
  %524 = icmp ne i64 %523, 0
  br i1 %524, label %527, label %525

525:                                              ; preds = %522
  %526 = load ptr, ptr %51, align 8, !tbaa !5
  store i64 -24, ptr %526, align 8, !tbaa !9
  br label %527

527:                                              ; preds = %525, %522, %517
  br label %528

528:                                              ; preds = %527, %515
  %529 = load ptr, ptr %51, align 8, !tbaa !5
  %530 = load i64, ptr %529, align 8, !tbaa !9
  %531 = icmp ne i64 %530, 0
  br i1 %531, label %532, label %537

532:                                              ; preds = %528
  %533 = load ptr, ptr %51, align 8, !tbaa !5
  %534 = load i64, ptr %533, align 8, !tbaa !9
  %535 = sub nsw i64 0, %534
  store i64 %535, ptr %60, align 8, !tbaa !9
  %536 = call i32 @xerbla_(ptr noundef @.str, ptr noundef %60)
  store i32 0, ptr %26, align 4
  store i32 1, ptr %88, align 4
  br label %1539

537:                                              ; preds = %528
  %538 = load i64, ptr %87, align 8, !tbaa !9
  %539 = icmp ne i64 %538, 0
  br i1 %539, label %540, label %541

540:                                              ; preds = %537
  store i32 0, ptr %26, align 4
  store i32 1, ptr %88, align 4
  br label %1539

541:                                              ; preds = %537
  br label %542

542:                                              ; preds = %541
  %543 = load ptr, ptr %43, align 8, !tbaa !5
  %544 = load i64, ptr %543, align 8, !tbaa !9
  %545 = load ptr, ptr %31, align 8, !tbaa !5
  %546 = load i64, ptr %545, align 8, !tbaa !9
  %547 = icmp eq i64 %544, %546
  br i1 %547, label %552, label %548

548:                                              ; preds = %542
  %549 = load ptr, ptr %43, align 8, !tbaa !5
  %550 = load i64, ptr %549, align 8, !tbaa !9
  %551 = icmp eq i64 %550, 0
  br i1 %551, label %552, label %601

552:                                              ; preds = %548, %542
  %553 = load i64, ptr %80, align 8, !tbaa !9
  %554 = icmp ne i64 %553, 0
  br i1 %554, label %555, label %558

555:                                              ; preds = %552
  %556 = load ptr, ptr %44, align 8, !tbaa !5
  store double 1.000000e+00, ptr %556, align 8, !tbaa !11
  %557 = load ptr, ptr %45, align 8, !tbaa !5
  store double 1.000000e+00, ptr %557, align 8, !tbaa !11
  br label %558

558:                                              ; preds = %555, %552
  %559 = load i64, ptr %78, align 8, !tbaa !9
  %560 = icmp ne i64 %559, 0
  br i1 %560, label %561, label %600

561:                                              ; preds = %558
  store double 0.000000e+00, ptr %83, align 8, !tbaa !11
  store double 1.000000e+00, ptr %75, align 8, !tbaa !11
  %562 = load ptr, ptr %31, align 8, !tbaa !5
  %563 = load i64, ptr %562, align 8, !tbaa !9
  store i64 %563, ptr %60, align 8, !tbaa !9
  store i64 1, ptr %63, align 8, !tbaa !9
  br label %564

564:                                              ; preds = %585, %561
  %565 = load i64, ptr %63, align 8, !tbaa !9
  %566 = load i64, ptr %60, align 8, !tbaa !9
  %567 = icmp sle i64 %565, %566
  br i1 %567, label %568, label %588

568:                                              ; preds = %564
  %569 = load ptr, ptr %31, align 8, !tbaa !5
  %570 = load ptr, ptr %32, align 8, !tbaa !5
  %571 = load i64, ptr %63, align 8, !tbaa !9
  %572 = load i64, ptr %52, align 8, !tbaa !9
  %573 = mul nsw i64 %571, %572
  %574 = add nsw i64 %573, 1
  %575 = getelementptr inbounds double, ptr %570, i64 %574
  %576 = call i32 @dlassq_(ptr noundef %569, ptr noundef %575, ptr noundef @c__1, ptr noundef %83, ptr noundef %75)
  %577 = load ptr, ptr %31, align 8, !tbaa !5
  %578 = load ptr, ptr %34, align 8, !tbaa !5
  %579 = load i64, ptr %63, align 8, !tbaa !9
  %580 = load i64, ptr %54, align 8, !tbaa !9
  %581 = mul nsw i64 %579, %580
  %582 = add nsw i64 %581, 1
  %583 = getelementptr inbounds double, ptr %578, i64 %582
  %584 = call i32 @dlassq_(ptr noundef %577, ptr noundef %583, ptr noundef @c__1, ptr noundef %83, ptr noundef %75)
  br label %585

585:                                              ; preds = %568
  %586 = load i64, ptr %63, align 8, !tbaa !9
  %587 = add nsw i64 %586, 1
  store i64 %587, ptr %63, align 8, !tbaa !9
  br label %564, !llvm.loop !15

588:                                              ; preds = %564
  %589 = load double, ptr %83, align 8, !tbaa !11
  %590 = load double, ptr %75, align 8, !tbaa !11
  %591 = call double @sqrt(double noundef %590) #4
  %592 = fmul double %589, %591
  %593 = load ptr, ptr %46, align 8, !tbaa !5
  %594 = getelementptr inbounds double, ptr %593, i64 1
  store double %592, ptr %594, align 8, !tbaa !11
  %595 = load ptr, ptr %46, align 8, !tbaa !5
  %596 = getelementptr inbounds double, ptr %595, i64 1
  %597 = load double, ptr %596, align 8, !tbaa !11
  %598 = load ptr, ptr %46, align 8, !tbaa !5
  %599 = getelementptr inbounds double, ptr %598, i64 2
  store double %597, ptr %599, align 8, !tbaa !11
  br label %600

600:                                              ; preds = %588, %558
  br label %1270

601:                                              ; preds = %548
  store i64 0, ptr %68, align 8, !tbaa !9
  store i64 0, ptr %73, align 8, !tbaa !9
  %602 = load ptr, ptr %31, align 8, !tbaa !5
  %603 = load i64, ptr %602, align 8, !tbaa !9
  store i64 %603, ptr %60, align 8, !tbaa !9
  store i64 1, ptr %64, align 8, !tbaa !9
  br label %604

604:                                              ; preds = %709, %601
  %605 = load i64, ptr %64, align 8, !tbaa !9
  %606 = load i64, ptr %60, align 8, !tbaa !9
  %607 = icmp sle i64 %605, %606
  br i1 %607, label %608, label %712

608:                                              ; preds = %604
  %609 = load i64, ptr %73, align 8, !tbaa !9
  %610 = icmp ne i64 %609, 0
  br i1 %610, label %611, label %612

611:                                              ; preds = %608
  store i64 0, ptr %73, align 8, !tbaa !9
  br label %708

612:                                              ; preds = %608
  %613 = load ptr, ptr %30, align 8, !tbaa !5
  %614 = load i64, ptr %64, align 8, !tbaa !9
  %615 = getelementptr inbounds i64, ptr %613, i64 %614
  %616 = load i64, ptr %615, align 8, !tbaa !9
  store i64 %616, ptr %76, align 8, !tbaa !9
  %617 = load i64, ptr %64, align 8, !tbaa !9
  %618 = load ptr, ptr %31, align 8, !tbaa !5
  %619 = load i64, ptr %618, align 8, !tbaa !9
  %620 = icmp slt i64 %617, %619
  br i1 %620, label %621, label %647

621:                                              ; preds = %612
  %622 = load ptr, ptr %32, align 8, !tbaa !5
  %623 = load i64, ptr %64, align 8, !tbaa !9
  %624 = add nsw i64 %623, 1
  %625 = load i64, ptr %64, align 8, !tbaa !9
  %626 = load i64, ptr %52, align 8, !tbaa !9
  %627 = mul nsw i64 %625, %626
  %628 = add nsw i64 %624, %627
  %629 = getelementptr inbounds double, ptr %622, i64 %628
  %630 = load double, ptr %629, align 8, !tbaa !11
  %631 = fcmp une double %630, 0.000000e+00
  br i1 %631, label %632, label %646

632:                                              ; preds = %621
  store i64 1, ptr %73, align 8, !tbaa !9
  %633 = load i64, ptr %76, align 8, !tbaa !9
  %634 = icmp ne i64 %633, 0
  br i1 %634, label %642, label %635

635:                                              ; preds = %632
  %636 = load ptr, ptr %30, align 8, !tbaa !5
  %637 = load i64, ptr %64, align 8, !tbaa !9
  %638 = add nsw i64 %637, 1
  %639 = getelementptr inbounds i64, ptr %636, i64 %638
  %640 = load i64, ptr %639, align 8, !tbaa !9
  %641 = icmp ne i64 %640, 0
  br label %642

642:                                              ; preds = %635, %632
  %643 = phi i1 [ true, %632 ], [ %641, %635 ]
  %644 = zext i1 %643 to i32
  %645 = sext i32 %644 to i64
  store i64 %645, ptr %76, align 8, !tbaa !9
  br label %646

646:                                              ; preds = %642, %621
  br label %647

647:                                              ; preds = %646, %612
  %648 = load i64, ptr %76, align 8, !tbaa !9
  %649 = icmp ne i64 %648, 0
  br i1 %649, label %650, label %707

650:                                              ; preds = %647
  %651 = load i64, ptr %68, align 8, !tbaa !9
  %652 = add nsw i64 %651, 1
  store i64 %652, ptr %68, align 8, !tbaa !9
  %653 = load i64, ptr %64, align 8, !tbaa !9
  store i64 %653, ptr %67, align 8, !tbaa !9
  %654 = load i64, ptr %64, align 8, !tbaa !9
  %655 = load i64, ptr %68, align 8, !tbaa !9
  %656 = icmp ne i64 %654, %655
  br i1 %656, label %657, label %681

657:                                              ; preds = %650
  %658 = load ptr, ptr %28, align 8, !tbaa !5
  %659 = load ptr, ptr %29, align 8, !tbaa !5
  %660 = load ptr, ptr %31, align 8, !tbaa !5
  %661 = load ptr, ptr %32, align 8, !tbaa !5
  %662 = load i64, ptr %53, align 8, !tbaa !9
  %663 = getelementptr inbounds double, ptr %661, i64 %662
  %664 = load ptr, ptr %33, align 8, !tbaa !5
  %665 = load ptr, ptr %34, align 8, !tbaa !5
  %666 = load i64, ptr %55, align 8, !tbaa !9
  %667 = getelementptr inbounds double, ptr %665, i64 %666
  %668 = load ptr, ptr %35, align 8, !tbaa !5
  %669 = load ptr, ptr %39, align 8, !tbaa !5
  %670 = load i64, ptr %57, align 8, !tbaa !9
  %671 = getelementptr inbounds double, ptr %669, i64 %670
  %672 = load ptr, ptr %40, align 8, !tbaa !5
  %673 = load ptr, ptr %41, align 8, !tbaa !5
  %674 = load i64, ptr %59, align 8, !tbaa !9
  %675 = getelementptr inbounds double, ptr %673, i64 %674
  %676 = load ptr, ptr %42, align 8, !tbaa !5
  %677 = load ptr, ptr %47, align 8, !tbaa !5
  %678 = getelementptr inbounds double, ptr %677, i64 1
  %679 = load ptr, ptr %48, align 8, !tbaa !5
  %680 = call i32 @dtgexc_(ptr noundef %658, ptr noundef %659, ptr noundef %660, ptr noundef %663, ptr noundef %664, ptr noundef %667, ptr noundef %668, ptr noundef %671, ptr noundef %672, ptr noundef %675, ptr noundef %676, ptr noundef %67, ptr noundef %68, ptr noundef %678, ptr noundef %679, ptr noundef %74)
  br label %681

681:                                              ; preds = %657, %650
  %682 = load i64, ptr %74, align 8, !tbaa !9
  %683 = icmp sgt i64 %682, 0
  br i1 %683, label %684, label %700

684:                                              ; preds = %681
  %685 = load ptr, ptr %51, align 8, !tbaa !5
  store i64 1, ptr %685, align 8, !tbaa !9
  %686 = load i64, ptr %80, align 8, !tbaa !9
  %687 = icmp ne i64 %686, 0
  br i1 %687, label %688, label %691

688:                                              ; preds = %684
  %689 = load ptr, ptr %44, align 8, !tbaa !5
  store double 0.000000e+00, ptr %689, align 8, !tbaa !11
  %690 = load ptr, ptr %45, align 8, !tbaa !5
  store double 0.000000e+00, ptr %690, align 8, !tbaa !11
  br label %691

691:                                              ; preds = %688, %684
  %692 = load i64, ptr %78, align 8, !tbaa !9
  %693 = icmp ne i64 %692, 0
  br i1 %693, label %694, label %699

694:                                              ; preds = %691
  %695 = load ptr, ptr %46, align 8, !tbaa !5
  %696 = getelementptr inbounds double, ptr %695, i64 1
  store double 0.000000e+00, ptr %696, align 8, !tbaa !11
  %697 = load ptr, ptr %46, align 8, !tbaa !5
  %698 = getelementptr inbounds double, ptr %697, i64 2
  store double 0.000000e+00, ptr %698, align 8, !tbaa !11
  br label %699

699:                                              ; preds = %694, %691
  br label %1270

700:                                              ; preds = %681
  %701 = load i64, ptr %73, align 8, !tbaa !9
  %702 = icmp ne i64 %701, 0
  br i1 %702, label %703, label %706

703:                                              ; preds = %700
  %704 = load i64, ptr %68, align 8, !tbaa !9
  %705 = add nsw i64 %704, 1
  store i64 %705, ptr %68, align 8, !tbaa !9
  br label %706

706:                                              ; preds = %703, %700
  br label %707

707:                                              ; preds = %706, %647
  br label %708

708:                                              ; preds = %707, %611
  br label %709

709:                                              ; preds = %708
  %710 = load i64, ptr %64, align 8, !tbaa !9
  %711 = add nsw i64 %710, 1
  store i64 %711, ptr %64, align 8, !tbaa !9
  br label %604, !llvm.loop !16

712:                                              ; preds = %604
  %713 = load i64, ptr %80, align 8, !tbaa !9
  %714 = icmp ne i64 %713, 0
  br i1 %714, label %715, label %874

715:                                              ; preds = %712
  %716 = load ptr, ptr %43, align 8, !tbaa !5
  %717 = load i64, ptr %716, align 8, !tbaa !9
  store i64 %717, ptr %65, align 8, !tbaa !9
  %718 = load ptr, ptr %31, align 8, !tbaa !5
  %719 = load i64, ptr %718, align 8, !tbaa !9
  %720 = load ptr, ptr %43, align 8, !tbaa !5
  %721 = load i64, ptr %720, align 8, !tbaa !9
  %722 = sub nsw i64 %719, %721
  store i64 %722, ptr %66, align 8, !tbaa !9
  %723 = load i64, ptr %65, align 8, !tbaa !9
  %724 = add nsw i64 %723, 1
  store i64 %724, ptr %63, align 8, !tbaa !9
  store i64 0, ptr %70, align 8, !tbaa !9
  %725 = load ptr, ptr %32, align 8, !tbaa !5
  %726 = load i64, ptr %63, align 8, !tbaa !9
  %727 = load i64, ptr %52, align 8, !tbaa !9
  %728 = mul nsw i64 %726, %727
  %729 = add nsw i64 %728, 1
  %730 = getelementptr inbounds double, ptr %725, i64 %729
  %731 = load ptr, ptr %33, align 8, !tbaa !5
  %732 = load ptr, ptr %47, align 8, !tbaa !5
  %733 = getelementptr inbounds double, ptr %732, i64 1
  %734 = call i32 @dlacpy_(ptr noundef @.str.3, ptr noundef %65, ptr noundef %66, ptr noundef %730, ptr noundef %731, ptr noundef %733, ptr noundef %65)
  %735 = load ptr, ptr %34, align 8, !tbaa !5
  %736 = load i64, ptr %63, align 8, !tbaa !9
  %737 = load i64, ptr %54, align 8, !tbaa !9
  %738 = mul nsw i64 %736, %737
  %739 = add nsw i64 %738, 1
  %740 = getelementptr inbounds double, ptr %735, i64 %739
  %741 = load ptr, ptr %35, align 8, !tbaa !5
  %742 = load ptr, ptr %47, align 8, !tbaa !5
  %743 = load i64, ptr %65, align 8, !tbaa !9
  %744 = load i64, ptr %66, align 8, !tbaa !9
  %745 = mul nsw i64 %743, %744
  %746 = add nsw i64 %745, 1
  %747 = getelementptr inbounds double, ptr %742, i64 %746
  %748 = call i32 @dlacpy_(ptr noundef @.str.3, ptr noundef %65, ptr noundef %66, ptr noundef %740, ptr noundef %741, ptr noundef %747, ptr noundef %65)
  %749 = load ptr, ptr %48, align 8, !tbaa !5
  %750 = load i64, ptr %749, align 8, !tbaa !9
  %751 = load i64, ptr %65, align 8, !tbaa !9
  %752 = shl i64 %751, 1
  %753 = load i64, ptr %66, align 8, !tbaa !9
  %754 = mul nsw i64 %752, %753
  %755 = sub nsw i64 %750, %754
  store i64 %755, ptr %60, align 8, !tbaa !9
  %756 = load ptr, ptr %32, align 8, !tbaa !5
  %757 = load i64, ptr %53, align 8, !tbaa !9
  %758 = getelementptr inbounds double, ptr %756, i64 %757
  %759 = load ptr, ptr %33, align 8, !tbaa !5
  %760 = load ptr, ptr %32, align 8, !tbaa !5
  %761 = load i64, ptr %63, align 8, !tbaa !9
  %762 = load i64, ptr %63, align 8, !tbaa !9
  %763 = load i64, ptr %52, align 8, !tbaa !9
  %764 = mul nsw i64 %762, %763
  %765 = add nsw i64 %761, %764
  %766 = getelementptr inbounds double, ptr %760, i64 %765
  %767 = load ptr, ptr %33, align 8, !tbaa !5
  %768 = load ptr, ptr %47, align 8, !tbaa !5
  %769 = getelementptr inbounds double, ptr %768, i64 1
  %770 = load ptr, ptr %34, align 8, !tbaa !5
  %771 = load i64, ptr %55, align 8, !tbaa !9
  %772 = getelementptr inbounds double, ptr %770, i64 %771
  %773 = load ptr, ptr %35, align 8, !tbaa !5
  %774 = load ptr, ptr %34, align 8, !tbaa !5
  %775 = load i64, ptr %63, align 8, !tbaa !9
  %776 = load i64, ptr %63, align 8, !tbaa !9
  %777 = load i64, ptr %54, align 8, !tbaa !9
  %778 = mul nsw i64 %776, %777
  %779 = add nsw i64 %775, %778
  %780 = getelementptr inbounds double, ptr %774, i64 %779
  %781 = load ptr, ptr %35, align 8, !tbaa !5
  %782 = load ptr, ptr %47, align 8, !tbaa !5
  %783 = load i64, ptr %65, align 8, !tbaa !9
  %784 = load i64, ptr %66, align 8, !tbaa !9
  %785 = mul nsw i64 %783, %784
  %786 = add nsw i64 %785, 1
  %787 = getelementptr inbounds double, ptr %782, i64 %786
  %788 = load ptr, ptr %46, align 8, !tbaa !5
  %789 = getelementptr inbounds double, ptr %788, i64 1
  %790 = load ptr, ptr %47, align 8, !tbaa !5
  %791 = load i64, ptr %65, align 8, !tbaa !9
  %792 = load i64, ptr %66, align 8, !tbaa !9
  %793 = mul nsw i64 %791, %792
  %794 = shl i64 %793, 1
  %795 = add nsw i64 %794, 1
  %796 = getelementptr inbounds double, ptr %790, i64 %795
  %797 = load ptr, ptr %49, align 8, !tbaa !5
  %798 = getelementptr inbounds i64, ptr %797, i64 1
  %799 = call i32 @dtgsyl_(ptr noundef @.str.4, ptr noundef %70, ptr noundef %65, ptr noundef %66, ptr noundef %758, ptr noundef %759, ptr noundef %766, ptr noundef %767, ptr noundef %769, ptr noundef %65, ptr noundef %772, ptr noundef %773, ptr noundef %780, ptr noundef %781, ptr noundef %787, ptr noundef %65, ptr noundef %83, ptr noundef %789, ptr noundef %796, ptr noundef %60, ptr noundef %798, ptr noundef %74)
  store double 0.000000e+00, ptr %84, align 8, !tbaa !11
  store double 1.000000e+00, ptr %75, align 8, !tbaa !11
  %800 = load i64, ptr %65, align 8, !tbaa !9
  %801 = load i64, ptr %66, align 8, !tbaa !9
  %802 = mul nsw i64 %800, %801
  store i64 %802, ptr %60, align 8, !tbaa !9
  %803 = load ptr, ptr %47, align 8, !tbaa !5
  %804 = getelementptr inbounds double, ptr %803, i64 1
  %805 = call i32 @dlassq_(ptr noundef %60, ptr noundef %804, ptr noundef @c__1, ptr noundef %84, ptr noundef %75)
  %806 = load double, ptr %84, align 8, !tbaa !11
  %807 = load double, ptr %75, align 8, !tbaa !11
  %808 = call double @sqrt(double noundef %807) #4
  %809 = fmul double %806, %808
  %810 = load ptr, ptr %44, align 8, !tbaa !5
  store double %809, ptr %810, align 8, !tbaa !11
  %811 = load ptr, ptr %44, align 8, !tbaa !5
  %812 = load double, ptr %811, align 8, !tbaa !11
  %813 = fcmp oeq double %812, 0.000000e+00
  br i1 %813, label %814, label %816

814:                                              ; preds = %715
  %815 = load ptr, ptr %44, align 8, !tbaa !5
  store double 1.000000e+00, ptr %815, align 8, !tbaa !11
  br label %834

816:                                              ; preds = %715
  %817 = load double, ptr %83, align 8, !tbaa !11
  %818 = load double, ptr %83, align 8, !tbaa !11
  %819 = load double, ptr %83, align 8, !tbaa !11
  %820 = fmul double %818, %819
  %821 = load ptr, ptr %44, align 8, !tbaa !5
  %822 = load double, ptr %821, align 8, !tbaa !11
  %823 = fdiv double %820, %822
  %824 = load ptr, ptr %44, align 8, !tbaa !5
  %825 = load double, ptr %824, align 8, !tbaa !11
  %826 = fadd double %823, %825
  %827 = call double @sqrt(double noundef %826) #4
  %828 = load ptr, ptr %44, align 8, !tbaa !5
  %829 = load double, ptr %828, align 8, !tbaa !11
  %830 = call double @sqrt(double noundef %829) #4
  %831 = fmul double %827, %830
  %832 = fdiv double %817, %831
  %833 = load ptr, ptr %44, align 8, !tbaa !5
  store double %832, ptr %833, align 8, !tbaa !11
  br label %834

834:                                              ; preds = %816, %814
  store double 0.000000e+00, ptr %84, align 8, !tbaa !11
  store double 1.000000e+00, ptr %75, align 8, !tbaa !11
  %835 = load i64, ptr %65, align 8, !tbaa !9
  %836 = load i64, ptr %66, align 8, !tbaa !9
  %837 = mul nsw i64 %835, %836
  store i64 %837, ptr %60, align 8, !tbaa !9
  %838 = load ptr, ptr %47, align 8, !tbaa !5
  %839 = load i64, ptr %65, align 8, !tbaa !9
  %840 = load i64, ptr %66, align 8, !tbaa !9
  %841 = mul nsw i64 %839, %840
  %842 = add nsw i64 %841, 1
  %843 = getelementptr inbounds double, ptr %838, i64 %842
  %844 = call i32 @dlassq_(ptr noundef %60, ptr noundef %843, ptr noundef @c__1, ptr noundef %84, ptr noundef %75)
  %845 = load double, ptr %84, align 8, !tbaa !11
  %846 = load double, ptr %75, align 8, !tbaa !11
  %847 = call double @sqrt(double noundef %846) #4
  %848 = fmul double %845, %847
  %849 = load ptr, ptr %45, align 8, !tbaa !5
  store double %848, ptr %849, align 8, !tbaa !11
  %850 = load ptr, ptr %45, align 8, !tbaa !5
  %851 = load double, ptr %850, align 8, !tbaa !11
  %852 = fcmp oeq double %851, 0.000000e+00
  br i1 %852, label %853, label %855

853:                                              ; preds = %834
  %854 = load ptr, ptr %45, align 8, !tbaa !5
  store double 1.000000e+00, ptr %854, align 8, !tbaa !11
  br label %873

855:                                              ; preds = %834
  %856 = load double, ptr %83, align 8, !tbaa !11
  %857 = load double, ptr %83, align 8, !tbaa !11
  %858 = load double, ptr %83, align 8, !tbaa !11
  %859 = fmul double %857, %858
  %860 = load ptr, ptr %45, align 8, !tbaa !5
  %861 = load double, ptr %860, align 8, !tbaa !11
  %862 = fdiv double %859, %861
  %863 = load ptr, ptr %45, align 8, !tbaa !5
  %864 = load double, ptr %863, align 8, !tbaa !11
  %865 = fadd double %862, %864
  %866 = call double @sqrt(double noundef %865) #4
  %867 = load ptr, ptr %45, align 8, !tbaa !5
  %868 = load double, ptr %867, align 8, !tbaa !11
  %869 = call double @sqrt(double noundef %868) #4
  %870 = fmul double %866, %869
  %871 = fdiv double %856, %870
  %872 = load ptr, ptr %45, align 8, !tbaa !5
  store double %871, ptr %872, align 8, !tbaa !11
  br label %873

873:                                              ; preds = %855, %853
  br label %874

874:                                              ; preds = %873, %712
  %875 = load i64, ptr %78, align 8, !tbaa !9
  %876 = icmp ne i64 %875, 0
  br i1 %876, label %877, label %1269

877:                                              ; preds = %874
  %878 = load i64, ptr %81, align 8, !tbaa !9
  %879 = icmp ne i64 %878, 0
  br i1 %879, label %880, label %992

880:                                              ; preds = %877
  %881 = load ptr, ptr %43, align 8, !tbaa !5
  %882 = load i64, ptr %881, align 8, !tbaa !9
  store i64 %882, ptr %65, align 8, !tbaa !9
  %883 = load ptr, ptr %31, align 8, !tbaa !5
  %884 = load i64, ptr %883, align 8, !tbaa !9
  %885 = load ptr, ptr %43, align 8, !tbaa !5
  %886 = load i64, ptr %885, align 8, !tbaa !9
  %887 = sub nsw i64 %884, %886
  store i64 %887, ptr %66, align 8, !tbaa !9
  %888 = load i64, ptr %65, align 8, !tbaa !9
  %889 = add nsw i64 %888, 1
  store i64 %889, ptr %63, align 8, !tbaa !9
  store i64 3, ptr %70, align 8, !tbaa !9
  %890 = load ptr, ptr %48, align 8, !tbaa !5
  %891 = load i64, ptr %890, align 8, !tbaa !9
  %892 = load i64, ptr %65, align 8, !tbaa !9
  %893 = shl i64 %892, 1
  %894 = load i64, ptr %66, align 8, !tbaa !9
  %895 = mul nsw i64 %893, %894
  %896 = sub nsw i64 %891, %895
  store i64 %896, ptr %60, align 8, !tbaa !9
  %897 = load ptr, ptr %32, align 8, !tbaa !5
  %898 = load i64, ptr %53, align 8, !tbaa !9
  %899 = getelementptr inbounds double, ptr %897, i64 %898
  %900 = load ptr, ptr %33, align 8, !tbaa !5
  %901 = load ptr, ptr %32, align 8, !tbaa !5
  %902 = load i64, ptr %63, align 8, !tbaa !9
  %903 = load i64, ptr %63, align 8, !tbaa !9
  %904 = load i64, ptr %52, align 8, !tbaa !9
  %905 = mul nsw i64 %903, %904
  %906 = add nsw i64 %902, %905
  %907 = getelementptr inbounds double, ptr %901, i64 %906
  %908 = load ptr, ptr %33, align 8, !tbaa !5
  %909 = load ptr, ptr %47, align 8, !tbaa !5
  %910 = getelementptr inbounds double, ptr %909, i64 1
  %911 = load ptr, ptr %34, align 8, !tbaa !5
  %912 = load i64, ptr %55, align 8, !tbaa !9
  %913 = getelementptr inbounds double, ptr %911, i64 %912
  %914 = load ptr, ptr %35, align 8, !tbaa !5
  %915 = load ptr, ptr %34, align 8, !tbaa !5
  %916 = load i64, ptr %63, align 8, !tbaa !9
  %917 = load i64, ptr %63, align 8, !tbaa !9
  %918 = load i64, ptr %54, align 8, !tbaa !9
  %919 = mul nsw i64 %917, %918
  %920 = add nsw i64 %916, %919
  %921 = getelementptr inbounds double, ptr %915, i64 %920
  %922 = load ptr, ptr %35, align 8, !tbaa !5
  %923 = load ptr, ptr %47, align 8, !tbaa !5
  %924 = load i64, ptr %65, align 8, !tbaa !9
  %925 = load i64, ptr %66, align 8, !tbaa !9
  %926 = mul nsw i64 %924, %925
  %927 = add nsw i64 %926, 1
  %928 = getelementptr inbounds double, ptr %923, i64 %927
  %929 = load ptr, ptr %46, align 8, !tbaa !5
  %930 = getelementptr inbounds double, ptr %929, i64 1
  %931 = load ptr, ptr %47, align 8, !tbaa !5
  %932 = load i64, ptr %65, align 8, !tbaa !9
  %933 = shl i64 %932, 1
  %934 = load i64, ptr %66, align 8, !tbaa !9
  %935 = mul nsw i64 %933, %934
  %936 = add nsw i64 %935, 1
  %937 = getelementptr inbounds double, ptr %931, i64 %936
  %938 = load ptr, ptr %49, align 8, !tbaa !5
  %939 = getelementptr inbounds i64, ptr %938, i64 1
  %940 = call i32 @dtgsyl_(ptr noundef @.str.4, ptr noundef %70, ptr noundef %65, ptr noundef %66, ptr noundef %899, ptr noundef %900, ptr noundef %907, ptr noundef %908, ptr noundef %910, ptr noundef %65, ptr noundef %913, ptr noundef %914, ptr noundef %921, ptr noundef %922, ptr noundef %928, ptr noundef %65, ptr noundef %83, ptr noundef %930, ptr noundef %937, ptr noundef %60, ptr noundef %939, ptr noundef %74)
  %941 = load ptr, ptr %48, align 8, !tbaa !5
  %942 = load i64, ptr %941, align 8, !tbaa !9
  %943 = load i64, ptr %65, align 8, !tbaa !9
  %944 = shl i64 %943, 1
  %945 = load i64, ptr %66, align 8, !tbaa !9
  %946 = mul nsw i64 %944, %945
  %947 = sub nsw i64 %942, %946
  store i64 %947, ptr %60, align 8, !tbaa !9
  %948 = load ptr, ptr %32, align 8, !tbaa !5
  %949 = load i64, ptr %63, align 8, !tbaa !9
  %950 = load i64, ptr %63, align 8, !tbaa !9
  %951 = load i64, ptr %52, align 8, !tbaa !9
  %952 = mul nsw i64 %950, %951
  %953 = add nsw i64 %949, %952
  %954 = getelementptr inbounds double, ptr %948, i64 %953
  %955 = load ptr, ptr %33, align 8, !tbaa !5
  %956 = load ptr, ptr %32, align 8, !tbaa !5
  %957 = load i64, ptr %53, align 8, !tbaa !9
  %958 = getelementptr inbounds double, ptr %956, i64 %957
  %959 = load ptr, ptr %33, align 8, !tbaa !5
  %960 = load ptr, ptr %47, align 8, !tbaa !5
  %961 = getelementptr inbounds double, ptr %960, i64 1
  %962 = load ptr, ptr %34, align 8, !tbaa !5
  %963 = load i64, ptr %63, align 8, !tbaa !9
  %964 = load i64, ptr %63, align 8, !tbaa !9
  %965 = load i64, ptr %54, align 8, !tbaa !9
  %966 = mul nsw i64 %964, %965
  %967 = add nsw i64 %963, %966
  %968 = getelementptr inbounds double, ptr %962, i64 %967
  %969 = load ptr, ptr %35, align 8, !tbaa !5
  %970 = load ptr, ptr %34, align 8, !tbaa !5
  %971 = load i64, ptr %55, align 8, !tbaa !9
  %972 = getelementptr inbounds double, ptr %970, i64 %971
  %973 = load ptr, ptr %35, align 8, !tbaa !5
  %974 = load ptr, ptr %47, align 8, !tbaa !5
  %975 = load i64, ptr %65, align 8, !tbaa !9
  %976 = load i64, ptr %66, align 8, !tbaa !9
  %977 = mul nsw i64 %975, %976
  %978 = add nsw i64 %977, 1
  %979 = getelementptr inbounds double, ptr %974, i64 %978
  %980 = load ptr, ptr %46, align 8, !tbaa !5
  %981 = getelementptr inbounds double, ptr %980, i64 2
  %982 = load ptr, ptr %47, align 8, !tbaa !5
  %983 = load i64, ptr %65, align 8, !tbaa !9
  %984 = shl i64 %983, 1
  %985 = load i64, ptr %66, align 8, !tbaa !9
  %986 = mul nsw i64 %984, %985
  %987 = add nsw i64 %986, 1
  %988 = getelementptr inbounds double, ptr %982, i64 %987
  %989 = load ptr, ptr %49, align 8, !tbaa !5
  %990 = getelementptr inbounds i64, ptr %989, i64 1
  %991 = call i32 @dtgsyl_(ptr noundef @.str.4, ptr noundef %70, ptr noundef %66, ptr noundef %65, ptr noundef %954, ptr noundef %955, ptr noundef %958, ptr noundef %959, ptr noundef %961, ptr noundef %66, ptr noundef %968, ptr noundef %969, ptr noundef %972, ptr noundef %973, ptr noundef %979, ptr noundef %66, ptr noundef %83, ptr noundef %981, ptr noundef %988, ptr noundef %60, ptr noundef %990, ptr noundef %74)
  br label %1268

992:                                              ; preds = %877
  store i64 0, ptr %72, align 8, !tbaa !9
  %993 = load ptr, ptr %43, align 8, !tbaa !5
  %994 = load i64, ptr %993, align 8, !tbaa !9
  store i64 %994, ptr %65, align 8, !tbaa !9
  %995 = load ptr, ptr %31, align 8, !tbaa !5
  %996 = load i64, ptr %995, align 8, !tbaa !9
  %997 = load ptr, ptr %43, align 8, !tbaa !5
  %998 = load i64, ptr %997, align 8, !tbaa !9
  %999 = sub nsw i64 %996, %998
  store i64 %999, ptr %66, align 8, !tbaa !9
  %1000 = load i64, ptr %65, align 8, !tbaa !9
  %1001 = add nsw i64 %1000, 1
  store i64 %1001, ptr %63, align 8, !tbaa !9
  store i64 0, ptr %70, align 8, !tbaa !9
  %1002 = load i64, ptr %65, align 8, !tbaa !9
  %1003 = shl i64 %1002, 1
  %1004 = load i64, ptr %66, align 8, !tbaa !9
  %1005 = mul nsw i64 %1003, %1004
  store i64 %1005, ptr %69, align 8, !tbaa !9
  br label %1006

1006:                                             ; preds = %1128, %992
  %1007 = load ptr, ptr %47, align 8, !tbaa !5
  %1008 = load i64, ptr %69, align 8, !tbaa !9
  %1009 = add nsw i64 %1008, 1
  %1010 = getelementptr inbounds double, ptr %1007, i64 %1009
  %1011 = load ptr, ptr %47, align 8, !tbaa !5
  %1012 = getelementptr inbounds double, ptr %1011, i64 1
  %1013 = load ptr, ptr %49, align 8, !tbaa !5
  %1014 = getelementptr inbounds i64, ptr %1013, i64 1
  %1015 = load ptr, ptr %46, align 8, !tbaa !5
  %1016 = getelementptr inbounds double, ptr %1015, i64 1
  %1017 = getelementptr inbounds [3 x i64], ptr %77, i64 0, i64 0
  %1018 = call i32 @dlacn2_(ptr noundef %69, ptr noundef %1010, ptr noundef %1012, ptr noundef %1014, ptr noundef %1016, ptr noundef %72, ptr noundef %1017)
  %1019 = load i64, ptr %72, align 8, !tbaa !9
  %1020 = icmp ne i64 %1019, 0
  br i1 %1020, label %1021, label %1129

1021:                                             ; preds = %1006
  %1022 = load i64, ptr %72, align 8, !tbaa !9
  %1023 = icmp eq i64 %1022, 1
  br i1 %1023, label %1024, label %1076

1024:                                             ; preds = %1021
  %1025 = load ptr, ptr %48, align 8, !tbaa !5
  %1026 = load i64, ptr %1025, align 8, !tbaa !9
  %1027 = load i64, ptr %65, align 8, !tbaa !9
  %1028 = shl i64 %1027, 1
  %1029 = load i64, ptr %66, align 8, !tbaa !9
  %1030 = mul nsw i64 %1028, %1029
  %1031 = sub nsw i64 %1026, %1030
  store i64 %1031, ptr %60, align 8, !tbaa !9
  %1032 = load ptr, ptr %32, align 8, !tbaa !5
  %1033 = load i64, ptr %53, align 8, !tbaa !9
  %1034 = getelementptr inbounds double, ptr %1032, i64 %1033
  %1035 = load ptr, ptr %33, align 8, !tbaa !5
  %1036 = load ptr, ptr %32, align 8, !tbaa !5
  %1037 = load i64, ptr %63, align 8, !tbaa !9
  %1038 = load i64, ptr %63, align 8, !tbaa !9
  %1039 = load i64, ptr %52, align 8, !tbaa !9
  %1040 = mul nsw i64 %1038, %1039
  %1041 = add nsw i64 %1037, %1040
  %1042 = getelementptr inbounds double, ptr %1036, i64 %1041
  %1043 = load ptr, ptr %33, align 8, !tbaa !5
  %1044 = load ptr, ptr %47, align 8, !tbaa !5
  %1045 = getelementptr inbounds double, ptr %1044, i64 1
  %1046 = load ptr, ptr %34, align 8, !tbaa !5
  %1047 = load i64, ptr %55, align 8, !tbaa !9
  %1048 = getelementptr inbounds double, ptr %1046, i64 %1047
  %1049 = load ptr, ptr %35, align 8, !tbaa !5
  %1050 = load ptr, ptr %34, align 8, !tbaa !5
  %1051 = load i64, ptr %63, align 8, !tbaa !9
  %1052 = load i64, ptr %63, align 8, !tbaa !9
  %1053 = load i64, ptr %54, align 8, !tbaa !9
  %1054 = mul nsw i64 %1052, %1053
  %1055 = add nsw i64 %1051, %1054
  %1056 = getelementptr inbounds double, ptr %1050, i64 %1055
  %1057 = load ptr, ptr %35, align 8, !tbaa !5
  %1058 = load ptr, ptr %47, align 8, !tbaa !5
  %1059 = load i64, ptr %65, align 8, !tbaa !9
  %1060 = load i64, ptr %66, align 8, !tbaa !9
  %1061 = mul nsw i64 %1059, %1060
  %1062 = add nsw i64 %1061, 1
  %1063 = getelementptr inbounds double, ptr %1058, i64 %1062
  %1064 = load ptr, ptr %46, align 8, !tbaa !5
  %1065 = getelementptr inbounds double, ptr %1064, i64 1
  %1066 = load ptr, ptr %47, align 8, !tbaa !5
  %1067 = load i64, ptr %65, align 8, !tbaa !9
  %1068 = shl i64 %1067, 1
  %1069 = load i64, ptr %66, align 8, !tbaa !9
  %1070 = mul nsw i64 %1068, %1069
  %1071 = add nsw i64 %1070, 1
  %1072 = getelementptr inbounds double, ptr %1066, i64 %1071
  %1073 = load ptr, ptr %49, align 8, !tbaa !5
  %1074 = getelementptr inbounds i64, ptr %1073, i64 1
  %1075 = call i32 @dtgsyl_(ptr noundef @.str.4, ptr noundef %70, ptr noundef %65, ptr noundef %66, ptr noundef %1034, ptr noundef %1035, ptr noundef %1042, ptr noundef %1043, ptr noundef %1045, ptr noundef %65, ptr noundef %1048, ptr noundef %1049, ptr noundef %1056, ptr noundef %1057, ptr noundef %1063, ptr noundef %65, ptr noundef %83, ptr noundef %1065, ptr noundef %1072, ptr noundef %60, ptr noundef %1074, ptr noundef %74)
  br label %1128

1076:                                             ; preds = %1021
  %1077 = load ptr, ptr %48, align 8, !tbaa !5
  %1078 = load i64, ptr %1077, align 8, !tbaa !9
  %1079 = load i64, ptr %65, align 8, !tbaa !9
  %1080 = shl i64 %1079, 1
  %1081 = load i64, ptr %66, align 8, !tbaa !9
  %1082 = mul nsw i64 %1080, %1081
  %1083 = sub nsw i64 %1078, %1082
  store i64 %1083, ptr %60, align 8, !tbaa !9
  %1084 = load ptr, ptr %32, align 8, !tbaa !5
  %1085 = load i64, ptr %53, align 8, !tbaa !9
  %1086 = getelementptr inbounds double, ptr %1084, i64 %1085
  %1087 = load ptr, ptr %33, align 8, !tbaa !5
  %1088 = load ptr, ptr %32, align 8, !tbaa !5
  %1089 = load i64, ptr %63, align 8, !tbaa !9
  %1090 = load i64, ptr %63, align 8, !tbaa !9
  %1091 = load i64, ptr %52, align 8, !tbaa !9
  %1092 = mul nsw i64 %1090, %1091
  %1093 = add nsw i64 %1089, %1092
  %1094 = getelementptr inbounds double, ptr %1088, i64 %1093
  %1095 = load ptr, ptr %33, align 8, !tbaa !5
  %1096 = load ptr, ptr %47, align 8, !tbaa !5
  %1097 = getelementptr inbounds double, ptr %1096, i64 1
  %1098 = load ptr, ptr %34, align 8, !tbaa !5
  %1099 = load i64, ptr %55, align 8, !tbaa !9
  %1100 = getelementptr inbounds double, ptr %1098, i64 %1099
  %1101 = load ptr, ptr %35, align 8, !tbaa !5
  %1102 = load ptr, ptr %34, align 8, !tbaa !5
  %1103 = load i64, ptr %63, align 8, !tbaa !9
  %1104 = load i64, ptr %63, align 8, !tbaa !9
  %1105 = load i64, ptr %54, align 8, !tbaa !9
  %1106 = mul nsw i64 %1104, %1105
  %1107 = add nsw i64 %1103, %1106
  %1108 = getelementptr inbounds double, ptr %1102, i64 %1107
  %1109 = load ptr, ptr %35, align 8, !tbaa !5
  %1110 = load ptr, ptr %47, align 8, !tbaa !5
  %1111 = load i64, ptr %65, align 8, !tbaa !9
  %1112 = load i64, ptr %66, align 8, !tbaa !9
  %1113 = mul nsw i64 %1111, %1112
  %1114 = add nsw i64 %1113, 1
  %1115 = getelementptr inbounds double, ptr %1110, i64 %1114
  %1116 = load ptr, ptr %46, align 8, !tbaa !5
  %1117 = getelementptr inbounds double, ptr %1116, i64 1
  %1118 = load ptr, ptr %47, align 8, !tbaa !5
  %1119 = load i64, ptr %65, align 8, !tbaa !9
  %1120 = shl i64 %1119, 1
  %1121 = load i64, ptr %66, align 8, !tbaa !9
  %1122 = mul nsw i64 %1120, %1121
  %1123 = add nsw i64 %1122, 1
  %1124 = getelementptr inbounds double, ptr %1118, i64 %1123
  %1125 = load ptr, ptr %49, align 8, !tbaa !5
  %1126 = getelementptr inbounds i64, ptr %1125, i64 1
  %1127 = call i32 @dtgsyl_(ptr noundef @.str.5, ptr noundef %70, ptr noundef %65, ptr noundef %66, ptr noundef %1086, ptr noundef %1087, ptr noundef %1094, ptr noundef %1095, ptr noundef %1097, ptr noundef %65, ptr noundef %1100, ptr noundef %1101, ptr noundef %1108, ptr noundef %1109, ptr noundef %1115, ptr noundef %65, ptr noundef %83, ptr noundef %1117, ptr noundef %1124, ptr noundef %60, ptr noundef %1126, ptr noundef %74)
  br label %1128

1128:                                             ; preds = %1076, %1024
  br label %1006

1129:                                             ; preds = %1006
  %1130 = load double, ptr %83, align 8, !tbaa !11
  %1131 = load ptr, ptr %46, align 8, !tbaa !5
  %1132 = getelementptr inbounds double, ptr %1131, i64 1
  %1133 = load double, ptr %1132, align 8, !tbaa !11
  %1134 = fdiv double %1130, %1133
  %1135 = load ptr, ptr %46, align 8, !tbaa !5
  %1136 = getelementptr inbounds double, ptr %1135, i64 1
  store double %1134, ptr %1136, align 8, !tbaa !11
  br label %1137

1137:                                             ; preds = %1259, %1129
  %1138 = load ptr, ptr %47, align 8, !tbaa !5
  %1139 = load i64, ptr %69, align 8, !tbaa !9
  %1140 = add nsw i64 %1139, 1
  %1141 = getelementptr inbounds double, ptr %1138, i64 %1140
  %1142 = load ptr, ptr %47, align 8, !tbaa !5
  %1143 = getelementptr inbounds double, ptr %1142, i64 1
  %1144 = load ptr, ptr %49, align 8, !tbaa !5
  %1145 = getelementptr inbounds i64, ptr %1144, i64 1
  %1146 = load ptr, ptr %46, align 8, !tbaa !5
  %1147 = getelementptr inbounds double, ptr %1146, i64 2
  %1148 = getelementptr inbounds [3 x i64], ptr %77, i64 0, i64 0
  %1149 = call i32 @dlacn2_(ptr noundef %69, ptr noundef %1141, ptr noundef %1143, ptr noundef %1145, ptr noundef %1147, ptr noundef %72, ptr noundef %1148)
  %1150 = load i64, ptr %72, align 8, !tbaa !9
  %1151 = icmp ne i64 %1150, 0
  br i1 %1151, label %1152, label %1260

1152:                                             ; preds = %1137
  %1153 = load i64, ptr %72, align 8, !tbaa !9
  %1154 = icmp eq i64 %1153, 1
  br i1 %1154, label %1155, label %1207

1155:                                             ; preds = %1152
  %1156 = load ptr, ptr %48, align 8, !tbaa !5
  %1157 = load i64, ptr %1156, align 8, !tbaa !9
  %1158 = load i64, ptr %65, align 8, !tbaa !9
  %1159 = shl i64 %1158, 1
  %1160 = load i64, ptr %66, align 8, !tbaa !9
  %1161 = mul nsw i64 %1159, %1160
  %1162 = sub nsw i64 %1157, %1161
  store i64 %1162, ptr %60, align 8, !tbaa !9
  %1163 = load ptr, ptr %32, align 8, !tbaa !5
  %1164 = load i64, ptr %63, align 8, !tbaa !9
  %1165 = load i64, ptr %63, align 8, !tbaa !9
  %1166 = load i64, ptr %52, align 8, !tbaa !9
  %1167 = mul nsw i64 %1165, %1166
  %1168 = add nsw i64 %1164, %1167
  %1169 = getelementptr inbounds double, ptr %1163, i64 %1168
  %1170 = load ptr, ptr %33, align 8, !tbaa !5
  %1171 = load ptr, ptr %32, align 8, !tbaa !5
  %1172 = load i64, ptr %53, align 8, !tbaa !9
  %1173 = getelementptr inbounds double, ptr %1171, i64 %1172
  %1174 = load ptr, ptr %33, align 8, !tbaa !5
  %1175 = load ptr, ptr %47, align 8, !tbaa !5
  %1176 = getelementptr inbounds double, ptr %1175, i64 1
  %1177 = load ptr, ptr %34, align 8, !tbaa !5
  %1178 = load i64, ptr %63, align 8, !tbaa !9
  %1179 = load i64, ptr %63, align 8, !tbaa !9
  %1180 = load i64, ptr %54, align 8, !tbaa !9
  %1181 = mul nsw i64 %1179, %1180
  %1182 = add nsw i64 %1178, %1181
  %1183 = getelementptr inbounds double, ptr %1177, i64 %1182
  %1184 = load ptr, ptr %35, align 8, !tbaa !5
  %1185 = load ptr, ptr %34, align 8, !tbaa !5
  %1186 = load i64, ptr %55, align 8, !tbaa !9
  %1187 = getelementptr inbounds double, ptr %1185, i64 %1186
  %1188 = load ptr, ptr %35, align 8, !tbaa !5
  %1189 = load ptr, ptr %47, align 8, !tbaa !5
  %1190 = load i64, ptr %65, align 8, !tbaa !9
  %1191 = load i64, ptr %66, align 8, !tbaa !9
  %1192 = mul nsw i64 %1190, %1191
  %1193 = add nsw i64 %1192, 1
  %1194 = getelementptr inbounds double, ptr %1189, i64 %1193
  %1195 = load ptr, ptr %46, align 8, !tbaa !5
  %1196 = getelementptr inbounds double, ptr %1195, i64 2
  %1197 = load ptr, ptr %47, align 8, !tbaa !5
  %1198 = load i64, ptr %65, align 8, !tbaa !9
  %1199 = shl i64 %1198, 1
  %1200 = load i64, ptr %66, align 8, !tbaa !9
  %1201 = mul nsw i64 %1199, %1200
  %1202 = add nsw i64 %1201, 1
  %1203 = getelementptr inbounds double, ptr %1197, i64 %1202
  %1204 = load ptr, ptr %49, align 8, !tbaa !5
  %1205 = getelementptr inbounds i64, ptr %1204, i64 1
  %1206 = call i32 @dtgsyl_(ptr noundef @.str.4, ptr noundef %70, ptr noundef %66, ptr noundef %65, ptr noundef %1169, ptr noundef %1170, ptr noundef %1173, ptr noundef %1174, ptr noundef %1176, ptr noundef %66, ptr noundef %1183, ptr noundef %1184, ptr noundef %1187, ptr noundef %1188, ptr noundef %1194, ptr noundef %66, ptr noundef %83, ptr noundef %1196, ptr noundef %1203, ptr noundef %60, ptr noundef %1205, ptr noundef %74)
  br label %1259

1207:                                             ; preds = %1152
  %1208 = load ptr, ptr %48, align 8, !tbaa !5
  %1209 = load i64, ptr %1208, align 8, !tbaa !9
  %1210 = load i64, ptr %65, align 8, !tbaa !9
  %1211 = shl i64 %1210, 1
  %1212 = load i64, ptr %66, align 8, !tbaa !9
  %1213 = mul nsw i64 %1211, %1212
  %1214 = sub nsw i64 %1209, %1213
  store i64 %1214, ptr %60, align 8, !tbaa !9
  %1215 = load ptr, ptr %32, align 8, !tbaa !5
  %1216 = load i64, ptr %63, align 8, !tbaa !9
  %1217 = load i64, ptr %63, align 8, !tbaa !9
  %1218 = load i64, ptr %52, align 8, !tbaa !9
  %1219 = mul nsw i64 %1217, %1218
  %1220 = add nsw i64 %1216, %1219
  %1221 = getelementptr inbounds double, ptr %1215, i64 %1220
  %1222 = load ptr, ptr %33, align 8, !tbaa !5
  %1223 = load ptr, ptr %32, align 8, !tbaa !5
  %1224 = load i64, ptr %53, align 8, !tbaa !9
  %1225 = getelementptr inbounds double, ptr %1223, i64 %1224
  %1226 = load ptr, ptr %33, align 8, !tbaa !5
  %1227 = load ptr, ptr %47, align 8, !tbaa !5
  %1228 = getelementptr inbounds double, ptr %1227, i64 1
  %1229 = load ptr, ptr %34, align 8, !tbaa !5
  %1230 = load i64, ptr %63, align 8, !tbaa !9
  %1231 = load i64, ptr %63, align 8, !tbaa !9
  %1232 = load i64, ptr %54, align 8, !tbaa !9
  %1233 = mul nsw i64 %1231, %1232
  %1234 = add nsw i64 %1230, %1233
  %1235 = getelementptr inbounds double, ptr %1229, i64 %1234
  %1236 = load ptr, ptr %35, align 8, !tbaa !5
  %1237 = load ptr, ptr %34, align 8, !tbaa !5
  %1238 = load i64, ptr %55, align 8, !tbaa !9
  %1239 = getelementptr inbounds double, ptr %1237, i64 %1238
  %1240 = load ptr, ptr %35, align 8, !tbaa !5
  %1241 = load ptr, ptr %47, align 8, !tbaa !5
  %1242 = load i64, ptr %65, align 8, !tbaa !9
  %1243 = load i64, ptr %66, align 8, !tbaa !9
  %1244 = mul nsw i64 %1242, %1243
  %1245 = add nsw i64 %1244, 1
  %1246 = getelementptr inbounds double, ptr %1241, i64 %1245
  %1247 = load ptr, ptr %46, align 8, !tbaa !5
  %1248 = getelementptr inbounds double, ptr %1247, i64 2
  %1249 = load ptr, ptr %47, align 8, !tbaa !5
  %1250 = load i64, ptr %65, align 8, !tbaa !9
  %1251 = shl i64 %1250, 1
  %1252 = load i64, ptr %66, align 8, !tbaa !9
  %1253 = mul nsw i64 %1251, %1252
  %1254 = add nsw i64 %1253, 1
  %1255 = getelementptr inbounds double, ptr %1249, i64 %1254
  %1256 = load ptr, ptr %49, align 8, !tbaa !5
  %1257 = getelementptr inbounds i64, ptr %1256, i64 1
  %1258 = call i32 @dtgsyl_(ptr noundef @.str.5, ptr noundef %70, ptr noundef %66, ptr noundef %65, ptr noundef %1221, ptr noundef %1222, ptr noundef %1225, ptr noundef %1226, ptr noundef %1228, ptr noundef %66, ptr noundef %1235, ptr noundef %1236, ptr noundef %1239, ptr noundef %1240, ptr noundef %1246, ptr noundef %66, ptr noundef %83, ptr noundef %1248, ptr noundef %1255, ptr noundef %60, ptr noundef %1257, ptr noundef %74)
  br label %1259

1259:                                             ; preds = %1207, %1155
  br label %1137

1260:                                             ; preds = %1137
  %1261 = load double, ptr %83, align 8, !tbaa !11
  %1262 = load ptr, ptr %46, align 8, !tbaa !5
  %1263 = getelementptr inbounds double, ptr %1262, i64 2
  %1264 = load double, ptr %1263, align 8, !tbaa !11
  %1265 = fdiv double %1261, %1264
  %1266 = load ptr, ptr %46, align 8, !tbaa !5
  %1267 = getelementptr inbounds double, ptr %1266, i64 2
  store double %1265, ptr %1267, align 8, !tbaa !11
  br label %1268

1268:                                             ; preds = %1260, %880
  br label %1269

1269:                                             ; preds = %1268, %874
  br label %1270

1270:                                             ; preds = %1269, %699, %600
  store i64 0, ptr %73, align 8, !tbaa !9
  %1271 = load ptr, ptr %31, align 8, !tbaa !5
  %1272 = load i64, ptr %1271, align 8, !tbaa !9
  store i64 %1272, ptr %60, align 8, !tbaa !9
  store i64 1, ptr %64, align 8, !tbaa !9
  br label %1273

1273:                                             ; preds = %1528, %1270
  %1274 = load i64, ptr %64, align 8, !tbaa !9
  %1275 = load i64, ptr %60, align 8, !tbaa !9
  %1276 = icmp sle i64 %1274, %1275
  br i1 %1276, label %1277, label %1531

1277:                                             ; preds = %1273
  %1278 = load i64, ptr %73, align 8, !tbaa !9
  %1279 = icmp ne i64 %1278, 0
  br i1 %1279, label %1280, label %1281

1280:                                             ; preds = %1277
  store i64 0, ptr %73, align 8, !tbaa !9
  br label %1527

1281:                                             ; preds = %1277
  %1282 = load i64, ptr %64, align 8, !tbaa !9
  %1283 = load ptr, ptr %31, align 8, !tbaa !5
  %1284 = load i64, ptr %1283, align 8, !tbaa !9
  %1285 = icmp slt i64 %1282, %1284
  br i1 %1285, label %1286, label %1299

1286:                                             ; preds = %1281
  %1287 = load ptr, ptr %32, align 8, !tbaa !5
  %1288 = load i64, ptr %64, align 8, !tbaa !9
  %1289 = add nsw i64 %1288, 1
  %1290 = load i64, ptr %64, align 8, !tbaa !9
  %1291 = load i64, ptr %52, align 8, !tbaa !9
  %1292 = mul nsw i64 %1290, %1291
  %1293 = add nsw i64 %1289, %1292
  %1294 = getelementptr inbounds double, ptr %1287, i64 %1293
  %1295 = load double, ptr %1294, align 8, !tbaa !11
  %1296 = fcmp une double %1295, 0.000000e+00
  br i1 %1296, label %1297, label %1298

1297:                                             ; preds = %1286
  store i64 1, ptr %73, align 8, !tbaa !9
  br label %1298

1298:                                             ; preds = %1297, %1286
  br label %1299

1299:                                             ; preds = %1298, %1281
  %1300 = load i64, ptr %73, align 8, !tbaa !9
  %1301 = icmp ne i64 %1300, 0
  br i1 %1301, label %1302, label %1425

1302:                                             ; preds = %1299
  %1303 = load ptr, ptr %32, align 8, !tbaa !5
  %1304 = load i64, ptr %64, align 8, !tbaa !9
  %1305 = load i64, ptr %64, align 8, !tbaa !9
  %1306 = load i64, ptr %52, align 8, !tbaa !9
  %1307 = mul nsw i64 %1305, %1306
  %1308 = add nsw i64 %1304, %1307
  %1309 = getelementptr inbounds double, ptr %1303, i64 %1308
  %1310 = load double, ptr %1309, align 8, !tbaa !11
  %1311 = load ptr, ptr %47, align 8, !tbaa !5
  %1312 = getelementptr inbounds double, ptr %1311, i64 1
  store double %1310, ptr %1312, align 8, !tbaa !11
  %1313 = load ptr, ptr %32, align 8, !tbaa !5
  %1314 = load i64, ptr %64, align 8, !tbaa !9
  %1315 = add nsw i64 %1314, 1
  %1316 = load i64, ptr %64, align 8, !tbaa !9
  %1317 = load i64, ptr %52, align 8, !tbaa !9
  %1318 = mul nsw i64 %1316, %1317
  %1319 = add nsw i64 %1315, %1318
  %1320 = getelementptr inbounds double, ptr %1313, i64 %1319
  %1321 = load double, ptr %1320, align 8, !tbaa !11
  %1322 = load ptr, ptr %47, align 8, !tbaa !5
  %1323 = getelementptr inbounds double, ptr %1322, i64 2
  store double %1321, ptr %1323, align 8, !tbaa !11
  %1324 = load ptr, ptr %32, align 8, !tbaa !5
  %1325 = load i64, ptr %64, align 8, !tbaa !9
  %1326 = load i64, ptr %64, align 8, !tbaa !9
  %1327 = add nsw i64 %1326, 1
  %1328 = load i64, ptr %52, align 8, !tbaa !9
  %1329 = mul nsw i64 %1327, %1328
  %1330 = add nsw i64 %1325, %1329
  %1331 = getelementptr inbounds double, ptr %1324, i64 %1330
  %1332 = load double, ptr %1331, align 8, !tbaa !11
  %1333 = load ptr, ptr %47, align 8, !tbaa !5
  %1334 = getelementptr inbounds double, ptr %1333, i64 3
  store double %1332, ptr %1334, align 8, !tbaa !11
  %1335 = load ptr, ptr %32, align 8, !tbaa !5
  %1336 = load i64, ptr %64, align 8, !tbaa !9
  %1337 = add nsw i64 %1336, 1
  %1338 = load i64, ptr %64, align 8, !tbaa !9
  %1339 = add nsw i64 %1338, 1
  %1340 = load i64, ptr %52, align 8, !tbaa !9
  %1341 = mul nsw i64 %1339, %1340
  %1342 = add nsw i64 %1337, %1341
  %1343 = getelementptr inbounds double, ptr %1335, i64 %1342
  %1344 = load double, ptr %1343, align 8, !tbaa !11
  %1345 = load ptr, ptr %47, align 8, !tbaa !5
  %1346 = getelementptr inbounds double, ptr %1345, i64 4
  store double %1344, ptr %1346, align 8, !tbaa !11
  %1347 = load ptr, ptr %34, align 8, !tbaa !5
  %1348 = load i64, ptr %64, align 8, !tbaa !9
  %1349 = load i64, ptr %64, align 8, !tbaa !9
  %1350 = load i64, ptr %54, align 8, !tbaa !9
  %1351 = mul nsw i64 %1349, %1350
  %1352 = add nsw i64 %1348, %1351
  %1353 = getelementptr inbounds double, ptr %1347, i64 %1352
  %1354 = load double, ptr %1353, align 8, !tbaa !11
  %1355 = load ptr, ptr %47, align 8, !tbaa !5
  %1356 = getelementptr inbounds double, ptr %1355, i64 5
  store double %1354, ptr %1356, align 8, !tbaa !11
  %1357 = load ptr, ptr %34, align 8, !tbaa !5
  %1358 = load i64, ptr %64, align 8, !tbaa !9
  %1359 = add nsw i64 %1358, 1
  %1360 = load i64, ptr %64, align 8, !tbaa !9
  %1361 = load i64, ptr %54, align 8, !tbaa !9
  %1362 = mul nsw i64 %1360, %1361
  %1363 = add nsw i64 %1359, %1362
  %1364 = getelementptr inbounds double, ptr %1357, i64 %1363
  %1365 = load double, ptr %1364, align 8, !tbaa !11
  %1366 = load ptr, ptr %47, align 8, !tbaa !5
  %1367 = getelementptr inbounds double, ptr %1366, i64 6
  store double %1365, ptr %1367, align 8, !tbaa !11
  %1368 = load ptr, ptr %34, align 8, !tbaa !5
  %1369 = load i64, ptr %64, align 8, !tbaa !9
  %1370 = load i64, ptr %64, align 8, !tbaa !9
  %1371 = add nsw i64 %1370, 1
  %1372 = load i64, ptr %54, align 8, !tbaa !9
  %1373 = mul nsw i64 %1371, %1372
  %1374 = add nsw i64 %1369, %1373
  %1375 = getelementptr inbounds double, ptr %1368, i64 %1374
  %1376 = load double, ptr %1375, align 8, !tbaa !11
  %1377 = load ptr, ptr %47, align 8, !tbaa !5
  %1378 = getelementptr inbounds double, ptr %1377, i64 7
  store double %1376, ptr %1378, align 8, !tbaa !11
  %1379 = load ptr, ptr %34, align 8, !tbaa !5
  %1380 = load i64, ptr %64, align 8, !tbaa !9
  %1381 = add nsw i64 %1380, 1
  %1382 = load i64, ptr %64, align 8, !tbaa !9
  %1383 = add nsw i64 %1382, 1
  %1384 = load i64, ptr %54, align 8, !tbaa !9
  %1385 = mul nsw i64 %1383, %1384
  %1386 = add nsw i64 %1381, %1385
  %1387 = getelementptr inbounds double, ptr %1379, i64 %1386
  %1388 = load double, ptr %1387, align 8, !tbaa !11
  %1389 = load ptr, ptr %47, align 8, !tbaa !5
  %1390 = getelementptr inbounds double, ptr %1389, i64 8
  store double %1388, ptr %1390, align 8, !tbaa !11
  %1391 = load double, ptr %86, align 8, !tbaa !11
  %1392 = load double, ptr %71, align 8, !tbaa !11
  %1393 = fmul double %1391, %1392
  store double %1393, ptr %62, align 8, !tbaa !11
  %1394 = load ptr, ptr %47, align 8, !tbaa !5
  %1395 = getelementptr inbounds double, ptr %1394, i64 1
  %1396 = load ptr, ptr %47, align 8, !tbaa !5
  %1397 = getelementptr inbounds double, ptr %1396, i64 5
  %1398 = load ptr, ptr %38, align 8, !tbaa !5
  %1399 = load i64, ptr %64, align 8, !tbaa !9
  %1400 = getelementptr inbounds double, ptr %1398, i64 %1399
  %1401 = load ptr, ptr %38, align 8, !tbaa !5
  %1402 = load i64, ptr %64, align 8, !tbaa !9
  %1403 = add nsw i64 %1402, 1
  %1404 = getelementptr inbounds double, ptr %1401, i64 %1403
  %1405 = load ptr, ptr %36, align 8, !tbaa !5
  %1406 = load i64, ptr %64, align 8, !tbaa !9
  %1407 = getelementptr inbounds double, ptr %1405, i64 %1406
  %1408 = load ptr, ptr %36, align 8, !tbaa !5
  %1409 = load i64, ptr %64, align 8, !tbaa !9
  %1410 = add nsw i64 %1409, 1
  %1411 = getelementptr inbounds double, ptr %1408, i64 %1410
  %1412 = load ptr, ptr %37, align 8, !tbaa !5
  %1413 = load i64, ptr %64, align 8, !tbaa !9
  %1414 = getelementptr inbounds double, ptr %1412, i64 %1413
  %1415 = call i32 @dlag2_(ptr noundef %1395, ptr noundef @c__2, ptr noundef %1397, ptr noundef @c__2, ptr noundef %62, ptr noundef %1400, ptr noundef %1404, ptr noundef %1407, ptr noundef %1411, ptr noundef %1414)
  %1416 = load ptr, ptr %37, align 8, !tbaa !5
  %1417 = load i64, ptr %64, align 8, !tbaa !9
  %1418 = getelementptr inbounds double, ptr %1416, i64 %1417
  %1419 = load double, ptr %1418, align 8, !tbaa !11
  %1420 = fneg double %1419
  %1421 = load ptr, ptr %37, align 8, !tbaa !5
  %1422 = load i64, ptr %64, align 8, !tbaa !9
  %1423 = add nsw i64 %1422, 1
  %1424 = getelementptr inbounds double, ptr %1421, i64 %1423
  store double %1420, ptr %1424, align 8, !tbaa !11
  br label %1526

1425:                                             ; preds = %1299
  %1426 = load ptr, ptr %34, align 8, !tbaa !5
  %1427 = load i64, ptr %64, align 8, !tbaa !9
  %1428 = load i64, ptr %64, align 8, !tbaa !9
  %1429 = load i64, ptr %54, align 8, !tbaa !9
  %1430 = mul nsw i64 %1428, %1429
  %1431 = add nsw i64 %1427, %1430
  %1432 = getelementptr inbounds double, ptr %1426, i64 %1431
  %1433 = call double @d_sign(ptr noundef @c_b28, ptr noundef %1432)
  %1434 = fcmp olt double %1433, 0.000000e+00
  br i1 %1434, label %1435, label %1500

1435:                                             ; preds = %1425
  %1436 = load ptr, ptr %31, align 8, !tbaa !5
  %1437 = load i64, ptr %1436, align 8, !tbaa !9
  store i64 %1437, ptr %61, align 8, !tbaa !9
  store i64 1, ptr %63, align 8, !tbaa !9
  br label %1438

1438:                                             ; preds = %1496, %1435
  %1439 = load i64, ptr %63, align 8, !tbaa !9
  %1440 = load i64, ptr %61, align 8, !tbaa !9
  %1441 = icmp sle i64 %1439, %1440
  br i1 %1441, label %1442, label %1499

1442:                                             ; preds = %1438
  %1443 = load ptr, ptr %32, align 8, !tbaa !5
  %1444 = load i64, ptr %64, align 8, !tbaa !9
  %1445 = load i64, ptr %63, align 8, !tbaa !9
  %1446 = load i64, ptr %52, align 8, !tbaa !9
  %1447 = mul nsw i64 %1445, %1446
  %1448 = add nsw i64 %1444, %1447
  %1449 = getelementptr inbounds double, ptr %1443, i64 %1448
  %1450 = load double, ptr %1449, align 8, !tbaa !11
  %1451 = fneg double %1450
  %1452 = load ptr, ptr %32, align 8, !tbaa !5
  %1453 = load i64, ptr %64, align 8, !tbaa !9
  %1454 = load i64, ptr %63, align 8, !tbaa !9
  %1455 = load i64, ptr %52, align 8, !tbaa !9
  %1456 = mul nsw i64 %1454, %1455
  %1457 = add nsw i64 %1453, %1456
  %1458 = getelementptr inbounds double, ptr %1452, i64 %1457
  store double %1451, ptr %1458, align 8, !tbaa !11
  %1459 = load ptr, ptr %34, align 8, !tbaa !5
  %1460 = load i64, ptr %64, align 8, !tbaa !9
  %1461 = load i64, ptr %63, align 8, !tbaa !9
  %1462 = load i64, ptr %54, align 8, !tbaa !9
  %1463 = mul nsw i64 %1461, %1462
  %1464 = add nsw i64 %1460, %1463
  %1465 = getelementptr inbounds double, ptr %1459, i64 %1464
  %1466 = load double, ptr %1465, align 8, !tbaa !11
  %1467 = fneg double %1466
  %1468 = load ptr, ptr %34, align 8, !tbaa !5
  %1469 = load i64, ptr %64, align 8, !tbaa !9
  %1470 = load i64, ptr %63, align 8, !tbaa !9
  %1471 = load i64, ptr %54, align 8, !tbaa !9
  %1472 = mul nsw i64 %1470, %1471
  %1473 = add nsw i64 %1469, %1472
  %1474 = getelementptr inbounds double, ptr %1468, i64 %1473
  store double %1467, ptr %1474, align 8, !tbaa !11
  %1475 = load ptr, ptr %28, align 8, !tbaa !5
  %1476 = load i64, ptr %1475, align 8, !tbaa !9
  %1477 = icmp ne i64 %1476, 0
  br i1 %1477, label %1478, label %1495

1478:                                             ; preds = %1442
  %1479 = load ptr, ptr %39, align 8, !tbaa !5
  %1480 = load i64, ptr %63, align 8, !tbaa !9
  %1481 = load i64, ptr %64, align 8, !tbaa !9
  %1482 = load i64, ptr %56, align 8, !tbaa !9
  %1483 = mul nsw i64 %1481, %1482
  %1484 = add nsw i64 %1480, %1483
  %1485 = getelementptr inbounds double, ptr %1479, i64 %1484
  %1486 = load double, ptr %1485, align 8, !tbaa !11
  %1487 = fneg double %1486
  %1488 = load ptr, ptr %39, align 8, !tbaa !5
  %1489 = load i64, ptr %63, align 8, !tbaa !9
  %1490 = load i64, ptr %64, align 8, !tbaa !9
  %1491 = load i64, ptr %56, align 8, !tbaa !9
  %1492 = mul nsw i64 %1490, %1491
  %1493 = add nsw i64 %1489, %1492
  %1494 = getelementptr inbounds double, ptr %1488, i64 %1493
  store double %1487, ptr %1494, align 8, !tbaa !11
  br label %1495

1495:                                             ; preds = %1478, %1442
  br label %1496

1496:                                             ; preds = %1495
  %1497 = load i64, ptr %63, align 8, !tbaa !9
  %1498 = add nsw i64 %1497, 1
  store i64 %1498, ptr %63, align 8, !tbaa !9
  br label %1438, !llvm.loop !17

1499:                                             ; preds = %1438
  br label %1500

1500:                                             ; preds = %1499, %1425
  %1501 = load ptr, ptr %32, align 8, !tbaa !5
  %1502 = load i64, ptr %64, align 8, !tbaa !9
  %1503 = load i64, ptr %64, align 8, !tbaa !9
  %1504 = load i64, ptr %52, align 8, !tbaa !9
  %1505 = mul nsw i64 %1503, %1504
  %1506 = add nsw i64 %1502, %1505
  %1507 = getelementptr inbounds double, ptr %1501, i64 %1506
  %1508 = load double, ptr %1507, align 8, !tbaa !11
  %1509 = load ptr, ptr %36, align 8, !tbaa !5
  %1510 = load i64, ptr %64, align 8, !tbaa !9
  %1511 = getelementptr inbounds double, ptr %1509, i64 %1510
  store double %1508, ptr %1511, align 8, !tbaa !11
  %1512 = load ptr, ptr %37, align 8, !tbaa !5
  %1513 = load i64, ptr %64, align 8, !tbaa !9
  %1514 = getelementptr inbounds double, ptr %1512, i64 %1513
  store double 0.000000e+00, ptr %1514, align 8, !tbaa !11
  %1515 = load ptr, ptr %34, align 8, !tbaa !5
  %1516 = load i64, ptr %64, align 8, !tbaa !9
  %1517 = load i64, ptr %64, align 8, !tbaa !9
  %1518 = load i64, ptr %54, align 8, !tbaa !9
  %1519 = mul nsw i64 %1517, %1518
  %1520 = add nsw i64 %1516, %1519
  %1521 = getelementptr inbounds double, ptr %1515, i64 %1520
  %1522 = load double, ptr %1521, align 8, !tbaa !11
  %1523 = load ptr, ptr %38, align 8, !tbaa !5
  %1524 = load i64, ptr %64, align 8, !tbaa !9
  %1525 = getelementptr inbounds double, ptr %1523, i64 %1524
  store double %1522, ptr %1525, align 8, !tbaa !11
  br label %1526

1526:                                             ; preds = %1500, %1302
  br label %1527

1527:                                             ; preds = %1526, %1280
  br label %1528

1528:                                             ; preds = %1527
  %1529 = load i64, ptr %64, align 8, !tbaa !9
  %1530 = add nsw i64 %1529, 1
  store i64 %1530, ptr %64, align 8, !tbaa !9
  br label %1273, !llvm.loop !18

1531:                                             ; preds = %1273
  %1532 = load i64, ptr %79, align 8, !tbaa !9
  %1533 = sitofp i64 %1532 to double
  %1534 = load ptr, ptr %47, align 8, !tbaa !5
  %1535 = getelementptr inbounds double, ptr %1534, i64 1
  store double %1533, ptr %1535, align 8, !tbaa !11
  %1536 = load i64, ptr %85, align 8, !tbaa !9
  %1537 = load ptr, ptr %49, align 8, !tbaa !5
  %1538 = getelementptr inbounds i64, ptr %1537, i64 1
  store i64 %1536, ptr %1538, align 8, !tbaa !9
  store i32 0, ptr %26, align 4
  store i32 1, ptr %88, align 4
  br label %1539

1539:                                             ; preds = %1531, %540, %532, %233
  call void @llvm.lifetime.end.p0(i64 8, ptr %87) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %86) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %85) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %84) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %83) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %82) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %81) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %80) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %79) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %78) #4
  call void @llvm.lifetime.end.p0(i64 24, 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 8, 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 8, ptr %70) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #4
  %1540 = load i32, ptr %26, align 4
  ret i32 %1540
}

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

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

declare double @dlamch_(ptr noundef) #2

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

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

declare i32 @dtgexc_(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 i32 @dlacpy_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

declare i32 @dtgsyl_(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, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

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

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

declare double @d_sign(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 = !{!"long", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"double", !7, i64 0}
!13 = distinct !{!13, !14}
!14 = !{!"llvm.loop.mustprogress"}
!15 = distinct !{!15, !14}
!16 = distinct !{!16, !14}
!17 = distinct !{!17, !14}
!18 = distinct !{!18, !14}


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

@.str = external hidden unnamed_addr constant [7 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [2 x i8], align 1
@c__1 = external hidden global i64, align 8
@.str.3 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [2 x i8], align 1
@c__2 = external hidden global i64, align 8
@c_b28 = external hidden global double, align 8

; Function Attrs: nounwind uwtable
define dso_local noundef i32 @dtgsen_(ptr nocapture noundef readonly %0, ptr noundef %1, ptr noundef %2, ptr nocapture noundef readonly %3, ptr noundef %4, ptr noundef %5, ptr noundef %6, ptr noundef %7, ptr noundef %8, ptr noundef %9, ptr noundef %10, ptr noundef %11, ptr noundef %12, ptr noundef %13, ptr noundef %14, ptr noundef %15, ptr nocapture noundef %16, ptr nocapture noundef %17, ptr nocapture noundef %18, ptr noundef %19, ptr noundef %20, ptr noundef %21, ptr noundef %22, ptr nocapture noundef readonly %23, ptr nocapture noundef %24) local_unnamed_addr #0 {
  %26 = alloca i64, align 8
  %27 = alloca double, align 8
  %28 = alloca i64, align 8
  %29 = alloca i64, align 8
  %30 = alloca i64, align 8
  %31 = alloca i64, align 8
  %32 = alloca i64, align 8
  %33 = alloca i64, align 8
  %34 = alloca i64, align 8
  %35 = alloca i64, align 8
  %36 = alloca double, align 8
  %37 = alloca [3 x i64], align 16
  %38 = alloca double, align 8
  %39 = alloca double, align 8
  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 8, 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 8, 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
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %35) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %36) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %37) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %38) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %39) #6
  %40 = getelementptr inbounds i8, ptr %3, i64 -8
  %41 = load i64, ptr %6, align 8, !tbaa !5
  %42 = xor i64 %41, -1
  %43 = getelementptr inbounds double, ptr %5, i64 %42
  %44 = load i64, ptr %8, align 8, !tbaa !5
  %45 = xor i64 %44, -1
  %46 = getelementptr inbounds double, ptr %7, i64 %45
  %47 = getelementptr inbounds i8, ptr %9, i64 -8
  %48 = getelementptr inbounds i8, ptr %10, i64 -8
  %49 = getelementptr inbounds i8, ptr %11, i64 -8
  %50 = load i64, ptr %13, align 8, !tbaa !5
  %51 = xor i64 %50, -1
  %52 = getelementptr inbounds double, ptr %12, i64 %51
  store i64 0, ptr %24, align 8, !tbaa !5
  %53 = load i64, ptr %21, align 8, !tbaa !5
  %54 = icmp eq i64 %53, -1
  br i1 %54, label %58, label %55

55:                                               ; preds = %25
  %56 = load i64, ptr %23, align 8, !tbaa !5
  %57 = icmp eq i64 %56, -1
  br label %58

58:                                               ; preds = %55, %25
  %59 = phi i1 [ true, %25 ], [ %57, %55 ]
  %60 = load i64, ptr %0, align 8, !tbaa !5
  %or.cond574 = icmp ugt i64 %60, 5
  br i1 %or.cond574, label %.thread, label %61

61:                                               ; preds = %58
  %62 = load i64, ptr %4, align 8, !tbaa !5
  %63 = icmp slt i64 %62, 0
  br i1 %63, label %.thread, label %64

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

67:                                               ; preds = %64
  %68 = load i64, ptr %8, align 8, !tbaa !5
  %69 = icmp slt i64 %68, %spec.select
  br i1 %69, label %.thread, label %70

70:                                               ; preds = %67
  %71 = load i64, ptr %13, align 8, !tbaa !5
  %72 = icmp slt i64 %71, 1
  br i1 %72, label %.thread, label %73

73:                                               ; preds = %70
  %74 = load i64, ptr %1, align 8, !tbaa !5
  %.not = icmp ne i64 %74, 0
  %75 = icmp ult i64 %71, %62
  %or.cond585 = and i1 %75, %.not
  br i1 %or.cond585, label %.thread, label %76

76:                                               ; preds = %73
  %77 = load i64, ptr %15, align 8, !tbaa !5
  %78 = icmp slt i64 %77, 1
  br i1 %78, label %.thread, label %79

79:                                               ; preds = %76
  %80 = load i64, ptr %2, align 8, !tbaa !5
  %.not548 = icmp ne i64 %80, 0
  %81 = icmp ult i64 %77, %62
  %or.cond586 = and i1 %81, %.not548
  br i1 %or.cond586, label %.thread, label %83

.thread:                                          ; preds = %76, %79, %70, %73, %67, %64, %61, %58
  %.sink = phi i64 [ -1, %58 ], [ -5, %61 ], [ -7, %64 ], [ -9, %67 ], [ -14, %73 ], [ -14, %70 ], [ -16, %79 ], [ -16, %76 ]
  %.neg = phi i64 [ 1, %58 ], [ 5, %61 ], [ 7, %64 ], [ 9, %67 ], [ 14, %73 ], [ 14, %70 ], [ 16, %79 ], [ 16, %76 ]
  store i64 %.sink, ptr %24, align 8, !tbaa !5
  store i64 %.neg, ptr %26, align 8, !tbaa !5
  %82 = call i32 @xerbla_(ptr noundef nonnull @.str, ptr noundef nonnull %26) #6
  br label %535

83:                                               ; preds = %79
  %84 = tail call double @dlamch_(ptr noundef nonnull @.str.1) #6
  %85 = tail call double @dlamch_(ptr noundef nonnull @.str.2) #6
  %86 = fdiv double %85, %84
  store i64 0, ptr %35, align 8, !tbaa !5
  %87 = load i64, ptr %0, align 8, !tbaa !5
  %88 = icmp eq i64 %87, 1
  %89 = icmp sgt i64 %87, 3
  %spec.select576 = or i1 %88, %89
  store i64 0, ptr %16, align 8, !tbaa !5
  %90 = load i64, ptr %4, align 8, !tbaa !5
  %invariant.gep = getelementptr i8, ptr %43, i64 8
  %.not550589 = icmp slt i64 %90, 1
  br i1 %.not550589, label %._crit_edge, label %.lr.ph

.lr.ph:                                           ; preds = %83, %111
  %91 = phi i64 [ %112, %111 ], [ 0, %83 ]
  %.0526592 = phi i64 [ %.1, %111 ], [ 0, %83 ]
  %.0527590 = phi i64 [ %113, %111 ], [ 1, %83 ]
  %.not569 = icmp eq i64 %.0526592, 0
  br i1 %.not569, label %92, label %111

92:                                               ; preds = %.lr.ph
  %93 = load i64, ptr %4, align 8, !tbaa !5
  %94 = icmp slt i64 %.0527590, %93
  br i1 %94, label %95, label %107

95:                                               ; preds = %92
  %96 = mul nsw i64 %.0527590, %41
  %gep = getelementptr double, ptr %invariant.gep, i64 %.0527590
  %97 = getelementptr double, ptr %gep, i64 %96
  %98 = load double, ptr %97, align 8, !tbaa !9
  %99 = fcmp oeq double %98, 0.000000e+00
  %100 = getelementptr inbounds i64, ptr %40, i64 %.0527590
  %101 = load i64, ptr %100, align 8, !tbaa !5
  %.not573 = icmp eq i64 %101, 0
  br i1 %99, label %102, label %103

102:                                              ; preds = %95
  br i1 %.not573, label %111, label %.sink.split

103:                                              ; preds = %95
  br i1 %.not573, label %104, label %.sink.split

104:                                              ; preds = %103
  %105 = getelementptr i64, ptr %3, i64 %.0527590
  %106 = load i64, ptr %105, align 8, !tbaa !5
  %.not572 = icmp eq i64 %106, 0
  br i1 %.not572, label %111, label %.sink.split

107:                                              ; preds = %92
  %108 = getelementptr inbounds i64, ptr %40, i64 %93
  %109 = load i64, ptr %108, align 8, !tbaa !5
  %.not570 = icmp eq i64 %109, 0
  br i1 %.not570, label %111, label %.sink.split

.sink.split:                                      ; preds = %107, %103, %104, %102
  %.sink634 = phi i64 [ 1, %102 ], [ 2, %104 ], [ 2, %103 ], [ 1, %107 ]
  %.1.ph = phi i64 [ 0, %102 ], [ 1, %104 ], [ 1, %103 ], [ 0, %107 ]
  %110 = add nsw i64 %91, %.sink634
  store i64 %110, ptr %16, align 8, !tbaa !5
  br label %111

111:                                              ; preds = %.sink.split, %.lr.ph, %107, %102, %104
  %112 = phi i64 [ %91, %102 ], [ %91, %104 ], [ %91, %107 ], [ %91, %.lr.ph ], [ %110, %.sink.split ]
  %.1 = phi i64 [ 0, %102 ], [ 1, %104 ], [ 0, %107 ], [ 0, %.lr.ph ], [ %.1.ph, %.sink.split ]
  %113 = add nuw i64 %.0527590, 1
  %exitcond.not = icmp eq i64 %.0527590, %90
  br i1 %exitcond.not, label %._crit_edge, label %.lr.ph, !llvm.loop !11

._crit_edge:                                      ; preds = %111, %83
  %114 = phi i64 [ 0, %83 ], [ %112, %111 ]
  %115 = load i64, ptr %0, align 8, !tbaa !5
  switch i64 %115, label %144 [
    i64 1, label %116
    i64 2, label %116
    i64 4, label %116
    i64 3, label %129
    i64 5, label %129
  ]

116:                                              ; preds = %._crit_edge, %._crit_edge, %._crit_edge
  %117 = load i64, ptr %4, align 8, !tbaa !5
  %118 = shl i64 %117, 2
  %119 = add nsw i64 %118, 16
  %120 = icmp slt i64 %118, -14
  %121 = select i1 %120, i64 1, i64 %119
  %122 = shl i64 %114, 1
  %123 = sub nsw i64 %117, %114
  %124 = mul nsw i64 %122, %123
  %125 = tail call i64 @llvm.smax.i64(i64 %121, i64 %124)
  %126 = add nsw i64 %117, 6
  %127 = icmp slt i64 %117, -4
  %128 = select i1 %127, i64 1, i64 %126
  br label %150

129:                                              ; preds = %._crit_edge, %._crit_edge
  %130 = load i64, ptr %4, align 8, !tbaa !5
  %131 = shl i64 %130, 2
  %132 = add nsw i64 %131, 16
  %133 = icmp slt i64 %131, -14
  %134 = select i1 %133, i64 1, i64 %132
  %135 = shl i64 %114, 2
  %136 = sub nsw i64 %130, %114
  %137 = mul nsw i64 %135, %136
  %138 = tail call i64 @llvm.smax.i64(i64 %134, i64 %137)
  %139 = shl i64 %114, 1
  %140 = mul nsw i64 %139, %136
  %141 = add nsw i64 %130, 6
  %142 = tail call i64 @llvm.smax.i64(i64 %140, i64 %141)
  %143 = tail call i64 @llvm.smax.i64(i64 %142, i64 1)
  br label %150

144:                                              ; preds = %._crit_edge
  %145 = load i64, ptr %4, align 8, !tbaa !5
  %146 = shl i64 %145, 2
  %147 = add nsw i64 %146, 16
  %148 = icmp slt i64 %146, -14
  %149 = select i1 %148, i64 1, i64 %147
  br label %150

150:                                              ; preds = %129, %144, %116
  %.0524 = phi i64 [ %125, %116 ], [ %138, %129 ], [ %149, %144 ]
  %.0523 = phi i64 [ %128, %116 ], [ %143, %129 ], [ 1, %144 ]
  %151 = sitofp i64 %.0524 to double
  store double %151, ptr %20, align 8, !tbaa !9
  store i64 %.0523, ptr %22, align 8, !tbaa !5
  %152 = load i64, ptr %21, align 8, !tbaa !5
  %153 = icmp sge i64 %152, %.0524
  %or.cond = select i1 %153, i1 true, i1 %59
  br i1 %or.cond, label %154, label %.thread583.sink.split

154:                                              ; preds = %150
  %155 = load i64, ptr %23, align 8, !tbaa !5
  %156 = icmp sge i64 %155, %.0523
  %or.cond3 = select i1 %156, i1 true, i1 %59
  br i1 %or.cond3, label %157, label %.thread583.sink.split

157:                                              ; preds = %154
  %.pr580 = load i64, ptr %24, align 8, !tbaa !5
  %.not554 = icmp eq i64 %.pr580, 0
  br i1 %.not554, label %161, label %.thread583

.thread583.sink.split:                            ; preds = %154, %150
  %.sink635 = phi i64 [ -22, %150 ], [ -24, %154 ]
  store i64 %.sink635, ptr %24, align 8, !tbaa !5
  br label %.thread583

.thread583:                                       ; preds = %.thread583.sink.split, %157
  %158 = phi i64 [ %.pr580, %157 ], [ %.sink635, %.thread583.sink.split ]
  %159 = sub nsw i64 0, %158
  store i64 %159, ptr %26, align 8, !tbaa !5
  %160 = call i32 @xerbla_(ptr noundef nonnull @.str, ptr noundef nonnull %26) #6
  br label %535

161:                                              ; preds = %157
  br i1 %59, label %535, label %162

162:                                              ; preds = %161
  %163 = load i64, ptr %16, align 8, !tbaa !5
  %164 = load i64, ptr %4, align 8, !tbaa !5
  %165 = icmp eq i64 %163, %164
  %166 = icmp eq i64 %163, 0
  %or.cond577 = or i1 %166, %165
  br i1 %or.cond577, label %167, label %182

167:                                              ; preds = %162
  br i1 %spec.select576, label %168, label %169

168:                                              ; preds = %167
  store double 1.000000e+00, ptr %17, align 8, !tbaa !9
  store double 1.000000e+00, ptr %18, align 8, !tbaa !9
  br label %169

169:                                              ; preds = %168, %167
  %.off = add i64 %87, -2
  %switch = icmp ult i64 %.off, 4
  br i1 %switch, label %170, label %397

170:                                              ; preds = %169
  store double 0.000000e+00, ptr %38, align 8, !tbaa !9
  store double 1.000000e+00, ptr %36, align 8, !tbaa !9
  store i64 %164, ptr %26, align 8, !tbaa !5
  %invariant.gep605 = getelementptr i8, ptr %46, i64 8
  %.not563607 = icmp slt i64 %164, 1
  br i1 %.not563607, label %._crit_edge611, label %.lr.ph610

.lr.ph610:                                        ; preds = %170, %.lr.ph610
  %.0530608 = phi i64 [ %175, %.lr.ph610 ], [ 1, %170 ]
  %171 = mul nsw i64 %.0530608, %41
  %gep604 = getelementptr double, ptr %invariant.gep, i64 %171
  %172 = call i32 @dlassq_(ptr noundef nonnull %4, ptr noundef %gep604, ptr noundef nonnull @c__1, ptr noundef nonnull %38, ptr noundef nonnull %36) #6
  %173 = mul nsw i64 %.0530608, %44
  %gep606 = getelementptr double, ptr %invariant.gep605, i64 %173
  %174 = call i32 @dlassq_(ptr noundef nonnull %4, ptr noundef %gep606, ptr noundef nonnull @c__1, ptr noundef nonnull %38, ptr noundef nonnull %36) #6
  %175 = add nuw nsw i64 %.0530608, 1
  %176 = load i64, ptr %26, align 8, !tbaa !5
  %.not563.not = icmp slt i64 %.0530608, %176
  br i1 %.not563.not, label %.lr.ph610, label %._crit_edge611.loopexit, !llvm.loop !13

._crit_edge611.loopexit:                          ; preds = %.lr.ph610
  %.pre630 = load double, ptr %38, align 8, !tbaa !9
  %.pre631 = load double, ptr %36, align 8, !tbaa !9
  br label %._crit_edge611

._crit_edge611:                                   ; preds = %._crit_edge611.loopexit, %170
  %177 = phi double [ %.pre631, %._crit_edge611.loopexit ], [ 1.000000e+00, %170 ]
  %178 = phi double [ %.pre630, %._crit_edge611.loopexit ], [ 0.000000e+00, %170 ]
  %179 = call double @sqrt(double noundef %177) #6
  %180 = fmul double %178, %179
  store double %180, ptr %19, align 8, !tbaa !9
  %181 = getelementptr inbounds i8, ptr %19, i64 8
  store double %180, ptr %181, align 8, !tbaa !9
  br label %397

182:                                              ; preds = %162
  store i64 0, ptr %31, align 8, !tbaa !5
  store i64 %164, ptr %26, align 8, !tbaa !5
  %.not555595 = icmp slt i64 %164, 1
  br i1 %.not555595, label %._crit_edge602, label %.lr.ph601

.lr.ph601:                                        ; preds = %182, %219
  %183 = phi i64 [ %220, %219 ], [ 0, %182 ]
  %.2599 = phi i64 [ %.4, %219 ], [ 0, %182 ]
  %.1528596 = phi i64 [ %221, %219 ], [ 1, %182 ]
  %.not558 = icmp eq i64 %.2599, 0
  br i1 %.not558, label %184, label %219

184:                                              ; preds = %.lr.ph601
  %185 = getelementptr inbounds i64, ptr %40, i64 %.1528596
  %186 = load i64, ptr %185, align 8, !tbaa !5
  %187 = load i64, ptr %4, align 8, !tbaa !5
  %188 = icmp slt i64 %.1528596, %187
  br i1 %188, label %189, label %202

189:                                              ; preds = %184
  %190 = mul nsw i64 %.1528596, %41
  %gep594 = getelementptr double, ptr %invariant.gep, i64 %.1528596
  %191 = getelementptr double, ptr %gep594, i64 %190
  %192 = load double, ptr %191, align 8, !tbaa !9
  %193 = fcmp une double %192, 0.000000e+00
  br i1 %193, label %194, label %202

194:                                              ; preds = %189
  %.not559 = icmp eq i64 %186, 0
  br i1 %.not559, label %195, label %199

195:                                              ; preds = %194
  %196 = getelementptr i64, ptr %3, i64 %.1528596
  %197 = load i64, ptr %196, align 8, !tbaa !5
  %198 = icmp ne i64 %197, 0
  br label %199

199:                                              ; preds = %195, %194
  %200 = phi i1 [ true, %194 ], [ %198, %195 ]
  %201 = zext i1 %200 to i64
  br label %202

202:                                              ; preds = %189, %199, %184
  %.not562 = phi i1 [ false, %199 ], [ true, %189 ], [ true, %184 ]
  %.3 = phi i64 [ 1, %199 ], [ 0, %189 ], [ 0, %184 ]
  %.0525 = phi i64 [ %201, %199 ], [ %186, %189 ], [ %186, %184 ]
  %.not560 = icmp eq i64 %.0525, 0
  br i1 %.not560, label %219, label %203

203:                                              ; preds = %202
  %204 = load i64, ptr %31, align 8, !tbaa !5
  %205 = add nsw i64 %204, 1
  store i64 %205, ptr %31, align 8, !tbaa !5
  store i64 %.1528596, ptr %30, align 8, !tbaa !5
  %.not561 = icmp eq i64 %.1528596, %205
  br i1 %.not561, label %208, label %206

206:                                              ; preds = %203
  %207 = call i32 @dtgexc_(ptr noundef nonnull %1, ptr noundef nonnull %2, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %7, ptr noundef nonnull %8, ptr noundef %12, ptr noundef nonnull %13, ptr noundef %14, ptr noundef nonnull %15, ptr noundef nonnull %30, ptr noundef nonnull %31, ptr noundef nonnull %20, ptr noundef nonnull %21, ptr noundef nonnull %35) #6
  %.pre = load i64, ptr %35, align 8, !tbaa !5
  br label %208

208:                                              ; preds = %206, %203
  %209 = phi i64 [ %.pre, %206 ], [ %183, %203 ]
  %210 = icmp sgt i64 %209, 0
  br i1 %210, label %211, label %215

211:                                              ; preds = %208
  store i64 1, ptr %24, align 8, !tbaa !5
  br i1 %spec.select576, label %212, label %213

212:                                              ; preds = %211
  store double 0.000000e+00, ptr %17, align 8, !tbaa !9
  store double 0.000000e+00, ptr %18, align 8, !tbaa !9
  br label %213

213:                                              ; preds = %212, %211
  %.off587 = add i64 %87, -2
  %switch588 = icmp ult i64 %.off587, 4
  br i1 %switch588, label %214, label %397

214:                                              ; preds = %213
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %19, i8 0, i64 16, i1 false)
  br label %397

215:                                              ; preds = %208
  br i1 %.not562, label %219, label %216

216:                                              ; preds = %215
  %217 = load i64, ptr %31, align 8, !tbaa !5
  %218 = add nsw i64 %217, 1
  store i64 %218, ptr %31, align 8, !tbaa !5
  br label %219

219:                                              ; preds = %.lr.ph601, %215, %216, %202
  %220 = phi i64 [ %209, %216 ], [ %209, %215 ], [ %183, %202 ], [ %183, %.lr.ph601 ]
  %.4 = phi i64 [ 1, %216 ], [ 0, %215 ], [ %.3, %202 ], [ 0, %.lr.ph601 ]
  %221 = add nuw nsw i64 %.1528596, 1
  %222 = load i64, ptr %26, align 8, !tbaa !5
  %.not555.not = icmp slt i64 %.1528596, %222
  br i1 %.not555.not, label %.lr.ph601, label %._crit_edge602, !llvm.loop !14

._crit_edge602:                                   ; preds = %219, %182
  br i1 %spec.select576, label %223, label %294

223:                                              ; preds = %._crit_edge602
  %224 = load i64, ptr %16, align 8, !tbaa !5
  store i64 %224, ptr %28, align 8, !tbaa !5
  %225 = load i64, ptr %4, align 8, !tbaa !5
  %226 = sub nsw i64 %225, %224
  store i64 %226, ptr %29, align 8, !tbaa !5
  %227 = add nsw i64 %224, 1
  store i64 0, ptr %33, align 8, !tbaa !5
  %228 = mul nsw i64 %227, %41
  %229 = getelementptr double, ptr %43, i64 %228
  %230 = getelementptr i8, ptr %229, i64 8
  %231 = call i32 @dlacpy_(ptr noundef nonnull @.str.3, ptr noundef nonnull %28, ptr noundef nonnull %29, ptr noundef %230, ptr noundef nonnull %6, ptr noundef nonnull %20, ptr noundef nonnull %28) #6
  %232 = mul nsw i64 %227, %44
  %233 = getelementptr double, ptr %46, i64 %232
  %234 = getelementptr i8, ptr %233, i64 8
  %235 = load i64, ptr %28, align 8, !tbaa !5
  %236 = load i64, ptr %29, align 8, !tbaa !5
  %237 = mul nsw i64 %236, %235
  %238 = getelementptr double, ptr %20, i64 %237
  %239 = call i32 @dlacpy_(ptr noundef nonnull @.str.3, ptr noundef nonnull %28, ptr noundef nonnull %29, ptr noundef %234, ptr noundef nonnull %8, ptr noundef %238, ptr noundef nonnull %28) #6
  %240 = load i64, ptr %21, align 8, !tbaa !5
  %241 = load i64, ptr %28, align 8, !tbaa !5
  %242 = shl i64 %241, 1
  %243 = load i64, ptr %29, align 8, !tbaa !5
  %244 = mul nsw i64 %242, %243
  %245 = sub nsw i64 %240, %244
  store i64 %245, ptr %26, align 8, !tbaa !5
  %246 = getelementptr double, ptr %43, i64 %227
  %247 = getelementptr double, ptr %246, i64 %228
  %248 = getelementptr double, ptr %46, i64 %227
  %249 = getelementptr double, ptr %248, i64 %232
  %250 = mul nsw i64 %243, %241
  %251 = getelementptr double, ptr %20, i64 %250
  %.idx = shl i64 %250, 4
  %252 = getelementptr i8, ptr %20, i64 %.idx
  %253 = call i32 @dtgsyl_(ptr noundef nonnull @.str.4, ptr noundef nonnull %33, ptr noundef nonnull %28, ptr noundef nonnull %29, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %247, ptr noundef nonnull %6, ptr noundef nonnull %20, ptr noundef nonnull %28, ptr noundef %7, ptr noundef nonnull %8, ptr noundef %249, ptr noundef nonnull %8, ptr noundef %251, ptr noundef nonnull %28, ptr noundef nonnull %38, ptr noundef %19, ptr noundef %252, ptr noundef nonnull %26, ptr noundef nonnull %22, ptr noundef nonnull %35) #6
  store double 0.000000e+00, ptr %39, align 8, !tbaa !9
  store double 1.000000e+00, ptr %36, align 8, !tbaa !9
  %254 = load i64, ptr %28, align 8, !tbaa !5
  %255 = load i64, ptr %29, align 8, !tbaa !5
  %256 = mul nsw i64 %255, %254
  store i64 %256, ptr %26, align 8, !tbaa !5
  %257 = call i32 @dlassq_(ptr noundef nonnull %26, ptr noundef nonnull %20, ptr noundef nonnull @c__1, ptr noundef nonnull %39, ptr noundef nonnull %36) #6
  %258 = load double, ptr %39, align 8, !tbaa !9
  %259 = load double, ptr %36, align 8, !tbaa !9
  %260 = call double @sqrt(double noundef %259) #6
  %261 = fmul double %258, %260
  store double %261, ptr %17, align 8, !tbaa !9
  %262 = fcmp oeq double %261, 0.000000e+00
  br i1 %262, label %273, label %263

263:                                              ; preds = %223
  %264 = load double, ptr %38, align 8, !tbaa !9
  %265 = fmul double %264, %264
  %266 = fdiv double %265, %261
  %267 = fadd double %261, %266
  %268 = call double @sqrt(double noundef %267) #6
  %269 = load double, ptr %17, align 8, !tbaa !9
  %270 = call double @sqrt(double noundef %269) #6
  %271 = fmul double %268, %270
  %272 = fdiv double %264, %271
  br label %273

273:                                              ; preds = %223, %263
  %storemerge = phi double [ %272, %263 ], [ 1.000000e+00, %223 ]
  store double %storemerge, ptr %17, align 8, !tbaa !9
  store double 0.000000e+00, ptr %39, align 8, !tbaa !9
  store double 1.000000e+00, ptr %36, align 8, !tbaa !9
  %274 = load i64, ptr %28, align 8, !tbaa !5
  %275 = load i64, ptr %29, align 8, !tbaa !5
  %276 = mul nsw i64 %275, %274
  store i64 %276, ptr %26, align 8, !tbaa !5
  %277 = getelementptr double, ptr %20, i64 %276
  %278 = call i32 @dlassq_(ptr noundef nonnull %26, ptr noundef %277, ptr noundef nonnull @c__1, ptr noundef nonnull %39, ptr noundef nonnull %36) #6
  %279 = load double, ptr %39, align 8, !tbaa !9
  %280 = load double, ptr %36, align 8, !tbaa !9
  %281 = call double @sqrt(double noundef %280) #6
  %282 = fmul double %279, %281
  store double %282, ptr %18, align 8, !tbaa !9
  %283 = fcmp oeq double %282, 0.000000e+00
  br i1 %283, label %.sink.split636, label %284

284:                                              ; preds = %273
  %285 = load double, ptr %38, align 8, !tbaa !9
  %286 = fmul double %285, %285
  %287 = fdiv double %286, %282
  %288 = fadd double %282, %287
  %289 = call double @sqrt(double noundef %288) #6
  %290 = load double, ptr %18, align 8, !tbaa !9
  %291 = call double @sqrt(double noundef %290) #6
  %292 = fmul double %289, %291
  %293 = fdiv double %285, %292
  br label %.sink.split636

.sink.split636:                                   ; preds = %273, %284
  %.sink637 = phi double [ %293, %284 ], [ 1.000000e+00, %273 ]
  store double %.sink637, ptr %18, align 8, !tbaa !9
  br label %294

294:                                              ; preds = %.sink.split636, %._crit_edge602
  switch i64 %87, label %397 [
    i64 4, label %295
    i64 2, label %295
    i64 3, label %325
    i64 5, label %325
  ]

295:                                              ; preds = %294, %294
  %296 = load i64, ptr %16, align 8, !tbaa !5
  store i64 %296, ptr %28, align 8, !tbaa !5
  %297 = load i64, ptr %4, align 8, !tbaa !5
  %298 = sub nsw i64 %297, %296
  store i64 %298, ptr %29, align 8, !tbaa !5
  %299 = add nsw i64 %296, 1
  store i64 3, ptr %33, align 8, !tbaa !5
  %300 = load i64, ptr %21, align 8, !tbaa !5
  %301 = shl i64 %296, 1
  %302 = mul nsw i64 %298, %301
  %303 = sub nsw i64 %300, %302
  store i64 %303, ptr %26, align 8, !tbaa !5
  %304 = add i64 %41, 1
  %305 = mul i64 %299, %304
  %306 = getelementptr inbounds double, ptr %43, i64 %305
  %307 = add i64 %44, 1
  %308 = mul i64 %299, %307
  %309 = getelementptr inbounds double, ptr %46, i64 %308
  %310 = mul nsw i64 %298, %296
  %311 = getelementptr double, ptr %20, i64 %310
  %312 = getelementptr double, ptr %20, i64 %302
  %313 = call i32 @dtgsyl_(ptr noundef nonnull @.str.4, ptr noundef nonnull %33, ptr noundef nonnull %28, ptr noundef nonnull %29, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %306, ptr noundef nonnull %6, ptr noundef nonnull %20, ptr noundef nonnull %28, ptr noundef %7, ptr noundef nonnull %8, ptr noundef %309, ptr noundef nonnull %8, ptr noundef %311, ptr noundef nonnull %28, ptr noundef nonnull %38, ptr noundef %19, ptr noundef %312, ptr noundef nonnull %26, ptr noundef nonnull %22, ptr noundef nonnull %35) #6
  %314 = load i64, ptr %21, align 8, !tbaa !5
  %315 = load i64, ptr %28, align 8, !tbaa !5
  %316 = shl i64 %315, 1
  %317 = load i64, ptr %29, align 8, !tbaa !5
  %318 = mul nsw i64 %316, %317
  %319 = sub nsw i64 %314, %318
  store i64 %319, ptr %26, align 8, !tbaa !5
  %320 = mul nsw i64 %317, %315
  %321 = getelementptr double, ptr %20, i64 %320
  %322 = getelementptr inbounds i8, ptr %19, i64 8
  %323 = getelementptr double, ptr %20, i64 %318
  %324 = call i32 @dtgsyl_(ptr noundef nonnull @.str.4, ptr noundef nonnull %33, ptr noundef nonnull %29, ptr noundef nonnull %28, ptr noundef %306, ptr noundef nonnull %6, ptr noundef %5, ptr noundef nonnull %6, ptr noundef nonnull %20, ptr noundef nonnull %29, ptr noundef %309, ptr noundef nonnull %8, ptr noundef %7, ptr noundef nonnull %8, ptr noundef %321, ptr noundef nonnull %29, ptr noundef nonnull %38, ptr noundef nonnull %322, ptr noundef %323, ptr noundef nonnull %26, ptr noundef nonnull %22, ptr noundef nonnull %35) #6
  br label %397

325:                                              ; preds = %294, %294
  store i64 0, ptr %34, align 8, !tbaa !5
  %326 = load i64, ptr %16, align 8, !tbaa !5
  store i64 %326, ptr %28, align 8, !tbaa !5
  %327 = load i64, ptr %4, align 8, !tbaa !5
  %328 = sub nsw i64 %327, %326
  store i64 %328, ptr %29, align 8, !tbaa !5
  %329 = add nsw i64 %326, 1
  store i64 0, ptr %33, align 8, !tbaa !5
  %330 = shl i64 %326, 1
  %331 = mul nsw i64 %330, %328
  store i64 %331, ptr %32, align 8, !tbaa !5
  %332 = add i64 %41, 1
  %333 = mul i64 %329, %332
  %334 = getelementptr inbounds double, ptr %43, i64 %333
  %335 = add i64 %44, 1
  %336 = mul i64 %329, %335
  %337 = getelementptr inbounds double, ptr %46, i64 %336
  br label %338

338:                                              ; preds = %359, %325
  %339 = phi i64 [ %.pre629, %359 ], [ %331, %325 ]
  %340 = getelementptr double, ptr %20, i64 %339
  %341 = call i32 @dlacn2_(ptr noundef nonnull %32, ptr noundef %340, ptr noundef nonnull %20, ptr noundef nonnull %22, ptr noundef %19, ptr noundef nonnull %34, ptr noundef nonnull %37) #6
  %342 = load i64, ptr %34, align 8, !tbaa !5
  switch i64 %342, label %351 [
    i64 0, label %363
    i64 1, label %343
  ]

343:                                              ; preds = %338
  %344 = load i64, ptr %21, align 8, !tbaa !5
  %345 = load i64, ptr %28, align 8, !tbaa !5
  %346 = shl i64 %345, 1
  %347 = load i64, ptr %29, align 8, !tbaa !5
  %348 = mul nsw i64 %346, %347
  %349 = sub nsw i64 %344, %348
  store i64 %349, ptr %26, align 8, !tbaa !5
  %350 = mul nsw i64 %347, %345
  br label %359

351:                                              ; preds = %338
  %352 = load i64, ptr %21, align 8, !tbaa !5
  %353 = load i64, ptr %28, align 8, !tbaa !5
  %354 = shl i64 %353, 1
  %355 = load i64, ptr %29, align 8, !tbaa !5
  %356 = mul nsw i64 %354, %355
  %357 = sub nsw i64 %352, %356
  store i64 %357, ptr %26, align 8, !tbaa !5
  %358 = mul nsw i64 %355, %353
  br label %359

359:                                              ; preds = %351, %343
  %.sink641 = phi i64 [ %358, %351 ], [ %350, %343 ]
  %.sink640 = phi i64 [ %356, %351 ], [ %348, %343 ]
  %.str.5.sink = phi ptr [ @.str.5, %351 ], [ @.str.4, %343 ]
  %360 = getelementptr double, ptr %20, i64 %.sink641
  %361 = getelementptr double, ptr %20, i64 %.sink640
  %362 = call i32 @dtgsyl_(ptr noundef nonnull %.str.5.sink, ptr noundef nonnull %33, ptr noundef nonnull %28, ptr noundef nonnull %29, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %334, ptr noundef nonnull %6, ptr noundef nonnull %20, ptr noundef nonnull %28, ptr noundef %7, ptr noundef nonnull %8, ptr noundef %337, ptr noundef nonnull %8, ptr noundef %360, ptr noundef nonnull %28, ptr noundef nonnull %38, ptr noundef %19, ptr noundef %361, ptr noundef nonnull %26, ptr noundef nonnull %22, ptr noundef nonnull %35) #6
  %.pre629 = load i64, ptr %32, align 8, !tbaa !5
  br label %338

363:                                              ; preds = %338
  %364 = load double, ptr %38, align 8, !tbaa !9
  %365 = load double, ptr %19, align 8, !tbaa !9
  %366 = fdiv double %364, %365
  store double %366, ptr %19, align 8, !tbaa !9
  %367 = getelementptr inbounds i8, ptr %19, i64 8
  br label %368

368:                                              ; preds = %389, %363
  %369 = load i64, ptr %32, align 8, !tbaa !5
  %370 = getelementptr double, ptr %20, i64 %369
  %371 = call i32 @dlacn2_(ptr noundef nonnull %32, ptr noundef %370, ptr noundef nonnull %20, ptr noundef nonnull %22, ptr noundef nonnull %367, ptr noundef nonnull %34, ptr noundef nonnull %37) #6
  %372 = load i64, ptr %34, align 8, !tbaa !5
  switch i64 %372, label %381 [
    i64 0, label %393
    i64 1, label %373
  ]

373:                                              ; preds = %368
  %374 = load i64, ptr %21, align 8, !tbaa !5
  %375 = load i64, ptr %28, align 8, !tbaa !5
  %376 = shl i64 %375, 1
  %377 = load i64, ptr %29, align 8, !tbaa !5
  %378 = mul nsw i64 %376, %377
  %379 = sub nsw i64 %374, %378
  store i64 %379, ptr %26, align 8, !tbaa !5
  %380 = mul nsw i64 %377, %375
  br label %389

381:                                              ; preds = %368
  %382 = load i64, ptr %21, align 8, !tbaa !5
  %383 = load i64, ptr %28, align 8, !tbaa !5
  %384 = shl i64 %383, 1
  %385 = load i64, ptr %29, align 8, !tbaa !5
  %386 = mul nsw i64 %384, %385
  %387 = sub nsw i64 %382, %386
  store i64 %387, ptr %26, align 8, !tbaa !5
  %388 = mul nsw i64 %385, %383
  br label %389

389:                                              ; preds = %381, %373
  %.sink646 = phi i64 [ %388, %381 ], [ %380, %373 ]
  %.sink645 = phi i64 [ %386, %381 ], [ %378, %373 ]
  %.str.5.sink642 = phi ptr [ @.str.5, %381 ], [ @.str.4, %373 ]
  %390 = getelementptr double, ptr %20, i64 %.sink646
  %391 = getelementptr double, ptr %20, i64 %.sink645
  %392 = call i32 @dtgsyl_(ptr noundef nonnull %.str.5.sink642, ptr noundef nonnull %33, ptr noundef nonnull %29, ptr noundef nonnull %28, ptr noundef %334, ptr noundef nonnull %6, ptr noundef %5, ptr noundef nonnull %6, ptr noundef nonnull %20, ptr noundef nonnull %29, ptr noundef %337, ptr noundef nonnull %8, ptr noundef %7, ptr noundef nonnull %8, ptr noundef %390, ptr noundef nonnull %29, ptr noundef nonnull %38, ptr noundef nonnull %367, ptr noundef %391, ptr noundef nonnull %26, ptr noundef nonnull %22, ptr noundef nonnull %35) #6
  br label %368

393:                                              ; preds = %368
  %394 = load double, ptr %38, align 8, !tbaa !9
  %395 = load double, ptr %367, align 8, !tbaa !9
  %396 = fdiv double %394, %395
  store double %396, ptr %367, align 8, !tbaa !9
  br label %397

397:                                              ; preds = %213, %169, %294, %393, %295, %214, %._crit_edge611
  %398 = load i64, ptr %4, align 8, !tbaa !5
  store i64 %398, ptr %26, align 8, !tbaa !5
  %.not564618 = icmp slt i64 %398, 1
  br i1 %.not564618, label %._crit_edge625, label %.lr.ph624

.lr.ph624:                                        ; preds = %397
  %399 = add i64 %44, 1
  %400 = add i64 %41, 1
  %401 = getelementptr inbounds i8, ptr %20, i64 8
  %402 = getelementptr inbounds i8, ptr %20, i64 16
  %403 = getelementptr inbounds i8, ptr %20, i64 24
  %404 = getelementptr inbounds i8, ptr %20, i64 32
  %405 = getelementptr inbounds i8, ptr %20, i64 40
  %406 = getelementptr inbounds i8, ptr %20, i64 48
  %407 = getelementptr inbounds i8, ptr %20, i64 56
  %408 = fmul double %84, %86
  %409 = shl i64 %50, 3
  %ident.check660 = icmp ne i64 %41, 1
  %ident.check661 = icmp ne i64 %44, 1
  %410 = or i1 %ident.check660, %ident.check661
  %ident.check = icmp ne i64 %41, 1
  %ident.check652 = icmp ne i64 %44, 1
  %411 = or i1 %ident.check, %ident.check652
  br label %412

412:                                              ; preds = %.lr.ph624, %532
  %indvar = phi i64 [ 0, %.lr.ph624 ], [ %indvar.next, %532 ]
  %.5622 = phi i64 [ 0, %.lr.ph624 ], [ %.7, %532 ]
  %.2529619 = phi i64 [ 1, %.lr.ph624 ], [ %533, %532 ]
  %413 = shl i64 %indvar, 3
  %scevgep663 = getelementptr i8, ptr %5, i64 %413
  %scevgep665 = getelementptr i8, ptr %7, i64 %413
  %414 = mul i64 %409, %indvar
  %scevgep667 = getelementptr i8, ptr %12, i64 %414
  %415 = shl i64 %indvar, 3
  %scevgep = getelementptr i8, ptr %5, i64 %415
  %scevgep654 = getelementptr i8, ptr %7, i64 %415
  %.not565 = icmp eq i64 %.5622, 0
  br i1 %.not565, label %416, label %532

416:                                              ; preds = %412
  %417 = load i64, ptr %4, align 8, !tbaa !5
  %418 = icmp slt i64 %.2529619, %417
  br i1 %418, label %419, label %457

419:                                              ; preds = %416
  %420 = mul nsw i64 %.2529619, %41
  %421 = getelementptr double, ptr %43, i64 %.2529619
  %422 = getelementptr i8, ptr %421, i64 8
  %423 = getelementptr double, ptr %422, i64 %420
  %424 = load double, ptr %423, align 8, !tbaa !9
  %425 = fcmp une double %424, 0.000000e+00
  br i1 %425, label %.critedge, label %457

.critedge:                                        ; preds = %419
  %426 = getelementptr double, ptr %421, i64 %420
  %427 = load double, ptr %426, align 8, !tbaa !9
  store double %427, ptr %20, align 8, !tbaa !9
  %428 = add nuw nsw i64 %.2529619, 1
  %429 = getelementptr double, ptr %43, i64 %428
  %430 = getelementptr double, ptr %429, i64 %420
  %431 = load double, ptr %430, align 8, !tbaa !9
  store double %431, ptr %401, align 8, !tbaa !9
  %432 = mul nsw i64 %428, %41
  %433 = getelementptr double, ptr %421, i64 %432
  %434 = load double, ptr %433, align 8, !tbaa !9
  store double %434, ptr %402, align 8, !tbaa !9
  %435 = getelementptr double, ptr %429, i64 %432
  %436 = load double, ptr %435, align 8, !tbaa !9
  store double %436, ptr %403, align 8, !tbaa !9
  %437 = mul nsw i64 %.2529619, %44
  %438 = getelementptr double, ptr %46, i64 %.2529619
  %439 = getelementptr double, ptr %438, i64 %437
  %440 = load double, ptr %439, align 8, !tbaa !9
  store double %440, ptr %404, align 8, !tbaa !9
  %441 = getelementptr double, ptr %46, i64 %428
  %442 = getelementptr double, ptr %441, i64 %437
  %443 = load double, ptr %442, align 8, !tbaa !9
  store double %443, ptr %405, align 8, !tbaa !9
  %444 = mul nsw i64 %428, %44
  %445 = getelementptr double, ptr %438, i64 %444
  %446 = load double, ptr %445, align 8, !tbaa !9
  store double %446, ptr %406, align 8, !tbaa !9
  %447 = getelementptr double, ptr %441, i64 %444
  %448 = load double, ptr %447, align 8, !tbaa !9
  store double %448, ptr %407, align 8, !tbaa !9
  store double %408, ptr %27, align 8, !tbaa !9
  %449 = getelementptr inbounds double, ptr %49, i64 %.2529619
  %450 = getelementptr double, ptr %11, i64 %.2529619
  %451 = getelementptr inbounds double, ptr %47, i64 %.2529619
  %452 = getelementptr double, ptr %9, i64 %.2529619
  %453 = getelementptr inbounds double, ptr %48, i64 %.2529619
  %454 = call i32 @dlag2_(ptr noundef %20, ptr noundef nonnull @c__2, ptr noundef nonnull %404, ptr noundef nonnull @c__2, ptr noundef nonnull %27, ptr noundef nonnull %449, ptr noundef %450, ptr noundef nonnull %451, ptr noundef %452, ptr noundef nonnull %453) #6
  %455 = load double, ptr %453, align 8, !tbaa !9
  %456 = fneg double %455
  br label %.sink.split647

457:                                              ; preds = %416, %419
  %458 = mul i64 %.2529619, %399
  %459 = getelementptr inbounds double, ptr %46, i64 %458
  %460 = call double @d_sign(ptr noundef nonnull @c_b28, ptr noundef %459) #6
  %461 = fcmp olt double %460, 0.000000e+00
  br i1 %461, label %462, label %.loopexit

462:                                              ; preds = %457
  %463 = load i64, ptr %4, align 8, !tbaa !5
  %.not567612 = icmp slt i64 %463, 1
  br i1 %.not567612, label %.loopexit, label %.lr.ph615

.lr.ph615:                                        ; preds = %462
  %464 = getelementptr double, ptr %43, i64 %.2529619
  %465 = getelementptr double, ptr %46, i64 %.2529619
  %466 = load i64, ptr %1, align 8, !tbaa !5
  %.not568 = icmp eq i64 %466, 0
  %467 = mul nsw i64 %.2529619, %50
  %invariant.gep616 = getelementptr double, ptr %52, i64 %467
  br i1 %.not568, label %.lr.ph615.split.us.preheader, label %.lr.ph615.split.preheader

.lr.ph615.split.preheader:                        ; preds = %.lr.ph615
  %min.iters.check681 = icmp ult i64 %463, 10
  %brmerge = select i1 %min.iters.check681, i1 true, i1 %410
  br i1 %brmerge, label %.lr.ph615.split.preheader696, label %vector.memcheck662

.lr.ph615.split.preheader696:                     ; preds = %.lr.ph615.split.preheader, %middle.block679, %vector.memcheck662
  %.1531613.ph = phi i64 [ 1, %vector.memcheck662 ], [ 1, %.lr.ph615.split.preheader ], [ %ind.end685, %middle.block679 ]
  br label %.lr.ph615.split

vector.memcheck662:                               ; preds = %.lr.ph615.split.preheader
  %468 = shl i64 %463, 3
  %scevgep664 = getelementptr i8, ptr %scevgep663, i64 %468
  %scevgep666 = getelementptr i8, ptr %scevgep665, i64 %468
  %scevgep668 = getelementptr i8, ptr %scevgep667, i64 %468
  %bound0669 = icmp ult ptr %scevgep663, %scevgep666
  %bound1670 = icmp ult ptr %scevgep665, %scevgep664
  %found.conflict671 = and i1 %bound0669, %bound1670
  %bound0672 = icmp ult ptr %scevgep663, %scevgep668
  %bound1673 = icmp ult ptr %scevgep667, %scevgep664
  %found.conflict674 = and i1 %bound0672, %bound1673
  %conflict.rdx = or i1 %found.conflict671, %found.conflict674
  %bound0675 = icmp ult ptr %scevgep665, %scevgep668
  %bound1676 = icmp ult ptr %scevgep667, %scevgep666
  %found.conflict677 = and i1 %bound0675, %bound1676
  %conflict.rdx678 = or i1 %conflict.rdx, %found.conflict677
  br i1 %conflict.rdx678, label %.lr.ph615.split.preheader696, label %vector.ph682

vector.ph682:                                     ; preds = %vector.memcheck662
  %n.vec684 = and i64 %463, 9223372036854775806
  %ind.end685 = or i64 %463, 1
  br label %vector.body687

vector.body687:                                   ; preds = %vector.body687, %vector.ph682
  %index688 = phi i64 [ 0, %vector.ph682 ], [ %index.next693, %vector.body687 ]
  %offset.idx689 = or disjoint i64 %index688, 1
  %469 = getelementptr double, ptr %464, i64 %offset.idx689
  %wide.load690 = load <2 x double>, ptr %469, align 8, !tbaa !9, !alias.scope !15, !noalias !18
  %470 = fneg <2 x double> %wide.load690
  store <2 x double> %470, ptr %469, align 8, !tbaa !9, !alias.scope !15, !noalias !18
  %471 = getelementptr double, ptr %465, i64 %offset.idx689
  %wide.load691 = load <2 x double>, ptr %471, align 8, !tbaa !9, !alias.scope !21, !noalias !22
  %472 = fneg <2 x double> %wide.load691
  store <2 x double> %472, ptr %471, align 8, !tbaa !9, !alias.scope !21, !noalias !22
  %473 = getelementptr double, ptr %invariant.gep616, i64 %offset.idx689
  %wide.load692 = load <2 x double>, ptr %473, align 8, !tbaa !9, !alias.scope !22
  %474 = fneg <2 x double> %wide.load692
  store <2 x double> %474, ptr %473, align 8, !tbaa !9, !alias.scope !22
  %index.next693 = add nuw i64 %index688, 2
  %475 = icmp eq i64 %index.next693, %n.vec684
  br i1 %475, label %middle.block679, label %vector.body687, !llvm.loop !23

middle.block679:                                  ; preds = %vector.body687
  %cmp.n694 = icmp eq i64 %463, %n.vec684
  br i1 %cmp.n694, label %.loopexit, label %.lr.ph615.split.preheader696

.lr.ph615.split.us.preheader:                     ; preds = %.lr.ph615
  %min.iters.check = icmp ult i64 %463, 8
  %brmerge698 = select i1 %min.iters.check, i1 true, i1 %411
  br i1 %brmerge698, label %.lr.ph615.split.us.preheader695, label %vector.memcheck

vector.memcheck:                                  ; preds = %.lr.ph615.split.us.preheader
  %476 = shl i64 %463, 3
  %scevgep653 = getelementptr i8, ptr %scevgep, i64 %476
  %scevgep655 = getelementptr i8, ptr %scevgep654, i64 %476
  %bound0 = icmp ult ptr %scevgep, %scevgep655
  %bound1 = icmp ult ptr %scevgep654, %scevgep653
  %found.conflict = and i1 %bound0, %bound1
  br i1 %found.conflict, label %.lr.ph615.split.us.preheader695, label %vector.ph

vector.ph:                                        ; preds = %vector.memcheck
  %n.vec = and i64 %463, 9223372036854775804
  %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
  %477 = getelementptr double, ptr %464, i64 %offset.idx
  %478 = getelementptr i8, ptr %477, i64 16
  %wide.load = load <2 x double>, ptr %477, align 8, !tbaa !9, !alias.scope !26, !noalias !29
  %wide.load656 = load <2 x double>, ptr %478, align 8, !tbaa !9, !alias.scope !26, !noalias !29
  %479 = fneg <2 x double> %wide.load
  %480 = fneg <2 x double> %wide.load656
  store <2 x double> %479, ptr %477, align 8, !tbaa !9, !alias.scope !26, !noalias !29
  store <2 x double> %480, ptr %478, align 8, !tbaa !9, !alias.scope !26, !noalias !29
  %481 = getelementptr double, ptr %465, i64 %offset.idx
  %482 = getelementptr i8, ptr %481, i64 16
  %wide.load657 = load <2 x double>, ptr %481, align 8, !tbaa !9, !alias.scope !29
  %wide.load658 = load <2 x double>, ptr %482, align 8, !tbaa !9, !alias.scope !29
  %483 = fneg <2 x double> %wide.load657
  %484 = fneg <2 x double> %wide.load658
  store <2 x double> %483, ptr %481, align 8, !tbaa !9, !alias.scope !29
  store <2 x double> %484, ptr %482, align 8, !tbaa !9, !alias.scope !29
  %index.next = add nuw i64 %index, 4
  %485 = icmp eq i64 %index.next, %n.vec
  br i1 %485, label %middle.block, label %vector.body, !llvm.loop !31

middle.block:                                     ; preds = %vector.body
  %cmp.n = icmp eq i64 %463, %n.vec
  br i1 %cmp.n, label %.loopexit, label %.lr.ph615.split.us.preheader695

.lr.ph615.split.us.preheader695:                  ; preds = %.lr.ph615.split.us.preheader, %middle.block, %vector.memcheck
  %.1531613.us.ph = phi i64 [ 1, %vector.memcheck ], [ 1, %.lr.ph615.split.us.preheader ], [ %ind.end, %middle.block ]
  %xtraiter = and i64 %463, 1
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %.lr.ph615.split.us.prol.loopexit, label %.lr.ph615.split.us.prol

.lr.ph615.split.us.prol:                          ; preds = %.lr.ph615.split.us.preheader695
  %486 = mul nsw i64 %.1531613.us.ph, %41
  %487 = getelementptr double, ptr %464, i64 %486
  %488 = load double, ptr %487, align 8, !tbaa !9
  %489 = fneg double %488
  store double %489, ptr %487, align 8, !tbaa !9
  %490 = mul nsw i64 %.1531613.us.ph, %44
  %491 = getelementptr double, ptr %465, i64 %490
  %492 = load double, ptr %491, align 8, !tbaa !9
  %493 = fneg double %492
  store double %493, ptr %491, align 8, !tbaa !9
  %494 = add nuw i64 %.1531613.us.ph, 1
  br label %.lr.ph615.split.us.prol.loopexit

.lr.ph615.split.us.prol.loopexit:                 ; preds = %.lr.ph615.split.us.prol, %.lr.ph615.split.us.preheader695
  %.1531613.us.unr = phi i64 [ %.1531613.us.ph, %.lr.ph615.split.us.preheader695 ], [ %494, %.lr.ph615.split.us.prol ]
  %495 = icmp eq i64 %463, %.1531613.us.ph
  br i1 %495, label %.loopexit, label %.lr.ph615.split.us

.lr.ph615.split.us:                               ; preds = %.lr.ph615.split.us.prol.loopexit, %.lr.ph615.split.us
  %.1531613.us = phi i64 [ %513, %.lr.ph615.split.us ], [ %.1531613.us.unr, %.lr.ph615.split.us.prol.loopexit ]
  %496 = mul nsw i64 %.1531613.us, %41
  %497 = getelementptr double, ptr %464, i64 %496
  %498 = load double, ptr %497, align 8, !tbaa !9
  %499 = fneg double %498
  store double %499, ptr %497, align 8, !tbaa !9
  %500 = mul nsw i64 %.1531613.us, %44
  %501 = getelementptr double, ptr %465, i64 %500
  %502 = load double, ptr %501, align 8, !tbaa !9
  %503 = fneg double %502
  store double %503, ptr %501, align 8, !tbaa !9
  %504 = add nuw i64 %.1531613.us, 1
  %505 = mul nsw i64 %504, %41
  %506 = getelementptr double, ptr %464, i64 %505
  %507 = load double, ptr %506, align 8, !tbaa !9
  %508 = fneg double %507
  store double %508, ptr %506, align 8, !tbaa !9
  %509 = mul nsw i64 %504, %44
  %510 = getelementptr double, ptr %465, i64 %509
  %511 = load double, ptr %510, align 8, !tbaa !9
  %512 = fneg double %511
  store double %512, ptr %510, align 8, !tbaa !9
  %513 = add nuw i64 %.1531613.us, 2
  %exitcond628.not.1 = icmp eq i64 %504, %463
  br i1 %exitcond628.not.1, label %.loopexit, label %.lr.ph615.split.us, !llvm.loop !32

.lr.ph615.split:                                  ; preds = %.lr.ph615.split.preheader696, %.lr.ph615.split
  %.1531613 = phi i64 [ %524, %.lr.ph615.split ], [ %.1531613.ph, %.lr.ph615.split.preheader696 ]
  %514 = mul nsw i64 %.1531613, %41
  %515 = getelementptr double, ptr %464, i64 %514
  %516 = load double, ptr %515, align 8, !tbaa !9
  %517 = fneg double %516
  store double %517, ptr %515, align 8, !tbaa !9
  %518 = mul nsw i64 %.1531613, %44
  %519 = getelementptr double, ptr %465, i64 %518
  %520 = load double, ptr %519, align 8, !tbaa !9
  %521 = fneg double %520
  store double %521, ptr %519, align 8, !tbaa !9
  %gep617 = getelementptr double, ptr %invariant.gep616, i64 %.1531613
  %522 = load double, ptr %gep617, align 8, !tbaa !9
  %523 = fneg double %522
  store double %523, ptr %gep617, align 8, !tbaa !9
  %524 = add nuw i64 %.1531613, 1
  %exitcond627.not = icmp eq i64 %.1531613, %463
  br i1 %exitcond627.not, label %.loopexit, label %.lr.ph615.split, !llvm.loop !33

.loopexit:                                        ; preds = %.lr.ph615.split, %.lr.ph615.split.us.prol.loopexit, %.lr.ph615.split.us, %middle.block679, %middle.block, %462, %457
  %525 = mul i64 %.2529619, %400
  %526 = getelementptr inbounds double, ptr %43, i64 %525
  %527 = load double, ptr %526, align 8, !tbaa !9
  %528 = getelementptr inbounds double, ptr %47, i64 %.2529619
  store double %527, ptr %528, align 8, !tbaa !9
  %529 = getelementptr inbounds double, ptr %48, i64 %.2529619
  store double 0.000000e+00, ptr %529, align 8, !tbaa !9
  %530 = load double, ptr %459, align 8, !tbaa !9
  br label %.sink.split647

.sink.split647:                                   ; preds = %.critedge, %.loopexit
  %.sink650 = phi ptr [ %49, %.loopexit ], [ %10, %.critedge ]
  %.sink648 = phi double [ %530, %.loopexit ], [ %456, %.critedge ]
  %.7.ph = phi i64 [ 0, %.loopexit ], [ 1, %.critedge ]
  %531 = getelementptr double, ptr %.sink650, i64 %.2529619
  store double %.sink648, ptr %531, align 8, !tbaa !9
  br label %532

532:                                              ; preds = %.sink.split647, %412
  %.7 = phi i64 [ 0, %412 ], [ %.7.ph, %.sink.split647 ]
  %533 = add nuw nsw i64 %.2529619, 1
  %534 = load i64, ptr %26, align 8, !tbaa !5
  %.not564.not = icmp slt i64 %.2529619, %534
  %indvar.next = add i64 %indvar, 1
  br i1 %.not564.not, label %412, label %._crit_edge625, !llvm.loop !34

._crit_edge625:                                   ; preds = %532, %397
  store double %151, ptr %20, align 8, !tbaa !9
  store i64 %.0523, ptr %22, align 8, !tbaa !5
  br label %535

535:                                              ; preds = %161, %._crit_edge625, %.thread583, %.thread
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %39) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %38) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %37) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %36) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %35) #6
  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 8, 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 8, 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
  ret i32 0
}

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

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

declare double @dlamch_(ptr noundef) local_unnamed_addr #2

declare i32 @dlassq_(ptr noundef, ptr noundef, ptr noundef, 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 i32 @dtgexc_(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 i32 @dlacpy_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

declare i32 @dtgsyl_(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, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

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

declare i32 @dlag2_(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 @d_sign(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 i64 @llvm.smax.i64(i64, i64) #4

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i64 @llvm.umax.i64(i64, i64) #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 = !{!"long", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"double", !7, i64 0}
!11 = distinct !{!11, !12}
!12 = !{!"llvm.loop.mustprogress"}
!13 = distinct !{!13, !12}
!14 = distinct !{!14, !12}
!15 = !{!16}
!16 = distinct !{!16, !17}
!17 = distinct !{!17, !"LVerDomain"}
!18 = !{!19, !20}
!19 = distinct !{!19, !17}
!20 = distinct !{!20, !17}
!21 = !{!19}
!22 = !{!20}
!23 = distinct !{!23, !12, !24, !25}
!24 = !{!"llvm.loop.isvectorized", i32 1}
!25 = !{!"llvm.loop.unroll.runtime.disable"}
!26 = !{!27}
!27 = distinct !{!27, !28}
!28 = distinct !{!28, !"LVerDomain"}
!29 = !{!30}
!30 = distinct !{!30, !28}
!31 = distinct !{!31, !12, !24, !25}
!32 = distinct !{!32, !12, !24}
!33 = distinct !{!33, !12, !24}
!34 = distinct !{!34, !12}


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