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

; 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__2 = external hidden global i32, align 4
@.str.6 = external hidden unnamed_addr constant [13 x i8], align 1
@c_n1 = external hidden global i32, align 4
@c__3 = external hidden global i32, align 4
@c__4 = external hidden global i32, align 4
@.str.7 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [2 x i8], align 1
@c_b24 = external hidden global double, align 8
@.str.12 = external hidden unnamed_addr constant [2 x i8], align 1
@c__1 = external hidden global i32, align 4
@c_b45 = external hidden global double, align 8

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

155:                                              ; preds = %23
  %156 = load ptr, ptr %46, align 8, !tbaa !5
  store i32 -1, ptr %156, align 4, !tbaa !9
  br label %289

157:                                              ; preds = %23
  %158 = load i32, ptr %78, align 4, !tbaa !9
  %159 = icmp ne i32 %158, 0
  br i1 %159, label %168, label %160

160:                                              ; preds = %157
  %161 = load i32, ptr %82, align 4, !tbaa !9
  %162 = icmp ne i32 %161, 0
  br i1 %162, label %168, label %163

163:                                              ; preds = %160
  %164 = load i32, ptr %79, align 4, !tbaa !9
  %165 = icmp ne i32 %164, 0
  br i1 %165, label %168, label %166

166:                                              ; preds = %163
  %167 = load ptr, ptr %46, align 8, !tbaa !5
  store i32 -2, ptr %167, align 4, !tbaa !9
  br label %288

168:                                              ; preds = %163, %160, %157
  %169 = load i32, ptr %73, align 4, !tbaa !9
  %170 = icmp ne i32 %169, 0
  br i1 %170, label %177, label %171

171:                                              ; preds = %168
  %172 = load ptr, ptr %26, align 8, !tbaa !5
  %173 = call i32 @lsame_(ptr noundef %172, ptr noundef @.str.5)
  %174 = icmp ne i32 %173, 0
  br i1 %174, label %177, label %175

175:                                              ; preds = %171
  %176 = load ptr, ptr %46, align 8, !tbaa !5
  store i32 -3, ptr %176, align 4, !tbaa !9
  br label %287

177:                                              ; preds = %171, %168
  %178 = load ptr, ptr %27, align 8, !tbaa !5
  %179 = load i32, ptr %178, align 4, !tbaa !9
  %180 = icmp slt i32 %179, 0
  br i1 %180, label %181, label %183

181:                                              ; preds = %177
  %182 = load ptr, ptr %46, align 8, !tbaa !5
  store i32 -4, ptr %182, align 4, !tbaa !9
  br label %286

183:                                              ; preds = %177
  %184 = load ptr, ptr %28, align 8, !tbaa !5
  %185 = load i32, ptr %184, align 4, !tbaa !9
  %186 = icmp slt i32 %185, 0
  br i1 %186, label %187, label %189

187:                                              ; preds = %183
  %188 = load ptr, ptr %46, align 8, !tbaa !5
  store i32 -5, ptr %188, align 4, !tbaa !9
  br label %285

189:                                              ; preds = %183
  %190 = load ptr, ptr %30, align 8, !tbaa !5
  %191 = load i32, ptr %190, align 4, !tbaa !9
  %192 = load ptr, ptr %28, align 8, !tbaa !5
  %193 = load i32, ptr %192, align 4, !tbaa !9
  %194 = add nsw i32 %193, 1
  %195 = icmp slt i32 %191, %194
  br i1 %195, label %196, label %198

196:                                              ; preds = %189
  %197 = load ptr, ptr %46, align 8, !tbaa !5
  store i32 -7, ptr %197, align 4, !tbaa !9
  br label %284

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

201:                                              ; preds = %198
  %202 = load ptr, ptr %32, align 8, !tbaa !5
  %203 = load i32, ptr %202, align 4, !tbaa !9
  %204 = load ptr, ptr %27, align 8, !tbaa !5
  %205 = load i32, ptr %204, align 4, !tbaa !9
  %206 = icmp sge i32 1, %205
  br i1 %206, label %207, label %208

207:                                              ; preds = %201
  br label %211

208:                                              ; preds = %201
  %209 = load ptr, ptr %27, align 8, !tbaa !5
  %210 = load i32, ptr %209, align 4, !tbaa !9
  br label %211

211:                                              ; preds = %208, %207
  %212 = phi i32 [ 1, %207 ], [ %210, %208 ]
  %213 = icmp slt i32 %203, %212
  br i1 %213, label %214, label %216

214:                                              ; preds = %211
  %215 = load ptr, ptr %46, align 8, !tbaa !5
  store i32 -9, ptr %215, align 4, !tbaa !9
  br label %283

216:                                              ; preds = %211, %198
  %217 = load i32, ptr %82, align 4, !tbaa !9
  %218 = icmp ne i32 %217, 0
  br i1 %218, label %219, label %232

219:                                              ; preds = %216
  %220 = load ptr, ptr %27, align 8, !tbaa !5
  %221 = load i32, ptr %220, align 4, !tbaa !9
  %222 = icmp sgt i32 %221, 0
  br i1 %222, label %223, label %231

223:                                              ; preds = %219
  %224 = load ptr, ptr %34, align 8, !tbaa !5
  %225 = load double, ptr %224, align 8, !tbaa !11
  %226 = load ptr, ptr %33, align 8, !tbaa !5
  %227 = load double, ptr %226, align 8, !tbaa !11
  %228 = fcmp ole double %225, %227
  br i1 %228, label %229, label %231

229:                                              ; preds = %223
  %230 = load ptr, ptr %46, align 8, !tbaa !5
  store i32 -11, ptr %230, align 4, !tbaa !9
  br label %231

231:                                              ; preds = %229, %223, %219
  br label %282

232:                                              ; preds = %216
  %233 = load i32, ptr %79, align 4, !tbaa !9
  %234 = icmp ne i32 %233, 0
  br i1 %234, label %235, label %281

235:                                              ; preds = %232
  %236 = load ptr, ptr %35, align 8, !tbaa !5
  %237 = load i32, ptr %236, align 4, !tbaa !9
  %238 = icmp slt i32 %237, 1
  br i1 %238, label %252, label %239

239:                                              ; preds = %235
  %240 = load ptr, ptr %35, align 8, !tbaa !5
  %241 = load i32, ptr %240, align 4, !tbaa !9
  %242 = load ptr, ptr %27, align 8, !tbaa !5
  %243 = load i32, ptr %242, align 4, !tbaa !9
  %244 = icmp sge i32 1, %243
  br i1 %244, label %245, label %246

245:                                              ; preds = %239
  br label %249

246:                                              ; preds = %239
  %247 = load ptr, ptr %27, align 8, !tbaa !5
  %248 = load i32, ptr %247, align 4, !tbaa !9
  br label %249

249:                                              ; preds = %246, %245
  %250 = phi i32 [ 1, %245 ], [ %248, %246 ]
  %251 = icmp sgt i32 %241, %250
  br i1 %251, label %252, label %254

252:                                              ; preds = %249, %235
  %253 = load ptr, ptr %46, align 8, !tbaa !5
  store i32 -12, ptr %253, align 4, !tbaa !9
  br label %280

254:                                              ; preds = %249
  %255 = load ptr, ptr %36, align 8, !tbaa !5
  %256 = load i32, ptr %255, align 4, !tbaa !9
  %257 = load ptr, ptr %27, align 8, !tbaa !5
  %258 = load i32, ptr %257, align 4, !tbaa !9
  %259 = load ptr, ptr %35, align 8, !tbaa !5
  %260 = load i32, ptr %259, align 4, !tbaa !9
  %261 = icmp sle i32 %258, %260
  br i1 %261, label %262, label %265

262:                                              ; preds = %254
  %263 = load ptr, ptr %27, align 8, !tbaa !5
  %264 = load i32, ptr %263, align 4, !tbaa !9
  br label %268

265:                                              ; preds = %254
  %266 = load ptr, ptr %35, align 8, !tbaa !5
  %267 = load i32, ptr %266, align 4, !tbaa !9
  br label %268

268:                                              ; preds = %265, %262
  %269 = phi i32 [ %264, %262 ], [ %267, %265 ]
  %270 = icmp slt i32 %256, %269
  br i1 %270, label %277, label %271

271:                                              ; preds = %268
  %272 = load ptr, ptr %36, align 8, !tbaa !5
  %273 = load i32, ptr %272, align 4, !tbaa !9
  %274 = load ptr, ptr %27, align 8, !tbaa !5
  %275 = load i32, ptr %274, align 4, !tbaa !9
  %276 = icmp sgt i32 %273, %275
  br i1 %276, label %277, label %279

277:                                              ; preds = %271, %268
  %278 = load ptr, ptr %46, align 8, !tbaa !5
  store i32 -13, ptr %278, align 4, !tbaa !9
  br label %279

279:                                              ; preds = %277, %271
  br label %280

280:                                              ; preds = %279, %252
  br label %281

281:                                              ; preds = %280, %232
  br label %282

282:                                              ; preds = %281, %231
  br label %283

283:                                              ; preds = %282, %214
  br label %284

284:                                              ; preds = %283, %196
  br label %285

285:                                              ; preds = %284, %187
  br label %286

286:                                              ; preds = %285, %181
  br label %287

287:                                              ; preds = %286, %175
  br label %288

288:                                              ; preds = %287, %166
  br label %289

289:                                              ; preds = %288, %155
  %290 = load ptr, ptr %46, align 8, !tbaa !5
  %291 = load i32, ptr %290, align 4, !tbaa !9
  %292 = icmp eq i32 %291, 0
  br i1 %292, label %293, label %309

293:                                              ; preds = %289
  %294 = load ptr, ptr %41, align 8, !tbaa !5
  %295 = load i32, ptr %294, align 4, !tbaa !9
  %296 = icmp slt i32 %295, 1
  br i1 %296, label %306, label %297

297:                                              ; preds = %293
  %298 = load i32, ptr %75, align 4, !tbaa !9
  %299 = icmp ne i32 %298, 0
  br i1 %299, label %300, label %308

300:                                              ; preds = %297
  %301 = load ptr, ptr %41, align 8, !tbaa !5
  %302 = load i32, ptr %301, align 4, !tbaa !9
  %303 = load ptr, ptr %27, align 8, !tbaa !5
  %304 = load i32, ptr %303, align 4, !tbaa !9
  %305 = icmp slt i32 %302, %304
  br i1 %305, label %306, label %308

306:                                              ; preds = %300, %293
  %307 = load ptr, ptr %46, align 8, !tbaa !5
  store i32 -18, ptr %307, align 4, !tbaa !9
  br label %308

308:                                              ; preds = %306, %300, %297
  br label %309

309:                                              ; preds = %308, %289
  %310 = load ptr, ptr %46, align 8, !tbaa !5
  %311 = load i32, ptr %310, align 4, !tbaa !9
  %312 = icmp eq i32 %311, 0
  br i1 %312, label %313, label %357

313:                                              ; preds = %309
  %314 = load ptr, ptr %27, align 8, !tbaa !5
  %315 = load i32, ptr %314, align 4, !tbaa !9
  %316 = icmp sle i32 %315, 1
  br i1 %316, label %317, label %322

317:                                              ; preds = %313
  store i32 1, ptr %72, align 4, !tbaa !9
  %318 = load i32, ptr %72, align 4, !tbaa !9
  %319 = sitofp i32 %318 to double
  %320 = load ptr, ptr %42, align 8, !tbaa !5
  %321 = getelementptr inbounds double, ptr %320, i64 1
  store double %319, ptr %321, align 8, !tbaa !11
  br label %346

