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

; 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"

%struct.doublecomplex = type { double, double }

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

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

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

144:                                              ; preds = %140
  %145 = load ptr, ptr %42, align 8, !tbaa !5
  store i32 -1, ptr %145, align 4, !tbaa !9
  br label %258

146:                                              ; preds = %140, %21
  %147 = load i32, ptr %69, align 4, !tbaa !9
  %148 = icmp ne i32 %147, 0
  br i1 %148, label %157, label %149

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

152:                                              ; preds = %149
  %153 = load i32, ptr %70, align 4, !tbaa !9
  %154 = icmp ne i32 %153, 0
  br i1 %154, label %157, label %155

155:                                              ; preds = %152
  %156 = load ptr, ptr %42, align 8, !tbaa !5
  store i32 -2, ptr %156, align 4, !tbaa !9
  br label %257

157:                                              ; preds = %152, %149, %146
  %158 = load i32, ptr %65, align 4, !tbaa !9
  %159 = icmp ne i32 %158, 0
  br i1 %159, label %166, label %160

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

164:                                              ; preds = %160
  %165 = load ptr, ptr %42, align 8, !tbaa !5
  store i32 -3, ptr %165, align 4, !tbaa !9
  br label %256

166:                                              ; preds = %160, %157
  %167 = load ptr, ptr %25, align 8, !tbaa !5
  %168 = load i32, ptr %167, align 4, !tbaa !9
  %169 = icmp slt i32 %168, 0
  br i1 %169, label %170, label %172

170:                                              ; preds = %166
  %171 = load ptr, ptr %42, align 8, !tbaa !5
  store i32 -4, ptr %171, align 4, !tbaa !9
  br label %255

172:                                              ; preds = %166
  %173 = load ptr, ptr %27, align 8, !tbaa !5
  %174 = load i32, ptr %173, align 4, !tbaa !9
  %175 = load ptr, ptr %25, align 8, !tbaa !5
  %176 = load i32, ptr %175, align 4, !tbaa !9
  %177 = icmp sge i32 1, %176
  br i1 %177, label %178, label %179

178:                                              ; preds = %172
  br label %182

179:                                              ; preds = %172
  %180 = load ptr, ptr %25, align 8, !tbaa !5
  %181 = load i32, ptr %180, align 4, !tbaa !9
  br label %182

182:                                              ; preds = %179, %178
  %183 = phi i32 [ 1, %178 ], [ %181, %179 ]
  %184 = icmp slt i32 %174, %183
  br i1 %184, label %185, label %187

185:                                              ; preds = %182
  %186 = load ptr, ptr %42, align 8, !tbaa !5
  store i32 -6, ptr %186, align 4, !tbaa !9
  br label %254

187:                                              ; preds = %182
  %188 = load i32, ptr %73, align 4, !tbaa !9
  %189 = icmp ne i32 %188, 0
  br i1 %189, label %190, label %203

190:                                              ; preds = %187
  %191 = load ptr, ptr %25, align 8, !tbaa !5
  %192 = load i32, ptr %191, align 4, !tbaa !9
  %193 = icmp sgt i32 %192, 0
  br i1 %193, label %194, label %202

194:                                              ; preds = %190
  %195 = load ptr, ptr %29, align 8, !tbaa !5
  %196 = load double, ptr %195, align 8, !tbaa !11
  %197 = load ptr, ptr %28, align 8, !tbaa !5
  %198 = load double, ptr %197, align 8, !tbaa !11
  %199 = fcmp ole double %196, %198
  br i1 %199, label %200, label %202

200:                                              ; preds = %194
  %201 = load ptr, ptr %42, align 8, !tbaa !5
  store i32 -8, ptr %201, align 4, !tbaa !9
  br label %202

202:                                              ; preds = %200, %194, %190
  br label %253

203:                                              ; preds = %187
  %204 = load i32, ptr %70, align 4, !tbaa !9
  %205 = icmp ne i32 %204, 0
  br i1 %205, label %206, label %252

206:                                              ; preds = %203
  %207 = load ptr, ptr %30, align 8, !tbaa !5
  %208 = load i32, ptr %207, align 4, !tbaa !9
  %209 = icmp slt i32 %208, 1
  br i1 %209, label %223, label %210

210:                                              ; preds = %206
  %211 = load ptr, ptr %30, align 8, !tbaa !5
  %212 = load i32, ptr %211, align 4, !tbaa !9
  %213 = load ptr, ptr %25, align 8, !tbaa !5
  %214 = load i32, ptr %213, align 4, !tbaa !9
  %215 = icmp sge i32 1, %214
  br i1 %215, label %216, label %217

216:                                              ; preds = %210
  br label %220

217:                                              ; preds = %210
  %218 = load ptr, ptr %25, align 8, !tbaa !5
  %219 = load i32, ptr %218, align 4, !tbaa !9
  br label %220

220:                                              ; preds = %217, %216
  %221 = phi i32 [ 1, %216 ], [ %219, %217 ]
  %222 = icmp sgt i32 %212, %221
  br i1 %222, label %223, label %225

223:                                              ; preds = %220, %206
  %224 = load ptr, ptr %42, align 8, !tbaa !5
  store i32 -9, ptr %224, align 4, !tbaa !9
  br label %251

225:                                              ; preds = %220
  %226 = load ptr, ptr %31, align 8, !tbaa !5
  %227 = load i32, ptr %226, align 4, !tbaa !9
  %228 = load ptr, ptr %25, align 8, !tbaa !5
  %229 = load i32, ptr %228, align 4, !tbaa !9
  %230 = load ptr, ptr %30, align 8, !tbaa !5
  %231 = load i32, ptr %230, align 4, !tbaa !9
  %232 = icmp sle i32 %229, %231
  br i1 %232, label %233, label %236

233:                                              ; preds = %225
  %234 = load ptr, ptr %25, align 8, !tbaa !5
  %235 = load i32, ptr %234, align 4, !tbaa !9
  br label %239

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

239:                                              ; preds = %236, %233
  %240 = phi i32 [ %235, %233 ], [ %238, %236 ]
  %241 = icmp slt i32 %227, %240
  br i1 %241, label %248, label %242

242:                                              ; preds = %239
  %243 = load ptr, ptr %31, align 8, !tbaa !5
  %244 = load i32, ptr %243, align 4, !tbaa !9
  %245 = load ptr, ptr %25, align 8, !tbaa !5
  %246 = load i32, ptr %245, align 4, !tbaa !9
  %247 = icmp sgt i32 %244, %246
  br i1 %247, label %248, label %250

248:                                              ; preds = %242, %239
  %249 = load ptr, ptr %42, align 8, !tbaa !5
  store i32 -10, ptr %249, align 4, !tbaa !9
  br label %250

250:                                              ; preds = %248, %242
  br label %251

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

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

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

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

255:                                              ; preds = %254, %170
  br label %256

256:                                              ; preds = %255, %164
  br label %257

257:                                              ; preds = %256, %155
  br label %258

258:                                              ; preds = %257, %144
  %259 = load ptr, ptr %42, align 8, !tbaa !5
  %260 = load i32, ptr %259, align 4, !tbaa !9
  %261 = icmp eq i32 %260, 0
  br i1 %261, label %262, label %278

262:                                              ; preds = %258
  %263 = load ptr, ptr %36, align 8, !tbaa !5
  %264 = load i32, ptr %263, align 4, !tbaa !9
  %265 = icmp slt i32 %264, 1
  br i1 %265, label %275, label %266

266:                                              ; preds = %262
  %267 = load i32, ptr %66, align 4, !tbaa !9
  %268 = icmp ne i32 %267, 0
  br i1 %268, label %269, label %277

269:                                              ; preds = %266
  %270 = load ptr, ptr %36, align 8, !tbaa !5
  %271 = load i32, ptr %270, align 4, !tbaa !9
  %272 = load ptr, ptr %25, align 8, !tbaa !5
  %273 = load i32, ptr %272, align 4, !tbaa !9
  %274 = icmp slt i32 %271, %273
  br i1 %274, label %275, label %277

275:                                              ; preds = %269, %262
  %276 = load ptr, ptr %42, align 8, !tbaa !5
  store i32 -15, ptr %276, align 4, !tbaa !9
  br label %277

277:                                              ; preds = %275, %269, %266
  br label %278

278:                                              ; preds = %277, %258
  %279 = load ptr, ptr %42, align 8, !tbaa !5
  %280 = load i32, ptr %279, align 4, !tbaa !9
  %281 = icmp eq i32 %280, 0
  br i1 %281, label %282, label %348

282:                                              ; preds = %278
  %283 = load ptr, ptr %25, align 8, !tbaa !5
  %284 = load i32, ptr %283, align 4, !tbaa !9
  %285 = icmp sle i32 %284, 1
  br i1 %285, label %286, label %295

286:                                              ; preds = %282
  store i32 1, ptr %82, align 4, !tbaa !9
  %287 = load i32, ptr %82, align 4, !tbaa !9
  %288 = sitofp i32 %287 to double
  %289 = load ptr, ptr %37, align 8, !tbaa !5
  %290 = getelementptr inbounds %struct.doublecomplex, ptr %289, i64 1
  %291 = getelementptr inbounds %struct.doublecomplex, ptr %290, i32 0, i32 0
  store double %288, ptr %291, align 8, !tbaa !13
  %292 = load ptr, ptr %37, align 8, !tbaa !5
  %293 = getelementptr inbounds %struct.doublecomplex, ptr %292, i64 1
  %294 = getelementptr inbounds %struct.doublecomplex, ptr %293, i32 0, i32 1
  store double 0.000000e+00, ptr %294, align 8, !tbaa !15
  br label %337

295:                                              ; preds = %282
  %296 = load ptr, ptr %25, align 8, !tbaa !5
  %297 = load i32, ptr %296, align 4, !tbaa !9
  %298 = shl i32 %297, 1
  store i32 %298, ptr %82, align 4, !tbaa !9
  %299 = load ptr, ptr %24, align 8, !tbaa !5
  %300 = load ptr, ptr %25, align 8, !tbaa !5
  %301 = call i32 @ilaenv_(ptr noundef @c__1, ptr noundef @.str.6, ptr noundef %299, ptr noundef %300, ptr noundef @c_n1, ptr noundef @c_n1, ptr noundef @c_n1, i32 noundef 6, i32 noundef 1)
  store i32 %301, ptr %67, align 4, !tbaa !9
  %302 = load i32, ptr %67, align 4, !tbaa !9
  store i32 %302, ptr %47, align 4, !tbaa !9
  %303 = load ptr, ptr %24, align 8, !tbaa !5
  %304 = load ptr, ptr %25, align 8, !tbaa !5
  %305 = call i32 @ilaenv_(ptr noundef @c__1, ptr noundef @.str.7, ptr noundef %303, ptr noundef %304, ptr noundef @c_n1, ptr noundef @c_n1, ptr noundef @c_n1, i32 noundef 6, i32 noundef 1)
  store i32 %305, ptr %48, align 4, !tbaa !9
  %306 = load i32, ptr %47, align 4, !tbaa !9
  %307 = load i32, ptr %48, align 4, !tbaa !9
  %308 = icmp sge i32 %306, %307
  br i1 %308, label %309, label %311

309:                                              ; preds = %295
  %310 = load i32, ptr %47, align 4, !tbaa !9
  br label %313

311:                                              ; preds = %295
  %312 = load i32, ptr %48, align 4, !tbaa !9
  br label %313

313:                                              ; preds = %311, %309
  %314 = phi i32 [ %310, %309 ], [ %312, %311 ]
  store i32 %314, ptr %67, align 4, !tbaa !9
  store i32 1, ptr %47, align 4, !tbaa !9
  %315 = load i32, ptr %67, align 4, !tbaa !9
  %316 = add nsw i32 %315, 1
  %317 = load ptr, ptr %25, align 8, !tbaa !5
  %318 = load i32, ptr %317, align 4, !tbaa !9
  %319 = mul nsw i32 %316, %318
  store i32 %319, ptr %48, align 4, !tbaa !9
  %320 = load i32, ptr %47, align 4, !tbaa !9
  %321 = load i32, ptr %48, align 4, !tbaa !9
  %322 = icmp sge i32 %320, %321
  br i1 %322, label %323, label %325

323:                                              ; preds = %313
  %324 = load i32, ptr %47, align 4, !tbaa !9
  br label %327

325:                                              ; preds = %313
  %326 = load i32, ptr %48, align 4, !tbaa !9
  br label %327

