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

; 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
@.str.7 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [2 x i8], align 1
@c_b14 = external hidden global double, align 8
@.str.11 = external hidden unnamed_addr constant [2 x i8], align 1
@c__1 = external hidden global i64, align 8
@c_b34 = external hidden global double, align 8

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

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

140:                                              ; preds = %136
  %141 = load ptr, ptr %45, align 8, !tbaa !5
  store i64 -1, ptr %141, align 8, !tbaa !9
  br label %274

142:                                              ; preds = %136, %22
  %143 = load i64, ptr %77, align 8, !tbaa !9
  %144 = icmp ne i64 %143, 0
  br i1 %144, label %153, label %145

145:                                              ; preds = %142
  %146 = load i64, ptr %81, align 8, !tbaa !9
  %147 = icmp ne i64 %146, 0
  br i1 %147, label %153, label %148

148:                                              ; preds = %145
  %149 = load i64, ptr %78, align 8, !tbaa !9
  %150 = icmp ne i64 %149, 0
  br i1 %150, label %153, label %151

151:                                              ; preds = %148
  %152 = load ptr, ptr %45, align 8, !tbaa !5
  store i64 -2, ptr %152, align 8, !tbaa !9
  br label %273

153:                                              ; preds = %148, %145, %142
  %154 = load i64, ptr %75, align 8, !tbaa !9
  %155 = icmp ne i64 %154, 0
  br i1 %155, label %162, label %156

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

160:                                              ; preds = %156
  %161 = load ptr, ptr %45, align 8, !tbaa !5
  store i64 -3, ptr %161, align 8, !tbaa !9
  br label %272

162:                                              ; preds = %156, %153
  %163 = load ptr, ptr %27, align 8, !tbaa !5
  %164 = load i64, ptr %163, align 8, !tbaa !9
  %165 = icmp slt i64 %164, 0
  br i1 %165, label %166, label %168

166:                                              ; preds = %162
  %167 = load ptr, ptr %45, align 8, !tbaa !5
  store i64 -4, ptr %167, align 8, !tbaa !9
  br label %271

168:                                              ; preds = %162
  %169 = load ptr, ptr %28, align 8, !tbaa !5
  %170 = load i64, ptr %169, align 8, !tbaa !9
  %171 = icmp slt i64 %170, 0
  br i1 %171, label %172, label %174

172:                                              ; preds = %168
  %173 = load ptr, ptr %45, align 8, !tbaa !5
  store i64 -5, ptr %173, align 8, !tbaa !9
  br label %270

174:                                              ; preds = %168
  %175 = load ptr, ptr %30, align 8, !tbaa !5
  %176 = load i64, ptr %175, align 8, !tbaa !9
  %177 = load ptr, ptr %28, align 8, !tbaa !5
  %178 = load i64, ptr %177, align 8, !tbaa !9
  %179 = add nsw i64 %178, 1
  %180 = icmp slt i64 %176, %179
  br i1 %180, label %181, label %183

181:                                              ; preds = %174
  %182 = load ptr, ptr %45, align 8, !tbaa !5
  store i64 -7, ptr %182, align 8, !tbaa !9
  br label %269

183:                                              ; preds = %174
  %184 = load i64, ptr %76, align 8, !tbaa !9
  %185 = icmp ne i64 %184, 0
  br i1 %185, label %186, label %201

186:                                              ; preds = %183
  %187 = load ptr, ptr %32, align 8, !tbaa !5
  %188 = load i64, ptr %187, align 8, !tbaa !9
  %189 = load ptr, ptr %27, align 8, !tbaa !5
  %190 = load i64, ptr %189, align 8, !tbaa !9
  %191 = icmp sge i64 1, %190
  br i1 %191, label %192, label %193

192:                                              ; preds = %186
  br label %196

193:                                              ; preds = %186
  %194 = load ptr, ptr %27, align 8, !tbaa !5
  %195 = load i64, ptr %194, align 8, !tbaa !9
  br label %196

196:                                              ; preds = %193, %192
  %197 = phi i64 [ 1, %192 ], [ %195, %193 ]
  %198 = icmp slt i64 %188, %197
  br i1 %198, label %199, label %201

199:                                              ; preds = %196
  %200 = load ptr, ptr %45, align 8, !tbaa !5
  store i64 -9, ptr %200, align 8, !tbaa !9
  br label %268

201:                                              ; preds = %196, %183
  %202 = load i64, ptr %81, align 8, !tbaa !9
  %203 = icmp ne i64 %202, 0
  br i1 %203, label %204, label %217

204:                                              ; preds = %201
  %205 = load ptr, ptr %27, align 8, !tbaa !5
  %206 = load i64, ptr %205, align 8, !tbaa !9
  %207 = icmp sgt i64 %206, 0
  br i1 %207, label %208, label %216

208:                                              ; preds = %204
  %209 = load ptr, ptr %34, align 8, !tbaa !5
  %210 = load double, ptr %209, align 8, !tbaa !11
  %211 = load ptr, ptr %33, align 8, !tbaa !5
  %212 = load double, ptr %211, align 8, !tbaa !11
  %213 = fcmp ole double %210, %212
  br i1 %213, label %214, label %216

214:                                              ; preds = %208
  %215 = load ptr, ptr %45, align 8, !tbaa !5
  store i64 -11, ptr %215, align 8, !tbaa !9
  br label %216

216:                                              ; preds = %214, %208, %204
  br label %267

217:                                              ; preds = %201
  %218 = load i64, ptr %78, align 8, !tbaa !9
  %219 = icmp ne i64 %218, 0
  br i1 %219, label %220, label %266

220:                                              ; preds = %217
  %221 = load ptr, ptr %35, align 8, !tbaa !5
  %222 = load i64, ptr %221, align 8, !tbaa !9
  %223 = icmp slt i64 %222, 1
  br i1 %223, label %237, label %224

224:                                              ; preds = %220
  %225 = load ptr, ptr %35, align 8, !tbaa !5
  %226 = load i64, ptr %225, align 8, !tbaa !9
  %227 = load ptr, ptr %27, align 8, !tbaa !5
  %228 = load i64, ptr %227, align 8, !tbaa !9
  %229 = icmp sge i64 1, %228
  br i1 %229, label %230, label %231

230:                                              ; preds = %224
  br label %234

231:                                              ; preds = %224
  %232 = load ptr, ptr %27, align 8, !tbaa !5
  %233 = load i64, ptr %232, align 8, !tbaa !9
  br label %234

234:                                              ; preds = %231, %230
  %235 = phi i64 [ 1, %230 ], [ %233, %231 ]
  %236 = icmp sgt i64 %226, %235
  br i1 %236, label %237, label %239

237:                                              ; preds = %234, %220
  %238 = load ptr, ptr %45, align 8, !tbaa !5
  store i64 -12, ptr %238, align 8, !tbaa !9
  br label %265

239:                                              ; preds = %234
  %240 = load ptr, ptr %36, align 8, !tbaa !5
  %241 = load i64, ptr %240, align 8, !tbaa !9
  %242 = load ptr, ptr %27, align 8, !tbaa !5
  %243 = load i64, ptr %242, align 8, !tbaa !9
  %244 = load ptr, ptr %35, align 8, !tbaa !5
  %245 = load i64, ptr %244, align 8, !tbaa !9
  %246 = icmp sle i64 %243, %245
  br i1 %246, label %247, label %250

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

250:                                              ; preds = %239
  %251 = load ptr, ptr %35, align 8, !tbaa !5
  %252 = load i64, ptr %251, align 8, !tbaa !9
  br label %253

253:                                              ; preds = %250, %247
  %254 = phi i64 [ %249, %247 ], [ %252, %250 ]
  %255 = icmp slt i64 %241, %254
  br i1 %255, label %262, label %256

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

262:                                              ; preds = %256, %253
  %263 = load ptr, ptr %45, align 8, !tbaa !5
  store i64 -13, ptr %263, align 8, !tbaa !9
  br label %264

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

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

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

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

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

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

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

271:                                              ; preds = %270, %166
  br label %272

272:                                              ; preds = %271, %160
  br label %273

273:                                              ; preds = %272, %151
  br label %274

274:                                              ; preds = %273, %140
  %275 = load ptr, ptr %45, align 8, !tbaa !5
  %276 = load i64, ptr %275, align 8, !tbaa !9
  %277 = icmp eq i64 %276, 0
  br i1 %277, label %278, label %294

278:                                              ; preds = %274
  %279 = load ptr, ptr %41, align 8, !tbaa !5
  %280 = load i64, ptr %279, align 8, !tbaa !9
  %281 = icmp slt i64 %280, 1
  br i1 %281, label %291, label %282

282:                                              ; preds = %278
  %283 = load i64, ptr %76, align 8, !tbaa !9
  %284 = icmp ne i64 %283, 0
  br i1 %284, label %285, label %293

285:                                              ; preds = %282
  %286 = load ptr, ptr %41, align 8, !tbaa !5
  %287 = load i64, ptr %286, align 8, !tbaa !9
  %288 = load ptr, ptr %27, align 8, !tbaa !5
  %289 = load i64, ptr %288, align 8, !tbaa !9
  %290 = icmp slt i64 %287, %289
  br i1 %290, label %291, label %293

291:                                              ; preds = %285, %278
  %292 = load ptr, ptr %45, align 8, !tbaa !5
  store i64 -18, ptr %292, align 8, !tbaa !9
  br label %293

293:                                              ; preds = %291, %285, %282
  br label %294

294:                                              ; preds = %293, %274
  %295 = load ptr, ptr %45, align 8, !tbaa !5
  %296 = load i64, ptr %295, align 8, !tbaa !9
  %297 = icmp ne i64 %296, 0
  br i1 %297, label %298, label %303

298:                                              ; preds = %294
  %299 = load ptr, ptr %45, align 8, !tbaa !5
  %300 = load i64, ptr %299, align 8, !tbaa !9
  %301 = sub nsw i64 0, %300
  store i64 %301, ptr %52, align 8, !tbaa !9
  %302 = call i32 @xerbla_(ptr noundef @.str.6, ptr noundef %52)
  store i32 0, ptr %23, align 4
  store i32 1, ptr %90, align 4
  br label %893

