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

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

@.str = external hidden unnamed_addr constant [2 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [2 x i8], align 1
@c__1 = external hidden global i64, align 8
@.str.6 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [2 x i8], align 1
@c__0 = external hidden global i64, align 8
@.str.8 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [5 x i8], align 1
@c_b59 = external hidden global double, align 8
@c_b60 = external hidden global double, align 8
@.str.17 = external hidden unnamed_addr constant [2 x i8], align 1

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

169:                                              ; preds = %29
  store i64 1, ptr %101, align 8, !tbaa !9
  store i64 0, ptr %89, align 8, !tbaa !9
  br label %177

170:                                              ; preds = %29
  %171 = load ptr, ptr %32, align 8, !tbaa !5
  %172 = call i64 @lsame_(ptr noundef %171, ptr noundef @.str.1)
  %173 = icmp ne i64 %172, 0
  br i1 %173, label %174, label %175

174:                                              ; preds = %170
  store i64 2, ptr %101, align 8, !tbaa !9
  store i64 1, ptr %89, align 8, !tbaa !9
  br label %176

175:                                              ; preds = %170
  store i64 -1, ptr %101, align 8, !tbaa !9
  store i64 0, ptr %89, align 8, !tbaa !9
  br label %176

176:                                              ; preds = %175, %174
  br label %177

177:                                              ; preds = %176, %169
  %178 = load ptr, ptr %33, align 8, !tbaa !5
  %179 = call i64 @lsame_(ptr noundef %178, ptr noundef @.str)
  %180 = icmp ne i64 %179, 0
  br i1 %180, label %181, label %182

181:                                              ; preds = %177
  store i64 1, ptr %102, align 8, !tbaa !9
  store i64 0, ptr %90, align 8, !tbaa !9
  br label %189

182:                                              ; preds = %177
  %183 = load ptr, ptr %33, align 8, !tbaa !5
  %184 = call i64 @lsame_(ptr noundef %183, ptr noundef @.str.1)
  %185 = icmp ne i64 %184, 0
  br i1 %185, label %186, label %187

186:                                              ; preds = %182
  store i64 2, ptr %102, align 8, !tbaa !9
  store i64 1, ptr %90, align 8, !tbaa !9
  br label %188

187:                                              ; preds = %182
  store i64 -1, ptr %102, align 8, !tbaa !9
  store i64 0, ptr %90, align 8, !tbaa !9
  br label %188

188:                                              ; preds = %187, %186
  br label %189

189:                                              ; preds = %188, %181
  %190 = load i64, ptr %89, align 8, !tbaa !9
  %191 = icmp ne i64 %190, 0
  br i1 %191, label %195, label %192

192:                                              ; preds = %189
  %193 = load i64, ptr %90, align 8, !tbaa !9
  %194 = icmp ne i64 %193, 0
  br label %195

195:                                              ; preds = %192, %189
  %196 = phi i1 [ true, %189 ], [ %194, %192 ]
  %197 = zext i1 %196 to i32
  %198 = sext i32 %197 to i64
  store i64 %198, ptr %82, align 8, !tbaa !9
  %199 = load ptr, ptr %31, align 8, !tbaa !5
  %200 = call i64 @lsame_(ptr noundef %199, ptr noundef @.str)
  %201 = icmp ne i64 %200, 0
  br i1 %201, label %206, label %202

202:                                              ; preds = %195
  %203 = load ptr, ptr %31, align 8, !tbaa !5
  %204 = call i64 @lsame_(ptr noundef %203, ptr noundef @.str.2)
  %205 = icmp ne i64 %204, 0
  br label %206

206:                                              ; preds = %202, %195
  %207 = phi i1 [ true, %195 ], [ %205, %202 ]
  %208 = zext i1 %207 to i32
  %209 = sext i32 %208 to i64
  store i64 %209, ptr %94, align 8, !tbaa !9
  %210 = load ptr, ptr %34, align 8, !tbaa !5
  %211 = call i64 @lsame_(ptr noundef %210, ptr noundef @.str)
  store i64 %211, ptr %109, align 8, !tbaa !9
  %212 = load ptr, ptr %34, align 8, !tbaa !5
  %213 = call i64 @lsame_(ptr noundef %212, ptr noundef @.str.3)
  store i64 %213, ptr %105, align 8, !tbaa !9
  %214 = load ptr, ptr %34, align 8, !tbaa !5
  %215 = call i64 @lsame_(ptr noundef %214, ptr noundef @.str.1)
  store i64 %215, ptr %112, align 8, !tbaa !9
  %216 = load ptr, ptr %34, align 8, !tbaa !5
  %217 = call i64 @lsame_(ptr noundef %216, ptr noundef @.str.4)
  store i64 %217, ptr %103, align 8, !tbaa !9
  %218 = load ptr, ptr %59, align 8, !tbaa !5
  store i64 0, ptr %218, align 8, !tbaa !9
  %219 = load ptr, ptr %56, align 8, !tbaa !5
  %220 = load i64, ptr %219, align 8, !tbaa !9
  %221 = icmp eq i64 %220, -1
  %222 = zext i1 %221 to i32
  %223 = sext i32 %222 to i64
  store i64 %223, ptr %111, align 8, !tbaa !9
  %224 = load ptr, ptr %31, align 8, !tbaa !5
  %225 = call i64 @lsame_(ptr noundef %224, ptr noundef @.str)
  %226 = icmp ne i64 %225, 0
  br i1 %226, label %241, label %227

227:                                              ; preds = %206
  %228 = load ptr, ptr %31, align 8, !tbaa !5
  %229 = call i64 @lsame_(ptr noundef %228, ptr noundef @.str.5)
  %230 = icmp ne i64 %229, 0
  br i1 %230, label %241, label %231

231:                                              ; preds = %227
  %232 = load ptr, ptr %31, align 8, !tbaa !5
  %233 = call i64 @lsame_(ptr noundef %232, ptr noundef @.str.2)
  %234 = icmp ne i64 %233, 0
  br i1 %234, label %241, label %235

235:                                              ; preds = %231
  %236 = load ptr, ptr %31, align 8, !tbaa !5
  %237 = call i64 @lsame_(ptr noundef %236, ptr noundef @.str.4)
  %238 = icmp ne i64 %237, 0
  br i1 %238, label %241, label %239

239:                                              ; preds = %235
  %240 = load ptr, ptr %59, align 8, !tbaa !5
  store i64 -1, ptr %240, align 8, !tbaa !9
  br label %339

241:                                              ; preds = %235, %231, %227, %206
  %242 = load i64, ptr %101, align 8, !tbaa !9
  %243 = icmp sle i64 %242, 0
  br i1 %243, label %244, label %246

244:                                              ; preds = %241
  %245 = load ptr, ptr %59, align 8, !tbaa !5
  store i64 -2, ptr %245, align 8, !tbaa !9
  br label %338

246:                                              ; preds = %241
  %247 = load i64, ptr %102, align 8, !tbaa !9
  %248 = icmp sle i64 %247, 0
  br i1 %248, label %249, label %251

249:                                              ; preds = %246
  %250 = load ptr, ptr %59, align 8, !tbaa !5
  store i64 -3, ptr %250, align 8, !tbaa !9
  br label %337

251:                                              ; preds = %246
  %252 = load i64, ptr %109, align 8, !tbaa !9
  %253 = icmp ne i64 %252, 0
  br i1 %253, label %265, label %254

254:                                              ; preds = %251
  %255 = load i64, ptr %105, align 8, !tbaa !9
  %256 = icmp ne i64 %255, 0
  br i1 %256, label %265, label %257

257:                                              ; preds = %254
  %258 = load i64, ptr %103, align 8, !tbaa !9
  %259 = icmp ne i64 %258, 0
  br i1 %259, label %265, label %260

260:                                              ; preds = %257
  %261 = load i64, ptr %112, align 8, !tbaa !9
  %262 = icmp ne i64 %261, 0
  br i1 %262, label %265, label %263

263:                                              ; preds = %260
  %264 = load ptr, ptr %59, align 8, !tbaa !5
  store i64 -4, ptr %264, align 8, !tbaa !9
  br label %336

265:                                              ; preds = %260, %257, %254, %251
  %266 = load ptr, ptr %35, align 8, !tbaa !5
  %267 = load i64, ptr %266, align 8, !tbaa !9
  %268 = icmp slt i64 %267, 0
  br i1 %268, label %269, label %271

269:                                              ; preds = %265
  %270 = load ptr, ptr %59, align 8, !tbaa !5
  store i64 -5, ptr %270, align 8, !tbaa !9
  br label %335

271:                                              ; preds = %265
  %272 = load ptr, ptr %37, align 8, !tbaa !5
  %273 = load i64, ptr %272, align 8, !tbaa !9
  %274 = load ptr, ptr %35, align 8, !tbaa !5
  %275 = load i64, ptr %274, align 8, !tbaa !9
  %276 = icmp sge i64 1, %275
  br i1 %276, label %277, label %278

277:                                              ; preds = %271
  br label %281

278:                                              ; preds = %271
  %279 = load ptr, ptr %35, align 8, !tbaa !5
  %280 = load i64, ptr %279, align 8, !tbaa !9
  br label %281

281:                                              ; preds = %278, %277
  %282 = phi i64 [ 1, %277 ], [ %280, %278 ]
  %283 = icmp slt i64 %273, %282
  br i1 %283, label %284, label %286

284:                                              ; preds = %281
  %285 = load ptr, ptr %59, align 8, !tbaa !5
  store i64 -7, ptr %285, align 8, !tbaa !9
  br label %334

286:                                              ; preds = %281
  %287 = load ptr, ptr %39, align 8, !tbaa !5
  %288 = load i64, ptr %287, align 8, !tbaa !9
  %289 = load ptr, ptr %35, align 8, !tbaa !5
  %290 = load i64, ptr %289, align 8, !tbaa !9
  %291 = icmp sge i64 1, %290
  br i1 %291, label %292, label %293

292:                                              ; preds = %286
  br label %296

293:                                              ; preds = %286
  %294 = load ptr, ptr %35, align 8, !tbaa !5
  %295 = load i64, ptr %294, align 8, !tbaa !9
  br label %296

296:                                              ; preds = %293, %292
  %297 = phi i64 [ 1, %292 ], [ %295, %293 ]
  %298 = icmp slt i64 %288, %297
  br i1 %298, label %299, label %301

299:                                              ; preds = %296
  %300 = load ptr, ptr %59, align 8, !tbaa !5
  store i64 -9, ptr %300, align 8, !tbaa !9
  br label %333

301:                                              ; preds = %296
  %302 = load ptr, ptr %44, align 8, !tbaa !5
  %303 = load i64, ptr %302, align 8, !tbaa !9
  %304 = icmp slt i64 %303, 1
  br i1 %304, label %314, label %305

305:                                              ; preds = %301
  %306 = load i64, ptr %89, align 8, !tbaa !9
  %307 = icmp ne i64 %306, 0
  br i1 %307, label %308, label %316

308:                                              ; preds = %305
  %309 = load ptr, ptr %44, align 8, !tbaa !5
  %310 = load i64, ptr %309, align 8, !tbaa !9
  %311 = load ptr, ptr %35, align 8, !tbaa !5
  %312 = load i64, ptr %311, align 8, !tbaa !9
  %313 = icmp slt i64 %310, %312
  br i1 %313, label %314, label %316

314:                                              ; preds = %308, %301
  %315 = load ptr, ptr %59, align 8, !tbaa !5
  store i64 -14, ptr %315, align 8, !tbaa !9
  br label %332

316:                                              ; preds = %308, %305
  %317 = load ptr, ptr %46, align 8, !tbaa !5
  %318 = load i64, ptr %317, align 8, !tbaa !9
  %319 = icmp slt i64 %318, 1
  br i1 %319, label %329, label %320

320:                                              ; preds = %316
  %321 = load i64, ptr %90, align 8, !tbaa !9
  %322 = icmp ne i64 %321, 0
  br i1 %322, label %323, label %331

323:                                              ; preds = %320
  %324 = load ptr, ptr %46, align 8, !tbaa !5
  %325 = load i64, ptr %324, align 8, !tbaa !9
  %326 = load ptr, ptr %35, align 8, !tbaa !5
  %327 = load i64, ptr %326, align 8, !tbaa !9
  %328 = icmp slt i64 %325, %327
  br i1 %328, label %329, label %331

329:                                              ; preds = %323, %316
  %330 = load ptr, ptr %59, align 8, !tbaa !5
  store i64 -16, ptr %330, align 8, !tbaa !9
  br label %331

331:                                              ; preds = %329, %323, %320
  br label %332

332:                                              ; preds = %331, %314
  br label %333

333:                                              ; preds = %332, %299
  br label %334

334:                                              ; preds = %333, %284
  br label %335

335:                                              ; preds = %334, %269
  br label %336

336:                                              ; preds = %335, %263
  br label %337

337:                                              ; preds = %336, %249
  br label %338

338:                                              ; preds = %337, %244
  br label %339

339:                                              ; preds = %338, %239
  %340 = load ptr, ptr %59, align 8, !tbaa !5
  %341 = load i64, ptr %340, align 8, !tbaa !9
  %342 = icmp eq i64 %341, 0
  br i1 %342, label %343, label %475

343:                                              ; preds = %339
  %344 = load ptr, ptr %35, align 8, !tbaa !5
  %345 = load i64, ptr %344, align 8, !tbaa !9
  %346 = icmp eq i64 %345, 0
  br i1 %346, label %347, label %348

347:                                              ; preds = %343
  store i64 1, ptr %107, align 8, !tbaa !9
  store i64 1, ptr %108, align 8, !tbaa !9
  br label %460

348:                                              ; preds = %343
  %349 = load i64, ptr %94, align 8, !tbaa !9
  %350 = icmp ne i64 %349, 0
  br i1 %350, label %351, label %358

351:                                              ; preds = %348
  %352 = load i64, ptr %82, align 8, !tbaa !9
  %353 = icmp ne i64 %352, 0
  br i1 %353, label %358, label %354

354:                                              ; preds = %351
  %355 = load ptr, ptr %35, align 8, !tbaa !5
  %356 = load i64, ptr %355, align 8, !tbaa !9
  %357 = shl i64 %356, 1
  store i64 %357, ptr %107, align 8, !tbaa !9
  br label %362

358:                                              ; preds = %351, %348
  %359 = load ptr, ptr %35, align 8, !tbaa !5
  %360 = load i64, ptr %359, align 8, !tbaa !9
  %361 = mul nsw i64 %360, 6
  store i64 %361, ptr %107, align 8, !tbaa !9
  br label %362

362:                                              ; preds = %358, %354
  %363 = load i64, ptr %105, align 8, !tbaa !9
  %364 = icmp ne i64 %363, 0
  br i1 %364, label %368, label %365

365:                                              ; preds = %362
  %366 = load i64, ptr %103, align 8, !tbaa !9
  %367 = icmp ne i64 %366, 0
  br i1 %367, label %368, label %372

368:                                              ; preds = %365, %362
  %369 = load ptr, ptr %35, align 8, !tbaa !5
  %370 = load i64, ptr %369, align 8, !tbaa !9
  %371 = mul nsw i64 %370, 10
  store i64 %371, ptr %107, align 8, !tbaa !9
  br label %372

372:                                              ; preds = %368, %365
  %373 = load i64, ptr %112, align 8, !tbaa !9
  %374 = icmp ne i64 %373, 0
  br i1 %374, label %378, label %375

375:                                              ; preds = %372
  %376 = load i64, ptr %103, align 8, !tbaa !9
  %377 = icmp ne i64 %376, 0
  br i1 %377, label %378, label %397

378:                                              ; preds = %375, %372
  %379 = load i64, ptr %107, align 8, !tbaa !9
  store i64 %379, ptr %68, align 8, !tbaa !9
  %380 = load ptr, ptr %35, align 8, !tbaa !5
  %381 = load i64, ptr %380, align 8, !tbaa !9
  %382 = shl i64 %381, 1
  %383 = load ptr, ptr %35, align 8, !tbaa !5
  %384 = load i64, ptr %383, align 8, !tbaa !9
  %385 = add nsw i64 %384, 4
  %386 = mul nsw i64 %382, %385
  %387 = add nsw i64 %386, 16
  store i64 %387, ptr %69, align 8, !tbaa !9
  %388 = load i64, ptr %68, align 8, !tbaa !9
  %389 = load i64, ptr %69, align 8, !tbaa !9
  %390 = icmp sge i64 %388, %389
  br i1 %390, label %391, label %393

391:                                              ; preds = %378
  %392 = load i64, ptr %68, align 8, !tbaa !9
  br label %395

393:                                              ; preds = %378
  %394 = load i64, ptr %69, align 8, !tbaa !9
  br label %395

395:                                              ; preds = %393, %391
  %396 = phi i64 [ %392, %391 ], [ %394, %393 ]
  store i64 %396, ptr %107, align 8, !tbaa !9
  br label %397

397:                                              ; preds = %395, %375
  %398 = load i64, ptr %107, align 8, !tbaa !9
  store i64 %398, ptr %108, align 8, !tbaa !9
  %399 = load i64, ptr %108, align 8, !tbaa !9
  store i64 %399, ptr %68, align 8, !tbaa !9
  %400 = load ptr, ptr %35, align 8, !tbaa !5
  %401 = load i64, ptr %400, align 8, !tbaa !9
  %402 = load ptr, ptr %35, align 8, !tbaa !5
  %403 = load i64, ptr %402, align 8, !tbaa !9
  %404 = load ptr, ptr %35, align 8, !tbaa !5
  %405 = load ptr, ptr %35, align 8, !tbaa !5
  %406 = call i64 @ilaenv_(ptr noundef @c__1, ptr noundef @.str.6, ptr noundef @.str.7, ptr noundef %404, ptr noundef @c__1, ptr noundef %405, ptr noundef @c__0)
  %407 = mul nsw i64 %403, %406
  %408 = add nsw i64 %401, %407
  store i64 %408, ptr %69, align 8, !tbaa !9
  %409 = load i64, ptr %68, align 8, !tbaa !9
  %410 = load i64, ptr %69, align 8, !tbaa !9
  %411 = icmp sge i64 %409, %410
  br i1 %411, label %412, label %414

412:                                              ; preds = %397
  %413 = load i64, ptr %68, align 8, !tbaa !9
  br label %416

414:                                              ; preds = %397
  %415 = load i64, ptr %69, align 8, !tbaa !9
  br label %416

416:                                              ; preds = %414, %412
  %417 = phi i64 [ %413, %412 ], [ %415, %414 ]
  store i64 %417, ptr %108, align 8, !tbaa !9
  %418 = load i64, ptr %108, align 8, !tbaa !9
  store i64 %418, ptr %68, align 8, !tbaa !9
  %419 = load ptr, ptr %35, align 8, !tbaa !5
  %420 = load i64, ptr %419, align 8, !tbaa !9
  %421 = load ptr, ptr %35, align 8, !tbaa !5
  %422 = load i64, ptr %421, align 8, !tbaa !9
  %423 = load ptr, ptr %35, align 8, !tbaa !5
  %424 = load ptr, ptr %35, align 8, !tbaa !5
  %425 = call i64 @ilaenv_(ptr noundef @c__1, ptr noundef @.str.8, ptr noundef @.str.7, ptr noundef %423, ptr noundef @c__1, ptr noundef %424, ptr noundef @c__0)
  %426 = mul nsw i64 %422, %425
  %427 = add nsw i64 %420, %426
  store i64 %427, ptr %69, align 8, !tbaa !9
  %428 = load i64, ptr %68, align 8, !tbaa !9
  %429 = load i64, ptr %69, align 8, !tbaa !9
  %430 = icmp sge i64 %428, %429
  br i1 %430, label %431, label %433

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

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

435:                                              ; preds = %433, %431
  %436 = phi i64 [ %432, %431 ], [ %434, %433 ]
  store i64 %436, ptr %108, align 8, !tbaa !9
  %437 = load i64, ptr %89, align 8, !tbaa !9
  %438 = icmp ne i64 %437, 0
  br i1 %438, label %439, label %459

439:                                              ; preds = %435
  %440 = load i64, ptr %108, align 8, !tbaa !9
  store i64 %440, ptr %68, align 8, !tbaa !9
  %441 = load ptr, ptr %35, align 8, !tbaa !5
  %442 = load i64, ptr %441, align 8, !tbaa !9
  %443 = load ptr, ptr %35, align 8, !tbaa !5
  %444 = load i64, ptr %443, align 8, !tbaa !9
  %445 = load ptr, ptr %35, align 8, !tbaa !5
  %446 = load ptr, ptr %35, align 8, !tbaa !5
  %447 = call i64 @ilaenv_(ptr noundef @c__1, ptr noundef @.str.9, ptr noundef @.str.7, ptr noundef %445, ptr noundef @c__1, ptr noundef %446, ptr noundef @c__0)
  %448 = mul nsw i64 %444, %447
  %449 = add nsw i64 %442, %448
  store i64 %449, ptr %69, align 8, !tbaa !9
  %450 = load i64, ptr %68, align 8, !tbaa !9
  %451 = load i64, ptr %69, align 8, !tbaa !9
  %452 = icmp sge i64 %450, %451
  br i1 %452, label %453, label %455

453:                                              ; preds = %439
  %454 = load i64, ptr %68, align 8, !tbaa !9
  br label %457

455:                                              ; preds = %439
  %456 = load i64, ptr %69, align 8, !tbaa !9
  br label %457

457:                                              ; preds = %455, %453
  %458 = phi i64 [ %454, %453 ], [ %456, %455 ]
  store i64 %458, ptr %108, align 8, !tbaa !9
  br label %459

459:                                              ; preds = %457, %435
  br label %460

460:                                              ; preds = %459, %347
  %461 = load i64, ptr %108, align 8, !tbaa !9
  %462 = sitofp i64 %461 to double
  %463 = load ptr, ptr %55, align 8, !tbaa !5
  %464 = getelementptr inbounds double, ptr %463, i64 1
  store double %462, ptr %464, align 8, !tbaa !11
  %465 = load ptr, ptr %56, align 8, !tbaa !5
  %466 = load i64, ptr %465, align 8, !tbaa !9
  %467 = load i64, ptr %107, align 8, !tbaa !9
  %468 = icmp slt i64 %466, %467
  br i1 %468, label %469, label %474

469:                                              ; preds = %460
  %470 = load i64, ptr %111, align 8, !tbaa !9
  %471 = icmp ne i64 %470, 0
  br i1 %471, label %474, label %472

472:                                              ; preds = %469
  %473 = load ptr, ptr %59, align 8, !tbaa !5
  store i64 -26, ptr %473, align 8, !tbaa !9
  br label %474

474:                                              ; preds = %472, %469, %460
  br label %475

475:                                              ; preds = %474, %339
  %476 = load ptr, ptr %59, align 8, !tbaa !5
  %477 = load i64, ptr %476, align 8, !tbaa !9
  %478 = icmp ne i64 %477, 0
  br i1 %478, label %479, label %484

479:                                              ; preds = %475
  %480 = load ptr, ptr %59, align 8, !tbaa !5
  %481 = load i64, ptr %480, align 8, !tbaa !9
  %482 = sub nsw i64 0, %481
  store i64 %482, ptr %68, align 8, !tbaa !9
  %483 = call i32 @xerbla_(ptr noundef @.str.10, ptr noundef %68)
  store i32 0, ptr %30, align 4
  store i32 1, ptr %113, align 4
  br label %1593

484:                                              ; preds = %475
  %485 = load i64, ptr %111, align 8, !tbaa !9
  %486 = icmp ne i64 %485, 0
  br i1 %486, label %487, label %488

487:                                              ; preds = %484
  store i32 0, ptr %30, align 4
  store i32 1, ptr %113, align 4
  br label %1593

488:                                              ; preds = %484
  br label %489

489:                                              ; preds = %488
  %490 = load ptr, ptr %35, align 8, !tbaa !5
  %491 = load i64, ptr %490, align 8, !tbaa !9
  %492 = icmp eq i64 %491, 0
  br i1 %492, label %493, label %494

493:                                              ; preds = %489
  store i32 0, ptr %30, align 4
  store i32 1, ptr %113, align 4
  br label %1593

494:                                              ; preds = %489
  %495 = call double @dlamch_(ptr noundef @.str.2)
  store double %495, ptr %81, align 8, !tbaa !11
  %496 = call double @dlamch_(ptr noundef @.str.5)
  store double %496, ptr %110, align 8, !tbaa !11
  %497 = load double, ptr %110, align 8, !tbaa !11
  %498 = fdiv double 1.000000e+00, %497
  store double %498, ptr %100, align 8, !tbaa !11
  %499 = call i32 @dlabad_(ptr noundef %110, ptr noundef %100)
  %500 = load double, ptr %110, align 8, !tbaa !11
  %501 = call double @sqrt(double noundef %500) #4
  %502 = load double, ptr %81, align 8, !tbaa !11
  %503 = fdiv double %501, %502
  store double %503, ptr %110, align 8, !tbaa !11
  %504 = load double, ptr %110, align 8, !tbaa !11
  %505 = fdiv double 1.000000e+00, %504
  store double %505, ptr %100, align 8, !tbaa !11
  %506 = load ptr, ptr %35, align 8, !tbaa !5
  %507 = load ptr, ptr %35, align 8, !tbaa !5
  %508 = load ptr, ptr %36, align 8, !tbaa !5
  %509 = load i64, ptr %61, align 8, !tbaa !9
  %510 = getelementptr inbounds double, ptr %508, i64 %509
  %511 = load ptr, ptr %37, align 8, !tbaa !5
  %512 = load ptr, ptr %55, align 8, !tbaa !5
  %513 = getelementptr inbounds double, ptr %512, i64 1
  %514 = call double @dlange_(ptr noundef @.str.11, ptr noundef %506, ptr noundef %507, ptr noundef %510, ptr noundef %511, ptr noundef %513)
  store double %514, ptr %84, align 8, !tbaa !11
  store i64 0, ptr %96, align 8, !tbaa !9
  %515 = load double, ptr %84, align 8, !tbaa !11
  %516 = fcmp ogt double %515, 0.000000e+00
  br i1 %516, label %517, label %523

517:                                              ; preds = %494
  %518 = load double, ptr %84, align 8, !tbaa !11
  %519 = load double, ptr %110, align 8, !tbaa !11
  %520 = fcmp olt double %518, %519
  br i1 %520, label %521, label %523

521:                                              ; preds = %517
  %522 = load double, ptr %110, align 8, !tbaa !11
  store double %522, ptr %104, align 8, !tbaa !11
  store i64 1, ptr %96, align 8, !tbaa !9
  br label %530

523:                                              ; preds = %517, %494
  %524 = load double, ptr %84, align 8, !tbaa !11
  %525 = load double, ptr %100, align 8, !tbaa !11
  %526 = fcmp ogt double %524, %525
  br i1 %526, label %527, label %529

527:                                              ; preds = %523
  %528 = load double, ptr %100, align 8, !tbaa !11
  store double %528, ptr %104, align 8, !tbaa !11
  store i64 1, ptr %96, align 8, !tbaa !9
  br label %529

529:                                              ; preds = %527, %523
  br label %530

530:                                              ; preds = %529, %521
  %531 = load i64, ptr %96, align 8, !tbaa !9
  %532 = icmp ne i64 %531, 0
  br i1 %532, label %533, label %541

533:                                              ; preds = %530
  %534 = load ptr, ptr %35, align 8, !tbaa !5
  %535 = load ptr, ptr %35, align 8, !tbaa !5
  %536 = load ptr, ptr %36, align 8, !tbaa !5
  %537 = load i64, ptr %61, align 8, !tbaa !9
  %538 = getelementptr inbounds double, ptr %536, i64 %537
  %539 = load ptr, ptr %37, align 8, !tbaa !5
  %540 = call i32 @dlascl_(ptr noundef @.str.12, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %84, ptr noundef %104, ptr noundef %534, ptr noundef %535, ptr noundef %538, ptr noundef %539, ptr noundef %86)
  br label %541

541:                                              ; preds = %533, %530
  %542 = load ptr, ptr %35, align 8, !tbaa !5
  %543 = load ptr, ptr %35, align 8, !tbaa !5
  %544 = load ptr, ptr %38, align 8, !tbaa !5
  %545 = load i64, ptr %63, align 8, !tbaa !9
  %546 = getelementptr inbounds double, ptr %544, i64 %545
  %547 = load ptr, ptr %39, align 8, !tbaa !5
  %548 = load ptr, ptr %55, align 8, !tbaa !5
  %549 = getelementptr inbounds double, ptr %548, i64 1
  %550 = call double @dlange_(ptr noundef @.str.11, ptr noundef %542, ptr noundef %543, ptr noundef %546, ptr noundef %547, ptr noundef %549)
  store double %550, ptr %85, align 8, !tbaa !11
  store i64 0, ptr %97, align 8, !tbaa !9
  %551 = load double, ptr %85, align 8, !tbaa !11
  %552 = fcmp ogt double %551, 0.000000e+00
  br i1 %552, label %553, label %559

553:                                              ; preds = %541
  %554 = load double, ptr %85, align 8, !tbaa !11
  %555 = load double, ptr %110, align 8, !tbaa !11
  %556 = fcmp olt double %554, %555
  br i1 %556, label %557, label %559

557:                                              ; preds = %553
  %558 = load double, ptr %110, align 8, !tbaa !11
  store double %558, ptr %106, align 8, !tbaa !11
  store i64 1, ptr %97, align 8, !tbaa !9
  br label %566

559:                                              ; preds = %553, %541
  %560 = load double, ptr %85, align 8, !tbaa !11
  %561 = load double, ptr %100, align 8, !tbaa !11
  %562 = fcmp ogt double %560, %561
  br i1 %562, label %563, label %565

563:                                              ; preds = %559
  %564 = load double, ptr %100, align 8, !tbaa !11
  store double %564, ptr %106, align 8, !tbaa !11
  store i64 1, ptr %97, align 8, !tbaa !9
  br label %565

565:                                              ; preds = %563, %559
  br label %566

566:                                              ; preds = %565, %557
  %567 = load i64, ptr %97, align 8, !tbaa !9
  %568 = icmp ne i64 %567, 0
  br i1 %568, label %569, label %577

569:                                              ; preds = %566
  %570 = load ptr, ptr %35, align 8, !tbaa !5
  %571 = load ptr, ptr %35, align 8, !tbaa !5
  %572 = load ptr, ptr %38, align 8, !tbaa !5
  %573 = load i64, ptr %63, align 8, !tbaa !9
  %574 = getelementptr inbounds double, ptr %572, i64 %573
  %575 = load ptr, ptr %39, align 8, !tbaa !5
  %576 = call i32 @dlascl_(ptr noundef @.str.12, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %85, ptr noundef %106, ptr noundef %570, ptr noundef %571, ptr noundef %574, ptr noundef %575, ptr noundef %86)
  br label %577

577:                                              ; preds = %569, %566
  %578 = load ptr, ptr %31, align 8, !tbaa !5
  %579 = load ptr, ptr %35, align 8, !tbaa !5
  %580 = load ptr, ptr %36, align 8, !tbaa !5
  %581 = load i64, ptr %61, align 8, !tbaa !9
  %582 = getelementptr inbounds double, ptr %580, i64 %581
  %583 = load ptr, ptr %37, align 8, !tbaa !5
  %584 = load ptr, ptr %38, align 8, !tbaa !5
  %585 = load i64, ptr %63, align 8, !tbaa !9
  %586 = getelementptr inbounds double, ptr %584, i64 %585
  %587 = load ptr, ptr %39, align 8, !tbaa !5
  %588 = load ptr, ptr %47, align 8, !tbaa !5
  %589 = load ptr, ptr %48, align 8, !tbaa !5
  %590 = load ptr, ptr %49, align 8, !tbaa !5
  %591 = getelementptr inbounds double, ptr %590, i64 1
  %592 = load ptr, ptr %50, align 8, !tbaa !5
  %593 = getelementptr inbounds double, ptr %592, i64 1
  %594 = load ptr, ptr %55, align 8, !tbaa !5
  %595 = getelementptr inbounds double, ptr %594, i64 1
  %596 = call i32 @dggbal_(ptr noundef %578, ptr noundef %579, ptr noundef %582, ptr noundef %583, ptr noundef %586, ptr noundef %587, ptr noundef %588, ptr noundef %589, ptr noundef %591, ptr noundef %593, ptr noundef %595, ptr noundef %86)
  %597 = load ptr, ptr %35, align 8, !tbaa !5
  %598 = load ptr, ptr %35, align 8, !tbaa !5
  %599 = load ptr, ptr %36, align 8, !tbaa !5
  %600 = load i64, ptr %61, align 8, !tbaa !9
  %601 = getelementptr inbounds double, ptr %599, i64 %600
  %602 = load ptr, ptr %37, align 8, !tbaa !5
  %603 = load ptr, ptr %55, align 8, !tbaa !5
  %604 = getelementptr inbounds double, ptr %603, i64 1
  %605 = call double @dlange_(ptr noundef @.str.13, ptr noundef %597, ptr noundef %598, ptr noundef %601, ptr noundef %602, ptr noundef %604)
  %606 = load ptr, ptr %51, align 8, !tbaa !5
  store double %605, ptr %606, align 8, !tbaa !11
  %607 = load i64, ptr %96, align 8, !tbaa !9
  %608 = icmp ne i64 %607, 0
  br i1 %608, label %609, label %621

609:                                              ; preds = %577
  %610 = load ptr, ptr %51, align 8, !tbaa !5
  %611 = load double, ptr %610, align 8, !tbaa !11
  %612 = load ptr, ptr %55, align 8, !tbaa !5
  %613 = getelementptr inbounds double, ptr %612, i64 1
  store double %611, ptr %613, align 8, !tbaa !11
  %614 = load ptr, ptr %55, align 8, !tbaa !5
  %615 = getelementptr inbounds double, ptr %614, i64 1
  %616 = call i32 @dlascl_(ptr noundef @.str.12, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %104, ptr noundef %84, ptr noundef @c__1, ptr noundef @c__1, ptr noundef %615, ptr noundef @c__1, ptr noundef %86)
  %617 = load ptr, ptr %55, align 8, !tbaa !5
  %618 = getelementptr inbounds double, ptr %617, i64 1
  %619 = load double, ptr %618, align 8, !tbaa !11
  %620 = load ptr, ptr %51, align 8, !tbaa !5
  store double %619, ptr %620, align 8, !tbaa !11
  br label %621

621:                                              ; preds = %609, %577
  %622 = load ptr, ptr %35, align 8, !tbaa !5
  %623 = load ptr, ptr %35, align 8, !tbaa !5
  %624 = load ptr, ptr %38, align 8, !tbaa !5
  %625 = load i64, ptr %63, align 8, !tbaa !9
  %626 = getelementptr inbounds double, ptr %624, i64 %625
  %627 = load ptr, ptr %39, align 8, !tbaa !5
  %628 = load ptr, ptr %55, align 8, !tbaa !5
  %629 = getelementptr inbounds double, ptr %628, i64 1
  %630 = call double @dlange_(ptr noundef @.str.13, ptr noundef %622, ptr noundef %623, ptr noundef %626, ptr noundef %627, ptr noundef %629)
  %631 = load ptr, ptr %52, align 8, !tbaa !5
  store double %630, ptr %631, align 8, !tbaa !11
  %632 = load i64, ptr %97, align 8, !tbaa !9
  %633 = icmp ne i64 %632, 0
  br i1 %633, label %634, label %646

634:                                              ; preds = %621
  %635 = load ptr, ptr %52, align 8, !tbaa !5
  %636 = load double, ptr %635, align 8, !tbaa !11
  %637 = load ptr, ptr %55, align 8, !tbaa !5
  %638 = getelementptr inbounds double, ptr %637, i64 1
  store double %636, ptr %638, align 8, !tbaa !11
  %639 = load ptr, ptr %55, align 8, !tbaa !5
  %640 = getelementptr inbounds double, ptr %639, i64 1
  %641 = call i32 @dlascl_(ptr noundef @.str.12, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %106, ptr noundef %85, ptr noundef @c__1, ptr noundef @c__1, ptr noundef %640, ptr noundef @c__1, ptr noundef %86)
  %642 = load ptr, ptr %55, align 8, !tbaa !5
  %643 = getelementptr inbounds double, ptr %642, i64 1
  %644 = load double, ptr %643, align 8, !tbaa !11
  %645 = load ptr, ptr %52, align 8, !tbaa !5
  store double %644, ptr %645, align 8, !tbaa !11
  br label %646

646:                                              ; preds = %634, %621
  %647 = load ptr, ptr %48, align 8, !tbaa !5
  %648 = load i64, ptr %647, align 8, !tbaa !9
  %649 = add nsw i64 %648, 1
  %650 = load ptr, ptr %47, align 8, !tbaa !5
  %651 = load i64, ptr %650, align 8, !tbaa !9
  %652 = sub nsw i64 %649, %651
  store i64 %652, ptr %95, align 8, !tbaa !9
  %653 = load i64, ptr %82, align 8, !tbaa !9
  %654 = icmp ne i64 %653, 0
  br i1 %654, label %658, label %655

655:                                              ; preds = %646
  %656 = load i64, ptr %109, align 8, !tbaa !9
  %657 = icmp ne i64 %656, 0
  br i1 %657, label %665, label %658

658:                                              ; preds = %655, %646
  %659 = load ptr, ptr %35, align 8, !tbaa !5
  %660 = load i64, ptr %659, align 8, !tbaa !9
  %661 = add nsw i64 %660, 1
  %662 = load ptr, ptr %47, align 8, !tbaa !5
  %663 = load i64, ptr %662, align 8, !tbaa !9
  %664 = sub nsw i64 %661, %663
  store i64 %664, ptr %93, align 8, !tbaa !9
  br label %667

665:                                              ; preds = %655
  %666 = load i64, ptr %95, align 8, !tbaa !9
  store i64 %666, ptr %93, align 8, !tbaa !9
  br label %667

667:                                              ; preds = %665, %658
  store i64 1, ptr %87, align 8, !tbaa !9
  %668 = load i64, ptr %87, align 8, !tbaa !9
  %669 = load i64, ptr %95, align 8, !tbaa !9
  %670 = add nsw i64 %668, %669
  store i64 %670, ptr %91, align 8, !tbaa !9
  %671 = load ptr, ptr %56, align 8, !tbaa !5
  %672 = load i64, ptr %671, align 8, !tbaa !9
  %673 = add nsw i64 %672, 1
  %674 = load i64, ptr %91, align 8, !tbaa !9
  %675 = sub nsw i64 %673, %674
  store i64 %675, ptr %68, align 8, !tbaa !9
  %676 = load ptr, ptr %38, align 8, !tbaa !5
  %677 = load ptr, ptr %47, align 8, !tbaa !5
  %678 = load i64, ptr %677, align 8, !tbaa !9
  %679 = load ptr, ptr %47, align 8, !tbaa !5
  %680 = load i64, ptr %679, align 8, !tbaa !9
  %681 = load i64, ptr %62, align 8, !tbaa !9
  %682 = mul nsw i64 %680, %681
  %683 = add nsw i64 %678, %682
  %684 = getelementptr inbounds double, ptr %676, i64 %683
  %685 = load ptr, ptr %39, align 8, !tbaa !5
  %686 = load ptr, ptr %55, align 8, !tbaa !5
  %687 = load i64, ptr %87, align 8, !tbaa !9
  %688 = getelementptr inbounds double, ptr %686, i64 %687
  %689 = load ptr, ptr %55, align 8, !tbaa !5
  %690 = load i64, ptr %91, align 8, !tbaa !9
  %691 = getelementptr inbounds double, ptr %689, i64 %690
  %692 = call i32 @dgeqrf_(ptr noundef %95, ptr noundef %93, ptr noundef %684, ptr noundef %685, ptr noundef %688, ptr noundef %691, ptr noundef %68, ptr noundef %86)
  %693 = load ptr, ptr %56, align 8, !tbaa !5
  %694 = load i64, ptr %693, align 8, !tbaa !9
  %695 = add nsw i64 %694, 1
  %696 = load i64, ptr %91, align 8, !tbaa !9
  %697 = sub nsw i64 %695, %696
  store i64 %697, ptr %68, align 8, !tbaa !9
  %698 = load ptr, ptr %38, align 8, !tbaa !5
  %699 = load ptr, ptr %47, align 8, !tbaa !5
  %700 = load i64, ptr %699, align 8, !tbaa !9
  %701 = load ptr, ptr %47, align 8, !tbaa !5
  %702 = load i64, ptr %701, align 8, !tbaa !9
  %703 = load i64, ptr %62, align 8, !tbaa !9
  %704 = mul nsw i64 %702, %703
  %705 = add nsw i64 %700, %704
  %706 = getelementptr inbounds double, ptr %698, i64 %705
  %707 = load ptr, ptr %39, align 8, !tbaa !5
  %708 = load ptr, ptr %55, align 8, !tbaa !5
  %709 = load i64, ptr %87, align 8, !tbaa !9
  %710 = getelementptr inbounds double, ptr %708, i64 %709
  %711 = load ptr, ptr %36, align 8, !tbaa !5
  %712 = load ptr, ptr %47, align 8, !tbaa !5
  %713 = load i64, ptr %712, align 8, !tbaa !9
  %714 = load ptr, ptr %47, align 8, !tbaa !5
  %715 = load i64, ptr %714, align 8, !tbaa !9
  %716 = load i64, ptr %60, align 8, !tbaa !9
  %717 = mul nsw i64 %715, %716
  %718 = add nsw i64 %713, %717
  %719 = getelementptr inbounds double, ptr %711, i64 %718
  %720 = load ptr, ptr %37, align 8, !tbaa !5
  %721 = load ptr, ptr %55, align 8, !tbaa !5
  %722 = load i64, ptr %91, align 8, !tbaa !9
  %723 = getelementptr inbounds double, ptr %721, i64 %722
  %724 = call i32 @dormqr_(ptr noundef @.str.14, ptr noundef @.str.15, ptr noundef %95, ptr noundef %93, ptr noundef %95, ptr noundef %706, ptr noundef %707, ptr noundef %710, ptr noundef %719, ptr noundef %720, ptr noundef %723, ptr noundef %68, ptr noundef %86)
  %725 = load i64, ptr %89, align 8, !tbaa !9
  %726 = icmp ne i64 %725, 0
  br i1 %726, label %727, label %788

727:                                              ; preds = %667
  %728 = load ptr, ptr %35, align 8, !tbaa !5
  %729 = load ptr, ptr %35, align 8, !tbaa !5
  %730 = load ptr, ptr %43, align 8, !tbaa !5
  %731 = load i64, ptr %65, align 8, !tbaa !9
  %732 = getelementptr inbounds double, ptr %730, i64 %731
  %733 = load ptr, ptr %44, align 8, !tbaa !5
  %734 = call i32 @dlaset_(ptr noundef @.str.16, ptr noundef %728, ptr noundef %729, ptr noundef @c_b59, ptr noundef @c_b60, ptr noundef %732, ptr noundef %733)
  %735 = load i64, ptr %95, align 8, !tbaa !9
  %736 = icmp sgt i64 %735, 1
  br i1 %736, label %737, label %765

737:                                              ; preds = %727
  %738 = load i64, ptr %95, align 8, !tbaa !9
  %739 = sub nsw i64 %738, 1
  store i64 %739, ptr %68, align 8, !tbaa !9
  %740 = load i64, ptr %95, align 8, !tbaa !9
  %741 = sub nsw i64 %740, 1
  store i64 %741, ptr %69, align 8, !tbaa !9
  %742 = load ptr, ptr %38, align 8, !tbaa !5
  %743 = load ptr, ptr %47, align 8, !tbaa !5
  %744 = load i64, ptr %743, align 8, !tbaa !9
  %745 = add nsw i64 %744, 1
  %746 = load ptr, ptr %47, align 8, !tbaa !5
  %747 = load i64, ptr %746, align 8, !tbaa !9
  %748 = load i64, ptr %62, align 8, !tbaa !9
  %749 = mul nsw i64 %747, %748
  %750 = add nsw i64 %745, %749
  %751 = getelementptr inbounds double, ptr %742, i64 %750
  %752 = load ptr, ptr %39, align 8, !tbaa !5
  %753 = load ptr, ptr %43, align 8, !tbaa !5
  %754 = load ptr, ptr %47, align 8, !tbaa !5
  %755 = load i64, ptr %754, align 8, !tbaa !9
  %756 = add nsw i64 %755, 1
  %757 = load ptr, ptr %47, align 8, !tbaa !5
  %758 = load i64, ptr %757, align 8, !tbaa !9
  %759 = load i64, ptr %64, align 8, !tbaa !9
  %760 = mul nsw i64 %758, %759
  %761 = add nsw i64 %756, %760
  %762 = getelementptr inbounds double, ptr %753, i64 %761
  %763 = load ptr, ptr %44, align 8, !tbaa !5
  %764 = call i32 @dlacpy_(ptr noundef @.str.14, ptr noundef %68, ptr noundef %69, ptr noundef %751, ptr noundef %752, ptr noundef %762, ptr noundef %763)
  br label %765

765:                                              ; preds = %737, %727
  %766 = load ptr, ptr %56, align 8, !tbaa !5
  %767 = load i64, ptr %766, align 8, !tbaa !9
  %768 = add nsw i64 %767, 1
  %769 = load i64, ptr %91, align 8, !tbaa !9
  %770 = sub nsw i64 %768, %769
  store i64 %770, ptr %68, align 8, !tbaa !9
  %771 = load ptr, ptr %43, align 8, !tbaa !5
  %772 = load ptr, ptr %47, align 8, !tbaa !5
  %773 = load i64, ptr %772, align 8, !tbaa !9
  %774 = load ptr, ptr %47, align 8, !tbaa !5
  %775 = load i64, ptr %774, align 8, !tbaa !9
  %776 = load i64, ptr %64, align 8, !tbaa !9
  %777 = mul nsw i64 %775, %776
  %778 = add nsw i64 %773, %777
  %779 = getelementptr inbounds double, ptr %771, i64 %778
  %780 = load ptr, ptr %44, align 8, !tbaa !5
  %781 = load ptr, ptr %55, align 8, !tbaa !5
  %782 = load i64, ptr %87, align 8, !tbaa !9
  %783 = getelementptr inbounds double, ptr %781, i64 %782
  %784 = load ptr, ptr %55, align 8, !tbaa !5
  %785 = load i64, ptr %91, align 8, !tbaa !9
  %786 = getelementptr inbounds double, ptr %784, i64 %785
  %787 = call i32 @dorgqr_(ptr noundef %95, ptr noundef %95, ptr noundef %95, ptr noundef %779, ptr noundef %780, ptr noundef %783, ptr noundef %786, ptr noundef %68, ptr noundef %86)
  br label %788

788:                                              ; preds = %765, %667
  %789 = load i64, ptr %90, align 8, !tbaa !9
  %790 = icmp ne i64 %789, 0
  br i1 %790, label %791, label %799

791:                                              ; preds = %788
  %792 = load ptr, ptr %35, align 8, !tbaa !5
  %793 = load ptr, ptr %35, align 8, !tbaa !5
  %794 = load ptr, ptr %45, align 8, !tbaa !5
  %795 = load i64, ptr %67, align 8, !tbaa !9
  %796 = getelementptr inbounds double, ptr %794, i64 %795
  %797 = load ptr, ptr %46, align 8, !tbaa !5
  %798 = call i32 @dlaset_(ptr noundef @.str.16, ptr noundef %792, ptr noundef %793, ptr noundef @c_b59, ptr noundef @c_b60, ptr noundef %796, ptr noundef %797)
  br label %799

799:                                              ; preds = %791, %788
  %800 = load i64, ptr %82, align 8, !tbaa !9
  %801 = icmp ne i64 %800, 0
  br i1 %801, label %805, label %802

802:                                              ; preds = %799
  %803 = load i64, ptr %109, align 8, !tbaa !9
  %804 = icmp ne i64 %803, 0
  br i1 %804, label %828, label %805

805:                                              ; preds = %802, %799
  %806 = load ptr, ptr %32, align 8, !tbaa !5
  %807 = load ptr, ptr %33, align 8, !tbaa !5
  %808 = load ptr, ptr %35, align 8, !tbaa !5
  %809 = load ptr, ptr %47, align 8, !tbaa !5
  %810 = load ptr, ptr %48, align 8, !tbaa !5
  %811 = load ptr, ptr %36, align 8, !tbaa !5
  %812 = load i64, ptr %61, align 8, !tbaa !9
  %813 = getelementptr inbounds double, ptr %811, i64 %812
  %814 = load ptr, ptr %37, align 8, !tbaa !5
  %815 = load ptr, ptr %38, align 8, !tbaa !5
  %816 = load i64, ptr %63, align 8, !tbaa !9
  %817 = getelementptr inbounds double, ptr %815, i64 %816
  %818 = load ptr, ptr %39, align 8, !tbaa !5
  %819 = load ptr, ptr %43, align 8, !tbaa !5
  %820 = load i64, ptr %65, align 8, !tbaa !9
  %821 = getelementptr inbounds double, ptr %819, i64 %820
  %822 = load ptr, ptr %44, align 8, !tbaa !5
  %823 = load ptr, ptr %45, align 8, !tbaa !5
  %824 = load i64, ptr %67, align 8, !tbaa !9
  %825 = getelementptr inbounds double, ptr %823, i64 %824
  %826 = load ptr, ptr %46, align 8, !tbaa !5
  %827 = call i32 @dgghrd_(ptr noundef %806, ptr noundef %807, ptr noundef %808, ptr noundef %809, ptr noundef %810, ptr noundef %813, ptr noundef %814, ptr noundef %817, ptr noundef %818, ptr noundef %821, ptr noundef %822, ptr noundef %825, ptr noundef %826, ptr noundef %86)
  br label %858

828:                                              ; preds = %802
  %829 = load ptr, ptr %36, align 8, !tbaa !5
  %830 = load ptr, ptr %47, align 8, !tbaa !5
  %831 = load i64, ptr %830, align 8, !tbaa !9
  %832 = load ptr, ptr %47, align 8, !tbaa !5
  %833 = load i64, ptr %832, align 8, !tbaa !9
  %834 = load i64, ptr %60, align 8, !tbaa !9
  %835 = mul nsw i64 %833, %834
  %836 = add nsw i64 %831, %835
  %837 = getelementptr inbounds double, ptr %829, i64 %836
  %838 = load ptr, ptr %37, align 8, !tbaa !5
  %839 = load ptr, ptr %38, align 8, !tbaa !5
  %840 = load ptr, ptr %47, align 8, !tbaa !5
  %841 = load i64, ptr %840, align 8, !tbaa !9
  %842 = load ptr, ptr %47, align 8, !tbaa !5
  %843 = load i64, ptr %842, align 8, !tbaa !9
  %844 = load i64, ptr %62, align 8, !tbaa !9
  %845 = mul nsw i64 %843, %844
  %846 = add nsw i64 %841, %845
  %847 = getelementptr inbounds double, ptr %839, i64 %846
  %848 = load ptr, ptr %39, align 8, !tbaa !5
  %849 = load ptr, ptr %43, align 8, !tbaa !5
  %850 = load i64, ptr %65, align 8, !tbaa !9
  %851 = getelementptr inbounds double, ptr %849, i64 %850
  %852 = load ptr, ptr %44, align 8, !tbaa !5
  %853 = load ptr, ptr %45, align 8, !tbaa !5
  %854 = load i64, ptr %67, align 8, !tbaa !9
  %855 = getelementptr inbounds double, ptr %853, i64 %854
  %856 = load ptr, ptr %46, align 8, !tbaa !5
  %857 = call i32 @dgghrd_(ptr noundef @.str, ptr noundef @.str, ptr noundef %95, ptr noundef @c__1, ptr noundef %95, ptr noundef %837, ptr noundef %838, ptr noundef %847, ptr noundef %848, ptr noundef %851, ptr noundef %852, ptr noundef %855, ptr noundef %856, ptr noundef %86)
  br label %858

858:                                              ; preds = %828, %805
  %859 = load i64, ptr %82, align 8, !tbaa !9
  %860 = icmp ne i64 %859, 0
  br i1 %860, label %864, label %861

861:                                              ; preds = %858
  %862 = load i64, ptr %109, align 8, !tbaa !9
  %863 = icmp ne i64 %862, 0
  br i1 %863, label %866, label %864

864:                                              ; preds = %861, %858
  %865 = getelementptr inbounds [1 x i8], ptr %99, i64 0, i64 0
  store i8 83, ptr %865, align 1, !tbaa !13
  br label %868

866:                                              ; preds = %861
  %867 = getelementptr inbounds [1 x i8], ptr %99, i64 0, i64 0
  store i8 69, ptr %867, align 1, !tbaa !13
  br label %868

868:                                              ; preds = %866, %864
  %869 = getelementptr inbounds [1 x i8], ptr %99, i64 0, i64 0
  %870 = load ptr, ptr %32, align 8, !tbaa !5
  %871 = load ptr, ptr %33, align 8, !tbaa !5
  %872 = load ptr, ptr %35, align 8, !tbaa !5
  %873 = load ptr, ptr %47, align 8, !tbaa !5
  %874 = load ptr, ptr %48, align 8, !tbaa !5
  %875 = load ptr, ptr %36, align 8, !tbaa !5
  %876 = load i64, ptr %61, align 8, !tbaa !9
  %877 = getelementptr inbounds double, ptr %875, i64 %876
  %878 = load ptr, ptr %37, align 8, !tbaa !5
  %879 = load ptr, ptr %38, align 8, !tbaa !5
  %880 = load i64, ptr %63, align 8, !tbaa !9
  %881 = getelementptr inbounds double, ptr %879, i64 %880
  %882 = load ptr, ptr %39, align 8, !tbaa !5
  %883 = load ptr, ptr %40, align 8, !tbaa !5
  %884 = getelementptr inbounds double, ptr %883, i64 1
  %885 = load ptr, ptr %41, align 8, !tbaa !5
  %886 = getelementptr inbounds double, ptr %885, i64 1
  %887 = load ptr, ptr %42, align 8, !tbaa !5
  %888 = getelementptr inbounds double, ptr %887, i64 1
  %889 = load ptr, ptr %43, align 8, !tbaa !5
  %890 = load i64, ptr %65, align 8, !tbaa !9
  %891 = getelementptr inbounds double, ptr %889, i64 %890
  %892 = load ptr, ptr %44, align 8, !tbaa !5
  %893 = load ptr, ptr %45, align 8, !tbaa !5
  %894 = load i64, ptr %67, align 8, !tbaa !9
  %895 = getelementptr inbounds double, ptr %893, i64 %894
  %896 = load ptr, ptr %46, align 8, !tbaa !5
  %897 = load ptr, ptr %55, align 8, !tbaa !5
  %898 = getelementptr inbounds double, ptr %897, i64 1
  %899 = load ptr, ptr %56, align 8, !tbaa !5
  %900 = call i32 @dhgeqz_(ptr noundef %869, ptr noundef %870, ptr noundef %871, ptr noundef %872, ptr noundef %873, ptr noundef %874, ptr noundef %877, ptr noundef %878, ptr noundef %881, ptr noundef %882, ptr noundef %884, ptr noundef %886, ptr noundef %888, ptr noundef %891, ptr noundef %892, ptr noundef %895, ptr noundef %896, ptr noundef %898, ptr noundef %899, ptr noundef %86)
  %901 = load i64, ptr %86, align 8, !tbaa !9
  %902 = icmp ne i64 %901, 0
  br i1 %902, label %903, label %938

903:                                              ; preds = %868
  %904 = load i64, ptr %86, align 8, !tbaa !9
  %905 = icmp sgt i64 %904, 0
  br i1 %905, label %906, label %914

906:                                              ; preds = %903
  %907 = load i64, ptr %86, align 8, !tbaa !9
  %908 = load ptr, ptr %35, align 8, !tbaa !5
  %909 = load i64, ptr %908, align 8, !tbaa !9
  %910 = icmp sle i64 %907, %909
  br i1 %910, label %911, label %914

911:                                              ; preds = %906
  %912 = load i64, ptr %86, align 8, !tbaa !9
  %913 = load ptr, ptr %59, align 8, !tbaa !5
  store i64 %912, ptr %913, align 8, !tbaa !9
  br label %937

914:                                              ; preds = %906, %903
  %915 = load i64, ptr %86, align 8, !tbaa !9
  %916 = load ptr, ptr %35, align 8, !tbaa !5
  %917 = load i64, ptr %916, align 8, !tbaa !9
  %918 = icmp sgt i64 %915, %917
  br i1 %918, label %919, label %931

919:                                              ; preds = %914
  %920 = load i64, ptr %86, align 8, !tbaa !9
  %921 = load ptr, ptr %35, align 8, !tbaa !5
  %922 = load i64, ptr %921, align 8, !tbaa !9
  %923 = shl i64 %922, 1
  %924 = icmp sle i64 %920, %923
  br i1 %924, label %925, label %931

925:                                              ; preds = %919
  %926 = load i64, ptr %86, align 8, !tbaa !9
  %927 = load ptr, ptr %35, align 8, !tbaa !5
  %928 = load i64, ptr %927, align 8, !tbaa !9
  %929 = sub nsw i64 %926, %928
  %930 = load ptr, ptr %59, align 8, !tbaa !5
  store i64 %929, ptr %930, align 8, !tbaa !9
  br label %936

931:                                              ; preds = %919, %914
  %932 = load ptr, ptr %35, align 8, !tbaa !5
  %933 = load i64, ptr %932, align 8, !tbaa !9
  %934 = add nsw i64 %933, 1
  %935 = load ptr, ptr %59, align 8, !tbaa !5
  store i64 %934, ptr %935, align 8, !tbaa !9
  br label %936

936:                                              ; preds = %931, %925
  br label %937

937:                                              ; preds = %936, %911
  br label %1588

938:                                              ; preds = %868
  %939 = load i64, ptr %82, align 8, !tbaa !9
  %940 = icmp ne i64 %939, 0
  br i1 %940, label %944, label %941

941:                                              ; preds = %938
  %942 = load i64, ptr %109, align 8, !tbaa !9
  %943 = icmp ne i64 %942, 0
  br i1 %943, label %1148, label %944

944:                                              ; preds = %941, %938
  %945 = load i64, ptr %82, align 8, !tbaa !9
  %946 = icmp ne i64 %945, 0
  br i1 %946, label %947, label %992

947:                                              ; preds = %944
  %948 = load i64, ptr %89, align 8, !tbaa !9
  %949 = icmp ne i64 %948, 0
  br i1 %949, label %950, label %958

950:                                              ; preds = %947
  %951 = load i64, ptr %90, align 8, !tbaa !9
  %952 = icmp ne i64 %951, 0
  br i1 %952, label %953, label %955

953:                                              ; preds = %950
  %954 = getelementptr inbounds [1 x i8], ptr %99, i64 0, i64 0
  store i8 66, ptr %954, align 1, !tbaa !13
  br label %957

955:                                              ; preds = %950
  %956 = getelementptr inbounds [1 x i8], ptr %99, i64 0, i64 0
  store i8 76, ptr %956, align 1, !tbaa !13
  br label %957

957:                                              ; preds = %955, %953
  br label %960

958:                                              ; preds = %947
  %959 = getelementptr inbounds [1 x i8], ptr %99, i64 0, i64 0
  store i8 82, ptr %959, align 1, !tbaa !13
  br label %960

960:                                              ; preds = %958, %957
  %961 = getelementptr inbounds [1 x i8], ptr %99, i64 0, i64 0
  %962 = getelementptr inbounds [1 x i64], ptr %98, i64 0, i64 0
  %963 = load ptr, ptr %35, align 8, !tbaa !5
  %964 = load ptr, ptr %36, align 8, !tbaa !5
  %965 = load i64, ptr %61, align 8, !tbaa !9
  %966 = getelementptr inbounds double, ptr %964, i64 %965
  %967 = load ptr, ptr %37, align 8, !tbaa !5
  %968 = load ptr, ptr %38, align 8, !tbaa !5
  %969 = load i64, ptr %63, align 8, !tbaa !9
  %970 = getelementptr inbounds double, ptr %968, i64 %969
  %971 = load ptr, ptr %39, align 8, !tbaa !5
  %972 = load ptr, ptr %43, align 8, !tbaa !5
  %973 = load i64, ptr %65, align 8, !tbaa !9
  %974 = getelementptr inbounds double, ptr %972, i64 %973
  %975 = load ptr, ptr %44, align 8, !tbaa !5
  %976 = load ptr, ptr %45, align 8, !tbaa !5
  %977 = load i64, ptr %67, align 8, !tbaa !9
  %978 = getelementptr inbounds double, ptr %976, i64 %977
  %979 = load ptr, ptr %46, align 8, !tbaa !5
  %980 = load ptr, ptr %35, align 8, !tbaa !5
  %981 = load ptr, ptr %55, align 8, !tbaa !5
  %982 = getelementptr inbounds double, ptr %981, i64 1
  %983 = call i32 @dtgevc_(ptr noundef %961, ptr noundef @.str.4, ptr noundef %962, ptr noundef %963, ptr noundef %966, ptr noundef %967, ptr noundef %970, ptr noundef %971, ptr noundef %974, ptr noundef %975, ptr noundef %978, ptr noundef %979, ptr noundef %980, ptr noundef %78, ptr noundef %982, ptr noundef %86)
  %984 = load i64, ptr %86, align 8, !tbaa !9
  %985 = icmp ne i64 %984, 0
  br i1 %985, label %986, label %991

986:                                              ; preds = %960
  %987 = load ptr, ptr %35, align 8, !tbaa !5
  %988 = load i64, ptr %987, align 8, !tbaa !9
  %989 = add nsw i64 %988, 2
  %990 = load ptr, ptr %59, align 8, !tbaa !5
  store i64 %989, ptr %990, align 8, !tbaa !9
  br label %1588

991:                                              ; preds = %960
  br label %992

992:                                              ; preds = %991, %944
  %993 = load i64, ptr %109, align 8, !tbaa !9
  %994 = icmp ne i64 %993, 0
  br i1 %994, label %1147, label %995

995:                                              ; preds = %992
  store i64 0, ptr %83, align 8, !tbaa !9
  %996 = load ptr, ptr %35, align 8, !tbaa !5
  %997 = load i64, ptr %996, align 8, !tbaa !9
  store i64 %997, ptr %68, align 8, !tbaa !9
  store i64 1, ptr %74, align 8, !tbaa !9
  br label %998

998:                                              ; preds = %1143, %995
  %999 = load i64, ptr %74, align 8, !tbaa !9
  %1000 = load i64, ptr %68, align 8, !tbaa !9
  %1001 = icmp sle i64 %999, %1000
  br i1 %1001, label %1002, label %1146

1002:                                             ; preds = %998
  %1003 = load i64, ptr %83, align 8, !tbaa !9
  %1004 = icmp ne i64 %1003, 0
  br i1 %1004, label %1005, label %1006

1005:                                             ; preds = %1002
  store i64 0, ptr %83, align 8, !tbaa !9
  br label %1142

1006:                                             ; preds = %1002
  store i64 1, ptr %79, align 8, !tbaa !9
  %1007 = load i64, ptr %74, align 8, !tbaa !9
  %1008 = load ptr, ptr %35, align 8, !tbaa !5
  %1009 = load i64, ptr %1008, align 8, !tbaa !9
  %1010 = icmp slt i64 %1007, %1009
  br i1 %1010, label %1011, label %1024

1011:                                             ; preds = %1006
  %1012 = load ptr, ptr %36, align 8, !tbaa !5
  %1013 = load i64, ptr %74, align 8, !tbaa !9
  %1014 = add nsw i64 %1013, 1
  %1015 = load i64, ptr %74, align 8, !tbaa !9
  %1016 = load i64, ptr %60, align 8, !tbaa !9
  %1017 = mul nsw i64 %1015, %1016
  %1018 = add nsw i64 %1014, %1017
  %1019 = getelementptr inbounds double, ptr %1012, i64 %1018
  %1020 = load double, ptr %1019, align 8, !tbaa !11
  %1021 = fcmp une double %1020, 0.000000e+00
  br i1 %1021, label %1022, label %1023

1022:                                             ; preds = %1011
  store i64 1, ptr %83, align 8, !tbaa !9
  store i64 2, ptr %79, align 8, !tbaa !9
  br label %1023

1023:                                             ; preds = %1022, %1011
  br label %1024

1024:                                             ; preds = %1023, %1006
  %1025 = load ptr, ptr %35, align 8, !tbaa !5
  %1026 = load i64, ptr %1025, align 8, !tbaa !9
  store i64 %1026, ptr %69, align 8, !tbaa !9
  store i64 1, ptr %75, align 8, !tbaa !9
  br label %1027

1027:                                             ; preds = %1035, %1024
  %1028 = load i64, ptr %75, align 8, !tbaa !9
  %1029 = load i64, ptr %69, align 8, !tbaa !9
  %1030 = icmp sle i64 %1028, %1029
  br i1 %1030, label %1031, label %1038

1031:                                             ; preds = %1027
  %1032 = load ptr, ptr %58, align 8, !tbaa !5
  %1033 = load i64, ptr %75, align 8, !tbaa !9
  %1034 = getelementptr inbounds i64, ptr %1032, i64 %1033
  store i64 0, ptr %1034, align 8, !tbaa !9
  br label %1035

1035:                                             ; preds = %1031
  %1036 = load i64, ptr %75, align 8, !tbaa !9
  %1037 = add nsw i64 %1036, 1
  store i64 %1037, ptr %75, align 8, !tbaa !9
  br label %1027, !llvm.loop !14

1038:                                             ; preds = %1027
  %1039 = load i64, ptr %79, align 8, !tbaa !9
  %1040 = icmp eq i64 %1039, 1
  br i1 %1040, label %1041, label %1045

1041:                                             ; preds = %1038
  %1042 = load ptr, ptr %58, align 8, !tbaa !5
  %1043 = load i64, ptr %74, align 8, !tbaa !9
  %1044 = getelementptr inbounds i64, ptr %1042, i64 %1043
  store i64 1, ptr %1044, align 8, !tbaa !9
  br label %1057

1045:                                             ; preds = %1038
  %1046 = load i64, ptr %79, align 8, !tbaa !9
  %1047 = icmp eq i64 %1046, 2
  br i1 %1047, label %1048, label %1056

1048:                                             ; preds = %1045
  %1049 = load ptr, ptr %58, align 8, !tbaa !5
  %1050 = load i64, ptr %74, align 8, !tbaa !9
  %1051 = getelementptr inbounds i64, ptr %1049, i64 %1050
  store i64 1, ptr %1051, align 8, !tbaa !9
  %1052 = load ptr, ptr %58, align 8, !tbaa !5
  %1053 = load i64, ptr %74, align 8, !tbaa !9
  %1054 = add nsw i64 %1053, 1
  %1055 = getelementptr inbounds i64, ptr %1052, i64 %1054
  store i64 1, ptr %1055, align 8, !tbaa !9
  br label %1056

1056:                                             ; preds = %1048, %1045
  br label %1057

1057:                                             ; preds = %1056, %1041
  %1058 = load i64, ptr %79, align 8, !tbaa !9
  %1059 = load ptr, ptr %35, align 8, !tbaa !5
  %1060 = load i64, ptr %1059, align 8, !tbaa !9
  %1061 = mul nsw i64 %1058, %1060
  %1062 = add nsw i64 %1061, 1
  store i64 %1062, ptr %91, align 8, !tbaa !9
  %1063 = load i64, ptr %91, align 8, !tbaa !9
  %1064 = load i64, ptr %79, align 8, !tbaa !9
  %1065 = load ptr, ptr %35, align 8, !tbaa !5
  %1066 = load i64, ptr %1065, align 8, !tbaa !9
  %1067 = mul nsw i64 %1064, %1066
  %1068 = add nsw i64 %1063, %1067
  store i64 %1068, ptr %92, align 8, !tbaa !9
  %1069 = load i64, ptr %105, align 8, !tbaa !9
  %1070 = icmp ne i64 %1069, 0
  br i1 %1070, label %1074, label %1071

1071:                                             ; preds = %1057
  %1072 = load i64, ptr %103, align 8, !tbaa !9
  %1073 = icmp ne i64 %1072, 0
  br i1 %1073, label %1074, label %1105

1074:                                             ; preds = %1071, %1057
  %1075 = load ptr, ptr %58, align 8, !tbaa !5
  %1076 = getelementptr inbounds i64, ptr %1075, i64 1
  %1077 = load ptr, ptr %35, align 8, !tbaa !5
  %1078 = load ptr, ptr %36, align 8, !tbaa !5
  %1079 = load i64, ptr %61, align 8, !tbaa !9
  %1080 = getelementptr inbounds double, ptr %1078, i64 %1079
  %1081 = load ptr, ptr %37, align 8, !tbaa !5
  %1082 = load ptr, ptr %38, align 8, !tbaa !5
  %1083 = load i64, ptr %63, align 8, !tbaa !9
  %1084 = getelementptr inbounds double, ptr %1082, i64 %1083
  %1085 = load ptr, ptr %39, align 8, !tbaa !5
  %1086 = load ptr, ptr %55, align 8, !tbaa !5
  %1087 = getelementptr inbounds double, ptr %1086, i64 1
  %1088 = load ptr, ptr %35, align 8, !tbaa !5
  %1089 = load ptr, ptr %55, align 8, !tbaa !5
  %1090 = load i64, ptr %91, align 8, !tbaa !9
  %1091 = getelementptr inbounds double, ptr %1089, i64 %1090
  %1092 = load ptr, ptr %35, align 8, !tbaa !5
  %1093 = load ptr, ptr %55, align 8, !tbaa !5
  %1094 = load i64, ptr %92, align 8, !tbaa !9
  %1095 = getelementptr inbounds double, ptr %1093, i64 %1094
  %1096 = call i32 @dtgevc_(ptr noundef @.str.4, ptr noundef @.str.5, ptr noundef %1076, ptr noundef %1077, ptr noundef %1080, ptr noundef %1081, ptr noundef %1084, ptr noundef %1085, ptr noundef %1087, ptr noundef %1088, ptr noundef %1091, ptr noundef %1092, ptr noundef %79, ptr noundef %76, ptr noundef %1095, ptr noundef %86)
  %1097 = load i64, ptr %86, align 8, !tbaa !9
  %1098 = icmp ne i64 %1097, 0
  br i1 %1098, label %1099, label %1104

1099:                                             ; preds = %1074
  %1100 = load ptr, ptr %35, align 8, !tbaa !5
  %1101 = load i64, ptr %1100, align 8, !tbaa !9
  %1102 = add nsw i64 %1101, 2
  %1103 = load ptr, ptr %59, align 8, !tbaa !5
  store i64 %1102, ptr %1103, align 8, !tbaa !9
  br label %1588

1104:                                             ; preds = %1074
  br label %1105

1105:                                             ; preds = %1104, %1071
  %1106 = load ptr, ptr %56, align 8, !tbaa !5
  %1107 = load i64, ptr %1106, align 8, !tbaa !9
  %1108 = load i64, ptr %92, align 8, !tbaa !9
  %1109 = sub nsw i64 %1107, %1108
  %1110 = add nsw i64 %1109, 1
  store i64 %1110, ptr %69, align 8, !tbaa !9
  %1111 = load ptr, ptr %34, align 8, !tbaa !5
  %1112 = load ptr, ptr %58, align 8, !tbaa !5
  %1113 = getelementptr inbounds i64, ptr %1112, i64 1
  %1114 = load ptr, ptr %35, align 8, !tbaa !5
  %1115 = load ptr, ptr %36, align 8, !tbaa !5
  %1116 = load i64, ptr %61, align 8, !tbaa !9
  %1117 = getelementptr inbounds double, ptr %1115, i64 %1116
  %1118 = load ptr, ptr %37, align 8, !tbaa !5
  %1119 = load ptr, ptr %38, align 8, !tbaa !5
  %1120 = load i64, ptr %63, align 8, !tbaa !9
  %1121 = getelementptr inbounds double, ptr %1119, i64 %1120
  %1122 = load ptr, ptr %39, align 8, !tbaa !5
  %1123 = load ptr, ptr %55, align 8, !tbaa !5
  %1124 = getelementptr inbounds double, ptr %1123, i64 1
  %1125 = load ptr, ptr %35, align 8, !tbaa !5
  %1126 = load ptr, ptr %55, align 8, !tbaa !5
  %1127 = load i64, ptr %91, align 8, !tbaa !9
  %1128 = getelementptr inbounds double, ptr %1126, i64 %1127
  %1129 = load ptr, ptr %35, align 8, !tbaa !5
  %1130 = load ptr, ptr %53, align 8, !tbaa !5
  %1131 = load i64, ptr %74, align 8, !tbaa !9
  %1132 = getelementptr inbounds double, ptr %1130, i64 %1131
  %1133 = load ptr, ptr %54, align 8, !tbaa !5
  %1134 = load i64, ptr %74, align 8, !tbaa !9
  %1135 = getelementptr inbounds double, ptr %1133, i64 %1134
  %1136 = load ptr, ptr %55, align 8, !tbaa !5
  %1137 = load i64, ptr %92, align 8, !tbaa !9
  %1138 = getelementptr inbounds double, ptr %1136, i64 %1137
  %1139 = load ptr, ptr %57, align 8, !tbaa !5
  %1140 = getelementptr inbounds i64, ptr %1139, i64 1
  %1141 = call i32 @dtgsna_(ptr noundef %1111, ptr noundef @.str.5, ptr noundef %1113, ptr noundef %1114, ptr noundef %1117, ptr noundef %1118, ptr noundef %1121, ptr noundef %1122, ptr noundef %1124, ptr noundef %1125, ptr noundef %1128, ptr noundef %1129, ptr noundef %1132, ptr noundef %1135, ptr noundef %79, ptr noundef %76, ptr noundef %1138, ptr noundef %69, ptr noundef %1140, ptr noundef %86)
  br label %1142

1142:                                             ; preds = %1105, %1005
  br label %1143

1143:                                             ; preds = %1142
  %1144 = load i64, ptr %74, align 8, !tbaa !9
  %1145 = add nsw i64 %1144, 1
  store i64 %1145, ptr %74, align 8, !tbaa !9
  br label %998, !llvm.loop !16

1146:                                             ; preds = %998
  br label %1147

1147:                                             ; preds = %1146, %992
  br label %1148

1148:                                             ; preds = %1147, %941
  %1149 = load i64, ptr %89, align 8, !tbaa !9
  %1150 = icmp ne i64 %1149, 0
  br i1 %1150, label %1151, label %1356

1151:                                             ; preds = %1148
  %1152 = load ptr, ptr %31, align 8, !tbaa !5
  %1153 = load ptr, ptr %35, align 8, !tbaa !5
  %1154 = load ptr, ptr %47, align 8, !tbaa !5
  %1155 = load ptr, ptr %48, align 8, !tbaa !5
  %1156 = load ptr, ptr %49, align 8, !tbaa !5
  %1157 = getelementptr inbounds double, ptr %1156, i64 1
  %1158 = load ptr, ptr %50, align 8, !tbaa !5
  %1159 = getelementptr inbounds double, ptr %1158, i64 1
  %1160 = load ptr, ptr %35, align 8, !tbaa !5
  %1161 = load ptr, ptr %43, align 8, !tbaa !5
  %1162 = load i64, ptr %65, align 8, !tbaa !9
  %1163 = getelementptr inbounds double, ptr %1161, i64 %1162
  %1164 = load ptr, ptr %44, align 8, !tbaa !5
  %1165 = call i32 @dggbak_(ptr noundef %1152, ptr noundef @.str.14, ptr noundef %1153, ptr noundef %1154, ptr noundef %1155, ptr noundef %1157, ptr noundef %1159, ptr noundef %1160, ptr noundef %1163, ptr noundef %1164, ptr noundef %86)
  %1166 = load ptr, ptr %35, align 8, !tbaa !5
  %1167 = load i64, ptr %1166, align 8, !tbaa !9
  store i64 %1167, ptr %68, align 8, !tbaa !9
  store i64 1, ptr %77, align 8, !tbaa !9
  br label %1168

1168:                                             ; preds = %1352, %1151
  %1169 = load i64, ptr %77, align 8, !tbaa !9
  %1170 = load i64, ptr %68, align 8, !tbaa !9
  %1171 = icmp sle i64 %1169, %1170
  br i1 %1171, label %1172, label %1355

1172:                                             ; preds = %1168
  %1173 = load ptr, ptr %41, align 8, !tbaa !5
  %1174 = load i64, ptr %77, align 8, !tbaa !9
  %1175 = getelementptr inbounds double, ptr %1173, i64 %1174
  %1176 = load double, ptr %1175, align 8, !tbaa !11
  %1177 = fcmp olt double %1176, 0.000000e+00
  br i1 %1177, label %1178, label %1179

1178:                                             ; preds = %1172
  br label %1351

1179:                                             ; preds = %1172
  store double 0.000000e+00, ptr %88, align 8, !tbaa !11
  %1180 = load ptr, ptr %41, align 8, !tbaa !5
  %1181 = load i64, ptr %77, align 8, !tbaa !9
  %1182 = getelementptr inbounds double, ptr %1180, i64 %1181
  %1183 = load double, ptr %1182, align 8, !tbaa !11
  %1184 = fcmp oeq double %1183, 0.000000e+00
  br i1 %1184, label %1185, label %1224

1185:                                             ; preds = %1179
  %1186 = load ptr, ptr %35, align 8, !tbaa !5
  %1187 = load i64, ptr %1186, align 8, !tbaa !9
  store i64 %1187, ptr %69, align 8, !tbaa !9
  store i64 1, ptr %80, align 8, !tbaa !9
  br label %1188

1188:                                             ; preds = %1220, %1185
  %1189 = load i64, ptr %80, align 8, !tbaa !9
  %1190 = load i64, ptr %69, align 8, !tbaa !9
  %1191 = icmp sle i64 %1189, %1190
  br i1 %1191, label %1192, label %1223

1192:                                             ; preds = %1188
  %1193 = load double, ptr %88, align 8, !tbaa !11
  store double %1193, ptr %71, align 8, !tbaa !11
  %1194 = load ptr, ptr %43, align 8, !tbaa !5
  %1195 = load i64, ptr %80, align 8, !tbaa !9
  %1196 = load i64, ptr %77, align 8, !tbaa !9
  %1197 = load i64, ptr %64, align 8, !tbaa !9
  %1198 = mul nsw i64 %1196, %1197
  %1199 = add nsw i64 %1195, %1198
  %1200 = getelementptr inbounds double, ptr %1194, i64 %1199
  %1201 = load double, ptr %1200, align 8, !tbaa !11
  store double %1201, ptr %70, align 8, !tbaa !11
  %1202 = load double, ptr %70, align 8, !tbaa !11
  %1203 = fcmp oge double %1202, 0.000000e+00
  br i1 %1203, label %1204, label %1206

1204:                                             ; preds = %1192
  %1205 = load double, ptr %70, align 8, !tbaa !11
  br label %1209

1206:                                             ; preds = %1192
  %1207 = load double, ptr %70, align 8, !tbaa !11
  %1208 = fneg double %1207
  br label %1209

1209:                                             ; preds = %1206, %1204
  %1210 = phi double [ %1205, %1204 ], [ %1208, %1206 ]
  store double %1210, ptr %72, align 8, !tbaa !11
  %1211 = load double, ptr %71, align 8, !tbaa !11
  %1212 = load double, ptr %72, align 8, !tbaa !11
  %1213 = fcmp oge double %1211, %1212
  br i1 %1213, label %1214, label %1216

1214:                                             ; preds = %1209
  %1215 = load double, ptr %71, align 8, !tbaa !11
  br label %1218

1216:                                             ; preds = %1209
  %1217 = load double, ptr %72, align 8, !tbaa !11
  br label %1218

1218:                                             ; preds = %1216, %1214
  %1219 = phi double [ %1215, %1214 ], [ %1217, %1216 ]
  store double %1219, ptr %88, align 8, !tbaa !11
  br label %1220

1220:                                             ; preds = %1218
  %1221 = load i64, ptr %80, align 8, !tbaa !9
  %1222 = add nsw i64 %1221, 1
  store i64 %1222, ptr %80, align 8, !tbaa !9
  br label %1188, !llvm.loop !17

1223:                                             ; preds = %1188
  br label %1282

1224:                                             ; preds = %1179
  %1225 = load ptr, ptr %35, align 8, !tbaa !5
  %1226 = load i64, ptr %1225, align 8, !tbaa !9
  store i64 %1226, ptr %69, align 8, !tbaa !9
  store i64 1, ptr %80, align 8, !tbaa !9
  br label %1227

1227:                                             ; preds = %1278, %1224
  %1228 = load i64, ptr %80, align 8, !tbaa !9
  %1229 = load i64, ptr %69, align 8, !tbaa !9
  %1230 = icmp sle i64 %1228, %1229
  br i1 %1230, label %1231, label %1281

1231:                                             ; preds = %1227
  %1232 = load double, ptr %88, align 8, !tbaa !11
  store double %1232, ptr %72, align 8, !tbaa !11
  %1233 = load ptr, ptr %43, align 8, !tbaa !5
  %1234 = load i64, ptr %80, align 8, !tbaa !9
  %1235 = load i64, ptr %77, align 8, !tbaa !9
  %1236 = load i64, ptr %64, align 8, !tbaa !9
  %1237 = mul nsw i64 %1235, %1236
  %1238 = add nsw i64 %1234, %1237
  %1239 = getelementptr inbounds double, ptr %1233, i64 %1238
  %1240 = load double, ptr %1239, align 8, !tbaa !11
  store double %1240, ptr %70, align 8, !tbaa !11
  %1241 = load double, ptr %70, align 8, !tbaa !11
  %1242 = fcmp oge double %1241, 0.000000e+00
  br i1 %1242, label %1243, label %1245

1243:                                             ; preds = %1231
  %1244 = load double, ptr %70, align 8, !tbaa !11
  br label %1248

1245:                                             ; preds = %1231
  %1246 = load double, ptr %70, align 8, !tbaa !11
  %1247 = fneg double %1246
  br label %1248

1248:                                             ; preds = %1245, %1243
  %1249 = phi double [ %1244, %1243 ], [ %1247, %1245 ]
  %1250 = load ptr, ptr %43, align 8, !tbaa !5
  %1251 = load i64, ptr %80, align 8, !tbaa !9
  %1252 = load i64, ptr %77, align 8, !tbaa !9
  %1253 = add nsw i64 %1252, 1
  %1254 = load i64, ptr %64, align 8, !tbaa !9
  %1255 = mul nsw i64 %1253, %1254
  %1256 = add nsw i64 %1251, %1255
  %1257 = getelementptr inbounds double, ptr %1250, i64 %1256
  %1258 = load double, ptr %1257, align 8, !tbaa !11
  store double %1258, ptr %71, align 8, !tbaa !11
  %1259 = load double, ptr %71, align 8, !tbaa !11
  %1260 = fcmp oge double %1259, 0.000000e+00
  br i1 %1260, label %1261, label %1263

1261:                                             ; preds = %1248
  %1262 = load double, ptr %71, align 8, !tbaa !11
  br label %1266

1263:                                             ; preds = %1248
  %1264 = load double, ptr %71, align 8, !tbaa !11
  %1265 = fneg double %1264
  br label %1266

1266:                                             ; preds = %1263, %1261
  %1267 = phi double [ %1262, %1261 ], [ %1265, %1263 ]
  %1268 = fadd double %1249, %1267
  store double %1268, ptr %73, align 8, !tbaa !11
  %1269 = load double, ptr %72, align 8, !tbaa !11
  %1270 = load double, ptr %73, align 8, !tbaa !11
  %1271 = fcmp oge double %1269, %1270
  br i1 %1271, label %1272, label %1274

1272:                                             ; preds = %1266
  %1273 = load double, ptr %72, align 8, !tbaa !11
  br label %1276

1274:                                             ; preds = %1266
  %1275 = load double, ptr %73, align 8, !tbaa !11
  br label %1276

1276:                                             ; preds = %1274, %1272
  %1277 = phi double [ %1273, %1272 ], [ %1275, %1274 ]
  store double %1277, ptr %88, align 8, !tbaa !11
  br label %1278

1278:                                             ; preds = %1276
  %1279 = load i64, ptr %80, align 8, !tbaa !9
  %1280 = add nsw i64 %1279, 1
  store i64 %1280, ptr %80, align 8, !tbaa !9
  br label %1227, !llvm.loop !18

1281:                                             ; preds = %1227
  br label %1282

1282:                                             ; preds = %1281, %1223
  %1283 = load double, ptr %88, align 8, !tbaa !11
  %1284 = load double, ptr %110, align 8, !tbaa !11
  %1285 = fcmp olt double %1283, %1284
  br i1 %1285, label %1286, label %1287

1286:                                             ; preds = %1282
  br label %1351

1287:                                             ; preds = %1282
  %1288 = load double, ptr %88, align 8, !tbaa !11
  %1289 = fdiv double 1.000000e+00, %1288
  store double %1289, ptr %88, align 8, !tbaa !11
  %1290 = load ptr, ptr %41, align 8, !tbaa !5
  %1291 = load i64, ptr %77, align 8, !tbaa !9
  %1292 = getelementptr inbounds double, ptr %1290, i64 %1291
  %1293 = load double, ptr %1292, align 8, !tbaa !11
  %1294 = fcmp oeq double %1293, 0.000000e+00
  br i1 %1294, label %1295, label %1317

1295:                                             ; preds = %1287
  %1296 = load ptr, ptr %35, align 8, !tbaa !5
  %1297 = load i64, ptr %1296, align 8, !tbaa !9
  store i64 %1297, ptr %69, align 8, !tbaa !9
  store i64 1, ptr %80, align 8, !tbaa !9
  br label %1298

1298:                                             ; preds = %1313, %1295
  %1299 = load i64, ptr %80, align 8, !tbaa !9
  %1300 = load i64, ptr %69, align 8, !tbaa !9
  %1301 = icmp sle i64 %1299, %1300
  br i1 %1301, label %1302, label %1316

1302:                                             ; preds = %1298
  %1303 = load double, ptr %88, align 8, !tbaa !11
  %1304 = load ptr, ptr %43, align 8, !tbaa !5
  %1305 = load i64, ptr %80, align 8, !tbaa !9
  %1306 = load i64, ptr %77, align 8, !tbaa !9
  %1307 = load i64, ptr %64, align 8, !tbaa !9
  %1308 = mul nsw i64 %1306, %1307
  %1309 = add nsw i64 %1305, %1308
  %1310 = getelementptr inbounds double, ptr %1304, i64 %1309
  %1311 = load double, ptr %1310, align 8, !tbaa !11
  %1312 = fmul double %1311, %1303
  store double %1312, ptr %1310, align 8, !tbaa !11
  br label %1313

1313:                                             ; preds = %1302
  %1314 = load i64, ptr %80, align 8, !tbaa !9
  %1315 = add nsw i64 %1314, 1
  store i64 %1315, ptr %80, align 8, !tbaa !9
  br label %1298, !llvm.loop !19

1316:                                             ; preds = %1298
  br label %1350

1317:                                             ; preds = %1287
  %1318 = load ptr, ptr %35, align 8, !tbaa !5
  %1319 = load i64, ptr %1318, align 8, !tbaa !9
  store i64 %1319, ptr %69, align 8, !tbaa !9
  store i64 1, ptr %80, align 8, !tbaa !9
  br label %1320

1320:                                             ; preds = %1346, %1317
  %1321 = load i64, ptr %80, align 8, !tbaa !9
  %1322 = load i64, ptr %69, align 8, !tbaa !9
  %1323 = icmp sle i64 %1321, %1322
  br i1 %1323, label %1324, label %1349

1324:                                             ; preds = %1320
  %1325 = load double, ptr %88, align 8, !tbaa !11
  %1326 = load ptr, ptr %43, align 8, !tbaa !5
  %1327 = load i64, ptr %80, align 8, !tbaa !9
  %1328 = load i64, ptr %77, align 8, !tbaa !9
  %1329 = load i64, ptr %64, align 8, !tbaa !9
  %1330 = mul nsw i64 %1328, %1329
  %1331 = add nsw i64 %1327, %1330
  %1332 = getelementptr inbounds double, ptr %1326, i64 %1331
  %1333 = load double, ptr %1332, align 8, !tbaa !11
  %1334 = fmul double %1333, %1325
  store double %1334, ptr %1332, align 8, !tbaa !11
  %1335 = load double, ptr %88, align 8, !tbaa !11
  %1336 = load ptr, ptr %43, align 8, !tbaa !5
  %1337 = load i64, ptr %80, align 8, !tbaa !9
  %1338 = load i64, ptr %77, align 8, !tbaa !9
  %1339 = add nsw i64 %1338, 1
  %1340 = load i64, ptr %64, align 8, !tbaa !9
  %1341 = mul nsw i64 %1339, %1340
  %1342 = add nsw i64 %1337, %1341
  %1343 = getelementptr inbounds double, ptr %1336, i64 %1342
  %1344 = load double, ptr %1343, align 8, !tbaa !11
  %1345 = fmul double %1344, %1335
  store double %1345, ptr %1343, align 8, !tbaa !11
  br label %1346

1346:                                             ; preds = %1324
  %1347 = load i64, ptr %80, align 8, !tbaa !9
  %1348 = add nsw i64 %1347, 1
  store i64 %1348, ptr %80, align 8, !tbaa !9
  br label %1320, !llvm.loop !20

1349:                                             ; preds = %1320
  br label %1350

1350:                                             ; preds = %1349, %1316
  br label %1351

1351:                                             ; preds = %1350, %1286, %1178
  br label %1352

1352:                                             ; preds = %1351
  %1353 = load i64, ptr %77, align 8, !tbaa !9
  %1354 = add nsw i64 %1353, 1
  store i64 %1354, ptr %77, align 8, !tbaa !9
  br label %1168, !llvm.loop !21

1355:                                             ; preds = %1168
  br label %1356

1356:                                             ; preds = %1355, %1148
  %1357 = load i64, ptr %90, align 8, !tbaa !9
  %1358 = icmp ne i64 %1357, 0
  br i1 %1358, label %1359, label %1564

1359:                                             ; preds = %1356
  %1360 = load ptr, ptr %31, align 8, !tbaa !5
  %1361 = load ptr, ptr %35, align 8, !tbaa !5
  %1362 = load ptr, ptr %47, align 8, !tbaa !5
  %1363 = load ptr, ptr %48, align 8, !tbaa !5
  %1364 = load ptr, ptr %49, align 8, !tbaa !5
  %1365 = getelementptr inbounds double, ptr %1364, i64 1
  %1366 = load ptr, ptr %50, align 8, !tbaa !5
  %1367 = getelementptr inbounds double, ptr %1366, i64 1
  %1368 = load ptr, ptr %35, align 8, !tbaa !5
  %1369 = load ptr, ptr %45, align 8, !tbaa !5
  %1370 = load i64, ptr %67, align 8, !tbaa !9
  %1371 = getelementptr inbounds double, ptr %1369, i64 %1370
  %1372 = load ptr, ptr %46, align 8, !tbaa !5
  %1373 = call i32 @dggbak_(ptr noundef %1360, ptr noundef @.str.17, ptr noundef %1361, ptr noundef %1362, ptr noundef %1363, ptr noundef %1365, ptr noundef %1367, ptr noundef %1368, ptr noundef %1371, ptr noundef %1372, ptr noundef %86)
  %1374 = load ptr, ptr %35, align 8, !tbaa !5
  %1375 = load i64, ptr %1374, align 8, !tbaa !9
  store i64 %1375, ptr %68, align 8, !tbaa !9
  store i64 1, ptr %77, align 8, !tbaa !9
  br label %1376

1376:                                             ; preds = %1560, %1359
  %1377 = load i64, ptr %77, align 8, !tbaa !9
  %1378 = load i64, ptr %68, align 8, !tbaa !9
  %1379 = icmp sle i64 %1377, %1378
  br i1 %1379, label %1380, label %1563

1380:                                             ; preds = %1376
  %1381 = load ptr, ptr %41, align 8, !tbaa !5
  %1382 = load i64, ptr %77, align 8, !tbaa !9
  %1383 = getelementptr inbounds double, ptr %1381, i64 %1382
  %1384 = load double, ptr %1383, align 8, !tbaa !11
  %1385 = fcmp olt double %1384, 0.000000e+00
  br i1 %1385, label %1386, label %1387

1386:                                             ; preds = %1380
  br label %1559

1387:                                             ; preds = %1380
  store double 0.000000e+00, ptr %88, align 8, !tbaa !11
  %1388 = load ptr, ptr %41, align 8, !tbaa !5
  %1389 = load i64, ptr %77, align 8, !tbaa !9
  %1390 = getelementptr inbounds double, ptr %1388, i64 %1389
  %1391 = load double, ptr %1390, align 8, !tbaa !11
  %1392 = fcmp oeq double %1391, 0.000000e+00
  br i1 %1392, label %1393, label %1432

1393:                                             ; preds = %1387
  %1394 = load ptr, ptr %35, align 8, !tbaa !5
  %1395 = load i64, ptr %1394, align 8, !tbaa !9
  store i64 %1395, ptr %69, align 8, !tbaa !9
  store i64 1, ptr %80, align 8, !tbaa !9
  br label %1396

1396:                                             ; preds = %1428, %1393
  %1397 = load i64, ptr %80, align 8, !tbaa !9
  %1398 = load i64, ptr %69, align 8, !tbaa !9
  %1399 = icmp sle i64 %1397, %1398
  br i1 %1399, label %1400, label %1431

1400:                                             ; preds = %1396
  %1401 = load double, ptr %88, align 8, !tbaa !11
  store double %1401, ptr %71, align 8, !tbaa !11
  %1402 = load ptr, ptr %45, align 8, !tbaa !5
  %1403 = load i64, ptr %80, align 8, !tbaa !9
  %1404 = load i64, ptr %77, align 8, !tbaa !9
  %1405 = load i64, ptr %66, align 8, !tbaa !9
  %1406 = mul nsw i64 %1404, %1405
  %1407 = add nsw i64 %1403, %1406
  %1408 = getelementptr inbounds double, ptr %1402, i64 %1407
  %1409 = load double, ptr %1408, align 8, !tbaa !11
  store double %1409, ptr %70, align 8, !tbaa !11
  %1410 = load double, ptr %70, align 8, !tbaa !11
  %1411 = fcmp oge double %1410, 0.000000e+00
  br i1 %1411, label %1412, label %1414

1412:                                             ; preds = %1400
  %1413 = load double, ptr %70, align 8, !tbaa !11
  br label %1417

1414:                                             ; preds = %1400
  %1415 = load double, ptr %70, align 8, !tbaa !11
  %1416 = fneg double %1415
  br label %1417

1417:                                             ; preds = %1414, %1412
  %1418 = phi double [ %1413, %1412 ], [ %1416, %1414 ]
  store double %1418, ptr %72, align 8, !tbaa !11
  %1419 = load double, ptr %71, align 8, !tbaa !11
  %1420 = load double, ptr %72, align 8, !tbaa !11
  %1421 = fcmp oge double %1419, %1420
  br i1 %1421, label %1422, label %1424

1422:                                             ; preds = %1417
  %1423 = load double, ptr %71, align 8, !tbaa !11
  br label %1426

1424:                                             ; preds = %1417
  %1425 = load double, ptr %72, align 8, !tbaa !11
  br label %1426

1426:                                             ; preds = %1424, %1422
  %1427 = phi double [ %1423, %1422 ], [ %1425, %1424 ]
  store double %1427, ptr %88, align 8, !tbaa !11
  br label %1428

1428:                                             ; preds = %1426
  %1429 = load i64, ptr %80, align 8, !tbaa !9
  %1430 = add nsw i64 %1429, 1
  store i64 %1430, ptr %80, align 8, !tbaa !9
  br label %1396, !llvm.loop !22

1431:                                             ; preds = %1396
  br label %1490

1432:                                             ; preds = %1387
  %1433 = load ptr, ptr %35, align 8, !tbaa !5
  %1434 = load i64, ptr %1433, align 8, !tbaa !9
  store i64 %1434, ptr %69, align 8, !tbaa !9
  store i64 1, ptr %80, align 8, !tbaa !9
  br label %1435

1435:                                             ; preds = %1486, %1432
  %1436 = load i64, ptr %80, align 8, !tbaa !9
  %1437 = load i64, ptr %69, align 8, !tbaa !9
  %1438 = icmp sle i64 %1436, %1437
  br i1 %1438, label %1439, label %1489

1439:                                             ; preds = %1435
  %1440 = load double, ptr %88, align 8, !tbaa !11
  store double %1440, ptr %72, align 8, !tbaa !11
  %1441 = load ptr, ptr %45, align 8, !tbaa !5
  %1442 = load i64, ptr %80, align 8, !tbaa !9
  %1443 = load i64, ptr %77, align 8, !tbaa !9
  %1444 = load i64, ptr %66, align 8, !tbaa !9
  %1445 = mul nsw i64 %1443, %1444
  %1446 = add nsw i64 %1442, %1445
  %1447 = getelementptr inbounds double, ptr %1441, i64 %1446
  %1448 = load double, ptr %1447, align 8, !tbaa !11
  store double %1448, ptr %70, align 8, !tbaa !11
  %1449 = load double, ptr %70, align 8, !tbaa !11
  %1450 = fcmp oge double %1449, 0.000000e+00
  br i1 %1450, label %1451, label %1453

1451:                                             ; preds = %1439
  %1452 = load double, ptr %70, align 8, !tbaa !11
  br label %1456

1453:                                             ; preds = %1439
  %1454 = load double, ptr %70, align 8, !tbaa !11
  %1455 = fneg double %1454
  br label %1456

1456:                                             ; preds = %1453, %1451
  %1457 = phi double [ %1452, %1451 ], [ %1455, %1453 ]
  %1458 = load ptr, ptr %45, align 8, !tbaa !5
  %1459 = load i64, ptr %80, align 8, !tbaa !9
  %1460 = load i64, ptr %77, align 8, !tbaa !9
  %1461 = add nsw i64 %1460, 1
  %1462 = load i64, ptr %66, align 8, !tbaa !9
  %1463 = mul nsw i64 %1461, %1462
  %1464 = add nsw i64 %1459, %1463
  %1465 = getelementptr inbounds double, ptr %1458, i64 %1464
  %1466 = load double, ptr %1465, align 8, !tbaa !11
  store double %1466, ptr %71, align 8, !tbaa !11
  %1467 = load double, ptr %71, align 8, !tbaa !11
  %1468 = fcmp oge double %1467, 0.000000e+00
  br i1 %1468, label %1469, label %1471

1469:                                             ; preds = %1456
  %1470 = load double, ptr %71, align 8, !tbaa !11
  br label %1474

1471:                                             ; preds = %1456
  %1472 = load double, ptr %71, align 8, !tbaa !11
  %1473 = fneg double %1472
  br label %1474

1474:                                             ; preds = %1471, %1469
  %1475 = phi double [ %1470, %1469 ], [ %1473, %1471 ]
  %1476 = fadd double %1457, %1475
  store double %1476, ptr %73, align 8, !tbaa !11
  %1477 = load double, ptr %72, align 8, !tbaa !11
  %1478 = load double, ptr %73, align 8, !tbaa !11
  %1479 = fcmp oge double %1477, %1478
  br i1 %1479, label %1480, label %1482

1480:                                             ; preds = %1474
  %1481 = load double, ptr %72, align 8, !tbaa !11
  br label %1484

1482:                                             ; preds = %1474
  %1483 = load double, ptr %73, align 8, !tbaa !11
  br label %1484

1484:                                             ; preds = %1482, %1480
  %1485 = phi double [ %1481, %1480 ], [ %1483, %1482 ]
  store double %1485, ptr %88, align 8, !tbaa !11
  br label %1486

1486:                                             ; preds = %1484
  %1487 = load i64, ptr %80, align 8, !tbaa !9
  %1488 = add nsw i64 %1487, 1
  store i64 %1488, ptr %80, align 8, !tbaa !9
  br label %1435, !llvm.loop !23

1489:                                             ; preds = %1435
  br label %1490

1490:                                             ; preds = %1489, %1431
  %1491 = load double, ptr %88, align 8, !tbaa !11
  %1492 = load double, ptr %110, align 8, !tbaa !11
  %1493 = fcmp olt double %1491, %1492
  br i1 %1493, label %1494, label %1495

1494:                                             ; preds = %1490
  br label %1559

1495:                                             ; preds = %1490
  %1496 = load double, ptr %88, align 8, !tbaa !11
  %1497 = fdiv double 1.000000e+00, %1496
  store double %1497, ptr %88, align 8, !tbaa !11
  %1498 = load ptr, ptr %41, align 8, !tbaa !5
  %1499 = load i64, ptr %77, align 8, !tbaa !9
  %1500 = getelementptr inbounds double, ptr %1498, i64 %1499
  %1501 = load double, ptr %1500, align 8, !tbaa !11
  %1502 = fcmp oeq double %1501, 0.000000e+00
  br i1 %1502, label %1503, label %1525

1503:                                             ; preds = %1495
  %1504 = load ptr, ptr %35, align 8, !tbaa !5
  %1505 = load i64, ptr %1504, align 8, !tbaa !9
  store i64 %1505, ptr %69, align 8, !tbaa !9
  store i64 1, ptr %80, align 8, !tbaa !9
  br label %1506

1506:                                             ; preds = %1521, %1503
  %1507 = load i64, ptr %80, align 8, !tbaa !9
  %1508 = load i64, ptr %69, align 8, !tbaa !9
  %1509 = icmp sle i64 %1507, %1508
  br i1 %1509, label %1510, label %1524

1510:                                             ; preds = %1506
  %1511 = load double, ptr %88, align 8, !tbaa !11
  %1512 = load ptr, ptr %45, align 8, !tbaa !5
  %1513 = load i64, ptr %80, align 8, !tbaa !9
  %1514 = load i64, ptr %77, align 8, !tbaa !9
  %1515 = load i64, ptr %66, align 8, !tbaa !9
  %1516 = mul nsw i64 %1514, %1515
  %1517 = add nsw i64 %1513, %1516
  %1518 = getelementptr inbounds double, ptr %1512, i64 %1517
  %1519 = load double, ptr %1518, align 8, !tbaa !11
  %1520 = fmul double %1519, %1511
  store double %1520, ptr %1518, align 8, !tbaa !11
  br label %1521

1521:                                             ; preds = %1510
  %1522 = load i64, ptr %80, align 8, !tbaa !9
  %1523 = add nsw i64 %1522, 1
  store i64 %1523, ptr %80, align 8, !tbaa !9
  br label %1506, !llvm.loop !24

1524:                                             ; preds = %1506
  br label %1558

1525:                                             ; preds = %1495
  %1526 = load ptr, ptr %35, align 8, !tbaa !5
  %1527 = load i64, ptr %1526, align 8, !tbaa !9
  store i64 %1527, ptr %69, align 8, !tbaa !9
  store i64 1, ptr %80, align 8, !tbaa !9
  br label %1528

1528:                                             ; preds = %1554, %1525
  %1529 = load i64, ptr %80, align 8, !tbaa !9
  %1530 = load i64, ptr %69, align 8, !tbaa !9
  %1531 = icmp sle i64 %1529, %1530
  br i1 %1531, label %1532, label %1557

1532:                                             ; preds = %1528
  %1533 = load double, ptr %88, align 8, !tbaa !11
  %1534 = load ptr, ptr %45, align 8, !tbaa !5
  %1535 = load i64, ptr %80, align 8, !tbaa !9
  %1536 = load i64, ptr %77, align 8, !tbaa !9
  %1537 = load i64, ptr %66, align 8, !tbaa !9
  %1538 = mul nsw i64 %1536, %1537
  %1539 = add nsw i64 %1535, %1538
  %1540 = getelementptr inbounds double, ptr %1534, i64 %1539
  %1541 = load double, ptr %1540, align 8, !tbaa !11
  %1542 = fmul double %1541, %1533
  store double %1542, ptr %1540, align 8, !tbaa !11
  %1543 = load double, ptr %88, align 8, !tbaa !11
  %1544 = load ptr, ptr %45, align 8, !tbaa !5
  %1545 = load i64, ptr %80, align 8, !tbaa !9
  %1546 = load i64, ptr %77, align 8, !tbaa !9
  %1547 = add nsw i64 %1546, 1
  %1548 = load i64, ptr %66, align 8, !tbaa !9
  %1549 = mul nsw i64 %1547, %1548
  %1550 = add nsw i64 %1545, %1549
  %1551 = getelementptr inbounds double, ptr %1544, i64 %1550
  %1552 = load double, ptr %1551, align 8, !tbaa !11
  %1553 = fmul double %1552, %1543
  store double %1553, ptr %1551, align 8, !tbaa !11
  br label %1554

1554:                                             ; preds = %1532
  %1555 = load i64, ptr %80, align 8, !tbaa !9
  %1556 = add nsw i64 %1555, 1
  store i64 %1556, ptr %80, align 8, !tbaa !9
  br label %1528, !llvm.loop !25

1557:                                             ; preds = %1528
  br label %1558

1558:                                             ; preds = %1557, %1524
  br label %1559

1559:                                             ; preds = %1558, %1494, %1386
  br label %1560

1560:                                             ; preds = %1559
  %1561 = load i64, ptr %77, align 8, !tbaa !9
  %1562 = add nsw i64 %1561, 1
  store i64 %1562, ptr %77, align 8, !tbaa !9
  br label %1376, !llvm.loop !26

1563:                                             ; preds = %1376
  br label %1564

1564:                                             ; preds = %1563, %1356
  %1565 = load i64, ptr %96, align 8, !tbaa !9
  %1566 = icmp ne i64 %1565, 0
  br i1 %1566, label %1567, label %1578

1567:                                             ; preds = %1564
  %1568 = load ptr, ptr %35, align 8, !tbaa !5
  %1569 = load ptr, ptr %40, align 8, !tbaa !5
  %1570 = getelementptr inbounds double, ptr %1569, i64 1
  %1571 = load ptr, ptr %35, align 8, !tbaa !5
  %1572 = call i32 @dlascl_(ptr noundef @.str.12, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %104, ptr noundef %84, ptr noundef %1568, ptr noundef @c__1, ptr noundef %1570, ptr noundef %1571, ptr noundef %86)
  %1573 = load ptr, ptr %35, align 8, !tbaa !5
  %1574 = load ptr, ptr %41, align 8, !tbaa !5
  %1575 = getelementptr inbounds double, ptr %1574, i64 1
  %1576 = load ptr, ptr %35, align 8, !tbaa !5
  %1577 = call i32 @dlascl_(ptr noundef @.str.12, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %104, ptr noundef %84, ptr noundef %1573, ptr noundef @c__1, ptr noundef %1575, ptr noundef %1576, ptr noundef %86)
  br label %1578

1578:                                             ; preds = %1567, %1564
  %1579 = load i64, ptr %97, align 8, !tbaa !9
  %1580 = icmp ne i64 %1579, 0
  br i1 %1580, label %1581, label %1587

1581:                                             ; preds = %1578
  %1582 = load ptr, ptr %35, align 8, !tbaa !5
  %1583 = load ptr, ptr %42, align 8, !tbaa !5
  %1584 = getelementptr inbounds double, ptr %1583, i64 1
  %1585 = load ptr, ptr %35, align 8, !tbaa !5
  %1586 = call i32 @dlascl_(ptr noundef @.str.12, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %106, ptr noundef %85, ptr noundef %1582, ptr noundef @c__1, ptr noundef %1584, ptr noundef %1585, ptr noundef %86)
  br label %1587

1587:                                             ; preds = %1581, %1578
  br label %1588

1588:                                             ; preds = %1587, %1099, %986, %937
  %1589 = load i64, ptr %108, align 8, !tbaa !9
  %1590 = sitofp i64 %1589 to double
  %1591 = load ptr, ptr %55, align 8, !tbaa !5
  %1592 = getelementptr inbounds double, ptr %1591, i64 1
  store double %1590, ptr %1592, align 8, !tbaa !11
  store i32 0, ptr %30, align 4
  store i32 1, ptr %113, align 4
  br label %1593

1593:                                             ; preds = %1588, %493, %487, %479
  call void @llvm.lifetime.end.p0(i64 8, ptr %112) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %111) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %110) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %109) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %108) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %107) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %106) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %105) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %104) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %103) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %102) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %101) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %100) #4
  call void @llvm.lifetime.end.p0(i64 1, ptr %99) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %98) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %97) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %96) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %95) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %94) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %93) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %92) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %91) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %90) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %89) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %88) #4
  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 8, ptr %77) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %76) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #4
  call void @llvm.lifetime.end.p0(i64 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
  %1594 = load i32, ptr %30, align 4
  ret i32 %1594
}

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

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

