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

; Unoptimized IR (clang -disable-llvm-passes):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

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

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

145:                                              ; preds = %25
  %146 = load ptr, ptr %26, align 8, !tbaa !5
  %147 = call i32 @lsame_(ptr noundef %146, ptr noundef @.str.4)
  %148 = icmp ne i32 %147, 0
  br i1 %148, label %151, label %149

149:                                              ; preds = %145
  %150 = load ptr, ptr %50, align 8, !tbaa !5
  store i32 -1, ptr %150, align 4, !tbaa !9
  br label %303

151:                                              ; preds = %145, %25
  %152 = load i32, ptr %74, align 4, !tbaa !9
  %153 = icmp ne i32 %152, 0
  br i1 %153, label %162, label %154

154:                                              ; preds = %151
  %155 = load i32, ptr %77, align 4, !tbaa !9
  %156 = icmp ne i32 %155, 0
  br i1 %156, label %162, label %157

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

160:                                              ; preds = %157
  %161 = load ptr, ptr %50, align 8, !tbaa !5
  store i32 -2, ptr %161, align 4, !tbaa !9
  br label %302

162:                                              ; preds = %157, %154, %151
  %163 = load i32, ptr %71, align 4, !tbaa !9
  %164 = icmp ne i32 %163, 0
  br i1 %164, label %171, label %165

165:                                              ; preds = %162
  %166 = load ptr, ptr %28, align 8, !tbaa !5
  %167 = call i32 @lsame_(ptr noundef %166, ptr noundef @.str.5)
  %168 = icmp ne i32 %167, 0
  br i1 %168, label %171, label %169

169:                                              ; preds = %165
  %170 = load ptr, ptr %50, align 8, !tbaa !5
  store i32 -3, ptr %170, align 4, !tbaa !9
  br label %301

171:                                              ; preds = %165, %162
  %172 = load ptr, ptr %29, align 8, !tbaa !5
  %173 = load i32, ptr %172, align 4, !tbaa !9
  %174 = icmp slt i32 %173, 0
  br i1 %174, label %175, label %177

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

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

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

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

187:                                              ; preds = %183
  %188 = load ptr, ptr %31, align 8, !tbaa !5
  %189 = load i32, ptr %188, align 4, !tbaa !9
  %190 = load ptr, ptr %30, align 8, !tbaa !5
  %191 = load i32, ptr %190, align 4, !tbaa !9
  %192 = icmp sgt i32 %189, %191
  br i1 %192, label %193, label %195

193:                                              ; preds = %187, %183
  %194 = load ptr, ptr %50, align 8, !tbaa !5
  store i32 -6, ptr %194, align 4, !tbaa !9
  br label %298

195:                                              ; preds = %187
  %196 = load ptr, ptr %33, align 8, !tbaa !5
  %197 = load i32, ptr %196, align 4, !tbaa !9
  %198 = load ptr, ptr %30, align 8, !tbaa !5
  %199 = load i32, ptr %198, align 4, !tbaa !9
  %200 = add nsw i32 %199, 1
  %201 = icmp slt i32 %197, %200
  br i1 %201, label %202, label %204

202:                                              ; preds = %195
  %203 = load ptr, ptr %50, align 8, !tbaa !5
  store i32 -8, ptr %203, align 4, !tbaa !9
  br label %297

204:                                              ; preds = %195
  %205 = load ptr, ptr %35, align 8, !tbaa !5
  %206 = load i32, ptr %205, align 4, !tbaa !9
  %207 = load ptr, ptr %31, align 8, !tbaa !5
  %208 = load i32, ptr %207, align 4, !tbaa !9
  %209 = add nsw i32 %208, 1
  %210 = icmp slt i32 %206, %209
  br i1 %210, label %211, label %213

211:                                              ; preds = %204
  %212 = load ptr, ptr %50, align 8, !tbaa !5
  store i32 -10, ptr %212, align 4, !tbaa !9
  br label %296

213:                                              ; preds = %204
  %214 = load ptr, ptr %37, align 8, !tbaa !5
  %215 = load i32, ptr %214, align 4, !tbaa !9
  %216 = icmp slt i32 %215, 1
  br i1 %216, label %226, label %217

217:                                              ; preds = %213
  %218 = load i32, ptr %72, align 4, !tbaa !9
  %219 = icmp ne i32 %218, 0
  br i1 %219, label %220, label %228

220:                                              ; preds = %217
  %221 = load ptr, ptr %37, align 8, !tbaa !5
  %222 = load i32, ptr %221, align 4, !tbaa !9
  %223 = load ptr, ptr %29, align 8, !tbaa !5
  %224 = load i32, ptr %223, align 4, !tbaa !9
  %225 = icmp slt i32 %222, %224
  br i1 %225, label %226, label %228

226:                                              ; preds = %220, %213
  %227 = load ptr, ptr %50, align 8, !tbaa !5
  store i32 -12, ptr %227, align 4, !tbaa !9
  br label %295

228:                                              ; preds = %220, %217
  %229 = load i32, ptr %77, align 4, !tbaa !9
  %230 = icmp ne i32 %229, 0
  br i1 %230, label %231, label %244

231:                                              ; preds = %228
  %232 = load ptr, ptr %29, align 8, !tbaa !5
  %233 = load i32, ptr %232, align 4, !tbaa !9
  %234 = icmp sgt i32 %233, 0
  br i1 %234, label %235, label %243

235:                                              ; preds = %231
  %236 = load ptr, ptr %39, align 8, !tbaa !5
  %237 = load double, ptr %236, align 8, !tbaa !11
  %238 = load ptr, ptr %38, align 8, !tbaa !5
  %239 = load double, ptr %238, align 8, !tbaa !11
  %240 = fcmp ole double %237, %239
  br i1 %240, label %241, label %243

241:                                              ; preds = %235
  %242 = load ptr, ptr %50, align 8, !tbaa !5
  store i32 -14, ptr %242, align 4, !tbaa !9
  br label %243

243:                                              ; preds = %241, %235, %231
  br label %294

244:                                              ; preds = %228
  %245 = load i32, ptr %75, align 4, !tbaa !9
  %246 = icmp ne i32 %245, 0
  br i1 %246, label %247, label %293

247:                                              ; preds = %244
  %248 = load ptr, ptr %40, align 8, !tbaa !5
  %249 = load i32, ptr %248, align 4, !tbaa !9
  %250 = icmp slt i32 %249, 1
  br i1 %250, label %264, label %251

251:                                              ; preds = %247
  %252 = load ptr, ptr %40, align 8, !tbaa !5
  %253 = load i32, ptr %252, align 4, !tbaa !9
  %254 = load ptr, ptr %29, align 8, !tbaa !5
  %255 = load i32, ptr %254, align 4, !tbaa !9
  %256 = icmp sge i32 1, %255
  br i1 %256, label %257, label %258

257:                                              ; preds = %251
  br label %261

258:                                              ; preds = %251
  %259 = load ptr, ptr %29, align 8, !tbaa !5
  %260 = load i32, ptr %259, align 4, !tbaa !9
  br label %261

261:                                              ; preds = %258, %257
  %262 = phi i32 [ 1, %257 ], [ %260, %258 ]
  %263 = icmp sgt i32 %253, %262
  br i1 %263, label %264, label %266

264:                                              ; preds = %261, %247
  %265 = load ptr, ptr %50, align 8, !tbaa !5
  store i32 -15, ptr %265, align 4, !tbaa !9
  br label %292

266:                                              ; preds = %261
  %267 = load ptr, ptr %41, align 8, !tbaa !5
  %268 = load i32, ptr %267, align 4, !tbaa !9
  %269 = load ptr, ptr %29, align 8, !tbaa !5
  %270 = load i32, ptr %269, align 4, !tbaa !9
  %271 = load ptr, ptr %40, align 8, !tbaa !5
  %272 = load i32, ptr %271, align 4, !tbaa !9
  %273 = icmp sle i32 %270, %272
  br i1 %273, label %274, label %277

274:                                              ; preds = %266
  %275 = load ptr, ptr %29, align 8, !tbaa !5
  %276 = load i32, ptr %275, align 4, !tbaa !9
  br label %280

277:                                              ; preds = %266
  %278 = load ptr, ptr %40, align 8, !tbaa !5
  %279 = load i32, ptr %278, align 4, !tbaa !9
  br label %280

280:                                              ; preds = %277, %274
  %281 = phi i32 [ %276, %274 ], [ %279, %277 ]
  %282 = icmp slt i32 %268, %281
  br i1 %282, label %289, label %283

