; LLVM IR from OpenMathLib/OpenBLAS :: lapack-netlib/SRC (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 i32, align 4
@c_b34 = external hidden global double, align 8

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

141:                                              ; preds = %22
  %142 = load ptr, ptr %23, align 8, !tbaa !5
  %143 = call i32 @lsame_(ptr noundef %142, ptr noundef @.str.4)
  %144 = icmp ne i32 %143, 0
  br i1 %144, label %147, label %145

145:                                              ; preds = %141
  %146 = load ptr, ptr %44, align 8, !tbaa !5
  store i32 -1, ptr %146, align 4, !tbaa !9
  br label %279

147:                                              ; preds = %141, %22
  %148 = load i32, ptr %72, align 4, !tbaa !9
  %149 = icmp ne i32 %148, 0
  br i1 %149, label %158, label %150

150:                                              ; preds = %147
  %151 = load i32, ptr %76, align 4, !tbaa !9
  %152 = icmp ne i32 %151, 0
  br i1 %152, label %158, label %153

153:                                              ; preds = %150
  %154 = load i32, ptr %73, align 4, !tbaa !9
  %155 = icmp ne i32 %154, 0
  br i1 %155, label %158, label %156

156:                                              ; preds = %153
  %157 = load ptr, ptr %44, align 8, !tbaa !5
  store i32 -2, ptr %157, align 4, !tbaa !9
  br label %278

158:                                              ; preds = %153, %150, %147
  %159 = load i32, ptr %69, align 4, !tbaa !9
  %160 = icmp ne i32 %159, 0
  br i1 %160, label %167, label %161

161:                                              ; preds = %158
  %162 = load ptr, ptr %25, align 8, !tbaa !5
  %163 = call i32 @lsame_(ptr noundef %162, ptr noundef @.str.5)
  %164 = icmp ne i32 %163, 0
  br i1 %164, label %167, label %165

165:                                              ; preds = %161
  %166 = load ptr, ptr %44, align 8, !tbaa !5
  store i32 -3, ptr %166, align 4, !tbaa !9
  br label %277

167:                                              ; preds = %161, %158
  %168 = load ptr, ptr %26, align 8, !tbaa !5
  %169 = load i32, ptr %168, align 4, !tbaa !9
  %170 = icmp slt i32 %169, 0
  br i1 %170, label %171, label %173

171:                                              ; preds = %167
  %172 = load ptr, ptr %44, align 8, !tbaa !5
  store i32 -4, ptr %172, align 4, !tbaa !9
  br label %276

173:                                              ; preds = %167
  %174 = load ptr, ptr %27, align 8, !tbaa !5
  %175 = load i32, ptr %174, align 4, !tbaa !9
  %176 = icmp slt i32 %175, 0
  br i1 %176, label %177, label %179

177:                                              ; preds = %173
  %178 = load ptr, ptr %44, align 8, !tbaa !5
  store i32 -5, ptr %178, align 4, !tbaa !9
  br label %275

179:                                              ; preds = %173
  %180 = load ptr, ptr %29, align 8, !tbaa !5
  %181 = load i32, ptr %180, align 4, !tbaa !9
  %182 = load ptr, ptr %27, align 8, !tbaa !5
  %183 = load i32, ptr %182, align 4, !tbaa !9
  %184 = add nsw i32 %183, 1
  %185 = icmp slt i32 %181, %184
  br i1 %185, label %186, label %188

186:                                              ; preds = %179
  %187 = load ptr, ptr %44, align 8, !tbaa !5
  store i32 -7, ptr %187, align 4, !tbaa !9
  br label %274

188:                                              ; preds = %179
  %189 = load i32, ptr %70, align 4, !tbaa !9
  %190 = icmp ne i32 %189, 0
  br i1 %190, label %191, label %206

191:                                              ; preds = %188
  %192 = load ptr, ptr %31, align 8, !tbaa !5
  %193 = load i32, ptr %192, align 4, !tbaa !9
  %194 = load ptr, ptr %26, align 8, !tbaa !5
  %195 = load i32, ptr %194, align 4, !tbaa !9
  %196 = icmp sge i32 1, %195
  br i1 %196, label %197, label %198

197:                                              ; preds = %191
  br label %201

198:                                              ; preds = %191
  %199 = load ptr, ptr %26, align 8, !tbaa !5
  %200 = load i32, ptr %199, align 4, !tbaa !9
  br label %201

201:                                              ; preds = %198, %197
  %202 = phi i32 [ 1, %197 ], [ %200, %198 ]
  %203 = icmp slt i32 %193, %202
  br i1 %203, label %204, label %206

204:                                              ; preds = %201
  %205 = load ptr, ptr %44, align 8, !tbaa !5
  store i32 -9, ptr %205, align 4, !tbaa !9
  br label %273

206:                                              ; preds = %201, %188
  %207 = load i32, ptr %76, align 4, !tbaa !9
  %208 = icmp ne i32 %207, 0
  br i1 %208, label %209, label %222

209:                                              ; preds = %206
  %210 = load ptr, ptr %26, align 8, !tbaa !5
  %211 = load i32, ptr %210, align 4, !tbaa !9
  %212 = icmp sgt i32 %211, 0
  br i1 %212, label %213, label %221

213:                                              ; preds = %209
  %214 = load ptr, ptr %33, align 8, !tbaa !5
  %215 = load double, ptr %214, align 8, !tbaa !11
  %216 = load ptr, ptr %32, align 8, !tbaa !5
  %217 = load double, ptr %216, align 8, !tbaa !11
  %218 = fcmp ole double %215, %217
  br i1 %218, label %219, label %221

219:                                              ; preds = %213
  %220 = load ptr, ptr %44, align 8, !tbaa !5
  store i32 -11, ptr %220, align 4, !tbaa !9
  br label %221

221:                                              ; preds = %219, %213, %209
  br label %272

222:                                              ; preds = %206
  %223 = load i32, ptr %73, align 4, !tbaa !9
  %224 = icmp ne i32 %223, 0
  br i1 %224, label %225, label %271

225:                                              ; preds = %222
  %226 = load ptr, ptr %34, align 8, !tbaa !5
  %227 = load i32, ptr %226, align 4, !tbaa !9
  %228 = icmp slt i32 %227, 1
  br i1 %228, label %242, label %229

229:                                              ; preds = %225
  %230 = load ptr, ptr %34, align 8, !tbaa !5
  %231 = load i32, ptr %230, align 4, !tbaa !9
  %232 = load ptr, ptr %26, align 8, !tbaa !5
  %233 = load i32, ptr %232, align 4, !tbaa !9
  %234 = icmp sge i32 1, %233
  br i1 %234, label %235, label %236

235:                                              ; preds = %229
  br label %239

236:                                              ; preds = %229
  %237 = load ptr, ptr %26, align 8, !tbaa !5
  %238 = load i32, ptr %237, align 4, !tbaa !9
  br label %239

239:                                              ; preds = %236, %235
  %240 = phi i32 [ 1, %235 ], [ %238, %236 ]
  %241 = icmp sgt i32 %231, %240
  br i1 %241, label %242, label %244

242:                                              ; preds = %239, %225
  %243 = load ptr, ptr %44, align 8, !tbaa !5
  store i32 -12, ptr %243, align 4, !tbaa !9
  br label %270

244:                                              ; preds = %239
  %245 = load ptr, ptr %35, align 8, !tbaa !5
  %246 = load i32, ptr %245, align 4, !tbaa !9
  %247 = load ptr, ptr %26, align 8, !tbaa !5
  %248 = load i32, ptr %247, align 4, !tbaa !9
  %249 = load ptr, ptr %34, align 8, !tbaa !5
  %250 = load i32, ptr %249, align 4, !tbaa !9
  %251 = icmp sle i32 %248, %250
  br i1 %251, label %252, label %255

252:                                              ; preds = %244
  %253 = load ptr, ptr %26, align 8, !tbaa !5
  %254 = load i32, ptr %253, align 4, !tbaa !9
  br label %258

255:                                              ; preds = %244
  %256 = load ptr, ptr %34, align 8, !tbaa !5
  %257 = load i32, ptr %256, align 4, !tbaa !9
  br label %258

258:                                              ; preds = %255, %252
  %259 = phi i32 [ %254, %252 ], [ %257, %255 ]
  %260 = icmp slt i32 %246, %259
  br i1 %260, label %267, label %261

261:                                              ; preds = %258
  %262 = load ptr, ptr %35, align 8, !tbaa !5
  %263 = load i32, ptr %262, align 4, !tbaa !9
  %264 = load ptr, ptr %26, align 8, !tbaa !5
  %265 = load i32, ptr %264, align 4, !tbaa !9
  %266 = icmp sgt i32 %263, %265
  br i1 %266, label %267, label %269

267:                                              ; preds = %261, %258
  %268 = load ptr, ptr %44, align 8, !tbaa !5
  store i32 -13, ptr %268, align 4, !tbaa !9
  br label %269

269:                                              ; preds = %267, %261
  br label %270

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

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

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

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

274:                                              ; preds = %273, %186
  br label %275

275:                                              ; preds = %274, %177
  br label %276

276:                                              ; preds = %275, %171
  br label %277

277:                                              ; preds = %276, %165
  br label %278

278:                                              ; preds = %277, %156
  br label %279

279:                                              ; preds = %278, %145
  %280 = load ptr, ptr %44, align 8, !tbaa !5
  %281 = load i32, ptr %280, align 4, !tbaa !9
  %282 = icmp eq i32 %281, 0
  br i1 %282, label %283, label %299

283:                                              ; preds = %279
  %284 = load ptr, ptr %40, align 8, !tbaa !5
  %285 = load i32, ptr %284, align 4, !tbaa !9
  %286 = icmp slt i32 %285, 1
  br i1 %286, label %296, label %287

287:                                              ; preds = %283
  %288 = load i32, ptr %70, align 4, !tbaa !9
  %289 = icmp ne i32 %288, 0
  br i1 %289, label %290, label %298

290:                                              ; preds = %287
  %291 = load ptr, ptr %40, align 8, !tbaa !5
  %292 = load i32, ptr %291, align 4, !tbaa !9
  %293 = load ptr, ptr %26, align 8, !tbaa !5
  %294 = load i32, ptr %293, align 4, !tbaa !9
  %295 = icmp slt i32 %292, %294
  br i1 %295, label %296, label %298

296:                                              ; preds = %290, %283
  %297 = load ptr, ptr %44, align 8, !tbaa !5
  store i32 -18, ptr %297, align 4, !tbaa !9
  br label %298

298:                                              ; preds = %296, %290, %287
  br label %299

299:                                              ; preds = %298, %279
  %300 = load ptr, ptr %44, align 8, !tbaa !5
  %301 = load i32, ptr %300, align 4, !tbaa !9
  %302 = icmp ne i32 %301, 0
  br i1 %302, label %303, label %308

303:                                              ; preds = %299
  %304 = load ptr, ptr %44, align 8, !tbaa !5
  %305 = load i32, ptr %304, align 4, !tbaa !9
  %306 = sub nsw i32 0, %305
  store i32 %306, ptr %51, align 4, !tbaa !9
  %307 = call i32 @xerbla_(ptr noundef @.str.6, ptr noundef %51, i32 noundef 6)
  store i32 1, ptr %89, align 4
  br label %938

308:                                              ; preds = %299
  %309 = load ptr, ptr %37, align 8, !tbaa !5
  store i32 0, ptr %309, align 4, !tbaa !9
  %310 = load ptr, ptr %26, align 8, !tbaa !5
  %311 = load i32, ptr %310, align 4, !tbaa !9
  %312 = icmp eq i32 %311, 0
  br i1 %312, label %313, label %314

313:                                              ; preds = %308
  store i32 1, ptr %89, align 4
  br label %938

314:                                              ; preds = %308
  %315 = load ptr, ptr %26, align 8, !tbaa !5
  %316 = load i32, ptr %315, align 4, !tbaa !9
  %317 = icmp eq i32 %316, 1
  br i1 %317, label %318, label %373

318:                                              ; preds = %314
  %319 = load ptr, ptr %37, align 8, !tbaa !5
  store i32 1, ptr %319, align 4, !tbaa !9
  %320 = load i32, ptr %69, align 4, !tbaa !9
  %321 = icmp ne i32 %320, 0
  br i1 %321, label %322, label %329

322:                                              ; preds = %318
  %323 = load ptr, ptr %28, align 8, !tbaa !5
  %324 = load i32, ptr %45, align 4, !tbaa !9
  %325 = add nsw i32 %324, 1
  %326 = sext i32 %325 to i64
  %327 = getelementptr inbounds double, ptr %323, i64 %326
  %328 = load double, ptr %327, align 8, !tbaa !11
  store double %328, ptr %88, align 8, !tbaa !11
  br label %339

329:                                              ; preds = %318
  %330 = load ptr, ptr %28, align 8, !tbaa !5
  %331 = load ptr, ptr %27, align 8, !tbaa !5
  %332 = load i32, ptr %331, align 4, !tbaa !9
  %333 = add nsw i32 %332, 1
  %334 = load i32, ptr %45, align 4, !tbaa !9
  %335 = add nsw i32 %333, %334
  %336 = sext i32 %335 to i64
  %337 = getelementptr inbounds double, ptr %330, i64 %336
  %338 = load double, ptr %337, align 8, !tbaa !11
  store double %338, ptr %88, align 8, !tbaa !11
  br label %339

339:                                              ; preds = %329, %322
  %340 = load i32, ptr %76, align 4, !tbaa !9
  %341 = icmp ne i32 %340, 0
  br i1 %341, label %342, label %355

342:                                              ; preds = %339
  %343 = load ptr, ptr %32, align 8, !tbaa !5
  %344 = load double, ptr %343, align 8, !tbaa !11
  %345 = load double, ptr %88, align 8, !tbaa !11
  %346 = fcmp olt double %344, %345
  br i1 %346, label %347, label %352

347:                                              ; preds = %342
  %348 = load ptr, ptr %33, align 8, !tbaa !5
  %349 = load double, ptr %348, align 8, !tbaa !11
  %350 = load double, ptr %88, align 8, !tbaa !11
  %351 = fcmp oge double %349, %350
  br i1 %351, label %354, label %352

352:                                              ; preds = %347, %342
  %353 = load ptr, ptr %37, align 8, !tbaa !5
  store i32 0, ptr %353, align 4, !tbaa !9
  br label %354

354:                                              ; preds = %352, %347
  br label %355

355:                                              ; preds = %354, %339
  %356 = load ptr, ptr %37, align 8, !tbaa !5
  %357 = load i32, ptr %356, align 4, !tbaa !9
  %358 = icmp eq i32 %357, 1
  br i1 %358, label %359, label %372

359:                                              ; preds = %355
  %360 = load double, ptr %88, align 8, !tbaa !11
  %361 = load ptr, ptr %38, align 8, !tbaa !5
  %362 = getelementptr inbounds double, ptr %361, i64 1
  store double %360, ptr %362, align 8, !tbaa !11
  %363 = load i32, ptr %70, align 4, !tbaa !9
  %364 = icmp ne i32 %363, 0
  br i1 %364, label %365, label %371

365:                                              ; preds = %359
  %366 = load ptr, ptr %39, align 8, !tbaa !5
  %367 = load i32, ptr %49, align 4, !tbaa !9
  %368 = add nsw i32 %367, 1
  %369 = sext i32 %368 to i64
  %370 = getelementptr inbounds double, ptr %366, i64 %369
  store double 1.000000e+00, ptr %370, align 8, !tbaa !11
  br label %371

371:                                              ; preds = %365, %359
  br label %372

372:                                              ; preds = %371, %355
  store i32 1, ptr %89, align 4
  br label %938

373:                                              ; preds = %314
  %374 = call double @dlamch_(ptr noundef @.str.7)
  store double %374, ptr %77, align 8, !tbaa !11
  %375 = call double @dlamch_(ptr noundef @.str.8)
  store double %375, ptr %85, align 8, !tbaa !11
  %376 = load double, ptr %77, align 8, !tbaa !11
  %377 = load double, ptr %85, align 8, !tbaa !11
  %378 = fdiv double %376, %377
  store double %378, ptr %84, align 8, !tbaa !11
  %379 = load double, ptr %84, align 8, !tbaa !11
  %380 = fdiv double 1.000000e+00, %379
  store double %380, ptr %79, align 8, !tbaa !11
  %381 = load double, ptr %84, align 8, !tbaa !11
  %382 = call double @sqrt(double noundef %381) #4
  store double %382, ptr %59, align 8, !tbaa !11
  %383 = load double, ptr %79, align 8, !tbaa !11
  %384 = call double @sqrt(double noundef %383) #4
  store double %384, ptr %53, align 8, !tbaa !11
  %385 = load double, ptr %77, align 8, !tbaa !11
  %386 = call double @sqrt(double noundef %385) #4
  %387 = call double @sqrt(double noundef %386) #4
  %388 = fdiv double 1.000000e+00, %387
  store double %388, ptr %54, align 8, !tbaa !11
  %389 = load double, ptr %53, align 8, !tbaa !11
  %390 = load double, ptr %54, align 8, !tbaa !11
  %391 = fcmp ole double %389, %390
  br i1 %391, label %392, label %394

392:                                              ; preds = %373
  %393 = load double, ptr %53, align 8, !tbaa !11
  br label %396

394:                                              ; preds = %373
  %395 = load double, ptr %54, align 8, !tbaa !11
  br label %396

396:                                              ; preds = %394, %392
  %397 = phi double [ %393, %392 ], [ %395, %394 ]
  store double %397, ptr %60, align 8, !tbaa !11
  store i32 0, ptr %74, align 4, !tbaa !9
  %398 = load ptr, ptr %36, align 8, !tbaa !5
  %399 = load double, ptr %398, align 8, !tbaa !11
  store double %399, ptr %78, align 8, !tbaa !11
  %400 = load i32, ptr %76, align 4, !tbaa !9
  %401 = icmp ne i32 %400, 0
  br i1 %401, label %402, label %407

402:                                              ; preds = %396
  %403 = load ptr, ptr %32, align 8, !tbaa !5
  %404 = load double, ptr %403, align 8, !tbaa !11
  store double %404, ptr %86, align 8, !tbaa !11
  %405 = load ptr, ptr %33, align 8, !tbaa !5
  %406 = load double, ptr %405, align 8, !tbaa !11
  store double %406, ptr %87, align 8, !tbaa !11
  br label %408

407:                                              ; preds = %396
  store double 0.000000e+00, ptr %86, align 8, !tbaa !11
  store double 0.000000e+00, ptr %87, align 8, !tbaa !11
  br label %408

408:                                              ; preds = %407, %402
  %409 = load ptr, ptr %25, align 8, !tbaa !5
  %410 = load ptr, ptr %26, align 8, !tbaa !5
  %411 = load ptr, ptr %27, align 8, !tbaa !5
  %412 = load ptr, ptr %28, align 8, !tbaa !5
  %413 = load i32, ptr %46, align 4, !tbaa !9
  %414 = sext i32 %413 to i64
  %415 = getelementptr inbounds double, ptr %412, i64 %414
  %416 = load ptr, ptr %29, align 8, !tbaa !5
  %417 = load ptr, ptr %41, align 8, !tbaa !5
  %418 = getelementptr inbounds double, ptr %417, i64 1
  %419 = call double @dlansb_(ptr noundef @.str.9, ptr noundef %409, ptr noundef %410, ptr noundef %411, ptr noundef %415, ptr noundef %416, ptr noundef %418)
  store double %419, ptr %57, align 8, !tbaa !11
  %420 = load double, ptr %57, align 8, !tbaa !11
  %421 = fcmp ogt double %420, 0.000000e+00
  br i1 %421, label %422, label %430

422:                                              ; preds = %408
  %423 = load double, ptr %57, align 8, !tbaa !11
  %424 = load double, ptr %59, align 8, !tbaa !11
  %425 = fcmp olt double %423, %424
  br i1 %425, label %426, label %430

426:                                              ; preds = %422
  store i32 1, ptr %74, align 4, !tbaa !9
  %427 = load double, ptr %59, align 8, !tbaa !11
  %428 = load double, ptr %57, align 8, !tbaa !11
  %429 = fdiv double %427, %428
  store double %429, ptr %66, align 8, !tbaa !11
  br label %439

430:                                              ; preds = %422, %408
  %431 = load double, ptr %57, align 8, !tbaa !11
  %432 = load double, ptr %60, align 8, !tbaa !11
  %433 = fcmp ogt double %431, %432
  br i1 %433, label %434, label %438

434:                                              ; preds = %430
  store i32 1, ptr %74, align 4, !tbaa !9
  %435 = load double, ptr %60, align 8, !tbaa !11
  %436 = load double, ptr %57, align 8, !tbaa !11
  %437 = fdiv double %435, %436
  store double %437, ptr %66, align 8, !tbaa !11
  br label %438

438:                                              ; preds = %434, %430
  br label %439

439:                                              ; preds = %438, %426
  %440 = load i32, ptr %74, align 4, !tbaa !9
  %441 = icmp eq i32 %440, 1
  br i1 %441, label %442, label %489

442:                                              ; preds = %439
  %443 = load i32, ptr %69, align 4, !tbaa !9
  %444 = icmp ne i32 %443, 0
  br i1 %444, label %445, label %456

445:                                              ; preds = %442
  %446 = load ptr, ptr %27, align 8, !tbaa !5
  %447 = load ptr, ptr %27, align 8, !tbaa !5
  %448 = load ptr, ptr %26, align 8, !tbaa !5
  %449 = load ptr, ptr %26, align 8, !tbaa !5
  %450 = load ptr, ptr %28, align 8, !tbaa !5
  %451 = load i32, ptr %46, align 4, !tbaa !9
  %452 = sext i32 %451 to i64
  %453 = getelementptr inbounds double, ptr %450, i64 %452
  %454 = load ptr, ptr %29, align 8, !tbaa !5
  %455 = load ptr, ptr %44, align 8, !tbaa !5
  call void @dlascl_(ptr noundef @.str.10, ptr noundef %446, ptr noundef %447, ptr noundef @c_b14, ptr noundef %66, ptr noundef %448, ptr noundef %449, ptr noundef %453, ptr noundef %454, ptr noundef %455)
  br label %467

456:                                              ; preds = %442
  %457 = load ptr, ptr %27, align 8, !tbaa !5
  %458 = load ptr, ptr %27, align 8, !tbaa !5
  %459 = load ptr, ptr %26, align 8, !tbaa !5
  %460 = load ptr, ptr %26, align 8, !tbaa !5
  %461 = load ptr, ptr %28, align 8, !tbaa !5
  %462 = load i32, ptr %46, align 4, !tbaa !9
  %463 = sext i32 %462 to i64
  %464 = getelementptr inbounds double, ptr %461, i64 %463
  %465 = load ptr, ptr %29, align 8, !tbaa !5
  %466 = load ptr, ptr %44, align 8, !tbaa !5
  call void @dlascl_(ptr noundef @.str.11, ptr noundef %457, ptr noundef %458, ptr noundef @c_b14, ptr noundef %66, ptr noundef %459, ptr noundef %460, ptr noundef %464, ptr noundef %465, ptr noundef %466)
  br label %467

467:                                              ; preds = %456, %445
  %468 = load ptr, ptr %36, align 8, !tbaa !5
  %469 = load double, ptr %468, align 8, !tbaa !11
  %470 = fcmp ogt double %469, 0.000000e+00
  br i1 %470, label %471, label %476

471:                                              ; preds = %467
  %472 = load ptr, ptr %36, align 8, !tbaa !5
  %473 = load double, ptr %472, align 8, !tbaa !11
  %474 = load double, ptr %66, align 8, !tbaa !11
  %475 = fmul double %473, %474
  store double %475, ptr %78, align 8, !tbaa !11
  br label %476

476:                                              ; preds = %471, %467
  %477 = load i32, ptr %76, align 4, !tbaa !9
  %478 = icmp ne i32 %477, 0
  br i1 %478, label %479, label %488

479:                                              ; preds = %476
  %480 = load ptr, ptr %32, align 8, !tbaa !5
  %481 = load double, ptr %480, align 8, !tbaa !11
  %482 = load double, ptr %66, align 8, !tbaa !11
  %483 = fmul double %481, %482
  store double %483, ptr %86, align 8, !tbaa !11
  %484 = load ptr, ptr %33, align 8, !tbaa !5
  %485 = load double, ptr %484, align 8, !tbaa !11
  %486 = load double, ptr %66, align 8, !tbaa !11
  %487 = fmul double %485, %486
  store double %487, ptr %87, align 8, !tbaa !11
  br label %488

488:                                              ; preds = %479, %476
  br label %489

489:                                              ; preds = %488, %439
  store i32 1, ptr %55, align 4, !tbaa !9
  %490 = load i32, ptr %55, align 4, !tbaa !9
  %491 = load ptr, ptr %26, align 8, !tbaa !5
  %492 = load i32, ptr %491, align 4, !tbaa !9
  %493 = add nsw i32 %490, %492
  store i32 %493, ptr %56, align 4, !tbaa !9
  %494 = load i32, ptr %56, align 4, !tbaa !9
  %495 = load ptr, ptr %26, align 8, !tbaa !5
  %496 = load i32, ptr %495, align 4, !tbaa !9
  %497 = add nsw i32 %494, %496
  store i32 %497, ptr %82, align 4, !tbaa !9
  %498 = load ptr, ptr %23, align 8, !tbaa !5
  %499 = load ptr, ptr %25, align 8, !tbaa !5
  %500 = load ptr, ptr %26, align 8, !tbaa !5
  %501 = load ptr, ptr %27, align 8, !tbaa !5
  %502 = load ptr, ptr %28, align 8, !tbaa !5
  %503 = load i32, ptr %46, align 4, !tbaa !9
  %504 = sext i32 %503 to i64
  %505 = getelementptr inbounds double, ptr %502, i64 %504
  %506 = load ptr, ptr %29, align 8, !tbaa !5
  %507 = load ptr, ptr %41, align 8, !tbaa !5
  %508 = load i32, ptr %55, align 4, !tbaa !9
  %509 = sext i32 %508 to i64
  %510 = getelementptr inbounds double, ptr %507, i64 %509
  %511 = load ptr, ptr %41, align 8, !tbaa !5
  %512 = load i32, ptr %56, align 4, !tbaa !9
  %513 = sext i32 %512 to i64
  %514 = getelementptr inbounds double, ptr %511, i64 %513
  %515 = load ptr, ptr %30, align 8, !tbaa !5
  %516 = load i32, ptr %48, align 4, !tbaa !9
  %517 = sext i32 %516 to i64
  %518 = getelementptr inbounds double, ptr %515, i64 %517
  %519 = load ptr, ptr %31, align 8, !tbaa !5
  %520 = load ptr, ptr %41, align 8, !tbaa !5
  %521 = load i32, ptr %82, align 4, !tbaa !9
  %522 = sext i32 %521 to i64
  %523 = getelementptr inbounds double, ptr %520, i64 %522
  call void @dsbtrd_(ptr noundef %498, ptr noundef %499, ptr noundef %500, ptr noundef %501, ptr noundef %505, ptr noundef %506, ptr noundef %510, ptr noundef %514, ptr noundef %518, ptr noundef %519, ptr noundef %523, ptr noundef %67)
  store i32 0, ptr %61, align 4, !tbaa !9
  %524 = load i32, ptr %73, align 4, !tbaa !9
  %525 = icmp ne i32 %524, 0
  br i1 %525, label %526, label %538

526:                                              ; preds = %489
  %527 = load ptr, ptr %34, align 8, !tbaa !5
  %528 = load i32, ptr %527, align 4, !tbaa !9
  %529 = icmp eq i32 %528, 1
  br i1 %529, label %530, label %537

530:                                              ; preds = %526
  %531 = load ptr, ptr %35, align 8, !tbaa !5
  %532 = load i32, ptr %531, align 4, !tbaa !9
  %533 = load ptr, ptr %26, align 8, !tbaa !5
  %534 = load i32, ptr %533, align 4, !tbaa !9
  %535 = icmp eq i32 %532, %534
  br i1 %535, label %536, label %537

536:                                              ; preds = %530
  store i32 1, ptr %61, align 4, !tbaa !9
  br label %537

537:                                              ; preds = %536, %530, %526
  br label %538

538:                                              ; preds = %537, %489
  %539 = load i32, ptr %72, align 4, !tbaa !9
  %540 = icmp ne i32 %539, 0
  br i1 %540, label %544, label %541

541:                                              ; preds = %538
  %542 = load i32, ptr %61, align 4, !tbaa !9
  %543 = icmp ne i32 %542, 0
  br i1 %543, label %544, label %655

544:                                              ; preds = %541, %538
  %545 = load ptr, ptr %36, align 8, !tbaa !5
  %546 = load double, ptr %545, align 8, !tbaa !11
  %547 = fcmp ole double %546, 0.000000e+00
  br i1 %547, label %548, label %655

548:                                              ; preds = %544
  %549 = load ptr, ptr %26, align 8, !tbaa !5
  %550 = load ptr, ptr %41, align 8, !tbaa !5
  %551 = load i32, ptr %55, align 4, !tbaa !9
  %552 = sext i32 %551 to i64
  %553 = getelementptr inbounds double, ptr %550, i64 %552
  %554 = load ptr, ptr %38, align 8, !tbaa !5
  %555 = getelementptr inbounds double, ptr %554, i64 1
  call void @dcopy_(ptr noundef %549, ptr noundef %553, ptr noundef @c__1, ptr noundef %555, ptr noundef @c__1)
  %556 = load i32, ptr %82, align 4, !tbaa !9
  %557 = load ptr, ptr %26, align 8, !tbaa !5
  %558 = load i32, ptr %557, align 4, !tbaa !9
  %559 = shl i32 %558, 1
  %560 = add nsw i32 %556, %559
  store i32 %560, ptr %65, align 4, !tbaa !9
  %561 = load i32, ptr %70, align 4, !tbaa !9
  %562 = icmp ne i32 %561, 0
  br i1 %562, label %583, label %563

563:                                              ; preds = %548
  %564 = load ptr, ptr %26, align 8, !tbaa !5
  %565 = load i32, ptr %564, align 4, !tbaa !9
  %566 = sub nsw i32 %565, 1
  store i32 %566, ptr %51, align 4, !tbaa !9
  %567 = load ptr, ptr %41, align 8, !tbaa !5
  %568 = load i32, ptr %56, align 4, !tbaa !9
  %569 = sext i32 %568 to i64
  %570 = getelementptr inbounds double, ptr %567, i64 %569
  %571 = load ptr, ptr %41, align 8, !tbaa !5
  %572 = load i32, ptr %65, align 4, !tbaa !9
  %573 = sext i32 %572 to i64
  %574 = getelementptr inbounds double, ptr %571, i64 %573
  call void @dcopy_(ptr noundef %51, ptr noundef %570, ptr noundef @c__1, ptr noundef %574, ptr noundef @c__1)
  %575 = load ptr, ptr %26, align 8, !tbaa !5
  %576 = load ptr, ptr %38, align 8, !tbaa !5
  %577 = getelementptr inbounds double, ptr %576, i64 1
  %578 = load ptr, ptr %41, align 8, !tbaa !5
  %579 = load i32, ptr %65, align 4, !tbaa !9
  %580 = sext i32 %579 to i64
  %581 = getelementptr inbounds double, ptr %578, i64 %580
  %582 = load ptr, ptr %44, align 8, !tbaa !5
  call void @dsterf_(ptr noundef %575, ptr noundef %577, ptr noundef %581, ptr noundef %582)
  br label %645

583:                                              ; preds = %548
  %584 = load ptr, ptr %26, align 8, !tbaa !5
  %585 = load ptr, ptr %26, align 8, !tbaa !5
  %586 = load ptr, ptr %30, align 8, !tbaa !5
  %587 = load i32, ptr %48, align 4, !tbaa !9
  %588 = sext i32 %587 to i64
  %589 = getelementptr inbounds double, ptr %586, i64 %588
  %590 = load ptr, ptr %31, align 8, !tbaa !5
  %591 = load ptr, ptr %39, align 8, !tbaa !5
  %592 = load i32, ptr %50, align 4, !tbaa !9
  %593 = sext i32 %592 to i64
  %594 = getelementptr inbounds double, ptr %591, i64 %593
  %595 = load ptr, ptr %40, align 8, !tbaa !5
  call void @dlacpy_(ptr noundef @.str.1, ptr noundef %584, ptr noundef %585, ptr noundef %589, ptr noundef %590, ptr noundef %594, ptr noundef %595)
  %596 = load ptr, ptr %26, align 8, !tbaa !5
  %597 = load i32, ptr %596, align 4, !tbaa !9
  %598 = sub nsw i32 %597, 1
  store i32 %598, ptr %51, align 4, !tbaa !9
  %599 = load ptr, ptr %41, align 8, !tbaa !5
  %600 = load i32, ptr %56, align 4, !tbaa !9
  %601 = sext i32 %600 to i64
  %602 = getelementptr inbounds double, ptr %599, i64 %601
  %603 = load ptr, ptr %41, align 8, !tbaa !5
  %604 = load i32, ptr %65, align 4, !tbaa !9
  %605 = sext i32 %604 to i64
  %606 = getelementptr inbounds double, ptr %603, i64 %605
  call void @dcopy_(ptr noundef %51, ptr noundef %602, ptr noundef @c__1, ptr noundef %606, ptr noundef @c__1)
  %607 = load ptr, ptr %23, align 8, !tbaa !5
  %608 = load ptr, ptr %26, align 8, !tbaa !5
  %609 = load ptr, ptr %38, align 8, !tbaa !5
  %610 = getelementptr inbounds double, ptr %609, i64 1
  %611 = load ptr, ptr %41, align 8, !tbaa !5
  %612 = load i32, ptr %65, align 4, !tbaa !9
  %613 = sext i32 %612 to i64
  %614 = getelementptr inbounds double, ptr %611, i64 %613
  %615 = load ptr, ptr %39, align 8, !tbaa !5
  %616 = load i32, ptr %50, align 4, !tbaa !9
  %617 = sext i32 %616 to i64
  %618 = getelementptr inbounds double, ptr %615, i64 %617
  %619 = load ptr, ptr %40, align 8, !tbaa !5
  %620 = load ptr, ptr %41, align 8, !tbaa !5
  %621 = load i32, ptr %82, align 4, !tbaa !9
  %622 = sext i32 %621 to i64
  %623 = getelementptr inbounds double, ptr %620, i64 %622
  %624 = load ptr, ptr %44, align 8, !tbaa !5
  call void @dsteqr_(ptr noundef %607, ptr noundef %608, ptr noundef %610, ptr noundef %614, ptr noundef %618, ptr noundef %619, ptr noundef %623, ptr noundef %624)
  %625 = load ptr, ptr %44, align 8, !tbaa !5
  %626 = load i32, ptr %625, align 4, !tbaa !9
  %627 = icmp eq i32 %626, 0
  br i1 %627, label %628, label %644

628:                                              ; preds = %583
  %629 = load ptr, ptr %26, align 8, !tbaa !5
  %630 = load i32, ptr %629, align 4, !tbaa !9
  store i32 %630, ptr %51, align 4, !tbaa !9
  store i32 1, ptr %63, align 4, !tbaa !9
  br label %631

631:                                              ; preds = %640, %628
  %632 = load i32, ptr %63, align 4, !tbaa !9
  %633 = load i32, ptr %51, align 4, !tbaa !9
  %634 = icmp sle i32 %632, %633
  br i1 %634, label %635, label %643

635:                                              ; preds = %631
  %636 = load ptr, ptr %43, align 8, !tbaa !5
  %637 = load i32, ptr %63, align 4, !tbaa !9
  %638 = sext i32 %637 to i64
  %639 = getelementptr inbounds i32, ptr %636, i64 %638
  store i32 0, ptr %639, align 4, !tbaa !9
  br label %640

640:                                              ; preds = %635
  %641 = load i32, ptr %63, align 4, !tbaa !9
  %642 = add nsw i32 %641, 1
  store i32 %642, ptr %63, align 4, !tbaa !9
  br label %631, !llvm.loop !13

643:                                              ; preds = %631
  br label %644

644:                                              ; preds = %643, %583
  br label %645

645:                                              ; preds = %644, %563
  %646 = load ptr, ptr %44, align 8, !tbaa !5
  %647 = load i32, ptr %646, align 4, !tbaa !9
  %648 = icmp eq i32 %647, 0
  br i1 %648, label %649, label %653

649:                                              ; preds = %645
  %650 = load ptr, ptr %26, align 8, !tbaa !5
  %651 = load i32, ptr %650, align 4, !tbaa !9
  %652 = load ptr, ptr %37, align 8, !tbaa !5
  store i32 %651, ptr %652, align 4, !tbaa !9
  br label %781

653:                                              ; preds = %645
  %654 = load ptr, ptr %44, align 8, !tbaa !5
  store i32 0, ptr %654, align 4, !tbaa !9
  br label %655

655:                                              ; preds = %653, %544, %541
  %656 = load i32, ptr %70, align 4, !tbaa !9
  %657 = icmp ne i32 %656, 0
  br i1 %657, label %658, label %660

658:                                              ; preds = %655
  %659 = getelementptr inbounds [1 x i8], ptr %68, i64 0, i64 0
  store i8 66, ptr %659, align 1, !tbaa !15
  br label %662

660:                                              ; preds = %655
  %661 = getelementptr inbounds [1 x i8], ptr %68, i64 0, i64 0
  store i8 69, ptr %661, align 1, !tbaa !15
  br label %662

662:                                              ; preds = %660, %658
  store i32 1, ptr %75, align 4, !tbaa !9
  %663 = load i32, ptr %75, align 4, !tbaa !9
  %664 = load ptr, ptr %26, align 8, !tbaa !5
  %665 = load i32, ptr %664, align 4, !tbaa !9
  %666 = add nsw i32 %663, %665
  store i32 %666, ptr %80, align 4, !tbaa !9
  %667 = load i32, ptr %80, align 4, !tbaa !9
  %668 = load ptr, ptr %26, align 8, !tbaa !5
  %669 = load i32, ptr %668, align 4, !tbaa !9
  %670 = add nsw i32 %667, %669
  store i32 %670, ptr %81, align 4, !tbaa !9
  %671 = load ptr, ptr %24, align 8, !tbaa !5
  %672 = getelementptr inbounds [1 x i8], ptr %68, i64 0, i64 0
  %673 = load ptr, ptr %26, align 8, !tbaa !5
  %674 = load ptr, ptr %34, align 8, !tbaa !5
  %675 = load ptr, ptr %35, align 8, !tbaa !5
  %676 = load ptr, ptr %41, align 8, !tbaa !5
  %677 = load i32, ptr %55, align 4, !tbaa !9
  %678 = sext i32 %677 to i64
  %679 = getelementptr inbounds double, ptr %676, i64 %678
  %680 = load ptr, ptr %41, align 8, !tbaa !5
  %681 = load i32, ptr %56, align 4, !tbaa !9
  %682 = sext i32 %681 to i64
  %683 = getelementptr inbounds double, ptr %680, i64 %682
  %684 = load ptr, ptr %37, align 8, !tbaa !5
  %685 = load ptr, ptr %38, align 8, !tbaa !5
  %686 = getelementptr inbounds double, ptr %685, i64 1
  %687 = load ptr, ptr %42, align 8, !tbaa !5
  %688 = load i32, ptr %75, align 4, !tbaa !9
  %689 = sext i32 %688 to i64
  %690 = getelementptr inbounds i32, ptr %687, i64 %689
  %691 = load ptr, ptr %42, align 8, !tbaa !5
  %692 = load i32, ptr %80, align 4, !tbaa !9
  %693 = sext i32 %692 to i64
  %694 = getelementptr inbounds i32, ptr %691, i64 %693
  %695 = load ptr, ptr %41, align 8, !tbaa !5
  %696 = load i32, ptr %82, align 4, !tbaa !9
  %697 = sext i32 %696 to i64
  %698 = getelementptr inbounds double, ptr %695, i64 %697
  %699 = load ptr, ptr %42, align 8, !tbaa !5
  %700 = load i32, ptr %81, align 4, !tbaa !9
  %701 = sext i32 %700 to i64
  %702 = getelementptr inbounds i32, ptr %699, i64 %701
  %703 = load ptr, ptr %44, align 8, !tbaa !5
  call void @dstebz_(ptr noundef %671, ptr noundef %672, ptr noundef %673, ptr noundef %86, ptr noundef %87, ptr noundef %674, ptr noundef %675, ptr noundef %78, ptr noundef %679, ptr noundef %683, ptr noundef %684, ptr noundef %83, ptr noundef %686, ptr noundef %690, ptr noundef %694, ptr noundef %698, ptr noundef %702, ptr noundef %703)
  %704 = load i32, ptr %70, align 4, !tbaa !9
  %705 = icmp ne i32 %704, 0
  br i1 %705, label %706, label %780

706:                                              ; preds = %662
  %707 = load ptr, ptr %26, align 8, !tbaa !5
  %708 = load ptr, ptr %41, align 8, !tbaa !5
  %709 = load i32, ptr %55, align 4, !tbaa !9
  %710 = sext i32 %709 to i64
  %711 = getelementptr inbounds double, ptr %708, i64 %710
  %712 = load ptr, ptr %41, align 8, !tbaa !5
  %713 = load i32, ptr %56, align 4, !tbaa !9
  %714 = sext i32 %713 to i64
  %715 = getelementptr inbounds double, ptr %712, i64 %714
  %716 = load ptr, ptr %37, align 8, !tbaa !5
  %717 = load ptr, ptr %38, align 8, !tbaa !5
  %718 = getelementptr inbounds double, ptr %717, i64 1
  %719 = load ptr, ptr %42, align 8, !tbaa !5
  %720 = load i32, ptr %75, align 4, !tbaa !9
  %721 = sext i32 %720 to i64
  %722 = getelementptr inbounds i32, ptr %719, i64 %721
  %723 = load ptr, ptr %42, align 8, !tbaa !5
  %724 = load i32, ptr %80, align 4, !tbaa !9
  %725 = sext i32 %724 to i64
  %726 = getelementptr inbounds i32, ptr %723, i64 %725
  %727 = load ptr, ptr %39, align 8, !tbaa !5
  %728 = load i32, ptr %50, align 4, !tbaa !9
  %729 = sext i32 %728 to i64
  %730 = getelementptr inbounds double, ptr %727, i64 %729
  %731 = load ptr, ptr %40, align 8, !tbaa !5
  %732 = load ptr, ptr %41, align 8, !tbaa !5
  %733 = load i32, ptr %82, align 4, !tbaa !9
  %734 = sext i32 %733 to i64
  %735 = getelementptr inbounds double, ptr %732, i64 %734
  %736 = load ptr, ptr %42, align 8, !tbaa !5
  %737 = load i32, ptr %81, align 4, !tbaa !9
  %738 = sext i32 %737 to i64
  %739 = getelementptr inbounds i32, ptr %736, i64 %738
  %740 = load ptr, ptr %43, align 8, !tbaa !5
  %741 = getelementptr inbounds i32, ptr %740, i64 1
  %742 = load ptr, ptr %44, align 8, !tbaa !5
  call void @dstein_(ptr noundef %707, ptr noundef %711, ptr noundef %715, ptr noundef %716, ptr noundef %718, ptr noundef %722, ptr noundef %726, ptr noundef %730, ptr noundef %731, ptr noundef %735, ptr noundef %739, ptr noundef %741, ptr noundef %742)
  %743 = load ptr, ptr %37, align 8, !tbaa !5
  %744 = load i32, ptr %743, align 4, !tbaa !9
  store i32 %744, ptr %51, align 4, !tbaa !9
  store i32 1, ptr %64, align 4, !tbaa !9
  br label %745

745:                                              ; preds = %776, %706
  %746 = load i32, ptr %64, align 4, !tbaa !9
  %747 = load i32, ptr %51, align 4, !tbaa !9
  %748 = icmp sle i32 %746, %747
  br i1 %748, label %749, label %779

749:                                              ; preds = %745
  %750 = load ptr, ptr %26, align 8, !tbaa !5
  %751 = load ptr, ptr %39, align 8, !tbaa !5
  %752 = load i32, ptr %64, align 4, !tbaa !9
  %753 = load i32, ptr %49, align 4, !tbaa !9
  %754 = mul nsw i32 %752, %753
  %755 = add nsw i32 %754, 1
  %756 = sext i32 %755 to i64
  %757 = getelementptr inbounds double, ptr %751, i64 %756
  %758 = load ptr, ptr %41, align 8, !tbaa !5
  %759 = getelementptr inbounds double, ptr %758, i64 1
  call void @dcopy_(ptr noundef %750, ptr noundef %757, ptr noundef @c__1, ptr noundef %759, ptr noundef @c__1)
  %760 = load ptr, ptr %26, align 8, !tbaa !5
  %761 = load ptr, ptr %26, align 8, !tbaa !5
  %762 = load ptr, ptr %30, align 8, !tbaa !5
  %763 = load i32, ptr %48, align 4, !tbaa !9
  %764 = sext i32 %763 to i64
  %765 = getelementptr inbounds double, ptr %762, i64 %764
  %766 = load ptr, ptr %31, align 8, !tbaa !5
  %767 = load ptr, ptr %41, align 8, !tbaa !5
  %768 = getelementptr inbounds double, ptr %767, i64 1
  %769 = load ptr, ptr %39, align 8, !tbaa !5
  %770 = load i32, ptr %64, align 4, !tbaa !9
  %771 = load i32, ptr %49, align 4, !tbaa !9
  %772 = mul nsw i32 %770, %771
  %773 = add nsw i32 %772, 1
  %774 = sext i32 %773 to i64
  %775 = getelementptr inbounds double, ptr %769, i64 %774
  call void @dgemv_(ptr noundef @.str.4, ptr noundef %760, ptr noundef %761, ptr noundef @c_b14, ptr noundef %765, ptr noundef %766, ptr noundef %768, ptr noundef @c__1, ptr noundef @c_b34, ptr noundef %775, ptr noundef @c__1)
  br label %776

776:                                              ; preds = %749
  %777 = load i32, ptr %64, align 4, !tbaa !9
  %778 = add nsw i32 %777, 1
  store i32 %778, ptr %64, align 4, !tbaa !9
  br label %745, !llvm.loop !16

779:                                              ; preds = %745
  br label %780

780:                                              ; preds = %779, %662
  br label %781

781:                                              ; preds = %780, %649
  %782 = load i32, ptr %74, align 4, !tbaa !9
  %783 = icmp eq i32 %782, 1
  br i1 %783, label %784, label %800

784:                                              ; preds = %781
  %785 = load ptr, ptr %44, align 8, !tbaa !5
  %786 = load i32, ptr %785, align 4, !tbaa !9
  %787 = icmp eq i32 %786, 0
  br i1 %787, label %788, label %791

788:                                              ; preds = %784
  %789 = load ptr, ptr %37, align 8, !tbaa !5
  %790 = load i32, ptr %789, align 4, !tbaa !9
  store i32 %790, ptr %58, align 4, !tbaa !9
  br label %795

791:                                              ; preds = %784
  %792 = load ptr, ptr %44, align 8, !tbaa !5
  %793 = load i32, ptr %792, align 4, !tbaa !9
  %794 = sub nsw i32 %793, 1
  store i32 %794, ptr %58, align 4, !tbaa !9
  br label %795

795:                                              ; preds = %791, %788
  %796 = load double, ptr %66, align 8, !tbaa !11
  %797 = fdiv double 1.000000e+00, %796
  store double %797, ptr %53, align 8, !tbaa !11
  %798 = load ptr, ptr %38, align 8, !tbaa !5
  %799 = getelementptr inbounds double, ptr %798, i64 1
  call void @dscal_(ptr noundef %58, ptr noundef %53, ptr noundef %799, ptr noundef @c__1)
  br label %800

800:                                              ; preds = %795, %781
  %801 = load i32, ptr %70, align 4, !tbaa !9
  %802 = icmp ne i32 %801, 0
  br i1 %802, label %803, label %937

803:                                              ; preds = %800
  %804 = load ptr, ptr %37, align 8, !tbaa !5
  %805 = load i32, ptr %804, align 4, !tbaa !9
  %806 = sub nsw i32 %805, 1
  store i32 %806, ptr %51, align 4, !tbaa !9
  store i32 1, ptr %64, align 4, !tbaa !9
  br label %807

807:                                              ; preds = %933, %803
  %808 = load i32, ptr %64, align 4, !tbaa !9
  %809 = load i32, ptr %51, align 4, !tbaa !9
  %810 = icmp sle i32 %808, %809
  br i1 %810, label %811, label %936

811:                                              ; preds = %807
  store i32 0, ptr %63, align 4, !tbaa !9
  %812 = load ptr, ptr %38, align 8, !tbaa !5
  %813 = load i32, ptr %64, align 4, !tbaa !9
  %814 = sext i32 %813 to i64
  %815 = getelementptr inbounds double, ptr %812, i64 %814
  %816 = load double, ptr %815, align 8, !tbaa !11
  store double %816, ptr %88, align 8, !tbaa !11
  %817 = load ptr, ptr %37, align 8, !tbaa !5
  %818 = load i32, ptr %817, align 4, !tbaa !9
  store i32 %818, ptr %52, align 4, !tbaa !9
  %819 = load i32, ptr %64, align 4, !tbaa !9
  %820 = add nsw i32 %819, 1
  store i32 %820, ptr %71, align 4, !tbaa !9
  br label %821

821:                                              ; preds = %841, %811
  %822 = load i32, ptr %71, align 4, !tbaa !9
  %823 = load i32, ptr %52, align 4, !tbaa !9
  %824 = icmp sle i32 %822, %823
  br i1 %824, label %825, label %844

825:                                              ; preds = %821
  %826 = load ptr, ptr %38, align 8, !tbaa !5
  %827 = load i32, ptr %71, align 4, !tbaa !9
  %828 = sext i32 %827 to i64
  %829 = getelementptr inbounds double, ptr %826, i64 %828
  %830 = load double, ptr %829, align 8, !tbaa !11
  %831 = load double, ptr %88, align 8, !tbaa !11
  %832 = fcmp olt double %830, %831
  br i1 %832, label %833, label %840

833:                                              ; preds = %825
  %834 = load i32, ptr %71, align 4, !tbaa !9
  store i32 %834, ptr %63, align 4, !tbaa !9
  %835 = load ptr, ptr %38, align 8, !tbaa !5
  %836 = load i32, ptr %71, align 4, !tbaa !9
  %837 = sext i32 %836 to i64
  %838 = getelementptr inbounds double, ptr %835, i64 %837
  %839 = load double, ptr %838, align 8, !tbaa !11
  store double %839, ptr %88, align 8, !tbaa !11
  br label %840

840:                                              ; preds = %833, %825
  br label %841

841:                                              ; preds = %840
  %842 = load i32, ptr %71, align 4, !tbaa !9
  %843 = add nsw i32 %842, 1
  store i32 %843, ptr %71, align 4, !tbaa !9
  br label %821, !llvm.loop !17

844:                                              ; preds = %821
  %845 = load i32, ptr %63, align 4, !tbaa !9
  %846 = icmp ne i32 %845, 0
  br i1 %846, label %847, label %932

847:                                              ; preds = %844
  %848 = load ptr, ptr %42, align 8, !tbaa !5
  %849 = load i32, ptr %75, align 4, !tbaa !9
  %850 = load i32, ptr %63, align 4, !tbaa !9
  %851 = add nsw i32 %849, %850
  %852 = sub nsw i32 %851, 1
  %853 = sext i32 %852 to i64
  %854 = getelementptr inbounds i32, ptr %848, i64 %853
  %855 = load i32, ptr %854, align 4, !tbaa !9
  store i32 %855, ptr %62, align 4, !tbaa !9
  %856 = load ptr, ptr %38, align 8, !tbaa !5
  %857 = load i32, ptr %64, align 4, !tbaa !9
  %858 = sext i32 %857 to i64
  %859 = getelementptr inbounds double, ptr %856, i64 %858
  %860 = load double, ptr %859, align 8, !tbaa !11
  %861 = load ptr, ptr %38, align 8, !tbaa !5
  %862 = load i32, ptr %63, align 4, !tbaa !9
  %863 = sext i32 %862 to i64
  %864 = getelementptr inbounds double, ptr %861, i64 %863
  store double %860, ptr %864, align 8, !tbaa !11
  %865 = load ptr, ptr %42, align 8, !tbaa !5
  %866 = load i32, ptr %75, align 4, !tbaa !9
  %867 = load i32, ptr %64, align 4, !tbaa !9
  %868 = add nsw i32 %866, %867
  %869 = sub nsw i32 %868, 1
  %870 = sext i32 %869 to i64
  %871 = getelementptr inbounds i32, ptr %865, i64 %870
  %872 = load i32, ptr %871, align 4, !tbaa !9
  %873 = load ptr, ptr %42, align 8, !tbaa !5
  %874 = load i32, ptr %75, align 4, !tbaa !9
  %875 = load i32, ptr %63, align 4, !tbaa !9
  %876 = add nsw i32 %874, %875
  %877 = sub nsw i32 %876, 1
  %878 = sext i32 %877 to i64
  %879 = getelementptr inbounds i32, ptr %873, i64 %878
  store i32 %872, ptr %879, align 4, !tbaa !9
  %880 = load double, ptr %88, align 8, !tbaa !11
  %881 = load ptr, ptr %38, align 8, !tbaa !5
  %882 = load i32, ptr %64, align 4, !tbaa !9
  %883 = sext i32 %882 to i64
  %884 = getelementptr inbounds double, ptr %881, i64 %883
  store double %880, ptr %884, align 8, !tbaa !11
  %885 = load i32, ptr %62, align 4, !tbaa !9
  %886 = load ptr, ptr %42, align 8, !tbaa !5
  %887 = load i32, ptr %75, align 4, !tbaa !9
  %888 = load i32, ptr %64, align 4, !tbaa !9
  %889 = add nsw i32 %887, %888
  %890 = sub nsw i32 %889, 1
  %891 = sext i32 %890 to i64
  %892 = getelementptr inbounds i32, ptr %886, i64 %891
  store i32 %885, ptr %892, align 4, !tbaa !9
  %893 = load ptr, ptr %26, align 8, !tbaa !5
  %894 = load ptr, ptr %39, align 8, !tbaa !5
  %895 = load i32, ptr %63, align 4, !tbaa !9
  %896 = load i32, ptr %49, align 4, !tbaa !9
  %897 = mul nsw i32 %895, %896
  %898 = add nsw i32 %897, 1
  %899 = sext i32 %898 to i64
  %900 = getelementptr inbounds double, ptr %894, i64 %899
  %901 = load ptr, ptr %39, align 8, !tbaa !5
  %902 = load i32, ptr %64, align 4, !tbaa !9
  %903 = load i32, ptr %49, align 4, !tbaa !9
  %904 = mul nsw i32 %902, %903
  %905 = add nsw i32 %904, 1
  %906 = sext i32 %905 to i64
  %907 = getelementptr inbounds double, ptr %901, i64 %906
  call void @dswap_(ptr noundef %893, ptr noundef %900, ptr noundef @c__1, ptr noundef %907, ptr noundef @c__1)
  %908 = load ptr, ptr %44, align 8, !tbaa !5
  %909 = load i32, ptr %908, align 4, !tbaa !9
  %910 = icmp ne i32 %909, 0
  br i1 %910, label %911, label %931

911:                                              ; preds = %847
  %912 = load ptr, ptr %43, align 8, !tbaa !5
  %913 = load i32, ptr %63, align 4, !tbaa !9
  %914 = sext i32 %913 to i64
  %915 = getelementptr inbounds i32, ptr %912, i64 %914
  %916 = load i32, ptr %915, align 4, !tbaa !9
  store i32 %916, ptr %62, align 4, !tbaa !9
  %917 = load ptr, ptr %43, align 8, !tbaa !5
  %918 = load i32, ptr %64, align 4, !tbaa !9
  %919 = sext i32 %918 to i64
  %920 = getelementptr inbounds i32, ptr %917, i64 %919
  %921 = load i32, ptr %920, align 4, !tbaa !9
  %922 = load ptr, ptr %43, align 8, !tbaa !5
  %923 = load i32, ptr %63, align 4, !tbaa !9
  %924 = sext i32 %923 to i64
  %925 = getelementptr inbounds i32, ptr %922, i64 %924
  store i32 %921, ptr %925, align 4, !tbaa !9
  %926 = load i32, ptr %62, align 4, !tbaa !9
  %927 = load ptr, ptr %43, align 8, !tbaa !5
  %928 = load i32, ptr %64, align 4, !tbaa !9
  %929 = sext i32 %928 to i64
  %930 = getelementptr inbounds i32, ptr %927, i64 %929
  store i32 %926, ptr %930, align 4, !tbaa !9
  br label %931

931:                                              ; preds = %911, %847
  br label %932

932:                                              ; preds = %931, %844
  br label %933

933:                                              ; preds = %932
  %934 = load i32, ptr %64, align 4, !tbaa !9
  %935 = add nsw i32 %934, 1
  store i32 %935, ptr %64, align 4, !tbaa !9
  br label %807, !llvm.loop !18

936:                                              ; preds = %807
  br label %937

937:                                              ; preds = %936, %800
  store i32 1, ptr %89, align 4
  br label %938

938:                                              ; preds = %937, %372, %313, %303
  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 4, ptr %83) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %82) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %81) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %80) #4
  call void @llvm.lifetime.end.p0(i64 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 4, ptr %76) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %75) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %74) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %73) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %72) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %71) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %70) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %69) #4
  call void @llvm.lifetime.end.p0(i64 1, ptr %68) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %67) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %65) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %64) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %63) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %62) #4
  call void @llvm.lifetime.end.p0(i64 4, 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 4, ptr %58) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %56) #4
  call void @llvm.lifetime.end.p0(i64 4, 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 4, ptr %52) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #4
  ret void
}

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

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

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

