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

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

@.str = external hidden unnamed_addr constant [2 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [2 x i8], align 1
@c__1 = external hidden global i32, align 4
@.str.6 = external hidden unnamed_addr constant [7 x i8], align 1
@c_n1 = external hidden global i32, align 4
@.str.7 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [2 x i8], align 1

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

137:                                              ; preds = %20
  %138 = load ptr, ptr %21, align 8, !tbaa !5
  %139 = call i32 @lsame_(ptr noundef %138, ptr noundef @.str.4)
  %140 = icmp ne i32 %139, 0
  br i1 %140, label %143, label %141

141:                                              ; preds = %137
  %142 = load ptr, ptr %40, align 8, !tbaa !5
  store i32 -1, ptr %142, align 4, !tbaa !9
  br label %255

143:                                              ; preds = %137, %20
  %144 = load i32, ptr %67, align 4, !tbaa !9
  %145 = icmp ne i32 %144, 0
  br i1 %145, label %154, label %146

146:                                              ; preds = %143
  %147 = load i32, ptr %71, align 4, !tbaa !9
  %148 = icmp ne i32 %147, 0
  br i1 %148, label %154, label %149

149:                                              ; preds = %146
  %150 = load i32, ptr %68, align 4, !tbaa !9
  %151 = icmp ne i32 %150, 0
  br i1 %151, label %154, label %152

152:                                              ; preds = %149
  %153 = load ptr, ptr %40, align 8, !tbaa !5
  store i32 -2, ptr %153, align 4, !tbaa !9
  br label %254

154:                                              ; preds = %149, %146, %143
  %155 = load i32, ptr %63, align 4, !tbaa !9
  %156 = icmp ne i32 %155, 0
  br i1 %156, label %163, label %157

157:                                              ; preds = %154
  %158 = load ptr, ptr %23, align 8, !tbaa !5
  %159 = call i32 @lsame_(ptr noundef %158, ptr noundef @.str.5)
  %160 = icmp ne i32 %159, 0
  br i1 %160, label %163, label %161

161:                                              ; preds = %157
  %162 = load ptr, ptr %40, align 8, !tbaa !5
  store i32 -3, ptr %162, align 4, !tbaa !9
  br label %253

163:                                              ; preds = %157, %154
  %164 = load ptr, ptr %24, align 8, !tbaa !5
  %165 = load i32, ptr %164, align 4, !tbaa !9
  %166 = icmp slt i32 %165, 0
  br i1 %166, label %167, label %169

167:                                              ; preds = %163
  %168 = load ptr, ptr %40, align 8, !tbaa !5
  store i32 -4, ptr %168, align 4, !tbaa !9
  br label %252

169:                                              ; preds = %163
  %170 = load ptr, ptr %26, align 8, !tbaa !5
  %171 = load i32, ptr %170, align 4, !tbaa !9
  %172 = load ptr, ptr %24, align 8, !tbaa !5
  %173 = load i32, ptr %172, align 4, !tbaa !9
  %174 = icmp sge i32 1, %173
  br i1 %174, label %175, label %176

175:                                              ; preds = %169
  br label %179

176:                                              ; preds = %169
  %177 = load ptr, ptr %24, align 8, !tbaa !5
  %178 = load i32, ptr %177, align 4, !tbaa !9
  br label %179

179:                                              ; preds = %176, %175
  %180 = phi i32 [ 1, %175 ], [ %178, %176 ]
  %181 = icmp slt i32 %171, %180
  br i1 %181, label %182, label %184

182:                                              ; preds = %179
  %183 = load ptr, ptr %40, align 8, !tbaa !5
  store i32 -6, ptr %183, align 4, !tbaa !9
  br label %251

184:                                              ; preds = %179
  %185 = load i32, ptr %71, align 4, !tbaa !9
  %186 = icmp ne i32 %185, 0
  br i1 %186, label %187, label %200

187:                                              ; preds = %184
  %188 = load ptr, ptr %24, align 8, !tbaa !5
  %189 = load i32, ptr %188, align 4, !tbaa !9
  %190 = icmp sgt i32 %189, 0
  br i1 %190, label %191, label %199

191:                                              ; preds = %187
  %192 = load ptr, ptr %28, align 8, !tbaa !5
  %193 = load double, ptr %192, align 8, !tbaa !11
  %194 = load ptr, ptr %27, align 8, !tbaa !5
  %195 = load double, ptr %194, align 8, !tbaa !11
  %196 = fcmp ole double %193, %195
  br i1 %196, label %197, label %199

197:                                              ; preds = %191
  %198 = load ptr, ptr %40, align 8, !tbaa !5
  store i32 -8, ptr %198, align 4, !tbaa !9
  br label %199

199:                                              ; preds = %197, %191, %187
  br label %250

200:                                              ; preds = %184
  %201 = load i32, ptr %68, align 4, !tbaa !9
  %202 = icmp ne i32 %201, 0
  br i1 %202, label %203, label %249

203:                                              ; preds = %200
  %204 = load ptr, ptr %29, align 8, !tbaa !5
  %205 = load i32, ptr %204, align 4, !tbaa !9
  %206 = icmp slt i32 %205, 1
  br i1 %206, label %220, label %207

207:                                              ; preds = %203
  %208 = load ptr, ptr %29, align 8, !tbaa !5
  %209 = load i32, ptr %208, align 4, !tbaa !9
  %210 = load ptr, ptr %24, align 8, !tbaa !5
  %211 = load i32, ptr %210, align 4, !tbaa !9
  %212 = icmp sge i32 1, %211
  br i1 %212, label %213, label %214

213:                                              ; preds = %207
  br label %217

214:                                              ; preds = %207
  %215 = load ptr, ptr %24, align 8, !tbaa !5
  %216 = load i32, ptr %215, align 4, !tbaa !9
  br label %217

217:                                              ; preds = %214, %213
  %218 = phi i32 [ 1, %213 ], [ %216, %214 ]
  %219 = icmp sgt i32 %209, %218
  br i1 %219, label %220, label %222

220:                                              ; preds = %217, %203
  %221 = load ptr, ptr %40, align 8, !tbaa !5
  store i32 -9, ptr %221, align 4, !tbaa !9
  br label %248

222:                                              ; preds = %217
  %223 = load ptr, ptr %30, align 8, !tbaa !5
  %224 = load i32, ptr %223, align 4, !tbaa !9
  %225 = load ptr, ptr %24, align 8, !tbaa !5
  %226 = load i32, ptr %225, align 4, !tbaa !9
  %227 = load ptr, ptr %29, align 8, !tbaa !5
  %228 = load i32, ptr %227, align 4, !tbaa !9
  %229 = icmp sle i32 %226, %228
  br i1 %229, label %230, label %233

230:                                              ; preds = %222
  %231 = load ptr, ptr %24, align 8, !tbaa !5
  %232 = load i32, ptr %231, align 4, !tbaa !9
  br label %236

233:                                              ; preds = %222
  %234 = load ptr, ptr %29, align 8, !tbaa !5
  %235 = load i32, ptr %234, align 4, !tbaa !9
  br label %236

236:                                              ; preds = %233, %230
  %237 = phi i32 [ %232, %230 ], [ %235, %233 ]
  %238 = icmp slt i32 %224, %237
  br i1 %238, label %245, label %239

239:                                              ; preds = %236
  %240 = load ptr, ptr %30, align 8, !tbaa !5
  %241 = load i32, ptr %240, align 4, !tbaa !9
  %242 = load ptr, ptr %24, align 8, !tbaa !5
  %243 = load i32, ptr %242, align 4, !tbaa !9
  %244 = icmp sgt i32 %241, %243
  br i1 %244, label %245, label %247

245:                                              ; preds = %239, %236
  %246 = load ptr, ptr %40, align 8, !tbaa !5
  store i32 -10, ptr %246, align 4, !tbaa !9
  br label %247

247:                                              ; preds = %245, %239
  br label %248

248:                                              ; preds = %247, %220
  br label %249

249:                                              ; preds = %248, %200
  br label %250

250:                                              ; preds = %249, %199
  br label %251

251:                                              ; preds = %250, %182
  br label %252

252:                                              ; preds = %251, %167
  br label %253

253:                                              ; preds = %252, %161
  br label %254

254:                                              ; preds = %253, %152
  br label %255

255:                                              ; preds = %254, %141
  %256 = load ptr, ptr %40, align 8, !tbaa !5
  %257 = load i32, ptr %256, align 4, !tbaa !9
  %258 = icmp eq i32 %257, 0
  br i1 %258, label %259, label %275

259:                                              ; preds = %255
  %260 = load ptr, ptr %35, align 8, !tbaa !5
  %261 = load i32, ptr %260, align 4, !tbaa !9
  %262 = icmp slt i32 %261, 1
  br i1 %262, label %272, label %263

263:                                              ; preds = %259
  %264 = load i32, ptr %64, align 4, !tbaa !9
  %265 = icmp ne i32 %264, 0
  br i1 %265, label %266, label %274

266:                                              ; preds = %263
  %267 = load ptr, ptr %35, align 8, !tbaa !5
  %268 = load i32, ptr %267, align 4, !tbaa !9
  %269 = load ptr, ptr %24, align 8, !tbaa !5
  %270 = load i32, ptr %269, align 4, !tbaa !9
  %271 = icmp slt i32 %268, %270
  br i1 %271, label %272, label %274

272:                                              ; preds = %266, %259
  %273 = load ptr, ptr %40, align 8, !tbaa !5
  store i32 -15, ptr %273, align 4, !tbaa !9
  br label %274

274:                                              ; preds = %272, %266, %263
  br label %275

275:                                              ; preds = %274, %255
  %276 = load ptr, ptr %40, align 8, !tbaa !5
  %277 = load i32, ptr %276, align 4, !tbaa !9
  %278 = icmp eq i32 %277, 0
  br i1 %278, label %279, label %338

279:                                              ; preds = %275
  %280 = load ptr, ptr %24, align 8, !tbaa !5
  %281 = load i32, ptr %280, align 4, !tbaa !9
  %282 = icmp sle i32 %281, 1
  br i1 %282, label %283, label %288

283:                                              ; preds = %279
  store i32 1, ptr %80, align 4, !tbaa !9
  %284 = load i32, ptr %80, align 4, !tbaa !9
  %285 = sitofp i32 %284 to double
  %286 = load ptr, ptr %36, align 8, !tbaa !5
  %287 = getelementptr inbounds double, ptr %286, i64 1
  store double %285, ptr %287, align 8, !tbaa !11
  br label %327

288:                                              ; preds = %279
  %289 = load ptr, ptr %24, align 8, !tbaa !5
  %290 = load i32, ptr %289, align 4, !tbaa !9
  %291 = shl i32 %290, 3
  store i32 %291, ptr %80, align 4, !tbaa !9
  %292 = load ptr, ptr %23, align 8, !tbaa !5
  %293 = load ptr, ptr %24, align 8, !tbaa !5
  %294 = call i32 @ilaenv_(ptr noundef @c__1, ptr noundef @.str.6, ptr noundef %292, ptr noundef %293, ptr noundef @c_n1, ptr noundef @c_n1, ptr noundef @c_n1, i32 noundef 6, i32 noundef 1)
  store i32 %294, ptr %65, align 4, !tbaa !9
  %295 = load i32, ptr %65, align 4, !tbaa !9
  store i32 %295, ptr %45, align 4, !tbaa !9
  %296 = load ptr, ptr %23, align 8, !tbaa !5
  %297 = load ptr, ptr %24, align 8, !tbaa !5
  %298 = call i32 @ilaenv_(ptr noundef @c__1, ptr noundef @.str.7, ptr noundef %296, ptr noundef %297, ptr noundef @c_n1, ptr noundef @c_n1, ptr noundef @c_n1, i32 noundef 6, i32 noundef 1)
  store i32 %298, ptr %46, align 4, !tbaa !9
  %299 = load i32, ptr %45, align 4, !tbaa !9
  %300 = load i32, ptr %46, align 4, !tbaa !9
  %301 = icmp sge i32 %299, %300
  br i1 %301, label %302, label %304

302:                                              ; preds = %288
  %303 = load i32, ptr %45, align 4, !tbaa !9
  br label %306

304:                                              ; preds = %288
  %305 = load i32, ptr %46, align 4, !tbaa !9
  br label %306

306:                                              ; preds = %304, %302
  %307 = phi i32 [ %303, %302 ], [ %305, %304 ]
  store i32 %307, ptr %65, align 4, !tbaa !9
  %308 = load i32, ptr %80, align 4, !tbaa !9
  store i32 %308, ptr %45, align 4, !tbaa !9
  %309 = load i32, ptr %65, align 4, !tbaa !9
  %310 = add nsw i32 %309, 3
  %311 = load ptr, ptr %24, align 8, !tbaa !5
  %312 = load i32, ptr %311, align 4, !tbaa !9
  %313 = mul nsw i32 %310, %312
  store i32 %313, ptr %46, align 4, !tbaa !9
  %314 = load i32, ptr %45, align 4, !tbaa !9
  %315 = load i32, ptr %46, align 4, !tbaa !9
  %316 = icmp sge i32 %314, %315
  br i1 %316, label %317, label %319

317:                                              ; preds = %306
  %318 = load i32, ptr %45, align 4, !tbaa !9
  br label %321

319:                                              ; preds = %306
  %320 = load i32, ptr %46, align 4, !tbaa !9
  br label %321

321:                                              ; preds = %319, %317
  %322 = phi i32 [ %318, %317 ], [ %320, %319 ]
  store i32 %322, ptr %85, align 4, !tbaa !9
  %323 = load i32, ptr %85, align 4, !tbaa !9
  %324 = sitofp i32 %323 to double
  %325 = load ptr, ptr %36, align 8, !tbaa !5
  %326 = getelementptr inbounds double, ptr %325, i64 1
  store double %324, ptr %326, align 8, !tbaa !11
  br label %327

327:                                              ; preds = %321, %283
  %328 = load ptr, ptr %37, align 8, !tbaa !5
  %329 = load i32, ptr %328, align 4, !tbaa !9
  %330 = load i32, ptr %80, align 4, !tbaa !9
  %331 = icmp slt i32 %329, %330
  br i1 %331, label %332, label %337

332:                                              ; preds = %327
  %333 = load i32, ptr %86, align 4, !tbaa !9
  %334 = icmp ne i32 %333, 0
  br i1 %334, label %337, label %335

335:                                              ; preds = %332
  %336 = load ptr, ptr %40, align 8, !tbaa !5
  store i32 -17, ptr %336, align 4, !tbaa !9
  br label %337

337:                                              ; preds = %335, %332, %327
  br label %338

338:                                              ; preds = %337, %275
  %339 = load ptr, ptr %40, align 8, !tbaa !5
  %340 = load i32, ptr %339, align 4, !tbaa !9
  %341 = icmp ne i32 %340, 0
  br i1 %341, label %342, label %347

342:                                              ; preds = %338
  %343 = load ptr, ptr %40, align 8, !tbaa !5
  %344 = load i32, ptr %343, align 4, !tbaa !9
  %345 = sub nsw i32 0, %344
  store i32 %345, ptr %45, align 4, !tbaa !9
  %346 = call i32 @xerbla_(ptr noundef @.str.8, ptr noundef %45, i32 noundef 6)
  store i32 1, ptr %91, align 4
  br label %1019

347:                                              ; preds = %338
  %348 = load i32, ptr %86, align 4, !tbaa !9
  %349 = icmp ne i32 %348, 0
  br i1 %349, label %350, label %351

350:                                              ; preds = %347
  store i32 1, ptr %91, align 4
  br label %1019

351:                                              ; preds = %347
  br label %352

352:                                              ; preds = %351
  %353 = load ptr, ptr %32, align 8, !tbaa !5
  store i32 0, ptr %353, align 4, !tbaa !9
  %354 = load ptr, ptr %24, align 8, !tbaa !5
  %355 = load i32, ptr %354, align 4, !tbaa !9
  %356 = icmp eq i32 %355, 0
  br i1 %356, label %357, label %358

357:                                              ; preds = %352
  store i32 1, ptr %91, align 4
  br label %1019

358:                                              ; preds = %352
  %359 = load ptr, ptr %24, align 8, !tbaa !5
  %360 = load i32, ptr %359, align 4, !tbaa !9
  %361 = icmp eq i32 %360, 1
  br i1 %361, label %362, label %419

362:                                              ; preds = %358
  %363 = load i32, ptr %67, align 4, !tbaa !9
  %364 = icmp ne i32 %363, 0
  br i1 %364, label %368, label %365

365:                                              ; preds = %362
  %366 = load i32, ptr %68, align 4, !tbaa !9
  %367 = icmp ne i32 %366, 0
  br i1 %367, label %368, label %378

368:                                              ; preds = %365, %362
  %369 = load ptr, ptr %32, align 8, !tbaa !5
  store i32 1, ptr %369, align 4, !tbaa !9
  %370 = load ptr, ptr %25, align 8, !tbaa !5
  %371 = load i32, ptr %41, align 4, !tbaa !9
  %372 = add nsw i32 %371, 1
  %373 = sext i32 %372 to i64
  %374 = getelementptr inbounds double, ptr %370, i64 %373
  %375 = load double, ptr %374, align 8, !tbaa !11
  %376 = load ptr, ptr %33, align 8, !tbaa !5
  %377 = getelementptr inbounds double, ptr %376, i64 1
  store double %375, ptr %377, align 8, !tbaa !11
  br label %409

378:                                              ; preds = %365
  %379 = load ptr, ptr %27, align 8, !tbaa !5
  %380 = load double, ptr %379, align 8, !tbaa !11
  %381 = load ptr, ptr %25, align 8, !tbaa !5
  %382 = load i32, ptr %41, align 4, !tbaa !9
  %383 = add nsw i32 %382, 1
  %384 = sext i32 %383 to i64
  %385 = getelementptr inbounds double, ptr %381, i64 %384
  %386 = load double, ptr %385, align 8, !tbaa !11
  %387 = fcmp olt double %380, %386
  br i1 %387, label %388, label %408

388:                                              ; preds = %378
  %389 = load ptr, ptr %28, align 8, !tbaa !5
  %390 = load double, ptr %389, align 8, !tbaa !11
  %391 = load ptr, ptr %25, align 8, !tbaa !5
  %392 = load i32, ptr %41, align 4, !tbaa !9
  %393 = add nsw i32 %392, 1
  %394 = sext i32 %393 to i64
  %395 = getelementptr inbounds double, ptr %391, i64 %394
  %396 = load double, ptr %395, align 8, !tbaa !11
  %397 = fcmp oge double %390, %396
  br i1 %397, label %398, label %408

398:                                              ; preds = %388
  %399 = load ptr, ptr %32, align 8, !tbaa !5
  store i32 1, ptr %399, align 4, !tbaa !9
  %400 = load ptr, ptr %25, align 8, !tbaa !5
  %401 = load i32, ptr %41, align 4, !tbaa !9
  %402 = add nsw i32 %401, 1
  %403 = sext i32 %402 to i64
  %404 = getelementptr inbounds double, ptr %400, i64 %403
  %405 = load double, ptr %404, align 8, !tbaa !11
  %406 = load ptr, ptr %33, align 8, !tbaa !5
  %407 = getelementptr inbounds double, ptr %406, i64 1
  store double %405, ptr %407, align 8, !tbaa !11
  br label %408

408:                                              ; preds = %398, %388, %378
  br label %409

409:                                              ; preds = %408, %368
  %410 = load i32, ptr %64, align 4, !tbaa !9
  %411 = icmp ne i32 %410, 0
  br i1 %411, label %412, label %418

412:                                              ; preds = %409
  %413 = load ptr, ptr %34, align 8, !tbaa !5
  %414 = load i32, ptr %43, align 4, !tbaa !9
  %415 = add nsw i32 %414, 1
  %416 = sext i32 %415 to i64
  %417 = getelementptr inbounds double, ptr %413, i64 %416
  store double 1.000000e+00, ptr %417, align 8, !tbaa !11
  br label %418

418:                                              ; preds = %412, %409
  store i32 1, ptr %91, align 4
  br label %1019

419:                                              ; preds = %358
  %420 = call double @dlamch_(ptr noundef @.str.9)
  store double %420, ptr %72, align 8, !tbaa !11
  %421 = call double @dlamch_(ptr noundef @.str.10)
  store double %421, ptr %87, align 8, !tbaa !11
  %422 = load double, ptr %72, align 8, !tbaa !11
  %423 = load double, ptr %87, align 8, !tbaa !11
  %424 = fdiv double %422, %423
  store double %424, ptr %84, align 8, !tbaa !11
  %425 = load double, ptr %84, align 8, !tbaa !11
  %426 = fdiv double 1.000000e+00, %425
  store double %426, ptr %74, align 8, !tbaa !11
  %427 = load double, ptr %84, align 8, !tbaa !11
  %428 = call double @sqrt(double noundef %427) #4
  store double %428, ptr %53, align 8, !tbaa !11
  %429 = load double, ptr %74, align 8, !tbaa !11
  %430 = call double @sqrt(double noundef %429) #4
  store double %430, ptr %47, align 8, !tbaa !11
  %431 = load double, ptr %72, align 8, !tbaa !11
  %432 = call double @sqrt(double noundef %431) #4
  %433 = call double @sqrt(double noundef %432) #4
  %434 = fdiv double 1.000000e+00, %433
  store double %434, ptr %48, align 8, !tbaa !11
  %435 = load double, ptr %47, align 8, !tbaa !11
  %436 = load double, ptr %48, align 8, !tbaa !11
  %437 = fcmp ole double %435, %436
  br i1 %437, label %438, label %440

438:                                              ; preds = %419
  %439 = load double, ptr %47, align 8, !tbaa !11
  br label %442

440:                                              ; preds = %419
  %441 = load double, ptr %48, align 8, !tbaa !11
  br label %442

442:                                              ; preds = %440, %438
  %443 = phi double [ %439, %438 ], [ %441, %440 ]
  store double %443, ptr %54, align 8, !tbaa !11
  store i32 0, ptr %69, align 4, !tbaa !9
  %444 = load ptr, ptr %31, align 8, !tbaa !5
  %445 = load double, ptr %444, align 8, !tbaa !11
  store double %445, ptr %73, align 8, !tbaa !11
  %446 = load i32, ptr %71, align 4, !tbaa !9
  %447 = icmp ne i32 %446, 0
  br i1 %447, label %448, label %453

448:                                              ; preds = %442
  %449 = load ptr, ptr %27, align 8, !tbaa !5
  %450 = load double, ptr %449, align 8, !tbaa !11
  store double %450, ptr %88, align 8, !tbaa !11
  %451 = load ptr, ptr %28, align 8, !tbaa !5
  %452 = load double, ptr %451, align 8, !tbaa !11
  store double %452, ptr %89, align 8, !tbaa !11
  br label %453

453:                                              ; preds = %448, %442
  %454 = load ptr, ptr %23, align 8, !tbaa !5
  %455 = load ptr, ptr %24, align 8, !tbaa !5
  %456 = load ptr, ptr %25, align 8, !tbaa !5
  %457 = load i32, ptr %42, align 4, !tbaa !9
  %458 = sext i32 %457 to i64
  %459 = getelementptr inbounds double, ptr %456, i64 %458
  %460 = load ptr, ptr %26, align 8, !tbaa !5
  %461 = load ptr, ptr %36, align 8, !tbaa !5
  %462 = getelementptr inbounds double, ptr %461, i64 1
  %463 = call double @dlansy_(ptr noundef @.str.11, ptr noundef %454, ptr noundef %455, ptr noundef %459, ptr noundef %460, ptr noundef %462)
  store double %463, ptr %51, align 8, !tbaa !11
  %464 = load double, ptr %51, align 8, !tbaa !11
  %465 = fcmp ogt double %464, 0.000000e+00
  br i1 %465, label %466, label %474

466:                                              ; preds = %453
  %467 = load double, ptr %51, align 8, !tbaa !11
  %468 = load double, ptr %53, align 8, !tbaa !11
  %469 = fcmp olt double %467, %468
  br i1 %469, label %470, label %474

470:                                              ; preds = %466
  store i32 1, ptr %69, align 4, !tbaa !9
  %471 = load double, ptr %53, align 8, !tbaa !11
  %472 = load double, ptr %51, align 8, !tbaa !11
  %473 = fdiv double %471, %472
  store double %473, ptr %60, align 8, !tbaa !11
  br label %483

474:                                              ; preds = %466, %453
  %475 = load double, ptr %51, align 8, !tbaa !11
  %476 = load double, ptr %54, align 8, !tbaa !11
  %477 = fcmp ogt double %475, %476
  br i1 %477, label %478, label %482

478:                                              ; preds = %474
  store i32 1, ptr %69, align 4, !tbaa !9
  %479 = load double, ptr %54, align 8, !tbaa !11
  %480 = load double, ptr %51, align 8, !tbaa !11
  %481 = fdiv double %479, %480
  store double %481, ptr %60, align 8, !tbaa !11
  br label %482

482:                                              ; preds = %478, %474
  br label %483

483:                                              ; preds = %482, %470
  %484 = load i32, ptr %69, align 4, !tbaa !9
  %485 = icmp eq i32 %484, 1
  br i1 %485, label %486, label %555

486:                                              ; preds = %483
  %487 = load i32, ptr %63, align 4, !tbaa !9
  %488 = icmp ne i32 %487, 0
  br i1 %488, label %489, label %514

489:                                              ; preds = %486
  %490 = load ptr, ptr %24, align 8, !tbaa !5
  %491 = load i32, ptr %490, align 4, !tbaa !9
  store i32 %491, ptr %45, align 4, !tbaa !9
  store i32 1, ptr %58, align 4, !tbaa !9
  br label %492

492:                                              ; preds = %510, %489
  %493 = load i32, ptr %58, align 4, !tbaa !9
  %494 = load i32, ptr %45, align 4, !tbaa !9
  %495 = icmp sle i32 %493, %494
  br i1 %495, label %496, label %513

496:                                              ; preds = %492
  %497 = load ptr, ptr %24, align 8, !tbaa !5
  %498 = load i32, ptr %497, align 4, !tbaa !9
  %499 = load i32, ptr %58, align 4, !tbaa !9
  %500 = sub nsw i32 %498, %499
  %501 = add nsw i32 %500, 1
  store i32 %501, ptr %46, align 4, !tbaa !9
  %502 = load ptr, ptr %25, align 8, !tbaa !5
  %503 = load i32, ptr %58, align 4, !tbaa !9
  %504 = load i32, ptr %58, align 4, !tbaa !9
  %505 = load i32, ptr %41, align 4, !tbaa !9
  %506 = mul nsw i32 %504, %505
  %507 = add nsw i32 %503, %506
  %508 = sext i32 %507 to i64
  %509 = getelementptr inbounds double, ptr %502, i64 %508
  call void @dscal_(ptr noundef %46, ptr noundef %60, ptr noundef %509, ptr noundef @c__1)
  br label %510

510:                                              ; preds = %496
  %511 = load i32, ptr %58, align 4, !tbaa !9
  %512 = add nsw i32 %511, 1
  store i32 %512, ptr %58, align 4, !tbaa !9
  br label %492, !llvm.loop !13

513:                                              ; preds = %492
  br label %533

514:                                              ; preds = %486
  %515 = load ptr, ptr %24, align 8, !tbaa !5
  %516 = load i32, ptr %515, align 4, !tbaa !9
  store i32 %516, ptr %45, align 4, !tbaa !9
  store i32 1, ptr %58, align 4, !tbaa !9
  br label %517

517:                                              ; preds = %529, %514
  %518 = load i32, ptr %58, align 4, !tbaa !9
  %519 = load i32, ptr %45, align 4, !tbaa !9
  %520 = icmp sle i32 %518, %519
  br i1 %520, label %521, label %532

521:                                              ; preds = %517
  %522 = load ptr, ptr %25, align 8, !tbaa !5
  %523 = load i32, ptr %58, align 4, !tbaa !9
  %524 = load i32, ptr %41, align 4, !tbaa !9
  %525 = mul nsw i32 %523, %524
  %526 = add nsw i32 %525, 1
  %527 = sext i32 %526 to i64
  %528 = getelementptr inbounds double, ptr %522, i64 %527
  call void @dscal_(ptr noundef %58, ptr noundef %60, ptr noundef %528, ptr noundef @c__1)
  br label %529

529:                                              ; preds = %521
  %530 = load i32, ptr %58, align 4, !tbaa !9
  %531 = add nsw i32 %530, 1
  store i32 %531, ptr %58, align 4, !tbaa !9
  br label %517, !llvm.loop !15

532:                                              ; preds = %517
  br label %533

533:                                              ; preds = %532, %513
  %534 = load ptr, ptr %31, align 8, !tbaa !5
  %535 = load double, ptr %534, align 8, !tbaa !11
  %536 = fcmp ogt double %535, 0.000000e+00
  br i1 %536, label %537, label %542

537:                                              ; preds = %533
  %538 = load ptr, ptr %31, align 8, !tbaa !5
  %539 = load double, ptr %538, align 8, !tbaa !11
  %540 = load double, ptr %60, align 8, !tbaa !11
  %541 = fmul double %539, %540
  store double %541, ptr %73, align 8, !tbaa !11
  br label %542

542:                                              ; preds = %537, %533
  %543 = load i32, ptr %71, align 4, !tbaa !9
  %544 = icmp ne i32 %543, 0
  br i1 %544, label %545, label %554

545:                                              ; preds = %542
  %546 = load ptr, ptr %27, align 8, !tbaa !5
  %547 = load double, ptr %546, align 8, !tbaa !11
  %548 = load double, ptr %60, align 8, !tbaa !11
  %549 = fmul double %547, %548
  store double %549, ptr %88, align 8, !tbaa !11
  %550 = load ptr, ptr %28, align 8, !tbaa !5
  %551 = load double, ptr %550, align 8, !tbaa !11
  %552 = load double, ptr %60, align 8, !tbaa !11
  %553 = fmul double %551, %552
  store double %553, ptr %89, align 8, !tbaa !11
  br label %554

554:                                              ; preds = %545, %542
  br label %555

555:                                              ; preds = %554, %483
  store i32 1, ptr %75, align 4, !tbaa !9
  %556 = load i32, ptr %75, align 4, !tbaa !9
  %557 = load ptr, ptr %24, align 8, !tbaa !5
  %558 = load i32, ptr %557, align 4, !tbaa !9
  %559 = add nsw i32 %556, %558
  store i32 %559, ptr %50, align 4, !tbaa !9
  %560 = load i32, ptr %50, align 4, !tbaa !9
  %561 = load ptr, ptr %24, align 8, !tbaa !5
  %562 = load i32, ptr %561, align 4, !tbaa !9
  %563 = add nsw i32 %560, %562
  store i32 %563, ptr %49, align 4, !tbaa !9
  %564 = load i32, ptr %49, align 4, !tbaa !9
  %565 = load ptr, ptr %24, align 8, !tbaa !5
  %566 = load i32, ptr %565, align 4, !tbaa !9
  %567 = add nsw i32 %564, %566
  store i32 %567, ptr %79, align 4, !tbaa !9
  %568 = load ptr, ptr %37, align 8, !tbaa !5
  %569 = load i32, ptr %568, align 4, !tbaa !9
  %570 = load i32, ptr %79, align 4, !tbaa !9
  %571 = sub nsw i32 %569, %570
  %572 = add nsw i32 %571, 1
  store i32 %572, ptr %82, align 4, !tbaa !9
  %573 = load ptr, ptr %23, align 8, !tbaa !5
  %574 = load ptr, ptr %24, align 8, !tbaa !5
  %575 = load ptr, ptr %25, align 8, !tbaa !5
  %576 = load i32, ptr %42, align 4, !tbaa !9
  %577 = sext i32 %576 to i64
  %578 = getelementptr inbounds double, ptr %575, i64 %577
  %579 = load ptr, ptr %26, align 8, !tbaa !5
  %580 = load ptr, ptr %36, align 8, !tbaa !5
  %581 = load i32, ptr %49, align 4, !tbaa !9
  %582 = sext i32 %581 to i64
  %583 = getelementptr inbounds double, ptr %580, i64 %582
  %584 = load ptr, ptr %36, align 8, !tbaa !5
  %585 = load i32, ptr %50, align 4, !tbaa !9
  %586 = sext i32 %585 to i64
  %587 = getelementptr inbounds double, ptr %584, i64 %586
  %588 = load ptr, ptr %36, align 8, !tbaa !5
  %589 = load i32, ptr %75, align 4, !tbaa !9
  %590 = sext i32 %589 to i64
  %591 = getelementptr inbounds double, ptr %588, i64 %590
  %592 = load ptr, ptr %36, align 8, !tbaa !5
  %593 = load i32, ptr %79, align 4, !tbaa !9
  %594 = sext i32 %593 to i64
  %595 = getelementptr inbounds double, ptr %592, i64 %594
  call void @dsytrd_(ptr noundef %573, ptr noundef %574, ptr noundef %578, ptr noundef %579, ptr noundef %583, ptr noundef %587, ptr noundef %591, ptr noundef %595, ptr noundef %82, ptr noundef %61)
  store i32 0, ptr %55, align 4, !tbaa !9
  %596 = load i32, ptr %68, align 4, !tbaa !9
  %597 = icmp ne i32 %596, 0
  br i1 %597, label %598, label %610

598:                                              ; preds = %555
  %599 = load ptr, ptr %29, align 8, !tbaa !5
  %600 = load i32, ptr %599, align 4, !tbaa !9
  %601 = icmp eq i32 %600, 1
  br i1 %601, label %602, label %609

602:                                              ; preds = %598
  %603 = load ptr, ptr %30, align 8, !tbaa !5
  %604 = load i32, ptr %603, align 4, !tbaa !9
  %605 = load ptr, ptr %24, align 8, !tbaa !5
  %606 = load i32, ptr %605, align 4, !tbaa !9
  %607 = icmp eq i32 %604, %606
  br i1 %607, label %608, label %609

608:                                              ; preds = %602
  store i32 1, ptr %55, align 4, !tbaa !9
  br label %609

609:                                              ; preds = %608, %602, %598
  br label %610

610:                                              ; preds = %609, %555
  %611 = load i32, ptr %67, align 4, !tbaa !9
  %612 = icmp ne i32 %611, 0
  br i1 %612, label %616, label %613

613:                                              ; preds = %610
  %614 = load i32, ptr %55, align 4, !tbaa !9
  %615 = icmp ne i32 %614, 0
  br i1 %615, label %616, label %742

616:                                              ; preds = %613, %610
  %617 = load ptr, ptr %31, align 8, !tbaa !5
  %618 = load double, ptr %617, align 8, !tbaa !11
  %619 = fcmp ole double %618, 0.000000e+00
  br i1 %619, label %620, label %742

620:                                              ; preds = %616
  %621 = load ptr, ptr %24, align 8, !tbaa !5
  %622 = load ptr, ptr %36, align 8, !tbaa !5
  %623 = load i32, ptr %49, align 4, !tbaa !9
  %624 = sext i32 %623 to i64
  %625 = getelementptr inbounds double, ptr %622, i64 %624
  %626 = load ptr, ptr %33, align 8, !tbaa !5
  %627 = getelementptr inbounds double, ptr %626, i64 1
  call void @dcopy_(ptr noundef %621, ptr noundef %625, ptr noundef @c__1, ptr noundef %627, ptr noundef @c__1)
  %628 = load i32, ptr %79, align 4, !tbaa !9
  %629 = load ptr, ptr %24, align 8, !tbaa !5
  %630 = load i32, ptr %629, align 4, !tbaa !9
  %631 = shl i32 %630, 1
  %632 = add nsw i32 %628, %631
  store i32 %632, ptr %59, align 4, !tbaa !9
  %633 = load i32, ptr %64, align 4, !tbaa !9
  %634 = icmp ne i32 %633, 0
  br i1 %634, label %655, label %635

635:                                              ; preds = %620
  %636 = load ptr, ptr %24, align 8, !tbaa !5
  %637 = load i32, ptr %636, align 4, !tbaa !9
  %638 = sub nsw i32 %637, 1
  store i32 %638, ptr %45, align 4, !tbaa !9
  %639 = load ptr, ptr %36, align 8, !tbaa !5
  %640 = load i32, ptr %50, align 4, !tbaa !9
  %641 = sext i32 %640 to i64
  %642 = getelementptr inbounds double, ptr %639, i64 %641
  %643 = load ptr, ptr %36, align 8, !tbaa !5
  %644 = load i32, ptr %59, align 4, !tbaa !9
  %645 = sext i32 %644 to i64
  %646 = getelementptr inbounds double, ptr %643, i64 %645
  call void @dcopy_(ptr noundef %45, ptr noundef %642, ptr noundef @c__1, ptr noundef %646, ptr noundef @c__1)
  %647 = load ptr, ptr %24, align 8, !tbaa !5
  %648 = load ptr, ptr %33, align 8, !tbaa !5
  %649 = getelementptr inbounds double, ptr %648, i64 1
  %650 = load ptr, ptr %36, align 8, !tbaa !5
  %651 = load i32, ptr %59, align 4, !tbaa !9
  %652 = sext i32 %651 to i64
  %653 = getelementptr inbounds double, ptr %650, i64 %652
  %654 = load ptr, ptr %40, align 8, !tbaa !5
  call void @dsterf_(ptr noundef %647, ptr noundef %649, ptr noundef %653, ptr noundef %654)
  br label %732

655:                                              ; preds = %620
  %656 = load ptr, ptr %24, align 8, !tbaa !5
  %657 = load ptr, ptr %24, align 8, !tbaa !5
  %658 = load ptr, ptr %25, align 8, !tbaa !5
  %659 = load i32, ptr %42, align 4, !tbaa !9
  %660 = sext i32 %659 to i64
  %661 = getelementptr inbounds double, ptr %658, i64 %660
  %662 = load ptr, ptr %26, align 8, !tbaa !5
  %663 = load ptr, ptr %34, align 8, !tbaa !5
  %664 = load i32, ptr %44, align 4, !tbaa !9
  %665 = sext i32 %664 to i64
  %666 = getelementptr inbounds double, ptr %663, i64 %665
  %667 = load ptr, ptr %35, align 8, !tbaa !5
  call void @dlacpy_(ptr noundef @.str.2, ptr noundef %656, ptr noundef %657, ptr noundef %661, ptr noundef %662, ptr noundef %666, ptr noundef %667)
  %668 = load ptr, ptr %23, align 8, !tbaa !5
  %669 = load ptr, ptr %24, align 8, !tbaa !5
  %670 = load ptr, ptr %34, align 8, !tbaa !5
  %671 = load i32, ptr %44, align 4, !tbaa !9
  %672 = sext i32 %671 to i64
  %673 = getelementptr inbounds double, ptr %670, i64 %672
  %674 = load ptr, ptr %35, align 8, !tbaa !5
  %675 = load ptr, ptr %36, align 8, !tbaa !5
  %676 = load i32, ptr %75, align 4, !tbaa !9
  %677 = sext i32 %676 to i64
  %678 = getelementptr inbounds double, ptr %675, i64 %677
  %679 = load ptr, ptr %36, align 8, !tbaa !5
  %680 = load i32, ptr %79, align 4, !tbaa !9
  %681 = sext i32 %680 to i64
  %682 = getelementptr inbounds double, ptr %679, i64 %681
  call void @dorgtr_(ptr noundef %668, ptr noundef %669, ptr noundef %673, ptr noundef %674, ptr noundef %678, ptr noundef %682, ptr noundef %82, ptr noundef %61)
  %683 = load ptr, ptr %24, align 8, !tbaa !5
  %684 = load i32, ptr %683, align 4, !tbaa !9
  %685 = sub nsw i32 %684, 1
  store i32 %685, ptr %45, align 4, !tbaa !9
  %686 = load ptr, ptr %36, align 8, !tbaa !5
  %687 = load i32, ptr %50, align 4, !tbaa !9
  %688 = sext i32 %687 to i64
  %689 = getelementptr inbounds double, ptr %686, i64 %688
  %690 = load ptr, ptr %36, align 8, !tbaa !5
  %691 = load i32, ptr %59, align 4, !tbaa !9
  %692 = sext i32 %691 to i64
  %693 = getelementptr inbounds double, ptr %690, i64 %692
  call void @dcopy_(ptr noundef %45, ptr noundef %689, ptr noundef @c__1, ptr noundef %693, ptr noundef @c__1)
  %694 = load ptr, ptr %21, align 8, !tbaa !5
  %695 = load ptr, ptr %24, align 8, !tbaa !5
  %696 = load ptr, ptr %33, align 8, !tbaa !5
  %697 = getelementptr inbounds double, ptr %696, i64 1
  %698 = load ptr, ptr %36, align 8, !tbaa !5
  %699 = load i32, ptr %59, align 4, !tbaa !9
  %700 = sext i32 %699 to i64
  %701 = getelementptr inbounds double, ptr %698, i64 %700
  %702 = load ptr, ptr %34, align 8, !tbaa !5
  %703 = load i32, ptr %44, align 4, !tbaa !9
  %704 = sext i32 %703 to i64
  %705 = getelementptr inbounds double, ptr %702, i64 %704
  %706 = load ptr, ptr %35, align 8, !tbaa !5
  %707 = load ptr, ptr %36, align 8, !tbaa !5
  %708 = load i32, ptr %79, align 4, !tbaa !9
  %709 = sext i32 %708 to i64
  %710 = getelementptr inbounds double, ptr %707, i64 %709
  %711 = load ptr, ptr %40, align 8, !tbaa !5
  call void @dsteqr_(ptr noundef %694, ptr noundef %695, ptr noundef %697, ptr noundef %701, ptr noundef %705, ptr noundef %706, ptr noundef %710, ptr noundef %711)
  %712 = load ptr, ptr %40, align 8, !tbaa !5
  %713 = load i32, ptr %712, align 4, !tbaa !9
  %714 = icmp eq i32 %713, 0
  br i1 %714, label %715, label %731

715:                                              ; preds = %655
  %716 = load ptr, ptr %24, align 8, !tbaa !5
  %717 = load i32, ptr %716, align 4, !tbaa !9
  store i32 %717, ptr %45, align 4, !tbaa !9
  store i32 1, ptr %57, align 4, !tbaa !9
  br label %718

718:                                              ; preds = %727, %715
  %719 = load i32, ptr %57, align 4, !tbaa !9
  %720 = load i32, ptr %45, align 4, !tbaa !9
  %721 = icmp sle i32 %719, %720
  br i1 %721, label %722, label %730

722:                                              ; preds = %718
  %723 = load ptr, ptr %39, align 8, !tbaa !5
  %724 = load i32, ptr %57, align 4, !tbaa !9
  %725 = sext i32 %724 to i64
  %726 = getelementptr inbounds i32, ptr %723, i64 %725
  store i32 0, ptr %726, align 4, !tbaa !9
  br label %727

727:                                              ; preds = %722
  %728 = load i32, ptr %57, align 4, !tbaa !9
  %729 = add nsw i32 %728, 1
  store i32 %729, ptr %57, align 4, !tbaa !9
  br label %718, !llvm.loop !16

730:                                              ; preds = %718
  br label %731

731:                                              ; preds = %730, %655
  br label %732

732:                                              ; preds = %731, %635
  %733 = load ptr, ptr %40, align 8, !tbaa !5
  %734 = load i32, ptr %733, align 4, !tbaa !9
  %735 = icmp eq i32 %734, 0
  br i1 %735, label %736, label %740

736:                                              ; preds = %732
  %737 = load ptr, ptr %24, align 8, !tbaa !5
  %738 = load i32, ptr %737, align 4, !tbaa !9
  %739 = load ptr, ptr %32, align 8, !tbaa !5
  store i32 %738, ptr %739, align 4, !tbaa !9
  br label %858

740:                                              ; preds = %732
  %741 = load ptr, ptr %40, align 8, !tbaa !5
  store i32 0, ptr %741, align 4, !tbaa !9
  br label %742

742:                                              ; preds = %740, %616, %613
  %743 = load i32, ptr %64, align 4, !tbaa !9
  %744 = icmp ne i32 %743, 0
  br i1 %744, label %745, label %747

745:                                              ; preds = %742
  %746 = getelementptr inbounds [1 x i8], ptr %62, i64 0, i64 0
  store i8 66, ptr %746, align 1, !tbaa !17
  br label %749

747:                                              ; preds = %742
  %748 = getelementptr inbounds [1 x i8], ptr %62, i64 0, i64 0
  store i8 69, ptr %748, align 1, !tbaa !17
  br label %749

749:                                              ; preds = %747, %745
  store i32 1, ptr %70, align 4, !tbaa !9
  %750 = load i32, ptr %70, align 4, !tbaa !9
  %751 = load ptr, ptr %24, align 8, !tbaa !5
  %752 = load i32, ptr %751, align 4, !tbaa !9
  %753 = add nsw i32 %750, %752
  store i32 %753, ptr %76, align 4, !tbaa !9
  %754 = load i32, ptr %76, align 4, !tbaa !9
  %755 = load ptr, ptr %24, align 8, !tbaa !5
  %756 = load i32, ptr %755, align 4, !tbaa !9
  %757 = add nsw i32 %754, %756
  store i32 %757, ptr %77, align 4, !tbaa !9
  %758 = load ptr, ptr %22, align 8, !tbaa !5
  %759 = getelementptr inbounds [1 x i8], ptr %62, i64 0, i64 0
  %760 = load ptr, ptr %24, align 8, !tbaa !5
  %761 = load ptr, ptr %29, align 8, !tbaa !5
  %762 = load ptr, ptr %30, align 8, !tbaa !5
  %763 = load ptr, ptr %36, align 8, !tbaa !5
  %764 = load i32, ptr %49, align 4, !tbaa !9
  %765 = sext i32 %764 to i64
  %766 = getelementptr inbounds double, ptr %763, i64 %765
  %767 = load ptr, ptr %36, align 8, !tbaa !5
  %768 = load i32, ptr %50, align 4, !tbaa !9
  %769 = sext i32 %768 to i64
  %770 = getelementptr inbounds double, ptr %767, i64 %769
  %771 = load ptr, ptr %32, align 8, !tbaa !5
  %772 = load ptr, ptr %33, align 8, !tbaa !5
  %773 = getelementptr inbounds double, ptr %772, i64 1
  %774 = load ptr, ptr %38, align 8, !tbaa !5
  %775 = load i32, ptr %70, align 4, !tbaa !9
  %776 = sext i32 %775 to i64
  %777 = getelementptr inbounds i32, ptr %774, i64 %776
  %778 = load ptr, ptr %38, align 8, !tbaa !5
  %779 = load i32, ptr %76, align 4, !tbaa !9
  %780 = sext i32 %779 to i64
  %781 = getelementptr inbounds i32, ptr %778, i64 %780
  %782 = load ptr, ptr %36, align 8, !tbaa !5
  %783 = load i32, ptr %79, align 4, !tbaa !9
  %784 = sext i32 %783 to i64
  %785 = getelementptr inbounds double, ptr %782, i64 %784
  %786 = load ptr, ptr %38, align 8, !tbaa !5
  %787 = load i32, ptr %77, align 4, !tbaa !9
  %788 = sext i32 %787 to i64
  %789 = getelementptr inbounds i32, ptr %786, i64 %788
  %790 = load ptr, ptr %40, align 8, !tbaa !5
  call void @dstebz_(ptr noundef %758, ptr noundef %759, ptr noundef %760, ptr noundef %88, ptr noundef %89, ptr noundef %761, ptr noundef %762, ptr noundef %73, ptr noundef %766, ptr noundef %770, ptr noundef %771, ptr noundef %83, ptr noundef %773, ptr noundef %777, ptr noundef %781, ptr noundef %785, ptr noundef %789, ptr noundef %790)
  %791 = load i32, ptr %64, align 4, !tbaa !9
  %792 = icmp ne i32 %791, 0
  br i1 %792, label %793, label %857

793:                                              ; preds = %749
  %794 = load ptr, ptr %24, align 8, !tbaa !5
  %795 = load ptr, ptr %36, align 8, !tbaa !5
  %796 = load i32, ptr %49, align 4, !tbaa !9
  %797 = sext i32 %796 to i64
  %798 = getelementptr inbounds double, ptr %795, i64 %797
  %799 = load ptr, ptr %36, align 8, !tbaa !5
  %800 = load i32, ptr %50, align 4, !tbaa !9
  %801 = sext i32 %800 to i64
  %802 = getelementptr inbounds double, ptr %799, i64 %801
  %803 = load ptr, ptr %32, align 8, !tbaa !5
  %804 = load ptr, ptr %33, align 8, !tbaa !5
  %805 = getelementptr inbounds double, ptr %804, i64 1
  %806 = load ptr, ptr %38, align 8, !tbaa !5
  %807 = load i32, ptr %70, align 4, !tbaa !9
  %808 = sext i32 %807 to i64
  %809 = getelementptr inbounds i32, ptr %806, i64 %808
  %810 = load ptr, ptr %38, align 8, !tbaa !5
  %811 = load i32, ptr %76, align 4, !tbaa !9
  %812 = sext i32 %811 to i64
  %813 = getelementptr inbounds i32, ptr %810, i64 %812
  %814 = load ptr, ptr %34, align 8, !tbaa !5
  %815 = load i32, ptr %44, align 4, !tbaa !9
  %816 = sext i32 %815 to i64
  %817 = getelementptr inbounds double, ptr %814, i64 %816
  %818 = load ptr, ptr %35, align 8, !tbaa !5
  %819 = load ptr, ptr %36, align 8, !tbaa !5
  %820 = load i32, ptr %79, align 4, !tbaa !9
  %821 = sext i32 %820 to i64
  %822 = getelementptr inbounds double, ptr %819, i64 %821
  %823 = load ptr, ptr %38, align 8, !tbaa !5
  %824 = load i32, ptr %77, align 4, !tbaa !9
  %825 = sext i32 %824 to i64
  %826 = getelementptr inbounds i32, ptr %823, i64 %825
  %827 = load ptr, ptr %39, align 8, !tbaa !5
  %828 = getelementptr inbounds i32, ptr %827, i64 1
  %829 = load ptr, ptr %40, align 8, !tbaa !5
  call void @dstein_(ptr noundef %794, ptr noundef %798, ptr noundef %802, ptr noundef %803, ptr noundef %805, ptr noundef %809, ptr noundef %813, ptr noundef %817, ptr noundef %818, ptr noundef %822, ptr noundef %826, ptr noundef %828, ptr noundef %829)
  %830 = load i32, ptr %50, align 4, !tbaa !9
  store i32 %830, ptr %78, align 4, !tbaa !9
  %831 = load ptr, ptr %37, align 8, !tbaa !5
  %832 = load i32, ptr %831, align 4, !tbaa !9
  %833 = load i32, ptr %78, align 4, !tbaa !9
  %834 = sub nsw i32 %832, %833
  %835 = add nsw i32 %834, 1
  store i32 %835, ptr %81, align 4, !tbaa !9
  %836 = load ptr, ptr %23, align 8, !tbaa !5
  %837 = load ptr, ptr %24, align 8, !tbaa !5
  %838 = load ptr, ptr %32, align 8, !tbaa !5
  %839 = load ptr, ptr %25, align 8, !tbaa !5
  %840 = load i32, ptr %42, align 4, !tbaa !9
  %841 = sext i32 %840 to i64
  %842 = getelementptr inbounds double, ptr %839, i64 %841
  %843 = load ptr, ptr %26, align 8, !tbaa !5
  %844 = load ptr, ptr %36, align 8, !tbaa !5
  %845 = load i32, ptr %75, align 4, !tbaa !9
  %846 = sext i32 %845 to i64
  %847 = getelementptr inbounds double, ptr %844, i64 %846
  %848 = load ptr, ptr %34, align 8, !tbaa !5
  %849 = load i32, ptr %44, align 4, !tbaa !9
  %850 = sext i32 %849 to i64
  %851 = getelementptr inbounds double, ptr %848, i64 %850
  %852 = load ptr, ptr %35, align 8, !tbaa !5
  %853 = load ptr, ptr %36, align 8, !tbaa !5
  %854 = load i32, ptr %78, align 4, !tbaa !9
  %855 = sext i32 %854 to i64
  %856 = getelementptr inbounds double, ptr %853, i64 %855
  call void @dormtr_(ptr noundef @.str, ptr noundef %836, ptr noundef @.str.4, ptr noundef %837, ptr noundef %838, ptr noundef %842, ptr noundef %843, ptr noundef %847, ptr noundef %851, ptr noundef %852, ptr noundef %856, ptr noundef %81, ptr noundef %61)
  br label %857

857:                                              ; preds = %793, %749
  br label %858

858:                                              ; preds = %857, %736
  %859 = load i32, ptr %69, align 4, !tbaa !9
  %860 = icmp eq i32 %859, 1
  br i1 %860, label %861, label %877

861:                                              ; preds = %858
  %862 = load ptr, ptr %40, align 8, !tbaa !5
  %863 = load i32, ptr %862, align 4, !tbaa !9
  %864 = icmp eq i32 %863, 0
  br i1 %864, label %865, label %868

865:                                              ; preds = %861
  %866 = load ptr, ptr %32, align 8, !tbaa !5
  %867 = load i32, ptr %866, align 4, !tbaa !9
  store i32 %867, ptr %52, align 4, !tbaa !9
  br label %872

868:                                              ; preds = %861
  %869 = load ptr, ptr %40, align 8, !tbaa !5
  %870 = load i32, ptr %869, align 4, !tbaa !9
  %871 = sub nsw i32 %870, 1
  store i32 %871, ptr %52, align 4, !tbaa !9
  br label %872

872:                                              ; preds = %868, %865
  %873 = load double, ptr %60, align 8, !tbaa !11
  %874 = fdiv double 1.000000e+00, %873
  store double %874, ptr %47, align 8, !tbaa !11
  %875 = load ptr, ptr %33, align 8, !tbaa !5
  %876 = getelementptr inbounds double, ptr %875, i64 1
  call void @dscal_(ptr noundef %52, ptr noundef %47, ptr noundef %876, ptr noundef @c__1)
  br label %877

877:                                              ; preds = %872, %858
  %878 = load i32, ptr %64, align 4, !tbaa !9
  %879 = icmp ne i32 %878, 0
  br i1 %879, label %880, label %1014

880:                                              ; preds = %877
  %881 = load ptr, ptr %32, align 8, !tbaa !5
  %882 = load i32, ptr %881, align 4, !tbaa !9
  %883 = sub nsw i32 %882, 1
  store i32 %883, ptr %45, align 4, !tbaa !9
  store i32 1, ptr %58, align 4, !tbaa !9
  br label %884

884:                                              ; preds = %1010, %880
  %885 = load i32, ptr %58, align 4, !tbaa !9
  %886 = load i32, ptr %45, align 4, !tbaa !9
  %887 = icmp sle i32 %885, %886
  br i1 %887, label %888, label %1013

888:                                              ; preds = %884
  store i32 0, ptr %57, align 4, !tbaa !9
  %889 = load ptr, ptr %33, align 8, !tbaa !5
  %890 = load i32, ptr %58, align 4, !tbaa !9
  %891 = sext i32 %890 to i64
  %892 = getelementptr inbounds double, ptr %889, i64 %891
  %893 = load double, ptr %892, align 8, !tbaa !11
  store double %893, ptr %90, align 8, !tbaa !11
  %894 = load ptr, ptr %32, align 8, !tbaa !5
  %895 = load i32, ptr %894, align 4, !tbaa !9
  store i32 %895, ptr %46, align 4, !tbaa !9
  %896 = load i32, ptr %58, align 4, !tbaa !9
  %897 = add nsw i32 %896, 1
  store i32 %897, ptr %66, align 4, !tbaa !9
  br label %898

898:                                              ; preds = %918, %888
  %899 = load i32, ptr %66, align 4, !tbaa !9
  %900 = load i32, ptr %46, align 4, !tbaa !9
  %901 = icmp sle i32 %899, %900
  br i1 %901, label %902, label %921

902:                                              ; preds = %898
  %903 = load ptr, ptr %33, align 8, !tbaa !5
  %904 = load i32, ptr %66, align 4, !tbaa !9
  %905 = sext i32 %904 to i64
  %906 = getelementptr inbounds double, ptr %903, i64 %905
  %907 = load double, ptr %906, align 8, !tbaa !11
  %908 = load double, ptr %90, align 8, !tbaa !11
  %909 = fcmp olt double %907, %908
  br i1 %909, label %910, label %917

910:                                              ; preds = %902
  %911 = load i32, ptr %66, align 4, !tbaa !9
  store i32 %911, ptr %57, align 4, !tbaa !9
  %912 = load ptr, ptr %33, align 8, !tbaa !5
  %913 = load i32, ptr %66, align 4, !tbaa !9
  %914 = sext i32 %913 to i64
  %915 = getelementptr inbounds double, ptr %912, i64 %914
  %916 = load double, ptr %915, align 8, !tbaa !11
  store double %916, ptr %90, align 8, !tbaa !11
  br label %917

917:                                              ; preds = %910, %902
  br label %918

918:                                              ; preds = %917
  %919 = load i32, ptr %66, align 4, !tbaa !9
  %920 = add nsw i32 %919, 1
  store i32 %920, ptr %66, align 4, !tbaa !9
  br label %898, !llvm.loop !18

921:                                              ; preds = %898
  %922 = load i32, ptr %57, align 4, !tbaa !9
  %923 = icmp ne i32 %922, 0
  br i1 %923, label %924, label %1009

924:                                              ; preds = %921
  %925 = load ptr, ptr %38, align 8, !tbaa !5
  %926 = load i32, ptr %70, align 4, !tbaa !9
  %927 = load i32, ptr %57, align 4, !tbaa !9
  %928 = add nsw i32 %926, %927
  %929 = sub nsw i32 %928, 1
  %930 = sext i32 %929 to i64
  %931 = getelementptr inbounds i32, ptr %925, i64 %930
  %932 = load i32, ptr %931, align 4, !tbaa !9
  store i32 %932, ptr %56, align 4, !tbaa !9
  %933 = load ptr, ptr %33, align 8, !tbaa !5
  %934 = load i32, ptr %58, align 4, !tbaa !9
  %935 = sext i32 %934 to i64
  %936 = getelementptr inbounds double, ptr %933, i64 %935
  %937 = load double, ptr %936, align 8, !tbaa !11
  %938 = load ptr, ptr %33, align 8, !tbaa !5
  %939 = load i32, ptr %57, align 4, !tbaa !9
  %940 = sext i32 %939 to i64
  %941 = getelementptr inbounds double, ptr %938, i64 %940
  store double %937, ptr %941, align 8, !tbaa !11
  %942 = load ptr, ptr %38, align 8, !tbaa !5
  %943 = load i32, ptr %70, align 4, !tbaa !9
  %944 = load i32, ptr %58, align 4, !tbaa !9
  %945 = add nsw i32 %943, %944
  %946 = sub nsw i32 %945, 1
  %947 = sext i32 %946 to i64
  %948 = getelementptr inbounds i32, ptr %942, i64 %947
  %949 = load i32, ptr %948, align 4, !tbaa !9
  %950 = load ptr, ptr %38, align 8, !tbaa !5
  %951 = load i32, ptr %70, align 4, !tbaa !9
  %952 = load i32, ptr %57, align 4, !tbaa !9
  %953 = add nsw i32 %951, %952
  %954 = sub nsw i32 %953, 1
  %955 = sext i32 %954 to i64
  %956 = getelementptr inbounds i32, ptr %950, i64 %955
  store i32 %949, ptr %956, align 4, !tbaa !9
  %957 = load double, ptr %90, align 8, !tbaa !11
  %958 = load ptr, ptr %33, align 8, !tbaa !5
  %959 = load i32, ptr %58, align 4, !tbaa !9
  %960 = sext i32 %959 to i64
  %961 = getelementptr inbounds double, ptr %958, i64 %960
  store double %957, ptr %961, align 8, !tbaa !11
  %962 = load i32, ptr %56, align 4, !tbaa !9
  %963 = load ptr, ptr %38, align 8, !tbaa !5
  %964 = load i32, ptr %70, align 4, !tbaa !9
  %965 = load i32, ptr %58, align 4, !tbaa !9
  %966 = add nsw i32 %964, %965
  %967 = sub nsw i32 %966, 1
  %968 = sext i32 %967 to i64
  %969 = getelementptr inbounds i32, ptr %963, i64 %968
  store i32 %962, ptr %969, align 4, !tbaa !9
  %970 = load ptr, ptr %24, align 8, !tbaa !5
  %971 = load ptr, ptr %34, align 8, !tbaa !5
  %972 = load i32, ptr %57, align 4, !tbaa !9
  %973 = load i32, ptr %43, align 4, !tbaa !9
  %974 = mul nsw i32 %972, %973
  %975 = add nsw i32 %974, 1
  %976 = sext i32 %975 to i64
  %977 = getelementptr inbounds double, ptr %971, i64 %976
  %978 = load ptr, ptr %34, align 8, !tbaa !5
  %979 = load i32, ptr %58, align 4, !tbaa !9
  %980 = load i32, ptr %43, align 4, !tbaa !9
  %981 = mul nsw i32 %979, %980
  %982 = add nsw i32 %981, 1
  %983 = sext i32 %982 to i64
  %984 = getelementptr inbounds double, ptr %978, i64 %983
  call void @dswap_(ptr noundef %970, ptr noundef %977, ptr noundef @c__1, ptr noundef %984, ptr noundef @c__1)
  %985 = load ptr, ptr %40, align 8, !tbaa !5
  %986 = load i32, ptr %985, align 4, !tbaa !9
  %987 = icmp ne i32 %986, 0
  br i1 %987, label %988, label %1008

988:                                              ; preds = %924
  %989 = load ptr, ptr %39, align 8, !tbaa !5
  %990 = load i32, ptr %57, align 4, !tbaa !9
  %991 = sext i32 %990 to i64
  %992 = getelementptr inbounds i32, ptr %989, i64 %991
  %993 = load i32, ptr %992, align 4, !tbaa !9
  store i32 %993, ptr %56, align 4, !tbaa !9
  %994 = load ptr, ptr %39, align 8, !tbaa !5
  %995 = load i32, ptr %58, align 4, !tbaa !9
  %996 = sext i32 %995 to i64
  %997 = getelementptr inbounds i32, ptr %994, i64 %996
  %998 = load i32, ptr %997, align 4, !tbaa !9
  %999 = load ptr, ptr %39, align 8, !tbaa !5
  %1000 = load i32, ptr %57, align 4, !tbaa !9
  %1001 = sext i32 %1000 to i64
  %1002 = getelementptr inbounds i32, ptr %999, i64 %1001
  store i32 %998, ptr %1002, align 4, !tbaa !9
  %1003 = load i32, ptr %56, align 4, !tbaa !9
  %1004 = load ptr, ptr %39, align 8, !tbaa !5
  %1005 = load i32, ptr %58, align 4, !tbaa !9
  %1006 = sext i32 %1005 to i64
  %1007 = getelementptr inbounds i32, ptr %1004, i64 %1006
  store i32 %1003, ptr %1007, align 4, !tbaa !9
  br label %1008

1008:                                             ; preds = %988, %924
  br label %1009

1009:                                             ; preds = %1008, %921
  br label %1010

1010:                                             ; preds = %1009
  %1011 = load i32, ptr %58, align 4, !tbaa !9
  %1012 = add nsw i32 %1011, 1
  store i32 %1012, ptr %58, align 4, !tbaa !9
  br label %884, !llvm.loop !19

1013:                                             ; preds = %884
  br label %1014

1014:                                             ; preds = %1013, %877
  %1015 = load i32, ptr %85, align 4, !tbaa !9
  %1016 = sitofp i32 %1015 to double
  %1017 = load ptr, ptr %36, align 8, !tbaa !5
  %1018 = getelementptr inbounds double, ptr %1017, i64 1
  store double %1016, ptr %1018, align 8, !tbaa !11
  store i32 1, ptr %91, align 4
  br label %1019

1019:                                             ; preds = %1014, %418, %357, %350, %342
  call void @llvm.lifetime.end.p0(i64 8, ptr %90) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %89) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %88) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %87) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %86) #4
  call void @llvm.lifetime.end.p0(i64 4, 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 4, ptr %79) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %78) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %77) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %76) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %75) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %74) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %73) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %72) #4
  call void @llvm.lifetime.end.p0(i64 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 4, ptr %68) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %67) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %66) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %65) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %64) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %63) #4
  call void @llvm.lifetime.end.p0(i64 1, 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 4, ptr %59) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %58) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #4
  call void @llvm.lifetime.end.p0(i64 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 8, 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 8, ptr %48) #4
  call void @llvm.lifetime.end.p0(i64 8, 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
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #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 @ilaenv_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, i32 noundef, i32 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 @dlansy_(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 @dsytrd_(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 @dorgtr_(ptr noundef, 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 @dormtr_(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 @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 = distinct !{!15, !14}
!16 = distinct !{!16, !14}
!17 = !{!7, !7, i64 0}
!18 = distinct !{!18, !14}
!19 = distinct !{!19, !14}


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

@.str = external hidden unnamed_addr constant [2 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [2 x i8], align 1
@c__1 = external hidden global i32, align 4
@.str.6 = external hidden unnamed_addr constant [7 x i8], align 1
@c_n1 = external hidden global i32, align 4
@.str.7 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [2 x i8], align 1

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

52:                                               ; preds = %20
  %53 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.4) #6
  %.not380 = icmp eq i32 %53, 0
  br i1 %.not380, label %.thread415.sink.split, label %54

54:                                               ; preds = %52, %20
  %55 = icmp ne i32 %47, 0
  %56 = icmp ne i32 %48, 0
  %or.cond = select i1 %55, i1 true, i1 %56
  %57 = icmp ne i32 %49, 0
  %or.cond3 = select i1 %or.cond, i1 true, i1 %57
  br i1 %or.cond3, label %58, label %.thread415.sink.split

58:                                               ; preds = %54
  %.not381 = icmp eq i32 %45, 0
  br i1 %.not381, label %59, label %61

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

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

64:                                               ; preds = %61
  %65 = load i32, ptr %5, align 4, !tbaa !5
  %spec.select = tail call i32 @llvm.umax.i32(i32 %62, i32 1)
  %66 = icmp slt i32 %65, %spec.select
  br i1 %66, label %.thread415.sink.split, label %67

67:                                               ; preds = %64
  br i1 %56, label %68, label %73

68:                                               ; preds = %67
  %.not429 = icmp eq i32 %62, 0
  br i1 %.not429, label %82, label %69

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

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

74:                                               ; preds = %73
  %75 = load i32, ptr %8, align 4, !tbaa !5
  %76 = icmp slt i32 %75, 1
  %77 = icmp ugt i32 %75, %spec.select
  %or.cond427 = or i1 %76, %77
  br i1 %or.cond427, label %.thread415.sink.split, label %78

78:                                               ; preds = %74
  %79 = load i32, ptr %9, align 4, !tbaa !5
  %. = tail call i32 @llvm.umin.i32(i32 %62, i32 %75)
  %80 = icmp slt i32 %79, %.
  %81 = icmp ugt i32 %79, %62
  %or.cond428 = or i1 %80, %81
  br i1 %or.cond428, label %.thread415.sink.split, label %82

82:                                               ; preds = %78, %69, %68, %73
  %.pr = load i32, ptr %19, align 4, !tbaa !5
  %83 = icmp eq i32 %.pr, 0
  br i1 %83, label %84, label %.thread415

84:                                               ; preds = %82
  %85 = load i32, ptr %14, align 4, !tbaa !5
  %86 = icmp slt i32 %85, 1
  %87 = icmp ult i32 %85, %62
  %or.cond464 = and i1 %.not, %87
  %or.cond467 = or i1 %86, %or.cond464
  br i1 %or.cond467, label %.thread415.sink.split, label %.thread

.thread:                                          ; preds = %84
  %88 = icmp ult i32 %62, 2
  br i1 %88, label %99, label %89

89:                                               ; preds = %.thread
  %90 = shl i32 %62, 3
  %91 = tail call i32 @ilaenv_(ptr noundef nonnull @c__1, ptr noundef nonnull @.str.6, ptr noundef %2, ptr noundef nonnull %3, ptr noundef nonnull @c_n1, ptr noundef nonnull @c_n1, ptr noundef nonnull @c_n1, i32 noundef 6, i32 noundef 1) #6
  %92 = tail call i32 @ilaenv_(ptr noundef nonnull @c__1, ptr noundef nonnull @.str.7, ptr noundef %2, ptr noundef nonnull %3, ptr noundef nonnull @c_n1, ptr noundef nonnull @c_n1, ptr noundef nonnull @c_n1, i32 noundef 6, i32 noundef 1) #6
  %93 = tail call i32 @llvm.smax.i32(i32 %91, i32 %92)
  store i32 %90, ptr %21, align 4, !tbaa !5
  %94 = add nsw i32 %93, 3
  %95 = load i32, ptr %3, align 4, !tbaa !5
  %96 = mul nsw i32 %94, %95
  store i32 %96, ptr %22, align 4, !tbaa !5
  %97 = tail call i32 @llvm.smax.i32(i32 %90, i32 %96)
  %98 = sitofp i32 %97 to double
  br label %99

99:                                               ; preds = %.thread, %89
  %storemerge = phi double [ %98, %89 ], [ 1.000000e+00, %.thread ]
  %.0354 = phi i32 [ %90, %89 ], [ 1, %.thread ]
  %.0352 = phi i32 [ %97, %89 ], [ undef, %.thread ]
  store double %storemerge, ptr %15, align 8, !tbaa !9
  %100 = load i32, ptr %16, align 4, !tbaa !5
  %101 = icmp sge i32 %100, %.0354
  %or.cond5 = select i1 %101, i1 true, i1 %51
  br i1 %or.cond5, label %.thread410, label %.thread415.sink.split

.thread410:                                       ; preds = %99
  %.pr412.pr = load i32, ptr %19, align 4, !tbaa !5
  %.not386 = icmp eq i32 %.pr412.pr, 0
  br i1 %.not386, label %105, label %.thread415

.thread415.sink.split:                            ; preds = %99, %84, %78, %74, %69, %64, %61, %59, %54, %52
  %.sink = phi i32 [ -1, %52 ], [ -2, %54 ], [ -3, %59 ], [ -4, %61 ], [ -6, %64 ], [ -8, %69 ], [ -9, %74 ], [ -10, %78 ], [ -15, %84 ], [ -17, %99 ]
  store i32 %.sink, ptr %19, align 4, !tbaa !5
  br label %.thread415

.thread415:                                       ; preds = %.thread415.sink.split, %82, %.thread410
  %102 = phi i32 [ %.pr412.pr, %.thread410 ], [ %.pr, %82 ], [ %.sink, %.thread415.sink.split ]
  %103 = sub nsw i32 0, %102
  store i32 %103, ptr %21, align 4, !tbaa !5
  %104 = call i32 @xerbla_(ptr noundef nonnull @.str.8, ptr noundef nonnull %21, i32 noundef 6) #6
  br label %291

105:                                              ; preds = %.thread410
  br i1 %51, label %291, label %106

106:                                              ; preds = %105
  store i32 0, ptr %11, align 4, !tbaa !5
  %107 = load i32, ptr %3, align 4, !tbaa !5
  switch i32 %107, label %121 [
    i32 0, label %291
    i32 1, label %108
  ]

108:                                              ; preds = %106
  %or.cond7 = select i1 %55, i1 true, i1 %57
  br i1 %or.cond7, label %109, label %111

109:                                              ; preds = %108
  store i32 1, ptr %11, align 4, !tbaa !5
  %110 = load double, ptr %4, align 8, !tbaa !9
  br label %.sink.split

111:                                              ; preds = %108
  %112 = load double, ptr %6, align 8, !tbaa !9
  %113 = load double, ptr %4, align 8, !tbaa !9
  %114 = fcmp olt double %112, %113
  br i1 %114, label %115, label %119

115:                                              ; preds = %111
  %116 = load double, ptr %7, align 8, !tbaa !9
  %117 = fcmp ult double %116, %113
  br i1 %117, label %119, label %118

118:                                              ; preds = %115
  store i32 1, ptr %11, align 4, !tbaa !5
  br label %.sink.split

.sink.split:                                      ; preds = %109, %118
  %.sink465 = phi double [ %113, %118 ], [ %110, %109 ]
  store double %.sink465, ptr %12, align 8, !tbaa !9
  br label %119

119:                                              ; preds = %.sink.split, %111, %115
  br i1 %.not, label %120, label %291

120:                                              ; preds = %119
  store double 1.000000e+00, ptr %13, align 8, !tbaa !9
  br label %291

121:                                              ; preds = %106
  %122 = tail call double @dlamch_(ptr noundef nonnull @.str.9) #6
  %123 = tail call double @dlamch_(ptr noundef nonnull @.str.10) #6
  %124 = fdiv double %122, %123
  %125 = fdiv double 1.000000e+00, %124
  %126 = tail call double @sqrt(double noundef %124) #6
  %127 = tail call double @sqrt(double noundef %125) #6
  store double %127, ptr %23, align 8, !tbaa !9
  %128 = tail call double @sqrt(double noundef %122) #6
  %129 = tail call double @sqrt(double noundef %128) #6
  %130 = fdiv double 1.000000e+00, %129
  %131 = fcmp ole double %127, %130
  %132 = select i1 %131, double %127, double %130
  %133 = load double, ptr %10, align 8, !tbaa !9
  store double %133, ptr %29, align 8, !tbaa !9
  %.not387 = icmp eq i32 %48, 0
  br i1 %.not387, label %137, label %134

134:                                              ; preds = %121
  %135 = load double, ptr %6, align 8, !tbaa !9
  store double %135, ptr %33, align 8, !tbaa !9
  %136 = load double, ptr %7, align 8, !tbaa !9
  store double %136, ptr %34, align 8, !tbaa !9
  br label %137

137:                                              ; preds = %134, %121
  %138 = tail call double @dlansy_(ptr noundef nonnull @.str.11, ptr noundef %2, ptr noundef nonnull %3, ptr noundef %4, ptr noundef nonnull %5, ptr noundef nonnull %15) #6
  %139 = fcmp ogt double %138, 0.000000e+00
  %140 = fcmp olt double %138, %126
  %or.cond404 = select i1 %139, i1 %140, i1 false
  br i1 %or.cond404, label %143, label %141

141:                                              ; preds = %137
  %142 = fcmp ogt double %138, %132
  br i1 %142, label %143, label %174

143:                                              ; preds = %141, %137
  %.pn = phi double [ %126, %137 ], [ %132, %141 ]
  %storemerge430 = fdiv double %.pn, %138
  store double %storemerge430, ptr %26, align 8, !tbaa !9
  %144 = load i32, ptr %3, align 4, !tbaa !5
  store i32 %144, ptr %21, align 4, !tbaa !5
  br i1 %.not381, label %156, label %145

145:                                              ; preds = %143
  store i32 1, ptr %25, align 4, !tbaa !5
  %.not392435 = icmp slt i32 %144, 1
  br i1 %.not392435, label %.loopexit433, label %.lr.ph

.lr.ph:                                           ; preds = %145
  %146 = add i32 %35, 1
  br label %147

147:                                              ; preds = %.lr.ph, %147
  %storemerge391436 = phi i32 [ 1, %.lr.ph ], [ %154, %147 ]
  %148 = load i32, ptr %3, align 4, !tbaa !5
  %reass.sub = sub i32 %148, %storemerge391436
  %149 = add i32 %reass.sub, 1
  store i32 %149, ptr %22, align 4, !tbaa !5
  %150 = mul i32 %storemerge391436, %146
  %151 = sext i32 %150 to i64
  %152 = getelementptr inbounds double, ptr %37, i64 %151
  call void @dscal_(ptr noundef nonnull %22, ptr noundef nonnull %26, ptr noundef %152, ptr noundef nonnull @c__1) #6
  %153 = load i32, ptr %25, align 4, !tbaa !5
  %154 = add nsw i32 %153, 1
  store i32 %154, ptr %25, align 4, !tbaa !5
  %155 = load i32, ptr %21, align 4, !tbaa !5
  %.not392.not = icmp slt i32 %153, %155
  br i1 %.not392.not, label %147, label %.loopexit433, !llvm.loop !11

156:                                              ; preds = %143
  %invariant.gep = getelementptr i8, ptr %37, i64 8
  store i32 1, ptr %25, align 4, !tbaa !5
  %.not390437 = icmp slt i32 %144, 1
  br i1 %.not390437, label %.loopexit433, label %.lr.ph439

.lr.ph439:                                        ; preds = %156, %.lr.ph439
  %storemerge389438 = phi i32 [ %160, %.lr.ph439 ], [ 1, %156 ]
  %157 = mul nsw i32 %storemerge389438, %35
  %158 = sext i32 %157 to i64
  %gep = getelementptr double, ptr %invariant.gep, i64 %158
  call void @dscal_(ptr noundef nonnull %25, ptr noundef nonnull %26, ptr noundef %gep, ptr noundef nonnull @c__1) #6
  %159 = load i32, ptr %25, align 4, !tbaa !5
  %160 = add nsw i32 %159, 1
  store i32 %160, ptr %25, align 4, !tbaa !5
  %161 = load i32, ptr %21, align 4, !tbaa !5
  %.not390.not = icmp slt i32 %159, %161
  br i1 %.not390.not, label %.lr.ph439, label %.loopexit433, !llvm.loop !13

.loopexit433:                                     ; preds = %147, %.lr.ph439, %145, %156
  %162 = load double, ptr %10, align 8, !tbaa !9
  %163 = fcmp ogt double %162, 0.000000e+00
  br i1 %163, label %164, label %167

164:                                              ; preds = %.loopexit433
  %165 = load double, ptr %26, align 8, !tbaa !9
  %166 = fmul double %162, %165
  store double %166, ptr %29, align 8, !tbaa !9
  br label %167

167:                                              ; preds = %164, %.loopexit433
  br i1 %.not387, label %174, label %168

168:                                              ; preds = %167
  %169 = load double, ptr %6, align 8, !tbaa !9
  %170 = load double, ptr %26, align 8, !tbaa !9
  %171 = fmul double %169, %170
  store double %171, ptr %33, align 8, !tbaa !9
  %172 = load double, ptr %7, align 8, !tbaa !9
  %173 = fmul double %170, %172
  store double %173, ptr %34, align 8, !tbaa !9
  br label %174

174:                                              ; preds = %141, %167, %168
  %175 = phi i1 [ true, %167 ], [ true, %168 ], [ false, %141 ]
  %176 = load i32, ptr %3, align 4, !tbaa !5
  %177 = add nsw i32 %176, 1
  %178 = add nsw i32 %177, %176
  %179 = add nsw i32 %178, %176
  %180 = load i32, ptr %16, align 4, !tbaa !5
  %181 = add i32 %180, 1
  %182 = sub i32 %181, %179
  store i32 %182, ptr %31, align 4, !tbaa !5
  %183 = sext i32 %178 to i64
  %184 = getelementptr inbounds double, ptr %42, i64 %183
  %185 = sext i32 %177 to i64
  %186 = getelementptr inbounds double, ptr %42, i64 %185
  %187 = sext i32 %179 to i64
  %188 = getelementptr inbounds double, ptr %42, i64 %187
  call void @dsytrd_(ptr noundef %2, ptr noundef nonnull %3, ptr noundef %4, ptr noundef nonnull %5, ptr noundef nonnull %184, ptr noundef nonnull %186, ptr noundef nonnull %15, ptr noundef nonnull %188, ptr noundef nonnull %31, ptr noundef nonnull %27) #6
  %.not393 = icmp eq i32 %49, 0
  br i1 %.not393, label %196, label %189

189:                                              ; preds = %174
  %190 = load i32, ptr %8, align 4, !tbaa !5
  %191 = icmp eq i32 %190, 1
  br i1 %191, label %192, label %196

192:                                              ; preds = %189
  %193 = load i32, ptr %9, align 4, !tbaa !5
  %194 = load i32, ptr %3, align 4, !tbaa !5
  %195 = icmp eq i32 %193, %194
  br label %196

196:                                              ; preds = %192, %189, %174
  %197 = phi i1 [ false, %189 ], [ false, %174 ], [ %195, %192 ]
  %or.cond9 = or i1 %55, %197
  br i1 %or.cond9, label %198, label %223

198:                                              ; preds = %196
  %199 = load double, ptr %10, align 8, !tbaa !9
  %200 = fcmp ugt double %199, 0.000000e+00
  br i1 %200, label %223, label %201

201:                                              ; preds = %198
  call void @dcopy_(ptr noundef nonnull %3, ptr noundef nonnull %184, ptr noundef nonnull @c__1, ptr noundef %12, ptr noundef nonnull @c__1) #6
  %202 = load i32, ptr %3, align 4, !tbaa !5
  %203 = shl i32 %202, 1
  %204 = add nsw i32 %203, %179
  br i1 %.not, label %209, label %205

205:                                              ; preds = %201
  %206 = add nsw i32 %202, -1
  store i32 %206, ptr %21, align 4, !tbaa !5
  %207 = sext i32 %204 to i64
  %208 = getelementptr inbounds double, ptr %42, i64 %207
  call void @dcopy_(ptr noundef nonnull %21, ptr noundef nonnull %186, ptr noundef nonnull @c__1, ptr noundef nonnull %208, ptr noundef nonnull @c__1) #6
  call void @dsterf_(ptr noundef nonnull %3, ptr noundef %12, ptr noundef nonnull %208, ptr noundef nonnull %19) #6
  br label %.loopexit432

209:                                              ; preds = %201
  call void @dlacpy_(ptr noundef nonnull @.str.2, ptr noundef nonnull %3, ptr noundef nonnull %3, ptr noundef %4, ptr noundef nonnull %5, ptr noundef %13, ptr noundef nonnull %14) #6
  call void @dorgtr_(ptr noundef %2, ptr noundef nonnull %3, ptr noundef %13, ptr noundef nonnull %14, ptr noundef nonnull %15, ptr noundef nonnull %188, ptr noundef nonnull %31, ptr noundef nonnull %27) #6
  %210 = load i32, ptr %3, align 4, !tbaa !5
  %211 = add nsw i32 %210, -1
  store i32 %211, ptr %21, align 4, !tbaa !5
  %212 = sext i32 %204 to i64
  %213 = getelementptr inbounds double, ptr %42, i64 %212
  call void @dcopy_(ptr noundef nonnull %21, ptr noundef nonnull %186, ptr noundef nonnull @c__1, ptr noundef nonnull %213, ptr noundef nonnull @c__1) #6
  call void @dsteqr_(ptr noundef %0, ptr noundef nonnull %3, ptr noundef %12, ptr noundef nonnull %213, ptr noundef %13, ptr noundef nonnull %14, ptr noundef nonnull %188, ptr noundef nonnull %19) #6
  %214 = load i32, ptr %19, align 4, !tbaa !5
  %215 = icmp eq i32 %214, 0
  br i1 %215, label %216, label %.thread422

216:                                              ; preds = %209
  %217 = load i32, ptr %3, align 4, !tbaa !5
  store i32 %217, ptr %21, align 4, !tbaa !5
  %.not394440 = icmp slt i32 %217, 1
  br i1 %.not394440, label %.loopexit432, label %.lr.ph442.preheader

.lr.ph442.preheader:                              ; preds = %216
  %218 = zext nneg i32 %217 to i64
  %219 = shl nuw nsw i64 %218, 2
  call void @llvm.memset.p0.i64(ptr align 4 %18, i8 0, i64 %219, i1 false), !tbaa !5
  br label %.loopexit432

.loopexit432:                                     ; preds = %.lr.ph442.preheader, %216, %205
  %.pr421 = load i32, ptr %19, align 4, !tbaa !5
  %220 = icmp eq i32 %.pr421, 0
  br i1 %220, label %221, label %.thread422

221:                                              ; preds = %.loopexit432
  %222 = load i32, ptr %3, align 4, !tbaa !5
  store i32 %222, ptr %11, align 4, !tbaa !5
  br label %234

.thread422:                                       ; preds = %209, %.loopexit432
  store i32 0, ptr %19, align 4, !tbaa !5
  br label %223

223:                                              ; preds = %196, %.thread422, %198
  %.406 = select i1 %.not, i8 66, i8 69
  store i8 %.406, ptr %28, align 1, !tbaa !14
  %224 = load i32, ptr %3, align 4, !tbaa !5
  %225 = add nsw i32 %224, 1
  %226 = add nsw i32 %225, %224
  %227 = sext i32 %225 to i64
  %228 = getelementptr inbounds i32, ptr %43, i64 %227
  %229 = sext i32 %226 to i64
  %230 = getelementptr inbounds i32, ptr %43, i64 %229
  call void @dstebz_(ptr noundef %1, ptr noundef nonnull %28, ptr noundef nonnull %3, ptr noundef nonnull %33, ptr noundef nonnull %34, ptr noundef %8, ptr noundef %9, ptr noundef nonnull %29, ptr noundef nonnull %184, ptr noundef nonnull %186, ptr noundef nonnull %11, ptr noundef nonnull %32, ptr noundef %12, ptr noundef %17, ptr noundef nonnull %228, ptr noundef nonnull %188, ptr noundef nonnull %230, ptr noundef nonnull %19) #6
  br i1 %.not, label %231, label %234

231:                                              ; preds = %223
  call void @dstein_(ptr noundef nonnull %3, ptr noundef nonnull %184, ptr noundef nonnull %186, ptr noundef nonnull %11, ptr noundef %12, ptr noundef %17, ptr noundef nonnull %228, ptr noundef %13, ptr noundef nonnull %14, ptr noundef nonnull %188, ptr noundef nonnull %230, ptr noundef %18, ptr noundef nonnull %19) #6
  %232 = load i32, ptr %16, align 4, !tbaa !5
  %233 = sub i32 %232, %176
  store i32 %233, ptr %30, align 4, !tbaa !5
  call void @dormtr_(ptr noundef nonnull @.str, ptr noundef %2, ptr noundef nonnull @.str.4, ptr noundef nonnull %3, ptr noundef nonnull %11, ptr noundef %4, ptr noundef nonnull %5, ptr noundef nonnull %15, ptr noundef %13, ptr noundef nonnull %14, ptr noundef nonnull %186, ptr noundef nonnull %30, ptr noundef nonnull %27) #6
  br label %234

234:                                              ; preds = %223, %231, %221
  br i1 %175, label %235, label %245

235:                                              ; preds = %234
  %236 = load i32, ptr %19, align 4, !tbaa !5
  %237 = icmp eq i32 %236, 0
  br i1 %237, label %238, label %240

238:                                              ; preds = %235
  %239 = load i32, ptr %11, align 4, !tbaa !5
  br label %242

240:                                              ; preds = %235
  %241 = add nsw i32 %236, -1
  br label %242

242:                                              ; preds = %240, %238
  %storemerge396 = phi i32 [ %241, %240 ], [ %239, %238 ]
  store i32 %storemerge396, ptr %24, align 4, !tbaa !5
  %243 = load double, ptr %26, align 8, !tbaa !9
  %244 = fdiv double 1.000000e+00, %243
  store double %244, ptr %23, align 8, !tbaa !9
  call void @dscal_(ptr noundef nonnull %24, ptr noundef nonnull %23, ptr noundef %12, ptr noundef nonnull @c__1) #6
  br label %245

245:                                              ; preds = %242, %234
  br i1 %.not, label %246, label %.loopexit

246:                                              ; preds = %245
  %247 = load i32, ptr %11, align 4, !tbaa !5
  %248 = add nsw i32 %247, -1
  store i32 %248, ptr %21, align 4, !tbaa !5
  %invariant.gep449 = getelementptr i8, ptr %41, i64 8
  store i32 1, ptr %25, align 4, !tbaa !5
  %.not398453 = icmp slt i32 %247, 2
  br i1 %.not398453, label %.loopexit, label %.lr.ph456

.lr.ph456:                                        ; preds = %246, %._crit_edge.thread
  %storemerge397454 = phi i32 [ %288, %._crit_edge.thread ], [ 1, %246 ]
  %249 = sext i32 %storemerge397454 to i64
  %250 = getelementptr inbounds double, ptr %38, i64 %249
  %251 = load double, ptr %250, align 8, !tbaa !9
  %252 = load i32, ptr %11, align 4, !tbaa !5
  store i32 %252, ptr %22, align 4, !tbaa !5
  %.not399.not443 = icmp slt i32 %storemerge397454, %252
  br i1 %.not399.not443, label %.lr.ph447.preheader, label %._crit_edge.thread

.lr.ph447.preheader:                              ; preds = %.lr.ph456
  %wide.trip.count = sext i32 %252 to i64
  %253 = sub nsw i64 %wide.trip.count, %249
  %xtraiter = and i64 %253, 1
  %254 = add nsw i64 %wide.trip.count, -1
  %255 = icmp eq i64 %254, %249
  br i1 %255, label %._crit_edge.unr-lcssa, label %.lr.ph447.preheader.new

.lr.ph447.preheader.new:                          ; preds = %.lr.ph447.preheader
  %unroll_iter = and i64 %253, -2
  br label %.lr.ph447

.lr.ph447:                                        ; preds = %.lr.ph447, %.lr.ph447.preheader.new
  %indvars.iv = phi i64 [ %249, %.lr.ph447.preheader.new ], [ %indvars.iv.next.1, %.lr.ph447 ]
  %.0446 = phi double [ %251, %.lr.ph447.preheader.new ], [ %.1.1, %.lr.ph447 ]
  %.1357445 = phi i32 [ 0, %.lr.ph447.preheader.new ], [ %.2.1, %.lr.ph447 ]
  %niter = phi i64 [ 0, %.lr.ph447.preheader.new ], [ %niter.next.1, %.lr.ph447 ]
  %indvars.iv.next = add nsw i64 %indvars.iv, 1
  %256 = getelementptr double, ptr %12, i64 %indvars.iv
  %257 = load double, ptr %256, align 8, !tbaa !9
  %258 = fcmp olt double %257, %.0446
  %259 = trunc nsw i64 %indvars.iv.next to i32
  %.2 = select i1 %258, i32 %259, i32 %.1357445
  %.1 = select i1 %258, double %257, double %.0446
  %indvars.iv.next.1 = add nsw i64 %indvars.iv, 2
  %260 = getelementptr double, ptr %12, i64 %indvars.iv.next
  %261 = load double, ptr %260, align 8, !tbaa !9
  %262 = fcmp olt double %261, %.1
  %263 = trunc nsw i64 %indvars.iv.next.1 to i32
  %.2.1 = select i1 %262, i32 %263, i32 %.2
  %.1.1 = select i1 %262, double %261, double %.1
  %niter.next.1 = add i64 %niter, 2
  %niter.ncmp.1 = icmp eq i64 %niter.next.1, %unroll_iter
  br i1 %niter.ncmp.1, label %._crit_edge.unr-lcssa, label %.lr.ph447, !llvm.loop !15

._crit_edge.unr-lcssa:                            ; preds = %.lr.ph447, %.lr.ph447.preheader
  %.2.lcssa.ph = phi i32 [ poison, %.lr.ph447.preheader ], [ %.2.1, %.lr.ph447 ]
  %.1.lcssa.ph = phi double [ poison, %.lr.ph447.preheader ], [ %.1.1, %.lr.ph447 ]
  %indvars.iv.unr = phi i64 [ %249, %.lr.ph447.preheader ], [ %indvars.iv.next.1, %.lr.ph447 ]
  %.0446.unr = phi double [ %251, %.lr.ph447.preheader ], [ %.1.1, %.lr.ph447 ]
  %.1357445.unr = phi i32 [ 0, %.lr.ph447.preheader ], [ %.2.1, %.lr.ph447 ]
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %._crit_edge, label %.lr.ph447.epil

.lr.ph447.epil:                                   ; preds = %._crit_edge.unr-lcssa
  %264 = getelementptr double, ptr %12, i64 %indvars.iv.unr
  %265 = load double, ptr %264, align 8, !tbaa !9
  %266 = fcmp olt double %265, %.0446.unr
  %267 = trunc i64 %indvars.iv.unr to i32
  %268 = add i32 %267, 1
  %.2.epil = select i1 %266, i32 %268, i32 %.1357445.unr
  %.1.epil = select i1 %266, double %265, double %.0446.unr
  br label %._crit_edge

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

269:                                              ; preds = %._crit_edge
  %270 = sext i32 %.2.lcssa to i64
  %271 = getelementptr inbounds i32, ptr %43, i64 %270
  %272 = load i32, ptr %271, align 4, !tbaa !5
  %273 = getelementptr inbounds double, ptr %38, i64 %270
  store double %251, ptr %273, align 8, !tbaa !9
  %274 = getelementptr inbounds i32, ptr %43, i64 %249
  %275 = load i32, ptr %274, align 4, !tbaa !5
  store i32 %275, ptr %271, align 4, !tbaa !5
  store double %.1.lcssa, ptr %250, align 8, !tbaa !9
  store i32 %272, ptr %274, align 4, !tbaa !5
  %276 = mul nsw i32 %.2.lcssa, %39
  %277 = sext i32 %276 to i64
  %gep450 = getelementptr double, ptr %invariant.gep449, i64 %277
  %278 = mul nsw i32 %storemerge397454, %39
  %279 = sext i32 %278 to i64
  %gep452 = getelementptr double, ptr %invariant.gep449, i64 %279
  call void @dswap_(ptr noundef nonnull %3, ptr noundef %gep450, ptr noundef nonnull @c__1, ptr noundef %gep452, ptr noundef nonnull @c__1) #6
  %280 = load i32, ptr %19, align 4, !tbaa !5
  %.not401 = icmp eq i32 %280, 0
  %.pre = load i32, ptr %25, align 4, !tbaa !5
  br i1 %.not401, label %._crit_edge.thread, label %281

281:                                              ; preds = %269
  %282 = getelementptr inbounds i32, ptr %44, i64 %270
  %283 = load i32, ptr %282, align 4, !tbaa !5
  %284 = sext i32 %.pre to i64
  %285 = getelementptr inbounds i32, ptr %44, i64 %284
  %286 = load i32, ptr %285, align 4, !tbaa !5
  store i32 %286, ptr %282, align 4, !tbaa !5
  store i32 %283, ptr %285, align 4, !tbaa !5
  br label %._crit_edge.thread

._crit_edge.thread:                               ; preds = %.lr.ph456, %._crit_edge, %281, %269
  %287 = phi i32 [ %storemerge397454, %._crit_edge ], [ %.pre, %281 ], [ %.pre, %269 ], [ %storemerge397454, %.lr.ph456 ]
  %288 = add nsw i32 %287, 1
  store i32 %288, ptr %25, align 4, !tbaa !5
  %289 = load i32, ptr %21, align 4, !tbaa !5
  %.not398.not = icmp slt i32 %287, %289
  br i1 %.not398.not, label %.lr.ph456, label %.loopexit, !llvm.loop !16

.loopexit:                                        ; preds = %._crit_edge.thread, %246, %245
  %290 = sitofp i32 %.0352 to double
  store double %290, ptr %15, align 8, !tbaa !9
  br label %291

291:                                              ; preds = %119, %120, %106, %105, %.loopexit, %.thread415
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %34) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %33) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %32) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %31) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %30) #6
  call void @llvm.lifetime.end.p0(i64 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 4, ptr nonnull %24) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %22) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %21) #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 @ilaenv_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, i32 noundef, i32 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 @dlansy_(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 @dsytrd_(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 @dorgtr_(ptr noundef, 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 @dormtr_(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 @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.smax.i32(i32, i32) #4

; 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 = distinct !{!11, !12}
!12 = !{!"llvm.loop.mustprogress"}
!13 = distinct !{!13, !12}
!14 = !{!7, !7, i64 0}
!15 = distinct !{!15, !12}
!16 = distinct !{!16, !12}


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