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

; 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.complex = type { float, float }

@.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
@c__1 = external hidden global i64, align 8
@.str.5 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [2 x i8], align 1
@c__0 = external hidden global i64, align 8
@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 [2 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [2 x i8], align 1

; Function Attrs: nounwind uwtable
define dso_local i32 @cgeesx_(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) #0 {
  %19 = alloca i32, align 4
  %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 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 i64, align 8
  %39 = alloca i64, align 8
  %40 = alloca i64, align 8
  %41 = alloca i64, align 8
  %42 = alloca i64, align 8
  %43 = alloca i64, align 8
  %44 = alloca i64, align 8
  %45 = alloca i64, align 8
  %46 = alloca i64, align 8
  %47 = alloca [1 x float], align 4
  %48 = alloca float, align 4
  %49 = alloca i64, align 8
  %50 = alloca float, align 4
  %51 = alloca i64, align 8
  %52 = alloca i64, align 8
  %53 = alloca i64, align 8
  %54 = alloca i64, align 8
  %55 = alloca i64, align 8
  %56 = alloca i64, align 8
  %57 = alloca i64, align 8
  %58 = alloca float, align 4
  %59 = alloca float, align 4
  %60 = alloca i64, align 8
  %61 = alloca i64, align 8
  %62 = alloca i64, align 8
  %63 = alloca i64, align 8
  %64 = alloca i64, align 8
  %65 = alloca float, align 4
  %66 = alloca i64, align 8
  %67 = alloca i64, align 8
  %68 = alloca i64, align 8
  %69 = alloca i64, align 8
  %70 = alloca i32, align 4
  store ptr %0, ptr %20, align 8, !tbaa !5
  store ptr %1, ptr %21, align 8, !tbaa !5
  store ptr %2, ptr %22, align 8, !tbaa !5
  store ptr %3, ptr %23, align 8, !tbaa !5
  store ptr %4, ptr %24, align 8, !tbaa !5
  store ptr %5, ptr %25, align 8, !tbaa !5
  store ptr %6, ptr %26, align 8, !tbaa !5
  store ptr %7, ptr %27, align 8, !tbaa !5
  store ptr %8, ptr %28, align 8, !tbaa !5
  store ptr %9, ptr %29, align 8, !tbaa !5
  store ptr %10, ptr %30, align 8, !tbaa !5
  store ptr %11, ptr %31, align 8, !tbaa !5
  store ptr %12, ptr %32, align 8, !tbaa !5
  store ptr %13, ptr %33, align 8, !tbaa !5
  store ptr %14, ptr %34, align 8, !tbaa !5
  store ptr %15, ptr %35, align 8, !tbaa !5
  store ptr %16, ptr %36, align 8, !tbaa !5
  store ptr %17, ptr %37, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #4
  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 4, ptr %47) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %48) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %49) #4
  call void @llvm.lifetime.start.p0(i64 4, 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 4, ptr %58) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %59) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %60) #4
  call void @llvm.lifetime.start.p0(i64 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 4, 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
  %71 = load ptr, ptr %26, align 8, !tbaa !5
  %72 = load i64, ptr %71, align 8, !tbaa !9
  store i64 %72, ptr %38, align 8, !tbaa !9
  %73 = load i64, ptr %38, align 8, !tbaa !9
  %74 = add nsw i64 1, %73
  store i64 %74, ptr %39, align 8, !tbaa !9
  %75 = load i64, ptr %39, align 8, !tbaa !9
  %76 = load ptr, ptr %25, align 8, !tbaa !5
  %77 = sub i64 0, %75
  %78 = getelementptr inbounds %struct.complex, ptr %76, i64 %77
  store ptr %78, ptr %25, align 8, !tbaa !5
  %79 = load ptr, ptr %28, align 8, !tbaa !5
  %80 = getelementptr inbounds %struct.complex, ptr %79, i32 -1
  store ptr %80, ptr %28, align 8, !tbaa !5
  %81 = load ptr, ptr %30, align 8, !tbaa !5
  %82 = load i64, ptr %81, align 8, !tbaa !9
  store i64 %82, ptr %40, align 8, !tbaa !9
  %83 = load i64, ptr %40, align 8, !tbaa !9
  %84 = add nsw i64 1, %83
  store i64 %84, ptr %41, align 8, !tbaa !9
  %85 = load i64, ptr %41, align 8, !tbaa !9
  %86 = load ptr, ptr %29, align 8, !tbaa !5
  %87 = sub i64 0, %85
  %88 = getelementptr inbounds %struct.complex, ptr %86, i64 %87
  store ptr %88, ptr %29, align 8, !tbaa !5
  %89 = load ptr, ptr %33, align 8, !tbaa !5
  %90 = getelementptr inbounds %struct.complex, ptr %89, i32 -1
  store ptr %90, ptr %33, align 8, !tbaa !5
  %91 = load ptr, ptr %35, align 8, !tbaa !5
  %92 = getelementptr inbounds float, ptr %91, i32 -1
  store ptr %92, ptr %35, align 8, !tbaa !5
  %93 = load ptr, ptr %36, align 8, !tbaa !5
  %94 = getelementptr inbounds i64, ptr %93, i32 -1
  store ptr %94, ptr %36, align 8, !tbaa !5
  %95 = load ptr, ptr %37, align 8, !tbaa !5
  store i64 0, ptr %95, align 8, !tbaa !9
  %96 = load ptr, ptr %20, align 8, !tbaa !5
  %97 = call i64 @lsame_(ptr noundef %96, ptr noundef @.str)
  store i64 %97, ptr %69, align 8, !tbaa !9
  %98 = load ptr, ptr %21, align 8, !tbaa !5
  %99 = call i64 @lsame_(ptr noundef %98, ptr noundef @.str.1)
  store i64 %99, ptr %67, align 8, !tbaa !9
  %100 = load ptr, ptr %23, align 8, !tbaa !5
  %101 = call i64 @lsame_(ptr noundef %100, ptr noundef @.str.2)
  store i64 %101, ptr %64, align 8, !tbaa !9
  %102 = load ptr, ptr %23, align 8, !tbaa !5
  %103 = call i64 @lsame_(ptr noundef %102, ptr noundef @.str.3)
  store i64 %103, ptr %61, align 8, !tbaa !9
  %104 = load ptr, ptr %23, align 8, !tbaa !5
  %105 = call i64 @lsame_(ptr noundef %104, ptr noundef @.str)
  store i64 %105, ptr %68, align 8, !tbaa !9
  %106 = load ptr, ptr %23, align 8, !tbaa !5
  %107 = call i64 @lsame_(ptr noundef %106, ptr noundef @.str.4)
  store i64 %107, ptr %60, align 8, !tbaa !9
  %108 = load i64, ptr %69, align 8, !tbaa !9
  %109 = icmp ne i64 %108, 0
  br i1 %109, label %116, label %110

110:                                              ; preds = %18
  %111 = load ptr, ptr %20, align 8, !tbaa !5
  %112 = call i64 @lsame_(ptr noundef %111, ptr noundef @.str.2)
  %113 = icmp ne i64 %112, 0
  br i1 %113, label %116, label %114

114:                                              ; preds = %110
  %115 = load ptr, ptr %37, align 8, !tbaa !5
  store i64 -1, ptr %115, align 8, !tbaa !9
  br label %186

116:                                              ; preds = %110, %18
  %117 = load i64, ptr %67, align 8, !tbaa !9
  %118 = icmp ne i64 %117, 0
  br i1 %118, label %125, label %119

119:                                              ; preds = %116
  %120 = load ptr, ptr %21, align 8, !tbaa !5
  %121 = call i64 @lsame_(ptr noundef %120, ptr noundef @.str.2)
  %122 = icmp ne i64 %121, 0
  br i1 %122, label %125, label %123

123:                                              ; preds = %119
  %124 = load ptr, ptr %37, align 8, !tbaa !5
  store i64 -2, ptr %124, align 8, !tbaa !9
  br label %185

125:                                              ; preds = %119, %116
  %126 = load i64, ptr %64, align 8, !tbaa !9
  %127 = icmp ne i64 %126, 0
  br i1 %127, label %137, label %128

128:                                              ; preds = %125
  %129 = load i64, ptr %61, align 8, !tbaa !9
  %130 = icmp ne i64 %129, 0
  br i1 %130, label %137, label %131

131:                                              ; preds = %128
  %132 = load i64, ptr %68, align 8, !tbaa !9
  %133 = icmp ne i64 %132, 0
  br i1 %133, label %137, label %134

134:                                              ; preds = %131
  %135 = load i64, ptr %60, align 8, !tbaa !9
  %136 = icmp ne i64 %135, 0
  br i1 %136, label %137, label %143

137:                                              ; preds = %134, %131, %128, %125
  %138 = load i64, ptr %67, align 8, !tbaa !9
  %139 = icmp ne i64 %138, 0
  br i1 %139, label %145, label %140

140:                                              ; preds = %137
  %141 = load i64, ptr %64, align 8, !tbaa !9
  %142 = icmp ne i64 %141, 0
  br i1 %142, label %145, label %143

143:                                              ; preds = %140, %134
  %144 = load ptr, ptr %37, align 8, !tbaa !5
  store i64 -4, ptr %144, align 8, !tbaa !9
  br label %184

145:                                              ; preds = %140, %137
  %146 = load ptr, ptr %24, align 8, !tbaa !5
  %147 = load i64, ptr %146, align 8, !tbaa !9
  %148 = icmp slt i64 %147, 0
  br i1 %148, label %149, label %151

149:                                              ; preds = %145
  %150 = load ptr, ptr %37, align 8, !tbaa !5
  store i64 -5, ptr %150, align 8, !tbaa !9
  br label %183

151:                                              ; preds = %145
  %152 = load ptr, ptr %26, align 8, !tbaa !5
  %153 = load i64, ptr %152, align 8, !tbaa !9
  %154 = load ptr, ptr %24, align 8, !tbaa !5
  %155 = load i64, ptr %154, align 8, !tbaa !9
  %156 = icmp sge i64 1, %155
  br i1 %156, label %157, label %158

157:                                              ; preds = %151
  br label %161

158:                                              ; preds = %151
  %159 = load ptr, ptr %24, align 8, !tbaa !5
  %160 = load i64, ptr %159, align 8, !tbaa !9
  br label %161

161:                                              ; preds = %158, %157
  %162 = phi i64 [ 1, %157 ], [ %160, %158 ]
  %163 = icmp slt i64 %153, %162
  br i1 %163, label %164, label %166

164:                                              ; preds = %161
  %165 = load ptr, ptr %37, align 8, !tbaa !5
  store i64 -7, ptr %165, align 8, !tbaa !9
  br label %182

166:                                              ; preds = %161
  %167 = load ptr, ptr %30, align 8, !tbaa !5
  %168 = load i64, ptr %167, align 8, !tbaa !9
  %169 = icmp slt i64 %168, 1
  br i1 %169, label %179, label %170

170:                                              ; preds = %166
  %171 = load i64, ptr %69, align 8, !tbaa !9
  %172 = icmp ne i64 %171, 0
  br i1 %172, label %173, label %181

173:                                              ; preds = %170
  %174 = load ptr, ptr %30, align 8, !tbaa !5
  %175 = load i64, ptr %174, align 8, !tbaa !9
  %176 = load ptr, ptr %24, align 8, !tbaa !5
  %177 = load i64, ptr %176, align 8, !tbaa !9
  %178 = icmp slt i64 %175, %177
  br i1 %178, label %179, label %181

179:                                              ; preds = %173, %166
  %180 = load ptr, ptr %37, align 8, !tbaa !5
  store i64 -11, ptr %180, align 8, !tbaa !9
  br label %181

181:                                              ; preds = %179, %173, %170
  br label %182

182:                                              ; preds = %181, %164
  br label %183

183:                                              ; preds = %182, %149
  br label %184

184:                                              ; preds = %183, %143
  br label %185

185:                                              ; preds = %184, %123
  br label %186

186:                                              ; preds = %185, %114
  %187 = load ptr, ptr %37, align 8, !tbaa !5
  %188 = load i64, ptr %187, align 8, !tbaa !9
  %189 = icmp eq i64 %188, 0
  br i1 %189, label %190, label %309

190:                                              ; preds = %186
  %191 = load ptr, ptr %24, align 8, !tbaa !5
  %192 = load i64, ptr %191, align 8, !tbaa !9
  %193 = icmp eq i64 %192, 0
  br i1 %193, label %194, label %195

194:                                              ; preds = %190
  store i64 1, ptr %62, align 8, !tbaa !9
  store i64 1, ptr %54, align 8, !tbaa !9
  br label %293

195:                                              ; preds = %190
  %196 = load ptr, ptr %24, align 8, !tbaa !5
  %197 = load i64, ptr %196, align 8, !tbaa !9
  %198 = load ptr, ptr %24, align 8, !tbaa !5
  %199 = load i64, ptr %198, align 8, !tbaa !9
  %200 = load ptr, ptr %24, align 8, !tbaa !5
  %201 = load ptr, ptr %24, align 8, !tbaa !5
  %202 = call i64 @ilaenv_(ptr noundef @c__1, ptr noundef @.str.5, ptr noundef @.str.6, ptr noundef %200, ptr noundef @c__1, ptr noundef %201, ptr noundef @c__0)
  %203 = mul nsw i64 %199, %202
  %204 = add nsw i64 %197, %203
  store i64 %204, ptr %63, align 8, !tbaa !9
  %205 = load ptr, ptr %24, align 8, !tbaa !5
  %206 = load i64, ptr %205, align 8, !tbaa !9
  %207 = shl i64 %206, 1
  store i64 %207, ptr %62, align 8, !tbaa !9
  %208 = load ptr, ptr %20, align 8, !tbaa !5
  %209 = load ptr, ptr %24, align 8, !tbaa !5
  %210 = load ptr, ptr %24, align 8, !tbaa !5
  %211 = load ptr, ptr %25, align 8, !tbaa !5
  %212 = load i64, ptr %39, align 8, !tbaa !9
  %213 = getelementptr inbounds %struct.complex, ptr %211, i64 %212
  %214 = load ptr, ptr %26, align 8, !tbaa !5
  %215 = load ptr, ptr %28, align 8, !tbaa !5
  %216 = getelementptr inbounds %struct.complex, ptr %215, i64 1
  %217 = load ptr, ptr %29, align 8, !tbaa !5
  %218 = load i64, ptr %41, align 8, !tbaa !9
  %219 = getelementptr inbounds %struct.complex, ptr %217, i64 %218
  %220 = load ptr, ptr %30, align 8, !tbaa !5
  %221 = load ptr, ptr %33, align 8, !tbaa !5
  %222 = getelementptr inbounds %struct.complex, ptr %221, i64 1
  %223 = call i32 @chseqr_(ptr noundef @.str.1, ptr noundef %208, ptr noundef %209, ptr noundef @c__1, ptr noundef %210, ptr noundef %213, ptr noundef %214, ptr noundef %216, ptr noundef %219, ptr noundef %220, ptr noundef %222, ptr noundef @c_n1, ptr noundef %56)
  %224 = load ptr, ptr %33, align 8, !tbaa !5
  %225 = getelementptr inbounds %struct.complex, ptr %224, i64 1
  %226 = getelementptr inbounds %struct.complex, ptr %225, i32 0, i32 0
  %227 = load float, ptr %226, align 4, !tbaa !11
  %228 = fptosi float %227 to i64
  store i64 %228, ptr %66, align 8, !tbaa !9
  %229 = load i64, ptr %69, align 8, !tbaa !9
  %230 = icmp ne i64 %229, 0
  br i1 %230, label %241, label %231

231:                                              ; preds = %195
  %232 = load i64, ptr %63, align 8, !tbaa !9
  %233 = load i64, ptr %66, align 8, !tbaa !9
  %234 = icmp sge i64 %232, %233
  br i1 %234, label %235, label %237

235:                                              ; preds = %231
  %236 = load i64, ptr %63, align 8, !tbaa !9
  br label %239

237:                                              ; preds = %231
  %238 = load i64, ptr %66, align 8, !tbaa !9
  br label %239

239:                                              ; preds = %237, %235
  %240 = phi i64 [ %236, %235 ], [ %238, %237 ]
  store i64 %240, ptr %63, align 8, !tbaa !9
  br label %271

241:                                              ; preds = %195
  %242 = load i64, ptr %63, align 8, !tbaa !9
  store i64 %242, ptr %42, align 8, !tbaa !9
  %243 = load ptr, ptr %24, align 8, !tbaa !5
  %244 = load i64, ptr %243, align 8, !tbaa !9
  %245 = load ptr, ptr %24, align 8, !tbaa !5
  %246 = load i64, ptr %245, align 8, !tbaa !9
  %247 = sub nsw i64 %246, 1
  %248 = load ptr, ptr %24, align 8, !tbaa !5
  %249 = load ptr, ptr %24, align 8, !tbaa !5
  %250 = call i64 @ilaenv_(ptr noundef @c__1, ptr noundef @.str.7, ptr noundef @.str.6, ptr noundef %248, ptr noundef @c__1, ptr noundef %249, ptr noundef @c_n1)
  %251 = mul nsw i64 %247, %250
  %252 = add nsw i64 %244, %251
  store i64 %252, ptr %43, align 8, !tbaa !9
  %253 = load i64, ptr %42, align 8, !tbaa !9
  %254 = load i64, ptr %43, align 8, !tbaa !9
  %255 = icmp sge i64 %253, %254
  br i1 %255, label %256, label %258

256:                                              ; preds = %241
  %257 = load i64, ptr %42, align 8, !tbaa !9
  br label %260

258:                                              ; preds = %241
  %259 = load i64, ptr %43, align 8, !tbaa !9
  br label %260

260:                                              ; preds = %258, %256
  %261 = phi i64 [ %257, %256 ], [ %259, %258 ]
  store i64 %261, ptr %63, align 8, !tbaa !9
  %262 = load i64, ptr %63, align 8, !tbaa !9
  %263 = load i64, ptr %66, align 8, !tbaa !9
  %264 = icmp sge i64 %262, %263
  br i1 %264, label %265, label %267

265:                                              ; preds = %260
  %266 = load i64, ptr %63, align 8, !tbaa !9
  br label %269

267:                                              ; preds = %260
  %268 = load i64, ptr %66, align 8, !tbaa !9
  br label %269

269:                                              ; preds = %267, %265
  %270 = phi i64 [ %266, %265 ], [ %268, %267 ]
  store i64 %270, ptr %63, align 8, !tbaa !9
  br label %271

271:                                              ; preds = %269, %239
  %272 = load i64, ptr %63, align 8, !tbaa !9
  store i64 %272, ptr %54, align 8, !tbaa !9
  %273 = load i64, ptr %64, align 8, !tbaa !9
  %274 = icmp ne i64 %273, 0
  br i1 %274, label %292, label %275

275:                                              ; preds = %271
  %276 = load i64, ptr %54, align 8, !tbaa !9
  store i64 %276, ptr %42, align 8, !tbaa !9
  %277 = load ptr, ptr %24, align 8, !tbaa !5
  %278 = load i64, ptr %277, align 8, !tbaa !9
  %279 = load ptr, ptr %24, align 8, !tbaa !5
  %280 = load i64, ptr %279, align 8, !tbaa !9
  %281 = mul nsw i64 %278, %280
  %282 = sdiv i64 %281, 2
  store i64 %282, ptr %43, align 8, !tbaa !9
  %283 = load i64, ptr %42, align 8, !tbaa !9
  %284 = load i64, ptr %43, align 8, !tbaa !9
  %285 = icmp sge i64 %283, %284
  br i1 %285, label %286, label %288

286:                                              ; preds = %275
  %287 = load i64, ptr %42, align 8, !tbaa !9
  br label %290

288:                                              ; preds = %275
  %289 = load i64, ptr %43, align 8, !tbaa !9
  br label %290

290:                                              ; preds = %288, %286
  %291 = phi i64 [ %287, %286 ], [ %289, %288 ]
  store i64 %291, ptr %54, align 8, !tbaa !9
  br label %292

292:                                              ; preds = %290, %271
  br label %293

293:                                              ; preds = %292, %194
  %294 = load i64, ptr %54, align 8, !tbaa !9
  %295 = sitofp i64 %294 to float
  %296 = load ptr, ptr %33, align 8, !tbaa !5
  %297 = getelementptr inbounds %struct.complex, ptr %296, i64 1
  %298 = getelementptr inbounds %struct.complex, ptr %297, i32 0, i32 0
  store float %295, ptr %298, align 4, !tbaa !11
  %299 = load ptr, ptr %33, align 8, !tbaa !5
  %300 = getelementptr inbounds %struct.complex, ptr %299, i64 1
  %301 = getelementptr inbounds %struct.complex, ptr %300, i32 0, i32 1
  store float 0.000000e+00, ptr %301, align 4, !tbaa !14
  %302 = load ptr, ptr %34, align 8, !tbaa !5
  %303 = load i64, ptr %302, align 8, !tbaa !9
  %304 = load i64, ptr %62, align 8, !tbaa !9
  %305 = icmp slt i64 %303, %304
  br i1 %305, label %306, label %308

306:                                              ; preds = %293
  %307 = load ptr, ptr %37, align 8, !tbaa !5
  store i64 -15, ptr %307, align 8, !tbaa !9
  br label %308

308:                                              ; preds = %306, %293
  br label %309

309:                                              ; preds = %308, %186
  %310 = load ptr, ptr %37, align 8, !tbaa !5
  %311 = load i64, ptr %310, align 8, !tbaa !9
  %312 = icmp ne i64 %311, 0
  br i1 %312, label %313, label %318

313:                                              ; preds = %309
  %314 = load ptr, ptr %37, align 8, !tbaa !5
  %315 = load i64, ptr %314, align 8, !tbaa !9
  %316 = sub nsw i64 0, %315
  store i64 %316, ptr %42, align 8, !tbaa !9
  %317 = call i32 @xerbla_(ptr noundef @.str.8, ptr noundef %42)
  store i32 0, ptr %19, align 4
  store i32 1, ptr %70, align 4
  br label %621

318:                                              ; preds = %309
  %319 = load ptr, ptr %24, align 8, !tbaa !5
  %320 = load i64, ptr %319, align 8, !tbaa !9
  %321 = icmp eq i64 %320, 0
  br i1 %321, label %322, label %324

322:                                              ; preds = %318
  %323 = load ptr, ptr %27, align 8, !tbaa !5
  store i64 0, ptr %323, align 8, !tbaa !9
  store i32 0, ptr %19, align 4
  store i32 1, ptr %70, align 4
  br label %621

324:                                              ; preds = %318
  %325 = call double @slamch_(ptr noundef @.str.9)
  %326 = fptrunc double %325 to float
  store float %326, ptr %48, align 4, !tbaa !15
  %327 = call double @slamch_(ptr noundef @.str.1)
  %328 = fptrunc double %327 to float
  store float %328, ptr %65, align 4, !tbaa !15
  %329 = load float, ptr %65, align 4, !tbaa !15
  %330 = fdiv float 1.000000e+00, %329
  store float %330, ptr %59, align 4, !tbaa !15
  %331 = call i32 @slabad_(ptr noundef %65, ptr noundef %59)
  %332 = load float, ptr %65, align 4, !tbaa !15
  %333 = fpext float %332 to double
  %334 = call double @sqrt(double noundef %333) #4
  %335 = load float, ptr %48, align 4, !tbaa !15
  %336 = fpext float %335 to double
  %337 = fdiv double %334, %336
  %338 = fptrunc double %337 to float
  store float %338, ptr %65, align 4, !tbaa !15
  %339 = load float, ptr %65, align 4, !tbaa !15
  %340 = fdiv float 1.000000e+00, %339
  store float %340, ptr %59, align 4, !tbaa !15
  %341 = load ptr, ptr %24, align 8, !tbaa !5
  %342 = load ptr, ptr %24, align 8, !tbaa !5
  %343 = load ptr, ptr %25, align 8, !tbaa !5
  %344 = load i64, ptr %39, align 8, !tbaa !9
  %345 = getelementptr inbounds %struct.complex, ptr %343, i64 %344
  %346 = load ptr, ptr %26, align 8, !tbaa !5
  %347 = getelementptr inbounds [1 x float], ptr %47, i64 0, i64 0
  %348 = call double @clange_(ptr noundef @.str.10, ptr noundef %341, ptr noundef %342, ptr noundef %345, ptr noundef %346, ptr noundef %347)
  %349 = fptrunc double %348 to float
  store float %349, ptr %50, align 4, !tbaa !15
  store i64 0, ptr %57, align 8, !tbaa !9
  %350 = load float, ptr %50, align 4, !tbaa !15
  %351 = fcmp ogt float %350, 0.000000e+00
  br i1 %351, label %352, label %358

352:                                              ; preds = %324
  %353 = load float, ptr %50, align 4, !tbaa !15
  %354 = load float, ptr %65, align 4, !tbaa !15
  %355 = fcmp olt float %353, %354
  br i1 %355, label %356, label %358

356:                                              ; preds = %352
  store i64 1, ptr %57, align 8, !tbaa !9
  %357 = load float, ptr %65, align 4, !tbaa !15
  store float %357, ptr %58, align 4, !tbaa !15
  br label %365

358:                                              ; preds = %352, %324
  %359 = load float, ptr %50, align 4, !tbaa !15
  %360 = load float, ptr %59, align 4, !tbaa !15
  %361 = fcmp ogt float %359, %360
  br i1 %361, label %362, label %364

362:                                              ; preds = %358
  store i64 1, ptr %57, align 8, !tbaa !9
  %363 = load float, ptr %59, align 4, !tbaa !15
  store float %363, ptr %58, align 4, !tbaa !15
  br label %364

364:                                              ; preds = %362, %358
  br label %365

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

368:                                              ; preds = %365
  %369 = load ptr, ptr %24, align 8, !tbaa !5
  %370 = load ptr, ptr %24, align 8, !tbaa !5
  %371 = load ptr, ptr %25, align 8, !tbaa !5
  %372 = load i64, ptr %39, align 8, !tbaa !9
  %373 = getelementptr inbounds %struct.complex, ptr %371, i64 %372
  %374 = load ptr, ptr %26, align 8, !tbaa !5
  %375 = call i32 @clascl_(ptr noundef @.str.11, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %50, ptr noundef %58, ptr noundef %369, ptr noundef %370, ptr noundef %373, ptr noundef %374, ptr noundef %51)
  br label %376

376:                                              ; preds = %368, %365
  store i64 1, ptr %49, align 8, !tbaa !9
  %377 = load ptr, ptr %24, align 8, !tbaa !5
  %378 = load ptr, ptr %25, align 8, !tbaa !5
  %379 = load i64, ptr %39, align 8, !tbaa !9
  %380 = getelementptr inbounds %struct.complex, ptr %378, i64 %379
  %381 = load ptr, ptr %26, align 8, !tbaa !5
  %382 = load ptr, ptr %35, align 8, !tbaa !5
  %383 = load i64, ptr %49, align 8, !tbaa !9
  %384 = getelementptr inbounds float, ptr %382, i64 %383
  %385 = call i32 @cgebal_(ptr noundef @.str.9, ptr noundef %377, ptr noundef %380, ptr noundef %381, ptr noundef %46, ptr noundef %45, ptr noundef %384, ptr noundef %51)
  store i64 1, ptr %52, align 8, !tbaa !9
  %386 = load ptr, ptr %24, align 8, !tbaa !5
  %387 = load i64, ptr %386, align 8, !tbaa !9
  %388 = load i64, ptr %52, align 8, !tbaa !9
  %389 = add nsw i64 %387, %388
  store i64 %389, ptr %53, align 8, !tbaa !9
  %390 = load ptr, ptr %34, align 8, !tbaa !5
  %391 = load i64, ptr %390, align 8, !tbaa !9
  %392 = load i64, ptr %53, align 8, !tbaa !9
  %393 = sub nsw i64 %391, %392
  %394 = add nsw i64 %393, 1
  store i64 %394, ptr %42, align 8, !tbaa !9
  %395 = load ptr, ptr %24, align 8, !tbaa !5
  %396 = load ptr, ptr %25, align 8, !tbaa !5
  %397 = load i64, ptr %39, align 8, !tbaa !9
  %398 = getelementptr inbounds %struct.complex, ptr %396, i64 %397
  %399 = load ptr, ptr %26, align 8, !tbaa !5
  %400 = load ptr, ptr %33, align 8, !tbaa !5
  %401 = load i64, ptr %52, align 8, !tbaa !9
  %402 = getelementptr inbounds %struct.complex, ptr %400, i64 %401
  %403 = load ptr, ptr %33, align 8, !tbaa !5
  %404 = load i64, ptr %53, align 8, !tbaa !9
  %405 = getelementptr inbounds %struct.complex, ptr %403, i64 %404
  %406 = call i32 @cgehrd_(ptr noundef %395, ptr noundef %46, ptr noundef %45, ptr noundef %398, ptr noundef %399, ptr noundef %402, ptr noundef %405, ptr noundef %42, ptr noundef %51)
  %407 = load i64, ptr %69, align 8, !tbaa !9
  %408 = icmp ne i64 %407, 0
  br i1 %408, label %409, label %438

409:                                              ; preds = %376
  %410 = load ptr, ptr %24, align 8, !tbaa !5
  %411 = load ptr, ptr %24, align 8, !tbaa !5
  %412 = load ptr, ptr %25, align 8, !tbaa !5
  %413 = load i64, ptr %39, align 8, !tbaa !9
  %414 = getelementptr inbounds %struct.complex, ptr %412, i64 %413
  %415 = load ptr, ptr %26, align 8, !tbaa !5
  %416 = load ptr, ptr %29, align 8, !tbaa !5
  %417 = load i64, ptr %41, align 8, !tbaa !9
  %418 = getelementptr inbounds %struct.complex, ptr %416, i64 %417
  %419 = load ptr, ptr %30, align 8, !tbaa !5
  %420 = call i32 @clacpy_(ptr noundef @.str.12, ptr noundef %410, ptr noundef %411, ptr noundef %414, ptr noundef %415, ptr noundef %418, ptr noundef %419)
  %421 = load ptr, ptr %34, align 8, !tbaa !5
  %422 = load i64, ptr %421, align 8, !tbaa !9
  %423 = load i64, ptr %53, align 8, !tbaa !9
  %424 = sub nsw i64 %422, %423
  %425 = add nsw i64 %424, 1
  store i64 %425, ptr %42, align 8, !tbaa !9
  %426 = load ptr, ptr %24, align 8, !tbaa !5
  %427 = load ptr, ptr %29, align 8, !tbaa !5
  %428 = load i64, ptr %41, align 8, !tbaa !9
  %429 = getelementptr inbounds %struct.complex, ptr %427, i64 %428
  %430 = load ptr, ptr %30, align 8, !tbaa !5
  %431 = load ptr, ptr %33, align 8, !tbaa !5
  %432 = load i64, ptr %52, align 8, !tbaa !9
  %433 = getelementptr inbounds %struct.complex, ptr %431, i64 %432
  %434 = load ptr, ptr %33, align 8, !tbaa !5
  %435 = load i64, ptr %53, align 8, !tbaa !9
  %436 = getelementptr inbounds %struct.complex, ptr %434, i64 %435
  %437 = call i32 @cunghr_(ptr noundef %426, ptr noundef %46, ptr noundef %45, ptr noundef %429, ptr noundef %430, ptr noundef %433, ptr noundef %436, ptr noundef %42, ptr noundef %51)
  br label %438

438:                                              ; preds = %409, %376
  %439 = load ptr, ptr %27, align 8, !tbaa !5
  store i64 0, ptr %439, align 8, !tbaa !9
  %440 = load i64, ptr %52, align 8, !tbaa !9
  store i64 %440, ptr %53, align 8, !tbaa !9
  %441 = load ptr, ptr %34, align 8, !tbaa !5
  %442 = load i64, ptr %441, align 8, !tbaa !9
  %443 = load i64, ptr %53, align 8, !tbaa !9
  %444 = sub nsw i64 %442, %443
  %445 = add nsw i64 %444, 1
  store i64 %445, ptr %42, align 8, !tbaa !9
  %446 = load ptr, ptr %20, align 8, !tbaa !5
  %447 = load ptr, ptr %24, align 8, !tbaa !5
  %448 = load ptr, ptr %25, align 8, !tbaa !5
  %449 = load i64, ptr %39, align 8, !tbaa !9
  %450 = getelementptr inbounds %struct.complex, ptr %448, i64 %449
  %451 = load ptr, ptr %26, align 8, !tbaa !5
  %452 = load ptr, ptr %28, align 8, !tbaa !5
  %453 = getelementptr inbounds %struct.complex, ptr %452, i64 1
  %454 = load ptr, ptr %29, align 8, !tbaa !5
  %455 = load i64, ptr %41, align 8, !tbaa !9
  %456 = getelementptr inbounds %struct.complex, ptr %454, i64 %455
  %457 = load ptr, ptr %30, align 8, !tbaa !5
  %458 = load ptr, ptr %33, align 8, !tbaa !5
  %459 = load i64, ptr %53, align 8, !tbaa !9
  %460 = getelementptr inbounds %struct.complex, ptr %458, i64 %459
  %461 = call i32 @chseqr_(ptr noundef @.str.1, ptr noundef %446, ptr noundef %447, ptr noundef %46, ptr noundef %45, ptr noundef %450, ptr noundef %451, ptr noundef %453, ptr noundef %456, ptr noundef %457, ptr noundef %460, ptr noundef %42, ptr noundef %56)
  %462 = load i64, ptr %56, align 8, !tbaa !9
  %463 = icmp sgt i64 %462, 0
  br i1 %463, label %464, label %467

464:                                              ; preds = %438
  %465 = load i64, ptr %56, align 8, !tbaa !9
  %466 = load ptr, ptr %37, align 8, !tbaa !5
  store i64 %465, ptr %466, align 8, !tbaa !9
  br label %467

467:                                              ; preds = %464, %438
  %468 = load i64, ptr %67, align 8, !tbaa !9
  %469 = icmp ne i64 %468, 0
  br i1 %469, label %470, label %558

470:                                              ; preds = %467
  %471 = load ptr, ptr %37, align 8, !tbaa !5
  %472 = load i64, ptr %471, align 8, !tbaa !9
  %473 = icmp eq i64 %472, 0
  br i1 %473, label %474, label %558

474:                                              ; preds = %470
  %475 = load i64, ptr %57, align 8, !tbaa !9
  %476 = icmp ne i64 %475, 0
  br i1 %476, label %477, label %483

477:                                              ; preds = %474
  %478 = load ptr, ptr %24, align 8, !tbaa !5
  %479 = load ptr, ptr %28, align 8, !tbaa !5
  %480 = getelementptr inbounds %struct.complex, ptr %479, i64 1
  %481 = load ptr, ptr %24, align 8, !tbaa !5
  %482 = call i32 @clascl_(ptr noundef @.str.11, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %58, ptr noundef %50, ptr noundef %478, ptr noundef @c__1, ptr noundef %480, ptr noundef %481, ptr noundef %51)
  br label %483

483:                                              ; preds = %477, %474
  %484 = load ptr, ptr %24, align 8, !tbaa !5
  %485 = load i64, ptr %484, align 8, !tbaa !9
  store i64 %485, ptr %42, align 8, !tbaa !9
  store i64 1, ptr %44, align 8, !tbaa !9
  br label %486

486:                                              ; preds = %499, %483
  %487 = load i64, ptr %44, align 8, !tbaa !9
  %488 = load i64, ptr %42, align 8, !tbaa !9
  %489 = icmp sle i64 %487, %488
  br i1 %489, label %490, label %502

490:                                              ; preds = %486
  %491 = load ptr, ptr %22, align 8, !tbaa !5
  %492 = load ptr, ptr %28, align 8, !tbaa !5
  %493 = load i64, ptr %44, align 8, !tbaa !9
  %494 = getelementptr inbounds %struct.complex, ptr %492, i64 %493
  %495 = call i64 (ptr, ...) %491(ptr noundef %494)
  %496 = load ptr, ptr %36, align 8, !tbaa !5
  %497 = load i64, ptr %44, align 8, !tbaa !9
  %498 = getelementptr inbounds i64, ptr %496, i64 %497
  store i64 %495, ptr %498, align 8, !tbaa !9
  br label %499

499:                                              ; preds = %490
  %500 = load i64, ptr %44, align 8, !tbaa !9
  %501 = add nsw i64 %500, 1
  store i64 %501, ptr %44, align 8, !tbaa !9
  br label %486, !llvm.loop !16

502:                                              ; preds = %486
  %503 = load ptr, ptr %34, align 8, !tbaa !5
  %504 = load i64, ptr %503, align 8, !tbaa !9
  %505 = load i64, ptr %53, align 8, !tbaa !9
  %506 = sub nsw i64 %504, %505
  %507 = add nsw i64 %506, 1
  store i64 %507, ptr %42, align 8, !tbaa !9
  %508 = load ptr, ptr %23, align 8, !tbaa !5
  %509 = load ptr, ptr %20, align 8, !tbaa !5
  %510 = load ptr, ptr %36, align 8, !tbaa !5
  %511 = getelementptr inbounds i64, ptr %510, i64 1
  %512 = load ptr, ptr %24, align 8, !tbaa !5
  %513 = load ptr, ptr %25, align 8, !tbaa !5
  %514 = load i64, ptr %39, align 8, !tbaa !9
  %515 = getelementptr inbounds %struct.complex, ptr %513, i64 %514
  %516 = load ptr, ptr %26, align 8, !tbaa !5
  %517 = load ptr, ptr %29, align 8, !tbaa !5
  %518 = load i64, ptr %41, align 8, !tbaa !9
  %519 = getelementptr inbounds %struct.complex, ptr %517, i64 %518
  %520 = load ptr, ptr %30, align 8, !tbaa !5
  %521 = load ptr, ptr %28, align 8, !tbaa !5
  %522 = getelementptr inbounds %struct.complex, ptr %521, i64 1
  %523 = load ptr, ptr %27, align 8, !tbaa !5
  %524 = load ptr, ptr %31, align 8, !tbaa !5
  %525 = load ptr, ptr %32, align 8, !tbaa !5
  %526 = load ptr, ptr %33, align 8, !tbaa !5
  %527 = load i64, ptr %53, align 8, !tbaa !9
  %528 = getelementptr inbounds %struct.complex, ptr %526, i64 %527
  %529 = call i32 @ctrsen_(ptr noundef %508, ptr noundef %509, ptr noundef %511, ptr noundef %512, ptr noundef %515, ptr noundef %516, ptr noundef %519, ptr noundef %520, ptr noundef %522, ptr noundef %523, ptr noundef %524, ptr noundef %525, ptr noundef %528, ptr noundef %42, ptr noundef %55)
  %530 = load i64, ptr %64, align 8, !tbaa !9
  %531 = icmp ne i64 %530, 0
  br i1 %531, label %552, label %532

532:                                              ; preds = %502
  %533 = load i64, ptr %63, align 8, !tbaa !9
  store i64 %533, ptr %42, align 8, !tbaa !9
  %534 = load ptr, ptr %27, align 8, !tbaa !5
  %535 = load i64, ptr %534, align 8, !tbaa !9
  %536 = shl i64 %535, 1
  %537 = load ptr, ptr %24, align 8, !tbaa !5
  %538 = load i64, ptr %537, align 8, !tbaa !9
  %539 = load ptr, ptr %27, align 8, !tbaa !5
  %540 = load i64, ptr %539, align 8, !tbaa !9
  %541 = sub nsw i64 %538, %540
  %542 = mul nsw i64 %536, %541
  store i64 %542, ptr %43, align 8, !tbaa !9
  %543 = load i64, ptr %42, align 8, !tbaa !9
  %544 = load i64, ptr %43, align 8, !tbaa !9
  %545 = icmp sge i64 %543, %544
  br i1 %545, label %546, label %548

546:                                              ; preds = %532
  %547 = load i64, ptr %42, align 8, !tbaa !9
  br label %550

548:                                              ; preds = %532
  %549 = load i64, ptr %43, align 8, !tbaa !9
  br label %550

550:                                              ; preds = %548, %546
  %551 = phi i64 [ %547, %546 ], [ %549, %548 ]
  store i64 %551, ptr %63, align 8, !tbaa !9
  br label %552

552:                                              ; preds = %550, %502
  %553 = load i64, ptr %55, align 8, !tbaa !9
  %554 = icmp eq i64 %553, -14
  br i1 %554, label %555, label %557

555:                                              ; preds = %552
  %556 = load ptr, ptr %37, align 8, !tbaa !5
  store i64 -15, ptr %556, align 8, !tbaa !9
  br label %557

557:                                              ; preds = %555, %552
  br label %558

558:                                              ; preds = %557, %470, %467
  %559 = load i64, ptr %69, align 8, !tbaa !9
  %560 = icmp ne i64 %559, 0
  br i1 %560, label %561, label %572

561:                                              ; preds = %558
  %562 = load ptr, ptr %24, align 8, !tbaa !5
  %563 = load ptr, ptr %35, align 8, !tbaa !5
  %564 = load i64, ptr %49, align 8, !tbaa !9
  %565 = getelementptr inbounds float, ptr %563, i64 %564
  %566 = load ptr, ptr %24, align 8, !tbaa !5
  %567 = load ptr, ptr %29, align 8, !tbaa !5
  %568 = load i64, ptr %41, align 8, !tbaa !9
  %569 = getelementptr inbounds %struct.complex, ptr %567, i64 %568
  %570 = load ptr, ptr %30, align 8, !tbaa !5
  %571 = call i32 @cgebak_(ptr noundef @.str.9, ptr noundef @.str.13, ptr noundef %562, ptr noundef %46, ptr noundef %45, ptr noundef %565, ptr noundef %566, ptr noundef %569, ptr noundef %570, ptr noundef %51)
  br label %572

572:                                              ; preds = %561, %558
  %573 = load i64, ptr %57, align 8, !tbaa !9
  %574 = icmp ne i64 %573, 0
  br i1 %574, label %575, label %612

575:                                              ; preds = %572
  %576 = load ptr, ptr %24, align 8, !tbaa !5
  %577 = load ptr, ptr %24, align 8, !tbaa !5
  %578 = load ptr, ptr %25, align 8, !tbaa !5
  %579 = load i64, ptr %39, align 8, !tbaa !9
  %580 = getelementptr inbounds %struct.complex, ptr %578, i64 %579
  %581 = load ptr, ptr %26, align 8, !tbaa !5
  %582 = call i32 @clascl_(ptr noundef @.str.14, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %58, ptr noundef %50, ptr noundef %576, ptr noundef %577, ptr noundef %580, ptr noundef %581, ptr noundef %51)
  %583 = load ptr, ptr %26, align 8, !tbaa !5
  %584 = load i64, ptr %583, align 8, !tbaa !9
  %585 = add nsw i64 %584, 1
  store i64 %585, ptr %42, align 8, !tbaa !9
  %586 = load ptr, ptr %24, align 8, !tbaa !5
  %587 = load ptr, ptr %25, align 8, !tbaa !5
  %588 = load i64, ptr %39, align 8, !tbaa !9
  %589 = getelementptr inbounds %struct.complex, ptr %587, i64 %588
  %590 = load ptr, ptr %28, align 8, !tbaa !5
  %591 = getelementptr inbounds %struct.complex, ptr %590, i64 1
  %592 = call i32 @f2c_ccopy(ptr noundef %586, ptr noundef %589, ptr noundef %42, ptr noundef %591, ptr noundef @c__1)
  %593 = load i64, ptr %68, align 8, !tbaa !9
  %594 = icmp ne i64 %593, 0
  br i1 %594, label %598, label %595

595:                                              ; preds = %575
  %596 = load i64, ptr %60, align 8, !tbaa !9
  %597 = icmp ne i64 %596, 0
  br i1 %597, label %598, label %611

598:                                              ; preds = %595, %575
  %599 = load ptr, ptr %37, align 8, !tbaa !5
  %600 = load i64, ptr %599, align 8, !tbaa !9
  %601 = icmp eq i64 %600, 0
  br i1 %601, label %602, label %611

602:                                              ; preds = %598
  %603 = load ptr, ptr %32, align 8, !tbaa !5
  %604 = load float, ptr %603, align 4, !tbaa !15
  %605 = getelementptr inbounds [1 x float], ptr %47, i64 0, i64 0
  store float %604, ptr %605, align 4, !tbaa !15
  %606 = getelementptr inbounds [1 x float], ptr %47, i64 0, i64 0
  %607 = call i32 @slascl_(ptr noundef @.str.11, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %58, ptr noundef %50, ptr noundef @c__1, ptr noundef @c__1, ptr noundef %606, ptr noundef @c__1, ptr noundef %51)
  %608 = getelementptr inbounds [1 x float], ptr %47, i64 0, i64 0
  %609 = load float, ptr %608, align 4, !tbaa !15
  %610 = load ptr, ptr %32, align 8, !tbaa !5
  store float %609, ptr %610, align 4, !tbaa !15
  br label %611

611:                                              ; preds = %602, %598, %595
  br label %612

612:                                              ; preds = %611, %572
  %613 = load i64, ptr %63, align 8, !tbaa !9
  %614 = sitofp i64 %613 to float
  %615 = load ptr, ptr %33, align 8, !tbaa !5
  %616 = getelementptr inbounds %struct.complex, ptr %615, i64 1
  %617 = getelementptr inbounds %struct.complex, ptr %616, i32 0, i32 0
  store float %614, ptr %617, align 4, !tbaa !11
  %618 = load ptr, ptr %33, align 8, !tbaa !5
  %619 = getelementptr inbounds %struct.complex, ptr %618, i64 1
  %620 = getelementptr inbounds %struct.complex, ptr %619, i32 0, i32 1
  store float 0.000000e+00, ptr %620, align 4, !tbaa !14
  store i32 0, ptr %19, align 4
  store i32 1, ptr %70, align 4
  br label %621

621:                                              ; preds = %612, %322, %313
  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 4, 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 4, ptr %59) #4
  call void @llvm.lifetime.end.p0(i64 4, 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 4, ptr %50) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #4
  call void @llvm.lifetime.end.p0(i64 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
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #4
  %622 = load i32, ptr %19, align 4
  ret i32 %622
}

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