declare double @dlamch_(ptr noundef) #2

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

@.str = external hidden unnamed_addr constant [2 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [2 x i8], align 1
@.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 i32, align 4
@c_b34 = external hidden global double, align 8

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

48:                                               ; preds = %22
  %49 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.4) #6
  %.not372 = icmp eq i32 %49, 0
  br i1 %.not372, label %.thread399.sink.split, label %50

50:                                               ; preds = %48, %22
  %51 = icmp ne i32 %44, 0
  %52 = icmp ne i32 %45, 0
  %or.cond = select i1 %51, i1 true, i1 %52
  %53 = icmp ne i32 %46, 0
  %or.cond3 = select i1 %or.cond, i1 true, i1 %53
  br i1 %or.cond3, label %54, label %.thread399.sink.split

54:                                               ; preds = %50
  %.not373 = icmp eq i32 %47, 0
  br i1 %.not373, label %55, label %57

55:                                               ; preds = %54
  %56 = tail call i32 @lsame_(ptr noundef %2, ptr noundef nonnull @.str.5) #6
  %.not374 = icmp eq i32 %56, 0
  br i1 %.not374, label %.thread399.sink.split, label %57

57:                                               ; preds = %55, %54
  %58 = load i32, ptr %3, align 4, !tbaa !5
  %59 = icmp slt i32 %58, 0
  br i1 %59, label %.thread399.sink.split, label %60