303:                                              ; preds = %294
  %304 = load ptr, ptr %38, align 8, !tbaa !5
  store i64 0, ptr %304, align 8, !tbaa !9
  %305 = load ptr, ptr %27, align 8, !tbaa !5
  %306 = load i64, ptr %305, align 8, !tbaa !9
  %307 = icmp eq i64 %306, 0
  br i1 %307, label %308, label %309

308:                                              ; preds = %303
  store i32 0, ptr %23, align 4
  store i32 1, ptr %90, align 4
  br label %893

309:                                              ; preds = %303
  %310 = load ptr, ptr %27, align 8, !tbaa !5
  %311 = load i64, ptr %310, align 8, !tbaa !9
  %312 = icmp eq i64 %311, 1
  br i1 %312, label %313, label %365

313:                                              ; preds = %309
  %314 = load ptr, ptr %38, align 8, !tbaa !5
  store i64 1, ptr %314, align 8, !tbaa !9
  %315 = load i64, ptr %75, align 8, !tbaa !9
  %316 = icmp ne i64 %315, 0
  br i1 %316, label %317, label %323

317:                                              ; preds = %313
  %318 = load ptr, ptr %29, align 8, !tbaa !5
  %319 = load i64, ptr %46, align 8, !tbaa !9
  %320 = add nsw i64 %319, 1
  %321 = getelementptr inbounds double, ptr %318, i64 %320
  %322 = load double, ptr %321, align 8, !tbaa !11
  store double %322, ptr %62, align 8, !tbaa !11
  br label %332

323:                                              ; preds = %313
  %324 = load ptr, ptr %29, align 8, !tbaa !5
  %325 = load ptr, ptr %28, align 8, !tbaa !5
  %326 = load i64, ptr %325, align 8, !tbaa !9
  %327 = add nsw i64 %326, 1
  %328 = load i64, ptr %46, align 8, !tbaa !9
  %329 = add nsw i64 %327, %328
  %330 = getelementptr inbounds double, ptr %324, i64 %329
  %331 = load double, ptr %330, align 8, !tbaa !11
  store double %331, ptr %62, align 8, !tbaa !11
  br label %332

332:                                              ; preds = %323, %317
  %333 = load i64, ptr %81, align 8, !tbaa !9
  %334 = icmp ne i64 %333, 0
  br i1 %334, label %335, label %348

335:                                              ; preds = %332
  %336 = load ptr, ptr %33, align 8, !tbaa !5
  %337 = load double, ptr %336, align 8, !tbaa !11
  %338 = load double, ptr %62, align 8, !tbaa !11
  %339 = fcmp olt double %337, %338
  br i1 %339, label %340, label %345

340:                                              ; preds = %335
  %341 = load ptr, ptr %34, align 8, !tbaa !5
  %342 = load double, ptr %341, align 8, !tbaa !11
  %343 = load double, ptr %62, align 8, !tbaa !11
  %344 = fcmp oge double %342, %343
  br i1 %344, label %347, label %345

345:                                              ; preds = %340, %335
  %346 = load ptr, ptr %38, align 8, !tbaa !5
  store i64 0, ptr %346, align 8, !tbaa !9
  br label %347

347:                                              ; preds = %345, %340
  br label %348

348:                                              ; preds = %347, %332
  %349 = load ptr, ptr %38, align 8, !tbaa !5
  %350 = load i64, ptr %349, align 8, !tbaa !9
  %351 = icmp eq i64 %350, 1
  br i1 %351, label %352, label %364

352:                                              ; preds = %348
  %353 = load double, ptr %62, align 8, !tbaa !11
  %354 = load ptr, ptr %39, align 8, !tbaa !5
  %355 = getelementptr inbounds double, ptr %354, i64 1
  store double %353, ptr %355, align 8, !tbaa !11
  %356 = load i64, ptr %76, align 8, !tbaa !9
  %357 = icmp ne i64 %356, 0
  br i1 %357, label %358, label %363

358:                                              ; preds = %352
  %359 = load ptr, ptr %40, align 8, !tbaa !5
  %360 = load i64, ptr %50, align 8, !tbaa !9
  %361 = add nsw i64 %360, 1
  %362 = getelementptr inbounds double, ptr %359, i64 %361
  store double 1.000000e+00, ptr %362, align 8, !tbaa !11
  br label %363

363:                                              ; preds = %358, %352
  br label %364

364:                                              ; preds = %363, %348
  store i32 0, ptr %23, align 4
  store i32 1, ptr %90, align 4
  br label %893

365:                                              ; preds = %309
  %366 = call double @dlamch_(ptr noundef @.str.7)
  store double %366, ptr %82, align 8, !tbaa !11
  %367 = call double @dlamch_(ptr noundef @.str.8)
  store double %367, ptr %59, align 8, !tbaa !11
  %368 = load double, ptr %82, align 8, !tbaa !11
  %369 = load double, ptr %59, align 8, !tbaa !11
  %370 = fdiv double %368, %369
  store double %370, ptr %89, align 8, !tbaa !11
  %371 = load double, ptr %89, align 8, !tbaa !11
  %372 = fdiv double 1.000000e+00, %371
  store double %372, ptr %84, align 8, !tbaa !11
  %373 = load double, ptr %89, align 8, !tbaa !11
  %374 = call double @sqrt(double noundef %373) #4
  store double %374, ptr %67, align 8, !tbaa !11
  %375 = load double, ptr %84, align 8, !tbaa !11
  %376 = call double @sqrt(double noundef %375) #4
  store double %376, ptr %54, align 8, !tbaa !11
  %377 = load double, ptr %82, align 8, !tbaa !11
  %378 = call double @sqrt(double noundef %377) #4
  %379 = call double @sqrt(double noundef %378) #4
  %380 = fdiv double 1.000000e+00, %379
  store double %380, ptr %55, align 8, !tbaa !11
  %381 = load double, ptr %54, align 8, !tbaa !11
  %382 = load double, ptr %55, align 8, !tbaa !11
  %383 = fcmp ole double %381, %382
  br i1 %383, label %384, label %386

384:                                              ; preds = %365
  %385 = load double, ptr %54, align 8, !tbaa !11
  br label %388

386:                                              ; preds = %365
  %387 = load double, ptr %55, align 8, !tbaa !11
  br label %388

388:                                              ; preds = %386, %384
  %389 = phi double [ %385, %384 ], [ %387, %386 ]
  store double %389, ptr %68, align 8, !tbaa !11
  store i64 0, ptr %79, align 8, !tbaa !9
  %390 = load ptr, ptr %37, align 8, !tbaa !5
  %391 = load double, ptr %390, align 8, !tbaa !11
  store double %391, ptr %83, align 8, !tbaa !11
  %392 = load i64, ptr %81, align 8, !tbaa !9
  %393 = icmp ne i64 %392, 0
  br i1 %393, label %394, label %399

394:                                              ; preds = %388
  %395 = load ptr, ptr %33, align 8, !tbaa !5
  %396 = load double, ptr %395, align 8, !tbaa !11
  store double %396, ptr %60, align 8, !tbaa !11
  %397 = load ptr, ptr %34, align 8, !tbaa !5
  %398 = load double, ptr %397, align 8, !tbaa !11
  store double %398, ptr %61, align 8, !tbaa !11
  br label %400

399:                                              ; preds = %388
  store double 0.000000e+00, ptr %60, align 8, !tbaa !11
  store double 0.000000e+00, ptr %61, align 8, !tbaa !11
  br label %400

400:                                              ; preds = %399, %394
  %401 = load ptr, ptr %26, align 8, !tbaa !5
  %402 = load ptr, ptr %27, align 8, !tbaa !5
  %403 = load ptr, ptr %28, align 8, !tbaa !5
  %404 = load ptr, ptr %29, align 8, !tbaa !5
  %405 = load i64, ptr %47, align 8, !tbaa !9
  %406 = getelementptr inbounds double, ptr %404, i64 %405
  %407 = load ptr, ptr %30, align 8, !tbaa !5
  %408 = load ptr, ptr %42, align 8, !tbaa !5
  %409 = getelementptr inbounds double, ptr %408, i64 1
  %410 = call double @dlansb_(ptr noundef @.str.9, ptr noundef %401, ptr noundef %402, ptr noundef %403, ptr noundef %406, ptr noundef %407, ptr noundef %409)
  store double %410, ptr %65, align 8, !tbaa !11
  %411 = load double, ptr %65, align 8, !tbaa !11
  %412 = fcmp ogt double %411, 0.000000e+00
  br i1 %412, label %413, label %421

413:                                              ; preds = %400
  %414 = load double, ptr %65, align 8, !tbaa !11
  %415 = load double, ptr %67, align 8, !tbaa !11
  %416 = fcmp olt double %414, %415
  br i1 %416, label %417, label %421

417:                                              ; preds = %413
  store i64 1, ptr %79, align 8, !tbaa !9
  %418 = load double, ptr %67, align 8, !tbaa !11
  %419 = load double, ptr %65, align 8, !tbaa !11
  %420 = fdiv double %418, %419
  store double %420, ptr %72, align 8, !tbaa !11
  br label %430

421:                                              ; preds = %413, %400
  %422 = load double, ptr %65, align 8, !tbaa !11
  %423 = load double, ptr %68, align 8, !tbaa !11
  %424 = fcmp ogt double %422, %423
  br i1 %424, label %425, label %429

425:                                              ; preds = %421
  store i64 1, ptr %79, align 8, !tbaa !9
  %426 = load double, ptr %68, align 8, !tbaa !11
  %427 = load double, ptr %65, align 8, !tbaa !11
  %428 = fdiv double %426, %427
  store double %428, ptr %72, align 8, !tbaa !11
  br label %429

429:                                              ; preds = %425, %421
  br label %430

