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

; 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
@c__1 = external hidden global i64, align 8
@.str.3 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.4 = 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.5 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [2 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

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

99:                                               ; preds = %15
  %100 = load ptr, ptr %17, align 8, !tbaa !5
  %101 = call i64 @lsame_(ptr noundef %100, ptr noundef @.str.2)
  %102 = icmp ne i64 %101, 0
  br i1 %102, label %105, label %103

103:                                              ; preds = %99
  %104 = load ptr, ptr %31, align 8, !tbaa !5
  store i64 -1, ptr %104, align 8, !tbaa !9
  br label %154

105:                                              ; preds = %99, %15
  %106 = load i64, ptr %59, align 8, !tbaa !9
  %107 = icmp ne i64 %106, 0
  br i1 %107, label %114, label %108

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

112:                                              ; preds = %108
  %113 = load ptr, ptr %31, align 8, !tbaa !5
  store i64 -2, ptr %113, align 8, !tbaa !9
  br label %153

114:                                              ; preds = %108, %105
  %115 = load ptr, ptr %20, align 8, !tbaa !5
  %116 = load i64, ptr %115, align 8, !tbaa !9
  %117 = icmp slt i64 %116, 0
  br i1 %117, label %118, label %120

118:                                              ; preds = %114
  %119 = load ptr, ptr %31, align 8, !tbaa !5
  store i64 -4, ptr %119, align 8, !tbaa !9
  br label %152

120:                                              ; preds = %114
  %121 = load ptr, ptr %22, align 8, !tbaa !5
  %122 = load i64, ptr %121, align 8, !tbaa !9
  %123 = load ptr, ptr %20, align 8, !tbaa !5
  %124 = load i64, ptr %123, align 8, !tbaa !9
  %125 = icmp sge i64 1, %124
  br i1 %125, label %126, label %127

126:                                              ; preds = %120
  br label %130

127:                                              ; preds = %120
  %128 = load ptr, ptr %20, align 8, !tbaa !5
  %129 = load i64, ptr %128, align 8, !tbaa !9
  br label %130

130:                                              ; preds = %127, %126
  %131 = phi i64 [ 1, %126 ], [ %129, %127 ]
  %132 = icmp slt i64 %122, %131
  br i1 %132, label %133, label %135

133:                                              ; preds = %130
  %134 = load ptr, ptr %31, align 8, !tbaa !5
  store i64 -6, ptr %134, align 8, !tbaa !9
  br label %151

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

139:                                              ; preds = %135
  %140 = load i64, ptr %61, align 8, !tbaa !9
  %141 = icmp ne i64 %140, 0
  br i1 %141, label %142, label %150

142:                                              ; preds = %139
  %143 = load ptr, ptr %26, align 8, !tbaa !5
  %144 = load i64, ptr %143, align 8, !tbaa !9
  %145 = load ptr, ptr %20, align 8, !tbaa !5
  %146 = load i64, ptr %145, align 8, !tbaa !9
  %147 = icmp slt i64 %144, %146
  br i1 %147, label %148, label %150

148:                                              ; preds = %142, %135
  %149 = load ptr, ptr %31, align 8, !tbaa !5
  store i64 -10, ptr %149, align 8, !tbaa !9
  br label %150

150:                                              ; preds = %148, %142, %139
  br label %151

151:                                              ; preds = %150, %133
  br label %152

152:                                              ; preds = %151, %118
  br label %153

153:                                              ; preds = %152, %112
  br label %154

154:                                              ; preds = %153, %103
  %155 = load ptr, ptr %31, align 8, !tbaa !5
  %156 = load i64, ptr %155, align 8, !tbaa !9
  %157 = icmp eq i64 %156, 0
  br i1 %157, label %158, label %259

158:                                              ; preds = %154
  %159 = load ptr, ptr %20, align 8, !tbaa !5
  %160 = load i64, ptr %159, align 8, !tbaa !9
  %161 = icmp eq i64 %160, 0
  br i1 %161, label %162, label %163

162:                                              ; preds = %158
  store i64 1, ptr %55, align 8, !tbaa !9
  store i64 1, ptr %56, align 8, !tbaa !9
  br label %240

163:                                              ; preds = %158
  %164 = load ptr, ptr %20, align 8, !tbaa !5
  %165 = load i64, ptr %164, align 8, !tbaa !9
  %166 = load ptr, ptr %20, align 8, !tbaa !5
  %167 = load i64, ptr %166, align 8, !tbaa !9
  %168 = load ptr, ptr %20, align 8, !tbaa !5
  %169 = load ptr, ptr %20, align 8, !tbaa !5
  %170 = call i64 @ilaenv_(ptr noundef @c__1, ptr noundef @.str.3, ptr noundef @.str.4, ptr noundef %168, ptr noundef @c__1, ptr noundef %169, ptr noundef @c__0)
  %171 = mul nsw i64 %167, %170
  %172 = add nsw i64 %165, %171
  store i64 %172, ptr %56, align 8, !tbaa !9
  %173 = load ptr, ptr %20, align 8, !tbaa !5
  %174 = load i64, ptr %173, align 8, !tbaa !9
  %175 = shl i64 %174, 1
  store i64 %175, ptr %55, align 8, !tbaa !9
  %176 = load ptr, ptr %17, align 8, !tbaa !5
  %177 = load ptr, ptr %20, align 8, !tbaa !5
  %178 = load ptr, ptr %20, align 8, !tbaa !5
  %179 = load ptr, ptr %21, align 8, !tbaa !5
  %180 = load i64, ptr %33, align 8, !tbaa !9
  %181 = getelementptr inbounds %struct.complex, ptr %179, i64 %180
  %182 = load ptr, ptr %22, align 8, !tbaa !5
  %183 = load ptr, ptr %24, align 8, !tbaa !5
  %184 = getelementptr inbounds %struct.complex, ptr %183, i64 1
  %185 = load ptr, ptr %25, align 8, !tbaa !5
  %186 = load i64, ptr %35, align 8, !tbaa !9
  %187 = getelementptr inbounds %struct.complex, ptr %185, i64 %186
  %188 = load ptr, ptr %26, align 8, !tbaa !5
  %189 = load ptr, ptr %27, align 8, !tbaa !5
  %190 = getelementptr inbounds %struct.complex, ptr %189, i64 1
  %191 = call i32 @chseqr_(ptr noundef @.str.1, ptr noundef %176, ptr noundef %177, ptr noundef @c__1, ptr noundef %178, ptr noundef %181, ptr noundef %182, ptr noundef %184, ptr noundef %187, ptr noundef %188, ptr noundef %190, ptr noundef @c_n1, ptr noundef %51)
  %192 = load ptr, ptr %27, align 8, !tbaa !5
  %193 = getelementptr inbounds %struct.complex, ptr %192, i64 1
  %194 = getelementptr inbounds %struct.complex, ptr %193, i32 0, i32 0
  %195 = load float, ptr %194, align 4, !tbaa !11
  %196 = fptosi float %195 to i64
  store i64 %196, ptr %58, align 8, !tbaa !9
  %197 = load i64, ptr %61, align 8, !tbaa !9
  %198 = icmp ne i64 %197, 0
  br i1 %198, label %209, label %199

199:                                              ; preds = %163
  %200 = load i64, ptr %56, align 8, !tbaa !9
  %201 = load i64, ptr %58, align 8, !tbaa !9
  %202 = icmp sge i64 %200, %201
  br i1 %202, label %203, label %205

203:                                              ; preds = %199
  %204 = load i64, ptr %56, align 8, !tbaa !9
  br label %207

205:                                              ; preds = %199
  %206 = load i64, ptr %58, align 8, !tbaa !9
  br label %207

207:                                              ; preds = %205, %203
  %208 = phi i64 [ %204, %203 ], [ %206, %205 ]
  store i64 %208, ptr %56, align 8, !tbaa !9
  br label %239

209:                                              ; preds = %163
  %210 = load i64, ptr %56, align 8, !tbaa !9
  store i64 %210, ptr %36, align 8, !tbaa !9
  %211 = load ptr, ptr %20, align 8, !tbaa !5
  %212 = load i64, ptr %211, align 8, !tbaa !9
  %213 = load ptr, ptr %20, align 8, !tbaa !5
  %214 = load i64, ptr %213, align 8, !tbaa !9
  %215 = sub nsw i64 %214, 1
  %216 = load ptr, ptr %20, align 8, !tbaa !5
  %217 = load ptr, ptr %20, align 8, !tbaa !5
  %218 = call i64 @ilaenv_(ptr noundef @c__1, ptr noundef @.str.5, ptr noundef @.str.4, ptr noundef %216, ptr noundef @c__1, ptr noundef %217, ptr noundef @c_n1)
  %219 = mul nsw i64 %215, %218
  %220 = add nsw i64 %212, %219
  store i64 %220, ptr %37, align 8, !tbaa !9
  %221 = load i64, ptr %36, align 8, !tbaa !9
  %222 = load i64, ptr %37, align 8, !tbaa !9
  %223 = icmp sge i64 %221, %222
  br i1 %223, label %224, label %226

224:                                              ; preds = %209
  %225 = load i64, ptr %36, align 8, !tbaa !9
  br label %228

226:                                              ; preds = %209
  %227 = load i64, ptr %37, align 8, !tbaa !9
  br label %228

228:                                              ; preds = %226, %224
  %229 = phi i64 [ %225, %224 ], [ %227, %226 ]
  store i64 %229, ptr %56, align 8, !tbaa !9
  %230 = load i64, ptr %56, align 8, !tbaa !9
  %231 = load i64, ptr %58, align 8, !tbaa !9
  %232 = icmp sge i64 %230, %231
  br i1 %232, label %233, label %235

233:                                              ; preds = %228
  %234 = load i64, ptr %56, align 8, !tbaa !9
  br label %237

235:                                              ; preds = %228
  %236 = load i64, ptr %58, align 8, !tbaa !9
  br label %237

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

239:                                              ; preds = %237, %207
  br label %240

240:                                              ; preds = %239, %162
  %241 = load i64, ptr %56, align 8, !tbaa !9
  %242 = sitofp i64 %241 to float
  %243 = load ptr, ptr %27, align 8, !tbaa !5
  %244 = getelementptr inbounds %struct.complex, ptr %243, i64 1
  %245 = getelementptr inbounds %struct.complex, ptr %244, i32 0, i32 0
  store float %242, ptr %245, align 4, !tbaa !11
  %246 = load ptr, ptr %27, align 8, !tbaa !5
  %247 = getelementptr inbounds %struct.complex, ptr %246, i64 1
  %248 = getelementptr inbounds %struct.complex, ptr %247, i32 0, i32 1
  store float 0.000000e+00, ptr %248, align 4, !tbaa !14
  %249 = load ptr, ptr %28, align 8, !tbaa !5
  %250 = load i64, ptr %249, align 8, !tbaa !9
  %251 = load i64, ptr %55, align 8, !tbaa !9
  %252 = icmp slt i64 %250, %251
  br i1 %252, label %253, label %258

253:                                              ; preds = %240
  %254 = load i64, ptr %60, align 8, !tbaa !9
  %255 = icmp ne i64 %254, 0
  br i1 %255, label %258, label %256

256:                                              ; preds = %253
  %257 = load ptr, ptr %31, align 8, !tbaa !5
  store i64 -12, ptr %257, align 8, !tbaa !9
  br label %258

258:                                              ; preds = %256, %253, %240
  br label %259

259:                                              ; preds = %258, %154
  %260 = load ptr, ptr %31, align 8, !tbaa !5
  %261 = load i64, ptr %260, align 8, !tbaa !9
  %262 = icmp ne i64 %261, 0
  br i1 %262, label %263, label %268

263:                                              ; preds = %259
  %264 = load ptr, ptr %31, align 8, !tbaa !5
  %265 = load i64, ptr %264, align 8, !tbaa !9
  %266 = sub nsw i64 0, %265
  store i64 %266, ptr %36, align 8, !tbaa !9
  %267 = call i32 @xerbla_(ptr noundef @.str.6, ptr noundef %36)
  store i32 0, ptr %16, align 4
  store i32 1, ptr %62, align 4
  br label %526

268:                                              ; preds = %259
  %269 = load i64, ptr %60, align 8, !tbaa !9
  %270 = icmp ne i64 %269, 0
  br i1 %270, label %271, label %272

271:                                              ; preds = %268
  store i32 0, ptr %16, align 4
  store i32 1, ptr %62, align 4
  br label %526

272:                                              ; preds = %268
  br label %273

273:                                              ; preds = %272
  %274 = load ptr, ptr %20, align 8, !tbaa !5
  %275 = load i64, ptr %274, align 8, !tbaa !9
  %276 = icmp eq i64 %275, 0
  br i1 %276, label %277, label %279

277:                                              ; preds = %273
  %278 = load ptr, ptr %23, align 8, !tbaa !5
  store i64 0, ptr %278, align 8, !tbaa !9
  store i32 0, ptr %16, align 4
  store i32 1, ptr %62, align 4
  br label %526

279:                                              ; preds = %273
  %280 = call double @slamch_(ptr noundef @.str.7)
  %281 = fptrunc double %280 to float
  store float %281, ptr %43, align 4, !tbaa !15
  %282 = call double @slamch_(ptr noundef @.str.1)
  %283 = fptrunc double %282 to float
  store float %283, ptr %57, align 4, !tbaa !15
  %284 = load float, ptr %57, align 4, !tbaa !15
  %285 = fdiv float 1.000000e+00, %284
  store float %285, ptr %54, align 4, !tbaa !15
  %286 = call i32 @slabad_(ptr noundef %57, ptr noundef %54)
  %287 = load float, ptr %57, align 4, !tbaa !15
  %288 = fpext float %287 to double
  %289 = call double @sqrt(double noundef %288) #4
  %290 = load float, ptr %43, align 4, !tbaa !15
  %291 = fpext float %290 to double
  %292 = fdiv double %289, %291
  %293 = fptrunc double %292 to float
  store float %293, ptr %57, align 4, !tbaa !15
  %294 = load float, ptr %57, align 4, !tbaa !15
  %295 = fdiv float 1.000000e+00, %294
  store float %295, ptr %54, align 4, !tbaa !15
  %296 = load ptr, ptr %20, align 8, !tbaa !5
  %297 = load ptr, ptr %20, align 8, !tbaa !5
  %298 = load ptr, ptr %21, align 8, !tbaa !5
  %299 = load i64, ptr %33, align 8, !tbaa !9
  %300 = getelementptr inbounds %struct.complex, ptr %298, i64 %299
  %301 = load ptr, ptr %22, align 8, !tbaa !5
  %302 = getelementptr inbounds [1 x float], ptr %42, i64 0, i64 0
  %303 = call double @clange_(ptr noundef @.str.8, ptr noundef %296, ptr noundef %297, ptr noundef %300, ptr noundef %301, ptr noundef %302)
  %304 = fptrunc double %303 to float
  store float %304, ptr %46, align 4, !tbaa !15
  store i64 0, ptr %52, align 8, !tbaa !9
  %305 = load float, ptr %46, align 4, !tbaa !15
  %306 = fcmp ogt float %305, 0.000000e+00
  br i1 %306, label %307, label %313

307:                                              ; preds = %279
  %308 = load float, ptr %46, align 4, !tbaa !15
  %309 = load float, ptr %57, align 4, !tbaa !15
  %310 = fcmp olt float %308, %309
  br i1 %310, label %311, label %313

311:                                              ; preds = %307
  store i64 1, ptr %52, align 8, !tbaa !9
  %312 = load float, ptr %57, align 4, !tbaa !15
  store float %312, ptr %53, align 4, !tbaa !15
  br label %320

313:                                              ; preds = %307, %279
  %314 = load float, ptr %46, align 4, !tbaa !15
  %315 = load float, ptr %54, align 4, !tbaa !15
  %316 = fcmp ogt float %314, %315
  br i1 %316, label %317, label %319

317:                                              ; preds = %313
  store i64 1, ptr %52, align 8, !tbaa !9
  %318 = load float, ptr %54, align 4, !tbaa !15
  store float %318, ptr %53, align 4, !tbaa !15
  br label %319

319:                                              ; preds = %317, %313
  br label %320

320:                                              ; preds = %319, %311
  %321 = load i64, ptr %52, align 8, !tbaa !9
  %322 = icmp ne i64 %321, 0
  br i1 %322, label %323, label %331

323:                                              ; preds = %320
  %324 = load ptr, ptr %20, align 8, !tbaa !5
  %325 = load ptr, ptr %20, align 8, !tbaa !5
  %326 = load ptr, ptr %21, align 8, !tbaa !5
  %327 = load i64, ptr %33, align 8, !tbaa !9
  %328 = getelementptr inbounds %struct.complex, ptr %326, i64 %327
  %329 = load ptr, ptr %22, align 8, !tbaa !5
  %330 = call i32 @clascl_(ptr noundef @.str.9, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %46, ptr noundef %53, ptr noundef %324, ptr noundef %325, ptr noundef %328, ptr noundef %329, ptr noundef %47)
  br label %331

331:                                              ; preds = %323, %320
  store i64 1, ptr %45, align 8, !tbaa !9
  %332 = load ptr, ptr %20, align 8, !tbaa !5
  %333 = load ptr, ptr %21, align 8, !tbaa !5
  %334 = load i64, ptr %33, align 8, !tbaa !9
  %335 = getelementptr inbounds %struct.complex, ptr %333, i64 %334
  %336 = load ptr, ptr %22, align 8, !tbaa !5
  %337 = load ptr, ptr %29, align 8, !tbaa !5
  %338 = load i64, ptr %45, align 8, !tbaa !9
  %339 = getelementptr inbounds float, ptr %337, i64 %338
  %340 = call i32 @cgebal_(ptr noundef @.str.7, ptr noundef %332, ptr noundef %335, ptr noundef %336, ptr noundef %41, ptr noundef %40, ptr noundef %339, ptr noundef %47)
  store i64 1, ptr %48, align 8, !tbaa !9
  %341 = load ptr, ptr %20, align 8, !tbaa !5
  %342 = load i64, ptr %341, align 8, !tbaa !9
  %343 = load i64, ptr %48, align 8, !tbaa !9
  %344 = add nsw i64 %342, %343
  store i64 %344, ptr %49, align 8, !tbaa !9
  %345 = load ptr, ptr %28, align 8, !tbaa !5
  %346 = load i64, ptr %345, align 8, !tbaa !9
  %347 = load i64, ptr %49, align 8, !tbaa !9
  %348 = sub nsw i64 %346, %347
  %349 = add nsw i64 %348, 1
  store i64 %349, ptr %36, align 8, !tbaa !9
  %350 = load ptr, ptr %20, align 8, !tbaa !5
  %351 = load ptr, ptr %21, align 8, !tbaa !5
  %352 = load i64, ptr %33, align 8, !tbaa !9
  %353 = getelementptr inbounds %struct.complex, ptr %351, i64 %352
  %354 = load ptr, ptr %22, align 8, !tbaa !5
  %355 = load ptr, ptr %27, align 8, !tbaa !5
  %356 = load i64, ptr %48, align 8, !tbaa !9
  %357 = getelementptr inbounds %struct.complex, ptr %355, i64 %356
  %358 = load ptr, ptr %27, align 8, !tbaa !5
  %359 = load i64, ptr %49, align 8, !tbaa !9
  %360 = getelementptr inbounds %struct.complex, ptr %358, i64 %359
  %361 = call i32 @cgehrd_(ptr noundef %350, ptr noundef %41, ptr noundef %40, ptr noundef %353, ptr noundef %354, ptr noundef %357, ptr noundef %360, ptr noundef %36, ptr noundef %47)
  %362 = load i64, ptr %61, align 8, !tbaa !9
  %363 = icmp ne i64 %362, 0
  br i1 %363, label %364, label %393

364:                                              ; preds = %331
  %365 = load ptr, ptr %20, align 8, !tbaa !5
  %366 = load ptr, ptr %20, align 8, !tbaa !5
  %367 = load ptr, ptr %21, align 8, !tbaa !5
  %368 = load i64, ptr %33, align 8, !tbaa !9
  %369 = getelementptr inbounds %struct.complex, ptr %367, i64 %368
  %370 = load ptr, ptr %22, align 8, !tbaa !5
  %371 = load ptr, ptr %25, align 8, !tbaa !5
  %372 = load i64, ptr %35, 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 @clacpy_(ptr noundef @.str.10, ptr noundef %365, ptr noundef %366, ptr noundef %369, ptr noundef %370, ptr noundef %373, ptr noundef %374)
  %376 = load ptr, ptr %28, align 8, !tbaa !5
  %377 = load i64, ptr %376, align 8, !tbaa !9
  %378 = load i64, ptr %49, align 8, !tbaa !9
  %379 = sub nsw i64 %377, %378
  %380 = add nsw i64 %379, 1
  store i64 %380, ptr %36, align 8, !tbaa !9
  %381 = load ptr, ptr %20, align 8, !tbaa !5
  %382 = load ptr, ptr %25, align 8, !tbaa !5
  %383 = load i64, ptr %35, align 8, !tbaa !9
  %384 = getelementptr inbounds %struct.complex, ptr %382, i64 %383
  %385 = load ptr, ptr %26, align 8, !tbaa !5
  %386 = load ptr, ptr %27, align 8, !tbaa !5
  %387 = load i64, ptr %48, align 8, !tbaa !9
  %388 = getelementptr inbounds %struct.complex, ptr %386, i64 %387
  %389 = load ptr, ptr %27, align 8, !tbaa !5
  %390 = load i64, ptr %49, align 8, !tbaa !9
  %391 = getelementptr inbounds %struct.complex, ptr %389, i64 %390
  %392 = call i32 @cunghr_(ptr noundef %381, ptr noundef %41, ptr noundef %40, ptr noundef %384, ptr noundef %385, ptr noundef %388, ptr noundef %391, ptr noundef %36, ptr noundef %47)
  br label %393

393:                                              ; preds = %364, %331
  %394 = load ptr, ptr %23, align 8, !tbaa !5
  store i64 0, ptr %394, align 8, !tbaa !9
  %395 = load i64, ptr %48, align 8, !tbaa !9
  store i64 %395, ptr %49, align 8, !tbaa !9
  %396 = load ptr, ptr %28, align 8, !tbaa !5
  %397 = load i64, ptr %396, align 8, !tbaa !9
  %398 = load i64, ptr %49, align 8, !tbaa !9
  %399 = sub nsw i64 %397, %398
  %400 = add nsw i64 %399, 1
  store i64 %400, ptr %36, align 8, !tbaa !9
  %401 = load ptr, ptr %17, align 8, !tbaa !5
  %402 = load ptr, ptr %20, align 8, !tbaa !5
  %403 = load ptr, ptr %21, align 8, !tbaa !5
  %404 = load i64, ptr %33, align 8, !tbaa !9
  %405 = getelementptr inbounds %struct.complex, ptr %403, i64 %404
  %406 = load ptr, ptr %22, align 8, !tbaa !5
  %407 = load ptr, ptr %24, align 8, !tbaa !5
  %408 = getelementptr inbounds %struct.complex, ptr %407, i64 1
  %409 = load ptr, ptr %25, align 8, !tbaa !5
  %410 = load i64, ptr %35, align 8, !tbaa !9
  %411 = getelementptr inbounds %struct.complex, ptr %409, i64 %410
  %412 = load ptr, ptr %26, align 8, !tbaa !5
  %413 = load ptr, ptr %27, align 8, !tbaa !5
  %414 = load i64, ptr %49, align 8, !tbaa !9
  %415 = getelementptr inbounds %struct.complex, ptr %413, i64 %414
  %416 = call i32 @chseqr_(ptr noundef @.str.1, ptr noundef %401, ptr noundef %402, ptr noundef %41, ptr noundef %40, ptr noundef %405, ptr noundef %406, ptr noundef %408, ptr noundef %411, ptr noundef %412, ptr noundef %415, ptr noundef %36, ptr noundef %51)
  %417 = load i64, ptr %51, align 8, !tbaa !9
  %418 = icmp sgt i64 %417, 0
  br i1 %418, label %419, label %422

419:                                              ; preds = %393
  %420 = load i64, ptr %51, align 8, !tbaa !9
  %421 = load ptr, ptr %31, align 8, !tbaa !5
  store i64 %420, ptr %421, align 8, !tbaa !9
  br label %422

422:                                              ; preds = %419, %393
  %423 = load i64, ptr %59, align 8, !tbaa !9
  %424 = icmp ne i64 %423, 0
  br i1 %424, label %425, label %482

425:                                              ; preds = %422
  %426 = load ptr, ptr %31, align 8, !tbaa !5
  %427 = load i64, ptr %426, align 8, !tbaa !9
  %428 = icmp eq i64 %427, 0
  br i1 %428, label %429, label %482

429:                                              ; preds = %425
  %430 = load i64, ptr %52, align 8, !tbaa !9
  %431 = icmp ne i64 %430, 0
  br i1 %431, label %432, label %438

432:                                              ; preds = %429
  %433 = load ptr, ptr %20, align 8, !tbaa !5
  %434 = load ptr, ptr %24, align 8, !tbaa !5
  %435 = getelementptr inbounds %struct.complex, ptr %434, i64 1
  %436 = load ptr, ptr %20, align 8, !tbaa !5
  %437 = call i32 @clascl_(ptr noundef @.str.9, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %53, ptr noundef %46, ptr noundef %433, ptr noundef @c__1, ptr noundef %435, ptr noundef %436, ptr noundef %47)
  br label %438

438:                                              ; preds = %432, %429
  %439 = load ptr, ptr %20, align 8, !tbaa !5
  %440 = load i64, ptr %439, align 8, !tbaa !9
  store i64 %440, ptr %36, align 8, !tbaa !9
  store i64 1, ptr %38, align 8, !tbaa !9
  br label %441

441:                                              ; preds = %454, %438
  %442 = load i64, ptr %38, align 8, !tbaa !9
  %443 = load i64, ptr %36, align 8, !tbaa !9
  %444 = icmp sle i64 %442, %443
  br i1 %444, label %445, label %457

445:                                              ; preds = %441
  %446 = load ptr, ptr %19, align 8, !tbaa !5
  %447 = load ptr, ptr %24, align 8, !tbaa !5
  %448 = load i64, ptr %38, align 8, !tbaa !9
  %449 = getelementptr inbounds %struct.complex, ptr %447, i64 %448
  %450 = call i64 (ptr, ...) %446(ptr noundef %449)
  %451 = load ptr, ptr %30, align 8, !tbaa !5
  %452 = load i64, ptr %38, align 8, !tbaa !9
  %453 = getelementptr inbounds i64, ptr %451, i64 %452
  store i64 %450, ptr %453, align 8, !tbaa !9
  br label %454

454:                                              ; preds = %445
  %455 = load i64, ptr %38, align 8, !tbaa !9
  %456 = add nsw i64 %455, 1
  store i64 %456, ptr %38, align 8, !tbaa !9
  br label %441, !llvm.loop !16

457:                                              ; preds = %441
  %458 = load ptr, ptr %28, align 8, !tbaa !5
  %459 = load i64, ptr %458, align 8, !tbaa !9
  %460 = load i64, ptr %49, align 8, !tbaa !9
  %461 = sub nsw i64 %459, %460
  %462 = add nsw i64 %461, 1
  store i64 %462, ptr %36, align 8, !tbaa !9
  %463 = load ptr, ptr %17, align 8, !tbaa !5
  %464 = load ptr, ptr %30, align 8, !tbaa !5
  %465 = getelementptr inbounds i64, ptr %464, i64 1
  %466 = load ptr, ptr %20, align 8, !tbaa !5
  %467 = load ptr, ptr %21, align 8, !tbaa !5
  %468 = load i64, ptr %33, align 8, !tbaa !9
  %469 = getelementptr inbounds %struct.complex, ptr %467, i64 %468
  %470 = load ptr, ptr %22, align 8, !tbaa !5
  %471 = load ptr, ptr %25, align 8, !tbaa !5
  %472 = load i64, ptr %35, align 8, !tbaa !9
  %473 = getelementptr inbounds %struct.complex, ptr %471, i64 %472
  %474 = load ptr, ptr %26, align 8, !tbaa !5
  %475 = load ptr, ptr %24, align 8, !tbaa !5
  %476 = getelementptr inbounds %struct.complex, ptr %475, i64 1
  %477 = load ptr, ptr %23, align 8, !tbaa !5
  %478 = load ptr, ptr %27, align 8, !tbaa !5
  %479 = load i64, ptr %49, align 8, !tbaa !9
  %480 = getelementptr inbounds %struct.complex, ptr %478, i64 %479
  %481 = call i32 @ctrsen_(ptr noundef @.str.2, ptr noundef %463, ptr noundef %465, ptr noundef %466, ptr noundef %469, ptr noundef %470, ptr noundef %473, ptr noundef %474, ptr noundef %476, ptr noundef %477, ptr noundef %39, ptr noundef %44, ptr noundef %480, ptr noundef %36, ptr noundef %50)
  br label %482

482:                                              ; preds = %457, %425, %422
  %483 = load i64, ptr %61, align 8, !tbaa !9
  %484 = icmp ne i64 %483, 0
  br i1 %484, label %485, label %496

485:                                              ; preds = %482
  %486 = load ptr, ptr %20, align 8, !tbaa !5
  %487 = load ptr, ptr %29, align 8, !tbaa !5
  %488 = load i64, ptr %45, align 8, !tbaa !9
  %489 = getelementptr inbounds float, ptr %487, i64 %488
  %490 = load ptr, ptr %20, align 8, !tbaa !5
  %491 = load ptr, ptr %25, align 8, !tbaa !5
  %492 = load i64, ptr %35, align 8, !tbaa !9
  %493 = getelementptr inbounds %struct.complex, ptr %491, i64 %492
  %494 = load ptr, ptr %26, align 8, !tbaa !5
  %495 = call i32 @cgebak_(ptr noundef @.str.7, ptr noundef @.str.11, ptr noundef %486, ptr noundef %41, ptr noundef %40, ptr noundef %489, ptr noundef %490, ptr noundef %493, ptr noundef %494, ptr noundef %47)
  br label %496

496:                                              ; preds = %485, %482
  %497 = load i64, ptr %52, align 8, !tbaa !9
  %498 = icmp ne i64 %497, 0
  br i1 %498, label %499, label %517

499:                                              ; preds = %496
  %500 = load ptr, ptr %20, align 8, !tbaa !5
  %501 = load ptr, ptr %20, align 8, !tbaa !5
  %502 = load ptr, ptr %21, align 8, !tbaa !5
  %503 = load i64, ptr %33, align 8, !tbaa !9
  %504 = getelementptr inbounds %struct.complex, ptr %502, i64 %503
  %505 = load ptr, ptr %22, align 8, !tbaa !5
  %506 = call i32 @clascl_(ptr noundef @.str.12, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %53, ptr noundef %46, ptr noundef %500, ptr noundef %501, ptr noundef %504, ptr noundef %505, ptr noundef %47)
  %507 = load ptr, ptr %22, align 8, !tbaa !5
  %508 = load i64, ptr %507, align 8, !tbaa !9
  %509 = add nsw i64 %508, 1
  store i64 %509, ptr %36, align 8, !tbaa !9
  %510 = load ptr, ptr %20, align 8, !tbaa !5
  %511 = load ptr, ptr %21, align 8, !tbaa !5
  %512 = load i64, ptr %33, align 8, !tbaa !9
  %513 = getelementptr inbounds %struct.complex, ptr %511, i64 %512
  %514 = load ptr, ptr %24, align 8, !tbaa !5
  %515 = getelementptr inbounds %struct.complex, ptr %514, i64 1
  %516 = call i32 @f2c_ccopy(ptr noundef %510, ptr noundef %513, ptr noundef %36, ptr noundef %515, ptr noundef @c__1)
  br label %517

517:                                              ; preds = %499, %496
  %518 = load i64, ptr %56, align 8, !tbaa !9
  %519 = sitofp i64 %518 to float
  %520 = load ptr, ptr %27, align 8, !tbaa !5
  %521 = getelementptr inbounds %struct.complex, ptr %520, i64 1
  %522 = getelementptr inbounds %struct.complex, ptr %521, i32 0, i32 0
  store float %519, ptr %522, align 4, !tbaa !11
  %523 = load ptr, ptr %27, align 8, !tbaa !5
  %524 = getelementptr inbounds %struct.complex, ptr %523, i64 1
  %525 = getelementptr inbounds %struct.complex, ptr %524, i32 0, i32 1
  store float 0.000000e+00, ptr %525, align 4, !tbaa !14
  store i32 0, ptr %16, align 4
  store i32 1, ptr %62, align 4
  br label %526

526:                                              ; preds = %517, %277, %271, %263
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %54) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %53) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #4
  %527 = load i32, ptr %16, align 4
  ret i32 %527
}

