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

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

142:                                              ; preds = %138
  %143 = load ptr, ptr %43, align 8, !tbaa !5
  store i64 -1, ptr %143, align 8, !tbaa !9
  br label %256

144:                                              ; preds = %138, %21
  %145 = load i64, ptr %74, align 8, !tbaa !9
  %146 = icmp ne i64 %145, 0
  br i1 %146, label %155, label %147

147:                                              ; preds = %144
  %148 = load i64, ptr %78, align 8, !tbaa !9
  %149 = icmp ne i64 %148, 0
  br i1 %149, label %155, label %150

150:                                              ; preds = %147
  %151 = load i64, ptr %75, align 8, !tbaa !9
  %152 = icmp ne i64 %151, 0
  br i1 %152, label %155, label %153

153:                                              ; preds = %150
  %154 = load ptr, ptr %43, align 8, !tbaa !5
  store i64 -2, ptr %154, align 8, !tbaa !9
  br label %255

155:                                              ; preds = %150, %147, %144
  %156 = load i64, ptr %72, align 8, !tbaa !9
  %157 = icmp ne i64 %156, 0
  br i1 %157, label %164, label %158

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

162:                                              ; preds = %158
  %163 = load ptr, ptr %43, align 8, !tbaa !5
  store i64 -3, ptr %163, align 8, !tbaa !9
  br label %254

164:                                              ; preds = %158, %155
  %165 = load ptr, ptr %26, align 8, !tbaa !5
  %166 = load i64, ptr %165, align 8, !tbaa !9
  %167 = icmp slt i64 %166, 0
  br i1 %167, label %168, label %170

168:                                              ; preds = %164
  %169 = load ptr, ptr %43, align 8, !tbaa !5
  store i64 -4, ptr %169, align 8, !tbaa !9
  br label %253

170:                                              ; preds = %164
  %171 = load ptr, ptr %28, align 8, !tbaa !5
  %172 = load i64, ptr %171, align 8, !tbaa !9
  %173 = load ptr, ptr %26, align 8, !tbaa !5
  %174 = load i64, ptr %173, align 8, !tbaa !9
  %175 = icmp sge i64 1, %174
  br i1 %175, label %176, label %177

176:                                              ; preds = %170
  br label %180

177:                                              ; preds = %170
  %178 = load ptr, ptr %26, align 8, !tbaa !5
  %179 = load i64, ptr %178, align 8, !tbaa !9
  br label %180

180:                                              ; preds = %177, %176
  %181 = phi i64 [ 1, %176 ], [ %179, %177 ]
  %182 = icmp slt i64 %172, %181
  br i1 %182, label %183, label %185

183:                                              ; preds = %180
  %184 = load ptr, ptr %43, align 8, !tbaa !5
  store i64 -6, ptr %184, align 8, !tbaa !9
  br label %252

185:                                              ; preds = %180
  %186 = load i64, ptr %78, align 8, !tbaa !9
  %187 = icmp ne i64 %186, 0
  br i1 %187, label %188, label %201

188:                                              ; preds = %185
  %189 = load ptr, ptr %26, align 8, !tbaa !5
  %190 = load i64, ptr %189, align 8, !tbaa !9
  %191 = icmp sgt i64 %190, 0
  br i1 %191, label %192, label %200

192:                                              ; preds = %188
  %193 = load ptr, ptr %30, align 8, !tbaa !5
  %194 = load double, ptr %193, align 8, !tbaa !11
  %195 = load ptr, ptr %29, align 8, !tbaa !5
  %196 = load double, ptr %195, align 8, !tbaa !11
  %197 = fcmp ole double %194, %196
  br i1 %197, label %198, label %200

198:                                              ; preds = %192
  %199 = load ptr, ptr %43, align 8, !tbaa !5
  store i64 -8, ptr %199, align 8, !tbaa !9
  br label %200

200:                                              ; preds = %198, %192, %188
  br label %251

201:                                              ; preds = %185
  %202 = load i64, ptr %75, align 8, !tbaa !9
  %203 = icmp ne i64 %202, 0
  br i1 %203, label %204, label %250

204:                                              ; preds = %201
  %205 = load ptr, ptr %31, align 8, !tbaa !5
  %206 = load i64, ptr %205, align 8, !tbaa !9
  %207 = icmp slt i64 %206, 1
  br i1 %207, label %221, label %208

208:                                              ; preds = %204
  %209 = load ptr, ptr %31, align 8, !tbaa !5
  %210 = load i64, ptr %209, align 8, !tbaa !9
  %211 = load ptr, ptr %26, align 8, !tbaa !5
  %212 = load i64, ptr %211, align 8, !tbaa !9
  %213 = icmp sge i64 1, %212
  br i1 %213, label %214, label %215

214:                                              ; preds = %208
  br label %218

215:                                              ; preds = %208
  %216 = load ptr, ptr %26, align 8, !tbaa !5
  %217 = load i64, ptr %216, align 8, !tbaa !9
  br label %218

218:                                              ; preds = %215, %214
  %219 = phi i64 [ 1, %214 ], [ %217, %215 ]
  %220 = icmp sgt i64 %210, %219
  br i1 %220, label %221, label %223

221:                                              ; preds = %218, %204
  %222 = load ptr, ptr %43, align 8, !tbaa !5
  store i64 -9, ptr %222, align 8, !tbaa !9
  br label %249

223:                                              ; preds = %218
  %224 = load ptr, ptr %32, align 8, !tbaa !5
  %225 = load i64, ptr %224, align 8, !tbaa !9
  %226 = load ptr, ptr %26, align 8, !tbaa !5
  %227 = load i64, ptr %226, align 8, !tbaa !9
  %228 = load ptr, ptr %31, align 8, !tbaa !5
  %229 = load i64, ptr %228, align 8, !tbaa !9
  %230 = icmp sle i64 %227, %229
  br i1 %230, label %231, label %234

231:                                              ; preds = %223
  %232 = load ptr, ptr %26, align 8, !tbaa !5
  %233 = load i64, ptr %232, align 8, !tbaa !9
  br label %237

234:                                              ; preds = %223
  %235 = load ptr, ptr %31, align 8, !tbaa !5
  %236 = load i64, ptr %235, align 8, !tbaa !9
  br label %237

237:                                              ; preds = %234, %231
  %238 = phi i64 [ %233, %231 ], [ %236, %234 ]
  %239 = icmp slt i64 %225, %238
  br i1 %239, label %246, label %240

240:                                              ; preds = %237
  %241 = load ptr, ptr %32, align 8, !tbaa !5
  %242 = load i64, ptr %241, align 8, !tbaa !9
  %243 = load ptr, ptr %26, align 8, !tbaa !5
  %244 = load i64, ptr %243, align 8, !tbaa !9
  %245 = icmp sgt i64 %242, %244
  br i1 %245, label %246, label %248

246:                                              ; preds = %240, %237
  %247 = load ptr, ptr %43, align 8, !tbaa !5
  store i64 -10, ptr %247, align 8, !tbaa !9
  br label %248

248:                                              ; preds = %246, %240
  br label %249

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

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

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

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

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

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

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

256:                                              ; preds = %255, %142
  %257 = load ptr, ptr %43, align 8, !tbaa !5
  %258 = load i64, ptr %257, align 8, !tbaa !9
  %259 = icmp eq i64 %258, 0
  br i1 %259, label %260, label %276

260:                                              ; preds = %256
  %261 = load ptr, ptr %37, align 8, !tbaa !5
  %262 = load i64, ptr %261, align 8, !tbaa !9
  %263 = icmp slt i64 %262, 1
  br i1 %263, label %273, label %264

264:                                              ; preds = %260
  %265 = load i64, ptr %73, align 8, !tbaa !9
  %266 = icmp ne i64 %265, 0
  br i1 %266, label %267, label %275

267:                                              ; preds = %264
  %268 = load ptr, ptr %37, align 8, !tbaa !5
  %269 = load i64, ptr %268, align 8, !tbaa !9
  %270 = load ptr, ptr %26, align 8, !tbaa !5
  %271 = load i64, ptr %270, align 8, !tbaa !9
  %272 = icmp slt i64 %269, %271
  br i1 %272, label %273, label %275

273:                                              ; preds = %267, %260
  %274 = load ptr, ptr %43, align 8, !tbaa !5
  store i64 -15, ptr %274, align 8, !tbaa !9
  br label %275

275:                                              ; preds = %273, %267, %264
  br label %276

276:                                              ; preds = %275, %256
  %277 = load ptr, ptr %43, align 8, !tbaa !5
  %278 = load i64, ptr %277, align 8, !tbaa !9
  %279 = icmp eq i64 %278, 0
  br i1 %279, label %280, label %357

280:                                              ; preds = %276
  %281 = load ptr, ptr %26, align 8, !tbaa !5
  %282 = load i64, ptr %281, align 8, !tbaa !9
  %283 = icmp sle i64 %282, 1
  br i1 %283, label %284, label %293

284:                                              ; preds = %280
  store i64 1, ptr %87, align 8, !tbaa !9
  %285 = load i64, ptr %87, align 8, !tbaa !9
  %286 = sitofp i64 %285 to double
  %287 = load ptr, ptr %38, align 8, !tbaa !5
  %288 = getelementptr inbounds %struct.doublecomplex, ptr %287, i64 1
  %289 = getelementptr inbounds %struct.doublecomplex, ptr %288, i32 0, i32 0
  store double %286, ptr %289, align 8, !tbaa !13
  %290 = load ptr, ptr %38, align 8, !tbaa !5
  %291 = getelementptr inbounds %struct.doublecomplex, ptr %290, i64 1
  %292 = getelementptr inbounds %struct.doublecomplex, ptr %291, i32 0, i32 1
  store double 0.000000e+00, ptr %292, align 8, !tbaa !15
  br label %335

293:                                              ; preds = %280
  %294 = load ptr, ptr %26, align 8, !tbaa !5
  %295 = load i64, ptr %294, align 8, !tbaa !9
  %296 = shl i64 %295, 1
  store i64 %296, ptr %87, align 8, !tbaa !9
  %297 = load ptr, ptr %25, align 8, !tbaa !5
  %298 = load ptr, ptr %26, align 8, !tbaa !5
  %299 = call i64 @ilaenv_(ptr noundef @c__1, ptr noundef @.str.6, ptr noundef %297, ptr noundef %298, ptr noundef @c_n1, ptr noundef @c_n1, ptr noundef @c_n1)
  store i64 %299, ptr %54, align 8, !tbaa !9
  %300 = load i64, ptr %54, align 8, !tbaa !9
  store i64 %300, ptr %48, align 8, !tbaa !9
  %301 = load ptr, ptr %25, align 8, !tbaa !5
  %302 = load ptr, ptr %26, align 8, !tbaa !5
  %303 = call i64 @ilaenv_(ptr noundef @c__1, ptr noundef @.str.7, ptr noundef %301, ptr noundef %302, ptr noundef @c_n1, ptr noundef @c_n1, ptr noundef @c_n1)
  store i64 %303, ptr %49, align 8, !tbaa !9
  %304 = load i64, ptr %48, align 8, !tbaa !9
  %305 = load i64, ptr %49, align 8, !tbaa !9
  %306 = icmp sge i64 %304, %305
  br i1 %306, label %307, label %309

307:                                              ; preds = %293
  %308 = load i64, ptr %48, align 8, !tbaa !9
  br label %311

309:                                              ; preds = %293
  %310 = load i64, ptr %49, align 8, !tbaa !9
  br label %311

311:                                              ; preds = %309, %307
  %312 = phi i64 [ %308, %307 ], [ %310, %309 ]
  store i64 %312, ptr %54, align 8, !tbaa !9
  store i64 1, ptr %48, align 8, !tbaa !9
  %313 = load i64, ptr %54, align 8, !tbaa !9
  %314 = add nsw i64 %313, 1
  %315 = load ptr, ptr %26, align 8, !tbaa !5
  %316 = load i64, ptr %315, align 8, !tbaa !9
  %317 = mul nsw i64 %314, %316
  store i64 %317, ptr %49, align 8, !tbaa !9
  %318 = load i64, ptr %48, align 8, !tbaa !9
  %319 = load i64, ptr %49, align 8, !tbaa !9
  %320 = icmp sge i64 %318, %319
  br i1 %320, label %321, label %323

