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

; 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
@.str.6 = external hidden unnamed_addr constant [7 x i8], align 1
@c__1 = external hidden global i64, align 8
@c_b25 = external hidden global double, align 8
@c_b27 = external hidden global double, align 8

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

138:                                              ; preds = %25
  %139 = load ptr, ptr %27, align 8, !tbaa !5
  %140 = call i64 @lsame_(ptr noundef %139, ptr noundef @.str.4)
  %141 = icmp ne i64 %140, 0
  br i1 %141, label %144, label %142

142:                                              ; preds = %138
  %143 = load ptr, ptr %51, align 8, !tbaa !5
  store i64 -1, ptr %143, align 8, !tbaa !9
  br label %296

144:                                              ; preds = %138, %25
  %145 = load i64, ptr %76, align 8, !tbaa !9
  %146 = icmp ne i64 %145, 0
  br i1 %146, label %155, label %147

147:                                              ; preds = %144
  %148 = load i64, ptr %79, align 8, !tbaa !9
  %149 = icmp ne i64 %148, 0
  br i1 %149, label %155, label %150

150:                                              ; preds = %147
  %151 = load i64, ptr %77, align 8, !tbaa !9
  %152 = icmp ne i64 %151, 0
  br i1 %152, label %155, label %153

153:                                              ; preds = %150
  %154 = load ptr, ptr %51, align 8, !tbaa !5
  store i64 -2, ptr %154, align 8, !tbaa !9
  br label %295

155:                                              ; preds = %150, %147, %144
  %156 = load i64, ptr %74, align 8, !tbaa !9
  %157 = icmp ne i64 %156, 0
  br i1 %157, label %164, label %158

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

162:                                              ; preds = %158
  %163 = load ptr, ptr %51, align 8, !tbaa !5
  store i64 -3, ptr %163, align 8, !tbaa !9
  br label %294

164:                                              ; preds = %158, %155
  %165 = load ptr, ptr %30, align 8, !tbaa !5
  %166 = load i64, ptr %165, align 8, !tbaa !9
  %167 = icmp slt i64 %166, 0
  br i1 %167, label %168, label %170

168:                                              ; preds = %164
  %169 = load ptr, ptr %51, align 8, !tbaa !5
  store i64 -4, ptr %169, align 8, !tbaa !9
  br label %293

170:                                              ; preds = %164
  %171 = load ptr, ptr %31, align 8, !tbaa !5
  %172 = load i64, ptr %171, align 8, !tbaa !9
  %173 = icmp slt i64 %172, 0
  br i1 %173, label %174, label %176

174:                                              ; preds = %170
  %175 = load ptr, ptr %51, align 8, !tbaa !5
  store i64 -5, ptr %175, align 8, !tbaa !9
  br label %292

176:                                              ; preds = %170
  %177 = load ptr, ptr %32, align 8, !tbaa !5
  %178 = load i64, ptr %177, align 8, !tbaa !9
  %179 = icmp slt i64 %178, 0
  br i1 %179, label %186, label %180

180:                                              ; preds = %176
  %181 = load ptr, ptr %32, align 8, !tbaa !5
  %182 = load i64, ptr %181, align 8, !tbaa !9
  %183 = load ptr, ptr %31, align 8, !tbaa !5
  %184 = load i64, ptr %183, align 8, !tbaa !9
  %185 = icmp sgt i64 %182, %184
  br i1 %185, label %186, label %188

186:                                              ; preds = %180, %176
  %187 = load ptr, ptr %51, align 8, !tbaa !5
  store i64 -6, ptr %187, align 8, !tbaa !9
  br label %291

188:                                              ; preds = %180
  %189 = load ptr, ptr %34, align 8, !tbaa !5
  %190 = load i64, ptr %189, align 8, !tbaa !9
  %191 = load ptr, ptr %31, align 8, !tbaa !5
  %192 = load i64, ptr %191, align 8, !tbaa !9
  %193 = add nsw i64 %192, 1
  %194 = icmp slt i64 %190, %193
  br i1 %194, label %195, label %197

195:                                              ; preds = %188
  %196 = load ptr, ptr %51, align 8, !tbaa !5
  store i64 -8, ptr %196, align 8, !tbaa !9
  br label %290

197:                                              ; preds = %188
  %198 = load ptr, ptr %36, align 8, !tbaa !5
  %199 = load i64, ptr %198, align 8, !tbaa !9
  %200 = load ptr, ptr %32, align 8, !tbaa !5
  %201 = load i64, ptr %200, align 8, !tbaa !9
  %202 = add nsw i64 %201, 1
  %203 = icmp slt i64 %199, %202
  br i1 %203, label %204, label %206

204:                                              ; preds = %197
  %205 = load ptr, ptr %51, align 8, !tbaa !5
  store i64 -10, ptr %205, align 8, !tbaa !9
  br label %289

206:                                              ; preds = %197
  %207 = load ptr, ptr %38, align 8, !tbaa !5
  %208 = load i64, ptr %207, align 8, !tbaa !9
  %209 = icmp slt i64 %208, 1
  br i1 %209, label %219, label %210

210:                                              ; preds = %206
  %211 = load i64, ptr %75, align 8, !tbaa !9
  %212 = icmp ne i64 %211, 0
  br i1 %212, label %213, label %221

213:                                              ; preds = %210
  %214 = load ptr, ptr %38, align 8, !tbaa !5
  %215 = load i64, ptr %214, align 8, !tbaa !9
  %216 = load ptr, ptr %30, align 8, !tbaa !5
  %217 = load i64, ptr %216, align 8, !tbaa !9
  %218 = icmp slt i64 %215, %217
  br i1 %218, label %219, label %221

219:                                              ; preds = %213, %206
  %220 = load ptr, ptr %51, align 8, !tbaa !5
  store i64 -12, ptr %220, align 8, !tbaa !9
  br label %288

221:                                              ; preds = %213, %210
  %222 = load i64, ptr %79, align 8, !tbaa !9
  %223 = icmp ne i64 %222, 0
  br i1 %223, label %224, label %237

224:                                              ; preds = %221
  %225 = load ptr, ptr %30, align 8, !tbaa !5
  %226 = load i64, ptr %225, align 8, !tbaa !9
  %227 = icmp sgt i64 %226, 0
  br i1 %227, label %228, label %236

228:                                              ; preds = %224
  %229 = load ptr, ptr %40, align 8, !tbaa !5
  %230 = load double, ptr %229, align 8, !tbaa !11
  %231 = load ptr, ptr %39, align 8, !tbaa !5
  %232 = load double, ptr %231, align 8, !tbaa !11
  %233 = fcmp ole double %230, %232
  br i1 %233, label %234, label %236

234:                                              ; preds = %228
  %235 = load ptr, ptr %51, align 8, !tbaa !5
  store i64 -14, ptr %235, align 8, !tbaa !9
  br label %236

236:                                              ; preds = %234, %228, %224
  br label %287

237:                                              ; preds = %221
  %238 = load i64, ptr %77, align 8, !tbaa !9
  %239 = icmp ne i64 %238, 0
  br i1 %239, label %240, label %286

240:                                              ; preds = %237
  %241 = load ptr, ptr %41, align 8, !tbaa !5
  %242 = load i64, ptr %241, align 8, !tbaa !9
  %243 = icmp slt i64 %242, 1
  br i1 %243, label %257, label %244

244:                                              ; preds = %240
  %245 = load ptr, ptr %41, align 8, !tbaa !5
  %246 = load i64, ptr %245, align 8, !tbaa !9
  %247 = load ptr, ptr %30, align 8, !tbaa !5
  %248 = load i64, ptr %247, align 8, !tbaa !9
  %249 = icmp sge i64 1, %248
  br i1 %249, label %250, label %251

250:                                              ; preds = %244
  br label %254

251:                                              ; preds = %244
  %252 = load ptr, ptr %30, align 8, !tbaa !5
  %253 = load i64, ptr %252, align 8, !tbaa !9
  br label %254

254:                                              ; preds = %251, %250
  %255 = phi i64 [ 1, %250 ], [ %253, %251 ]
  %256 = icmp sgt i64 %246, %255
  br i1 %256, label %257, label %259

257:                                              ; preds = %254, %240
  %258 = load ptr, ptr %51, align 8, !tbaa !5
  store i64 -15, ptr %258, align 8, !tbaa !9
  br label %285