; 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

; 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
@c__1 = external hidden global i64, align 8
@.str.3 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.4 = 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.5 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [2 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

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

35:                                               ; preds = %15
  %36 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.2) #5
  %.not208 = icmp eq i64 %36, 0
  br i1 %.not208, label %.thread222.sink.split, label %37

37:                                               ; preds = %35, %15
  %.not209 = icmp eq i64 %34, 0
  br i1 %.not209, label %38, label %40

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

40:                                               ; preds = %38, %37
  %41 = load i64, ptr %3, align 8, !tbaa !5
  %42 = icmp slt i64 %41, 0
  br i1 %42, label %.thread222.sink.split, label %43

43:                                               ; preds = %40
  %44 = load i64, ptr %5, align 8, !tbaa !5
  %spec.select = tail call i64 @llvm.umax.i64(i64 %41, i64 1)
  %45 = icmp slt i64 %44, %spec.select
  br i1 %45, label %.thread222.sink.split, label %46

46:                                               ; preds = %43
  %47 = load i64, ptr %9, align 8, !tbaa !5
  %48 = icmp slt i64 %47, 1
  %49 = icmp ult i64 %47, %41
  %or.cond233 = and i1 %.not, %49
  %or.cond234 = or i1 %48, %or.cond233
  br i1 %or.cond234, label %.thread222.sink.split, label %50