declare i64 @ilaenv_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

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

declare double @dlamch_(ptr noundef) #2

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

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

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

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

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

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

declare i32 @dgghrd_(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 @dhgeqz_(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 @dtgevc_(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 @dtgsna_(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 @dggbak_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

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

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

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

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


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

@.str = external hidden unnamed_addr constant [2 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [2 x i8], align 1
@c__1 = external hidden global i64, align 8
@.str.6 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [2 x i8], align 1
@c__0 = external hidden global i64, align 8
@.str.8 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [5 x i8], align 1
@c_b59 = external hidden global double, align 8
@c_b60 = external hidden global double, align 8
@.str.17 = external hidden unnamed_addr constant [2 x i8], align 1

; Function Attrs: nounwind uwtable
define dso_local noundef i32 @dggevx_(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 nocapture noundef writeonly %20, ptr nocapture noundef writeonly %21, ptr noundef %22, ptr noundef %23, ptr noundef %24, ptr noundef %25, ptr noundef %26, ptr noundef %27, ptr nocapture noundef %28) local_unnamed_addr #0 {
  %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 double, align 8
  %36 = alloca double, align 8
  %37 = alloca i64, align 8
  %38 = alloca i64, align 8
  %39 = alloca i64, align 8
  %40 = alloca [1 x i64], align 8
  %41 = alloca [1 x i8], align 1
  %42 = alloca double, align 8
  %43 = alloca double, align 8
  %44 = alloca double, align 8
  %45 = alloca double, align 8
  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 8, 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
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %40) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %41) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %42) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %43) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %44) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %45) #6
  %46 = load i64, ptr %6, align 8, !tbaa !5
  %47 = xor i64 %46, -1
  %48 = getelementptr inbounds double, ptr %5, i64 %47
  %49 = load i64, ptr %8, align 8, !tbaa !5
  %50 = xor i64 %49, -1
  %51 = getelementptr inbounds double, ptr %7, i64 %50
  %52 = getelementptr inbounds i8, ptr %10, i64 -8
  %53 = load i64, ptr %13, align 8, !tbaa !5
  %54 = xor i64 %53, -1
  %55 = getelementptr inbounds double, ptr %12, i64 %54
  %56 = load i64, ptr %15, align 8, !tbaa !5
  %57 = xor i64 %56, -1
  %58 = getelementptr inbounds double, ptr %14, i64 %57
  %59 = getelementptr inbounds i8, ptr %22, i64 -8
  %60 = getelementptr inbounds i8, ptr %23, i64 -8
  %61 = getelementptr inbounds i8, ptr %27, i64 -8
  %62 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str) #6
  %.not = icmp eq i64 %62, 0
  br i1 %.not, label %63, label %65