declare double @slamch_(ptr noundef) #2

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

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

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

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

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

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

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

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

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

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

declare i32 @slascl_(ptr noundef, ptr noundef, ptr noundef, 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 "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, !13, i64 0}
!12 = !{!"", !13, i64 0, !13, i64 4}
!13 = !{!"float", !7, i64 0}
!14 = !{!12, !13, i64 4}
!15 = !{!13, !13, i64 0}
!16 = distinct !{!16, !17}
!17 = !{!"llvm.loop.mustprogress"}


; 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.complex = type { float, float }

@.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
@c__1 = external hidden global i64, align 8
@.str.5 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [2 x i8], align 1
@c__0 = external hidden global i64, align 8
@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 [2 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [2 x i8], align 1

; Function Attrs: nounwind uwtable
define dso_local noundef i32 @cgeesx_(ptr noundef %0, ptr noundef %1, ptr nocapture noundef readonly %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 nocapture noundef readonly %14, ptr noundef %15, ptr noundef %16, ptr nocapture noundef %17) local_unnamed_addr #0 {
  %19 = alloca i64, align 8
  %20 = alloca i64, align 8
  %21 = alloca i64, align 8
  %22 = alloca [1 x float], align 4
  %23 = alloca float, align 4
  %24 = alloca i64, align 8
  %25 = alloca i64, align 8
  %26 = alloca i64, align 8
  %27 = alloca float, align 4
  %28 = alloca float, align 4
  %29 = alloca float, align 4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %19) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %20) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %21) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %22) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %23) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %24) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %25) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %26) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %27) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %28) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %29) #5
  %30 = getelementptr inbounds i8, ptr %8, i64 -8
  %31 = getelementptr inbounds i8, ptr %16, i64 -8
  store i64 0, ptr %17, align 8, !tbaa !5
  %32 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str) #5
  %33 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.1) #5
  %34 = tail call i64 @lsame_(ptr noundef %3, ptr noundef nonnull @.str.2) #5
  %35 = tail call i64 @lsame_(ptr noundef %3, ptr noundef nonnull @.str.3) #5
  %36 = tail call i64 @lsame_(ptr noundef %3, ptr noundef nonnull @.str) #5
  %37 = tail call i64 @lsame_(ptr noundef %3, ptr noundef nonnull @.str.4) #5
  %.not = icmp ne i64 %32, 0
  br i1 %.not, label %40, label %38

