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

; 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
@c_n1 = 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 [2 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 [2 x i8], align 1

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

150:                                              ; preds = %23
  %151 = load ptr, ptr %25, align 8, !tbaa !5
  %152 = call i64 @lsame_(ptr noundef %151, ptr noundef @.str.4)
  %153 = icmp ne i64 %152, 0
  br i1 %153, label %164, label %154

154:                                              ; preds = %150
  %155 = load ptr, ptr %25, align 8, !tbaa !5
  %156 = call i64 @lsame_(ptr noundef %155, ptr noundef @.str.5)
  %157 = icmp ne i64 %156, 0
  br i1 %157, label %164, label %158

158:                                              ; preds = %154
  %159 = load ptr, ptr %25, align 8, !tbaa !5
  %160 = call i64 @lsame_(ptr noundef %159, ptr noundef @.str.3)
  %161 = icmp ne i64 %160, 0
  br i1 %161, label %164, label %162

162:                                              ; preds = %158
  %163 = load ptr, ptr %47, align 8, !tbaa !5
  store i64 -1, ptr %163, align 8, !tbaa !9
  br label %266

164:                                              ; preds = %158, %154, %150, %23
  %165 = load i64, ptr %81, align 8, !tbaa !9
  %166 = icmp ne i64 %165, 0
  br i1 %166, label %173, label %167

167:                                              ; preds = %164
  %168 = load ptr, ptr %26, align 8, !tbaa !5
  %169 = call i64 @lsame_(ptr noundef %168, ptr noundef @.str.1)
  %170 = icmp ne i64 %169, 0
  br i1 %170, label %173, label %171

171:                                              ; preds = %167
  %172 = load ptr, ptr %47, align 8, !tbaa !5
  store i64 -2, ptr %172, align 8, !tbaa !9
  br label %265

173:                                              ; preds = %167, %164
  %174 = load i64, ptr %87, align 8, !tbaa !9
  %175 = icmp ne i64 %174, 0
  br i1 %175, label %182, label %176

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

180:                                              ; preds = %176
  %181 = load ptr, ptr %47, align 8, !tbaa !5
  store i64 -3, ptr %181, align 8, !tbaa !9
  br label %264

182:                                              ; preds = %176, %173
  %183 = load i64, ptr %88, align 8, !tbaa !9
  %184 = icmp ne i64 %183, 0
  br i1 %184, label %194, label %185

185:                                              ; preds = %182
  %186 = load i64, ptr %84, align 8, !tbaa !9
  %187 = icmp ne i64 %186, 0
  br i1 %187, label %194, label %188

188:                                              ; preds = %185
  %189 = load i64, ptr %82, align 8, !tbaa !9
  %190 = icmp ne i64 %189, 0
  br i1 %190, label %194, label %191

191:                                              ; preds = %188
  %192 = load i64, ptr %89, align 8, !tbaa !9
  %193 = icmp ne i64 %192, 0
  br i1 %193, label %194, label %206

194:                                              ; preds = %191, %188, %185, %182
  %195 = load i64, ptr %84, align 8, !tbaa !9
  %196 = icmp ne i64 %195, 0
  br i1 %196, label %200, label %197

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

200:                                              ; preds = %197, %194
  %201 = load i64, ptr %81, align 8, !tbaa !9
  %202 = icmp ne i64 %201, 0
  br i1 %202, label %203, label %206

203:                                              ; preds = %200
  %204 = load i64, ptr %87, align 8, !tbaa !9
  %205 = icmp ne i64 %204, 0
  br i1 %205, label %208, label %206

206:                                              ; preds = %203, %200, %191
  %207 = load ptr, ptr %47, align 8, !tbaa !5
  store i64 -4, ptr %207, align 8, !tbaa !9
  br label %263

208:                                              ; preds = %203, %197
  %209 = load ptr, ptr %29, align 8, !tbaa !5
  %210 = load i64, ptr %209, align 8, !tbaa !9
  %211 = icmp slt i64 %210, 0
  br i1 %211, label %212, label %214

212:                                              ; preds = %208
  %213 = load ptr, ptr %47, align 8, !tbaa !5
  store i64 -5, ptr %213, align 8, !tbaa !9
  br label %262

214:                                              ; preds = %208
  %215 = load ptr, ptr %31, align 8, !tbaa !5
  %216 = load i64, ptr %215, align 8, !tbaa !9
  %217 = load ptr, ptr %29, align 8, !tbaa !5
  %218 = load i64, ptr %217, align 8, !tbaa !9
  %219 = icmp sge i64 1, %218
  br i1 %219, label %220, label %221

220:                                              ; preds = %214
  br label %224

221:                                              ; preds = %214
  %222 = load ptr, ptr %29, align 8, !tbaa !5
  %223 = load i64, ptr %222, align 8, !tbaa !9
  br label %224

224:                                              ; preds = %221, %220
  %225 = phi i64 [ 1, %220 ], [ %223, %221 ]
  %226 = icmp slt i64 %216, %225
  br i1 %226, label %227, label %229

227:                                              ; preds = %224
  %228 = load ptr, ptr %47, align 8, !tbaa !5
  store i64 -7, ptr %228, align 8, !tbaa !9
  br label %261

229:                                              ; preds = %224
  %230 = load ptr, ptr %35, align 8, !tbaa !5
  %231 = load i64, ptr %230, align 8, !tbaa !9
  %232 = icmp slt i64 %231, 1
  br i1 %232, label %242, label %233

233:                                              ; preds = %229
  %234 = load i64, ptr %81, align 8, !tbaa !9
  %235 = icmp ne i64 %234, 0
  br i1 %235, label %236, label %244

236:                                              ; preds = %233
  %237 = load ptr, ptr %35, align 8, !tbaa !5
  %238 = load i64, ptr %237, align 8, !tbaa !9
  %239 = load ptr, ptr %29, align 8, !tbaa !5
  %240 = load i64, ptr %239, align 8, !tbaa !9
  %241 = icmp slt i64 %238, %240
  br i1 %241, label %242, label %244

242:                                              ; preds = %236, %229
  %243 = load ptr, ptr %47, align 8, !tbaa !5
  store i64 -11, ptr %243, align 8, !tbaa !9
  br label %260

244:                                              ; preds = %236, %233
  %245 = load ptr, ptr %37, align 8, !tbaa !5
  %246 = load i64, ptr %245, align 8, !tbaa !9
  %247 = icmp slt i64 %246, 1
  br i1 %247, label %257, label %248

248:                                              ; preds = %244
  %249 = load i64, ptr %87, align 8, !tbaa !9
  %250 = icmp ne i64 %249, 0
  br i1 %250, label %251, label %259

251:                                              ; preds = %248
  %252 = load ptr, ptr %37, align 8, !tbaa !5
  %253 = load i64, ptr %252, align 8, !tbaa !9
  %254 = load ptr, ptr %29, align 8, !tbaa !5
  %255 = load i64, ptr %254, align 8, !tbaa !9
  %256 = icmp slt i64 %253, %255
  br i1 %256, label %257, label %259

257:                                              ; preds = %251, %244
  %258 = load ptr, ptr %47, align 8, !tbaa !5
  store i64 -13, ptr %258, align 8, !tbaa !9
  br label %259

259:                                              ; preds = %257, %251, %248
  br label %260

260:                                              ; preds = %259, %242
  br label %261

261:                                              ; preds = %260, %227
  br label %262

262:                                              ; preds = %261, %212
  br label %263

263:                                              ; preds = %262, %206
  br label %264

264:                                              ; preds = %263, %180
  br label %265

265:                                              ; preds = %264, %171
  br label %266

266:                                              ; preds = %265, %162
  %267 = load ptr, ptr %47, align 8, !tbaa !5
  %268 = load i64, ptr %267, align 8, !tbaa !9
  %269 = icmp eq i64 %268, 0
  br i1 %269, label %270, label %563

270:                                              ; preds = %266
  %271 = load ptr, ptr %29, align 8, !tbaa !5
  %272 = load i64, ptr %271, align 8, !tbaa !9
  %273 = icmp eq i64 %272, 0
  br i1 %273, label %274, label %275

274:                                              ; preds = %270
  store i64 1, ptr %79, align 8, !tbaa !9
  store i64 1, ptr %80, align 8, !tbaa !9
  br label %548

275:                                              ; preds = %270
  %276 = load ptr, ptr %29, align 8, !tbaa !5
  %277 = load i64, ptr %276, align 8, !tbaa !9
  %278 = load ptr, ptr %29, align 8, !tbaa !5
  %279 = load i64, ptr %278, align 8, !tbaa !9
  %280 = load ptr, ptr %29, align 8, !tbaa !5
  %281 = load ptr, ptr %29, align 8, !tbaa !5
  %282 = call i64 @ilaenv_(ptr noundef @c__1, ptr noundef @.str.6, ptr noundef @.str.7, ptr noundef %280, ptr noundef @c__1, ptr noundef %281, ptr noundef @c__0)
  %283 = mul nsw i64 %279, %282
  %284 = add nsw i64 %277, %283
  store i64 %284, ptr %80, align 8, !tbaa !9
  %285 = load i64, ptr %81, align 8, !tbaa !9
  %286 = icmp ne i64 %285, 0
  br i1 %286, label %287, label %306

287:                                              ; preds = %275
  %288 = load ptr, ptr %29, align 8, !tbaa !5
  %289 = load ptr, ptr %29, align 8, !tbaa !5
  %290 = load ptr, ptr %30, align 8, !tbaa !5
  %291 = load i64, ptr %49, align 8, !tbaa !9
  %292 = getelementptr inbounds double, ptr %290, i64 %291
  %293 = load ptr, ptr %31, align 8, !tbaa !5
  %294 = load ptr, ptr %32, align 8, !tbaa !5
  %295 = getelementptr inbounds double, ptr %294, i64 1
  %296 = load ptr, ptr %33, align 8, !tbaa !5
  %297 = getelementptr inbounds double, ptr %296, i64 1
  %298 = load ptr, ptr %34, align 8, !tbaa !5
  %299 = load i64, ptr %51, align 8, !tbaa !9
  %300 = getelementptr inbounds double, ptr %298, i64 %299
  %301 = load ptr, ptr %35, align 8, !tbaa !5
  %302 = load ptr, ptr %44, align 8, !tbaa !5
  %303 = getelementptr inbounds double, ptr %302, i64 1
  %304 = load ptr, ptr %47, align 8, !tbaa !5
  %305 = call i32 @dhseqr_(ptr noundef @.str.4, ptr noundef @.str, ptr noundef %288, ptr noundef @c__1, ptr noundef %289, ptr noundef %292, ptr noundef %293, ptr noundef %295, ptr noundef %297, ptr noundef %300, ptr noundef %301, ptr noundef %303, ptr noundef @c_n1, ptr noundef %304)
  br label %371

306:                                              ; preds = %275
  %307 = load i64, ptr %87, align 8, !tbaa !9
  %308 = icmp ne i64 %307, 0
  br i1 %308, label %309, label %328

309:                                              ; preds = %306
  %310 = load ptr, ptr %29, align 8, !tbaa !5
  %311 = load ptr, ptr %29, align 8, !tbaa !5
  %312 = load ptr, ptr %30, align 8, !tbaa !5
  %313 = load i64, ptr %49, align 8, !tbaa !9
  %314 = getelementptr inbounds double, ptr %312, i64 %313
  %315 = load ptr, ptr %31, align 8, !tbaa !5
  %316 = load ptr, ptr %32, align 8, !tbaa !5
  %317 = getelementptr inbounds double, ptr %316, i64 1
  %318 = load ptr, ptr %33, align 8, !tbaa !5
  %319 = getelementptr inbounds double, ptr %318, i64 1
  %320 = load ptr, ptr %36, align 8, !tbaa !5
  %321 = load i64, ptr %53, align 8, !tbaa !9
  %322 = getelementptr inbounds double, ptr %320, i64 %321
  %323 = load ptr, ptr %37, align 8, !tbaa !5
  %324 = load ptr, ptr %44, align 8, !tbaa !5
  %325 = getelementptr inbounds double, ptr %324, i64 1
  %326 = load ptr, ptr %47, align 8, !tbaa !5
  %327 = call i32 @dhseqr_(ptr noundef @.str.4, ptr noundef @.str, ptr noundef %310, ptr noundef @c__1, ptr noundef %311, ptr noundef %314, ptr noundef %315, ptr noundef %317, ptr noundef %319, ptr noundef %322, ptr noundef %323, ptr noundef %325, ptr noundef @c_n1, ptr noundef %326)
  br label %370

328:                                              ; preds = %306
  %329 = load i64, ptr %88, align 8, !tbaa !9
  %330 = icmp ne i64 %329, 0
  br i1 %330, label %331, label %350

331:                                              ; preds = %328
  %332 = load ptr, ptr %29, align 8, !tbaa !5
  %333 = load ptr, ptr %29, align 8, !tbaa !5
  %334 = load ptr, ptr %30, align 8, !tbaa !5
  %335 = load i64, ptr %49, align 8, !tbaa !9
  %336 = getelementptr inbounds double, ptr %334, i64 %335
  %337 = load ptr, ptr %31, align 8, !tbaa !5
  %338 = load ptr, ptr %32, align 8, !tbaa !5
  %339 = getelementptr inbounds double, ptr %338, i64 1
  %340 = load ptr, ptr %33, align 8, !tbaa !5
  %341 = getelementptr inbounds double, ptr %340, i64 1
  %342 = load ptr, ptr %36, align 8, !tbaa !5
  %343 = load i64, ptr %53, align 8, !tbaa !9
  %344 = getelementptr inbounds double, ptr %342, i64 %343
  %345 = load ptr, ptr %37, align 8, !tbaa !5
  %346 = load ptr, ptr %44, align 8, !tbaa !5
  %347 = getelementptr inbounds double, ptr %346, i64 1
  %348 = load ptr, ptr %47, align 8, !tbaa !5
  %349 = call i32 @dhseqr_(ptr noundef @.str.2, ptr noundef @.str.1, ptr noundef %332, ptr noundef @c__1, ptr noundef %333, ptr noundef %336, ptr noundef %337, ptr noundef %339, ptr noundef %341, ptr noundef %344, ptr noundef %345, ptr noundef %347, ptr noundef @c_n1, ptr noundef %348)
  br label %369

350:                                              ; preds = %328
  %351 = load ptr, ptr %29, align 8, !tbaa !5
  %352 = load ptr, ptr %29, align 8, !tbaa !5
  %353 = load ptr, ptr %30, align 8, !tbaa !5
  %354 = load i64, ptr %49, align 8, !tbaa !9
  %355 = getelementptr inbounds double, ptr %353, i64 %354
  %356 = load ptr, ptr %31, align 8, !tbaa !5
  %357 = load ptr, ptr %32, align 8, !tbaa !5
  %358 = getelementptr inbounds double, ptr %357, i64 1
  %359 = load ptr, ptr %33, align 8, !tbaa !5
  %360 = getelementptr inbounds double, ptr %359, i64 1
  %361 = load ptr, ptr %36, align 8, !tbaa !5
  %362 = load i64, ptr %53, align 8, !tbaa !9
  %363 = getelementptr inbounds double, ptr %361, i64 %362
  %364 = load ptr, ptr %37, align 8, !tbaa !5
  %365 = load ptr, ptr %44, align 8, !tbaa !5
  %366 = getelementptr inbounds double, ptr %365, i64 1
  %367 = load ptr, ptr %47, align 8, !tbaa !5
  %368 = call i32 @dhseqr_(ptr noundef @.str.4, ptr noundef @.str.1, ptr noundef %351, ptr noundef @c__1, ptr noundef %352, ptr noundef %355, ptr noundef %356, ptr noundef %358, ptr noundef %360, ptr noundef %363, ptr noundef %364, ptr noundef %366, ptr noundef @c_n1, ptr noundef %367)
  br label %369

369:                                              ; preds = %350, %331
  br label %370

370:                                              ; preds = %369, %309
  br label %371

371:                                              ; preds = %370, %287
  %372 = load ptr, ptr %44, align 8, !tbaa !5
  %373 = getelementptr inbounds double, ptr %372, i64 1
  %374 = load double, ptr %373, align 8, !tbaa !11
  %375 = fptosi double %374 to i64
  store i64 %375, ptr %83, align 8, !tbaa !9
  %376 = load i64, ptr %81, align 8, !tbaa !9
  %377 = icmp ne i64 %376, 0
  br i1 %377, label %440, label %378

378:                                              ; preds = %371
  %379 = load i64, ptr %87, align 8, !tbaa !9
  %380 = icmp ne i64 %379, 0
  br i1 %380, label %440, label %381

381:                                              ; preds = %378
  %382 = load ptr, ptr %29, align 8, !tbaa !5
  %383 = load i64, ptr %382, align 8, !tbaa !9
  %384 = shl i64 %383, 1
  store i64 %384, ptr %79, align 8, !tbaa !9
  %385 = load i64, ptr %88, align 8, !tbaa !9
  %386 = icmp ne i64 %385, 0
  br i1 %386, label %407, label %387

387:                                              ; preds = %381
  %388 = load i64, ptr %79, align 8, !tbaa !9
  store i64 %388, ptr %54, align 8, !tbaa !9
  %389 = load ptr, ptr %29, align 8, !tbaa !5
  %390 = load i64, ptr %389, align 8, !tbaa !9
  %391 = load ptr, ptr %29, align 8, !tbaa !5
  %392 = load i64, ptr %391, align 8, !tbaa !9
  %393 = mul nsw i64 %390, %392
  %394 = load ptr, ptr %29, align 8, !tbaa !5
  %395 = load i64, ptr %394, align 8, !tbaa !9
  %396 = mul nsw i64 %395, 6
  %397 = add nsw i64 %393, %396
  store i64 %397, ptr %55, align 8, !tbaa !9
  %398 = load i64, ptr %54, align 8, !tbaa !9
  %399 = load i64, ptr %55, align 8, !tbaa !9
  %400 = icmp sge i64 %398, %399
  br i1 %400, label %401, label %403

401:                                              ; preds = %387
  %402 = load i64, ptr %54, align 8, !tbaa !9
  br label %405

403:                                              ; preds = %387
  %404 = load i64, ptr %55, align 8, !tbaa !9
  br label %405

405:                                              ; preds = %403, %401
  %406 = phi i64 [ %402, %401 ], [ %404, %403 ]
  store i64 %406, ptr %79, align 8, !tbaa !9
  br label %407

407:                                              ; preds = %405, %381
  %408 = load i64, ptr %80, align 8, !tbaa !9
  %409 = load i64, ptr %83, align 8, !tbaa !9
  %410 = icmp sge i64 %408, %409
  br i1 %410, label %411, label %413

411:                                              ; preds = %407
  %412 = load i64, ptr %80, align 8, !tbaa !9
  br label %415

413:                                              ; preds = %407
  %414 = load i64, ptr %83, align 8, !tbaa !9
  br label %415

415:                                              ; preds = %413, %411
  %416 = phi i64 [ %412, %411 ], [ %414, %413 ]
  store i64 %416, ptr %80, align 8, !tbaa !9
  %417 = load i64, ptr %88, align 8, !tbaa !9
  %418 = icmp ne i64 %417, 0
  br i1 %418, label %439, label %419

419:                                              ; preds = %415
  %420 = load i64, ptr %80, align 8, !tbaa !9
  store i64 %420, ptr %54, align 8, !tbaa !9
  %421 = load ptr, ptr %29, align 8, !tbaa !5
  %422 = load i64, ptr %421, align 8, !tbaa !9
  %423 = load ptr, ptr %29, align 8, !tbaa !5
  %424 = load i64, ptr %423, align 8, !tbaa !9
  %425 = mul nsw i64 %422, %424
  %426 = load ptr, ptr %29, align 8, !tbaa !5
  %427 = load i64, ptr %426, align 8, !tbaa !9
  %428 = mul nsw i64 %427, 6
  %429 = add nsw i64 %425, %428
  store i64 %429, ptr %55, align 8, !tbaa !9
  %430 = load i64, ptr %54, align 8, !tbaa !9
  %431 = load i64, ptr %55, align 8, !tbaa !9
  %432 = icmp sge i64 %430, %431
  br i1 %432, label %433, label %435

433:                                              ; preds = %419
  %434 = load i64, ptr %54, align 8, !tbaa !9
  br label %437

435:                                              ; preds = %419
  %436 = load i64, ptr %55, align 8, !tbaa !9
  br label %437

437:                                              ; preds = %435, %433
  %438 = phi i64 [ %434, %433 ], [ %436, %435 ]
  store i64 %438, ptr %80, align 8, !tbaa !9
  br label %439

439:                                              ; preds = %437, %415
  br label %538

440:                                              ; preds = %378, %371
  %441 = load ptr, ptr %29, align 8, !tbaa !5
  %442 = load i64, ptr %441, align 8, !tbaa !9
  %443 = mul nsw i64 %442, 3
  store i64 %443, ptr %79, align 8, !tbaa !9
  %444 = load i64, ptr %88, align 8, !tbaa !9
  %445 = icmp ne i64 %444, 0
  br i1 %445, label %469, label %446

446:                                              ; preds = %440
  %447 = load i64, ptr %84, align 8, !tbaa !9
  %448 = icmp ne i64 %447, 0
  br i1 %448, label %469, label %449

449:                                              ; preds = %446
  %450 = load i64, ptr %79, align 8, !tbaa !9
  store i64 %450, ptr %54, align 8, !tbaa !9
  %451 = load ptr, ptr %29, align 8, !tbaa !5
  %452 = load i64, ptr %451, align 8, !tbaa !9
  %453 = load ptr, ptr %29, align 8, !tbaa !5
  %454 = load i64, ptr %453, align 8, !tbaa !9
  %455 = mul nsw i64 %452, %454
  %456 = load ptr, ptr %29, align 8, !tbaa !5
  %457 = load i64, ptr %456, align 8, !tbaa !9
  %458 = mul nsw i64 %457, 6
  %459 = add nsw i64 %455, %458
  store i64 %459, ptr %55, align 8, !tbaa !9
  %460 = load i64, ptr %54, align 8, !tbaa !9
  %461 = load i64, ptr %55, align 8, !tbaa !9
  %462 = icmp sge i64 %460, %461
  br i1 %462, label %463, label %465

463:                                              ; preds = %449
  %464 = load i64, ptr %54, align 8, !tbaa !9
  br label %467

465:                                              ; preds = %449
  %466 = load i64, ptr %55, align 8, !tbaa !9
  br label %467

467:                                              ; preds = %465, %463
  %468 = phi i64 [ %464, %463 ], [ %466, %465 ]
  store i64 %468, ptr %79, align 8, !tbaa !9
  br label %469

469:                                              ; preds = %467, %446, %440
  %470 = load i64, ptr %80, align 8, !tbaa !9
  %471 = load i64, ptr %83, align 8, !tbaa !9
  %472 = icmp sge i64 %470, %471
  br i1 %472, label %473, label %475

473:                                              ; preds = %469
  %474 = load i64, ptr %80, align 8, !tbaa !9
  br label %477

475:                                              ; preds = %469
  %476 = load i64, ptr %83, align 8, !tbaa !9
  br label %477

477:                                              ; preds = %475, %473
  %478 = phi i64 [ %474, %473 ], [ %476, %475 ]
  store i64 %478, ptr %80, align 8, !tbaa !9
  %479 = load i64, ptr %80, align 8, !tbaa !9
  store i64 %479, ptr %54, align 8, !tbaa !9
  %480 = load ptr, ptr %29, align 8, !tbaa !5
  %481 = load i64, ptr %480, align 8, !tbaa !9
  %482 = load ptr, ptr %29, align 8, !tbaa !5
  %483 = load i64, ptr %482, align 8, !tbaa !9
  %484 = sub nsw i64 %483, 1
  %485 = load ptr, ptr %29, align 8, !tbaa !5
  %486 = load ptr, ptr %29, align 8, !tbaa !5
  %487 = call i64 @ilaenv_(ptr noundef @c__1, ptr noundef @.str.8, ptr noundef @.str.7, ptr noundef %485, ptr noundef @c__1, ptr noundef %486, ptr noundef @c_n1)
  %488 = mul nsw i64 %484, %487
  %489 = add nsw i64 %481, %488
  store i64 %489, ptr %55, align 8, !tbaa !9
  %490 = load i64, ptr %54, align 8, !tbaa !9
  %491 = load i64, ptr %55, align 8, !tbaa !9
  %492 = icmp sge i64 %490, %491
  br i1 %492, label %493, label %495

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

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

497:                                              ; preds = %495, %493
  %498 = phi i64 [ %494, %493 ], [ %496, %495 ]
  store i64 %498, ptr %80, align 8, !tbaa !9
  %499 = load i64, ptr %88, align 8, !tbaa !9
  %500 = icmp ne i64 %499, 0
  br i1 %500, label %524, label %501

501:                                              ; preds = %497
  %502 = load i64, ptr %84, align 8, !tbaa !9
  %503 = icmp ne i64 %502, 0
  br i1 %503, label %524, label %504

504:                                              ; preds = %501
  %505 = load i64, ptr %80, align 8, !tbaa !9
  store i64 %505, ptr %54, align 8, !tbaa !9
  %506 = load ptr, ptr %29, align 8, !tbaa !5
  %507 = load i64, ptr %506, align 8, !tbaa !9
  %508 = load ptr, ptr %29, align 8, !tbaa !5
  %509 = load i64, ptr %508, align 8, !tbaa !9
  %510 = mul nsw i64 %507, %509
  %511 = load ptr, ptr %29, align 8, !tbaa !5
  %512 = load i64, ptr %511, align 8, !tbaa !9
  %513 = mul nsw i64 %512, 6
  %514 = add nsw i64 %510, %513
  store i64 %514, ptr %55, align 8, !tbaa !9
  %515 = load i64, ptr %54, align 8, !tbaa !9
  %516 = load i64, ptr %55, align 8, !tbaa !9
  %517 = icmp sge i64 %515, %516
  br i1 %517, label %518, label %520

518:                                              ; preds = %504
  %519 = load i64, ptr %54, align 8, !tbaa !9
  br label %522

520:                                              ; preds = %504
  %521 = load i64, ptr %55, align 8, !tbaa !9
  br label %522

522:                                              ; preds = %520, %518
  %523 = phi i64 [ %519, %518 ], [ %521, %520 ]
  store i64 %523, ptr %80, align 8, !tbaa !9
  br label %524

524:                                              ; preds = %522, %501, %497
  %525 = load i64, ptr %80, align 8, !tbaa !9
  store i64 %525, ptr %54, align 8, !tbaa !9
  %526 = load ptr, ptr %29, align 8, !tbaa !5
  %527 = load i64, ptr %526, align 8, !tbaa !9
  %528 = mul nsw i64 %527, 3
  store i64 %528, ptr %55, align 8, !tbaa !9
  %529 = load i64, ptr %54, align 8, !tbaa !9
  %530 = load i64, ptr %55, align 8, !tbaa !9
  %531 = icmp sge i64 %529, %530
  br i1 %531, label %532, label %534

532:                                              ; preds = %524
  %533 = load i64, ptr %54, align 8, !tbaa !9
  br label %536

534:                                              ; preds = %524
  %535 = load i64, ptr %55, align 8, !tbaa !9
  br label %536

536:                                              ; preds = %534, %532
  %537 = phi i64 [ %533, %532 ], [ %535, %534 ]
  store i64 %537, ptr %80, align 8, !tbaa !9
  br label %538

538:                                              ; preds = %536, %439
  %539 = load i64, ptr %80, align 8, !tbaa !9
  %540 = load i64, ptr %79, align 8, !tbaa !9
  %541 = icmp sge i64 %539, %540
  br i1 %541, label %542, label %544

542:                                              ; preds = %538
  %543 = load i64, ptr %80, align 8, !tbaa !9
  br label %546

544:                                              ; preds = %538
  %545 = load i64, ptr %79, align 8, !tbaa !9
  br label %546

546:                                              ; preds = %544, %542
  %547 = phi i64 [ %543, %542 ], [ %545, %544 ]
  store i64 %547, ptr %80, align 8, !tbaa !9
  br label %548

548:                                              ; preds = %546, %274
  %549 = load i64, ptr %80, align 8, !tbaa !9
  %550 = sitofp i64 %549 to double
  %551 = load ptr, ptr %44, align 8, !tbaa !5
  %552 = getelementptr inbounds double, ptr %551, i64 1
  store double %550, ptr %552, align 8, !tbaa !11
  %553 = load ptr, ptr %45, align 8, !tbaa !5
  %554 = load i64, ptr %553, align 8, !tbaa !9
  %555 = load i64, ptr %79, align 8, !tbaa !9
  %556 = icmp slt i64 %554, %555
  br i1 %556, label %557, label %562

557:                                              ; preds = %548
  %558 = load i64, ptr %86, align 8, !tbaa !9
  %559 = icmp ne i64 %558, 0
  br i1 %559, label %562, label %560

560:                                              ; preds = %557
  %561 = load ptr, ptr %47, align 8, !tbaa !5
  store i64 -21, ptr %561, align 8, !tbaa !9
  br label %562

562:                                              ; preds = %560, %557, %548
  br label %563

563:                                              ; preds = %562, %266
  %564 = load ptr, ptr %47, align 8, !tbaa !5
  %565 = load i64, ptr %564, align 8, !tbaa !9
  %566 = icmp ne i64 %565, 0
  br i1 %566, label %567, label %572

567:                                              ; preds = %563
  %568 = load ptr, ptr %47, align 8, !tbaa !5
  %569 = load i64, ptr %568, align 8, !tbaa !9
  %570 = sub nsw i64 0, %569
  store i64 %570, ptr %54, align 8, !tbaa !9
  %571 = call i32 @xerbla_(ptr noundef @.str.9, ptr noundef %54)
  store i32 0, ptr %24, align 4
  store i32 1, ptr %90, align 4
  br label %1361

572:                                              ; preds = %563
  %573 = load i64, ptr %86, align 8, !tbaa !9
  %574 = icmp ne i64 %573, 0
  br i1 %574, label %575, label %576

575:                                              ; preds = %572
  store i32 0, ptr %24, align 4
  store i32 1, ptr %90, align 4
  br label %1361

576:                                              ; preds = %572
  br label %577

577:                                              ; preds = %576
  %578 = load ptr, ptr %29, align 8, !tbaa !5
  %579 = load i64, ptr %578, align 8, !tbaa !9
  %580 = icmp eq i64 %579, 0
  br i1 %580, label %581, label %582

581:                                              ; preds = %577
  store i32 0, ptr %24, align 4
  store i32 1, ptr %90, align 4
  br label %1361

582:                                              ; preds = %577
  %583 = call double @dlamch_(ptr noundef @.str.5)
  store double %583, ptr %67, align 8, !tbaa !11
  %584 = call double @dlamch_(ptr noundef @.str.4)
  store double %584, ptr %85, align 8, !tbaa !11
  %585 = load double, ptr %85, align 8, !tbaa !11
  %586 = fdiv double 1.000000e+00, %585
  store double %586, ptr %78, align 8, !tbaa !11
  %587 = call i32 @dlabad_(ptr noundef %85, ptr noundef %78)
  %588 = load double, ptr %85, align 8, !tbaa !11
  %589 = call double @sqrt(double noundef %588) #5
  %590 = load double, ptr %67, align 8, !tbaa !11
  %591 = fdiv double %589, %590
  store double %591, ptr %85, align 8, !tbaa !11
  %592 = load double, ptr %85, align 8, !tbaa !11
  %593 = fdiv double 1.000000e+00, %592
  store double %593, ptr %78, align 8, !tbaa !11
  store i64 0, ptr %74, align 8, !tbaa !9
  %594 = load ptr, ptr %29, align 8, !tbaa !5
  %595 = load ptr, ptr %29, align 8, !tbaa !5
  %596 = load ptr, ptr %30, align 8, !tbaa !5
  %597 = load i64, ptr %49, align 8, !tbaa !9
  %598 = getelementptr inbounds double, ptr %596, i64 %597
  %599 = load ptr, ptr %31, align 8, !tbaa !5
  %600 = getelementptr inbounds [1 x double], ptr %66, i64 0, i64 0
  %601 = call double @dlange_(ptr noundef @.str.10, ptr noundef %594, ptr noundef %595, ptr noundef %598, ptr noundef %599, ptr noundef %600)
  store double %601, ptr %69, align 8, !tbaa !11
  store i64 0, ptr %75, align 8, !tbaa !9
  %602 = load double, ptr %69, align 8, !tbaa !11
  %603 = fcmp ogt double %602, 0.000000e+00
  br i1 %603, label %604, label %610

604:                                              ; preds = %582
  %605 = load double, ptr %69, align 8, !tbaa !11
  %606 = load double, ptr %85, align 8, !tbaa !11
  %607 = fcmp olt double %605, %606
  br i1 %607, label %608, label %610

608:                                              ; preds = %604
  store i64 1, ptr %75, align 8, !tbaa !9
  %609 = load double, ptr %85, align 8, !tbaa !11
  store double %609, ptr %76, align 8, !tbaa !11
  br label %617

610:                                              ; preds = %604, %582
  %611 = load double, ptr %69, align 8, !tbaa !11
  %612 = load double, ptr %78, align 8, !tbaa !11
  %613 = fcmp ogt double %611, %612
  br i1 %613, label %614, label %616

614:                                              ; preds = %610
  store i64 1, ptr %75, align 8, !tbaa !9
  %615 = load double, ptr %78, align 8, !tbaa !11
  store double %615, ptr %76, align 8, !tbaa !11
  br label %616

616:                                              ; preds = %614, %610
  br label %617

617:                                              ; preds = %616, %608
  %618 = load i64, ptr %75, align 8, !tbaa !9
  %619 = icmp ne i64 %618, 0
  br i1 %619, label %620, label %628

620:                                              ; preds = %617
  %621 = load ptr, ptr %29, align 8, !tbaa !5
  %622 = load ptr, ptr %29, align 8, !tbaa !5
  %623 = load ptr, ptr %30, align 8, !tbaa !5
  %624 = load i64, ptr %49, align 8, !tbaa !9
  %625 = getelementptr inbounds double, ptr %623, i64 %624
  %626 = load ptr, ptr %31, align 8, !tbaa !5
  %627 = call i32 @dlascl_(ptr noundef @.str.11, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %69, ptr noundef %76, ptr noundef %621, ptr noundef %622, ptr noundef %625, ptr noundef %626, ptr noundef %70)
  br label %628

628:                                              ; preds = %620, %617
  %629 = load ptr, ptr %25, align 8, !tbaa !5
  %630 = load ptr, ptr %29, align 8, !tbaa !5
  %631 = load ptr, ptr %30, align 8, !tbaa !5
  %632 = load i64, ptr %49, align 8, !tbaa !9
  %633 = getelementptr inbounds double, ptr %631, i64 %632
  %634 = load ptr, ptr %31, align 8, !tbaa !5
  %635 = load ptr, ptr %38, align 8, !tbaa !5
  %636 = load ptr, ptr %39, align 8, !tbaa !5
  %637 = load ptr, ptr %40, align 8, !tbaa !5
  %638 = getelementptr inbounds double, ptr %637, i64 1
  %639 = call i32 @dgebal_(ptr noundef %629, ptr noundef %630, ptr noundef %633, ptr noundef %634, ptr noundef %635, ptr noundef %636, ptr noundef %638, ptr noundef %70)
  %640 = load ptr, ptr %29, align 8, !tbaa !5
  %641 = load ptr, ptr %29, align 8, !tbaa !5
  %642 = load ptr, ptr %30, align 8, !tbaa !5
  %643 = load i64, ptr %49, align 8, !tbaa !9
  %644 = getelementptr inbounds double, ptr %642, i64 %643
  %645 = load ptr, ptr %31, align 8, !tbaa !5
  %646 = getelementptr inbounds [1 x double], ptr %66, i64 0, i64 0
  %647 = call double @dlange_(ptr noundef @.str.12, ptr noundef %640, ptr noundef %641, ptr noundef %644, ptr noundef %645, ptr noundef %646)
  %648 = load ptr, ptr %41, align 8, !tbaa !5
  store double %647, ptr %648, align 8, !tbaa !11
  %649 = load i64, ptr %75, align 8, !tbaa !9
  %650 = icmp ne i64 %649, 0
  br i1 %650, label %651, label %660

651:                                              ; preds = %628
  %652 = load ptr, ptr %41, align 8, !tbaa !5
  %653 = load double, ptr %652, align 8, !tbaa !11
  %654 = getelementptr inbounds [1 x double], ptr %66, i64 0, i64 0
  store double %653, ptr %654, align 8, !tbaa !11
  %655 = getelementptr inbounds [1 x double], ptr %66, i64 0, i64 0
  %656 = call i32 @dlascl_(ptr noundef @.str.11, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %76, ptr noundef %69, ptr noundef @c__1, ptr noundef @c__1, ptr noundef %655, ptr noundef @c__1, ptr noundef %70)
  %657 = getelementptr inbounds [1 x double], ptr %66, i64 0, i64 0
  %658 = load double, ptr %657, align 8, !tbaa !11
  %659 = load ptr, ptr %41, align 8, !tbaa !5
  store double %658, ptr %659, align 8, !tbaa !11
  br label %660

660:                                              ; preds = %651, %628
  store i64 1, ptr %71, align 8, !tbaa !9
  %661 = load i64, ptr %71, align 8, !tbaa !9
  %662 = load ptr, ptr %29, align 8, !tbaa !5
  %663 = load i64, ptr %662, align 8, !tbaa !9
  %664 = add nsw i64 %661, %663
  store i64 %664, ptr %72, align 8, !tbaa !9
  %665 = load ptr, ptr %45, align 8, !tbaa !5
  %666 = load i64, ptr %665, align 8, !tbaa !9
  %667 = load i64, ptr %72, align 8, !tbaa !9
  %668 = sub nsw i64 %666, %667
  %669 = add nsw i64 %668, 1
  store i64 %669, ptr %54, align 8, !tbaa !9
  %670 = load ptr, ptr %29, align 8, !tbaa !5
  %671 = load ptr, ptr %38, align 8, !tbaa !5
  %672 = load ptr, ptr %39, align 8, !tbaa !5
  %673 = load ptr, ptr %30, align 8, !tbaa !5
  %674 = load i64, ptr %49, align 8, !tbaa !9
  %675 = getelementptr inbounds double, ptr %673, i64 %674
  %676 = load ptr, ptr %31, align 8, !tbaa !5
  %677 = load ptr, ptr %44, align 8, !tbaa !5
  %678 = load i64, ptr %71, align 8, !tbaa !9
  %679 = getelementptr inbounds double, ptr %677, i64 %678
  %680 = load ptr, ptr %44, align 8, !tbaa !5
  %681 = load i64, ptr %72, align 8, !tbaa !9
  %682 = getelementptr inbounds double, ptr %680, i64 %681
  %683 = call i32 @dgehrd_(ptr noundef %670, ptr noundef %671, ptr noundef %672, ptr noundef %675, ptr noundef %676, ptr noundef %679, ptr noundef %682, ptr noundef %54, ptr noundef %70)
  %684 = load i64, ptr %81, align 8, !tbaa !9
  %685 = icmp ne i64 %684, 0
  br i1 %685, label %686, label %760

686:                                              ; preds = %660
  %687 = getelementptr inbounds [1 x i8], ptr %68, i64 0, i64 0
  store i8 76, ptr %687, align 1, !tbaa !13
  %688 = load ptr, ptr %29, align 8, !tbaa !5
  %689 = load ptr, ptr %29, align 8, !tbaa !5
  %690 = load ptr, ptr %30, align 8, !tbaa !5
  %691 = load i64, ptr %49, align 8, !tbaa !9
  %692 = getelementptr inbounds double, ptr %690, i64 %691
  %693 = load ptr, ptr %31, align 8, !tbaa !5
  %694 = load ptr, ptr %34, align 8, !tbaa !5
  %695 = load i64, ptr %51, align 8, !tbaa !9
  %696 = getelementptr inbounds double, ptr %694, i64 %695
  %697 = load ptr, ptr %35, align 8, !tbaa !5
  %698 = call i32 @dlacpy_(ptr noundef @.str.13, ptr noundef %688, ptr noundef %689, ptr noundef %692, ptr noundef %693, ptr noundef %696, ptr noundef %697)
  %699 = load ptr, ptr %45, align 8, !tbaa !5
  %700 = load i64, ptr %699, align 8, !tbaa !9
  %701 = load i64, ptr %72, align 8, !tbaa !9
  %702 = sub nsw i64 %700, %701
  %703 = add nsw i64 %702, 1
  store i64 %703, ptr %54, align 8, !tbaa !9
  %704 = load ptr, ptr %29, align 8, !tbaa !5
  %705 = load ptr, ptr %38, align 8, !tbaa !5
  %706 = load ptr, ptr %39, align 8, !tbaa !5
  %707 = load ptr, ptr %34, align 8, !tbaa !5
  %708 = load i64, ptr %51, align 8, !tbaa !9
  %709 = getelementptr inbounds double, ptr %707, i64 %708
  %710 = load ptr, ptr %35, align 8, !tbaa !5
  %711 = load ptr, ptr %44, align 8, !tbaa !5
  %712 = load i64, ptr %71, align 8, !tbaa !9
  %713 = getelementptr inbounds double, ptr %711, i64 %712
  %714 = load ptr, ptr %44, align 8, !tbaa !5
  %715 = load i64, ptr %72, align 8, !tbaa !9
  %716 = getelementptr inbounds double, ptr %714, i64 %715
  %717 = call i32 @dorghr_(ptr noundef %704, ptr noundef %705, ptr noundef %706, ptr noundef %709, ptr noundef %710, ptr noundef %713, ptr noundef %716, ptr noundef %54, ptr noundef %70)
  %718 = load i64, ptr %71, align 8, !tbaa !9
  store i64 %718, ptr %72, align 8, !tbaa !9
  %719 = load ptr, ptr %45, align 8, !tbaa !5
  %720 = load i64, ptr %719, align 8, !tbaa !9
  %721 = load i64, ptr %72, align 8, !tbaa !9
  %722 = sub nsw i64 %720, %721
  %723 = add nsw i64 %722, 1
  store i64 %723, ptr %54, align 8, !tbaa !9
  %724 = load ptr, ptr %29, align 8, !tbaa !5
  %725 = load ptr, ptr %38, align 8, !tbaa !5
  %726 = load ptr, ptr %39, align 8, !tbaa !5
  %727 = load ptr, ptr %30, align 8, !tbaa !5
  %728 = load i64, ptr %49, align 8, !tbaa !9
  %729 = getelementptr inbounds double, ptr %727, i64 %728
  %730 = load ptr, ptr %31, align 8, !tbaa !5
  %731 = load ptr, ptr %32, align 8, !tbaa !5
  %732 = getelementptr inbounds double, ptr %731, i64 1
  %733 = load ptr, ptr %33, align 8, !tbaa !5
  %734 = getelementptr inbounds double, ptr %733, i64 1
  %735 = load ptr, ptr %34, align 8, !tbaa !5
  %736 = load i64, ptr %51, align 8, !tbaa !9
  %737 = getelementptr inbounds double, ptr %735, i64 %736
  %738 = load ptr, ptr %35, align 8, !tbaa !5
  %739 = load ptr, ptr %44, align 8, !tbaa !5
  %740 = load i64, ptr %72, align 8, !tbaa !9
  %741 = getelementptr inbounds double, ptr %739, i64 %740
  %742 = load ptr, ptr %47, align 8, !tbaa !5
  %743 = call i32 @dhseqr_(ptr noundef @.str.4, ptr noundef @.str, ptr noundef %724, ptr noundef %725, ptr noundef %726, ptr noundef %729, ptr noundef %730, ptr noundef %732, ptr noundef %734, ptr noundef %737, ptr noundef %738, ptr noundef %741, ptr noundef %54, ptr noundef %742)
  %744 = load i64, ptr %87, align 8, !tbaa !9
  %745 = icmp ne i64 %744, 0
  br i1 %745, label %746, label %759

746:                                              ; preds = %686
  %747 = getelementptr inbounds [1 x i8], ptr %68, i64 0, i64 0
  store i8 66, ptr %747, align 1, !tbaa !13
  %748 = load ptr, ptr %29, align 8, !tbaa !5
  %749 = load ptr, ptr %29, align 8, !tbaa !5
  %750 = load ptr, ptr %34, align 8, !tbaa !5
  %751 = load i64, ptr %51, align 8, !tbaa !9
  %752 = getelementptr inbounds double, ptr %750, i64 %751
  %753 = load ptr, ptr %35, align 8, !tbaa !5
  %754 = load ptr, ptr %36, align 8, !tbaa !5
  %755 = load i64, ptr %53, align 8, !tbaa !9
  %756 = getelementptr inbounds double, ptr %754, i64 %755
  %757 = load ptr, ptr %37, align 8, !tbaa !5
  %758 = call i32 @dlacpy_(ptr noundef @.str.14, ptr noundef %748, ptr noundef %749, ptr noundef %752, ptr noundef %753, ptr noundef %756, ptr noundef %757)
  br label %759

759:                                              ; preds = %746, %686
  br label %857

760:                                              ; preds = %660
  %761 = load i64, ptr %87, align 8, !tbaa !9
  %762 = icmp ne i64 %761, 0
  br i1 %762, label %763, label %821

763:                                              ; preds = %760
  %764 = getelementptr inbounds [1 x i8], ptr %68, i64 0, i64 0
  store i8 82, ptr %764, align 1, !tbaa !13
  %765 = load ptr, ptr %29, align 8, !tbaa !5
  %766 = load ptr, ptr %29, align 8, !tbaa !5
  %767 = load ptr, ptr %30, align 8, !tbaa !5
  %768 = load i64, ptr %49, align 8, !tbaa !9
  %769 = getelementptr inbounds double, ptr %767, i64 %768
  %770 = load ptr, ptr %31, align 8, !tbaa !5
  %771 = load ptr, ptr %36, align 8, !tbaa !5
  %772 = load i64, ptr %53, align 8, !tbaa !9
  %773 = getelementptr inbounds double, ptr %771, i64 %772
  %774 = load ptr, ptr %37, align 8, !tbaa !5
  %775 = call i32 @dlacpy_(ptr noundef @.str.13, ptr noundef %765, ptr noundef %766, ptr noundef %769, ptr noundef %770, ptr noundef %773, ptr noundef %774)
  %776 = load ptr, ptr %45, align 8, !tbaa !5
  %777 = load i64, ptr %776, align 8, !tbaa !9
  %778 = load i64, ptr %72, align 8, !tbaa !9
  %779 = sub nsw i64 %777, %778
  %780 = add nsw i64 %779, 1
  store i64 %780, ptr %54, align 8, !tbaa !9
  %781 = load ptr, ptr %29, align 8, !tbaa !5
  %782 = load ptr, ptr %38, align 8, !tbaa !5
  %783 = load ptr, ptr %39, align 8, !tbaa !5
  %784 = load ptr, ptr %36, align 8, !tbaa !5
  %785 = load i64, ptr %53, align 8, !tbaa !9
  %786 = getelementptr inbounds double, ptr %784, i64 %785
  %787 = load ptr, ptr %37, align 8, !tbaa !5
  %788 = load ptr, ptr %44, align 8, !tbaa !5
  %789 = load i64, ptr %71, align 8, !tbaa !9
  %790 = getelementptr inbounds double, ptr %788, i64 %789
  %791 = load ptr, ptr %44, align 8, !tbaa !5
  %792 = load i64, ptr %72, align 8, !tbaa !9
  %793 = getelementptr inbounds double, ptr %791, i64 %792
  %794 = call i32 @dorghr_(ptr noundef %781, ptr noundef %782, ptr noundef %783, ptr noundef %786, ptr noundef %787, ptr noundef %790, ptr noundef %793, ptr noundef %54, ptr noundef %70)
  %795 = load i64, ptr %71, align 8, !tbaa !9
  store i64 %795, ptr %72, align 8, !tbaa !9
  %796 = load ptr, ptr %45, align 8, !tbaa !5
  %797 = load i64, ptr %796, align 8, !tbaa !9
  %798 = load i64, ptr %72, align 8, !tbaa !9
  %799 = sub nsw i64 %797, %798
  %800 = add nsw i64 %799, 1
  store i64 %800, ptr %54, align 8, !tbaa !9
  %801 = load ptr, ptr %29, align 8, !tbaa !5
  %802 = load ptr, ptr %38, align 8, !tbaa !5
  %803 = load ptr, ptr %39, align 8, !tbaa !5
  %804 = load ptr, ptr %30, align 8, !tbaa !5
  %805 = load i64, ptr %49, align 8, !tbaa !9
  %806 = getelementptr inbounds double, ptr %804, i64 %805
  %807 = load ptr, ptr %31, align 8, !tbaa !5
  %808 = load ptr, ptr %32, align 8, !tbaa !5
  %809 = getelementptr inbounds double, ptr %808, i64 1
  %810 = load ptr, ptr %33, align 8, !tbaa !5
  %811 = getelementptr inbounds double, ptr %810, i64 1
  %812 = load ptr, ptr %36, align 8, !tbaa !5
  %813 = load i64, ptr %53, align 8, !tbaa !9
  %814 = getelementptr inbounds double, ptr %812, i64 %813
  %815 = load ptr, ptr %37, align 8, !tbaa !5
  %816 = load ptr, ptr %44, align 8, !tbaa !5
  %817 = load i64, ptr %72, align 8, !tbaa !9
  %818 = getelementptr inbounds double, ptr %816, i64 %817
  %819 = load ptr, ptr %47, align 8, !tbaa !5
  %820 = call i32 @dhseqr_(ptr noundef @.str.4, ptr noundef @.str, ptr noundef %801, ptr noundef %802, ptr noundef %803, ptr noundef %806, ptr noundef %807, ptr noundef %809, ptr noundef %811, ptr noundef %814, ptr noundef %815, ptr noundef %818, ptr noundef %54, ptr noundef %819)
  br label %856

821:                                              ; preds = %760
  %822 = load i64, ptr %88, align 8, !tbaa !9
  %823 = icmp ne i64 %822, 0
  br i1 %823, label %824, label %826

824:                                              ; preds = %821
  %825 = getelementptr inbounds [1 x i8], ptr %64, i64 0, i64 0
  store i8 69, ptr %825, align 1, !tbaa !13
  br label %828

826:                                              ; preds = %821
  %827 = getelementptr inbounds [1 x i8], ptr %64, i64 0, i64 0
  store i8 83, ptr %827, align 1, !tbaa !13
  br label %828

828:                                              ; preds = %826, %824
  %829 = load i64, ptr %71, align 8, !tbaa !9
  store i64 %829, ptr %72, align 8, !tbaa !9
  %830 = load ptr, ptr %45, align 8, !tbaa !5
  %831 = load i64, ptr %830, align 8, !tbaa !9
  %832 = load i64, ptr %72, align 8, !tbaa !9
  %833 = sub nsw i64 %831, %832
  %834 = add nsw i64 %833, 1
  store i64 %834, ptr %54, align 8, !tbaa !9
  %835 = getelementptr inbounds [1 x i8], ptr %64, i64 0, i64 0
  %836 = load ptr, ptr %29, align 8, !tbaa !5
  %837 = load ptr, ptr %38, align 8, !tbaa !5
  %838 = load ptr, ptr %39, align 8, !tbaa !5
  %839 = load ptr, ptr %30, align 8, !tbaa !5
  %840 = load i64, ptr %49, align 8, !tbaa !9
  %841 = getelementptr inbounds double, ptr %839, i64 %840
  %842 = load ptr, ptr %31, align 8, !tbaa !5
  %843 = load ptr, ptr %32, align 8, !tbaa !5
  %844 = getelementptr inbounds double, ptr %843, i64 1
  %845 = load ptr, ptr %33, align 8, !tbaa !5
  %846 = getelementptr inbounds double, ptr %845, i64 1
  %847 = load ptr, ptr %36, align 8, !tbaa !5
  %848 = load i64, ptr %53, align 8, !tbaa !9
  %849 = getelementptr inbounds double, ptr %847, i64 %848
  %850 = load ptr, ptr %37, align 8, !tbaa !5
  %851 = load ptr, ptr %44, align 8, !tbaa !5
  %852 = load i64, ptr %72, align 8, !tbaa !9
  %853 = getelementptr inbounds double, ptr %851, i64 %852
  %854 = load ptr, ptr %47, align 8, !tbaa !5
  %855 = call i32 @dhseqr_(ptr noundef %835, ptr noundef @.str.1, ptr noundef %836, ptr noundef %837, ptr noundef %838, ptr noundef %841, ptr noundef %842, ptr noundef %844, ptr noundef %846, ptr noundef %849, ptr noundef %850, ptr noundef %853, ptr noundef %54, ptr noundef %854)
  br label %856

856:                                              ; preds = %828, %763
  br label %857

857:                                              ; preds = %856, %759
  %858 = load ptr, ptr %47, align 8, !tbaa !5
  %859 = load i64, ptr %858, align 8, !tbaa !9
  %860 = icmp sgt i64 %859, 0
  br i1 %860, label %861, label %862

861:                                              ; preds = %857
  br label %1271

862:                                              ; preds = %857
  %863 = load i64, ptr %81, align 8, !tbaa !9
  %864 = icmp ne i64 %863, 0
  br i1 %864, label %868, label %865

865:                                              ; preds = %862
  %866 = load i64, ptr %87, align 8, !tbaa !9
  %867 = icmp ne i64 %866, 0
  br i1 %867, label %868, label %889

868:                                              ; preds = %865, %862
  %869 = getelementptr inbounds [1 x i8], ptr %68, i64 0, i64 0
  %870 = getelementptr inbounds [1 x i64], ptr %77, i64 0, i64 0
  %871 = load ptr, ptr %29, align 8, !tbaa !5
  %872 = load ptr, ptr %30, align 8, !tbaa !5
  %873 = load i64, ptr %49, align 8, !tbaa !9
  %874 = getelementptr inbounds double, ptr %872, i64 %873
  %875 = load ptr, ptr %31, align 8, !tbaa !5
  %876 = load ptr, ptr %34, align 8, !tbaa !5
  %877 = load i64, ptr %51, align 8, !tbaa !9
  %878 = getelementptr inbounds double, ptr %876, i64 %877
  %879 = load ptr, ptr %35, align 8, !tbaa !5
  %880 = load ptr, ptr %36, align 8, !tbaa !5
  %881 = load i64, ptr %53, align 8, !tbaa !9
  %882 = getelementptr inbounds double, ptr %880, i64 %881
  %883 = load ptr, ptr %37, align 8, !tbaa !5
  %884 = load ptr, ptr %29, align 8, !tbaa !5
  %885 = load ptr, ptr %44, align 8, !tbaa !5
  %886 = load i64, ptr %72, align 8, !tbaa !9
  %887 = getelementptr inbounds double, ptr %885, i64 %886
  %888 = call i32 @dtrevc_(ptr noundef %869, ptr noundef @.str.3, ptr noundef %870, ptr noundef %871, ptr noundef %874, ptr noundef %875, ptr noundef %878, ptr noundef %879, ptr noundef %882, ptr noundef %883, ptr noundef %884, ptr noundef %73, ptr noundef %887, ptr noundef %70)
  br label %889

889:                                              ; preds = %868, %865
  %890 = load i64, ptr %88, align 8, !tbaa !9
  %891 = icmp ne i64 %890, 0
  br i1 %891, label %920, label %892

892:                                              ; preds = %889
  %893 = load ptr, ptr %28, align 8, !tbaa !5
  %894 = getelementptr inbounds [1 x i64], ptr %77, i64 0, i64 0
  %895 = load ptr, ptr %29, align 8, !tbaa !5
  %896 = load ptr, ptr %30, align 8, !tbaa !5
  %897 = load i64, ptr %49, align 8, !tbaa !9
  %898 = getelementptr inbounds double, ptr %896, i64 %897
  %899 = load ptr, ptr %31, align 8, !tbaa !5
  %900 = load ptr, ptr %34, align 8, !tbaa !5
  %901 = load i64, ptr %51, align 8, !tbaa !9
  %902 = getelementptr inbounds double, ptr %900, i64 %901
  %903 = load ptr, ptr %35, align 8, !tbaa !5
  %904 = load ptr, ptr %36, align 8, !tbaa !5
  %905 = load i64, ptr %53, align 8, !tbaa !9
  %906 = getelementptr inbounds double, ptr %904, i64 %905
  %907 = load ptr, ptr %37, align 8, !tbaa !5
  %908 = load ptr, ptr %42, align 8, !tbaa !5
  %909 = getelementptr inbounds double, ptr %908, i64 1
  %910 = load ptr, ptr %43, align 8, !tbaa !5
  %911 = getelementptr inbounds double, ptr %910, i64 1
  %912 = load ptr, ptr %29, align 8, !tbaa !5
  %913 = load ptr, ptr %44, align 8, !tbaa !5
  %914 = load i64, ptr %72, align 8, !tbaa !9
  %915 = getelementptr inbounds double, ptr %913, i64 %914
  %916 = load ptr, ptr %29, align 8, !tbaa !5
  %917 = load ptr, ptr %46, align 8, !tbaa !5
  %918 = getelementptr inbounds i64, ptr %917, i64 1
  %919 = call i32 @dtrsna_(ptr noundef %893, ptr noundef @.str.15, ptr noundef %894, ptr noundef %895, ptr noundef %898, ptr noundef %899, ptr noundef %902, ptr noundef %903, ptr noundef %906, ptr noundef %907, ptr noundef %909, ptr noundef %911, ptr noundef %912, ptr noundef %73, ptr noundef %915, ptr noundef %916, ptr noundef %918, ptr noundef %74)
  br label %920

920:                                              ; preds = %892, %889
  %921 = load i64, ptr %81, align 8, !tbaa !9
  %922 = icmp ne i64 %921, 0
  br i1 %922, label %923, label %1095

923:                                              ; preds = %920
  %924 = load ptr, ptr %25, align 8, !tbaa !5
  %925 = load ptr, ptr %29, align 8, !tbaa !5
  %926 = load ptr, ptr %38, align 8, !tbaa !5
  %927 = load ptr, ptr %39, align 8, !tbaa !5
  %928 = load ptr, ptr %40, align 8, !tbaa !5
  %929 = getelementptr inbounds double, ptr %928, i64 1
  %930 = load ptr, ptr %29, align 8, !tbaa !5
  %931 = load ptr, ptr %34, align 8, !tbaa !5
  %932 = load i64, ptr %51, align 8, !tbaa !9
  %933 = getelementptr inbounds double, ptr %931, i64 %932
  %934 = load ptr, ptr %35, align 8, !tbaa !5
  %935 = call i32 @dgebak_(ptr noundef %924, ptr noundef @.str.13, ptr noundef %925, ptr noundef %926, ptr noundef %927, ptr noundef %929, ptr noundef %930, ptr noundef %933, ptr noundef %934, ptr noundef %70)
  %936 = load ptr, ptr %29, align 8, !tbaa !5
  %937 = load i64, ptr %936, align 8, !tbaa !9
  store i64 %937, ptr %54, align 8, !tbaa !9
  store i64 1, ptr %59, align 8, !tbaa !9
  br label %938

938:                                              ; preds = %1091, %923
  %939 = load i64, ptr %59, align 8, !tbaa !9
  %940 = load i64, ptr %54, align 8, !tbaa !9
  %941 = icmp sle i64 %939, %940
  br i1 %941, label %942, label %1094

942:                                              ; preds = %938
  %943 = load ptr, ptr %33, align 8, !tbaa !5
  %944 = load i64, ptr %59, align 8, !tbaa !9
  %945 = getelementptr inbounds double, ptr %943, i64 %944
  %946 = load double, ptr %945, align 8, !tbaa !11
  %947 = fcmp oeq double %946, 0.000000e+00
  br i1 %947, label %948, label %966

948:                                              ; preds = %942
  %949 = load ptr, ptr %29, align 8, !tbaa !5
  %950 = load ptr, ptr %34, align 8, !tbaa !5
  %951 = load i64, ptr %59, align 8, !tbaa !9
  %952 = load i64, ptr %50, align 8, !tbaa !9
  %953 = mul nsw i64 %951, %952
  %954 = add nsw i64 %953, 1
  %955 = getelementptr inbounds double, ptr %950, i64 %954
  %956 = call double @f2c_dnrm2(ptr noundef %949, ptr noundef %955, ptr noundef @c__1)
  %957 = fdiv double 1.000000e+00, %956
  store double %957, ptr %65, align 8, !tbaa !11
  %958 = load ptr, ptr %29, align 8, !tbaa !5
  %959 = load ptr, ptr %34, align 8, !tbaa !5
  %960 = load i64, ptr %59, align 8, !tbaa !9
  %961 = load i64, ptr %50, align 8, !tbaa !9
  %962 = mul nsw i64 %960, %961
  %963 = add nsw i64 %962, 1
  %964 = getelementptr inbounds double, ptr %959, i64 %963
  %965 = call i32 @f2c_dscal(ptr noundef %958, ptr noundef %65, ptr noundef %964, ptr noundef @c__1)
  br label %1090

966:                                              ; preds = %942
  %967 = load ptr, ptr %33, align 8, !tbaa !5
  %968 = load i64, ptr %59, align 8, !tbaa !9
  %969 = getelementptr inbounds double, ptr %967, i64 %968
  %970 = load double, ptr %969, align 8, !tbaa !11
  %971 = fcmp ogt double %970, 0.000000e+00
  br i1 %971, label %972, label %1089

972:                                              ; preds = %966
  %973 = load ptr, ptr %29, align 8, !tbaa !5
  %974 = load ptr, ptr %34, align 8, !tbaa !5
  %975 = load i64, ptr %59, align 8, !tbaa !9
  %976 = load i64, ptr %50, align 8, !tbaa !9
  %977 = mul nsw i64 %975, %976
  %978 = add nsw i64 %977, 1
  %979 = getelementptr inbounds double, ptr %974, i64 %978
  %980 = call double @f2c_dnrm2(ptr noundef %973, ptr noundef %979, ptr noundef @c__1)
  store double %980, ptr %57, align 8, !tbaa !11
  %981 = load ptr, ptr %29, align 8, !tbaa !5
  %982 = load ptr, ptr %34, align 8, !tbaa !5
  %983 = load i64, ptr %59, align 8, !tbaa !9
  %984 = add nsw i64 %983, 1
  %985 = load i64, ptr %50, align 8, !tbaa !9
  %986 = mul nsw i64 %984, %985
  %987 = add nsw i64 %986, 1
  %988 = getelementptr inbounds double, ptr %982, i64 %987
  %989 = call double @f2c_dnrm2(ptr noundef %981, ptr noundef %988, ptr noundef @c__1)
  store double %989, ptr %58, align 8, !tbaa !11
  %990 = call double @dlapy2_(ptr noundef %57, ptr noundef %58)
  %991 = fdiv double 1.000000e+00, %990
  store double %991, ptr %65, align 8, !tbaa !11
  %992 = load ptr, ptr %29, align 8, !tbaa !5
  %993 = load ptr, ptr %34, align 8, !tbaa !5
  %994 = load i64, ptr %59, align 8, !tbaa !9
  %995 = load i64, ptr %50, align 8, !tbaa !9
  %996 = mul nsw i64 %994, %995
  %997 = add nsw i64 %996, 1
  %998 = getelementptr inbounds double, ptr %993, i64 %997
  %999 = call i32 @f2c_dscal(ptr noundef %992, ptr noundef %65, ptr noundef %998, ptr noundef @c__1)
  %1000 = load ptr, ptr %29, align 8, !tbaa !5
  %1001 = load ptr, ptr %34, align 8, !tbaa !5
  %1002 = load i64, ptr %59, align 8, !tbaa !9
  %1003 = add nsw i64 %1002, 1
  %1004 = load i64, ptr %50, align 8, !tbaa !9
  %1005 = mul nsw i64 %1003, %1004
  %1006 = add nsw i64 %1005, 1
  %1007 = getelementptr inbounds double, ptr %1001, i64 %1006
  %1008 = call i32 @f2c_dscal(ptr noundef %1000, ptr noundef %65, ptr noundef %1007, ptr noundef @c__1)
  %1009 = load ptr, ptr %29, align 8, !tbaa !5
  %1010 = load i64, ptr %1009, align 8, !tbaa !9
  store i64 %1010, ptr %55, align 8, !tbaa !9
  store i64 1, ptr %60, align 8, !tbaa !9
  br label %1011

1011:                                             ; preds = %1042, %972
  %1012 = load i64, ptr %60, align 8, !tbaa !9
  %1013 = load i64, ptr %55, align 8, !tbaa !9
  %1014 = icmp sle i64 %1012, %1013
  br i1 %1014, label %1015, label %1045

1015:                                             ; preds = %1011
  %1016 = load ptr, ptr %34, align 8, !tbaa !5
  %1017 = load i64, ptr %60, align 8, !tbaa !9
  %1018 = load i64, ptr %59, align 8, !tbaa !9
  %1019 = load i64, ptr %50, align 8, !tbaa !9
  %1020 = mul nsw i64 %1018, %1019
  %1021 = add nsw i64 %1017, %1020
  %1022 = getelementptr inbounds double, ptr %1016, i64 %1021
  %1023 = load double, ptr %1022, align 8, !tbaa !11
  store double %1023, ptr %57, align 8, !tbaa !11
  %1024 = load ptr, ptr %34, align 8, !tbaa !5
  %1025 = load i64, ptr %60, align 8, !tbaa !9
  %1026 = load i64, ptr %59, align 8, !tbaa !9
  %1027 = add nsw i64 %1026, 1
  %1028 = load i64, ptr %50, align 8, !tbaa !9
  %1029 = mul nsw i64 %1027, %1028
  %1030 = add nsw i64 %1025, %1029
  %1031 = getelementptr inbounds double, ptr %1024, i64 %1030
  %1032 = load double, ptr %1031, align 8, !tbaa !11
  store double %1032, ptr %58, align 8, !tbaa !11
  %1033 = load double, ptr %57, align 8, !tbaa !11
  %1034 = load double, ptr %57, align 8, !tbaa !11
  %1035 = load double, ptr %58, align 8, !tbaa !11
  %1036 = load double, ptr %58, align 8, !tbaa !11
  %1037 = fmul double %1035, %1036
  %1038 = call double @llvm.fmuladd.f64(double %1033, double %1034, double %1037)
  %1039 = load ptr, ptr %44, align 8, !tbaa !5
  %1040 = load i64, ptr %60, align 8, !tbaa !9
  %1041 = getelementptr inbounds double, ptr %1039, i64 %1040
  store double %1038, ptr %1041, align 8, !tbaa !11
  br label %1042

1042:                                             ; preds = %1015
  %1043 = load i64, ptr %60, align 8, !tbaa !9
  %1044 = add nsw i64 %1043, 1
  store i64 %1044, ptr %60, align 8, !tbaa !9
  br label %1011, !llvm.loop !14

1045:                                             ; preds = %1011
  %1046 = load ptr, ptr %29, align 8, !tbaa !5
  %1047 = load ptr, ptr %44, align 8, !tbaa !5
  %1048 = getelementptr inbounds double, ptr %1047, i64 1
  %1049 = call i64 @f2c_idamax(ptr noundef %1046, ptr noundef %1048, ptr noundef @c__1)
  store i64 %1049, ptr %60, align 8, !tbaa !9
  %1050 = load ptr, ptr %34, align 8, !tbaa !5
  %1051 = load i64, ptr %60, align 8, !tbaa !9
  %1052 = load i64, ptr %59, align 8, !tbaa !9
  %1053 = load i64, ptr %50, align 8, !tbaa !9
  %1054 = mul nsw i64 %1052, %1053
  %1055 = add nsw i64 %1051, %1054
  %1056 = getelementptr inbounds double, ptr %1050, i64 %1055
  %1057 = load ptr, ptr %34, align 8, !tbaa !5
  %1058 = load i64, ptr %60, align 8, !tbaa !9
  %1059 = load i64, ptr %59, align 8, !tbaa !9
  %1060 = add nsw i64 %1059, 1
  %1061 = load i64, ptr %50, align 8, !tbaa !9
  %1062 = mul nsw i64 %1060, %1061
  %1063 = add nsw i64 %1058, %1062
  %1064 = getelementptr inbounds double, ptr %1057, i64 %1063
  %1065 = call i32 @dlartg_(ptr noundef %1056, ptr noundef %1064, ptr noundef %62, ptr noundef %63, ptr noundef %61)
  %1066 = load ptr, ptr %29, align 8, !tbaa !5
  %1067 = load ptr, ptr %34, align 8, !tbaa !5
  %1068 = load i64, ptr %59, align 8, !tbaa !9
  %1069 = load i64, ptr %50, align 8, !tbaa !9
  %1070 = mul nsw i64 %1068, %1069
  %1071 = add nsw i64 %1070, 1
  %1072 = getelementptr inbounds double, ptr %1067, i64 %1071
  %1073 = load ptr, ptr %34, align 8, !tbaa !5
  %1074 = load i64, ptr %59, align 8, !tbaa !9
  %1075 = add nsw i64 %1074, 1
  %1076 = load i64, ptr %50, align 8, !tbaa !9
  %1077 = mul nsw i64 %1075, %1076
  %1078 = add nsw i64 %1077, 1
  %1079 = getelementptr inbounds double, ptr %1073, i64 %1078
  %1080 = call i32 @f2c_drot(ptr noundef %1066, ptr noundef %1072, ptr noundef @c__1, ptr noundef %1079, ptr noundef @c__1, ptr noundef %62, ptr noundef %63)
  %1081 = load ptr, ptr %34, align 8, !tbaa !5
  %1082 = load i64, ptr %60, align 8, !tbaa !9
  %1083 = load i64, ptr %59, align 8, !tbaa !9
  %1084 = add nsw i64 %1083, 1
  %1085 = load i64, ptr %50, align 8, !tbaa !9
  %1086 = mul nsw i64 %1084, %1085
  %1087 = add nsw i64 %1082, %1086
  %1088 = getelementptr inbounds double, ptr %1081, i64 %1087
  store double 0.000000e+00, ptr %1088, align 8, !tbaa !11
  br label %1089

1089:                                             ; preds = %1045, %966
  br label %1090

1090:                                             ; preds = %1089, %948
  br label %1091

1091:                                             ; preds = %1090
  %1092 = load i64, ptr %59, align 8, !tbaa !9
  %1093 = add nsw i64 %1092, 1
  store i64 %1093, ptr %59, align 8, !tbaa !9
  br label %938, !llvm.loop !16

1094:                                             ; preds = %938
  br label %1095

1095:                                             ; preds = %1094, %920
  %1096 = load i64, ptr %87, align 8, !tbaa !9
  %1097 = icmp ne i64 %1096, 0
  br i1 %1097, label %1098, label %1270

1098:                                             ; preds = %1095
  %1099 = load ptr, ptr %25, align 8, !tbaa !5
  %1100 = load ptr, ptr %29, align 8, !tbaa !5
  %1101 = load ptr, ptr %38, align 8, !tbaa !5
  %1102 = load ptr, ptr %39, align 8, !tbaa !5
  %1103 = load ptr, ptr %40, align 8, !tbaa !5
  %1104 = getelementptr inbounds double, ptr %1103, i64 1
  %1105 = load ptr, ptr %29, align 8, !tbaa !5
  %1106 = load ptr, ptr %36, align 8, !tbaa !5
  %1107 = load i64, ptr %53, align 8, !tbaa !9
  %1108 = getelementptr inbounds double, ptr %1106, i64 %1107
  %1109 = load ptr, ptr %37, align 8, !tbaa !5
  %1110 = call i32 @dgebak_(ptr noundef %1099, ptr noundef @.str.16, ptr noundef %1100, ptr noundef %1101, ptr noundef %1102, ptr noundef %1104, ptr noundef %1105, ptr noundef %1108, ptr noundef %1109, ptr noundef %70)
  %1111 = load ptr, ptr %29, align 8, !tbaa !5
  %1112 = load i64, ptr %1111, align 8, !tbaa !9
  store i64 %1112, ptr %54, align 8, !tbaa !9
  store i64 1, ptr %59, align 8, !tbaa !9
  br label %1113

1113:                                             ; preds = %1266, %1098
  %1114 = load i64, ptr %59, align 8, !tbaa !9
  %1115 = load i64, ptr %54, align 8, !tbaa !9
  %1116 = icmp sle i64 %1114, %1115
  br i1 %1116, label %1117, label %1269

1117:                                             ; preds = %1113
  %1118 = load ptr, ptr %33, align 8, !tbaa !5
  %1119 = load i64, ptr %59, align 8, !tbaa !9
  %1120 = getelementptr inbounds double, ptr %1118, i64 %1119
  %1121 = load double, ptr %1120, align 8, !tbaa !11
  %1122 = fcmp oeq double %1121, 0.000000e+00
  br i1 %1122, label %1123, label %1141

1123:                                             ; preds = %1117
  %1124 = load ptr, ptr %29, align 8, !tbaa !5
  %1125 = load ptr, ptr %36, align 8, !tbaa !5
  %1126 = load i64, ptr %59, align 8, !tbaa !9
  %1127 = load i64, ptr %52, align 8, !tbaa !9
  %1128 = mul nsw i64 %1126, %1127
  %1129 = add nsw i64 %1128, 1
  %1130 = getelementptr inbounds double, ptr %1125, i64 %1129
  %1131 = call double @f2c_dnrm2(ptr noundef %1124, ptr noundef %1130, ptr noundef @c__1)
  %1132 = fdiv double 1.000000e+00, %1131
  store double %1132, ptr %65, align 8, !tbaa !11
  %1133 = load ptr, ptr %29, align 8, !tbaa !5
  %1134 = load ptr, ptr %36, align 8, !tbaa !5
  %1135 = load i64, ptr %59, align 8, !tbaa !9
  %1136 = load i64, ptr %52, align 8, !tbaa !9
  %1137 = mul nsw i64 %1135, %1136
  %1138 = add nsw i64 %1137, 1
  %1139 = getelementptr inbounds double, ptr %1134, i64 %1138
  %1140 = call i32 @f2c_dscal(ptr noundef %1133, ptr noundef %65, ptr noundef %1139, ptr noundef @c__1)
  br label %1265

1141:                                             ; preds = %1117
  %1142 = load ptr, ptr %33, align 8, !tbaa !5
  %1143 = load i64, ptr %59, align 8, !tbaa !9
  %1144 = getelementptr inbounds double, ptr %1142, i64 %1143
  %1145 = load double, ptr %1144, align 8, !tbaa !11
  %1146 = fcmp ogt double %1145, 0.000000e+00
  br i1 %1146, label %1147, label %1264

1147:                                             ; preds = %1141
  %1148 = load ptr, ptr %29, align 8, !tbaa !5
  %1149 = load ptr, ptr %36, align 8, !tbaa !5
  %1150 = load i64, ptr %59, align 8, !tbaa !9
  %1151 = load i64, ptr %52, align 8, !tbaa !9
  %1152 = mul nsw i64 %1150, %1151
  %1153 = add nsw i64 %1152, 1
  %1154 = getelementptr inbounds double, ptr %1149, i64 %1153
  %1155 = call double @f2c_dnrm2(ptr noundef %1148, ptr noundef %1154, ptr noundef @c__1)
  store double %1155, ptr %57, align 8, !tbaa !11
  %1156 = load ptr, ptr %29, align 8, !tbaa !5
  %1157 = load ptr, ptr %36, align 8, !tbaa !5
  %1158 = load i64, ptr %59, align 8, !tbaa !9
  %1159 = add nsw i64 %1158, 1
  %1160 = load i64, ptr %52, align 8, !tbaa !9
  %1161 = mul nsw i64 %1159, %1160
  %1162 = add nsw i64 %1161, 1
  %1163 = getelementptr inbounds double, ptr %1157, i64 %1162
  %1164 = call double @f2c_dnrm2(ptr noundef %1156, ptr noundef %1163, ptr noundef @c__1)
  store double %1164, ptr %58, align 8, !tbaa !11
  %1165 = call double @dlapy2_(ptr noundef %57, ptr noundef %58)
  %1166 = fdiv double 1.000000e+00, %1165
  store double %1166, ptr %65, align 8, !tbaa !11
  %1167 = load ptr, ptr %29, align 8, !tbaa !5
  %1168 = load ptr, ptr %36, align 8, !tbaa !5
  %1169 = load i64, ptr %59, align 8, !tbaa !9
  %1170 = load i64, ptr %52, align 8, !tbaa !9
  %1171 = mul nsw i64 %1169, %1170
  %1172 = add nsw i64 %1171, 1
  %1173 = getelementptr inbounds double, ptr %1168, i64 %1172
  %1174 = call i32 @f2c_dscal(ptr noundef %1167, ptr noundef %65, ptr noundef %1173, ptr noundef @c__1)
  %1175 = load ptr, ptr %29, align 8, !tbaa !5
  %1176 = load ptr, ptr %36, align 8, !tbaa !5
  %1177 = load i64, ptr %59, align 8, !tbaa !9
  %1178 = add nsw i64 %1177, 1
  %1179 = load i64, ptr %52, align 8, !tbaa !9
  %1180 = mul nsw i64 %1178, %1179
  %1181 = add nsw i64 %1180, 1
  %1182 = getelementptr inbounds double, ptr %1176, i64 %1181
  %1183 = call i32 @f2c_dscal(ptr noundef %1175, ptr noundef %65, ptr noundef %1182, ptr noundef @c__1)
  %1184 = load ptr, ptr %29, align 8, !tbaa !5
  %1185 = load i64, ptr %1184, align 8, !tbaa !9
  store i64 %1185, ptr %55, align 8, !tbaa !9
  store i64 1, ptr %60, align 8, !tbaa !9
  br label %1186

1186:                                             ; preds = %1217, %1147
  %1187 = load i64, ptr %60, align 8, !tbaa !9
  %1188 = load i64, ptr %55, align 8, !tbaa !9
  %1189 = icmp sle i64 %1187, %1188
  br i1 %1189, label %1190, label %1220

1190:                                             ; preds = %1186
  %1191 = load ptr, ptr %36, align 8, !tbaa !5
  %1192 = load i64, ptr %60, align 8, !tbaa !9
  %1193 = load i64, ptr %59, align 8, !tbaa !9
  %1194 = load i64, ptr %52, align 8, !tbaa !9
  %1195 = mul nsw i64 %1193, %1194
  %1196 = add nsw i64 %1192, %1195
  %1197 = getelementptr inbounds double, ptr %1191, i64 %1196
  %1198 = load double, ptr %1197, align 8, !tbaa !11
  store double %1198, ptr %57, align 8, !tbaa !11
  %1199 = load ptr, ptr %36, align 8, !tbaa !5
  %1200 = load i64, ptr %60, align 8, !tbaa !9
  %1201 = load i64, ptr %59, align 8, !tbaa !9
  %1202 = add nsw i64 %1201, 1
  %1203 = load i64, ptr %52, align 8, !tbaa !9
  %1204 = mul nsw i64 %1202, %1203
  %1205 = add nsw i64 %1200, %1204
  %1206 = getelementptr inbounds double, ptr %1199, i64 %1205
  %1207 = load double, ptr %1206, align 8, !tbaa !11
  store double %1207, ptr %58, align 8, !tbaa !11
  %1208 = load double, ptr %57, align 8, !tbaa !11
  %1209 = load double, ptr %57, align 8, !tbaa !11
  %1210 = load double, ptr %58, align 8, !tbaa !11
  %1211 = load double, ptr %58, align 8, !tbaa !11
  %1212 = fmul double %1210, %1211
  %1213 = call double @llvm.fmuladd.f64(double %1208, double %1209, double %1212)
  %1214 = load ptr, ptr %44, align 8, !tbaa !5
  %1215 = load i64, ptr %60, align 8, !tbaa !9
  %1216 = getelementptr inbounds double, ptr %1214, i64 %1215
  store double %1213, ptr %1216, align 8, !tbaa !11
  br label %1217

1217:                                             ; preds = %1190
  %1218 = load i64, ptr %60, align 8, !tbaa !9
  %1219 = add nsw i64 %1218, 1
  store i64 %1219, ptr %60, align 8, !tbaa !9
  br label %1186, !llvm.loop !17

1220:                                             ; preds = %1186
  %1221 = load ptr, ptr %29, align 8, !tbaa !5
  %1222 = load ptr, ptr %44, align 8, !tbaa !5
  %1223 = getelementptr inbounds double, ptr %1222, i64 1
  %1224 = call i64 @f2c_idamax(ptr noundef %1221, ptr noundef %1223, ptr noundef @c__1)
  store i64 %1224, ptr %60, align 8, !tbaa !9
  %1225 = load ptr, ptr %36, align 8, !tbaa !5
  %1226 = load i64, ptr %60, align 8, !tbaa !9
  %1227 = load i64, ptr %59, align 8, !tbaa !9
  %1228 = load i64, ptr %52, align 8, !tbaa !9
  %1229 = mul nsw i64 %1227, %1228
  %1230 = add nsw i64 %1226, %1229
  %1231 = getelementptr inbounds double, ptr %1225, i64 %1230
  %1232 = load ptr, ptr %36, align 8, !tbaa !5
  %1233 = load i64, ptr %60, align 8, !tbaa !9
  %1234 = load i64, ptr %59, align 8, !tbaa !9
  %1235 = add nsw i64 %1234, 1
  %1236 = load i64, ptr %52, align 8, !tbaa !9
  %1237 = mul nsw i64 %1235, %1236
  %1238 = add nsw i64 %1233, %1237
  %1239 = getelementptr inbounds double, ptr %1232, i64 %1238
  %1240 = call i32 @dlartg_(ptr noundef %1231, ptr noundef %1239, ptr noundef %62, ptr noundef %63, ptr noundef %61)
  %1241 = load ptr, ptr %29, align 8, !tbaa !5
  %1242 = load ptr, ptr %36, align 8, !tbaa !5
  %1243 = load i64, ptr %59, align 8, !tbaa !9
  %1244 = load i64, ptr %52, align 8, !tbaa !9
  %1245 = mul nsw i64 %1243, %1244
  %1246 = add nsw i64 %1245, 1
  %1247 = getelementptr inbounds double, ptr %1242, i64 %1246
  %1248 = load ptr, ptr %36, align 8, !tbaa !5
  %1249 = load i64, ptr %59, align 8, !tbaa !9
  %1250 = add nsw i64 %1249, 1
  %1251 = load i64, ptr %52, align 8, !tbaa !9
  %1252 = mul nsw i64 %1250, %1251
  %1253 = add nsw i64 %1252, 1
  %1254 = getelementptr inbounds double, ptr %1248, i64 %1253
  %1255 = call i32 @f2c_drot(ptr noundef %1241, ptr noundef %1247, ptr noundef @c__1, ptr noundef %1254, ptr noundef @c__1, ptr noundef %62, ptr noundef %63)
  %1256 = load ptr, ptr %36, align 8, !tbaa !5
  %1257 = load i64, ptr %60, align 8, !tbaa !9
  %1258 = load i64, ptr %59, align 8, !tbaa !9
  %1259 = add nsw i64 %1258, 1
  %1260 = load i64, ptr %52, align 8, !tbaa !9
  %1261 = mul nsw i64 %1259, %1260
  %1262 = add nsw i64 %1257, %1261
  %1263 = getelementptr inbounds double, ptr %1256, i64 %1262
  store double 0.000000e+00, ptr %1263, align 8, !tbaa !11
  br label %1264

1264:                                             ; preds = %1220, %1141
  br label %1265

1265:                                             ; preds = %1264, %1123
  br label %1266

1266:                                             ; preds = %1265
  %1267 = load i64, ptr %59, align 8, !tbaa !9
  %1268 = add nsw i64 %1267, 1
  store i64 %1268, ptr %59, align 8, !tbaa !9
  br label %1113, !llvm.loop !18

1269:                                             ; preds = %1113
  br label %1270

1270:                                             ; preds = %1269, %1095
  br label %1271

1271:                                             ; preds = %1270, %861
  %1272 = load i64, ptr %75, align 8, !tbaa !9
  %1273 = icmp ne i64 %1272, 0
  br i1 %1273, label %1274, label %1356

1274:                                             ; preds = %1271
  %1275 = load ptr, ptr %29, align 8, !tbaa !5
  %1276 = load i64, ptr %1275, align 8, !tbaa !9
  %1277 = load ptr, ptr %47, align 8, !tbaa !5
  %1278 = load i64, ptr %1277, align 8, !tbaa !9
  %1279 = sub nsw i64 %1276, %1278
  store i64 %1279, ptr %54, align 8, !tbaa !9
  %1280 = load ptr, ptr %29, align 8, !tbaa !5
  %1281 = load i64, ptr %1280, align 8, !tbaa !9
  %1282 = load ptr, ptr %47, align 8, !tbaa !5
  %1283 = load i64, ptr %1282, align 8, !tbaa !9
  %1284 = sub nsw i64 %1281, %1283
  store i64 %1284, ptr %56, align 8, !tbaa !9
  %1285 = load i64, ptr %56, align 8, !tbaa !9
  %1286 = icmp sge i64 %1285, 1
  br i1 %1286, label %1287, label %1289

1287:                                             ; preds = %1274
  %1288 = load i64, ptr %56, align 8, !tbaa !9
  br label %1290

1289:                                             ; preds = %1274
  br label %1290

1290:                                             ; preds = %1289, %1287
  %1291 = phi i64 [ %1288, %1287 ], [ 1, %1289 ]
  store i64 %1291, ptr %55, align 8, !tbaa !9
  %1292 = load ptr, ptr %32, align 8, !tbaa !5
  %1293 = load ptr, ptr %47, align 8, !tbaa !5
  %1294 = load i64, ptr %1293, align 8, !tbaa !9
  %1295 = add nsw i64 %1294, 1
  %1296 = getelementptr inbounds double, ptr %1292, i64 %1295
  %1297 = call i32 @dlascl_(ptr noundef @.str.11, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %76, ptr noundef %69, ptr noundef %54, ptr noundef @c__1, ptr noundef %1296, ptr noundef %55, ptr noundef %70)
  %1298 = load ptr, ptr %29, align 8, !tbaa !5
  %1299 = load i64, ptr %1298, align 8, !tbaa !9
  %1300 = load ptr, ptr %47, align 8, !tbaa !5
  %1301 = load i64, ptr %1300, align 8, !tbaa !9
  %1302 = sub nsw i64 %1299, %1301
  store i64 %1302, ptr %54, align 8, !tbaa !9
  %1303 = load ptr, ptr %29, align 8, !tbaa !5
  %1304 = load i64, ptr %1303, align 8, !tbaa !9
  %1305 = load ptr, ptr %47, align 8, !tbaa !5
  %1306 = load i64, ptr %1305, align 8, !tbaa !9
  %1307 = sub nsw i64 %1304, %1306
  store i64 %1307, ptr %56, align 8, !tbaa !9
  %1308 = load i64, ptr %56, align 8, !tbaa !9
  %1309 = icmp sge i64 %1308, 1
  br i1 %1309, label %1310, label %1312

1310:                                             ; preds = %1290
  %1311 = load i64, ptr %56, align 8, !tbaa !9
  br label %1313

1312:                                             ; preds = %1290
  br label %1313

1313:                                             ; preds = %1312, %1310
  %1314 = phi i64 [ %1311, %1310 ], [ 1, %1312 ]
  store i64 %1314, ptr %55, align 8, !tbaa !9
  %1315 = load ptr, ptr %33, align 8, !tbaa !5
  %1316 = load ptr, ptr %47, align 8, !tbaa !5
  %1317 = load i64, ptr %1316, align 8, !tbaa !9
  %1318 = add nsw i64 %1317, 1
  %1319 = getelementptr inbounds double, ptr %1315, i64 %1318
  %1320 = call i32 @dlascl_(ptr noundef @.str.11, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %76, ptr noundef %69, ptr noundef %54, ptr noundef @c__1, ptr noundef %1319, ptr noundef %55, ptr noundef %70)
  %1321 = load ptr, ptr %47, align 8, !tbaa !5
  %1322 = load i64, ptr %1321, align 8, !tbaa !9
  %1323 = icmp eq i64 %1322, 0
  br i1 %1323, label %1324, label %1340

1324:                                             ; preds = %1313
  %1325 = load i64, ptr %89, align 8, !tbaa !9
  %1326 = icmp ne i64 %1325, 0
  br i1 %1326, label %1330, label %1327

1327:                                             ; preds = %1324
  %1328 = load i64, ptr %82, align 8, !tbaa !9
  %1329 = icmp ne i64 %1328, 0
  br i1 %1329, label %1330, label %1339

1330:                                             ; preds = %1327, %1324
  %1331 = load i64, ptr %74, align 8, !tbaa !9
  %1332 = icmp eq i64 %1331, 0
  br i1 %1332, label %1333, label %1339

1333:                                             ; preds = %1330
  %1334 = load ptr, ptr %29, align 8, !tbaa !5
  %1335 = load ptr, ptr %43, align 8, !tbaa !5
  %1336 = getelementptr inbounds double, ptr %1335, i64 1
  %1337 = load ptr, ptr %29, align 8, !tbaa !5
  %1338 = call i32 @dlascl_(ptr noundef @.str.11, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %76, ptr noundef %69, ptr noundef %1334, ptr noundef @c__1, ptr noundef %1336, ptr noundef %1337, ptr noundef %70)
  br label %1339

1339:                                             ; preds = %1333, %1330, %1327
  br label %1355

1340:                                             ; preds = %1313
  %1341 = load ptr, ptr %38, align 8, !tbaa !5
  %1342 = load i64, ptr %1341, align 8, !tbaa !9
  %1343 = sub nsw i64 %1342, 1
  store i64 %1343, ptr %54, align 8, !tbaa !9
  %1344 = load ptr, ptr %32, align 8, !tbaa !5
  %1345 = getelementptr inbounds double, ptr %1344, i64 1
  %1346 = load ptr, ptr %29, align 8, !tbaa !5
  %1347 = call i32 @dlascl_(ptr noundef @.str.11, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %76, ptr noundef %69, ptr noundef %54, ptr noundef @c__1, ptr noundef %1345, ptr noundef %1346, ptr noundef %70)
  %1348 = load ptr, ptr %38, align 8, !tbaa !5
  %1349 = load i64, ptr %1348, align 8, !tbaa !9
  %1350 = sub nsw i64 %1349, 1
  store i64 %1350, ptr %54, align 8, !tbaa !9
  %1351 = load ptr, ptr %33, align 8, !tbaa !5
  %1352 = getelementptr inbounds double, ptr %1351, i64 1
  %1353 = load ptr, ptr %29, align 8, !tbaa !5
  %1354 = call i32 @dlascl_(ptr noundef @.str.11, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %76, ptr noundef %69, ptr noundef %54, ptr noundef @c__1, ptr noundef %1352, ptr noundef %1353, ptr noundef %70)
  br label %1355

1355:                                             ; preds = %1340, %1339
  br label %1356

1356:                                             ; preds = %1355, %1271
  %1357 = load i64, ptr %80, align 8, !tbaa !9
  %1358 = sitofp i64 %1357 to double
  %1359 = load ptr, ptr %44, align 8, !tbaa !5
  %1360 = getelementptr inbounds double, ptr %1359, i64 1
  store double %1358, ptr %1360, align 8, !tbaa !11
  store i32 0, ptr %24, align 4
  store i32 1, ptr %90, align 4
  br label %1361

1361:                                             ; preds = %1356, %581, %575, %567
  call void @llvm.lifetime.end.p0(i64 8, ptr %89) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %88) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %87) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %86) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %85) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %84) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %83) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %82) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %81) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %80) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %79) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %78) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %77) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %76) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %74) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %73) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %72) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %71) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %68) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %64) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #5
  %1362 = load i32, ptr %24, align 4
  ret i32 %1362
}