63:                                               ; preds = %29
  %64 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.1) #6
  %.not642 = icmp eq i64 %64, 0
  %not..not642 = xor i1 %.not642, true
  br label %65

65:                                               ; preds = %63, %29
  %66 = phi i1 [ false, %29 ], [ %not..not642, %63 ]
  %67 = phi i1 [ false, %29 ], [ %.not642, %63 ]
  %68 = tail call i64 @lsame_(ptr noundef %2, ptr noundef nonnull @.str) #6
  %.not643 = icmp eq i64 %68, 0
  br i1 %.not643, label %69, label %71

69:                                               ; preds = %65
  %70 = tail call i64 @lsame_(ptr noundef %2, ptr noundef nonnull @.str.1) #6
  %.not644 = icmp eq i64 %70, 0
  %not..not644 = xor i1 %.not644, true
  br label %71

71:                                               ; preds = %69, %65
  %72 = phi i1 [ false, %65 ], [ %not..not644, %69 ]
  %73 = phi i1 [ false, %65 ], [ %.not644, %69 ]
  %74 = or i1 %66, %72
  %75 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str) #6
  %.not645 = icmp eq i64 %75, 0
  br i1 %.not645, label %76, label %79

76:                                               ; preds = %71
  %77 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.2) #6
  %78 = icmp ne i64 %77, 0
  br label %79