38:                                               ; preds = %18
  %39 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.2) #5
  %.not248 = icmp eq i64 %39, 0
  br i1 %.not248, label %.thread267.sink.split, label %40

40:                                               ; preds = %38, %18
  %.not250 = icmp eq i64 %33, 0
  br i1 %.not250, label %41, label %43

41:                                               ; preds = %40
  %42 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.2) #5
  %.not249 = icmp eq i64 %42, 0
  br i1 %.not249, label %.thread267.sink.split, label %43

43:                                               ; preds = %41, %40
  %44 = icmp eq i64 %34, 0
  %45 = icmp eq i64 %35, 0
  %or.cond.not285 = select i1 %44, i1 %45, i1 false
  %46 = icmp eq i64 %36, 0
  %or.cond3.not282 = select i1 %or.cond.not285, i1 %46, i1 false
  %47 = icmp eq i64 %37, 0
  %or.cond5.not280 = select i1 %or.cond3.not282, i1 %47, i1 false
  %48 = or i64 %34, %33
  %or.cond7.not = icmp eq i64 %48, 0
  %or.cond262 = select i1 %or.cond5.not280, i1 true, i1 %or.cond7.not
  br i1 %or.cond262, label %.thread267.sink.split, label %49

49:                                               ; preds = %43
  %50 = load i64, ptr %4, align 8, !tbaa !5
  %51 = icmp slt i64 %50, 0
  br i1 %51, label %.thread267.sink.split, label %52