327:                                              ; preds = %325, %323
  %328 = phi i32 [ %324, %323 ], [ %326, %325 ]
  store i32 %328, ptr %86, align 4, !tbaa !9
  %329 = load i32, ptr %86, align 4, !tbaa !9
  %330 = sitofp i32 %329 to double
  %331 = load ptr, ptr %37, align 8, !tbaa !5
  %332 = getelementptr inbounds %struct.doublecomplex, ptr %331, i64 1
  %333 = getelementptr inbounds %struct.doublecomplex, ptr %332, i32 0, i32 0
  store double %330, ptr %333, align 8, !tbaa !13
  %334 = load ptr, ptr %37, align 8, !tbaa !5
  %335 = getelementptr inbounds %struct.doublecomplex, ptr %334, i64 1
  %336 = getelementptr inbounds %struct.doublecomplex, ptr %335, i32 0, i32 1
  store double 0.000000e+00, ptr %336, align 8, !tbaa !15
  br label %337

337:                                              ; preds = %327, %286
  %338 = load ptr, ptr %38, align 8, !tbaa !5
  %339 = load i32, ptr %338, align 4, !tbaa !9
  %340 = load i32, ptr %82, align 4, !tbaa !9
  %341 = icmp slt i32 %339, %340
  br i1 %341, label %342, label %347

342:                                              ; preds = %337
  %343 = load i32, ptr %87, align 4, !tbaa !9
  %344 = icmp ne i32 %343, 0
  br i1 %344, label %347, label %345

345:                                              ; preds = %342
  %346 = load ptr, ptr %42, align 8, !tbaa !5
  store i32 -17, ptr %346, align 4, !tbaa !9
  br label %347

347:                                              ; preds = %345, %342, %337
  br label %348

348:                                              ; preds = %347, %278
  %349 = load ptr, ptr %42, align 8, !tbaa !5
  %350 = load i32, ptr %349, align 4, !tbaa !9
  %351 = icmp ne i32 %350, 0
  br i1 %351, label %352, label %357

352:                                              ; preds = %348
  %353 = load ptr, ptr %42, align 8, !tbaa !5
  %354 = load i32, ptr %353, align 4, !tbaa !9
  %355 = sub nsw i32 0, %354
  store i32 %355, ptr %47, align 4, !tbaa !9
  %356 = call i32 @xerbla_(ptr noundef @.str.8, ptr noundef %47, i32 noundef 6)
  store i32 1, ptr %92, align 4
  br label %1046

357:                                              ; preds = %348
  %358 = load i32, ptr %87, align 4, !tbaa !9
  %359 = icmp ne i32 %358, 0
  br i1 %359, label %360, label %361

360:                                              ; preds = %357
  store i32 1, ptr %92, align 4
  br label %1046

361:                                              ; preds = %357
  br label %362

362:                                              ; preds = %361
  %363 = load ptr, ptr %33, align 8, !tbaa !5
  store i32 0, ptr %363, align 4, !tbaa !9
  %364 = load ptr, ptr %25, align 8, !tbaa !5
  %365 = load i32, ptr %364, align 4, !tbaa !9
  %366 = icmp eq i32 %365, 0
  br i1 %366, label %367, label %368

367:                                              ; preds = %362
  store i32 1, ptr %92, align 4
  br label %1046

368:                                              ; preds = %362
  %369 = load ptr, ptr %25, align 8, !tbaa !5
  %370 = load i32, ptr %369, align 4, !tbaa !9
  %371 = icmp eq i32 %370, 1
  br i1 %371, label %372, label %448

372:                                              ; preds = %368
  %373 = load i32, ptr %69, align 4, !tbaa !9
  %374 = icmp ne i32 %373, 0
  br i1 %374, label %378, label %375

375:                                              ; preds = %372
  %376 = load i32, ptr %70, align 4, !tbaa !9
  %377 = icmp ne i32 %376, 0
  br i1 %377, label %378, label %390

378:                                              ; preds = %375, %372
  %379 = load ptr, ptr %33, align 8, !tbaa !5
  store i32 1, ptr %379, align 4, !tbaa !9
  %380 = load i32, ptr %43, align 4, !tbaa !9
  %381 = add nsw i32 %380, 1
  store i32 %381, ptr %47, align 4, !tbaa !9
  %382 = load ptr, ptr %26, align 8, !tbaa !5
  %383 = load i32, ptr %47, align 4, !tbaa !9
  %384 = sext i32 %383 to i64
  %385 = getelementptr inbounds %struct.doublecomplex, ptr %382, i64 %384
  %386 = getelementptr inbounds %struct.doublecomplex, ptr %385, i32 0, i32 0
  %387 = load double, ptr %386, align 8, !tbaa !13
  %388 = load ptr, ptr %34, align 8, !tbaa !5
  %389 = getelementptr inbounds double, ptr %388, i64 1
  store double %387, ptr %389, align 8, !tbaa !11
  br label %431

390:                                              ; preds = %375
  %391 = load i32, ptr %73, align 4, !tbaa !9
  %392 = icmp ne i32 %391, 0
  br i1 %392, label %393, label %430

393:                                              ; preds = %390
  %394 = load i32, ptr %43, align 4, !tbaa !9
  %395 = add nsw i32 %394, 1
  store i32 %395, ptr %47, align 4, !tbaa !9
  %396 = load i32, ptr %43, align 4, !tbaa !9
  %397 = add nsw i32 %396, 1
  store i32 %397, ptr %48, align 4, !tbaa !9
  %398 = load ptr, ptr %28, align 8, !tbaa !5
  %399 = load double, ptr %398, align 8, !tbaa !11
  %400 = load ptr, ptr %26, align 8, !tbaa !5
  %401 = load i32, ptr %47, align 4, !tbaa !9
  %402 = sext i32 %401 to i64
  %403 = getelementptr inbounds %struct.doublecomplex, ptr %400, i64 %402
  %404 = getelementptr inbounds %struct.doublecomplex, ptr %403, i32 0, i32 0
  %405 = load double, ptr %404, align 8, !tbaa !13
  %406 = fcmp olt double %399, %405
  br i1 %406, label %407, label %429

407:                                              ; preds = %393
  %408 = load ptr, ptr %29, align 8, !tbaa !5
  %409 = load double, ptr %408, align 8, !tbaa !11
  %410 = load ptr, ptr %26, align 8, !tbaa !5
  %411 = load i32, ptr %48, align 4, !tbaa !9
  %412 = sext i32 %411 to i64
  %413 = getelementptr inbounds %struct.doublecomplex, ptr %410, i64 %412
  %414 = getelementptr inbounds %struct.doublecomplex, ptr %413, i32 0, i32 0
  %415 = load double, ptr %414, align 8, !tbaa !13
  %416 = fcmp oge double %409, %415
  br i1 %416, label %417, label %429

417:                                              ; preds = %407
  %418 = load ptr, ptr %33, align 8, !tbaa !5
  store i32 1, ptr %418, align 4, !tbaa !9
  %419 = load i32, ptr %43, align 4, !tbaa !9
  %420 = add nsw i32 %419, 1
  store i32 %420, ptr %47, align 4, !tbaa !9
  %421 = load ptr, ptr %26, align 8, !tbaa !5
  %422 = load i32, ptr %47, align 4, !tbaa !9
  %423 = sext i32 %422 to i64
  %424 = getelementptr inbounds %struct.doublecomplex, ptr %421, i64 %423
  %425 = getelementptr inbounds %struct.doublecomplex, ptr %424, i32 0, i32 0
  %426 = load double, ptr %425, align 8, !tbaa !13
  %427 = load ptr, ptr %34, align 8, !tbaa !5
  %428 = getelementptr inbounds double, ptr %427, i64 1
  store double %426, ptr %428, align 8, !tbaa !11
  br label %429

429:                                              ; preds = %417, %407, %393
  br label %430

430:                                              ; preds = %429, %390
  br label %431

431:                                              ; preds = %430, %378
  %432 = load i32, ptr %66, align 4, !tbaa !9
  %433 = icmp ne i32 %432, 0
  br i1 %433, label %434, label %447

434:                                              ; preds = %431
  %435 = load i32, ptr %45, align 4, !tbaa !9
  %436 = add nsw i32 %435, 1
  store i32 %436, ptr %47, align 4, !tbaa !9
  %437 = load ptr, ptr %35, align 8, !tbaa !5
  %438 = load i32, ptr %47, align 4, !tbaa !9
  %439 = sext i32 %438 to i64
  %440 = getelementptr inbounds %struct.doublecomplex, ptr %437, i64 %439
  %441 = getelementptr inbounds %struct.doublecomplex, ptr %440, i32 0, i32 0
  store double 1.000000e+00, ptr %441, align 8, !tbaa !13
  %442 = load ptr, ptr %35, align 8, !tbaa !5
  %443 = load i32, ptr %47, align 4, !tbaa !9
  %444 = sext i32 %443 to i64
  %445 = getelementptr inbounds %struct.doublecomplex, ptr %442, i64 %444
  %446 = getelementptr inbounds %struct.doublecomplex, ptr %445, i32 0, i32 1
  store double 0.000000e+00, ptr %446, align 8, !tbaa !15
  br label %447

447:                                              ; preds = %434, %431
  store i32 1, ptr %92, align 4
  br label %1046

448:                                              ; preds = %368
  %449 = call double @dlamch_(ptr noundef @.str.9)
  store double %449, ptr %74, align 8, !tbaa !11
  %450 = call double @dlamch_(ptr noundef @.str.10)
  store double %450, ptr %88, align 8, !tbaa !11
  %451 = load double, ptr %74, align 8, !tbaa !11
  %452 = load double, ptr %88, align 8, !tbaa !11
  %453 = fdiv double %451, %452
  store double %453, ptr %85, align 8, !tbaa !11
  %454 = load double, ptr %85, align 8, !tbaa !11
  %455 = fdiv double 1.000000e+00, %454
  store double %455, ptr %76, align 8, !tbaa !11
  %456 = load double, ptr %85, align 8, !tbaa !11
  %457 = call double @sqrt(double noundef %456) #4
  store double %457, ptr %55, align 8, !tbaa !11
  %458 = load double, ptr %76, align 8, !tbaa !11
  %459 = call double @sqrt(double noundef %458) #4
  store double %459, ptr %49, align 8, !tbaa !11
  %460 = load double, ptr %74, align 8, !tbaa !11
  %461 = call double @sqrt(double noundef %460) #4
  %462 = call double @sqrt(double noundef %461) #4
  %463 = fdiv double 1.000000e+00, %462
  store double %463, ptr %50, align 8, !tbaa !11
  %464 = load double, ptr %49, align 8, !tbaa !11
  %465 = load double, ptr %50, align 8, !tbaa !11
  %466 = fcmp ole double %464, %465
  br i1 %466, label %467, label %469

467:                                              ; preds = %448
  %468 = load double, ptr %49, align 8, !tbaa !11
  br label %471

469:                                              ; preds = %448
  %470 = load double, ptr %50, align 8, !tbaa !11
  br label %471

471:                                              ; preds = %469, %467
  %472 = phi double [ %468, %467 ], [ %470, %469 ]
  store double %472, ptr %56, align 8, !tbaa !11
  store i32 0, ptr %71, align 4, !tbaa !9
  %473 = load ptr, ptr %32, align 8, !tbaa !5
  %474 = load double, ptr %473, align 8, !tbaa !11
  store double %474, ptr %75, align 8, !tbaa !11
  %475 = load i32, ptr %73, align 4, !tbaa !9
  %476 = icmp ne i32 %475, 0
  br i1 %476, label %477, label %482

477:                                              ; preds = %471
  %478 = load ptr, ptr %28, align 8, !tbaa !5
  %479 = load double, ptr %478, align 8, !tbaa !11
  store double %479, ptr %89, align 8, !tbaa !11
  %480 = load ptr, ptr %29, align 8, !tbaa !5
  %481 = load double, ptr %480, align 8, !tbaa !11
  store double %481, ptr %90, align 8, !tbaa !11
  br label %482