283:                                              ; preds = %280
  %284 = load ptr, ptr %41, align 8, !tbaa !5
  %285 = load i32, ptr %284, align 4, !tbaa !9
  %286 = load ptr, ptr %29, align 8, !tbaa !5
  %287 = load i32, ptr %286, align 4, !tbaa !9
  %288 = icmp sgt i32 %285, %287
  br i1 %288, label %289, label %291

289:                                              ; preds = %283, %280
  %290 = load ptr, ptr %50, align 8, !tbaa !5
  store i32 -16, ptr %290, align 4, !tbaa !9
  br label %291

291:                                              ; preds = %289, %283
  br label %292

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

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

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

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

296:                                              ; preds = %295, %211
  br label %297

297:                                              ; preds = %296, %202
  br label %298

298:                                              ; preds = %297, %193
  br label %299

299:                                              ; preds = %298, %181
  br label %300

300:                                              ; preds = %299, %175
  br label %301

301:                                              ; preds = %300, %169
  br label %302

302:                                              ; preds = %301, %160
  br label %303

303:                                              ; preds = %302, %149
  %304 = load ptr, ptr %50, align 8, !tbaa !5
  %305 = load i32, ptr %304, align 4, !tbaa !9
  %306 = icmp eq i32 %305, 0
  br i1 %306, label %307, label %323

307:                                              ; preds = %303
  %308 = load ptr, ptr %46, align 8, !tbaa !5
  %309 = load i32, ptr %308, align 4, !tbaa !9
  %310 = icmp slt i32 %309, 1
  br i1 %310, label %320, label %311

311:                                              ; preds = %307
  %312 = load i32, ptr %72, align 4, !tbaa !9
  %313 = icmp ne i32 %312, 0
  br i1 %313, label %314, label %322

314:                                              ; preds = %311
  %315 = load ptr, ptr %46, align 8, !tbaa !5
  %316 = load i32, ptr %315, align 4, !tbaa !9
  %317 = load ptr, ptr %29, align 8, !tbaa !5
  %318 = load i32, ptr %317, align 4, !tbaa !9
  %319 = icmp slt i32 %316, %318
  br i1 %319, label %320, label %322

320:                                              ; preds = %314, %307
  %321 = load ptr, ptr %50, align 8, !tbaa !5
  store i32 -21, ptr %321, align 4, !tbaa !9
  br label %322

322:                                              ; preds = %320, %314, %311
  br label %323

323:                                              ; preds = %322, %303
  %324 = load ptr, ptr %50, align 8, !tbaa !5
  %325 = load i32, ptr %324, align 4, !tbaa !9
  %326 = icmp ne i32 %325, 0
  br i1 %326, label %327, label %332

327:                                              ; preds = %323
  %328 = load ptr, ptr %50, align 8, !tbaa !5
  %329 = load i32, ptr %328, align 4, !tbaa !9
  %330 = sub nsw i32 0, %329
  store i32 %330, ptr %59, align 4, !tbaa !9
  %331 = call i32 @xerbla_(ptr noundef @.str.6, ptr noundef %59, i32 noundef 6)
  store i32 1, ptr %83, align 4
  br label %809

332:                                              ; preds = %323
  %333 = load ptr, ptr %43, align 8, !tbaa !5
  store i32 0, ptr %333, align 4, !tbaa !9
  %334 = load ptr, ptr %29, align 8, !tbaa !5
  %335 = load i32, ptr %334, align 4, !tbaa !9
  %336 = icmp eq i32 %335, 0
  br i1 %336, label %337, label %338

337:                                              ; preds = %332
  store i32 1, ptr %83, align 4
  br label %809

338:                                              ; preds = %332
  %339 = load ptr, ptr %28, align 8, !tbaa !5
  %340 = load ptr, ptr %29, align 8, !tbaa !5
  %341 = load ptr, ptr %31, align 8, !tbaa !5
  %342 = load ptr, ptr %34, align 8, !tbaa !5
  %343 = load i32, ptr %54, align 4, !tbaa !9
  %344 = sext i32 %343 to i64
  %345 = getelementptr inbounds double, ptr %342, i64 %344
  %346 = load ptr, ptr %35, align 8, !tbaa !5
  %347 = load ptr, ptr %50, align 8, !tbaa !5
  call void @dpbstf_(ptr noundef %339, ptr noundef %340, ptr noundef %341, ptr noundef %345, ptr noundef %346, ptr noundef %347)
  %348 = load ptr, ptr %50, align 8, !tbaa !5
  %349 = load i32, ptr %348, align 4, !tbaa !9
  %350 = icmp ne i32 %349, 0
  br i1 %350, label %351, label %358

351:                                              ; preds = %338
  %352 = load ptr, ptr %29, align 8, !tbaa !5
  %353 = load i32, ptr %352, align 4, !tbaa !9
  %354 = load ptr, ptr %50, align 8, !tbaa !5
  %355 = load i32, ptr %354, align 4, !tbaa !9
  %356 = add nsw i32 %353, %355
  %357 = load ptr, ptr %50, align 8, !tbaa !5
  store i32 %356, ptr %357, align 4, !tbaa !9
  store i32 1, ptr %83, align 4
  br label %809

358:                                              ; preds = %338
  %359 = load ptr, ptr %26, align 8, !tbaa !5
  %360 = load ptr, ptr %28, align 8, !tbaa !5
  %361 = load ptr, ptr %29, align 8, !tbaa !5
  %362 = load ptr, ptr %30, align 8, !tbaa !5
  %363 = load ptr, ptr %31, align 8, !tbaa !5
  %364 = load ptr, ptr %32, align 8, !tbaa !5
  %365 = load i32, ptr %52, align 4, !tbaa !9
  %366 = sext i32 %365 to i64
  %367 = getelementptr inbounds double, ptr %364, i64 %366
  %368 = load ptr, ptr %33, align 8, !tbaa !5
  %369 = load ptr, ptr %34, align 8, !tbaa !5
  %370 = load i32, ptr %54, align 4, !tbaa !9
  %371 = sext i32 %370 to i64
  %372 = getelementptr inbounds double, ptr %369, i64 %371
  %373 = load ptr, ptr %35, align 8, !tbaa !5
  %374 = load ptr, ptr %36, align 8, !tbaa !5
  %375 = load i32, ptr %56, align 4, !tbaa !9
  %376 = sext i32 %375 to i64
  %377 = getelementptr inbounds double, ptr %374, i64 %376
  %378 = load ptr, ptr %37, align 8, !tbaa !5
  %379 = load ptr, ptr %47, align 8, !tbaa !5
  %380 = getelementptr inbounds double, ptr %379, i64 1
  call void @dsbgst_(ptr noundef %359, ptr noundef %360, ptr noundef %361, ptr noundef %362, ptr noundef %363, ptr noundef %367, ptr noundef %368, ptr noundef %372, ptr noundef %373, ptr noundef %377, ptr noundef %378, ptr noundef %380, ptr noundef %69)
  store i32 1, ptr %61, align 4, !tbaa !9
  %381 = load i32, ptr %61, align 4, !tbaa !9
  %382 = load ptr, ptr %29, align 8, !tbaa !5
  %383 = load i32, ptr %382, align 4, !tbaa !9
  %384 = add nsw i32 %381, %383
  store i32 %384, ptr %62, align 4, !tbaa !9
  %385 = load i32, ptr %62, align 4, !tbaa !9
  %386 = load ptr, ptr %29, align 8, !tbaa !5
  %387 = load i32, ptr %386, align 4, !tbaa !9
  %388 = add nsw i32 %385, %387
  store i32 %388, ptr %80, align 4, !tbaa !9
  %389 = load i32, ptr %72, align 4, !tbaa !9
  %390 = icmp ne i32 %389, 0
  br i1 %390, label %391, label %393

391:                                              ; preds = %358
  %392 = getelementptr inbounds [1 x i8], ptr %63, i64 0, i64 0
  store i8 85, ptr %392, align 1, !tbaa !13
  br label %395

393:                                              ; preds = %358
  %394 = getelementptr inbounds [1 x i8], ptr %63, i64 0, i64 0
  store i8 78, ptr %394, align 1, !tbaa !13
  br label %395