60:                                               ; preds = %57
  %61 = load i32, ptr %4, align 4, !tbaa !5
  %62 = icmp slt i32 %61, 0
  br i1 %62, label %.thread399.sink.split, label %63

63:                                               ; preds = %60
  %64 = load i32, ptr %6, align 4, !tbaa !5
  %.not375 = icmp sgt i32 %64, %61
  br i1 %.not375, label %65, label %.thread399.sink.split

65:                                               ; preds = %63
  br i1 %.not, label %66, label %69

66:                                               ; preds = %65
  %67 = load i32, ptr %8, align 4, !tbaa !5
  %spec.select = tail call i32 @llvm.umax.i32(i32 %58, i32 1)
  %68 = icmp slt i32 %67, %spec.select
  br i1 %68, label %.thread399.sink.split, label %69

69:                                               ; preds = %66, %65
  br i1 %52, label %70, label %75

70:                                               ; preds = %69
  %.not412 = icmp eq i32 %58, 0
  br i1 %.not412, label %84, label %71

71:                                               ; preds = %70
  %72 = load double, ptr %10, align 8, !tbaa !9
  %73 = load double, ptr %9, align 8, !tbaa !9
  %74 = fcmp ugt double %72, %73
  br i1 %74, label %84, label %.thread399.sink.split