430:                                              ; preds = %429, %417
  %431 = load i64, ptr %79, align 8, !tbaa !9
  %432 = icmp eq i64 %431, 1
  br i1 %432, label %433, label %480

433:                                              ; preds = %430
  %434 = load i64, ptr %75, align 8, !tbaa !9
  %435 = icmp ne i64 %434, 0
  br i1 %435, label %436, label %447

436:                                              ; preds = %433
  %437 = load ptr, ptr %28, align 8, !tbaa !5
  %438 = load ptr, ptr %28, align 8, !tbaa !5
  %439 = load ptr, ptr %27, align 8, !tbaa !5
  %440 = load ptr, ptr %27, align 8, !tbaa !5
  %441 = load ptr, ptr %29, align 8, !tbaa !5
  %442 = load i64, ptr %47, align 8, !tbaa !9
  %443 = getelementptr inbounds double, ptr %441, i64 %442
  %444 = load ptr, ptr %30, align 8, !tbaa !5
  %445 = load ptr, ptr %45, align 8, !tbaa !5
  %446 = call i32 @dlascl_(ptr noundef @.str.10, ptr noundef %437, ptr noundef %438, ptr noundef @c_b14, ptr noundef %72, ptr noundef %439, ptr noundef %440, ptr noundef %443, ptr noundef %444, ptr noundef %445)
  br label %458

447:                                              ; preds = %433
  %448 = load ptr, ptr %28, align 8, !tbaa !5
  %449 = load ptr, ptr %28, align 8, !tbaa !5
  %450 = load ptr, ptr %27, align 8, !tbaa !5
  %451 = load ptr, ptr %27, align 8, !tbaa !5
  %452 = load ptr, ptr %29, align 8, !tbaa !5
  %453 = load i64, ptr %47, align 8, !tbaa !9
  %454 = getelementptr inbounds double, ptr %452, i64 %453
  %455 = load ptr, ptr %30, align 8, !tbaa !5
  %456 = load ptr, ptr %45, align 8, !tbaa !5
  %457 = call i32 @dlascl_(ptr noundef @.str.11, ptr noundef %448, ptr noundef %449, ptr noundef @c_b14, ptr noundef %72, ptr noundef %450, ptr noundef %451, ptr noundef %454, ptr noundef %455, ptr noundef %456)
  br label %458

458:                                              ; preds = %447, %436
  %459 = load ptr, ptr %37, align 8, !tbaa !5
  %460 = load double, ptr %459, align 8, !tbaa !11
  %461 = fcmp ogt double %460, 0.000000e+00
  br i1 %461, label %462, label %467

462:                                              ; preds = %458
  %463 = load ptr, ptr %37, align 8, !tbaa !5
  %464 = load double, ptr %463, align 8, !tbaa !11
  %465 = load double, ptr %72, align 8, !tbaa !11
  %466 = fmul double %464, %465
  store double %466, ptr %83, align 8, !tbaa !11
  br label %467

467:                                              ; preds = %462, %458
  %468 = load i64, ptr %81, align 8, !tbaa !9
  %469 = icmp ne i64 %468, 0
  br i1 %469, label %470, label %479

470:                                              ; preds = %467
  %471 = load ptr, ptr %33, align 8, !tbaa !5
  %472 = load double, ptr %471, align 8, !tbaa !11
  %473 = load double, ptr %72, align 8, !tbaa !11
  %474 = fmul double %472, %473
  store double %474, ptr %60, align 8, !tbaa !11
  %475 = load ptr, ptr %34, align 8, !tbaa !5
  %476 = load double, ptr %475, align 8, !tbaa !11
  %477 = load double, ptr %72, align 8, !tbaa !11
  %478 = fmul double %476, %477
  store double %478, ptr %61, align 8, !tbaa !11
  br label %479

479:                                              ; preds = %470, %467
  br label %480

480:                                              ; preds = %479, %430
  store i64 1, ptr %63, align 8, !tbaa !9
  %481 = load i64, ptr %63, align 8, !tbaa !9
  %482 = load ptr, ptr %27, align 8, !tbaa !5
  %483 = load i64, ptr %482, align 8, !tbaa !9
  %484 = add nsw i64 %481, %483
  store i64 %484, ptr %64, align 8, !tbaa !9
  %485 = load i64, ptr %64, align 8, !tbaa !9
  %486 = load ptr, ptr %27, align 8, !tbaa !5
  %487 = load i64, ptr %486, align 8, !tbaa !9
  %488 = add nsw i64 %485, %487
  store i64 %488, ptr %87, align 8, !tbaa !9
  %489 = load ptr, ptr %24, align 8, !tbaa !5
  %490 = load ptr, ptr %26, align 8, !tbaa !5
  %491 = load ptr, ptr %27, align 8, !tbaa !5
  %492 = load ptr, ptr %28, align 8, !tbaa !5
  %493 = load ptr, ptr %29, align 8, !tbaa !5
  %494 = load i64, ptr %47, align 8, !tbaa !9
  %495 = getelementptr inbounds double, ptr %493, i64 %494
  %496 = load ptr, ptr %30, align 8, !tbaa !5
  %497 = load ptr, ptr %42, align 8, !tbaa !5
  %498 = load i64, ptr %63, align 8, !tbaa !9
  %499 = getelementptr inbounds double, ptr %497, i64 %498
  %500 = load ptr, ptr %42, align 8, !tbaa !5
  %501 = load i64, ptr %64, align 8, !tbaa !9
  %502 = getelementptr inbounds double, ptr %500, i64 %501
  %503 = load ptr, ptr %31, align 8, !tbaa !5
  %504 = load i64, ptr %49, align 8, !tbaa !9
  %505 = getelementptr inbounds double, ptr %503, i64 %504
  %506 = load ptr, ptr %32, align 8, !tbaa !5
  %507 = load ptr, ptr %42, align 8, !tbaa !5
  %508 = load i64, ptr %87, align 8, !tbaa !9
  %509 = getelementptr inbounds double, ptr %507, i64 %508
  %510 = call i32 @dsbtrd_(ptr noundef %489, ptr noundef %490, ptr noundef %491, ptr noundef %492, ptr noundef %495, ptr noundef %496, ptr noundef %499, ptr noundef %502, ptr noundef %505, ptr noundef %506, ptr noundef %509, ptr noundef %73)
  store i64 0, ptr %69, align 8, !tbaa !9
  %511 = load i64, ptr %78, align 8, !tbaa !9
  %512 = icmp ne i64 %511, 0
  br i1 %512, label %513, label %525

513:                                              ; preds = %480
  %514 = load ptr, ptr %35, align 8, !tbaa !5
  %515 = load i64, ptr %514, align 8, !tbaa !9
  %516 = icmp eq i64 %515, 1
  br i1 %516, label %517, label %524

517:                                              ; preds = %513
  %518 = load ptr, ptr %36, align 8, !tbaa !5
  %519 = load i64, ptr %518, align 8, !tbaa !9
  %520 = load ptr, ptr %27, align 8, !tbaa !5
  %521 = load i64, ptr %520, align 8, !tbaa !9
  %522 = icmp eq i64 %519, %521
  br i1 %522, label %523, label %524

523:                                              ; preds = %517
  store i64 1, ptr %69, align 8, !tbaa !9
  br label %524

524:                                              ; preds = %523, %517, %513
  br label %525

525:                                              ; preds = %524, %480
  %526 = load i64, ptr %77, align 8, !tbaa !9
  %527 = icmp ne i64 %526, 0
  br i1 %527, label %531, label %528

528:                                              ; preds = %525
  %529 = load i64, ptr %69, align 8, !tbaa !9
  %530 = icmp ne i64 %529, 0
  br i1 %530, label %531, label %636

531:                                              ; preds = %528, %525
  %532 = load ptr, ptr %37, align 8, !tbaa !5
  %533 = load double, ptr %532, align 8, !tbaa !11
  %534 = fcmp ole double %533, 0.000000e+00
  br i1 %534, label %535, label %636

535:                                              ; preds = %531
  %536 = load ptr, ptr %27, align 8, !tbaa !5
  %537 = load ptr, ptr %42, align 8, !tbaa !5
  %538 = load i64, ptr %63, align 8, !tbaa !9
  %539 = getelementptr inbounds double, ptr %537, i64 %538
  %540 = load ptr, ptr %39, align 8, !tbaa !5
  %541 = getelementptr inbounds double, ptr %540, i64 1
  %542 = call i32 @f2c_dcopy(ptr noundef %536, ptr noundef %539, ptr noundef @c__1, ptr noundef %541, ptr noundef @c__1)
  %543 = load i64, ptr %87, align 8, !tbaa !9
  %544 = load ptr, ptr %27, align 8, !tbaa !5
  %545 = load i64, ptr %544, align 8, !tbaa !9
  %546 = shl i64 %545, 1
  %547 = add nsw i64 %543, %546
  store i64 %547, ptr %71, align 8, !tbaa !9
  %548 = load i64, ptr %76, align 8, !tbaa !9
  %549 = icmp ne i64 %548, 0
  br i1 %549, label %569, label %550

550:                                              ; preds = %535
  %551 = load ptr, ptr %27, align 8, !tbaa !5
  %552 = load i64, ptr %551, align 8, !tbaa !9
  %553 = sub nsw i64 %552, 1
  store i64 %553, ptr %52, align 8, !tbaa !9
  %554 = load ptr, ptr %42, align 8, !tbaa !5
  %555 = load i64, ptr %64, align 8, !tbaa !9
  %556 = getelementptr inbounds double, ptr %554, i64 %555
  %557 = load ptr, ptr %42, align 8, !tbaa !5
  %558 = load i64, ptr %71, align 8, !tbaa !9
  %559 = getelementptr inbounds double, ptr %557, i64 %558
  %560 = call i32 @f2c_dcopy(ptr noundef %52, ptr noundef %556, ptr noundef @c__1, ptr noundef %559, ptr noundef @c__1)
  %561 = load ptr, ptr %27, align 8, !tbaa !5
  %562 = load ptr, ptr %39, align 8, !tbaa !5
  %563 = getelementptr inbounds double, ptr %562, i64 1
  %564 = load ptr, ptr %42, align 8, !tbaa !5
  %565 = load i64, ptr %71, align 8, !tbaa !9
  %566 = getelementptr inbounds double, ptr %564, i64 %565
  %567 = load ptr, ptr %45, align 8, !tbaa !5
  %568 = call i32 @dsterf_(ptr noundef %561, ptr noundef %563, ptr noundef %566, ptr noundef %567)
  br label %626