395:                                              ; preds = %393, %391
  %396 = getelementptr inbounds [1 x i8], ptr %63, i64 0, i64 0
  %397 = load ptr, ptr %28, align 8, !tbaa !5
  %398 = load ptr, ptr %29, align 8, !tbaa !5
  %399 = load ptr, ptr %30, align 8, !tbaa !5
  %400 = load ptr, ptr %32, align 8, !tbaa !5
  %401 = load i32, ptr %52, align 4, !tbaa !9
  %402 = sext i32 %401 to i64
  %403 = getelementptr inbounds double, ptr %400, i64 %402
  %404 = load ptr, ptr %33, align 8, !tbaa !5
  %405 = load ptr, ptr %47, align 8, !tbaa !5
  %406 = load i32, ptr %61, align 4, !tbaa !9
  %407 = sext i32 %406 to i64
  %408 = getelementptr inbounds double, ptr %405, i64 %407
  %409 = load ptr, ptr %47, align 8, !tbaa !5
  %410 = load i32, ptr %62, align 4, !tbaa !9
  %411 = sext i32 %410 to i64
  %412 = getelementptr inbounds double, ptr %409, i64 %411
  %413 = load ptr, ptr %36, align 8, !tbaa !5
  %414 = load i32, ptr %56, align 4, !tbaa !9
  %415 = sext i32 %414 to i64
  %416 = getelementptr inbounds double, ptr %413, i64 %415
  %417 = load ptr, ptr %37, align 8, !tbaa !5
  %418 = load ptr, ptr %47, align 8, !tbaa !5
  %419 = load i32, ptr %80, align 4, !tbaa !9
  %420 = sext i32 %419 to i64
  %421 = getelementptr inbounds double, ptr %418, i64 %420
  call void @dsbtrd_(ptr noundef %396, ptr noundef %397, ptr noundef %398, ptr noundef %399, ptr noundef %403, ptr noundef %404, ptr noundef %408, ptr noundef %412, ptr noundef %416, ptr noundef %417, ptr noundef %421, ptr noundef %69)
  store i32 0, ptr %64, align 4, !tbaa !9
  %422 = load i32, ptr %75, align 4, !tbaa !9
  %423 = icmp ne i32 %422, 0
  br i1 %423, label %424, label %436

424:                                              ; preds = %395
  %425 = load ptr, ptr %40, align 8, !tbaa !5
  %426 = load i32, ptr %425, align 4, !tbaa !9
  %427 = icmp eq i32 %426, 1
  br i1 %427, label %428, label %435

428:                                              ; preds = %424
  %429 = load ptr, ptr %41, align 8, !tbaa !5
  %430 = load i32, ptr %429, align 4, !tbaa !9
  %431 = load ptr, ptr %29, align 8, !tbaa !5
  %432 = load i32, ptr %431, align 4, !tbaa !9
  %433 = icmp eq i32 %430, %432
  br i1 %433, label %434, label %435

434:                                              ; preds = %428
  store i32 1, ptr %64, align 4, !tbaa !9
  br label %435

435:                                              ; preds = %434, %428, %424
  br label %436

436:                                              ; preds = %435, %395
  %437 = load i32, ptr %74, align 4, !tbaa !9
  %438 = icmp ne i32 %437, 0
  br i1 %438, label %442, label %439

439:                                              ; preds = %436
  %440 = load i32, ptr %64, align 4, !tbaa !9
  %441 = icmp ne i32 %440, 0
  br i1 %441, label %442, label %542

442:                                              ; preds = %439, %436
  %443 = load ptr, ptr %42, align 8, !tbaa !5
  %444 = load double, ptr %443, align 8, !tbaa !11
  %445 = fcmp ole double %444, 0.000000e+00
  br i1 %445, label %446, label %542

446:                                              ; preds = %442
  %447 = load ptr, ptr %29, align 8, !tbaa !5
  %448 = load ptr, ptr %47, align 8, !tbaa !5
  %449 = load i32, ptr %61, align 4, !tbaa !9
  %450 = sext i32 %449 to i64
  %451 = getelementptr inbounds double, ptr %448, i64 %450
  %452 = load ptr, ptr %44, align 8, !tbaa !5
  %453 = getelementptr inbounds double, ptr %452, i64 1
  call void @dcopy_(ptr noundef %447, ptr noundef %451, ptr noundef @c__1, ptr noundef %453, ptr noundef @c__1)
  %454 = load i32, ptr %80, align 4, !tbaa !9
  %455 = load ptr, ptr %29, align 8, !tbaa !5
  %456 = load i32, ptr %455, align 4, !tbaa !9
  %457 = shl i32 %456, 1
  %458 = add nsw i32 %454, %457
  store i32 %458, ptr %68, align 4, !tbaa !9
  %459 = load ptr, ptr %29, align 8, !tbaa !5
  %460 = load i32, ptr %459, align 4, !tbaa !9
  %461 = sub nsw i32 %460, 1
  store i32 %461, ptr %59, align 4, !tbaa !9
  %462 = load ptr, ptr %47, align 8, !tbaa !5
  %463 = load i32, ptr %62, align 4, !tbaa !9
  %464 = sext i32 %463 to i64
  %465 = getelementptr inbounds double, ptr %462, i64 %464
  %466 = load ptr, ptr %47, align 8, !tbaa !5
  %467 = load i32, ptr %68, align 4, !tbaa !9
  %468 = sext i32 %467 to i64
  %469 = getelementptr inbounds double, ptr %466, i64 %468
  call void @dcopy_(ptr noundef %59, ptr noundef %465, ptr noundef @c__1, ptr noundef %469, ptr noundef @c__1)
  %470 = load i32, ptr %72, align 4, !tbaa !9
  %471 = icmp ne i32 %470, 0
  br i1 %471, label %481, label %472

472:                                              ; preds = %446
  %473 = load ptr, ptr %29, align 8, !tbaa !5
  %474 = load ptr, ptr %44, align 8, !tbaa !5
  %475 = getelementptr inbounds double, ptr %474, i64 1
  %476 = load ptr, ptr %47, align 8, !tbaa !5
  %477 = load i32, ptr %68, align 4, !tbaa !9
  %478 = sext i32 %477 to i64
  %479 = getelementptr inbounds double, ptr %476, i64 %478
  %480 = load ptr, ptr %50, align 8, !tbaa !5
  call void @dsterf_(ptr noundef %473, ptr noundef %475, ptr noundef %479, ptr noundef %480)
  br label %532

481:                                              ; preds = %446
  %482 = load ptr, ptr %29, align 8, !tbaa !5
  %483 = load ptr, ptr %29, align 8, !tbaa !5
  %484 = load ptr, ptr %36, align 8, !tbaa !5
  %485 = load i32, ptr %56, align 4, !tbaa !9
  %486 = sext i32 %485 to i64
  %487 = getelementptr inbounds double, ptr %484, i64 %486
  %488 = load ptr, ptr %37, align 8, !tbaa !5
  %489 = load ptr, ptr %45, align 8, !tbaa !5
  %490 = load i32, ptr %58, align 4, !tbaa !9
  %491 = sext i32 %490 to i64
  %492 = getelementptr inbounds double, ptr %489, i64 %491
  %493 = load ptr, ptr %46, align 8, !tbaa !5
  call void @dlacpy_(ptr noundef @.str.2, ptr noundef %482, ptr noundef %483, ptr noundef %487, ptr noundef %488, ptr noundef %492, ptr noundef %493)
  %494 = load ptr, ptr %26, align 8, !tbaa !5
  %495 = load ptr, ptr %29, align 8, !tbaa !5
  %496 = load ptr, ptr %44, align 8, !tbaa !5
  %497 = getelementptr inbounds double, ptr %496, i64 1
  %498 = load ptr, ptr %47, align 8, !tbaa !5
  %499 = load i32, ptr %68, align 4, !tbaa !9
  %500 = sext i32 %499 to i64
  %501 = getelementptr inbounds double, ptr %498, i64 %500
  %502 = load ptr, ptr %45, align 8, !tbaa !5
  %503 = load i32, ptr %58, align 4, !tbaa !9
  %504 = sext i32 %503 to i64
  %505 = getelementptr inbounds double, ptr %502, i64 %504
  %506 = load ptr, ptr %46, align 8, !tbaa !5
  %507 = load ptr, ptr %47, align 8, !tbaa !5
  %508 = load i32, ptr %80, align 4, !tbaa !9
  %509 = sext i32 %508 to i64
  %510 = getelementptr inbounds double, ptr %507, i64 %509
  %511 = load ptr, ptr %50, align 8, !tbaa !5
  call void @dsteqr_(ptr noundef %494, ptr noundef %495, ptr noundef %497, ptr noundef %501, ptr noundef %505, ptr noundef %506, ptr noundef %510, ptr noundef %511)
  %512 = load ptr, ptr %50, align 8, !tbaa !5
  %513 = load i32, ptr %512, align 4, !tbaa !9
  %514 = icmp eq i32 %513, 0
  br i1 %514, label %515, label %531

515:                                              ; preds = %481
  %516 = load ptr, ptr %29, align 8, !tbaa !5
  %517 = load i32, ptr %516, align 4, !tbaa !9
  store i32 %517, ptr %59, align 4, !tbaa !9
  store i32 1, ptr %66, align 4, !tbaa !9
  br label %518

518:                                              ; preds = %527, %515
  %519 = load i32, ptr %66, align 4, !tbaa !9
  %520 = load i32, ptr %59, align 4, !tbaa !9
  %521 = icmp sle i32 %519, %520
  br i1 %521, label %522, label %530