; 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 @dhseqr_(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 @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 @dgebal_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

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

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

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

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

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

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

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

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

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

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

declare i32 @f2c_drot(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 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #5 = { nounwind }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"long", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"double", !7, i64 0}
!13 = !{!7, !7, i64 0}
!14 = distinct !{!14, !15}
!15 = !{!"llvm.loop.mustprogress"}
!16 = distinct !{!16, !15}
!17 = distinct !{!17, !15}
!18 = distinct !{!18, !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
@c_n1 = 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 [2 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 [2 x i8], align 1

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

64:                                               ; preds = %23
  %65 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.4) #6
  %.not581 = icmp eq i64 %65, 0
  br i1 %.not581, label %66, label %70

66:                                               ; preds = %64
  %67 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.5) #6
  %.not582 = icmp eq i64 %67, 0
  br i1 %.not582, label %68, label %70

68:                                               ; preds = %66
  %69 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.3) #6
  %.not583 = icmp eq i64 %69, 0
  br i1 %.not583, label %.thread619.sink.split, label %70

70:                                               ; preds = %68, %66, %64, %23
  %71 = icmp ne i64 %57, 0
  br i1 %71, label %74, label %72

72:                                               ; preds = %70
  %73 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.1) #6
  %.not584 = icmp eq i64 %73, 0
  br i1 %.not584, label %.thread619.sink.split, label %74