321:                                              ; preds = %311
  %322 = load i64, ptr %48, align 8, !tbaa !9
  br label %325

323:                                              ; preds = %311
  %324 = load i64, ptr %49, align 8, !tbaa !9
  br label %325

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

335:                                              ; preds = %325, %284
  store i64 1, ptr %48, align 8, !tbaa !9
  %336 = load ptr, ptr %26, align 8, !tbaa !5
  %337 = load i64, ptr %336, align 8, !tbaa !9
  %338 = shl i64 %337, 1
  store i64 %338, ptr %49, align 8, !tbaa !9
  %339 = load ptr, ptr %39, align 8, !tbaa !5
  %340 = load i64, ptr %339, align 8, !tbaa !9
  %341 = load i64, ptr %48, align 8, !tbaa !9
  %342 = load i64, ptr %49, align 8, !tbaa !9
  %343 = icmp sge i64 %341, %342
  br i1 %343, label %344, label %346

344:                                              ; preds = %335
  %345 = load i64, ptr %48, align 8, !tbaa !9
  br label %348

346:                                              ; preds = %335
  %347 = load i64, ptr %49, align 8, !tbaa !9
  br label %348

348:                                              ; preds = %346, %344
  %349 = phi i64 [ %345, %344 ], [ %347, %346 ]
  %350 = icmp slt i64 %340, %349
  br i1 %350, label %351, label %356

351:                                              ; preds = %348
  %352 = load i64, ptr %92, align 8, !tbaa !9
  %353 = icmp ne i64 %352, 0
  br i1 %353, label %356, label %354

354:                                              ; preds = %351
  %355 = load ptr, ptr %43, align 8, !tbaa !5
  store i64 -17, ptr %355, align 8, !tbaa !9
  br label %356

356:                                              ; preds = %354, %351, %348
  br label %357

357:                                              ; preds = %356, %276
  %358 = load ptr, ptr %43, align 8, !tbaa !5
  %359 = load i64, ptr %358, align 8, !tbaa !9
  %360 = icmp ne i64 %359, 0
  br i1 %360, label %361, label %366

361:                                              ; preds = %357
  %362 = load ptr, ptr %43, align 8, !tbaa !5
  %363 = load i64, ptr %362, align 8, !tbaa !9
  %364 = sub nsw i64 0, %363
  store i64 %364, ptr %48, align 8, !tbaa !9
  %365 = call i32 @xerbla_(ptr noundef @.str.8, ptr noundef %48)
  store i32 0, ptr %22, align 4
  store i32 1, ptr %93, align 4
  br label %1008

366:                                              ; preds = %357
  %367 = load i64, ptr %92, align 8, !tbaa !9
  %368 = icmp ne i64 %367, 0
  br i1 %368, label %369, label %370

369:                                              ; preds = %366
  store i32 0, ptr %22, align 4
  store i32 1, ptr %93, align 4
  br label %1008

370:                                              ; preds = %366
  br label %371

371:                                              ; preds = %370
  %372 = load ptr, ptr %34, align 8, !tbaa !5
  store i64 0, ptr %372, align 8, !tbaa !9
  %373 = load ptr, ptr %26, align 8, !tbaa !5
  %374 = load i64, ptr %373, align 8, !tbaa !9
  %375 = icmp eq i64 %374, 0
  br i1 %375, label %376, label %377

376:                                              ; preds = %371
  store i32 0, ptr %22, align 4
  store i32 1, ptr %93, align 4
  br label %1008

377:                                              ; preds = %371
  %378 = load ptr, ptr %26, align 8, !tbaa !5
  %379 = load i64, ptr %378, align 8, !tbaa !9
  %380 = icmp eq i64 %379, 1
  br i1 %380, label %381, label %451

381:                                              ; preds = %377
  %382 = load i64, ptr %74, align 8, !tbaa !9
  %383 = icmp ne i64 %382, 0
  br i1 %383, label %387, label %384

384:                                              ; preds = %381
  %385 = load i64, ptr %75, align 8, !tbaa !9
  %386 = icmp ne i64 %385, 0
  br i1 %386, label %387, label %398

387:                                              ; preds = %384, %381
  %388 = load ptr, ptr %34, align 8, !tbaa !5
  store i64 1, ptr %388, align 8, !tbaa !9
  %389 = load i64, ptr %44, align 8, !tbaa !9
  %390 = add nsw i64 %389, 1
  store i64 %390, ptr %48, align 8, !tbaa !9
  %391 = load ptr, ptr %27, align 8, !tbaa !5
  %392 = load i64, ptr %48, align 8, !tbaa !9
  %393 = getelementptr inbounds %struct.doublecomplex, ptr %391, i64 %392
  %394 = getelementptr inbounds %struct.doublecomplex, ptr %393, i32 0, i32 0
  %395 = load double, ptr %394, align 8, !tbaa !13
  %396 = load ptr, ptr %35, align 8, !tbaa !5
  %397 = getelementptr inbounds double, ptr %396, i64 1
  store double %395, ptr %397, align 8, !tbaa !11
  br label %436

398:                                              ; preds = %384
  %399 = load i64, ptr %78, align 8, !tbaa !9
  %400 = icmp ne i64 %399, 0
  br i1 %400, label %401, label %435

401:                                              ; preds = %398
  %402 = load i64, ptr %44, align 8, !tbaa !9
  %403 = add nsw i64 %402, 1
  store i64 %403, ptr %48, align 8, !tbaa !9
  %404 = load i64, ptr %44, align 8, !tbaa !9
  %405 = add nsw i64 %404, 1
  store i64 %405, ptr %49, align 8, !tbaa !9
  %406 = load ptr, ptr %29, align 8, !tbaa !5
  %407 = load double, ptr %406, align 8, !tbaa !11
  %408 = load ptr, ptr %27, align 8, !tbaa !5
  %409 = load i64, ptr %48, align 8, !tbaa !9
  %410 = getelementptr inbounds %struct.doublecomplex, ptr %408, i64 %409
  %411 = getelementptr inbounds %struct.doublecomplex, ptr %410, i32 0, i32 0
  %412 = load double, ptr %411, align 8, !tbaa !13
  %413 = fcmp olt double %407, %412
  br i1 %413, label %414, label %434

414:                                              ; preds = %401
  %415 = load ptr, ptr %30, align 8, !tbaa !5
  %416 = load double, ptr %415, align 8, !tbaa !11
  %417 = load ptr, ptr %27, align 8, !tbaa !5
  %418 = load i64, ptr %49, align 8, !tbaa !9
  %419 = getelementptr inbounds %struct.doublecomplex, ptr %417, i64 %418
  %420 = getelementptr inbounds %struct.doublecomplex, ptr %419, i32 0, i32 0
  %421 = load double, ptr %420, align 8, !tbaa !13
  %422 = fcmp oge double %416, %421
  br i1 %422, label %423, label %434

423:                                              ; preds = %414
  %424 = load ptr, ptr %34, align 8, !tbaa !5
  store i64 1, ptr %424, align 8, !tbaa !9
  %425 = load i64, ptr %44, align 8, !tbaa !9
  %426 = add nsw i64 %425, 1
  store i64 %426, ptr %48, align 8, !tbaa !9
  %427 = load ptr, ptr %27, align 8, !tbaa !5
  %428 = load i64, ptr %48, align 8, !tbaa !9
  %429 = getelementptr inbounds %struct.doublecomplex, ptr %427, i64 %428
  %430 = getelementptr inbounds %struct.doublecomplex, ptr %429, i32 0, i32 0
  %431 = load double, ptr %430, align 8, !tbaa !13
  %432 = load ptr, ptr %35, align 8, !tbaa !5
  %433 = getelementptr inbounds double, ptr %432, i64 1
  store double %431, ptr %433, align 8, !tbaa !11
  br label %434

434:                                              ; preds = %423, %414, %401
  br label %435

435:                                              ; preds = %434, %398
  br label %436

436:                                              ; preds = %435, %387
  %437 = load i64, ptr %73, align 8, !tbaa !9
  %438 = icmp ne i64 %437, 0
  br i1 %438, label %439, label %450

439:                                              ; preds = %436
  %440 = load i64, ptr %46, align 8, !tbaa !9
  %441 = add nsw i64 %440, 1
  store i64 %441, ptr %48, align 8, !tbaa !9
  %442 = load ptr, ptr %36, align 8, !tbaa !5
  %443 = load i64, ptr %48, align 8, !tbaa !9
  %444 = getelementptr inbounds %struct.doublecomplex, ptr %442, i64 %443
  %445 = getelementptr inbounds %struct.doublecomplex, ptr %444, i32 0, i32 0
  store double 1.000000e+00, ptr %445, align 8, !tbaa !13
  %446 = load ptr, ptr %36, align 8, !tbaa !5
  %447 = load i64, ptr %48, align 8, !tbaa !9
  %448 = getelementptr inbounds %struct.doublecomplex, ptr %446, i64 %447
  %449 = getelementptr inbounds %struct.doublecomplex, ptr %448, i32 0, i32 1
  store double 0.000000e+00, ptr %449, align 8, !tbaa !15
  br label %450

450:                                              ; preds = %439, %436
  store i32 0, ptr %22, align 4
  store i32 1, ptr %93, align 4
  br label %1008

451:                                              ; preds = %377
  %452 = call double @dlamch_(ptr noundef @.str.9)
  store double %452, ptr %79, align 8, !tbaa !11
  %453 = call double @dlamch_(ptr noundef @.str.10)
  store double %453, ptr %56, align 8, !tbaa !11
  %454 = load double, ptr %79, align 8, !tbaa !11
  %455 = load double, ptr %56, align 8, !tbaa !11
  %456 = fdiv double %454, %455
  store double %456, ptr %90, align 8, !tbaa !11
  %457 = load double, ptr %90, align 8, !tbaa !11
  %458 = fdiv double 1.000000e+00, %457
  store double %458, ptr %81, align 8, !tbaa !11
  %459 = load double, ptr %90, align 8, !tbaa !11
  %460 = call double @sqrt(double noundef %459) #4
  store double %460, ptr %64, align 8, !tbaa !11
  %461 = load double, ptr %81, align 8, !tbaa !11
  %462 = call double @sqrt(double noundef %461) #4
  store double %462, ptr %50, align 8, !tbaa !11
  %463 = load double, ptr %79, align 8, !tbaa !11
  %464 = call double @sqrt(double noundef %463) #4
  %465 = call double @sqrt(double noundef %464) #4
  %466 = fdiv double 1.000000e+00, %465
  store double %466, ptr %51, align 8, !tbaa !11
  %467 = load double, ptr %50, align 8, !tbaa !11
  %468 = load double, ptr %51, align 8, !tbaa !11
  %469 = fcmp ole double %467, %468
  br i1 %469, label %470, label %472

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

472:                                              ; preds = %451
  %473 = load double, ptr %51, align 8, !tbaa !11
  br label %474

474:                                              ; preds = %472, %470
  %475 = phi double [ %471, %470 ], [ %473, %472 ]
  store double %475, ptr %65, align 8, !tbaa !11
  store i64 0, ptr %76, align 8, !tbaa !9
  %476 = load ptr, ptr %33, align 8, !tbaa !5
  %477 = load double, ptr %476, align 8, !tbaa !11
  store double %477, ptr %80, align 8, !tbaa !11
  %478 = load i64, ptr %78, align 8, !tbaa !9
  %479 = icmp ne i64 %478, 0
  br i1 %479, label %480, label %485