322:                                              ; preds = %313
  %323 = load ptr, ptr %24, align 8, !tbaa !5
  %324 = load ptr, ptr %27, align 8, !tbaa !5
  %325 = load ptr, ptr %28, align 8, !tbaa !5
  %326 = call i32 @ilaenv2stage_(ptr noundef @c__2, ptr noundef @.str.6, ptr noundef %323, ptr noundef %324, ptr noundef %325, ptr noundef @c_n1, ptr noundef @c_n1)
  store i32 %326, ptr %76, align 4, !tbaa !9
  %327 = load ptr, ptr %24, align 8, !tbaa !5
  %328 = load ptr, ptr %27, align 8, !tbaa !5
  %329 = load ptr, ptr %28, align 8, !tbaa !5
  %330 = call i32 @ilaenv2stage_(ptr noundef @c__3, ptr noundef @.str.6, ptr noundef %327, ptr noundef %328, ptr noundef %329, ptr noundef %76, ptr noundef @c_n1)
  store i32 %330, ptr %71, align 4, !tbaa !9
  %331 = load ptr, ptr %24, align 8, !tbaa !5
  %332 = load ptr, ptr %27, align 8, !tbaa !5
  %333 = load ptr, ptr %28, align 8, !tbaa !5
  %334 = call i32 @ilaenv2stage_(ptr noundef @c__4, ptr noundef @.str.6, ptr noundef %331, ptr noundef %332, ptr noundef %333, ptr noundef %76, ptr noundef @c_n1)
  store i32 %334, ptr %74, align 4, !tbaa !9
  %335 = load ptr, ptr %27, align 8, !tbaa !5
  %336 = load i32, ptr %335, align 4, !tbaa !9
  %337 = shl i32 %336, 1
  %338 = load i32, ptr %71, align 4, !tbaa !9
  %339 = add nsw i32 %337, %338
  %340 = load i32, ptr %74, align 4, !tbaa !9
  %341 = add nsw i32 %339, %340
  store i32 %341, ptr %72, align 4, !tbaa !9
  %342 = load i32, ptr %72, align 4, !tbaa !9
  %343 = sitofp i32 %342 to double
  %344 = load ptr, ptr %42, align 8, !tbaa !5
  %345 = getelementptr inbounds double, ptr %344, i64 1
  store double %343, ptr %345, align 8, !tbaa !11
  br label %346

346:                                              ; preds = %322, %317
  %347 = load ptr, ptr %43, align 8, !tbaa !5
  %348 = load i32, ptr %347, align 4, !tbaa !9
  %349 = load i32, ptr %72, align 4, !tbaa !9
  %350 = icmp slt i32 %348, %349
  br i1 %350, label %351, label %356

351:                                              ; preds = %346
  %352 = load i32, ptr %92, align 4, !tbaa !9
  %353 = icmp ne i32 %352, 0
  br i1 %353, label %356, label %354

354:                                              ; preds = %351
  %355 = load ptr, ptr %46, align 8, !tbaa !5
  store i32 -20, ptr %355, align 4, !tbaa !9
  br label %356

356:                                              ; preds = %354, %351, %346
  br label %357

357:                                              ; preds = %356, %309
  %358 = load ptr, ptr %46, align 8, !tbaa !5
  %359 = load i32, ptr %358, align 4, !tbaa !9
  %360 = icmp ne i32 %359, 0
  br i1 %360, label %361, label %366

361:                                              ; preds = %357
  %362 = load ptr, ptr %46, align 8, !tbaa !5
  %363 = load i32, ptr %362, align 4, !tbaa !9
  %364 = sub nsw i32 0, %363
  store i32 %364, ptr %53, align 4, !tbaa !9
  %365 = call i32 @xerbla_(ptr noundef @.str.7, ptr noundef %53, i32 noundef 13)
  store i32 1, ptr %98, align 4
  br label %1012

366:                                              ; preds = %357
  %367 = load i32, ptr %92, align 4, !tbaa !9
  %368 = icmp ne i32 %367, 0
  br i1 %368, label %369, label %370

369:                                              ; preds = %366
  store i32 1, ptr %98, align 4
  br label %1012

370:                                              ; preds = %366
  br label %371

371:                                              ; preds = %370
  %372 = load ptr, ptr %38, align 8, !tbaa !5
  store i32 0, ptr %372, align 4, !tbaa !9
  %373 = load ptr, ptr %27, align 8, !tbaa !5
  %374 = load i32, ptr %373, align 4, !tbaa !9
  %375 = icmp eq i32 %374, 0
  br i1 %375, label %376, label %377

376:                                              ; preds = %371
  store i32 1, ptr %98, align 4
  br label %1012

377:                                              ; preds = %371
  %378 = load ptr, ptr %27, align 8, !tbaa !5
  %379 = load i32, ptr %378, align 4, !tbaa !9
  %380 = icmp eq i32 %379, 1
  br i1 %380, label %381, label %436

381:                                              ; preds = %377
  %382 = load ptr, ptr %38, align 8, !tbaa !5
  store i32 1, ptr %382, align 4, !tbaa !9
  %383 = load i32, ptr %73, align 4, !tbaa !9
  %384 = icmp ne i32 %383, 0
  br i1 %384, label %385, label %392

385:                                              ; preds = %381
  %386 = load ptr, ptr %29, align 8, !tbaa !5
  %387 = load i32, ptr %47, align 4, !tbaa !9
  %388 = add nsw i32 %387, 1
  %389 = sext i32 %388 to i64
  %390 = getelementptr inbounds double, ptr %386, i64 %389
  %391 = load double, ptr %390, align 8, !tbaa !11
  store double %391, ptr %97, align 8, !tbaa !11
  br label %402

392:                                              ; preds = %381
  %393 = load ptr, ptr %29, align 8, !tbaa !5
  %394 = load ptr, ptr %28, align 8, !tbaa !5
  %395 = load i32, ptr %394, align 4, !tbaa !9
  %396 = add nsw i32 %395, 1
  %397 = load i32, ptr %47, align 4, !tbaa !9
  %398 = add nsw i32 %396, %397
  %399 = sext i32 %398 to i64
  %400 = getelementptr inbounds double, ptr %393, i64 %399
  %401 = load double, ptr %400, align 8, !tbaa !11
  store double %401, ptr %97, align 8, !tbaa !11
  br label %402

402:                                              ; preds = %392, %385
  %403 = load i32, ptr %82, align 4, !tbaa !9
  %404 = icmp ne i32 %403, 0
  br i1 %404, label %405, label %418

405:                                              ; preds = %402
  %406 = load ptr, ptr %33, align 8, !tbaa !5
  %407 = load double, ptr %406, align 8, !tbaa !11
  %408 = load double, ptr %97, align 8, !tbaa !11
  %409 = fcmp olt double %407, %408
  br i1 %409, label %410, label %415

410:                                              ; preds = %405
  %411 = load ptr, ptr %34, align 8, !tbaa !5
  %412 = load double, ptr %411, align 8, !tbaa !11
  %413 = load double, ptr %97, align 8, !tbaa !11
  %414 = fcmp oge double %412, %413
  br i1 %414, label %417, label %415

415:                                              ; preds = %410, %405
  %416 = load ptr, ptr %38, align 8, !tbaa !5
  store i32 0, ptr %416, align 4, !tbaa !9
  br label %417

417:                                              ; preds = %415, %410
  br label %418

418:                                              ; preds = %417, %402
  %419 = load ptr, ptr %38, align 8, !tbaa !5
  %420 = load i32, ptr %419, align 4, !tbaa !9
  %421 = icmp eq i32 %420, 1
  br i1 %421, label %422, label %435

422:                                              ; preds = %418
  %423 = load double, ptr %97, align 8, !tbaa !11
  %424 = load ptr, ptr %39, align 8, !tbaa !5
  %425 = getelementptr inbounds double, ptr %424, i64 1
  store double %423, ptr %425, align 8, !tbaa !11
  %426 = load i32, ptr %75, align 4, !tbaa !9
  %427 = icmp ne i32 %426, 0
  br i1 %427, label %428, label %434

428:                                              ; preds = %422
  %429 = load ptr, ptr %40, align 8, !tbaa !5
  %430 = load i32, ptr %51, align 4, !tbaa !9
  %431 = add nsw i32 %430, 1
  %432 = sext i32 %431 to i64
  %433 = getelementptr inbounds double, ptr %429, i64 %432
  store double 1.000000e+00, ptr %433, align 8, !tbaa !11
  br label %434

434:                                              ; preds = %428, %422
  br label %435

435:                                              ; preds = %434, %418
  store i32 1, ptr %98, align 4
  br label %1012

436:                                              ; preds = %377
  %437 = call double @dlamch_(ptr noundef @.str.8)
  store double %437, ptr %83, align 8, !tbaa !11
  %438 = call double @dlamch_(ptr noundef @.str.9)
  store double %438, ptr %93, align 8, !tbaa !11
  %439 = load double, ptr %83, align 8, !tbaa !11
  %440 = load double, ptr %93, align 8, !tbaa !11
  %441 = fdiv double %439, %440
  store double %441, ptr %91, align 8, !tbaa !11
  %442 = load double, ptr %91, align 8, !tbaa !11
  %443 = fdiv double 1.000000e+00, %442
  store double %443, ptr %85, align 8, !tbaa !11
  %444 = load double, ptr %91, align 8, !tbaa !11
  %445 = call double @sqrt(double noundef %444) #4
  store double %445, ptr %61, align 8, !tbaa !11
  %446 = load double, ptr %85, align 8, !tbaa !11
  %447 = call double @sqrt(double noundef %446) #4
  store double %447, ptr %55, align 8, !tbaa !11
  %448 = load double, ptr %83, align 8, !tbaa !11
  %449 = call double @sqrt(double noundef %448) #4
  %450 = call double @sqrt(double noundef %449) #4
  %451 = fdiv double 1.000000e+00, %450
  store double %451, ptr %56, align 8, !tbaa !11
  %452 = load double, ptr %55, align 8, !tbaa !11
  %453 = load double, ptr %56, align 8, !tbaa !11
  %454 = fcmp ole double %452, %453
  br i1 %454, label %455, label %457

455:                                              ; preds = %436
  %456 = load double, ptr %55, align 8, !tbaa !11
  br label %459

457:                                              ; preds = %436
  %458 = load double, ptr %56, align 8, !tbaa !11
  br label %459

459:                                              ; preds = %457, %455
  %460 = phi double [ %456, %455 ], [ %458, %457 ]
  store double %460, ptr %62, align 8, !tbaa !11
  store i32 0, ptr %80, align 4, !tbaa !9
  %461 = load ptr, ptr %37, align 8, !tbaa !5
  %462 = load double, ptr %461, align 8, !tbaa !11
  store double %462, ptr %84, align 8, !tbaa !11
  %463 = load i32, ptr %82, align 4, !tbaa !9
  %464 = icmp ne i32 %463, 0
  br i1 %464, label %465, label %470

465:                                              ; preds = %459
  %466 = load ptr, ptr %33, align 8, !tbaa !5
  %467 = load double, ptr %466, align 8, !tbaa !11
  store double %467, ptr %94, align 8, !tbaa !11
  %468 = load ptr, ptr %34, align 8, !tbaa !5
  %469 = load double, ptr %468, align 8, !tbaa !11
  store double %469, ptr %95, align 8, !tbaa !11
  br label %471

470:                                              ; preds = %459
  store double 0.000000e+00, ptr %94, align 8, !tbaa !11
  store double 0.000000e+00, ptr %95, align 8, !tbaa !11
  br label %471

471:                                              ; preds = %470, %465
  %472 = load ptr, ptr %26, align 8, !tbaa !5
  %473 = load ptr, ptr %27, align 8, !tbaa !5
  %474 = load ptr, ptr %28, align 8, !tbaa !5
  %475 = load ptr, ptr %29, align 8, !tbaa !5
  %476 = load i32, ptr %48, align 4, !tbaa !9
  %477 = sext i32 %476 to i64
  %478 = getelementptr inbounds double, ptr %475, i64 %477
  %479 = load ptr, ptr %30, align 8, !tbaa !5
  %480 = load ptr, ptr %42, align 8, !tbaa !5
  %481 = getelementptr inbounds double, ptr %480, i64 1
  %482 = call double @dlansb_(ptr noundef @.str.10, ptr noundef %472, ptr noundef %473, ptr noundef %474, ptr noundef %478, ptr noundef %479, ptr noundef %481)
  store double %482, ptr %59, align 8, !tbaa !11
  %483 = load double, ptr %59, align 8, !tbaa !11
  %484 = fcmp ogt double %483, 0.000000e+00
  br i1 %484, label %485, label %493

