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

155:                                              ; preds = %23
  %156 = load ptr, ptr %24, align 8, !tbaa !5
  %157 = call i32 @lsame_(ptr noundef %156, ptr noundef @.str.4)
  %158 = icmp ne i32 %157, 0
  br i1 %158, label %169, label %159

159:                                              ; preds = %155
  %160 = load ptr, ptr %24, align 8, !tbaa !5
  %161 = call i32 @lsame_(ptr noundef %160, ptr noundef @.str.5)
  %162 = icmp ne i32 %161, 0
  br i1 %162, label %169, label %163

163:                                              ; preds = %159
  %164 = load ptr, ptr %24, align 8, !tbaa !5
  %165 = call i32 @lsame_(ptr noundef %164, ptr noundef @.str.3)
  %166 = icmp ne i32 %165, 0
  br i1 %166, label %169, label %167

167:                                              ; preds = %163
  %168 = load ptr, ptr %46, align 8, !tbaa !5
  store i32 -1, ptr %168, align 4, !tbaa !9
  br label %271

169:                                              ; preds = %163, %159, %155, %23
  %170 = load i32, ptr %76, align 4, !tbaa !9
  %171 = icmp ne i32 %170, 0
  br i1 %171, label %178, label %172

172:                                              ; preds = %169
  %173 = load ptr, ptr %25, align 8, !tbaa !5
  %174 = call i32 @lsame_(ptr noundef %173, ptr noundef @.str.1)
  %175 = icmp ne i32 %174, 0
  br i1 %175, label %178, label %176

176:                                              ; preds = %172
  %177 = load ptr, ptr %46, align 8, !tbaa !5
  store i32 -2, ptr %177, align 4, !tbaa !9
  br label %270

178:                                              ; preds = %172, %169
  %179 = load i32, ptr %82, align 4, !tbaa !9
  %180 = icmp ne i32 %179, 0
  br i1 %180, label %187, label %181

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

185:                                              ; preds = %181
  %186 = load ptr, ptr %46, align 8, !tbaa !5
  store i32 -3, ptr %186, align 4, !tbaa !9
  br label %269

187:                                              ; preds = %181, %178
  %188 = load i32, ptr %83, align 4, !tbaa !9
  %189 = icmp ne i32 %188, 0
  br i1 %189, label %199, label %190

190:                                              ; preds = %187
  %191 = load i32, ptr %79, align 4, !tbaa !9
  %192 = icmp ne i32 %191, 0
  br i1 %192, label %199, label %193

193:                                              ; preds = %190
  %194 = load i32, ptr %77, align 4, !tbaa !9
  %195 = icmp ne i32 %194, 0
  br i1 %195, label %199, label %196

196:                                              ; preds = %193
  %197 = load i32, ptr %84, align 4, !tbaa !9
  %198 = icmp ne i32 %197, 0
  br i1 %198, label %199, label %211

199:                                              ; preds = %196, %193, %190, %187
  %200 = load i32, ptr %79, align 4, !tbaa !9
  %201 = icmp ne i32 %200, 0
  br i1 %201, label %205, label %202

202:                                              ; preds = %199
  %203 = load i32, ptr %77, align 4, !tbaa !9
  %204 = icmp ne i32 %203, 0
  br i1 %204, label %205, label %213

205:                                              ; preds = %202, %199
  %206 = load i32, ptr %76, align 4, !tbaa !9
  %207 = icmp ne i32 %206, 0
  br i1 %207, label %208, label %211

208:                                              ; preds = %205
  %209 = load i32, ptr %82, align 4, !tbaa !9
  %210 = icmp ne i32 %209, 0
  br i1 %210, label %213, label %211

211:                                              ; preds = %208, %205, %196
  %212 = load ptr, ptr %46, align 8, !tbaa !5
  store i32 -4, ptr %212, align 4, !tbaa !9
  br label %268

213:                                              ; preds = %208, %202
  %214 = load ptr, ptr %28, align 8, !tbaa !5
  %215 = load i32, ptr %214, align 4, !tbaa !9
  %216 = icmp slt i32 %215, 0
  br i1 %216, label %217, label %219

217:                                              ; preds = %213
  %218 = load ptr, ptr %46, align 8, !tbaa !5
  store i32 -5, ptr %218, align 4, !tbaa !9
  br label %267

219:                                              ; preds = %213
  %220 = load ptr, ptr %30, align 8, !tbaa !5
  %221 = load i32, ptr %220, align 4, !tbaa !9
  %222 = load ptr, ptr %28, align 8, !tbaa !5
  %223 = load i32, ptr %222, align 4, !tbaa !9
  %224 = icmp sge i32 1, %223
  br i1 %224, label %225, label %226

225:                                              ; preds = %219
  br label %229

226:                                              ; preds = %219
  %227 = load ptr, ptr %28, align 8, !tbaa !5
  %228 = load i32, ptr %227, align 4, !tbaa !9
  br label %229

229:                                              ; preds = %226, %225
  %230 = phi i32 [ 1, %225 ], [ %228, %226 ]
  %231 = icmp slt i32 %221, %230
  br i1 %231, label %232, label %234

232:                                              ; preds = %229
  %233 = load ptr, ptr %46, align 8, !tbaa !5
  store i32 -7, ptr %233, align 4, !tbaa !9
  br label %266

234:                                              ; preds = %229
  %235 = load ptr, ptr %34, align 8, !tbaa !5
  %236 = load i32, ptr %235, align 4, !tbaa !9
  %237 = icmp slt i32 %236, 1
  br i1 %237, label %247, label %238

238:                                              ; preds = %234
  %239 = load i32, ptr %76, align 4, !tbaa !9
  %240 = icmp ne i32 %239, 0
  br i1 %240, label %241, label %249

241:                                              ; preds = %238
  %242 = load ptr, ptr %34, align 8, !tbaa !5
  %243 = load i32, ptr %242, align 4, !tbaa !9
  %244 = load ptr, ptr %28, align 8, !tbaa !5
  %245 = load i32, ptr %244, align 4, !tbaa !9
  %246 = icmp slt i32 %243, %245
  br i1 %246, label %247, label %249

247:                                              ; preds = %241, %234
  %248 = load ptr, ptr %46, align 8, !tbaa !5
  store i32 -11, ptr %248, align 4, !tbaa !9
  br label %265

249:                                              ; preds = %241, %238
  %250 = load ptr, ptr %36, align 8, !tbaa !5
  %251 = load i32, ptr %250, align 4, !tbaa !9
  %252 = icmp slt i32 %251, 1
  br i1 %252, label %262, label %253

253:                                              ; preds = %249
  %254 = load i32, ptr %82, align 4, !tbaa !9
  %255 = icmp ne i32 %254, 0
  br i1 %255, label %256, label %264

256:                                              ; preds = %253
  %257 = load ptr, ptr %36, align 8, !tbaa !5
  %258 = load i32, ptr %257, align 4, !tbaa !9
  %259 = load ptr, ptr %28, align 8, !tbaa !5
  %260 = load i32, ptr %259, align 4, !tbaa !9
  %261 = icmp slt i32 %258, %260
  br i1 %261, label %262, label %264

262:                                              ; preds = %256, %249
  %263 = load ptr, ptr %46, align 8, !tbaa !5
  store i32 -13, ptr %263, align 4, !tbaa !9
  br label %264

264:                                              ; preds = %262, %256, %253
  br label %265

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

266:                                              ; preds = %265, %232
  br label %267

267:                                              ; preds = %266, %217
  br label %268

268:                                              ; preds = %267, %211
  br label %269

269:                                              ; preds = %268, %185
  br label %270

270:                                              ; preds = %269, %176
  br label %271

271:                                              ; preds = %270, %167
  %272 = load ptr, ptr %46, align 8, !tbaa !5
  %273 = load i32, ptr %272, align 4, !tbaa !9
  %274 = icmp eq i32 %273, 0
  br i1 %274, label %275, label %648

275:                                              ; preds = %271
  %276 = load ptr, ptr %28, align 8, !tbaa !5
  %277 = load i32, ptr %276, align 4, !tbaa !9
  %278 = icmp eq i32 %277, 0
  br i1 %278, label %279, label %280

279:                                              ; preds = %275
  store i32 1, ptr %74, align 4, !tbaa !9
  store i32 1, ptr %75, align 4, !tbaa !9
  br label %633

280:                                              ; preds = %275
  %281 = load ptr, ptr %28, align 8, !tbaa !5
  %282 = load i32, ptr %281, align 4, !tbaa !9
  %283 = load ptr, ptr %28, align 8, !tbaa !5
  %284 = load i32, ptr %283, align 4, !tbaa !9
  %285 = load ptr, ptr %28, align 8, !tbaa !5
  %286 = load ptr, ptr %28, align 8, !tbaa !5
  %287 = call i32 @ilaenv_(ptr noundef @c__1, ptr noundef @.str.6, ptr noundef @.str.7, ptr noundef %285, ptr noundef @c__1, ptr noundef %286, ptr noundef @c__0, i32 noundef 6, i32 noundef 1)
  %288 = mul nsw i32 %284, %287
  %289 = add nsw i32 %282, %288
  store i32 %289, ptr %75, align 4, !tbaa !9
  %290 = load i32, ptr %76, align 4, !tbaa !9
  %291 = icmp ne i32 %290, 0
  br i1 %291, label %292, label %350

292:                                              ; preds = %280
  %293 = getelementptr inbounds [1 x i32], ptr %72, i64 0, i64 0
  %294 = load ptr, ptr %28, align 8, !tbaa !5
  %295 = load ptr, ptr %29, align 8, !tbaa !5
  %296 = load i32, ptr %48, align 4, !tbaa !9
  %297 = sext i32 %296 to i64
  %298 = getelementptr inbounds double, ptr %295, i64 %297
  %299 = load ptr, ptr %30, align 8, !tbaa !5
  %300 = load ptr, ptr %33, align 8, !tbaa !5
  %301 = load i32, ptr %50, align 4, !tbaa !9
  %302 = sext i32 %301 to i64
  %303 = getelementptr inbounds double, ptr %300, i64 %302
  %304 = load ptr, ptr %34, align 8, !tbaa !5
  %305 = load ptr, ptr %35, align 8, !tbaa !5
  %306 = load i32, ptr %52, align 4, !tbaa !9
  %307 = sext i32 %306 to i64
  %308 = getelementptr inbounds double, ptr %305, i64 %307
  %309 = load ptr, ptr %36, align 8, !tbaa !5
  %310 = load ptr, ptr %28, align 8, !tbaa !5
  %311 = load ptr, ptr %43, align 8, !tbaa !5
  %312 = getelementptr inbounds double, ptr %311, i64 1
  call void @dtrevc3_(ptr noundef @.str.8, ptr noundef @.str.3, ptr noundef %293, ptr noundef %294, ptr noundef %298, ptr noundef %299, ptr noundef %303, ptr noundef %304, ptr noundef %308, ptr noundef %309, ptr noundef %310, ptr noundef %63, ptr noundef %312, ptr noundef @c_n1, ptr noundef %60)
  %313 = load ptr, ptr %43, align 8, !tbaa !5
  %314 = getelementptr inbounds double, ptr %313, i64 1
  %315 = load double, ptr %314, align 8, !tbaa !11
  %316 = fptosi double %315 to i32
  store i32 %316, ptr %89, align 4, !tbaa !9
  %317 = load i32, ptr %75, align 4, !tbaa !9
  store i32 %317, ptr %53, align 4, !tbaa !9
  %318 = load ptr, ptr %28, align 8, !tbaa !5
  %319 = load i32, ptr %318, align 4, !tbaa !9
  %320 = load i32, ptr %89, align 4, !tbaa !9
  %321 = add nsw i32 %319, %320
  store i32 %321, ptr %54, align 4, !tbaa !9
  %322 = load i32, ptr %53, align 4, !tbaa !9
  %323 = load i32, ptr %54, align 4, !tbaa !9
  %324 = icmp sge i32 %322, %323
  br i1 %324, label %325, label %327

325:                                              ; preds = %292
  %326 = load i32, ptr %53, align 4, !tbaa !9
  br label %329

327:                                              ; preds = %292
  %328 = load i32, ptr %54, align 4, !tbaa !9
  br label %329

329:                                              ; preds = %327, %325
  %330 = phi i32 [ %326, %325 ], [ %328, %327 ]
  store i32 %330, ptr %75, align 4, !tbaa !9
  %331 = load ptr, ptr %28, align 8, !tbaa !5
  %332 = load ptr, ptr %28, align 8, !tbaa !5
  %333 = load ptr, ptr %29, align 8, !tbaa !5
  %334 = load i32, ptr %48, align 4, !tbaa !9
  %335 = sext i32 %334 to i64
  %336 = getelementptr inbounds double, ptr %333, i64 %335
  %337 = load ptr, ptr %30, align 8, !tbaa !5
  %338 = load ptr, ptr %31, align 8, !tbaa !5
  %339 = getelementptr inbounds double, ptr %338, i64 1
  %340 = load ptr, ptr %32, align 8, !tbaa !5
  %341 = getelementptr inbounds double, ptr %340, i64 1
  %342 = load ptr, ptr %33, align 8, !tbaa !5
  %343 = load i32, ptr %50, align 4, !tbaa !9
  %344 = sext i32 %343 to i64
  %345 = getelementptr inbounds double, ptr %342, i64 %344
  %346 = load ptr, ptr %34, align 8, !tbaa !5
  %347 = load ptr, ptr %43, align 8, !tbaa !5
  %348 = getelementptr inbounds double, ptr %347, i64 1
  %349 = load ptr, ptr %46, align 8, !tbaa !5
  call void @dhseqr_(ptr noundef @.str.4, ptr noundef @.str, ptr noundef %331, ptr noundef @c__1, ptr noundef %332, ptr noundef %336, ptr noundef %337, ptr noundef %339, ptr noundef %341, ptr noundef %345, ptr noundef %346, ptr noundef %348, ptr noundef @c_n1, ptr noundef %349)
  br label %456

350:                                              ; preds = %280
  %351 = load i32, ptr %82, align 4, !tbaa !9
  %352 = icmp ne i32 %351, 0
  br i1 %352, label %353, label %411

353:                                              ; preds = %350
  %354 = getelementptr inbounds [1 x i32], ptr %72, i64 0, i64 0
  %355 = load ptr, ptr %28, align 8, !tbaa !5
  %356 = load ptr, ptr %29, align 8, !tbaa !5
  %357 = load i32, ptr %48, align 4, !tbaa !9
  %358 = sext i32 %357 to i64
  %359 = getelementptr inbounds double, ptr %356, i64 %358
  %360 = load ptr, ptr %30, align 8, !tbaa !5
  %361 = load ptr, ptr %33, align 8, !tbaa !5
  %362 = load i32, ptr %50, align 4, !tbaa !9
  %363 = sext i32 %362 to i64
  %364 = getelementptr inbounds double, ptr %361, i64 %363
  %365 = load ptr, ptr %34, align 8, !tbaa !5
  %366 = load ptr, ptr %35, align 8, !tbaa !5
  %367 = load i32, ptr %52, align 4, !tbaa !9
  %368 = sext i32 %367 to i64
  %369 = getelementptr inbounds double, ptr %366, i64 %368
  %370 = load ptr, ptr %36, align 8, !tbaa !5
  %371 = load ptr, ptr %28, align 8, !tbaa !5
  %372 = load ptr, ptr %43, align 8, !tbaa !5
  %373 = getelementptr inbounds double, ptr %372, i64 1
  call void @dtrevc3_(ptr noundef @.str.9, ptr noundef @.str.3, ptr noundef %354, ptr noundef %355, ptr noundef %359, ptr noundef %360, ptr noundef %364, ptr noundef %365, ptr noundef %369, ptr noundef %370, ptr noundef %371, ptr noundef %63, ptr noundef %373, ptr noundef @c_n1, ptr noundef %60)
  %374 = load ptr, ptr %43, align 8, !tbaa !5
  %375 = getelementptr inbounds double, ptr %374, i64 1
  %376 = load double, ptr %375, align 8, !tbaa !11
  %377 = fptosi double %376 to i32
  store i32 %377, ptr %89, align 4, !tbaa !9
  %378 = load i32, ptr %75, align 4, !tbaa !9
  store i32 %378, ptr %53, align 4, !tbaa !9
  %379 = load ptr, ptr %28, align 8, !tbaa !5
  %380 = load i32, ptr %379, align 4, !tbaa !9
  %381 = load i32, ptr %89, align 4, !tbaa !9
  %382 = add nsw i32 %380, %381
  store i32 %382, ptr %54, align 4, !tbaa !9
  %383 = load i32, ptr %53, align 4, !tbaa !9
  %384 = load i32, ptr %54, align 4, !tbaa !9
  %385 = icmp sge i32 %383, %384
  br i1 %385, label %386, label %388

386:                                              ; preds = %353
  %387 = load i32, ptr %53, align 4, !tbaa !9
  br label %390

388:                                              ; preds = %353
  %389 = load i32, ptr %54, align 4, !tbaa !9
  br label %390

390:                                              ; preds = %388, %386
  %391 = phi i32 [ %387, %386 ], [ %389, %388 ]
  store i32 %391, ptr %75, align 4, !tbaa !9
  %392 = load ptr, ptr %28, align 8, !tbaa !5
  %393 = load ptr, ptr %28, align 8, !tbaa !5
  %394 = load ptr, ptr %29, align 8, !tbaa !5
  %395 = load i32, ptr %48, align 4, !tbaa !9
  %396 = sext i32 %395 to i64
  %397 = getelementptr inbounds double, ptr %394, i64 %396
  %398 = load ptr, ptr %30, align 8, !tbaa !5
  %399 = load ptr, ptr %31, align 8, !tbaa !5
  %400 = getelementptr inbounds double, ptr %399, i64 1
  %401 = load ptr, ptr %32, align 8, !tbaa !5
  %402 = getelementptr inbounds double, ptr %401, i64 1
  %403 = load ptr, ptr %35, align 8, !tbaa !5
  %404 = load i32, ptr %52, align 4, !tbaa !9
  %405 = sext i32 %404 to i64
  %406 = getelementptr inbounds double, ptr %403, i64 %405
  %407 = load ptr, ptr %36, align 8, !tbaa !5
  %408 = load ptr, ptr %43, align 8, !tbaa !5
  %409 = getelementptr inbounds double, ptr %408, i64 1
  %410 = load ptr, ptr %46, align 8, !tbaa !5
  call void @dhseqr_(ptr noundef @.str.4, ptr noundef @.str, ptr noundef %392, ptr noundef @c__1, ptr noundef %393, ptr noundef %397, ptr noundef %398, ptr noundef %400, ptr noundef %402, ptr noundef %406, ptr noundef %407, ptr noundef %409, ptr noundef @c_n1, ptr noundef %410)
  br label %455

411:                                              ; preds = %350
  %412 = load i32, ptr %83, align 4, !tbaa !9
  %413 = icmp ne i32 %412, 0
  br i1 %413, label %414, label %434