480:                                              ; preds = %474
  %481 = load ptr, ptr %29, align 8, !tbaa !5
  %482 = load double, ptr %481, align 8, !tbaa !11
  store double %482, ptr %57, align 8, !tbaa !11
  %483 = load ptr, ptr %30, align 8, !tbaa !5
  %484 = load double, ptr %483, align 8, !tbaa !11
  store double %484, ptr %58, align 8, !tbaa !11
  br label %485

485:                                              ; preds = %480, %474
  %486 = load ptr, ptr %25, align 8, !tbaa !5
  %487 = load ptr, ptr %26, align 8, !tbaa !5
  %488 = load ptr, ptr %27, align 8, !tbaa !5
  %489 = load i64, ptr %45, align 8, !tbaa !9
  %490 = getelementptr inbounds %struct.doublecomplex, ptr %488, i64 %489
  %491 = load ptr, ptr %28, align 8, !tbaa !5
  %492 = load ptr, ptr %40, align 8, !tbaa !5
  %493 = getelementptr inbounds double, ptr %492, i64 1
  %494 = call double @zlanhe_(ptr noundef @.str.11, ptr noundef %486, ptr noundef %487, ptr noundef %490, ptr noundef %491, ptr noundef %493)
  store double %494, ptr %62, align 8, !tbaa !11
  %495 = load double, ptr %62, align 8, !tbaa !11
  %496 = fcmp ogt double %495, 0.000000e+00
  br i1 %496, label %497, label %505

497:                                              ; preds = %485
  %498 = load double, ptr %62, align 8, !tbaa !11
  %499 = load double, ptr %64, align 8, !tbaa !11
  %500 = fcmp olt double %498, %499
  br i1 %500, label %501, label %505

501:                                              ; preds = %497
  store i64 1, ptr %76, align 8, !tbaa !9
  %502 = load double, ptr %64, align 8, !tbaa !11
  %503 = load double, ptr %62, align 8, !tbaa !11
  %504 = fdiv double %502, %503
  store double %504, ptr %69, align 8, !tbaa !11
  br label %514

505:                                              ; preds = %497, %485
  %506 = load double, ptr %62, align 8, !tbaa !11
  %507 = load double, ptr %65, align 8, !tbaa !11
  %508 = fcmp ogt double %506, %507
  br i1 %508, label %509, label %513

509:                                              ; preds = %505
  store i64 1, ptr %76, align 8, !tbaa !9
  %510 = load double, ptr %65, align 8, !tbaa !11
  %511 = load double, ptr %62, align 8, !tbaa !11
  %512 = fdiv double %510, %511
  store double %512, ptr %69, align 8, !tbaa !11
  br label %513

513:                                              ; preds = %509, %505
  br label %514

514:                                              ; preds = %513, %501
  %515 = load i64, ptr %76, align 8, !tbaa !9
  %516 = icmp eq i64 %515, 1
  br i1 %516, label %517, label %586

517:                                              ; preds = %514
  %518 = load i64, ptr %72, align 8, !tbaa !9
  %519 = icmp ne i64 %518, 0
  br i1 %519, label %520, label %545

520:                                              ; preds = %517
  %521 = load ptr, ptr %26, align 8, !tbaa !5
  %522 = load i64, ptr %521, align 8, !tbaa !9
  store i64 %522, ptr %48, align 8, !tbaa !9
  store i64 1, ptr %53, align 8, !tbaa !9
  br label %523

523:                                              ; preds = %541, %520
  %524 = load i64, ptr %53, align 8, !tbaa !9
  %525 = load i64, ptr %48, align 8, !tbaa !9
  %526 = icmp sle i64 %524, %525
  br i1 %526, label %527, label %544

527:                                              ; preds = %523
  %528 = load ptr, ptr %26, align 8, !tbaa !5
  %529 = load i64, ptr %528, align 8, !tbaa !9
  %530 = load i64, ptr %53, align 8, !tbaa !9
  %531 = sub nsw i64 %529, %530
  %532 = add nsw i64 %531, 1
  store i64 %532, ptr %49, align 8, !tbaa !9
  %533 = load ptr, ptr %27, align 8, !tbaa !5
  %534 = load i64, ptr %53, align 8, !tbaa !9
  %535 = load i64, ptr %53, align 8, !tbaa !9
  %536 = load i64, ptr %44, align 8, !tbaa !9
  %537 = mul nsw i64 %535, %536
  %538 = add nsw i64 %534, %537
  %539 = getelementptr inbounds %struct.doublecomplex, ptr %533, i64 %538
  %540 = call i32 @f2c_zdscal(ptr noundef %49, ptr noundef %69, ptr noundef %539, ptr noundef @c__1)
  br label %541

541:                                              ; preds = %527
  %542 = load i64, ptr %53, align 8, !tbaa !9
  %543 = add nsw i64 %542, 1
  store i64 %543, ptr %53, align 8, !tbaa !9
  br label %523, !llvm.loop !16

544:                                              ; preds = %523
  br label %564

545:                                              ; preds = %517
  %546 = load ptr, ptr %26, align 8, !tbaa !5
  %547 = load i64, ptr %546, align 8, !tbaa !9
  store i64 %547, ptr %48, align 8, !tbaa !9
  store i64 1, ptr %53, align 8, !tbaa !9
  br label %548

548:                                              ; preds = %560, %545
  %549 = load i64, ptr %53, align 8, !tbaa !9
  %550 = load i64, ptr %48, align 8, !tbaa !9
  %551 = icmp sle i64 %549, %550
  br i1 %551, label %552, label %563

552:                                              ; preds = %548
  %553 = load ptr, ptr %27, align 8, !tbaa !5
  %554 = load i64, ptr %53, align 8, !tbaa !9
  %555 = load i64, ptr %44, align 8, !tbaa !9
  %556 = mul nsw i64 %554, %555
  %557 = add nsw i64 %556, 1
  %558 = getelementptr inbounds %struct.doublecomplex, ptr %553, i64 %557
  %559 = call i32 @f2c_zdscal(ptr noundef %53, ptr noundef %69, ptr noundef %558, ptr noundef @c__1)
  br label %560

560:                                              ; preds = %552
  %561 = load i64, ptr %53, align 8, !tbaa !9
  %562 = add nsw i64 %561, 1
  store i64 %562, ptr %53, align 8, !tbaa !9
  br label %548, !llvm.loop !18

563:                                              ; preds = %548
  br label %564

564:                                              ; preds = %563, %544
  %565 = load ptr, ptr %33, align 8, !tbaa !5
  %566 = load double, ptr %565, align 8, !tbaa !11
  %567 = fcmp ogt double %566, 0.000000e+00
  br i1 %567, label %568, label %573

568:                                              ; preds = %564
  %569 = load ptr, ptr %33, align 8, !tbaa !5
  %570 = load double, ptr %569, align 8, !tbaa !11
  %571 = load double, ptr %69, align 8, !tbaa !11
  %572 = fmul double %570, %571
  store double %572, ptr %80, align 8, !tbaa !11
  br label %573

573:                                              ; preds = %568, %564
  %574 = load i64, ptr %78, align 8, !tbaa !9
  %575 = icmp ne i64 %574, 0
  br i1 %575, label %576, label %585

576:                                              ; preds = %573
  %577 = load ptr, ptr %29, align 8, !tbaa !5
  %578 = load double, ptr %577, align 8, !tbaa !11
  %579 = load double, ptr %69, align 8, !tbaa !11
  %580 = fmul double %578, %579
  store double %580, ptr %57, align 8, !tbaa !11
  %581 = load ptr, ptr %30, align 8, !tbaa !5
  %582 = load double, ptr %581, align 8, !tbaa !11
  %583 = load double, ptr %69, align 8, !tbaa !11
  %584 = fmul double %582, %583
  store double %584, ptr %58, align 8, !tbaa !11
  br label %585

585:                                              ; preds = %576, %573
  br label %586

586:                                              ; preds = %585, %514
  store i64 1, ptr %60, align 8, !tbaa !9
  %587 = load i64, ptr %60, align 8, !tbaa !9
  %588 = load ptr, ptr %26, align 8, !tbaa !5
  %589 = load i64, ptr %588, align 8, !tbaa !9
  %590 = add nsw i64 %587, %589
  store i64 %590, ptr %61, align 8, !tbaa !9
  %591 = load i64, ptr %61, align 8, !tbaa !9
  %592 = load ptr, ptr %26, align 8, !tbaa !5
  %593 = load i64, ptr %592, align 8, !tbaa !9
  %594 = add nsw i64 %591, %593
  store i64 %594, ptr %85, align 8, !tbaa !9
  store i64 1, ptr %84, align 8, !tbaa !9
  %595 = load i64, ptr %84, align 8, !tbaa !9
  %596 = load ptr, ptr %26, align 8, !tbaa !5
  %597 = load i64, ptr %596, align 8, !tbaa !9
  %598 = add nsw i64 %595, %597
  store i64 %598, ptr %86, align 8, !tbaa !9
  %599 = load ptr, ptr %39, align 8, !tbaa !5
  %600 = load i64, ptr %599, align 8, !tbaa !9
  %601 = load i64, ptr %86, align 8, !tbaa !9
  %602 = sub nsw i64 %600, %601
  %603 = add nsw i64 %602, 1
  store i64 %603, ptr %88, align 8, !tbaa !9
  %604 = load ptr, ptr %25, align 8, !tbaa !5
  %605 = load ptr, ptr %26, align 8, !tbaa !5
  %606 = load ptr, ptr %27, align 8, !tbaa !5
  %607 = load i64, ptr %45, align 8, !tbaa !9
  %608 = getelementptr inbounds %struct.doublecomplex, ptr %606, i64 %607
  %609 = load ptr, ptr %28, align 8, !tbaa !5
  %610 = load ptr, ptr %40, align 8, !tbaa !5
  %611 = load i64, ptr %60, align 8, !tbaa !9
  %612 = getelementptr inbounds double, ptr %610, i64 %611
  %613 = load ptr, ptr %40, align 8, !tbaa !5
  %614 = load i64, ptr %61, align 8, !tbaa !9
  %615 = getelementptr inbounds double, ptr %613, i64 %614
  %616 = load ptr, ptr %38, align 8, !tbaa !5
  %617 = load i64, ptr %84, align 8, !tbaa !9
  %618 = getelementptr inbounds %struct.doublecomplex, ptr %616, i64 %617
  %619 = load ptr, ptr %38, align 8, !tbaa !5
  %620 = load i64, ptr %86, align 8, !tbaa !9
  %621 = getelementptr inbounds %struct.doublecomplex, ptr %619, i64 %620
  %622 = call i32 @zhetrd_(ptr noundef %604, ptr noundef %605, ptr noundef %608, ptr noundef %609, ptr noundef %612, ptr noundef %615, ptr noundef %618, ptr noundef %621, ptr noundef %88, ptr noundef %70)
  store i64 0, ptr %66, align 8, !tbaa !9
  %623 = load i64, ptr %75, align 8, !tbaa !9
  %624 = icmp ne i64 %623, 0
  br i1 %624, label %625, label %637

625:                                              ; preds = %586
  %626 = load ptr, ptr %31, align 8, !tbaa !5
  %627 = load i64, ptr %626, align 8, !tbaa !9
  %628 = icmp eq i64 %627, 1
  br i1 %628, label %629, label %636

629:                                              ; preds = %625
  %630 = load ptr, ptr %32, align 8, !tbaa !5
  %631 = load i64, ptr %630, align 8, !tbaa !9
  %632 = load ptr, ptr %26, align 8, !tbaa !5
  %633 = load i64, ptr %632, align 8, !tbaa !9
  %634 = icmp eq i64 %631, %633
  br i1 %634, label %635, label %636

635:                                              ; preds = %629
  store i64 1, ptr %66, align 8, !tbaa !9
  br label %636

636:                                              ; preds = %635, %629, %625
  br label %637

637:                                              ; preds = %636, %586
  %638 = load i64, ptr %74, align 8, !tbaa !9
  %639 = icmp ne i64 %638, 0
  br i1 %639, label %643, label %640

640:                                              ; preds = %637
  %641 = load i64, ptr %66, align 8, !tbaa !9
  %642 = icmp ne i64 %641, 0
  br i1 %642, label %643, label %761