485:                                              ; preds = %471
  %486 = load double, ptr %59, align 8, !tbaa !11
  %487 = load double, ptr %61, align 8, !tbaa !11
  %488 = fcmp olt double %486, %487
  br i1 %488, label %489, label %493

489:                                              ; preds = %485
  store i32 1, ptr %80, align 4, !tbaa !9
  %490 = load double, ptr %61, align 8, !tbaa !11
  %491 = load double, ptr %59, align 8, !tbaa !11
  %492 = fdiv double %490, %491
  store double %492, ptr %68, align 8, !tbaa !11
  br label %502

493:                                              ; preds = %485, %471
  %494 = load double, ptr %59, align 8, !tbaa !11
  %495 = load double, ptr %62, align 8, !tbaa !11
  %496 = fcmp ogt double %494, %495
  br i1 %496, label %497, label %501

497:                                              ; preds = %493
  store i32 1, ptr %80, align 4, !tbaa !9
  %498 = load double, ptr %62, align 8, !tbaa !11
  %499 = load double, ptr %59, align 8, !tbaa !11
  %500 = fdiv double %498, %499
  store double %500, ptr %68, align 8, !tbaa !11
  br label %501

501:                                              ; preds = %497, %493
  br label %502

502:                                              ; preds = %501, %489
  %503 = load i32, ptr %80, align 4, !tbaa !9
  %504 = icmp eq i32 %503, 1
  br i1 %504, label %505, label %552

505:                                              ; preds = %502
  %506 = load i32, ptr %73, align 4, !tbaa !9
  %507 = icmp ne i32 %506, 0
  br i1 %507, label %508, label %519

508:                                              ; preds = %505
  %509 = load ptr, ptr %28, align 8, !tbaa !5
  %510 = load ptr, ptr %28, align 8, !tbaa !5
  %511 = load ptr, ptr %27, align 8, !tbaa !5
  %512 = load ptr, ptr %27, align 8, !tbaa !5
  %513 = load ptr, ptr %29, align 8, !tbaa !5
  %514 = load i32, ptr %48, align 4, !tbaa !9
  %515 = sext i32 %514 to i64
  %516 = getelementptr inbounds double, ptr %513, i64 %515
  %517 = load ptr, ptr %30, align 8, !tbaa !5
  %518 = load ptr, ptr %46, align 8, !tbaa !5
  call void @dlascl_(ptr noundef @.str.11, ptr noundef %509, ptr noundef %510, ptr noundef @c_b24, ptr noundef %68, ptr noundef %511, ptr noundef %512, ptr noundef %516, ptr noundef %517, ptr noundef %518)
  br label %530

519:                                              ; preds = %505
  %520 = load ptr, ptr %28, align 8, !tbaa !5
  %521 = load ptr, ptr %28, align 8, !tbaa !5
  %522 = load ptr, ptr %27, align 8, !tbaa !5
  %523 = load ptr, ptr %27, align 8, !tbaa !5
  %524 = load ptr, ptr %29, align 8, !tbaa !5
  %525 = load i32, ptr %48, align 4, !tbaa !9
  %526 = sext i32 %525 to i64
  %527 = getelementptr inbounds double, ptr %524, i64 %526
  %528 = load ptr, ptr %30, align 8, !tbaa !5
  %529 = load ptr, ptr %46, align 8, !tbaa !5
  call void @dlascl_(ptr noundef @.str.12, ptr noundef %520, ptr noundef %521, ptr noundef @c_b24, ptr noundef %68, ptr noundef %522, ptr noundef %523, ptr noundef %527, ptr noundef %528, ptr noundef %529)
  br label %530

530:                                              ; preds = %519, %508
  %531 = load ptr, ptr %37, align 8, !tbaa !5
  %532 = load double, ptr %531, align 8, !tbaa !11
  %533 = fcmp ogt double %532, 0.000000e+00
  br i1 %533, label %534, label %539

534:                                              ; preds = %530
  %535 = load ptr, ptr %37, align 8, !tbaa !5
  %536 = load double, ptr %535, align 8, !tbaa !11
  %537 = load double, ptr %68, align 8, !tbaa !11
  %538 = fmul double %536, %537
  store double %538, ptr %84, align 8, !tbaa !11
  br label %539

539:                                              ; preds = %534, %530
  %540 = load i32, ptr %82, align 4, !tbaa !9
  %541 = icmp ne i32 %540, 0
  br i1 %541, label %542, label %551

542:                                              ; preds = %539
  %543 = load ptr, ptr %33, align 8, !tbaa !5
  %544 = load double, ptr %543, align 8, !tbaa !11
  %545 = load double, ptr %68, align 8, !tbaa !11
  %546 = fmul double %544, %545
  store double %546, ptr %94, align 8, !tbaa !11
  %547 = load ptr, ptr %34, align 8, !tbaa !5
  %548 = load double, ptr %547, align 8, !tbaa !11
  %549 = load double, ptr %68, align 8, !tbaa !11
  %550 = fmul double %548, %549
  store double %550, ptr %95, align 8, !tbaa !11
  br label %551

551:                                              ; preds = %542, %539
  br label %552

552:                                              ; preds = %551, %502
  store i32 1, ptr %57, align 4, !tbaa !9
  %553 = load i32, ptr %57, align 4, !tbaa !9
  %554 = load ptr, ptr %27, align 8, !tbaa !5
  %555 = load i32, ptr %554, align 4, !tbaa !9
  %556 = add nsw i32 %553, %555
  store i32 %556, ptr %58, align 4, !tbaa !9
  %557 = load i32, ptr %58, align 4, !tbaa !9
  %558 = load ptr, ptr %27, align 8, !tbaa !5
  %559 = load i32, ptr %558, align 4, !tbaa !9
  %560 = add nsw i32 %557, %559
  store i32 %560, ptr %96, align 4, !tbaa !9
  %561 = load i32, ptr %96, align 4, !tbaa !9
  %562 = load i32, ptr %71, align 4, !tbaa !9
  %563 = add nsw i32 %561, %562
  store i32 %563, ptr %88, align 4, !tbaa !9
  %564 = load ptr, ptr %43, align 8, !tbaa !5
  %565 = load i32, ptr %564, align 4, !tbaa !9
  %566 = load i32, ptr %88, align 4, !tbaa !9
  %567 = sub nsw i32 %565, %566
  %568 = add nsw i32 %567, 1
  store i32 %568, ptr %90, align 4, !tbaa !9
  %569 = load ptr, ptr %24, align 8, !tbaa !5
  %570 = load ptr, ptr %26, align 8, !tbaa !5
  %571 = load ptr, ptr %27, align 8, !tbaa !5
  %572 = load ptr, ptr %28, align 8, !tbaa !5
  %573 = load ptr, ptr %29, align 8, !tbaa !5
  %574 = load i32, ptr %48, align 4, !tbaa !9
  %575 = sext i32 %574 to i64
  %576 = getelementptr inbounds double, ptr %573, i64 %575
  %577 = load ptr, ptr %30, align 8, !tbaa !5
  %578 = load ptr, ptr %42, align 8, !tbaa !5
  %579 = load i32, ptr %57, align 4, !tbaa !9
  %580 = sext i32 %579 to i64
  %581 = getelementptr inbounds double, ptr %578, i64 %580
  %582 = load ptr, ptr %42, align 8, !tbaa !5
  %583 = load i32, ptr %58, align 4, !tbaa !9
  %584 = sext i32 %583 to i64
  %585 = getelementptr inbounds double, ptr %582, i64 %584
  %586 = load ptr, ptr %42, align 8, !tbaa !5
  %587 = load i32, ptr %96, align 4, !tbaa !9
  %588 = sext i32 %587 to i64
  %589 = getelementptr inbounds double, ptr %586, i64 %588
  %590 = load ptr, ptr %42, align 8, !tbaa !5
  %591 = load i32, ptr %88, align 4, !tbaa !9
  %592 = sext i32 %591 to i64
  %593 = getelementptr inbounds double, ptr %590, i64 %592
  call void @dsytrd_sb2st_(ptr noundef @.str.4, ptr noundef %569, ptr noundef %570, ptr noundef %571, ptr noundef %572, ptr noundef %576, ptr noundef %577, ptr noundef %581, ptr noundef %585, ptr noundef %589, ptr noundef %71, ptr noundef %593, ptr noundef %90, ptr noundef %69)
  store i32 0, ptr %63, align 4, !tbaa !9
  %594 = load i32, ptr %79, align 4, !tbaa !9
  %595 = icmp ne i32 %594, 0
  br i1 %595, label %596, label %608

596:                                              ; preds = %552
  %597 = load ptr, ptr %35, align 8, !tbaa !5
  %598 = load i32, ptr %597, align 4, !tbaa !9
  %599 = icmp eq i32 %598, 1
  br i1 %599, label %600, label %607

600:                                              ; preds = %596
  %601 = load ptr, ptr %36, align 8, !tbaa !5
  %602 = load i32, ptr %601, align 4, !tbaa !9
  %603 = load ptr, ptr %27, align 8, !tbaa !5
  %604 = load i32, ptr %603, align 4, !tbaa !9
  %605 = icmp eq i32 %602, %604
  br i1 %605, label %606, label %607

606:                                              ; preds = %600
  store i32 1, ptr %63, align 4, !tbaa !9
  br label %607

607:                                              ; preds = %606, %600, %596
  br label %608

608:                                              ; preds = %607, %552
  %609 = load i32, ptr %78, align 4, !tbaa !9
  %610 = icmp ne i32 %609, 0
  br i1 %610, label %614, label %611

611:                                              ; preds = %608
  %612 = load i32, ptr %63, align 4, !tbaa !9
  %613 = icmp ne i32 %612, 0
  br i1 %613, label %614, label %725

614:                                              ; preds = %611, %608
  %615 = load ptr, ptr %37, align 8, !tbaa !5
  %616 = load double, ptr %615, align 8, !tbaa !11
  %617 = fcmp ole double %616, 0.000000e+00
  br i1 %617, label %618, label %725

618:                                              ; preds = %614
  %619 = load ptr, ptr %27, align 8, !tbaa !5
  %620 = load ptr, ptr %42, align 8, !tbaa !5
  %621 = load i32, ptr %57, align 4, !tbaa !9
  %622 = sext i32 %621 to i64
  %623 = getelementptr inbounds double, ptr %620, i64 %622
  %624 = load ptr, ptr %39, align 8, !tbaa !5
  %625 = getelementptr inbounds double, ptr %624, i64 1
  call void @dcopy_(ptr noundef %619, ptr noundef %623, ptr noundef @c__1, ptr noundef %625, ptr noundef @c__1)
  %626 = load i32, ptr %88, align 4, !tbaa !9
  %627 = load ptr, ptr %27, align 8, !tbaa !5
  %628 = load i32, ptr %627, align 4, !tbaa !9
  %629 = shl i32 %628, 1
  %630 = add nsw i32 %626, %629
  store i32 %630, ptr %67, align 4, !tbaa !9
  %631 = load i32, ptr %75, align 4, !tbaa !9
  %632 = icmp ne i32 %631, 0
  br i1 %632, label %653, label %633

633:                                              ; preds = %618
  %634 = load ptr, ptr %27, align 8, !tbaa !5
  %635 = load i32, ptr %634, align 4, !tbaa !9
  %636 = sub nsw i32 %635, 1
  store i32 %636, ptr %53, align 4, !tbaa !9
  %637 = load ptr, ptr %42, align 8, !tbaa !5
  %638 = load i32, ptr %58, align 4, !tbaa !9
  %639 = sext i32 %638 to i64
  %640 = getelementptr inbounds double, ptr %637, i64 %639
  %641 = load ptr, ptr %42, align 8, !tbaa !5
  %642 = load i32, ptr %67, align 4, !tbaa !9
  %643 = sext i32 %642 to i64
  %644 = getelementptr inbounds double, ptr %641, i64 %643
  call void @dcopy_(ptr noundef %53, ptr noundef %640, ptr noundef @c__1, ptr noundef %644, ptr noundef @c__1)
  %645 = load ptr, ptr %27, align 8, !tbaa !5
  %646 = load ptr, ptr %39, align 8, !tbaa !5
  %647 = getelementptr inbounds double, ptr %646, i64 1
  %648 = load ptr, ptr %42, align 8, !tbaa !5
  %649 = load i32, ptr %67, align 4, !tbaa !9
  %650 = sext i32 %649 to i64
  %651 = getelementptr inbounds double, ptr %648, i64 %650
  %652 = load ptr, ptr %46, align 8, !tbaa !5
  call void @dsterf_(ptr noundef %645, ptr noundef %647, ptr noundef %651, ptr noundef %652)
  br label %715