414:                                              ; preds = %411
  %415 = load ptr, ptr %28, align 8, !tbaa !5
  %416 = load ptr, ptr %28, align 8, !tbaa !5
  %417 = load ptr, ptr %29, align 8, !tbaa !5
  %418 = load i32, ptr %48, align 4, !tbaa !9
  %419 = sext i32 %418 to i64
  %420 = getelementptr inbounds double, ptr %417, i64 %419
  %421 = load ptr, ptr %30, align 8, !tbaa !5
  %422 = load ptr, ptr %31, align 8, !tbaa !5
  %423 = getelementptr inbounds double, ptr %422, i64 1
  %424 = load ptr, ptr %32, align 8, !tbaa !5
  %425 = getelementptr inbounds double, ptr %424, i64 1
  %426 = load ptr, ptr %35, align 8, !tbaa !5
  %427 = load i32, ptr %52, align 4, !tbaa !9
  %428 = sext i32 %427 to i64
  %429 = getelementptr inbounds double, ptr %426, i64 %428
  %430 = load ptr, ptr %36, align 8, !tbaa !5
  %431 = load ptr, ptr %43, align 8, !tbaa !5
  %432 = getelementptr inbounds double, ptr %431, i64 1
  %433 = load ptr, ptr %46, align 8, !tbaa !5
  call void @dhseqr_(ptr noundef @.str.2, ptr noundef @.str.1, ptr noundef %415, ptr noundef @c__1, ptr noundef %416, ptr noundef %420, ptr noundef %421, ptr noundef %423, ptr noundef %425, ptr noundef %429, ptr noundef %430, ptr noundef %432, ptr noundef @c_n1, ptr noundef %433)
  br label %454

434:                                              ; preds = %411
  %435 = load ptr, ptr %28, align 8, !tbaa !5
  %436 = load ptr, ptr %28, align 8, !tbaa !5
  %437 = load ptr, ptr %29, align 8, !tbaa !5
  %438 = load i32, ptr %48, align 4, !tbaa !9
  %439 = sext i32 %438 to i64
  %440 = getelementptr inbounds double, ptr %437, i64 %439
  %441 = load ptr, ptr %30, align 8, !tbaa !5
  %442 = load ptr, ptr %31, align 8, !tbaa !5
  %443 = getelementptr inbounds double, ptr %442, i64 1
  %444 = load ptr, ptr %32, align 8, !tbaa !5
  %445 = getelementptr inbounds double, ptr %444, i64 1
  %446 = load ptr, ptr %35, align 8, !tbaa !5
  %447 = load i32, ptr %52, align 4, !tbaa !9
  %448 = sext i32 %447 to i64
  %449 = getelementptr inbounds double, ptr %446, i64 %448
  %450 = load ptr, ptr %36, align 8, !tbaa !5
  %451 = load ptr, ptr %43, align 8, !tbaa !5
  %452 = getelementptr inbounds double, ptr %451, i64 1
  %453 = load ptr, ptr %46, align 8, !tbaa !5
  call void @dhseqr_(ptr noundef @.str.4, ptr noundef @.str.1, ptr noundef %435, ptr noundef @c__1, ptr noundef %436, ptr noundef %440, ptr noundef %441, ptr noundef %443, ptr noundef %445, ptr noundef %449, ptr noundef %450, ptr noundef %452, ptr noundef @c_n1, ptr noundef %453)
  br label %454

454:                                              ; preds = %434, %414
  br label %455

455:                                              ; preds = %454, %390
  br label %456

456:                                              ; preds = %455, %329
  %457 = load ptr, ptr %43, align 8, !tbaa !5
  %458 = getelementptr inbounds double, ptr %457, i64 1
  %459 = load double, ptr %458, align 8, !tbaa !11
  %460 = fptosi double %459 to i32
  store i32 %460, ptr %78, align 4, !tbaa !9
  %461 = load i32, ptr %76, align 4, !tbaa !9
  %462 = icmp ne i32 %461, 0
  br i1 %462, label %525, label %463

463:                                              ; preds = %456
  %464 = load i32, ptr %82, align 4, !tbaa !9
  %465 = icmp ne i32 %464, 0
  br i1 %465, label %525, label %466

466:                                              ; preds = %463
  %467 = load ptr, ptr %28, align 8, !tbaa !5
  %468 = load i32, ptr %467, align 4, !tbaa !9
  %469 = shl i32 %468, 1
  store i32 %469, ptr %74, align 4, !tbaa !9
  %470 = load i32, ptr %83, align 4, !tbaa !9
  %471 = icmp ne i32 %470, 0
  br i1 %471, label %492, label %472

472:                                              ; preds = %466
  %473 = load i32, ptr %74, align 4, !tbaa !9
  store i32 %473, ptr %53, align 4, !tbaa !9
  %474 = load ptr, ptr %28, align 8, !tbaa !5
  %475 = load i32, ptr %474, align 4, !tbaa !9
  %476 = load ptr, ptr %28, align 8, !tbaa !5
  %477 = load i32, ptr %476, align 4, !tbaa !9
  %478 = mul nsw i32 %475, %477
  %479 = load ptr, ptr %28, align 8, !tbaa !5
  %480 = load i32, ptr %479, align 4, !tbaa !9
  %481 = mul nsw i32 %480, 6
  %482 = add nsw i32 %478, %481
  store i32 %482, ptr %54, align 4, !tbaa !9
  %483 = load i32, ptr %53, align 4, !tbaa !9
  %484 = load i32, ptr %54, align 4, !tbaa !9
  %485 = icmp sge i32 %483, %484
  br i1 %485, label %486, label %488

486:                                              ; preds = %472
  %487 = load i32, ptr %53, align 4, !tbaa !9
  br label %490

488:                                              ; preds = %472
  %489 = load i32, ptr %54, align 4, !tbaa !9
  br label %490

490:                                              ; preds = %488, %486
  %491 = phi i32 [ %487, %486 ], [ %489, %488 ]
  store i32 %491, ptr %74, align 4, !tbaa !9
  br label %492

492:                                              ; preds = %490, %466
  %493 = load i32, ptr %75, align 4, !tbaa !9
  %494 = load i32, ptr %78, align 4, !tbaa !9
  %495 = icmp sge i32 %493, %494
  br i1 %495, label %496, label %498

496:                                              ; preds = %492
  %497 = load i32, ptr %75, align 4, !tbaa !9
  br label %500

498:                                              ; preds = %492
  %499 = load i32, ptr %78, align 4, !tbaa !9
  br label %500

500:                                              ; preds = %498, %496
  %501 = phi i32 [ %497, %496 ], [ %499, %498 ]
  store i32 %501, ptr %75, align 4, !tbaa !9
  %502 = load i32, ptr %83, align 4, !tbaa !9
  %503 = icmp ne i32 %502, 0
  br i1 %503, label %524, label %504

504:                                              ; preds = %500
  %505 = load i32, ptr %75, align 4, !tbaa !9
  store i32 %505, ptr %53, align 4, !tbaa !9
  %506 = load ptr, ptr %28, align 8, !tbaa !5
  %507 = load i32, ptr %506, align 4, !tbaa !9
  %508 = load ptr, ptr %28, align 8, !tbaa !5
  %509 = load i32, ptr %508, align 4, !tbaa !9
  %510 = mul nsw i32 %507, %509
  %511 = load ptr, ptr %28, align 8, !tbaa !5
  %512 = load i32, ptr %511, align 4, !tbaa !9
  %513 = mul nsw i32 %512, 6
  %514 = add nsw i32 %510, %513
  store i32 %514, ptr %54, align 4, !tbaa !9
  %515 = load i32, ptr %53, align 4, !tbaa !9
  %516 = load i32, ptr %54, align 4, !tbaa !9
  %517 = icmp sge i32 %515, %516
  br i1 %517, label %518, label %520

518:                                              ; preds = %504
  %519 = load i32, ptr %53, align 4, !tbaa !9
  br label %522

520:                                              ; preds = %504
  %521 = load i32, ptr %54, align 4, !tbaa !9
  br label %522

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

524:                                              ; preds = %522, %500
  br label %623

525:                                              ; preds = %463, %456
  %526 = load ptr, ptr %28, align 8, !tbaa !5
  %527 = load i32, ptr %526, align 4, !tbaa !9
  %528 = mul nsw i32 %527, 3
  store i32 %528, ptr %74, align 4, !tbaa !9
  %529 = load i32, ptr %83, align 4, !tbaa !9
  %530 = icmp ne i32 %529, 0
  br i1 %530, label %554, label %531

531:                                              ; preds = %525
  %532 = load i32, ptr %79, align 4, !tbaa !9
  %533 = icmp ne i32 %532, 0
  br i1 %533, label %554, label %534

534:                                              ; preds = %531
  %535 = load i32, ptr %74, align 4, !tbaa !9
  store i32 %535, ptr %53, align 4, !tbaa !9
  %536 = load ptr, ptr %28, align 8, !tbaa !5
  %537 = load i32, ptr %536, align 4, !tbaa !9
  %538 = load ptr, ptr %28, align 8, !tbaa !5
  %539 = load i32, ptr %538, align 4, !tbaa !9
  %540 = mul nsw i32 %537, %539
  %541 = load ptr, ptr %28, align 8, !tbaa !5
  %542 = load i32, ptr %541, align 4, !tbaa !9
  %543 = mul nsw i32 %542, 6
  %544 = add nsw i32 %540, %543
  store i32 %544, ptr %54, align 4, !tbaa !9
  %545 = load i32, ptr %53, align 4, !tbaa !9
  %546 = load i32, ptr %54, align 4, !tbaa !9
  %547 = icmp sge i32 %545, %546
  br i1 %547, label %548, label %550

548:                                              ; preds = %534
  %549 = load i32, ptr %53, align 4, !tbaa !9
  br label %552

550:                                              ; preds = %534
  %551 = load i32, ptr %54, align 4, !tbaa !9
  br label %552

552:                                              ; preds = %550, %548
  %553 = phi i32 [ %549, %548 ], [ %551, %550 ]
  store i32 %553, ptr %74, align 4, !tbaa !9
  br label %554

554:                                              ; preds = %552, %531, %525
  %555 = load i32, ptr %75, align 4, !tbaa !9
  %556 = load i32, ptr %78, align 4, !tbaa !9
  %557 = icmp sge i32 %555, %556
  br i1 %557, label %558, label %560

558:                                              ; preds = %554
  %559 = load i32, ptr %75, align 4, !tbaa !9
  br label %562

560:                                              ; preds = %554
  %561 = load i32, ptr %78, align 4, !tbaa !9
  br label %562

562:                                              ; preds = %560, %558
  %563 = phi i32 [ %559, %558 ], [ %561, %560 ]
  store i32 %563, ptr %75, align 4, !tbaa !9
  %564 = load i32, ptr %75, align 4, !tbaa !9
  store i32 %564, ptr %53, align 4, !tbaa !9
  %565 = load ptr, ptr %28, align 8, !tbaa !5
  %566 = load i32, ptr %565, align 4, !tbaa !9
  %567 = load ptr, ptr %28, align 8, !tbaa !5
  %568 = load i32, ptr %567, align 4, !tbaa !9
  %569 = sub nsw i32 %568, 1
  %570 = load ptr, ptr %28, align 8, !tbaa !5
  %571 = load ptr, ptr %28, align 8, !tbaa !5
  %572 = call i32 @ilaenv_(ptr noundef @c__1, ptr noundef @.str.10, ptr noundef @.str.7, ptr noundef %570, ptr noundef @c__1, ptr noundef %571, ptr noundef @c_n1, i32 noundef 6, i32 noundef 1)
  %573 = mul nsw i32 %569, %572
  %574 = add nsw i32 %566, %573
  store i32 %574, ptr %54, align 4, !tbaa !9
  %575 = load i32, ptr %53, align 4, !tbaa !9
  %576 = load i32, ptr %54, align 4, !tbaa !9
  %577 = icmp sge i32 %575, %576
  br i1 %577, label %578, label %580

578:                                              ; preds = %562
  %579 = load i32, ptr %53, align 4, !tbaa !9
  br label %582

580:                                              ; preds = %562
  %581 = load i32, ptr %54, align 4, !tbaa !9
  br label %582

582:                                              ; preds = %580, %578
  %583 = phi i32 [ %579, %578 ], [ %581, %580 ]
  store i32 %583, ptr %75, align 4, !tbaa !9
  %584 = load i32, ptr %83, align 4, !tbaa !9
  %585 = icmp ne i32 %584, 0
  br i1 %585, label %609, label %586

586:                                              ; preds = %582
  %587 = load i32, ptr %79, align 4, !tbaa !9
  %588 = icmp ne i32 %587, 0
  br i1 %588, label %609, label %589

589:                                              ; preds = %586
  %590 = load i32, ptr %75, align 4, !tbaa !9
  store i32 %590, ptr %53, align 4, !tbaa !9
  %591 = load ptr, ptr %28, align 8, !tbaa !5
  %592 = load i32, ptr %591, align 4, !tbaa !9
  %593 = load ptr, ptr %28, align 8, !tbaa !5
  %594 = load i32, ptr %593, align 4, !tbaa !9
  %595 = mul nsw i32 %592, %594
  %596 = load ptr, ptr %28, align 8, !tbaa !5
  %597 = load i32, ptr %596, align 4, !tbaa !9
  %598 = mul nsw i32 %597, 6
  %599 = add nsw i32 %595, %598
  store i32 %599, ptr %54, align 4, !tbaa !9
  %600 = load i32, ptr %53, align 4, !tbaa !9
  %601 = load i32, ptr %54, align 4, !tbaa !9
  %602 = icmp sge i32 %600, %601
  br i1 %602, label %603, label %605

603:                                              ; preds = %589
  %604 = load i32, ptr %53, align 4, !tbaa !9
  br label %607

605:                                              ; preds = %589
  %606 = load i32, ptr %54, align 4, !tbaa !9
  br label %607

607:                                              ; preds = %605, %603
  %608 = phi i32 [ %604, %603 ], [ %606, %605 ]
  store i32 %608, ptr %75, align 4, !tbaa !9
  br label %609

609:                                              ; preds = %607, %586, %582
  %610 = load i32, ptr %75, align 4, !tbaa !9
  store i32 %610, ptr %53, align 4, !tbaa !9
  %611 = load ptr, ptr %28, align 8, !tbaa !5
  %612 = load i32, ptr %611, align 4, !tbaa !9
  %613 = mul nsw i32 %612, 3
  store i32 %613, ptr %54, align 4, !tbaa !9
  %614 = load i32, ptr %53, align 4, !tbaa !9
  %615 = load i32, ptr %54, align 4, !tbaa !9
  %616 = icmp sge i32 %614, %615
  br i1 %616, label %617, label %619

617:                                              ; preds = %609
  %618 = load i32, ptr %53, align 4, !tbaa !9
  br label %621

619:                                              ; preds = %609
  %620 = load i32, ptr %54, align 4, !tbaa !9
  br label %621

621:                                              ; preds = %619, %617
  %622 = phi i32 [ %618, %617 ], [ %620, %619 ]
  store i32 %622, ptr %75, align 4, !tbaa !9
  br label %623

623:                                              ; preds = %621, %524
  %624 = load i32, ptr %75, align 4, !tbaa !9
  %625 = load i32, ptr %74, align 4, !tbaa !9
  %626 = icmp sge i32 %624, %625
  br i1 %626, label %627, label %629

627:                                              ; preds = %623
  %628 = load i32, ptr %75, align 4, !tbaa !9
  br label %631

629:                                              ; preds = %623
  %630 = load i32, ptr %74, align 4, !tbaa !9
  br label %631

631:                                              ; preds = %629, %627
  %632 = phi i32 [ %628, %627 ], [ %630, %629 ]
  store i32 %632, ptr %75, align 4, !tbaa !9
  br label %633

633:                                              ; preds = %631, %279
  %634 = load i32, ptr %75, align 4, !tbaa !9
  %635 = sitofp i32 %634 to double
  %636 = load ptr, ptr %43, align 8, !tbaa !5
  %637 = getelementptr inbounds double, ptr %636, i64 1
  store double %635, ptr %637, align 8, !tbaa !11
  %638 = load ptr, ptr %44, align 8, !tbaa !5
  %639 = load i32, ptr %638, align 4, !tbaa !9
  %640 = load i32, ptr %74, align 4, !tbaa !9
  %641 = icmp slt i32 %639, %640
  br i1 %641, label %642, label %647

642:                                              ; preds = %633
  %643 = load i32, ptr %81, align 4, !tbaa !9
  %644 = icmp ne i32 %643, 0
  br i1 %644, label %647, label %645

645:                                              ; preds = %642
  %646 = load ptr, ptr %46, align 8, !tbaa !5
  store i32 -21, ptr %646, align 4, !tbaa !9
  br label %647

647:                                              ; preds = %645, %642, %633
  br label %648

648:                                              ; preds = %647, %271
  %649 = load ptr, ptr %46, align 8, !tbaa !5
  %650 = load i32, ptr %649, align 4, !tbaa !9
  %651 = icmp ne i32 %650, 0
  br i1 %651, label %652, label %657

652:                                              ; preds = %648
  %653 = load ptr, ptr %46, align 8, !tbaa !5
  %654 = load i32, ptr %653, align 4, !tbaa !9
  %655 = sub nsw i32 0, %654
  store i32 %655, ptr %53, align 4, !tbaa !9
  %656 = call i32 @xerbla_(ptr noundef @.str.11, ptr noundef %53, i32 noundef 6)
  store i32 1, ptr %90, align 4
  br label %1491

657:                                              ; preds = %648
  %658 = load i32, ptr %81, align 4, !tbaa !9
  %659 = icmp ne i32 %658, 0
  br i1 %659, label %660, label %661

660:                                              ; preds = %657
  store i32 1, ptr %90, align 4
  br label %1491

661:                                              ; preds = %657
  br label %662

662:                                              ; preds = %661
  %663 = load ptr, ptr %28, align 8, !tbaa !5
  %664 = load i32, ptr %663, align 4, !tbaa !9
  %665 = icmp eq i32 %664, 0
  br i1 %665, label %666, label %667

666:                                              ; preds = %662
  store i32 1, ptr %90, align 4
  br label %1491

667:                                              ; preds = %662
  %668 = call double @dlamch_(ptr noundef @.str.5)
  store double %668, ptr %88, align 8, !tbaa !11
  %669 = call double @dlamch_(ptr noundef @.str.4)
  store double %669, ptr %80, align 8, !tbaa !11
  %670 = load double, ptr %80, align 8, !tbaa !11
  %671 = fdiv double 1.000000e+00, %670
  store double %671, ptr %73, align 8, !tbaa !11
  call void @dlabad_(ptr noundef %80, ptr noundef %73)
  %672 = load double, ptr %80, align 8, !tbaa !11
  %673 = call double @sqrt(double noundef %672) #5
  %674 = load double, ptr %88, align 8, !tbaa !11
  %675 = fdiv double %673, %674
  store double %675, ptr %80, align 8, !tbaa !11
  %676 = load double, ptr %80, align 8, !tbaa !11
  %677 = fdiv double 1.000000e+00, %676
  store double %677, ptr %73, align 8, !tbaa !11
  store i32 0, ptr %67, align 4, !tbaa !9
  %678 = load ptr, ptr %28, align 8, !tbaa !5
  %679 = load ptr, ptr %28, align 8, !tbaa !5
  %680 = load ptr, ptr %29, align 8, !tbaa !5
  %681 = load i32, ptr %48, align 4, !tbaa !9
  %682 = sext i32 %681 to i64
  %683 = getelementptr inbounds double, ptr %680, i64 %682
  %684 = load ptr, ptr %30, align 8, !tbaa !5
  %685 = getelementptr inbounds [1 x double], ptr %87, i64 0, i64 0
  %686 = call double @dlange_(ptr noundef @.str.12, ptr noundef %678, ptr noundef %679, ptr noundef %683, ptr noundef %684, ptr noundef %685)
  store double %686, ptr %59, align 8, !tbaa !11
  store i32 0, ptr %69, align 4, !tbaa !9
  %687 = load double, ptr %59, align 8, !tbaa !11
  %688 = fcmp ogt double %687, 0.000000e+00
  br i1 %688, label %689, label %695

