; LLVM IR from niuyishuai/PDCABB :: LAPACK_BLAS/LAPACK (zhseqr)

; 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 [7 x i8], align 1
@c__1 = external hidden global i64, align 8
@.str.6 = external hidden unnamed_addr constant [2 x i8], align 1
@c_b1 = external hidden global %struct.doublecomplex, align 8
@c_b2 = external hidden global %struct.doublecomplex, align 8
@c__2 = external hidden global i64, align 8
@c__12 = external hidden global i64, align 8
@c__49 = external hidden global i64, align 8
@.str.7 = external hidden unnamed_addr constant [2 x i8], align 1

; Function Attrs: nounwind uwtable
define dso_local i32 @zhseqr_(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) #0 {
  %14 = alloca i32, align 4
  %15 = alloca ptr, align 8
  %16 = alloca ptr, align 8
  %17 = alloca ptr, align 8
  %18 = alloca ptr, align 8
  %19 = alloca ptr, align 8
  %20 = alloca ptr, align 8
  %21 = alloca ptr, align 8
  %22 = alloca ptr, align 8
  %23 = alloca ptr, align 8
  %24 = alloca ptr, align 8
  %25 = alloca ptr, align 8
  %26 = alloca ptr, align 8
  %27 = alloca ptr, align 8
  %28 = alloca [2 x ptr], align 16
  %29 = alloca i64, align 8
  %30 = alloca i64, align 8
  %31 = alloca i64, align 8
  %32 = alloca i64, align 8
  %33 = alloca i64, align 8
  %34 = alloca i64, align 8
  %35 = alloca [2 x i64], align 16
  %36 = alloca double, align 8
  %37 = alloca double, align 8
  %38 = alloca double, align 8
  %39 = alloca %struct.doublecomplex, align 8
  %40 = alloca [2 x i8], align 1
  %41 = alloca [2401 x %struct.doublecomplex], align 16
  %42 = alloca i64, align 8
  %43 = alloca i64, align 8
  %44 = alloca i64, align 8
  %45 = alloca [49 x %struct.doublecomplex], align 16
  %46 = alloca i64, align 8
  %47 = alloca i64, align 8
  %48 = alloca i64, align 8
  %49 = alloca i32, align 4
  store ptr %0, ptr %15, align 8, !tbaa !5
  store ptr %1, ptr %16, align 8, !tbaa !5
  store ptr %2, ptr %17, align 8, !tbaa !5
  store ptr %3, ptr %18, align 8, !tbaa !5
  store ptr %4, ptr %19, align 8, !tbaa !5
  store ptr %5, ptr %20, align 8, !tbaa !5
  store ptr %6, ptr %21, align 8, !tbaa !5
  store ptr %7, ptr %22, align 8, !tbaa !5
  store ptr %8, ptr %23, align 8, !tbaa !5
  store ptr %9, ptr %24, align 8, !tbaa !5
  store ptr %10, ptr %25, align 8, !tbaa !5
  store ptr %11, ptr %26, align 8, !tbaa !5
  store ptr %12, ptr %27, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %28) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #3
  call void @llvm.lifetime.start.p0(i64 16, ptr %35) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #3
  call void @llvm.lifetime.start.p0(i64 16, ptr %39) #3
  call void @llvm.lifetime.start.p0(i64 2, ptr %40) #3
  call void @llvm.lifetime.start.p0(i64 38416, ptr %41) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #3
  call void @llvm.lifetime.start.p0(i64 784, ptr %45) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %47) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %48) #3
  %50 = load ptr, ptr %21, align 8, !tbaa !5
  %51 = load i64, ptr %50, align 8, !tbaa !9
  store i64 %51, ptr %29, align 8, !tbaa !9
  %52 = load i64, ptr %29, align 8, !tbaa !9
  %53 = add nsw i64 1, %52
  store i64 %53, ptr %30, align 8, !tbaa !9
  %54 = load i64, ptr %30, align 8, !tbaa !9
  %55 = load ptr, ptr %20, align 8, !tbaa !5
  %56 = sub i64 0, %54
  %57 = getelementptr inbounds %struct.doublecomplex, ptr %55, i64 %56
  store ptr %57, ptr %20, align 8, !tbaa !5
  %58 = load ptr, ptr %22, align 8, !tbaa !5
  %59 = getelementptr inbounds %struct.doublecomplex, ptr %58, i32 -1
  store ptr %59, ptr %22, align 8, !tbaa !5
  %60 = load ptr, ptr %24, align 8, !tbaa !5
  %61 = load i64, ptr %60, align 8, !tbaa !9
  store i64 %61, ptr %31, align 8, !tbaa !9
  %62 = load i64, ptr %31, align 8, !tbaa !9
  %63 = add nsw i64 1, %62
  store i64 %63, ptr %32, align 8, !tbaa !9
  %64 = load i64, ptr %32, align 8, !tbaa !9
  %65 = load ptr, ptr %23, align 8, !tbaa !5
  %66 = sub i64 0, %64
  %67 = getelementptr inbounds %struct.doublecomplex, ptr %65, i64 %66
  store ptr %67, ptr %23, align 8, !tbaa !5
  %68 = load ptr, ptr %25, align 8, !tbaa !5
  %69 = getelementptr inbounds %struct.doublecomplex, ptr %68, i32 -1
  store ptr %69, ptr %25, align 8, !tbaa !5
  %70 = load ptr, ptr %15, align 8, !tbaa !5
  %71 = call i64 @lsame_(ptr noundef %70, ptr noundef @.str)
  store i64 %71, ptr %46, align 8, !tbaa !9
  %72 = load ptr, ptr %16, align 8, !tbaa !5
  %73 = call i64 @lsame_(ptr noundef %72, ptr noundef @.str.1)
  store i64 %73, ptr %44, align 8, !tbaa !9
  %74 = load i64, ptr %44, align 8, !tbaa !9
  %75 = icmp ne i64 %74, 0
  br i1 %75, label %80, label %76

76:                                               ; preds = %13
  %77 = load ptr, ptr %16, align 8, !tbaa !5
  %78 = call i64 @lsame_(ptr noundef %77, ptr noundef @.str.2)
  %79 = icmp ne i64 %78, 0
  br label %80

80:                                               ; preds = %76, %13
  %81 = phi i1 [ true, %13 ], [ %79, %76 ]
  %82 = zext i1 %81 to i32
  %83 = sext i32 %82 to i64
  store i64 %83, ptr %47, align 8, !tbaa !9
  %84 = load ptr, ptr %17, align 8, !tbaa !5
  %85 = load i64, ptr %84, align 8, !tbaa !9
  %86 = icmp sge i64 1, %85
  br i1 %86, label %87, label %88

87:                                               ; preds = %80
  br label %91

88:                                               ; preds = %80
  %89 = load ptr, ptr %17, align 8, !tbaa !5
  %90 = load i64, ptr %89, align 8, !tbaa !9
  br label %91

91:                                               ; preds = %88, %87
  %92 = phi i64 [ 1, %87 ], [ %90, %88 ]
  %93 = sitofp i64 %92 to double
  store double %93, ptr %36, align 8, !tbaa !11
  %94 = load double, ptr %36, align 8, !tbaa !11
  %95 = getelementptr inbounds %struct.doublecomplex, ptr %39, i32 0, i32 0
  store double %94, ptr %95, align 8, !tbaa !13
  %96 = getelementptr inbounds %struct.doublecomplex, ptr %39, i32 0, i32 1
  store double 0.000000e+00, ptr %96, align 8, !tbaa !15
  %97 = getelementptr inbounds %struct.doublecomplex, ptr %39, i32 0, i32 0
  %98 = load double, ptr %97, align 8, !tbaa !13
  %99 = load ptr, ptr %25, align 8, !tbaa !5
  %100 = getelementptr inbounds %struct.doublecomplex, ptr %99, i64 1
  %101 = getelementptr inbounds %struct.doublecomplex, ptr %100, i32 0, i32 0
  store double %98, ptr %101, align 8, !tbaa !13
  %102 = getelementptr inbounds %struct.doublecomplex, ptr %39, i32 0, i32 1
  %103 = load double, ptr %102, align 8, !tbaa !15
  %104 = load ptr, ptr %25, align 8, !tbaa !5
  %105 = getelementptr inbounds %struct.doublecomplex, ptr %104, i64 1
  %106 = getelementptr inbounds %struct.doublecomplex, ptr %105, i32 0, i32 1
  store double %103, ptr %106, align 8, !tbaa !15
  %107 = load ptr, ptr %26, align 8, !tbaa !5
  %108 = load i64, ptr %107, align 8, !tbaa !9
  %109 = icmp eq i64 %108, -1
  %110 = zext i1 %109 to i32
  %111 = sext i32 %110 to i64
  store i64 %111, ptr %48, align 8, !tbaa !9
  %112 = load ptr, ptr %27, align 8, !tbaa !5
  store i64 0, ptr %112, align 8, !tbaa !9
  %113 = load ptr, ptr %15, align 8, !tbaa !5
  %114 = call i64 @lsame_(ptr noundef %113, ptr noundef @.str.3)
  %115 = icmp ne i64 %114, 0
  br i1 %115, label %121, label %116