653:                                              ; preds = %618
  %654 = load ptr, ptr %27, align 8, !tbaa !5
  %655 = load ptr, ptr %27, align 8, !tbaa !5
  %656 = load ptr, ptr %31, align 8, !tbaa !5
  %657 = load i32, ptr %50, align 4, !tbaa !9
  %658 = sext i32 %657 to i64
  %659 = getelementptr inbounds double, ptr %656, i64 %658
  %660 = load ptr, ptr %32, align 8, !tbaa !5
  %661 = load ptr, ptr %40, align 8, !tbaa !5
  %662 = load i32, ptr %52, align 4, !tbaa !9
  %663 = sext i32 %662 to i64
  %664 = getelementptr inbounds double, ptr %661, i64 %663
  %665 = load ptr, ptr %41, align 8, !tbaa !5
  call void @dlacpy_(ptr noundef @.str.1, ptr noundef %654, ptr noundef %655, ptr noundef %659, ptr noundef %660, ptr noundef %664, ptr noundef %665)
  %666 = load ptr, ptr %27, align 8, !tbaa !5
  %667 = load i32, ptr %666, align 4, !tbaa !9
  %668 = sub nsw i32 %667, 1
  store i32 %668, ptr %53, align 4, !tbaa !9
  %669 = load ptr, ptr %42, align 8, !tbaa !5
  %670 = load i32, ptr %58, align 4, !tbaa !9
  %671 = sext i32 %670 to i64
  %672 = getelementptr inbounds double, ptr %669, i64 %671
  %673 = load ptr, ptr %42, align 8, !tbaa !5
  %674 = load i32, ptr %67, align 4, !tbaa !9
  %675 = sext i32 %674 to i64
  %676 = getelementptr inbounds double, ptr %673, i64 %675
  call void @dcopy_(ptr noundef %53, ptr noundef %672, ptr noundef @c__1, ptr noundef %676, ptr noundef @c__1)
  %677 = load ptr, ptr %24, align 8, !tbaa !5
  %678 = load ptr, ptr %27, align 8, !tbaa !5
  %679 = load ptr, ptr %39, align 8, !tbaa !5
  %680 = getelementptr inbounds double, ptr %679, i64 1
  %681 = load ptr, ptr %42, align 8, !tbaa !5
  %682 = load i32, ptr %67, align 4, !tbaa !9
  %683 = sext i32 %682 to i64
  %684 = getelementptr inbounds double, ptr %681, i64 %683
  %685 = load ptr, ptr %40, align 8, !tbaa !5
  %686 = load i32, ptr %52, align 4, !tbaa !9
  %687 = sext i32 %686 to i64
  %688 = getelementptr inbounds double, ptr %685, i64 %687
  %689 = load ptr, ptr %41, align 8, !tbaa !5
  %690 = load ptr, ptr %42, align 8, !tbaa !5
  %691 = load i32, ptr %88, align 4, !tbaa !9
  %692 = sext i32 %691 to i64
  %693 = getelementptr inbounds double, ptr %690, i64 %692
  %694 = load ptr, ptr %46, align 8, !tbaa !5
  call void @dsteqr_(ptr noundef %677, ptr noundef %678, ptr noundef %680, ptr noundef %684, ptr noundef %688, ptr noundef %689, ptr noundef %693, ptr noundef %694)
  %695 = load ptr, ptr %46, align 8, !tbaa !5
  %696 = load i32, ptr %695, align 4, !tbaa !9
  %697 = icmp eq i32 %696, 0
  br i1 %697, label %698, label %714

698:                                              ; preds = %653
  %699 = load ptr, ptr %27, align 8, !tbaa !5
  %700 = load i32, ptr %699, align 4, !tbaa !9
  store i32 %700, ptr %53, align 4, !tbaa !9
  store i32 1, ptr %65, align 4, !tbaa !9
  br label %701

701:                                              ; preds = %710, %698
  %702 = load i32, ptr %65, align 4, !tbaa !9
  %703 = load i32, ptr %53, align 4, !tbaa !9
  %704 = icmp sle i32 %702, %703
  br i1 %704, label %705, label %713

705:                                              ; preds = %701
  %706 = load ptr, ptr %45, align 8, !tbaa !5
  %707 = load i32, ptr %65, align 4, !tbaa !9
  %708 = sext i32 %707 to i64
  %709 = getelementptr inbounds i32, ptr %706, i64 %708
  store i32 0, ptr %709, align 4, !tbaa !9
  br label %710

710:                                              ; preds = %705
  %711 = load i32, ptr %65, align 4, !tbaa !9
  %712 = add nsw i32 %711, 1
  store i32 %712, ptr %65, align 4, !tbaa !9
  br label %701, !llvm.loop !13

713:                                              ; preds = %701
  br label %714

714:                                              ; preds = %713, %653
  br label %715

715:                                              ; preds = %714, %633
  %716 = load ptr, ptr %46, align 8, !tbaa !5
  %717 = load i32, ptr %716, align 4, !tbaa !9
  %718 = icmp eq i32 %717, 0
  br i1 %718, label %719, label %723

719:                                              ; preds = %715
  %720 = load ptr, ptr %27, align 8, !tbaa !5
  %721 = load i32, ptr %720, align 4, !tbaa !9
  %722 = load ptr, ptr %38, align 8, !tbaa !5
  store i32 %721, ptr %722, align 4, !tbaa !9
  br label %851

723:                                              ; preds = %715
  %724 = load ptr, ptr %46, align 8, !tbaa !5
  store i32 0, ptr %724, align 4, !tbaa !9
  br label %725

725:                                              ; preds = %723, %614, %611
  %726 = load i32, ptr %75, align 4, !tbaa !9
  %727 = icmp ne i32 %726, 0
  br i1 %727, label %728, label %730

728:                                              ; preds = %725
  %729 = getelementptr inbounds [1 x i8], ptr %70, i64 0, i64 0
  store i8 66, ptr %729, align 1, !tbaa !15
  br label %732

730:                                              ; preds = %725
  %731 = getelementptr inbounds [1 x i8], ptr %70, i64 0, i64 0
  store i8 69, ptr %731, align 1, !tbaa !15
  br label %732

732:                                              ; preds = %730, %728
  store i32 1, ptr %81, align 4, !tbaa !9
  %733 = load i32, ptr %81, align 4, !tbaa !9
  %734 = load ptr, ptr %27, align 8, !tbaa !5
  %735 = load i32, ptr %734, align 4, !tbaa !9
  %736 = add nsw i32 %733, %735
  store i32 %736, ptr %86, align 4, !tbaa !9
  %737 = load i32, ptr %86, align 4, !tbaa !9
  %738 = load ptr, ptr %27, align 8, !tbaa !5
  %739 = load i32, ptr %738, align 4, !tbaa !9
  %740 = add nsw i32 %737, %739
  store i32 %740, ptr %87, align 4, !tbaa !9
  %741 = load ptr, ptr %25, align 8, !tbaa !5
  %742 = getelementptr inbounds [1 x i8], ptr %70, i64 0, i64 0
  %743 = load ptr, ptr %27, align 8, !tbaa !5
  %744 = load ptr, ptr %35, align 8, !tbaa !5
  %745 = load ptr, ptr %36, align 8, !tbaa !5
  %746 = load ptr, ptr %42, align 8, !tbaa !5
  %747 = load i32, ptr %57, align 4, !tbaa !9
  %748 = sext i32 %747 to i64
  %749 = getelementptr inbounds double, ptr %746, i64 %748
  %750 = load ptr, ptr %42, align 8, !tbaa !5
  %751 = load i32, ptr %58, align 4, !tbaa !9
  %752 = sext i32 %751 to i64
  %753 = getelementptr inbounds double, ptr %750, i64 %752
  %754 = load ptr, ptr %38, align 8, !tbaa !5
  %755 = load ptr, ptr %39, align 8, !tbaa !5
  %756 = getelementptr inbounds double, ptr %755, i64 1
  %757 = load ptr, ptr %44, align 8, !tbaa !5
  %758 = load i32, ptr %81, align 4, !tbaa !9
  %759 = sext i32 %758 to i64
  %760 = getelementptr inbounds i32, ptr %757, i64 %759
  %761 = load ptr, ptr %44, align 8, !tbaa !5
  %762 = load i32, ptr %86, align 4, !tbaa !9
  %763 = sext i32 %762 to i64
  %764 = getelementptr inbounds i32, ptr %761, i64 %763
  %765 = load ptr, ptr %42, align 8, !tbaa !5
  %766 = load i32, ptr %88, align 4, !tbaa !9
  %767 = sext i32 %766 to i64
  %768 = getelementptr inbounds double, ptr %765, i64 %767
  %769 = load ptr, ptr %44, align 8, !tbaa !5
  %770 = load i32, ptr %87, align 4, !tbaa !9
  %771 = sext i32 %770 to i64
  %772 = getelementptr inbounds i32, ptr %769, i64 %771
  %773 = load ptr, ptr %46, align 8, !tbaa !5
  call void @dstebz_(ptr noundef %741, ptr noundef %742, ptr noundef %743, ptr noundef %94, ptr noundef %95, ptr noundef %744, ptr noundef %745, ptr noundef %84, ptr noundef %749, ptr noundef %753, ptr noundef %754, ptr noundef %89, ptr noundef %756, ptr noundef %760, ptr noundef %764, ptr noundef %768, ptr noundef %772, ptr noundef %773)
  %774 = load i32, ptr %75, align 4, !tbaa !9
  %775 = icmp ne i32 %774, 0
  br i1 %775, label %776, label %850

776:                                              ; preds = %732
  %777 = load ptr, ptr %27, align 8, !tbaa !5
  %778 = load ptr, ptr %42, align 8, !tbaa !5
  %779 = load i32, ptr %57, align 4, !tbaa !9
  %780 = sext i32 %779 to i64
  %781 = getelementptr inbounds double, ptr %778, i64 %780
  %782 = load ptr, ptr %42, align 8, !tbaa !5
  %783 = load i32, ptr %58, align 4, !tbaa !9
  %784 = sext i32 %783 to i64
  %785 = getelementptr inbounds double, ptr %782, i64 %784
  %786 = load ptr, ptr %38, align 8, !tbaa !5
  %787 = load ptr, ptr %39, align 8, !tbaa !5
  %788 = getelementptr inbounds double, ptr %787, i64 1
  %789 = load ptr, ptr %44, align 8, !tbaa !5
  %790 = load i32, ptr %81, align 4, !tbaa !9
  %791 = sext i32 %790 to i64
  %792 = getelementptr inbounds i32, ptr %789, i64 %791
  %793 = load ptr, ptr %44, align 8, !tbaa !5
  %794 = load i32, ptr %86, align 4, !tbaa !9
  %795 = sext i32 %794 to i64
  %796 = getelementptr inbounds i32, ptr %793, i64 %795
  %797 = load ptr, ptr %40, align 8, !tbaa !5
  %798 = load i32, ptr %52, align 4, !tbaa !9
  %799 = sext i32 %798 to i64
  %800 = getelementptr inbounds double, ptr %797, i64 %799
  %801 = load ptr, ptr %41, align 8, !tbaa !5
  %802 = load ptr, ptr %42, align 8, !tbaa !5
  %803 = load i32, ptr %88, align 4, !tbaa !9
  %804 = sext i32 %803 to i64
  %805 = getelementptr inbounds double, ptr %802, i64 %804
  %806 = load ptr, ptr %44, align 8, !tbaa !5
  %807 = load i32, ptr %87, align 4, !tbaa !9
  %808 = sext i32 %807 to i64
  %809 = getelementptr inbounds i32, ptr %806, i64 %808
  %810 = load ptr, ptr %45, align 8, !tbaa !5
  %811 = getelementptr inbounds i32, ptr %810, i64 1
  %812 = load ptr, ptr %46, align 8, !tbaa !5
  call void @dstein_(ptr noundef %777, ptr noundef %781, ptr noundef %785, ptr noundef %786, ptr noundef %788, ptr noundef %792, ptr noundef %796, ptr noundef %800, ptr noundef %801, ptr noundef %805, ptr noundef %809, ptr noundef %811, ptr noundef %812)
  %813 = load ptr, ptr %38, align 8, !tbaa !5
  %814 = load i32, ptr %813, align 4, !tbaa !9
  store i32 %814, ptr %53, align 4, !tbaa !9
  store i32 1, ptr %66, align 4, !tbaa !9
  br label %815