75:                                               ; preds = %69
  br i1 %53, label %76, label %84

76:                                               ; preds = %75
  %77 = load i32, ptr %11, align 4, !tbaa !5
  %78 = icmp slt i32 %77, 1
  %spec.select392 = tail call i32 @llvm.umax.i32(i32 %58, i32 1)
  %79 = icmp ugt i32 %77, %spec.select392
  %or.cond414 = or i1 %78, %79
  br i1 %or.cond414, label %.thread399.sink.split, label %80

80:                                               ; preds = %76
  %81 = load i32, ptr %12, align 4, !tbaa !5
  %. = tail call i32 @llvm.umin.i32(i32 %58, i32 %77)
  %82 = icmp slt i32 %81, %.
  %83 = icmp ugt i32 %81, %58
  %or.cond411 = or i1 %82, %83
  br i1 %or.cond411, label %.thread399.sink.split, label %84

84:                                               ; preds = %80, %71, %70, %75
  %.pr = load i32, ptr %21, align 4, !tbaa !5
  %85 = icmp eq i32 %.pr, 0
  br i1 %85, label %86, label %.thread399

86:                                               ; preds = %84
  %87 = load i32, ptr %17, align 4, !tbaa !5
  %88 = icmp slt i32 %87, 1
  %89 = icmp ult i32 %87, %58
  %or.cond449 = and i1 %.not, %89
  %or.cond451 = or i1 %88, %or.cond449
  br i1 %or.cond451, label %.thread399.sink.split, label %.thread