79:                                               ; preds = %76, %71
  %80 = phi i1 [ true, %71 ], [ %78, %76 ]
  %81 = tail call i64 @lsame_(ptr noundef %3, ptr noundef nonnull @.str) #6
  %82 = tail call i64 @lsame_(ptr noundef %3, ptr noundef nonnull @.str.3) #6
  %83 = tail call i64 @lsame_(ptr noundef %3, ptr noundef nonnull @.str.1) #6
  %84 = tail call i64 @lsame_(ptr noundef %3, ptr noundef nonnull @.str.4) #6
  store i64 0, ptr %28, align 8, !tbaa !5
  %85 = load i64, ptr %25, align 8, !tbaa !5
  %86 = icmp eq i64 %85, -1
  %87 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str) #6
  %.not646 = icmp eq i64 %87, 0
  br i1 %.not646, label %88, label %94

88:                                               ; preds = %79
  %89 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.5) #6
  %.not647 = icmp eq i64 %89, 0
  br i1 %.not647, label %90, label %94

90:                                               ; preds = %88
  %91 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.2) #6
  %.not648 = icmp eq i64 %91, 0
  br i1 %.not648, label %92, label %94

92:                                               ; preds = %90
  %93 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.4) #6
  %.not649 = icmp eq i64 %93, 0
  %brmerge = select i1 %.not649, i1 true, i1 %67
  %brmerge816 = select i1 %brmerge, i1 true, i1 %73
  %.mux = select i1 %67, i64 -2, i64 -3
  %.mux.mux = select i1 %.not649, i64 -1, i64 %.mux
  br i1 %brmerge816, label %.thread687.sink.split, label %95