52:                                               ; preds = %49
  %53 = load i64, ptr %6, align 8, !tbaa !5
  %spec.select = tail call i64 @llvm.umax.i64(i64 %50, i64 1)
  %54 = icmp slt i64 %53, %spec.select
  br i1 %54, label %.thread267.sink.split, label %55

55:                                               ; preds = %52
  %56 = load i64, ptr %10, align 8, !tbaa !5
  %57 = icmp slt i64 %56, 1
  %58 = icmp ult i64 %56, %50
  %or.cond278 = and i1 %.not, %58
  %or.cond = or i1 %57, %or.cond278
  br i1 %or.cond, label %.thread267.sink.split, label %59

59:                                               ; preds = %55
  %.pr = load i64, ptr %17, align 8, !tbaa !5
  %60 = icmp eq i64 %.pr, 0
  br i1 %60, label %61, label %.thread267

61:                                               ; preds = %59
  %62 = icmp eq i64 %50, 0
  br i1 %62, label %87, label %63

63:                                               ; preds = %61
  %64 = tail call i64 @ilaenv_(ptr noundef nonnull @c__1, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.6, ptr noundef nonnull %4, ptr noundef nonnull @c__1, ptr noundef nonnull %4, ptr noundef nonnull @c__0) #5
  %65 = add i64 %64, 1
  %66 = mul i64 %65, %50
  %67 = load i64, ptr %4, align 8, !tbaa !5
  %68 = shl i64 %67, 1
  %69 = call i32 @chseqr_(ptr noundef nonnull @.str.1, ptr noundef %0, ptr noundef nonnull %4, ptr noundef nonnull @c__1, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %8, ptr noundef %9, ptr noundef nonnull %10, ptr noundef %13, ptr noundef nonnull @c_n1, ptr noundef nonnull %26) #5
  %70 = load float, ptr %13, align 4, !tbaa !9
  %71 = fptosi float %70 to i64
  br i1 %.not, label %72, label %80