.thread399.sink.split:                            ; preds = %86, %80, %76, %71, %66, %63, %60, %57, %55, %50, %48
  %.sink450 = phi i32 [ -1, %48 ], [ -2, %50 ], [ -3, %55 ], [ -4, %57 ], [ -5, %60 ], [ -7, %63 ], [ -9, %66 ], [ -11, %71 ], [ -12, %76 ], [ -13, %80 ], [ -18, %86 ]
  store i32 %.sink450, ptr %21, align 4, !tbaa !5
  br label %.thread399

.thread399:                                       ; preds = %.thread399.sink.split, %84
  %90 = phi i32 [ %.pr, %84 ], [ %.sink450, %.thread399.sink.split ]
  %91 = sub nsw i32 0, %90
  store i32 %91, ptr %23, align 4, !tbaa !5
  %92 = call i32 @xerbla_(ptr noundef nonnull @.str.6, ptr noundef nonnull %23, i32 noundef 6) #6
  br label %.loopexit

.thread:                                          ; preds = %86
  store i32 0, ptr %14, align 4, !tbaa !5
  %93 = load i32, ptr %3, align 4, !tbaa !5
  switch i32 %93, label %110 [
    i32 0, label %.loopexit
    i32 1, label %94
  ]

94:                                               ; preds = %.thread
  store i32 1, ptr %14, align 4, !tbaa !5
  br i1 %.not373, label %95, label %101