94:                                               ; preds = %90, %88, %79
  %brmerge817 = select i1 %67, i1 true, i1 %73
  %.mux818 = select i1 %67, i64 -2, i64 -3
  br i1 %brmerge817, label %.thread687.sink.split, label %95

95:                                               ; preds = %94, %92
  %96 = icmp ne i64 %81, 0
  %97 = icmp ne i64 %82, 0
  %or.cond = select i1 %96, i1 true, i1 %97
  %98 = icmp ne i64 %84, 0
  %or.cond3 = select i1 %or.cond, i1 true, i1 %98
  %99 = icmp ne i64 %83, 0
  %or.cond5 = select i1 %or.cond3, i1 true, i1 %99
  br i1 %or.cond5, label %100, label %.thread687.sink.split

100:                                              ; preds = %95
  %101 = load i64, ptr %4, align 8, !tbaa !5
  %102 = icmp slt i64 %101, 0
  br i1 %102, label %.thread687.sink.split, label %103

103:                                              ; preds = %100
  %104 = load i64, ptr %6, align 8, !tbaa !5
  %spec.select = tail call i64 @llvm.umax.i64(i64 %101, i64 1)
  %105 = icmp slt i64 %104, %spec.select
  br i1 %105, label %.thread687.sink.split, label %106