643:                                              ; preds = %640, %637
  %644 = load ptr, ptr %33, align 8, !tbaa !5
  %645 = load double, ptr %644, align 8, !tbaa !11
  %646 = fcmp ole double %645, 0.000000e+00
  br i1 %646, label %647, label %761

647:                                              ; preds = %643
  %648 = load ptr, ptr %26, align 8, !tbaa !5
  %649 = load ptr, ptr %40, align 8, !tbaa !5
  %650 = load i64, ptr %60, align 8, !tbaa !9
  %651 = getelementptr inbounds double, ptr %649, i64 %650
  %652 = load ptr, ptr %35, align 8, !tbaa !5
  %653 = getelementptr inbounds double, ptr %652, i64 1
  %654 = call i32 @f2c_dcopy(ptr noundef %648, ptr noundef %651, ptr noundef @c__1, ptr noundef %653, ptr noundef @c__1)
  %655 = load i64, ptr %85, align 8, !tbaa !9
  %656 = load ptr, ptr %26, align 8, !tbaa !5
  %657 = load i64, ptr %656, align 8, !tbaa !9
  %658 = shl i64 %657, 1
  %659 = add nsw i64 %655, %658
  store i64 %659, ptr %68, align 8, !tbaa !9
  %660 = load i64, ptr %73, align 8, !tbaa !9
  %661 = icmp ne i64 %660, 0
  br i1 %661, label %681, label %662

662:                                              ; preds = %647
  %663 = load ptr, ptr %26, align 8, !tbaa !5
  %664 = load i64, ptr %663, align 8, !tbaa !9
  %665 = sub nsw i64 %664, 1
  store i64 %665, ptr %48, align 8, !tbaa !9
  %666 = load ptr, ptr %40, align 8, !tbaa !5
  %667 = load i64, ptr %61, align 8, !tbaa !9
  %668 = getelementptr inbounds double, ptr %666, i64 %667
  %669 = load ptr, ptr %40, align 8, !tbaa !5
  %670 = load i64, ptr %68, align 8, !tbaa !9
  %671 = getelementptr inbounds double, ptr %669, i64 %670
  %672 = call i32 @f2c_dcopy(ptr noundef %48, ptr noundef %668, ptr noundef @c__1, ptr noundef %671, ptr noundef @c__1)
  %673 = load ptr, ptr %26, align 8, !tbaa !5
  %674 = load ptr, ptr %35, align 8, !tbaa !5
  %675 = getelementptr inbounds double, ptr %674, i64 1
  %676 = load ptr, ptr %40, align 8, !tbaa !5
  %677 = load i64, ptr %68, align 8, !tbaa !9
  %678 = getelementptr inbounds double, ptr %676, i64 %677
  %679 = load ptr, ptr %43, align 8, !tbaa !5
  %680 = call i32 @dsterf_(ptr noundef %673, ptr noundef %675, ptr noundef %678, ptr noundef %679)
  br label %751

681:                                              ; preds = %647
  %682 = load ptr, ptr %26, align 8, !tbaa !5
  %683 = load ptr, ptr %26, align 8, !tbaa !5
  %684 = load ptr, ptr %27, align 8, !tbaa !5
  %685 = load i64, ptr %45, align 8, !tbaa !9
  %686 = getelementptr inbounds %struct.doublecomplex, ptr %684, i64 %685
  %687 = load ptr, ptr %28, align 8, !tbaa !5
  %688 = load ptr, ptr %36, align 8, !tbaa !5
  %689 = load i64, ptr %47, align 8, !tbaa !9
  %690 = getelementptr inbounds %struct.doublecomplex, ptr %688, i64 %689
  %691 = load ptr, ptr %37, align 8, !tbaa !5
  %692 = call i32 @zlacpy_(ptr noundef @.str.2, ptr noundef %682, ptr noundef %683, ptr noundef %686, ptr noundef %687, ptr noundef %690, ptr noundef %691)
  %693 = load ptr, ptr %25, align 8, !tbaa !5
  %694 = load ptr, ptr %26, align 8, !tbaa !5
  %695 = load ptr, ptr %36, align 8, !tbaa !5
  %696 = load i64, ptr %47, align 8, !tbaa !9
  %697 = getelementptr inbounds %struct.doublecomplex, ptr %695, i64 %696
  %698 = load ptr, ptr %37, align 8, !tbaa !5
  %699 = load ptr, ptr %38, align 8, !tbaa !5
  %700 = load i64, ptr %84, align 8, !tbaa !9
  %701 = getelementptr inbounds %struct.doublecomplex, ptr %699, i64 %700
  %702 = load ptr, ptr %38, align 8, !tbaa !5
  %703 = load i64, ptr %86, align 8, !tbaa !9
  %704 = getelementptr inbounds %struct.doublecomplex, ptr %702, i64 %703
  %705 = call i32 @zungtr_(ptr noundef %693, ptr noundef %694, ptr noundef %697, ptr noundef %698, ptr noundef %701, ptr noundef %704, ptr noundef %88, ptr noundef %70)
  %706 = load ptr, ptr %26, align 8, !tbaa !5
  %707 = load i64, ptr %706, align 8, !tbaa !9
  %708 = sub nsw i64 %707, 1
  store i64 %708, ptr %48, align 8, !tbaa !9
  %709 = load ptr, ptr %40, align 8, !tbaa !5
  %710 = load i64, ptr %61, align 8, !tbaa !9
  %711 = getelementptr inbounds double, ptr %709, i64 %710
  %712 = load ptr, ptr %40, align 8, !tbaa !5
  %713 = load i64, ptr %68, align 8, !tbaa !9
  %714 = getelementptr inbounds double, ptr %712, i64 %713
  %715 = call i32 @f2c_dcopy(ptr noundef %48, ptr noundef %711, ptr noundef @c__1, ptr noundef %714, ptr noundef @c__1)
  %716 = load ptr, ptr %23, align 8, !tbaa !5
  %717 = load ptr, ptr %26, align 8, !tbaa !5
  %718 = load ptr, ptr %35, align 8, !tbaa !5
  %719 = getelementptr inbounds double, ptr %718, i64 1
  %720 = load ptr, ptr %40, align 8, !tbaa !5
  %721 = load i64, ptr %68, align 8, !tbaa !9
  %722 = getelementptr inbounds double, ptr %720, i64 %721
  %723 = load ptr, ptr %36, align 8, !tbaa !5
  %724 = load i64, ptr %47, align 8, !tbaa !9
  %725 = getelementptr inbounds %struct.doublecomplex, ptr %723, i64 %724
  %726 = load ptr, ptr %37, align 8, !tbaa !5
  %727 = load ptr, ptr %40, align 8, !tbaa !5
  %728 = load i64, ptr %85, align 8, !tbaa !9
  %729 = getelementptr inbounds double, ptr %727, i64 %728
  %730 = load ptr, ptr %43, align 8, !tbaa !5
  %731 = call i32 @zsteqr_(ptr noundef %716, ptr noundef %717, ptr noundef %719, ptr noundef %722, ptr noundef %725, ptr noundef %726, ptr noundef %729, ptr noundef %730)
  %732 = load ptr, ptr %43, align 8, !tbaa !5
  %733 = load i64, ptr %732, align 8, !tbaa !9
  %734 = icmp eq i64 %733, 0
  br i1 %734, label %735, label %750

735:                                              ; preds = %681
  %736 = load ptr, ptr %26, align 8, !tbaa !5
  %737 = load i64, ptr %736, align 8, !tbaa !9
  store i64 %737, ptr %48, align 8, !tbaa !9
  store i64 1, ptr %52, align 8, !tbaa !9
  br label %738

738:                                              ; preds = %746, %735
  %739 = load i64, ptr %52, align 8, !tbaa !9
  %740 = load i64, ptr %48, align 8, !tbaa !9
  %741 = icmp sle i64 %739, %740
  br i1 %741, label %742, label %749

742:                                              ; preds = %738
  %743 = load ptr, ptr %42, align 8, !tbaa !5
  %744 = load i64, ptr %52, align 8, !tbaa !9
  %745 = getelementptr inbounds i64, ptr %743, i64 %744
  store i64 0, ptr %745, align 8, !tbaa !9
  br label %746

746:                                              ; preds = %742
  %747 = load i64, ptr %52, align 8, !tbaa !9
  %748 = add nsw i64 %747, 1
  store i64 %748, ptr %52, align 8, !tbaa !9
  br label %738, !llvm.loop !19

749:                                              ; preds = %738
  br label %750

750:                                              ; preds = %749, %681
  br label %751

751:                                              ; preds = %750, %662
  %752 = load ptr, ptr %43, align 8, !tbaa !5
  %753 = load i64, ptr %752, align 8, !tbaa !9
  %754 = icmp eq i64 %753, 0
  br i1 %754, label %755, label %759

755:                                              ; preds = %751
  %756 = load ptr, ptr %26, align 8, !tbaa !5
  %757 = load i64, ptr %756, align 8, !tbaa !9
  %758 = load ptr, ptr %34, align 8, !tbaa !5
  store i64 %757, ptr %758, align 8, !tbaa !9
  br label %857

759:                                              ; preds = %751
  %760 = load ptr, ptr %43, align 8, !tbaa !5
  store i64 0, ptr %760, align 8, !tbaa !9
  br label %761

761:                                              ; preds = %759, %643, %640
  %762 = load i64, ptr %73, align 8, !tbaa !9
  %763 = icmp ne i64 %762, 0
  br i1 %763, label %764, label %766

764:                                              ; preds = %761
  %765 = getelementptr inbounds [1 x i8], ptr %71, i64 0, i64 0
  store i8 66, ptr %765, align 1, !tbaa !20
  br label %768

766:                                              ; preds = %761
  %767 = getelementptr inbounds [1 x i8], ptr %71, i64 0, i64 0
  store i8 69, ptr %767, align 1, !tbaa !20
  br label %768

768:                                              ; preds = %766, %764
  store i64 1, ptr %77, align 8, !tbaa !9
  %769 = load i64, ptr %77, align 8, !tbaa !9
  %770 = load ptr, ptr %26, align 8, !tbaa !5
  %771 = load i64, ptr %770, align 8, !tbaa !9
  %772 = add nsw i64 %769, %771
  store i64 %772, ptr %83, align 8, !tbaa !9
  %773 = load i64, ptr %83, align 8, !tbaa !9
  %774 = load ptr, ptr %26, align 8, !tbaa !5
  %775 = load i64, ptr %774, align 8, !tbaa !9
  %776 = add nsw i64 %773, %775
  store i64 %776, ptr %82, align 8, !tbaa !9
  %777 = load ptr, ptr %24, align 8, !tbaa !5
  %778 = getelementptr inbounds [1 x i8], ptr %71, i64 0, i64 0
  %779 = load ptr, ptr %26, align 8, !tbaa !5
  %780 = load ptr, ptr %31, align 8, !tbaa !5
  %781 = load ptr, ptr %32, align 8, !tbaa !5
  %782 = load ptr, ptr %40, align 8, !tbaa !5
  %783 = load i64, ptr %60, align 8, !tbaa !9
  %784 = getelementptr inbounds double, ptr %782, i64 %783
  %785 = load ptr, ptr %40, align 8, !tbaa !5
  %786 = load i64, ptr %61, align 8, !tbaa !9
  %787 = getelementptr inbounds double, ptr %785, i64 %786
  %788 = load ptr, ptr %34, align 8, !tbaa !5
  %789 = load ptr, ptr %35, align 8, !tbaa !5
  %790 = getelementptr inbounds double, ptr %789, i64 1
  %791 = load ptr, ptr %41, align 8, !tbaa !5
  %792 = load i64, ptr %77, align 8, !tbaa !9
  %793 = getelementptr inbounds i64, ptr %791, i64 %792
  %794 = load ptr, ptr %41, align 8, !tbaa !5
  %795 = load i64, ptr %83, align 8, !tbaa !9
  %796 = getelementptr inbounds i64, ptr %794, i64 %795
  %797 = load ptr, ptr %40, align 8, !tbaa !5
  %798 = load i64, ptr %85, align 8, !tbaa !9
  %799 = getelementptr inbounds double, ptr %797, i64 %798
  %800 = load ptr, ptr %41, align 8, !tbaa !5
  %801 = load i64, ptr %82, align 8, !tbaa !9
  %802 = getelementptr inbounds i64, ptr %800, i64 %801
  %803 = load ptr, ptr %43, align 8, !tbaa !5
  %804 = call i32 @dstebz_(ptr noundef %777, ptr noundef %778, ptr noundef %779, ptr noundef %57, ptr noundef %58, ptr noundef %780, ptr noundef %781, ptr noundef %80, ptr noundef %784, ptr noundef %787, ptr noundef %788, ptr noundef %89, ptr noundef %790, ptr noundef %793, ptr noundef %796, ptr noundef %799, ptr noundef %802, ptr noundef %803)
  %805 = load i64, ptr %73, align 8, !tbaa !9
  %806 = icmp ne i64 %805, 0
  br i1 %806, label %807, label %856

