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

; 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 [14 x i8], align 1
@c_n1 = external hidden global i32, align 4
@c__2 = external hidden global i32, align 4
@c__3 = external hidden global i32, align 4
@c__4 = external hidden global i32, align 4
@.str.7 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [2 x i8], align 1

; Function Attrs: nounwind uwtable
define dso_local void @dsyevx_2stage_(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 i32, align 4
  %73 = alloca i32, align 4
  %74 = alloca i32, align 4
  %75 = alloca i32, align 4
  %76 = alloca double, align 8
  %77 = alloca double, align 8
  %78 = alloca double, align 8
  %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 i32, align 4
  %85 = alloca i32, align 4
  %86 = alloca i32, align 4
  %87 = alloca double, align 8
  %88 = alloca i32, align 4
  %89 = alloca double, align 8
  %90 = alloca double, align 8
  %91 = alloca double, align 8
  %92 = alloca i32, align 4
  %93 = alloca double, align 8
  %94 = 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 4, ptr %72) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %73) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %74) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %75) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %76) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %77) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %78) #4
  call void @llvm.lifetime.start.p0(i64 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 4, 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 4, 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
  call void @llvm.lifetime.start.p0(i64 8, ptr %91) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %92) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %93) #4
  %95 = load ptr, ptr %26, align 8, !tbaa !5
  %96 = load i32, ptr %95, align 4, !tbaa !9
  store i32 %96, ptr %41, align 4, !tbaa !9
  %97 = load i32, ptr %41, align 4, !tbaa !9
  %98 = mul nsw i32 %97, 1
  %99 = add nsw i32 1, %98
  store i32 %99, ptr %42, align 4, !tbaa !9
  %100 = load i32, ptr %42, align 4, !tbaa !9
  %101 = load ptr, ptr %25, align 8, !tbaa !5
  %102 = sext i32 %100 to i64
  %103 = sub i64 0, %102
  %104 = getelementptr inbounds double, ptr %101, i64 %103
  store ptr %104, ptr %25, align 8, !tbaa !5
  %105 = load ptr, ptr %33, align 8, !tbaa !5
  %106 = getelementptr inbounds double, ptr %105, i32 -1
  store ptr %106, ptr %33, align 8, !tbaa !5
  %107 = load ptr, ptr %35, align 8, !tbaa !5
  %108 = load i32, ptr %107, align 4, !tbaa !9
  store i32 %108, ptr %43, align 4, !tbaa !9
  %109 = load i32, ptr %43, align 4, !tbaa !9
  %110 = mul nsw i32 %109, 1
  %111 = add nsw i32 1, %110
  store i32 %111, ptr %44, align 4, !tbaa !9
  %112 = load i32, ptr %44, align 4, !tbaa !9
  %113 = load ptr, ptr %34, align 8, !tbaa !5
  %114 = sext i32 %112 to i64
  %115 = sub i64 0, %114
  %116 = getelementptr inbounds double, ptr %113, i64 %115
  store ptr %116, ptr %34, align 8, !tbaa !5
  %117 = load ptr, ptr %36, align 8, !tbaa !5
  %118 = getelementptr inbounds double, ptr %117, i32 -1
  store ptr %118, ptr %36, align 8, !tbaa !5
  %119 = load ptr, ptr %38, align 8, !tbaa !5
  %120 = getelementptr inbounds i32, ptr %119, i32 -1
  store ptr %120, ptr %38, align 8, !tbaa !5
  %121 = load ptr, ptr %39, align 8, !tbaa !5
  %122 = getelementptr inbounds i32, ptr %121, i32 -1
  store ptr %122, ptr %39, align 8, !tbaa !5
  %123 = load ptr, ptr %23, align 8, !tbaa !5
  %124 = call i32 @lsame_(ptr noundef %123, ptr noundef @.str)
  store i32 %124, ptr %65, align 4, !tbaa !9
  %125 = load ptr, ptr %21, align 8, !tbaa !5
  %126 = call i32 @lsame_(ptr noundef %125, ptr noundef @.str.1)
  store i32 %126, ptr %67, align 4, !tbaa !9
  %127 = load ptr, ptr %22, align 8, !tbaa !5
  %128 = call i32 @lsame_(ptr noundef %127, ptr noundef @.str.2)
  store i32 %128, ptr %71, align 4, !tbaa !9
  %129 = load ptr, ptr %22, align 8, !tbaa !5
  %130 = call i32 @lsame_(ptr noundef %129, ptr noundef @.str.1)
  store i32 %130, ptr %75, align 4, !tbaa !9
  %131 = load ptr, ptr %22, align 8, !tbaa !5
  %132 = call i32 @lsame_(ptr noundef %131, ptr noundef @.str.3)
  store i32 %132, ptr %72, align 4, !tbaa !9
  %133 = load ptr, ptr %37, align 8, !tbaa !5
  %134 = load i32, ptr %133, align 4, !tbaa !9
  %135 = icmp eq i32 %134, -1
  %136 = zext i1 %135 to i32
  store i32 %136, ptr %88, align 4, !tbaa !9
  %137 = load ptr, ptr %40, align 8, !tbaa !5
  store i32 0, ptr %137, align 4, !tbaa !9
  %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 = %20
  %142 = load ptr, ptr %40, align 8, !tbaa !5
  store i32 -1, ptr %142, align 4, !tbaa !9
  br label %255

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

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

149:                                              ; preds = %146
  %150 = load i32, ptr %72, 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 %65, 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 %75, 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 %72, 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 %67, 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 %335

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 %64, align 4, !tbaa !9
  %284 = load i32, ptr %64, 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 %324

288:                                              ; preds = %279
  %289 = load ptr, ptr %21, align 8, !tbaa !5
  %290 = load ptr, ptr %24, align 8, !tbaa !5
  %291 = call i32 @ilaenv2stage_(ptr noundef @c__1, ptr noundef @.str.6, ptr noundef %289, ptr noundef %290, ptr noundef @c_n1, ptr noundef @c_n1, ptr noundef @c_n1)
  store i32 %291, ptr %69, align 4, !tbaa !9
  %292 = load ptr, ptr %21, align 8, !tbaa !5
  %293 = load ptr, ptr %24, align 8, !tbaa !5
  %294 = call i32 @ilaenv2stage_(ptr noundef @c__2, ptr noundef @.str.6, ptr noundef %292, ptr noundef %293, ptr noundef %69, ptr noundef @c_n1, ptr noundef @c_n1)
  store i32 %294, ptr %68, align 4, !tbaa !9
  %295 = load ptr, ptr %21, align 8, !tbaa !5
  %296 = load ptr, ptr %24, align 8, !tbaa !5
  %297 = call i32 @ilaenv2stage_(ptr noundef @c__3, ptr noundef @.str.6, ptr noundef %295, ptr noundef %296, ptr noundef %69, ptr noundef %68, ptr noundef @c_n1)
  store i32 %297, ptr %63, align 4, !tbaa !9
  %298 = load ptr, ptr %21, align 8, !tbaa !5
  %299 = load ptr, ptr %24, align 8, !tbaa !5
  %300 = call i32 @ilaenv2stage_(ptr noundef @c__4, ptr noundef @.str.6, ptr noundef %298, ptr noundef %299, ptr noundef %69, ptr noundef %68, ptr noundef @c_n1)
  store i32 %300, ptr %66, align 4, !tbaa !9
  %301 = load ptr, ptr %24, align 8, !tbaa !5
  %302 = load i32, ptr %301, align 4, !tbaa !9
  %303 = shl i32 %302, 3
  store i32 %303, ptr %45, align 4, !tbaa !9
  %304 = load ptr, ptr %24, align 8, !tbaa !5
  %305 = load i32, ptr %304, align 4, !tbaa !9
  %306 = mul nsw i32 %305, 3
  %307 = load i32, ptr %63, align 4, !tbaa !9
  %308 = add nsw i32 %306, %307
  %309 = load i32, ptr %66, align 4, !tbaa !9
  %310 = add nsw i32 %308, %309
  store i32 %310, ptr %46, align 4, !tbaa !9
  %311 = load i32, ptr %45, align 4, !tbaa !9
  %312 = load i32, ptr %46, align 4, !tbaa !9
  %313 = icmp sge i32 %311, %312
  br i1 %313, label %314, label %316

314:                                              ; preds = %288
  %315 = load i32, ptr %45, align 4, !tbaa !9
  br label %318