522:                                              ; preds = %518
  %523 = load ptr, ptr %49, align 8, !tbaa !5
  %524 = load i32, ptr %66, align 4, !tbaa !9
  %525 = sext i32 %524 to i64
  %526 = getelementptr inbounds i32, ptr %523, i64 %525
  store i32 0, ptr %526, align 4, !tbaa !9
  br label %527

527:                                              ; preds = %522
  %528 = load i32, ptr %66, align 4, !tbaa !9
  %529 = add nsw i32 %528, 1
  store i32 %529, ptr %66, align 4, !tbaa !9
  br label %518, !llvm.loop !14

530:                                              ; preds = %518
  br label %531

531:                                              ; preds = %530, %481
  br label %532

532:                                              ; preds = %531, %472
  %533 = load ptr, ptr %50, align 8, !tbaa !5
  %534 = load i32, ptr %533, align 4, !tbaa !9
  %535 = icmp eq i32 %534, 0
  br i1 %535, label %536, label %540

536:                                              ; preds = %532
  %537 = load ptr, ptr %29, align 8, !tbaa !5
  %538 = load i32, ptr %537, align 4, !tbaa !9
  %539 = load ptr, ptr %43, align 8, !tbaa !5
  store i32 %538, ptr %539, align 4, !tbaa !9
  br label %671

540:                                              ; preds = %532
  %541 = load ptr, ptr %50, align 8, !tbaa !5
  store i32 0, ptr %541, align 4, !tbaa !9
  br label %542

542:                                              ; preds = %540, %442, %439
  %543 = load i32, ptr %72, align 4, !tbaa !9
  %544 = icmp ne i32 %543, 0
  br i1 %544, label %545, label %547

545:                                              ; preds = %542
  %546 = getelementptr inbounds [1 x i8], ptr %70, i64 0, i64 0
  store i8 66, ptr %546, align 1, !tbaa !13
  br label %549

547:                                              ; preds = %542
  %548 = getelementptr inbounds [1 x i8], ptr %70, i64 0, i64 0
  store i8 69, ptr %548, align 1, !tbaa !13
  br label %549

549:                                              ; preds = %547, %545
  store i32 1, ptr %76, align 4, !tbaa !9
  %550 = load i32, ptr %76, align 4, !tbaa !9
  %551 = load ptr, ptr %29, align 8, !tbaa !5
  %552 = load i32, ptr %551, align 4, !tbaa !9
  %553 = add nsw i32 %550, %552
  store i32 %553, ptr %78, align 4, !tbaa !9
  %554 = load i32, ptr %78, align 4, !tbaa !9
  %555 = load ptr, ptr %29, align 8, !tbaa !5
  %556 = load i32, ptr %555, align 4, !tbaa !9
  %557 = add nsw i32 %554, %556
  store i32 %557, ptr %79, align 4, !tbaa !9
  %558 = load ptr, ptr %27, align 8, !tbaa !5
  %559 = getelementptr inbounds [1 x i8], ptr %70, i64 0, i64 0
  %560 = load ptr, ptr %29, align 8, !tbaa !5
  %561 = load ptr, ptr %38, align 8, !tbaa !5
  %562 = load ptr, ptr %39, align 8, !tbaa !5
  %563 = load ptr, ptr %40, align 8, !tbaa !5
  %564 = load ptr, ptr %41, align 8, !tbaa !5
  %565 = load ptr, ptr %42, align 8, !tbaa !5
  %566 = load ptr, ptr %47, align 8, !tbaa !5
  %567 = load i32, ptr %61, align 4, !tbaa !9
  %568 = sext i32 %567 to i64
  %569 = getelementptr inbounds double, ptr %566, i64 %568
  %570 = load ptr, ptr %47, align 8, !tbaa !5
  %571 = load i32, ptr %62, align 4, !tbaa !9
  %572 = sext i32 %571 to i64
  %573 = getelementptr inbounds double, ptr %570, i64 %572
  %574 = load ptr, ptr %43, align 8, !tbaa !5
  %575 = load ptr, ptr %44, align 8, !tbaa !5
  %576 = getelementptr inbounds double, ptr %575, i64 1
  %577 = load ptr, ptr %48, align 8, !tbaa !5
  %578 = load i32, ptr %76, align 4, !tbaa !9
  %579 = sext i32 %578 to i64
  %580 = getelementptr inbounds i32, ptr %577, i64 %579
  %581 = load ptr, ptr %48, align 8, !tbaa !5
  %582 = load i32, ptr %78, align 4, !tbaa !9
  %583 = sext i32 %582 to i64
  %584 = getelementptr inbounds i32, ptr %581, i64 %583
  %585 = load ptr, ptr %47, align 8, !tbaa !5
  %586 = load i32, ptr %80, align 4, !tbaa !9
  %587 = sext i32 %586 to i64
  %588 = getelementptr inbounds double, ptr %585, i64 %587
  %589 = load ptr, ptr %48, align 8, !tbaa !5
  %590 = load i32, ptr %79, align 4, !tbaa !9
  %591 = sext i32 %590 to i64
  %592 = getelementptr inbounds i32, ptr %589, i64 %591
  %593 = load ptr, ptr %50, align 8, !tbaa !5
  call void @dstebz_(ptr noundef %558, ptr noundef %559, ptr noundef %560, ptr noundef %561, ptr noundef %562, ptr noundef %563, ptr noundef %564, ptr noundef %565, ptr noundef %569, ptr noundef %573, ptr noundef %574, ptr noundef %81, ptr noundef %576, ptr noundef %580, ptr noundef %584, ptr noundef %588, ptr noundef %592, ptr noundef %593)
  %594 = load i32, ptr %72, align 4, !tbaa !9
  %595 = icmp ne i32 %594, 0
  br i1 %595, label %596, label %670

596:                                              ; preds = %549
  %597 = load ptr, ptr %29, align 8, !tbaa !5
  %598 = load ptr, ptr %47, align 8, !tbaa !5
  %599 = load i32, ptr %61, align 4, !tbaa !9
  %600 = sext i32 %599 to i64
  %601 = getelementptr inbounds double, ptr %598, i64 %600
  %602 = load ptr, ptr %47, align 8, !tbaa !5
  %603 = load i32, ptr %62, align 4, !tbaa !9
  %604 = sext i32 %603 to i64
  %605 = getelementptr inbounds double, ptr %602, i64 %604
  %606 = load ptr, ptr %43, align 8, !tbaa !5
  %607 = load ptr, ptr %44, align 8, !tbaa !5
  %608 = getelementptr inbounds double, ptr %607, i64 1
  %609 = load ptr, ptr %48, align 8, !tbaa !5
  %610 = load i32, ptr %76, align 4, !tbaa !9
  %611 = sext i32 %610 to i64
  %612 = getelementptr inbounds i32, ptr %609, i64 %611
  %613 = load ptr, ptr %48, align 8, !tbaa !5
  %614 = load i32, ptr %78, align 4, !tbaa !9
  %615 = sext i32 %614 to i64
  %616 = getelementptr inbounds i32, ptr %613, i64 %615
  %617 = load ptr, ptr %45, align 8, !tbaa !5
  %618 = load i32, ptr %58, align 4, !tbaa !9
  %619 = sext i32 %618 to i64
  %620 = getelementptr inbounds double, ptr %617, i64 %619
  %621 = load ptr, ptr %46, align 8, !tbaa !5
  %622 = load ptr, ptr %47, align 8, !tbaa !5
  %623 = load i32, ptr %80, align 4, !tbaa !9
  %624 = sext i32 %623 to i64
  %625 = getelementptr inbounds double, ptr %622, i64 %624
  %626 = load ptr, ptr %48, align 8, !tbaa !5
  %627 = load i32, ptr %79, align 4, !tbaa !9
  %628 = sext i32 %627 to i64
  %629 = getelementptr inbounds i32, ptr %626, i64 %628
  %630 = load ptr, ptr %49, align 8, !tbaa !5
  %631 = getelementptr inbounds i32, ptr %630, i64 1
  %632 = load ptr, ptr %50, align 8, !tbaa !5
  call void @dstein_(ptr noundef %597, ptr noundef %601, ptr noundef %605, ptr noundef %606, ptr noundef %608, ptr noundef %612, ptr noundef %616, ptr noundef %620, ptr noundef %621, ptr noundef %625, ptr noundef %629, ptr noundef %631, ptr noundef %632)
  %633 = load ptr, ptr %43, align 8, !tbaa !5
  %634 = load i32, ptr %633, align 4, !tbaa !9
  store i32 %634, ptr %59, align 4, !tbaa !9
  store i32 1, ptr %67, align 4, !tbaa !9
  br label %635