116:                                              ; preds = %91
  %117 = load i64, ptr %46, align 8, !tbaa !9
  %118 = icmp ne i64 %117, 0
  br i1 %118, label %121, label %119

119:                                              ; preds = %116
  %120 = load ptr, ptr %27, align 8, !tbaa !5
  store i64 -1, ptr %120, align 8, !tbaa !9
  br label %242

121:                                              ; preds = %116, %91
  %122 = load ptr, ptr %16, align 8, !tbaa !5
  %123 = call i64 @lsame_(ptr noundef %122, ptr noundef @.str.4)
  %124 = icmp ne i64 %123, 0
  br i1 %124, label %130, label %125

125:                                              ; preds = %121
  %126 = load i64, ptr %47, align 8, !tbaa !9
  %127 = icmp ne i64 %126, 0
  br i1 %127, label %130, label %128

128:                                              ; preds = %125
  %129 = load ptr, ptr %27, align 8, !tbaa !5
  store i64 -2, ptr %129, align 8, !tbaa !9
  br label %241

130:                                              ; preds = %125, %121
  %131 = load ptr, ptr %17, align 8, !tbaa !5
  %132 = load i64, ptr %131, align 8, !tbaa !9
  %133 = icmp slt i64 %132, 0
  br i1 %133, label %134, label %136

134:                                              ; preds = %130
  %135 = load ptr, ptr %27, align 8, !tbaa !5
  store i64 -3, ptr %135, align 8, !tbaa !9
  br label %240

136:                                              ; preds = %130
  %137 = load ptr, ptr %18, align 8, !tbaa !5
  %138 = load i64, ptr %137, align 8, !tbaa !9
  %139 = icmp slt i64 %138, 1
  br i1 %139, label %153, label %140

140:                                              ; preds = %136
  %141 = load ptr, ptr %18, align 8, !tbaa !5
  %142 = load i64, ptr %141, align 8, !tbaa !9
  %143 = load ptr, ptr %17, align 8, !tbaa !5
  %144 = load i64, ptr %143, align 8, !tbaa !9
  %145 = icmp sge i64 1, %144
  br i1 %145, label %146, label %147

146:                                              ; preds = %140
  br label %150

147:                                              ; preds = %140
  %148 = load ptr, ptr %17, align 8, !tbaa !5
  %149 = load i64, ptr %148, align 8, !tbaa !9
  br label %150

150:                                              ; preds = %147, %146
  %151 = phi i64 [ 1, %146 ], [ %149, %147 ]
  %152 = icmp sgt i64 %142, %151
  br i1 %152, label %153, label %155

153:                                              ; preds = %150, %136
  %154 = load ptr, ptr %27, align 8, !tbaa !5
  store i64 -4, ptr %154, align 8, !tbaa !9
  br label %239

155:                                              ; preds = %150
  %156 = load ptr, ptr %19, align 8, !tbaa !5
  %157 = load i64, ptr %156, align 8, !tbaa !9
  %158 = load ptr, ptr %18, align 8, !tbaa !5
  %159 = load i64, ptr %158, align 8, !tbaa !9
  %160 = load ptr, ptr %17, align 8, !tbaa !5
  %161 = load i64, ptr %160, align 8, !tbaa !9
  %162 = icmp sle i64 %159, %161
  br i1 %162, label %163, label %166

163:                                              ; preds = %155
  %164 = load ptr, ptr %18, align 8, !tbaa !5
  %165 = load i64, ptr %164, align 8, !tbaa !9
  br label %169

166:                                              ; preds = %155
  %167 = load ptr, ptr %17, align 8, !tbaa !5
  %168 = load i64, ptr %167, align 8, !tbaa !9
  br label %169

169:                                              ; preds = %166, %163
  %170 = phi i64 [ %165, %163 ], [ %168, %166 ]
  %171 = icmp slt i64 %157, %170
  br i1 %171, label %178, label %172

172:                                              ; preds = %169
  %173 = load ptr, ptr %19, align 8, !tbaa !5
  %174 = load i64, ptr %173, align 8, !tbaa !9
  %175 = load ptr, ptr %17, align 8, !tbaa !5
  %176 = load i64, ptr %175, align 8, !tbaa !9
  %177 = icmp sgt i64 %174, %176
  br i1 %177, label %178, label %180

178:                                              ; preds = %172, %169
  %179 = load ptr, ptr %27, align 8, !tbaa !5
  store i64 -5, ptr %179, align 8, !tbaa !9
  br label %238

180:                                              ; preds = %172
  %181 = load ptr, ptr %21, align 8, !tbaa !5
  %182 = load i64, ptr %181, align 8, !tbaa !9
  %183 = load ptr, ptr %17, align 8, !tbaa !5
  %184 = load i64, ptr %183, align 8, !tbaa !9
  %185 = icmp sge i64 1, %184
  br i1 %185, label %186, label %187

186:                                              ; preds = %180
  br label %190

187:                                              ; preds = %180
  %188 = load ptr, ptr %17, align 8, !tbaa !5
  %189 = load i64, ptr %188, align 8, !tbaa !9
  br label %190

190:                                              ; preds = %187, %186
  %191 = phi i64 [ 1, %186 ], [ %189, %187 ]
  %192 = icmp slt i64 %182, %191
  br i1 %192, label %193, label %195

193:                                              ; preds = %190
  %194 = load ptr, ptr %27, align 8, !tbaa !5
  store i64 -7, ptr %194, align 8, !tbaa !9
  br label %237

195:                                              ; preds = %190
  %196 = load ptr, ptr %24, align 8, !tbaa !5
  %197 = load i64, ptr %196, align 8, !tbaa !9
  %198 = icmp slt i64 %197, 1
  br i1 %198, label %215, label %199

199:                                              ; preds = %195
  %200 = load i64, ptr %47, align 8, !tbaa !9
  %201 = icmp ne i64 %200, 0
  br i1 %201, label %202, label %217

202:                                              ; preds = %199
  %203 = load ptr, ptr %24, align 8, !tbaa !5
  %204 = load i64, ptr %203, align 8, !tbaa !9
  %205 = load ptr, ptr %17, align 8, !tbaa !5
  %206 = load i64, ptr %205, align 8, !tbaa !9
  %207 = icmp sge i64 1, %206
  br i1 %207, label %208, label %209

208:                                              ; preds = %202
  br label %212

209:                                              ; preds = %202
  %210 = load ptr, ptr %17, align 8, !tbaa !5
  %211 = load i64, ptr %210, align 8, !tbaa !9
  br label %212

212:                                              ; preds = %209, %208
  %213 = phi i64 [ 1, %208 ], [ %211, %209 ]
  %214 = icmp slt i64 %204, %213
  br i1 %214, label %215, label %217

215:                                              ; preds = %212, %195
  %216 = load ptr, ptr %27, align 8, !tbaa !5
  store i64 -10, ptr %216, align 8, !tbaa !9
  br label %236

217:                                              ; preds = %212, %199
  %218 = load ptr, ptr %26, align 8, !tbaa !5
  %219 = load i64, ptr %218, align 8, !tbaa !9
  %220 = load ptr, ptr %17, align 8, !tbaa !5
  %221 = load i64, ptr %220, align 8, !tbaa !9
  %222 = icmp sge i64 1, %221
  br i1 %222, label %223, label %224

223:                                              ; preds = %217
  br label %227

224:                                              ; preds = %217
  %225 = load ptr, ptr %17, align 8, !tbaa !5
  %226 = load i64, ptr %225, align 8, !tbaa !9
  br label %227

227:                                              ; preds = %224, %223
  %228 = phi i64 [ 1, %223 ], [ %226, %224 ]
  %229 = icmp slt i64 %219, %228
  br i1 %229, label %230, label %235

230:                                              ; preds = %227
  %231 = load i64, ptr %48, align 8, !tbaa !9
  %232 = icmp ne i64 %231, 0
  br i1 %232, label %235, label %233

233:                                              ; preds = %230
  %234 = load ptr, ptr %27, align 8, !tbaa !5
  store i64 -12, ptr %234, align 8, !tbaa !9
  br label %235