316:                                              ; preds = %288
  %317 = load i32, ptr %46, align 4, !tbaa !9
  br label %318

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

324:                                              ; preds = %318, %283
  %325 = load ptr, ptr %37, align 8, !tbaa !5
  %326 = load i32, ptr %325, align 4, !tbaa !9
  %327 = load i32, ptr %64, align 4, !tbaa !9
  %328 = icmp slt i32 %326, %327
  br i1 %328, label %329, label %334

329:                                              ; preds = %324
  %330 = load i32, ptr %88, align 4, !tbaa !9
  %331 = icmp ne i32 %330, 0
  br i1 %331, label %334, label %332

332:                                              ; preds = %329
  %333 = load ptr, ptr %40, align 8, !tbaa !5
  store i32 -17, ptr %333, align 4, !tbaa !9
  br label %334

334:                                              ; preds = %332, %329, %324
  br label %335

335:                                              ; preds = %334, %275
  %336 = load ptr, ptr %40, align 8, !tbaa !5
  %337 = load i32, ptr %336, align 4, !tbaa !9
  %338 = icmp ne i32 %337, 0
  br i1 %338, label %339, label %344

339:                                              ; preds = %335
  %340 = load ptr, ptr %40, align 8, !tbaa !5
  %341 = load i32, ptr %340, align 4, !tbaa !9
  %342 = sub nsw i32 0, %341
  store i32 %342, ptr %45, align 4, !tbaa !9
  %343 = call i32 @xerbla_(ptr noundef @.str.7, ptr noundef %45, i32 noundef 13)
  store i32 1, ptr %94, align 4
  br label %1024

344:                                              ; preds = %335
  %345 = load i32, ptr %88, align 4, !tbaa !9
  %346 = icmp ne i32 %345, 0
  br i1 %346, label %347, label %348

347:                                              ; preds = %344
  store i32 1, ptr %94, align 4
  br label %1024

348:                                              ; preds = %344
  br label %349

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

354:                                              ; preds = %349
  store i32 1, ptr %94, align 4
  br label %1024

355:                                              ; preds = %349
  %356 = load ptr, ptr %24, align 8, !tbaa !5
  %357 = load i32, ptr %356, align 4, !tbaa !9
  %358 = icmp eq i32 %357, 1
  br i1 %358, label %359, label %416

359:                                              ; preds = %355
  %360 = load i32, ptr %71, align 4, !tbaa !9
  %361 = icmp ne i32 %360, 0
  br i1 %361, label %365, label %362

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

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

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

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

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

405:                                              ; preds = %395, %385, %375
  br label %406

406:                                              ; preds = %405, %365
  %407 = load i32, ptr %67, align 4, !tbaa !9
  %408 = icmp ne i32 %407, 0
  br i1 %408, label %409, label %415

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

415:                                              ; preds = %409, %406
  store i32 1, ptr %94, align 4
  br label %1024

416:                                              ; preds = %355
  %417 = call double @dlamch_(ptr noundef @.str.8)
  store double %417, ptr %76, align 8, !tbaa !11
  %418 = call double @dlamch_(ptr noundef @.str.9)
  store double %418, ptr %89, align 8, !tbaa !11
  %419 = load double, ptr %76, align 8, !tbaa !11
  %420 = load double, ptr %89, align 8, !tbaa !11
  %421 = fdiv double %419, %420
  store double %421, ptr %87, align 8, !tbaa !11
  %422 = load double, ptr %87, align 8, !tbaa !11
  %423 = fdiv double 1.000000e+00, %422
  store double %423, ptr %78, align 8, !tbaa !11
  %424 = load double, ptr %87, align 8, !tbaa !11
  %425 = call double @sqrt(double noundef %424) #4
  store double %425, ptr %53, align 8, !tbaa !11
  %426 = load double, ptr %78, align 8, !tbaa !11
  %427 = call double @sqrt(double noundef %426) #4
  store double %427, ptr %47, align 8, !tbaa !11
  %428 = load double, ptr %76, align 8, !tbaa !11
  %429 = call double @sqrt(double noundef %428) #4
  %430 = call double @sqrt(double noundef %429) #4
  %431 = fdiv double 1.000000e+00, %430
  store double %431, ptr %48, align 8, !tbaa !11
  %432 = load double, ptr %47, align 8, !tbaa !11
  %433 = load double, ptr %48, align 8, !tbaa !11
  %434 = fcmp ole double %432, %433
  br i1 %434, label %435, label %437

435:                                              ; preds = %416
  %436 = load double, ptr %47, align 8, !tbaa !11
  br label %439

437:                                              ; preds = %416
  %438 = load double, ptr %48, align 8, !tbaa !11
  br label %439

439:                                              ; preds = %437, %435
  %440 = phi double [ %436, %435 ], [ %438, %437 ]
  store double %440, ptr %54, align 8, !tbaa !11
  store i32 0, ptr %73, align 4, !tbaa !9
  %441 = load ptr, ptr %31, align 8, !tbaa !5
  %442 = load double, ptr %441, align 8, !tbaa !11
  store double %442, ptr %77, align 8, !tbaa !11
  %443 = load i32, ptr %75, align 4, !tbaa !9
  %444 = icmp ne i32 %443, 0
  br i1 %444, label %445, label %450

445:                                              ; preds = %439
  %446 = load ptr, ptr %27, align 8, !tbaa !5
  %447 = load double, ptr %446, align 8, !tbaa !11
  store double %447, ptr %90, align 8, !tbaa !11
  %448 = load ptr, ptr %28, align 8, !tbaa !5
  %449 = load double, ptr %448, align 8, !tbaa !11
  store double %449, ptr %91, align 8, !tbaa !11
  br label %450

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

463:                                              ; preds = %450
  %464 = load double, ptr %51, align 8, !tbaa !11
  %465 = load double, ptr %53, align 8, !tbaa !11
  %466 = fcmp olt double %464, %465
  br i1 %466, label %467, label %471

467:                                              ; preds = %463
  store i32 1, ptr %73, align 4, !tbaa !9
  %468 = load double, ptr %53, align 8, !tbaa !11
  %469 = load double, ptr %51, align 8, !tbaa !11
  %470 = fdiv double %468, %469
  store double %470, ptr %60, align 8, !tbaa !11
  br label %480

471:                                              ; preds = %463, %450
  %472 = load double, ptr %51, align 8, !tbaa !11
  %473 = load double, ptr %54, align 8, !tbaa !11
  %474 = fcmp ogt double %472, %473
  br i1 %474, label %475, label %479

475:                                              ; preds = %471
  store i32 1, ptr %73, align 4, !tbaa !9
  %476 = load double, ptr %54, align 8, !tbaa !11
  %477 = load double, ptr %51, align 8, !tbaa !11
  %478 = fdiv double %476, %477
  store double %478, ptr %60, align 8, !tbaa !11
  br label %479

479:                                              ; preds = %475, %471
  br label %480

480:                                              ; preds = %479, %467
  %481 = load i32, ptr %73, align 4, !tbaa !9
  %482 = icmp eq i32 %481, 1
  br i1 %482, label %483, label %552

483:                                              ; preds = %480
  %484 = load i32, ptr %65, align 4, !tbaa !9
  %485 = icmp ne i32 %484, 0
  br i1 %485, label %486, label %511

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

489:                                              ; preds = %507, %486
  %490 = load i32, ptr %58, align 4, !tbaa !9
  %491 = load i32, ptr %45, align 4, !tbaa !9
  %492 = icmp sle i32 %490, %491
  br i1 %492, label %493, label %510

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

507:                                              ; preds = %493
  %508 = load i32, ptr %58, align 4, !tbaa !9
  %509 = add nsw i32 %508, 1
  store i32 %509, ptr %58, align 4, !tbaa !9
  br label %489, !llvm.loop !13

510:                                              ; preds = %489
  br label %530

511:                                              ; preds = %483
  %512 = load ptr, ptr %24, align 8, !tbaa !5
  %513 = load i32, ptr %512, align 4, !tbaa !9
  store i32 %513, ptr %45, align 4, !tbaa !9
  store i32 1, ptr %58, align 4, !tbaa !9
  br label %514

514:                                              ; preds = %526, %511
  %515 = load i32, ptr %58, align 4, !tbaa !9
  %516 = load i32, ptr %45, align 4, !tbaa !9
  %517 = icmp sle i32 %515, %516
  br i1 %517, label %518, label %529

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