482:                                              ; preds = %477, %471
  %483 = load ptr, ptr %24, align 8, !tbaa !5
  %484 = load ptr, ptr %25, align 8, !tbaa !5
  %485 = load ptr, ptr %26, align 8, !tbaa !5
  %486 = load i32, ptr %44, align 4, !tbaa !9
  %487 = sext i32 %486 to i64
  %488 = getelementptr inbounds %struct.doublecomplex, ptr %485, i64 %487
  %489 = load ptr, ptr %27, align 8, !tbaa !5
  %490 = load ptr, ptr %39, align 8, !tbaa !5
  %491 = getelementptr inbounds double, ptr %490, i64 1
  %492 = call double @zlanhe_(ptr noundef @.str.11, ptr noundef %483, ptr noundef %484, ptr noundef %488, ptr noundef %489, ptr noundef %491)
  store double %492, ptr %53, align 8, !tbaa !11
  %493 = load double, ptr %53, align 8, !tbaa !11
  %494 = fcmp ogt double %493, 0.000000e+00
  br i1 %494, label %495, label %503

495:                                              ; preds = %482
  %496 = load double, ptr %53, align 8, !tbaa !11
  %497 = load double, ptr %55, align 8, !tbaa !11
  %498 = fcmp olt double %496, %497
  br i1 %498, label %499, label %503

499:                                              ; preds = %495
  store i32 1, ptr %71, align 4, !tbaa !9
  %500 = load double, ptr %55, align 8, !tbaa !11
  %501 = load double, ptr %53, align 8, !tbaa !11
  %502 = fdiv double %500, %501
  store double %502, ptr %62, align 8, !tbaa !11
  br label %512

503:                                              ; preds = %495, %482
  %504 = load double, ptr %53, align 8, !tbaa !11
  %505 = load double, ptr %56, align 8, !tbaa !11
  %506 = fcmp ogt double %504, %505
  br i1 %506, label %507, label %511

507:                                              ; preds = %503
  store i32 1, ptr %71, align 4, !tbaa !9
  %508 = load double, ptr %56, align 8, !tbaa !11
  %509 = load double, ptr %53, align 8, !tbaa !11
  %510 = fdiv double %508, %509
  store double %510, ptr %62, align 8, !tbaa !11
  br label %511

511:                                              ; preds = %507, %503
  br label %512

512:                                              ; preds = %511, %499
  %513 = load i32, ptr %71, align 4, !tbaa !9
  %514 = icmp eq i32 %513, 1
  br i1 %514, label %515, label %584

515:                                              ; preds = %512
  %516 = load i32, ptr %65, align 4, !tbaa !9
  %517 = icmp ne i32 %516, 0
  br i1 %517, label %518, label %543

518:                                              ; preds = %515
  %519 = load ptr, ptr %25, align 8, !tbaa !5
  %520 = load i32, ptr %519, align 4, !tbaa !9
  store i32 %520, ptr %47, align 4, !tbaa !9
  store i32 1, ptr %60, align 4, !tbaa !9
  br label %521

521:                                              ; preds = %539, %518
  %522 = load i32, ptr %60, align 4, !tbaa !9
  %523 = load i32, ptr %47, align 4, !tbaa !9
  %524 = icmp sle i32 %522, %523
  br i1 %524, label %525, label %542

525:                                              ; preds = %521
  %526 = load ptr, ptr %25, align 8, !tbaa !5
  %527 = load i32, ptr %526, align 4, !tbaa !9
  %528 = load i32, ptr %60, align 4, !tbaa !9
  %529 = sub nsw i32 %527, %528
  %530 = add nsw i32 %529, 1
  store i32 %530, ptr %48, align 4, !tbaa !9
  %531 = load ptr, ptr %26, align 8, !tbaa !5
  %532 = load i32, ptr %60, align 4, !tbaa !9
  %533 = load i32, ptr %60, align 4, !tbaa !9
  %534 = load i32, ptr %43, align 4, !tbaa !9
  %535 = mul nsw i32 %533, %534
  %536 = add nsw i32 %532, %535
  %537 = sext i32 %536 to i64
  %538 = getelementptr inbounds %struct.doublecomplex, ptr %531, i64 %537
  call void @zdscal_(ptr noundef %48, ptr noundef %62, ptr noundef %538, ptr noundef @c__1)
  br label %539

539:                                              ; preds = %525
  %540 = load i32, ptr %60, align 4, !tbaa !9
  %541 = add nsw i32 %540, 1
  store i32 %541, ptr %60, align 4, !tbaa !9
  br label %521, !llvm.loop !16

542:                                              ; preds = %521
  br label %562

543:                                              ; preds = %515
  %544 = load ptr, ptr %25, align 8, !tbaa !5
  %545 = load i32, ptr %544, align 4, !tbaa !9
  store i32 %545, ptr %47, align 4, !tbaa !9
  store i32 1, ptr %60, align 4, !tbaa !9
  br label %546

546:                                              ; preds = %558, %543
  %547 = load i32, ptr %60, align 4, !tbaa !9
  %548 = load i32, ptr %47, align 4, !tbaa !9
  %549 = icmp sle i32 %547, %548
  br i1 %549, label %550, label %561

550:                                              ; preds = %546
  %551 = load ptr, ptr %26, align 8, !tbaa !5
  %552 = load i32, ptr %60, align 4, !tbaa !9
  %553 = load i32, ptr %43, align 4, !tbaa !9
  %554 = mul nsw i32 %552, %553
  %555 = add nsw i32 %554, 1
  %556 = sext i32 %555 to i64
  %557 = getelementptr inbounds %struct.doublecomplex, ptr %551, i64 %556
  call void @zdscal_(ptr noundef %60, ptr noundef %62, ptr noundef %557, ptr noundef @c__1)
  br label %558

558:                                              ; preds = %550
  %559 = load i32, ptr %60, align 4, !tbaa !9
  %560 = add nsw i32 %559, 1
  store i32 %560, ptr %60, align 4, !tbaa !9
  br label %546, !llvm.loop !18

561:                                              ; preds = %546
  br label %562

562:                                              ; preds = %561, %542
  %563 = load ptr, ptr %32, align 8, !tbaa !5
  %564 = load double, ptr %563, align 8, !tbaa !11
  %565 = fcmp ogt double %564, 0.000000e+00
  br i1 %565, label %566, label %571

566:                                              ; preds = %562
  %567 = load ptr, ptr %32, align 8, !tbaa !5
  %568 = load double, ptr %567, align 8, !tbaa !11
  %569 = load double, ptr %62, align 8, !tbaa !11
  %570 = fmul double %568, %569
  store double %570, ptr %75, align 8, !tbaa !11
  br label %571

571:                                              ; preds = %566, %562
  %572 = load i32, ptr %73, align 4, !tbaa !9
  %573 = icmp ne i32 %572, 0
  br i1 %573, label %574, label %583

574:                                              ; preds = %571
  %575 = load ptr, ptr %28, align 8, !tbaa !5
  %576 = load double, ptr %575, align 8, !tbaa !11
  %577 = load double, ptr %62, align 8, !tbaa !11
  %578 = fmul double %576, %577
  store double %578, ptr %89, align 8, !tbaa !11
  %579 = load ptr, ptr %29, align 8, !tbaa !5
  %580 = load double, ptr %579, align 8, !tbaa !11
  %581 = load double, ptr %62, align 8, !tbaa !11
  %582 = fmul double %580, %581
  store double %582, ptr %90, align 8, !tbaa !11
  br label %583

583:                                              ; preds = %574, %571
  br label %584

584:                                              ; preds = %583, %512
  store i32 1, ptr %51, align 4, !tbaa !9
  %585 = load i32, ptr %51, align 4, !tbaa !9
  %586 = load ptr, ptr %25, align 8, !tbaa !5
  %587 = load i32, ptr %586, align 4, !tbaa !9
  %588 = add nsw i32 %585, %587
  store i32 %588, ptr %52, align 4, !tbaa !9
  %589 = load i32, ptr %52, align 4, !tbaa !9
  %590 = load ptr, ptr %25, align 8, !tbaa !5
  %591 = load i32, ptr %590, align 4, !tbaa !9
  %592 = add nsw i32 %589, %591
  store i32 %592, ptr %80, align 4, !tbaa !9
  store i32 1, ptr %79, align 4, !tbaa !9
  %593 = load i32, ptr %79, align 4, !tbaa !9
  %594 = load ptr, ptr %25, align 8, !tbaa !5
  %595 = load i32, ptr %594, align 4, !tbaa !9
  %596 = add nsw i32 %593, %595
  store i32 %596, ptr %81, align 4, !tbaa !9
  %597 = load ptr, ptr %38, align 8, !tbaa !5
  %598 = load i32, ptr %597, align 4, !tbaa !9
  %599 = load i32, ptr %81, align 4, !tbaa !9
  %600 = sub nsw i32 %598, %599
  %601 = add nsw i32 %600, 1
  store i32 %601, ptr %83, align 4, !tbaa !9
  %602 = load ptr, ptr %24, align 8, !tbaa !5
  %603 = load ptr, ptr %25, align 8, !tbaa !5
  %604 = load ptr, ptr %26, align 8, !tbaa !5
  %605 = load i32, ptr %44, align 4, !tbaa !9
  %606 = sext i32 %605 to i64
  %607 = getelementptr inbounds %struct.doublecomplex, ptr %604, i64 %606
  %608 = load ptr, ptr %27, align 8, !tbaa !5
  %609 = load ptr, ptr %39, align 8, !tbaa !5
  %610 = load i32, ptr %51, align 4, !tbaa !9
  %611 = sext i32 %610 to i64
  %612 = getelementptr inbounds double, ptr %609, i64 %611
  %613 = load ptr, ptr %39, align 8, !tbaa !5
  %614 = load i32, ptr %52, align 4, !tbaa !9
  %615 = sext i32 %614 to i64
  %616 = getelementptr inbounds double, ptr %613, i64 %615
  %617 = load ptr, ptr %37, align 8, !tbaa !5
  %618 = load i32, ptr %79, align 4, !tbaa !9
  %619 = sext i32 %618 to i64
  %620 = getelementptr inbounds %struct.doublecomplex, ptr %617, i64 %619
  %621 = load ptr, ptr %37, align 8, !tbaa !5
  %622 = load i32, ptr %81, align 4, !tbaa !9
  %623 = sext i32 %622 to i64
  %624 = getelementptr inbounds %struct.doublecomplex, ptr %621, i64 %623
  call void @zhetrd_(ptr noundef %602, ptr noundef %603, ptr noundef %607, ptr noundef %608, ptr noundef %612, ptr noundef %616, ptr noundef %620, ptr noundef %624, ptr noundef %83, ptr noundef %63)
  store i32 0, ptr %57, align 4, !tbaa !9
  %625 = load i32, ptr %70, align 4, !tbaa !9
  %626 = icmp ne i32 %625, 0
  br i1 %626, label %627, label %639

627:                                              ; preds = %584
  %628 = load ptr, ptr %30, align 8, !tbaa !5
  %629 = load i32, ptr %628, align 4, !tbaa !9
  %630 = icmp eq i32 %629, 1
  br i1 %630, label %631, label %638

631:                                              ; preds = %627
  %632 = load ptr, ptr %31, align 8, !tbaa !5
  %633 = load i32, ptr %632, align 4, !tbaa !9
  %634 = load ptr, ptr %25, align 8, !tbaa !5
  %635 = load i32, ptr %634, align 4, !tbaa !9
  %636 = icmp eq i32 %633, %635
  br i1 %636, label %637, label %638

637:                                              ; preds = %631
  store i32 1, ptr %57, align 4, !tbaa !9
  br label %638

638:                                              ; preds = %637, %631, %627
  br label %639

639:                                              ; preds = %638, %584
  %640 = load i32, ptr %69, align 4, !tbaa !9
  %641 = icmp ne i32 %640, 0
  br i1 %641, label %645, label %642

642:                                              ; preds = %639
  %643 = load i32, ptr %57, align 4, !tbaa !9
  %644 = icmp ne i32 %643, 0
  br i1 %644, label %645, label %771

645:                                              ; preds = %642, %639
  %646 = load ptr, ptr %32, align 8, !tbaa !5
  %647 = load double, ptr %646, align 8, !tbaa !11
  %648 = fcmp ole double %647, 0.000000e+00
  br i1 %648, label %649, label %771