235:                                              ; preds = %233, %230, %227
  br label %236

236:                                              ; preds = %235, %215
  br label %237

237:                                              ; preds = %236, %193
  br label %238

238:                                              ; preds = %237, %178
  br label %239

239:                                              ; preds = %238, %153
  br label %240

240:                                              ; preds = %239, %134
  br label %241

241:                                              ; preds = %240, %128
  br label %242

242:                                              ; preds = %241, %119
  %243 = load ptr, ptr %27, align 8, !tbaa !5
  %244 = load i64, ptr %243, align 8, !tbaa !9
  %245 = icmp ne i64 %244, 0
  br i1 %245, label %246, label %251

246:                                              ; preds = %242
  %247 = load ptr, ptr %27, align 8, !tbaa !5
  %248 = load i64, ptr %247, align 8, !tbaa !9
  %249 = sub nsw i64 0, %248
  store i64 %249, ptr %33, align 8, !tbaa !9
  %250 = call i32 @xerbla_(ptr noundef @.str.5, ptr noundef %33)
  store i32 0, ptr %14, align 4
  store i32 1, ptr %49, align 4
  br label %634

251:                                              ; preds = %242
  %252 = load ptr, ptr %17, align 8, !tbaa !5
  %253 = load i64, ptr %252, align 8, !tbaa !9
  %254 = icmp eq i64 %253, 0
  br i1 %254, label %255, label %256

255:                                              ; preds = %251
  store i32 0, ptr %14, align 4
  store i32 1, ptr %49, align 4
  br label %634

256:                                              ; preds = %251
  %257 = load i64, ptr %48, align 8, !tbaa !9
  %258 = icmp ne i64 %257, 0
  br i1 %258, label %259, label %316

259:                                              ; preds = %256
  %260 = load ptr, ptr %17, align 8, !tbaa !5
  %261 = load ptr, ptr %18, align 8, !tbaa !5
  %262 = load ptr, ptr %19, align 8, !tbaa !5
  %263 = load ptr, ptr %20, align 8, !tbaa !5
  %264 = load i64, ptr %30, align 8, !tbaa !9
  %265 = getelementptr inbounds %struct.doublecomplex, ptr %263, i64 %264
  %266 = load ptr, ptr %21, align 8, !tbaa !5
  %267 = load ptr, ptr %22, align 8, !tbaa !5
  %268 = getelementptr inbounds %struct.doublecomplex, ptr %267, i64 1
  %269 = load ptr, ptr %18, align 8, !tbaa !5
  %270 = load ptr, ptr %19, align 8, !tbaa !5
  %271 = load ptr, ptr %23, align 8, !tbaa !5
  %272 = load i64, ptr %32, align 8, !tbaa !9
  %273 = getelementptr inbounds %struct.doublecomplex, ptr %271, i64 %272
  %274 = load ptr, ptr %24, align 8, !tbaa !5
  %275 = load ptr, ptr %25, align 8, !tbaa !5
  %276 = getelementptr inbounds %struct.doublecomplex, ptr %275, i64 1
  %277 = load ptr, ptr %26, align 8, !tbaa !5
  %278 = load ptr, ptr %27, align 8, !tbaa !5
  %279 = call i32 @zlaqr0_(ptr noundef %46, ptr noundef %47, ptr noundef %260, ptr noundef %261, ptr noundef %262, ptr noundef %265, ptr noundef %266, ptr noundef %268, ptr noundef %269, ptr noundef %270, ptr noundef %273, ptr noundef %274, ptr noundef %276, ptr noundef %277, ptr noundef %278)
  %280 = load ptr, ptr %25, align 8, !tbaa !5
  %281 = getelementptr inbounds %struct.doublecomplex, ptr %280, i64 1
  %282 = getelementptr inbounds %struct.doublecomplex, ptr %281, i32 0, i32 0
  %283 = load double, ptr %282, align 8, !tbaa !13
  store double %283, ptr %37, align 8, !tbaa !11
  %284 = load ptr, ptr %17, align 8, !tbaa !5
  %285 = load i64, ptr %284, align 8, !tbaa !9
  %286 = icmp sge i64 1, %285
  br i1 %286, label %287, label %288

287:                                              ; preds = %259
  br label %291

288:                                              ; preds = %259
  %289 = load ptr, ptr %17, align 8, !tbaa !5
  %290 = load i64, ptr %289, align 8, !tbaa !9
  br label %291

291:                                              ; preds = %288, %287
  %292 = phi i64 [ 1, %287 ], [ %290, %288 ]
  %293 = sitofp i64 %292 to double
  store double %293, ptr %38, align 8, !tbaa !11
  %294 = load double, ptr %37, align 8, !tbaa !11
  %295 = load double, ptr %38, align 8, !tbaa !11
  %296 = fcmp oge double %294, %295
  br i1 %296, label %297, label %299

297:                                              ; preds = %291
  %298 = load double, ptr %37, align 8, !tbaa !11
  br label %301

299:                                              ; preds = %291
  %300 = load double, ptr %38, align 8, !tbaa !11
  br label %301

301:                                              ; preds = %299, %297
  %302 = phi double [ %298, %297 ], [ %300, %299 ]
  store double %302, ptr %36, align 8, !tbaa !11
  %303 = load double, ptr %36, align 8, !tbaa !11
  %304 = getelementptr inbounds %struct.doublecomplex, ptr %39, i32 0, i32 0
  store double %303, ptr %304, align 8, !tbaa !13
  %305 = getelementptr inbounds %struct.doublecomplex, ptr %39, i32 0, i32 1
  store double 0.000000e+00, ptr %305, align 8, !tbaa !15
  %306 = getelementptr inbounds %struct.doublecomplex, ptr %39, i32 0, i32 0
  %307 = load double, ptr %306, align 8, !tbaa !13
  %308 = load ptr, ptr %25, align 8, !tbaa !5
  %309 = getelementptr inbounds %struct.doublecomplex, ptr %308, i64 1
  %310 = getelementptr inbounds %struct.doublecomplex, ptr %309, i32 0, i32 0
  store double %307, ptr %310, align 8, !tbaa !13
  %311 = getelementptr inbounds %struct.doublecomplex, ptr %39, i32 0, i32 1
  %312 = load double, ptr %311, align 8, !tbaa !15
  %313 = load ptr, ptr %25, align 8, !tbaa !5
  %314 = getelementptr inbounds %struct.doublecomplex, ptr %313, i64 1
  %315 = getelementptr inbounds %struct.doublecomplex, ptr %314, i32 0, i32 1
  store double %312, ptr %315, align 8, !tbaa !15
  store i32 0, ptr %14, align 4
  store i32 1, ptr %49, align 4
  br label %634

316:                                              ; preds = %256
  %317 = load ptr, ptr %18, align 8, !tbaa !5
  %318 = load i64, ptr %317, align 8, !tbaa !9
  %319 = icmp sgt i64 %318, 1
  br i1 %319, label %320, label %333

320:                                              ; preds = %316
  %321 = load ptr, ptr %18, align 8, !tbaa !5
  %322 = load i64, ptr %321, align 8, !tbaa !9
  %323 = sub nsw i64 %322, 1
  store i64 %323, ptr %33, align 8, !tbaa !9
  %324 = load ptr, ptr %21, align 8, !tbaa !5
  %325 = load i64, ptr %324, align 8, !tbaa !9
  %326 = add nsw i64 %325, 1
  store i64 %326, ptr %34, align 8, !tbaa !9
  %327 = load ptr, ptr %20, align 8, !tbaa !5
  %328 = load i64, ptr %30, align 8, !tbaa !9
  %329 = getelementptr inbounds %struct.doublecomplex, ptr %327, i64 %328
  %330 = load ptr, ptr %22, align 8, !tbaa !5
  %331 = getelementptr inbounds %struct.doublecomplex, ptr %330, i64 1
  %332 = call i32 @f2c_zcopy(ptr noundef %33, ptr noundef %329, ptr noundef %34, ptr noundef %331, ptr noundef @c__1)
  br label %333

333:                                              ; preds = %320, %316
  %334 = load ptr, ptr %19, align 8, !tbaa !5
  %335 = load i64, ptr %334, align 8, !tbaa !9
  %336 = load ptr, ptr %17, align 8, !tbaa !5
  %337 = load i64, ptr %336, align 8, !tbaa !9
  %338 = icmp slt i64 %335, %337
  br i1 %338, label %339, label %365