95:                                               ; preds = %94
  %96 = load i32, ptr %4, align 4, !tbaa !5
  %97 = add i32 %33, 1
  %98 = add i32 %97, %96
  %99 = sext i32 %98 to i64
  %100 = getelementptr inbounds double, ptr %35, i64 %99
  br label %101

101:                                              ; preds = %94, %95
  %.0.in = phi ptr [ %100, %95 ], [ %5, %94 ]
  %.0 = load double, ptr %.0.in, align 8, !tbaa !9
  %.not390 = icmp eq i32 %45, 0
  br i1 %.not390, label %108, label %102

102:                                              ; preds = %101
  %103 = load double, ptr %9, align 8, !tbaa !9
  %104 = fcmp olt double %103, %.0
  br i1 %104, label %105, label %.thread403

105:                                              ; preds = %102
  %106 = load double, ptr %10, align 8, !tbaa !9
  %107 = fcmp ult double %106, %.0
  br i1 %107, label %.thread403, label %108

.thread403:                                       ; preds = %102, %105
  store i32 0, ptr %14, align 4, !tbaa !5
  br label %.loopexit

108:                                              ; preds = %101, %105
  store double %.0, ptr %15, align 8, !tbaa !9
  br i1 %.not, label %109, label %.loopexit

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

110:                                              ; preds = %.thread
  %111 = tail call double @dlamch_(ptr noundef nonnull @.str.7) #6
  %112 = tail call double @dlamch_(ptr noundef nonnull @.str.8) #6
  %113 = fdiv double %111, %112
  %114 = fdiv double 1.000000e+00, %113
  %115 = tail call double @sqrt(double noundef %113) #6
  %116 = tail call double @sqrt(double noundef %114) #6
  store double %116, ptr %24, align 8, !tbaa !9
  %117 = tail call double @sqrt(double noundef %111) #6
  %118 = tail call double @sqrt(double noundef %117) #6
  %119 = fdiv double 1.000000e+00, %118
  %120 = fcmp ole double %116, %119
  %121 = select i1 %120, double %116, double %119
  %122 = load double, ptr %13, align 8, !tbaa !9
  store double %122, ptr %29, align 8, !tbaa !9
  %.not378 = icmp eq i32 %45, 0
  br i1 %.not378, label %126, label %123