649:                                              ; preds = %645
  %650 = load ptr, ptr %25, align 8, !tbaa !5
  %651 = load ptr, ptr %39, align 8, !tbaa !5
  %652 = load i32, ptr %51, align 4, !tbaa !9
  %653 = sext i32 %652 to i64
  %654 = getelementptr inbounds double, ptr %651, i64 %653
  %655 = load ptr, ptr %34, align 8, !tbaa !5
  %656 = getelementptr inbounds double, ptr %655, i64 1
  call void @dcopy_(ptr noundef %650, ptr noundef %654, ptr noundef @c__1, ptr noundef %656, ptr noundef @c__1)
  %657 = load i32, ptr %80, align 4, !tbaa !9
  %658 = load ptr, ptr %25, align 8, !tbaa !5
  %659 = load i32, ptr %658, align 4, !tbaa !9
  %660 = shl i32 %659, 1
  %661 = add nsw i32 %657, %660
  store i32 %661, ptr %61, align 4, !tbaa !9
  %662 = load i32, ptr %66, align 4, !tbaa !9
  %663 = icmp ne i32 %662, 0
  br i1 %663, label %684, label %664

664:                                              ; preds = %649
  %665 = load ptr, ptr %25, align 8, !tbaa !5
  %666 = load i32, ptr %665, align 4, !tbaa !9
  %667 = sub nsw i32 %666, 1
  store i32 %667, ptr %47, align 4, !tbaa !9
  %668 = load ptr, ptr %39, align 8, !tbaa !5
  %669 = load i32, ptr %52, align 4, !tbaa !9
  %670 = sext i32 %669 to i64
  %671 = getelementptr inbounds double, ptr %668, i64 %670
  %672 = load ptr, ptr %39, align 8, !tbaa !5
  %673 = load i32, ptr %61, align 4, !tbaa !9
  %674 = sext i32 %673 to i64
  %675 = getelementptr inbounds double, ptr %672, i64 %674
  call void @dcopy_(ptr noundef %47, ptr noundef %671, ptr noundef @c__1, ptr noundef %675, ptr noundef @c__1)
  %676 = load ptr, ptr %25, align 8, !tbaa !5
  %677 = load ptr, ptr %34, align 8, !tbaa !5
  %678 = getelementptr inbounds double, ptr %677, i64 1
  %679 = load ptr, ptr %39, align 8, !tbaa !5
  %680 = load i32, ptr %61, align 4, !tbaa !9
  %681 = sext i32 %680 to i64
  %682 = getelementptr inbounds double, ptr %679, i64 %681
  %683 = load ptr, ptr %42, align 8, !tbaa !5
  call void @dsterf_(ptr noundef %676, ptr noundef %678, ptr noundef %682, ptr noundef %683)
  br label %761

684:                                              ; preds = %649
  %685 = load ptr, ptr %25, align 8, !tbaa !5
  %686 = load ptr, ptr %25, align 8, !tbaa !5
  %687 = load ptr, ptr %26, align 8, !tbaa !5
  %688 = load i32, ptr %44, align 4, !tbaa !9
  %689 = sext i32 %688 to i64
  %690 = getelementptr inbounds %struct.doublecomplex, ptr %687, i64 %689
  %691 = load ptr, ptr %27, align 8, !tbaa !5
  %692 = load ptr, ptr %35, align 8, !tbaa !5
  %693 = load i32, ptr %46, align 4, !tbaa !9
  %694 = sext i32 %693 to i64
  %695 = getelementptr inbounds %struct.doublecomplex, ptr %692, i64 %694
  %696 = load ptr, ptr %36, align 8, !tbaa !5
  call void @zlacpy_(ptr noundef @.str.2, ptr noundef %685, ptr noundef %686, ptr noundef %690, ptr noundef %691, ptr noundef %695, ptr noundef %696)
  %697 = load ptr, ptr %24, align 8, !tbaa !5
  %698 = load ptr, ptr %25, align 8, !tbaa !5
  %699 = load ptr, ptr %35, align 8, !tbaa !5
  %700 = load i32, ptr %46, align 4, !tbaa !9
  %701 = sext i32 %700 to i64
  %702 = getelementptr inbounds %struct.doublecomplex, ptr %699, i64 %701
  %703 = load ptr, ptr %36, align 8, !tbaa !5
  %704 = load ptr, ptr %37, align 8, !tbaa !5
  %705 = load i32, ptr %79, align 4, !tbaa !9
  %706 = sext i32 %705 to i64
  %707 = getelementptr inbounds %struct.doublecomplex, ptr %704, i64 %706
  %708 = load ptr, ptr %37, align 8, !tbaa !5
  %709 = load i32, ptr %81, align 4, !tbaa !9
  %710 = sext i32 %709 to i64
  %711 = getelementptr inbounds %struct.doublecomplex, ptr %708, i64 %710
  call void @zungtr_(ptr noundef %697, ptr noundef %698, ptr noundef %702, ptr noundef %703, ptr noundef %707, ptr noundef %711, ptr noundef %83, ptr noundef %63)
  %712 = load ptr, ptr %25, align 8, !tbaa !5
  %713 = load i32, ptr %712, align 4, !tbaa !9
  %714 = sub nsw i32 %713, 1
  store i32 %714, ptr %47, align 4, !tbaa !9
  %715 = load ptr, ptr %39, align 8, !tbaa !5
  %716 = load i32, ptr %52, align 4, !tbaa !9
  %717 = sext i32 %716 to i64
  %718 = getelementptr inbounds double, ptr %715, i64 %717
  %719 = load ptr, ptr %39, align 8, !tbaa !5
  %720 = load i32, ptr %61, align 4, !tbaa !9
  %721 = sext i32 %720 to i64
  %722 = getelementptr inbounds double, ptr %719, i64 %721
  call void @dcopy_(ptr noundef %47, ptr noundef %718, ptr noundef @c__1, ptr noundef %722, ptr noundef @c__1)
  %723 = load ptr, ptr %22, align 8, !tbaa !5
  %724 = load ptr, ptr %25, align 8, !tbaa !5
  %725 = load ptr, ptr %34, align 8, !tbaa !5
  %726 = getelementptr inbounds double, ptr %725, i64 1
  %727 = load ptr, ptr %39, align 8, !tbaa !5
  %728 = load i32, ptr %61, align 4, !tbaa !9
  %729 = sext i32 %728 to i64
  %730 = getelementptr inbounds double, ptr %727, i64 %729
  %731 = load ptr, ptr %35, align 8, !tbaa !5
  %732 = load i32, ptr %46, align 4, !tbaa !9
  %733 = sext i32 %732 to i64
  %734 = getelementptr inbounds %struct.doublecomplex, ptr %731, i64 %733
  %735 = load ptr, ptr %36, align 8, !tbaa !5
  %736 = load ptr, ptr %39, align 8, !tbaa !5
  %737 = load i32, ptr %80, align 4, !tbaa !9
  %738 = sext i32 %737 to i64
  %739 = getelementptr inbounds double, ptr %736, i64 %738
  %740 = load ptr, ptr %42, align 8, !tbaa !5
  call void @zsteqr_(ptr noundef %723, ptr noundef %724, ptr noundef %726, ptr noundef %730, ptr noundef %734, ptr noundef %735, ptr noundef %739, ptr noundef %740)
  %741 = load ptr, ptr %42, align 8, !tbaa !5
  %742 = load i32, ptr %741, align 4, !tbaa !9
  %743 = icmp eq i32 %742, 0
  br i1 %743, label %744, label %760

744:                                              ; preds = %684
  %745 = load ptr, ptr %25, align 8, !tbaa !5
  %746 = load i32, ptr %745, align 4, !tbaa !9
  store i32 %746, ptr %47, align 4, !tbaa !9
  store i32 1, ptr %59, align 4, !tbaa !9
  br label %747

747:                                              ; preds = %756, %744
  %748 = load i32, ptr %59, align 4, !tbaa !9
  %749 = load i32, ptr %47, align 4, !tbaa !9
  %750 = icmp sle i32 %748, %749
  br i1 %750, label %751, label %759

751:                                              ; preds = %747
  %752 = load ptr, ptr %41, align 8, !tbaa !5
  %753 = load i32, ptr %59, align 4, !tbaa !9
  %754 = sext i32 %753 to i64
  %755 = getelementptr inbounds i32, ptr %752, i64 %754
  store i32 0, ptr %755, align 4, !tbaa !9
  br label %756

756:                                              ; preds = %751
  %757 = load i32, ptr %59, align 4, !tbaa !9
  %758 = add nsw i32 %757, 1
  store i32 %758, ptr %59, align 4, !tbaa !9
  br label %747, !llvm.loop !19

759:                                              ; preds = %747
  br label %760

760:                                              ; preds = %759, %684
  br label %761

761:                                              ; preds = %760, %664
  %762 = load ptr, ptr %42, align 8, !tbaa !5
  %763 = load i32, ptr %762, align 4, !tbaa !9
  %764 = icmp eq i32 %763, 0
  br i1 %764, label %765, label %769

765:                                              ; preds = %761
  %766 = load ptr, ptr %25, align 8, !tbaa !5
  %767 = load i32, ptr %766, align 4, !tbaa !9
  %768 = load ptr, ptr %33, align 8, !tbaa !5
  store i32 %767, ptr %768, align 4, !tbaa !9
  br label %881

769:                                              ; preds = %761
  %770 = load ptr, ptr %42, align 8, !tbaa !5
  store i32 0, ptr %770, align 4, !tbaa !9
  br label %771

771:                                              ; preds = %769, %645, %642
  %772 = load i32, ptr %66, align 4, !tbaa !9
  %773 = icmp ne i32 %772, 0
  br i1 %773, label %774, label %776

774:                                              ; preds = %771
  %775 = getelementptr inbounds [1 x i8], ptr %64, i64 0, i64 0
  store i8 66, ptr %775, align 1, !tbaa !20
  br label %778

776:                                              ; preds = %771
  %777 = getelementptr inbounds [1 x i8], ptr %64, i64 0, i64 0
  store i8 69, ptr %777, align 1, !tbaa !20
  br label %778

778:                                              ; preds = %776, %774
  store i32 1, ptr %72, align 4, !tbaa !9
  %779 = load i32, ptr %72, align 4, !tbaa !9
  %780 = load ptr, ptr %25, align 8, !tbaa !5
  %781 = load i32, ptr %780, align 4, !tbaa !9
  %782 = add nsw i32 %779, %781
  store i32 %782, ptr %78, align 4, !tbaa !9
  %783 = load i32, ptr %78, align 4, !tbaa !9
  %784 = load ptr, ptr %25, align 8, !tbaa !5
  %785 = load i32, ptr %784, align 4, !tbaa !9
  %786 = add nsw i32 %783, %785
  store i32 %786, ptr %77, align 4, !tbaa !9
  %787 = load ptr, ptr %23, align 8, !tbaa !5
  %788 = getelementptr inbounds [1 x i8], ptr %64, i64 0, i64 0
  %789 = load ptr, ptr %25, align 8, !tbaa !5
  %790 = load ptr, ptr %30, align 8, !tbaa !5
  %791 = load ptr, ptr %31, align 8, !tbaa !5
  %792 = load ptr, ptr %39, align 8, !tbaa !5
  %793 = load i32, ptr %51, align 4, !tbaa !9
  %794 = sext i32 %793 to i64
  %795 = getelementptr inbounds double, ptr %792, i64 %794
  %796 = load ptr, ptr %39, align 8, !tbaa !5
  %797 = load i32, ptr %52, align 4, !tbaa !9
  %798 = sext i32 %797 to i64
  %799 = getelementptr inbounds double, ptr %796, i64 %798
  %800 = load ptr, ptr %33, align 8, !tbaa !5
  %801 = load ptr, ptr %34, align 8, !tbaa !5
  %802 = getelementptr inbounds double, ptr %801, i64 1
  %803 = load ptr, ptr %40, align 8, !tbaa !5
  %804 = load i32, ptr %72, align 4, !tbaa !9
  %805 = sext i32 %804 to i64
  %806 = getelementptr inbounds i32, ptr %803, i64 %805
  %807 = load ptr, ptr %40, align 8, !tbaa !5
  %808 = load i32, ptr %78, align 4, !tbaa !9
  %809 = sext i32 %808 to i64
  %810 = getelementptr inbounds i32, ptr %807, i64 %809
  %811 = load ptr, ptr %39, align 8, !tbaa !5
  %812 = load i32, ptr %80, align 4, !tbaa !9
  %813 = sext i32 %812 to i64
  %814 = getelementptr inbounds double, ptr %811, i64 %813
  %815 = load ptr, ptr %40, align 8, !tbaa !5
  %816 = load i32, ptr %77, align 4, !tbaa !9
  %817 = sext i32 %816 to i64
  %818 = getelementptr inbounds i32, ptr %815, i64 %817
  %819 = load ptr, ptr %42, align 8, !tbaa !5
  call void @dstebz_(ptr noundef %787, ptr noundef %788, ptr noundef %789, ptr noundef %89, ptr noundef %90, ptr noundef %790, ptr noundef %791, ptr noundef %75, ptr noundef %795, ptr noundef %799, ptr noundef %800, ptr noundef %84, ptr noundef %802, ptr noundef %806, ptr noundef %810, ptr noundef %814, ptr noundef %818, ptr noundef %819)
  %820 = load i32, ptr %66, align 4, !tbaa !9
  %821 = icmp ne i32 %820, 0
  br i1 %821, label %822, label %880