339:                                              ; preds = %333
  %340 = load ptr, ptr %17, align 8, !tbaa !5
  %341 = load i64, ptr %340, align 8, !tbaa !9
  %342 = load ptr, ptr %19, align 8, !tbaa !5
  %343 = load i64, ptr %342, align 8, !tbaa !9
  %344 = sub nsw i64 %341, %343
  store i64 %344, ptr %33, align 8, !tbaa !9
  %345 = load ptr, ptr %21, align 8, !tbaa !5
  %346 = load i64, ptr %345, align 8, !tbaa !9
  %347 = add nsw i64 %346, 1
  store i64 %347, ptr %34, align 8, !tbaa !9
  %348 = load ptr, ptr %20, align 8, !tbaa !5
  %349 = load ptr, ptr %19, align 8, !tbaa !5
  %350 = load i64, ptr %349, align 8, !tbaa !9
  %351 = add nsw i64 %350, 1
  %352 = load ptr, ptr %19, align 8, !tbaa !5
  %353 = load i64, ptr %352, align 8, !tbaa !9
  %354 = add nsw i64 %353, 1
  %355 = load i64, ptr %29, align 8, !tbaa !9
  %356 = mul nsw i64 %354, %355
  %357 = add nsw i64 %351, %356
  %358 = getelementptr inbounds %struct.doublecomplex, ptr %348, i64 %357
  %359 = load ptr, ptr %22, align 8, !tbaa !5
  %360 = load ptr, ptr %19, align 8, !tbaa !5
  %361 = load i64, ptr %360, align 8, !tbaa !9
  %362 = add nsw i64 %361, 1
  %363 = getelementptr inbounds %struct.doublecomplex, ptr %359, i64 %362
  %364 = call i32 @f2c_zcopy(ptr noundef %33, ptr noundef %358, ptr noundef %34, ptr noundef %363, ptr noundef @c__1)
  br label %365

365:                                              ; preds = %339, %333
  %366 = load i64, ptr %44, align 8, !tbaa !9
  %367 = icmp ne i64 %366, 0
  br i1 %367, label %368, label %376

368:                                              ; preds = %365
  %369 = load ptr, ptr %17, align 8, !tbaa !5
  %370 = load ptr, ptr %17, align 8, !tbaa !5
  %371 = load ptr, ptr %23, align 8, !tbaa !5
  %372 = load i64, ptr %32, align 8, !tbaa !9
  %373 = getelementptr inbounds %struct.doublecomplex, ptr %371, i64 %372
  %374 = load ptr, ptr %24, align 8, !tbaa !5
  %375 = call i32 @zlaset_(ptr noundef @.str.6, ptr noundef %369, ptr noundef %370, ptr noundef @c_b1, ptr noundef @c_b2, ptr noundef %373, ptr noundef %374)
  br label %376

376:                                              ; preds = %368, %365
  %377 = load ptr, ptr %18, align 8, !tbaa !5
  %378 = load i64, ptr %377, align 8, !tbaa !9
  %379 = load ptr, ptr %19, align 8, !tbaa !5
  %380 = load i64, ptr %379, align 8, !tbaa !9
  %381 = icmp eq i64 %378, %380
  br i1 %381, label %382, label %410

382:                                              ; preds = %376
  %383 = load ptr, ptr %18, align 8, !tbaa !5
  %384 = load i64, ptr %383, align 8, !tbaa !9
  store i64 %384, ptr %33, align 8, !tbaa !9
  %385 = load ptr, ptr %18, align 8, !tbaa !5
  %386 = load i64, ptr %385, align 8, !tbaa !9
  %387 = load ptr, ptr %18, align 8, !tbaa !5
  %388 = load i64, ptr %387, align 8, !tbaa !9
  %389 = load i64, ptr %29, align 8, !tbaa !9
  %390 = mul nsw i64 %388, %389
  %391 = add nsw i64 %386, %390
  store i64 %391, ptr %34, align 8, !tbaa !9
  %392 = load ptr, ptr %20, align 8, !tbaa !5
  %393 = load i64, ptr %34, align 8, !tbaa !9
  %394 = getelementptr inbounds %struct.doublecomplex, ptr %392, i64 %393
  %395 = getelementptr inbounds %struct.doublecomplex, ptr %394, i32 0, i32 0
  %396 = load double, ptr %395, align 8, !tbaa !13
  %397 = load ptr, ptr %22, align 8, !tbaa !5
  %398 = load i64, ptr %33, align 8, !tbaa !9
  %399 = getelementptr inbounds %struct.doublecomplex, ptr %397, i64 %398
  %400 = getelementptr inbounds %struct.doublecomplex, ptr %399, i32 0, i32 0
  store double %396, ptr %400, align 8, !tbaa !13
  %401 = load ptr, ptr %20, align 8, !tbaa !5
  %402 = load i64, ptr %34, align 8, !tbaa !9
  %403 = getelementptr inbounds %struct.doublecomplex, ptr %401, i64 %402
  %404 = getelementptr inbounds %struct.doublecomplex, ptr %403, i32 0, i32 1
  %405 = load double, ptr %404, align 8, !tbaa !15
  %406 = load ptr, ptr %22, align 8, !tbaa !5
  %407 = load i64, ptr %33, align 8, !tbaa !9
  %408 = getelementptr inbounds %struct.doublecomplex, ptr %406, i64 %407
  %409 = getelementptr inbounds %struct.doublecomplex, ptr %408, i32 0, i32 1
  store double %405, ptr %409, align 8, !tbaa !15
  store i32 0, ptr %14, align 4
  store i32 1, ptr %49, align 4
  br label %634

410:                                              ; preds = %376
  %411 = getelementptr inbounds [2 x i64], ptr %35, i64 0, i64 0
  store i64 1, ptr %411, align 16, !tbaa !9
  %412 = load ptr, ptr %15, align 8, !tbaa !5
  %413 = getelementptr inbounds [2 x ptr], ptr %28, i64 0, i64 0
  store ptr %412, ptr %413, align 16, !tbaa !5
  %414 = getelementptr inbounds [2 x i64], ptr %35, i64 0, i64 1
  store i64 1, ptr %414, align 8, !tbaa !9
  %415 = load ptr, ptr %16, align 8, !tbaa !5
  %416 = getelementptr inbounds [2 x ptr], ptr %28, i64 0, i64 1
  store ptr %415, ptr %416, align 8, !tbaa !5
  %417 = getelementptr inbounds [2 x i8], ptr %40, i64 0, i64 0
  %418 = getelementptr inbounds [2 x ptr], ptr %28, i64 0, i64 0
  %419 = getelementptr inbounds [2 x i64], ptr %35, i64 0, i64 0
  %420 = call i32 @s_cat(ptr noundef %417, ptr noundef %418, ptr noundef %419, ptr noundef @c__2, i64 noundef 2)
  %421 = getelementptr inbounds [2 x i8], ptr %40, i64 0, i64 0
  %422 = load ptr, ptr %17, align 8, !tbaa !5
  %423 = load ptr, ptr %18, align 8, !tbaa !5
  %424 = load ptr, ptr %19, align 8, !tbaa !5
  %425 = load ptr, ptr %26, align 8, !tbaa !5
  %426 = call i64 @ilaenv_(ptr noundef @c__12, ptr noundef @.str.5, ptr noundef %421, ptr noundef %422, ptr noundef %423, ptr noundef %424, ptr noundef %425)
  store i64 %426, ptr %43, align 8, !tbaa !9
  %427 = load i64, ptr %43, align 8, !tbaa !9
  %428 = icmp sge i64 11, %427
  br i1 %428, label %429, label %430

429:                                              ; preds = %410
  br label %432

430:                                              ; preds = %410
  %431 = load i64, ptr %43, align 8, !tbaa !9
  br label %432

432:                                              ; preds = %430, %429
  %433 = phi i64 [ 11, %429 ], [ %431, %430 ]
  store i64 %433, ptr %43, align 8, !tbaa !9
  %434 = load ptr, ptr %17, align 8, !tbaa !5
  %435 = load i64, ptr %434, align 8, !tbaa !9
  %436 = load i64, ptr %43, align 8, !tbaa !9
  %437 = icmp sgt i64 %435, %436
  br i1 %437, label %438, label %459