50:                                               ; preds = %46
  %.pr = load i64, ptr %14, align 8, !tbaa !5
  %51 = icmp eq i64 %.pr, 0
  br i1 %51, label %52, label %.thread222

52:                                               ; preds = %50
  %53 = icmp eq i64 %41, 0
  br i1 %53, label %74, label %54

54:                                               ; preds = %52
  %55 = tail call i64 @ilaenv_(ptr noundef nonnull @c__1, ptr noundef nonnull @.str.3, ptr noundef nonnull @.str.4, ptr noundef nonnull %3, ptr noundef nonnull @c__1, ptr noundef nonnull %3, ptr noundef nonnull @c__0) #5
  %56 = add i64 %55, 1
  %57 = mul i64 %56, %41
  %58 = load i64, ptr %3, align 8, !tbaa !5
  %59 = shl i64 %58, 1
  %60 = call i32 @chseqr_(ptr noundef nonnull @.str.1, ptr noundef %0, ptr noundef nonnull %3, ptr noundef nonnull @c__1, ptr noundef nonnull %3, ptr noundef %4, ptr noundef nonnull %5, ptr noundef %7, ptr noundef %8, ptr noundef nonnull %9, ptr noundef %10, ptr noundef nonnull @c_n1, ptr noundef nonnull %25) #5
  %61 = load float, ptr %10, align 4, !tbaa !9
  %62 = fptosi float %61 to i64
  br i1 %.not, label %65, label %63