807:                                              ; preds = %768
  %808 = load ptr, ptr %26, align 8, !tbaa !5
  %809 = load ptr, ptr %40, align 8, !tbaa !5
  %810 = load i64, ptr %60, align 8, !tbaa !9
  %811 = getelementptr inbounds double, ptr %809, i64 %810
  %812 = load ptr, ptr %40, align 8, !tbaa !5
  %813 = load i64, ptr %61, align 8, !tbaa !9
  %814 = getelementptr inbounds double, ptr %812, i64 %813
  %815 = load ptr, ptr %34, align 8, !tbaa !5
  %816 = load ptr, ptr %35, align 8, !tbaa !5
  %817 = getelementptr inbounds double, ptr %816, i64 1
  %818 = load ptr, ptr %41, align 8, !tbaa !5
  %819 = load i64, ptr %77, align 8, !tbaa !9
  %820 = getelementptr inbounds i64, ptr %818, i64 %819
  %821 = load ptr, ptr %41, align 8, !tbaa !5
  %822 = load i64, ptr %83, align 8, !tbaa !9
  %823 = getelementptr inbounds i64, ptr %821, i64 %822
  %824 = load ptr, ptr %36, align 8, !tbaa !5
  %825 = load i64, ptr %47, align 8, !tbaa !9
  %826 = getelementptr inbounds %struct.doublecomplex, ptr %824, i64 %825
  %827 = load ptr, ptr %37, align 8, !tbaa !5
  %828 = load ptr, ptr %40, align 8, !tbaa !5
  %829 = load i64, ptr %85, align 8, !tbaa !9
  %830 = getelementptr inbounds double, ptr %828, i64 %829
  %831 = load ptr, ptr %41, align 8, !tbaa !5
  %832 = load i64, ptr %82, align 8, !tbaa !9
  %833 = getelementptr inbounds i64, ptr %831, i64 %832
  %834 = load ptr, ptr %42, align 8, !tbaa !5
  %835 = getelementptr inbounds i64, ptr %834, i64 1
  %836 = load ptr, ptr %43, align 8, !tbaa !5
  %837 = call i32 @zstein_(ptr noundef %808, ptr noundef %811, ptr noundef %814, ptr noundef %815, ptr noundef %817, ptr noundef %820, ptr noundef %823, ptr noundef %826, ptr noundef %827, ptr noundef %830, ptr noundef %833, ptr noundef %835, ptr noundef %836)
  %838 = load ptr, ptr %25, align 8, !tbaa !5
  %839 = load ptr, ptr %26, align 8, !tbaa !5
  %840 = load ptr, ptr %34, align 8, !tbaa !5
  %841 = load ptr, ptr %27, align 8, !tbaa !5
  %842 = load i64, ptr %45, align 8, !tbaa !9
  %843 = getelementptr inbounds %struct.doublecomplex, ptr %841, i64 %842
  %844 = load ptr, ptr %28, align 8, !tbaa !5
  %845 = load ptr, ptr %38, align 8, !tbaa !5
  %846 = load i64, ptr %84, align 8, !tbaa !9
  %847 = getelementptr inbounds %struct.doublecomplex, ptr %845, i64 %846
  %848 = load ptr, ptr %36, align 8, !tbaa !5
  %849 = load i64, ptr %47, align 8, !tbaa !9
  %850 = getelementptr inbounds %struct.doublecomplex, ptr %848, i64 %849
  %851 = load ptr, ptr %37, align 8, !tbaa !5
  %852 = load ptr, ptr %38, align 8, !tbaa !5
  %853 = load i64, ptr %86, align 8, !tbaa !9
  %854 = getelementptr inbounds %struct.doublecomplex, ptr %852, i64 %853
  %855 = call i32 @zunmtr_(ptr noundef @.str, ptr noundef %838, ptr noundef @.str.4, ptr noundef %839, ptr noundef %840, ptr noundef %843, ptr noundef %844, ptr noundef %847, ptr noundef %850, ptr noundef %851, ptr noundef %854, ptr noundef %88, ptr noundef %70)
  br label %856

856:                                              ; preds = %807, %768
  br label %857

857:                                              ; preds = %856, %755
  %858 = load i64, ptr %76, align 8, !tbaa !9
  %859 = icmp eq i64 %858, 1
  br i1 %859, label %860, label %877

860:                                              ; preds = %857
  %861 = load ptr, ptr %43, align 8, !tbaa !5
  %862 = load i64, ptr %861, align 8, !tbaa !9
  %863 = icmp eq i64 %862, 0
  br i1 %863, label %864, label %867

864:                                              ; preds = %860
  %865 = load ptr, ptr %34, align 8, !tbaa !5
  %866 = load i64, ptr %865, align 8, !tbaa !9
  store i64 %866, ptr %63, align 8, !tbaa !9
  br label %871

867:                                              ; preds = %860
  %868 = load ptr, ptr %43, align 8, !tbaa !5
  %869 = load i64, ptr %868, align 8, !tbaa !9
  %870 = sub nsw i64 %869, 1
  store i64 %870, ptr %63, align 8, !tbaa !9
  br label %871

871:                                              ; preds = %867, %864
  %872 = load double, ptr %69, align 8, !tbaa !11
  %873 = fdiv double 1.000000e+00, %872
  store double %873, ptr %50, align 8, !tbaa !11
  %874 = load ptr, ptr %35, align 8, !tbaa !5
  %875 = getelementptr inbounds double, ptr %874, i64 1
  %876 = call i32 @f2c_dscal(ptr noundef %63, ptr noundef %50, ptr noundef %875, ptr noundef @c__1)
  br label %877

877:                                              ; preds = %871, %857
  %878 = load i64, ptr %73, align 8, !tbaa !9
  %879 = icmp ne i64 %878, 0
  br i1 %879, label %880, label %999

880:                                              ; preds = %877
  %881 = load ptr, ptr %34, align 8, !tbaa !5
  %882 = load i64, ptr %881, align 8, !tbaa !9
  %883 = sub nsw i64 %882, 1
  store i64 %883, ptr %48, align 8, !tbaa !9
  store i64 1, ptr %53, align 8, !tbaa !9
  br label %884

884:                                              ; preds = %995, %880
  %885 = load i64, ptr %53, align 8, !tbaa !9
  %886 = load i64, ptr %48, align 8, !tbaa !9
  %887 = icmp sle i64 %885, %886
  br i1 %887, label %888, label %998

888:                                              ; preds = %884
  store i64 0, ptr %52, align 8, !tbaa !9
  %889 = load ptr, ptr %35, align 8, !tbaa !5
  %890 = load i64, ptr %53, align 8, !tbaa !9
  %891 = getelementptr inbounds double, ptr %889, i64 %890
  %892 = load double, ptr %891, align 8, !tbaa !11
  store double %892, ptr %59, align 8, !tbaa !11
  %893 = load ptr, ptr %34, align 8, !tbaa !5
  %894 = load i64, ptr %893, align 8, !tbaa !9
  store i64 %894, ptr %49, align 8, !tbaa !9
  %895 = load i64, ptr %53, align 8, !tbaa !9
  %896 = add nsw i64 %895, 1
  store i64 %896, ptr %55, align 8, !tbaa !9
  br label %897

897:                                              ; preds = %915, %888
  %898 = load i64, ptr %55, align 8, !tbaa !9
  %899 = load i64, ptr %49, align 8, !tbaa !9
  %900 = icmp sle i64 %898, %899
  br i1 %900, label %901, label %918

901:                                              ; preds = %897
  %902 = load ptr, ptr %35, align 8, !tbaa !5
  %903 = load i64, ptr %55, align 8, !tbaa !9
  %904 = getelementptr inbounds double, ptr %902, i64 %903
  %905 = load double, ptr %904, align 8, !tbaa !11
  %906 = load double, ptr %59, align 8, !tbaa !11
  %907 = fcmp olt double %905, %906
  br i1 %907, label %908, label %914

908:                                              ; preds = %901
  %909 = load i64, ptr %55, align 8, !tbaa !9
  store i64 %909, ptr %52, align 8, !tbaa !9
  %910 = load ptr, ptr %35, align 8, !tbaa !5
  %911 = load i64, ptr %55, align 8, !tbaa !9
  %912 = getelementptr inbounds double, ptr %910, i64 %911
  %913 = load double, ptr %912, align 8, !tbaa !11
  store double %913, ptr %59, align 8, !tbaa !11
  br label %914

914:                                              ; preds = %908, %901
  br label %915

915:                                              ; preds = %914
  %916 = load i64, ptr %55, align 8, !tbaa !9
  %917 = add nsw i64 %916, 1
  store i64 %917, ptr %55, align 8, !tbaa !9
  br label %897, !llvm.loop !21

918:                                              ; preds = %897
  %919 = load i64, ptr %52, align 8, !tbaa !9
  %920 = icmp ne i64 %919, 0
  br i1 %920, label %921, label %994