635:                                              ; preds = %666, %596
  %636 = load i32, ptr %67, align 4, !tbaa !9
  %637 = load i32, ptr %59, align 4, !tbaa !9
  %638 = icmp sle i32 %636, %637
  br i1 %638, label %639, label %669

639:                                              ; preds = %635
  %640 = load ptr, ptr %29, align 8, !tbaa !5
  %641 = load ptr, ptr %45, align 8, !tbaa !5
  %642 = load i32, ptr %67, align 4, !tbaa !9
  %643 = load i32, ptr %57, align 4, !tbaa !9
  %644 = mul nsw i32 %642, %643
  %645 = add nsw i32 %644, 1
  %646 = sext i32 %645 to i64
  %647 = getelementptr inbounds double, ptr %641, i64 %646
  %648 = load ptr, ptr %47, align 8, !tbaa !5
  %649 = getelementptr inbounds double, ptr %648, i64 1
  call void @dcopy_(ptr noundef %640, ptr noundef %647, ptr noundef @c__1, ptr noundef %649, ptr noundef @c__1)
  %650 = load ptr, ptr %29, align 8, !tbaa !5
  %651 = load ptr, ptr %29, align 8, !tbaa !5
  %652 = load ptr, ptr %36, align 8, !tbaa !5
  %653 = load i32, ptr %56, align 4, !tbaa !9
  %654 = sext i32 %653 to i64
  %655 = getelementptr inbounds double, ptr %652, i64 %654
  %656 = load ptr, ptr %37, align 8, !tbaa !5
  %657 = load ptr, ptr %47, align 8, !tbaa !5
  %658 = getelementptr inbounds double, ptr %657, i64 1
  %659 = load ptr, ptr %45, align 8, !tbaa !5
  %660 = load i32, ptr %67, align 4, !tbaa !9
  %661 = load i32, ptr %57, align 4, !tbaa !9
  %662 = mul nsw i32 %660, %661
  %663 = add nsw i32 %662, 1
  %664 = sext i32 %663 to i64
  %665 = getelementptr inbounds double, ptr %659, i64 %664
  call void @dgemv_(ptr noundef @.str.4, ptr noundef %650, ptr noundef %651, ptr noundef @c_b25, ptr noundef %655, ptr noundef %656, ptr noundef %658, ptr noundef @c__1, ptr noundef @c_b27, ptr noundef %665, ptr noundef @c__1)
  br label %666

666:                                              ; preds = %639
  %667 = load i32, ptr %67, align 4, !tbaa !9
  %668 = add nsw i32 %667, 1
  store i32 %668, ptr %67, align 4, !tbaa !9
  br label %635, !llvm.loop !16

669:                                              ; preds = %635
  br label %670

670:                                              ; preds = %669, %549
  br label %671

671:                                              ; preds = %670, %536
  %672 = load i32, ptr %72, align 4, !tbaa !9
  %673 = icmp ne i32 %672, 0
  br i1 %673, label %674, label %808

674:                                              ; preds = %671
  %675 = load ptr, ptr %43, align 8, !tbaa !5
  %676 = load i32, ptr %675, align 4, !tbaa !9
  %677 = sub nsw i32 %676, 1
  store i32 %677, ptr %59, align 4, !tbaa !9
  store i32 1, ptr %67, align 4, !tbaa !9
  br label %678

678:                                              ; preds = %804, %674
  %679 = load i32, ptr %67, align 4, !tbaa !9
  %680 = load i32, ptr %59, align 4, !tbaa !9
  %681 = icmp sle i32 %679, %680
  br i1 %681, label %682, label %807

682:                                              ; preds = %678
  store i32 0, ptr %66, align 4, !tbaa !9
  %683 = load ptr, ptr %44, align 8, !tbaa !5
  %684 = load i32, ptr %67, align 4, !tbaa !9
  %685 = sext i32 %684 to i64
  %686 = getelementptr inbounds double, ptr %683, i64 %685
  %687 = load double, ptr %686, align 8, !tbaa !11
  store double %687, ptr %82, align 8, !tbaa !11
  %688 = load ptr, ptr %43, align 8, !tbaa !5
  %689 = load i32, ptr %688, align 4, !tbaa !9
  store i32 %689, ptr %60, align 4, !tbaa !9
  %690 = load i32, ptr %67, align 4, !tbaa !9
  %691 = add nsw i32 %690, 1
  store i32 %691, ptr %73, align 4, !tbaa !9
  br label %692

692:                                              ; preds = %712, %682
  %693 = load i32, ptr %73, align 4, !tbaa !9
  %694 = load i32, ptr %60, align 4, !tbaa !9
  %695 = icmp sle i32 %693, %694
  br i1 %695, label %696, label %715

696:                                              ; preds = %692
  %697 = load ptr, ptr %44, align 8, !tbaa !5
  %698 = load i32, ptr %73, align 4, !tbaa !9
  %699 = sext i32 %698 to i64
  %700 = getelementptr inbounds double, ptr %697, i64 %699
  %701 = load double, ptr %700, align 8, !tbaa !11
  %702 = load double, ptr %82, align 8, !tbaa !11
  %703 = fcmp olt double %701, %702
  br i1 %703, label %704, label %711

704:                                              ; preds = %696
  %705 = load i32, ptr %73, align 4, !tbaa !9
  store i32 %705, ptr %66, align 4, !tbaa !9
  %706 = load ptr, ptr %44, align 8, !tbaa !5
  %707 = load i32, ptr %73, align 4, !tbaa !9
  %708 = sext i32 %707 to i64
  %709 = getelementptr inbounds double, ptr %706, i64 %708
  %710 = load double, ptr %709, align 8, !tbaa !11
  store double %710, ptr %82, align 8, !tbaa !11
  br label %711

711:                                              ; preds = %704, %696
  br label %712

712:                                              ; preds = %711
  %713 = load i32, ptr %73, align 4, !tbaa !9
  %714 = add nsw i32 %713, 1
  store i32 %714, ptr %73, align 4, !tbaa !9
  br label %692, !llvm.loop !17

715:                                              ; preds = %692
  %716 = load i32, ptr %66, align 4, !tbaa !9
  %717 = icmp ne i32 %716, 0
  br i1 %717, label %718, label %803

718:                                              ; preds = %715
  %719 = load ptr, ptr %48, align 8, !tbaa !5
  %720 = load i32, ptr %76, align 4, !tbaa !9
  %721 = load i32, ptr %66, align 4, !tbaa !9
  %722 = add nsw i32 %720, %721
  %723 = sub nsw i32 %722, 1
  %724 = sext i32 %723 to i64
  %725 = getelementptr inbounds i32, ptr %719, i64 %724
  %726 = load i32, ptr %725, align 4, !tbaa !9
  store i32 %726, ptr %65, align 4, !tbaa !9
  %727 = load ptr, ptr %44, align 8, !tbaa !5
  %728 = load i32, ptr %67, align 4, !tbaa !9
  %729 = sext i32 %728 to i64
  %730 = getelementptr inbounds double, ptr %727, i64 %729
  %731 = load double, ptr %730, align 8, !tbaa !11
  %732 = load ptr, ptr %44, align 8, !tbaa !5
  %733 = load i32, ptr %66, align 4, !tbaa !9
  %734 = sext i32 %733 to i64
  %735 = getelementptr inbounds double, ptr %732, i64 %734
  store double %731, ptr %735, align 8, !tbaa !11
  %736 = load ptr, ptr %48, align 8, !tbaa !5
  %737 = load i32, ptr %76, align 4, !tbaa !9
  %738 = load i32, ptr %67, align 4, !tbaa !9
  %739 = add nsw i32 %737, %738
  %740 = sub nsw i32 %739, 1
  %741 = sext i32 %740 to i64
  %742 = getelementptr inbounds i32, ptr %736, i64 %741
  %743 = load i32, ptr %742, align 4, !tbaa !9
  %744 = load ptr, ptr %48, align 8, !tbaa !5
  %745 = load i32, ptr %76, align 4, !tbaa !9
  %746 = load i32, ptr %66, align 4, !tbaa !9
  %747 = add nsw i32 %745, %746
  %748 = sub nsw i32 %747, 1
  %749 = sext i32 %748 to i64
  %750 = getelementptr inbounds i32, ptr %744, i64 %749
  store i32 %743, ptr %750, align 4, !tbaa !9
  %751 = load double, ptr %82, align 8, !tbaa !11
  %752 = load ptr, ptr %44, align 8, !tbaa !5
  %753 = load i32, ptr %67, align 4, !tbaa !9
  %754 = sext i32 %753 to i64
  %755 = getelementptr inbounds double, ptr %752, i64 %754
  store double %751, ptr %755, align 8, !tbaa !11
  %756 = load i32, ptr %65, align 4, !tbaa !9
  %757 = load ptr, ptr %48, align 8, !tbaa !5
  %758 = load i32, ptr %76, align 4, !tbaa !9
  %759 = load i32, ptr %67, align 4, !tbaa !9
  %760 = add nsw i32 %758, %759
  %761 = sub nsw i32 %760, 1
  %762 = sext i32 %761 to i64
  %763 = getelementptr inbounds i32, ptr %757, i64 %762
  store i32 %756, ptr %763, align 4, !tbaa !9
  %764 = load ptr, ptr %29, align 8, !tbaa !5
  %765 = load ptr, ptr %45, align 8, !tbaa !5
  %766 = load i32, ptr %66, align 4, !tbaa !9
  %767 = load i32, ptr %57, align 4, !tbaa !9
  %768 = mul nsw i32 %766, %767
  %769 = add nsw i32 %768, 1
  %770 = sext i32 %769 to i64
  %771 = getelementptr inbounds double, ptr %765, i64 %770
  %772 = load ptr, ptr %45, align 8, !tbaa !5
  %773 = load i32, ptr %67, align 4, !tbaa !9
  %774 = load i32, ptr %57, align 4, !tbaa !9
  %775 = mul nsw i32 %773, %774
  %776 = add nsw i32 %775, 1
  %777 = sext i32 %776 to i64
  %778 = getelementptr inbounds double, ptr %772, i64 %777
  call void @dswap_(ptr noundef %764, ptr noundef %771, ptr noundef @c__1, ptr noundef %778, ptr noundef @c__1)
  %779 = load ptr, ptr %50, align 8, !tbaa !5
  %780 = load i32, ptr %779, align 4, !tbaa !9
  %781 = icmp ne i32 %780, 0
  br i1 %781, label %782, label %802