569:                                              ; preds = %535
  %570 = load ptr, ptr %27, align 8, !tbaa !5
  %571 = load ptr, ptr %27, align 8, !tbaa !5
  %572 = load ptr, ptr %31, align 8, !tbaa !5
  %573 = load i64, ptr %49, align 8, !tbaa !9
  %574 = getelementptr inbounds double, ptr %572, i64 %573
  %575 = load ptr, ptr %32, align 8, !tbaa !5
  %576 = load ptr, ptr %40, align 8, !tbaa !5
  %577 = load i64, ptr %51, align 8, !tbaa !9
  %578 = getelementptr inbounds double, ptr %576, i64 %577
  %579 = load ptr, ptr %41, align 8, !tbaa !5
  %580 = call i32 @dlacpy_(ptr noundef @.str.1, ptr noundef %570, ptr noundef %571, ptr noundef %574, ptr noundef %575, ptr noundef %578, ptr noundef %579)
  %581 = load ptr, ptr %27, align 8, !tbaa !5
  %582 = load i64, ptr %581, align 8, !tbaa !9
  %583 = sub nsw i64 %582, 1
  store i64 %583, ptr %52, align 8, !tbaa !9
  %584 = load ptr, ptr %42, align 8, !tbaa !5
  %585 = load i64, ptr %64, align 8, !tbaa !9
  %586 = getelementptr inbounds double, ptr %584, i64 %585
  %587 = load ptr, ptr %42, align 8, !tbaa !5
  %588 = load i64, ptr %71, align 8, !tbaa !9
  %589 = getelementptr inbounds double, ptr %587, i64 %588
  %590 = call i32 @f2c_dcopy(ptr noundef %52, ptr noundef %586, ptr noundef @c__1, ptr noundef %589, ptr noundef @c__1)
  %591 = load ptr, ptr %24, align 8, !tbaa !5
  %592 = load ptr, ptr %27, align 8, !tbaa !5
  %593 = load ptr, ptr %39, align 8, !tbaa !5
  %594 = getelementptr inbounds double, ptr %593, i64 1
  %595 = load ptr, ptr %42, align 8, !tbaa !5
  %596 = load i64, ptr %71, align 8, !tbaa !9
  %597 = getelementptr inbounds double, ptr %595, i64 %596
  %598 = load ptr, ptr %40, align 8, !tbaa !5
  %599 = load i64, ptr %51, align 8, !tbaa !9
  %600 = getelementptr inbounds double, ptr %598, i64 %599
  %601 = load ptr, ptr %41, align 8, !tbaa !5
  %602 = load ptr, ptr %42, align 8, !tbaa !5
  %603 = load i64, ptr %87, align 8, !tbaa !9
  %604 = getelementptr inbounds double, ptr %602, i64 %603
  %605 = load ptr, ptr %45, align 8, !tbaa !5
  %606 = call i32 @dsteqr_(ptr noundef %591, ptr noundef %592, ptr noundef %594, ptr noundef %597, ptr noundef %600, ptr noundef %601, ptr noundef %604, ptr noundef %605)
  %607 = load ptr, ptr %45, align 8, !tbaa !5
  %608 = load i64, ptr %607, align 8, !tbaa !9
  %609 = icmp eq i64 %608, 0
  br i1 %609, label %610, label %625

610:                                              ; preds = %569
  %611 = load ptr, ptr %27, align 8, !tbaa !5
  %612 = load i64, ptr %611, align 8, !tbaa !9
  store i64 %612, ptr %52, align 8, !tbaa !9
  store i64 1, ptr %56, align 8, !tbaa !9
  br label %613

613:                                              ; preds = %621, %610
  %614 = load i64, ptr %56, align 8, !tbaa !9
  %615 = load i64, ptr %52, align 8, !tbaa !9
  %616 = icmp sle i64 %614, %615
  br i1 %616, label %617, label %624

617:                                              ; preds = %613
  %618 = load ptr, ptr %44, align 8, !tbaa !5
  %619 = load i64, ptr %56, align 8, !tbaa !9
  %620 = getelementptr inbounds i64, ptr %618, i64 %619
  store i64 0, ptr %620, align 8, !tbaa !9
  br label %621

621:                                              ; preds = %617
  %622 = load i64, ptr %56, align 8, !tbaa !9
  %623 = add nsw i64 %622, 1
  store i64 %623, ptr %56, align 8, !tbaa !9
  br label %613, !llvm.loop !13

624:                                              ; preds = %613
  br label %625

625:                                              ; preds = %624, %569
  br label %626

626:                                              ; preds = %625, %550
  %627 = load ptr, ptr %45, align 8, !tbaa !5
  %628 = load i64, ptr %627, align 8, !tbaa !9
  %629 = icmp eq i64 %628, 0
  br i1 %629, label %630, label %634

630:                                              ; preds = %626
  %631 = load ptr, ptr %27, align 8, !tbaa !5
  %632 = load i64, ptr %631, align 8, !tbaa !9
  %633 = load ptr, ptr %38, align 8, !tbaa !5
  store i64 %632, ptr %633, align 8, !tbaa !9
  br label %750

634:                                              ; preds = %626
  %635 = load ptr, ptr %45, align 8, !tbaa !5
  store i64 0, ptr %635, align 8, !tbaa !9
  br label %636

636:                                              ; preds = %634, %531, %528
  %637 = load i64, ptr %76, align 8, !tbaa !9
  %638 = icmp ne i64 %637, 0
  br i1 %638, label %639, label %641

639:                                              ; preds = %636
  %640 = getelementptr inbounds [1 x i8], ptr %74, i64 0, i64 0
  store i8 66, ptr %640, align 1, !tbaa !15
  br label %643

641:                                              ; preds = %636
  %642 = getelementptr inbounds [1 x i8], ptr %74, i64 0, i64 0
  store i8 69, ptr %642, align 1, !tbaa !15
  br label %643

643:                                              ; preds = %641, %639
  store i64 1, ptr %80, align 8, !tbaa !9
  %644 = load i64, ptr %80, align 8, !tbaa !9
  %645 = load ptr, ptr %27, align 8, !tbaa !5
  %646 = load i64, ptr %645, align 8, !tbaa !9
  %647 = add nsw i64 %644, %646
  store i64 %647, ptr %85, align 8, !tbaa !9
  %648 = load i64, ptr %85, align 8, !tbaa !9
  %649 = load ptr, ptr %27, align 8, !tbaa !5
  %650 = load i64, ptr %649, align 8, !tbaa !9
  %651 = add nsw i64 %648, %650
  store i64 %651, ptr %86, align 8, !tbaa !9
  %652 = load ptr, ptr %25, align 8, !tbaa !5
  %653 = getelementptr inbounds [1 x i8], ptr %74, i64 0, i64 0
  %654 = load ptr, ptr %27, align 8, !tbaa !5
  %655 = load ptr, ptr %35, align 8, !tbaa !5
  %656 = load ptr, ptr %36, align 8, !tbaa !5
  %657 = load ptr, ptr %42, align 8, !tbaa !5
  %658 = load i64, ptr %63, align 8, !tbaa !9
  %659 = getelementptr inbounds double, ptr %657, i64 %658
  %660 = load ptr, ptr %42, align 8, !tbaa !5
  %661 = load i64, ptr %64, align 8, !tbaa !9
  %662 = getelementptr inbounds double, ptr %660, i64 %661
  %663 = load ptr, ptr %38, align 8, !tbaa !5
  %664 = load ptr, ptr %39, align 8, !tbaa !5
  %665 = getelementptr inbounds double, ptr %664, i64 1
  %666 = load ptr, ptr %43, align 8, !tbaa !5
  %667 = load i64, ptr %80, align 8, !tbaa !9
  %668 = getelementptr inbounds i64, ptr %666, i64 %667
  %669 = load ptr, ptr %43, align 8, !tbaa !5
  %670 = load i64, ptr %85, align 8, !tbaa !9
  %671 = getelementptr inbounds i64, ptr %669, i64 %670
  %672 = load ptr, ptr %42, align 8, !tbaa !5
  %673 = load i64, ptr %87, align 8, !tbaa !9
  %674 = getelementptr inbounds double, ptr %672, i64 %673
  %675 = load ptr, ptr %43, align 8, !tbaa !5
  %676 = load i64, ptr %86, align 8, !tbaa !9
  %677 = getelementptr inbounds i64, ptr %675, i64 %676
  %678 = load ptr, ptr %45, align 8, !tbaa !5
  %679 = call i32 @dstebz_(ptr noundef %652, ptr noundef %653, ptr noundef %654, ptr noundef %60, ptr noundef %61, ptr noundef %655, ptr noundef %656, ptr noundef %83, ptr noundef %659, ptr noundef %662, ptr noundef %663, ptr noundef %88, ptr noundef %665, ptr noundef %668, ptr noundef %671, ptr noundef %674, ptr noundef %677, ptr noundef %678)
  %680 = load i64, ptr %76, align 8, !tbaa !9
  %681 = icmp ne i64 %680, 0
  br i1 %681, label %682, label %749