921:                                              ; preds = %918
  %922 = load ptr, ptr %41, align 8, !tbaa !5
  %923 = load i64, ptr %77, align 8, !tbaa !9
  %924 = load i64, ptr %52, align 8, !tbaa !9
  %925 = add nsw i64 %923, %924
  %926 = sub nsw i64 %925, 1
  %927 = getelementptr inbounds i64, ptr %922, i64 %926
  %928 = load i64, ptr %927, align 8, !tbaa !9
  store i64 %928, ptr %67, align 8, !tbaa !9
  %929 = load ptr, ptr %35, align 8, !tbaa !5
  %930 = load i64, ptr %53, align 8, !tbaa !9
  %931 = getelementptr inbounds double, ptr %929, i64 %930
  %932 = load double, ptr %931, align 8, !tbaa !11
  %933 = load ptr, ptr %35, align 8, !tbaa !5
  %934 = load i64, ptr %52, align 8, !tbaa !9
  %935 = getelementptr inbounds double, ptr %933, i64 %934
  store double %932, ptr %935, align 8, !tbaa !11
  %936 = load ptr, ptr %41, align 8, !tbaa !5
  %937 = load i64, ptr %77, align 8, !tbaa !9
  %938 = load i64, ptr %53, align 8, !tbaa !9
  %939 = add nsw i64 %937, %938
  %940 = sub nsw i64 %939, 1
  %941 = getelementptr inbounds i64, ptr %936, i64 %940
  %942 = load i64, ptr %941, align 8, !tbaa !9
  %943 = load ptr, ptr %41, align 8, !tbaa !5
  %944 = load i64, ptr %77, align 8, !tbaa !9
  %945 = load i64, ptr %52, align 8, !tbaa !9
  %946 = add nsw i64 %944, %945
  %947 = sub nsw i64 %946, 1
  %948 = getelementptr inbounds i64, ptr %943, i64 %947
  store i64 %942, ptr %948, align 8, !tbaa !9
  %949 = load double, ptr %59, align 8, !tbaa !11
  %950 = load ptr, ptr %35, align 8, !tbaa !5
  %951 = load i64, ptr %53, align 8, !tbaa !9
  %952 = getelementptr inbounds double, ptr %950, i64 %951
  store double %949, ptr %952, align 8, !tbaa !11
  %953 = load i64, ptr %67, align 8, !tbaa !9
  %954 = load ptr, ptr %41, align 8, !tbaa !5
  %955 = load i64, ptr %77, align 8, !tbaa !9
  %956 = load i64, ptr %53, align 8, !tbaa !9
  %957 = add nsw i64 %955, %956
  %958 = sub nsw i64 %957, 1
  %959 = getelementptr inbounds i64, ptr %954, i64 %958
  store i64 %953, ptr %959, align 8, !tbaa !9
  %960 = load ptr, ptr %26, align 8, !tbaa !5
  %961 = load ptr, ptr %36, align 8, !tbaa !5
  %962 = load i64, ptr %52, align 8, !tbaa !9
  %963 = load i64, ptr %46, align 8, !tbaa !9
  %964 = mul nsw i64 %962, %963
  %965 = add nsw i64 %964, 1
  %966 = getelementptr inbounds %struct.doublecomplex, ptr %961, i64 %965
  %967 = load ptr, ptr %36, align 8, !tbaa !5
  %968 = load i64, ptr %53, align 8, !tbaa !9
  %969 = load i64, ptr %46, align 8, !tbaa !9
  %970 = mul nsw i64 %968, %969
  %971 = add nsw i64 %970, 1
  %972 = getelementptr inbounds %struct.doublecomplex, ptr %967, i64 %971
  %973 = call i32 @f2c_zswap(ptr noundef %960, ptr noundef %966, ptr noundef @c__1, ptr noundef %972, ptr noundef @c__1)
  %974 = load ptr, ptr %43, align 8, !tbaa !5
  %975 = load i64, ptr %974, align 8, !tbaa !9
  %976 = icmp ne i64 %975, 0
  br i1 %976, label %977, label %993

977:                                              ; preds = %921
  %978 = load ptr, ptr %42, align 8, !tbaa !5
  %979 = load i64, ptr %52, align 8, !tbaa !9
  %980 = getelementptr inbounds i64, ptr %978, i64 %979
  %981 = load i64, ptr %980, align 8, !tbaa !9
  store i64 %981, ptr %67, align 8, !tbaa !9
  %982 = load ptr, ptr %42, align 8, !tbaa !5
  %983 = load i64, ptr %53, align 8, !tbaa !9
  %984 = getelementptr inbounds i64, ptr %982, i64 %983
  %985 = load i64, ptr %984, align 8, !tbaa !9
  %986 = load ptr, ptr %42, align 8, !tbaa !5
  %987 = load i64, ptr %52, align 8, !tbaa !9
  %988 = getelementptr inbounds i64, ptr %986, i64 %987
  store i64 %985, ptr %988, align 8, !tbaa !9
  %989 = load i64, ptr %67, align 8, !tbaa !9
  %990 = load ptr, ptr %42, align 8, !tbaa !5
  %991 = load i64, ptr %53, align 8, !tbaa !9
  %992 = getelementptr inbounds i64, ptr %990, i64 %991
  store i64 %989, ptr %992, align 8, !tbaa !9
  br label %993

993:                                              ; preds = %977, %921
  br label %994

994:                                              ; preds = %993, %918
  br label %995

995:                                              ; preds = %994
  %996 = load i64, ptr %53, align 8, !tbaa !9
  %997 = add nsw i64 %996, 1
  store i64 %997, ptr %53, align 8, !tbaa !9
  br label %884, !llvm.loop !22

998:                                              ; preds = %884
  br label %999

999:                                              ; preds = %998, %877
  %1000 = load i64, ptr %91, align 8, !tbaa !9
  %1001 = sitofp i64 %1000 to double
  %1002 = load ptr, ptr %38, align 8, !tbaa !5
  %1003 = getelementptr inbounds %struct.doublecomplex, ptr %1002, i64 1
  %1004 = getelementptr inbounds %struct.doublecomplex, ptr %1003, i32 0, i32 0
  store double %1001, ptr %1004, align 8, !tbaa !13
  %1005 = load ptr, ptr %38, align 8, !tbaa !5
  %1006 = getelementptr inbounds %struct.doublecomplex, ptr %1005, i64 1
  %1007 = getelementptr inbounds %struct.doublecomplex, ptr %1006, i32 0, i32 1
  store double 0.000000e+00, ptr %1007, align 8, !tbaa !15
  store i32 0, ptr %22, align 4
  store i32 1, ptr %93, align 4
  br label %1008

1008:                                             ; preds = %999, %450, %376, %369, %361
  call void @llvm.lifetime.end.p0(i64 8, ptr %92) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %91) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %90) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %89) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %88) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %87) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %86) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %85) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %84) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %83) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %82) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %81) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %80) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %79) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %78) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %77) #4
  call void @llvm.lifetime.end.p0(i64 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 8, ptr %73) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %72) #4
  call void @llvm.lifetime.end.p0(i64 1, ptr %71) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #4
  call void @llvm.lifetime.end.p0(i64 8, 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 8, ptr %54) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #4
  call void @llvm.lifetime.end.p0(i64 8, 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 8, ptr %48) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #4
  %1009 = load i32, ptr %22, align 4
  ret i32 %1009
}

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

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

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

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

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

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

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

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

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

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

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

declare i32 @f2c_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 = !{!"long", !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 i64, align 8
@.str.6 = external hidden unnamed_addr constant [7 x i8], align 1
@c_n1 = external hidden global i64, align 8
@.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 noundef i32 @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 i64, align 8
  %23 = alloca i64, align 8
  %24 = alloca double, align 8
  %25 = alloca i64, align 8
  %26 = alloca double, align 8
  %27 = alloca double, align 8
  %28 = alloca i64, align 8
  %29 = alloca double, align 8
  %30 = alloca i64, align 8
  %31 = alloca [1 x i8], align 1
  %32 = alloca double, align 8
  %33 = alloca i64, align 8
  %34 = alloca i64, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %22) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %23) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %24) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %25) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %26) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %27) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %28) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %29) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %30) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %31) #6
  call void @llvm.lifetime.start.p0(i64 8, 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 i64, ptr %5, align 8, !tbaa !5
  %36 = add i64 %35, 1
  %37 = xor i64 %35, -1
  %38 = getelementptr inbounds %struct.doublecomplex, ptr %4, i64 %37
  %39 = getelementptr inbounds i8, ptr %12, i64 -8
  %40 = load i64, ptr %14, align 8, !tbaa !5
  %41 = xor i64 %40, -1
  %42 = getelementptr inbounds %struct.doublecomplex, ptr %13, i64 %41
  %43 = getelementptr inbounds i8, ptr %17, i64 -8
  %44 = getelementptr inbounds i8, ptr %18, i64 -8
  %45 = getelementptr inbounds i8, ptr %19, i64 -8
  %46 = tail call i64 @lsame_(ptr noundef %2, ptr noundef nonnull @.str) #6
  %47 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.1) #6
  %48 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.2) #6
  %49 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.1) #6
  %50 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.3) #6
  %51 = load i64, ptr %16, align 8, !tbaa !5
  %52 = icmp eq i64 %51, -1
  store i64 0, ptr %20, align 8, !tbaa !5
  %.not = icmp ne i64 %47, 0
  br i1 %.not, label %55, label %53

53:                                               ; preds = %21
  %54 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.4) #6
  %.not380 = icmp eq i64 %54, 0
  br i1 %.not380, label %.thread413.sink.split, label %55

55:                                               ; preds = %53, %21
  %56 = icmp ne i64 %48, 0
  %57 = icmp ne i64 %49, 0
  %or.cond = select i1 %56, i1 true, i1 %57
  %58 = icmp ne i64 %50, 0
  %or.cond3 = select i1 %or.cond, i1 true, i1 %58
  br i1 %or.cond3, label %59, label %.thread413.sink.split

59:                                               ; preds = %55
  %.not381 = icmp eq i64 %46, 0
  br i1 %.not381, label %60, label %62

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

62:                                               ; preds = %60, %59
  %63 = load i64, ptr %3, align 8, !tbaa !5
  %64 = icmp slt i64 %63, 0
  br i1 %64, label %.thread413.sink.split, label %65

65:                                               ; preds = %62
  %66 = load i64, ptr %5, align 8, !tbaa !5
  %spec.select = tail call i64 @llvm.umax.i64(i64 %63, i64 1)
  %67 = icmp slt i64 %66, %spec.select
  br i1 %67, label %.thread413.sink.split, label %68

68:                                               ; preds = %65
  br i1 %57, label %69, label %74

69:                                               ; preds = %68
  %.not427 = icmp eq i64 %63, 0
  br i1 %.not427, label %83, label %70

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

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

75:                                               ; preds = %74
  %76 = load i64, ptr %8, align 8, !tbaa !5
  %77 = icmp slt i64 %76, 1
  %78 = icmp ugt i64 %76, %spec.select
  %or.cond425 = or i1 %77, %78
  br i1 %or.cond425, label %.thread413.sink.split, label %79

79:                                               ; preds = %75
  %80 = load i64, ptr %9, align 8, !tbaa !5
  %. = tail call i64 @llvm.umin.i64(i64 %63, i64 %76)
  %81 = icmp slt i64 %80, %.
  %82 = icmp ugt i64 %80, %63
  %or.cond426 = or i1 %81, %82
  br i1 %or.cond426, label %.thread413.sink.split, label %83

83:                                               ; preds = %79, %70, %69, %74
  %.pr = load i64, ptr %20, align 8, !tbaa !5
  %84 = icmp eq i64 %.pr, 0
  br i1 %84, label %85, label %.thread413

85:                                               ; preds = %83
  %86 = load i64, ptr %14, align 8, !tbaa !5
  %87 = icmp slt i64 %86, 1
  %88 = icmp ult i64 %86, %63
  %or.cond459 = and i1 %.not, %88
  %or.cond463 = or i1 %87, %or.cond459
  br i1 %or.cond463, label %.thread413.sink.split, label %.thread

.thread:                                          ; preds = %85
  %89 = icmp ult i64 %63, 2
  br i1 %89, label %99, label %90

90:                                               ; preds = %.thread
  %91 = tail call i64 @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) #6
  %92 = tail call i64 @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) #6
  %93 = tail call i64 @llvm.smax.i64(i64 %91, i64 %92)
  %94 = add nsw i64 %93, 1
  %95 = load i64, ptr %3, align 8, !tbaa !5
  %96 = mul nsw i64 %94, %95
  %97 = tail call i64 @llvm.smax.i64(i64 %96, i64 1)
  %98 = uitofp nneg i64 %97 to double
  br label %99

99:                                               ; preds = %.thread, %90
  %.sink = phi double [ %98, %90 ], [ 1.000000e+00, %.thread ]
  %.0355 = phi i64 [ %97, %90 ], [ undef, %.thread ]
  store double %.sink, ptr %15, align 8
  %100 = getelementptr inbounds i8, ptr %15, i64 8
  store double 0.000000e+00, ptr %100, align 8
  store i64 1, ptr %22, align 8, !tbaa !5
  %101 = load i64, ptr %3, align 8, !tbaa !5
  %102 = shl i64 %101, 1
  store i64 %102, ptr %23, align 8, !tbaa !5
  %103 = load i64, ptr %16, align 8, !tbaa !5
  %104 = tail call i64 @llvm.smax.i64(i64 %102, i64 1)
  %105 = icmp sge i64 %103, %104
  %or.cond5 = select i1 %105, i1 true, i1 %52
  br i1 %or.cond5, label %.thread408, label %.thread413.sink.split

.thread408:                                       ; preds = %99
  %.pr410.pr = load i64, ptr %20, align 8, !tbaa !5
  %.not385 = icmp eq i64 %.pr410.pr, 0
  br i1 %.not385, label %109, label %.thread413