822:                                              ; preds = %778
  %823 = load ptr, ptr %25, align 8, !tbaa !5
  %824 = load ptr, ptr %39, align 8, !tbaa !5
  %825 = load i32, ptr %51, align 4, !tbaa !9
  %826 = sext i32 %825 to i64
  %827 = getelementptr inbounds double, ptr %824, i64 %826
  %828 = load ptr, ptr %39, align 8, !tbaa !5
  %829 = load i32, ptr %52, align 4, !tbaa !9
  %830 = sext i32 %829 to i64
  %831 = getelementptr inbounds double, ptr %828, i64 %830
  %832 = load ptr, ptr %33, align 8, !tbaa !5
  %833 = load ptr, ptr %34, align 8, !tbaa !5
  %834 = getelementptr inbounds double, ptr %833, i64 1
  %835 = load ptr, ptr %40, align 8, !tbaa !5
  %836 = load i32, ptr %72, align 4, !tbaa !9
  %837 = sext i32 %836 to i64
  %838 = getelementptr inbounds i32, ptr %835, i64 %837
  %839 = load ptr, ptr %40, align 8, !tbaa !5
  %840 = load i32, ptr %78, align 4, !tbaa !9
  %841 = sext i32 %840 to i64
  %842 = getelementptr inbounds i32, ptr %839, i64 %841
  %843 = load ptr, ptr %35, align 8, !tbaa !5
  %844 = load i32, ptr %46, align 4, !tbaa !9
  %845 = sext i32 %844 to i64
  %846 = getelementptr inbounds %struct.doublecomplex, ptr %843, i64 %845
  %847 = load ptr, ptr %36, align 8, !tbaa !5
  %848 = load ptr, ptr %39, align 8, !tbaa !5
  %849 = load i32, ptr %80, align 4, !tbaa !9
  %850 = sext i32 %849 to i64
  %851 = getelementptr inbounds double, ptr %848, i64 %850
  %852 = load ptr, ptr %40, align 8, !tbaa !5
  %853 = load i32, ptr %77, align 4, !tbaa !9
  %854 = sext i32 %853 to i64
  %855 = getelementptr inbounds i32, ptr %852, i64 %854
  %856 = load ptr, ptr %41, align 8, !tbaa !5
  %857 = getelementptr inbounds i32, ptr %856, i64 1
  %858 = load ptr, ptr %42, align 8, !tbaa !5
  call void @zstein_(ptr noundef %823, ptr noundef %827, ptr noundef %831, ptr noundef %832, ptr noundef %834, ptr noundef %838, ptr noundef %842, ptr noundef %846, ptr noundef %847, ptr noundef %851, ptr noundef %855, ptr noundef %857, ptr noundef %858)
  %859 = load ptr, ptr %24, align 8, !tbaa !5
  %860 = load ptr, ptr %25, align 8, !tbaa !5
  %861 = load ptr, ptr %33, align 8, !tbaa !5
  %862 = load ptr, ptr %26, align 8, !tbaa !5
  %863 = load i32, ptr %44, align 4, !tbaa !9
  %864 = sext i32 %863 to i64
  %865 = getelementptr inbounds %struct.doublecomplex, ptr %862, i64 %864
  %866 = load ptr, ptr %27, align 8, !tbaa !5
  %867 = load ptr, ptr %37, align 8, !tbaa !5
  %868 = load i32, ptr %79, align 4, !tbaa !9
  %869 = sext i32 %868 to i64
  %870 = getelementptr inbounds %struct.doublecomplex, ptr %867, i64 %869
  %871 = load ptr, ptr %35, align 8, !tbaa !5
  %872 = load i32, ptr %46, align 4, !tbaa !9
  %873 = sext i32 %872 to i64
  %874 = getelementptr inbounds %struct.doublecomplex, ptr %871, i64 %873
  %875 = load ptr, ptr %36, align 8, !tbaa !5
  %876 = load ptr, ptr %37, align 8, !tbaa !5
  %877 = load i32, ptr %81, align 4, !tbaa !9
  %878 = sext i32 %877 to i64
  %879 = getelementptr inbounds %struct.doublecomplex, ptr %876, i64 %878
  call void @zunmtr_(ptr noundef @.str, ptr noundef %859, ptr noundef @.str.4, ptr noundef %860, ptr noundef %861, ptr noundef %865, ptr noundef %866, ptr noundef %870, ptr noundef %874, ptr noundef %875, ptr noundef %879, ptr noundef %83, ptr noundef %63)
  br label %880

880:                                              ; preds = %822, %778
  br label %881

881:                                              ; preds = %880, %765
  %882 = load i32, ptr %71, align 4, !tbaa !9
  %883 = icmp eq i32 %882, 1
  br i1 %883, label %884, label %900

884:                                              ; preds = %881
  %885 = load ptr, ptr %42, align 8, !tbaa !5
  %886 = load i32, ptr %885, align 4, !tbaa !9
  %887 = icmp eq i32 %886, 0
  br i1 %887, label %888, label %891

888:                                              ; preds = %884
  %889 = load ptr, ptr %33, align 8, !tbaa !5
  %890 = load i32, ptr %889, align 4, !tbaa !9
  store i32 %890, ptr %54, align 4, !tbaa !9
  br label %895

891:                                              ; preds = %884
  %892 = load ptr, ptr %42, align 8, !tbaa !5
  %893 = load i32, ptr %892, align 4, !tbaa !9
  %894 = sub nsw i32 %893, 1
  store i32 %894, ptr %54, align 4, !tbaa !9
  br label %895

895:                                              ; preds = %891, %888
  %896 = load double, ptr %62, align 8, !tbaa !11
  %897 = fdiv double 1.000000e+00, %896
  store double %897, ptr %49, align 8, !tbaa !11
  %898 = load ptr, ptr %34, align 8, !tbaa !5
  %899 = getelementptr inbounds double, ptr %898, i64 1
  call void @dscal_(ptr noundef %54, ptr noundef %49, ptr noundef %899, ptr noundef @c__1)
  br label %900

900:                                              ; preds = %895, %881
  %901 = load i32, ptr %66, align 4, !tbaa !9
  %902 = icmp ne i32 %901, 0
  br i1 %902, label %903, label %1037

903:                                              ; preds = %900
  %904 = load ptr, ptr %33, align 8, !tbaa !5
  %905 = load i32, ptr %904, align 4, !tbaa !9
  %906 = sub nsw i32 %905, 1
  store i32 %906, ptr %47, align 4, !tbaa !9
  store i32 1, ptr %60, align 4, !tbaa !9
  br label %907

907:                                              ; preds = %1033, %903
  %908 = load i32, ptr %60, align 4, !tbaa !9
  %909 = load i32, ptr %47, align 4, !tbaa !9
  %910 = icmp sle i32 %908, %909
  br i1 %910, label %911, label %1036

911:                                              ; preds = %907
  store i32 0, ptr %59, align 4, !tbaa !9
  %912 = load ptr, ptr %34, align 8, !tbaa !5
  %913 = load i32, ptr %60, align 4, !tbaa !9
  %914 = sext i32 %913 to i64
  %915 = getelementptr inbounds double, ptr %912, i64 %914
  %916 = load double, ptr %915, align 8, !tbaa !11
  store double %916, ptr %91, align 8, !tbaa !11
  %917 = load ptr, ptr %33, align 8, !tbaa !5
  %918 = load i32, ptr %917, align 4, !tbaa !9
  store i32 %918, ptr %48, align 4, !tbaa !9
  %919 = load i32, ptr %60, align 4, !tbaa !9
  %920 = add nsw i32 %919, 1
  store i32 %920, ptr %68, align 4, !tbaa !9
  br label %921

921:                                              ; preds = %941, %911
  %922 = load i32, ptr %68, align 4, !tbaa !9
  %923 = load i32, ptr %48, align 4, !tbaa !9
  %924 = icmp sle i32 %922, %923
  br i1 %924, label %925, label %944

925:                                              ; preds = %921
  %926 = load ptr, ptr %34, align 8, !tbaa !5
  %927 = load i32, ptr %68, align 4, !tbaa !9
  %928 = sext i32 %927 to i64
  %929 = getelementptr inbounds double, ptr %926, i64 %928
  %930 = load double, ptr %929, align 8, !tbaa !11
  %931 = load double, ptr %91, align 8, !tbaa !11
  %932 = fcmp olt double %930, %931
  br i1 %932, label %933, label %940

933:                                              ; preds = %925
  %934 = load i32, ptr %68, align 4, !tbaa !9
  store i32 %934, ptr %59, align 4, !tbaa !9
  %935 = load ptr, ptr %34, align 8, !tbaa !5
  %936 = load i32, ptr %68, align 4, !tbaa !9
  %937 = sext i32 %936 to i64
  %938 = getelementptr inbounds double, ptr %935, i64 %937
  %939 = load double, ptr %938, align 8, !tbaa !11
  store double %939, ptr %91, align 8, !tbaa !11
  br label %940

940:                                              ; preds = %933, %925
  br label %941

941:                                              ; preds = %940
  %942 = load i32, ptr %68, align 4, !tbaa !9
  %943 = add nsw i32 %942, 1
  store i32 %943, ptr %68, align 4, !tbaa !9
  br label %921, !llvm.loop !21

944:                                              ; preds = %921
  %945 = load i32, ptr %59, align 4, !tbaa !9
  %946 = icmp ne i32 %945, 0
  br i1 %946, label %947, label %1032

947:                                              ; preds = %944
  %948 = load ptr, ptr %40, align 8, !tbaa !5
  %949 = load i32, ptr %72, align 4, !tbaa !9
  %950 = load i32, ptr %59, align 4, !tbaa !9
  %951 = add nsw i32 %949, %950
  %952 = sub nsw i32 %951, 1
  %953 = sext i32 %952 to i64
  %954 = getelementptr inbounds i32, ptr %948, i64 %953
  %955 = load i32, ptr %954, align 4, !tbaa !9
  store i32 %955, ptr %58, align 4, !tbaa !9
  %956 = load ptr, ptr %34, align 8, !tbaa !5
  %957 = load i32, ptr %60, align 4, !tbaa !9
  %958 = sext i32 %957 to i64
  %959 = getelementptr inbounds double, ptr %956, i64 %958
  %960 = load double, ptr %959, align 8, !tbaa !11
  %961 = load ptr, ptr %34, align 8, !tbaa !5
  %962 = load i32, ptr %59, align 4, !tbaa !9
  %963 = sext i32 %962 to i64
  %964 = getelementptr inbounds double, ptr %961, i64 %963
  store double %960, ptr %964, align 8, !tbaa !11
  %965 = load ptr, ptr %40, align 8, !tbaa !5
  %966 = load i32, ptr %72, align 4, !tbaa !9
  %967 = load i32, ptr %60, align 4, !tbaa !9
  %968 = add nsw i32 %966, %967
  %969 = sub nsw i32 %968, 1
  %970 = sext i32 %969 to i64
  %971 = getelementptr inbounds i32, ptr %965, i64 %970
  %972 = load i32, ptr %971, align 4, !tbaa !9
  %973 = load ptr, ptr %40, align 8, !tbaa !5
  %974 = load i32, ptr %72, align 4, !tbaa !9
  %975 = load i32, ptr %59, align 4, !tbaa !9
  %976 = add nsw i32 %974, %975
  %977 = sub nsw i32 %976, 1
  %978 = sext i32 %977 to i64
  %979 = getelementptr inbounds i32, ptr %973, i64 %978
  store i32 %972, ptr %979, align 4, !tbaa !9
  %980 = load double, ptr %91, align 8, !tbaa !11
  %981 = load ptr, ptr %34, align 8, !tbaa !5
  %982 = load i32, ptr %60, align 4, !tbaa !9
  %983 = sext i32 %982 to i64
  %984 = getelementptr inbounds double, ptr %981, i64 %983
  store double %980, ptr %984, align 8, !tbaa !11
  %985 = load i32, ptr %58, align 4, !tbaa !9
  %986 = load ptr, ptr %40, align 8, !tbaa !5
  %987 = load i32, ptr %72, align 4, !tbaa !9
  %988 = load i32, ptr %60, align 4, !tbaa !9
  %989 = add nsw i32 %987, %988
  %990 = sub nsw i32 %989, 1
  %991 = sext i32 %990 to i64
  %992 = getelementptr inbounds i32, ptr %986, i64 %991
  store i32 %985, ptr %992, align 4, !tbaa !9
  %993 = load ptr, ptr %25, align 8, !tbaa !5
  %994 = load ptr, ptr %35, align 8, !tbaa !5
  %995 = load i32, ptr %59, align 4, !tbaa !9
  %996 = load i32, ptr %45, align 4, !tbaa !9
  %997 = mul nsw i32 %995, %996
  %998 = add nsw i32 %997, 1
  %999 = sext i32 %998 to i64
  %1000 = getelementptr inbounds %struct.doublecomplex, ptr %994, i64 %999
  %1001 = load ptr, ptr %35, align 8, !tbaa !5
  %1002 = load i32, ptr %60, align 4, !tbaa !9
  %1003 = load i32, ptr %45, align 4, !tbaa !9
  %1004 = mul nsw i32 %1002, %1003
  %1005 = add nsw i32 %1004, 1
  %1006 = sext i32 %1005 to i64
  %1007 = getelementptr inbounds %struct.doublecomplex, ptr %1001, i64 %1006
  call void @zswap_(ptr noundef %993, ptr noundef %1000, ptr noundef @c__1, ptr noundef %1007, ptr noundef @c__1)
  %1008 = load ptr, ptr %42, align 8, !tbaa !5
  %1009 = load i32, ptr %1008, align 4, !tbaa !9
  %1010 = icmp ne i32 %1009, 0
  br i1 %1010, label %1011, label %1031