72:                                               ; preds = %63
  store i64 %66, ptr %19, align 8, !tbaa !5
  %73 = load i64, ptr %4, align 8, !tbaa !5
  %74 = add nsw i64 %73, -1
  %75 = call i64 @ilaenv_(ptr noundef nonnull @c__1, ptr noundef nonnull @.str.7, ptr noundef nonnull @.str.6, ptr noundef nonnull %4, ptr noundef nonnull @c__1, ptr noundef nonnull %4, ptr noundef nonnull @c_n1) #5
  %76 = mul nsw i64 %74, %75
  %77 = add nsw i64 %76, %73
  %78 = load i64, ptr %19, align 8
  %79 = call i64 @llvm.smax.i64(i64 %78, i64 %77)
  br label %80

80:                                               ; preds = %63, %72
  %.sink = phi i64 [ %79, %72 ], [ %66, %63 ]
  %81 = call i64 @llvm.smax.i64(i64 %.sink, i64 %71)
  br i1 %44, label %82, label %87

82:                                               ; preds = %80
  store i64 %81, ptr %19, align 8, !tbaa !5
  %83 = load i64, ptr %4, align 8, !tbaa !5
  %84 = mul nsw i64 %83, %83
  %85 = lshr i64 %84, 1
  %86 = call i64 @llvm.smax.i64(i64 %81, i64 %85)
  br label %87