63:                                               ; preds = %54
  %64 = call i64 @llvm.smax.i64(i64 %57, i64 %62)
  br label %74

65:                                               ; preds = %54
  store i64 %57, ptr %16, align 8, !tbaa !5
  %66 = load i64, ptr %3, align 8, !tbaa !5
  %67 = add nsw i64 %66, -1
  %68 = call i64 @ilaenv_(ptr noundef nonnull @c__1, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.4, ptr noundef nonnull %3, ptr noundef nonnull @c__1, ptr noundef nonnull %3, ptr noundef nonnull @c_n1) #5
  %69 = mul nsw i64 %67, %68
  %70 = add nsw i64 %69, %66
  %71 = load i64, ptr %16, align 8
  %72 = call i64 @llvm.smax.i64(i64 %71, i64 %70)
  %73 = call i64 @llvm.smax.i64(i64 %72, i64 %62)
  br label %74

74:                                               ; preds = %52, %63, %65
  %.0198 = phi i64 [ %59, %65 ], [ %59, %63 ], [ 1, %52 ]
  %.0197 = phi i64 [ %73, %65 ], [ %64, %63 ], [ 1, %52 ]
  %75 = sitofp i64 %.0197 to float
  store float %75, ptr %10, align 4, !tbaa !9
  %76 = getelementptr inbounds i8, ptr %10, i64 4
  store float 0.000000e+00, ptr %76, align 4, !tbaa !12
  %77 = load i64, ptr %11, align 8, !tbaa !5
  %78 = icmp sge i64 %77, %.0198
  %or.cond = select i1 %78, i1 true, i1 %32
  br i1 %or.cond, label %.thread, label %.thread222.sink.split