682:                                              ; preds = %643
  %683 = load ptr, ptr %27, align 8, !tbaa !5
  %684 = load ptr, ptr %42, align 8, !tbaa !5
  %685 = load i64, ptr %63, align 8, !tbaa !9
  %686 = getelementptr inbounds double, ptr %684, i64 %685
  %687 = load ptr, ptr %42, align 8, !tbaa !5
  %688 = load i64, ptr %64, align 8, !tbaa !9
  %689 = getelementptr inbounds double, ptr %687, i64 %688
  %690 = load ptr, ptr %38, align 8, !tbaa !5
  %691 = load ptr, ptr %39, align 8, !tbaa !5
  %692 = getelementptr inbounds double, ptr %691, i64 1
  %693 = load ptr, ptr %43, align 8, !tbaa !5
  %694 = load i64, ptr %80, align 8, !tbaa !9
  %695 = getelementptr inbounds i64, ptr %693, i64 %694
  %696 = load ptr, ptr %43, align 8, !tbaa !5
  %697 = load i64, ptr %85, align 8, !tbaa !9
  %698 = getelementptr inbounds i64, ptr %696, i64 %697
  %699 = load ptr, ptr %40, align 8, !tbaa !5
  %700 = load i64, ptr %51, align 8, !tbaa !9
  %701 = getelementptr inbounds double, ptr %699, i64 %700
  %702 = load ptr, ptr %41, align 8, !tbaa !5
  %703 = load ptr, ptr %42, align 8, !tbaa !5
  %704 = load i64, ptr %87, align 8, !tbaa !9
  %705 = getelementptr inbounds double, ptr %703, i64 %704
  %706 = load ptr, ptr %43, align 8, !tbaa !5
  %707 = load i64, ptr %86, align 8, !tbaa !9
  %708 = getelementptr inbounds i64, ptr %706, i64 %707
  %709 = load ptr, ptr %44, align 8, !tbaa !5
  %710 = getelementptr inbounds i64, ptr %709, i64 1
  %711 = load ptr, ptr %45, align 8, !tbaa !5
  %712 = call i32 @dstein_(ptr noundef %683, ptr noundef %686, ptr noundef %689, ptr noundef %690, ptr noundef %692, ptr noundef %695, ptr noundef %698, ptr noundef %701, ptr noundef %702, ptr noundef %705, ptr noundef %708, ptr noundef %710, ptr noundef %711)
  %713 = load ptr, ptr %38, align 8, !tbaa !5
  %714 = load i64, ptr %713, align 8, !tbaa !9
  store i64 %714, ptr %52, align 8, !tbaa !9
  store i64 1, ptr %57, align 8, !tbaa !9
  br label %715

715:                                              ; preds = %745, %682
  %716 = load i64, ptr %57, align 8, !tbaa !9
  %717 = load i64, ptr %52, align 8, !tbaa !9
  %718 = icmp sle i64 %716, %717
  br i1 %718, label %719, label %748

719:                                              ; preds = %715
  %720 = load ptr, ptr %27, align 8, !tbaa !5
  %721 = load ptr, ptr %40, align 8, !tbaa !5
  %722 = load i64, ptr %57, align 8, !tbaa !9
  %723 = load i64, ptr %50, align 8, !tbaa !9
  %724 = mul nsw i64 %722, %723
  %725 = add nsw i64 %724, 1
  %726 = getelementptr inbounds double, ptr %721, i64 %725
  %727 = load ptr, ptr %42, align 8, !tbaa !5
  %728 = getelementptr inbounds double, ptr %727, i64 1
  %729 = call i32 @f2c_dcopy(ptr noundef %720, ptr noundef %726, ptr noundef @c__1, ptr noundef %728, ptr noundef @c__1)
  %730 = load ptr, ptr %27, align 8, !tbaa !5
  %731 = load ptr, ptr %27, align 8, !tbaa !5
  %732 = load ptr, ptr %31, align 8, !tbaa !5
  %733 = load i64, ptr %49, align 8, !tbaa !9
  %734 = getelementptr inbounds double, ptr %732, i64 %733
  %735 = load ptr, ptr %32, align 8, !tbaa !5
  %736 = load ptr, ptr %42, align 8, !tbaa !5
  %737 = getelementptr inbounds double, ptr %736, i64 1
  %738 = load ptr, ptr %40, align 8, !tbaa !5
  %739 = load i64, ptr %57, align 8, !tbaa !9
  %740 = load i64, ptr %50, align 8, !tbaa !9
  %741 = mul nsw i64 %739, %740
  %742 = add nsw i64 %741, 1
  %743 = getelementptr inbounds double, ptr %738, i64 %742
  %744 = call i32 @f2c_dgemv(ptr noundef @.str.4, ptr noundef %730, ptr noundef %731, ptr noundef @c_b14, ptr noundef %734, ptr noundef %735, ptr noundef %737, ptr noundef @c__1, ptr noundef @c_b34, ptr noundef %743, ptr noundef @c__1)
  br label %745

745:                                              ; preds = %719
  %746 = load i64, ptr %57, align 8, !tbaa !9
  %747 = add nsw i64 %746, 1
  store i64 %747, ptr %57, align 8, !tbaa !9
  br label %715, !llvm.loop !16

748:                                              ; preds = %715
  br label %749

749:                                              ; preds = %748, %643
  br label %750

750:                                              ; preds = %749, %630
  %751 = load i64, ptr %79, align 8, !tbaa !9
  %752 = icmp eq i64 %751, 1
  br i1 %752, label %753, label %770

753:                                              ; preds = %750
  %754 = load ptr, ptr %45, align 8, !tbaa !5
  %755 = load i64, ptr %754, align 8, !tbaa !9
  %756 = icmp eq i64 %755, 0
  br i1 %756, label %757, label %760

757:                                              ; preds = %753
  %758 = load ptr, ptr %38, align 8, !tbaa !5
  %759 = load i64, ptr %758, align 8, !tbaa !9
  store i64 %759, ptr %66, align 8, !tbaa !9
  br label %764

760:                                              ; preds = %753
  %761 = load ptr, ptr %45, align 8, !tbaa !5
  %762 = load i64, ptr %761, align 8, !tbaa !9
  %763 = sub nsw i64 %762, 1
  store i64 %763, ptr %66, align 8, !tbaa !9
  br label %764

764:                                              ; preds = %760, %757
  %765 = load double, ptr %72, align 8, !tbaa !11
  %766 = fdiv double 1.000000e+00, %765
  store double %766, ptr %54, align 8, !tbaa !11
  %767 = load ptr, ptr %39, align 8, !tbaa !5
  %768 = getelementptr inbounds double, ptr %767, i64 1
  %769 = call i32 @f2c_dscal(ptr noundef %66, ptr noundef %54, ptr noundef %768, ptr noundef @c__1)
  br label %770

770:                                              ; preds = %764, %750
  %771 = load i64, ptr %76, align 8, !tbaa !9
  %772 = icmp ne i64 %771, 0
  br i1 %772, label %773, label %892

773:                                              ; preds = %770
  %774 = load ptr, ptr %38, align 8, !tbaa !5
  %775 = load i64, ptr %774, align 8, !tbaa !9
  %776 = sub nsw i64 %775, 1
  store i64 %776, ptr %52, align 8, !tbaa !9
  store i64 1, ptr %57, align 8, !tbaa !9
  br label %777

777:                                              ; preds = %888, %773
  %778 = load i64, ptr %57, align 8, !tbaa !9
  %779 = load i64, ptr %52, align 8, !tbaa !9
  %780 = icmp sle i64 %778, %779
  br i1 %780, label %781, label %891

781:                                              ; preds = %777
  store i64 0, ptr %56, align 8, !tbaa !9
  %782 = load ptr, ptr %39, align 8, !tbaa !5
  %783 = load i64, ptr %57, align 8, !tbaa !9
  %784 = getelementptr inbounds double, ptr %782, i64 %783
  %785 = load double, ptr %784, align 8, !tbaa !11
  store double %785, ptr %62, align 8, !tbaa !11
  %786 = load ptr, ptr %38, align 8, !tbaa !5
  %787 = load i64, ptr %786, align 8, !tbaa !9
  store i64 %787, ptr %53, align 8, !tbaa !9
  %788 = load i64, ptr %57, align 8, !tbaa !9
  %789 = add nsw i64 %788, 1
  store i64 %789, ptr %58, align 8, !tbaa !9
  br label %790

790:                                              ; preds = %808, %781
  %791 = load i64, ptr %58, align 8, !tbaa !9
  %792 = load i64, ptr %53, align 8, !tbaa !9
  %793 = icmp sle i64 %791, %792
  br i1 %793, label %794, label %811

794:                                              ; preds = %790
  %795 = load ptr, ptr %39, align 8, !tbaa !5
  %796 = load i64, ptr %58, align 8, !tbaa !9
  %797 = getelementptr inbounds double, ptr %795, i64 %796
  %798 = load double, ptr %797, align 8, !tbaa !11
  %799 = load double, ptr %62, align 8, !tbaa !11
  %800 = fcmp olt double %798, %799
  br i1 %800, label %801, label %807

801:                                              ; preds = %794
  %802 = load i64, ptr %58, align 8, !tbaa !9
  store i64 %802, ptr %56, align 8, !tbaa !9
  %803 = load ptr, ptr %39, align 8, !tbaa !5
  %804 = load i64, ptr %58, align 8, !tbaa !9
  %805 = getelementptr inbounds double, ptr %803, i64 %804
  %806 = load double, ptr %805, align 8, !tbaa !11
  store double %806, ptr %62, align 8, !tbaa !11
  br label %807

807:                                              ; preds = %801, %794
  br label %808

808:                                              ; preds = %807
  %809 = load i64, ptr %58, align 8, !tbaa !9
  %810 = add nsw i64 %809, 1
  store i64 %810, ptr %58, align 8, !tbaa !9
  br label %790, !llvm.loop !17

811:                                              ; preds = %790
  %812 = load i64, ptr %56, align 8, !tbaa !9
  %813 = icmp ne i64 %812, 0
  br i1 %813, label %814, label %887