87:                                               ; preds = %61, %80, %82
  %.0239 = phi i64 [ %81, %80 ], [ %86, %82 ], [ 1, %61 ]
  %.0237 = phi i64 [ %68, %80 ], [ %68, %82 ], [ 1, %61 ]
  %.1 = phi i64 [ %81, %80 ], [ %81, %82 ], [ undef, %61 ]
  %88 = sitofp i64 %.0239 to float
  store float %88, ptr %13, align 4, !tbaa !9
  %89 = getelementptr inbounds i8, ptr %13, i64 4
  store float 0.000000e+00, ptr %89, align 4, !tbaa !12
  %90 = load i64, ptr %14, align 8, !tbaa !5
  %91 = icmp slt i64 %90, %.0237
  br i1 %91, label %.thread267.sink.split, label %.thread

.thread:                                          ; preds = %87
  %.pr264.pr = load i64, ptr %17, align 8, !tbaa !5
  %.not256 = icmp eq i64 %.pr264.pr, 0
  br i1 %.not256, label %95, label %.thread267

.thread267.sink.split:                            ; preds = %87, %55, %52, %49, %43, %41, %38
  %.sink290 = phi i64 [ -1, %38 ], [ -2, %41 ], [ -4, %43 ], [ -5, %49 ], [ -7, %52 ], [ -11, %55 ], [ -15, %87 ]
  store i64 %.sink290, ptr %17, align 8, !tbaa !5
  br label %.thread267