689:                                              ; preds = %667
  %690 = load double, ptr %59, align 8, !tbaa !11
  %691 = load double, ptr %80, align 8, !tbaa !11
  %692 = fcmp olt double %690, %691
  br i1 %692, label %693, label %695

693:                                              ; preds = %689
  store i32 1, ptr %69, align 4, !tbaa !9
  %694 = load double, ptr %80, align 8, !tbaa !11
  store double %694, ptr %70, align 8, !tbaa !11
  br label %702

695:                                              ; preds = %689, %667
  %696 = load double, ptr %59, align 8, !tbaa !11
  %697 = load double, ptr %73, align 8, !tbaa !11
  %698 = fcmp ogt double %696, %697
  br i1 %698, label %699, label %701

699:                                              ; preds = %695
  store i32 1, ptr %69, align 4, !tbaa !9
  %700 = load double, ptr %73, align 8, !tbaa !11
  store double %700, ptr %70, align 8, !tbaa !11
  br label %701

701:                                              ; preds = %699, %695
  br label %702

702:                                              ; preds = %701, %693
  %703 = load i32, ptr %69, align 4, !tbaa !9
  %704 = icmp ne i32 %703, 0
  br i1 %704, label %705, label %713

705:                                              ; preds = %702
  %706 = load ptr, ptr %28, align 8, !tbaa !5
  %707 = load ptr, ptr %28, align 8, !tbaa !5
  %708 = load ptr, ptr %29, align 8, !tbaa !5
  %709 = load i32, ptr %48, align 4, !tbaa !9
  %710 = sext i32 %709 to i64
  %711 = getelementptr inbounds double, ptr %708, i64 %710
  %712 = load ptr, ptr %30, align 8, !tbaa !5
  call void @dlascl_(ptr noundef @.str.13, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %59, ptr noundef %70, ptr noundef %706, ptr noundef %707, ptr noundef %711, ptr noundef %712, ptr noundef %60)
  br label %713

713:                                              ; preds = %705, %702
  %714 = load ptr, ptr %24, align 8, !tbaa !5
  %715 = load ptr, ptr %28, align 8, !tbaa !5
  %716 = load ptr, ptr %29, align 8, !tbaa !5
  %717 = load i32, ptr %48, align 4, !tbaa !9
  %718 = sext i32 %717 to i64
  %719 = getelementptr inbounds double, ptr %716, i64 %718
  %720 = load ptr, ptr %30, align 8, !tbaa !5
  %721 = load ptr, ptr %37, align 8, !tbaa !5
  %722 = load ptr, ptr %38, align 8, !tbaa !5
  %723 = load ptr, ptr %39, align 8, !tbaa !5
  %724 = getelementptr inbounds double, ptr %723, i64 1
  call void @dgebal_(ptr noundef %714, ptr noundef %715, ptr noundef %719, ptr noundef %720, ptr noundef %721, ptr noundef %722, ptr noundef %724, ptr noundef %60)
  %725 = load ptr, ptr %28, align 8, !tbaa !5
  %726 = load ptr, ptr %28, align 8, !tbaa !5
  %727 = load ptr, ptr %29, align 8, !tbaa !5
  %728 = load i32, ptr %48, align 4, !tbaa !9
  %729 = sext i32 %728 to i64
  %730 = getelementptr inbounds double, ptr %727, i64 %729
  %731 = load ptr, ptr %30, align 8, !tbaa !5
  %732 = getelementptr inbounds [1 x double], ptr %87, i64 0, i64 0
  %733 = call double @dlange_(ptr noundef @.str.14, ptr noundef %725, ptr noundef %726, ptr noundef %730, ptr noundef %731, ptr noundef %732)
  %734 = load ptr, ptr %40, align 8, !tbaa !5
  store double %733, ptr %734, align 8, !tbaa !11
  %735 = load i32, ptr %69, align 4, !tbaa !9
  %736 = icmp ne i32 %735, 0
  br i1 %736, label %737, label %745

737:                                              ; preds = %713
  %738 = load ptr, ptr %40, align 8, !tbaa !5
  %739 = load double, ptr %738, align 8, !tbaa !11
  %740 = getelementptr inbounds [1 x double], ptr %87, i64 0, i64 0
  store double %739, ptr %740, align 8, !tbaa !11
  %741 = getelementptr inbounds [1 x double], ptr %87, i64 0, i64 0
  call void @dlascl_(ptr noundef @.str.13, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %70, ptr noundef %59, ptr noundef @c__1, ptr noundef @c__1, ptr noundef %741, ptr noundef @c__1, ptr noundef %60)
  %742 = getelementptr inbounds [1 x double], ptr %87, i64 0, i64 0
  %743 = load double, ptr %742, align 8, !tbaa !11
  %744 = load ptr, ptr %40, align 8, !tbaa !5
  store double %743, ptr %744, align 8, !tbaa !11
  br label %745

745:                                              ; preds = %737, %713
  store i32 1, ptr %61, align 4, !tbaa !9
  %746 = load i32, ptr %61, align 4, !tbaa !9
  %747 = load ptr, ptr %28, align 8, !tbaa !5
  %748 = load i32, ptr %747, align 4, !tbaa !9
  %749 = add nsw i32 %746, %748
  store i32 %749, ptr %62, align 4, !tbaa !9
  %750 = load ptr, ptr %44, align 8, !tbaa !5
  %751 = load i32, ptr %750, align 4, !tbaa !9
  %752 = load i32, ptr %62, align 4, !tbaa !9
  %753 = sub nsw i32 %751, %752
  %754 = add nsw i32 %753, 1
  store i32 %754, ptr %53, align 4, !tbaa !9
  %755 = load ptr, ptr %28, align 8, !tbaa !5
  %756 = load ptr, ptr %37, align 8, !tbaa !5
  %757 = load ptr, ptr %38, align 8, !tbaa !5
  %758 = load ptr, ptr %29, align 8, !tbaa !5
  %759 = load i32, ptr %48, align 4, !tbaa !9
  %760 = sext i32 %759 to i64
  %761 = getelementptr inbounds double, ptr %758, i64 %760
  %762 = load ptr, ptr %30, align 8, !tbaa !5
  %763 = load ptr, ptr %43, align 8, !tbaa !5
  %764 = load i32, ptr %61, align 4, !tbaa !9
  %765 = sext i32 %764 to i64
  %766 = getelementptr inbounds double, ptr %763, i64 %765
  %767 = load ptr, ptr %43, align 8, !tbaa !5
  %768 = load i32, ptr %62, align 4, !tbaa !9
  %769 = sext i32 %768 to i64
  %770 = getelementptr inbounds double, ptr %767, i64 %769
  call void @dgehrd_(ptr noundef %755, ptr noundef %756, ptr noundef %757, ptr noundef %761, ptr noundef %762, ptr noundef %766, ptr noundef %770, ptr noundef %53, ptr noundef %60)
  %771 = load i32, ptr %76, align 4, !tbaa !9
  %772 = icmp ne i32 %771, 0
  br i1 %772, label %773, label %853

773:                                              ; preds = %745
  %774 = getelementptr inbounds [1 x i8], ptr %58, i64 0, i64 0
  store i8 76, ptr %774, align 1, !tbaa !13
  %775 = load ptr, ptr %28, align 8, !tbaa !5
  %776 = load ptr, ptr %28, align 8, !tbaa !5
  %777 = load ptr, ptr %29, align 8, !tbaa !5
  %778 = load i32, ptr %48, align 4, !tbaa !9
  %779 = sext i32 %778 to i64
  %780 = getelementptr inbounds double, ptr %777, i64 %779
  %781 = load ptr, ptr %30, align 8, !tbaa !5
  %782 = load ptr, ptr %33, align 8, !tbaa !5
  %783 = load i32, ptr %50, align 4, !tbaa !9
  %784 = sext i32 %783 to i64
  %785 = getelementptr inbounds double, ptr %782, i64 %784
  %786 = load ptr, ptr %34, align 8, !tbaa !5
  call void @dlacpy_(ptr noundef @.str.8, ptr noundef %775, ptr noundef %776, ptr noundef %780, ptr noundef %781, ptr noundef %785, ptr noundef %786)
  %787 = load ptr, ptr %44, align 8, !tbaa !5
  %788 = load i32, ptr %787, align 4, !tbaa !9
  %789 = load i32, ptr %62, align 4, !tbaa !9
  %790 = sub nsw i32 %788, %789
  %791 = add nsw i32 %790, 1
  store i32 %791, ptr %53, align 4, !tbaa !9
  %792 = load ptr, ptr %28, align 8, !tbaa !5
  %793 = load ptr, ptr %37, align 8, !tbaa !5
  %794 = load ptr, ptr %38, align 8, !tbaa !5
  %795 = load ptr, ptr %33, align 8, !tbaa !5
  %796 = load i32, ptr %50, align 4, !tbaa !9
  %797 = sext i32 %796 to i64
  %798 = getelementptr inbounds double, ptr %795, i64 %797
  %799 = load ptr, ptr %34, align 8, !tbaa !5
  %800 = load ptr, ptr %43, align 8, !tbaa !5
  %801 = load i32, ptr %61, align 4, !tbaa !9
  %802 = sext i32 %801 to i64
  %803 = getelementptr inbounds double, ptr %800, i64 %802
  %804 = load ptr, ptr %43, align 8, !tbaa !5
  %805 = load i32, ptr %62, align 4, !tbaa !9
  %806 = sext i32 %805 to i64
  %807 = getelementptr inbounds double, ptr %804, i64 %806
  call void @dorghr_(ptr noundef %792, ptr noundef %793, ptr noundef %794, ptr noundef %798, ptr noundef %799, ptr noundef %803, ptr noundef %807, ptr noundef %53, ptr noundef %60)
  %808 = load i32, ptr %61, align 4, !tbaa !9
  store i32 %808, ptr %62, align 4, !tbaa !9
  %809 = load ptr, ptr %44, align 8, !tbaa !5
  %810 = load i32, ptr %809, align 4, !tbaa !9
  %811 = load i32, ptr %62, align 4, !tbaa !9
  %812 = sub nsw i32 %810, %811
  %813 = add nsw i32 %812, 1
  store i32 %813, ptr %53, align 4, !tbaa !9
  %814 = load ptr, ptr %28, align 8, !tbaa !5
  %815 = load ptr, ptr %37, align 8, !tbaa !5
  %816 = load ptr, ptr %38, align 8, !tbaa !5
  %817 = load ptr, ptr %29, align 8, !tbaa !5
  %818 = load i32, ptr %48, align 4, !tbaa !9
  %819 = sext i32 %818 to i64
  %820 = getelementptr inbounds double, ptr %817, i64 %819
  %821 = load ptr, ptr %30, align 8, !tbaa !5
  %822 = load ptr, ptr %31, align 8, !tbaa !5
  %823 = getelementptr inbounds double, ptr %822, i64 1
  %824 = load ptr, ptr %32, align 8, !tbaa !5
  %825 = getelementptr inbounds double, ptr %824, i64 1
  %826 = load ptr, ptr %33, align 8, !tbaa !5
  %827 = load i32, ptr %50, align 4, !tbaa !9
  %828 = sext i32 %827 to i64
  %829 = getelementptr inbounds double, ptr %826, i64 %828
  %830 = load ptr, ptr %34, align 8, !tbaa !5
  %831 = load ptr, ptr %43, align 8, !tbaa !5
  %832 = load i32, ptr %62, align 4, !tbaa !9
  %833 = sext i32 %832 to i64
  %834 = getelementptr inbounds double, ptr %831, i64 %833
  %835 = load ptr, ptr %46, align 8, !tbaa !5
  call void @dhseqr_(ptr noundef @.str.4, ptr noundef @.str, ptr noundef %814, ptr noundef %815, ptr noundef %816, ptr noundef %820, ptr noundef %821, ptr noundef %823, ptr noundef %825, ptr noundef %829, ptr noundef %830, ptr noundef %834, ptr noundef %53, ptr noundef %835)
  %836 = load i32, ptr %82, align 4, !tbaa !9
  %837 = icmp ne i32 %836, 0
  br i1 %837, label %838, label %852

838:                                              ; preds = %773
  %839 = getelementptr inbounds [1 x i8], ptr %58, i64 0, i64 0
  store i8 66, ptr %839, align 1, !tbaa !13
  %840 = load ptr, ptr %28, align 8, !tbaa !5
  %841 = load ptr, ptr %28, align 8, !tbaa !5
  %842 = load ptr, ptr %33, align 8, !tbaa !5
  %843 = load i32, ptr %50, align 4, !tbaa !9
  %844 = sext i32 %843 to i64
  %845 = getelementptr inbounds double, ptr %842, i64 %844
  %846 = load ptr, ptr %34, align 8, !tbaa !5
  %847 = load ptr, ptr %35, align 8, !tbaa !5
  %848 = load i32, ptr %52, align 4, !tbaa !9
  %849 = sext i32 %848 to i64
  %850 = getelementptr inbounds double, ptr %847, i64 %849
  %851 = load ptr, ptr %36, align 8, !tbaa !5
  call void @dlacpy_(ptr noundef @.str.15, ptr noundef %840, ptr noundef %841, ptr noundef %845, ptr noundef %846, ptr noundef %850, ptr noundef %851)
  br label %852

852:                                              ; preds = %838, %773
  br label %957

853:                                              ; preds = %745
  %854 = load i32, ptr %82, align 4, !tbaa !9
  %855 = icmp ne i32 %854, 0
  br i1 %855, label %856, label %919

856:                                              ; preds = %853
  %857 = getelementptr inbounds [1 x i8], ptr %58, i64 0, i64 0
  store i8 82, ptr %857, align 1, !tbaa !13
  %858 = load ptr, ptr %28, align 8, !tbaa !5
  %859 = load ptr, ptr %28, align 8, !tbaa !5
  %860 = load ptr, ptr %29, align 8, !tbaa !5
  %861 = load i32, ptr %48, align 4, !tbaa !9
  %862 = sext i32 %861 to i64
  %863 = getelementptr inbounds double, ptr %860, i64 %862
  %864 = load ptr, ptr %30, align 8, !tbaa !5
  %865 = load ptr, ptr %35, align 8, !tbaa !5
  %866 = load i32, ptr %52, align 4, !tbaa !9
  %867 = sext i32 %866 to i64
  %868 = getelementptr inbounds double, ptr %865, i64 %867
  %869 = load ptr, ptr %36, align 8, !tbaa !5
  call void @dlacpy_(ptr noundef @.str.8, ptr noundef %858, ptr noundef %859, ptr noundef %863, ptr noundef %864, ptr noundef %868, ptr noundef %869)
  %870 = load ptr, ptr %44, align 8, !tbaa !5
  %871 = load i32, ptr %870, align 4, !tbaa !9
  %872 = load i32, ptr %62, align 4, !tbaa !9
  %873 = sub nsw i32 %871, %872
  %874 = add nsw i32 %873, 1
  store i32 %874, ptr %53, align 4, !tbaa !9
  %875 = load ptr, ptr %28, align 8, !tbaa !5
  %876 = load ptr, ptr %37, align 8, !tbaa !5
  %877 = load ptr, ptr %38, align 8, !tbaa !5
  %878 = load ptr, ptr %35, align 8, !tbaa !5
  %879 = load i32, ptr %52, align 4, !tbaa !9
  %880 = sext i32 %879 to i64
  %881 = getelementptr inbounds double, ptr %878, i64 %880
  %882 = load ptr, ptr %36, align 8, !tbaa !5
  %883 = load ptr, ptr %43, align 8, !tbaa !5
  %884 = load i32, ptr %61, align 4, !tbaa !9
  %885 = sext i32 %884 to i64
  %886 = getelementptr inbounds double, ptr %883, i64 %885
  %887 = load ptr, ptr %43, align 8, !tbaa !5
  %888 = load i32, ptr %62, align 4, !tbaa !9
  %889 = sext i32 %888 to i64
  %890 = getelementptr inbounds double, ptr %887, i64 %889
  call void @dorghr_(ptr noundef %875, ptr noundef %876, ptr noundef %877, ptr noundef %881, ptr noundef %882, ptr noundef %886, ptr noundef %890, ptr noundef %53, ptr noundef %60)
  %891 = load i32, ptr %61, align 4, !tbaa !9
  store i32 %891, ptr %62, align 4, !tbaa !9
  %892 = load ptr, ptr %44, align 8, !tbaa !5
  %893 = load i32, ptr %892, align 4, !tbaa !9
  %894 = load i32, ptr %62, align 4, !tbaa !9
  %895 = sub nsw i32 %893, %894
  %896 = add nsw i32 %895, 1
  store i32 %896, ptr %53, align 4, !tbaa !9
  %897 = load ptr, ptr %28, align 8, !tbaa !5
  %898 = load ptr, ptr %37, align 8, !tbaa !5
  %899 = load ptr, ptr %38, align 8, !tbaa !5
  %900 = load ptr, ptr %29, align 8, !tbaa !5
  %901 = load i32, ptr %48, align 4, !tbaa !9
  %902 = sext i32 %901 to i64
  %903 = getelementptr inbounds double, ptr %900, i64 %902
  %904 = load ptr, ptr %30, align 8, !tbaa !5
  %905 = load ptr, ptr %31, align 8, !tbaa !5
  %906 = getelementptr inbounds double, ptr %905, i64 1
  %907 = load ptr, ptr %32, align 8, !tbaa !5
  %908 = getelementptr inbounds double, ptr %907, i64 1
  %909 = load ptr, ptr %35, align 8, !tbaa !5
  %910 = load i32, ptr %52, align 4, !tbaa !9
  %911 = sext i32 %910 to i64
  %912 = getelementptr inbounds double, ptr %909, i64 %911
  %913 = load ptr, ptr %36, align 8, !tbaa !5
  %914 = load ptr, ptr %43, align 8, !tbaa !5
  %915 = load i32, ptr %62, align 4, !tbaa !9
  %916 = sext i32 %915 to i64
  %917 = getelementptr inbounds double, ptr %914, i64 %916
  %918 = load ptr, ptr %46, align 8, !tbaa !5
  call void @dhseqr_(ptr noundef @.str.4, ptr noundef @.str, ptr noundef %897, ptr noundef %898, ptr noundef %899, ptr noundef %903, ptr noundef %904, ptr noundef %906, ptr noundef %908, ptr noundef %912, ptr noundef %913, ptr noundef %917, ptr noundef %53, ptr noundef %918)
  br label %956

919:                                              ; preds = %853
  %920 = load i32, ptr %83, align 4, !tbaa !9
  %921 = icmp ne i32 %920, 0
  br i1 %921, label %922, label %924