814:                                              ; preds = %811
  %815 = load ptr, ptr %43, align 8, !tbaa !5
  %816 = load i64, ptr %80, align 8, !tbaa !9
  %817 = load i64, ptr %56, align 8, !tbaa !9
  %818 = add nsw i64 %816, %817
  %819 = sub nsw i64 %818, 1
  %820 = getelementptr inbounds i64, ptr %815, i64 %819
  %821 = load i64, ptr %820, align 8, !tbaa !9
  store i64 %821, ptr %70, align 8, !tbaa !9
  %822 = load ptr, ptr %39, align 8, !tbaa !5
  %823 = load i64, ptr %57, align 8, !tbaa !9
  %824 = getelementptr inbounds double, ptr %822, i64 %823
  %825 = load double, ptr %824, align 8, !tbaa !11
  %826 = load ptr, ptr %39, align 8, !tbaa !5
  %827 = load i64, ptr %56, align 8, !tbaa !9
  %828 = getelementptr inbounds double, ptr %826, i64 %827
  store double %825, ptr %828, align 8, !tbaa !11
  %829 = load ptr, ptr %43, align 8, !tbaa !5
  %830 = load i64, ptr %80, align 8, !tbaa !9
  %831 = load i64, ptr %57, align 8, !tbaa !9
  %832 = add nsw i64 %830, %831
  %833 = sub nsw i64 %832, 1
  %834 = getelementptr inbounds i64, ptr %829, i64 %833
  %835 = load i64, ptr %834, align 8, !tbaa !9
  %836 = load ptr, ptr %43, align 8, !tbaa !5
  %837 = load i64, ptr %80, align 8, !tbaa !9
  %838 = load i64, ptr %56, align 8, !tbaa !9
  %839 = add nsw i64 %837, %838
  %840 = sub nsw i64 %839, 1
  %841 = getelementptr inbounds i64, ptr %836, i64 %840
  store i64 %835, ptr %841, align 8, !tbaa !9
  %842 = load double, ptr %62, align 8, !tbaa !11
  %843 = load ptr, ptr %39, align 8, !tbaa !5
  %844 = load i64, ptr %57, align 8, !tbaa !9
  %845 = getelementptr inbounds double, ptr %843, i64 %844
  store double %842, ptr %845, align 8, !tbaa !11
  %846 = load i64, ptr %70, align 8, !tbaa !9
  %847 = load ptr, ptr %43, align 8, !tbaa !5
  %848 = load i64, ptr %80, align 8, !tbaa !9
  %849 = load i64, ptr %57, align 8, !tbaa !9
  %850 = add nsw i64 %848, %849
  %851 = sub nsw i64 %850, 1
  %852 = getelementptr inbounds i64, ptr %847, i64 %851
  store i64 %846, ptr %852, align 8, !tbaa !9
  %853 = load ptr, ptr %27, align 8, !tbaa !5
  %854 = load ptr, ptr %40, align 8, !tbaa !5
  %855 = load i64, ptr %56, align 8, !tbaa !9
  %856 = load i64, ptr %50, align 8, !tbaa !9
  %857 = mul nsw i64 %855, %856
  %858 = add nsw i64 %857, 1
  %859 = getelementptr inbounds double, ptr %854, i64 %858
  %860 = load ptr, ptr %40, align 8, !tbaa !5
  %861 = load i64, ptr %57, align 8, !tbaa !9
  %862 = load i64, ptr %50, align 8, !tbaa !9
  %863 = mul nsw i64 %861, %862
  %864 = add nsw i64 %863, 1
  %865 = getelementptr inbounds double, ptr %860, i64 %864
  %866 = call i32 @f2c_dswap(ptr noundef %853, ptr noundef %859, ptr noundef @c__1, ptr noundef %865, ptr noundef @c__1)
  %867 = load ptr, ptr %45, align 8, !tbaa !5
  %868 = load i64, ptr %867, align 8, !tbaa !9
  %869 = icmp ne i64 %868, 0
  br i1 %869, label %870, label %886

870:                                              ; preds = %814
  %871 = load ptr, ptr %44, align 8, !tbaa !5
  %872 = load i64, ptr %56, align 8, !tbaa !9
  %873 = getelementptr inbounds i64, ptr %871, i64 %872
  %874 = load i64, ptr %873, align 8, !tbaa !9
  store i64 %874, ptr %70, align 8, !tbaa !9
  %875 = load ptr, ptr %44, align 8, !tbaa !5
  %876 = load i64, ptr %57, align 8, !tbaa !9
  %877 = getelementptr inbounds i64, ptr %875, i64 %876
  %878 = load i64, ptr %877, align 8, !tbaa !9
  %879 = load ptr, ptr %44, align 8, !tbaa !5
  %880 = load i64, ptr %56, align 8, !tbaa !9
  %881 = getelementptr inbounds i64, ptr %879, i64 %880
  store i64 %878, ptr %881, align 8, !tbaa !9
  %882 = load i64, ptr %70, align 8, !tbaa !9
  %883 = load ptr, ptr %44, align 8, !tbaa !5
  %884 = load i64, ptr %57, align 8, !tbaa !9
  %885 = getelementptr inbounds i64, ptr %883, i64 %884
  store i64 %882, ptr %885, align 8, !tbaa !9
  br label %886

886:                                              ; preds = %870, %814
  br label %887

887:                                              ; preds = %886, %811
  br label %888

888:                                              ; preds = %887
  %889 = load i64, ptr %57, align 8, !tbaa !9
  %890 = add nsw i64 %889, 1
  store i64 %890, ptr %57, align 8, !tbaa !9
  br label %777, !llvm.loop !18

891:                                              ; preds = %777
  br label %892

892:                                              ; preds = %891, %770
  store i32 0, ptr %23, align 4
  store i32 1, ptr %90, align 4
  br label %893

893:                                              ; preds = %892, %364, %308, %298
  call void @llvm.lifetime.end.p0(i64 8, ptr %89) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %88) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %87) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %86) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %85) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %84) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %83) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %82) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %81) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %80) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %79) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %78) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %77) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %76) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #4
  call void @llvm.lifetime.end.p0(i64 1, ptr %74) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %73) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %72) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %71) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #4
  call void @llvm.lifetime.end.p0(i64 8, 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 8, ptr %54) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #4
  %894 = load i32, ptr %23, align 4
  ret i32 %894
}

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

declare i32 @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_dscal(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 "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { nounwind }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"long", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"double", !7, i64 0}
!13 = 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
@.str.6 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [2 x i8], align 1
@c_b14 = external hidden global double, align 8
@.str.11 = external hidden unnamed_addr constant [2 x i8], align 1
@c__1 = external hidden global i64, align 8
@c_b34 = external hidden global double, align 8

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

45:                                               ; preds = %22
  %46 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.4) #6
  %.not373 = icmp eq i64 %46, 0
  br i1 %.not373, label %.thread400.sink.split, label %47

47:                                               ; preds = %45, %22
  %48 = icmp ne i64 %41, 0
  %49 = icmp ne i64 %42, 0
  %or.cond = select i1 %48, i1 true, i1 %49
  %50 = icmp ne i64 %43, 0
  %or.cond3 = select i1 %or.cond, i1 true, i1 %50
  br i1 %or.cond3, label %51, label %.thread400.sink.split

51:                                               ; preds = %47
  %.not374 = icmp eq i64 %44, 0
  br i1 %.not374, label %52, label %54

52:                                               ; preds = %51
  %53 = tail call i64 @lsame_(ptr noundef %2, ptr noundef nonnull @.str.5) #6
  %.not375 = icmp eq i64 %53, 0
  br i1 %.not375, label %.thread400.sink.split, label %54

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

57:                                               ; preds = %54
  %58 = load i64, ptr %4, align 8, !tbaa !5
  %59 = icmp slt i64 %58, 0
  br i1 %59, label %.thread400.sink.split, label %60

60:                                               ; preds = %57
  %61 = load i64, ptr %6, align 8, !tbaa !5
  %.not376 = icmp sgt i64 %61, %58
  br i1 %.not376, label %62, label %.thread400.sink.split

62:                                               ; preds = %60
  br i1 %.not, label %63, label %66

63:                                               ; preds = %62
  %64 = load i64, ptr %8, align 8, !tbaa !5
  %spec.select = tail call i64 @llvm.umax.i64(i64 %55, i64 1)
  %65 = icmp slt i64 %64, %spec.select
  br i1 %65, label %.thread400.sink.split, label %66

66:                                               ; preds = %63, %62
  br i1 %49, label %67, label %72

67:                                               ; preds = %66
  %.not413 = icmp eq i64 %55, 0
  br i1 %.not413, label %81, label %68

68:                                               ; preds = %67
  %69 = load double, ptr %10, align 8, !tbaa !9
  %70 = load double, ptr %9, align 8, !tbaa !9
  %71 = fcmp ugt double %69, %70
  br i1 %71, label %81, label %.thread400.sink.split

72:                                               ; preds = %66
  br i1 %50, label %73, label %81

73:                                               ; preds = %72
  %74 = load i64, ptr %11, align 8, !tbaa !5
  %75 = icmp slt i64 %74, 1
  %spec.select393 = tail call i64 @llvm.umax.i64(i64 %55, i64 1)
  %76 = icmp ugt i64 %74, %spec.select393
  %or.cond415 = or i1 %75, %76
  br i1 %or.cond415, label %.thread400.sink.split, label %77

77:                                               ; preds = %73
  %78 = load i64, ptr %12, align 8, !tbaa !5
  %. = tail call i64 @llvm.umin.i64(i64 %55, i64 %74)
  %79 = icmp slt i64 %78, %.
  %80 = icmp ugt i64 %78, %55
  %or.cond412 = or i1 %79, %80
  br i1 %or.cond412, label %.thread400.sink.split, label %81

81:                                               ; preds = %77, %68, %67, %72
  %.pr = load i64, ptr %21, align 8, !tbaa !5
  %82 = icmp eq i64 %.pr, 0
  br i1 %82, label %83, label %.thread400

83:                                               ; preds = %81
  %84 = load i64, ptr %17, align 8, !tbaa !5
  %85 = icmp slt i64 %84, 1
  %86 = icmp ult i64 %84, %55
  %or.cond440 = and i1 %.not, %86
  %or.cond442 = or i1 %85, %or.cond440
  br i1 %or.cond442, label %.thread400.sink.split, label %.thread