.thread:                                          ; preds = %74
  %.pr219.pr = load i64, ptr %14, align 8, !tbaa !5
  %.not214 = icmp eq i64 %.pr219.pr, 0
  br i1 %.not214, label %82, label %.thread222

.thread222.sink.split:                            ; preds = %74, %46, %43, %40, %38, %35
  %.sink = phi i64 [ -1, %35 ], [ -2, %38 ], [ -4, %40 ], [ -6, %43 ], [ -10, %46 ], [ -12, %74 ]
  store i64 %.sink, ptr %14, align 8, !tbaa !5
  br label %.thread222

.thread222:                                       ; preds = %.thread222.sink.split, %50, %.thread
  %79 = phi i64 [ %.pr219.pr, %.thread ], [ %.pr, %50 ], [ %.sink, %.thread222.sink.split ]
  %80 = sub nsw i64 0, %79
  store i64 %80, ptr %16, align 8, !tbaa !5
  %81 = call i32 @xerbla_(ptr noundef nonnull @.str.6, ptr noundef nonnull %16) #5
  br label %155

82:                                               ; preds = %.thread
  br i1 %32, label %155, label %83

83:                                               ; preds = %82
  %84 = load i64, ptr %3, align 8, !tbaa !5
  %85 = icmp eq i64 %84, 0
  br i1 %85, label %86, label %87