.thread413.sink.split:                            ; preds = %99, %85, %79, %75, %70, %65, %62, %60, %55, %53
  %.sink460 = phi i64 [ -1, %53 ], [ -2, %55 ], [ -3, %60 ], [ -4, %62 ], [ -6, %65 ], [ -8, %70 ], [ -9, %75 ], [ -10, %79 ], [ -15, %85 ], [ -17, %99 ]
  store i64 %.sink460, ptr %20, align 8, !tbaa !5
  br label %.thread413

.thread413:                                       ; preds = %.thread413.sink.split, %83, %.thread408
  %106 = phi i64 [ %.pr410.pr, %.thread408 ], [ %.pr, %83 ], [ %.sink460, %.thread413.sink.split ]
  %107 = sub nsw i64 0, %106
  store i64 %107, ptr %22, align 8, !tbaa !5
  %108 = call i32 @xerbla_(ptr noundef nonnull @.str.8, ptr noundef nonnull %22) #6
  br label %283

109:                                              ; preds = %.thread408
  br i1 %52, label %283, label %110

110:                                              ; preds = %109
  store i64 0, ptr %11, align 8, !tbaa !5
  %111 = load i64, ptr %3, align 8, !tbaa !5
  switch i64 %111, label %126 [
    i64 0, label %283
    i64 1, label %112
  ]

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

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

115:                                              ; preds = %112
  %.not400 = icmp eq i64 %49, 0
  br i1 %.not400, label %124, label %116

116:                                              ; preds = %115
  %117 = load double, ptr %6, align 8, !tbaa !9
  %118 = load double, ptr %4, align 8, !tbaa !11
  %119 = fcmp olt double %117, %118
  br i1 %119, label %120, label %124

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

123:                                              ; preds = %120
  store i64 1, ptr %11, align 8, !tbaa !5
  br label %.sink.split

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

124:                                              ; preds = %.sink.split, %115, %120, %116
  br i1 %.not, label %125, label %283

125:                                              ; preds = %124
  store <2 x double> <double 1.000000e+00, double 0.000000e+00>, ptr %13, align 8, !tbaa !9
  br label %283

126:                                              ; preds = %110
  %127 = tail call double @dlamch_(ptr noundef nonnull @.str.9) #6
  %128 = tail call double @dlamch_(ptr noundef nonnull @.str.10) #6
  %129 = fdiv double %127, %128
  %130 = fdiv double 1.000000e+00, %129
  %131 = tail call double @sqrt(double noundef %129) #6
  %132 = tail call double @sqrt(double noundef %130) #6
  store double %132, ptr %24, align 8, !tbaa !9
  %133 = tail call double @sqrt(double noundef %127) #6
  %134 = tail call double @sqrt(double noundef %133) #6
  %135 = fdiv double 1.000000e+00, %134
  %136 = fcmp ole double %132, %135
  %137 = select i1 %136, double %132, double %135
  %138 = load double, ptr %10, align 8, !tbaa !9
  store double %138, ptr %32, align 8, !tbaa !9
  %.not386 = icmp eq i64 %49, 0
  br i1 %.not386, label %142, label %139

139:                                              ; preds = %126
  %140 = load double, ptr %6, align 8, !tbaa !9
  store double %140, ptr %26, align 8, !tbaa !9
  %141 = load double, ptr %7, align 8, !tbaa !9
  store double %141, ptr %27, align 8, !tbaa !9
  br label %142

142:                                              ; preds = %139, %126
  %143 = 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
  %144 = fcmp ogt double %143, 0.000000e+00
  %145 = fcmp olt double %143, %131
  %or.cond402 = select i1 %144, i1 %145, i1 false
  br i1 %or.cond402, label %148, label %146

146:                                              ; preds = %142
  %147 = fcmp ogt double %143, %137
  br i1 %147, label %148, label %177

148:                                              ; preds = %146, %142
  %.pn = phi double [ %131, %142 ], [ %137, %146 ]
  %storemerge428 = fdiv double %.pn, %143
  store double %storemerge428, ptr %29, align 8, !tbaa !9
  %149 = load i64, ptr %3, align 8, !tbaa !5
  store i64 %149, ptr %22, align 8, !tbaa !5
  br i1 %.not381, label %159, label %150

150:                                              ; preds = %148
  store i64 1, ptr %25, align 8, !tbaa !5
  %.not390432 = icmp slt i64 %149, 1
  br i1 %.not390432, label %.loopexit430, label %.lr.ph

.lr.ph:                                           ; preds = %150, %.lr.ph
  %storemerge389433 = phi i64 [ %157, %.lr.ph ], [ 1, %150 ]
  %151 = load i64, ptr %3, align 8, !tbaa !5
  %reass.sub = sub i64 %151, %storemerge389433
  %152 = add i64 %reass.sub, 1
  store i64 %152, ptr %23, align 8, !tbaa !5
  %153 = mul i64 %storemerge389433, %36
  %154 = getelementptr inbounds %struct.doublecomplex, ptr %38, i64 %153
  %155 = call i32 @f2c_zdscal(ptr noundef nonnull %23, ptr noundef nonnull %29, ptr noundef %154, ptr noundef nonnull @c__1) #6
  %156 = load i64, ptr %25, align 8, !tbaa !5
  %157 = add nsw i64 %156, 1
  store i64 %157, ptr %25, align 8, !tbaa !5
  %158 = load i64, ptr %22, align 8, !tbaa !5
  %.not390.not = icmp slt i64 %156, %158
  br i1 %.not390.not, label %.lr.ph, label %.loopexit430, !llvm.loop !13

159:                                              ; preds = %148
  %invariant.gep = getelementptr i8, ptr %38, i64 16
  store i64 1, ptr %25, align 8, !tbaa !5
  %.not388434 = icmp slt i64 %149, 1
  br i1 %.not388434, label %.loopexit430, label %.lr.ph436

.lr.ph436:                                        ; preds = %159, %.lr.ph436
  %storemerge435 = phi i64 [ %163, %.lr.ph436 ], [ 1, %159 ]
  %160 = mul nsw i64 %storemerge435, %35
  %gep = getelementptr %struct.doublecomplex, ptr %invariant.gep, i64 %160
  %161 = call i32 @f2c_zdscal(ptr noundef nonnull %25, ptr noundef nonnull %29, ptr noundef %gep, ptr noundef nonnull @c__1) #6
  %162 = load i64, ptr %25, align 8, !tbaa !5
  %163 = add nsw i64 %162, 1
  store i64 %163, ptr %25, align 8, !tbaa !5
  %164 = load i64, ptr %22, align 8, !tbaa !5
  %.not388.not = icmp slt i64 %162, %164
  br i1 %.not388.not, label %.lr.ph436, label %.loopexit430, !llvm.loop !15

.loopexit430:                                     ; preds = %.lr.ph, %.lr.ph436, %150, %159
  %165 = load double, ptr %10, align 8, !tbaa !9
  %166 = fcmp ogt double %165, 0.000000e+00
  br i1 %166, label %167, label %170

167:                                              ; preds = %.loopexit430
  %168 = load double, ptr %29, align 8, !tbaa !9
  %169 = fmul double %165, %168
  store double %169, ptr %32, align 8, !tbaa !9
  br label %170

170:                                              ; preds = %167, %.loopexit430
  br i1 %.not386, label %177, label %171

171:                                              ; preds = %170
  %172 = load double, ptr %6, align 8, !tbaa !9
  %173 = load double, ptr %29, align 8, !tbaa !9
  %174 = fmul double %172, %173
  store double %174, ptr %26, align 8, !tbaa !9
  %175 = load double, ptr %7, align 8, !tbaa !9
  %176 = fmul double %173, %175
  store double %176, ptr %27, align 8, !tbaa !9
  br label %177

177:                                              ; preds = %146, %170, %171
  %178 = phi i1 [ true, %170 ], [ true, %171 ], [ false, %146 ]
  %179 = load i64, ptr %3, align 8, !tbaa !5
  %reass.add = shl i64 %179, 1
  %180 = or disjoint i64 %reass.add, 1
  %181 = load i64, ptr %16, align 8, !tbaa !5
  %182 = sub i64 %181, %179
  store i64 %182, ptr %33, align 8, !tbaa !5
  %183 = getelementptr double, ptr %17, i64 %179
  %184 = getelementptr %struct.doublecomplex, ptr %15, i64 %179
  %185 = call i32 @zhetrd_(ptr noundef %2, ptr noundef nonnull %3, ptr noundef %4, ptr noundef nonnull %5, ptr noundef %17, ptr noundef %183, ptr noundef nonnull %15, ptr noundef %184, ptr noundef nonnull %33, ptr noundef nonnull %30) #6
  %.not391 = icmp eq i64 %50, 0
  br i1 %.not391, label %193, label %186

186:                                              ; preds = %177
  %187 = load i64, ptr %8, align 8, !tbaa !5
  %188 = icmp eq i64 %187, 1
  br i1 %188, label %189, label %193

189:                                              ; preds = %186
  %190 = load i64, ptr %9, align 8, !tbaa !5
  %191 = load i64, ptr %3, align 8, !tbaa !5
  %192 = icmp eq i64 %190, %191
  br label %193

193:                                              ; preds = %189, %186, %177
  %194 = phi i1 [ false, %186 ], [ false, %177 ], [ %192, %189 ]
  %or.cond9 = or i1 %56, %194
  br i1 %or.cond9, label %195, label %225

195:                                              ; preds = %193
  %196 = load double, ptr %10, align 8, !tbaa !9
  %197 = fcmp ugt double %196, 0.000000e+00
  br i1 %197, label %225, label %198

198:                                              ; preds = %195
  %199 = call i32 @f2c_dcopy(ptr noundef nonnull %3, ptr noundef %17, ptr noundef nonnull @c__1, ptr noundef %12, ptr noundef nonnull @c__1) #6
  %200 = load i64, ptr %3, align 8, !tbaa !5
  %201 = shl i64 %200, 1
  %202 = add nsw i64 %201, %180
  br i1 %.not, label %208, label %203

203:                                              ; preds = %198
  %204 = add nsw i64 %200, -1
  store i64 %204, ptr %22, align 8, !tbaa !5
  %205 = getelementptr inbounds double, ptr %43, i64 %202
  %206 = call i32 @f2c_dcopy(ptr noundef nonnull %22, ptr noundef %183, ptr noundef nonnull @c__1, ptr noundef nonnull %205, ptr noundef nonnull @c__1) #6
  %207 = call i32 @dsterf_(ptr noundef nonnull %3, ptr noundef %12, ptr noundef nonnull %205, ptr noundef nonnull %20) #6
  br label %.loopexit429

208:                                              ; preds = %198
  %209 = call i32 @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
  %210 = call i32 @zungtr_(ptr noundef %2, ptr noundef nonnull %3, ptr noundef %13, ptr noundef nonnull %14, ptr noundef nonnull %15, ptr noundef %184, ptr noundef nonnull %33, ptr noundef nonnull %30) #6
  %211 = load i64, ptr %3, align 8, !tbaa !5
  %212 = add nsw i64 %211, -1
  store i64 %212, ptr %22, align 8, !tbaa !5
  %213 = getelementptr inbounds double, ptr %43, i64 %202
  %214 = call i32 @f2c_dcopy(ptr noundef nonnull %22, ptr noundef %183, ptr noundef nonnull @c__1, ptr noundef nonnull %213, ptr noundef nonnull @c__1) #6
  %215 = getelementptr double, ptr %17, i64 %reass.add
  %216 = call i32 @zsteqr_(ptr noundef %0, ptr noundef nonnull %3, ptr noundef %12, ptr noundef nonnull %213, ptr noundef %13, ptr noundef nonnull %14, ptr noundef nonnull %215, ptr noundef nonnull %20) #6
  %217 = load i64, ptr %20, align 8, !tbaa !5
  %218 = icmp eq i64 %217, 0
  br i1 %218, label %219, label %.thread420