74:                                               ; preds = %72, %70
  %75 = icmp ne i64 %58, 0
  br i1 %75, label %78, label %76

76:                                               ; preds = %74
  %77 = tail call i64 @lsame_(ptr noundef %2, ptr noundef nonnull @.str.1) #6
  %.not585 = icmp eq i64 %77, 0
  br i1 %.not585, label %.thread619.sink.split, label %78

78:                                               ; preds = %76, %74
  %79 = icmp ne i64 %59, 0
  %80 = icmp ne i64 %60, 0
  %or.cond = select i1 %79, i1 true, i1 %80
  %81 = icmp ne i64 %62, 0
  %or.cond3 = select i1 %or.cond, i1 true, i1 %81
  %82 = icmp ne i64 %61, 0
  %or.cond5 = select i1 %or.cond3, i1 true, i1 %82
  br i1 %or.cond5, label %83, label %.thread619.sink.split

83:                                               ; preds = %78
  %or.cond7 = select i1 %80, i1 true, i1 %81
  %or.cond7.not = xor i1 %or.cond7, true
  %or.cond9 = and i1 %71, %75
  %or.cond608 = or i1 %or.cond9, %or.cond7.not
  br i1 %or.cond608, label %84, label %.thread619.sink.split

84:                                               ; preds = %83
  %85 = load i64, ptr %4, align 8, !tbaa !5
  %86 = icmp slt i64 %85, 0
  br i1 %86, label %.thread619.sink.split, label %87