438:                                              ; preds = %432
  %439 = load ptr, ptr %17, align 8, !tbaa !5
  %440 = load ptr, ptr %18, align 8, !tbaa !5
  %441 = load ptr, ptr %19, align 8, !tbaa !5
  %442 = load ptr, ptr %20, align 8, !tbaa !5
  %443 = load i64, ptr %30, align 8, !tbaa !9
  %444 = getelementptr inbounds %struct.doublecomplex, ptr %442, i64 %443
  %445 = load ptr, ptr %21, align 8, !tbaa !5
  %446 = load ptr, ptr %22, align 8, !tbaa !5
  %447 = getelementptr inbounds %struct.doublecomplex, ptr %446, i64 1
  %448 = load ptr, ptr %18, align 8, !tbaa !5
  %449 = load ptr, ptr %19, align 8, !tbaa !5
  %450 = load ptr, ptr %23, align 8, !tbaa !5
  %451 = load i64, ptr %32, align 8, !tbaa !9
  %452 = getelementptr inbounds %struct.doublecomplex, ptr %450, i64 %451
  %453 = load ptr, ptr %24, align 8, !tbaa !5
  %454 = load ptr, ptr %25, align 8, !tbaa !5
  %455 = getelementptr inbounds %struct.doublecomplex, ptr %454, i64 1
  %456 = load ptr, ptr %26, align 8, !tbaa !5
  %457 = load ptr, ptr %27, align 8, !tbaa !5
  %458 = call i32 @zlaqr0_(ptr noundef %46, ptr noundef %47, ptr noundef %439, ptr noundef %440, ptr noundef %441, ptr noundef %444, ptr noundef %445, ptr noundef %447, ptr noundef %448, ptr noundef %449, ptr noundef %452, ptr noundef %453, ptr noundef %455, ptr noundef %456, ptr noundef %457)
  br label %570

459:                                              ; preds = %432
  %460 = load ptr, ptr %17, align 8, !tbaa !5
  %461 = load ptr, ptr %18, align 8, !tbaa !5
  %462 = load ptr, ptr %19, align 8, !tbaa !5
  %463 = load ptr, ptr %20, align 8, !tbaa !5
  %464 = load i64, ptr %30, align 8, !tbaa !9
  %465 = getelementptr inbounds %struct.doublecomplex, ptr %463, i64 %464
  %466 = load ptr, ptr %21, align 8, !tbaa !5
  %467 = load ptr, ptr %22, align 8, !tbaa !5
  %468 = getelementptr inbounds %struct.doublecomplex, ptr %467, i64 1
  %469 = load ptr, ptr %18, align 8, !tbaa !5
  %470 = load ptr, ptr %19, align 8, !tbaa !5
  %471 = load ptr, ptr %23, align 8, !tbaa !5
  %472 = load i64, ptr %32, align 8, !tbaa !9
  %473 = getelementptr inbounds %struct.doublecomplex, ptr %471, i64 %472
  %474 = load ptr, ptr %24, align 8, !tbaa !5
  %475 = load ptr, ptr %27, align 8, !tbaa !5
  %476 = call i32 @zlahqr_(ptr noundef %46, ptr noundef %47, ptr noundef %460, ptr noundef %461, ptr noundef %462, ptr noundef %465, ptr noundef %466, ptr noundef %468, ptr noundef %469, ptr noundef %470, ptr noundef %473, ptr noundef %474, ptr noundef %475)
  %477 = load ptr, ptr %27, align 8, !tbaa !5
  %478 = load i64, ptr %477, align 8, !tbaa !9
  %479 = icmp sgt i64 %478, 0
  br i1 %479, label %480, label %569

480:                                              ; preds = %459
  %481 = load ptr, ptr %27, align 8, !tbaa !5
  %482 = load i64, ptr %481, align 8, !tbaa !9
  store i64 %482, ptr %42, align 8, !tbaa !9
  %483 = load ptr, ptr %17, align 8, !tbaa !5
  %484 = load i64, ptr %483, align 8, !tbaa !9
  %485 = icmp sge i64 %484, 49
  br i1 %485, label %486, label %506

486:                                              ; preds = %480
  %487 = load ptr, ptr %17, align 8, !tbaa !5
  %488 = load ptr, ptr %18, align 8, !tbaa !5
  %489 = load ptr, ptr %20, align 8, !tbaa !5
  %490 = load i64, ptr %30, align 8, !tbaa !9
  %491 = getelementptr inbounds %struct.doublecomplex, ptr %489, i64 %490
  %492 = load ptr, ptr %21, align 8, !tbaa !5
  %493 = load ptr, ptr %22, align 8, !tbaa !5
  %494 = getelementptr inbounds %struct.doublecomplex, ptr %493, i64 1
  %495 = load ptr, ptr %18, align 8, !tbaa !5
  %496 = load ptr, ptr %19, align 8, !tbaa !5
  %497 = load ptr, ptr %23, align 8, !tbaa !5
  %498 = load i64, ptr %32, align 8, !tbaa !9
  %499 = getelementptr inbounds %struct.doublecomplex, ptr %497, i64 %498
  %500 = load ptr, ptr %24, align 8, !tbaa !5
  %501 = load ptr, ptr %25, align 8, !tbaa !5
  %502 = getelementptr inbounds %struct.doublecomplex, ptr %501, i64 1
  %503 = load ptr, ptr %26, align 8, !tbaa !5
  %504 = load ptr, ptr %27, align 8, !tbaa !5
  %505 = call i32 @zlaqr0_(ptr noundef %46, ptr noundef %47, ptr noundef %487, ptr noundef %488, ptr noundef %42, ptr noundef %491, ptr noundef %492, ptr noundef %494, ptr noundef %495, ptr noundef %496, ptr noundef %499, ptr noundef %500, ptr noundef %502, ptr noundef %503, ptr noundef %504)
  br label %568

506:                                              ; preds = %480
  %507 = load ptr, ptr %17, align 8, !tbaa !5
  %508 = load ptr, ptr %17, align 8, !tbaa !5
  %509 = load ptr, ptr %20, align 8, !tbaa !5
  %510 = load i64, ptr %30, align 8, !tbaa !9
  %511 = getelementptr inbounds %struct.doublecomplex, ptr %509, i64 %510
  %512 = load ptr, ptr %21, align 8, !tbaa !5
  %513 = getelementptr inbounds [2401 x %struct.doublecomplex], ptr %41, i64 0, i64 0
  %514 = call i32 @zlacpy_(ptr noundef @.str.6, ptr noundef %507, ptr noundef %508, ptr noundef %511, ptr noundef %512, ptr noundef %513, ptr noundef @c__49)
  %515 = load ptr, ptr %17, align 8, !tbaa !5
  %516 = load i64, ptr %515, align 8, !tbaa !9
  %517 = add nsw i64 %516, 1
  %518 = load ptr, ptr %17, align 8, !tbaa !5
  %519 = load i64, ptr %518, align 8, !tbaa !9
  %520 = mul nsw i64 %519, 49
  %521 = add nsw i64 %517, %520
  %522 = sub nsw i64 %521, 50
  store i64 %522, ptr %33, align 8, !tbaa !9
  %523 = load i64, ptr %33, align 8, !tbaa !9
  %524 = getelementptr inbounds [2401 x %struct.doublecomplex], ptr %41, i64 0, i64 %523
  %525 = getelementptr inbounds %struct.doublecomplex, ptr %524, i32 0, i32 0
  store double 0.000000e+00, ptr %525, align 16, !tbaa !13
  %526 = load i64, ptr %33, align 8, !tbaa !9
  %527 = getelementptr inbounds [2401 x %struct.doublecomplex], ptr %41, i64 0, i64 %526
  %528 = getelementptr inbounds %struct.doublecomplex, ptr %527, i32 0, i32 1
  store double 0.000000e+00, ptr %528, align 8, !tbaa !15
  %529 = load ptr, ptr %17, align 8, !tbaa !5
  %530 = load i64, ptr %529, align 8, !tbaa !9
  %531 = sub nsw i64 49, %530
  store i64 %531, ptr %33, align 8, !tbaa !9
  %532 = load ptr, ptr %17, align 8, !tbaa !5
  %533 = load i64, ptr %532, align 8, !tbaa !9
  %534 = add nsw i64 %533, 1
  %535 = mul nsw i64 %534, 49
  %536 = sub nsw i64 %535, 49
  %537 = getelementptr inbounds [2401 x %struct.doublecomplex], ptr %41, i64 0, i64 %536
  %538 = call i32 @zlaset_(ptr noundef @.str.6, ptr noundef @c__49, ptr noundef %33, ptr noundef @c_b1, ptr noundef @c_b1, ptr noundef %537, ptr noundef @c__49)
  %539 = load ptr, ptr %18, align 8, !tbaa !5
  %540 = getelementptr inbounds [2401 x %struct.doublecomplex], ptr %41, i64 0, i64 0
  %541 = load ptr, ptr %22, align 8, !tbaa !5
  %542 = getelementptr inbounds %struct.doublecomplex, ptr %541, i64 1
  %543 = load ptr, ptr %18, align 8, !tbaa !5
  %544 = load ptr, ptr %19, align 8, !tbaa !5
  %545 = load ptr, ptr %23, align 8, !tbaa !5
  %546 = load i64, ptr %32, align 8, !tbaa !9
  %547 = getelementptr inbounds %struct.doublecomplex, ptr %545, i64 %546
  %548 = load ptr, ptr %24, align 8, !tbaa !5
  %549 = getelementptr inbounds [49 x %struct.doublecomplex], ptr %45, i64 0, i64 0
  %550 = load ptr, ptr %27, align 8, !tbaa !5
  %551 = call i32 @zlaqr0_(ptr noundef %46, ptr noundef %47, ptr noundef @c__49, ptr noundef %539, ptr noundef %42, ptr noundef %540, ptr noundef @c__49, ptr noundef %542, ptr noundef %543, ptr noundef %544, ptr noundef %547, ptr noundef %548, ptr noundef %549, ptr noundef @c__49, ptr noundef %550)
  %552 = load i64, ptr %46, align 8, !tbaa !9
  %553 = icmp ne i64 %552, 0
  br i1 %553, label %558, label %554