922:                                              ; preds = %919
  %923 = getelementptr inbounds [1 x i8], ptr %85, i64 0, i64 0
  store i8 69, ptr %923, align 1, !tbaa !13
  br label %926

924:                                              ; preds = %919
  %925 = getelementptr inbounds [1 x i8], ptr %85, i64 0, i64 0
  store i8 83, ptr %925, align 1, !tbaa !13
  br label %926

926:                                              ; preds = %924, %922
  %927 = load i32, ptr %61, align 4, !tbaa !9
  store i32 %927, ptr %62, align 4, !tbaa !9
  %928 = load ptr, ptr %44, align 8, !tbaa !5
  %929 = load i32, ptr %928, align 4, !tbaa !9
  %930 = load i32, ptr %62, align 4, !tbaa !9
  %931 = sub nsw i32 %929, %930
  %932 = add nsw i32 %931, 1
  store i32 %932, ptr %53, align 4, !tbaa !9
  %933 = getelementptr inbounds [1 x i8], ptr %85, i64 0, i64 0
  %934 = load ptr, ptr %28, align 8, !tbaa !5
  %935 = load ptr, ptr %37, align 8, !tbaa !5
  %936 = load ptr, ptr %38, align 8, !tbaa !5
  %937 = load ptr, ptr %29, align 8, !tbaa !5
  %938 = load i32, ptr %48, align 4, !tbaa !9
  %939 = sext i32 %938 to i64
  %940 = getelementptr inbounds double, ptr %937, i64 %939
  %941 = load ptr, ptr %30, align 8, !tbaa !5
  %942 = load ptr, ptr %31, align 8, !tbaa !5
  %943 = getelementptr inbounds double, ptr %942, i64 1
  %944 = load ptr, ptr %32, align 8, !tbaa !5
  %945 = getelementptr inbounds double, ptr %944, i64 1
  %946 = load ptr, ptr %35, align 8, !tbaa !5
  %947 = load i32, ptr %52, align 4, !tbaa !9
  %948 = sext i32 %947 to i64
  %949 = getelementptr inbounds double, ptr %946, i64 %948
  %950 = load ptr, ptr %36, align 8, !tbaa !5
  %951 = load ptr, ptr %43, align 8, !tbaa !5
  %952 = load i32, ptr %62, align 4, !tbaa !9
  %953 = sext i32 %952 to i64
  %954 = getelementptr inbounds double, ptr %951, i64 %953
  %955 = load ptr, ptr %46, align 8, !tbaa !5
  call void @dhseqr_(ptr noundef %933, ptr noundef @.str.1, ptr noundef %934, ptr noundef %935, ptr noundef %936, ptr noundef %940, ptr noundef %941, ptr noundef %943, ptr noundef %945, ptr noundef %949, ptr noundef %950, ptr noundef %954, ptr noundef %53, ptr noundef %955)
  br label %956

956:                                              ; preds = %926, %856
  br label %957

957:                                              ; preds = %956, %852
  %958 = load ptr, ptr %46, align 8, !tbaa !5
  %959 = load i32, ptr %958, align 4, !tbaa !9
  %960 = icmp ne i32 %959, 0
  br i1 %960, label %961, label %962

961:                                              ; preds = %957
  br label %1404

962:                                              ; preds = %957
  %963 = load i32, ptr %76, align 4, !tbaa !9
  %964 = icmp ne i32 %963, 0
  br i1 %964, label %968, label %965

965:                                              ; preds = %962
  %966 = load i32, ptr %82, align 4, !tbaa !9
  %967 = icmp ne i32 %966, 0
  br i1 %967, label %968, label %997

968:                                              ; preds = %965, %962
  %969 = load ptr, ptr %44, align 8, !tbaa !5
  %970 = load i32, ptr %969, align 4, !tbaa !9
  %971 = load i32, ptr %62, align 4, !tbaa !9
  %972 = sub nsw i32 %970, %971
  %973 = add nsw i32 %972, 1
  store i32 %973, ptr %53, align 4, !tbaa !9
  %974 = getelementptr inbounds [1 x i8], ptr %58, i64 0, i64 0
  %975 = getelementptr inbounds [1 x i32], ptr %72, i64 0, i64 0
  %976 = load ptr, ptr %28, align 8, !tbaa !5
  %977 = load ptr, ptr %29, align 8, !tbaa !5
  %978 = load i32, ptr %48, align 4, !tbaa !9
  %979 = sext i32 %978 to i64
  %980 = getelementptr inbounds double, ptr %977, i64 %979
  %981 = load ptr, ptr %30, align 8, !tbaa !5
  %982 = load ptr, ptr %33, align 8, !tbaa !5
  %983 = load i32, ptr %50, align 4, !tbaa !9
  %984 = sext i32 %983 to i64
  %985 = getelementptr inbounds double, ptr %982, i64 %984
  %986 = load ptr, ptr %34, align 8, !tbaa !5
  %987 = load ptr, ptr %35, align 8, !tbaa !5
  %988 = load i32, ptr %52, align 4, !tbaa !9
  %989 = sext i32 %988 to i64
  %990 = getelementptr inbounds double, ptr %987, i64 %989
  %991 = load ptr, ptr %36, align 8, !tbaa !5
  %992 = load ptr, ptr %28, align 8, !tbaa !5
  %993 = load ptr, ptr %43, align 8, !tbaa !5
  %994 = load i32, ptr %62, align 4, !tbaa !9
  %995 = sext i32 %994 to i64
  %996 = getelementptr inbounds double, ptr %993, i64 %995
  call void @dtrevc3_(ptr noundef %974, ptr noundef @.str.3, ptr noundef %975, ptr noundef %976, ptr noundef %980, ptr noundef %981, ptr noundef %985, ptr noundef %986, ptr noundef %990, ptr noundef %991, ptr noundef %992, ptr noundef %63, ptr noundef %996, ptr noundef %53, ptr noundef %60)
  br label %997

997:                                              ; preds = %968, %965
  %998 = load i32, ptr %83, align 4, !tbaa !9
  %999 = icmp ne i32 %998, 0
  br i1 %999, label %1031, label %1000

1000:                                             ; preds = %997
  %1001 = load ptr, ptr %27, align 8, !tbaa !5
  %1002 = getelementptr inbounds [1 x i32], ptr %72, i64 0, i64 0
  %1003 = load ptr, ptr %28, align 8, !tbaa !5
  %1004 = load ptr, ptr %29, align 8, !tbaa !5
  %1005 = load i32, ptr %48, align 4, !tbaa !9
  %1006 = sext i32 %1005 to i64
  %1007 = getelementptr inbounds double, ptr %1004, i64 %1006
  %1008 = load ptr, ptr %30, align 8, !tbaa !5
  %1009 = load ptr, ptr %33, align 8, !tbaa !5
  %1010 = load i32, ptr %50, align 4, !tbaa !9
  %1011 = sext i32 %1010 to i64
  %1012 = getelementptr inbounds double, ptr %1009, i64 %1011
  %1013 = load ptr, ptr %34, align 8, !tbaa !5
  %1014 = load ptr, ptr %35, align 8, !tbaa !5
  %1015 = load i32, ptr %52, align 4, !tbaa !9
  %1016 = sext i32 %1015 to i64
  %1017 = getelementptr inbounds double, ptr %1014, i64 %1016
  %1018 = load ptr, ptr %36, align 8, !tbaa !5
  %1019 = load ptr, ptr %41, align 8, !tbaa !5
  %1020 = getelementptr inbounds double, ptr %1019, i64 1
  %1021 = load ptr, ptr %42, align 8, !tbaa !5
  %1022 = getelementptr inbounds double, ptr %1021, i64 1
  %1023 = load ptr, ptr %28, align 8, !tbaa !5
  %1024 = load ptr, ptr %43, align 8, !tbaa !5
  %1025 = load i32, ptr %62, align 4, !tbaa !9
  %1026 = sext i32 %1025 to i64
  %1027 = getelementptr inbounds double, ptr %1024, i64 %1026
  %1028 = load ptr, ptr %28, align 8, !tbaa !5
  %1029 = load ptr, ptr %45, align 8, !tbaa !5
  %1030 = getelementptr inbounds i32, ptr %1029, i64 1
  call void @dtrsna_(ptr noundef %1001, ptr noundef @.str.16, ptr noundef %1002, ptr noundef %1003, ptr noundef %1007, ptr noundef %1008, ptr noundef %1012, ptr noundef %1013, ptr noundef %1017, ptr noundef %1018, ptr noundef %1020, ptr noundef %1022, ptr noundef %1023, ptr noundef %63, ptr noundef %1027, ptr noundef %1028, ptr noundef %1030, ptr noundef %67)
  br label %1031

1031:                                             ; preds = %1000, %997
  %1032 = load i32, ptr %76, align 4, !tbaa !9
  %1033 = icmp ne i32 %1032, 0
  br i1 %1033, label %1034, label %1217

1034:                                             ; preds = %1031
  %1035 = load ptr, ptr %24, align 8, !tbaa !5
  %1036 = load ptr, ptr %28, align 8, !tbaa !5
  %1037 = load ptr, ptr %37, align 8, !tbaa !5
  %1038 = load ptr, ptr %38, align 8, !tbaa !5
  %1039 = load ptr, ptr %39, align 8, !tbaa !5
  %1040 = getelementptr inbounds double, ptr %1039, i64 1
  %1041 = load ptr, ptr %28, align 8, !tbaa !5
  %1042 = load ptr, ptr %33, align 8, !tbaa !5
  %1043 = load i32, ptr %50, align 4, !tbaa !9
  %1044 = sext i32 %1043 to i64
  %1045 = getelementptr inbounds double, ptr %1042, i64 %1044
  %1046 = load ptr, ptr %34, align 8, !tbaa !5
  call void @dgebak_(ptr noundef %1035, ptr noundef @.str.8, ptr noundef %1036, ptr noundef %1037, ptr noundef %1038, ptr noundef %1040, ptr noundef %1041, ptr noundef %1045, ptr noundef %1046, ptr noundef %60)
  %1047 = load ptr, ptr %28, align 8, !tbaa !5
  %1048 = load i32, ptr %1047, align 4, !tbaa !9
  store i32 %1048, ptr %53, align 4, !tbaa !9
  store i32 1, ptr %64, align 4, !tbaa !9
  br label %1049

1049:                                             ; preds = %1213, %1034
  %1050 = load i32, ptr %64, align 4, !tbaa !9
  %1051 = load i32, ptr %53, align 4, !tbaa !9
  %1052 = icmp sle i32 %1050, %1051
  br i1 %1052, label %1053, label %1216

1053:                                             ; preds = %1049
  %1054 = load ptr, ptr %32, align 8, !tbaa !5
  %1055 = load i32, ptr %64, align 4, !tbaa !9
  %1056 = sext i32 %1055 to i64
  %1057 = getelementptr inbounds double, ptr %1054, i64 %1056
  %1058 = load double, ptr %1057, align 8, !tbaa !11
  %1059 = fcmp oeq double %1058, 0.000000e+00
  br i1 %1059, label %1060, label %1079

1060:                                             ; preds = %1053
  %1061 = load ptr, ptr %28, align 8, !tbaa !5
  %1062 = load ptr, ptr %33, align 8, !tbaa !5
  %1063 = load i32, ptr %64, align 4, !tbaa !9
  %1064 = load i32, ptr %49, align 4, !tbaa !9
  %1065 = mul nsw i32 %1063, %1064
  %1066 = add nsw i32 %1065, 1
  %1067 = sext i32 %1066 to i64
  %1068 = getelementptr inbounds double, ptr %1062, i64 %1067
  %1069 = call double @dnrm2_(ptr noundef %1061, ptr noundef %1068, ptr noundef @c__1)
  %1070 = fdiv double 1.000000e+00, %1069
  store double %1070, ptr %86, align 8, !tbaa !11
  %1071 = load ptr, ptr %28, align 8, !tbaa !5
  %1072 = load ptr, ptr %33, align 8, !tbaa !5
  %1073 = load i32, ptr %64, align 4, !tbaa !9
  %1074 = load i32, ptr %49, align 4, !tbaa !9
  %1075 = mul nsw i32 %1073, %1074
  %1076 = add nsw i32 %1075, 1
  %1077 = sext i32 %1076 to i64
  %1078 = getelementptr inbounds double, ptr %1072, i64 %1077
  call void @dscal_(ptr noundef %1071, ptr noundef %86, ptr noundef %1078, ptr noundef @c__1)
  br label %1212

1079:                                             ; preds = %1053
  %1080 = load ptr, ptr %32, align 8, !tbaa !5
  %1081 = load i32, ptr %64, align 4, !tbaa !9
  %1082 = sext i32 %1081 to i64
  %1083 = getelementptr inbounds double, ptr %1080, i64 %1082
  %1084 = load double, ptr %1083, align 8, !tbaa !11
  %1085 = fcmp ogt double %1084, 0.000000e+00
  br i1 %1085, label %1086, label %1211

1086:                                             ; preds = %1079
  %1087 = load ptr, ptr %28, align 8, !tbaa !5
  %1088 = load ptr, ptr %33, align 8, !tbaa !5
  %1089 = load i32, ptr %64, align 4, !tbaa !9
  %1090 = load i32, ptr %49, align 4, !tbaa !9
  %1091 = mul nsw i32 %1089, %1090
  %1092 = add nsw i32 %1091, 1
  %1093 = sext i32 %1092 to i64
  %1094 = getelementptr inbounds double, ptr %1088, i64 %1093
  %1095 = call double @dnrm2_(ptr noundef %1087, ptr noundef %1094, ptr noundef @c__1)
  store double %1095, ptr %56, align 8, !tbaa !11
  %1096 = load ptr, ptr %28, align 8, !tbaa !5
  %1097 = load ptr, ptr %33, align 8, !tbaa !5
  %1098 = load i32, ptr %64, align 4, !tbaa !9
  %1099 = add nsw i32 %1098, 1
  %1100 = load i32, ptr %49, align 4, !tbaa !9
  %1101 = mul nsw i32 %1099, %1100
  %1102 = add nsw i32 %1101, 1
  %1103 = sext i32 %1102 to i64
  %1104 = getelementptr inbounds double, ptr %1097, i64 %1103
  %1105 = call double @dnrm2_(ptr noundef %1096, ptr noundef %1104, ptr noundef @c__1)
  store double %1105, ptr %57, align 8, !tbaa !11
  %1106 = call double @dlapy2_(ptr noundef %56, ptr noundef %57)
  %1107 = fdiv double 1.000000e+00, %1106
  store double %1107, ptr %86, align 8, !tbaa !11
  %1108 = load ptr, ptr %28, align 8, !tbaa !5
  %1109 = load ptr, ptr %33, align 8, !tbaa !5
  %1110 = load i32, ptr %64, align 4, !tbaa !9
  %1111 = load i32, ptr %49, align 4, !tbaa !9
  %1112 = mul nsw i32 %1110, %1111
  %1113 = add nsw i32 %1112, 1
  %1114 = sext i32 %1113 to i64
  %1115 = getelementptr inbounds double, ptr %1109, i64 %1114
  call void @dscal_(ptr noundef %1108, ptr noundef %86, ptr noundef %1115, ptr noundef @c__1)
  %1116 = load ptr, ptr %28, align 8, !tbaa !5
  %1117 = load ptr, ptr %33, align 8, !tbaa !5
  %1118 = load i32, ptr %64, align 4, !tbaa !9
  %1119 = add nsw i32 %1118, 1
  %1120 = load i32, ptr %49, align 4, !tbaa !9
  %1121 = mul nsw i32 %1119, %1120
  %1122 = add nsw i32 %1121, 1
  %1123 = sext i32 %1122 to i64
  %1124 = getelementptr inbounds double, ptr %1117, i64 %1123
  call void @dscal_(ptr noundef %1116, ptr noundef %86, ptr noundef %1124, ptr noundef @c__1)
  %1125 = load ptr, ptr %28, align 8, !tbaa !5
  %1126 = load i32, ptr %1125, align 4, !tbaa !9
  store i32 %1126, ptr %54, align 4, !tbaa !9
  store i32 1, ptr %65, align 4, !tbaa !9
  br label %1127

1127:                                             ; preds = %1161, %1086
  %1128 = load i32, ptr %65, align 4, !tbaa !9
  %1129 = load i32, ptr %54, align 4, !tbaa !9
  %1130 = icmp sle i32 %1128, %1129
  br i1 %1130, label %1131, label %1164

1131:                                             ; preds = %1127
  %1132 = load ptr, ptr %33, align 8, !tbaa !5
  %1133 = load i32, ptr %65, align 4, !tbaa !9
  %1134 = load i32, ptr %64, align 4, !tbaa !9
  %1135 = load i32, ptr %49, align 4, !tbaa !9
  %1136 = mul nsw i32 %1134, %1135
  %1137 = add nsw i32 %1133, %1136
  %1138 = sext i32 %1137 to i64
  %1139 = getelementptr inbounds double, ptr %1132, i64 %1138
  %1140 = load double, ptr %1139, align 8, !tbaa !11
  store double %1140, ptr %56, align 8, !tbaa !11
  %1141 = load ptr, ptr %33, align 8, !tbaa !5
  %1142 = load i32, ptr %65, align 4, !tbaa !9
  %1143 = load i32, ptr %64, align 4, !tbaa !9
  %1144 = add nsw i32 %1143, 1
  %1145 = load i32, ptr %49, align 4, !tbaa !9
  %1146 = mul nsw i32 %1144, %1145
  %1147 = add nsw i32 %1142, %1146
  %1148 = sext i32 %1147 to i64
  %1149 = getelementptr inbounds double, ptr %1141, i64 %1148
  %1150 = load double, ptr %1149, align 8, !tbaa !11
  store double %1150, ptr %57, align 8, !tbaa !11
  %1151 = load double, ptr %56, align 8, !tbaa !11
  %1152 = load double, ptr %56, align 8, !tbaa !11
  %1153 = load double, ptr %57, align 8, !tbaa !11
  %1154 = load double, ptr %57, align 8, !tbaa !11
  %1155 = fmul double %1153, %1154
  %1156 = call double @llvm.fmuladd.f64(double %1151, double %1152, double %1155)
  %1157 = load ptr, ptr %43, align 8, !tbaa !5
  %1158 = load i32, ptr %65, align 4, !tbaa !9
  %1159 = sext i32 %1158 to i64
  %1160 = getelementptr inbounds double, ptr %1157, i64 %1159
  store double %1156, ptr %1160, align 8, !tbaa !11
  br label %1161

1161:                                             ; preds = %1131
  %1162 = load i32, ptr %65, align 4, !tbaa !9
  %1163 = add nsw i32 %1162, 1
  store i32 %1163, ptr %65, align 4, !tbaa !9
  br label %1127, !llvm.loop !14