1011:                                             ; preds = %947
  %1012 = load ptr, ptr %41, align 8, !tbaa !5
  %1013 = load i32, ptr %59, align 4, !tbaa !9
  %1014 = sext i32 %1013 to i64
  %1015 = getelementptr inbounds i32, ptr %1012, i64 %1014
  %1016 = load i32, ptr %1015, align 4, !tbaa !9
  store i32 %1016, ptr %58, align 4, !tbaa !9
  %1017 = load ptr, ptr %41, align 8, !tbaa !5
  %1018 = load i32, ptr %60, align 4, !tbaa !9
  %1019 = sext i32 %1018 to i64
  %1020 = getelementptr inbounds i32, ptr %1017, i64 %1019
  %1021 = load i32, ptr %1020, align 4, !tbaa !9
  %1022 = load ptr, ptr %41, align 8, !tbaa !5
  %1023 = load i32, ptr %59, align 4, !tbaa !9
  %1024 = sext i32 %1023 to i64
  %1025 = getelementptr inbounds i32, ptr %1022, i64 %1024
  store i32 %1021, ptr %1025, align 4, !tbaa !9
  %1026 = load i32, ptr %58, align 4, !tbaa !9
  %1027 = load ptr, ptr %41, align 8, !tbaa !5
  %1028 = load i32, ptr %60, align 4, !tbaa !9
  %1029 = sext i32 %1028 to i64
  %1030 = getelementptr inbounds i32, ptr %1027, i64 %1029
  store i32 %1026, ptr %1030, align 4, !tbaa !9
  br label %1031

1031:                                             ; preds = %1011, %947
  br label %1032

1032:                                             ; preds = %1031, %944
  br label %1033

1033:                                             ; preds = %1032
  %1034 = load i32, ptr %60, align 4, !tbaa !9
  %1035 = add nsw i32 %1034, 1
  store i32 %1035, ptr %60, align 4, !tbaa !9
  br label %907, !llvm.loop !22

1036:                                             ; preds = %907
  br label %1037

1037:                                             ; preds = %1036, %900
  %1038 = load i32, ptr %86, align 4, !tbaa !9
  %1039 = sitofp i32 %1038 to double
  %1040 = load ptr, ptr %37, align 8, !tbaa !5
  %1041 = getelementptr inbounds %struct.doublecomplex, ptr %1040, i64 1
  %1042 = getelementptr inbounds %struct.doublecomplex, ptr %1041, i32 0, i32 0
  store double %1039, ptr %1042, align 8, !tbaa !13
  %1043 = load ptr, ptr %37, align 8, !tbaa !5
  %1044 = getelementptr inbounds %struct.doublecomplex, ptr %1043, i64 1
  %1045 = getelementptr inbounds %struct.doublecomplex, ptr %1044, i32 0, i32 1
  store double 0.000000e+00, ptr %1045, align 8, !tbaa !15
  store i32 1, ptr %92, align 4
  br label %1046

1046:                                             ; preds = %1037, %447, %367, %360, %352
  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 8, ptr %88) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %87) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %86) #4
  call void @llvm.lifetime.end.p0(i64 8, 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 4, ptr %78) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %77) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %76) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #4
  call void @llvm.lifetime.end.p0(i64 8, 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 1, ptr %64) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %63) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %61) #4
  call void @llvm.lifetime.end.p0(i64 4, 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 8, ptr %56) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %54) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #4
  ret void
}

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

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

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

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

declare double @dlamch_(ptr noundef) #2

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

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

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

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

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

declare void @zsteqr_(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 @zstein_(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 @zunmtr_(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 @dscal_(ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

declare void @zswap_(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 = !{!14, !12, i64 0}
!14 = !{!"", !12, i64 0, !12, i64 8}
!15 = !{!14, !12, i64 8}
!16 = distinct !{!16, !17}
!17 = !{!"llvm.loop.mustprogress"}
!18 = distinct !{!18, !17}
!19 = distinct !{!19, !17}
!20 = !{!7, !7, i64 0}
!21 = distinct !{!21, !17}
!22 = distinct !{!22, !17}


; 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"

%struct.doublecomplex = type { double, double }

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

; Function Attrs: nounwind uwtable
define dso_local void @zheevx_(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, ptr noundef %20) local_unnamed_addr #0 {
  %22 = alloca i32, align 4
  %23 = alloca i32, align 4
  %24 = alloca double, align 8
  %25 = alloca i32, align 4
  %26 = alloca i32, align 4
  %27 = alloca double, align 8
  %28 = alloca i32, align 4
  %29 = alloca [1 x i8], align 1
  %30 = alloca double, align 8
  %31 = alloca i32, align 4
  %32 = alloca i32, align 4
  %33 = alloca double, align 8
  %34 = alloca double, align 8
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %22) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %23) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %24) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %25) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %26) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %27) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %28) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %29) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %30) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %31) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %32) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %33) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %34) #6
  %35 = load i32, ptr %5, align 4, !tbaa !5
  %36 = add i32 %35, 1
  %narrow = xor i32 %35, -1
  %37 = sext i32 %narrow to i64
  %38 = getelementptr inbounds %struct.doublecomplex, ptr %4, i64 %37
  %39 = getelementptr inbounds i8, ptr %12, i64 -8
  %40 = load i32, ptr %14, align 4, !tbaa !5
  %41 = add nsw i32 %40, 1
  %narrow402 = xor i32 %40, -1
  %42 = sext i32 %narrow402 to i64
  %43 = getelementptr inbounds %struct.doublecomplex, ptr %13, i64 %42
  %44 = getelementptr inbounds i8, ptr %15, i64 -16
  %45 = getelementptr inbounds i8, ptr %17, i64 -8
  %46 = getelementptr inbounds i8, ptr %18, i64 -4
  %47 = getelementptr inbounds i8, ptr %19, 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 %20, align 4, !tbaa !5
  %.not = icmp ne i32 %49, 0
  br i1 %.not, label %57, label %55

55:                                               ; preds = %21
  %56 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.4) #6
  %.not381 = icmp eq i32 %56, 0
  br i1 %.not381, label %.thread415.sink.split, label %57

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

61:                                               ; preds = %57
  %.not382 = icmp eq i32 %48, 0
  br i1 %.not382, label %62, label %64

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

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

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

70:                                               ; preds = %67
  br i1 %59, label %71, label %76

71:                                               ; preds = %70
  %.not429 = icmp eq i32 %65, 0
  br i1 %.not429, label %85, label %72

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

76:                                               ; preds = %70
  br i1 %60, label %77, label %85

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

81:                                               ; preds = %77
  %82 = load i32, ptr %9, align 4, !tbaa !5
  %. = tail call i32 @llvm.umin.i32(i32 %65, i32 %78)
  %83 = icmp slt i32 %82, %.
  %84 = icmp ugt i32 %82, %65
  %or.cond428 = or i1 %83, %84
  br i1 %or.cond428, label %.thread415.sink.split, label %85

85:                                               ; preds = %81, %72, %71, %76
  %.pr = load i32, ptr %20, align 4, !tbaa !5
  %86 = icmp eq i32 %.pr, 0
  br i1 %86, label %87, label %.thread415

87:                                               ; preds = %85
  %88 = load i32, ptr %14, align 4, !tbaa !5
  %89 = icmp slt i32 %88, 1
  %90 = icmp ult i32 %88, %65
  %or.cond463 = and i1 %.not, %90
  %or.cond467 = or i1 %89, %or.cond463
  br i1 %or.cond467, label %.thread415.sink.split, label %.thread

.thread:                                          ; preds = %87
  %91 = icmp ult i32 %65, 2
  br i1 %91, label %102, label %92

92:                                               ; preds = %.thread
  %93 = shl nuw i32 %65, 1
  %94 = tail call i32 @ilaenv_(ptr noundef nonnull @c__1, ptr noundef nonnull @.str.6, ptr noundef %2, ptr noundef nonnull %3, ptr noundef nonnull @c_n1, ptr noundef nonnull @c_n1, ptr noundef nonnull @c_n1, i32 noundef 6, i32 noundef 1) #6
  %95 = tail call i32 @ilaenv_(ptr noundef nonnull @c__1, ptr noundef nonnull @.str.7, ptr noundef %2, ptr noundef nonnull %3, ptr noundef nonnull @c_n1, ptr noundef nonnull @c_n1, ptr noundef nonnull @c_n1, i32 noundef 6, i32 noundef 1) #6
  %96 = tail call i32 @llvm.smax.i32(i32 %94, i32 %95)
  store i32 1, ptr %22, align 4, !tbaa !5
  %97 = add nsw i32 %96, 1
  %98 = load i32, ptr %3, align 4, !tbaa !5
  %99 = mul nsw i32 %97, %98
  store i32 %99, ptr %23, align 4, !tbaa !5
  %100 = tail call i32 @llvm.smax.i32(i32 %99, i32 1)
  %101 = uitofp nneg i32 %100 to double
  br label %102

102:                                              ; preds = %.thread, %92
  %.sink = phi double [ %101, %92 ], [ 1.000000e+00, %.thread ]
  %.0356 = phi i32 [ %93, %92 ], [ 1, %.thread ]
  %.0354 = phi i32 [ %100, %92 ], [ undef, %.thread ]
  store double %.sink, ptr %15, align 8
  %103 = getelementptr inbounds i8, ptr %15, i64 8
  store double 0.000000e+00, ptr %103, align 8
  %104 = load i32, ptr %16, align 4, !tbaa !5
  %105 = icmp sge i32 %104, %.0356
  %or.cond5 = select i1 %105, i1 true, i1 %54
  br i1 %or.cond5, label %.thread410, label %.thread415.sink.split

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

.thread415.sink.split:                            ; preds = %102, %87, %81, %77, %72, %67, %64, %62, %57, %55
  %.sink464 = phi i32 [ -1, %55 ], [ -2, %57 ], [ -3, %62 ], [ -4, %64 ], [ -6, %67 ], [ -8, %72 ], [ -9, %77 ], [ -10, %81 ], [ -15, %87 ], [ -17, %102 ]
  store i32 %.sink464, ptr %20, align 4, !tbaa !5
  br label %.thread415

.thread415:                                       ; preds = %.thread415.sink.split, %85, %.thread410
  %106 = phi i32 [ %.pr412.pr, %.thread410 ], [ %.pr, %85 ], [ %.sink464, %.thread415.sink.split ]
  %107 = sub nsw i32 0, %106
  store i32 %107, ptr %22, align 4, !tbaa !5
  %108 = call i32 @xerbla_(ptr noundef nonnull @.str.8, ptr noundef nonnull %22, i32 noundef 6) #6
  br label %296