87:                                               ; preds = %84
  %88 = load i64, ptr %6, align 8, !tbaa !5
  %spec.select = tail call i64 @llvm.umax.i64(i64 %85, i64 1)
  %89 = icmp slt i64 %88, %spec.select
  br i1 %89, label %.thread619.sink.split, label %90

90:                                               ; preds = %87
  %91 = load i64, ptr %10, align 8, !tbaa !5
  %92 = icmp slt i64 %91, 1
  %93 = icmp ult i64 %91, %85
  %or.cond630 = and i1 %71, %93
  %or.cond632 = or i1 %92, %or.cond630
  br i1 %or.cond632, label %.thread619.sink.split, label %94

94:                                               ; preds = %90
  %95 = load i64, ptr %12, align 8, !tbaa !5
  %96 = icmp slt i64 %95, 1
  %97 = icmp ult i64 %95, %85
  %or.cond631 = and i1 %75, %97
  %or.cond633 = or i1 %96, %or.cond631
  br i1 %or.cond633, label %.thread619.sink.split, label %98

98:                                               ; preds = %94
  %.pr = load i64, ptr %22, align 8, !tbaa !5
  %99 = icmp eq i64 %.pr, 0
  br i1 %99, label %100, label %.thread619

100:                                              ; preds = %98
  %101 = icmp eq i64 %85, 0
  br i1 %101, label %155, label %102