782:                                              ; preds = %718
  %783 = load ptr, ptr %49, align 8, !tbaa !5
  %784 = load i32, ptr %66, align 4, !tbaa !9
  %785 = sext i32 %784 to i64
  %786 = getelementptr inbounds i32, ptr %783, i64 %785
  %787 = load i32, ptr %786, align 4, !tbaa !9
  store i32 %787, ptr %65, align 4, !tbaa !9
  %788 = load ptr, ptr %49, align 8, !tbaa !5
  %789 = load i32, ptr %67, align 4, !tbaa !9
  %790 = sext i32 %789 to i64
  %791 = getelementptr inbounds i32, ptr %788, i64 %790
  %792 = load i32, ptr %791, align 4, !tbaa !9
  %793 = load ptr, ptr %49, align 8, !tbaa !5
  %794 = load i32, ptr %66, align 4, !tbaa !9
  %795 = sext i32 %794 to i64
  %796 = getelementptr inbounds i32, ptr %793, i64 %795
  store i32 %792, ptr %796, align 4, !tbaa !9
  %797 = load i32, ptr %65, align 4, !tbaa !9
  %798 = load ptr, ptr %49, align 8, !tbaa !5
  %799 = load i32, ptr %67, align 4, !tbaa !9
  %800 = sext i32 %799 to i64
  %801 = getelementptr inbounds i32, ptr %798, i64 %800
  store i32 %797, ptr %801, align 4, !tbaa !9
  br label %802

802:                                              ; preds = %782, %718
  br label %803

803:                                              ; preds = %802, %715
  br label %804

804:                                              ; preds = %803
  %805 = load i32, ptr %67, align 4, !tbaa !9
  %806 = add nsw i32 %805, 1
  store i32 %806, ptr %67, align 4, !tbaa !9
  br label %678, !llvm.loop !18

807:                                              ; preds = %678
  br label %808

808:                                              ; preds = %807, %671
  store i32 1, ptr %83, align 4
  br label %809

809:                                              ; preds = %808, %351, %337, %327
  call void @llvm.lifetime.end.p0(i64 8, ptr %82) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %81) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %80) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %79) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %78) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %77) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %76) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %75) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %74) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %73) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %72) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %71) #3
  call void @llvm.lifetime.end.p0(i64 1, ptr %70) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %69) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %68) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %67) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %66) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %65) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %64) #3
  call void @llvm.lifetime.end.p0(i64 1, ptr %63) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %62) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %61) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %60) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %59) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %58) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %56) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %54) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %53) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #3
  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 void @dpbstf_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

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

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

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

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

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

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


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

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

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

43:                                               ; preds = %25
  %44 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.4) #5
  %.not325 = icmp eq i32 %44, 0
  br i1 %.not325, label %.thread349.sink.split, label %45

45:                                               ; preds = %43, %25
  %46 = icmp ne i32 %40, 0
  %47 = icmp ne i32 %41, 0
  %or.cond = select i1 %46, i1 true, i1 %47
  %48 = icmp ne i32 %42, 0
  %or.cond3 = select i1 %or.cond, i1 true, i1 %48
  br i1 %or.cond3, label %49, label %.thread349.sink.split

49:                                               ; preds = %45
  %.not326 = icmp eq i32 %39, 0
  br i1 %.not326, label %50, label %52

50:                                               ; preds = %49
  %51 = tail call i32 @lsame_(ptr noundef %2, ptr noundef nonnull @.str.5) #5
  %.not327 = icmp eq i32 %51, 0
  br i1 %.not327, label %.thread349.sink.split, label %52

52:                                               ; preds = %50, %49
  %53 = load i32, ptr %3, align 4, !tbaa !5
  %54 = icmp slt i32 %53, 0
  br i1 %54, label %.thread349.sink.split, label %55

55:                                               ; preds = %52
  %56 = load i32, ptr %4, align 4, !tbaa !5
  %57 = icmp slt i32 %56, 0
  br i1 %57, label %.thread349.sink.split, label %58

58:                                               ; preds = %55
  %59 = load i32, ptr %5, align 4, !tbaa !5
  %or.cond341 = icmp ugt i32 %59, %56
  br i1 %or.cond341, label %.thread349.sink.split, label %60

60:                                               ; preds = %58
  %61 = load i32, ptr %7, align 4, !tbaa !5
  %.not328 = icmp sgt i32 %61, %56
  br i1 %.not328, label %62, label %.thread349.sink.split

62:                                               ; preds = %60
  %63 = load i32, ptr %9, align 4, !tbaa !5
  %.not329 = icmp sgt i32 %63, %59
  br i1 %.not329, label %64, label %.thread349.sink.split

64:                                               ; preds = %62
  %65 = load i32, ptr %11, align 4, !tbaa !5
  %66 = icmp slt i32 %65, 1
  %67 = icmp ult i32 %65, %53
  %or.cond342 = and i1 %.not, %67
  %or.cond358 = or i1 %66, %or.cond342
  br i1 %or.cond358, label %.thread349.sink.split, label %68

68:                                               ; preds = %64
  br i1 %47, label %69, label %74

69:                                               ; preds = %68
  %.not357 = icmp eq i32 %53, 0
  br i1 %.not357, label %83, label %70

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

74:                                               ; preds = %68
  br i1 %48, label %75, label %83

75:                                               ; preds = %74
  %76 = load i32, ptr %14, align 4, !tbaa !5
  %77 = icmp slt i32 %76, 1
  %spec.select = tail call i32 @llvm.umax.i32(i32 %53, i32 1)
  %78 = icmp ugt i32 %76, %spec.select
  %or.cond359 = or i1 %77, %78
  br i1 %or.cond359, label %.thread349.sink.split, label %79

79:                                               ; preds = %75
  %80 = load i32, ptr %15, align 4, !tbaa !5
  %. = tail call i32 @llvm.umin.i32(i32 %53, i32 %76)
  %81 = icmp slt i32 %80, %.
  %82 = icmp ugt i32 %80, %53
  %or.cond356 = or i1 %81, %82
  br i1 %or.cond356, label %.thread349.sink.split, label %83

83:                                               ; preds = %79, %70, %69, %74
  %.pr = load i32, ptr %24, align 4, !tbaa !5
  %84 = icmp eq i32 %.pr, 0
  br i1 %84, label %85, label %.thread349

85:                                               ; preds = %83
  %86 = load i32, ptr %20, align 4, !tbaa !5
  %87 = icmp slt i32 %86, 1
  %88 = icmp ult i32 %86, %53
  %or.cond397 = and i1 %.not, %88
  %or.cond398 = or i1 %87, %or.cond397
  br i1 %or.cond398, label %.thread349.sink.split, label %.thread