123:                                              ; preds = %110
  %124 = load double, ptr %9, align 8, !tbaa !9
  %125 = load double, ptr %10, align 8, !tbaa !9
  br label %126

126:                                              ; preds = %110, %123
  %.sink = phi double [ %124, %123 ], [ 0.000000e+00, %110 ]
  %storemerge = phi double [ %125, %123 ], [ 0.000000e+00, %110 ]
  store double %.sink, ptr %31, align 8
  store double %storemerge, ptr %32, align 8, !tbaa !9
  %127 = 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
  %128 = fcmp ogt double %127, 0.000000e+00
  %129 = fcmp olt double %127, %115
  %or.cond393 = select i1 %128, i1 %129, i1 false
  br i1 %or.cond393, label %132, label %130

130:                                              ; preds = %126
  %131 = fcmp ogt double %127, %121
  br i1 %131, label %132, label %145

132:                                              ; preds = %130, %126
  %.pn = phi double [ %115, %126 ], [ %121, %130 ]
  %storemerge413 = fdiv double %.pn, %127
  store double %storemerge413, ptr %26, align 8, !tbaa !9
  %.str.11..str.10 = select i1 %.not373, ptr @.str.11, ptr @.str.10
  call void @dlascl_(ptr noundef nonnull %.str.11..str.10, ptr noundef nonnull %4, ptr noundef nonnull %4, ptr noundef nonnull @c_b14, ptr noundef nonnull %26, ptr noundef nonnull %3, ptr noundef nonnull %3, ptr noundef %5, ptr noundef nonnull %6, ptr noundef nonnull %21) #6
  %133 = load double, ptr %13, align 8, !tbaa !9
  %134 = fcmp ogt double %133, 0.000000e+00
  br i1 %134, label %135, label %138

135:                                              ; preds = %132
  %136 = load double, ptr %26, align 8, !tbaa !9
  %137 = fmul double %133, %136
  store double %137, ptr %29, align 8, !tbaa !9
  br label %138

138:                                              ; preds = %135, %132
  br i1 %.not378, label %145, label %139

139:                                              ; preds = %138
  %140 = load double, ptr %9, align 8, !tbaa !9
  %141 = load double, ptr %26, align 8, !tbaa !9
  %142 = fmul double %140, %141
  store double %142, ptr %31, align 8, !tbaa !9
  %143 = load double, ptr %10, align 8, !tbaa !9
  %144 = fmul double %141, %143
  store double %144, ptr %32, align 8, !tbaa !9
  br label %145

145:                                              ; preds = %130, %138, %139
  %146 = phi i1 [ true, %138 ], [ true, %139 ], [ false, %130 ]
  %147 = load i32, ptr %3, align 4, !tbaa !5
  %148 = add nsw i32 %147, 1
  %149 = add nsw i32 %148, %147
  %150 = sext i32 %148 to i64
  %151 = getelementptr inbounds double, ptr %40, i64 %150
  %152 = sext i32 %149 to i64
  %153 = getelementptr inbounds double, ptr %40, i64 %152
  call void @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 nonnull %151, ptr noundef %7, ptr noundef %8, ptr noundef nonnull %153, ptr noundef nonnull %27) #6
  %.not380 = icmp eq i32 %46, 0
  br i1 %.not380, label %161, label %154

154:                                              ; preds = %145
  %155 = load i32, ptr %11, align 4, !tbaa !5
  %156 = icmp eq i32 %155, 1
  br i1 %156, label %157, label %161

157:                                              ; preds = %154
  %158 = load i32, ptr %12, align 4, !tbaa !5
  %159 = load i32, ptr %3, align 4, !tbaa !5
  %160 = icmp eq i32 %158, %159
  br label %161

161:                                              ; preds = %157, %154, %145
  %162 = phi i1 [ false, %154 ], [ false, %145 ], [ %160, %157 ]
  %or.cond5 = or i1 %51, %162
  br i1 %or.cond5, label %163, label %188

163:                                              ; preds = %161
  %164 = load double, ptr %13, align 8, !tbaa !9
  %165 = fcmp ugt double %164, 0.000000e+00
  br i1 %165, label %188, label %166

166:                                              ; preds = %163
  call void @dcopy_(ptr noundef nonnull %3, ptr noundef %18, ptr noundef nonnull @c__1, ptr noundef %15, ptr noundef nonnull @c__1) #6
  %167 = load i32, ptr %3, align 4, !tbaa !5
  %168 = shl i32 %167, 1
  %169 = add nsw i32 %168, %149
  br i1 %.not, label %174, label %170

170:                                              ; preds = %166
  %171 = add nsw i32 %167, -1
  store i32 %171, ptr %23, align 4, !tbaa !5
  %172 = sext i32 %169 to i64
  %173 = getelementptr inbounds double, ptr %40, i64 %172
  call void @dcopy_(ptr noundef nonnull %23, ptr noundef nonnull %151, ptr noundef nonnull @c__1, ptr noundef nonnull %173, ptr noundef nonnull @c__1) #6
  call void @dsterf_(ptr noundef nonnull %3, ptr noundef %15, ptr noundef nonnull %173, ptr noundef nonnull %21) #6
  br label %.loopexit416

174:                                              ; preds = %166
  call void @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
  %175 = load i32, ptr %3, align 4, !tbaa !5
  %176 = add nsw i32 %175, -1
  store i32 %176, ptr %23, align 4, !tbaa !5
  %177 = sext i32 %169 to i64
  %178 = getelementptr inbounds double, ptr %40, i64 %177
  call void @dcopy_(ptr noundef nonnull %23, ptr noundef nonnull %151, ptr noundef nonnull @c__1, ptr noundef nonnull %178, ptr noundef nonnull @c__1) #6
  call void @dsteqr_(ptr noundef %0, ptr noundef nonnull %3, ptr noundef %15, ptr noundef nonnull %178, ptr noundef %16, ptr noundef nonnull %17, ptr noundef nonnull %153, ptr noundef nonnull %21) #6
  %179 = load i32, ptr %21, align 4, !tbaa !5
  %180 = icmp eq i32 %179, 0
  br i1 %180, label %181, label %.thread408

181:                                              ; preds = %174
  %182 = load i32, ptr %3, align 4, !tbaa !5
  store i32 %182, ptr %23, align 4, !tbaa !5
  %.not381417 = icmp slt i32 %182, 1
  br i1 %.not381417, label %.loopexit416, label %.lr.ph.preheader

.lr.ph.preheader:                                 ; preds = %181
  %183 = zext nneg i32 %182 to i64
  %184 = shl nuw nsw i64 %183, 2
  call void @llvm.memset.p0.i64(ptr align 4 %20, i8 0, i64 %184, i1 false), !tbaa !5
  br label %.loopexit416

.loopexit416:                                     ; preds = %.lr.ph.preheader, %181, %170
  %.pr407 = load i32, ptr %21, align 4, !tbaa !5
  %185 = icmp eq i32 %.pr407, 0
  br i1 %185, label %186, label %.thread408

186:                                              ; preds = %.loopexit416
  %187 = load i32, ptr %3, align 4, !tbaa !5
  store i32 %187, ptr %14, align 4, !tbaa !5
  br label %.loopexit415

.thread408:                                       ; preds = %174, %.loopexit416
  store i32 0, ptr %21, align 4, !tbaa !5
  br label %188

188:                                              ; preds = %161, %.thread408, %163
  %.395 = select i1 %.not, i8 66, i8 69
  store i8 %.395, ptr %28, align 1, !tbaa !11
  %189 = load i32, ptr %3, align 4, !tbaa !5
  %190 = add nsw i32 %189, 1
  %191 = add nsw i32 %190, %189
  %192 = sext i32 %190 to i64
  %193 = getelementptr inbounds i32, ptr %41, i64 %192
  %194 = sext i32 %191 to i64
  %195 = getelementptr inbounds i32, ptr %41, i64 %194
  call void @dstebz_(ptr noundef %1, ptr noundef nonnull %28, ptr noundef nonnull %3, ptr noundef nonnull %31, ptr noundef nonnull %32, ptr noundef %11, ptr noundef %12, ptr noundef nonnull %29, ptr noundef %18, ptr noundef nonnull %151, ptr noundef nonnull %14, ptr noundef nonnull %30, ptr noundef %15, ptr noundef %19, ptr noundef nonnull %193, ptr noundef nonnull %153, ptr noundef nonnull %195, ptr noundef nonnull %21) #6
  br i1 %.not, label %196, label %.loopexit415

196:                                              ; preds = %188
  call void @dstein_(ptr noundef nonnull %3, ptr noundef %18, ptr noundef nonnull %151, ptr noundef nonnull %14, ptr noundef %15, ptr noundef %19, ptr noundef nonnull %193, ptr noundef %16, ptr noundef nonnull %17, ptr noundef nonnull %153, ptr noundef nonnull %195, ptr noundef %20, ptr noundef nonnull %21) #6
  %197 = load i32, ptr %14, align 4, !tbaa !5
  store i32 %197, ptr %23, align 4, !tbaa !5
  %invariant.gep = getelementptr i8, ptr %39, i64 8
  %.not383419 = icmp slt i32 %197, 1
  br i1 %.not383419, label %.loopexit415, label %.lr.ph421.preheader

.lr.ph421.preheader:                              ; preds = %196
  %198 = sext i32 %37 to i64
  br label %.lr.ph421