259:                                              ; preds = %254
  %260 = load ptr, ptr %42, align 8, !tbaa !5
  %261 = load i64, ptr %260, align 8, !tbaa !9
  %262 = load ptr, ptr %30, align 8, !tbaa !5
  %263 = load i64, ptr %262, align 8, !tbaa !9
  %264 = load ptr, ptr %41, align 8, !tbaa !5
  %265 = load i64, ptr %264, align 8, !tbaa !9
  %266 = icmp sle i64 %263, %265
  br i1 %266, label %267, label %270

267:                                              ; preds = %259
  %268 = load ptr, ptr %30, align 8, !tbaa !5
  %269 = load i64, ptr %268, align 8, !tbaa !9
  br label %273

270:                                              ; preds = %259
  %271 = load ptr, ptr %41, align 8, !tbaa !5
  %272 = load i64, ptr %271, align 8, !tbaa !9
  br label %273

273:                                              ; preds = %270, %267
  %274 = phi i64 [ %269, %267 ], [ %272, %270 ]
  %275 = icmp slt i64 %261, %274
  br i1 %275, label %282, label %276

276:                                              ; preds = %273
  %277 = load ptr, ptr %42, align 8, !tbaa !5
  %278 = load i64, ptr %277, align 8, !tbaa !9
  %279 = load ptr, ptr %30, align 8, !tbaa !5
  %280 = load i64, ptr %279, align 8, !tbaa !9
  %281 = icmp sgt i64 %278, %280
  br i1 %281, label %282, label %284

282:                                              ; preds = %276, %273
  %283 = load ptr, ptr %51, align 8, !tbaa !5
  store i64 -16, ptr %283, align 8, !tbaa !9
  br label %284

284:                                              ; preds = %282, %276
  br label %285

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

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

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

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

289:                                              ; preds = %288, %204
  br label %290

290:                                              ; preds = %289, %195
  br label %291

291:                                              ; preds = %290, %186
  br label %292

292:                                              ; preds = %291, %174
  br label %293

293:                                              ; preds = %292, %168
  br label %294

294:                                              ; preds = %293, %162
  br label %295

295:                                              ; preds = %294, %153
  br label %296

296:                                              ; preds = %295, %142
  %297 = load ptr, ptr %51, align 8, !tbaa !5
  %298 = load i64, ptr %297, align 8, !tbaa !9
  %299 = icmp eq i64 %298, 0
  br i1 %299, label %300, label %316

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

304:                                              ; preds = %300
  %305 = load i64, ptr %75, align 8, !tbaa !9
  %306 = icmp ne i64 %305, 0
  br i1 %306, label %307, label %315

307:                                              ; preds = %304
  %308 = load ptr, ptr %47, align 8, !tbaa !5
  %309 = load i64, ptr %308, align 8, !tbaa !9
  %310 = load ptr, ptr %30, align 8, !tbaa !5
  %311 = load i64, ptr %310, align 8, !tbaa !9
  %312 = icmp slt i64 %309, %311
  br i1 %312, label %313, label %315

313:                                              ; preds = %307, %300
  %314 = load ptr, ptr %51, align 8, !tbaa !5
  store i64 -21, ptr %314, align 8, !tbaa !9
  br label %315

315:                                              ; preds = %313, %307, %304
  br label %316

316:                                              ; preds = %315, %296
  %317 = load ptr, ptr %51, align 8, !tbaa !5
  %318 = load i64, ptr %317, align 8, !tbaa !9
  %319 = icmp ne i64 %318, 0
  br i1 %319, label %320, label %325

320:                                              ; preds = %316
  %321 = load ptr, ptr %51, align 8, !tbaa !5
  %322 = load i64, ptr %321, align 8, !tbaa !9
  %323 = sub nsw i64 0, %322
  store i64 %323, ptr %60, align 8, !tbaa !9
  %324 = call i32 @xerbla_(ptr noundef @.str.6, ptr noundef %60)
  store i32 0, ptr %26, align 4
  store i32 1, ptr %84, align 4
  br label %764

325:                                              ; preds = %316
  %326 = load ptr, ptr %44, align 8, !tbaa !5
  store i64 0, ptr %326, align 8, !tbaa !9
  %327 = load ptr, ptr %30, align 8, !tbaa !5
  %328 = load i64, ptr %327, align 8, !tbaa !9
  %329 = icmp eq i64 %328, 0
  br i1 %329, label %330, label %331

330:                                              ; preds = %325
  store i32 0, ptr %26, align 4
  store i32 1, ptr %84, align 4
  br label %764

331:                                              ; preds = %325
  %332 = load ptr, ptr %29, align 8, !tbaa !5
  %333 = load ptr, ptr %30, align 8, !tbaa !5
  %334 = load ptr, ptr %32, align 8, !tbaa !5
  %335 = load ptr, ptr %35, align 8, !tbaa !5
  %336 = load i64, ptr %55, align 8, !tbaa !9
  %337 = getelementptr inbounds double, ptr %335, i64 %336
  %338 = load ptr, ptr %36, align 8, !tbaa !5
  %339 = load ptr, ptr %51, align 8, !tbaa !5
  %340 = call i32 @dpbstf_(ptr noundef %332, ptr noundef %333, ptr noundef %334, ptr noundef %337, ptr noundef %338, ptr noundef %339)
  %341 = load ptr, ptr %51, align 8, !tbaa !5
  %342 = load i64, ptr %341, align 8, !tbaa !9
  %343 = icmp ne i64 %342, 0
  br i1 %343, label %344, label %351

344:                                              ; preds = %331
  %345 = load ptr, ptr %30, align 8, !tbaa !5
  %346 = load i64, ptr %345, align 8, !tbaa !9
  %347 = load ptr, ptr %51, align 8, !tbaa !5
  %348 = load i64, ptr %347, align 8, !tbaa !9
  %349 = add nsw i64 %346, %348
  %350 = load ptr, ptr %51, align 8, !tbaa !5
  store i64 %349, ptr %350, align 8, !tbaa !9
  store i32 0, ptr %26, align 4
  store i32 1, ptr %84, align 4
  br label %764

351:                                              ; preds = %331
  %352 = load ptr, ptr %27, align 8, !tbaa !5
  %353 = load ptr, ptr %29, align 8, !tbaa !5
  %354 = load ptr, ptr %30, align 8, !tbaa !5
  %355 = load ptr, ptr %31, align 8, !tbaa !5
  %356 = load ptr, ptr %32, align 8, !tbaa !5
  %357 = load ptr, ptr %33, align 8, !tbaa !5
  %358 = load i64, ptr %53, align 8, !tbaa !9
  %359 = getelementptr inbounds double, ptr %357, i64 %358
  %360 = load ptr, ptr %34, align 8, !tbaa !5
  %361 = load ptr, ptr %35, align 8, !tbaa !5
  %362 = load i64, ptr %55, align 8, !tbaa !9
  %363 = getelementptr inbounds double, ptr %361, i64 %362
  %364 = load ptr, ptr %36, align 8, !tbaa !5
  %365 = load ptr, ptr %37, align 8, !tbaa !5
  %366 = load i64, ptr %57, align 8, !tbaa !9
  %367 = getelementptr inbounds double, ptr %365, i64 %366
  %368 = load ptr, ptr %38, align 8, !tbaa !5
  %369 = load ptr, ptr %48, align 8, !tbaa !5
  %370 = getelementptr inbounds double, ptr %369, i64 1
  %371 = call i32 @dsbgst_(ptr noundef %352, ptr noundef %353, ptr noundef %354, ptr noundef %355, ptr noundef %356, ptr noundef %359, ptr noundef %360, ptr noundef %363, ptr noundef %364, ptr noundef %367, ptr noundef %368, ptr noundef %370, ptr noundef %72)
  store i64 1, ptr %66, align 8, !tbaa !9
  %372 = load i64, ptr %66, align 8, !tbaa !9
  %373 = load ptr, ptr %30, align 8, !tbaa !5
  %374 = load i64, ptr %373, align 8, !tbaa !9
  %375 = add nsw i64 %372, %374
  store i64 %375, ptr %67, align 8, !tbaa !9
  %376 = load i64, ptr %67, align 8, !tbaa !9
  %377 = load ptr, ptr %30, align 8, !tbaa !5
  %378 = load i64, ptr %377, align 8, !tbaa !9
  %379 = add nsw i64 %376, %378
  store i64 %379, ptr %82, align 8, !tbaa !9
  %380 = load i64, ptr %75, align 8, !tbaa !9
  %381 = icmp ne i64 %380, 0
  br i1 %381, label %382, label %384