526:                                              ; preds = %518
  %527 = load i32, ptr %58, align 4, !tbaa !9
  %528 = add nsw i32 %527, 1
  store i32 %528, ptr %58, align 4, !tbaa !9
  br label %514, !llvm.loop !15

529:                                              ; preds = %514
  br label %530

530:                                              ; preds = %529, %510
  %531 = load ptr, ptr %31, align 8, !tbaa !5
  %532 = load double, ptr %531, align 8, !tbaa !11
  %533 = fcmp ogt double %532, 0.000000e+00
  br i1 %533, label %534, label %539

534:                                              ; preds = %530
  %535 = load ptr, ptr %31, align 8, !tbaa !5
  %536 = load double, ptr %535, align 8, !tbaa !11
  %537 = load double, ptr %60, align 8, !tbaa !11
  %538 = fmul double %536, %537
  store double %538, ptr %77, align 8, !tbaa !11
  br label %539

539:                                              ; preds = %534, %530
  %540 = load i32, ptr %75, align 4, !tbaa !9
  %541 = icmp ne i32 %540, 0
  br i1 %541, label %542, label %551

542:                                              ; preds = %539
  %543 = load ptr, ptr %27, align 8, !tbaa !5
  %544 = load double, ptr %543, align 8, !tbaa !11
  %545 = load double, ptr %60, align 8, !tbaa !11
  %546 = fmul double %544, %545
  store double %546, ptr %90, align 8, !tbaa !11
  %547 = load ptr, ptr %28, align 8, !tbaa !5
  %548 = load double, ptr %547, align 8, !tbaa !11
  %549 = load double, ptr %60, align 8, !tbaa !11
  %550 = fmul double %548, %549
  store double %550, ptr %91, align 8, !tbaa !11
  br label %551

551:                                              ; preds = %542, %539
  br label %552

552:                                              ; preds = %551, %480
  store i32 1, ptr %79, align 4, !tbaa !9
  %553 = load i32, ptr %79, align 4, !tbaa !9
  %554 = load ptr, ptr %24, align 8, !tbaa !5
  %555 = load i32, ptr %554, align 4, !tbaa !9
  %556 = add nsw i32 %553, %555
  store i32 %556, ptr %50, align 4, !tbaa !9
  %557 = load i32, ptr %50, align 4, !tbaa !9
  %558 = load ptr, ptr %24, align 8, !tbaa !5
  %559 = load i32, ptr %558, align 4, !tbaa !9
  %560 = add nsw i32 %557, %559
  store i32 %560, ptr %49, align 4, !tbaa !9
  %561 = load i32, ptr %49, align 4, !tbaa !9
  %562 = load ptr, ptr %24, align 8, !tbaa !5
  %563 = load i32, ptr %562, align 4, !tbaa !9
  %564 = add nsw i32 %561, %563
  store i32 %564, ptr %92, align 4, !tbaa !9
  %565 = load i32, ptr %92, align 4, !tbaa !9
  %566 = load i32, ptr %63, align 4, !tbaa !9
  %567 = add nsw i32 %565, %566
  store i32 %567, ptr %83, 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 %83, align 4, !tbaa !9
  %571 = sub nsw i32 %569, %570
  %572 = add nsw i32 %571, 1
  store i32 %572, ptr %85, align 4, !tbaa !9
  %573 = load ptr, ptr %21, align 8, !tbaa !5
  %574 = load ptr, ptr %23, align 8, !tbaa !5
  %575 = load ptr, ptr %24, align 8, !tbaa !5
  %576 = load ptr, ptr %25, align 8, !tbaa !5
  %577 = load i32, ptr %42, align 4, !tbaa !9
  %578 = sext i32 %577 to i64
  %579 = getelementptr inbounds double, ptr %576, i64 %578
  %580 = load ptr, ptr %26, align 8, !tbaa !5
  %581 = load ptr, ptr %36, align 8, !tbaa !5
  %582 = load i32, ptr %49, align 4, !tbaa !9
  %583 = sext i32 %582 to i64
  %584 = getelementptr inbounds double, ptr %581, i64 %583
  %585 = load ptr, ptr %36, align 8, !tbaa !5
  %586 = load i32, ptr %50, align 4, !tbaa !9
  %587 = sext i32 %586 to i64
  %588 = getelementptr inbounds double, ptr %585, i64 %587
  %589 = load ptr, ptr %36, align 8, !tbaa !5
  %590 = load i32, ptr %79, align 4, !tbaa !9
  %591 = sext i32 %590 to i64
  %592 = getelementptr inbounds double, ptr %589, i64 %591
  %593 = load ptr, ptr %36, align 8, !tbaa !5
  %594 = load i32, ptr %92, align 4, !tbaa !9
  %595 = sext i32 %594 to i64
  %596 = getelementptr inbounds double, ptr %593, i64 %595
  %597 = load ptr, ptr %36, align 8, !tbaa !5
  %598 = load i32, ptr %83, align 4, !tbaa !9
  %599 = sext i32 %598 to i64
  %600 = getelementptr inbounds double, ptr %597, i64 %599
  call void @dsytrd_2stage_(ptr noundef %573, ptr noundef %574, ptr noundef %575, ptr noundef %579, ptr noundef %580, ptr noundef %584, ptr noundef %588, ptr noundef %592, ptr noundef %596, ptr noundef %63, ptr noundef %600, ptr noundef %85, ptr noundef %61)
  store i32 0, ptr %55, align 4, !tbaa !9
  %601 = load i32, ptr %72, align 4, !tbaa !9
  %602 = icmp ne i32 %601, 0
  br i1 %602, label %603, label %615

603:                                              ; preds = %552
  %604 = load ptr, ptr %29, align 8, !tbaa !5
  %605 = load i32, ptr %604, align 4, !tbaa !9
  %606 = icmp eq i32 %605, 1
  br i1 %606, label %607, label %614

607:                                              ; preds = %603
  %608 = load ptr, ptr %30, align 8, !tbaa !5
  %609 = load i32, ptr %608, align 4, !tbaa !9
  %610 = load ptr, ptr %24, align 8, !tbaa !5
  %611 = load i32, ptr %610, align 4, !tbaa !9
  %612 = icmp eq i32 %609, %611
  br i1 %612, label %613, label %614

613:                                              ; preds = %607
  store i32 1, ptr %55, align 4, !tbaa !9
  br label %614

614:                                              ; preds = %613, %607, %603
  br label %615

615:                                              ; preds = %614, %552
  %616 = load i32, ptr %71, align 4, !tbaa !9
  %617 = icmp ne i32 %616, 0
  br i1 %617, label %621, label %618

618:                                              ; preds = %615
  %619 = load i32, ptr %55, align 4, !tbaa !9
  %620 = icmp ne i32 %619, 0
  br i1 %620, label %621, label %747

621:                                              ; preds = %618, %615
  %622 = load ptr, ptr %31, align 8, !tbaa !5
  %623 = load double, ptr %622, align 8, !tbaa !11
  %624 = fcmp ole double %623, 0.000000e+00
  br i1 %624, label %625, label %747

625:                                              ; preds = %621
  %626 = load ptr, ptr %24, align 8, !tbaa !5
  %627 = load ptr, ptr %36, align 8, !tbaa !5
  %628 = load i32, ptr %49, align 4, !tbaa !9
  %629 = sext i32 %628 to i64
  %630 = getelementptr inbounds double, ptr %627, i64 %629
  %631 = load ptr, ptr %33, align 8, !tbaa !5
  %632 = getelementptr inbounds double, ptr %631, i64 1
  call void @dcopy_(ptr noundef %626, ptr noundef %630, ptr noundef @c__1, ptr noundef %632, ptr noundef @c__1)
  %633 = load i32, ptr %83, align 4, !tbaa !9
  %634 = load ptr, ptr %24, align 8, !tbaa !5
  %635 = load i32, ptr %634, align 4, !tbaa !9
  %636 = shl i32 %635, 1
  %637 = add nsw i32 %633, %636
  store i32 %637, ptr %59, align 4, !tbaa !9
  %638 = load i32, ptr %67, align 4, !tbaa !9
  %639 = icmp ne i32 %638, 0
  br i1 %639, label %660, label %640

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

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

720:                                              ; preds = %660
  %721 = load ptr, ptr %24, align 8, !tbaa !5
  %722 = load i32, ptr %721, align 4, !tbaa !9
  store i32 %722, ptr %45, align 4, !tbaa !9
  store i32 1, ptr %57, align 4, !tbaa !9
  br label %723