109:                                              ; preds = %.thread410
  br i1 %54, label %296, label %110

110:                                              ; preds = %109
  store i32 0, ptr %11, align 4, !tbaa !5
  %111 = load i32, ptr %3, align 4, !tbaa !5
  switch i32 %111, label %131 [
    i32 0, label %296
    i32 1, label %112
  ]

112:                                              ; preds = %110
  %or.cond7 = select i1 %58, i1 true, i1 %60
  br i1 %or.cond7, label %113, label %115

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

115:                                              ; preds = %112
  %.not401 = icmp eq i32 %51, 0
  br i1 %.not401, label %127, label %116

116:                                              ; preds = %115
  %117 = load double, ptr %6, align 8, !tbaa !9
  %118 = sext i32 %36 to i64
  %119 = getelementptr inbounds %struct.doublecomplex, ptr %38, i64 %118
  %120 = load double, ptr %119, align 8, !tbaa !11
  %121 = fcmp olt double %117, %120
  br i1 %121, label %122, label %127

122:                                              ; preds = %116
  %123 = load double, ptr %7, align 8, !tbaa !9
  %124 = load double, ptr %4, align 8, !tbaa !11
  %125 = fcmp ult double %123, %124
  br i1 %125, label %127, label %126

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

.sink.split:                                      ; preds = %113, %126
  %.sink465 = phi double [ %124, %126 ], [ %114, %113 ]
  store double %.sink465, ptr %12, align 8, !tbaa !9
  br label %127

127:                                              ; preds = %.sink.split, %115, %122, %116
  br i1 %.not, label %128, label %296

128:                                              ; preds = %127
  store double 1.000000e+00, ptr %13, align 8, !tbaa !11
  %129 = sext i32 %41 to i64
  %130 = getelementptr inbounds %struct.doublecomplex, ptr %43, i64 %129, i32 1
  store double 0.000000e+00, ptr %130, align 8, !tbaa !13
  br label %296

131:                                              ; preds = %110
  %132 = tail call double @dlamch_(ptr noundef nonnull @.str.9) #6
  %133 = tail call double @dlamch_(ptr noundef nonnull @.str.10) #6
  %134 = fdiv double %132, %133
  %135 = fdiv double 1.000000e+00, %134
  %136 = tail call double @sqrt(double noundef %134) #6
  %137 = tail call double @sqrt(double noundef %135) #6
  store double %137, ptr %24, align 8, !tbaa !9
  %138 = tail call double @sqrt(double noundef %132) #6
  %139 = tail call double @sqrt(double noundef %138) #6
  %140 = fdiv double 1.000000e+00, %139
  %141 = fcmp ole double %137, %140
  %142 = select i1 %141, double %137, double %140
  %143 = load double, ptr %10, align 8, !tbaa !9
  store double %143, ptr %30, align 8, !tbaa !9
  %.not387 = icmp eq i32 %51, 0
  br i1 %.not387, label %147, label %144

144:                                              ; preds = %131
  %145 = load double, ptr %6, align 8, !tbaa !9
  store double %145, ptr %33, align 8, !tbaa !9
  %146 = load double, ptr %7, align 8, !tbaa !9
  store double %146, ptr %34, align 8, !tbaa !9
  br label %147

147:                                              ; preds = %144, %131
  %148 = tail call double @zlanhe_(ptr noundef nonnull @.str.11, ptr noundef %2, ptr noundef nonnull %3, ptr noundef %4, ptr noundef nonnull %5, ptr noundef %17) #6
  %149 = fcmp ogt double %148, 0.000000e+00
  %150 = fcmp olt double %148, %136
  %or.cond404 = select i1 %149, i1 %150, i1 false
  br i1 %or.cond404, label %153, label %151

151:                                              ; preds = %147
  %152 = fcmp ogt double %148, %142
  br i1 %152, label %153, label %182

153:                                              ; preds = %151, %147
  %.pn = phi double [ %136, %147 ], [ %142, %151 ]
  %storemerge430 = fdiv double %.pn, %148
  store double %storemerge430, ptr %27, align 8, !tbaa !9
  %154 = load i32, ptr %3, align 4, !tbaa !5
  store i32 %154, ptr %22, align 4, !tbaa !5
  br i1 %.not382, label %164, label %155

155:                                              ; preds = %153
  store i32 1, ptr %26, align 4, !tbaa !5
  %.not391434 = icmp slt i32 %154, 1
  br i1 %.not391434, label %.loopexit432, label %.lr.ph

.lr.ph:                                           ; preds = %155, %.lr.ph
  %storemerge390435 = phi i32 [ %162, %.lr.ph ], [ 1, %155 ]
  %156 = load i32, ptr %3, align 4, !tbaa !5
  %reass.sub = sub i32 %156, %storemerge390435
  %157 = add i32 %reass.sub, 1
  store i32 %157, ptr %23, align 4, !tbaa !5
  %158 = mul i32 %storemerge390435, %36
  %159 = sext i32 %158 to i64
  %160 = getelementptr inbounds %struct.doublecomplex, ptr %38, i64 %159
  call void @zdscal_(ptr noundef nonnull %23, ptr noundef nonnull %27, ptr noundef %160, ptr noundef nonnull @c__1) #6
  %161 = load i32, ptr %26, align 4, !tbaa !5
  %162 = add nsw i32 %161, 1
  store i32 %162, ptr %26, align 4, !tbaa !5
  %163 = load i32, ptr %22, align 4, !tbaa !5
  %.not391.not = icmp slt i32 %161, %163
  br i1 %.not391.not, label %.lr.ph, label %.loopexit432, !llvm.loop !14

164:                                              ; preds = %153
  %invariant.gep = getelementptr i8, ptr %38, i64 16
  store i32 1, ptr %26, align 4, !tbaa !5
  %.not389436 = icmp slt i32 %154, 1
  br i1 %.not389436, label %.loopexit432, label %.lr.ph438

.lr.ph438:                                        ; preds = %164, %.lr.ph438
  %storemerge437 = phi i32 [ %168, %.lr.ph438 ], [ 1, %164 ]
  %165 = mul nsw i32 %storemerge437, %35
  %166 = sext i32 %165 to i64
  %gep = getelementptr %struct.doublecomplex, ptr %invariant.gep, i64 %166
  call void @zdscal_(ptr noundef nonnull %26, ptr noundef nonnull %27, ptr noundef %gep, ptr noundef nonnull @c__1) #6
  %167 = load i32, ptr %26, align 4, !tbaa !5
  %168 = add nsw i32 %167, 1
  store i32 %168, ptr %26, align 4, !tbaa !5
  %169 = load i32, ptr %22, align 4, !tbaa !5
  %.not389.not = icmp slt i32 %167, %169
  br i1 %.not389.not, label %.lr.ph438, label %.loopexit432, !llvm.loop !16

.loopexit432:                                     ; preds = %.lr.ph, %.lr.ph438, %155, %164
  %170 = load double, ptr %10, align 8, !tbaa !9
  %171 = fcmp ogt double %170, 0.000000e+00
  br i1 %171, label %172, label %175

172:                                              ; preds = %.loopexit432
  %173 = load double, ptr %27, align 8, !tbaa !9
  %174 = fmul double %170, %173
  store double %174, ptr %30, align 8, !tbaa !9
  br label %175

175:                                              ; preds = %172, %.loopexit432
  br i1 %.not387, label %182, label %176

176:                                              ; preds = %175
  %177 = load double, ptr %6, align 8, !tbaa !9
  %178 = load double, ptr %27, align 8, !tbaa !9
  %179 = fmul double %177, %178
  store double %179, ptr %33, align 8, !tbaa !9
  %180 = load double, ptr %7, align 8, !tbaa !9
  %181 = fmul double %178, %180
  store double %181, ptr %34, align 8, !tbaa !9
  br label %182

182:                                              ; preds = %151, %175, %176
  %183 = phi i1 [ true, %175 ], [ true, %176 ], [ false, %151 ]
  %184 = load i32, ptr %3, align 4, !tbaa !5
  %185 = add nsw i32 %184, 1
  %186 = add nsw i32 %185, %184
  %187 = load i32, ptr %16, align 4, !tbaa !5
  %188 = sub i32 %187, %184
  store i32 %188, ptr %31, align 4, !tbaa !5
  %189 = sext i32 %185 to i64
  %190 = getelementptr inbounds double, ptr %45, i64 %189
  %191 = getelementptr inbounds %struct.doublecomplex, ptr %44, i64 %189
  call void @zhetrd_(ptr noundef %2, ptr noundef nonnull %3, ptr noundef %4, ptr noundef nonnull %5, ptr noundef %17, ptr noundef nonnull %190, ptr noundef nonnull %15, ptr noundef nonnull %191, ptr noundef nonnull %31, ptr noundef nonnull %28) #6
  %.not392 = icmp eq i32 %52, 0
  br i1 %.not392, label %199, label %192

192:                                              ; preds = %182
  %193 = load i32, ptr %8, align 4, !tbaa !5
  %194 = icmp eq i32 %193, 1
  br i1 %194, label %195, label %199

195:                                              ; preds = %192
  %196 = load i32, ptr %9, align 4, !tbaa !5
  %197 = load i32, ptr %3, align 4, !tbaa !5
  %198 = icmp eq i32 %196, %197
  br label %199

199:                                              ; preds = %195, %192, %182
  %200 = phi i1 [ false, %192 ], [ false, %182 ], [ %198, %195 ]
  %or.cond9 = or i1 %58, %200
  br i1 %or.cond9, label %201, label %228

201:                                              ; preds = %199
  %202 = load double, ptr %10, align 8, !tbaa !9
  %203 = fcmp ugt double %202, 0.000000e+00
  br i1 %203, label %228, label %204

204:                                              ; preds = %201
  call void @dcopy_(ptr noundef nonnull %3, ptr noundef %17, ptr noundef nonnull @c__1, ptr noundef %12, ptr noundef nonnull @c__1) #6
  %205 = load i32, ptr %3, align 4, !tbaa !5
  %206 = shl i32 %205, 1
  %207 = add nsw i32 %206, %186
  br i1 %.not, label %212, label %208

208:                                              ; preds = %204
  %209 = add nsw i32 %205, -1
  store i32 %209, ptr %22, align 4, !tbaa !5
  %210 = sext i32 %207 to i64
  %211 = getelementptr inbounds double, ptr %45, i64 %210
  call void @dcopy_(ptr noundef nonnull %22, ptr noundef nonnull %190, ptr noundef nonnull @c__1, ptr noundef nonnull %211, ptr noundef nonnull @c__1) #6
  call void @dsterf_(ptr noundef nonnull %3, ptr noundef %12, ptr noundef nonnull %211, ptr noundef nonnull %20) #6
  br label %.loopexit431