.lr.ph421:                                        ; preds = %.lr.ph421.preheader, %.lr.ph421
  %indvars.iv = phi i64 [ 1, %.lr.ph421.preheader ], [ %indvars.iv.next, %.lr.ph421 ]
  %199 = mul nsw i64 %indvars.iv, %198
  %gep = getelementptr double, ptr %invariant.gep, i64 %199
  call void @dcopy_(ptr noundef nonnull %3, ptr noundef %gep, ptr noundef nonnull @c__1, ptr noundef %18, ptr noundef nonnull @c__1) #6
  call void @dgemv_(ptr noundef nonnull @.str.4, ptr noundef nonnull %3, ptr noundef nonnull %3, ptr noundef nonnull @c_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
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %200 = load i32, ptr %23, align 4, !tbaa !5
  %201 = sext i32 %200 to i64
  %.not383.not = icmp slt i64 %indvars.iv, %201
  br i1 %.not383.not, label %.lr.ph421, label %.loopexit415, !llvm.loop !12

.loopexit415:                                     ; preds = %.lr.ph421, %196, %188, %186
  br i1 %146, label %202, label %212

202:                                              ; preds = %.loopexit415
  %203 = load i32, ptr %21, align 4, !tbaa !5
  %204 = icmp eq i32 %203, 0
  br i1 %204, label %205, label %207

205:                                              ; preds = %202
  %206 = load i32, ptr %14, align 4, !tbaa !5
  br label %209

207:                                              ; preds = %202
  %208 = add nsw i32 %203, -1
  br label %209

209:                                              ; preds = %207, %205
  %storemerge384 = phi i32 [ %208, %207 ], [ %206, %205 ]
  store i32 %storemerge384, ptr %25, align 4, !tbaa !5
  %210 = load double, ptr %26, align 8, !tbaa !9
  %211 = fdiv double 1.000000e+00, %210
  store double %211, ptr %24, align 8, !tbaa !9
  call void @dscal_(ptr noundef nonnull %25, ptr noundef nonnull %24, ptr noundef %15, ptr noundef nonnull @c__1) #6
  br label %212

212:                                              ; preds = %209, %.loopexit415
  br i1 %.not, label %213, label %.loopexit

213:                                              ; preds = %212
  %214 = load i32, ptr %14, align 4, !tbaa !5
  %215 = add nsw i32 %214, -1
  store i32 %215, ptr %23, align 4, !tbaa !5
  %invariant.gep428 = getelementptr i8, ptr %39, i64 8
  %.not385432 = icmp slt i32 %214, 2
  br i1 %.not385432, label %.loopexit, label %.lr.ph435.preheader

.lr.ph435.preheader:                              ; preds = %213
  %216 = sext i32 %37 to i64
  br label %.lr.ph435

.lr.ph435:                                        ; preds = %.lr.ph435.preheader, %._crit_edge.thread
  %indvar = phi i32 [ 0, %.lr.ph435.preheader ], [ %indvar.next, %._crit_edge.thread ]
  %indvars.iv443 = phi i64 [ 1, %.lr.ph435.preheader ], [ %indvars.iv.next444, %._crit_edge.thread ]
  %indvars.iv438 = phi i64 [ 2, %.lr.ph435.preheader ], [ %indvars.iv.next439, %._crit_edge.thread ]
  %217 = getelementptr inbounds double, ptr %36, i64 %indvars.iv443
  %218 = load double, ptr %217, align 8, !tbaa !9
  %219 = load i32, ptr %14, align 4, !tbaa !5
  %indvars.iv.next444 = add nuw nsw i64 %indvars.iv443, 1
  %220 = sext i32 %219 to i64
  %.not386422.not = icmp slt i64 %indvars.iv443, %220
  br i1 %.not386422.not, label %.lr.ph426.preheader, label %._crit_edge.thread

.lr.ph426.preheader:                              ; preds = %.lr.ph435
  %221 = xor i32 %indvar, -1
  %222 = add i32 %219, %221
  %reass.sub = sub i32 %219, %indvar
  %xtraiter = and i32 %222, 1
  %223 = icmp eq i32 %reass.sub, 2
  br i1 %223, label %._crit_edge.unr-lcssa, label %.lr.ph426.preheader.new

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

.lr.ph426:                                        ; preds = %.lr.ph426, %.lr.ph426.preheader.new
  %indvars.iv440 = phi i64 [ %indvars.iv438, %.lr.ph426.preheader.new ], [ %indvars.iv.next441.1, %.lr.ph426 ]
  %.1425 = phi double [ %218, %.lr.ph426.preheader.new ], [ %.2.1, %.lr.ph426 ]
  %.1351424 = phi i32 [ 0, %.lr.ph426.preheader.new ], [ %.2352.1, %.lr.ph426 ]
  %niter = phi i32 [ 0, %.lr.ph426.preheader.new ], [ %niter.next.1, %.lr.ph426 ]
  %224 = getelementptr inbounds double, ptr %36, i64 %indvars.iv440
  %225 = load double, ptr %224, align 8, !tbaa !9
  %226 = fcmp olt double %225, %.1425
  %227 = trunc nuw i64 %indvars.iv440 to i32
  %.2352 = select i1 %226, i32 %227, i32 %.1351424
  %.2 = select i1 %226, double %225, double %.1425
  %228 = getelementptr double, ptr %15, i64 %indvars.iv440
  %229 = load double, ptr %228, align 8, !tbaa !9
  %230 = fcmp olt double %229, %.2
  %231 = trunc i64 %indvars.iv440 to i32
  %232 = add i32 %231, 1
  %.2352.1 = select i1 %230, i32 %232, i32 %.2352
  %.2.1 = select i1 %230, double %229, double %.2
  %indvars.iv.next441.1 = add nuw nsw i64 %indvars.iv440, 2
  %niter.next.1 = add i32 %niter, 2
  %niter.ncmp.1 = icmp eq i32 %niter.next.1, %unroll_iter
  br i1 %niter.ncmp.1, label %._crit_edge.unr-lcssa, label %.lr.ph426, !llvm.loop !14

._crit_edge.unr-lcssa:                            ; preds = %.lr.ph426, %.lr.ph426.preheader
  %.2352.lcssa.ph = phi i32 [ poison, %.lr.ph426.preheader ], [ %.2352.1, %.lr.ph426 ]
  %.2.lcssa.ph = phi double [ poison, %.lr.ph426.preheader ], [ %.2.1, %.lr.ph426 ]
  %indvars.iv440.unr = phi i64 [ %indvars.iv438, %.lr.ph426.preheader ], [ %indvars.iv.next441.1, %.lr.ph426 ]
  %.1425.unr = phi double [ %218, %.lr.ph426.preheader ], [ %.2.1, %.lr.ph426 ]
  %.1351424.unr = phi i32 [ 0, %.lr.ph426.preheader ], [ %.2352.1, %.lr.ph426 ]
  %lcmp.mod.not = icmp eq i32 %xtraiter, 0
  br i1 %lcmp.mod.not, label %._crit_edge, label %.lr.ph426.epil

.lr.ph426.epil:                                   ; preds = %._crit_edge.unr-lcssa
  %233 = getelementptr inbounds double, ptr %36, i64 %indvars.iv440.unr
  %234 = load double, ptr %233, align 8, !tbaa !9
  %235 = fcmp olt double %234, %.1425.unr
  %236 = trunc nuw i64 %indvars.iv440.unr to i32
  %.2352.epil = select i1 %235, i32 %236, i32 %.1351424.unr
  %.2.epil = select i1 %235, double %234, double %.1425.unr
  br label %._crit_edge

._crit_edge:                                      ; preds = %._crit_edge.unr-lcssa, %.lr.ph426.epil
  %.2352.lcssa = phi i32 [ %.2352.lcssa.ph, %._crit_edge.unr-lcssa ], [ %.2352.epil, %.lr.ph426.epil ]
  %.2.lcssa = phi double [ %.2.lcssa.ph, %._crit_edge.unr-lcssa ], [ %.2.epil, %.lr.ph426.epil ]
  %.not387 = icmp eq i32 %.2352.lcssa, 0
  br i1 %.not387, label %._crit_edge.thread, label %237

237:                                              ; preds = %._crit_edge
  %238 = sext i32 %.2352.lcssa to i64
  %239 = getelementptr inbounds i32, ptr %41, i64 %238
  %240 = load i32, ptr %239, align 4, !tbaa !5
  %241 = getelementptr inbounds double, ptr %36, i64 %238
  store double %218, ptr %241, align 8, !tbaa !9
  %242 = getelementptr inbounds i32, ptr %41, i64 %indvars.iv443
  %243 = load i32, ptr %242, align 4, !tbaa !5
  store i32 %243, ptr %239, align 4, !tbaa !5
  store double %.2.lcssa, ptr %217, align 8, !tbaa !9
  store i32 %240, ptr %242, align 4, !tbaa !5
  %244 = mul nsw i32 %.2352.lcssa, %37
  %245 = sext i32 %244 to i64
  %gep429 = getelementptr double, ptr %invariant.gep428, i64 %245
  %246 = mul nsw i64 %indvars.iv443, %216
  %gep431 = getelementptr double, ptr %invariant.gep428, i64 %246
  call void @dswap_(ptr noundef nonnull %3, ptr noundef %gep429, ptr noundef nonnull @c__1, ptr noundef %gep431, ptr noundef nonnull @c__1) #6
  %247 = load i32, ptr %21, align 4, !tbaa !5
  %.not388 = icmp eq i32 %247, 0
  br i1 %.not388, label %._crit_edge.thread, label %248

248:                                              ; preds = %237
  %249 = getelementptr inbounds i32, ptr %42, i64 %238
  %250 = load i32, ptr %249, align 4, !tbaa !5
  %251 = getelementptr inbounds i32, ptr %42, i64 %indvars.iv443
  %252 = load i32, ptr %251, align 4, !tbaa !5
  store i32 %252, ptr %249, align 4, !tbaa !5
  store i32 %250, ptr %251, align 4, !tbaa !5
  br label %._crit_edge.thread

._crit_edge.thread:                               ; preds = %.lr.ph435, %._crit_edge, %248, %237
  %253 = load i32, ptr %23, align 4, !tbaa !5
  %254 = sext i32 %253 to i64
  %.not385.not = icmp slt i64 %indvars.iv443, %254
  %indvars.iv.next439 = add nuw nsw i64 %indvars.iv438, 1
  %indvar.next = add i32 %indvar, 1
  br i1 %.not385.not, label %.lr.ph435, label %.loopexit, !llvm.loop !15

.loopexit:                                        ; preds = %._crit_edge.thread, %213, %.thread403, %212, %109, %108, %.thread, %.thread399
  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 4, ptr nonnull %30) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %29) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %28) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %27) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %25) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %23) #6
  ret void
}

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

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

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

declare double @dlamch_(ptr noundef) local_unnamed_addr #2

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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