106:                                              ; preds = %103
  %107 = load i64, ptr %8, align 8, !tbaa !5
  %108 = icmp slt i64 %107, %spec.select
  br i1 %108, label %.thread687.sink.split, label %109

109:                                              ; preds = %106
  %110 = load i64, ptr %13, align 8, !tbaa !5
  %111 = icmp slt i64 %110, 1
  %112 = icmp ult i64 %110, %101
  %or.cond703 = and i1 %66, %112
  %or.cond706 = select i1 %111, i1 true, i1 %or.cond703
  br i1 %or.cond706, label %.thread687.sink.split, label %113

113:                                              ; preds = %109
  %114 = load i64, ptr %15, align 8, !tbaa !5
  %115 = icmp slt i64 %114, 1
  %116 = icmp ult i64 %114, %101
  %or.cond704 = and i1 %72, %116
  %or.cond707 = select i1 %115, i1 true, i1 %or.cond704
  br i1 %or.cond707, label %.thread687.sink.split, label %117

117:                                              ; preds = %113
  %.pr = load i64, ptr %28, align 8, !tbaa !5
  %118 = icmp eq i64 %.pr, 0
  br i1 %118, label %119, label %.thread687

119:                                              ; preds = %117
  %120 = icmp eq i64 %101, 0
  br i1 %120, label %147, label %121

121:                                              ; preds = %119
  %122 = xor i1 %80, true
  %or.cond7 = or i1 %74, %122
  %123 = mul nuw nsw i64 %101, 6
  %124 = shl nuw i64 %101, 1
  %.0599 = select i1 %or.cond7, i64 %123, i64 %124
  %or.cond9 = select i1 %97, i1 true, i1 %98
  %125 = mul nuw nsw i64 %101, 10
  %spec.select705 = select i1 %or.cond9, i64 %125, i64 %.0599
  %or.cond11 = select i1 %99, i1 true, i1 %98
  br i1 %or.cond11, label %126, label %131

126:                                              ; preds = %121
  %127 = add nuw nsw i64 %101, 4
  %128 = mul nsw i64 %124, %127
  %129 = add nsw i64 %128, 16
  %130 = tail call i64 @llvm.smax.i64(i64 %spec.select705, i64 %129)
  br label %131

131:                                              ; preds = %121, %126
  %.2 = phi i64 [ %130, %126 ], [ %spec.select705, %121 ]
  %132 = tail call i64 @ilaenv_(ptr noundef nonnull @c__1, ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.7, ptr noundef nonnull %4, ptr noundef nonnull @c__1, ptr noundef nonnull %4, ptr noundef nonnull @c__0) #6
  %133 = add i64 %132, 1
  %134 = mul i64 %133, %101
  %135 = tail call i64 @llvm.smax.i64(i64 %.2, i64 %134)
  store i64 %135, ptr %30, align 8, !tbaa !5
  %136 = load i64, ptr %4, align 8, !tbaa !5
  %137 = tail call i64 @ilaenv_(ptr noundef nonnull @c__1, ptr noundef nonnull @.str.8, ptr noundef nonnull @.str.7, ptr noundef nonnull %4, ptr noundef nonnull @c__1, ptr noundef nonnull %4, ptr noundef nonnull @c__0) #6
  %138 = add i64 %137, 1
  %139 = mul i64 %138, %136
  store i64 %139, ptr %31, align 8, !tbaa !5
  %140 = tail call i64 @llvm.smax.i64(i64 %135, i64 %139)
  br i1 %66, label %141, label %147

141:                                              ; preds = %131
  store i64 %140, ptr %30, align 8, !tbaa !5
  %142 = load i64, ptr %4, align 8, !tbaa !5
  %143 = tail call i64 @ilaenv_(ptr noundef nonnull @c__1, ptr noundef nonnull @.str.9, ptr noundef nonnull @.str.7, ptr noundef nonnull %4, ptr noundef nonnull @c__1, ptr noundef nonnull %4, ptr noundef nonnull @c__0) #6
  %144 = add i64 %143, 1
  %145 = mul i64 %144, %142
  store i64 %145, ptr %31, align 8, !tbaa !5
  %146 = tail call i64 @llvm.smax.i64(i64 %140, i64 %145)
  br label %147

147:                                              ; preds = %119, %131, %141
  %.3 = phi i64 [ %.2, %141 ], [ %.2, %131 ], [ 1, %119 ]
  %.0598 = phi i64 [ %146, %141 ], [ %140, %131 ], [ 1, %119 ]
  %148 = sitofp i64 %.0598 to double
  store double %148, ptr %24, align 8, !tbaa !9
  %149 = load i64, ptr %25, align 8, !tbaa !5
  %150 = icmp sge i64 %149, %.3
  %or.cond13 = select i1 %150, i1 true, i1 %86
  br i1 %or.cond13, label %.thread, label %.thread687.sink.split

.thread:                                          ; preds = %147
  %.pr684.pr = load i64, ptr %28, align 8, !tbaa !5
  %.not654 = icmp eq i64 %.pr684.pr, 0
  br i1 %.not654, label %154, label %.thread687

.thread687.sink.split:                            ; preds = %94, %92, %147, %113, %109, %106, %103, %100, %95
  %.sink = phi i64 [ %.mux.mux, %92 ], [ %.mux818, %94 ], [ -4, %95 ], [ -5, %100 ], [ -7, %103 ], [ -9, %106 ], [ -14, %109 ], [ -16, %113 ], [ -26, %147 ]
  store i64 %.sink, ptr %28, align 8, !tbaa !5
  br label %.thread687

.thread687:                                       ; preds = %.thread687.sink.split, %117, %.thread
  %151 = phi i64 [ %.pr684.pr, %.thread ], [ %.pr, %117 ], [ %.sink, %.thread687.sink.split ]
  %152 = sub nsw i64 0, %151
  store i64 %152, ptr %30, align 8, !tbaa !5
  %153 = call i32 @xerbla_(ptr noundef nonnull @.str.10, ptr noundef nonnull %30) #6
  br label %550

154:                                              ; preds = %.thread
  br i1 %86, label %550, label %155

155:                                              ; preds = %154
  %156 = load i64, ptr %4, align 8, !tbaa !5
  %157 = icmp eq i64 %156, 0
  br i1 %157, label %550, label %158

158:                                              ; preds = %155
  %159 = tail call double @dlamch_(ptr noundef nonnull @.str.2) #6
  %160 = tail call double @dlamch_(ptr noundef nonnull @.str.5) #6
  store double %160, ptr %45, align 8, !tbaa !9
  %161 = fdiv double 1.000000e+00, %160
  store double %161, ptr %42, align 8, !tbaa !9
  %162 = call i32 @dlabad_(ptr noundef nonnull %45, ptr noundef nonnull %42) #6
  %163 = load double, ptr %45, align 8, !tbaa !9
  %164 = call double @sqrt(double noundef %163) #6
  %165 = fdiv double %164, %159
  store double %165, ptr %45, align 8, !tbaa !9
  %166 = fdiv double 1.000000e+00, %165
  store double %166, ptr %42, align 8, !tbaa !9
  %167 = call double @dlange_(ptr noundef nonnull @.str.11, ptr noundef nonnull %4, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef nonnull %24) #6
  store double %167, ptr %35, align 8, !tbaa !9
  %168 = fcmp ogt double %167, 0.000000e+00
  %169 = load double, ptr %45, align 8
  %170 = fcmp olt double %167, %169
  %or.cond711 = select i1 %168, i1 %170, i1 false
  br i1 %or.cond711, label %174, label %171

171:                                              ; preds = %158
  %172 = load double, ptr %42, align 8, !tbaa !9
  %173 = fcmp ogt double %167, %172
  br i1 %173, label %174, label %176

174:                                              ; preds = %158, %171
  %storemerge708 = phi double [ %172, %171 ], [ %169, %158 ]
  store double %storemerge708, ptr %43, align 8, !tbaa !9
  %175 = call i32 @dlascl_(ptr noundef nonnull @.str.12, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %35, ptr noundef nonnull %43, ptr noundef nonnull %4, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef nonnull %37) #6
  br label %176

176:                                              ; preds = %171, %174
  %.not655694 = phi i1 [ false, %174 ], [ true, %171 ]
  %177 = call double @dlange_(ptr noundef nonnull @.str.11, ptr noundef nonnull %4, ptr noundef nonnull %4, ptr noundef %7, ptr noundef nonnull %8, ptr noundef nonnull %24) #6
  store double %177, ptr %36, align 8, !tbaa !9
  %178 = fcmp ogt double %177, 0.000000e+00
  %179 = load double, ptr %45, align 8
  %180 = fcmp olt double %177, %179
  %or.cond713 = select i1 %178, i1 %180, i1 false
  br i1 %or.cond713, label %184, label %181

181:                                              ; preds = %176
  %182 = load double, ptr %42, align 8, !tbaa !9
  %183 = fcmp ogt double %177, %182
  br i1 %183, label %184, label %186

184:                                              ; preds = %176, %181
  %storemerge709 = phi double [ %182, %181 ], [ %179, %176 ]
  store double %storemerge709, ptr %44, align 8, !tbaa !9
  %185 = call i32 @dlascl_(ptr noundef nonnull @.str.12, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %36, ptr noundef nonnull %44, ptr noundef nonnull %4, ptr noundef nonnull %4, ptr noundef %7, ptr noundef nonnull %8, ptr noundef nonnull %37) #6
  br label %186

186:                                              ; preds = %181, %184
  %.not656699 = phi i1 [ false, %184 ], [ true, %181 ]
  %187 = call i32 @dggbal_(ptr noundef %0, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %7, ptr noundef nonnull %8, ptr noundef %16, ptr noundef %17, ptr noundef %18, ptr noundef %19, ptr noundef nonnull %24, ptr noundef nonnull %37) #6
  %188 = call double @dlange_(ptr noundef nonnull @.str.13, ptr noundef nonnull %4, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef nonnull %24) #6
  store double %188, ptr %20, align 8, !tbaa !9
  br i1 %.not655694, label %192, label %189

189:                                              ; preds = %186
  store double %188, ptr %24, align 8, !tbaa !9
  %190 = call i32 @dlascl_(ptr noundef nonnull @.str.12, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %43, ptr noundef nonnull %35, ptr noundef nonnull @c__1, ptr noundef nonnull @c__1, ptr noundef nonnull %24, ptr noundef nonnull @c__1, ptr noundef nonnull %37) #6
  %191 = load double, ptr %24, align 8, !tbaa !9
  store double %191, ptr %20, align 8, !tbaa !9
  br label %192

192:                                              ; preds = %189, %186
  %193 = call double @dlange_(ptr noundef nonnull @.str.13, ptr noundef nonnull %4, ptr noundef nonnull %4, ptr noundef %7, ptr noundef nonnull %8, ptr noundef nonnull %24) #6
  store double %193, ptr %21, align 8, !tbaa !9
  br i1 %.not656699, label %197, label %194

194:                                              ; preds = %192
  store double %193, ptr %24, align 8, !tbaa !9
  %195 = call i32 @dlascl_(ptr noundef nonnull @.str.12, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %44, ptr noundef nonnull %36, ptr noundef nonnull @c__1, ptr noundef nonnull @c__1, ptr noundef nonnull %24, ptr noundef nonnull @c__1, ptr noundef nonnull %37) #6
  %196 = load double, ptr %24, align 8, !tbaa !9
  store double %196, ptr %21, align 8, !tbaa !9
  br label %197

197:                                              ; preds = %194, %192
  %198 = load i64, ptr %17, align 8, !tbaa !5
  %199 = add nsw i64 %198, 1
  %200 = load i64, ptr %16, align 8, !tbaa !5
  %201 = sub i64 %199, %200
  store i64 %201, ptr %39, align 8, !tbaa !5
  %202 = icmp eq i64 %81, 0
  %or.cond15.not = select i1 %74, i1 true, i1 %202
  br i1 %or.cond15.not, label %203, label %206

203:                                              ; preds = %197
  %204 = load i64, ptr %4, align 8, !tbaa !5
  %reass.sub = sub i64 %204, %200
  %205 = add i64 %reass.sub, 1
  br label %206

206:                                              ; preds = %197, %203
  %storemerge = phi i64 [ %205, %203 ], [ %201, %197 ]
  store i64 %storemerge, ptr %38, align 8, !tbaa !5
  %207 = load i64, ptr %25, align 8, !tbaa !5
  %208 = sub i64 %207, %201
  store i64 %208, ptr %30, align 8, !tbaa !5
  %209 = add i64 %49, 1
  %210 = mul i64 %200, %209
  %211 = getelementptr inbounds double, ptr %51, i64 %210
  %212 = getelementptr double, ptr %24, i64 %201
  %213 = call i32 @dgeqrf_(ptr noundef nonnull %39, ptr noundef nonnull %38, ptr noundef %211, ptr noundef nonnull %8, ptr noundef nonnull %24, ptr noundef %212, ptr noundef nonnull %30, ptr noundef nonnull %37) #6
  %214 = load i64, ptr %25, align 8, !tbaa !5
  %215 = sub i64 %214, %201
  store i64 %215, ptr %30, align 8, !tbaa !5
  %216 = load i64, ptr %16, align 8, !tbaa !5
  %217 = mul i64 %216, %209
  %218 = getelementptr inbounds double, ptr %51, i64 %217
  %219 = add i64 %46, 1
  %220 = mul i64 %216, %219
  %221 = getelementptr inbounds double, ptr %48, i64 %220
  %222 = call i32 @dormqr_(ptr noundef nonnull @.str.14, ptr noundef nonnull @.str.15, ptr noundef nonnull %39, ptr noundef nonnull %38, ptr noundef nonnull %39, ptr noundef %218, ptr noundef nonnull %8, ptr noundef nonnull %24, ptr noundef %221, ptr noundef nonnull %6, ptr noundef %212, ptr noundef nonnull %30, ptr noundef nonnull %37) #6
  br i1 %66, label %223, label %246

223:                                              ; preds = %206
  %224 = call i32 @dlaset_(ptr noundef nonnull @.str.16, ptr noundef nonnull %4, ptr noundef nonnull %4, ptr noundef nonnull @c_b59, ptr noundef nonnull @c_b60, ptr noundef %12, ptr noundef nonnull %13) #6
  %225 = load i64, ptr %39, align 8, !tbaa !5
  %226 = icmp sgt i64 %225, 1
  br i1 %226, label %227, label %238

227:                                              ; preds = %223
  %228 = add nsw i64 %225, -1
  store i64 %228, ptr %30, align 8, !tbaa !5
  store i64 %228, ptr %31, align 8, !tbaa !5
  %229 = load i64, ptr %16, align 8, !tbaa !5
  %230 = add nsw i64 %229, 1
  %231 = mul nsw i64 %229, %49
  %232 = getelementptr double, ptr %51, i64 %230
  %233 = getelementptr double, ptr %232, i64 %231
  %234 = mul nsw i64 %229, %53
  %235 = getelementptr double, ptr %55, i64 %230
  %236 = getelementptr double, ptr %235, i64 %234
  %237 = call i32 @dlacpy_(ptr noundef nonnull @.str.14, ptr noundef nonnull %30, ptr noundef nonnull %31, ptr noundef %233, ptr noundef nonnull %8, ptr noundef %236, ptr noundef nonnull %13) #6
  br label %238

238:                                              ; preds = %227, %223
  %239 = load i64, ptr %25, align 8, !tbaa !5
  %240 = sub i64 %239, %201
  store i64 %240, ptr %30, align 8, !tbaa !5
  %241 = load i64, ptr %16, align 8, !tbaa !5
  %242 = add i64 %53, 1
  %243 = mul i64 %241, %242
  %244 = getelementptr inbounds double, ptr %55, i64 %243
  %245 = call i32 @dorgqr_(ptr noundef nonnull %39, ptr noundef nonnull %39, ptr noundef nonnull %39, ptr noundef %244, ptr noundef nonnull %13, ptr noundef nonnull %24, ptr noundef %212, ptr noundef nonnull %30, ptr noundef nonnull %37) #6
  br label %246

246:                                              ; preds = %238, %206
  br i1 %72, label %247, label %249

247:                                              ; preds = %246
  %248 = call i32 @dlaset_(ptr noundef nonnull @.str.16, ptr noundef nonnull %4, ptr noundef nonnull %4, ptr noundef nonnull @c_b59, ptr noundef nonnull @c_b60, ptr noundef %14, ptr noundef nonnull %15) #6
  br label %249

249:                                              ; preds = %247, %246
  br i1 %or.cond15.not, label %250, label %252

250:                                              ; preds = %249
  %251 = call i32 @dgghrd_(ptr noundef %1, ptr noundef %2, ptr noundef nonnull %4, ptr noundef nonnull %16, ptr noundef nonnull %17, 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 %37) #6
  br label %259

252:                                              ; preds = %249
  %253 = load i64, ptr %16, align 8, !tbaa !5
  %254 = mul i64 %253, %219
  %255 = getelementptr inbounds double, ptr %48, i64 %254
  %256 = mul i64 %253, %209
  %257 = getelementptr inbounds double, ptr %51, i64 %256
  %258 = call i32 @dgghrd_(ptr noundef nonnull @.str, ptr noundef nonnull @.str, ptr noundef nonnull %39, ptr noundef nonnull @c__1, ptr noundef nonnull %39, ptr noundef %255, ptr noundef nonnull %6, ptr noundef %257, ptr noundef nonnull %8, ptr noundef %12, ptr noundef nonnull %13, ptr noundef %14, ptr noundef nonnull %15, ptr noundef nonnull %37) #6
  br label %259

259:                                              ; preds = %252, %250
  %.681 = phi i8 [ 69, %252 ], [ 83, %250 ]
  store i8 %.681, ptr %41, align 1, !tbaa !11
  %260 = call i32 @dhgeqz_(ptr noundef nonnull %41, ptr noundef %1, ptr noundef %2, ptr noundef nonnull %4, ptr noundef nonnull %16, ptr noundef nonnull %17, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %7, ptr noundef nonnull %8, ptr noundef %9, ptr noundef %10, ptr noundef %11, ptr noundef %12, ptr noundef nonnull %13, ptr noundef %14, ptr noundef nonnull %15, ptr noundef nonnull %24, ptr noundef nonnull %25, ptr noundef nonnull %37) #6
  %261 = load i64, ptr %37, align 8, !tbaa !5
  %.not659 = icmp eq i64 %261, 0
  br i1 %.not659, label %272, label %262