1164:                                             ; preds = %1127
  %1165 = load ptr, ptr %28, align 8, !tbaa !5
  %1166 = load ptr, ptr %43, align 8, !tbaa !5
  %1167 = getelementptr inbounds double, ptr %1166, i64 1
  %1168 = call i32 @idamax_(ptr noundef %1165, ptr noundef %1167, ptr noundef @c__1)
  store i32 %1168, ptr %65, align 4, !tbaa !9
  %1169 = load ptr, ptr %33, align 8, !tbaa !5
  %1170 = load i32, ptr %65, align 4, !tbaa !9
  %1171 = load i32, ptr %64, align 4, !tbaa !9
  %1172 = load i32, ptr %49, align 4, !tbaa !9
  %1173 = mul nsw i32 %1171, %1172
  %1174 = add nsw i32 %1170, %1173
  %1175 = sext i32 %1174 to i64
  %1176 = getelementptr inbounds double, ptr %1169, i64 %1175
  %1177 = load ptr, ptr %33, align 8, !tbaa !5
  %1178 = load i32, ptr %65, align 4, !tbaa !9
  %1179 = load i32, ptr %64, align 4, !tbaa !9
  %1180 = add nsw i32 %1179, 1
  %1181 = load i32, ptr %49, align 4, !tbaa !9
  %1182 = mul nsw i32 %1180, %1181
  %1183 = add nsw i32 %1178, %1182
  %1184 = sext i32 %1183 to i64
  %1185 = getelementptr inbounds double, ptr %1177, i64 %1184
  call void @dlartg_(ptr noundef %1176, ptr noundef %1185, ptr noundef %68, ptr noundef %71, ptr noundef %66)
  %1186 = load ptr, ptr %28, align 8, !tbaa !5
  %1187 = load ptr, ptr %33, align 8, !tbaa !5
  %1188 = load i32, ptr %64, align 4, !tbaa !9
  %1189 = load i32, ptr %49, align 4, !tbaa !9
  %1190 = mul nsw i32 %1188, %1189
  %1191 = add nsw i32 %1190, 1
  %1192 = sext i32 %1191 to i64
  %1193 = getelementptr inbounds double, ptr %1187, i64 %1192
  %1194 = load ptr, ptr %33, align 8, !tbaa !5
  %1195 = load i32, ptr %64, align 4, !tbaa !9
  %1196 = add nsw i32 %1195, 1
  %1197 = load i32, ptr %49, align 4, !tbaa !9
  %1198 = mul nsw i32 %1196, %1197
  %1199 = add nsw i32 %1198, 1
  %1200 = sext i32 %1199 to i64
  %1201 = getelementptr inbounds double, ptr %1194, i64 %1200
  call void @drot_(ptr noundef %1186, ptr noundef %1193, ptr noundef @c__1, ptr noundef %1201, ptr noundef @c__1, ptr noundef %68, ptr noundef %71)
  %1202 = load ptr, ptr %33, align 8, !tbaa !5
  %1203 = load i32, ptr %65, align 4, !tbaa !9
  %1204 = load i32, ptr %64, align 4, !tbaa !9
  %1205 = add nsw i32 %1204, 1
  %1206 = load i32, ptr %49, align 4, !tbaa !9
  %1207 = mul nsw i32 %1205, %1206
  %1208 = add nsw i32 %1203, %1207
  %1209 = sext i32 %1208 to i64
  %1210 = getelementptr inbounds double, ptr %1202, i64 %1209
  store double 0.000000e+00, ptr %1210, align 8, !tbaa !11
  br label %1211

1211:                                             ; preds = %1164, %1079
  br label %1212

1212:                                             ; preds = %1211, %1060
  br label %1213

1213:                                             ; preds = %1212
  %1214 = load i32, ptr %64, align 4, !tbaa !9
  %1215 = add nsw i32 %1214, 1
  store i32 %1215, ptr %64, align 4, !tbaa !9
  br label %1049, !llvm.loop !16

1216:                                             ; preds = %1049
  br label %1217

1217:                                             ; preds = %1216, %1031
  %1218 = load i32, ptr %82, align 4, !tbaa !9
  %1219 = icmp ne i32 %1218, 0
  br i1 %1219, label %1220, label %1403

1220:                                             ; preds = %1217
  %1221 = load ptr, ptr %24, align 8, !tbaa !5
  %1222 = load ptr, ptr %28, align 8, !tbaa !5
  %1223 = load ptr, ptr %37, align 8, !tbaa !5
  %1224 = load ptr, ptr %38, align 8, !tbaa !5
  %1225 = load ptr, ptr %39, align 8, !tbaa !5
  %1226 = getelementptr inbounds double, ptr %1225, i64 1
  %1227 = load ptr, ptr %28, align 8, !tbaa !5
  %1228 = load ptr, ptr %35, align 8, !tbaa !5
  %1229 = load i32, ptr %52, align 4, !tbaa !9
  %1230 = sext i32 %1229 to i64
  %1231 = getelementptr inbounds double, ptr %1228, i64 %1230
  %1232 = load ptr, ptr %36, align 8, !tbaa !5
  call void @dgebak_(ptr noundef %1221, ptr noundef @.str.9, ptr noundef %1222, ptr noundef %1223, ptr noundef %1224, ptr noundef %1226, ptr noundef %1227, ptr noundef %1231, ptr noundef %1232, ptr noundef %60)
  %1233 = load ptr, ptr %28, align 8, !tbaa !5
  %1234 = load i32, ptr %1233, align 4, !tbaa !9
  store i32 %1234, ptr %53, align 4, !tbaa !9
  store i32 1, ptr %64, align 4, !tbaa !9
  br label %1235

1235:                                             ; preds = %1399, %1220
  %1236 = load i32, ptr %64, align 4, !tbaa !9
  %1237 = load i32, ptr %53, align 4, !tbaa !9
  %1238 = icmp sle i32 %1236, %1237
  br i1 %1238, label %1239, label %1402

1239:                                             ; preds = %1235
  %1240 = load ptr, ptr %32, align 8, !tbaa !5
  %1241 = load i32, ptr %64, align 4, !tbaa !9
  %1242 = sext i32 %1241 to i64
  %1243 = getelementptr inbounds double, ptr %1240, i64 %1242
  %1244 = load double, ptr %1243, align 8, !tbaa !11
  %1245 = fcmp oeq double %1244, 0.000000e+00
  br i1 %1245, label %1246, label %1265

1246:                                             ; preds = %1239
  %1247 = load ptr, ptr %28, align 8, !tbaa !5
  %1248 = load ptr, ptr %35, align 8, !tbaa !5
  %1249 = load i32, ptr %64, align 4, !tbaa !9
  %1250 = load i32, ptr %51, align 4, !tbaa !9
  %1251 = mul nsw i32 %1249, %1250
  %1252 = add nsw i32 %1251, 1
  %1253 = sext i32 %1252 to i64
  %1254 = getelementptr inbounds double, ptr %1248, i64 %1253
  %1255 = call double @dnrm2_(ptr noundef %1247, ptr noundef %1254, ptr noundef @c__1)
  %1256 = fdiv double 1.000000e+00, %1255
  store double %1256, ptr %86, align 8, !tbaa !11
  %1257 = load ptr, ptr %28, align 8, !tbaa !5
  %1258 = load ptr, ptr %35, align 8, !tbaa !5
  %1259 = load i32, ptr %64, align 4, !tbaa !9
  %1260 = load i32, ptr %51, align 4, !tbaa !9
  %1261 = mul nsw i32 %1259, %1260
  %1262 = add nsw i32 %1261, 1
  %1263 = sext i32 %1262 to i64
  %1264 = getelementptr inbounds double, ptr %1258, i64 %1263
  call void @dscal_(ptr noundef %1257, ptr noundef %86, ptr noundef %1264, ptr noundef @c__1)
  br label %1398

1265:                                             ; preds = %1239
  %1266 = load ptr, ptr %32, align 8, !tbaa !5
  %1267 = load i32, ptr %64, align 4, !tbaa !9
  %1268 = sext i32 %1267 to i64
  %1269 = getelementptr inbounds double, ptr %1266, i64 %1268
  %1270 = load double, ptr %1269, align 8, !tbaa !11
  %1271 = fcmp ogt double %1270, 0.000000e+00
  br i1 %1271, label %1272, label %1397

1272:                                             ; preds = %1265
  %1273 = load ptr, ptr %28, align 8, !tbaa !5
  %1274 = load ptr, ptr %35, align 8, !tbaa !5
  %1275 = load i32, ptr %64, align 4, !tbaa !9
  %1276 = load i32, ptr %51, align 4, !tbaa !9
  %1277 = mul nsw i32 %1275, %1276
  %1278 = add nsw i32 %1277, 1
  %1279 = sext i32 %1278 to i64
  %1280 = getelementptr inbounds double, ptr %1274, i64 %1279
  %1281 = call double @dnrm2_(ptr noundef %1273, ptr noundef %1280, ptr noundef @c__1)
  store double %1281, ptr %56, align 8, !tbaa !11
  %1282 = load ptr, ptr %28, align 8, !tbaa !5
  %1283 = load ptr, ptr %35, align 8, !tbaa !5
  %1284 = load i32, ptr %64, align 4, !tbaa !9
  %1285 = add nsw i32 %1284, 1
  %1286 = load i32, ptr %51, align 4, !tbaa !9
  %1287 = mul nsw i32 %1285, %1286
  %1288 = add nsw i32 %1287, 1
  %1289 = sext i32 %1288 to i64
  %1290 = getelementptr inbounds double, ptr %1283, i64 %1289
  %1291 = call double @dnrm2_(ptr noundef %1282, ptr noundef %1290, ptr noundef @c__1)
  store double %1291, ptr %57, align 8, !tbaa !11
  %1292 = call double @dlapy2_(ptr noundef %56, ptr noundef %57)
  %1293 = fdiv double 1.000000e+00, %1292
  store double %1293, ptr %86, align 8, !tbaa !11
  %1294 = load ptr, ptr %28, align 8, !tbaa !5
  %1295 = load ptr, ptr %35, align 8, !tbaa !5
  %1296 = load i32, ptr %64, align 4, !tbaa !9
  %1297 = load i32, ptr %51, align 4, !tbaa !9
  %1298 = mul nsw i32 %1296, %1297
  %1299 = add nsw i32 %1298, 1
  %1300 = sext i32 %1299 to i64
  %1301 = getelementptr inbounds double, ptr %1295, i64 %1300
  call void @dscal_(ptr noundef %1294, ptr noundef %86, ptr noundef %1301, ptr noundef @c__1)
  %1302 = load ptr, ptr %28, align 8, !tbaa !5
  %1303 = load ptr, ptr %35, align 8, !tbaa !5
  %1304 = load i32, ptr %64, align 4, !tbaa !9
  %1305 = add nsw i32 %1304, 1
  %1306 = load i32, ptr %51, align 4, !tbaa !9
  %1307 = mul nsw i32 %1305, %1306
  %1308 = add nsw i32 %1307, 1
  %1309 = sext i32 %1308 to i64
  %1310 = getelementptr inbounds double, ptr %1303, i64 %1309
  call void @dscal_(ptr noundef %1302, ptr noundef %86, ptr noundef %1310, ptr noundef @c__1)
  %1311 = load ptr, ptr %28, align 8, !tbaa !5
  %1312 = load i32, ptr %1311, align 4, !tbaa !9
  store i32 %1312, ptr %54, align 4, !tbaa !9
  store i32 1, ptr %65, align 4, !tbaa !9
  br label %1313

1313:                                             ; preds = %1347, %1272
  %1314 = load i32, ptr %65, align 4, !tbaa !9
  %1315 = load i32, ptr %54, align 4, !tbaa !9
  %1316 = icmp sle i32 %1314, %1315
  br i1 %1316, label %1317, label %1350

1317:                                             ; preds = %1313
  %1318 = load ptr, ptr %35, align 8, !tbaa !5
  %1319 = load i32, ptr %65, align 4, !tbaa !9
  %1320 = load i32, ptr %64, align 4, !tbaa !9
  %1321 = load i32, ptr %51, align 4, !tbaa !9
  %1322 = mul nsw i32 %1320, %1321
  %1323 = add nsw i32 %1319, %1322
  %1324 = sext i32 %1323 to i64
  %1325 = getelementptr inbounds double, ptr %1318, i64 %1324
  %1326 = load double, ptr %1325, align 8, !tbaa !11
  store double %1326, ptr %56, align 8, !tbaa !11
  %1327 = load ptr, ptr %35, align 8, !tbaa !5
  %1328 = load i32, ptr %65, align 4, !tbaa !9
  %1329 = load i32, ptr %64, align 4, !tbaa !9
  %1330 = add nsw i32 %1329, 1
  %1331 = load i32, ptr %51, align 4, !tbaa !9
  %1332 = mul nsw i32 %1330, %1331
  %1333 = add nsw i32 %1328, %1332
  %1334 = sext i32 %1333 to i64
  %1335 = getelementptr inbounds double, ptr %1327, i64 %1334
  %1336 = load double, ptr %1335, align 8, !tbaa !11
  store double %1336, ptr %57, align 8, !tbaa !11
  %1337 = load double, ptr %56, align 8, !tbaa !11
  %1338 = load double, ptr %56, align 8, !tbaa !11
  %1339 = load double, ptr %57, align 8, !tbaa !11
  %1340 = load double, ptr %57, align 8, !tbaa !11
  %1341 = fmul double %1339, %1340
  %1342 = call double @llvm.fmuladd.f64(double %1337, double %1338, double %1341)
  %1343 = load ptr, ptr %43, align 8, !tbaa !5
  %1344 = load i32, ptr %65, align 4, !tbaa !9
  %1345 = sext i32 %1344 to i64
  %1346 = getelementptr inbounds double, ptr %1343, i64 %1345
  store double %1342, ptr %1346, align 8, !tbaa !11
  br label %1347

1347:                                             ; preds = %1317
  %1348 = load i32, ptr %65, align 4, !tbaa !9
  %1349 = add nsw i32 %1348, 1
  store i32 %1349, ptr %65, align 4, !tbaa !9
  br label %1313, !llvm.loop !17

1350:                                             ; preds = %1313
  %1351 = load ptr, ptr %28, align 8, !tbaa !5
  %1352 = load ptr, ptr %43, align 8, !tbaa !5
  %1353 = getelementptr inbounds double, ptr %1352, i64 1
  %1354 = call i32 @idamax_(ptr noundef %1351, ptr noundef %1353, ptr noundef @c__1)
  store i32 %1354, ptr %65, align 4, !tbaa !9
  %1355 = load ptr, ptr %35, align 8, !tbaa !5
  %1356 = load i32, ptr %65, align 4, !tbaa !9
  %1357 = load i32, ptr %64, align 4, !tbaa !9
  %1358 = load i32, ptr %51, align 4, !tbaa !9
  %1359 = mul nsw i32 %1357, %1358
  %1360 = add nsw i32 %1356, %1359
  %1361 = sext i32 %1360 to i64
  %1362 = getelementptr inbounds double, ptr %1355, i64 %1361
  %1363 = load ptr, ptr %35, align 8, !tbaa !5
  %1364 = load i32, ptr %65, align 4, !tbaa !9
  %1365 = load i32, ptr %64, align 4, !tbaa !9
  %1366 = add nsw i32 %1365, 1
  %1367 = load i32, ptr %51, align 4, !tbaa !9
  %1368 = mul nsw i32 %1366, %1367
  %1369 = add nsw i32 %1364, %1368
  %1370 = sext i32 %1369 to i64
  %1371 = getelementptr inbounds double, ptr %1363, i64 %1370
  call void @dlartg_(ptr noundef %1362, ptr noundef %1371, ptr noundef %68, ptr noundef %71, ptr noundef %66)
  %1372 = load ptr, ptr %28, align 8, !tbaa !5
  %1373 = load ptr, ptr %35, align 8, !tbaa !5
  %1374 = load i32, ptr %64, align 4, !tbaa !9
  %1375 = load i32, ptr %51, align 4, !tbaa !9
  %1376 = mul nsw i32 %1374, %1375
  %1377 = add nsw i32 %1376, 1
  %1378 = sext i32 %1377 to i64
  %1379 = getelementptr inbounds double, ptr %1373, i64 %1378
  %1380 = load ptr, ptr %35, align 8, !tbaa !5
  %1381 = load i32, ptr %64, align 4, !tbaa !9
  %1382 = add nsw i32 %1381, 1
  %1383 = load i32, ptr %51, align 4, !tbaa !9
  %1384 = mul nsw i32 %1382, %1383
  %1385 = add nsw i32 %1384, 1
  %1386 = sext i32 %1385 to i64
  %1387 = getelementptr inbounds double, ptr %1380, i64 %1386
  call void @drot_(ptr noundef %1372, ptr noundef %1379, ptr noundef @c__1, ptr noundef %1387, ptr noundef @c__1, ptr noundef %68, ptr noundef %71)
  %1388 = load ptr, ptr %35, align 8, !tbaa !5
  %1389 = load i32, ptr %65, align 4, !tbaa !9
  %1390 = load i32, ptr %64, align 4, !tbaa !9
  %1391 = add nsw i32 %1390, 1
  %1392 = load i32, ptr %51, align 4, !tbaa !9
  %1393 = mul nsw i32 %1391, %1392
  %1394 = add nsw i32 %1389, %1393
  %1395 = sext i32 %1394 to i64
  %1396 = getelementptr inbounds double, ptr %1388, i64 %1395
  store double 0.000000e+00, ptr %1396, align 8, !tbaa !11
  br label %1397

1397:                                             ; preds = %1350, %1265
  br label %1398

1398:                                             ; preds = %1397, %1246
  br label %1399

1399:                                             ; preds = %1398
  %1400 = load i32, ptr %64, align 4, !tbaa !9
  %1401 = add nsw i32 %1400, 1
  store i32 %1401, ptr %64, align 4, !tbaa !9
  br label %1235, !llvm.loop !18

1402:                                             ; preds = %1235
  br label %1403

1403:                                             ; preds = %1402, %1217
  br label %1404

1404:                                             ; preds = %1403, %961
  %1405 = load i32, ptr %69, align 4, !tbaa !9
  %1406 = icmp ne i32 %1405, 0
  br i1 %1406, label %1407, label %1486

1407:                                             ; preds = %1404
  %1408 = load ptr, ptr %28, align 8, !tbaa !5
  %1409 = load i32, ptr %1408, align 4, !tbaa !9
  %1410 = load ptr, ptr %46, align 8, !tbaa !5
  %1411 = load i32, ptr %1410, align 4, !tbaa !9
  %1412 = sub nsw i32 %1409, %1411
  store i32 %1412, ptr %53, align 4, !tbaa !9
  %1413 = load ptr, ptr %28, align 8, !tbaa !5
  %1414 = load i32, ptr %1413, align 4, !tbaa !9
  %1415 = load ptr, ptr %46, align 8, !tbaa !5
  %1416 = load i32, ptr %1415, align 4, !tbaa !9
  %1417 = sub nsw i32 %1414, %1416
  store i32 %1417, ptr %55, align 4, !tbaa !9
  %1418 = load i32, ptr %55, align 4, !tbaa !9
  %1419 = icmp sge i32 %1418, 1
  br i1 %1419, label %1420, label %1422

1420:                                             ; preds = %1407
  %1421 = load i32, ptr %55, align 4, !tbaa !9
  br label %1423

1422:                                             ; preds = %1407
  br label %1423