723:                                              ; preds = %732, %720
  %724 = load i32, ptr %57, align 4, !tbaa !9
  %725 = load i32, ptr %45, align 4, !tbaa !9
  %726 = icmp sle i32 %724, %725
  br i1 %726, label %727, label %735

727:                                              ; preds = %723
  %728 = load ptr, ptr %39, align 8, !tbaa !5
  %729 = load i32, ptr %57, align 4, !tbaa !9
  %730 = sext i32 %729 to i64
  %731 = getelementptr inbounds i32, ptr %728, i64 %730
  store i32 0, ptr %731, align 4, !tbaa !9
  br label %732

732:                                              ; preds = %727
  %733 = load i32, ptr %57, align 4, !tbaa !9
  %734 = add nsw i32 %733, 1
  store i32 %734, ptr %57, align 4, !tbaa !9
  br label %723, !llvm.loop !16

735:                                              ; preds = %723
  br label %736

736:                                              ; preds = %735, %660
  br label %737

737:                                              ; preds = %736, %640
  %738 = load ptr, ptr %40, align 8, !tbaa !5
  %739 = load i32, ptr %738, align 4, !tbaa !9
  %740 = icmp eq i32 %739, 0
  br i1 %740, label %741, label %745

741:                                              ; preds = %737
  %742 = load ptr, ptr %24, align 8, !tbaa !5
  %743 = load i32, ptr %742, align 4, !tbaa !9
  %744 = load ptr, ptr %32, align 8, !tbaa !5
  store i32 %743, ptr %744, align 4, !tbaa !9
  br label %863

745:                                              ; preds = %737
  %746 = load ptr, ptr %40, align 8, !tbaa !5
  store i32 0, ptr %746, align 4, !tbaa !9
  br label %747

747:                                              ; preds = %745, %621, %618
  %748 = load i32, ptr %67, align 4, !tbaa !9
  %749 = icmp ne i32 %748, 0
  br i1 %749, label %750, label %752

750:                                              ; preds = %747
  %751 = getelementptr inbounds [1 x i8], ptr %62, i64 0, i64 0
  store i8 66, ptr %751, align 1, !tbaa !17
  br label %754

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

754:                                              ; preds = %752, %750
  store i32 1, ptr %74, align 4, !tbaa !9
  %755 = load i32, ptr %74, align 4, !tbaa !9
  %756 = load ptr, ptr %24, align 8, !tbaa !5
  %757 = load i32, ptr %756, align 4, !tbaa !9
  %758 = add nsw i32 %755, %757
  store i32 %758, ptr %80, align 4, !tbaa !9
  %759 = load i32, ptr %80, align 4, !tbaa !9
  %760 = load ptr, ptr %24, align 8, !tbaa !5
  %761 = load i32, ptr %760, align 4, !tbaa !9
  %762 = add nsw i32 %759, %761
  store i32 %762, ptr %81, align 4, !tbaa !9
  %763 = load ptr, ptr %22, align 8, !tbaa !5
  %764 = getelementptr inbounds [1 x i8], ptr %62, i64 0, i64 0
  %765 = load ptr, ptr %24, align 8, !tbaa !5
  %766 = load ptr, ptr %29, align 8, !tbaa !5
  %767 = load ptr, ptr %30, align 8, !tbaa !5
  %768 = load ptr, ptr %36, align 8, !tbaa !5
  %769 = load i32, ptr %49, align 4, !tbaa !9
  %770 = sext i32 %769 to i64
  %771 = getelementptr inbounds double, ptr %768, i64 %770
  %772 = load ptr, ptr %36, align 8, !tbaa !5
  %773 = load i32, ptr %50, align 4, !tbaa !9
  %774 = sext i32 %773 to i64
  %775 = getelementptr inbounds double, ptr %772, i64 %774
  %776 = load ptr, ptr %32, align 8, !tbaa !5
  %777 = load ptr, ptr %33, align 8, !tbaa !5
  %778 = getelementptr inbounds double, ptr %777, i64 1
  %779 = load ptr, ptr %38, align 8, !tbaa !5
  %780 = load i32, ptr %74, align 4, !tbaa !9
  %781 = sext i32 %780 to i64
  %782 = getelementptr inbounds i32, ptr %779, i64 %781
  %783 = load ptr, ptr %38, align 8, !tbaa !5
  %784 = load i32, ptr %80, align 4, !tbaa !9
  %785 = sext i32 %784 to i64
  %786 = getelementptr inbounds i32, ptr %783, i64 %785
  %787 = load ptr, ptr %36, align 8, !tbaa !5
  %788 = load i32, ptr %83, align 4, !tbaa !9
  %789 = sext i32 %788 to i64
  %790 = getelementptr inbounds double, ptr %787, i64 %789
  %791 = load ptr, ptr %38, align 8, !tbaa !5
  %792 = load i32, ptr %81, align 4, !tbaa !9
  %793 = sext i32 %792 to i64
  %794 = getelementptr inbounds i32, ptr %791, i64 %793
  %795 = load ptr, ptr %40, align 8, !tbaa !5
  call void @dstebz_(ptr noundef %763, ptr noundef %764, ptr noundef %765, ptr noundef %90, ptr noundef %91, ptr noundef %766, ptr noundef %767, ptr noundef %77, ptr noundef %771, ptr noundef %775, ptr noundef %776, ptr noundef %86, ptr noundef %778, ptr noundef %782, ptr noundef %786, ptr noundef %790, ptr noundef %794, ptr noundef %795)
  %796 = load i32, ptr %67, align 4, !tbaa !9
  %797 = icmp ne i32 %796, 0
  br i1 %797, label %798, label %862

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

862:                                              ; preds = %798, %754
  br label %863

863:                                              ; preds = %862, %741
  %864 = load i32, ptr %73, align 4, !tbaa !9
  %865 = icmp eq i32 %864, 1
  br i1 %865, label %866, label %882

866:                                              ; preds = %863
  %867 = load ptr, ptr %40, align 8, !tbaa !5
  %868 = load i32, ptr %867, align 4, !tbaa !9
  %869 = icmp eq i32 %868, 0
  br i1 %869, label %870, label %873

870:                                              ; preds = %866
  %871 = load ptr, ptr %32, align 8, !tbaa !5
  %872 = load i32, ptr %871, align 4, !tbaa !9
  store i32 %872, ptr %52, align 4, !tbaa !9
  br label %877

873:                                              ; preds = %866
  %874 = load ptr, ptr %40, align 8, !tbaa !5
  %875 = load i32, ptr %874, align 4, !tbaa !9
  %876 = sub nsw i32 %875, 1
  store i32 %876, ptr %52, align 4, !tbaa !9
  br label %877

877:                                              ; preds = %873, %870
  %878 = load double, ptr %60, align 8, !tbaa !11
  %879 = fdiv double 1.000000e+00, %878
  store double %879, ptr %47, align 8, !tbaa !11
  %880 = load ptr, ptr %33, align 8, !tbaa !5
  %881 = getelementptr inbounds double, ptr %880, i64 1
  call void @dscal_(ptr noundef %52, ptr noundef %47, ptr noundef %881, ptr noundef @c__1)
  br label %882

882:                                              ; preds = %877, %863
  %883 = load i32, ptr %67, align 4, !tbaa !9
  %884 = icmp ne i32 %883, 0
  br i1 %884, label %885, label %1019

885:                                              ; preds = %882
  %886 = load ptr, ptr %32, align 8, !tbaa !5
  %887 = load i32, ptr %886, align 4, !tbaa !9
  %888 = sub nsw i32 %887, 1
  store i32 %888, ptr %45, align 4, !tbaa !9
  store i32 1, ptr %58, align 4, !tbaa !9
  br label %889

889:                                              ; preds = %1015, %885
  %890 = load i32, ptr %58, align 4, !tbaa !9
  %891 = load i32, ptr %45, align 4, !tbaa !9
  %892 = icmp sle i32 %890, %891
  br i1 %892, label %893, label %1018