815:                                              ; preds = %846, %776
  %816 = load i32, ptr %66, align 4, !tbaa !9
  %817 = load i32, ptr %53, align 4, !tbaa !9
  %818 = icmp sle i32 %816, %817
  br i1 %818, label %819, label %849

819:                                              ; preds = %815
  %820 = load ptr, ptr %27, align 8, !tbaa !5
  %821 = load ptr, ptr %40, align 8, !tbaa !5
  %822 = load i32, ptr %66, align 4, !tbaa !9
  %823 = load i32, ptr %51, align 4, !tbaa !9
  %824 = mul nsw i32 %822, %823
  %825 = add nsw i32 %824, 1
  %826 = sext i32 %825 to i64
  %827 = getelementptr inbounds double, ptr %821, i64 %826
  %828 = load ptr, ptr %42, align 8, !tbaa !5
  %829 = getelementptr inbounds double, ptr %828, i64 1
  call void @dcopy_(ptr noundef %820, ptr noundef %827, ptr noundef @c__1, ptr noundef %829, ptr noundef @c__1)
  %830 = load ptr, ptr %27, align 8, !tbaa !5
  %831 = load ptr, ptr %27, align 8, !tbaa !5
  %832 = load ptr, ptr %31, align 8, !tbaa !5
  %833 = load i32, ptr %50, align 4, !tbaa !9
  %834 = sext i32 %833 to i64
  %835 = getelementptr inbounds double, ptr %832, i64 %834
  %836 = load ptr, ptr %32, align 8, !tbaa !5
  %837 = load ptr, ptr %42, align 8, !tbaa !5
  %838 = getelementptr inbounds double, ptr %837, i64 1
  %839 = load ptr, ptr %40, align 8, !tbaa !5
  %840 = load i32, ptr %66, align 4, !tbaa !9
  %841 = load i32, ptr %51, align 4, !tbaa !9
  %842 = mul nsw i32 %840, %841
  %843 = add nsw i32 %842, 1
  %844 = sext i32 %843 to i64
  %845 = getelementptr inbounds double, ptr %839, i64 %844
  call void @dgemv_(ptr noundef @.str.4, ptr noundef %830, ptr noundef %831, ptr noundef @c_b24, ptr noundef %835, ptr noundef %836, ptr noundef %838, ptr noundef @c__1, ptr noundef @c_b45, ptr noundef %845, ptr noundef @c__1)
  br label %846

846:                                              ; preds = %819
  %847 = load i32, ptr %66, align 4, !tbaa !9
  %848 = add nsw i32 %847, 1
  store i32 %848, ptr %66, align 4, !tbaa !9
  br label %815, !llvm.loop !16

849:                                              ; preds = %815
  br label %850

850:                                              ; preds = %849, %732
  br label %851

851:                                              ; preds = %850, %719
  %852 = load i32, ptr %80, align 4, !tbaa !9
  %853 = icmp eq i32 %852, 1
  br i1 %853, label %854, label %870

854:                                              ; preds = %851
  %855 = load ptr, ptr %46, align 8, !tbaa !5
  %856 = load i32, ptr %855, align 4, !tbaa !9
  %857 = icmp eq i32 %856, 0
  br i1 %857, label %858, label %861

858:                                              ; preds = %854
  %859 = load ptr, ptr %38, align 8, !tbaa !5
  %860 = load i32, ptr %859, align 4, !tbaa !9
  store i32 %860, ptr %60, align 4, !tbaa !9
  br label %865

861:                                              ; preds = %854
  %862 = load ptr, ptr %46, align 8, !tbaa !5
  %863 = load i32, ptr %862, align 4, !tbaa !9
  %864 = sub nsw i32 %863, 1
  store i32 %864, ptr %60, align 4, !tbaa !9
  br label %865

865:                                              ; preds = %861, %858
  %866 = load double, ptr %68, align 8, !tbaa !11
  %867 = fdiv double 1.000000e+00, %866
  store double %867, ptr %55, align 8, !tbaa !11
  %868 = load ptr, ptr %39, align 8, !tbaa !5
  %869 = getelementptr inbounds double, ptr %868, i64 1
  call void @dscal_(ptr noundef %60, ptr noundef %55, ptr noundef %869, ptr noundef @c__1)
  br label %870

870:                                              ; preds = %865, %851
  %871 = load i32, ptr %75, align 4, !tbaa !9
  %872 = icmp ne i32 %871, 0
  br i1 %872, label %873, label %1007

873:                                              ; preds = %870
  %874 = load ptr, ptr %38, align 8, !tbaa !5
  %875 = load i32, ptr %874, align 4, !tbaa !9
  %876 = sub nsw i32 %875, 1
  store i32 %876, ptr %53, align 4, !tbaa !9
  store i32 1, ptr %66, align 4, !tbaa !9
  br label %877

877:                                              ; preds = %1003, %873
  %878 = load i32, ptr %66, align 4, !tbaa !9
  %879 = load i32, ptr %53, align 4, !tbaa !9
  %880 = icmp sle i32 %878, %879
  br i1 %880, label %881, label %1006

881:                                              ; preds = %877
  store i32 0, ptr %65, align 4, !tbaa !9
  %882 = load ptr, ptr %39, align 8, !tbaa !5
  %883 = load i32, ptr %66, align 4, !tbaa !9
  %884 = sext i32 %883 to i64
  %885 = getelementptr inbounds double, ptr %882, i64 %884
  %886 = load double, ptr %885, align 8, !tbaa !11
  store double %886, ptr %97, align 8, !tbaa !11
  %887 = load ptr, ptr %38, align 8, !tbaa !5
  %888 = load i32, ptr %887, align 4, !tbaa !9
  store i32 %888, ptr %54, align 4, !tbaa !9
  %889 = load i32, ptr %66, align 4, !tbaa !9
  %890 = add nsw i32 %889, 1
  store i32 %890, ptr %77, align 4, !tbaa !9
  br label %891

891:                                              ; preds = %911, %881
  %892 = load i32, ptr %77, align 4, !tbaa !9
  %893 = load i32, ptr %54, align 4, !tbaa !9
  %894 = icmp sle i32 %892, %893
  br i1 %894, label %895, label %914

895:                                              ; preds = %891
  %896 = load ptr, ptr %39, align 8, !tbaa !5
  %897 = load i32, ptr %77, align 4, !tbaa !9
  %898 = sext i32 %897 to i64
  %899 = getelementptr inbounds double, ptr %896, i64 %898
  %900 = load double, ptr %899, align 8, !tbaa !11
  %901 = load double, ptr %97, align 8, !tbaa !11
  %902 = fcmp olt double %900, %901
  br i1 %902, label %903, label %910

903:                                              ; preds = %895
  %904 = load i32, ptr %77, align 4, !tbaa !9
  store i32 %904, ptr %65, align 4, !tbaa !9
  %905 = load ptr, ptr %39, align 8, !tbaa !5
  %906 = load i32, ptr %77, align 4, !tbaa !9
  %907 = sext i32 %906 to i64
  %908 = getelementptr inbounds double, ptr %905, i64 %907
  %909 = load double, ptr %908, align 8, !tbaa !11
  store double %909, ptr %97, align 8, !tbaa !11
  br label %910

910:                                              ; preds = %903, %895
  br label %911

911:                                              ; preds = %910
  %912 = load i32, ptr %77, align 4, !tbaa !9
  %913 = add nsw i32 %912, 1
  store i32 %913, ptr %77, align 4, !tbaa !9
  br label %891, !llvm.loop !17

914:                                              ; preds = %891
  %915 = load i32, ptr %65, align 4, !tbaa !9
  %916 = icmp ne i32 %915, 0
  br i1 %916, label %917, label %1002

917:                                              ; preds = %914
  %918 = load ptr, ptr %44, align 8, !tbaa !5
  %919 = load i32, ptr %81, align 4, !tbaa !9
  %920 = load i32, ptr %65, align 4, !tbaa !9
  %921 = add nsw i32 %919, %920
  %922 = sub nsw i32 %921, 1
  %923 = sext i32 %922 to i64
  %924 = getelementptr inbounds i32, ptr %918, i64 %923
  %925 = load i32, ptr %924, align 4, !tbaa !9
  store i32 %925, ptr %64, align 4, !tbaa !9
  %926 = load ptr, ptr %39, align 8, !tbaa !5
  %927 = load i32, ptr %66, align 4, !tbaa !9
  %928 = sext i32 %927 to i64
  %929 = getelementptr inbounds double, ptr %926, i64 %928
  %930 = load double, ptr %929, align 8, !tbaa !11
  %931 = load ptr, ptr %39, align 8, !tbaa !5
  %932 = load i32, ptr %65, align 4, !tbaa !9
  %933 = sext i32 %932 to i64
  %934 = getelementptr inbounds double, ptr %931, i64 %933
  store double %930, ptr %934, align 8, !tbaa !11
  %935 = load ptr, ptr %44, align 8, !tbaa !5
  %936 = load i32, ptr %81, align 4, !tbaa !9
  %937 = load i32, ptr %66, align 4, !tbaa !9
  %938 = add nsw i32 %936, %937
  %939 = sub nsw i32 %938, 1
  %940 = sext i32 %939 to i64
  %941 = getelementptr inbounds i32, ptr %935, i64 %940
  %942 = load i32, ptr %941, align 4, !tbaa !9
  %943 = load ptr, ptr %44, align 8, !tbaa !5
  %944 = load i32, ptr %81, align 4, !tbaa !9
  %945 = load i32, ptr %65, align 4, !tbaa !9
  %946 = add nsw i32 %944, %945
  %947 = sub nsw i32 %946, 1
  %948 = sext i32 %947 to i64
  %949 = getelementptr inbounds i32, ptr %943, i64 %948
  store i32 %942, ptr %949, align 4, !tbaa !9
  %950 = load double, ptr %97, align 8, !tbaa !11
  %951 = load ptr, ptr %39, align 8, !tbaa !5
  %952 = load i32, ptr %66, align 4, !tbaa !9
  %953 = sext i32 %952 to i64
  %954 = getelementptr inbounds double, ptr %951, i64 %953
  store double %950, ptr %954, align 8, !tbaa !11
  %955 = load i32, ptr %64, align 4, !tbaa !9
  %956 = load ptr, ptr %44, align 8, !tbaa !5
  %957 = load i32, ptr %81, align 4, !tbaa !9
  %958 = load i32, ptr %66, align 4, !tbaa !9
  %959 = add nsw i32 %957, %958
  %960 = sub nsw i32 %959, 1
  %961 = sext i32 %960 to i64
  %962 = getelementptr inbounds i32, ptr %956, i64 %961
  store i32 %955, ptr %962, align 4, !tbaa !9
  %963 = load ptr, ptr %27, align 8, !tbaa !5
  %964 = load ptr, ptr %40, align 8, !tbaa !5
  %965 = load i32, ptr %65, align 4, !tbaa !9
  %966 = load i32, ptr %51, align 4, !tbaa !9
  %967 = mul nsw i32 %965, %966
  %968 = add nsw i32 %967, 1
  %969 = sext i32 %968 to i64
  %970 = getelementptr inbounds double, ptr %964, i64 %969
  %971 = load ptr, ptr %40, align 8, !tbaa !5
  %972 = load i32, ptr %66, align 4, !tbaa !9
  %973 = load i32, ptr %51, align 4, !tbaa !9
  %974 = mul nsw i32 %972, %973
  %975 = add nsw i32 %974, 1
  %976 = sext i32 %975 to i64
  %977 = getelementptr inbounds double, ptr %971, i64 %976
  call void @dswap_(ptr noundef %963, ptr noundef %970, ptr noundef @c__1, ptr noundef %977, ptr noundef @c__1)
  %978 = load ptr, ptr %46, align 8, !tbaa !5
  %979 = load i32, ptr %978, align 4, !tbaa !9
  %980 = icmp ne i32 %979, 0
  br i1 %980, label %981, label %1001