1423:                                             ; preds = %1422, %1420
  %1424 = phi i32 [ %1421, %1420 ], [ 1, %1422 ]
  store i32 %1424, ptr %54, align 4, !tbaa !9
  %1425 = load ptr, ptr %31, align 8, !tbaa !5
  %1426 = load ptr, ptr %46, align 8, !tbaa !5
  %1427 = load i32, ptr %1426, align 4, !tbaa !9
  %1428 = add nsw i32 %1427, 1
  %1429 = sext i32 %1428 to i64
  %1430 = getelementptr inbounds double, ptr %1425, i64 %1429
  call void @dlascl_(ptr noundef @.str.13, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %70, ptr noundef %59, ptr noundef %53, ptr noundef @c__1, ptr noundef %1430, ptr noundef %54, ptr noundef %60)
  %1431 = load ptr, ptr %28, align 8, !tbaa !5
  %1432 = load i32, ptr %1431, align 4, !tbaa !9
  %1433 = load ptr, ptr %46, align 8, !tbaa !5
  %1434 = load i32, ptr %1433, align 4, !tbaa !9
  %1435 = sub nsw i32 %1432, %1434
  store i32 %1435, ptr %53, align 4, !tbaa !9
  %1436 = load ptr, ptr %28, align 8, !tbaa !5
  %1437 = load i32, ptr %1436, align 4, !tbaa !9
  %1438 = load ptr, ptr %46, align 8, !tbaa !5
  %1439 = load i32, ptr %1438, align 4, !tbaa !9
  %1440 = sub nsw i32 %1437, %1439
  store i32 %1440, ptr %55, align 4, !tbaa !9
  %1441 = load i32, ptr %55, align 4, !tbaa !9
  %1442 = icmp sge i32 %1441, 1
  br i1 %1442, label %1443, label %1445

1443:                                             ; preds = %1423
  %1444 = load i32, ptr %55, align 4, !tbaa !9
  br label %1446

1445:                                             ; preds = %1423
  br label %1446

1446:                                             ; preds = %1445, %1443
  %1447 = phi i32 [ %1444, %1443 ], [ 1, %1445 ]
  store i32 %1447, ptr %54, align 4, !tbaa !9
  %1448 = load ptr, ptr %32, align 8, !tbaa !5
  %1449 = load ptr, ptr %46, align 8, !tbaa !5
  %1450 = load i32, ptr %1449, align 4, !tbaa !9
  %1451 = add nsw i32 %1450, 1
  %1452 = sext i32 %1451 to i64
  %1453 = getelementptr inbounds double, ptr %1448, i64 %1452
  call void @dlascl_(ptr noundef @.str.13, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %70, ptr noundef %59, ptr noundef %53, ptr noundef @c__1, ptr noundef %1453, ptr noundef %54, ptr noundef %60)
  %1454 = load ptr, ptr %46, align 8, !tbaa !5
  %1455 = load i32, ptr %1454, align 4, !tbaa !9
  %1456 = icmp eq i32 %1455, 0
  br i1 %1456, label %1457, label %1472

1457:                                             ; preds = %1446
  %1458 = load i32, ptr %84, align 4, !tbaa !9
  %1459 = icmp ne i32 %1458, 0
  br i1 %1459, label %1463, label %1460

1460:                                             ; preds = %1457
  %1461 = load i32, ptr %77, align 4, !tbaa !9
  %1462 = icmp ne i32 %1461, 0
  br i1 %1462, label %1463, label %1471

1463:                                             ; preds = %1460, %1457
  %1464 = load i32, ptr %67, align 4, !tbaa !9
  %1465 = icmp eq i32 %1464, 0
  br i1 %1465, label %1466, label %1471

1466:                                             ; preds = %1463
  %1467 = load ptr, ptr %28, align 8, !tbaa !5
  %1468 = load ptr, ptr %42, align 8, !tbaa !5
  %1469 = getelementptr inbounds double, ptr %1468, i64 1
  %1470 = load ptr, ptr %28, align 8, !tbaa !5
  call void @dlascl_(ptr noundef @.str.13, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %70, ptr noundef %59, ptr noundef %1467, ptr noundef @c__1, ptr noundef %1469, ptr noundef %1470, ptr noundef %60)
  br label %1471

1471:                                             ; preds = %1466, %1463, %1460
  br label %1485

1472:                                             ; preds = %1446
  %1473 = load ptr, ptr %37, align 8, !tbaa !5
  %1474 = load i32, ptr %1473, align 4, !tbaa !9
  %1475 = sub nsw i32 %1474, 1
  store i32 %1475, ptr %53, align 4, !tbaa !9
  %1476 = load ptr, ptr %31, align 8, !tbaa !5
  %1477 = getelementptr inbounds double, ptr %1476, i64 1
  %1478 = load ptr, ptr %28, align 8, !tbaa !5
  call void @dlascl_(ptr noundef @.str.13, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %70, ptr noundef %59, ptr noundef %53, ptr noundef @c__1, ptr noundef %1477, ptr noundef %1478, ptr noundef %60)
  %1479 = load ptr, ptr %37, align 8, !tbaa !5
  %1480 = load i32, ptr %1479, align 4, !tbaa !9
  %1481 = sub nsw i32 %1480, 1
  store i32 %1481, ptr %53, align 4, !tbaa !9
  %1482 = load ptr, ptr %32, align 8, !tbaa !5
  %1483 = getelementptr inbounds double, ptr %1482, i64 1
  %1484 = load ptr, ptr %28, align 8, !tbaa !5
  call void @dlascl_(ptr noundef @.str.13, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %70, ptr noundef %59, ptr noundef %53, ptr noundef @c__1, ptr noundef %1483, ptr noundef %1484, ptr noundef %60)
  br label %1485

1485:                                             ; preds = %1472, %1471
  br label %1486

1486:                                             ; preds = %1485, %1404
  %1487 = load i32, ptr %75, align 4, !tbaa !9
  %1488 = sitofp i32 %1487 to double
  %1489 = load ptr, ptr %43, align 8, !tbaa !5
  %1490 = getelementptr inbounds double, ptr %1489, i64 1
  store double %1488, ptr %1490, align 8, !tbaa !11
  store i32 1, ptr %90, align 4
  br label %1491

1491:                                             ; preds = %1486, %666, %660, %652
  call void @llvm.lifetime.end.p0(i64 4, 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 1, ptr %85) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %84) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %83) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %82) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %81) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %80) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %79) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %78) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %77) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %76) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %75) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %74) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %73) #5
  call void @llvm.lifetime.end.p0(i64 4, 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 4, ptr %69) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %67) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %65) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %64) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %63) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %62) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %61) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %60) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #5
  call void @llvm.lifetime.end.p0(i64 1, 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 4, ptr %55) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %54) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %53) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #5
  ret void
}

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

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

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

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

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

declare double @dlamch_(ptr noundef) #2

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

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

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

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

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

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

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

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

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

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

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

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

declare void @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 = !{!"int", !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 i32, align 4
@.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 i32, align 4
@.str.8 = external hidden unnamed_addr constant [2 x i8], align 1
@c_n1 = external hidden global i32, align 4
@.str.9 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [7 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 void @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 i32, align 4
  %29 = alloca i32, align 4
  %30 = alloca double, align 8
  %31 = alloca double, align 8
  %32 = alloca [1 x i8], align 1
  %33 = alloca double, align 8
  %34 = alloca i32, align 4
  %35 = alloca i32, align 4
  %36 = alloca double, align 8
  %37 = alloca i32, align 4
  %38 = alloca double, align 8
  %39 = alloca double, align 8
  %40 = alloca double, align 8
  %41 = alloca [1 x i32], align 4
  %42 = alloca double, align 8
  %43 = alloca double, align 8
  %44 = alloca [1 x i8], align 1
  %45 = alloca double, align 8
  %46 = alloca [1 x double], align 8
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %28) #6
  call void @llvm.lifetime.start.p0(i64 4, 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 1, ptr nonnull %32) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %33) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %34) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %35) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %36) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %37) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %38) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %39) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %40) #6
  call void @llvm.lifetime.start.p0(i64 4, 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 1, 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 %7, i64 -8
  %48 = getelementptr inbounds i8, ptr %8, i64 -8
  %49 = load i32, ptr %10, align 4, !tbaa !5
  %narrow = xor i32 %49, -1
  %50 = sext i32 %narrow to i64
  %51 = getelementptr inbounds double, ptr %9, i64 %50
  %52 = load i32, ptr %12, align 4, !tbaa !5
  %narrow641 = xor i32 %52, -1
  %53 = sext i32 %narrow641 to i64
  %54 = getelementptr inbounds double, ptr %11, i64 %53
  %55 = getelementptr inbounds i8, ptr %19, i64 -8
  store i32 0, ptr %22, align 4, !tbaa !5
  %56 = load i32, ptr %20, align 4, !tbaa !5
  %57 = icmp eq i32 %56, -1
  %58 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str) #6
  %59 = tail call i32 @lsame_(ptr noundef %2, ptr noundef nonnull @.str) #6
  %60 = tail call i32 @lsame_(ptr noundef %3, ptr noundef nonnull @.str.1) #6
  %61 = tail call i32 @lsame_(ptr noundef %3, ptr noundef nonnull @.str.2) #6
  %62 = tail call i32 @lsame_(ptr noundef %3, ptr noundef nonnull @.str) #6
  %63 = tail call i32 @lsame_(ptr noundef %3, ptr noundef nonnull @.str.3) #6
  %64 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.1) #6
  %.not = icmp eq i32 %64, 0
  br i1 %.not, label %65, label %71

65:                                               ; preds = %23
  %66 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.4) #6
  %.not614 = icmp eq i32 %66, 0
  br i1 %.not614, label %67, label %71

67:                                               ; preds = %65
  %68 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.5) #6
  %.not615 = icmp eq i32 %68, 0
  br i1 %.not615, label %69, label %71

69:                                               ; preds = %67
  %70 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.3) #6
  %.not616 = icmp eq i32 %70, 0
  br i1 %.not616, label %.thread658.sink.split, label %71

71:                                               ; preds = %69, %67, %65, %23
  %72 = icmp ne i32 %58, 0
  br i1 %72, label %75, label %73

73:                                               ; preds = %71
  %74 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.1) #6
  %.not617 = icmp eq i32 %74, 0
  br i1 %.not617, label %.thread658.sink.split, label %75

75:                                               ; preds = %73, %71
  %76 = icmp ne i32 %59, 0
  br i1 %76, label %79, label %77

77:                                               ; preds = %75
  %78 = tail call i32 @lsame_(ptr noundef %2, ptr noundef nonnull @.str.1) #6
  %.not618 = icmp eq i32 %78, 0
  br i1 %.not618, label %.thread658.sink.split, label %79

79:                                               ; preds = %77, %75
  %80 = icmp ne i32 %60, 0
  %81 = icmp ne i32 %61, 0
  %or.cond = select i1 %80, i1 true, i1 %81
  %82 = icmp ne i32 %63, 0
  %or.cond3 = select i1 %or.cond, i1 true, i1 %82
  %83 = icmp ne i32 %62, 0
  %or.cond5 = select i1 %or.cond3, i1 true, i1 %83
  br i1 %or.cond5, label %84, label %.thread658.sink.split

84:                                               ; preds = %79
  %or.cond7 = select i1 %81, i1 true, i1 %82
  %or.cond7.not = xor i1 %or.cond7, true
  %or.cond9 = and i1 %72, %76
  %or.cond645 = or i1 %or.cond9, %or.cond7.not
  br i1 %or.cond645, label %85, label %.thread658.sink.split

85:                                               ; preds = %84
  %86 = load i32, ptr %4, align 4, !tbaa !5
  %87 = icmp slt i32 %86, 0
  br i1 %87, label %.thread658.sink.split, label %88

88:                                               ; preds = %85
  %89 = load i32, ptr %6, align 4, !tbaa !5
  %spec.select = tail call i32 @llvm.umax.i32(i32 %86, i32 1)
  %90 = icmp slt i32 %89, %spec.select
  br i1 %90, label %.thread658.sink.split, label %91

91:                                               ; preds = %88
  %92 = load i32, ptr %10, align 4, !tbaa !5
  %93 = icmp slt i32 %92, 1
  %94 = icmp ult i32 %92, %86
  %or.cond669 = and i1 %72, %94
  %or.cond671 = or i1 %93, %or.cond669
  br i1 %or.cond671, label %.thread658.sink.split, label %95

95:                                               ; preds = %91
  %96 = load i32, ptr %12, align 4, !tbaa !5
  %97 = icmp slt i32 %96, 1
  %98 = icmp ult i32 %96, %86
  %or.cond670 = and i1 %76, %98
  %or.cond672 = or i1 %97, %or.cond670
  br i1 %or.cond672, label %.thread658.sink.split, label %99

99:                                               ; preds = %95
  %.pr = load i32, ptr %22, align 4, !tbaa !5
  %100 = icmp eq i32 %.pr, 0
  br i1 %100, label %101, label %.thread658

101:                                              ; preds = %99
  %102 = icmp eq i32 %86, 0
  br i1 %102, label %163, label %103

103:                                              ; preds = %101
  %104 = tail call i32 @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, i32 noundef 6, i32 noundef 1) #6
  %105 = add i32 %104, 1
  %106 = mul i32 %105, %86
  %.not673 = icmp eq i32 %58, 0
  br i1 %.not673, label %113, label %107

107:                                              ; preds = %103
  call void @dtrevc3_(ptr noundef nonnull @.str.8, ptr noundef nonnull @.str.3, ptr noundef nonnull %41, 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 %35, ptr noundef %19, ptr noundef nonnull @c_n1, ptr noundef nonnull %34) #6
  %108 = load double, ptr %19, align 8, !tbaa !9
  %109 = fptosi double %108 to i32
  store i32 %106, ptr %28, align 4, !tbaa !5
  %110 = load i32, ptr %4, align 4, !tbaa !5
  %111 = add nsw i32 %110, %109
  %112 = call i32 @llvm.smax.i32(i32 %106, i32 %111)
  call void @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 nonnull %19, ptr noundef nonnull @c_n1, ptr noundef nonnull %22) #6
  br label %.thread647

113:                                              ; preds = %103
  %.not619 = icmp eq i32 %59, 0
  br i1 %.not619, label %120, label %114

114:                                              ; preds = %113
  call void @dtrevc3_(ptr noundef nonnull @.str.9, ptr noundef nonnull @.str.3, ptr noundef nonnull %41, 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 %35, ptr noundef %19, ptr noundef nonnull @c_n1, ptr noundef nonnull %34) #6
  %115 = load double, ptr %19, align 8, !tbaa !9
  %116 = fptosi double %115 to i32
  store i32 %106, ptr %28, align 4, !tbaa !5
  %117 = load i32, ptr %4, align 4, !tbaa !5
  %118 = add nsw i32 %117, %116
  %119 = call i32 @llvm.smax.i32(i32 %106, i32 %118)
  call void @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 nonnull %19, ptr noundef nonnull @c_n1, ptr noundef nonnull %22) #6
  br label %.thread647

120:                                              ; preds = %113
  %.not620 = icmp eq i32 %60, 0
  br i1 %.not620, label %131, label %125

.thread647:                                       ; preds = %107, %114
  %.0.ph = phi i32 [ %119, %114 ], [ %112, %107 ]
  %121 = load double, ptr %19, align 8, !tbaa !9
  %122 = fptosi double %121 to i32
  %123 = load i32, ptr %4, align 4, !tbaa !5
  %124 = mul nsw i32 %123, 3
  br i1 %or.cond, label %145, label %141

125:                                              ; preds = %120
  tail call void @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
  %126 = load double, ptr %19, align 8, !tbaa !9
  %127 = fptosi double %126 to i32
  %128 = load i32, ptr %4, align 4, !tbaa !5
  %129 = shl i32 %128, 1
  %130 = tail call i32 @llvm.smax.i32(i32 %106, i32 %127)
  br label %160

131:                                              ; preds = %120
  tail call void @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
  %132 = load double, ptr %19, align 8, !tbaa !9
  %133 = fptosi double %132 to i32
  %134 = load i32, ptr %4, align 4, !tbaa !5
  %135 = shl i32 %134, 1
  %136 = add i32 %134, 6
  %137 = mul i32 %136, %134
  %138 = tail call i32 @llvm.smax.i32(i32 %135, i32 %137)
  %139 = tail call i32 @llvm.smax.i32(i32 %106, i32 %133)
  store i32 %139, ptr %28, align 4, !tbaa !5
  store i32 %137, ptr %29, align 4, !tbaa !5
  %140 = tail call i32 @llvm.smax.i32(i32 %139, i32 %137)
  br label %160

141:                                              ; preds = %.thread647
  %142 = add i32 %123, 6
  %143 = mul i32 %142, %123
  %144 = call i32 @llvm.smax.i32(i32 %124, i32 %143)
  br label %145

145:                                              ; preds = %141, %.thread647
  %.1595 = phi i32 [ %124, %.thread647 ], [ %144, %141 ]
  %146 = call i32 @llvm.smax.i32(i32 %.0.ph, i32 %122)
  store i32 %146, ptr %28, align 4, !tbaa !5
  %147 = add nsw i32 %123, -1
  %148 = call i32 @ilaenv_(ptr noundef nonnull @c__1, ptr noundef nonnull @.str.10, ptr noundef nonnull @.str.7, ptr noundef nonnull %4, ptr noundef nonnull @c__1, ptr noundef nonnull %4, ptr noundef nonnull @c_n1, i32 noundef 6, i32 noundef 1) #6
  %149 = mul nsw i32 %148, %147
  %150 = add nsw i32 %149, %123
  %151 = load i32, ptr %28, align 4
  %152 = call i32 @llvm.smax.i32(i32 %151, i32 %150)
  %.pre = load i32, ptr %4, align 4, !tbaa !5
  br i1 %or.cond, label %157, label %153

153:                                              ; preds = %145
  %154 = add i32 %.pre, 6
  %155 = mul i32 %154, %.pre
  %156 = call i32 @llvm.smax.i32(i32 %152, i32 %155)
  br label %157

157:                                              ; preds = %153, %145
  %.1 = phi i32 [ %152, %145 ], [ %156, %153 ]
  store i32 %.1, ptr %28, align 4, !tbaa !5
  %158 = mul nsw i32 %.pre, 3
  store i32 %158, ptr %29, align 4, !tbaa !5
  %159 = call i32 @llvm.smax.i32(i32 %.1, i32 %158)
  br label %160

160:                                              ; preds = %125, %131, %157
  %161 = phi i32 [ %.pre, %157 ], [ %128, %125 ], [ %134, %131 ]
  %.2596 = phi i32 [ %.1595, %157 ], [ %129, %125 ], [ %138, %131 ]
  %.2 = phi i32 [ %159, %157 ], [ %130, %125 ], [ %140, %131 ]
  %162 = call i32 @llvm.smax.i32(i32 %.2, i32 %.2596)
  br label %163

163:                                              ; preds = %101, %160
  %164 = phi i32 [ %161, %160 ], [ 0, %101 ]
  %.3597 = phi i32 [ %.2596, %160 ], [ 1, %101 ]
  %.3 = phi i32 [ %162, %160 ], [ 1, %101 ]
  %165 = sitofp i32 %.3 to double
  store double %165, ptr %19, align 8, !tbaa !9
  %166 = load i32, ptr %20, align 4, !tbaa !5
  %167 = icmp sge i32 %166, %.3597
  %or.cond17 = select i1 %167, i1 true, i1 %57
  br i1 %or.cond17, label %.thread, label %.thread658.sink.split