893:                                              ; preds = %889
  store i32 0, ptr %57, align 4, !tbaa !9
  %894 = load ptr, ptr %33, align 8, !tbaa !5
  %895 = load i32, ptr %58, align 4, !tbaa !9
  %896 = sext i32 %895 to i64
  %897 = getelementptr inbounds double, ptr %894, i64 %896
  %898 = load double, ptr %897, align 8, !tbaa !11
  store double %898, ptr %93, align 8, !tbaa !11
  %899 = load ptr, ptr %32, align 8, !tbaa !5
  %900 = load i32, ptr %899, align 4, !tbaa !9
  store i32 %900, ptr %46, align 4, !tbaa !9
  %901 = load i32, ptr %58, align 4, !tbaa !9
  %902 = add nsw i32 %901, 1
  store i32 %902, ptr %70, align 4, !tbaa !9
  br label %903

903:                                              ; preds = %923, %893
  %904 = load i32, ptr %70, align 4, !tbaa !9
  %905 = load i32, ptr %46, align 4, !tbaa !9
  %906 = icmp sle i32 %904, %905
  br i1 %906, label %907, label %926

907:                                              ; preds = %903
  %908 = load ptr, ptr %33, align 8, !tbaa !5
  %909 = load i32, ptr %70, align 4, !tbaa !9
  %910 = sext i32 %909 to i64
  %911 = getelementptr inbounds double, ptr %908, i64 %910
  %912 = load double, ptr %911, align 8, !tbaa !11
  %913 = load double, ptr %93, align 8, !tbaa !11
  %914 = fcmp olt double %912, %913
  br i1 %914, label %915, label %922

915:                                              ; preds = %907
  %916 = load i32, ptr %70, align 4, !tbaa !9
  store i32 %916, ptr %57, align 4, !tbaa !9
  %917 = load ptr, ptr %33, align 8, !tbaa !5
  %918 = load i32, ptr %70, align 4, !tbaa !9
  %919 = sext i32 %918 to i64
  %920 = getelementptr inbounds double, ptr %917, i64 %919
  %921 = load double, ptr %920, align 8, !tbaa !11
  store double %921, ptr %93, align 8, !tbaa !11
  br label %922

922:                                              ; preds = %915, %907
  br label %923

923:                                              ; preds = %922
  %924 = load i32, ptr %70, align 4, !tbaa !9
  %925 = add nsw i32 %924, 1
  store i32 %925, ptr %70, align 4, !tbaa !9
  br label %903, !llvm.loop !18

926:                                              ; preds = %903
  %927 = load i32, ptr %57, align 4, !tbaa !9
  %928 = icmp ne i32 %927, 0
  br i1 %928, label %929, label %1014

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

993:                                              ; preds = %929
  %994 = load ptr, ptr %39, align 8, !tbaa !5
  %995 = load i32, ptr %57, 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
  store i32 %998, ptr %56, align 4, !tbaa !9
  %999 = load ptr, ptr %39, align 8, !tbaa !5
  %1000 = load i32, ptr %58, align 4, !tbaa !9
  %1001 = sext i32 %1000 to i64
  %1002 = getelementptr inbounds i32, ptr %999, i64 %1001
  %1003 = load i32, ptr %1002, align 4, !tbaa !9
  %1004 = load ptr, ptr %39, align 8, !tbaa !5
  %1005 = load i32, ptr %57, 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
  %1008 = load i32, ptr %56, align 4, !tbaa !9
  %1009 = load ptr, ptr %39, align 8, !tbaa !5
  %1010 = load i32, ptr %58, align 4, !tbaa !9
  %1011 = sext i32 %1010 to i64
  %1012 = getelementptr inbounds i32, ptr %1009, i64 %1011
  store i32 %1008, ptr %1012, align 4, !tbaa !9
  br label %1013

1013:                                             ; preds = %993, %929
  br label %1014

1014:                                             ; preds = %1013, %926
  br label %1015

1015:                                             ; preds = %1014
  %1016 = load i32, ptr %58, align 4, !tbaa !9
  %1017 = add nsw i32 %1016, 1
  store i32 %1017, ptr %58, align 4, !tbaa !9
  br label %889, !llvm.loop !19

1018:                                             ; preds = %889
  br label %1019

1019:                                             ; preds = %1018, %882
  %1020 = load i32, ptr %64, align 4, !tbaa !9
  %1021 = sitofp i32 %1020 to double
  %1022 = load ptr, ptr %36, align 8, !tbaa !5
  %1023 = getelementptr inbounds double, ptr %1022, i64 1
  store double %1021, ptr %1023, align 8, !tbaa !11
  store i32 1, ptr %94, align 4
  br label %1024