86:                                               ; preds = %83
  store i64 0, ptr %6, align 8, !tbaa !5
  br label %155

87:                                               ; preds = %83
  %88 = call double @slamch_(ptr noundef nonnull @.str.7) #5
  %89 = fptrunc double %88 to float
  %90 = call double @slamch_(ptr noundef nonnull @.str.1) #5
  %91 = fptrunc double %90 to float
  store float %91, ptr %28, align 4, !tbaa !13
  %92 = fdiv float 1.000000e+00, %91
  store float %92, ptr %27, align 4, !tbaa !13
  %93 = call i32 @slabad_(ptr noundef nonnull %28, ptr noundef nonnull %27) #5
  %94 = load float, ptr %28, align 4, !tbaa !13
  %95 = fpext float %94 to double
  %96 = call double @sqrt(double noundef %95) #5
  %97 = fpext float %89 to double
  %98 = fdiv double %96, %97
  %99 = fptrunc double %98 to float
  store float %99, ptr %28, align 4, !tbaa !13
  %100 = fdiv float 1.000000e+00, %99
  store float %100, ptr %27, align 4, !tbaa !13
  %101 = call double @clange_(ptr noundef nonnull @.str.8, ptr noundef nonnull %3, ptr noundef nonnull %3, ptr noundef %4, ptr noundef nonnull %5, ptr noundef nonnull %20) #5
  %102 = fptrunc double %101 to float
  store float %102, ptr %22, align 4, !tbaa !13
  %103 = fcmp ogt float %102, 0.000000e+00
  %104 = load float, ptr %28, align 4
  %105 = fcmp ogt float %104, %102
  %or.cond236 = select i1 %103, i1 %105, i1 false
  br i1 %or.cond236, label %109, label %106