554:                                              ; preds = %506
  %555 = load ptr, ptr %27, align 8, !tbaa !5
  %556 = load i64, ptr %555, align 8, !tbaa !9
  %557 = icmp ne i64 %556, 0
  br i1 %557, label %558, label %567

558:                                              ; preds = %554, %506
  %559 = load ptr, ptr %17, align 8, !tbaa !5
  %560 = load ptr, ptr %17, align 8, !tbaa !5
  %561 = getelementptr inbounds [2401 x %struct.doublecomplex], ptr %41, i64 0, i64 0
  %562 = load ptr, ptr %20, align 8, !tbaa !5
  %563 = load i64, ptr %30, align 8, !tbaa !9
  %564 = getelementptr inbounds %struct.doublecomplex, ptr %562, i64 %563
  %565 = load ptr, ptr %21, align 8, !tbaa !5
  %566 = call i32 @zlacpy_(ptr noundef @.str.6, ptr noundef %559, ptr noundef %560, ptr noundef %561, ptr noundef @c__49, ptr noundef %564, ptr noundef %565)
  br label %567

567:                                              ; preds = %558, %554
  br label %568

568:                                              ; preds = %567, %486
  br label %569

569:                                              ; preds = %568, %459
  br label %570

570:                                              ; preds = %569, %438
  %571 = load i64, ptr %46, align 8, !tbaa !9
  %572 = icmp ne i64 %571, 0
  br i1 %572, label %577, label %573

573:                                              ; preds = %570
  %574 = load ptr, ptr %27, align 8, !tbaa !5
  %575 = load i64, ptr %574, align 8, !tbaa !9
  %576 = icmp ne i64 %575, 0
  br i1 %576, label %577, label %594

577:                                              ; preds = %573, %570
  %578 = load ptr, ptr %17, align 8, !tbaa !5
  %579 = load i64, ptr %578, align 8, !tbaa !9
  %580 = icmp sgt i64 %579, 2
  br i1 %580, label %581, label %594

581:                                              ; preds = %577
  %582 = load ptr, ptr %17, align 8, !tbaa !5
  %583 = load i64, ptr %582, align 8, !tbaa !9
  %584 = sub nsw i64 %583, 2
  store i64 %584, ptr %33, align 8, !tbaa !9
  %585 = load ptr, ptr %17, align 8, !tbaa !5
  %586 = load i64, ptr %585, align 8, !tbaa !9
  %587 = sub nsw i64 %586, 2
  store i64 %587, ptr %34, align 8, !tbaa !9
  %588 = load ptr, ptr %20, align 8, !tbaa !5
  %589 = load i64, ptr %29, align 8, !tbaa !9
  %590 = add nsw i64 %589, 3
  %591 = getelementptr inbounds %struct.doublecomplex, ptr %588, i64 %590
  %592 = load ptr, ptr %21, align 8, !tbaa !5
  %593 = call i32 @zlaset_(ptr noundef @.str.7, ptr noundef %33, ptr noundef %34, ptr noundef @c_b1, ptr noundef @c_b1, ptr noundef %591, ptr noundef %592)
  br label %594

594:                                              ; preds = %581, %577, %573
  %595 = load ptr, ptr %17, align 8, !tbaa !5
  %596 = load i64, ptr %595, align 8, !tbaa !9
  %597 = icmp sge i64 1, %596
  br i1 %597, label %598, label %599

598:                                              ; preds = %594
  br label %602

599:                                              ; preds = %594
  %600 = load ptr, ptr %17, align 8, !tbaa !5
  %601 = load i64, ptr %600, align 8, !tbaa !9
  br label %602

602:                                              ; preds = %599, %598
  %603 = phi i64 [ 1, %598 ], [ %601, %599 ]
  %604 = sitofp i64 %603 to double
  store double %604, ptr %37, align 8, !tbaa !11
  %605 = load ptr, ptr %25, align 8, !tbaa !5
  %606 = getelementptr inbounds %struct.doublecomplex, ptr %605, i64 1
  %607 = getelementptr inbounds %struct.doublecomplex, ptr %606, i32 0, i32 0
  %608 = load double, ptr %607, align 8, !tbaa !13
  store double %608, ptr %38, align 8, !tbaa !11
  %609 = load double, ptr %37, align 8, !tbaa !11
  %610 = load double, ptr %38, align 8, !tbaa !11
  %611 = fcmp oge double %609, %610
  br i1 %611, label %612, label %614

612:                                              ; preds = %602
  %613 = load double, ptr %37, align 8, !tbaa !11
  br label %616

614:                                              ; preds = %602
  %615 = load double, ptr %38, align 8, !tbaa !11
  br label %616

616:                                              ; preds = %614, %612
  %617 = phi double [ %613, %612 ], [ %615, %614 ]
  store double %617, ptr %36, align 8, !tbaa !11
  %618 = load double, ptr %36, align 8, !tbaa !11
  %619 = getelementptr inbounds %struct.doublecomplex, ptr %39, i32 0, i32 0
  store double %618, ptr %619, align 8, !tbaa !13
  %620 = getelementptr inbounds %struct.doublecomplex, ptr %39, i32 0, i32 1
  store double 0.000000e+00, ptr %620, align 8, !tbaa !15
  %621 = getelementptr inbounds %struct.doublecomplex, ptr %39, i32 0, i32 0
  %622 = load double, ptr %621, align 8, !tbaa !13
  %623 = load ptr, ptr %25, align 8, !tbaa !5
  %624 = getelementptr inbounds %struct.doublecomplex, ptr %623, i64 1
  %625 = getelementptr inbounds %struct.doublecomplex, ptr %624, i32 0, i32 0
  store double %622, ptr %625, align 8, !tbaa !13
  %626 = getelementptr inbounds %struct.doublecomplex, ptr %39, i32 0, i32 1
  %627 = load double, ptr %626, align 8, !tbaa !15
  %628 = load ptr, ptr %25, align 8, !tbaa !5
  %629 = getelementptr inbounds %struct.doublecomplex, ptr %628, i64 1
  %630 = getelementptr inbounds %struct.doublecomplex, ptr %629, i32 0, i32 1
  store double %627, ptr %630, align 8, !tbaa !15
  br label %631

631:                                              ; preds = %616
  br label %632

632:                                              ; preds = %631
  br label %633

633:                                              ; preds = %632
  store i32 0, ptr %14, align 4
  store i32 1, ptr %49, align 4
  br label %634

634:                                              ; preds = %633, %382, %301, %255, %246
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #3
  call void @llvm.lifetime.end.p0(i64 784, ptr %45) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #3
  call void @llvm.lifetime.end.p0(i64 38416, ptr %41) #3
  call void @llvm.lifetime.end.p0(i64 2, ptr %40) #3
  call void @llvm.lifetime.end.p0(i64 16, ptr %39) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #3
  call void @llvm.lifetime.end.p0(i64 16, ptr %35) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #3
  call void @llvm.lifetime.end.p0(i64 16, ptr %28) #3
  %635 = load i32, ptr %14, align 4
  ret i32 %635
}

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

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

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

declare i32 @s_cat(ptr noundef, ptr noundef, ptr noundef, ptr noundef, i64 noundef) #2

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

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"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}


; 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 [7 x i8], align 1
@c__1 = external hidden global i64, align 8
@.str.6 = external hidden unnamed_addr constant [2 x i8], align 1
@c_b1 = external hidden global %struct.doublecomplex, align 8
@c_b2 = external hidden global %struct.doublecomplex, align 8
@c__2 = external hidden global i64, align 8
@c__12 = external hidden global i64, align 8
@c__49 = external hidden global i64, align 8
@.str.7 = external hidden unnamed_addr constant [2 x i8], align 1