1024:                                             ; preds = %1019, %415, %354, %347, %339
  call void @llvm.lifetime.end.p0(i64 8, ptr %93) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %92) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %91) #4
  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 4, 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 4, 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 8, ptr %78) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %77) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %76) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %75) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %74) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %73) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %72) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %71) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %70) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %69) #4
  call void @llvm.lifetime.end.p0(i64 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 @ilaenv2stage_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

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

declare double @dlamch_(ptr noundef) #2

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

declare double @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_2stage_(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 @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 [14 x i8], align 1
@c_n1 = external hidden global i32, align 4
@c__2 = external hidden global i32, align 4
@c__3 = external hidden global i32, align 4
@c__4 = external hidden global i32, align 4
@.str.7 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [2 x i8], align 1

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

56:                                               ; preds = %20
  %57 = icmp ne i32 %50, 0
  %58 = icmp ne i32 %51, 0
  %or.cond = select i1 %57, i1 true, i1 %58
  %59 = icmp ne i32 %52, 0
  %or.cond3 = select i1 %or.cond, i1 true, i1 %59
  br i1 %or.cond3, label %60, label %.thread421.sink.split

60:                                               ; preds = %56
  %.not383 = icmp eq i32 %48, 0
  br i1 %.not383, label %61, label %63

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

63:                                               ; preds = %61, %60
  %64 = load i32, ptr %3, align 4, !tbaa !5
  %65 = icmp slt i32 %64, 0
  br i1 %65, label %.thread421.sink.split, label %66

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

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

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

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

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

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

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

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

86:                                               ; preds = %84
  %87 = load i32, ptr %14, align 4, !tbaa !5
  %88 = icmp slt i32 %87, 1
  br i1 %88, label %.thread421.sink.split, label %89

89:                                               ; preds = %86
  %.not386 = icmp ne i32 %49, 0
  %90 = icmp ult i32 %87, %64
  %or.cond470 = and i1 %.not386, %90
  br i1 %or.cond470, label %.thread421.sink.split, label %.thread

.thread:                                          ; preds = %89
  %91 = icmp ult i32 %64, 2
  br i1 %91, label %105, label %92

92:                                               ; preds = %.thread
  %93 = tail call i32 @ilaenv2stage_(ptr noundef nonnull @c__1, ptr noundef nonnull @.str.6, ptr noundef %0, ptr noundef nonnull %3, ptr noundef nonnull @c_n1, ptr noundef nonnull @c_n1, ptr noundef nonnull @c_n1) #6
  store i32 %93, ptr %31, align 4, !tbaa !5
  %94 = call i32 @ilaenv2stage_(ptr noundef nonnull @c__2, ptr noundef nonnull @.str.6, ptr noundef %0, ptr noundef nonnull %3, ptr noundef nonnull %31, ptr noundef nonnull @c_n1, ptr noundef nonnull @c_n1) #6
  store i32 %94, ptr %30, align 4, !tbaa !5
  %95 = call i32 @ilaenv2stage_(ptr noundef nonnull @c__3, ptr noundef nonnull @.str.6, ptr noundef %0, ptr noundef nonnull %3, ptr noundef nonnull %31, ptr noundef nonnull %30, ptr noundef nonnull @c_n1) #6
  store i32 %95, ptr %29, align 4, !tbaa !5
  %96 = call i32 @ilaenv2stage_(ptr noundef nonnull @c__4, ptr noundef nonnull @.str.6, ptr noundef %0, ptr noundef nonnull %3, ptr noundef nonnull %31, ptr noundef nonnull %30, ptr noundef nonnull @c_n1) #6
  %97 = load i32, ptr %3, align 4, !tbaa !5
  %98 = shl i32 %97, 3
  store i32 %98, ptr %21, align 4, !tbaa !5
  %99 = mul nsw i32 %97, 3
  %100 = load i32, ptr %29, align 4, !tbaa !5
  %101 = add i32 %99, %96
  %102 = add i32 %101, %100
  store i32 %102, ptr %22, align 4, !tbaa !5
  %103 = call i32 @llvm.smax.i32(i32 %98, i32 %102)
  %104 = sitofp i32 %103 to double
  br label %105

105:                                              ; preds = %.thread, %92
  %storemerge = phi double [ %104, %92 ], [ 1.000000e+00, %.thread ]
  %.0360 = phi i32 [ %103, %92 ], [ 1, %.thread ]
  store double %storemerge, ptr %15, align 8, !tbaa !9
  %106 = load i32, ptr %16, align 4, !tbaa !5
  %107 = icmp sge i32 %106, %.0360
  %or.cond5 = select i1 %107, i1 true, i1 %54
  br i1 %or.cond5, label %.thread416, label %.thread421.sink.split

.thread416:                                       ; preds = %105
  %.pr418.pr = load i32, ptr %19, align 4, !tbaa !5
  %.not388 = icmp eq i32 %.pr418.pr, 0
  br i1 %.not388, label %111, label %.thread421

.thread421.sink.split:                            ; preds = %105, %86, %89, %80, %76, %71, %66, %63, %61, %56, %20
  %.sink = phi i32 [ -1, %20 ], [ -2, %56 ], [ -3, %61 ], [ -4, %63 ], [ -6, %66 ], [ -8, %71 ], [ -9, %76 ], [ -10, %80 ], [ -15, %89 ], [ -15, %86 ], [ -17, %105 ]
  store i32 %.sink, ptr %19, align 4, !tbaa !5
  br label %.thread421

.thread421:                                       ; preds = %.thread421.sink.split, %84, %.thread416
  %108 = phi i32 [ %.pr418.pr, %.thread416 ], [ %.pr, %84 ], [ %.sink, %.thread421.sink.split ]
  %109 = sub nsw i32 0, %108
  store i32 %109, ptr %21, align 4, !tbaa !5
  %110 = call i32 @xerbla_(ptr noundef nonnull @.str.7, ptr noundef nonnull %21, i32 noundef 13) #6
  br label %301

111:                                              ; preds = %.thread416
  br i1 %54, label %301, label %112

112:                                              ; preds = %111
  store i32 0, ptr %11, align 4, !tbaa !5
  %113 = load i32, ptr %3, align 4, !tbaa !5
  switch i32 %113, label %127 [
    i32 0, label %301
    i32 1, label %114
  ]

114:                                              ; preds = %112
  %or.cond7 = select i1 %57, i1 true, i1 %59
  br i1 %or.cond7, label %115, label %117

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

117:                                              ; preds = %114
  %118 = load double, ptr %6, align 8, !tbaa !9
  %119 = load double, ptr %4, align 8, !tbaa !9
  %120 = fcmp olt double %118, %119
  br i1 %120, label %121, label %125

121:                                              ; preds = %117
  %122 = load double, ptr %7, align 8, !tbaa !9
  %123 = fcmp ult double %122, %119
  br i1 %123, label %125, label %124

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

.sink.split:                                      ; preds = %115, %124
  %.sink471 = phi double [ %119, %124 ], [ %116, %115 ]
  store double %.sink471, ptr %12, align 8, !tbaa !9
  br label %125

125:                                              ; preds = %.sink.split, %117, %121
  br i1 %.not386, label %126, label %301

126:                                              ; preds = %125
  store double 1.000000e+00, ptr %13, align 8, !tbaa !9
  br label %301

127:                                              ; preds = %112
  %128 = call double @dlamch_(ptr noundef nonnull @.str.8) #6
  %129 = call double @dlamch_(ptr noundef nonnull @.str.9) #6
  %130 = fdiv double %128, %129
  %131 = fdiv double 1.000000e+00, %130
  %132 = call double @sqrt(double noundef %130) #6
  %133 = call double @sqrt(double noundef %131) #6
  store double %133, ptr %23, align 8, !tbaa !9
  %134 = call double @sqrt(double noundef %128) #6
  %135 = call double @sqrt(double noundef %134) #6
  %136 = fdiv double 1.000000e+00, %135
  %137 = fcmp ole double %133, %136
  %138 = select i1 %137, double %133, double %136
  %139 = load double, ptr %10, align 8, !tbaa !9
  store double %139, ptr %32, align 8, !tbaa !9
  %.not389 = icmp eq i32 %51, 0
  br i1 %.not389, label %143, label %140

140:                                              ; preds = %127
  %141 = load double, ptr %6, align 8, !tbaa !9
  store double %141, ptr %36, align 8, !tbaa !9
  %142 = load double, ptr %7, align 8, !tbaa !9
  store double %142, ptr %37, align 8, !tbaa !9
  br label %143

143:                                              ; preds = %140, %127
  %144 = call double @dlansy_(ptr noundef nonnull @.str.10, ptr noundef %2, ptr noundef nonnull %3, ptr noundef %4, ptr noundef nonnull %5, ptr noundef nonnull %15) #6
  %145 = fcmp ogt double %144, 0.000000e+00
  %146 = fcmp olt double %144, %132
  %or.cond410 = select i1 %145, i1 %146, i1 false
  br i1 %or.cond410, label %149, label %147

147:                                              ; preds = %143
  %148 = fcmp ogt double %144, %138
  br i1 %148, label %149, label %180

149:                                              ; preds = %147, %143
  %.pn = phi double [ %132, %143 ], [ %138, %147 ]
  %storemerge436 = fdiv double %.pn, %144
  store double %storemerge436, ptr %26, align 8, !tbaa !9
  %150 = load i32, ptr %3, align 4, !tbaa !5
  store i32 %150, ptr %21, align 4, !tbaa !5
  br i1 %.not383, label %162, label %151

151:                                              ; preds = %149
  store i32 1, ptr %25, align 4, !tbaa !5
  %.not394441 = icmp slt i32 %150, 1
  br i1 %.not394441, label %.loopexit439, label %.lr.ph

.lr.ph:                                           ; preds = %151
  %152 = add i32 %38, 1
  br label %153

153:                                              ; preds = %.lr.ph, %153
  %storemerge393442 = phi i32 [ 1, %.lr.ph ], [ %160, %153 ]
  %154 = load i32, ptr %3, align 4, !tbaa !5
  %reass.sub = sub i32 %154, %storemerge393442
  %155 = add i32 %reass.sub, 1
  store i32 %155, ptr %22, align 4, !tbaa !5
  %156 = mul i32 %storemerge393442, %152
  %157 = sext i32 %156 to i64
  %158 = getelementptr inbounds double, ptr %40, i64 %157
  call void @dscal_(ptr noundef nonnull %22, ptr noundef nonnull %26, ptr noundef %158, 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
  %.not394.not = icmp slt i32 %159, %161
  br i1 %.not394.not, label %153, label %.loopexit439, !llvm.loop !11

162:                                              ; preds = %149
  %invariant.gep = getelementptr i8, ptr %40, i64 8
  store i32 1, ptr %25, align 4, !tbaa !5
  %.not392443 = icmp slt i32 %150, 1
  br i1 %.not392443, label %.loopexit439, label %.lr.ph445

.lr.ph445:                                        ; preds = %162, %.lr.ph445
  %storemerge391444 = phi i32 [ %166, %.lr.ph445 ], [ 1, %162 ]
  %163 = mul nsw i32 %storemerge391444, %38
  %164 = sext i32 %163 to i64
  %gep = getelementptr double, ptr %invariant.gep, i64 %164
  call void @dscal_(ptr noundef nonnull %25, ptr noundef nonnull %26, ptr noundef %gep, ptr noundef nonnull @c__1) #6
  %165 = load i32, ptr %25, align 4, !tbaa !5
  %166 = add nsw i32 %165, 1
  store i32 %166, ptr %25, align 4, !tbaa !5
  %167 = load i32, ptr %21, align 4, !tbaa !5
  %.not392.not = icmp slt i32 %165, %167
  br i1 %.not392.not, label %.lr.ph445, label %.loopexit439, !llvm.loop !13

.loopexit439:                                     ; preds = %153, %.lr.ph445, %151, %162
  %168 = load double, ptr %10, align 8, !tbaa !9
  %169 = fcmp ogt double %168, 0.000000e+00
  br i1 %169, label %170, label %173

170:                                              ; preds = %.loopexit439
  %171 = load double, ptr %26, align 8, !tbaa !9
  %172 = fmul double %168, %171
  store double %172, ptr %32, align 8, !tbaa !9
  br label %173

173:                                              ; preds = %170, %.loopexit439
  br i1 %.not389, label %180, label %174

174:                                              ; preds = %173
  %175 = load double, ptr %6, align 8, !tbaa !9
  %176 = load double, ptr %26, align 8, !tbaa !9
  %177 = fmul double %175, %176
  store double %177, ptr %36, align 8, !tbaa !9
  %178 = load double, ptr %7, align 8, !tbaa !9
  %179 = fmul double %176, %178
  store double %179, ptr %37, align 8, !tbaa !9
  br label %180

180:                                              ; preds = %147, %173, %174
  %181 = phi i1 [ true, %173 ], [ true, %174 ], [ false, %147 ]
  %182 = load i32, ptr %3, align 4, !tbaa !5
  %183 = add nsw i32 %182, 1
  %184 = add nsw i32 %183, %182
  %185 = add nsw i32 %184, %182
  %186 = load i32, ptr %29, align 4, !tbaa !5
  %187 = add nsw i32 %185, %186
  %188 = load i32, ptr %16, align 4, !tbaa !5
  %189 = add i32 %188, 1
  %190 = sub i32 %189, %187
  store i32 %190, ptr %34, align 4, !tbaa !5
  %191 = sext i32 %184 to i64
  %192 = getelementptr inbounds double, ptr %45, i64 %191
  %193 = sext i32 %183 to i64
  %194 = getelementptr inbounds double, ptr %45, i64 %193
  %195 = sext i32 %185 to i64
  %196 = getelementptr inbounds double, ptr %45, i64 %195
  %197 = sext i32 %187 to i64
  %198 = getelementptr inbounds double, ptr %45, i64 %197
  call void @dsytrd_2stage_(ptr noundef %0, ptr noundef %2, ptr noundef nonnull %3, ptr noundef %4, ptr noundef nonnull %5, ptr noundef nonnull %192, ptr noundef nonnull %194, ptr noundef nonnull %15, ptr noundef nonnull %196, ptr noundef nonnull %29, ptr noundef nonnull %198, ptr noundef nonnull %34, ptr noundef nonnull %27) #6
  %.not395 = icmp eq i32 %52, 0
  br i1 %.not395, label %206, label %199

199:                                              ; preds = %180
  %200 = load i32, ptr %8, align 4, !tbaa !5
  %201 = icmp eq i32 %200, 1
  br i1 %201, label %202, label %206

202:                                              ; preds = %199
  %203 = load i32, ptr %9, align 4, !tbaa !5
  %204 = load i32, ptr %3, align 4, !tbaa !5
  %205 = icmp eq i32 %203, %204
  br label %206

206:                                              ; preds = %202, %199, %180
  %207 = phi i1 [ false, %199 ], [ false, %180 ], [ %205, %202 ]
  %or.cond9 = or i1 %57, %207
  br i1 %or.cond9, label %208, label %233

208:                                              ; preds = %206
  %209 = load double, ptr %10, align 8, !tbaa !9
  %210 = fcmp ugt double %209, 0.000000e+00
  br i1 %210, label %233, label %211

211:                                              ; preds = %208
  call void @dcopy_(ptr noundef nonnull %3, ptr noundef nonnull %192, ptr noundef nonnull @c__1, ptr noundef %12, ptr noundef nonnull @c__1) #6
  %212 = load i32, ptr %3, align 4, !tbaa !5
  %213 = shl i32 %212, 1
  %214 = add nsw i32 %213, %187
  br i1 %.not386, label %219, label %215

215:                                              ; preds = %211
  %216 = add nsw i32 %212, -1
  store i32 %216, ptr %21, align 4, !tbaa !5
  %217 = sext i32 %214 to i64
  %218 = getelementptr inbounds double, ptr %45, i64 %217
  call void @dcopy_(ptr noundef nonnull %21, ptr noundef nonnull %194, ptr noundef nonnull @c__1, ptr noundef nonnull %218, ptr noundef nonnull @c__1) #6
  call void @dsterf_(ptr noundef nonnull %3, ptr noundef %12, ptr noundef nonnull %218, ptr noundef nonnull %19) #6
  br label %.loopexit438

219:                                              ; preds = %211
  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 %198, ptr noundef nonnull %34, ptr noundef nonnull %27) #6
  %220 = load i32, ptr %3, align 4, !tbaa !5
  %221 = add nsw i32 %220, -1
  store i32 %221, ptr %21, align 4, !tbaa !5
  %222 = sext i32 %214 to i64
  %223 = getelementptr inbounds double, ptr %45, i64 %222
  call void @dcopy_(ptr noundef nonnull %21, ptr noundef nonnull %194, ptr noundef nonnull @c__1, ptr noundef nonnull %223, ptr noundef nonnull @c__1) #6
  call void @dsteqr_(ptr noundef %0, ptr noundef nonnull %3, ptr noundef %12, ptr noundef nonnull %223, ptr noundef %13, ptr noundef nonnull %14, ptr noundef nonnull %198, ptr noundef nonnull %19) #6
  %224 = load i32, ptr %19, align 4, !tbaa !5
  %225 = icmp eq i32 %224, 0
  br i1 %225, label %226, label %.thread428

226:                                              ; preds = %219
  %227 = load i32, ptr %3, align 4, !tbaa !5
  store i32 %227, ptr %21, align 4, !tbaa !5
  %.not397446 = icmp slt i32 %227, 1
  br i1 %.not397446, label %.loopexit438, label %.lr.ph448.preheader

.lr.ph448.preheader:                              ; preds = %226
  %228 = zext nneg i32 %227 to i64
  %229 = shl nuw nsw i64 %228, 2
  call void @llvm.memset.p0.i64(ptr align 4 %18, i8 0, i64 %229, i1 false), !tbaa !5
  br label %.loopexit438

.loopexit438:                                     ; preds = %.lr.ph448.preheader, %226, %215
  %.pr427 = load i32, ptr %19, align 4, !tbaa !5
  %230 = icmp eq i32 %.pr427, 0
  br i1 %230, label %231, label %.thread428

231:                                              ; preds = %.loopexit438
  %232 = load i32, ptr %3, align 4, !tbaa !5
  store i32 %232, ptr %11, align 4, !tbaa !5
  br label %244

.thread428:                                       ; preds = %219, %.loopexit438
  store i32 0, ptr %19, align 4, !tbaa !5
  br label %233

233:                                              ; preds = %206, %.thread428, %208
  %.412 = select i1 %.not386, i8 66, i8 69
  store i8 %.412, ptr %28, align 1, !tbaa !14
  %234 = load i32, ptr %3, align 4, !tbaa !5
  %235 = add nsw i32 %234, 1
  %236 = add nsw i32 %235, %234
  %237 = sext i32 %235 to i64
  %238 = getelementptr inbounds i32, ptr %46, i64 %237
  %239 = sext i32 %236 to i64
  %240 = getelementptr inbounds i32, ptr %46, i64 %239
  call void @dstebz_(ptr noundef %1, ptr noundef nonnull %28, ptr noundef nonnull %3, ptr noundef nonnull %36, ptr noundef nonnull %37, ptr noundef %8, ptr noundef %9, ptr noundef nonnull %32, ptr noundef nonnull %192, ptr noundef nonnull %194, ptr noundef nonnull %11, ptr noundef nonnull %35, ptr noundef %12, ptr noundef %17, ptr noundef nonnull %238, ptr noundef nonnull %198, ptr noundef nonnull %240, ptr noundef nonnull %19) #6
  br i1 %.not386, label %241, label %244

241:                                              ; preds = %233
  call void @dstein_(ptr noundef nonnull %3, ptr noundef nonnull %192, ptr noundef nonnull %194, ptr noundef nonnull %11, ptr noundef %12, ptr noundef %17, ptr noundef nonnull %238, ptr noundef %13, ptr noundef nonnull %14, ptr noundef nonnull %198, ptr noundef nonnull %240, ptr noundef %18, ptr noundef nonnull %19) #6
  %242 = load i32, ptr %16, align 4, !tbaa !5
  %243 = sub i32 %242, %182
  store i32 %243, ptr %33, 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 %194, ptr noundef nonnull %33, ptr noundef nonnull %27) #6
  br label %244

244:                                              ; preds = %233, %241, %231
  br i1 %181, label %245, label %255

245:                                              ; preds = %244
  %246 = load i32, ptr %19, align 4, !tbaa !5
  %247 = icmp eq i32 %246, 0
  br i1 %247, label %248, label %250

248:                                              ; preds = %245
  %249 = load i32, ptr %11, align 4, !tbaa !5
  br label %252

250:                                              ; preds = %245
  %251 = add nsw i32 %246, -1
  br label %252

252:                                              ; preds = %250, %248
  %storemerge400 = phi i32 [ %251, %250 ], [ %249, %248 ]
  store i32 %storemerge400, ptr %24, align 4, !tbaa !5
  %253 = load double, ptr %26, align 8, !tbaa !9
  %254 = fdiv double 1.000000e+00, %253
  store double %254, 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 %255

255:                                              ; preds = %252, %244
  br i1 %.not386, label %256, label %.loopexit

256:                                              ; preds = %255
  %257 = load i32, ptr %11, align 4, !tbaa !5
  %258 = add nsw i32 %257, -1
  store i32 %258, ptr %21, align 4, !tbaa !5
  %invariant.gep455 = getelementptr i8, ptr %44, i64 8
  store i32 1, ptr %25, align 4, !tbaa !5
  %.not403459 = icmp slt i32 %257, 2
  br i1 %.not403459, label %.loopexit, label %.lr.ph462

.lr.ph462:                                        ; preds = %256, %._crit_edge.thread
  %storemerge402460 = phi i32 [ %298, %._crit_edge.thread ], [ 1, %256 ]
  %259 = sext i32 %storemerge402460 to i64
  %260 = getelementptr inbounds double, ptr %41, i64 %259
  %261 = load double, ptr %260, align 8, !tbaa !9
  %262 = load i32, ptr %11, align 4, !tbaa !5
  store i32 %262, ptr %22, align 4, !tbaa !5
  %.not404.not449 = icmp slt i32 %storemerge402460, %262
  br i1 %.not404.not449, label %.lr.ph453.preheader, label %._crit_edge.thread

.lr.ph453.preheader:                              ; preds = %.lr.ph462
  %wide.trip.count = sext i32 %262 to i64
  %263 = sub nsw i64 %wide.trip.count, %259
  %xtraiter = and i64 %263, 1
  %264 = add nsw i64 %wide.trip.count, -1
  %265 = icmp eq i64 %264, %259
  br i1 %265, label %._crit_edge.unr-lcssa, label %.lr.ph453.preheader.new

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

.lr.ph453:                                        ; preds = %.lr.ph453, %.lr.ph453.preheader.new
  %indvars.iv = phi i64 [ %259, %.lr.ph453.preheader.new ], [ %indvars.iv.next.1, %.lr.ph453 ]
  %.0452 = phi double [ %261, %.lr.ph453.preheader.new ], [ %.1.1, %.lr.ph453 ]
  %.1359451 = phi i32 [ 0, %.lr.ph453.preheader.new ], [ %.2.1, %.lr.ph453 ]
  %niter = phi i64 [ 0, %.lr.ph453.preheader.new ], [ %niter.next.1, %.lr.ph453 ]
  %indvars.iv.next = add nsw i64 %indvars.iv, 1
  %266 = getelementptr double, ptr %12, i64 %indvars.iv
  %267 = load double, ptr %266, align 8, !tbaa !9
  %268 = fcmp olt double %267, %.0452
  %269 = trunc nsw i64 %indvars.iv.next to i32
  %.2 = select i1 %268, i32 %269, i32 %.1359451
  %.1 = select i1 %268, double %267, double %.0452
  %indvars.iv.next.1 = add nsw i64 %indvars.iv, 2
  %270 = getelementptr double, ptr %12, i64 %indvars.iv.next
  %271 = load double, ptr %270, align 8, !tbaa !9
  %272 = fcmp olt double %271, %.1
  %273 = trunc nsw i64 %indvars.iv.next.1 to i32
  %.2.1 = select i1 %272, i32 %273, i32 %.2
  %.1.1 = select i1 %272, double %271, 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.ph453, !llvm.loop !15

._crit_edge.unr-lcssa:                            ; preds = %.lr.ph453, %.lr.ph453.preheader
  %.2.lcssa.ph = phi i32 [ poison, %.lr.ph453.preheader ], [ %.2.1, %.lr.ph453 ]
  %.1.lcssa.ph = phi double [ poison, %.lr.ph453.preheader ], [ %.1.1, %.lr.ph453 ]
  %indvars.iv.unr = phi i64 [ %259, %.lr.ph453.preheader ], [ %indvars.iv.next.1, %.lr.ph453 ]
  %.0452.unr = phi double [ %261, %.lr.ph453.preheader ], [ %.1.1, %.lr.ph453 ]
  %.1359451.unr = phi i32 [ 0, %.lr.ph453.preheader ], [ %.2.1, %.lr.ph453 ]
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %._crit_edge, label %.lr.ph453.epil

.lr.ph453.epil:                                   ; preds = %._crit_edge.unr-lcssa
  %274 = getelementptr double, ptr %12, i64 %indvars.iv.unr
  %275 = load double, ptr %274, align 8, !tbaa !9
  %276 = fcmp olt double %275, %.0452.unr
  %277 = trunc i64 %indvars.iv.unr to i32
  %278 = add i32 %277, 1
  %.2.epil = select i1 %276, i32 %278, i32 %.1359451.unr
  %.1.epil = select i1 %276, double %275, double %.0452.unr
  br label %._crit_edge

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

279:                                              ; preds = %._crit_edge
  %280 = sext i32 %.2.lcssa to i64
  %281 = getelementptr inbounds i32, ptr %46, i64 %280
  %282 = load i32, ptr %281, align 4, !tbaa !5
  %283 = getelementptr inbounds double, ptr %41, i64 %280
  store double %261, ptr %283, align 8, !tbaa !9
  %284 = getelementptr inbounds i32, ptr %46, i64 %259
  %285 = load i32, ptr %284, align 4, !tbaa !5
  store i32 %285, ptr %281, align 4, !tbaa !5
  store double %.1.lcssa, ptr %260, align 8, !tbaa !9
  store i32 %282, ptr %284, align 4, !tbaa !5
  %286 = mul nsw i32 %.2.lcssa, %42
  %287 = sext i32 %286 to i64
  %gep456 = getelementptr double, ptr %invariant.gep455, i64 %287
  %288 = mul nsw i32 %storemerge402460, %42
  %289 = sext i32 %288 to i64
  %gep458 = getelementptr double, ptr %invariant.gep455, i64 %289
  call void @dswap_(ptr noundef nonnull %3, ptr noundef %gep456, ptr noundef nonnull @c__1, ptr noundef %gep458, ptr noundef nonnull @c__1) #6
  %290 = load i32, ptr %19, align 4, !tbaa !5
  %.not406 = icmp eq i32 %290, 0
  %.pre = load i32, ptr %25, align 4, !tbaa !5
  br i1 %.not406, label %._crit_edge.thread, label %291

291:                                              ; preds = %279
  %292 = getelementptr inbounds i32, ptr %47, i64 %280
  %293 = load i32, ptr %292, align 4, !tbaa !5
  %294 = sext i32 %.pre to i64
  %295 = getelementptr inbounds i32, ptr %47, i64 %294
  %296 = load i32, ptr %295, align 4, !tbaa !5
  store i32 %296, ptr %292, align 4, !tbaa !5
  store i32 %293, ptr %295, align 4, !tbaa !5
  br label %._crit_edge.thread

._crit_edge.thread:                               ; preds = %.lr.ph462, %._crit_edge, %291, %279
  %297 = phi i32 [ %storemerge402460, %._crit_edge ], [ %.pre, %291 ], [ %.pre, %279 ], [ %storemerge402460, %.lr.ph462 ]
  %298 = add nsw i32 %297, 1
  store i32 %298, ptr %25, align 4, !tbaa !5
  %299 = load i32, ptr %21, align 4, !tbaa !5
  %.not403.not = icmp slt i32 %297, %299
  br i1 %.not403.not, label %.lr.ph462, label %.loopexit, !llvm.loop !16

.loopexit:                                        ; preds = %._crit_edge.thread, %256, %255
  %300 = sitofp i32 %.0360 to double
  store double %300, ptr %15, align 8, !tbaa !9
  br label %301

301:                                              ; preds = %125, %126, %112, %111, %.loopexit, %.thread421
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %37) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %36) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %35) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %34) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %33) #6
  call void @llvm.lifetime.end.p0(i64 8, 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 4, 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 @ilaenv2stage_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

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

declare double @dlamch_(ptr noundef) local_unnamed_addr #2

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

declare double @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_2stage_(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 @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,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopIdiomRecognizePass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,PostOrderFunctionAttrsPass,ReassociatePass,SCCPPass,SROAPass,SimplifyCFGPass,TailCallElimPass