.thread349.sink.split:                            ; preds = %85, %79, %75, %70, %64, %62, %60, %58, %55, %52, %50, %45, %43
  %.sink = phi i32 [ -1, %43 ], [ -2, %45 ], [ -3, %50 ], [ -4, %52 ], [ -5, %55 ], [ -6, %58 ], [ -8, %60 ], [ -10, %62 ], [ -12, %64 ], [ -14, %70 ], [ -15, %75 ], [ -16, %79 ], [ -21, %85 ]
  store i32 %.sink, ptr %24, align 4, !tbaa !5
  br label %.thread349

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

.thread:                                          ; preds = %85
  store i32 0, ptr %17, align 4, !tbaa !5
  %92 = load i32, ptr %3, align 4, !tbaa !5
  %93 = icmp eq i32 %92, 0
  br i1 %93, label %.critedge, label %94

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

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

99:                                               ; preds = %94
  call void @dsbgst_(ptr noundef %0, ptr noundef %2, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef nonnull %5, ptr noundef %6, ptr noundef nonnull %7, ptr noundef %8, ptr noundef nonnull %9, ptr noundef %10, ptr noundef nonnull %11, ptr noundef %21, ptr noundef nonnull %28) #5
  %100 = load i32, ptr %3, align 4, !tbaa !5
  %101 = add nsw i32 %100, 1
  %102 = add nsw i32 %101, %100
  %.343 = select i1 %.not, i8 85, i8 78
  store i8 %.343, ptr %27, align 1, !tbaa !11
  %103 = sext i32 %101 to i64
  %104 = getelementptr inbounds double, ptr %35, i64 %103
  %105 = sext i32 %102 to i64
  %106 = getelementptr inbounds double, ptr %35, i64 %105
  call void @dsbtrd_(ptr noundef nonnull %27, ptr noundef %2, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef %6, ptr noundef nonnull %7, ptr noundef %21, ptr noundef nonnull %104, ptr noundef %10, ptr noundef nonnull %11, ptr noundef nonnull %106, ptr noundef nonnull %28) #5
  %.not333 = icmp eq i32 %42, 0
  br i1 %.not333, label %114, label %107

107:                                              ; preds = %99
  %108 = load i32, ptr %14, align 4, !tbaa !5
  %109 = icmp eq i32 %108, 1
  br i1 %109, label %110, label %114

110:                                              ; preds = %107
  %111 = load i32, ptr %15, align 4, !tbaa !5
  %112 = load i32, ptr %3, align 4, !tbaa !5
  %113 = icmp eq i32 %111, %112
  br label %114

114:                                              ; preds = %110, %107, %99
  %115 = phi i1 [ false, %107 ], [ false, %99 ], [ %113, %110 ]
  %or.cond5 = or i1 %46, %115
  br i1 %or.cond5, label %116, label %137

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

119:                                              ; preds = %116
  call void @dcopy_(ptr noundef nonnull %3, ptr noundef %21, ptr noundef nonnull @c__1, ptr noundef %18, ptr noundef nonnull @c__1) #5
  %120 = load i32, ptr %3, align 4, !tbaa !5
  %121 = shl i32 %120, 1
  %122 = add nsw i32 %121, %102
  %123 = add nsw i32 %120, -1
  store i32 %123, ptr %26, align 4, !tbaa !5
  %124 = sext i32 %122 to i64
  %125 = getelementptr inbounds double, ptr %35, i64 %124
  call void @dcopy_(ptr noundef nonnull %26, ptr noundef nonnull %104, ptr noundef nonnull @c__1, ptr noundef nonnull %125, ptr noundef nonnull @c__1) #5
  br i1 %.not, label %127, label %126

126:                                              ; preds = %119
  call void @dsterf_(ptr noundef nonnull %3, ptr noundef %18, ptr noundef nonnull %125, ptr noundef nonnull %24) #5
  br label %.loopexit360

127:                                              ; preds = %119
  call void @dlacpy_(ptr noundef nonnull @.str.2, ptr noundef nonnull %3, ptr noundef nonnull %3, ptr noundef %10, ptr noundef nonnull %11, ptr noundef %19, ptr noundef nonnull %20) #5
  call void @dsteqr_(ptr noundef %0, ptr noundef nonnull %3, ptr noundef %18, ptr noundef nonnull %125, ptr noundef %19, ptr noundef nonnull %20, ptr noundef nonnull %106, ptr noundef nonnull %24) #5
  %128 = load i32, ptr %24, align 4, !tbaa !5
  %129 = icmp eq i32 %128, 0
  br i1 %129, label %130, label %.thread353

130:                                              ; preds = %127
  %131 = load i32, ptr %3, align 4, !tbaa !5
  store i32 %131, ptr %26, align 4, !tbaa !5
  %.not334361 = icmp slt i32 %131, 1
  br i1 %.not334361, label %.loopexit360, label %.lr.ph.preheader

.lr.ph.preheader:                                 ; preds = %130
  %132 = zext nneg i32 %131 to i64
  %133 = shl nuw nsw i64 %132, 2
  call void @llvm.memset.p0.i64(ptr align 4 %23, i8 0, i64 %133, i1 false), !tbaa !5
  br label %.loopexit360

.loopexit360:                                     ; preds = %.lr.ph.preheader, %130, %126
  %.pr352 = load i32, ptr %24, align 4, !tbaa !5
  %134 = icmp eq i32 %.pr352, 0
  br i1 %134, label %135, label %.thread353

135:                                              ; preds = %.loopexit360
  %136 = load i32, ptr %3, align 4, !tbaa !5
  store i32 %136, ptr %17, align 4, !tbaa !5
  br label %.loopexit

.thread353:                                       ; preds = %127, %.loopexit360
  store i32 0, ptr %24, align 4, !tbaa !5
  br label %137

137:                                              ; preds = %114, %.thread353, %116
  %.345 = select i1 %.not, i8 66, i8 69
  store i8 %.345, ptr %29, align 1, !tbaa !11
  %138 = load i32, ptr %3, align 4, !tbaa !5
  %139 = add nsw i32 %138, 1
  %140 = add nsw i32 %139, %138
  %141 = sext i32 %139 to i64
  %142 = getelementptr inbounds i32, ptr %36, i64 %141
  %143 = sext i32 %140 to i64
  %144 = getelementptr inbounds i32, ptr %36, i64 %143
  call void @dstebz_(ptr noundef %1, ptr noundef nonnull %29, ptr noundef nonnull %3, ptr noundef %12, ptr noundef %13, ptr noundef %14, ptr noundef %15, ptr noundef %16, ptr noundef %21, ptr noundef nonnull %104, ptr noundef nonnull %17, ptr noundef nonnull %30, ptr noundef %18, ptr noundef %22, ptr noundef nonnull %142, ptr noundef nonnull %106, ptr noundef nonnull %144, ptr noundef nonnull %24) #5
  br i1 %.not, label %145, label %.critedge

145:                                              ; preds = %137
  call void @dstein_(ptr noundef nonnull %3, ptr noundef %21, ptr noundef nonnull %104, ptr noundef nonnull %17, ptr noundef %18, ptr noundef %22, ptr noundef nonnull %142, ptr noundef %19, ptr noundef nonnull %20, ptr noundef nonnull %106, ptr noundef nonnull %144, ptr noundef %23, ptr noundef nonnull %24) #5
  %146 = load i32, ptr %17, align 4, !tbaa !5
  store i32 %146, ptr %26, align 4, !tbaa !5
  %invariant.gep = getelementptr i8, ptr %34, i64 8
  %.not336363 = icmp slt i32 %146, 1
  br i1 %.not336363, label %.critedge, label %.lr.ph365.preheader

.lr.ph365.preheader:                              ; preds = %145
  %147 = sext i32 %32 to i64
  br label %.lr.ph365

.lr.ph365:                                        ; preds = %.lr.ph365.preheader, %.lr.ph365
  %indvars.iv = phi i64 [ 1, %.lr.ph365.preheader ], [ %indvars.iv.next, %.lr.ph365 ]
  %148 = mul nsw i64 %indvars.iv, %147
  %gep = getelementptr double, ptr %invariant.gep, i64 %148
  call void @dcopy_(ptr noundef nonnull %3, ptr noundef %gep, ptr noundef nonnull @c__1, ptr noundef %21, ptr noundef nonnull @c__1) #5
  call void @dgemv_(ptr noundef nonnull @.str.4, ptr noundef nonnull %3, ptr noundef nonnull %3, ptr noundef nonnull @c_b25, ptr noundef %10, ptr noundef nonnull %11, ptr noundef %21, ptr noundef nonnull @c__1, ptr noundef nonnull @c_b27, ptr noundef %gep, ptr noundef nonnull @c__1) #5
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %149 = load i32, ptr %26, align 4, !tbaa !5
  %150 = sext i32 %149 to i64
  %.not336.not = icmp slt i64 %indvars.iv, %150
  br i1 %.not336.not, label %.lr.ph365, label %.loopexit, !llvm.loop !12