.thread267:                                       ; preds = %.thread267.sink.split, %59, %.thread
  %92 = phi i64 [ %.pr264.pr, %.thread ], [ %.pr, %59 ], [ %.sink290, %.thread267.sink.split ]
  %93 = sub nsw i64 0, %92
  store i64 %93, ptr %19, align 8, !tbaa !5
  %94 = call i32 @xerbla_(ptr noundef nonnull @.str.8, ptr noundef nonnull %19) #5
  br label %188

95:                                               ; preds = %.thread
  %96 = load i64, ptr %4, align 8, !tbaa !5
  %97 = icmp eq i64 %96, 0
  br i1 %97, label %98, label %99

98:                                               ; preds = %95
  store i64 0, ptr %7, align 8, !tbaa !5
  br label %188

99:                                               ; preds = %95
  %100 = call double @slamch_(ptr noundef nonnull @.str.9) #5
  %101 = fptrunc double %100 to float
  %102 = call double @slamch_(ptr noundef nonnull @.str.1) #5
  %103 = fptrunc double %102 to float
  store float %103, ptr %29, align 4, !tbaa !13
  %104 = fdiv float 1.000000e+00, %103
  store float %104, ptr %28, align 4, !tbaa !13
  %105 = call i32 @slabad_(ptr noundef nonnull %29, ptr noundef nonnull %28) #5
  %106 = load float, ptr %29, align 4, !tbaa !13
  %107 = fpext float %106 to double
  %108 = call double @sqrt(double noundef %107) #5
  %109 = fpext float %101 to double
  %110 = fdiv double %108, %109
  %111 = fptrunc double %110 to float
  store float %111, ptr %29, align 4, !tbaa !13
  %112 = fdiv float 1.000000e+00, %111
  store float %112, ptr %28, align 4, !tbaa !13
  %113 = call double @clange_(ptr noundef nonnull @.str.10, ptr noundef nonnull %4, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef nonnull %22) #5
  %114 = fptrunc double %113 to float
  store float %114, ptr %23, align 4, !tbaa !13
  %115 = fcmp ogt float %114, 0.000000e+00
  %116 = load float, ptr %29, align 4
  %117 = fcmp ogt float %116, %114
  %or.cond287 = select i1 %115, i1 %117, i1 false
  br i1 %or.cond287, label %121, label %118

118:                                              ; preds = %99
  %119 = load float, ptr %28, align 4, !tbaa !13
  %120 = fcmp olt float %119, %114
  br i1 %120, label %121, label %123

121:                                              ; preds = %99, %118
  %storemerge = phi float [ %119, %118 ], [ %116, %99 ]
  store float %storemerge, ptr %27, align 4, !tbaa !13
  %122 = call i32 @clascl_(ptr noundef nonnull @.str.11, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %23, ptr noundef nonnull %27, ptr noundef nonnull %4, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef nonnull %24) #5
  br label %123

123:                                              ; preds = %118, %121
  %.not257274 = phi i1 [ false, %121 ], [ true, %118 ]
  %124 = call i32 @cgebal_(ptr noundef nonnull @.str.9, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef nonnull %21, ptr noundef nonnull %20, ptr noundef %15, ptr noundef nonnull %24) #5
  %125 = load i64, ptr %4, align 8, !tbaa !5
  %126 = load i64, ptr %14, align 8, !tbaa !5
  %127 = sub i64 %126, %125
  store i64 %127, ptr %19, align 8, !tbaa !5
  %128 = getelementptr %struct.complex, ptr %13, i64 %125
  %129 = call i32 @cgehrd_(ptr noundef nonnull %4, ptr noundef nonnull %21, ptr noundef nonnull %20, ptr noundef %5, ptr noundef nonnull %6, ptr noundef nonnull %13, ptr noundef %128, ptr noundef nonnull %19, ptr noundef nonnull %24) #5
  br i1 %.not, label %130, label %135