; Function Attrs: nounwind uwtable
define dso_local noundef i32 @zhseqr_(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) local_unnamed_addr #0 {
  %14 = alloca [2 x ptr], align 16
  %15 = alloca i64, align 8
  %16 = alloca i64, align 8
  %17 = alloca [2 x i64], align 16
  %18 = alloca [2 x i8], align 1
  %19 = alloca [2401 x %struct.doublecomplex], align 16
  %20 = alloca i64, align 8
  %21 = alloca [49 x %struct.doublecomplex], align 16
  %22 = alloca i64, align 8
  %23 = alloca i64, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %14) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %15) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %16) #5
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %17) #5
  call void @llvm.lifetime.start.p0(i64 2, ptr nonnull %18) #5
  call void @llvm.lifetime.start.p0(i64 38416, ptr nonnull %19) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %20) #5
  call void @llvm.lifetime.start.p0(i64 784, ptr nonnull %21) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %22) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %23) #5
  %24 = load i64, ptr %6, align 8, !tbaa !5
  %25 = xor i64 %24, -1
  %26 = getelementptr inbounds %struct.doublecomplex, ptr %5, i64 %25
  %27 = getelementptr inbounds i8, ptr %7, i64 -16
  %28 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str) #5
  store i64 %28, ptr %22, align 8, !tbaa !5
  %29 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.1) #5
  %.not = icmp eq i64 %29, 0
  br i1 %.not, label %30, label %33

30:                                               ; preds = %13
  %31 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.2) #5
  %32 = icmp ne i64 %31, 0
  br label %33

33:                                               ; preds = %30, %13
  %34 = phi i1 [ true, %13 ], [ %32, %30 ]
  %35 = zext i1 %34 to i64
  store i64 %35, ptr %23, align 8, !tbaa !5
  %36 = load i64, ptr %2, align 8, !tbaa !5
  %spec.select = tail call i64 @llvm.smax.i64(i64 %36, i64 1)
  %37 = uitofp nneg i64 %spec.select to double
  store double %37, ptr %10, align 8, !tbaa !9
  %38 = getelementptr inbounds i8, ptr %10, i64 8
  store double 0.000000e+00, ptr %38, align 8, !tbaa !12
  %39 = load i64, ptr %11, align 8, !tbaa !5
  %40 = icmp eq i64 %39, -1
  store i64 0, ptr %12, align 8, !tbaa !5
  %41 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.3) #5
  %42 = icmp ne i64 %41, 0
  %43 = icmp ne i64 %28, 0
  %or.cond = select i1 %42, i1 true, i1 %43
  br i1 %or.cond, label %44, label %.thread.sink.split

44:                                               ; preds = %33
  %45 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.4) #5
  %46 = icmp ne i64 %45, 0
  %or.cond3 = select i1 %46, i1 true, i1 %34
  br i1 %or.cond3, label %47, label %.thread.sink.split

47:                                               ; preds = %44
  %48 = load i64, ptr %2, align 8, !tbaa !5
  %49 = icmp slt i64 %48, 0
  br i1 %49, label %.thread.sink.split, label %50

50:                                               ; preds = %47
  %51 = load i64, ptr %3, align 8, !tbaa !5
  %52 = icmp slt i64 %51, 1
  br i1 %52, label %.thread.sink.split, label %53

53:                                               ; preds = %50
  %spec.select244 = tail call i64 @llvm.umax.i64(i64 %48, i64 1)
  %54 = icmp ugt i64 %51, %spec.select244
  br i1 %54, label %.thread.sink.split, label %55

55:                                               ; preds = %53
  %56 = load i64, ptr %4, align 8, !tbaa !5
  %. = tail call i64 @llvm.umin.i64(i64 %51, i64 %48)
  %57 = icmp slt i64 %56, %.
  %58 = icmp ugt i64 %56, %48
  %or.cond257 = or i1 %57, %58
  br i1 %or.cond257, label %.thread.sink.split, label %59

59:                                               ; preds = %55
  %60 = load i64, ptr %6, align 8, !tbaa !5
  %61 = icmp slt i64 %60, %spec.select244
  br i1 %61, label %.thread.sink.split, label %62

62:                                               ; preds = %59
  %63 = load i64, ptr %9, align 8, !tbaa !5
  %64 = icmp slt i64 %63, 1
  %65 = icmp ugt i64 %48, %63
  %or.cond258 = and i1 %34, %65
  %or.cond261 = select i1 %64, i1 true, i1 %or.cond258
  br i1 %or.cond261, label %.thread.sink.split, label %66

66:                                               ; preds = %62
  %67 = load i64, ptr %11, align 8, !tbaa !5
  %68 = icmp sge i64 %67, %spec.select244
  %or.cond5 = select i1 %68, i1 true, i1 %40
  br i1 %or.cond5, label %69, label %.thread.sink.split

69:                                               ; preds = %66
  %.pr = load i64, ptr %12, align 8, !tbaa !5
  %.not239 = icmp eq i64 %.pr, 0
  br i1 %.not239, label %73, label %.thread

.thread.sink.split:                               ; preds = %66, %62, %59, %55, %50, %53, %47, %44, %33
  %.sink = phi i64 [ -1, %33 ], [ -2, %44 ], [ -3, %47 ], [ -4, %53 ], [ -4, %50 ], [ -5, %55 ], [ -7, %59 ], [ -10, %62 ], [ -12, %66 ]
  store i64 %.sink, ptr %12, align 8, !tbaa !5
  br label %.thread

.thread:                                          ; preds = %.thread.sink.split, %69
  %70 = phi i64 [ %.pr, %69 ], [ %.sink, %.thread.sink.split ]
  %71 = sub nsw i64 0, %70
  store i64 %71, ptr %15, align 8, !tbaa !5
  %72 = call i32 @xerbla_(ptr noundef nonnull @.str.5, ptr noundef nonnull %15) #5
  br label %168

73:                                               ; preds = %69
  %74 = icmp eq i64 %48, 0
  br i1 %74, label %168, label %75

75:                                               ; preds = %73
  br i1 %40, label %76, label %85

76:                                               ; preds = %75
  %77 = call i32 @zlaqr0_(ptr noundef nonnull %22, ptr noundef nonnull %23, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %7, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef %8, ptr noundef nonnull %9, ptr noundef nonnull %10, ptr noundef nonnull %11, ptr noundef nonnull %12) #5
  %78 = load double, ptr %10, align 8, !tbaa !9
  %79 = load i64, ptr %2, align 8, !tbaa !5
  %80 = icmp slt i64 %79, 2
  %81 = uitofp nneg i64 %79 to double
  %82 = select i1 %80, double 1.000000e+00, double %81
  %83 = fcmp oge double %78, %82
  %84 = select i1 %83, double %78, double %82
  store double %84, ptr %10, align 8, !tbaa !9
  store double 0.000000e+00, ptr %38, align 8, !tbaa !12
  br label %168

85:                                               ; preds = %75
  %.not260 = icmp eq i64 %51, 1
  br i1 %.not260, label %90, label %86

86:                                               ; preds = %85
  %87 = add nsw i64 %51, -1
  store i64 %87, ptr %15, align 8, !tbaa !5
  %88 = add nuw nsw i64 %60, 1
  store i64 %88, ptr %16, align 8, !tbaa !5
  %89 = call i32 @f2c_zcopy(ptr noundef nonnull %15, ptr noundef %5, ptr noundef nonnull %16, ptr noundef %7, ptr noundef nonnull @c__1) #5
  %.pre = load i64, ptr %4, align 8, !tbaa !5
  %.pre259 = load i64, ptr %2, align 8, !tbaa !5
  br label %90

90:                                               ; preds = %86, %85
  %91 = phi i64 [ %.pre259, %86 ], [ %48, %85 ]
  %92 = phi i64 [ %.pre, %86 ], [ %56, %85 ]
  %93 = icmp slt i64 %92, %91
  br i1 %93, label %94, label %104

94:                                               ; preds = %90
  %95 = sub nsw i64 %91, %92
  store i64 %95, ptr %15, align 8, !tbaa !5
  %96 = load i64, ptr %6, align 8, !tbaa !5
  %97 = add nsw i64 %96, 1
  store i64 %97, ptr %16, align 8, !tbaa !5
  %98 = add nsw i64 %92, 1
  %99 = add i64 %24, 1
  %100 = mul i64 %98, %99
  %101 = getelementptr inbounds %struct.doublecomplex, ptr %26, i64 %100
  %102 = getelementptr %struct.doublecomplex, ptr %7, i64 %92
  %103 = call i32 @f2c_zcopy(ptr noundef nonnull %15, ptr noundef %101, ptr noundef nonnull %16, ptr noundef %102, ptr noundef nonnull @c__1) #5
  br label %104