262:                                              ; preds = %259
  %263 = icmp slt i64 %261, 1
  %.pre = load i64, ptr %4, align 8, !tbaa !5
  %.not675 = icmp sgt i64 %261, %.pre
  %or.cond815 = select i1 %263, i1 true, i1 %.not675
  br i1 %or.cond815, label %265, label %264

264:                                              ; preds = %262
  store i64 %261, ptr %28, align 8, !tbaa !5
  br label %549

265:                                              ; preds = %262
  %266 = icmp sle i64 %261, %.pre
  %267 = shl i64 %.pre, 1
  %.not676 = icmp sgt i64 %261, %267
  %or.cond682 = or i1 %266, %.not676
  br i1 %or.cond682, label %270, label %268

268:                                              ; preds = %265
  %269 = sub nsw i64 %261, %.pre
  store i64 %269, ptr %28, align 8, !tbaa !5
  br label %549

270:                                              ; preds = %265
  %271 = add nsw i64 %.pre, 1
  store i64 %271, ptr %28, align 8, !tbaa !5
  br label %549

272:                                              ; preds = %259
  br i1 %or.cond15.not, label %273, label %.loopexit723

273:                                              ; preds = %272
  br i1 %74, label %274, label %285

274:                                              ; preds = %273
  br i1 %66, label %275, label %278

275:                                              ; preds = %274
  br i1 %72, label %276, label %277

276:                                              ; preds = %275
  store i8 66, ptr %41, align 1, !tbaa !11
  br label %279

277:                                              ; preds = %275
  store i8 76, ptr %41, align 1, !tbaa !11
  br label %279

278:                                              ; preds = %274
  store i8 82, ptr %41, align 1, !tbaa !11
  br label %279

279:                                              ; preds = %276, %277, %278
  %280 = call i32 @dtgevc_(ptr noundef nonnull %41, ptr noundef nonnull @.str.4, ptr noundef nonnull %40, 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 %4, ptr noundef nonnull %33, ptr noundef nonnull %24, ptr noundef nonnull %37) #6
  %281 = load i64, ptr %37, align 8, !tbaa !5
  %.not660 = icmp eq i64 %281, 0
  br i1 %.not660, label %285, label %282

282:                                              ; preds = %279
  %283 = load i64, ptr %4, align 8, !tbaa !5
  %284 = add nsw i64 %283, 2
  store i64 %284, ptr %28, align 8, !tbaa !5
  br label %549

285:                                              ; preds = %279, %273
  br i1 %202, label %286, label %.loopexit723

286:                                              ; preds = %285
  %287 = load i64, ptr %4, align 8, !tbaa !5
  store i64 %287, ptr %30, align 8, !tbaa !5
  %invariant.gep = getelementptr i8, ptr %48, i64 8
  %.not661726 = icmp slt i64 %287, 1
  br i1 %.not661726, label %.loopexit723, label %.lr.ph731

.lr.ph731:                                        ; preds = %286
  %or.cond23 = select i1 %97, i1 true, i1 %98
  br label %288

288:                                              ; preds = %.lr.ph731, %324
  %289 = phi i64 [ %287, %.lr.ph731 ], [ %325, %324 ]
  %.0611729 = phi i64 [ 0, %.lr.ph731 ], [ %.2613, %324 ]
  %.0623727 = phi i64 [ 1, %.lr.ph731 ], [ %326, %324 ]
  %.not662 = icmp eq i64 %.0611729, 0
  br i1 %.not662, label %290, label %324

290:                                              ; preds = %288
  store i64 1, ptr %34, align 8, !tbaa !5
  %291 = load i64, ptr %4, align 8, !tbaa !5
  %292 = icmp slt i64 %.0623727, %291
  br i1 %292, label %293, label %299

293:                                              ; preds = %290
  %294 = mul nsw i64 %.0623727, %46
  %gep = getelementptr double, ptr %invariant.gep, i64 %.0623727
  %295 = getelementptr double, ptr %gep, i64 %294
  %296 = load double, ptr %295, align 8, !tbaa !9
  %297 = fcmp une double %296, 0.000000e+00
  br i1 %297, label %298, label %299

298:                                              ; preds = %293
  store i64 2, ptr %34, align 8, !tbaa !5
  br label %299

299:                                              ; preds = %293, %298, %290
  %switch = phi i1 [ false, %298 ], [ true, %293 ], [ true, %290 ]
  %300 = phi i64 [ 2, %298 ], [ 1, %293 ], [ 1, %290 ]
  %.1612 = phi i64 [ 1, %298 ], [ 0, %293 ], [ 0, %290 ]
  store i64 %291, ptr %31, align 8, !tbaa !5
  %.not663724 = icmp slt i64 %291, 1
  br i1 %.not663724, label %._crit_edge, label %.lr.ph.preheader

.lr.ph.preheader:                                 ; preds = %299
  %301 = shl nuw i64 %291, 3
  call void @llvm.memset.p0.i64(ptr align 8 %27, i8 0, i64 %301, i1 false), !tbaa !5
  br label %._crit_edge

._crit_edge:                                      ; preds = %.lr.ph.preheader, %299
  %302 = getelementptr inbounds i64, ptr %61, i64 %.0623727
  store i64 1, ptr %302, align 8, !tbaa !5
  br i1 %switch, label %305, label %303

303:                                              ; preds = %._crit_edge
  %304 = getelementptr i64, ptr %27, i64 %.0623727
  store i64 1, ptr %304, align 8, !tbaa !5
  br label %305

305:                                              ; preds = %._crit_edge, %303
  %306 = load i64, ptr %4, align 8, !tbaa !5
  %307 = mul nsw i64 %306, %300
  %reass.add = shl i64 %307, 1
  br i1 %or.cond23, label %308, label %316

308:                                              ; preds = %305
  %309 = getelementptr double, ptr %24, i64 %307
  %310 = getelementptr double, ptr %24, i64 %reass.add
  %311 = call i32 @dtgevc_(ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.5, ptr noundef nonnull %27, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %7, ptr noundef nonnull %8, ptr noundef %24, ptr noundef nonnull %4, ptr noundef %309, ptr noundef nonnull %4, ptr noundef nonnull %34, ptr noundef nonnull %32, ptr noundef nonnull %310, ptr noundef nonnull %37) #6
  %312 = load i64, ptr %37, align 8, !tbaa !5
  %.not664 = icmp eq i64 %312, 0
  br i1 %.not664, label %316, label %313

313:                                              ; preds = %308
  %314 = load i64, ptr %4, align 8, !tbaa !5
  %315 = add nsw i64 %314, 2
  store i64 %315, ptr %28, align 8, !tbaa !5
  br label %549

316:                                              ; preds = %308, %305
  %317 = load i64, ptr %25, align 8, !tbaa !5
  %318 = sub i64 %317, %reass.add
  store i64 %318, ptr %31, align 8, !tbaa !5
  %319 = getelementptr double, ptr %24, i64 %307
  %320 = getelementptr inbounds double, ptr %59, i64 %.0623727
  %321 = getelementptr inbounds double, ptr %60, i64 %.0623727
  %322 = getelementptr double, ptr %24, i64 %reass.add
  %323 = call i32 @dtgsna_(ptr noundef %3, ptr noundef nonnull @.str.5, ptr noundef nonnull %27, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %7, ptr noundef nonnull %8, ptr noundef %24, ptr noundef nonnull %4, ptr noundef %319, ptr noundef nonnull %4, ptr noundef nonnull %320, ptr noundef nonnull %321, ptr noundef nonnull %34, ptr noundef nonnull %32, ptr noundef %322, ptr noundef nonnull %31, ptr noundef %26, ptr noundef nonnull %37) #6
  %.pre803 = load i64, ptr %30, align 8, !tbaa !5
  br label %324

324:                                              ; preds = %288, %316
  %325 = phi i64 [ %.pre803, %316 ], [ %289, %288 ]
  %.2613 = phi i64 [ %.1612, %316 ], [ 0, %288 ]
  %326 = add nuw nsw i64 %.0623727, 1
  %.not661.not = icmp slt i64 %.0623727, %325
  br i1 %.not661.not, label %288, label %.loopexit723, !llvm.loop !12

.loopexit723:                                     ; preds = %324, %286, %285, %272
  br i1 %66, label %327, label %.loopexit722

327:                                              ; preds = %.loopexit723
  %328 = call i32 @dggbak_(ptr noundef %0, ptr noundef nonnull @.str.14, ptr noundef nonnull %4, ptr noundef nonnull %16, ptr noundef nonnull %17, ptr noundef %18, ptr noundef %19, ptr noundef nonnull %4, ptr noundef %12, ptr noundef nonnull %13, ptr noundef nonnull %37) #6
  %329 = load i64, ptr %4, align 8, !tbaa !5
  store i64 %329, ptr %30, align 8, !tbaa !5
  %.not665755 = icmp slt i64 %329, 1
  br i1 %.not665755, label %.loopexit722, label %.lr.ph758

.lr.ph758:                                        ; preds = %327
  %330 = load double, ptr %45, align 8
  %331 = add nuw i64 %329, 2305843009213693951
  %332 = mul i64 %53, %331
  %333 = add i64 %332, %329
  %334 = shl i64 %333, 3
  %scevgep = getelementptr i8, ptr %12, i64 %334
  %335 = shl i64 %53, 3
  %scevgep827 = getelementptr i8, ptr %12, i64 %335
  %336 = add i64 %335, 8
  %337 = mul i64 %329, %336
  %scevgep828 = getelementptr i8, ptr %12, i64 %337
  %xtraiter = and i64 %329, 1
  %338 = icmp eq i64 %329, 1
  %unroll_iter = and i64 %329, 9223372036854775806
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  %min.iters.check832 = icmp ult i64 %329, 4
  %bound0 = icmp ugt ptr %scevgep828, %12
  %bound1 = icmp ult ptr %scevgep827, %scevgep
  %found.conflict = and i1 %bound0, %bound1
  %stride.check = icmp slt i64 %335, 0
  %339 = or i1 %found.conflict, %stride.check
  %n.vec835 = and i64 %329, 9223372036854775804
  %ind.end836 = or disjoint i64 %n.vec835, 1
  %cmp.n848 = icmp eq i64 %329, %n.vec835
  %xtraiter902 = and i64 %329, 1
  %lcmp.mod903.not = icmp eq i64 %xtraiter902, 0
  %min.iters.check = icmp ult i64 %329, 4
  %n.vec = and i64 %329, 9223372036854775804
  %ind.end = or disjoint i64 %n.vec, 1
  %cmp.n = icmp eq i64 %329, %n.vec
  br label %340

340:                                              ; preds = %.lr.ph758, %.loopexit718
  %.0620756 = phi i64 [ 1, %.lr.ph758 ], [ %434, %.loopexit718 ]
  %341 = getelementptr inbounds double, ptr %52, i64 %.0620756
  %342 = load double, ptr %341, align 8, !tbaa !9
  %343 = fcmp olt double %342, 0.000000e+00
  br i1 %343, label %.loopexit718, label %344

344:                                              ; preds = %340
  %345 = fcmp oeq double %342, 0.000000e+00
  store i64 %329, ptr %31, align 8, !tbaa !5
  %346 = mul nsw i64 %.0620756, %53
  br i1 %345, label %.lr.ph741, label %.lr.ph736

.lr.ph741:                                        ; preds = %344
  %invariant.gep743 = getelementptr double, ptr %55, i64 %346
  br i1 %338, label %.loopexit720.loopexit.unr-lcssa, label %.lr.ph741.new

.lr.ph741.new:                                    ; preds = %.lr.ph741
  %invariant.gep917 = getelementptr i8, ptr %invariant.gep743, i64 8
  br label %347

347:                                              ; preds = %347, %.lr.ph741.new
  %.0607739 = phi double [ 0.000000e+00, %.lr.ph741.new ], [ %359, %347 ]
  %.0614738 = phi i64 [ 1, %.lr.ph741.new ], [ %360, %347 ]
  %niter = phi i64 [ 0, %.lr.ph741.new ], [ %niter.next.1, %347 ]
  %gep744 = getelementptr double, ptr %invariant.gep743, i64 %.0614738
  %348 = load double, ptr %gep744, align 8, !tbaa !9
  %349 = fcmp oge double %348, 0.000000e+00
  %350 = fneg double %348
  %351 = select i1 %349, double %348, double %350
  %352 = fcmp oge double %.0607739, %351
  %353 = select i1 %352, double %.0607739, double %351
  %gep918 = getelementptr double, ptr %invariant.gep917, i64 %.0614738
  %354 = load double, ptr %gep918, align 8, !tbaa !9
  %355 = fcmp oge double %354, 0.000000e+00
  %356 = fneg double %354
  %357 = select i1 %355, double %354, double %356
  %358 = fcmp oge double %353, %357
  %359 = select i1 %358, double %353, double %357
  %360 = add nuw i64 %.0614738, 2
  %niter.next.1 = add i64 %niter, 2
  %niter.ncmp.1 = icmp eq i64 %niter.next.1, %unroll_iter
  br i1 %niter.ncmp.1, label %.loopexit720.loopexit.unr-lcssa, label %347, !llvm.loop !14

.lr.ph736:                                        ; preds = %344
  %361 = add nuw nsw i64 %.0620756, 1
  %362 = mul nsw i64 %361, %53
  br label %363

363:                                              ; preds = %.lr.ph736, %363
  %.1608734 = phi double [ 0.000000e+00, %.lr.ph736 ], [ %377, %363 ]
  %.1615733 = phi i64 [ 1, %.lr.ph736 ], [ %378, %363 ]
  %364 = getelementptr double, ptr %55, i64 %.1615733
  %365 = getelementptr double, ptr %364, i64 %346
  %366 = load double, ptr %365, align 8, !tbaa !9
  %367 = fcmp oge double %366, 0.000000e+00
  %368 = fneg double %366
  %369 = select i1 %367, double %366, double %368
  %370 = getelementptr double, ptr %364, i64 %362
  %371 = load double, ptr %370, align 8, !tbaa !9
  %372 = fcmp oge double %371, 0.000000e+00
  %373 = fneg double %371
  %374 = select i1 %372, double %371, double %373
  %375 = fadd double %369, %374
  %376 = fcmp oge double %.1608734, %375
  %377 = select i1 %376, double %.1608734, double %375
  %378 = add nuw i64 %.1615733, 1
  %exitcond.not = icmp eq i64 %.1615733, %329
  br i1 %exitcond.not, label %.loopexit720, label %363, !llvm.loop !15

.loopexit720.loopexit.unr-lcssa:                  ; preds = %347, %.lr.ph741
  %.lcssa900.ph = phi double [ poison, %.lr.ph741 ], [ %359, %347 ]
  %.0607739.unr = phi double [ 0.000000e+00, %.lr.ph741 ], [ %359, %347 ]
  %.0614738.unr = phi i64 [ 1, %.lr.ph741 ], [ %360, %347 ]
  br i1 %lcmp.mod.not, label %.loopexit720, label %.loopexit720.loopexit.epilog-lcssa

.loopexit720.loopexit.epilog-lcssa:               ; preds = %.loopexit720.loopexit.unr-lcssa
  %gep744.epil = getelementptr double, ptr %invariant.gep743, i64 %.0614738.unr
  %379 = load double, ptr %gep744.epil, align 8, !tbaa !9
  %380 = fcmp oge double %379, 0.000000e+00
  %381 = fneg double %379
  %382 = select i1 %380, double %379, double %381
  %383 = fcmp oge double %.0607739.unr, %382
  %384 = select i1 %383, double %.0607739.unr, double %382
  br label %.loopexit720

.loopexit720:                                     ; preds = %363, %.loopexit720.loopexit.epilog-lcssa, %.loopexit720.loopexit.unr-lcssa
  %.2609 = phi double [ %.lcssa900.ph, %.loopexit720.loopexit.unr-lcssa ], [ %384, %.loopexit720.loopexit.epilog-lcssa ], [ %377, %363 ]
  %385 = fcmp olt double %.2609, %330
  br i1 %385, label %.loopexit718, label %386

386:                                              ; preds = %.loopexit720
  %387 = fdiv double 1.000000e+00, %.2609
  store i64 %329, ptr %31, align 8, !tbaa !5
  %388 = mul nsw i64 %.0620756, %53
  br i1 %345, label %.lr.ph752, label %.lr.ph748

.lr.ph752:                                        ; preds = %386
  %invariant.gep753 = getelementptr double, ptr %55, i64 %388
  br i1 %min.iters.check, label %scalar.ph.preheader, label %vector.ph

vector.ph:                                        ; preds = %.lr.ph752
  %broadcast.splatinsert = insertelement <2 x double> poison, double %387, i64 0
  %broadcast.splat = shufflevector <2 x double> %broadcast.splatinsert, <2 x double> poison, <2 x i32> zeroinitializer
  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
  %389 = getelementptr double, ptr %invariant.gep753, i64 %offset.idx
  %390 = getelementptr i8, ptr %389, i64 16
  %wide.load = load <2 x double>, ptr %389, align 8, !tbaa !9
  %wide.load826 = load <2 x double>, ptr %390, align 8, !tbaa !9
  %391 = fmul <2 x double> %broadcast.splat, %wide.load
  %392 = fmul <2 x double> %broadcast.splat, %wide.load826
  store <2 x double> %391, ptr %389, align 8, !tbaa !9
  store <2 x double> %392, ptr %390, align 8, !tbaa !9
  %index.next = add nuw i64 %index, 4
  %393 = icmp eq i64 %index.next, %n.vec
  br i1 %393, label %middle.block, label %vector.body, !llvm.loop !16

middle.block:                                     ; preds = %vector.body
  br i1 %cmp.n, label %.loopexit718, label %scalar.ph.preheader

scalar.ph.preheader:                              ; preds = %middle.block, %.lr.ph752
  %.2616750.ph = phi i64 [ 1, %.lr.ph752 ], [ %ind.end, %middle.block ]
  br label %scalar.ph

scalar.ph:                                        ; preds = %scalar.ph.preheader, %scalar.ph
  %.2616750 = phi i64 [ %396, %scalar.ph ], [ %.2616750.ph, %scalar.ph.preheader ]
  %gep754 = getelementptr double, ptr %invariant.gep753, i64 %.2616750
  %394 = load double, ptr %gep754, align 8, !tbaa !9
  %395 = fmul double %387, %394
  store double %395, ptr %gep754, align 8, !tbaa !9
  %396 = add nuw i64 %.2616750, 1
  %exitcond796.not = icmp eq i64 %.2616750, %329
  br i1 %exitcond796.not, label %.loopexit718, label %scalar.ph, !llvm.loop !19

.lr.ph748:                                        ; preds = %386
  %397 = add nuw nsw i64 %.0620756, 1
  %398 = mul nsw i64 %397, %53
  %brmerge921 = select i1 %min.iters.check832, i1 true, i1 %339
  br i1 %brmerge921, label %scalar.ph831.preheader, label %vector.ph833

vector.ph833:                                     ; preds = %.lr.ph748
  %broadcast.splatinsert843 = insertelement <2 x double> poison, double %387, i64 0
  %broadcast.splat844 = shufflevector <2 x double> %broadcast.splatinsert843, <2 x double> poison, <2 x i32> zeroinitializer
  br label %vector.body838

vector.body838:                                   ; preds = %vector.body838, %vector.ph833
  %index839 = phi i64 [ 0, %vector.ph833 ], [ %index.next847, %vector.body838 ]
  %offset.idx840 = or disjoint i64 %index839, 1
  %399 = getelementptr double, ptr %55, i64 %offset.idx840
  %400 = getelementptr double, ptr %399, i64 %388
  %401 = getelementptr i8, ptr %400, i64 16
  %wide.load841 = load <2 x double>, ptr %400, align 8, !tbaa !9, !alias.scope !20, !noalias !23
  %wide.load842 = load <2 x double>, ptr %401, align 8, !tbaa !9, !alias.scope !20, !noalias !23
  %402 = fmul <2 x double> %broadcast.splat844, %wide.load841
  %403 = fmul <2 x double> %broadcast.splat844, %wide.load842
  store <2 x double> %402, ptr %400, align 8, !tbaa !9, !alias.scope !20, !noalias !23
  store <2 x double> %403, ptr %401, align 8, !tbaa !9, !alias.scope !20, !noalias !23
  %404 = getelementptr double, ptr %399, i64 %398
  %405 = getelementptr i8, ptr %404, i64 16
  %wide.load845 = load <2 x double>, ptr %404, align 8, !tbaa !9, !alias.scope !23
  %wide.load846 = load <2 x double>, ptr %405, align 8, !tbaa !9, !alias.scope !23
  %406 = fmul <2 x double> %broadcast.splat844, %wide.load845
  %407 = fmul <2 x double> %broadcast.splat844, %wide.load846
  store <2 x double> %406, ptr %404, align 8, !tbaa !9, !alias.scope !23
  store <2 x double> %407, ptr %405, align 8, !tbaa !9, !alias.scope !23
  %index.next847 = add nuw i64 %index839, 4
  %408 = icmp eq i64 %index.next847, %n.vec835
  br i1 %408, label %middle.block830, label %vector.body838, !llvm.loop !25

middle.block830:                                  ; preds = %vector.body838
  br i1 %cmp.n848, label %.loopexit718, label %scalar.ph831.preheader

scalar.ph831.preheader:                           ; preds = %.lr.ph748, %middle.block830
  %.3617746.ph = phi i64 [ 1, %.lr.ph748 ], [ %ind.end836, %middle.block830 ]
  br i1 %lcmp.mod903.not, label %scalar.ph831.prol.loopexit, label %scalar.ph831.prol

scalar.ph831.prol:                                ; preds = %scalar.ph831.preheader
  %409 = getelementptr double, ptr %55, i64 %.3617746.ph
  %410 = getelementptr double, ptr %409, i64 %388
  %411 = load double, ptr %410, align 8, !tbaa !9
  %412 = fmul double %387, %411
  store double %412, ptr %410, align 8, !tbaa !9
  %413 = getelementptr double, ptr %409, i64 %398
  %414 = load double, ptr %413, align 8, !tbaa !9
  %415 = fmul double %387, %414
  store double %415, ptr %413, align 8, !tbaa !9
  %416 = add nuw i64 %.3617746.ph, 1
  br label %scalar.ph831.prol.loopexit