.thread400.sink.split:                            ; preds = %83, %77, %73, %68, %63, %60, %57, %54, %52, %47, %45
  %.sink441 = phi i64 [ -1, %45 ], [ -2, %47 ], [ -3, %52 ], [ -4, %54 ], [ -5, %57 ], [ -7, %60 ], [ -9, %63 ], [ -11, %68 ], [ -12, %73 ], [ -13, %77 ], [ -18, %83 ]
  store i64 %.sink441, ptr %21, align 8, !tbaa !5
  br label %.thread400

.thread400:                                       ; preds = %.thread400.sink.split, %81
  %87 = phi i64 [ %.pr, %81 ], [ %.sink441, %.thread400.sink.split ]
  %88 = sub nsw i64 0, %87
  store i64 %88, ptr %23, align 8, !tbaa !5
  %89 = call i32 @xerbla_(ptr noundef nonnull @.str.6, ptr noundef nonnull %23) #6
  br label %.loopexit

.thread:                                          ; preds = %83
  store i64 0, ptr %14, align 8, !tbaa !5
  %90 = load i64, ptr %3, align 8, !tbaa !5
  switch i64 %90, label %104 [
    i64 0, label %.loopexit
    i64 1, label %91
  ]

91:                                               ; preds = %.thread
  store i64 1, ptr %14, align 8, !tbaa !5
  br i1 %.not374, label %92, label %95

92:                                               ; preds = %91
  %93 = load i64, ptr %4, align 8, !tbaa !5
  %94 = getelementptr inbounds double, ptr %5, i64 %93
  br label %95

95:                                               ; preds = %91, %92
  %.0354.in = phi ptr [ %94, %92 ], [ %5, %91 ]
  %.0354 = load double, ptr %.0354.in, align 8, !tbaa !9
  %.not392 = icmp eq i64 %42, 0
  br i1 %.not392, label %102, label %96

96:                                               ; preds = %95
  %97 = load double, ptr %9, align 8, !tbaa !9
  %98 = fcmp olt double %97, %.0354
  br i1 %98, label %99, label %.thread404

99:                                               ; preds = %96
  %100 = load double, ptr %10, align 8, !tbaa !9
  %101 = fcmp ult double %100, %.0354
  br i1 %101, label %.thread404, label %102

.thread404:                                       ; preds = %96, %99
  store i64 0, ptr %14, align 8, !tbaa !5
  br label %.loopexit

102:                                              ; preds = %95, %99
  store double %.0354, ptr %15, align 8, !tbaa !9
  br i1 %.not, label %103, label %.loopexit

103:                                              ; preds = %102
  store double 1.000000e+00, ptr %16, align 8, !tbaa !9
  br label %.loopexit

104:                                              ; preds = %.thread
  %105 = tail call double @dlamch_(ptr noundef nonnull @.str.7) #6
  %106 = tail call double @dlamch_(ptr noundef nonnull @.str.8) #6
  %107 = fdiv double %105, %106
  %108 = fdiv double 1.000000e+00, %107
  %109 = tail call double @sqrt(double noundef %107) #6
  %110 = tail call double @sqrt(double noundef %108) #6
  store double %110, ptr %24, align 8, !tbaa !9
  %111 = tail call double @sqrt(double noundef %105) #6
  %112 = tail call double @sqrt(double noundef %111) #6
  %113 = fdiv double 1.000000e+00, %112
  %114 = fcmp ole double %110, %113
  %115 = select i1 %114, double %110, double %113
  %116 = load double, ptr %13, align 8, !tbaa !9
  store double %116, ptr %31, align 8, !tbaa !9
  %.not379 = icmp eq i64 %42, 0
  br i1 %.not379, label %120, label %117

117:                                              ; preds = %104
  %118 = load double, ptr %9, align 8, !tbaa !9
  %119 = load double, ptr %10, align 8, !tbaa !9
  br label %120

120:                                              ; preds = %104, %117
  %.sink = phi double [ %118, %117 ], [ 0.000000e+00, %104 ]
  %storemerge = phi double [ %119, %117 ], [ 0.000000e+00, %104 ]
  store double %.sink, ptr %25, align 8
  store double %storemerge, ptr %26, align 8, !tbaa !9
  %121 = tail call double @dlansb_(ptr noundef nonnull @.str.9, ptr noundef %2, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %18) #6
  %122 = fcmp ogt double %121, 0.000000e+00
  %123 = fcmp olt double %121, %109
  %or.cond394 = select i1 %122, i1 %123, i1 false
  br i1 %or.cond394, label %126, label %124

124:                                              ; preds = %120
  %125 = fcmp ogt double %121, %115
  br i1 %125, label %126, label %140

126:                                              ; preds = %124, %120
  %.pn = phi double [ %109, %120 ], [ %115, %124 ]
  %storemerge414 = fdiv double %.pn, %121
  store double %storemerge414, ptr %28, align 8, !tbaa !9
  %.str.11..str.10 = select i1 %.not374, ptr @.str.11, ptr @.str.10
  %127 = call i32 @dlascl_(ptr noundef nonnull %.str.11..str.10, ptr noundef nonnull %4, ptr noundef nonnull %4, ptr noundef nonnull @c_b14, ptr noundef nonnull %28, ptr noundef nonnull %3, ptr noundef nonnull %3, ptr noundef %5, ptr noundef nonnull %6, ptr noundef nonnull %21) #6
  %128 = load double, ptr %13, align 8, !tbaa !9
  %129 = fcmp ogt double %128, 0.000000e+00
  br i1 %129, label %130, label %133

130:                                              ; preds = %126
  %131 = load double, ptr %28, align 8, !tbaa !9
  %132 = fmul double %128, %131
  store double %132, ptr %31, align 8, !tbaa !9
  br label %133

133:                                              ; preds = %130, %126
  br i1 %.not379, label %140, label %134

134:                                              ; preds = %133
  %135 = load double, ptr %9, align 8, !tbaa !9
  %136 = load double, ptr %28, align 8, !tbaa !9
  %137 = fmul double %135, %136
  store double %137, ptr %25, align 8, !tbaa !9
  %138 = load double, ptr %10, align 8, !tbaa !9
  %139 = fmul double %136, %138
  store double %139, ptr %26, align 8, !tbaa !9
  br label %140

140:                                              ; preds = %124, %133, %134
  %141 = phi i1 [ true, %133 ], [ true, %134 ], [ false, %124 ]
  %142 = load i64, ptr %3, align 8, !tbaa !5
  %reass.add = shl i64 %142, 1
  %143 = or disjoint i64 %reass.add, 1
  %144 = getelementptr double, ptr %18, i64 %142
  %145 = getelementptr double, ptr %18, i64 %reass.add
  %146 = call i32 @dsbtrd_(ptr noundef %0, ptr noundef %2, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %18, ptr noundef %144, ptr noundef %7, ptr noundef %8, ptr noundef %145, ptr noundef nonnull %29) #6
  %.not381 = icmp eq i64 %43, 0
  br i1 %.not381, label %154, label %147

147:                                              ; preds = %140
  %148 = load i64, ptr %11, align 8, !tbaa !5
  %149 = icmp eq i64 %148, 1
  br i1 %149, label %150, label %154

150:                                              ; preds = %147
  %151 = load i64, ptr %12, align 8, !tbaa !5
  %152 = load i64, ptr %3, align 8, !tbaa !5
  %153 = icmp eq i64 %151, %152
  br label %154

154:                                              ; preds = %150, %147, %140
  %155 = phi i1 [ false, %147 ], [ false, %140 ], [ %153, %150 ]
  %or.cond5 = or i1 %48, %155
  br i1 %or.cond5, label %156, label %184

156:                                              ; preds = %154
  %157 = load double, ptr %13, align 8, !tbaa !9
  %158 = fcmp ugt double %157, 0.000000e+00
  br i1 %158, label %184, label %159

159:                                              ; preds = %156
  %160 = call i32 @f2c_dcopy(ptr noundef nonnull %3, ptr noundef %18, ptr noundef nonnull @c__1, ptr noundef %15, ptr noundef nonnull @c__1) #6
  %161 = load i64, ptr %3, align 8, !tbaa !5
  %162 = shl i64 %161, 1
  %163 = add nsw i64 %162, %143
  br i1 %.not, label %169, label %164

164:                                              ; preds = %159
  %165 = add nsw i64 %161, -1
  store i64 %165, ptr %23, align 8, !tbaa !5
  %166 = getelementptr inbounds double, ptr %37, i64 %163
  %167 = call i32 @f2c_dcopy(ptr noundef nonnull %23, ptr noundef %144, ptr noundef nonnull @c__1, ptr noundef nonnull %166, ptr noundef nonnull @c__1) #6
  %168 = call i32 @dsterf_(ptr noundef nonnull %3, ptr noundef %15, ptr noundef nonnull %166, ptr noundef nonnull %21) #6
  br label %.loopexit417

169:                                              ; preds = %159
  %170 = call i32 @dlacpy_(ptr noundef nonnull @.str.1, ptr noundef nonnull %3, ptr noundef nonnull %3, ptr noundef %7, ptr noundef %8, ptr noundef %16, ptr noundef nonnull %17) #6
  %171 = load i64, ptr %3, align 8, !tbaa !5
  %172 = add nsw i64 %171, -1
  store i64 %172, ptr %23, align 8, !tbaa !5
  %173 = getelementptr inbounds double, ptr %37, i64 %163
  %174 = call i32 @f2c_dcopy(ptr noundef nonnull %23, ptr noundef %144, ptr noundef nonnull @c__1, ptr noundef nonnull %173, ptr noundef nonnull @c__1) #6
  %175 = call i32 @dsteqr_(ptr noundef %0, ptr noundef nonnull %3, ptr noundef %15, ptr noundef nonnull %173, ptr noundef %16, ptr noundef nonnull %17, ptr noundef %145, ptr noundef nonnull %21) #6
  %176 = load i64, ptr %21, align 8, !tbaa !5
  %177 = icmp eq i64 %176, 0
  br i1 %177, label %178, label %.thread409