382:                                              ; preds = %351
  %383 = getelementptr inbounds [1 x i8], ptr %68, i64 0, i64 0
  store i8 85, ptr %383, align 1, !tbaa !13
  br label %386

384:                                              ; preds = %351
  %385 = getelementptr inbounds [1 x i8], ptr %68, i64 0, i64 0
  store i8 78, ptr %385, align 1, !tbaa !13
  br label %386

386:                                              ; preds = %384, %382
  %387 = getelementptr inbounds [1 x i8], ptr %68, i64 0, i64 0
  %388 = load ptr, ptr %29, align 8, !tbaa !5
  %389 = load ptr, ptr %30, align 8, !tbaa !5
  %390 = load ptr, ptr %31, align 8, !tbaa !5
  %391 = load ptr, ptr %33, align 8, !tbaa !5
  %392 = load i64, ptr %53, align 8, !tbaa !9
  %393 = getelementptr inbounds double, ptr %391, i64 %392
  %394 = load ptr, ptr %34, align 8, !tbaa !5
  %395 = load ptr, ptr %48, align 8, !tbaa !5
  %396 = load i64, ptr %66, align 8, !tbaa !9
  %397 = getelementptr inbounds double, ptr %395, i64 %396
  %398 = load ptr, ptr %48, align 8, !tbaa !5
  %399 = load i64, ptr %67, align 8, !tbaa !9
  %400 = getelementptr inbounds double, ptr %398, i64 %399
  %401 = load ptr, ptr %37, align 8, !tbaa !5
  %402 = load i64, ptr %57, align 8, !tbaa !9
  %403 = getelementptr inbounds double, ptr %401, i64 %402
  %404 = load ptr, ptr %38, align 8, !tbaa !5
  %405 = load ptr, ptr %48, align 8, !tbaa !5
  %406 = load i64, ptr %82, align 8, !tbaa !9
  %407 = getelementptr inbounds double, ptr %405, i64 %406
  %408 = call i32 @dsbtrd_(ptr noundef %387, ptr noundef %388, ptr noundef %389, ptr noundef %390, ptr noundef %393, ptr noundef %394, ptr noundef %397, ptr noundef %400, ptr noundef %403, ptr noundef %404, ptr noundef %407, ptr noundef %72)
  store i64 0, ptr %69, align 8, !tbaa !9
  %409 = load i64, ptr %77, align 8, !tbaa !9
  %410 = icmp ne i64 %409, 0
  br i1 %410, label %411, label %423

411:                                              ; preds = %386
  %412 = load ptr, ptr %41, align 8, !tbaa !5
  %413 = load i64, ptr %412, align 8, !tbaa !9
  %414 = icmp eq i64 %413, 1
  br i1 %414, label %415, label %422

415:                                              ; preds = %411
  %416 = load ptr, ptr %42, align 8, !tbaa !5
  %417 = load i64, ptr %416, align 8, !tbaa !9
  %418 = load ptr, ptr %30, align 8, !tbaa !5
  %419 = load i64, ptr %418, align 8, !tbaa !9
  %420 = icmp eq i64 %417, %419
  br i1 %420, label %421, label %422

421:                                              ; preds = %415
  store i64 1, ptr %69, align 8, !tbaa !9
  br label %422

422:                                              ; preds = %421, %415, %411
  br label %423

423:                                              ; preds = %422, %386
  %424 = load i64, ptr %76, align 8, !tbaa !9
  %425 = icmp ne i64 %424, 0
  br i1 %425, label %429, label %426

426:                                              ; preds = %423
  %427 = load i64, ptr %69, align 8, !tbaa !9
  %428 = icmp ne i64 %427, 0
  br i1 %428, label %429, label %524

429:                                              ; preds = %426, %423
  %430 = load ptr, ptr %43, align 8, !tbaa !5
  %431 = load double, ptr %430, align 8, !tbaa !11
  %432 = fcmp ole double %431, 0.000000e+00
  br i1 %432, label %433, label %524

433:                                              ; preds = %429
  %434 = load ptr, ptr %30, align 8, !tbaa !5
  %435 = load ptr, ptr %48, align 8, !tbaa !5
  %436 = load i64, ptr %66, align 8, !tbaa !9
  %437 = getelementptr inbounds double, ptr %435, i64 %436
  %438 = load ptr, ptr %45, align 8, !tbaa !5
  %439 = getelementptr inbounds double, ptr %438, i64 1
  %440 = call i32 @f2c_dcopy(ptr noundef %434, ptr noundef %437, ptr noundef @c__1, ptr noundef %439, ptr noundef @c__1)
  %441 = load i64, ptr %82, align 8, !tbaa !9
  %442 = load ptr, ptr %30, align 8, !tbaa !5
  %443 = load i64, ptr %442, align 8, !tbaa !9
  %444 = shl i64 %443, 1
  %445 = add nsw i64 %441, %444
  store i64 %445, ptr %71, align 8, !tbaa !9
  %446 = load ptr, ptr %30, align 8, !tbaa !5
  %447 = load i64, ptr %446, align 8, !tbaa !9
  %448 = sub nsw i64 %447, 1
  store i64 %448, ptr %60, align 8, !tbaa !9
  %449 = load ptr, ptr %48, align 8, !tbaa !5
  %450 = load i64, ptr %67, align 8, !tbaa !9
  %451 = getelementptr inbounds double, ptr %449, i64 %450
  %452 = load ptr, ptr %48, align 8, !tbaa !5
  %453 = load i64, ptr %71, align 8, !tbaa !9
  %454 = getelementptr inbounds double, ptr %452, i64 %453
  %455 = call i32 @f2c_dcopy(ptr noundef %60, ptr noundef %451, ptr noundef @c__1, ptr noundef %454, ptr noundef @c__1)
  %456 = load i64, ptr %75, align 8, !tbaa !9
  %457 = icmp ne i64 %456, 0
  br i1 %457, label %467, label %458

458:                                              ; preds = %433
  %459 = load ptr, ptr %30, align 8, !tbaa !5
  %460 = load ptr, ptr %45, align 8, !tbaa !5
  %461 = getelementptr inbounds double, ptr %460, i64 1
  %462 = load ptr, ptr %48, align 8, !tbaa !5
  %463 = load i64, ptr %71, align 8, !tbaa !9
  %464 = getelementptr inbounds double, ptr %462, i64 %463
  %465 = load ptr, ptr %51, align 8, !tbaa !5
  %466 = call i32 @dsterf_(ptr noundef %459, ptr noundef %461, ptr noundef %464, ptr noundef %465)
  br label %514

467:                                              ; preds = %433
  %468 = load ptr, ptr %30, align 8, !tbaa !5
  %469 = load ptr, ptr %30, align 8, !tbaa !5
  %470 = load ptr, ptr %37, align 8, !tbaa !5
  %471 = load i64, ptr %57, align 8, !tbaa !9
  %472 = getelementptr inbounds double, ptr %470, i64 %471
  %473 = load ptr, ptr %38, align 8, !tbaa !5
  %474 = load ptr, ptr %46, align 8, !tbaa !5
  %475 = load i64, ptr %59, align 8, !tbaa !9
  %476 = getelementptr inbounds double, ptr %474, i64 %475
  %477 = load ptr, ptr %47, align 8, !tbaa !5
  %478 = call i32 @dlacpy_(ptr noundef @.str.2, ptr noundef %468, ptr noundef %469, ptr noundef %472, ptr noundef %473, ptr noundef %476, ptr noundef %477)
  %479 = load ptr, ptr %27, align 8, !tbaa !5
  %480 = load ptr, ptr %30, align 8, !tbaa !5
  %481 = load ptr, ptr %45, align 8, !tbaa !5
  %482 = getelementptr inbounds double, ptr %481, i64 1
  %483 = load ptr, ptr %48, align 8, !tbaa !5
  %484 = load i64, ptr %71, align 8, !tbaa !9
  %485 = getelementptr inbounds double, ptr %483, i64 %484
  %486 = load ptr, ptr %46, align 8, !tbaa !5
  %487 = load i64, ptr %59, align 8, !tbaa !9
  %488 = getelementptr inbounds double, ptr %486, i64 %487
  %489 = load ptr, ptr %47, align 8, !tbaa !5
  %490 = load ptr, ptr %48, align 8, !tbaa !5
  %491 = load i64, ptr %82, align 8, !tbaa !9
  %492 = getelementptr inbounds double, ptr %490, i64 %491
  %493 = load ptr, ptr %51, align 8, !tbaa !5
  %494 = call i32 @dsteqr_(ptr noundef %479, ptr noundef %480, ptr noundef %482, ptr noundef %485, ptr noundef %488, ptr noundef %489, ptr noundef %492, ptr noundef %493)
  %495 = load ptr, ptr %51, align 8, !tbaa !5
  %496 = load i64, ptr %495, align 8, !tbaa !9
  %497 = icmp eq i64 %496, 0
  br i1 %497, label %498, label %513