scalar.ph831.prol.loopexit:                       ; preds = %scalar.ph831.prol, %scalar.ph831.preheader
  %.3617746.unr = phi i64 [ %.3617746.ph, %scalar.ph831.preheader ], [ %416, %scalar.ph831.prol ]
  %417 = icmp eq i64 %329, %.3617746.ph
  br i1 %417, label %.loopexit718, label %scalar.ph831

scalar.ph831:                                     ; preds = %scalar.ph831.prol.loopexit, %scalar.ph831
  %.3617746 = phi i64 [ %433, %scalar.ph831 ], [ %.3617746.unr, %scalar.ph831.prol.loopexit ]
  %418 = getelementptr double, ptr %55, i64 %.3617746
  %419 = getelementptr double, ptr %418, i64 %388
  %420 = load double, ptr %419, align 8, !tbaa !9
  %421 = fmul double %387, %420
  store double %421, ptr %419, align 8, !tbaa !9
  %422 = getelementptr double, ptr %418, i64 %398
  %423 = load double, ptr %422, align 8, !tbaa !9
  %424 = fmul double %387, %423
  store double %424, ptr %422, align 8, !tbaa !9
  %425 = add nuw i64 %.3617746, 1
  %426 = getelementptr double, ptr %55, i64 %425
  %427 = getelementptr double, ptr %426, i64 %388
  %428 = load double, ptr %427, align 8, !tbaa !9
  %429 = fmul double %387, %428
  store double %429, ptr %427, align 8, !tbaa !9
  %430 = getelementptr double, ptr %426, i64 %398
  %431 = load double, ptr %430, align 8, !tbaa !9
  %432 = fmul double %387, %431
  store double %432, ptr %430, align 8, !tbaa !9
  %433 = add nuw i64 %.3617746, 2
  %exitcond795.not.1 = icmp eq i64 %425, %329
  br i1 %exitcond795.not.1, label %.loopexit718, label %scalar.ph831, !llvm.loop !26

.loopexit718:                                     ; preds = %scalar.ph831.prol.loopexit, %scalar.ph831, %scalar.ph, %middle.block830, %middle.block, %340, %.loopexit720
  %434 = add nuw i64 %.0620756, 1
  %exitcond797.not = icmp eq i64 %.0620756, %329
  br i1 %exitcond797.not, label %.loopexit722, label %340, !llvm.loop !27

.loopexit722:                                     ; preds = %.loopexit718, %327, %.loopexit723
  br i1 %72, label %435, label %.loopexit717

435:                                              ; preds = %.loopexit722
  %436 = call i32 @dggbak_(ptr noundef %0, ptr noundef nonnull @.str.17, ptr noundef nonnull %4, ptr noundef nonnull %16, ptr noundef nonnull %17, ptr noundef %18, ptr noundef %19, ptr noundef nonnull %4, ptr noundef %14, ptr noundef nonnull %15, ptr noundef nonnull %37) #6
  %437 = load i64, ptr %4, align 8, !tbaa !5
  store i64 %437, ptr %30, align 8, !tbaa !5
  %.not666783 = icmp slt i64 %437, 1
  br i1 %.not666783, label %.loopexit717, label %.lr.ph786

.lr.ph786:                                        ; preds = %435
  %438 = load double, ptr %45, align 8
  %439 = add nuw i64 %437, 2305843009213693951
  %440 = mul i64 %56, %439
  %441 = add i64 %440, %437
  %442 = shl i64 %441, 3
  %scevgep867 = getelementptr i8, ptr %14, i64 %442
  %443 = shl i64 %56, 3
  %scevgep868 = getelementptr i8, ptr %14, i64 %443
  %444 = add i64 %443, 8
  %445 = mul i64 %437, %444
  %scevgep869 = getelementptr i8, ptr %14, i64 %445
  %xtraiter905 = and i64 %437, 1
  %446 = icmp eq i64 %437, 1
  %unroll_iter908 = and i64 %437, 9223372036854775806
  %lcmp.mod906.not = icmp eq i64 %xtraiter905, 0
  %min.iters.check877 = icmp ult i64 %437, 4
  %bound0870 = icmp ugt ptr %scevgep869, %14
  %bound1871 = icmp ult ptr %scevgep868, %scevgep867
  %found.conflict872 = and i1 %bound0870, %bound1871
  %stride.check873 = icmp slt i64 %443, 0
  %447 = or i1 %found.conflict872, %stride.check873
  %n.vec880 = and i64 %437, 9223372036854775804
  %ind.end881 = or disjoint i64 %n.vec880, 1
  %cmp.n893 = icmp eq i64 %437, %n.vec880
  %xtraiter910 = and i64 %437, 1
  %lcmp.mod911.not = icmp eq i64 %xtraiter910, 0
  %min.iters.check851 = icmp ult i64 %437, 4
  %n.vec854 = and i64 %437, 9223372036854775804
  %ind.end855 = or disjoint i64 %n.vec854, 1
  %cmp.n865 = icmp eq i64 %437, %n.vec854
  br label %448

448:                                              ; preds = %.lr.ph786, %.loopexit
  %.1621784 = phi i64 [ 1, %.lr.ph786 ], [ %542, %.loopexit ]
  %449 = getelementptr inbounds double, ptr %52, i64 %.1621784
  %450 = load double, ptr %449, align 8, !tbaa !9
  %451 = fcmp olt double %450, 0.000000e+00
  br i1 %451, label %.loopexit, label %452

452:                                              ; preds = %448
  %453 = fcmp oeq double %450, 0.000000e+00
  store i64 %437, ptr %31, align 8, !tbaa !5
  %454 = mul nsw i64 %.1621784, %56
  br i1 %453, label %.lr.ph769, label %.lr.ph763

.lr.ph769:                                        ; preds = %452
  %invariant.gep771 = getelementptr double, ptr %58, i64 %454
  br i1 %446, label %.loopexit715.loopexit.unr-lcssa, label %.lr.ph769.new

.lr.ph769.new:                                    ; preds = %.lr.ph769
  %invariant.gep919 = getelementptr i8, ptr %invariant.gep771, i64 8
  br label %455

455:                                              ; preds = %455, %.lr.ph769.new
  %.3610767 = phi double [ 0.000000e+00, %.lr.ph769.new ], [ %467, %455 ]
  %.4618766 = phi i64 [ 1, %.lr.ph769.new ], [ %468, %455 ]
  %niter909 = phi i64 [ 0, %.lr.ph769.new ], [ %niter909.next.1, %455 ]
  %gep772 = getelementptr double, ptr %invariant.gep771, i64 %.4618766
  %456 = load double, ptr %gep772, align 8, !tbaa !9
  %457 = fcmp oge double %456, 0.000000e+00
  %458 = fneg double %456
  %459 = select i1 %457, double %456, double %458
  %460 = fcmp oge double %.3610767, %459
  %461 = select i1 %460, double %.3610767, double %459
  %gep920 = getelementptr double, ptr %invariant.gep919, i64 %.4618766
  %462 = load double, ptr %gep920, align 8, !tbaa !9
  %463 = fcmp oge double %462, 0.000000e+00
  %464 = fneg double %462
  %465 = select i1 %463, double %462, double %464
  %466 = fcmp oge double %461, %465
  %467 = select i1 %466, double %461, double %465
  %468 = add nuw i64 %.4618766, 2
  %niter909.next.1 = add i64 %niter909, 2
  %niter909.ncmp.1 = icmp eq i64 %niter909.next.1, %unroll_iter908
  br i1 %niter909.ncmp.1, label %.loopexit715.loopexit.unr-lcssa, label %455, !llvm.loop !28

.lr.ph763:                                        ; preds = %452
  %469 = add nuw nsw i64 %.1621784, 1
  %470 = mul nsw i64 %469, %56
  br label %471

471:                                              ; preds = %.lr.ph763, %471
  %.4761 = phi double [ 0.000000e+00, %.lr.ph763 ], [ %485, %471 ]
  %.5619760 = phi i64 [ 1, %.lr.ph763 ], [ %486, %471 ]
  %472 = getelementptr double, ptr %58, i64 %.5619760
  %473 = getelementptr double, ptr %472, i64 %454
  %474 = load double, ptr %473, align 8, !tbaa !9
  %475 = fcmp oge double %474, 0.000000e+00
  %476 = fneg double %474
  %477 = select i1 %475, double %474, double %476
  %478 = getelementptr double, ptr %472, i64 %470
  %479 = load double, ptr %478, align 8, !tbaa !9
  %480 = fcmp oge double %479, 0.000000e+00
  %481 = fneg double %479
  %482 = select i1 %480, double %479, double %481
  %483 = fadd double %477, %482
  %484 = fcmp oge double %.4761, %483
  %485 = select i1 %484, double %.4761, double %483
  %486 = add nuw i64 %.5619760, 1
  %exitcond798.not = icmp eq i64 %.5619760, %437
  br i1 %exitcond798.not, label %.loopexit715, label %471, !llvm.loop !29

.loopexit715.loopexit.unr-lcssa:                  ; preds = %455, %.lr.ph769
  %.lcssa896.ph = phi double [ poison, %.lr.ph769 ], [ %467, %455 ]
  %.3610767.unr = phi double [ 0.000000e+00, %.lr.ph769 ], [ %467, %455 ]
  %.4618766.unr = phi i64 [ 1, %.lr.ph769 ], [ %468, %455 ]
  br i1 %lcmp.mod906.not, label %.loopexit715, label %.loopexit715.loopexit.epilog-lcssa

.loopexit715.loopexit.epilog-lcssa:               ; preds = %.loopexit715.loopexit.unr-lcssa
  %gep772.epil = getelementptr double, ptr %invariant.gep771, i64 %.4618766.unr
  %487 = load double, ptr %gep772.epil, align 8, !tbaa !9
  %488 = fcmp oge double %487, 0.000000e+00
  %489 = fneg double %487
  %490 = select i1 %488, double %487, double %489
  %491 = fcmp oge double %.3610767.unr, %490
  %492 = select i1 %491, double %.3610767.unr, double %490
  br label %.loopexit715

.loopexit715:                                     ; preds = %471, %.loopexit715.loopexit.epilog-lcssa, %.loopexit715.loopexit.unr-lcssa
  %.5 = phi double [ %.lcssa896.ph, %.loopexit715.loopexit.unr-lcssa ], [ %492, %.loopexit715.loopexit.epilog-lcssa ], [ %485, %471 ]
  %493 = fcmp olt double %.5, %438
  br i1 %493, label %.loopexit, label %494

494:                                              ; preds = %.loopexit715
  %495 = fdiv double 1.000000e+00, %.5
  store i64 %437, ptr %31, align 8, !tbaa !5
  %496 = mul nsw i64 %.1621784, %56
  br i1 %453, label %.lr.ph780, label %.lr.ph776

.lr.ph780:                                        ; preds = %494
  %invariant.gep781 = getelementptr double, ptr %58, i64 %496
  br i1 %min.iters.check851, label %scalar.ph850.preheader, label %vector.ph852

vector.ph852:                                     ; preds = %.lr.ph780
  %broadcast.splatinsert862 = insertelement <2 x double> poison, double %495, i64 0
  %broadcast.splat863 = shufflevector <2 x double> %broadcast.splatinsert862, <2 x double> poison, <2 x i32> zeroinitializer
  br label %vector.body857

vector.body857:                                   ; preds = %vector.body857, %vector.ph852
  %index858 = phi i64 [ 0, %vector.ph852 ], [ %index.next864, %vector.body857 ]
  %offset.idx859 = or disjoint i64 %index858, 1
  %497 = getelementptr double, ptr %invariant.gep781, i64 %offset.idx859
  %498 = getelementptr i8, ptr %497, i64 16
  %wide.load860 = load <2 x double>, ptr %497, align 8, !tbaa !9
  %wide.load861 = load <2 x double>, ptr %498, align 8, !tbaa !9
  %499 = fmul <2 x double> %broadcast.splat863, %wide.load860
  %500 = fmul <2 x double> %broadcast.splat863, %wide.load861
  store <2 x double> %499, ptr %497, align 8, !tbaa !9
  store <2 x double> %500, ptr %498, align 8, !tbaa !9
  %index.next864 = add nuw i64 %index858, 4
  %501 = icmp eq i64 %index.next864, %n.vec854
  br i1 %501, label %middle.block849, label %vector.body857, !llvm.loop !30

middle.block849:                                  ; preds = %vector.body857
  br i1 %cmp.n865, label %.loopexit, label %scalar.ph850.preheader

scalar.ph850.preheader:                           ; preds = %middle.block849, %.lr.ph780
  %.6778.ph = phi i64 [ 1, %.lr.ph780 ], [ %ind.end855, %middle.block849 ]
  br label %scalar.ph850

scalar.ph850:                                     ; preds = %scalar.ph850.preheader, %scalar.ph850
  %.6778 = phi i64 [ %504, %scalar.ph850 ], [ %.6778.ph, %scalar.ph850.preheader ]
  %gep782 = getelementptr double, ptr %invariant.gep781, i64 %.6778
  %502 = load double, ptr %gep782, align 8, !tbaa !9
  %503 = fmul double %495, %502
  store double %503, ptr %gep782, align 8, !tbaa !9
  %504 = add nuw i64 %.6778, 1
  %exitcond801.not = icmp eq i64 %.6778, %437
  br i1 %exitcond801.not, label %.loopexit, label %scalar.ph850, !llvm.loop !31

.lr.ph776:                                        ; preds = %494
  %505 = add nuw nsw i64 %.1621784, 1
  %506 = mul nsw i64 %505, %56
  %brmerge922 = select i1 %min.iters.check877, i1 true, i1 %447
  br i1 %brmerge922, label %scalar.ph876.preheader, label %vector.ph878

vector.ph878:                                     ; preds = %.lr.ph776
  %broadcast.splatinsert888 = insertelement <2 x double> poison, double %495, i64 0
  %broadcast.splat889 = shufflevector <2 x double> %broadcast.splatinsert888, <2 x double> poison, <2 x i32> zeroinitializer
  br label %vector.body883

vector.body883:                                   ; preds = %vector.body883, %vector.ph878
  %index884 = phi i64 [ 0, %vector.ph878 ], [ %index.next892, %vector.body883 ]
  %offset.idx885 = or disjoint i64 %index884, 1
  %507 = getelementptr double, ptr %58, i64 %offset.idx885
  %508 = getelementptr double, ptr %507, i64 %496
  %509 = getelementptr i8, ptr %508, i64 16
  %wide.load886 = load <2 x double>, ptr %508, align 8, !tbaa !9, !alias.scope !32, !noalias !35
  %wide.load887 = load <2 x double>, ptr %509, align 8, !tbaa !9, !alias.scope !32, !noalias !35
  %510 = fmul <2 x double> %broadcast.splat889, %wide.load886
  %511 = fmul <2 x double> %broadcast.splat889, %wide.load887
  store <2 x double> %510, ptr %508, align 8, !tbaa !9, !alias.scope !32, !noalias !35
  store <2 x double> %511, ptr %509, align 8, !tbaa !9, !alias.scope !32, !noalias !35
  %512 = getelementptr double, ptr %507, i64 %506
  %513 = getelementptr i8, ptr %512, i64 16
  %wide.load890 = load <2 x double>, ptr %512, align 8, !tbaa !9, !alias.scope !35
  %wide.load891 = load <2 x double>, ptr %513, align 8, !tbaa !9, !alias.scope !35
  %514 = fmul <2 x double> %broadcast.splat889, %wide.load890
  %515 = fmul <2 x double> %broadcast.splat889, %wide.load891
  store <2 x double> %514, ptr %512, align 8, !tbaa !9, !alias.scope !35
  store <2 x double> %515, ptr %513, align 8, !tbaa !9, !alias.scope !35
  %index.next892 = add nuw i64 %index884, 4
  %516 = icmp eq i64 %index.next892, %n.vec880
  br i1 %516, label %middle.block875, label %vector.body883, !llvm.loop !37

middle.block875:                                  ; preds = %vector.body883
  br i1 %cmp.n893, label %.loopexit, label %scalar.ph876.preheader

scalar.ph876.preheader:                           ; preds = %.lr.ph776, %middle.block875
  %.7774.ph = phi i64 [ 1, %.lr.ph776 ], [ %ind.end881, %middle.block875 ]
  br i1 %lcmp.mod911.not, label %scalar.ph876.prol.loopexit, label %scalar.ph876.prol

scalar.ph876.prol:                                ; preds = %scalar.ph876.preheader
  %517 = getelementptr double, ptr %58, i64 %.7774.ph
  %518 = getelementptr double, ptr %517, i64 %496
  %519 = load double, ptr %518, align 8, !tbaa !9
  %520 = fmul double %495, %519
  store double %520, ptr %518, align 8, !tbaa !9
  %521 = getelementptr double, ptr %517, i64 %506
  %522 = load double, ptr %521, align 8, !tbaa !9
  %523 = fmul double %495, %522
  store double %523, ptr %521, align 8, !tbaa !9
  %524 = add nuw i64 %.7774.ph, 1
  br label %scalar.ph876.prol.loopexit

scalar.ph876.prol.loopexit:                       ; preds = %scalar.ph876.prol, %scalar.ph876.preheader
  %.7774.unr = phi i64 [ %.7774.ph, %scalar.ph876.preheader ], [ %524, %scalar.ph876.prol ]
  %525 = icmp eq i64 %437, %.7774.ph
  br i1 %525, label %.loopexit, label %scalar.ph876

scalar.ph876:                                     ; preds = %scalar.ph876.prol.loopexit, %scalar.ph876
  %.7774 = phi i64 [ %541, %scalar.ph876 ], [ %.7774.unr, %scalar.ph876.prol.loopexit ]
  %526 = getelementptr double, ptr %58, i64 %.7774
  %527 = getelementptr double, ptr %526, i64 %496
  %528 = load double, ptr %527, align 8, !tbaa !9
  %529 = fmul double %495, %528
  store double %529, ptr %527, align 8, !tbaa !9
  %530 = getelementptr double, ptr %526, i64 %506
  %531 = load double, ptr %530, align 8, !tbaa !9
  %532 = fmul double %495, %531
  store double %532, ptr %530, align 8, !tbaa !9
  %533 = add nuw i64 %.7774, 1
  %534 = getelementptr double, ptr %58, i64 %533
  %535 = getelementptr double, ptr %534, i64 %496
  %536 = load double, ptr %535, align 8, !tbaa !9
  %537 = fmul double %495, %536
  store double %537, ptr %535, align 8, !tbaa !9
  %538 = getelementptr double, ptr %534, i64 %506
  %539 = load double, ptr %538, align 8, !tbaa !9
  %540 = fmul double %495, %539
  store double %540, ptr %538, align 8, !tbaa !9
  %541 = add nuw i64 %.7774, 2
  %exitcond800.not.1 = icmp eq i64 %533, %437
  br i1 %exitcond800.not.1, label %.loopexit, label %scalar.ph876, !llvm.loop !38

.loopexit:                                        ; preds = %scalar.ph876.prol.loopexit, %scalar.ph876, %scalar.ph850, %middle.block875, %middle.block849, %448, %.loopexit715
  %542 = add nuw i64 %.1621784, 1
  %exitcond802.not = icmp eq i64 %.1621784, %437
  br i1 %exitcond802.not, label %.loopexit717, label %448, !llvm.loop !39

.loopexit717:                                     ; preds = %.loopexit, %435, %.loopexit722
  br i1 %.not655694, label %546, label %543

543:                                              ; preds = %.loopexit717
  %544 = call i32 @dlascl_(ptr noundef nonnull @.str.12, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %43, ptr noundef nonnull %35, ptr noundef nonnull %4, ptr noundef nonnull @c__1, ptr noundef %9, ptr noundef nonnull %4, ptr noundef nonnull %37) #6
  %545 = call i32 @dlascl_(ptr noundef nonnull @.str.12, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %43, ptr noundef nonnull %35, ptr noundef nonnull %4, ptr noundef nonnull @c__1, ptr noundef %10, ptr noundef nonnull %4, ptr noundef nonnull %37) #6
  br label %546

546:                                              ; preds = %543, %.loopexit717
  br i1 %.not656699, label %549, label %547

547:                                              ; preds = %546
  %548 = call i32 @dlascl_(ptr noundef nonnull @.str.12, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %44, ptr noundef nonnull %36, ptr noundef nonnull %4, ptr noundef nonnull @c__1, ptr noundef %11, ptr noundef nonnull %4, ptr noundef nonnull %37) #6
  br label %549

549:                                              ; preds = %546, %547, %264, %270, %268, %313, %282
  store double %148, ptr %24, align 8, !tbaa !9
  br label %550

550:                                              ; preds = %155, %154, %549, %.thread687
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %45) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %44) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %43) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %42) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %41) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %40) #6
  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 8, 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
  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 i64 @lsame_(ptr noundef, ptr noundef) local_unnamed_addr #2

declare i64 @ilaenv_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

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

declare double @dlamch_(ptr noundef) local_unnamed_addr #2

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

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

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

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

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

declare i32 @dgghrd_(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 @dhgeqz_(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 @dtgevc_(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 @dtgsna_(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 @dggbak_(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

; 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 = !{!7, !7, i64 0}
!12 = distinct !{!12, !13}
!13 = !{!"llvm.loop.mustprogress"}
!14 = distinct !{!14, !13}
!15 = distinct !{!15, !13}
!16 = distinct !{!16, !13, !17, !18}
!17 = !{!"llvm.loop.isvectorized", i32 1}
!18 = !{!"llvm.loop.unroll.runtime.disable"}
!19 = distinct !{!19, !13, !18, !17}
!20 = !{!21}
!21 = distinct !{!21, !22}
!22 = distinct !{!22, !"LVerDomain"}
!23 = !{!24}
!24 = distinct !{!24, !22}
!25 = distinct !{!25, !13, !17, !18}
!26 = distinct !{!26, !13, !17}
!27 = distinct !{!27, !13}
!28 = distinct !{!28, !13}
!29 = distinct !{!29, !13}
!30 = distinct !{!30, !13, !17, !18}
!31 = distinct !{!31, !13, !18, !17}
!32 = !{!33}
!33 = distinct !{!33, !34}
!34 = distinct !{!34, !"LVerDomain"}
!35 = !{!36}
!36 = distinct !{!36, !34}
!37 = distinct !{!37, !13, !17, !18}
!38 = distinct !{!38, !13, !17}
!39 = distinct !{!39, !13}


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