102:                                              ; preds = %100
  %103 = 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
  %104 = add i64 %103, 1
  %105 = mul i64 %104, %85
  %.not634 = icmp eq i64 %57, 0
  br i1 %.not634, label %108, label %106

106:                                              ; preds = %102
  %107 = tail call i32 @dhseqr_(ptr noundef nonnull @.str.4, ptr noundef nonnull @.str, ptr noundef nonnull %4, ptr noundef nonnull @c__1, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %7, ptr noundef %8, ptr noundef %9, ptr noundef nonnull %10, ptr noundef %19, ptr noundef nonnull @c_n1, ptr noundef nonnull %22) #6
  br label %.thread610

108:                                              ; preds = %102
  %.not586 = icmp eq i64 %58, 0
  br i1 %.not586, label %111, label %109

109:                                              ; preds = %108
  %110 = tail call i32 @dhseqr_(ptr noundef nonnull @.str.4, ptr noundef nonnull @.str, ptr noundef nonnull %4, ptr noundef nonnull @c__1, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %7, ptr noundef %8, ptr noundef %11, ptr noundef nonnull %12, ptr noundef %19, ptr noundef nonnull @c_n1, ptr noundef nonnull %22) #6
  br label %.thread610

111:                                              ; preds = %108
  %.not587 = icmp eq i64 %59, 0
  br i1 %.not587, label %123, label %116