981:                                              ; preds = %917
  %982 = load ptr, ptr %45, align 8, !tbaa !5
  %983 = load i32, ptr %65, align 4, !tbaa !9
  %984 = sext i32 %983 to i64
  %985 = getelementptr inbounds i32, ptr %982, i64 %984
  %986 = load i32, ptr %985, align 4, !tbaa !9
  store i32 %986, ptr %64, align 4, !tbaa !9
  %987 = load ptr, ptr %45, align 8, !tbaa !5
  %988 = load i32, ptr %66, align 4, !tbaa !9
  %989 = sext i32 %988 to i64
  %990 = getelementptr inbounds i32, ptr %987, i64 %989
  %991 = load i32, ptr %990, align 4, !tbaa !9
  %992 = load ptr, ptr %45, align 8, !tbaa !5
  %993 = load i32, ptr %65, align 4, !tbaa !9
  %994 = sext i32 %993 to i64
  %995 = getelementptr inbounds i32, ptr %992, i64 %994
  store i32 %991, ptr %995, align 4, !tbaa !9
  %996 = load i32, ptr %64, align 4, !tbaa !9
  %997 = load ptr, ptr %45, align 8, !tbaa !5
  %998 = load i32, ptr %66, align 4, !tbaa !9
  %999 = sext i32 %998 to i64
  %1000 = getelementptr inbounds i32, ptr %997, i64 %999
  store i32 %996, ptr %1000, align 4, !tbaa !9
  br label %1001

1001:                                             ; preds = %981, %917
  br label %1002

1002:                                             ; preds = %1001, %914
  br label %1003

1003:                                             ; preds = %1002
  %1004 = load i32, ptr %66, align 4, !tbaa !9
  %1005 = add nsw i32 %1004, 1
  store i32 %1005, ptr %66, align 4, !tbaa !9
  br label %877, !llvm.loop !18

1006:                                             ; preds = %877
  br label %1007

1007:                                             ; preds = %1006, %870
  %1008 = load i32, ptr %72, align 4, !tbaa !9
  %1009 = sitofp i32 %1008 to double
  %1010 = load ptr, ptr %42, align 8, !tbaa !5
  %1011 = getelementptr inbounds double, ptr %1010, i64 1
  store double %1009, ptr %1011, align 8, !tbaa !11
  store i32 1, ptr %98, align 4
  br label %1012

1012:                                             ; preds = %1007, %435, %376, %369, %361
  call void @llvm.lifetime.end.p0(i64 8, ptr %97) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %96) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %95) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %94) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %93) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %92) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %91) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %90) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %89) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %88) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %87) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %86) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %85) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %84) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %83) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %82) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %81) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %80) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %79) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %78) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %77) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %76) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %75) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %74) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %73) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %72) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %71) #4
  call void @llvm.lifetime.end.p0(i64 1, ptr %70) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %69) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %67) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %66) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %65) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %64) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %63) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %60) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %58) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %54) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %53) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #4
  ret void
}

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

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