.loopexit:                                        ; preds = %.lr.ph365, %135
  br i1 %.not, label %151, label %.critedge

151:                                              ; preds = %.loopexit
  %.pr390 = load i32, ptr %17, align 4, !tbaa !5
  %152 = add nsw i32 %.pr390, -1
  store i32 %152, ptr %26, align 4, !tbaa !5
  %invariant.gep372 = getelementptr i8, ptr %34, i64 8
  %.not337376 = icmp slt i32 %.pr390, 2
  br i1 %.not337376, label %.critedge, label %.lr.ph379.preheader

.lr.ph379.preheader:                              ; preds = %151
  %153 = sext i32 %32 to i64
  br label %.lr.ph379

.lr.ph379:                                        ; preds = %.lr.ph379.preheader, %._crit_edge.thread
  %indvar = phi i32 [ 0, %.lr.ph379.preheader ], [ %indvar.next, %._crit_edge.thread ]
  %indvars.iv387 = phi i64 [ 1, %.lr.ph379.preheader ], [ %indvars.iv.next388, %._crit_edge.thread ]
  %indvars.iv382 = phi i64 [ 2, %.lr.ph379.preheader ], [ %indvars.iv.next383, %._crit_edge.thread ]
  %154 = getelementptr inbounds double, ptr %31, i64 %indvars.iv387
  %155 = load double, ptr %154, align 8, !tbaa !9
  %156 = load i32, ptr %17, align 4, !tbaa !5
  %indvars.iv.next388 = add nuw nsw i64 %indvars.iv387, 1
  %157 = sext i32 %156 to i64
  %.not338366.not = icmp slt i64 %indvars.iv387, %157
  br i1 %.not338366.not, label %.lr.ph370.preheader, label %._crit_edge.thread

.lr.ph370.preheader:                              ; preds = %.lr.ph379
  %158 = xor i32 %indvar, -1
  %159 = add i32 %156, %158
  %reass.sub = sub i32 %156, %indvar
  %xtraiter = and i32 %159, 1
  %160 = icmp eq i32 %reass.sub, 2
  br i1 %160, label %._crit_edge.unr-lcssa, label %.lr.ph370.preheader.new

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

.lr.ph370:                                        ; preds = %.lr.ph370, %.lr.ph370.preheader.new
  %indvars.iv384 = phi i64 [ %indvars.iv382, %.lr.ph370.preheader.new ], [ %indvars.iv.next385.1, %.lr.ph370 ]
  %.0369 = phi double [ %155, %.lr.ph370.preheader.new ], [ %.1.1, %.lr.ph370 ]
  %.1312367 = phi i32 [ 0, %.lr.ph370.preheader.new ], [ %.2.1, %.lr.ph370 ]
  %niter = phi i32 [ 0, %.lr.ph370.preheader.new ], [ %niter.next.1, %.lr.ph370 ]
  %161 = getelementptr inbounds double, ptr %31, i64 %indvars.iv384
  %162 = load double, ptr %161, align 8, !tbaa !9
  %163 = fcmp olt double %162, %.0369
  %164 = trunc nuw i64 %indvars.iv384 to i32
  %.2 = select i1 %163, i32 %164, i32 %.1312367
  %.1 = select i1 %163, double %162, double %.0369
  %165 = getelementptr double, ptr %18, i64 %indvars.iv384
  %166 = load double, ptr %165, align 8, !tbaa !9
  %167 = fcmp olt double %166, %.1
  %168 = trunc i64 %indvars.iv384 to i32
  %169 = add i32 %168, 1
  %.2.1 = select i1 %167, i32 %169, i32 %.2
  %.1.1 = select i1 %167, double %166, double %.1
  %indvars.iv.next385.1 = add nuw nsw i64 %indvars.iv384, 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.ph370, !llvm.loop !14

._crit_edge.unr-lcssa:                            ; preds = %.lr.ph370, %.lr.ph370.preheader
  %.2.lcssa.ph = phi i32 [ poison, %.lr.ph370.preheader ], [ %.2.1, %.lr.ph370 ]
  %.1.lcssa.ph = phi double [ poison, %.lr.ph370.preheader ], [ %.1.1, %.lr.ph370 ]
  %indvars.iv384.unr = phi i64 [ %indvars.iv382, %.lr.ph370.preheader ], [ %indvars.iv.next385.1, %.lr.ph370 ]
  %.0369.unr = phi double [ %155, %.lr.ph370.preheader ], [ %.1.1, %.lr.ph370 ]
  %.1312367.unr = phi i32 [ 0, %.lr.ph370.preheader ], [ %.2.1, %.lr.ph370 ]
  %lcmp.mod.not = icmp eq i32 %xtraiter, 0
  br i1 %lcmp.mod.not, label %._crit_edge, label %.lr.ph370.epil

.lr.ph370.epil:                                   ; preds = %._crit_edge.unr-lcssa
  %170 = getelementptr inbounds double, ptr %31, i64 %indvars.iv384.unr
  %171 = load double, ptr %170, align 8, !tbaa !9
  %172 = fcmp olt double %171, %.0369.unr
  %173 = trunc nuw i64 %indvars.iv384.unr to i32
  %.2.epil = select i1 %172, i32 %173, i32 %.1312367.unr
  %.1.epil = select i1 %172, double %171, double %.0369.unr
  br label %._crit_edge

._crit_edge:                                      ; preds = %._crit_edge.unr-lcssa, %.lr.ph370.epil
  %.2.lcssa = phi i32 [ %.2.lcssa.ph, %._crit_edge.unr-lcssa ], [ %.2.epil, %.lr.ph370.epil ]
  %.1.lcssa = phi double [ %.1.lcssa.ph, %._crit_edge.unr-lcssa ], [ %.1.epil, %.lr.ph370.epil ]
  %.not339 = icmp eq i32 %.2.lcssa, 0
  br i1 %.not339, label %._crit_edge.thread, label %174

174:                                              ; preds = %._crit_edge
  %175 = sext i32 %.2.lcssa to i64
  %176 = getelementptr inbounds i32, ptr %36, i64 %175
  %177 = load i32, ptr %176, align 4, !tbaa !5
  %178 = getelementptr inbounds double, ptr %31, i64 %175
  store double %155, ptr %178, align 8, !tbaa !9
  %179 = getelementptr inbounds i32, ptr %36, i64 %indvars.iv387
  %180 = load i32, ptr %179, align 4, !tbaa !5
  store i32 %180, ptr %176, align 4, !tbaa !5
  store double %.1.lcssa, ptr %154, align 8, !tbaa !9
  store i32 %177, ptr %179, align 4, !tbaa !5
  %181 = mul nsw i32 %.2.lcssa, %32
  %182 = sext i32 %181 to i64
  %gep373 = getelementptr double, ptr %invariant.gep372, i64 %182
  %183 = mul nsw i64 %indvars.iv387, %153
  %gep375 = getelementptr double, ptr %invariant.gep372, i64 %183
  call void @dswap_(ptr noundef nonnull %3, ptr noundef %gep373, ptr noundef nonnull @c__1, ptr noundef %gep375, ptr noundef nonnull @c__1) #5
  %184 = load i32, ptr %24, align 4, !tbaa !5
  %.not340 = icmp eq i32 %184, 0
  br i1 %.not340, label %._crit_edge.thread, label %185

185:                                              ; preds = %174
  %186 = getelementptr inbounds i32, ptr %37, i64 %175
  %187 = load i32, ptr %186, align 4, !tbaa !5
  %188 = getelementptr inbounds i32, ptr %37, i64 %indvars.iv387
  %189 = load i32, ptr %188, align 4, !tbaa !5
  store i32 %189, ptr %186, align 4, !tbaa !5
  store i32 %187, ptr %188, align 4, !tbaa !5
  br label %._crit_edge.thread

._crit_edge.thread:                               ; preds = %.lr.ph379, %._crit_edge, %185, %174
  %190 = load i32, ptr %26, align 4, !tbaa !5
  %191 = sext i32 %190 to i64
  %.not337.not = icmp slt i64 %indvars.iv387, %191
  %indvars.iv.next383 = add nuw nsw i64 %indvars.iv382, 1
  %indvar.next = add i32 %indvar, 1
  br i1 %.not337.not, label %.lr.ph379, label %.critedge, !llvm.loop !15

.critedge:                                        ; preds = %._crit_edge.thread, %145, %151, %.loopexit, %137, %.thread, %96, %.thread349
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %30) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %29) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %28) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %27) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %26) #5
  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 void @dpbstf_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

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

declare 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 @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) #3

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"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,DSEPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopIdiomRecognizePass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,ReassociatePass,SCCPPass,SROAPass,SimplifyCFGPass,TailCallElimPass