219:                                              ; preds = %208
  %220 = load i64, ptr %3, align 8, !tbaa !5
  store i64 %220, ptr %22, align 8, !tbaa !5
  %.not392437 = icmp slt i64 %220, 1
  br i1 %.not392437, label %.loopexit429, label %.lr.ph439.preheader

.lr.ph439.preheader:                              ; preds = %219
  %221 = shl nuw i64 %220, 3
  call void @llvm.memset.p0.i64(ptr align 8 %19, i8 0, i64 %221, i1 false), !tbaa !5
  br label %.loopexit429

.loopexit429:                                     ; preds = %.lr.ph439.preheader, %219, %203
  %.pr419 = load i64, ptr %20, align 8, !tbaa !5
  %222 = icmp eq i64 %.pr419, 0
  br i1 %222, label %223, label %.thread420

223:                                              ; preds = %.loopexit429
  %224 = load i64, ptr %3, align 8, !tbaa !5
  store i64 %224, ptr %11, align 8, !tbaa !5
  br label %234

.thread420:                                       ; preds = %208, %.loopexit429
  store i64 0, ptr %20, align 8, !tbaa !5
  br label %225

225:                                              ; preds = %193, %.thread420, %195
  %.404 = select i1 %.not, i8 66, i8 69
  store i8 %.404, ptr %31, align 1, !tbaa !16
  %226 = load i64, ptr %3, align 8, !tbaa !5
  %227 = getelementptr i64, ptr %18, i64 %226
  %228 = getelementptr double, ptr %17, i64 %reass.add
  %.idx = shl i64 %226, 4
  %229 = getelementptr i8, ptr %18, i64 %.idx
  %230 = call i32 @dstebz_(ptr noundef %1, ptr noundef nonnull %31, ptr noundef nonnull %3, ptr noundef nonnull %26, ptr noundef nonnull %27, ptr noundef %8, ptr noundef %9, ptr noundef nonnull %32, ptr noundef %17, ptr noundef %183, ptr noundef nonnull %11, ptr noundef nonnull %34, ptr noundef %12, ptr noundef %18, ptr noundef %227, ptr noundef nonnull %228, ptr noundef %229, ptr noundef nonnull %20) #6
  br i1 %.not, label %231, label %234

231:                                              ; preds = %225
  %232 = call i32 @zstein_(ptr noundef nonnull %3, ptr noundef %17, ptr noundef %183, ptr noundef nonnull %11, ptr noundef %12, ptr noundef %18, ptr noundef %227, ptr noundef %13, ptr noundef nonnull %14, ptr noundef nonnull %228, ptr noundef %229, ptr noundef %19, ptr noundef nonnull %20) #6
  %233 = call i32 @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 %184, ptr noundef nonnull %33, ptr noundef nonnull %30) #6
  br label %234

234:                                              ; preds = %225, %231, %223
  br i1 %178, label %235, label %246

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

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

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

242:                                              ; preds = %240, %238
  %storemerge394 = phi i64 [ %241, %240 ], [ %239, %238 ]
  store i64 %storemerge394, ptr %28, align 8, !tbaa !5
  %243 = load double, ptr %29, align 8, !tbaa !9
  %244 = fdiv double 1.000000e+00, %243
  store double %244, ptr %24, align 8, !tbaa !9
  %245 = call i32 @f2c_dscal(ptr noundef nonnull %28, ptr noundef nonnull %24, ptr noundef %12, ptr noundef nonnull @c__1) #6
  br label %246

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

247:                                              ; preds = %246
  %248 = load i64, ptr %11, align 8, !tbaa !5
  %249 = add nsw i64 %248, -1
  store i64 %249, ptr %22, align 8, !tbaa !5
  %invariant.gep446 = getelementptr i8, ptr %42, i64 16
  store i64 1, ptr %25, align 8, !tbaa !5
  %.not396450 = icmp slt i64 %248, 2
  br i1 %.not396450, label %.loopexit, label %.lr.ph453

.lr.ph453:                                        ; preds = %247, %._crit_edge.thread
  %storemerge395451 = phi i64 [ %280, %._crit_edge.thread ], [ 1, %247 ]
  %250 = getelementptr inbounds double, ptr %39, i64 %storemerge395451
  %251 = load double, ptr %250, align 8, !tbaa !9
  %252 = load i64, ptr %11, align 8, !tbaa !5
  store i64 %252, ptr %23, align 8, !tbaa !5
  %.not397.not440 = icmp slt i64 %storemerge395451, %252
  br i1 %.not397.not440, label %.lr.ph444.preheader, label %._crit_edge.thread

.lr.ph444.preheader:                              ; preds = %.lr.ph453
  %253 = sub i64 %252, %storemerge395451
  %.neg = add i64 %storemerge395451, 1
  %xtraiter = and i64 %253, 1
  %254 = icmp eq i64 %252, %.neg
  br i1 %254, label %._crit_edge.unr-lcssa, label %.lr.ph444.preheader.new

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

.lr.ph444:                                        ; preds = %.lr.ph444, %.lr.ph444.preheader.new
  %.1357443 = phi i64 [ 0, %.lr.ph444.preheader.new ], [ %.2.1, %.lr.ph444 ]
  %.0358.in442 = phi i64 [ %storemerge395451, %.lr.ph444.preheader.new ], [ %.0358.1, %.lr.ph444 ]
  %.0359441 = phi double [ %251, %.lr.ph444.preheader.new ], [ %.1360.1, %.lr.ph444 ]
  %niter = phi i64 [ 0, %.lr.ph444.preheader.new ], [ %niter.next.1, %.lr.ph444 ]
  %.0358 = add nsw i64 %.0358.in442, 1
  %255 = getelementptr double, ptr %12, i64 %.0358.in442
  %256 = load double, ptr %255, align 8, !tbaa !9
  %257 = fcmp olt double %256, %.0359441
  %.1360 = select i1 %257, double %256, double %.0359441
  %.2 = select i1 %257, i64 %.0358, i64 %.1357443
  %.0358.1 = add nsw i64 %.0358.in442, 2
  %258 = getelementptr double, ptr %12, i64 %.0358
  %259 = load double, ptr %258, align 8, !tbaa !9
  %260 = fcmp olt double %259, %.1360
  %.1360.1 = select i1 %260, double %259, double %.1360
  %.2.1 = select i1 %260, i64 %.0358.1, i64 %.2
  %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.ph444, !llvm.loop !17

._crit_edge.unr-lcssa:                            ; preds = %.lr.ph444, %.lr.ph444.preheader
  %.1360.lcssa.ph = phi double [ poison, %.lr.ph444.preheader ], [ %.1360.1, %.lr.ph444 ]
  %.2.lcssa.ph = phi i64 [ poison, %.lr.ph444.preheader ], [ %.2.1, %.lr.ph444 ]
  %.1357443.unr = phi i64 [ 0, %.lr.ph444.preheader ], [ %.2.1, %.lr.ph444 ]
  %.0358.in442.unr = phi i64 [ %storemerge395451, %.lr.ph444.preheader ], [ %.0358.1, %.lr.ph444 ]
  %.0359441.unr = phi double [ %251, %.lr.ph444.preheader ], [ %.1360.1, %.lr.ph444 ]
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %._crit_edge, label %.lr.ph444.epil

.lr.ph444.epil:                                   ; preds = %._crit_edge.unr-lcssa
  %.0358.epil = add nsw i64 %.0358.in442.unr, 1
  %261 = getelementptr double, ptr %12, i64 %.0358.in442.unr
  %262 = load double, ptr %261, align 8, !tbaa !9
  %263 = fcmp olt double %262, %.0359441.unr
  %.1360.epil = select i1 %263, double %262, double %.0359441.unr
  %.2.epil = select i1 %263, i64 %.0358.epil, i64 %.1357443.unr
  br label %._crit_edge

._crit_edge:                                      ; preds = %._crit_edge.unr-lcssa, %.lr.ph444.epil
  %.1360.lcssa = phi double [ %.1360.lcssa.ph, %._crit_edge.unr-lcssa ], [ %.1360.epil, %.lr.ph444.epil ]
  %.2.lcssa = phi i64 [ %.2.lcssa.ph, %._crit_edge.unr-lcssa ], [ %.2.epil, %.lr.ph444.epil ]
  %.not398 = icmp eq i64 %.2.lcssa, 0
  br i1 %.not398, label %._crit_edge.thread, label %264

264:                                              ; preds = %._crit_edge
  %265 = getelementptr inbounds i64, ptr %44, i64 %.2.lcssa
  %266 = load i64, ptr %265, align 8, !tbaa !5
  %267 = getelementptr inbounds double, ptr %39, i64 %.2.lcssa
  store double %251, ptr %267, align 8, !tbaa !9
  %268 = getelementptr inbounds i64, ptr %44, i64 %storemerge395451
  %269 = load i64, ptr %268, align 8, !tbaa !5
  store i64 %269, ptr %265, align 8, !tbaa !5
  store double %.1360.lcssa, ptr %250, align 8, !tbaa !9
  store i64 %266, ptr %268, align 8, !tbaa !5
  %270 = mul nsw i64 %.2.lcssa, %40
  %gep447 = getelementptr %struct.doublecomplex, ptr %invariant.gep446, i64 %270
  %271 = mul nsw i64 %storemerge395451, %40
  %gep449 = getelementptr %struct.doublecomplex, ptr %invariant.gep446, i64 %271
  %272 = call i32 @f2c_zswap(ptr noundef nonnull %3, ptr noundef %gep447, ptr noundef nonnull @c__1, ptr noundef %gep449, ptr noundef nonnull @c__1) #6
  %273 = load i64, ptr %20, align 8, !tbaa !5
  %.not399 = icmp eq i64 %273, 0
  %.pre = load i64, ptr %25, align 8, !tbaa !5
  br i1 %.not399, label %._crit_edge.thread, label %274

274:                                              ; preds = %264
  %275 = getelementptr inbounds i64, ptr %45, i64 %.2.lcssa
  %276 = load i64, ptr %275, align 8, !tbaa !5
  %277 = getelementptr inbounds i64, ptr %45, i64 %.pre
  %278 = load i64, ptr %277, align 8, !tbaa !5
  store i64 %278, ptr %275, align 8, !tbaa !5
  store i64 %276, ptr %277, align 8, !tbaa !5
  br label %._crit_edge.thread

._crit_edge.thread:                               ; preds = %.lr.ph453, %._crit_edge, %274, %264
  %279 = phi i64 [ %storemerge395451, %._crit_edge ], [ %.pre, %274 ], [ %.pre, %264 ], [ %storemerge395451, %.lr.ph453 ]
  %280 = add nsw i64 %279, 1
  store i64 %280, ptr %25, align 8, !tbaa !5
  %281 = load i64, ptr %22, align 8, !tbaa !5
  %.not396.not = icmp slt i64 %279, %281
  br i1 %.not396.not, label %.lr.ph453, label %.loopexit, !llvm.loop !18

.loopexit:                                        ; preds = %._crit_edge.thread, %247, %246
  %282 = sitofp i64 %.0355 to double
  store double %282, ptr %15, align 8, !tbaa !11
  store double 0.000000e+00, ptr %100, align 8, !tbaa !19
  br label %283

283:                                              ; preds = %124, %125, %110, %109, %.loopexit, %.thread413
  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 8, ptr nonnull %32) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %31) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %30) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %29) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %28) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #6
  ret i32 0
}

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

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

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

declare i32 @xerbla_(ptr noundef, ptr noundef) 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 i32 @f2c_zdscal(ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

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

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

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

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

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

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

declare i32 @f2c_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 i64 @llvm.smax.i64(i64, i64) #4

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

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i64 @llvm.umin.i64(i64, i64) #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 = !{!"long", !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 = distinct !{!13, !14}
!14 = !{!"llvm.loop.mustprogress"}
!15 = distinct !{!15, !14}
!16 = !{!7, !7, i64 0}
!17 = distinct !{!17, !14}
!18 = distinct !{!18, !14}
!19 = !{!12, !10, i64 8}


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