498:                                              ; preds = %467
  %499 = load ptr, ptr %30, align 8, !tbaa !5
  %500 = load i64, ptr %499, align 8, !tbaa !9
  store i64 %500, ptr %60, align 8, !tbaa !9
  store i64 1, ptr %62, align 8, !tbaa !9
  br label %501

501:                                              ; preds = %509, %498
  %502 = load i64, ptr %62, align 8, !tbaa !9
  %503 = load i64, ptr %60, align 8, !tbaa !9
  %504 = icmp sle i64 %502, %503
  br i1 %504, label %505, label %512

505:                                              ; preds = %501
  %506 = load ptr, ptr %50, align 8, !tbaa !5
  %507 = load i64, ptr %62, align 8, !tbaa !9
  %508 = getelementptr inbounds i64, ptr %506, i64 %507
  store i64 0, ptr %508, align 8, !tbaa !9
  br label %509

509:                                              ; preds = %505
  %510 = load i64, ptr %62, align 8, !tbaa !9
  %511 = add nsw i64 %510, 1
  store i64 %511, ptr %62, align 8, !tbaa !9
  br label %501, !llvm.loop !14

512:                                              ; preds = %501
  br label %513

513:                                              ; preds = %512, %467
  br label %514

514:                                              ; preds = %513, %458
  %515 = load ptr, ptr %51, align 8, !tbaa !5
  %516 = load i64, ptr %515, align 8, !tbaa !9
  %517 = icmp eq i64 %516, 0
  br i1 %517, label %518, label %522

518:                                              ; preds = %514
  %519 = load ptr, ptr %30, align 8, !tbaa !5
  %520 = load i64, ptr %519, align 8, !tbaa !9
  %521 = load ptr, ptr %44, align 8, !tbaa !5
  store i64 %520, ptr %521, align 8, !tbaa !9
  br label %641

522:                                              ; preds = %514
  %523 = load ptr, ptr %51, align 8, !tbaa !5
  store i64 0, ptr %523, align 8, !tbaa !9
  br label %524

524:                                              ; preds = %522, %429, %426
  %525 = load i64, ptr %75, align 8, !tbaa !9
  %526 = icmp ne i64 %525, 0
  br i1 %526, label %527, label %529

527:                                              ; preds = %524
  %528 = getelementptr inbounds [1 x i8], ptr %73, i64 0, i64 0
  store i8 66, ptr %528, align 1, !tbaa !13
  br label %531

529:                                              ; preds = %524
  %530 = getelementptr inbounds [1 x i8], ptr %73, i64 0, i64 0
  store i8 69, ptr %530, align 1, !tbaa !13
  br label %531

531:                                              ; preds = %529, %527
  store i64 1, ptr %78, align 8, !tbaa !9
  %532 = load i64, ptr %78, align 8, !tbaa !9
  %533 = load ptr, ptr %30, align 8, !tbaa !5
  %534 = load i64, ptr %533, align 8, !tbaa !9
  %535 = add nsw i64 %532, %534
  store i64 %535, ptr %80, align 8, !tbaa !9
  %536 = load i64, ptr %80, align 8, !tbaa !9
  %537 = load ptr, ptr %30, align 8, !tbaa !5
  %538 = load i64, ptr %537, align 8, !tbaa !9
  %539 = add nsw i64 %536, %538
  store i64 %539, ptr %81, align 8, !tbaa !9
  %540 = load ptr, ptr %28, align 8, !tbaa !5
  %541 = getelementptr inbounds [1 x i8], ptr %73, i64 0, i64 0
  %542 = load ptr, ptr %30, align 8, !tbaa !5
  %543 = load ptr, ptr %39, align 8, !tbaa !5
  %544 = load ptr, ptr %40, align 8, !tbaa !5
  %545 = load ptr, ptr %41, align 8, !tbaa !5
  %546 = load ptr, ptr %42, align 8, !tbaa !5
  %547 = load ptr, ptr %43, align 8, !tbaa !5
  %548 = load ptr, ptr %48, align 8, !tbaa !5
  %549 = load i64, ptr %66, align 8, !tbaa !9
  %550 = getelementptr inbounds double, ptr %548, i64 %549
  %551 = load ptr, ptr %48, align 8, !tbaa !5
  %552 = load i64, ptr %67, align 8, !tbaa !9
  %553 = getelementptr inbounds double, ptr %551, i64 %552
  %554 = load ptr, ptr %44, align 8, !tbaa !5
  %555 = load ptr, ptr %45, align 8, !tbaa !5
  %556 = getelementptr inbounds double, ptr %555, i64 1
  %557 = load ptr, ptr %49, align 8, !tbaa !5
  %558 = load i64, ptr %78, align 8, !tbaa !9
  %559 = getelementptr inbounds i64, ptr %557, i64 %558
  %560 = load ptr, ptr %49, align 8, !tbaa !5
  %561 = load i64, ptr %80, align 8, !tbaa !9
  %562 = getelementptr inbounds i64, ptr %560, i64 %561
  %563 = load ptr, ptr %48, align 8, !tbaa !5
  %564 = load i64, ptr %82, align 8, !tbaa !9
  %565 = getelementptr inbounds double, ptr %563, i64 %564
  %566 = load ptr, ptr %49, align 8, !tbaa !5
  %567 = load i64, ptr %81, align 8, !tbaa !9
  %568 = getelementptr inbounds i64, ptr %566, i64 %567
  %569 = load ptr, ptr %51, align 8, !tbaa !5
  %570 = call i32 @dstebz_(ptr noundef %540, ptr noundef %541, ptr noundef %542, ptr noundef %543, ptr noundef %544, ptr noundef %545, ptr noundef %546, ptr noundef %547, ptr noundef %550, ptr noundef %553, ptr noundef %554, ptr noundef %83, ptr noundef %556, ptr noundef %559, ptr noundef %562, ptr noundef %565, ptr noundef %568, ptr noundef %569)
  %571 = load i64, ptr %75, align 8, !tbaa !9
  %572 = icmp ne i64 %571, 0
  br i1 %572, label %573, label %640

573:                                              ; preds = %531
  %574 = load ptr, ptr %30, align 8, !tbaa !5
  %575 = load ptr, ptr %48, align 8, !tbaa !5
  %576 = load i64, ptr %66, align 8, !tbaa !9
  %577 = getelementptr inbounds double, ptr %575, i64 %576
  %578 = load ptr, ptr %48, align 8, !tbaa !5
  %579 = load i64, ptr %67, align 8, !tbaa !9
  %580 = getelementptr inbounds double, ptr %578, i64 %579
  %581 = load ptr, ptr %44, align 8, !tbaa !5
  %582 = load ptr, ptr %45, align 8, !tbaa !5
  %583 = getelementptr inbounds double, ptr %582, i64 1
  %584 = load ptr, ptr %49, align 8, !tbaa !5
  %585 = load i64, ptr %78, align 8, !tbaa !9
  %586 = getelementptr inbounds i64, ptr %584, i64 %585
  %587 = load ptr, ptr %49, align 8, !tbaa !5
  %588 = load i64, ptr %80, align 8, !tbaa !9
  %589 = getelementptr inbounds i64, ptr %587, i64 %588
  %590 = load ptr, ptr %46, align 8, !tbaa !5
  %591 = load i64, ptr %59, align 8, !tbaa !9
  %592 = getelementptr inbounds double, ptr %590, i64 %591
  %593 = load ptr, ptr %47, align 8, !tbaa !5
  %594 = load ptr, ptr %48, align 8, !tbaa !5
  %595 = load i64, ptr %82, align 8, !tbaa !9
  %596 = getelementptr inbounds double, ptr %594, i64 %595
  %597 = load ptr, ptr %49, align 8, !tbaa !5
  %598 = load i64, ptr %81, align 8, !tbaa !9
  %599 = getelementptr inbounds i64, ptr %597, i64 %598
  %600 = load ptr, ptr %50, align 8, !tbaa !5
  %601 = getelementptr inbounds i64, ptr %600, i64 1
  %602 = load ptr, ptr %51, align 8, !tbaa !5
  %603 = call i32 @dstein_(ptr noundef %574, ptr noundef %577, ptr noundef %580, ptr noundef %581, ptr noundef %583, ptr noundef %586, ptr noundef %589, ptr noundef %592, ptr noundef %593, ptr noundef %596, ptr noundef %599, ptr noundef %601, ptr noundef %602)
  %604 = load ptr, ptr %44, align 8, !tbaa !5
  %605 = load i64, ptr %604, align 8, !tbaa !9
  store i64 %605, ptr %60, align 8, !tbaa !9
  store i64 1, ptr %63, align 8, !tbaa !9
  br label %606