.thread:                                          ; preds = %163
  %.pr655.pr = load i32, ptr %22, align 4, !tbaa !5
  %.not633 = icmp eq i32 %.pr655.pr, 0
  br i1 %.not633, label %171, label %.thread658

.thread658.sink.split:                            ; preds = %163, %95, %91, %88, %85, %79, %84, %77, %73, %69
  %.sink = phi i32 [ -1, %69 ], [ -2, %73 ], [ -3, %77 ], [ -4, %84 ], [ -4, %79 ], [ -5, %85 ], [ -7, %88 ], [ -11, %91 ], [ -13, %95 ], [ -21, %163 ]
  store i32 %.sink, ptr %22, align 4, !tbaa !5
  br label %.thread658

.thread658:                                       ; preds = %.thread658.sink.split, %99, %.thread
  %168 = phi i32 [ %.pr655.pr, %.thread ], [ %.pr, %99 ], [ %.sink, %.thread658.sink.split ]
  %169 = sub nsw i32 0, %168
  store i32 %169, ptr %28, align 4, !tbaa !5
  %170 = call i32 @xerbla_(ptr noundef nonnull @.str.11, ptr noundef nonnull %28, i32 noundef 6) #6
  br label %406

171:                                              ; preds = %.thread
  %172 = icmp eq i32 %164, 0
  %or.cond732 = select i1 %57, i1 true, i1 %172
  br i1 %or.cond732, label %406, label %173

173:                                              ; preds = %171
  %174 = call double @dlamch_(ptr noundef nonnull @.str.5) #6
  %175 = call double @dlamch_(ptr noundef nonnull @.str.4) #6
  store double %175, ptr %43, align 8, !tbaa !9
  %176 = fdiv double 1.000000e+00, %175
  store double %176, ptr %42, align 8, !tbaa !9
  call void @dlabad_(ptr noundef nonnull %43, ptr noundef nonnull %42) #6
  %177 = load double, ptr %43, align 8, !tbaa !9
  %178 = call double @sqrt(double noundef %177) #6
  %179 = fdiv double %178, %174
  store double %179, ptr %43, align 8, !tbaa !9
  %180 = fdiv double 1.000000e+00, %179
  store double %180, ptr %42, align 8, !tbaa !9
  store i32 0, ptr %37, align 4, !tbaa !5
  %181 = 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 %46) #6
  store double %181, ptr %33, align 8, !tbaa !9
  %182 = fcmp ogt double %181, 0.000000e+00
  %183 = load double, ptr %43, align 8
  %184 = fcmp olt double %181, %183
  %or.cond675 = select i1 %182, i1 %184, i1 false
  br i1 %or.cond675, label %188, label %185

185:                                              ; preds = %173
  %186 = load double, ptr %42, align 8, !tbaa !9
  %187 = fcmp ogt double %181, %186
  br i1 %187, label %188, label %189

188:                                              ; preds = %173, %185
  %storemerge = phi double [ %186, %185 ], [ %183, %173 ]
  store double %storemerge, ptr %39, align 8, !tbaa !9
  call void @dlascl_(ptr noundef nonnull @.str.13, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %33, ptr noundef nonnull %39, ptr noundef nonnull %4, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef nonnull %34) #6
  br label %189

189:                                              ; preds = %185, %188
  %.not634665 = phi i1 [ false, %188 ], [ true, %185 ]
  call void @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 %34) #6
  %190 = call double @dlange_(ptr noundef nonnull @.str.14, ptr noundef nonnull %4, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef nonnull %46) #6
  store double %190, ptr %16, align 8, !tbaa !9
  br i1 %.not634665, label %193, label %191

191:                                              ; preds = %189
  store double %190, ptr %46, align 8, !tbaa !9
  call void @dlascl_(ptr noundef nonnull @.str.13, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %39, ptr noundef nonnull %33, ptr noundef nonnull @c__1, ptr noundef nonnull @c__1, ptr noundef nonnull %46, ptr noundef nonnull @c__1, ptr noundef nonnull %34) #6
  %192 = load double, ptr %46, align 8, !tbaa !9
  store double %192, ptr %16, align 8, !tbaa !9
  br label %193

193:                                              ; preds = %191, %189
  %194 = load i32, ptr %4, align 4, !tbaa !5
  %195 = load i32, ptr %20, align 4, !tbaa !5
  %196 = sub i32 %195, %194
  store i32 %196, ptr %28, align 4, !tbaa !5
  %197 = sext i32 %194 to i64
  %198 = getelementptr double, ptr %55, i64 %197
  %199 = getelementptr i8, ptr %198, i64 8
  call void @dgehrd_(ptr noundef nonnull %4, ptr noundef %13, ptr noundef %14, ptr noundef %5, ptr noundef nonnull %6, ptr noundef nonnull %19, ptr noundef nonnull %199, ptr noundef nonnull %28, ptr noundef nonnull %34) #6
  br i1 %72, label %200, label %205

200:                                              ; preds = %193
  store i8 76, ptr %32, align 1, !tbaa !11
  call void @dlacpy_(ptr noundef nonnull @.str.8, ptr noundef nonnull %4, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %9, ptr noundef nonnull %10) #6
  %201 = load i32, ptr %20, align 4, !tbaa !5
  %202 = sub i32 %201, %194
  store i32 %202, ptr %28, align 4, !tbaa !5
  call void @dorghr_(ptr noundef nonnull %4, ptr noundef %13, ptr noundef %14, ptr noundef %9, ptr noundef nonnull %10, ptr noundef nonnull %19, ptr noundef nonnull %199, ptr noundef nonnull %28, ptr noundef nonnull %34) #6
  %203 = load i32, ptr %20, align 4, !tbaa !5
  store i32 %203, ptr %28, align 4, !tbaa !5
  call void @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
  %.not637 = icmp eq i32 %59, 0
  br i1 %.not637, label %212, label %204

204:                                              ; preds = %200
  store i8 66, ptr %32, align 1, !tbaa !11
  call void @dlacpy_(ptr noundef nonnull @.str.15, 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 %212

205:                                              ; preds = %193
  %.not635 = icmp eq i32 %59, 0
  br i1 %.not635, label %210, label %206

206:                                              ; preds = %205
  store i8 82, ptr %32, align 1, !tbaa !11
  call void @dlacpy_(ptr noundef nonnull @.str.8, 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 i32, ptr %20, align 4, !tbaa !5
  %208 = sub i32 %207, %194
  store i32 %208, ptr %28, align 4, !tbaa !5
  call void @dorghr_(ptr noundef nonnull %4, ptr noundef %13, ptr noundef %14, ptr noundef %11, ptr noundef nonnull %12, ptr noundef nonnull %19, ptr noundef nonnull %199, ptr noundef nonnull %28, ptr noundef nonnull %34) #6
  %209 = load i32, ptr %20, align 4, !tbaa !5
  store i32 %209, ptr %28, align 4, !tbaa !5
  call void @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 %212

210:                                              ; preds = %205
  %.not636 = icmp eq i32 %60, 0
  %. = select i1 %.not636, i8 83, i8 69
  store i8 %., ptr %44, align 1, !tbaa !11
  %211 = load i32, ptr %20, align 4, !tbaa !5
  store i32 %211, ptr %28, align 4, !tbaa !5
  call void @dhseqr_(ptr noundef nonnull %44, 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 %212

212:                                              ; preds = %206, %210, %200, %204
  %213 = load i32, ptr %22, align 4, !tbaa !5
  %.not638 = icmp eq i32 %213, 0
  br i1 %.not638, label %214, label %.loopexit

214:                                              ; preds = %212
  %215 = or i32 %58, %59
  %or.cond19.not = icmp eq i32 %215, 0
  br i1 %or.cond19.not, label %218, label %216

216:                                              ; preds = %214
  %217 = load i32, ptr %20, align 4, !tbaa !5
  store i32 %217, ptr %28, align 4, !tbaa !5
  call void @dtrevc3_(ptr noundef nonnull %32, ptr noundef nonnull @.str.3, ptr noundef nonnull %41, 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 %35, ptr noundef nonnull %19, ptr noundef nonnull %28, ptr noundef nonnull %34) #6
  br label %218

218:                                              ; preds = %214, %216
  %.not639 = icmp eq i32 %60, 0
  br i1 %.not639, label %219, label %220

219:                                              ; preds = %218
  call void @dtrsna_(ptr noundef %3, ptr noundef nonnull @.str.16, ptr noundef nonnull %41, 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 %35, ptr noundef nonnull %19, ptr noundef nonnull %4, ptr noundef %21, ptr noundef nonnull %37) #6
  br label %220

220:                                              ; preds = %219, %218
  br i1 %72, label %221, label %.loopexit676

221:                                              ; preds = %220
  call void @dgebak_(ptr noundef %0, ptr noundef nonnull @.str.8, 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 %34) #6
  %222 = load i32, ptr %4, align 4, !tbaa !5
  store i32 %222, ptr %28, align 4, !tbaa !5
  %invariant.gep = getelementptr i8, ptr %51, i64 8
  %.not640684 = icmp slt i32 %222, 1
  br i1 %.not640684, label %.loopexit676, label %.lr.ph687.preheader

.lr.ph687.preheader:                              ; preds = %221
  %223 = sext i32 %49 to i64
  %224 = add i64 %27, -8
  %225 = shl nsw i64 %50, 3
  %226 = add i64 %225, %26
  %227 = shl nsw i64 %223, 4
  %228 = add i64 %226, %227
  %229 = sub i64 %224, %228
  %230 = mul nsw i64 %223, -8
  %231 = add i64 %27, -8
  %232 = shl nsw i64 %223, 3
  %233 = add i64 %232, %26
  %234 = add i64 %233, %225
  %235 = sub i64 %231, %234
  br label %.lr.ph687

.lr.ph687:                                        ; preds = %.lr.ph687.preheader, %297
  %indvar = phi i64 [ 0, %.lr.ph687.preheader ], [ %indvar.next, %297 ]
  %indvars.iv709 = phi i64 [ 1, %.lr.ph687.preheader ], [ %indvars.iv.next710, %297 ]
  %236 = mul i64 %230, %indvar
  %237 = add i64 %229, %236
  %238 = add i64 %235, %236
  %239 = getelementptr inbounds double, ptr %48, i64 %indvars.iv709
  %240 = load double, ptr %239, align 8, !tbaa !9
  %241 = fcmp oeq double %240, 0.000000e+00
  br i1 %241, label %242, label %246

242:                                              ; preds = %.lr.ph687
  %243 = mul nsw i64 %indvars.iv709, %223
  %gep683 = getelementptr double, ptr %invariant.gep, i64 %243
  %244 = call double @dnrm2_(ptr noundef nonnull %4, ptr noundef %gep683, ptr noundef nonnull @c__1) #6
  %245 = fdiv double 1.000000e+00, %244
  store double %245, ptr %45, align 8, !tbaa !9
  call void @dscal_(ptr noundef nonnull %4, ptr noundef nonnull %45, ptr noundef %gep683, ptr noundef nonnull @c__1) #6
  br label %297

246:                                              ; preds = %.lr.ph687
  %247 = fcmp ogt double %240, 0.000000e+00
  br i1 %247, label %248, label %297

248:                                              ; preds = %246
  %249 = mul nsw i64 %indvars.iv709, %223
  %gep = getelementptr double, ptr %invariant.gep, i64 %249
  %250 = call double @dnrm2_(ptr noundef nonnull %4, ptr noundef %gep, ptr noundef nonnull @c__1) #6
  store double %250, ptr %30, align 8, !tbaa !9
  %251 = add nuw nsw i64 %indvars.iv709, 1
  %252 = mul nsw i64 %251, %223
  %gep681 = getelementptr double, ptr %invariant.gep, i64 %252
  %253 = call double @dnrm2_(ptr noundef nonnull %4, ptr noundef %gep681, ptr noundef nonnull @c__1) #6
  store double %253, ptr %31, align 8, !tbaa !9
  %254 = call double @dlapy2_(ptr noundef nonnull %30, ptr noundef nonnull %31) #6
  %255 = fdiv double 1.000000e+00, %254
  store double %255, ptr %45, align 8, !tbaa !9
  call void @dscal_(ptr noundef nonnull %4, ptr noundef nonnull %45, ptr noundef %gep, ptr noundef nonnull @c__1) #6
  call void @dscal_(ptr noundef nonnull %4, ptr noundef nonnull %45, ptr noundef %gep681, ptr noundef nonnull @c__1) #6
  %256 = load i32, ptr %4, align 4, !tbaa !5
  store i32 %256, ptr %29, align 4, !tbaa !5
  %.not644677 = icmp slt i32 %256, 1
  br i1 %.not644677, label %290, label %.lr.ph.preheader

.lr.ph.preheader:                                 ; preds = %248
  %257 = add nuw i32 %256, 1
  %wide.trip.count = zext i32 %257 to i64
  %invariant.gep724 = getelementptr double, ptr %51, i64 %249
  %invariant.gep726 = getelementptr double, ptr %51, i64 %252
  %258 = zext nneg i32 %256 to i64
  %min.iters.check = icmp ult i32 %256, 4
  br i1 %min.iters.check, label %.lr.ph.preheader766, label %vector.memcheck

vector.memcheck:                                  ; preds = %.lr.ph.preheader
  %diff.check = icmp ult i64 %237, 32
  %diff.check736 = icmp ult i64 %238, 32
  %conflict.rdx = or i1 %diff.check, %diff.check736
  br i1 %conflict.rdx, label %.lr.ph.preheader766, label %vector.ph

vector.ph:                                        ; preds = %vector.memcheck
  %n.vec = and i64 %258, 2147483644
  %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
  %259 = getelementptr double, ptr %invariant.gep724, i64 %offset.idx
  %260 = getelementptr i8, ptr %259, i64 16
  %wide.load = load <2 x double>, ptr %259, align 8, !tbaa !9
  %wide.load737 = load <2 x double>, ptr %260, align 8, !tbaa !9
  %261 = getelementptr double, ptr %invariant.gep726, i64 %offset.idx
  %262 = getelementptr i8, ptr %261, i64 16
  %wide.load738 = load <2 x double>, ptr %261, align 8, !tbaa !9
  %wide.load739 = load <2 x double>, ptr %262, align 8, !tbaa !9
  %263 = fmul <2 x double> %wide.load738, %wide.load738
  %264 = fmul <2 x double> %wide.load739, %wide.load739
  %265 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %wide.load, <2 x double> %wide.load, <2 x double> %263)
  %266 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %wide.load737, <2 x double> %wide.load737, <2 x double> %264)
  %267 = getelementptr double, ptr %19, i64 %index
  %268 = getelementptr inbounds i8, ptr %267, i64 16
  store <2 x double> %265, ptr %267, align 8, !tbaa !9
  store <2 x double> %266, ptr %268, align 8, !tbaa !9
  %index.next = add nuw i64 %index, 4
  %269 = icmp eq i64 %index.next, %n.vec
  br i1 %269, label %middle.block, label %vector.body, !llvm.loop !12

middle.block:                                     ; preds = %vector.body
  %270 = extractelement <2 x double> %wide.load739, i64 1
  %271 = extractelement <2 x double> %wide.load737, i64 1
  %cmp.n = icmp eq i64 %n.vec, %258
  br i1 %cmp.n, label %._crit_edge, label %.lr.ph.preheader766

.lr.ph.preheader766:                              ; preds = %middle.block, %vector.memcheck, %.lr.ph.preheader
  %indvars.iv.ph = phi i64 [ 1, %vector.memcheck ], [ 1, %.lr.ph.preheader ], [ %ind.end, %middle.block ]
  %272 = zext nneg i32 %256 to i64
  %273 = and i32 %256, 1
  %lcmp.mod.not = icmp eq i32 %273, 0
  br i1 %lcmp.mod.not, label %.lr.ph.prol.loopexit, label %.lr.ph.prol

.lr.ph.prol:                                      ; preds = %.lr.ph.preheader766
  %gep725.prol = getelementptr double, ptr %invariant.gep724, i64 %indvars.iv.ph
  %274 = load double, ptr %gep725.prol, align 8, !tbaa !9
  %gep727.prol = getelementptr double, ptr %invariant.gep726, i64 %indvars.iv.ph
  %275 = load double, ptr %gep727.prol, align 8, !tbaa !9
  %276 = fmul double %275, %275
  %277 = call double @llvm.fmuladd.f64(double %274, double %274, double %276)
  %278 = getelementptr inbounds double, ptr %55, i64 %indvars.iv.ph
  store double %277, ptr %278, align 8, !tbaa !9
  %indvars.iv.next.prol = add nuw nsw i64 %indvars.iv.ph, 1
  br label %.lr.ph.prol.loopexit

.lr.ph.prol.loopexit:                             ; preds = %.lr.ph.prol, %.lr.ph.preheader766
  %.lcssa768.unr = phi double [ poison, %.lr.ph.preheader766 ], [ %274, %.lr.ph.prol ]
  %.lcssa767.unr = phi double [ poison, %.lr.ph.preheader766 ], [ %275, %.lr.ph.prol ]
  %indvars.iv.unr = phi i64 [ %indvars.iv.ph, %.lr.ph.preheader766 ], [ %indvars.iv.next.prol, %.lr.ph.prol ]
  %279 = icmp eq i64 %indvars.iv.ph, %272
  br i1 %279, label %._crit_edge, label %.lr.ph

.lr.ph:                                           ; preds = %.lr.ph.prol.loopexit, %.lr.ph
  %indvars.iv = phi i64 [ %indvars.iv.next.1, %.lr.ph ], [ %indvars.iv.unr, %.lr.ph.prol.loopexit ]
  %gep725 = getelementptr double, ptr %invariant.gep724, i64 %indvars.iv
  %280 = load double, ptr %gep725, align 8, !tbaa !9
  %gep727 = getelementptr double, ptr %invariant.gep726, i64 %indvars.iv
  %281 = load double, ptr %gep727, align 8, !tbaa !9
  %282 = fmul double %281, %281
  %283 = call double @llvm.fmuladd.f64(double %280, double %280, double %282)
  %284 = getelementptr inbounds double, ptr %55, i64 %indvars.iv
  store double %283, ptr %284, align 8, !tbaa !9
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %gep725.1 = getelementptr double, ptr %invariant.gep724, i64 %indvars.iv.next
  %285 = load double, ptr %gep725.1, align 8, !tbaa !9
  %gep727.1 = getelementptr double, ptr %invariant.gep726, i64 %indvars.iv.next
  %286 = load double, ptr %gep727.1, align 8, !tbaa !9
  %287 = fmul double %286, %286
  %288 = call double @llvm.fmuladd.f64(double %285, double %285, double %287)
  %289 = getelementptr double, ptr %19, i64 %indvars.iv
  store double %288, ptr %289, align 8, !tbaa !9
  %indvars.iv.next.1 = add nuw nsw i64 %indvars.iv, 2
  %exitcond.not.1 = icmp eq i64 %indvars.iv.next.1, %wide.trip.count
  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
  %.lcssa735 = phi double [ %271, %middle.block ], [ %.lcssa768.unr, %.lr.ph.prol.loopexit ], [ %285, %.lr.ph ]
  %.lcssa734 = phi double [ %270, %middle.block ], [ %.lcssa767.unr, %.lr.ph.prol.loopexit ], [ %286, %.lr.ph ]
  store double %.lcssa735, ptr %30, align 8, !tbaa !9
  store double %.lcssa734, ptr %31, align 8, !tbaa !9
  br label %290

290:                                              ; preds = %._crit_edge, %248
  %291 = call i32 @idamax_(ptr noundef nonnull %4, ptr noundef nonnull %19, ptr noundef nonnull @c__1) #6
  %292 = sext i32 %291 to i64
  %293 = getelementptr double, ptr %51, i64 %249
  %294 = getelementptr double, ptr %293, i64 %292
  %295 = getelementptr double, ptr %51, i64 %252
  %296 = getelementptr double, ptr %295, i64 %292
  call void @dlartg_(ptr noundef %294, ptr noundef %296, ptr noundef nonnull %38, ptr noundef nonnull %40, ptr noundef nonnull %36) #6
  call void @drot_(ptr noundef nonnull %4, ptr noundef %gep, ptr noundef nonnull @c__1, ptr noundef %gep681, ptr noundef nonnull @c__1, ptr noundef nonnull %38, ptr noundef nonnull %40) #6
  store double 0.000000e+00, ptr %296, align 8, !tbaa !9
  br label %297

297:                                              ; preds = %242, %290, %246
  %indvars.iv.next710 = add nuw nsw i64 %indvars.iv709, 1
  %298 = load i32, ptr %28, align 4, !tbaa !5
  %299 = sext i32 %298 to i64
  %.not640.not = icmp slt i64 %indvars.iv709, %299
  %indvar.next = add i64 %indvar, 1
  br i1 %.not640.not, label %.lr.ph687, label %.loopexit676, !llvm.loop !17

.loopexit676:                                     ; preds = %297, %221, %220
  br i1 %76, label %300, label %.loopexit

300:                                              ; preds = %.loopexit676
  call void @dgebak_(ptr noundef %0, ptr noundef nonnull @.str.9, 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 %34) #6
  %301 = load i32, ptr %4, align 4, !tbaa !5
  store i32 %301, ptr %28, align 4, !tbaa !5
  %invariant.gep695 = getelementptr i8, ptr %54, i64 8
  %.not642701 = icmp slt i32 %301, 1
  br i1 %.not642701, label %.loopexit, label %.lr.ph704.preheader

.lr.ph704.preheader:                              ; preds = %300
  %302 = sext i32 %52 to i64
  %303 = add i64 %25, -8
  %304 = shl nsw i64 %53, 3
  %305 = add i64 %304, %24
  %306 = shl nsw i64 %302, 4
  %307 = add i64 %305, %306
  %308 = sub i64 %303, %307
  %309 = mul nsw i64 %302, -8
  %310 = add i64 %25, -8
  %311 = shl nsw i64 %302, 3
  %312 = add i64 %311, %24
  %313 = add i64 %312, %304
  %314 = sub i64 %310, %313
  br label %.lr.ph704

.lr.ph704:                                        ; preds = %.lr.ph704.preheader, %376
  %indvar741 = phi i64 [ 0, %.lr.ph704.preheader ], [ %indvar.next742, %376 ]
  %indvars.iv717 = phi i64 [ 1, %.lr.ph704.preheader ], [ %indvars.iv.next718, %376 ]
  %315 = mul i64 %309, %indvar741
  %316 = add i64 %308, %315
  %317 = add i64 %314, %315
  %318 = getelementptr inbounds double, ptr %48, i64 %indvars.iv717
  %319 = load double, ptr %318, align 8, !tbaa !9
  %320 = fcmp oeq double %319, 0.000000e+00
  br i1 %320, label %321, label %325

321:                                              ; preds = %.lr.ph704
  %322 = mul nsw i64 %indvars.iv717, %302
  %gep700 = getelementptr double, ptr %invariant.gep695, i64 %322
  %323 = call double @dnrm2_(ptr noundef nonnull %4, ptr noundef %gep700, ptr noundef nonnull @c__1) #6
  %324 = fdiv double 1.000000e+00, %323
  store double %324, ptr %45, align 8, !tbaa !9
  call void @dscal_(ptr noundef nonnull %4, ptr noundef nonnull %45, ptr noundef %gep700, ptr noundef nonnull @c__1) #6
  br label %376

325:                                              ; preds = %.lr.ph704
  %326 = fcmp ogt double %319, 0.000000e+00
  br i1 %326, label %327, label %376

327:                                              ; preds = %325
  %328 = mul nsw i64 %indvars.iv717, %302
  %gep696 = getelementptr double, ptr %invariant.gep695, i64 %328
  %329 = call double @dnrm2_(ptr noundef nonnull %4, ptr noundef %gep696, ptr noundef nonnull @c__1) #6
  store double %329, ptr %30, align 8, !tbaa !9
  %330 = add nuw nsw i64 %indvars.iv717, 1
  %331 = mul nsw i64 %330, %302
  %gep698 = getelementptr double, ptr %invariant.gep695, i64 %331
  %332 = call double @dnrm2_(ptr noundef nonnull %4, ptr noundef %gep698, ptr noundef nonnull @c__1) #6
  store double %332, ptr %31, align 8, !tbaa !9
  %333 = call double @dlapy2_(ptr noundef nonnull %30, ptr noundef nonnull %31) #6
  %334 = fdiv double 1.000000e+00, %333
  store double %334, ptr %45, align 8, !tbaa !9
  call void @dscal_(ptr noundef nonnull %4, ptr noundef nonnull %45, ptr noundef %gep696, ptr noundef nonnull @c__1) #6
  call void @dscal_(ptr noundef nonnull %4, ptr noundef nonnull %45, ptr noundef %gep698, ptr noundef nonnull @c__1) #6
  %335 = load i32, ptr %4, align 4, !tbaa !5
  store i32 %335, ptr %29, align 4, !tbaa !5
  %.not643688 = icmp slt i32 %335, 1
  br i1 %.not643688, label %369, label %.lr.ph691.preheader

.lr.ph691.preheader:                              ; preds = %327
  %336 = add nuw i32 %335, 1
  %wide.trip.count715 = zext i32 %336 to i64
  %invariant.gep728 = getelementptr double, ptr %54, i64 %328
  %invariant.gep730 = getelementptr double, ptr %54, i64 %331
  %337 = zext nneg i32 %335 to i64
  %min.iters.check748 = icmp ult i32 %335, 4
  br i1 %min.iters.check748, label %.lr.ph691.preheader763, label %vector.memcheck740

vector.memcheck740:                               ; preds = %.lr.ph691.preheader
  %diff.check743 = icmp ult i64 %316, 32
  %diff.check744 = icmp ult i64 %317, 32
  %conflict.rdx745 = or i1 %diff.check743, %diff.check744
  br i1 %conflict.rdx745, label %.lr.ph691.preheader763, label %vector.ph749

vector.ph749:                                     ; preds = %vector.memcheck740
  %n.vec751 = and i64 %337, 2147483644
  %ind.end752 = or disjoint i64 %n.vec751, 1
  br label %vector.body754

vector.body754:                                   ; preds = %vector.body754, %vector.ph749
  %index755 = phi i64 [ 0, %vector.ph749 ], [ %index.next761, %vector.body754 ]
  %offset.idx756 = or disjoint i64 %index755, 1
  %338 = getelementptr double, ptr %invariant.gep728, i64 %offset.idx756
  %339 = getelementptr i8, ptr %338, i64 16
  %wide.load757 = load <2 x double>, ptr %338, align 8, !tbaa !9
  %wide.load758 = load <2 x double>, ptr %339, align 8, !tbaa !9
  %340 = getelementptr double, ptr %invariant.gep730, i64 %offset.idx756
  %341 = getelementptr i8, ptr %340, i64 16
  %wide.load759 = load <2 x double>, ptr %340, align 8, !tbaa !9
  %wide.load760 = load <2 x double>, ptr %341, align 8, !tbaa !9
  %342 = fmul <2 x double> %wide.load759, %wide.load759
  %343 = fmul <2 x double> %wide.load760, %wide.load760
  %344 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %wide.load757, <2 x double> %wide.load757, <2 x double> %342)
  %345 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %wide.load758, <2 x double> %wide.load758, <2 x double> %343)
  %346 = getelementptr double, ptr %19, i64 %index755
  %347 = getelementptr inbounds i8, ptr %346, i64 16
  store <2 x double> %344, ptr %346, align 8, !tbaa !9
  store <2 x double> %345, ptr %347, align 8, !tbaa !9
  %index.next761 = add nuw i64 %index755, 4
  %348 = icmp eq i64 %index.next761, %n.vec751
  br i1 %348, label %middle.block746, label %vector.body754, !llvm.loop !18