130:                                              ; preds = %123
  %131 = call i32 @clacpy_(ptr noundef nonnull @.str.12, ptr noundef nonnull %4, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %9, ptr noundef nonnull %10) #5
  %132 = load i64, ptr %14, align 8, !tbaa !5
  %133 = sub i64 %132, %125
  store i64 %133, ptr %19, align 8, !tbaa !5
  %134 = call i32 @cunghr_(ptr noundef nonnull %4, ptr noundef nonnull %21, ptr noundef nonnull %20, ptr noundef %9, ptr noundef nonnull %10, ptr noundef nonnull %13, ptr noundef %128, ptr noundef nonnull %19, ptr noundef nonnull %24) #5
  br label %135

135:                                              ; preds = %130, %123
  store i64 0, ptr %7, align 8, !tbaa !5
  %136 = load i64, ptr %14, align 8, !tbaa !5
  store i64 %136, ptr %19, align 8, !tbaa !5
  %137 = call i32 @chseqr_(ptr noundef nonnull @.str.1, ptr noundef %0, ptr noundef nonnull %4, ptr noundef nonnull %21, ptr noundef nonnull %20, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %8, ptr noundef %9, ptr noundef nonnull %10, ptr noundef nonnull %13, ptr noundef nonnull %19, ptr noundef nonnull %26) #5
  %138 = load i64, ptr %26, align 8, !tbaa !5
  %139 = icmp sgt i64 %138, 0
  br i1 %139, label %140, label %141

140:                                              ; preds = %135
  store i64 %138, ptr %17, align 8, !tbaa !5
  br label %141

141:                                              ; preds = %140, %135
  br i1 %.not250, label %168, label %142

142:                                              ; preds = %141
  %143 = load i64, ptr %17, align 8, !tbaa !5
  %144 = icmp eq i64 %143, 0
  br i1 %144, label %145, label %168

145:                                              ; preds = %142
  br i1 %.not257274, label %148, label %146

146:                                              ; preds = %145
  %147 = call i32 @clascl_(ptr noundef nonnull @.str.11, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %27, ptr noundef nonnull %23, ptr noundef nonnull %4, ptr noundef nonnull @c__1, ptr noundef %8, ptr noundef nonnull %4, ptr noundef nonnull %24) #5
  br label %148

148:                                              ; preds = %146, %145
  %149 = load i64, ptr %4, align 8, !tbaa !5
  store i64 %149, ptr %19, align 8, !tbaa !5
  %.not259288 = icmp slt i64 %149, 1
  br i1 %.not259288, label %._crit_edge, label %.lr.ph

.lr.ph:                                           ; preds = %148, %.lr.ph
  %.0240289 = phi i64 [ %153, %.lr.ph ], [ 1, %148 ]
  %150 = getelementptr inbounds %struct.complex, ptr %30, i64 %.0240289
  %151 = call i64 (ptr, ...) %2(ptr noundef nonnull %150) #5
  %152 = getelementptr inbounds i64, ptr %31, i64 %.0240289
  store i64 %151, ptr %152, align 8, !tbaa !5
  %153 = add nuw nsw i64 %.0240289, 1
  %154 = load i64, ptr %19, align 8, !tbaa !5
  %.not259.not = icmp slt i64 %.0240289, %154
  br i1 %.not259.not, label %.lr.ph, label %._crit_edge, !llvm.loop !14

._crit_edge:                                      ; preds = %.lr.ph, %148
  %155 = load i64, ptr %14, align 8, !tbaa !5
  store i64 %155, ptr %19, align 8, !tbaa !5
  %156 = call i32 @ctrsen_(ptr noundef %3, ptr noundef %0, ptr noundef %16, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %9, ptr noundef nonnull %10, ptr noundef %8, ptr noundef nonnull %7, ptr noundef %11, ptr noundef %12, ptr noundef nonnull %13, ptr noundef nonnull %19, ptr noundef nonnull %25) #5
  br i1 %44, label %157, label %164

157:                                              ; preds = %._crit_edge
  store i64 %.1, ptr %19, align 8, !tbaa !5
  %158 = load i64, ptr %7, align 8, !tbaa !5
  %159 = shl i64 %158, 1
  %160 = load i64, ptr %4, align 8, !tbaa !5
  %161 = sub nsw i64 %160, %158
  %162 = mul nsw i64 %159, %161
  %163 = call i64 @llvm.smax.i64(i64 %.1, i64 %162)
  br label %164

164:                                              ; preds = %157, %._crit_edge
  %.3 = phi i64 [ %.1, %._crit_edge ], [ %163, %157 ]
  %165 = load i64, ptr %25, align 8, !tbaa !5
  %166 = icmp eq i64 %165, -14
  br i1 %166, label %167, label %168

167:                                              ; preds = %164
  store i64 -15, ptr %17, align 8, !tbaa !5
  br label %168

168:                                              ; preds = %164, %167, %142, %141
  %.4 = phi i64 [ %.3, %167 ], [ %.3, %164 ], [ %.1, %142 ], [ %.1, %141 ]
  br i1 %.not, label %169, label %171

169:                                              ; preds = %168
  %170 = call i32 @cgebak_(ptr noundef nonnull @.str.9, ptr noundef nonnull @.str.13, ptr noundef nonnull %4, ptr noundef nonnull %21, ptr noundef nonnull %20, ptr noundef %15, ptr noundef nonnull %4, ptr noundef %9, ptr noundef nonnull %10, ptr noundef nonnull %24) #5
  br label %171

171:                                              ; preds = %169, %168
  br i1 %.not257274, label %186, label %172

172:                                              ; preds = %171
  %173 = call i32 @clascl_(ptr noundef nonnull @.str.14, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %27, ptr noundef nonnull %23, ptr noundef nonnull %4, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef nonnull %24) #5
  %174 = load i64, ptr %6, align 8, !tbaa !5
  %175 = add nsw i64 %174, 1
  store i64 %175, ptr %19, align 8, !tbaa !5
  %176 = call i32 @f2c_ccopy(ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %19, ptr noundef %8, ptr noundef nonnull @c__1) #5
  %177 = icmp ne i64 %36, 0
  %178 = icmp ne i64 %37, 0
  %or.cond9 = select i1 %177, i1 true, i1 %178
  br i1 %or.cond9, label %179, label %186

179:                                              ; preds = %172
  %180 = load i64, ptr %17, align 8, !tbaa !5
  %181 = icmp eq i64 %180, 0
  br i1 %181, label %182, label %186

182:                                              ; preds = %179
  %183 = load float, ptr %12, align 4, !tbaa !13
  store float %183, ptr %22, align 4, !tbaa !13
  %184 = call i32 @slascl_(ptr noundef nonnull @.str.11, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %27, ptr noundef nonnull %23, ptr noundef nonnull @c__1, ptr noundef nonnull @c__1, ptr noundef nonnull %22, ptr noundef nonnull @c__1, ptr noundef nonnull %24) #5
  %185 = load float, ptr %22, align 4, !tbaa !13
  store float %185, ptr %12, align 4, !tbaa !13
  br label %186

186:                                              ; preds = %179, %182, %172, %171
  %187 = sitofp i64 %.4 to float
  store float %187, ptr %13, align 4, !tbaa !9
  store float 0.000000e+00, ptr %89, align 4, !tbaa !12
  br label %188

188:                                              ; preds = %186, %98, %.thread267
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %29) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %28) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %27) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %23) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %22) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #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 i64 @ilaenv_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

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

declare double @slamch_(ptr noundef) local_unnamed_addr #2

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

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

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

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

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

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

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

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i64 @llvm.umax.i64(i64, i64) #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 = { 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 = { 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 4}
!11 = !{!"float", !7, i64 0}
!12 = !{!10, !11, i64 4}
!13 = !{!11, !11, i64 0}
!14 = distinct !{!14, !15}
!15 = !{!"llvm.loop.mustprogress"}


; Effective O3 passes: CorrelatedValuePropagationPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,PostOrderFunctionAttrsPass,ReassociatePass,SROAPass,SimplifyCFGPass,TailCallElimPass