606:                                              ; preds = %636, %573
  %607 = load i64, ptr %63, align 8, !tbaa !9
  %608 = load i64, ptr %60, align 8, !tbaa !9
  %609 = icmp sle i64 %607, %608
  br i1 %609, label %610, label %639

610:                                              ; preds = %606
  %611 = load ptr, ptr %30, align 8, !tbaa !5
  %612 = load ptr, ptr %46, align 8, !tbaa !5
  %613 = load i64, ptr %63, align 8, !tbaa !9
  %614 = load i64, ptr %58, align 8, !tbaa !9
  %615 = mul nsw i64 %613, %614
  %616 = add nsw i64 %615, 1
  %617 = getelementptr inbounds double, ptr %612, i64 %616
  %618 = load ptr, ptr %48, align 8, !tbaa !5
  %619 = getelementptr inbounds double, ptr %618, i64 1
  %620 = call i32 @f2c_dcopy(ptr noundef %611, ptr noundef %617, ptr noundef @c__1, ptr noundef %619, ptr noundef @c__1)
  %621 = load ptr, ptr %30, align 8, !tbaa !5
  %622 = load ptr, ptr %30, align 8, !tbaa !5
  %623 = load ptr, ptr %37, align 8, !tbaa !5
  %624 = load i64, ptr %57, align 8, !tbaa !9
  %625 = getelementptr inbounds double, ptr %623, i64 %624
  %626 = load ptr, ptr %38, align 8, !tbaa !5
  %627 = load ptr, ptr %48, align 8, !tbaa !5
  %628 = getelementptr inbounds double, ptr %627, i64 1
  %629 = load ptr, ptr %46, align 8, !tbaa !5
  %630 = load i64, ptr %63, align 8, !tbaa !9
  %631 = load i64, ptr %58, align 8, !tbaa !9
  %632 = mul nsw i64 %630, %631
  %633 = add nsw i64 %632, 1
  %634 = getelementptr inbounds double, ptr %629, i64 %633
  %635 = call i32 @f2c_dgemv(ptr noundef @.str.4, ptr noundef %621, ptr noundef %622, ptr noundef @c_b25, ptr noundef %625, ptr noundef %626, ptr noundef %628, ptr noundef @c__1, ptr noundef @c_b27, ptr noundef %634, ptr noundef @c__1)
  br label %636

636:                                              ; preds = %610
  %637 = load i64, ptr %63, align 8, !tbaa !9
  %638 = add nsw i64 %637, 1
  store i64 %638, ptr %63, align 8, !tbaa !9
  br label %606, !llvm.loop !16

639:                                              ; preds = %606
  br label %640

640:                                              ; preds = %639, %531
  br label %641

641:                                              ; preds = %640, %518
  %642 = load i64, ptr %75, align 8, !tbaa !9
  %643 = icmp ne i64 %642, 0
  br i1 %643, label %644, label %763

644:                                              ; preds = %641
  %645 = load ptr, ptr %44, align 8, !tbaa !5
  %646 = load i64, ptr %645, align 8, !tbaa !9
  %647 = sub nsw i64 %646, 1
  store i64 %647, ptr %60, align 8, !tbaa !9
  store i64 1, ptr %63, align 8, !tbaa !9
  br label %648

648:                                              ; preds = %759, %644
  %649 = load i64, ptr %63, align 8, !tbaa !9
  %650 = load i64, ptr %60, align 8, !tbaa !9
  %651 = icmp sle i64 %649, %650
  br i1 %651, label %652, label %762

652:                                              ; preds = %648
  store i64 0, ptr %62, align 8, !tbaa !9
  %653 = load ptr, ptr %45, align 8, !tbaa !5
  %654 = load i64, ptr %63, align 8, !tbaa !9
  %655 = getelementptr inbounds double, ptr %653, i64 %654
  %656 = load double, ptr %655, align 8, !tbaa !11
  store double %656, ptr %65, align 8, !tbaa !11
  %657 = load ptr, ptr %44, align 8, !tbaa !5
  %658 = load i64, ptr %657, align 8, !tbaa !9
  store i64 %658, ptr %61, align 8, !tbaa !9
  %659 = load i64, ptr %63, align 8, !tbaa !9
  %660 = add nsw i64 %659, 1
  store i64 %660, ptr %64, align 8, !tbaa !9
  br label %661

661:                                              ; preds = %679, %652
  %662 = load i64, ptr %64, align 8, !tbaa !9
  %663 = load i64, ptr %61, align 8, !tbaa !9
  %664 = icmp sle i64 %662, %663
  br i1 %664, label %665, label %682

665:                                              ; preds = %661
  %666 = load ptr, ptr %45, align 8, !tbaa !5
  %667 = load i64, ptr %64, align 8, !tbaa !9
  %668 = getelementptr inbounds double, ptr %666, i64 %667
  %669 = load double, ptr %668, align 8, !tbaa !11
  %670 = load double, ptr %65, align 8, !tbaa !11
  %671 = fcmp olt double %669, %670
  br i1 %671, label %672, label %678

672:                                              ; preds = %665
  %673 = load i64, ptr %64, align 8, !tbaa !9
  store i64 %673, ptr %62, align 8, !tbaa !9
  %674 = load ptr, ptr %45, align 8, !tbaa !5
  %675 = load i64, ptr %64, align 8, !tbaa !9
  %676 = getelementptr inbounds double, ptr %674, i64 %675
  %677 = load double, ptr %676, align 8, !tbaa !11
  store double %677, ptr %65, align 8, !tbaa !11
  br label %678

678:                                              ; preds = %672, %665
  br label %679

679:                                              ; preds = %678
  %680 = load i64, ptr %64, align 8, !tbaa !9
  %681 = add nsw i64 %680, 1
  store i64 %681, ptr %64, align 8, !tbaa !9
  br label %661, !llvm.loop !17

682:                                              ; preds = %661
  %683 = load i64, ptr %62, align 8, !tbaa !9
  %684 = icmp ne i64 %683, 0
  br i1 %684, label %685, label %758