212:                                              ; preds = %204
  call void @zlacpy_(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 @zungtr_(ptr noundef %2, ptr noundef nonnull %3, ptr noundef %13, ptr noundef nonnull %14, ptr noundef nonnull %15, ptr noundef nonnull %191, ptr noundef nonnull %31, ptr noundef nonnull %28) #6
  %213 = load i32, ptr %3, align 4, !tbaa !5
  %214 = add nsw i32 %213, -1
  store i32 %214, ptr %22, align 4, !tbaa !5
  %215 = sext i32 %207 to i64
  %216 = getelementptr inbounds double, ptr %45, i64 %215
  call void @dcopy_(ptr noundef nonnull %22, ptr noundef nonnull %190, ptr noundef nonnull @c__1, ptr noundef nonnull %216, ptr noundef nonnull @c__1) #6
  %217 = sext i32 %186 to i64
  %218 = getelementptr inbounds double, ptr %45, i64 %217
  call void @zsteqr_(ptr noundef %0, ptr noundef nonnull %3, ptr noundef %12, ptr noundef nonnull %216, ptr noundef %13, ptr noundef nonnull %14, ptr noundef nonnull %218, ptr noundef nonnull %20) #6
  %219 = load i32, ptr %20, align 4, !tbaa !5
  %220 = icmp eq i32 %219, 0
  br i1 %220, label %221, label %.thread422

221:                                              ; preds = %212
  %222 = load i32, ptr %3, align 4, !tbaa !5
  store i32 %222, ptr %22, align 4, !tbaa !5
  %.not393439 = icmp slt i32 %222, 1
  br i1 %.not393439, label %.loopexit431, label %.lr.ph441.preheader

.lr.ph441.preheader:                              ; preds = %221
  %223 = zext nneg i32 %222 to i64
  %224 = shl nuw nsw i64 %223, 2
  call void @llvm.memset.p0.i64(ptr align 4 %19, i8 0, i64 %224, i1 false), !tbaa !5
  br label %.loopexit431

.loopexit431:                                     ; preds = %.lr.ph441.preheader, %221, %208
  %.pr421 = load i32, ptr %20, align 4, !tbaa !5
  %225 = icmp eq i32 %.pr421, 0
  br i1 %225, label %226, label %.thread422

226:                                              ; preds = %.loopexit431
  %227 = load i32, ptr %3, align 4, !tbaa !5
  store i32 %227, ptr %11, align 4, !tbaa !5
  br label %239

.thread422:                                       ; preds = %212, %.loopexit431
  store i32 0, ptr %20, align 4, !tbaa !5
  br label %228

228:                                              ; preds = %199, %.thread422, %201
  %.406 = select i1 %.not, i8 66, i8 69
  store i8 %.406, ptr %29, align 1, !tbaa !17
  %229 = load i32, ptr %3, align 4, !tbaa !5
  %230 = add nsw i32 %229, 1
  %231 = add nsw i32 %230, %229
  %232 = sext i32 %230 to i64
  %233 = getelementptr inbounds i32, ptr %46, i64 %232
  %234 = sext i32 %186 to i64
  %235 = getelementptr inbounds double, ptr %45, i64 %234
  %236 = sext i32 %231 to i64
  %237 = getelementptr inbounds i32, ptr %46, i64 %236
  call void @dstebz_(ptr noundef %1, ptr noundef nonnull %29, ptr noundef nonnull %3, ptr noundef nonnull %33, ptr noundef nonnull %34, ptr noundef %8, ptr noundef %9, ptr noundef nonnull %30, ptr noundef %17, ptr noundef nonnull %190, ptr noundef nonnull %11, ptr noundef nonnull %32, ptr noundef %12, ptr noundef %18, ptr noundef nonnull %233, ptr noundef nonnull %235, ptr noundef nonnull %237, ptr noundef nonnull %20) #6
  br i1 %.not, label %238, label %239

238:                                              ; preds = %228
  call void @zstein_(ptr noundef nonnull %3, ptr noundef %17, ptr noundef nonnull %190, ptr noundef nonnull %11, ptr noundef %12, ptr noundef %18, ptr noundef nonnull %233, ptr noundef %13, ptr noundef nonnull %14, ptr noundef nonnull %235, ptr noundef nonnull %237, ptr noundef %19, ptr noundef nonnull %20) #6
  call void @zunmtr_(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 %191, ptr noundef nonnull %31, ptr noundef nonnull %28) #6
  br label %239

239:                                              ; preds = %228, %238, %226
  br i1 %183, label %240, label %250

240:                                              ; preds = %239
  %241 = load i32, ptr %20, align 4, !tbaa !5
  %242 = icmp eq i32 %241, 0
  br i1 %242, label %243, label %245

243:                                              ; preds = %240
  %244 = load i32, ptr %11, align 4, !tbaa !5
  br label %247

245:                                              ; preds = %240
  %246 = add nsw i32 %241, -1
  br label %247

247:                                              ; preds = %245, %243
  %storemerge395 = phi i32 [ %246, %245 ], [ %244, %243 ]
  store i32 %storemerge395, ptr %25, align 4, !tbaa !5
  %248 = load double, ptr %27, align 8, !tbaa !9
  %249 = fdiv double 1.000000e+00, %248
  store double %249, ptr %24, align 8, !tbaa !9
  call void @dscal_(ptr noundef nonnull %25, ptr noundef nonnull %24, ptr noundef %12, ptr noundef nonnull @c__1) #6
  br label %250

250:                                              ; preds = %247, %239
  br i1 %.not, label %251, label %.loopexit

251:                                              ; preds = %250
  %252 = load i32, ptr %11, align 4, !tbaa !5
  %253 = add nsw i32 %252, -1
  store i32 %253, ptr %22, align 4, !tbaa !5
  %invariant.gep448 = getelementptr i8, ptr %43, i64 16
  store i32 1, ptr %26, align 4, !tbaa !5
  %.not397452 = icmp slt i32 %252, 2
  br i1 %.not397452, label %.loopexit, label %.lr.ph455

.lr.ph455:                                        ; preds = %251, %._crit_edge.thread
  %storemerge396453 = phi i32 [ %293, %._crit_edge.thread ], [ 1, %251 ]
  %254 = sext i32 %storemerge396453 to i64
  %255 = getelementptr inbounds double, ptr %39, i64 %254
  %256 = load double, ptr %255, align 8, !tbaa !9
  %257 = load i32, ptr %11, align 4, !tbaa !5
  store i32 %257, ptr %23, align 4, !tbaa !5
  %.not398.not442 = icmp slt i32 %storemerge396453, %257
  br i1 %.not398.not442, label %.lr.ph446.preheader, label %._crit_edge.thread

.lr.ph446.preheader:                              ; preds = %.lr.ph455
  %wide.trip.count = sext i32 %257 to i64
  %258 = sub nsw i64 %wide.trip.count, %254
  %xtraiter = and i64 %258, 1
  %259 = add nsw i64 %wide.trip.count, -1
  %260 = icmp eq i64 %259, %254
  br i1 %260, label %._crit_edge.unr-lcssa, label %.lr.ph446.preheader.new

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

.lr.ph446:                                        ; preds = %.lr.ph446, %.lr.ph446.preheader.new
  %indvars.iv = phi i64 [ %254, %.lr.ph446.preheader.new ], [ %indvars.iv.next.1, %.lr.ph446 ]
  %.0445 = phi double [ %256, %.lr.ph446.preheader.new ], [ %.1.1, %.lr.ph446 ]
  %.1359444 = phi i32 [ 0, %.lr.ph446.preheader.new ], [ %.2.1, %.lr.ph446 ]
  %niter = phi i64 [ 0, %.lr.ph446.preheader.new ], [ %niter.next.1, %.lr.ph446 ]
  %indvars.iv.next = add nsw i64 %indvars.iv, 1
  %261 = getelementptr double, ptr %12, i64 %indvars.iv
  %262 = load double, ptr %261, align 8, !tbaa !9
  %263 = fcmp olt double %262, %.0445
  %264 = trunc nsw i64 %indvars.iv.next to i32
  %.2 = select i1 %263, i32 %264, i32 %.1359444
  %.1 = select i1 %263, double %262, double %.0445
  %indvars.iv.next.1 = add nsw i64 %indvars.iv, 2
  %265 = getelementptr double, ptr %12, i64 %indvars.iv.next
  %266 = load double, ptr %265, align 8, !tbaa !9
  %267 = fcmp olt double %266, %.1
  %268 = trunc nsw i64 %indvars.iv.next.1 to i32
  %.2.1 = select i1 %267, i32 %268, i32 %.2
  %.1.1 = select i1 %267, double %266, 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.ph446, !llvm.loop !18

._crit_edge.unr-lcssa:                            ; preds = %.lr.ph446, %.lr.ph446.preheader
  %.2.lcssa.ph = phi i32 [ poison, %.lr.ph446.preheader ], [ %.2.1, %.lr.ph446 ]
  %.1.lcssa.ph = phi double [ poison, %.lr.ph446.preheader ], [ %.1.1, %.lr.ph446 ]
  %indvars.iv.unr = phi i64 [ %254, %.lr.ph446.preheader ], [ %indvars.iv.next.1, %.lr.ph446 ]
  %.0445.unr = phi double [ %256, %.lr.ph446.preheader ], [ %.1.1, %.lr.ph446 ]
  %.1359444.unr = phi i32 [ 0, %.lr.ph446.preheader ], [ %.2.1, %.lr.ph446 ]
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %._crit_edge, label %.lr.ph446.epil

.lr.ph446.epil:                                   ; preds = %._crit_edge.unr-lcssa
  %269 = getelementptr double, ptr %12, i64 %indvars.iv.unr
  %270 = load double, ptr %269, align 8, !tbaa !9
  %271 = fcmp olt double %270, %.0445.unr
  %272 = trunc i64 %indvars.iv.unr to i32
  %273 = add i32 %272, 1
  %.2.epil = select i1 %271, i32 %273, i32 %.1359444.unr
  %.1.epil = select i1 %271, double %270, double %.0445.unr
  br label %._crit_edge

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

274:                                              ; preds = %._crit_edge
  %275 = sext i32 %.2.lcssa to i64
  %276 = getelementptr inbounds i32, ptr %46, i64 %275
  %277 = load i32, ptr %276, align 4, !tbaa !5
  %278 = getelementptr inbounds double, ptr %39, i64 %275
  store double %256, ptr %278, align 8, !tbaa !9
  %279 = getelementptr inbounds i32, ptr %46, i64 %254
  %280 = load i32, ptr %279, align 4, !tbaa !5
  store i32 %280, ptr %276, align 4, !tbaa !5
  store double %.1.lcssa, ptr %255, align 8, !tbaa !9
  store i32 %277, ptr %279, align 4, !tbaa !5
  %281 = mul nsw i32 %.2.lcssa, %40
  %282 = sext i32 %281 to i64
  %gep449 = getelementptr %struct.doublecomplex, ptr %invariant.gep448, i64 %282
  %283 = mul nsw i32 %storemerge396453, %40
  %284 = sext i32 %283 to i64
  %gep451 = getelementptr %struct.doublecomplex, ptr %invariant.gep448, i64 %284
  call void @zswap_(ptr noundef nonnull %3, ptr noundef %gep449, ptr noundef nonnull @c__1, ptr noundef %gep451, ptr noundef nonnull @c__1) #6
  %285 = load i32, ptr %20, align 4, !tbaa !5
  %.not400 = icmp eq i32 %285, 0
  %.pre = load i32, ptr %26, align 4, !tbaa !5
  br i1 %.not400, label %._crit_edge.thread, label %286

286:                                              ; preds = %274
  %287 = getelementptr inbounds i32, ptr %47, i64 %275
  %288 = load i32, ptr %287, align 4, !tbaa !5
  %289 = sext i32 %.pre to i64
  %290 = getelementptr inbounds i32, ptr %47, i64 %289
  %291 = load i32, ptr %290, align 4, !tbaa !5
  store i32 %291, ptr %287, align 4, !tbaa !5
  store i32 %288, ptr %290, align 4, !tbaa !5
  br label %._crit_edge.thread

._crit_edge.thread:                               ; preds = %.lr.ph455, %._crit_edge, %286, %274
  %292 = phi i32 [ %storemerge396453, %._crit_edge ], [ %.pre, %286 ], [ %.pre, %274 ], [ %storemerge396453, %.lr.ph455 ]
  %293 = add nsw i32 %292, 1
  store i32 %293, ptr %26, align 4, !tbaa !5
  %294 = load i32, ptr %22, align 4, !tbaa !5
  %.not397.not = icmp slt i32 %292, %294
  br i1 %.not397.not, label %.lr.ph455, label %.loopexit, !llvm.loop !19

.loopexit:                                        ; preds = %._crit_edge.thread, %251, %250
  %295 = sitofp i32 %.0354 to double
  store double %295, ptr %15, align 8, !tbaa !11
  store double 0.000000e+00, ptr %103, align 8, !tbaa !13
  br label %296

296:                                              ; preds = %127, %128, %110, %109, %.loopexit, %.thread415
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %34) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %33) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %32) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %31) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %30) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %29) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %28) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %26) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %25) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %23) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %22) #6
  ret void
}

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

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

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

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

declare double @dlamch_(ptr noundef) local_unnamed_addr #2

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

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

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

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

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

declare void @zsteqr_(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 @zstein_(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 @zunmtr_(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 @dscal_(ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

declare void @zswap_(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 = !{!12, !10, i64 0}
!12 = !{!"", !10, i64 0, !10, i64 8}
!13 = !{!12, !10, i64 8}
!14 = distinct !{!14, !15}
!15 = !{!"llvm.loop.mustprogress"}
!16 = distinct !{!16, !15}
!17 = !{!7, !7, i64 0}
!18 = distinct !{!18, !15}
!19 = distinct !{!19, !15}


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