.thread610:                                       ; preds = %106, %109
  %112 = load double, ptr %19, align 8, !tbaa !9
  %113 = fptosi double %112 to i64
  %114 = load i64, ptr %4, align 8, !tbaa !5
  %115 = mul nsw i64 %114, 3
  br i1 %or.cond, label %138, label %134

116:                                              ; preds = %111
  %117 = tail call i32 @dhseqr_(ptr noundef nonnull @.str.2, ptr noundef nonnull @.str.1, ptr noundef nonnull %4, ptr noundef nonnull @c__1, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %7, ptr noundef %8, ptr noundef %11, ptr noundef nonnull %12, ptr noundef %19, ptr noundef nonnull @c_n1, ptr noundef nonnull %22) #6
  %118 = load double, ptr %19, align 8, !tbaa !9
  %119 = fptosi double %118 to i64
  %120 = load i64, ptr %4, align 8, !tbaa !5
  %121 = shl i64 %120, 1
  %122 = tail call i64 @llvm.smax.i64(i64 %105, i64 %119)
  br label %152

123:                                              ; preds = %111
  %124 = tail call i32 @dhseqr_(ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.1, ptr noundef nonnull %4, ptr noundef nonnull @c__1, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %7, ptr noundef %8, ptr noundef %11, ptr noundef nonnull %12, ptr noundef %19, ptr noundef nonnull @c_n1, ptr noundef nonnull %22) #6
  %125 = load double, ptr %19, align 8, !tbaa !9
  %126 = fptosi double %125 to i64
  %127 = load i64, ptr %4, align 8, !tbaa !5
  %128 = shl i64 %127, 1
  %129 = add i64 %127, 6
  %130 = mul i64 %129, %127
  %131 = tail call i64 @llvm.smax.i64(i64 %128, i64 %130)
  %132 = tail call i64 @llvm.smax.i64(i64 %105, i64 %126)
  store i64 %132, ptr %28, align 8, !tbaa !5
  store i64 %130, ptr %29, align 8, !tbaa !5
  %133 = tail call i64 @llvm.smax.i64(i64 %132, i64 %130)
  br label %152

134:                                              ; preds = %.thread610
  %135 = add i64 %114, 6
  %136 = mul i64 %135, %114
  %137 = tail call i64 @llvm.smax.i64(i64 %115, i64 %136)
  br label %138

138:                                              ; preds = %134, %.thread610
  %.1563 = phi i64 [ %115, %.thread610 ], [ %137, %134 ]
  %139 = tail call i64 @llvm.smax.i64(i64 %105, i64 %113)
  %140 = add nsw i64 %114, -1
  %141 = 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_n1) #6
  %142 = mul nsw i64 %141, %140
  %143 = add nsw i64 %142, %114
  %144 = tail call i64 @llvm.smax.i64(i64 %139, i64 %143)
  %.pre = load i64, ptr %4, align 8, !tbaa !5
  br i1 %or.cond, label %149, label %145

145:                                              ; preds = %138
  %146 = add i64 %.pre, 6
  %147 = mul i64 %146, %.pre
  %148 = tail call i64 @llvm.smax.i64(i64 %144, i64 %147)
  br label %149

149:                                              ; preds = %145, %138
  %.0561 = phi i64 [ %144, %138 ], [ %148, %145 ]
  store i64 %.0561, ptr %28, align 8, !tbaa !5
  %150 = mul nsw i64 %.pre, 3
  store i64 %150, ptr %29, align 8, !tbaa !5
  %151 = tail call i64 @llvm.smax.i64(i64 %.0561, i64 %150)
  br label %152

152:                                              ; preds = %116, %123, %149
  %153 = phi i64 [ %.pre, %149 ], [ %120, %116 ], [ %127, %123 ]
  %.2564 = phi i64 [ %.1563, %149 ], [ %121, %116 ], [ %131, %123 ]
  %.1 = phi i64 [ %151, %149 ], [ %122, %116 ], [ %133, %123 ]
  %154 = tail call i64 @llvm.smax.i64(i64 %.1, i64 %.2564)
  br label %155

155:                                              ; preds = %100, %152
  %156 = phi i64 [ %153, %152 ], [ 0, %100 ]
  %.3565 = phi i64 [ %.2564, %152 ], [ 1, %100 ]
  %.2 = phi i64 [ %154, %152 ], [ 1, %100 ]
  %157 = sitofp i64 %.2 to double
  store double %157, ptr %19, align 8, !tbaa !9
  %158 = load i64, ptr %20, align 8, !tbaa !5
  %159 = icmp sge i64 %158, %.3565
  %or.cond17 = select i1 %159, i1 true, i1 %56
  br i1 %or.cond17, label %.thread, label %.thread619.sink.split

.thread:                                          ; preds = %155
  %.pr616.pr = load i64, ptr %22, align 8, !tbaa !5
  %.not598 = icmp eq i64 %.pr616.pr, 0
  br i1 %.not598, label %163, label %.thread619

.thread619.sink.split:                            ; preds = %155, %94, %90, %87, %84, %78, %83, %76, %72, %68
  %.sink = phi i64 [ -1, %68 ], [ -2, %72 ], [ -3, %76 ], [ -4, %83 ], [ -4, %78 ], [ -5, %84 ], [ -7, %87 ], [ -11, %90 ], [ -13, %94 ], [ -21, %155 ]
  store i64 %.sink, ptr %22, align 8, !tbaa !5
  br label %.thread619

.thread619:                                       ; preds = %.thread619.sink.split, %98, %.thread
  %160 = phi i64 [ %.pr616.pr, %.thread ], [ %.pr, %98 ], [ %.sink, %.thread619.sink.split ]
  %161 = sub nsw i64 0, %160
  store i64 %161, ptr %28, align 8, !tbaa !5
  %162 = call i32 @xerbla_(ptr noundef nonnull @.str.9, ptr noundef nonnull %28) #6
  br label %420

163:                                              ; preds = %.thread
  %164 = icmp eq i64 %156, 0
  %or.cond674 = select i1 %56, i1 true, i1 %164
  br i1 %or.cond674, label %420, label %165

165:                                              ; preds = %163
  %166 = tail call double @dlamch_(ptr noundef nonnull @.str.5) #6
  %167 = tail call double @dlamch_(ptr noundef nonnull @.str.4) #6
  store double %167, ptr %46, align 8, !tbaa !9
  %168 = fdiv double 1.000000e+00, %167
  store double %168, ptr %45, align 8, !tbaa !9
  %169 = call i32 @dlabad_(ptr noundef nonnull %46, ptr noundef nonnull %45) #6
  %170 = load double, ptr %46, align 8, !tbaa !9
  %171 = call double @sqrt(double noundef %170) #6
  %172 = fdiv double %171, %166
  store double %172, ptr %46, align 8, !tbaa !9
  %173 = fdiv double 1.000000e+00, %172
  store double %173, ptr %45, align 8, !tbaa !9
  store i64 0, ptr %42, align 8, !tbaa !5
  %174 = call double @dlange_(ptr noundef nonnull @.str.10, ptr noundef nonnull %4, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef nonnull %37) #6
  store double %174, ptr %39, align 8, !tbaa !9
  %175 = fcmp ogt double %174, 0.000000e+00
  %176 = load double, ptr %46, align 8
  %177 = fcmp olt double %174, %176
  %or.cond636 = select i1 %175, i1 %177, i1 false
  br i1 %or.cond636, label %181, label %178

178:                                              ; preds = %165
  %179 = load double, ptr %45, align 8, !tbaa !9
  %180 = fcmp ogt double %174, %179
  br i1 %180, label %181, label %183

181:                                              ; preds = %165, %178
  %storemerge = phi double [ %179, %178 ], [ %176, %165 ]
  store double %storemerge, ptr %43, align 8, !tbaa !9
  %182 = call i32 @dlascl_(ptr noundef nonnull @.str.11, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %39, ptr noundef nonnull %43, ptr noundef nonnull %4, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef nonnull %40) #6
  br label %183