685:                                              ; preds = %682
  %686 = load ptr, ptr %49, align 8, !tbaa !5
  %687 = load i64, ptr %78, align 8, !tbaa !9
  %688 = load i64, ptr %62, align 8, !tbaa !9
  %689 = add nsw i64 %687, %688
  %690 = sub nsw i64 %689, 1
  %691 = getelementptr inbounds i64, ptr %686, i64 %690
  %692 = load i64, ptr %691, align 8, !tbaa !9
  store i64 %692, ptr %70, align 8, !tbaa !9
  %693 = load ptr, ptr %45, align 8, !tbaa !5
  %694 = load i64, ptr %63, align 8, !tbaa !9
  %695 = getelementptr inbounds double, ptr %693, i64 %694
  %696 = load double, ptr %695, align 8, !tbaa !11
  %697 = load ptr, ptr %45, align 8, !tbaa !5
  %698 = load i64, ptr %62, align 8, !tbaa !9
  %699 = getelementptr inbounds double, ptr %697, i64 %698
  store double %696, ptr %699, align 8, !tbaa !11
  %700 = load ptr, ptr %49, align 8, !tbaa !5
  %701 = load i64, ptr %78, align 8, !tbaa !9
  %702 = load i64, ptr %63, align 8, !tbaa !9
  %703 = add nsw i64 %701, %702
  %704 = sub nsw i64 %703, 1
  %705 = getelementptr inbounds i64, ptr %700, i64 %704
  %706 = load i64, ptr %705, align 8, !tbaa !9
  %707 = load ptr, ptr %49, align 8, !tbaa !5
  %708 = load i64, ptr %78, align 8, !tbaa !9
  %709 = load i64, ptr %62, align 8, !tbaa !9
  %710 = add nsw i64 %708, %709
  %711 = sub nsw i64 %710, 1
  %712 = getelementptr inbounds i64, ptr %707, i64 %711
  store i64 %706, ptr %712, align 8, !tbaa !9
  %713 = load double, ptr %65, align 8, !tbaa !11
  %714 = load ptr, ptr %45, align 8, !tbaa !5
  %715 = load i64, ptr %63, align 8, !tbaa !9
  %716 = getelementptr inbounds double, ptr %714, i64 %715
  store double %713, ptr %716, align 8, !tbaa !11
  %717 = load i64, ptr %70, align 8, !tbaa !9
  %718 = load ptr, ptr %49, align 8, !tbaa !5
  %719 = load i64, ptr %78, align 8, !tbaa !9
  %720 = load i64, ptr %63, align 8, !tbaa !9
  %721 = add nsw i64 %719, %720
  %722 = sub nsw i64 %721, 1
  %723 = getelementptr inbounds i64, ptr %718, i64 %722
  store i64 %717, ptr %723, align 8, !tbaa !9
  %724 = load ptr, ptr %30, align 8, !tbaa !5
  %725 = load ptr, ptr %46, align 8, !tbaa !5
  %726 = load i64, ptr %62, align 8, !tbaa !9
  %727 = load i64, ptr %58, align 8, !tbaa !9
  %728 = mul nsw i64 %726, %727
  %729 = add nsw i64 %728, 1
  %730 = getelementptr inbounds double, ptr %725, i64 %729
  %731 = load ptr, ptr %46, align 8, !tbaa !5
  %732 = load i64, ptr %63, align 8, !tbaa !9
  %733 = load i64, ptr %58, align 8, !tbaa !9
  %734 = mul nsw i64 %732, %733
  %735 = add nsw i64 %734, 1
  %736 = getelementptr inbounds double, ptr %731, i64 %735
  %737 = call i32 @f2c_dswap(ptr noundef %724, ptr noundef %730, ptr noundef @c__1, ptr noundef %736, ptr noundef @c__1)
  %738 = load ptr, ptr %51, align 8, !tbaa !5
  %739 = load i64, ptr %738, align 8, !tbaa !9
  %740 = icmp ne i64 %739, 0
  br i1 %740, label %741, label %757

741:                                              ; preds = %685
  %742 = load ptr, ptr %50, align 8, !tbaa !5
  %743 = load i64, ptr %62, align 8, !tbaa !9
  %744 = getelementptr inbounds i64, ptr %742, i64 %743
  %745 = load i64, ptr %744, align 8, !tbaa !9
  store i64 %745, ptr %70, align 8, !tbaa !9
  %746 = load ptr, ptr %50, align 8, !tbaa !5
  %747 = load i64, ptr %63, align 8, !tbaa !9
  %748 = getelementptr inbounds i64, ptr %746, i64 %747
  %749 = load i64, ptr %748, align 8, !tbaa !9
  %750 = load ptr, ptr %50, align 8, !tbaa !5
  %751 = load i64, ptr %62, align 8, !tbaa !9
  %752 = getelementptr inbounds i64, ptr %750, i64 %751
  store i64 %749, ptr %752, align 8, !tbaa !9
  %753 = load i64, ptr %70, align 8, !tbaa !9
  %754 = load ptr, ptr %50, align 8, !tbaa !5
  %755 = load i64, ptr %63, align 8, !tbaa !9
  %756 = getelementptr inbounds i64, ptr %754, i64 %755
  store i64 %753, ptr %756, align 8, !tbaa !9
  br label %757

757:                                              ; preds = %741, %685
  br label %758

758:                                              ; preds = %757, %682
  br label %759

759:                                              ; preds = %758
  %760 = load i64, ptr %63, align 8, !tbaa !9
  %761 = add nsw i64 %760, 1
  store i64 %761, ptr %63, align 8, !tbaa !9
  br label %648, !llvm.loop !18

762:                                              ; preds = %648
  br label %763

763:                                              ; preds = %762, %641
  store i32 0, ptr %26, align 4
  store i32 1, ptr %84, align 4
  br label %764

764:                                              ; preds = %763, %344, %330, %320
  call void @llvm.lifetime.end.p0(i64 8, ptr %83) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %82) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %81) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %80) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %79) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %78) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %77) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %76) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %74) #3
  call void @llvm.lifetime.end.p0(i64 1, ptr %73) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %72) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %71) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #3
  call void @llvm.lifetime.end.p0(i64 1, ptr %68) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #3
  %765 = load i32, ptr %26, align 4
  ret i32 %765
}

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

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

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

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

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

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

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

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

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

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

declare i32 @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 i32 @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 i32 @f2c_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 i32 @f2c_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 }

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

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


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

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

; Function Attrs: nounwind uwtable
define dso_local noundef i32 @dsbgvx_(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %5, ptr noundef %6, ptr noundef %7, ptr noundef %8, ptr noundef %9, ptr noundef %10, ptr noundef %11, ptr noundef %12, ptr noundef %13, ptr noundef %14, ptr noundef %15, ptr noundef %16, ptr noundef %17, ptr noundef %18, ptr noundef %19, ptr noundef %20, ptr noundef %21, ptr noundef %22, ptr noundef %23, ptr noundef %24) local_unnamed_addr #0 {
  %26 = alloca i64, align 8
  %27 = alloca [1 x i8], align 1
  %28 = alloca i64, align 8
  %29 = alloca [1 x i8], align 1
  %30 = alloca i64, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %26) #5
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %27) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %28) #5
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %29) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %30) #5
  %31 = getelementptr inbounds i8, ptr %18, i64 -8
  %32 = load i64, ptr %20, align 8, !tbaa !5
  %33 = xor i64 %32, -1
  %34 = getelementptr inbounds double, ptr %19, i64 %33
  %35 = getelementptr inbounds i8, ptr %22, i64 -8
  %36 = getelementptr inbounds i8, ptr %23, i64 -8
  %37 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str) #5
  %38 = tail call i64 @lsame_(ptr noundef %2, ptr noundef nonnull @.str.1) #5
  %39 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.2) #5
  %40 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str) #5
  %41 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.3) #5
  store i64 0, ptr %24, align 8, !tbaa !5
  %.not = icmp ne i64 %37, 0
  br i1 %.not, label %44, label %42

42:                                               ; preds = %25
  %43 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.4) #5
  %.not326 = icmp eq i64 %43, 0
  br i1 %.not326, label %.thread352.sink.split, label %44

44:                                               ; preds = %42, %25
  %45 = icmp ne i64 %39, 0
  %46 = icmp ne i64 %40, 0
  %or.cond = select i1 %45, i1 true, i1 %46
  %47 = icmp ne i64 %41, 0
  %or.cond3 = select i1 %or.cond, i1 true, i1 %47
  br i1 %or.cond3, label %48, label %.thread352.sink.split

48:                                               ; preds = %44
  %.not327 = icmp eq i64 %38, 0
  br i1 %.not327, label %49, label %51

49:                                               ; preds = %48
  %50 = tail call i64 @lsame_(ptr noundef %2, ptr noundef nonnull @.str.5) #5
  %.not328 = icmp eq i64 %50, 0
  br i1 %.not328, label %.thread352.sink.split, label %51

51:                                               ; preds = %49, %48
  %52 = load i64, ptr %3, align 8, !tbaa !5
  %53 = icmp slt i64 %52, 0
  br i1 %53, label %.thread352.sink.split, label %54

54:                                               ; preds = %51
  %55 = load i64, ptr %4, align 8, !tbaa !5
  %56 = icmp slt i64 %55, 0
  br i1 %56, label %.thread352.sink.split, label %57

57:                                               ; preds = %54
  %58 = load i64, ptr %5, align 8, !tbaa !5
  %or.cond344 = icmp ugt i64 %58, %55
  br i1 %or.cond344, label %.thread352.sink.split, label %59

59:                                               ; preds = %57
  %60 = load i64, ptr %7, align 8, !tbaa !5
  %.not329 = icmp sgt i64 %60, %55
  br i1 %.not329, label %61, label %.thread352.sink.split

61:                                               ; preds = %59
  %62 = load i64, ptr %9, align 8, !tbaa !5
  %.not330 = icmp sgt i64 %62, %58
  br i1 %.not330, label %63, label %.thread352.sink.split