middle.block746:                                  ; preds = %vector.body754
  %349 = extractelement <2 x double> %wide.load760, i64 1
  %350 = extractelement <2 x double> %wide.load758, i64 1
  %cmp.n762 = icmp eq i64 %n.vec751, %337
  br i1 %cmp.n762, label %._crit_edge692, label %.lr.ph691.preheader763

.lr.ph691.preheader763:                           ; preds = %middle.block746, %vector.memcheck740, %.lr.ph691.preheader
  %indvars.iv712.ph = phi i64 [ 1, %vector.memcheck740 ], [ 1, %.lr.ph691.preheader ], [ %ind.end752, %middle.block746 ]
  %351 = zext nneg i32 %335 to i64
  %352 = and i32 %335, 1
  %lcmp.mod770.not = icmp eq i32 %352, 0
  br i1 %lcmp.mod770.not, label %.lr.ph691.prol.loopexit, label %.lr.ph691.prol

.lr.ph691.prol:                                   ; preds = %.lr.ph691.preheader763
  %gep729.prol = getelementptr double, ptr %invariant.gep728, i64 %indvars.iv712.ph
  %353 = load double, ptr %gep729.prol, align 8, !tbaa !9
  %gep731.prol = getelementptr double, ptr %invariant.gep730, i64 %indvars.iv712.ph
  %354 = load double, ptr %gep731.prol, align 8, !tbaa !9
  %355 = fmul double %354, %354
  %356 = call double @llvm.fmuladd.f64(double %353, double %353, double %355)
  %357 = getelementptr inbounds double, ptr %55, i64 %indvars.iv712.ph
  store double %356, ptr %357, align 8, !tbaa !9
  %indvars.iv.next713.prol = add nuw nsw i64 %indvars.iv712.ph, 1
  br label %.lr.ph691.prol.loopexit

.lr.ph691.prol.loopexit:                          ; preds = %.lr.ph691.prol, %.lr.ph691.preheader763
  %.lcssa765.unr = phi double [ poison, %.lr.ph691.preheader763 ], [ %353, %.lr.ph691.prol ]
  %.lcssa764.unr = phi double [ poison, %.lr.ph691.preheader763 ], [ %354, %.lr.ph691.prol ]
  %indvars.iv712.unr = phi i64 [ %indvars.iv712.ph, %.lr.ph691.preheader763 ], [ %indvars.iv.next713.prol, %.lr.ph691.prol ]
  %358 = icmp eq i64 %indvars.iv712.ph, %351
  br i1 %358, label %._crit_edge692, label %.lr.ph691

.lr.ph691:                                        ; preds = %.lr.ph691.prol.loopexit, %.lr.ph691
  %indvars.iv712 = phi i64 [ %indvars.iv.next713.1, %.lr.ph691 ], [ %indvars.iv712.unr, %.lr.ph691.prol.loopexit ]
  %gep729 = getelementptr double, ptr %invariant.gep728, i64 %indvars.iv712
  %359 = load double, ptr %gep729, align 8, !tbaa !9
  %gep731 = getelementptr double, ptr %invariant.gep730, i64 %indvars.iv712
  %360 = load double, ptr %gep731, align 8, !tbaa !9
  %361 = fmul double %360, %360
  %362 = call double @llvm.fmuladd.f64(double %359, double %359, double %361)
  %363 = getelementptr inbounds double, ptr %55, i64 %indvars.iv712
  store double %362, ptr %363, align 8, !tbaa !9
  %indvars.iv.next713 = add nuw nsw i64 %indvars.iv712, 1
  %gep729.1 = getelementptr double, ptr %invariant.gep728, i64 %indvars.iv.next713
  %364 = load double, ptr %gep729.1, align 8, !tbaa !9
  %gep731.1 = getelementptr double, ptr %invariant.gep730, i64 %indvars.iv.next713
  %365 = load double, ptr %gep731.1, align 8, !tbaa !9
  %366 = fmul double %365, %365
  %367 = call double @llvm.fmuladd.f64(double %364, double %364, double %366)
  %368 = getelementptr double, ptr %19, i64 %indvars.iv712
  store double %367, ptr %368, align 8, !tbaa !9
  %indvars.iv.next713.1 = add nuw nsw i64 %indvars.iv712, 2
  %exitcond716.not.1 = icmp eq i64 %indvars.iv.next713.1, %wide.trip.count715
  br i1 %exitcond716.not.1, label %._crit_edge692, label %.lr.ph691, !llvm.loop !19

._crit_edge692:                                   ; preds = %.lr.ph691.prol.loopexit, %.lr.ph691, %middle.block746
  %.lcssa733 = phi double [ %350, %middle.block746 ], [ %.lcssa765.unr, %.lr.ph691.prol.loopexit ], [ %364, %.lr.ph691 ]
  %.lcssa = phi double [ %349, %middle.block746 ], [ %.lcssa764.unr, %.lr.ph691.prol.loopexit ], [ %365, %.lr.ph691 ]
  store double %.lcssa733, ptr %30, align 8, !tbaa !9
  store double %.lcssa, ptr %31, align 8, !tbaa !9
  br label %369

369:                                              ; preds = %._crit_edge692, %327
  %370 = call i32 @idamax_(ptr noundef nonnull %4, ptr noundef nonnull %19, ptr noundef nonnull @c__1) #6
  %371 = sext i32 %370 to i64
  %372 = getelementptr double, ptr %54, i64 %328
  %373 = getelementptr double, ptr %372, i64 %371
  %374 = getelementptr double, ptr %54, i64 %331
  %375 = getelementptr double, ptr %374, i64 %371
  call void @dlartg_(ptr noundef %373, ptr noundef %375, ptr noundef nonnull %38, ptr noundef nonnull %40, ptr noundef nonnull %36) #6
  call void @drot_(ptr noundef nonnull %4, ptr noundef %gep696, ptr noundef nonnull @c__1, ptr noundef %gep698, ptr noundef nonnull @c__1, ptr noundef nonnull %38, ptr noundef nonnull %40) #6
  store double 0.000000e+00, ptr %375, align 8, !tbaa !9
  br label %376

376:                                              ; preds = %321, %369, %325
  %indvars.iv.next718 = add nuw nsw i64 %indvars.iv717, 1
  %377 = load i32, ptr %28, align 4, !tbaa !5
  %378 = sext i32 %377 to i64
  %.not642.not = icmp slt i64 %indvars.iv717, %378
  %indvar.next742 = add i64 %indvar741, 1
  br i1 %.not642.not, label %.lr.ph704, label %.loopexit, !llvm.loop !20

.loopexit:                                        ; preds = %376, %300, %.loopexit676, %212
  br i1 %.not634665, label %405, label %379

379:                                              ; preds = %.loopexit
  %380 = load i32, ptr %4, align 4, !tbaa !5
  %381 = load i32, ptr %22, align 4, !tbaa !5
  %382 = sub nsw i32 %380, %381
  store i32 %382, ptr %28, align 4, !tbaa !5
  %383 = call i32 @llvm.smax.i32(i32 %382, i32 1)
  store i32 %383, ptr %29, align 4, !tbaa !5
  %384 = sext i32 %381 to i64
  %385 = getelementptr double, ptr %47, i64 %384
  %386 = getelementptr i8, ptr %385, i64 8
  call void @dlascl_(ptr noundef nonnull @.str.13, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %39, ptr noundef nonnull %33, ptr noundef nonnull %28, ptr noundef nonnull @c__1, ptr noundef %386, ptr noundef nonnull %29, ptr noundef nonnull %34) #6
  %387 = load i32, ptr %4, align 4, !tbaa !5
  %388 = load i32, ptr %22, align 4, !tbaa !5
  %389 = sub nsw i32 %387, %388
  store i32 %389, ptr %28, align 4, !tbaa !5
  %390 = call i32 @llvm.smax.i32(i32 %389, i32 1)
  store i32 %390, ptr %29, align 4, !tbaa !5
  %391 = sext i32 %388 to i64
  %392 = getelementptr double, ptr %48, i64 %391
  %393 = getelementptr i8, ptr %392, i64 8
  call void @dlascl_(ptr noundef nonnull @.str.13, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %39, ptr noundef nonnull %33, ptr noundef nonnull %28, ptr noundef nonnull @c__1, ptr noundef %393, ptr noundef nonnull %29, ptr noundef nonnull %34) #6
  %394 = load i32, ptr %22, align 4, !tbaa !5
  %395 = icmp eq i32 %394, 0
  br i1 %395, label %396, label %400

396:                                              ; preds = %379
  %or.cond21 = select i1 %83, i1 true, i1 %82
  %397 = load i32, ptr %37, align 4
  %398 = icmp eq i32 %397, 0
  %or.cond23 = select i1 %or.cond21, i1 %398, i1 false
  br i1 %or.cond23, label %399, label %405

399:                                              ; preds = %396
  call void @dlascl_(ptr noundef nonnull @.str.13, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %39, ptr noundef nonnull %33, ptr noundef nonnull %4, ptr noundef nonnull @c__1, ptr noundef %18, ptr noundef nonnull %4, ptr noundef nonnull %34) #6
  br label %405

400:                                              ; preds = %379
  %401 = load i32, ptr %13, align 4, !tbaa !5
  %402 = add nsw i32 %401, -1
  store i32 %402, ptr %28, align 4, !tbaa !5
  call void @dlascl_(ptr noundef nonnull @.str.13, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %39, ptr noundef nonnull %33, ptr noundef nonnull %28, ptr noundef nonnull @c__1, ptr noundef %7, ptr noundef nonnull %4, ptr noundef nonnull %34) #6
  %403 = load i32, ptr %13, align 4, !tbaa !5
  %404 = add nsw i32 %403, -1
  store i32 %404, ptr %28, align 4, !tbaa !5
  call void @dlascl_(ptr noundef nonnull @.str.13, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %39, ptr noundef nonnull %33, ptr noundef nonnull %28, ptr noundef nonnull @c__1, ptr noundef %8, ptr noundef nonnull %4, ptr noundef nonnull %34) #6
  br label %405

405:                                              ; preds = %400, %396, %399, %.loopexit
  store double %165, ptr %19, align 8, !tbaa !9
  br label %406

406:                                              ; preds = %171, %405, %.thread658
  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 1, 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 4, ptr nonnull %41) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %40) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %39) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %38) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %37) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %36) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %35) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %34) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %33) #6
  call void @llvm.lifetime.end.p0(i64 1, 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 4, ptr nonnull %29) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %28) #6
  ret void
}

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

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

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

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

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

declare double @dlamch_(ptr noundef) local_unnamed_addr #2

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

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

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

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

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

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

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

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

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

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

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

declare void @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 i32 @llvm.smax.i32(i32, i32) #5

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i32 @llvm.umax.i32(i32, i32) #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 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"double", !7, i64 0}
!11 = !{!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