declare i32 @ilaenv2stage_(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

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

declare double @dlansb_(ptr noundef, 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 @dsytrd_sb2st_(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 @dcopy_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

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

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

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

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

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

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

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

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


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

@.str = external hidden unnamed_addr constant [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__2 = external hidden global i32, align 4
@.str.6 = external hidden unnamed_addr constant [13 x i8], align 1
@c_n1 = external hidden global i32, align 4
@c__3 = external hidden global i32, align 4
@c__4 = external hidden global i32, align 4
@.str.7 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [2 x i8], align 1
@c_b24 = external hidden global double, align 8
@.str.12 = external hidden unnamed_addr constant [2 x i8], align 1
@c__1 = external hidden global i32, align 4
@c_b45 = external hidden global double, align 8

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

55:                                               ; preds = %23
  %56 = icmp ne i32 %48, 0
  %57 = icmp ne i32 %49, 0
  %or.cond = select i1 %56, i1 true, i1 %57
  %58 = icmp ne i32 %50, 0
  %or.cond3 = select i1 %or.cond, i1 true, i1 %58
  br i1 %or.cond3, label %59, label %.thread440.sink.split

59:                                               ; preds = %55
  %.not402 = icmp eq i32 %51, 0
  br i1 %.not402, label %60, label %62

60:                                               ; preds = %59
  %61 = tail call i32 @lsame_(ptr noundef %2, ptr noundef nonnull @.str.5) #6
  %.not403 = icmp eq i32 %61, 0
  br i1 %.not403, label %.thread440.sink.split, label %62

62:                                               ; preds = %60, %59
  %63 = load i32, ptr %3, align 4, !tbaa !5
  %64 = icmp slt i32 %63, 0
  br i1 %64, label %.thread440.sink.split, label %65

65:                                               ; preds = %62
  %66 = load i32, ptr %4, align 4, !tbaa !5
  %67 = icmp slt i32 %66, 0
  br i1 %67, label %.thread440.sink.split, label %68

68:                                               ; preds = %65
  %69 = load i32, ptr %6, align 4, !tbaa !5
  %.not404 = icmp sgt i32 %69, %66
  br i1 %.not404, label %70, label %.thread440.sink.split

70:                                               ; preds = %68
  %.not405 = icmp ne i32 %47, 0
  br i1 %.not405, label %71, label %74

71:                                               ; preds = %70
  %72 = load i32, ptr %8, align 4, !tbaa !5
  %spec.select = tail call i32 @llvm.umax.i32(i32 %63, i32 1)
  %73 = icmp slt i32 %72, %spec.select
  br i1 %73, label %.thread440.sink.split, label %74

74:                                               ; preds = %71, %70
  br i1 %57, label %75, label %80

75:                                               ; preds = %74
  %.not456 = icmp eq i32 %63, 0
  br i1 %.not456, label %89, label %76

76:                                               ; preds = %75
  %77 = load double, ptr %10, align 8, !tbaa !9
  %78 = load double, ptr %9, align 8, !tbaa !9
  %79 = fcmp ugt double %77, %78
  br i1 %79, label %89, label %.thread440.sink.split

80:                                               ; preds = %74
  br i1 %58, label %81, label %89

81:                                               ; preds = %80
  %82 = load i32, ptr %11, align 4, !tbaa !5
  %83 = icmp slt i32 %82, 1
  %spec.select428 = tail call i32 @llvm.umax.i32(i32 %63, i32 1)
  %84 = icmp ugt i32 %82, %spec.select428
  %or.cond458 = or i1 %83, %84
  br i1 %or.cond458, label %.thread440.sink.split, label %85

85:                                               ; preds = %81
  %86 = load i32, ptr %12, align 4, !tbaa !5
  %. = tail call i32 @llvm.umin.i32(i32 %63, i32 %82)
  %87 = icmp slt i32 %86, %.
  %88 = icmp ugt i32 %86, %63
  %or.cond455 = or i1 %87, %88
  br i1 %or.cond455, label %.thread440.sink.split, label %89

89:                                               ; preds = %85, %76, %75, %80
  %.pr = load i32, ptr %22, align 4, !tbaa !5
  %90 = icmp eq i32 %.pr, 0
  br i1 %90, label %91, label %.thread440

91:                                               ; preds = %89
  %92 = load i32, ptr %17, align 4, !tbaa !5
  %93 = icmp slt i32 %92, 1
  %94 = icmp ult i32 %92, %63
  %or.cond494 = and i1 %.not405, %94
  %or.cond496 = or i1 %93, %or.cond494
  br i1 %or.cond496, label %.thread440.sink.split, label %.thread

.thread:                                          ; preds = %91
  %95 = icmp ult i32 %63, 2
  br i1 %95, label %106, label %96

96:                                               ; preds = %.thread
  %97 = tail call i32 @ilaenv2stage_(ptr noundef nonnull @c__2, ptr noundef nonnull @.str.6, ptr noundef %0, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef nonnull @c_n1, ptr noundef nonnull @c_n1) #6
  store i32 %97, ptr %31, align 4, !tbaa !5
  %98 = call i32 @ilaenv2stage_(ptr noundef nonnull @c__3, ptr noundef nonnull @.str.6, ptr noundef %0, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef nonnull %31, ptr noundef nonnull @c_n1) #6
  store i32 %98, ptr %30, align 4, !tbaa !5
  %99 = call i32 @ilaenv2stage_(ptr noundef nonnull @c__4, ptr noundef nonnull @.str.6, ptr noundef %0, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef nonnull %31, ptr noundef nonnull @c_n1) #6
  %100 = load i32, ptr %3, align 4, !tbaa !5
  %101 = shl i32 %100, 1
  %102 = load i32, ptr %30, align 4, !tbaa !5
  %103 = add i32 %102, %99
  %104 = add i32 %103, %101
  %105 = sitofp i32 %104 to double
  br label %106

106:                                              ; preds = %.thread, %96
  %storemerge = phi double [ %105, %96 ], [ 1.000000e+00, %.thread ]
  %.0383 = phi i32 [ %104, %96 ], [ 1, %.thread ]
  store double %storemerge, ptr %18, align 8, !tbaa !9
  %107 = load i32, ptr %19, align 4, !tbaa !5
  %108 = icmp sge i32 %107, %.0383
  %or.cond5 = select i1 %108, i1 true, i1 %53
  br i1 %or.cond5, label %.thread435, label %.thread440.sink.split

.thread435:                                       ; preds = %106
  %.pr437.pr = load i32, ptr %22, align 4, !tbaa !5
  %.not408 = icmp eq i32 %.pr437.pr, 0
  br i1 %.not408, label %112, label %.thread440

.thread440.sink.split:                            ; preds = %106, %91, %85, %81, %76, %71, %68, %65, %62, %60, %55, %23
  %.sink495 = phi i32 [ -1, %23 ], [ -2, %55 ], [ -3, %60 ], [ -4, %62 ], [ -5, %65 ], [ -7, %68 ], [ -9, %71 ], [ -11, %76 ], [ -12, %81 ], [ -13, %85 ], [ -18, %91 ], [ -20, %106 ]
  store i32 %.sink495, ptr %22, align 4, !tbaa !5
  br label %.thread440

.thread440:                                       ; preds = %.thread440.sink.split, %89, %.thread435
  %109 = phi i32 [ %.pr437.pr, %.thread435 ], [ %.pr, %89 ], [ %.sink495, %.thread440.sink.split ]
  %110 = sub nsw i32 0, %109
  store i32 %110, ptr %24, align 4, !tbaa !5
  %111 = call i32 @xerbla_(ptr noundef nonnull @.str.7, ptr noundef nonnull %24, i32 noundef 13) #6
  br label %284

112:                                              ; preds = %.thread435
  br i1 %53, label %284, label %113

113:                                              ; preds = %112
  store i32 0, ptr %14, align 4, !tbaa !5
  %114 = load i32, ptr %3, align 4, !tbaa !5
  switch i32 %114, label %131 [
    i32 0, label %284
    i32 1, label %115
  ]

115:                                              ; preds = %113
  store i32 1, ptr %14, align 4, !tbaa !5
  br i1 %.not402, label %116, label %122

116:                                              ; preds = %115
  %117 = load i32, ptr %4, align 4, !tbaa !5
  %118 = add i32 %37, 1
  %119 = add i32 %118, %117
  %120 = sext i32 %119 to i64
  %121 = getelementptr inbounds double, ptr %39, i64 %120
  br label %122

122:                                              ; preds = %115, %116
  %.0.in = phi ptr [ %121, %116 ], [ %5, %115 ]
  %.0 = load double, ptr %.0.in, align 8, !tbaa !9
  %.not425 = icmp eq i32 %49, 0
  br i1 %.not425, label %129, label %123

123:                                              ; preds = %122
  %124 = load double, ptr %9, align 8, !tbaa !9
  %125 = fcmp olt double %124, %.0
  br i1 %125, label %126, label %.thread445

126:                                              ; preds = %123
  %127 = load double, ptr %10, align 8, !tbaa !9
  %128 = fcmp ult double %127, %.0
  br i1 %128, label %.thread445, label %129

.thread445:                                       ; preds = %123, %126
  store i32 0, ptr %14, align 4, !tbaa !5
  br label %284

129:                                              ; preds = %122, %126
  store double %.0, ptr %15, align 8, !tbaa !9
  br i1 %.not405, label %130, label %284

130:                                              ; preds = %129
  store double 1.000000e+00, ptr %16, align 8, !tbaa !9
  br label %284

131:                                              ; preds = %113
  %132 = call double @dlamch_(ptr noundef nonnull @.str.8) #6
  %133 = call double @dlamch_(ptr noundef nonnull @.str.9) #6
  %134 = fdiv double %132, %133
  %135 = fdiv double 1.000000e+00, %134
  %136 = call double @sqrt(double noundef %134) #6
  %137 = call double @sqrt(double noundef %135) #6
  store double %137, ptr %25, align 8, !tbaa !9
  %138 = call double @sqrt(double noundef %132) #6
  %139 = call double @sqrt(double noundef %138) #6
  %140 = fdiv double 1.000000e+00, %139
  %141 = fcmp ole double %137, %140
  %142 = select i1 %141, double %137, double %140
  %143 = load double, ptr %13, align 8, !tbaa !9
  store double %143, ptr %32, align 8, !tbaa !9
  %.not409 = icmp eq i32 %49, 0
  br i1 %.not409, label %147, label %144

144:                                              ; preds = %131
  %145 = load double, ptr %9, align 8, !tbaa !9
  %146 = load double, ptr %10, align 8, !tbaa !9
  br label %147

147:                                              ; preds = %131, %144
  %.sink = phi double [ %145, %144 ], [ 0.000000e+00, %131 ]
  %storemerge410 = phi double [ %146, %144 ], [ 0.000000e+00, %131 ]
  store double %.sink, ptr %35, align 8
  store double %storemerge410, ptr %36, align 8, !tbaa !9
  %148 = call double @dlansb_(ptr noundef nonnull @.str.10, ptr noundef %2, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef nonnull %18) #6
  %149 = fcmp ogt double %148, 0.000000e+00
  %150 = fcmp olt double %148, %136
  %or.cond429 = select i1 %149, i1 %150, i1 false
  br i1 %or.cond429, label %153, label %151

151:                                              ; preds = %147
  %152 = fcmp ogt double %148, %142
  br i1 %152, label %153, label %166

153:                                              ; preds = %151, %147
  %.pn = phi double [ %136, %147 ], [ %142, %151 ]
  %storemerge457 = fdiv double %.pn, %148
  store double %storemerge457, ptr %27, align 8, !tbaa !9
  %.str.12..str.11 = select i1 %.not402, ptr @.str.12, ptr @.str.11
  call void @dlascl_(ptr noundef nonnull %.str.12..str.11, ptr noundef nonnull %4, ptr noundef nonnull %4, ptr noundef nonnull @c_b24, ptr noundef nonnull %27, ptr noundef nonnull %3, ptr noundef nonnull %3, ptr noundef %5, ptr noundef nonnull %6, ptr noundef nonnull %22) #6
  %154 = load double, ptr %13, align 8, !tbaa !9
  %155 = fcmp ogt double %154, 0.000000e+00
  br i1 %155, label %156, label %159

156:                                              ; preds = %153
  %157 = load double, ptr %27, align 8, !tbaa !9
  %158 = fmul double %154, %157
  store double %158, ptr %32, align 8, !tbaa !9
  br label %159

159:                                              ; preds = %156, %153
  br i1 %.not409, label %166, label %160

160:                                              ; preds = %159
  %161 = load double, ptr %9, align 8, !tbaa !9
  %162 = load double, ptr %27, align 8, !tbaa !9
  %163 = fmul double %161, %162
  store double %163, ptr %35, align 8, !tbaa !9
  %164 = load double, ptr %10, align 8, !tbaa !9
  %165 = fmul double %162, %164
  store double %165, ptr %36, align 8, !tbaa !9
  br label %166

166:                                              ; preds = %151, %159, %160
  %167 = phi i1 [ true, %159 ], [ true, %160 ], [ false, %151 ]
  %168 = load i32, ptr %3, align 4, !tbaa !5
  %169 = add nsw i32 %168, 1
  %170 = add nsw i32 %169, %168
  %171 = load i32, ptr %30, align 4, !tbaa !5
  %172 = add nsw i32 %170, %171
  %173 = load i32, ptr %19, align 4, !tbaa !5
  %174 = add i32 %173, 1
  %175 = sub i32 %174, %172
  store i32 %175, ptr %34, align 4, !tbaa !5
  %176 = sext i32 %169 to i64
  %177 = getelementptr inbounds double, ptr %44, i64 %176
  %178 = sext i32 %170 to i64
  %179 = getelementptr inbounds double, ptr %44, i64 %178
  %180 = sext i32 %172 to i64
  %181 = getelementptr inbounds double, ptr %44, i64 %180
  call void @dsytrd_sb2st_(ptr noundef nonnull @.str.4, ptr noundef %0, ptr noundef %2, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef nonnull %18, ptr noundef nonnull %177, ptr noundef nonnull %179, ptr noundef nonnull %30, ptr noundef nonnull %181, ptr noundef nonnull %34, ptr noundef nonnull %28) #6
  %.not412 = icmp eq i32 %50, 0
  br i1 %.not412, label %189, label %182

182:                                              ; preds = %166
  %183 = load i32, ptr %11, align 4, !tbaa !5
  %184 = icmp eq i32 %183, 1
  br i1 %184, label %185, label %189

185:                                              ; preds = %182
  %186 = load i32, ptr %12, align 4, !tbaa !5
  %187 = load i32, ptr %3, align 4, !tbaa !5
  %188 = icmp eq i32 %186, %187
  br label %189

189:                                              ; preds = %185, %182, %166
  %190 = phi i1 [ false, %182 ], [ false, %166 ], [ %188, %185 ]
  %or.cond7 = or i1 %56, %190
  br i1 %or.cond7, label %191, label %216

191:                                              ; preds = %189
  %192 = load double, ptr %13, align 8, !tbaa !9
  %193 = fcmp ugt double %192, 0.000000e+00
  br i1 %193, label %216, label %194

194:                                              ; preds = %191
  call void @dcopy_(ptr noundef nonnull %3, ptr noundef nonnull %18, ptr noundef nonnull @c__1, ptr noundef %15, ptr noundef nonnull @c__1) #6
  %195 = load i32, ptr %3, align 4, !tbaa !5
  %196 = shl i32 %195, 1
  %197 = add nsw i32 %196, %172
  br i1 %.not405, label %202, label %198

198:                                              ; preds = %194
  %199 = add nsw i32 %195, -1
  store i32 %199, ptr %24, align 4, !tbaa !5
  %200 = sext i32 %197 to i64
  %201 = getelementptr inbounds double, ptr %44, i64 %200
  call void @dcopy_(ptr noundef nonnull %24, ptr noundef nonnull %177, ptr noundef nonnull @c__1, ptr noundef nonnull %201, ptr noundef nonnull @c__1) #6
  call void @dsterf_(ptr noundef nonnull %3, ptr noundef %15, ptr noundef nonnull %201, ptr noundef nonnull %22) #6
  br label %.loopexit460

202:                                              ; preds = %194
  call void @dlacpy_(ptr noundef nonnull @.str.1, ptr noundef nonnull %3, ptr noundef nonnull %3, ptr noundef %7, ptr noundef nonnull %8, ptr noundef %16, ptr noundef nonnull %17) #6
  %203 = load i32, ptr %3, align 4, !tbaa !5
  %204 = add nsw i32 %203, -1
  store i32 %204, ptr %24, align 4, !tbaa !5
  %205 = sext i32 %197 to i64
  %206 = getelementptr inbounds double, ptr %44, i64 %205
  call void @dcopy_(ptr noundef nonnull %24, ptr noundef nonnull %177, ptr noundef nonnull @c__1, ptr noundef nonnull %206, ptr noundef nonnull @c__1) #6
  call void @dsteqr_(ptr noundef %0, ptr noundef nonnull %3, ptr noundef %15, ptr noundef nonnull %206, ptr noundef %16, ptr noundef nonnull %17, ptr noundef nonnull %181, ptr noundef nonnull %22) #6
  %207 = load i32, ptr %22, align 4, !tbaa !5
  %208 = icmp eq i32 %207, 0
  br i1 %208, label %209, label %.thread450

209:                                              ; preds = %202
  %210 = load i32, ptr %3, align 4, !tbaa !5
  store i32 %210, ptr %24, align 4, !tbaa !5
  %.not414461 = icmp slt i32 %210, 1
  br i1 %.not414461, label %.loopexit460, label %.lr.ph.preheader

.lr.ph.preheader:                                 ; preds = %209
  %211 = zext nneg i32 %210 to i64
  %212 = shl nuw nsw i64 %211, 2
  call void @llvm.memset.p0.i64(ptr align 4 %21, i8 0, i64 %212, i1 false), !tbaa !5
  br label %.loopexit460

.loopexit460:                                     ; preds = %.lr.ph.preheader, %209, %198
  %.pr449 = load i32, ptr %22, align 4, !tbaa !5
  %213 = icmp eq i32 %.pr449, 0
  br i1 %213, label %214, label %.thread450

214:                                              ; preds = %.loopexit460
  %215 = load i32, ptr %3, align 4, !tbaa !5
  store i32 %215, ptr %14, align 4, !tbaa !5
  br label %.loopexit459

.thread450:                                       ; preds = %202, %.loopexit460
  store i32 0, ptr %22, align 4, !tbaa !5
  br label %216

216:                                              ; preds = %189, %.thread450, %191
  %.431 = select i1 %.not405, i8 66, i8 69
  store i8 %.431, ptr %29, align 1, !tbaa !11
  %217 = load i32, ptr %3, align 4, !tbaa !5
  %218 = add nsw i32 %217, 1
  %219 = add nsw i32 %218, %217
  %220 = sext i32 %218 to i64
  %221 = getelementptr inbounds i32, ptr %45, i64 %220
  %222 = sext i32 %219 to i64
  %223 = getelementptr inbounds i32, ptr %45, i64 %222
  call void @dstebz_(ptr noundef %1, ptr noundef nonnull %29, ptr noundef nonnull %3, ptr noundef nonnull %35, ptr noundef nonnull %36, ptr noundef %11, ptr noundef %12, ptr noundef nonnull %32, ptr noundef nonnull %18, ptr noundef nonnull %177, ptr noundef nonnull %14, ptr noundef nonnull %33, ptr noundef %15, ptr noundef %20, ptr noundef nonnull %221, ptr noundef nonnull %181, ptr noundef nonnull %223, ptr noundef nonnull %22) #6
  br i1 %.not405, label %224, label %.loopexit459

224:                                              ; preds = %216
  call void @dstein_(ptr noundef nonnull %3, ptr noundef nonnull %18, ptr noundef nonnull %177, ptr noundef nonnull %14, ptr noundef %15, ptr noundef %20, ptr noundef nonnull %221, ptr noundef %16, ptr noundef nonnull %17, ptr noundef nonnull %181, ptr noundef nonnull %223, ptr noundef %21, ptr noundef nonnull %22) #6
  %225 = load i32, ptr %14, align 4, !tbaa !5
  store i32 %225, ptr %24, align 4, !tbaa !5
  %invariant.gep = getelementptr i8, ptr %43, i64 8
  %.not417463 = icmp slt i32 %225, 1
  br i1 %.not417463, label %.loopexit459, label %.lr.ph465.preheader

.lr.ph465.preheader:                              ; preds = %224
  %226 = sext i32 %41 to i64
  br label %.lr.ph465

.lr.ph465:                                        ; preds = %.lr.ph465.preheader, %.lr.ph465
  %indvars.iv = phi i64 [ 1, %.lr.ph465.preheader ], [ %indvars.iv.next, %.lr.ph465 ]
  %227 = mul nsw i64 %indvars.iv, %226
  %gep = getelementptr double, ptr %invariant.gep, i64 %227
  call void @dcopy_(ptr noundef nonnull %3, ptr noundef %gep, ptr noundef nonnull @c__1, ptr noundef nonnull %18, ptr noundef nonnull @c__1) #6
  call void @dgemv_(ptr noundef nonnull @.str.4, ptr noundef nonnull %3, ptr noundef nonnull %3, ptr noundef nonnull @c_b24, ptr noundef %7, ptr noundef %8, ptr noundef nonnull %18, ptr noundef nonnull @c__1, ptr noundef nonnull @c_b45, ptr noundef %gep, ptr noundef nonnull @c__1) #6
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %228 = load i32, ptr %24, align 4, !tbaa !5
  %229 = sext i32 %228 to i64
  %.not417.not = icmp slt i64 %indvars.iv, %229
  br i1 %.not417.not, label %.lr.ph465, label %.loopexit459, !llvm.loop !12

.loopexit459:                                     ; preds = %.lr.ph465, %224, %216, %214
  br i1 %167, label %230, label %240

230:                                              ; preds = %.loopexit459
  %231 = load i32, ptr %22, align 4, !tbaa !5
  %232 = icmp eq i32 %231, 0
  br i1 %232, label %233, label %235

233:                                              ; preds = %230
  %234 = load i32, ptr %14, align 4, !tbaa !5
  br label %237

235:                                              ; preds = %230
  %236 = add nsw i32 %231, -1
  br label %237

237:                                              ; preds = %235, %233
  %storemerge418 = phi i32 [ %236, %235 ], [ %234, %233 ]
  store i32 %storemerge418, ptr %26, align 4, !tbaa !5
  %238 = load double, ptr %27, align 8, !tbaa !9
  %239 = fdiv double 1.000000e+00, %238
  store double %239, ptr %25, align 8, !tbaa !9
  call void @dscal_(ptr noundef nonnull %26, ptr noundef nonnull %25, ptr noundef %15, ptr noundef nonnull @c__1) #6
  br label %240

240:                                              ; preds = %237, %.loopexit459
  br i1 %.not405, label %241, label %.loopexit

241:                                              ; preds = %240
  %242 = load i32, ptr %14, align 4, !tbaa !5
  %243 = add nsw i32 %242, -1
  store i32 %243, ptr %24, align 4, !tbaa !5
  %invariant.gep472 = getelementptr i8, ptr %43, i64 8
  %.not420476 = icmp slt i32 %242, 2
  br i1 %.not420476, label %.loopexit, label %.lr.ph479.preheader

.lr.ph479.preheader:                              ; preds = %241
  %244 = sext i32 %41 to i64
  br label %.lr.ph479

.lr.ph479:                                        ; preds = %.lr.ph479.preheader, %._crit_edge.thread
  %indvar = phi i32 [ 0, %.lr.ph479.preheader ], [ %indvar.next, %._crit_edge.thread ]
  %indvars.iv487 = phi i64 [ 1, %.lr.ph479.preheader ], [ %indvars.iv.next488, %._crit_edge.thread ]
  %indvars.iv482 = phi i64 [ 2, %.lr.ph479.preheader ], [ %indvars.iv.next483, %._crit_edge.thread ]
  %245 = getelementptr inbounds double, ptr %40, i64 %indvars.iv487
  %246 = load double, ptr %245, align 8, !tbaa !9
  %247 = load i32, ptr %14, align 4, !tbaa !5
  %indvars.iv.next488 = add nuw nsw i64 %indvars.iv487, 1
  %248 = sext i32 %247 to i64
  %.not421466.not = icmp slt i64 %indvars.iv487, %248
  br i1 %.not421466.not, label %.lr.ph470.preheader, label %._crit_edge.thread

.lr.ph470.preheader:                              ; preds = %.lr.ph479
  %249 = xor i32 %indvar, -1
  %250 = add i32 %247, %249
  %reass.sub = sub i32 %247, %indvar
  %xtraiter = and i32 %250, 1
  %251 = icmp eq i32 %reass.sub, 2
  br i1 %251, label %._crit_edge.unr-lcssa, label %.lr.ph470.preheader.new

.lr.ph470.preheader.new:                          ; preds = %.lr.ph470.preheader
  %unroll_iter = and i32 %250, -2
  br label %.lr.ph470

.lr.ph470:                                        ; preds = %.lr.ph470, %.lr.ph470.preheader.new
  %indvars.iv484 = phi i64 [ %indvars.iv482, %.lr.ph470.preheader.new ], [ %indvars.iv.next485.1, %.lr.ph470 ]
  %.1469 = phi double [ %246, %.lr.ph470.preheader.new ], [ %.2.1, %.lr.ph470 ]
  %.1378468 = phi i32 [ 0, %.lr.ph470.preheader.new ], [ %.2379.1, %.lr.ph470 ]
  %niter = phi i32 [ 0, %.lr.ph470.preheader.new ], [ %niter.next.1, %.lr.ph470 ]
  %252 = getelementptr inbounds double, ptr %40, i64 %indvars.iv484
  %253 = load double, ptr %252, align 8, !tbaa !9
  %254 = fcmp olt double %253, %.1469
  %255 = trunc nuw i64 %indvars.iv484 to i32
  %.2379 = select i1 %254, i32 %255, i32 %.1378468
  %.2 = select i1 %254, double %253, double %.1469
  %256 = getelementptr double, ptr %15, i64 %indvars.iv484
  %257 = load double, ptr %256, align 8, !tbaa !9
  %258 = fcmp olt double %257, %.2
  %259 = trunc i64 %indvars.iv484 to i32
  %260 = add i32 %259, 1
  %.2379.1 = select i1 %258, i32 %260, i32 %.2379
  %.2.1 = select i1 %258, double %257, double %.2
  %indvars.iv.next485.1 = add nuw nsw i64 %indvars.iv484, 2
  %niter.next.1 = add i32 %niter, 2
  %niter.ncmp.1 = icmp eq i32 %niter.next.1, %unroll_iter
  br i1 %niter.ncmp.1, label %._crit_edge.unr-lcssa, label %.lr.ph470, !llvm.loop !14

._crit_edge.unr-lcssa:                            ; preds = %.lr.ph470, %.lr.ph470.preheader
  %.2379.lcssa.ph = phi i32 [ poison, %.lr.ph470.preheader ], [ %.2379.1, %.lr.ph470 ]
  %.2.lcssa.ph = phi double [ poison, %.lr.ph470.preheader ], [ %.2.1, %.lr.ph470 ]
  %indvars.iv484.unr = phi i64 [ %indvars.iv482, %.lr.ph470.preheader ], [ %indvars.iv.next485.1, %.lr.ph470 ]
  %.1469.unr = phi double [ %246, %.lr.ph470.preheader ], [ %.2.1, %.lr.ph470 ]
  %.1378468.unr = phi i32 [ 0, %.lr.ph470.preheader ], [ %.2379.1, %.lr.ph470 ]
  %lcmp.mod.not = icmp eq i32 %xtraiter, 0
  br i1 %lcmp.mod.not, label %._crit_edge, label %.lr.ph470.epil

.lr.ph470.epil:                                   ; preds = %._crit_edge.unr-lcssa
  %261 = getelementptr inbounds double, ptr %40, i64 %indvars.iv484.unr
  %262 = load double, ptr %261, align 8, !tbaa !9
  %263 = fcmp olt double %262, %.1469.unr
  %264 = trunc nuw i64 %indvars.iv484.unr to i32
  %.2379.epil = select i1 %263, i32 %264, i32 %.1378468.unr
  %.2.epil = select i1 %263, double %262, double %.1469.unr
  br label %._crit_edge

._crit_edge:                                      ; preds = %._crit_edge.unr-lcssa, %.lr.ph470.epil
  %.2379.lcssa = phi i32 [ %.2379.lcssa.ph, %._crit_edge.unr-lcssa ], [ %.2379.epil, %.lr.ph470.epil ]
  %.2.lcssa = phi double [ %.2.lcssa.ph, %._crit_edge.unr-lcssa ], [ %.2.epil, %.lr.ph470.epil ]
  %.not422 = icmp eq i32 %.2379.lcssa, 0
  br i1 %.not422, label %._crit_edge.thread, label %265

265:                                              ; preds = %._crit_edge
  %266 = sext i32 %.2379.lcssa to i64
  %267 = getelementptr inbounds i32, ptr %45, i64 %266
  %268 = load i32, ptr %267, align 4, !tbaa !5
  %269 = getelementptr inbounds double, ptr %40, i64 %266
  store double %246, ptr %269, align 8, !tbaa !9
  %270 = getelementptr inbounds i32, ptr %45, i64 %indvars.iv487
  %271 = load i32, ptr %270, align 4, !tbaa !5
  store i32 %271, ptr %267, align 4, !tbaa !5
  store double %.2.lcssa, ptr %245, align 8, !tbaa !9
  store i32 %268, ptr %270, align 4, !tbaa !5
  %272 = mul nsw i32 %.2379.lcssa, %41
  %273 = sext i32 %272 to i64
  %gep473 = getelementptr double, ptr %invariant.gep472, i64 %273
  %274 = mul nsw i64 %indvars.iv487, %244
  %gep475 = getelementptr double, ptr %invariant.gep472, i64 %274
  call void @dswap_(ptr noundef nonnull %3, ptr noundef %gep473, ptr noundef nonnull @c__1, ptr noundef %gep475, ptr noundef nonnull @c__1) #6
  %275 = load i32, ptr %22, align 4, !tbaa !5
  %.not423 = icmp eq i32 %275, 0
  br i1 %.not423, label %._crit_edge.thread, label %276

276:                                              ; preds = %265
  %277 = getelementptr inbounds i32, ptr %46, i64 %266
  %278 = load i32, ptr %277, align 4, !tbaa !5
  %279 = getelementptr inbounds i32, ptr %46, i64 %indvars.iv487
  %280 = load i32, ptr %279, align 4, !tbaa !5
  store i32 %280, ptr %277, align 4, !tbaa !5
  store i32 %278, ptr %279, align 4, !tbaa !5
  br label %._crit_edge.thread

._crit_edge.thread:                               ; preds = %.lr.ph479, %._crit_edge, %276, %265
  %281 = load i32, ptr %24, align 4, !tbaa !5
  %282 = sext i32 %281 to i64
  %.not420.not = icmp slt i64 %indvars.iv487, %282
  %indvars.iv.next483 = add nuw nsw i64 %indvars.iv482, 1
  %indvar.next = add i32 %indvar, 1
  br i1 %.not420.not, label %.lr.ph479, label %.loopexit, !llvm.loop !15

.loopexit:                                        ; preds = %._crit_edge.thread, %241, %240
  %283 = sitofp i32 %.0383 to double
  store double %283, ptr %18, align 8, !tbaa !9
  br label %284

284:                                              ; preds = %.thread445, %130, %129, %113, %112, %.loopexit, %.thread440
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %36) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %35) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %34) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %33) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %32) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %31) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %30) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %29) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %28) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %26) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %24) #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 @ilaenv2stage_(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

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

declare double @dlansb_(ptr noundef, 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 @dsytrd_sb2st_(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 @dcopy_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

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

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

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

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

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

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

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"double", !7, i64 0}
!11 = !{!7, !7, i64 0}
!12 = distinct !{!12, !13}
!13 = !{!"llvm.loop.mustprogress"}
!14 = distinct !{!14, !13}
!15 = distinct !{!15, !13}


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