106:                                              ; preds = %87
  %107 = load float, ptr %27, align 4, !tbaa !13
  %108 = fcmp olt float %107, %102
  br i1 %108, label %109, label %111

109:                                              ; preds = %87, %106
  %storemerge = phi float [ %107, %106 ], [ %104, %87 ]
  store float %storemerge, ptr %26, align 4, !tbaa !13
  %110 = call i32 @clascl_(ptr noundef nonnull @.str.9, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %22, ptr noundef nonnull %26, ptr noundef nonnull %3, ptr noundef nonnull %3, ptr noundef %4, ptr noundef nonnull %5, ptr noundef nonnull %23) #5
  br label %111

111:                                              ; preds = %106, %109
  %.not215229 = phi i1 [ false, %109 ], [ true, %106 ]
  %112 = call i32 @cgebal_(ptr noundef nonnull @.str.7, ptr noundef nonnull %3, ptr noundef %4, ptr noundef nonnull %5, ptr noundef nonnull %19, ptr noundef nonnull %18, ptr noundef %12, ptr noundef nonnull %23) #5
  %113 = load i64, ptr %3, align 8, !tbaa !5
  %114 = load i64, ptr %11, align 8, !tbaa !5
  %115 = sub i64 %114, %113
  store i64 %115, ptr %16, align 8, !tbaa !5
  %116 = getelementptr %struct.complex, ptr %10, i64 %113
  %117 = call i32 @cgehrd_(ptr noundef nonnull %3, ptr noundef nonnull %19, ptr noundef nonnull %18, ptr noundef %4, ptr noundef nonnull %5, ptr noundef nonnull %10, ptr noundef %116, ptr noundef nonnull %16, ptr noundef nonnull %23) #5
  br i1 %.not, label %118, label %123