63:                                               ; preds = %61
  %64 = load i64, ptr %11, align 8, !tbaa !5
  %65 = icmp slt i64 %64, 1
  %66 = icmp ult i64 %64, %52
  %or.cond345 = and i1 %.not, %66
  %or.cond362 = or i1 %65, %or.cond345
  br i1 %or.cond362, label %.thread352.sink.split, label %67

67:                                               ; preds = %63
  br i1 %46, label %68, label %73

68:                                               ; preds = %67
  %.not360 = icmp eq i64 %52, 0
  br i1 %.not360, label %82, label %69

69:                                               ; preds = %68
  %70 = load double, ptr %13, align 8, !tbaa !9
  %71 = load double, ptr %12, align 8, !tbaa !9
  %72 = fcmp ugt double %70, %71
  br i1 %72, label %82, label %.thread352.sink.split

73:                                               ; preds = %67
  br i1 %47, label %74, label %82

74:                                               ; preds = %73
  %75 = load i64, ptr %14, align 8, !tbaa !5
  %76 = icmp slt i64 %75, 1
  %spec.select = tail call i64 @llvm.umax.i64(i64 %52, i64 1)
  %77 = icmp ugt i64 %75, %spec.select
  %or.cond363 = or i1 %76, %77
  br i1 %or.cond363, label %.thread352.sink.split, label %78

78:                                               ; preds = %74
  %79 = load i64, ptr %15, align 8, !tbaa !5
  %. = tail call i64 @llvm.umin.i64(i64 %52, i64 %75)
  %80 = icmp slt i64 %79, %.
  %81 = icmp ugt i64 %79, %52
  %or.cond359 = or i1 %80, %81
  br i1 %or.cond359, label %.thread352.sink.split, label %82

82:                                               ; preds = %78, %69, %68, %73
  %.pr = load i64, ptr %24, align 8, !tbaa !5
  %83 = icmp eq i64 %.pr, 0
  br i1 %83, label %84, label %.thread352

84:                                               ; preds = %82
  %85 = load i64, ptr %20, align 8, !tbaa !5
  %86 = icmp slt i64 %85, 1
  %87 = icmp ult i64 %85, %52
  %or.cond391 = and i1 %.not, %87
  %or.cond392 = or i1 %86, %or.cond391
  br i1 %or.cond392, label %.thread352.sink.split, label %.thread

.thread352.sink.split:                            ; preds = %84, %78, %74, %69, %63, %61, %59, %57, %54, %51, %49, %44, %42
  %.sink = phi i64 [ -1, %42 ], [ -2, %44 ], [ -3, %49 ], [ -4, %51 ], [ -5, %54 ], [ -6, %57 ], [ -8, %59 ], [ -10, %61 ], [ -12, %63 ], [ -14, %69 ], [ -15, %74 ], [ -16, %78 ], [ -21, %84 ]
  store i64 %.sink, ptr %24, align 8, !tbaa !5
  br label %.thread352

.thread352:                                       ; preds = %.thread352.sink.split, %82
  %88 = phi i64 [ %.pr, %82 ], [ %.sink, %.thread352.sink.split ]
  %89 = sub nsw i64 0, %88
  store i64 %89, ptr %26, align 8, !tbaa !5
  %90 = call i32 @xerbla_(ptr noundef nonnull @.str.6, ptr noundef nonnull %26) #5
  br label %.critedge

.thread:                                          ; preds = %84
  store i64 0, ptr %17, align 8, !tbaa !5
  %91 = load i64, ptr %3, align 8, !tbaa !5
  %92 = icmp eq i64 %91, 0
  br i1 %92, label %.critedge, label %93

93:                                               ; preds = %.thread
  %94 = tail call i32 @dpbstf_(ptr noundef %2, ptr noundef nonnull %3, ptr noundef nonnull %5, ptr noundef %8, ptr noundef nonnull %9, ptr noundef nonnull %24) #5
  %95 = load i64, ptr %24, align 8, !tbaa !5
  %.not333 = icmp eq i64 %95, 0
  br i1 %.not333, label %99, label %96

96:                                               ; preds = %93
  %97 = load i64, ptr %3, align 8, !tbaa !5
  %98 = add nsw i64 %97, %95
  store i64 %98, ptr %24, align 8, !tbaa !5
  br label %.critedge

99:                                               ; preds = %93
  %100 = call i32 @dsbgst_(ptr noundef %0, ptr noundef %2, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef nonnull %5, ptr noundef %6, ptr noundef nonnull %7, ptr noundef %8, ptr noundef nonnull %9, ptr noundef %10, ptr noundef nonnull %11, ptr noundef %21, ptr noundef nonnull %28) #5
  %101 = load i64, ptr %3, align 8, !tbaa !5
  %.346 = select i1 %.not, i8 85, i8 78
  store i8 %.346, ptr %27, align 1, !tbaa !11
  %102 = getelementptr double, ptr %21, i64 %101
  %.idx361 = shl i64 %101, 4
  %103 = getelementptr i8, ptr %21, i64 %.idx361
  %104 = call i32 @dsbtrd_(ptr noundef nonnull %27, ptr noundef %2, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef %6, ptr noundef nonnull %7, ptr noundef %21, ptr noundef %102, ptr noundef %10, ptr noundef nonnull %11, ptr noundef %103, ptr noundef nonnull %28) #5
  %.not334 = icmp eq i64 %41, 0
  br i1 %.not334, label %112, label %105

105:                                              ; preds = %99
  %106 = load i64, ptr %14, align 8, !tbaa !5
  %107 = icmp eq i64 %106, 1
  br i1 %107, label %108, label %112

108:                                              ; preds = %105
  %109 = load i64, ptr %15, align 8, !tbaa !5
  %110 = load i64, ptr %3, align 8, !tbaa !5
  %111 = icmp eq i64 %109, %110
  br label %112

112:                                              ; preds = %108, %105, %99
  %113 = phi i1 [ false, %105 ], [ false, %99 ], [ %111, %108 ]
  %or.cond5 = or i1 %45, %113
  br i1 %or.cond5, label %114, label %136

114:                                              ; preds = %112
  %115 = load double, ptr %16, align 8, !tbaa !9
  %116 = fcmp ugt double %115, 0.000000e+00
  br i1 %116, label %136, label %117

117:                                              ; preds = %114
  %118 = call i32 @f2c_dcopy(ptr noundef nonnull %3, ptr noundef %21, ptr noundef nonnull @c__1, ptr noundef %18, ptr noundef nonnull @c__1) #5
  %119 = load i64, ptr %3, align 8, !tbaa !5
  %120 = add nsw i64 %119, -1
  store i64 %120, ptr %26, align 8, !tbaa !5
  %.idx = shl i64 %119, 4
  %121 = getelementptr i8, ptr %103, i64 %.idx
  %122 = call i32 @f2c_dcopy(ptr noundef nonnull %26, ptr noundef %102, ptr noundef nonnull @c__1, ptr noundef %121, ptr noundef nonnull @c__1) #5
  br i1 %.not, label %125, label %123

123:                                              ; preds = %117
  %124 = call i32 @dsterf_(ptr noundef nonnull %3, ptr noundef %18, ptr noundef %121, ptr noundef nonnull %24) #5
  br label %.loopexit364

125:                                              ; preds = %117
  %126 = call i32 @dlacpy_(ptr noundef nonnull @.str.2, ptr noundef nonnull %3, ptr noundef nonnull %3, ptr noundef %10, ptr noundef nonnull %11, ptr noundef %19, ptr noundef nonnull %20) #5
  %127 = call i32 @dsteqr_(ptr noundef %0, ptr noundef nonnull %3, ptr noundef %18, ptr noundef %121, ptr noundef %19, ptr noundef nonnull %20, ptr noundef %103, ptr noundef nonnull %24) #5
  %128 = load i64, ptr %24, align 8, !tbaa !5
  %129 = icmp eq i64 %128, 0
  br i1 %129, label %130, label %.thread356

130:                                              ; preds = %125
  %131 = load i64, ptr %3, align 8, !tbaa !5
  store i64 %131, ptr %26, align 8, !tbaa !5
  %.not335365 = icmp slt i64 %131, 1
  br i1 %.not335365, label %.loopexit364, label %.lr.ph.preheader

.lr.ph.preheader:                                 ; preds = %130
  %132 = shl nuw i64 %131, 3
  call void @llvm.memset.p0.i64(ptr align 8 %23, i8 0, i64 %132, i1 false), !tbaa !5
  br label %.loopexit364