183:                                              ; preds = %178, %181
  %.not599626 = phi i1 [ false, %181 ], [ true, %178 ]
  %184 = call i32 @dgebal_(ptr noundef %0, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %13, ptr noundef %14, ptr noundef %15, ptr noundef nonnull %40) #6
  %185 = call double @dlange_(ptr noundef nonnull @.str.12, ptr noundef nonnull %4, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef nonnull %37) #6
  store double %185, ptr %16, align 8, !tbaa !9
  br i1 %.not599626, label %189, label %186

186:                                              ; preds = %183
  store double %185, ptr %37, align 8, !tbaa !9
  %187 = call i32 @dlascl_(ptr noundef nonnull @.str.11, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %43, ptr noundef nonnull %39, ptr noundef nonnull @c__1, ptr noundef nonnull @c__1, ptr noundef nonnull %37, ptr noundef nonnull @c__1, ptr noundef nonnull %40) #6
  %188 = load double, ptr %37, align 8, !tbaa !9
  store double %188, ptr %16, align 8, !tbaa !9
  br label %189

189:                                              ; preds = %186, %183
  %190 = load i64, ptr %4, align 8, !tbaa !5
  %191 = load i64, ptr %20, align 8, !tbaa !5
  %192 = sub i64 %191, %190
  store i64 %192, ptr %28, align 8, !tbaa !5
  %193 = getelementptr double, ptr %19, i64 %190
  %194 = call i32 @dgehrd_(ptr noundef nonnull %4, ptr noundef %13, ptr noundef %14, ptr noundef %5, ptr noundef nonnull %6, ptr noundef nonnull %19, ptr noundef %193, ptr noundef nonnull %28, ptr noundef nonnull %40) #6
  br i1 %71, label %195, label %204

195:                                              ; preds = %189
  store i8 76, ptr %38, align 1, !tbaa !11
  %196 = call i32 @dlacpy_(ptr noundef nonnull @.str.13, ptr noundef nonnull %4, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %9, ptr noundef nonnull %10) #6
  %197 = load i64, ptr %20, align 8, !tbaa !5
  %198 = sub i64 %197, %190
  store i64 %198, ptr %28, align 8, !tbaa !5
  %199 = call i32 @dorghr_(ptr noundef nonnull %4, ptr noundef %13, ptr noundef %14, ptr noundef %9, ptr noundef nonnull %10, ptr noundef nonnull %19, ptr noundef %193, ptr noundef nonnull %28, ptr noundef nonnull %40) #6
  %200 = load i64, ptr %20, align 8, !tbaa !5
  store i64 %200, ptr %28, align 8, !tbaa !5
  %201 = call i32 @dhseqr_(ptr noundef nonnull @.str.4, ptr noundef nonnull @.str, ptr noundef nonnull %4, ptr noundef %13, ptr noundef %14, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %7, ptr noundef %8, ptr noundef %9, ptr noundef nonnull %10, ptr noundef nonnull %19, ptr noundef nonnull %28, ptr noundef nonnull %22) #6
  %.not602 = icmp eq i64 %58, 0
  br i1 %.not602, label %215, label %202

202:                                              ; preds = %195
  store i8 66, ptr %38, align 1, !tbaa !11
  %203 = call i32 @dlacpy_(ptr noundef nonnull @.str.14, ptr noundef nonnull %4, ptr noundef nonnull %4, ptr noundef %9, ptr noundef nonnull %10, ptr noundef %11, ptr noundef nonnull %12) #6
  br label %215

204:                                              ; preds = %189
  %.not600 = icmp eq i64 %58, 0
  br i1 %.not600, label %212, label %205

205:                                              ; preds = %204
  store i8 82, ptr %38, align 1, !tbaa !11
  %206 = call i32 @dlacpy_(ptr noundef nonnull @.str.13, ptr noundef nonnull %4, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %11, ptr noundef nonnull %12) #6
  %207 = load i64, ptr %20, align 8, !tbaa !5
  %208 = sub i64 %207, %190
  store i64 %208, ptr %28, align 8, !tbaa !5
  %209 = call i32 @dorghr_(ptr noundef nonnull %4, ptr noundef %13, ptr noundef %14, ptr noundef %11, ptr noundef nonnull %12, ptr noundef nonnull %19, ptr noundef %193, ptr noundef nonnull %28, ptr noundef nonnull %40) #6
  %210 = load i64, ptr %20, align 8, !tbaa !5
  store i64 %210, ptr %28, align 8, !tbaa !5
  %211 = call i32 @dhseqr_(ptr noundef nonnull @.str.4, ptr noundef nonnull @.str, ptr noundef nonnull %4, ptr noundef %13, ptr noundef %14, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %7, ptr noundef %8, ptr noundef %11, ptr noundef nonnull %12, ptr noundef nonnull %19, ptr noundef nonnull %28, ptr noundef nonnull %22) #6
  br label %215

212:                                              ; preds = %204
  %.not601 = icmp eq i64 %59, 0
  %. = select i1 %.not601, i8 83, i8 69
  store i8 %., ptr %35, align 1, !tbaa !11
  %213 = load i64, ptr %20, align 8, !tbaa !5
  store i64 %213, ptr %28, align 8, !tbaa !5
  %214 = call i32 @dhseqr_(ptr noundef nonnull %35, ptr noundef nonnull @.str.1, ptr noundef nonnull %4, ptr noundef %13, ptr noundef %14, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %7, ptr noundef %8, ptr noundef %11, ptr noundef nonnull %12, ptr noundef nonnull %19, ptr noundef nonnull %28, ptr noundef nonnull %22) #6
  br label %215

215:                                              ; preds = %205, %212, %195, %202
  %216 = load i64, ptr %22, align 8, !tbaa !5
  %217 = icmp sgt i64 %216, 0
  br i1 %217, label %.loopexit, label %218

218:                                              ; preds = %215
  %219 = or i64 %57, %58
  %or.cond19.not = icmp eq i64 %219, 0
  br i1 %or.cond19.not, label %222, label %220

220:                                              ; preds = %218
  %221 = call i32 @dtrevc_(ptr noundef nonnull %38, ptr noundef nonnull @.str.3, ptr noundef nonnull %44, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %9, ptr noundef nonnull %10, ptr noundef %11, ptr noundef nonnull %12, ptr noundef nonnull %4, ptr noundef nonnull %41, ptr noundef nonnull %19, ptr noundef nonnull %40) #6
  br label %222

222:                                              ; preds = %218, %220
  %.not603 = icmp eq i64 %59, 0
  br i1 %.not603, label %223, label %225

223:                                              ; preds = %222
  %224 = call i32 @dtrsna_(ptr noundef %3, ptr noundef nonnull @.str.15, ptr noundef nonnull %44, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %9, ptr noundef nonnull %10, ptr noundef %11, ptr noundef nonnull %12, ptr noundef %17, ptr noundef %18, ptr noundef nonnull %4, ptr noundef nonnull %41, ptr noundef nonnull %19, ptr noundef nonnull %4, ptr noundef %21, ptr noundef nonnull %42) #6
  br label %225

225:                                              ; preds = %223, %222
  br i1 %71, label %226, label %.loopexit637

226:                                              ; preds = %225
  %227 = call i32 @dgebak_(ptr noundef %0, ptr noundef nonnull @.str.13, ptr noundef nonnull %4, ptr noundef %13, ptr noundef %14, ptr noundef %15, ptr noundef nonnull %4, ptr noundef %9, ptr noundef nonnull %10, ptr noundef nonnull %40) #6
  %228 = load i64, ptr %4, align 8, !tbaa !5
  store i64 %228, ptr %28, align 8, !tbaa !5
  %invariant.gep = getelementptr i8, ptr %50, i64 8
  %.not604645 = icmp slt i64 %228, 1
  br i1 %.not604645, label %.loopexit637, label %.lr.ph648.preheader

.lr.ph648.preheader:                              ; preds = %226
  %229 = sub i64 %27, %26
  %230 = shl i64 %48, 3
  %231 = sub i64 %229, %230
  %232 = mul i64 %48, -8
  br label %.lr.ph648

.lr.ph648:                                        ; preds = %.lr.ph648.preheader, %306
  %indvar = phi i64 [ 0, %.lr.ph648.preheader ], [ %indvar.next, %306 ]
  %.0570646 = phi i64 [ 1, %.lr.ph648.preheader ], [ %307, %306 ]
  %233 = mul i64 %232, %indvar
  %234 = add i64 %231, %233
  %235 = add i64 %229, %233
  %236 = getelementptr inbounds double, ptr %47, i64 %.0570646
  %237 = load double, ptr %236, align 8, !tbaa !9
  %238 = fcmp oeq double %237, 0.000000e+00
  br i1 %238, label %239, label %244

239:                                              ; preds = %.lr.ph648
  %240 = mul nsw i64 %.0570646, %48
  %gep644 = getelementptr double, ptr %invariant.gep, i64 %240
  %241 = call double @f2c_dnrm2(ptr noundef nonnull %4, ptr noundef %gep644, ptr noundef nonnull @c__1) #6
  %242 = fdiv double 1.000000e+00, %241
  store double %242, ptr %36, align 8, !tbaa !9
  %243 = call i32 @f2c_dscal(ptr noundef nonnull %4, ptr noundef nonnull %36, ptr noundef %gep644, ptr noundef nonnull @c__1) #6
  br label %306

244:                                              ; preds = %.lr.ph648
  %245 = fcmp ogt double %237, 0.000000e+00
  br i1 %245, label %246, label %306

246:                                              ; preds = %244
  %247 = mul nsw i64 %.0570646, %48
  %gep = getelementptr double, ptr %invariant.gep, i64 %247
  %248 = call double @f2c_dnrm2(ptr noundef nonnull %4, ptr noundef %gep, ptr noundef nonnull @c__1) #6
  store double %248, ptr %30, align 8, !tbaa !9
  %249 = add nuw nsw i64 %.0570646, 1
  %250 = mul nsw i64 %249, %48
  %gep642 = getelementptr double, ptr %invariant.gep, i64 %250
  %251 = call double @f2c_dnrm2(ptr noundef nonnull %4, ptr noundef %gep642, ptr noundef nonnull @c__1) #6
  store double %251, ptr %31, align 8, !tbaa !9
  %252 = call double @dlapy2_(ptr noundef nonnull %30, ptr noundef nonnull %31) #6
  %253 = fdiv double 1.000000e+00, %252
  store double %253, ptr %36, align 8, !tbaa !9
  %254 = call i32 @f2c_dscal(ptr noundef nonnull %4, ptr noundef nonnull %36, ptr noundef %gep, ptr noundef nonnull @c__1) #6
  %255 = call i32 @f2c_dscal(ptr noundef nonnull %4, ptr noundef nonnull %36, ptr noundef %gep642, ptr noundef nonnull @c__1) #6
  %256 = load i64, ptr %4, align 8, !tbaa !5
  store i64 %256, ptr %29, align 8, !tbaa !5
  %.not607638 = icmp slt i64 %256, 1
  br i1 %.not607638, label %299, label %.lr.ph.preheader

.lr.ph.preheader:                                 ; preds = %246
  %min.iters.check = icmp ult i64 %256, 4
  br i1 %min.iters.check, label %.lr.ph.preheader708, label %vector.memcheck

vector.memcheck:                                  ; preds = %.lr.ph.preheader
  %diff.check = icmp ult i64 %234, 32
  %diff.check678 = icmp ult i64 %235, 32
  %conflict.rdx = or i1 %diff.check, %diff.check678
  br i1 %conflict.rdx, label %.lr.ph.preheader708, label %vector.ph

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

vector.body:                                      ; preds = %vector.body, %vector.ph
  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %offset.idx = or disjoint i64 %index, 1
  %257 = getelementptr double, ptr %50, i64 %offset.idx
  %258 = getelementptr double, ptr %257, i64 %247
  %259 = getelementptr i8, ptr %258, i64 16
  %wide.load = load <2 x double>, ptr %258, align 8, !tbaa !9
  %wide.load679 = load <2 x double>, ptr %259, align 8, !tbaa !9
  %260 = getelementptr double, ptr %257, i64 %250
  %261 = getelementptr i8, ptr %260, i64 16
  %wide.load680 = load <2 x double>, ptr %260, align 8, !tbaa !9
  %wide.load681 = load <2 x double>, ptr %261, align 8, !tbaa !9
  %262 = fmul <2 x double> %wide.load680, %wide.load680
  %263 = fmul <2 x double> %wide.load681, %wide.load681
  %264 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %wide.load, <2 x double> %wide.load, <2 x double> %262)
  %265 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %wide.load679, <2 x double> %wide.load679, <2 x double> %263)
  %266 = getelementptr double, ptr %19, i64 %index
  %267 = getelementptr inbounds i8, ptr %266, i64 16
  store <2 x double> %264, ptr %266, align 8, !tbaa !9
  store <2 x double> %265, ptr %267, align 8, !tbaa !9
  %index.next = add nuw i64 %index, 4
  %268 = icmp eq i64 %index.next, %n.vec
  br i1 %268, label %middle.block, label %vector.body, !llvm.loop !12

middle.block:                                     ; preds = %vector.body
  %269 = extractelement <2 x double> %wide.load681, i64 1
  %270 = extractelement <2 x double> %wide.load679, i64 1
  %cmp.n = icmp eq i64 %256, %n.vec
  br i1 %cmp.n, label %._crit_edge, label %.lr.ph.preheader708

.lr.ph.preheader708:                              ; preds = %middle.block, %vector.memcheck, %.lr.ph.preheader
  %.0568639.ph = phi i64 [ 1, %vector.memcheck ], [ 1, %.lr.ph.preheader ], [ %ind.end, %middle.block ]
  %xtraiter = and i64 %256, 1
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %.lr.ph.prol.loopexit, label %.lr.ph.prol

.lr.ph.prol:                                      ; preds = %.lr.ph.preheader708
  %271 = getelementptr double, ptr %50, i64 %.0568639.ph
  %272 = getelementptr double, ptr %271, i64 %247
  %273 = load double, ptr %272, align 8, !tbaa !9
  %274 = getelementptr double, ptr %271, i64 %250
  %275 = load double, ptr %274, align 8, !tbaa !9
  %276 = fmul double %275, %275
  %277 = call double @llvm.fmuladd.f64(double %273, double %273, double %276)
  %278 = getelementptr inbounds double, ptr %54, i64 %.0568639.ph
  store double %277, ptr %278, align 8, !tbaa !9
  %279 = add nuw i64 %.0568639.ph, 1
  br label %.lr.ph.prol.loopexit

.lr.ph.prol.loopexit:                             ; preds = %.lr.ph.prol, %.lr.ph.preheader708
  %.lcssa710.unr = phi double [ poison, %.lr.ph.preheader708 ], [ %273, %.lr.ph.prol ]
  %.lcssa709.unr = phi double [ poison, %.lr.ph.preheader708 ], [ %275, %.lr.ph.prol ]
  %.0568639.unr = phi i64 [ %.0568639.ph, %.lr.ph.preheader708 ], [ %279, %.lr.ph.prol ]
  %280 = icmp eq i64 %256, %.0568639.ph
  br i1 %280, label %._crit_edge, label %.lr.ph

.lr.ph:                                           ; preds = %.lr.ph.prol.loopexit, %.lr.ph
  %.0568639 = phi i64 [ %298, %.lr.ph ], [ %.0568639.unr, %.lr.ph.prol.loopexit ]
  %281 = getelementptr double, ptr %50, i64 %.0568639
  %282 = getelementptr double, ptr %281, i64 %247
  %283 = load double, ptr %282, align 8, !tbaa !9
  %284 = getelementptr double, ptr %281, i64 %250
  %285 = load double, ptr %284, align 8, !tbaa !9
  %286 = fmul double %285, %285
  %287 = call double @llvm.fmuladd.f64(double %283, double %283, double %286)
  %288 = getelementptr inbounds double, ptr %54, i64 %.0568639
  store double %287, ptr %288, align 8, !tbaa !9
  %289 = add nuw i64 %.0568639, 1
  %290 = getelementptr double, ptr %50, i64 %289
  %291 = getelementptr double, ptr %290, i64 %247
  %292 = load double, ptr %291, align 8, !tbaa !9
  %293 = getelementptr double, ptr %290, i64 %250
  %294 = load double, ptr %293, align 8, !tbaa !9
  %295 = fmul double %294, %294
  %296 = call double @llvm.fmuladd.f64(double %292, double %292, double %295)
  %297 = getelementptr double, ptr %19, i64 %.0568639
  store double %296, ptr %297, align 8, !tbaa !9
  %298 = add nuw i64 %.0568639, 2
  %exitcond.not.1 = icmp eq i64 %289, %256
  br i1 %exitcond.not.1, label %._crit_edge, label %.lr.ph, !llvm.loop !16

._crit_edge:                                      ; preds = %.lr.ph.prol.loopexit, %.lr.ph, %middle.block
  %.lcssa677 = phi double [ %270, %middle.block ], [ %.lcssa710.unr, %.lr.ph.prol.loopexit ], [ %292, %.lr.ph ]
  %.lcssa676 = phi double [ %269, %middle.block ], [ %.lcssa709.unr, %.lr.ph.prol.loopexit ], [ %294, %.lr.ph ]
  store double %.lcssa677, ptr %30, align 8, !tbaa !9
  store double %.lcssa676, ptr %31, align 8, !tbaa !9
  br label %299

299:                                              ; preds = %._crit_edge, %246
  %300 = call i64 @f2c_idamax(ptr noundef nonnull %4, ptr noundef nonnull %19, ptr noundef nonnull @c__1) #6
  %301 = getelementptr double, ptr %50, i64 %300
  %302 = getelementptr double, ptr %301, i64 %247
  %303 = getelementptr double, ptr %301, i64 %250
  %304 = call i32 @dlartg_(ptr noundef %302, ptr noundef %303, ptr noundef nonnull %33, ptr noundef nonnull %34, ptr noundef nonnull %32) #6
  %305 = call i32 @f2c_drot(ptr noundef nonnull %4, ptr noundef %gep, ptr noundef nonnull @c__1, ptr noundef %gep642, ptr noundef nonnull @c__1, ptr noundef nonnull %33, ptr noundef nonnull %34) #6
  store double 0.000000e+00, ptr %303, align 8, !tbaa !9
  br label %306