178:                                              ; preds = %169
  %179 = load i64, ptr %3, align 8, !tbaa !5
  store i64 %179, ptr %23, align 8, !tbaa !5
  %.not382418 = icmp slt i64 %179, 1
  br i1 %.not382418, label %.loopexit417, label %.lr.ph.preheader

.lr.ph.preheader:                                 ; preds = %178
  %180 = shl nuw i64 %179, 3
  call void @llvm.memset.p0.i64(ptr align 8 %20, i8 0, i64 %180, i1 false), !tbaa !5
  br label %.loopexit417

.loopexit417:                                     ; preds = %.lr.ph.preheader, %178, %164
  %.pr408 = load i64, ptr %21, align 8, !tbaa !5
  %181 = icmp eq i64 %.pr408, 0
  br i1 %181, label %182, label %.thread409

182:                                              ; preds = %.loopexit417
  %183 = load i64, ptr %3, align 8, !tbaa !5
  store i64 %183, ptr %14, align 8, !tbaa !5
  br label %.loopexit416

.thread409:                                       ; preds = %169, %.loopexit417
  store i64 0, ptr %21, align 8, !tbaa !5
  br label %184

184:                                              ; preds = %154, %.thread409, %156
  %.396 = select i1 %.not, i8 66, i8 69
  store i8 %.396, ptr %30, align 1, !tbaa !11
  %185 = load i64, ptr %3, align 8, !tbaa !5
  %186 = getelementptr i64, ptr %19, i64 %185
  %.idx = shl i64 %185, 4
  %187 = getelementptr i8, ptr %19, i64 %.idx
  %188 = call i32 @dstebz_(ptr noundef %1, ptr noundef nonnull %30, ptr noundef nonnull %3, ptr noundef nonnull %25, ptr noundef nonnull %26, ptr noundef %11, ptr noundef %12, ptr noundef nonnull %31, ptr noundef %18, ptr noundef %144, ptr noundef nonnull %14, ptr noundef nonnull %32, ptr noundef %15, ptr noundef %19, ptr noundef %186, ptr noundef %145, ptr noundef %187, ptr noundef nonnull %21) #6
  br i1 %.not, label %189, label %.loopexit416

189:                                              ; preds = %184
  %190 = call i32 @dstein_(ptr noundef nonnull %3, ptr noundef %18, ptr noundef %144, ptr noundef nonnull %14, ptr noundef %15, ptr noundef %19, ptr noundef %186, ptr noundef %16, ptr noundef nonnull %17, ptr noundef %145, ptr noundef %187, ptr noundef %20, ptr noundef nonnull %21) #6
  %191 = load i64, ptr %14, align 8, !tbaa !5
  store i64 %191, ptr %23, align 8, !tbaa !5
  %invariant.gep = getelementptr i8, ptr %36, i64 8
  %.not385420 = icmp slt i64 %191, 1
  br i1 %.not385420, label %.loopexit416, label %.lr.ph422

.lr.ph422:                                        ; preds = %189, %.lr.ph422
  %.0351421 = phi i64 [ %195, %.lr.ph422 ], [ 1, %189 ]
  %192 = mul nsw i64 %.0351421, %34
  %gep = getelementptr double, ptr %invariant.gep, i64 %192
  %193 = call i32 @f2c_dcopy(ptr noundef nonnull %3, ptr noundef %gep, ptr noundef nonnull @c__1, ptr noundef %18, ptr noundef nonnull @c__1) #6
  %194 = call i32 @f2c_dgemv(ptr noundef nonnull @.str.4, ptr noundef nonnull %3, ptr noundef nonnull %3, ptr noundef nonnull @c_b14, ptr noundef %7, ptr noundef %8, ptr noundef %18, ptr noundef nonnull @c__1, ptr noundef nonnull @c_b34, ptr noundef %gep, ptr noundef nonnull @c__1) #6
  %195 = add nuw nsw i64 %.0351421, 1
  %196 = load i64, ptr %23, align 8, !tbaa !5
  %.not385.not = icmp slt i64 %.0351421, %196
  br i1 %.not385.not, label %.lr.ph422, label %.loopexit416, !llvm.loop !12

.loopexit416:                                     ; preds = %.lr.ph422, %189, %184, %182
  br i1 %141, label %197, label %208

197:                                              ; preds = %.loopexit416
  %198 = load i64, ptr %21, align 8, !tbaa !5
  %199 = icmp eq i64 %198, 0
  br i1 %199, label %200, label %202

200:                                              ; preds = %197
  %201 = load i64, ptr %14, align 8, !tbaa !5
  br label %204

202:                                              ; preds = %197
  %203 = add nsw i64 %198, -1
  br label %204

204:                                              ; preds = %202, %200
  %storemerge386 = phi i64 [ %203, %202 ], [ %201, %200 ]
  store i64 %storemerge386, ptr %27, align 8, !tbaa !5
  %205 = load double, ptr %28, align 8, !tbaa !9
  %206 = fdiv double 1.000000e+00, %205
  store double %206, ptr %24, align 8, !tbaa !9
  %207 = call i32 @f2c_dscal(ptr noundef nonnull %27, ptr noundef nonnull %24, ptr noundef %15, ptr noundef nonnull @c__1) #6
  br label %208

208:                                              ; preds = %204, %.loopexit416
  br i1 %.not, label %209, label %.loopexit

209:                                              ; preds = %208
  %210 = load i64, ptr %14, align 8, !tbaa !5
  %211 = add nsw i64 %210, -1
  store i64 %211, ptr %23, align 8, !tbaa !5
  %invariant.gep429 = getelementptr i8, ptr %36, i64 8
  %.not387433 = icmp slt i64 %210, 2
  br i1 %.not387433, label %.loopexit, label %.lr.ph436

.lr.ph436:                                        ; preds = %209, %._crit_edge.thread
  %.1352434 = phi i64 [ %215, %._crit_edge.thread ], [ 1, %209 ]
  %212 = getelementptr inbounds double, ptr %33, i64 %.1352434
  %213 = load double, ptr %212, align 8, !tbaa !9
  %214 = load i64, ptr %14, align 8, !tbaa !5
  %215 = add nuw nsw i64 %.1352434, 1
  %.not388423.not = icmp slt i64 %.1352434, %214
  br i1 %.not388423.not, label %.lr.ph427, label %._crit_edge.thread

.lr.ph427:                                        ; preds = %.lr.ph436, %.lr.ph427
  %.1426 = phi i64 [ %.2, %.lr.ph427 ], [ 0, %.lr.ph436 ]
  %.0353425 = phi i64 [ %219, %.lr.ph427 ], [ %215, %.lr.ph436 ]
  %.1355424 = phi double [ %.2356, %.lr.ph427 ], [ %213, %.lr.ph436 ]
  %216 = getelementptr inbounds double, ptr %33, i64 %.0353425
  %217 = load double, ptr %216, align 8, !tbaa !9
  %218 = fcmp olt double %217, %.1355424
  %.2356 = select i1 %218, double %217, double %.1355424
  %.2 = select i1 %218, i64 %.0353425, i64 %.1426
  %219 = add nuw nsw i64 %.0353425, 1
  %.not388.not = icmp slt i64 %.0353425, %214
  br i1 %.not388.not, label %.lr.ph427, label %._crit_edge, !llvm.loop !14

._crit_edge:                                      ; preds = %.lr.ph427
  %.not389 = icmp eq i64 %.2, 0
  br i1 %.not389, label %._crit_edge.thread, label %220

220:                                              ; preds = %._crit_edge
  %221 = getelementptr inbounds i64, ptr %38, i64 %.2
  %222 = load i64, ptr %221, align 8, !tbaa !5
  %223 = getelementptr inbounds double, ptr %33, i64 %.2
  store double %213, ptr %223, align 8, !tbaa !9
  %224 = getelementptr inbounds i64, ptr %38, i64 %.1352434
  %225 = load i64, ptr %224, align 8, !tbaa !5
  store i64 %225, ptr %221, align 8, !tbaa !5
  store double %.2356, ptr %212, align 8, !tbaa !9
  store i64 %222, ptr %224, align 8, !tbaa !5
  %226 = mul nsw i64 %.2, %34
  %gep430 = getelementptr double, ptr %invariant.gep429, i64 %226
  %227 = mul nsw i64 %.1352434, %34
  %gep432 = getelementptr double, ptr %invariant.gep429, i64 %227
  %228 = call i32 @f2c_dswap(ptr noundef nonnull %3, ptr noundef %gep430, ptr noundef nonnull @c__1, ptr noundef %gep432, ptr noundef nonnull @c__1) #6
  %229 = load i64, ptr %21, align 8, !tbaa !5
  %.not390 = icmp eq i64 %229, 0
  br i1 %.not390, label %._crit_edge.thread, label %230

230:                                              ; preds = %220
  %231 = getelementptr inbounds i64, ptr %39, i64 %.2
  %232 = load i64, ptr %231, align 8, !tbaa !5
  %233 = getelementptr inbounds i64, ptr %39, i64 %.1352434
  %234 = load i64, ptr %233, align 8, !tbaa !5
  store i64 %234, ptr %231, align 8, !tbaa !5
  store i64 %232, ptr %233, align 8, !tbaa !5
  br label %._crit_edge.thread

._crit_edge.thread:                               ; preds = %.lr.ph436, %._crit_edge, %230, %220
  %235 = load i64, ptr %23, align 8, !tbaa !5
  %.not387.not = icmp slt i64 %.1352434, %235
  br i1 %.not387.not, label %.lr.ph436, label %.loopexit, !llvm.loop !15

.loopexit:                                        ; preds = %._crit_edge.thread, %209, %.thread404, %208, %103, %102, %.thread, %.thread400
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %32) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %31) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %30) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %29) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %28) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #6
  ret i32 0
}

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

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

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

declare i32 @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_dscal(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) #4

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

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

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

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

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


; 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