.loopexit364:                                     ; preds = %.lr.ph.preheader, %130, %123
  %.pr355 = load i64, ptr %24, align 8, !tbaa !5
  %133 = icmp eq i64 %.pr355, 0
  br i1 %133, label %134, label %.thread356

134:                                              ; preds = %.loopexit364
  %135 = load i64, ptr %3, align 8, !tbaa !5
  store i64 %135, ptr %17, align 8, !tbaa !5
  br label %.loopexit

.thread356:                                       ; preds = %125, %.loopexit364
  store i64 0, ptr %24, align 8, !tbaa !5
  br label %136

136:                                              ; preds = %112, %.thread356, %114
  %.348 = select i1 %.not, i8 66, i8 69
  store i8 %.348, ptr %29, align 1, !tbaa !11
  %137 = load i64, ptr %3, align 8, !tbaa !5
  %138 = getelementptr i64, ptr %22, i64 %137
  %.idx338 = shl i64 %137, 4
  %139 = getelementptr i8, ptr %22, i64 %.idx338
  %140 = call i32 @dstebz_(ptr noundef %1, ptr noundef nonnull %29, ptr noundef nonnull %3, ptr noundef %12, ptr noundef %13, ptr noundef %14, ptr noundef %15, ptr noundef %16, ptr noundef %21, ptr noundef %102, ptr noundef nonnull %17, ptr noundef nonnull %30, ptr noundef %18, ptr noundef %22, ptr noundef %138, ptr noundef %103, ptr noundef %139, ptr noundef nonnull %24) #5
  br i1 %.not, label %141, label %.critedge

141:                                              ; preds = %136
  %142 = call i32 @dstein_(ptr noundef nonnull %3, ptr noundef %21, ptr noundef %102, ptr noundef nonnull %17, ptr noundef %18, ptr noundef %22, ptr noundef %138, ptr noundef %19, ptr noundef nonnull %20, ptr noundef %103, ptr noundef %139, ptr noundef %23, ptr noundef nonnull %24) #5
  %143 = load i64, ptr %17, align 8, !tbaa !5
  store i64 %143, ptr %26, align 8, !tbaa !5
  %invariant.gep = getelementptr i8, ptr %34, i64 8
  %.not339367 = icmp slt i64 %143, 1
  br i1 %.not339367, label %.critedge, label %.lr.ph369

.lr.ph369:                                        ; preds = %141, %.lr.ph369
  %.0310368 = phi i64 [ %147, %.lr.ph369 ], [ 1, %141 ]
  %144 = mul nsw i64 %.0310368, %32
  %gep = getelementptr double, ptr %invariant.gep, i64 %144
  %145 = call i32 @f2c_dcopy(ptr noundef nonnull %3, ptr noundef %gep, ptr noundef nonnull @c__1, ptr noundef %21, ptr noundef nonnull @c__1) #5
  %146 = call i32 @f2c_dgemv(ptr noundef nonnull @.str.4, ptr noundef nonnull %3, ptr noundef nonnull %3, ptr noundef nonnull @c_b25, ptr noundef %10, ptr noundef nonnull %11, ptr noundef %21, ptr noundef nonnull @c__1, ptr noundef nonnull @c_b27, ptr noundef %gep, ptr noundef nonnull @c__1) #5
  %147 = add nuw nsw i64 %.0310368, 1
  %148 = load i64, ptr %26, align 8, !tbaa !5
  %.not339.not = icmp slt i64 %.0310368, %148
  br i1 %.not339.not, label %.lr.ph369, label %.loopexit, !llvm.loop !12

.loopexit:                                        ; preds = %.lr.ph369, %134
  br i1 %.not, label %149, label %.critedge

149:                                              ; preds = %.loopexit
  %.pr384 = load i64, ptr %17, align 8, !tbaa !5
  %150 = add nsw i64 %.pr384, -1
  store i64 %150, ptr %26, align 8, !tbaa !5
  %invariant.gep376 = getelementptr i8, ptr %34, i64 8
  %.not340380 = icmp slt i64 %.pr384, 2
  br i1 %.not340380, label %.critedge, label %.lr.ph383

.lr.ph383:                                        ; preds = %149, %._crit_edge.thread
  %.1311381 = phi i64 [ %154, %._crit_edge.thread ], [ 1, %149 ]
  %151 = getelementptr inbounds double, ptr %31, i64 %.1311381
  %152 = load double, ptr %151, align 8, !tbaa !9
  %153 = load i64, ptr %17, align 8, !tbaa !5
  %154 = add nuw nsw i64 %.1311381, 1
  %.not341370.not = icmp slt i64 %.1311381, %153
  br i1 %.not341370.not, label %.lr.ph374, label %._crit_edge.thread

.lr.ph374:                                        ; preds = %.lr.ph383, %.lr.ph374
  %.1373 = phi i64 [ %.2, %.lr.ph374 ], [ 0, %.lr.ph383 ]
  %.0312372 = phi i64 [ %158, %.lr.ph374 ], [ %154, %.lr.ph383 ]
  %.0313371 = phi double [ %.1314, %.lr.ph374 ], [ %152, %.lr.ph383 ]
  %155 = getelementptr inbounds double, ptr %31, i64 %.0312372
  %156 = load double, ptr %155, align 8, !tbaa !9
  %157 = fcmp olt double %156, %.0313371
  %.1314 = select i1 %157, double %156, double %.0313371
  %.2 = select i1 %157, i64 %.0312372, i64 %.1373
  %158 = add nuw nsw i64 %.0312372, 1
  %.not341.not = icmp slt i64 %.0312372, %153
  br i1 %.not341.not, label %.lr.ph374, label %._crit_edge, !llvm.loop !14

._crit_edge:                                      ; preds = %.lr.ph374
  %.not342 = icmp eq i64 %.2, 0
  br i1 %.not342, label %._crit_edge.thread, label %159

159:                                              ; preds = %._crit_edge
  %160 = getelementptr inbounds i64, ptr %35, i64 %.2
  %161 = load i64, ptr %160, align 8, !tbaa !5
  %162 = getelementptr inbounds double, ptr %31, i64 %.2
  store double %152, ptr %162, align 8, !tbaa !9
  %163 = getelementptr inbounds i64, ptr %35, i64 %.1311381
  %164 = load i64, ptr %163, align 8, !tbaa !5
  store i64 %164, ptr %160, align 8, !tbaa !5
  store double %.1314, ptr %151, align 8, !tbaa !9
  store i64 %161, ptr %163, align 8, !tbaa !5
  %165 = mul nsw i64 %.2, %32
  %gep377 = getelementptr double, ptr %invariant.gep376, i64 %165
  %166 = mul nsw i64 %.1311381, %32
  %gep379 = getelementptr double, ptr %invariant.gep376, i64 %166
  %167 = call i32 @f2c_dswap(ptr noundef nonnull %3, ptr noundef %gep377, ptr noundef nonnull @c__1, ptr noundef %gep379, ptr noundef nonnull @c__1) #5
  %168 = load i64, ptr %24, align 8, !tbaa !5
  %.not343 = icmp eq i64 %168, 0
  br i1 %.not343, label %._crit_edge.thread, label %169

169:                                              ; preds = %159
  %170 = getelementptr inbounds i64, ptr %36, i64 %.2
  %171 = load i64, ptr %170, align 8, !tbaa !5
  %172 = getelementptr inbounds i64, ptr %36, i64 %.1311381
  %173 = load i64, ptr %172, align 8, !tbaa !5
  store i64 %173, ptr %170, align 8, !tbaa !5
  store i64 %171, ptr %172, align 8, !tbaa !5
  br label %._crit_edge.thread

._crit_edge.thread:                               ; preds = %.lr.ph383, %._crit_edge, %169, %159
  %174 = load i64, ptr %26, align 8, !tbaa !5
  %.not340.not = icmp slt i64 %.1311381, %174
  br i1 %.not340.not, label %.lr.ph383, label %.critedge, !llvm.loop !15

.critedge:                                        ; preds = %._crit_edge.thread, %141, %149, %.loopexit, %136, %.thread, %96, %.thread352
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %30) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %29) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %28) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %27) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) #5
  ret i32 0
}

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

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

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

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

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

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

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

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

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

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

declare i32 @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 i32 @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 i32 @f2c_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 i32 @f2c_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 i64 @llvm.umax.i64(i64, i64) #3

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

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

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 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #4 = { nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #5 = { nounwind }

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

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


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