306:                                              ; preds = %239, %299, %244
  %307 = add nuw nsw i64 %.0570646, 1
  %308 = load i64, ptr %28, align 8, !tbaa !5
  %.not604.not = icmp slt i64 %.0570646, %308
  %indvar.next = add i64 %indvar, 1
  br i1 %.not604.not, label %.lr.ph648, label %.loopexit637, !llvm.loop !17

.loopexit637:                                     ; preds = %306, %226, %225
  br i1 %75, label %309, label %.loopexit

309:                                              ; preds = %.loopexit637
  %310 = call i32 @dgebak_(ptr noundef %0, ptr noundef nonnull @.str.16, ptr noundef nonnull %4, ptr noundef %13, ptr noundef %14, ptr noundef %15, ptr noundef nonnull %4, ptr noundef %11, ptr noundef nonnull %12, ptr noundef nonnull %40) #6
  %311 = load i64, ptr %4, align 8, !tbaa !5
  store i64 %311, ptr %28, align 8, !tbaa !5
  %invariant.gep656 = getelementptr i8, ptr %53, i64 8
  %.not605662 = icmp slt i64 %311, 1
  br i1 %.not605662, label %.loopexit, label %.lr.ph665.preheader

.lr.ph665.preheader:                              ; preds = %309
  %312 = sub i64 %25, %24
  %313 = shl i64 %51, 3
  %314 = sub i64 %312, %313
  %315 = mul i64 %51, -8
  br label %.lr.ph665

.lr.ph665:                                        ; preds = %.lr.ph665.preheader, %389
  %indvar683 = phi i64 [ 0, %.lr.ph665.preheader ], [ %indvar.next684, %389 ]
  %.1571663 = phi i64 [ 1, %.lr.ph665.preheader ], [ %390, %389 ]
  %316 = mul i64 %315, %indvar683
  %317 = add i64 %314, %316
  %318 = add i64 %312, %316
  %319 = getelementptr inbounds double, ptr %47, i64 %.1571663
  %320 = load double, ptr %319, align 8, !tbaa !9
  %321 = fcmp oeq double %320, 0.000000e+00
  br i1 %321, label %322, label %327

322:                                              ; preds = %.lr.ph665
  %323 = mul nsw i64 %.1571663, %51
  %gep661 = getelementptr double, ptr %invariant.gep656, i64 %323
  %324 = call double @f2c_dnrm2(ptr noundef nonnull %4, ptr noundef %gep661, ptr noundef nonnull @c__1) #6
  %325 = fdiv double 1.000000e+00, %324
  store double %325, ptr %36, align 8, !tbaa !9
  %326 = call i32 @f2c_dscal(ptr noundef nonnull %4, ptr noundef nonnull %36, ptr noundef %gep661, ptr noundef nonnull @c__1) #6
  br label %389

327:                                              ; preds = %.lr.ph665
  %328 = fcmp ogt double %320, 0.000000e+00
  br i1 %328, label %329, label %389

329:                                              ; preds = %327
  %330 = mul nsw i64 %.1571663, %51
  %gep657 = getelementptr double, ptr %invariant.gep656, i64 %330
  %331 = call double @f2c_dnrm2(ptr noundef nonnull %4, ptr noundef %gep657, ptr noundef nonnull @c__1) #6
  store double %331, ptr %30, align 8, !tbaa !9
  %332 = add nuw nsw i64 %.1571663, 1
  %333 = mul nsw i64 %332, %51
  %gep659 = getelementptr double, ptr %invariant.gep656, i64 %333
  %334 = call double @f2c_dnrm2(ptr noundef nonnull %4, ptr noundef %gep659, ptr noundef nonnull @c__1) #6
  store double %334, ptr %31, align 8, !tbaa !9
  %335 = call double @dlapy2_(ptr noundef nonnull %30, ptr noundef nonnull %31) #6
  %336 = fdiv double 1.000000e+00, %335
  store double %336, ptr %36, align 8, !tbaa !9
  %337 = call i32 @f2c_dscal(ptr noundef nonnull %4, ptr noundef nonnull %36, ptr noundef %gep657, ptr noundef nonnull @c__1) #6
  %338 = call i32 @f2c_dscal(ptr noundef nonnull %4, ptr noundef nonnull %36, ptr noundef %gep659, ptr noundef nonnull @c__1) #6
  %339 = load i64, ptr %4, align 8, !tbaa !5
  store i64 %339, ptr %29, align 8, !tbaa !5
  %.not606649 = icmp slt i64 %339, 1
  br i1 %.not606649, label %382, label %.lr.ph652.preheader

.lr.ph652.preheader:                              ; preds = %329
  %min.iters.check690 = icmp ult i64 %339, 4
  br i1 %min.iters.check690, label %.lr.ph652.preheader705, label %vector.memcheck682

vector.memcheck682:                               ; preds = %.lr.ph652.preheader
  %diff.check685 = icmp ult i64 %317, 32
  %diff.check686 = icmp ult i64 %318, 32
  %conflict.rdx687 = or i1 %diff.check685, %diff.check686
  br i1 %conflict.rdx687, label %.lr.ph652.preheader705, label %vector.ph691

vector.ph691:                                     ; preds = %vector.memcheck682
  %n.vec693 = and i64 %339, 9223372036854775804
  %ind.end694 = or disjoint i64 %n.vec693, 1
  br label %vector.body696

vector.body696:                                   ; preds = %vector.body696, %vector.ph691
  %index697 = phi i64 [ 0, %vector.ph691 ], [ %index.next703, %vector.body696 ]
  %offset.idx698 = or disjoint i64 %index697, 1
  %340 = getelementptr double, ptr %53, i64 %offset.idx698
  %341 = getelementptr double, ptr %340, i64 %330
  %342 = getelementptr i8, ptr %341, i64 16
  %wide.load699 = load <2 x double>, ptr %341, align 8, !tbaa !9
  %wide.load700 = load <2 x double>, ptr %342, align 8, !tbaa !9
  %343 = getelementptr double, ptr %340, i64 %333
  %344 = getelementptr i8, ptr %343, i64 16
  %wide.load701 = load <2 x double>, ptr %343, align 8, !tbaa !9
  %wide.load702 = load <2 x double>, ptr %344, align 8, !tbaa !9
  %345 = fmul <2 x double> %wide.load701, %wide.load701
  %346 = fmul <2 x double> %wide.load702, %wide.load702
  %347 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %wide.load699, <2 x double> %wide.load699, <2 x double> %345)
  %348 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %wide.load700, <2 x double> %wide.load700, <2 x double> %346)
  %349 = getelementptr double, ptr %19, i64 %index697
  %350 = getelementptr inbounds i8, ptr %349, i64 16
  store <2 x double> %347, ptr %349, align 8, !tbaa !9
  store <2 x double> %348, ptr %350, align 8, !tbaa !9
  %index.next703 = add nuw i64 %index697, 4
  %351 = icmp eq i64 %index.next703, %n.vec693
  br i1 %351, label %middle.block688, label %vector.body696, !llvm.loop !18

middle.block688:                                  ; preds = %vector.body696
  %352 = extractelement <2 x double> %wide.load702, i64 1
  %353 = extractelement <2 x double> %wide.load700, i64 1
  %cmp.n704 = icmp eq i64 %339, %n.vec693
  br i1 %cmp.n704, label %._crit_edge653, label %.lr.ph652.preheader705

.lr.ph652.preheader705:                           ; preds = %middle.block688, %vector.memcheck682, %.lr.ph652.preheader
  %.1569650.ph = phi i64 [ 1, %vector.memcheck682 ], [ 1, %.lr.ph652.preheader ], [ %ind.end694, %middle.block688 ]
  %xtraiter711 = and i64 %339, 1
  %lcmp.mod712.not = icmp eq i64 %xtraiter711, 0
  br i1 %lcmp.mod712.not, label %.lr.ph652.prol.loopexit, label %.lr.ph652.prol

.lr.ph652.prol:                                   ; preds = %.lr.ph652.preheader705
  %354 = getelementptr double, ptr %53, i64 %.1569650.ph
  %355 = getelementptr double, ptr %354, i64 %330
  %356 = load double, ptr %355, align 8, !tbaa !9
  %357 = getelementptr double, ptr %354, i64 %333
  %358 = load double, ptr %357, align 8, !tbaa !9
  %359 = fmul double %358, %358
  %360 = call double @llvm.fmuladd.f64(double %356, double %356, double %359)
  %361 = getelementptr inbounds double, ptr %54, i64 %.1569650.ph
  store double %360, ptr %361, align 8, !tbaa !9
  %362 = add nuw i64 %.1569650.ph, 1
  br label %.lr.ph652.prol.loopexit

.lr.ph652.prol.loopexit:                          ; preds = %.lr.ph652.prol, %.lr.ph652.preheader705
  %.lcssa707.unr = phi double [ poison, %.lr.ph652.preheader705 ], [ %356, %.lr.ph652.prol ]
  %.lcssa706.unr = phi double [ poison, %.lr.ph652.preheader705 ], [ %358, %.lr.ph652.prol ]
  %.1569650.unr = phi i64 [ %.1569650.ph, %.lr.ph652.preheader705 ], [ %362, %.lr.ph652.prol ]
  %363 = icmp eq i64 %339, %.1569650.ph
  br i1 %363, label %._crit_edge653, label %.lr.ph652

.lr.ph652:                                        ; preds = %.lr.ph652.prol.loopexit, %.lr.ph652
  %.1569650 = phi i64 [ %381, %.lr.ph652 ], [ %.1569650.unr, %.lr.ph652.prol.loopexit ]
  %364 = getelementptr double, ptr %53, i64 %.1569650
  %365 = getelementptr double, ptr %364, i64 %330
  %366 = load double, ptr %365, align 8, !tbaa !9
  %367 = getelementptr double, ptr %364, i64 %333
  %368 = load double, ptr %367, align 8, !tbaa !9
  %369 = fmul double %368, %368
  %370 = call double @llvm.fmuladd.f64(double %366, double %366, double %369)
  %371 = getelementptr inbounds double, ptr %54, i64 %.1569650
  store double %370, ptr %371, align 8, !tbaa !9
  %372 = add nuw i64 %.1569650, 1
  %373 = getelementptr double, ptr %53, i64 %372
  %374 = getelementptr double, ptr %373, i64 %330
  %375 = load double, ptr %374, align 8, !tbaa !9
  %376 = getelementptr double, ptr %373, i64 %333
  %377 = load double, ptr %376, align 8, !tbaa !9
  %378 = fmul double %377, %377
  %379 = call double @llvm.fmuladd.f64(double %375, double %375, double %378)
  %380 = getelementptr double, ptr %19, i64 %.1569650
  store double %379, ptr %380, align 8, !tbaa !9
  %381 = add nuw i64 %.1569650, 2
  %exitcond669.not.1 = icmp eq i64 %372, %339
  br i1 %exitcond669.not.1, label %._crit_edge653, label %.lr.ph652, !llvm.loop !19

._crit_edge653:                                   ; preds = %.lr.ph652.prol.loopexit, %.lr.ph652, %middle.block688
  %.lcssa675 = phi double [ %353, %middle.block688 ], [ %.lcssa707.unr, %.lr.ph652.prol.loopexit ], [ %375, %.lr.ph652 ]
  %.lcssa = phi double [ %352, %middle.block688 ], [ %.lcssa706.unr, %.lr.ph652.prol.loopexit ], [ %377, %.lr.ph652 ]
  store double %.lcssa675, ptr %30, align 8, !tbaa !9
  store double %.lcssa, ptr %31, align 8, !tbaa !9
  br label %382

382:                                              ; preds = %._crit_edge653, %329
  %383 = call i64 @f2c_idamax(ptr noundef nonnull %4, ptr noundef nonnull %19, ptr noundef nonnull @c__1) #6
  %384 = getelementptr double, ptr %53, i64 %383
  %385 = getelementptr double, ptr %384, i64 %330
  %386 = getelementptr double, ptr %384, i64 %333
  %387 = call i32 @dlartg_(ptr noundef %385, ptr noundef %386, ptr noundef nonnull %33, ptr noundef nonnull %34, ptr noundef nonnull %32) #6
  %388 = call i32 @f2c_drot(ptr noundef nonnull %4, ptr noundef %gep657, ptr noundef nonnull @c__1, ptr noundef %gep659, ptr noundef nonnull @c__1, ptr noundef nonnull %33, ptr noundef nonnull %34) #6
  store double 0.000000e+00, ptr %386, align 8, !tbaa !9
  br label %389

389:                                              ; preds = %322, %382, %327
  %390 = add nuw nsw i64 %.1571663, 1
  %391 = load i64, ptr %28, align 8, !tbaa !5
  %.not605.not = icmp slt i64 %.1571663, %391
  %indvar.next684 = add i64 %indvar683, 1
  br i1 %.not605.not, label %.lr.ph665, label %.loopexit, !llvm.loop !20

.loopexit:                                        ; preds = %389, %309, %.loopexit637, %215
  br i1 %.not599626, label %419, label %392

392:                                              ; preds = %.loopexit
  %393 = load i64, ptr %4, align 8, !tbaa !5
  %394 = load i64, ptr %22, align 8, !tbaa !5
  %395 = sub nsw i64 %393, %394
  store i64 %395, ptr %28, align 8, !tbaa !5
  %396 = call i64 @llvm.smax.i64(i64 %395, i64 1)
  store i64 %396, ptr %29, align 8, !tbaa !5
  %397 = getelementptr double, ptr %7, i64 %394
  %398 = call i32 @dlascl_(ptr noundef nonnull @.str.11, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %43, ptr noundef nonnull %39, ptr noundef nonnull %28, ptr noundef nonnull @c__1, ptr noundef %397, ptr noundef nonnull %29, ptr noundef nonnull %40) #6
  %399 = load i64, ptr %4, align 8, !tbaa !5
  %400 = load i64, ptr %22, align 8, !tbaa !5
  %401 = sub nsw i64 %399, %400
  store i64 %401, ptr %28, align 8, !tbaa !5
  %402 = call i64 @llvm.smax.i64(i64 %401, i64 1)
  store i64 %402, ptr %29, align 8, !tbaa !5
  %403 = getelementptr double, ptr %8, i64 %400
  %404 = call i32 @dlascl_(ptr noundef nonnull @.str.11, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %43, ptr noundef nonnull %39, ptr noundef nonnull %28, ptr noundef nonnull @c__1, ptr noundef %403, ptr noundef nonnull %29, ptr noundef nonnull %40) #6
  %405 = load i64, ptr %22, align 8, !tbaa !5
  %406 = icmp eq i64 %405, 0
  br i1 %406, label %407, label %412

407:                                              ; preds = %392
  %or.cond21 = select i1 %82, i1 true, i1 %81
  %408 = load i64, ptr %42, align 8
  %409 = icmp eq i64 %408, 0
  %or.cond23 = select i1 %or.cond21, i1 %409, i1 false
  br i1 %or.cond23, label %410, label %419

410:                                              ; preds = %407
  %411 = call i32 @dlascl_(ptr noundef nonnull @.str.11, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %43, ptr noundef nonnull %39, ptr noundef nonnull %4, ptr noundef nonnull @c__1, ptr noundef %18, ptr noundef nonnull %4, ptr noundef nonnull %40) #6
  br label %419

412:                                              ; preds = %392
  %413 = load i64, ptr %13, align 8, !tbaa !5
  %414 = add nsw i64 %413, -1
  store i64 %414, ptr %28, align 8, !tbaa !5
  %415 = call i32 @dlascl_(ptr noundef nonnull @.str.11, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %43, ptr noundef nonnull %39, ptr noundef nonnull %28, ptr noundef nonnull @c__1, ptr noundef %7, ptr noundef nonnull %4, ptr noundef nonnull %40) #6
  %416 = load i64, ptr %13, align 8, !tbaa !5
  %417 = add nsw i64 %416, -1
  store i64 %417, ptr %28, align 8, !tbaa !5
  %418 = call i32 @dlascl_(ptr noundef nonnull @.str.11, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %43, ptr noundef nonnull %39, ptr noundef nonnull %28, ptr noundef nonnull @c__1, ptr noundef %8, ptr noundef nonnull %4, ptr noundef nonnull %40) #6
  br label %419

419:                                              ; preds = %412, %407, %410, %.loopexit
  store double %157, ptr %19, align 8, !tbaa !9
  br label %420

420:                                              ; preds = %163, %419, %.thread619
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %46) #6
  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 8, 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 1, 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 1, ptr nonnull %35) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %34) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %33) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %32) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %31) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %30) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %29) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %28) #6
  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 @dhseqr_(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 @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 @dgebal_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

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

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

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

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

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

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

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

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

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

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

declare i32 @f2c_drot(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) #5

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

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare <2 x double> @llvm.fmuladd.v2f64(<2 x double>, <2 x double>, <2 x double>) #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 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #5 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
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, !14, !15}
!13 = !{!"llvm.loop.mustprogress"}
!14 = !{!"llvm.loop.isvectorized", i32 1}
!15 = !{!"llvm.loop.unroll.runtime.disable"}
!16 = distinct !{!16, !13, !14}
!17 = distinct !{!17, !13}
!18 = distinct !{!18, !13, !14, !15}
!19 = distinct !{!19, !13, !14}
!20 = distinct !{!20, !13}


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