104:                                              ; preds = %94, %90
  br i1 %.not, label %107, label %105

105:                                              ; preds = %104
  %106 = call i32 @zlaset_(ptr noundef nonnull @.str.6, ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef nonnull @c_b1, ptr noundef nonnull @c_b2, ptr noundef %8, ptr noundef nonnull %9) #5
  br label %107

107:                                              ; preds = %105, %104
  %108 = load i64, ptr %3, align 8, !tbaa !5
  %109 = load i64, ptr %4, align 8, !tbaa !5
  %110 = icmp eq i64 %108, %109
  br i1 %110, label %111, label %117

111:                                              ; preds = %107
  %112 = add i64 %24, 1
  %113 = mul i64 %108, %112
  %114 = getelementptr inbounds %struct.doublecomplex, ptr %26, i64 %113
  %115 = getelementptr inbounds %struct.doublecomplex, ptr %27, i64 %108
  %116 = load <2 x double>, ptr %114, align 8, !tbaa !13
  store <2 x double> %116, ptr %115, align 8, !tbaa !13
  br label %168

117:                                              ; preds = %107
  store i64 1, ptr %17, align 16, !tbaa !5
  store ptr %0, ptr %14, align 16, !tbaa !14
  %118 = getelementptr inbounds i8, ptr %17, i64 8
  store i64 1, ptr %118, align 8, !tbaa !5
  %119 = getelementptr inbounds i8, ptr %14, i64 8
  store ptr %1, ptr %119, align 8, !tbaa !14
  %120 = call i32 @s_cat(ptr noundef nonnull %18, ptr noundef nonnull %14, ptr noundef nonnull %17, ptr noundef nonnull @c__2, i64 noundef 2) #5
  %121 = call i64 @ilaenv_(ptr noundef nonnull @c__12, ptr noundef nonnull @.str.5, ptr noundef nonnull %18, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef nonnull %11) #5
  %122 = call i64 @llvm.smax.i64(i64 %121, i64 11)
  %123 = load i64, ptr %2, align 8, !tbaa !5
  %124 = icmp sgt i64 %123, %122
  br i1 %124, label %125, label %127

125:                                              ; preds = %117
  %126 = call i32 @zlaqr0_(ptr noundef nonnull %22, ptr noundef nonnull %23, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %7, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef %8, ptr noundef nonnull %9, ptr noundef nonnull %10, ptr noundef nonnull %11, ptr noundef nonnull %12) #5
  br label %152

127:                                              ; preds = %117
  %128 = call i32 @zlahqr_(ptr noundef nonnull %22, ptr noundef nonnull %23, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %7, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef %8, ptr noundef nonnull %9, ptr noundef nonnull %12) #5
  %129 = load i64, ptr %12, align 8, !tbaa !5
  %130 = icmp sgt i64 %129, 0
  br i1 %130, label %131, label %152

131:                                              ; preds = %127
  store i64 %129, ptr %20, align 8, !tbaa !5
  %132 = load i64, ptr %2, align 8, !tbaa !5
  %133 = icmp sgt i64 %132, 48
  br i1 %133, label %134, label %136

134:                                              ; preds = %131
  %135 = call i32 @zlaqr0_(ptr noundef nonnull %22, ptr noundef nonnull %23, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull %20, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %7, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef %8, ptr noundef nonnull %9, ptr noundef nonnull %10, ptr noundef nonnull %11, ptr noundef nonnull %12) #5
  br label %152

136:                                              ; preds = %131
  %137 = call i32 @zlacpy_(ptr noundef nonnull @.str.6, ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef %5, ptr noundef nonnull %6, ptr noundef nonnull %19, ptr noundef nonnull @c__49) #5
  %138 = load i64, ptr %2, align 8, !tbaa !5
  %139 = mul nsw i64 %138, 49
  %140 = add i64 %138, -49
  %141 = add i64 %140, %139
  %142 = getelementptr inbounds [2401 x %struct.doublecomplex], ptr %19, i64 0, i64 %141
  %143 = sub nsw i64 49, %138
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(16) %142, i8 0, i64 16, i1 false)
  store i64 %143, ptr %15, align 8, !tbaa !5
  %144 = getelementptr inbounds [2401 x %struct.doublecomplex], ptr %19, i64 0, i64 %139
  %145 = call i32 @zlaset_(ptr noundef nonnull @.str.6, ptr noundef nonnull @c__49, ptr noundef nonnull %15, ptr noundef nonnull @c_b1, ptr noundef nonnull @c_b1, ptr noundef nonnull %144, ptr noundef nonnull @c__49) #5
  %146 = call i32 @zlaqr0_(ptr noundef nonnull %22, ptr noundef nonnull %23, ptr noundef nonnull @c__49, ptr noundef nonnull %3, ptr noundef nonnull %20, ptr noundef nonnull %19, ptr noundef nonnull @c__49, ptr noundef %7, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef %8, ptr noundef nonnull %9, ptr noundef nonnull %21, ptr noundef nonnull @c__49, ptr noundef nonnull %12) #5
  %147 = load i64, ptr %22, align 8, !tbaa !5
  %.not240 = icmp eq i64 %147, 0
  br i1 %.not240, label %148, label %150

148:                                              ; preds = %136
  %149 = load i64, ptr %12, align 8, !tbaa !5
  %.not241 = icmp eq i64 %149, 0
  br i1 %.not241, label %.thread255, label %150

150:                                              ; preds = %148, %136
  %151 = call i32 @zlacpy_(ptr noundef nonnull @.str.6, ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef nonnull %19, ptr noundef nonnull @c__49, ptr noundef %5, ptr noundef nonnull %6) #5
  br label %152

152:                                              ; preds = %127, %150, %134, %125
  %.pr250 = load i64, ptr %22, align 8, !tbaa !5
  %.not242 = icmp eq i64 %.pr250, 0
  br i1 %.not242, label %153, label %154

153:                                              ; preds = %152
  %.pr254 = load i64, ptr %12, align 8, !tbaa !5
  %.not243 = icmp eq i64 %.pr254, 0
  br i1 %.not243, label %.thread255, label %154

154:                                              ; preds = %153, %152
  %155 = load i64, ptr %2, align 8, !tbaa !5
  %156 = icmp sgt i64 %155, 2
  br i1 %156, label %157, label %.thread255

157:                                              ; preds = %154
  %158 = add nsw i64 %155, -2
  store i64 %158, ptr %15, align 8, !tbaa !5
  store i64 %158, ptr %16, align 8, !tbaa !5
  %159 = getelementptr inbounds i8, ptr %5, i64 32
  %160 = call i32 @zlaset_(ptr noundef nonnull @.str.7, ptr noundef nonnull %15, ptr noundef nonnull %16, ptr noundef nonnull @c_b1, ptr noundef nonnull @c_b1, ptr noundef nonnull %159, ptr noundef nonnull %6) #5
  br label %.thread255

.thread255:                                       ; preds = %148, %157, %154, %153
  %161 = load i64, ptr %2, align 8, !tbaa !5
  %162 = icmp slt i64 %161, 2
  %163 = uitofp nneg i64 %161 to double
  %164 = select i1 %162, double 1.000000e+00, double %163
  %165 = load double, ptr %10, align 8, !tbaa !9
  %166 = fcmp oge double %164, %165
  %167 = select i1 %166, double %164, double %165
  store double %167, ptr %10, align 8, !tbaa !9
  store double 0.000000e+00, ptr %38, align 8, !tbaa !12
  br label %168

168:                                              ; preds = %73, %.thread255, %111, %76, %.thread
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #5
  call void @llvm.lifetime.end.p0(i64 784, ptr nonnull %21) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #5
  call void @llvm.lifetime.end.p0(i64 38416, ptr nonnull %19) #5
  call void @llvm.lifetime.end.p0(i64 2, ptr nonnull %18) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %17) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %14) #5
  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 i32 @xerbla_(ptr noundef, ptr noundef) local_unnamed_addr #2

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

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

declare i32 @s_cat(ptr noundef, ptr noundef, ptr noundef, ptr noundef, i64 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 @zlahqr_(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 @zlacpy_(ptr noundef, ptr noundef, 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) #3

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

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

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

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

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

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


; Effective O3 passes: CorrelatedValuePropagationPass,DSEPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,MemCpyOptPass,PostOrderFunctionAttrsPass,ReassociatePass,SLPVectorizerPass,SROAPass,SimplifyCFGPass,TailCallElimPass