118:                                              ; preds = %111
  %119 = call i32 @clacpy_(ptr noundef nonnull @.str.10, ptr noundef nonnull %3, ptr noundef nonnull %3, ptr noundef %4, ptr noundef nonnull %5, ptr noundef %8, ptr noundef nonnull %9) #5
  %120 = load i64, ptr %11, align 8, !tbaa !5
  %121 = sub i64 %120, %113
  store i64 %121, ptr %16, align 8, !tbaa !5
  %122 = call i32 @cunghr_(ptr noundef nonnull %3, ptr noundef nonnull %19, ptr noundef nonnull %18, ptr noundef %8, ptr noundef nonnull %9, ptr noundef nonnull %10, ptr noundef %116, ptr noundef nonnull %16, ptr noundef nonnull %23) #5
  br label %123

123:                                              ; preds = %118, %111
  store i64 0, ptr %6, align 8, !tbaa !5
  %124 = load i64, ptr %11, align 8, !tbaa !5
  store i64 %124, ptr %16, align 8, !tbaa !5
  %125 = call i32 @chseqr_(ptr noundef nonnull @.str.1, ptr noundef %0, ptr noundef nonnull %3, ptr noundef nonnull %19, ptr noundef nonnull %18, ptr noundef %4, ptr noundef nonnull %5, ptr noundef %7, ptr noundef %8, ptr noundef nonnull %9, ptr noundef nonnull %10, ptr noundef nonnull %16, ptr noundef nonnull %25) #5
  %126 = load i64, ptr %25, align 8, !tbaa !5
  %127 = icmp sgt i64 %126, 0
  br i1 %127, label %128, label %129

128:                                              ; preds = %123
  store i64 %126, ptr %14, align 8, !tbaa !5
  br label %129

129:                                              ; preds = %128, %123
  br i1 %.not209, label %145, label %130

130:                                              ; preds = %129
  %131 = load i64, ptr %14, align 8, !tbaa !5
  %132 = icmp eq i64 %131, 0
  br i1 %132, label %133, label %145

133:                                              ; preds = %130
  br i1 %.not215229, label %136, label %134

134:                                              ; preds = %133
  %135 = call i32 @clascl_(ptr noundef nonnull @.str.9, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %26, ptr noundef nonnull %22, ptr noundef nonnull %3, ptr noundef nonnull @c__1, ptr noundef %7, ptr noundef nonnull %3, ptr noundef nonnull %23) #5
  br label %136

136:                                              ; preds = %134, %133
  %137 = load i64, ptr %3, align 8, !tbaa !5
  store i64 %137, ptr %16, align 8, !tbaa !5
  %.not217237 = icmp slt i64 %137, 1
  br i1 %.not217237, label %._crit_edge, label %.lr.ph

.lr.ph:                                           ; preds = %136, %.lr.ph
  %.0200238 = phi i64 [ %141, %.lr.ph ], [ 1, %136 ]
  %138 = getelementptr inbounds %struct.complex, ptr %29, i64 %.0200238
  %139 = call i64 (ptr, ...) %2(ptr noundef nonnull %138) #5
  %140 = getelementptr inbounds i64, ptr %30, i64 %.0200238
  store i64 %139, ptr %140, align 8, !tbaa !5
  %141 = add nuw nsw i64 %.0200238, 1
  %142 = load i64, ptr %16, align 8, !tbaa !5
  %.not217.not = icmp slt i64 %.0200238, %142
  br i1 %.not217.not, label %.lr.ph, label %._crit_edge, !llvm.loop !14

._crit_edge:                                      ; preds = %.lr.ph, %136
  %143 = load i64, ptr %11, align 8, !tbaa !5
  store i64 %143, ptr %16, align 8, !tbaa !5
  %144 = call i32 @ctrsen_(ptr noundef nonnull @.str.2, ptr noundef %0, ptr noundef %13, ptr noundef nonnull %3, ptr noundef %4, ptr noundef nonnull %5, ptr noundef %8, ptr noundef nonnull %9, ptr noundef %7, ptr noundef nonnull %6, ptr noundef nonnull %17, ptr noundef nonnull %21, ptr noundef nonnull %10, ptr noundef nonnull %16, ptr noundef nonnull %24) #5
  br label %145

145:                                              ; preds = %._crit_edge, %130, %129
  br i1 %.not, label %146, label %148

146:                                              ; preds = %145
  %147 = call i32 @cgebak_(ptr noundef nonnull @.str.7, ptr noundef nonnull @.str.11, ptr noundef nonnull %3, ptr noundef nonnull %19, ptr noundef nonnull %18, ptr noundef %12, ptr noundef nonnull %3, ptr noundef %8, ptr noundef nonnull %9, ptr noundef nonnull %23) #5
  br label %148

148:                                              ; preds = %146, %145
  br i1 %.not215229, label %154, label %149

149:                                              ; preds = %148
  %150 = call i32 @clascl_(ptr noundef nonnull @.str.12, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %26, ptr noundef nonnull %22, ptr noundef nonnull %3, ptr noundef nonnull %3, ptr noundef %4, ptr noundef nonnull %5, ptr noundef nonnull %23) #5
  %151 = load i64, ptr %5, align 8, !tbaa !5
  %152 = add nsw i64 %151, 1
  store i64 %152, ptr %16, align 8, !tbaa !5
  %153 = call i32 @f2c_ccopy(ptr noundef nonnull %3, ptr noundef %4, ptr noundef nonnull %16, ptr noundef %7, ptr noundef nonnull @c__1) #5
  br label %154

154:                                              ; preds = %149, %148
  store float %75, ptr %10, align 4, !tbaa !9
  store float 0.000000e+00, ptr %76, align 4, !tbaa !12
  br label %155

155:                                              ; preds = %82, %154, %86, %.thread222
  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 4, 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 8, ptr nonnull %23) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %22) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %21) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %20) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %17) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #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

; 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