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

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

105:                                              ; preds = %101
  %106 = load ptr, ptr %30, align 8, !tbaa !5
  store i32 -1, ptr %106, align 4, !tbaa !9
  br label %156

107:                                              ; preds = %101, %15
  %108 = load i32, ptr %53, align 4, !tbaa !9
  %109 = icmp ne i32 %108, 0
  br i1 %109, label %116, label %110

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

114:                                              ; preds = %110
  %115 = load ptr, ptr %30, align 8, !tbaa !5
  store i32 -2, ptr %115, align 4, !tbaa !9
  br label %155

116:                                              ; preds = %110, %107
  %117 = load ptr, ptr %19, align 8, !tbaa !5
  %118 = load i32, ptr %117, align 4, !tbaa !9
  %119 = icmp slt i32 %118, 0
  br i1 %119, label %120, label %122

120:                                              ; preds = %116
  %121 = load ptr, ptr %30, align 8, !tbaa !5
  store i32 -4, ptr %121, align 4, !tbaa !9
  br label %154

122:                                              ; preds = %116
  %123 = load ptr, ptr %21, align 8, !tbaa !5
  %124 = load i32, ptr %123, align 4, !tbaa !9
  %125 = load ptr, ptr %19, align 8, !tbaa !5
  %126 = load i32, ptr %125, align 4, !tbaa !9
  %127 = icmp sge i32 1, %126
  br i1 %127, label %128, label %129

128:                                              ; preds = %122
  br label %132

129:                                              ; preds = %122
  %130 = load ptr, ptr %19, align 8, !tbaa !5
  %131 = load i32, ptr %130, align 4, !tbaa !9
  br label %132

132:                                              ; preds = %129, %128
  %133 = phi i32 [ 1, %128 ], [ %131, %129 ]
  %134 = icmp slt i32 %124, %133
  br i1 %134, label %135, label %137

135:                                              ; preds = %132
  %136 = load ptr, ptr %30, align 8, !tbaa !5
  store i32 -6, ptr %136, align 4, !tbaa !9
  br label %153

137:                                              ; preds = %132
  %138 = load ptr, ptr %25, align 8, !tbaa !5
  %139 = load i32, ptr %138, align 4, !tbaa !9
  %140 = icmp slt i32 %139, 1
  br i1 %140, label %150, label %141

141:                                              ; preds = %137
  %142 = load i32, ptr %55, align 4, !tbaa !9
  %143 = icmp ne i32 %142, 0
  br i1 %143, label %144, label %152

144:                                              ; preds = %141
  %145 = load ptr, ptr %25, align 8, !tbaa !5
  %146 = load i32, ptr %145, align 4, !tbaa !9
  %147 = load ptr, ptr %19, align 8, !tbaa !5
  %148 = load i32, ptr %147, align 4, !tbaa !9
  %149 = icmp slt i32 %146, %148
  br i1 %149, label %150, label %152

150:                                              ; preds = %144, %137
  %151 = load ptr, ptr %30, align 8, !tbaa !5
  store i32 -10, ptr %151, align 4, !tbaa !9
  br label %152

152:                                              ; preds = %150, %144, %141
  br label %153

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

154:                                              ; preds = %153, %120
  br label %155

155:                                              ; preds = %154, %114
  br label %156

156:                                              ; preds = %155, %105
  %157 = load ptr, ptr %30, align 8, !tbaa !5
  %158 = load i32, ptr %157, align 4, !tbaa !9
  %159 = icmp eq i32 %158, 0
  br i1 %159, label %160, label %262

160:                                              ; preds = %156
  %161 = load ptr, ptr %19, align 8, !tbaa !5
  %162 = load i32, ptr %161, align 4, !tbaa !9
  %163 = icmp eq i32 %162, 0
  br i1 %163, label %164, label %165

164:                                              ; preds = %160
  store i32 1, ptr %49, align 4, !tbaa !9
  store i32 1, ptr %50, align 4, !tbaa !9
  br label %243

165:                                              ; preds = %160
  %166 = load ptr, ptr %19, align 8, !tbaa !5
  %167 = load i32, ptr %166, align 4, !tbaa !9
  %168 = load ptr, ptr %19, align 8, !tbaa !5
  %169 = load i32, ptr %168, align 4, !tbaa !9
  %170 = load ptr, ptr %19, align 8, !tbaa !5
  %171 = load ptr, ptr %19, align 8, !tbaa !5
  %172 = call i32 @ilaenv_(ptr noundef @c__1, ptr noundef @.str.3, ptr noundef @.str.4, ptr noundef %170, ptr noundef @c__1, ptr noundef %171, ptr noundef @c__0, i32 noundef 6, i32 noundef 1)
  %173 = mul nsw i32 %169, %172
  %174 = add nsw i32 %167, %173
  store i32 %174, ptr %50, align 4, !tbaa !9
  %175 = load ptr, ptr %19, align 8, !tbaa !5
  %176 = load i32, ptr %175, align 4, !tbaa !9
  %177 = shl i32 %176, 1
  store i32 %177, ptr %49, align 4, !tbaa !9
  %178 = load ptr, ptr %16, align 8, !tbaa !5
  %179 = load ptr, ptr %19, align 8, !tbaa !5
  %180 = load ptr, ptr %19, align 8, !tbaa !5
  %181 = load ptr, ptr %20, align 8, !tbaa !5
  %182 = load i32, ptr %32, align 4, !tbaa !9
  %183 = sext i32 %182 to i64
  %184 = getelementptr inbounds %struct.complex, ptr %181, i64 %183
  %185 = load ptr, ptr %21, align 8, !tbaa !5
  %186 = load ptr, ptr %23, align 8, !tbaa !5
  %187 = getelementptr inbounds %struct.complex, ptr %186, i64 1
  %188 = load ptr, ptr %24, align 8, !tbaa !5
  %189 = load i32, ptr %34, align 4, !tbaa !9
  %190 = sext i32 %189 to i64
  %191 = getelementptr inbounds %struct.complex, ptr %188, i64 %190
  %192 = load ptr, ptr %25, align 8, !tbaa !5
  %193 = load ptr, ptr %26, align 8, !tbaa !5
  %194 = getelementptr inbounds %struct.complex, ptr %193, i64 1
  call void @chseqr_(ptr noundef @.str.1, ptr noundef %178, ptr noundef %179, ptr noundef @c__1, ptr noundef %180, ptr noundef %184, ptr noundef %185, ptr noundef %187, ptr noundef %191, ptr noundef %192, ptr noundef %194, ptr noundef @c_n1, ptr noundef %45)
  %195 = load ptr, ptr %26, align 8, !tbaa !5
  %196 = getelementptr inbounds %struct.complex, ptr %195, i64 1
  %197 = getelementptr inbounds %struct.complex, ptr %196, i32 0, i32 0
  %198 = load float, ptr %197, align 4, !tbaa !11
  %199 = fptosi float %198 to i32
  store i32 %199, ptr %52, align 4, !tbaa !9
  %200 = load i32, ptr %55, align 4, !tbaa !9
  %201 = icmp ne i32 %200, 0
  br i1 %201, label %212, label %202

202:                                              ; preds = %165
  %203 = load i32, ptr %50, align 4, !tbaa !9
  %204 = load i32, ptr %52, align 4, !tbaa !9
  %205 = icmp sge i32 %203, %204
  br i1 %205, label %206, label %208

206:                                              ; preds = %202
  %207 = load i32, ptr %50, align 4, !tbaa !9
  br label %210

208:                                              ; preds = %202
  %209 = load i32, ptr %52, align 4, !tbaa !9
  br label %210

210:                                              ; preds = %208, %206
  %211 = phi i32 [ %207, %206 ], [ %209, %208 ]
  store i32 %211, ptr %50, align 4, !tbaa !9
  br label %242

212:                                              ; preds = %165
  %213 = load i32, ptr %50, align 4, !tbaa !9
  store i32 %213, ptr %35, align 4, !tbaa !9
  %214 = load ptr, ptr %19, align 8, !tbaa !5
  %215 = load i32, ptr %214, align 4, !tbaa !9
  %216 = load ptr, ptr %19, align 8, !tbaa !5
  %217 = load i32, ptr %216, align 4, !tbaa !9
  %218 = sub nsw i32 %217, 1
  %219 = load ptr, ptr %19, align 8, !tbaa !5
  %220 = load ptr, ptr %19, align 8, !tbaa !5
  %221 = call i32 @ilaenv_(ptr noundef @c__1, ptr noundef @.str.5, ptr noundef @.str.4, ptr noundef %219, ptr noundef @c__1, ptr noundef %220, ptr noundef @c_n1, i32 noundef 6, i32 noundef 1)
  %222 = mul nsw i32 %218, %221
  %223 = add nsw i32 %215, %222
  store i32 %223, ptr %36, align 4, !tbaa !9
  %224 = load i32, ptr %35, align 4, !tbaa !9
  %225 = load i32, ptr %36, align 4, !tbaa !9
  %226 = icmp sge i32 %224, %225
  br i1 %226, label %227, label %229

227:                                              ; preds = %212
  %228 = load i32, ptr %35, align 4, !tbaa !9
  br label %231

229:                                              ; preds = %212
  %230 = load i32, ptr %36, align 4, !tbaa !9
  br label %231

231:                                              ; preds = %229, %227
  %232 = phi i32 [ %228, %227 ], [ %230, %229 ]
  store i32 %232, ptr %50, align 4, !tbaa !9
  %233 = load i32, ptr %50, align 4, !tbaa !9
  %234 = load i32, ptr %52, align 4, !tbaa !9
  %235 = icmp sge i32 %233, %234
  br i1 %235, label %236, label %238

236:                                              ; preds = %231
  %237 = load i32, ptr %50, align 4, !tbaa !9
  br label %240

238:                                              ; preds = %231
  %239 = load i32, ptr %52, align 4, !tbaa !9
  br label %240

240:                                              ; preds = %238, %236
  %241 = phi i32 [ %237, %236 ], [ %239, %238 ]
  store i32 %241, ptr %50, align 4, !tbaa !9
  br label %242

242:                                              ; preds = %240, %210
  br label %243

243:                                              ; preds = %242, %164
  %244 = load i32, ptr %50, align 4, !tbaa !9
  %245 = sitofp i32 %244 to float
  %246 = load ptr, ptr %26, align 8, !tbaa !5
  %247 = getelementptr inbounds %struct.complex, ptr %246, i64 1
  %248 = getelementptr inbounds %struct.complex, ptr %247, i32 0, i32 0
  store float %245, ptr %248, align 4, !tbaa !11
  %249 = load ptr, ptr %26, align 8, !tbaa !5
  %250 = getelementptr inbounds %struct.complex, ptr %249, i64 1
  %251 = getelementptr inbounds %struct.complex, ptr %250, i32 0, i32 1
  store float 0.000000e+00, ptr %251, align 4, !tbaa !14
  %252 = load ptr, ptr %27, align 8, !tbaa !5
  %253 = load i32, ptr %252, align 4, !tbaa !9
  %254 = load i32, ptr %49, align 4, !tbaa !9
  %255 = icmp slt i32 %253, %254
  br i1 %255, label %256, label %261

256:                                              ; preds = %243
  %257 = load i32, ptr %54, align 4, !tbaa !9
  %258 = icmp ne i32 %257, 0
  br i1 %258, label %261, label %259

259:                                              ; preds = %256
  %260 = load ptr, ptr %30, align 8, !tbaa !5
  store i32 -12, ptr %260, align 4, !tbaa !9
  br label %261

261:                                              ; preds = %259, %256, %243
  br label %262

262:                                              ; preds = %261, %156
  %263 = load ptr, ptr %30, align 8, !tbaa !5
  %264 = load i32, ptr %263, align 4, !tbaa !9
  %265 = icmp ne i32 %264, 0
  br i1 %265, label %266, label %271

266:                                              ; preds = %262
  %267 = load ptr, ptr %30, align 8, !tbaa !5
  %268 = load i32, ptr %267, align 4, !tbaa !9
  %269 = sub nsw i32 0, %268
  store i32 %269, ptr %35, align 4, !tbaa !9
  %270 = call i32 @xerbla_(ptr noundef @.str.6, ptr noundef %35, i32 noundef 6)
  store i32 1, ptr %61, align 4
  br label %538

271:                                              ; preds = %262
  %272 = load i32, ptr %54, align 4, !tbaa !9
  %273 = icmp ne i32 %272, 0
  br i1 %273, label %274, label %275

274:                                              ; preds = %271
  store i32 1, ptr %61, align 4
  br label %538

275:                                              ; preds = %271
  br label %276

276:                                              ; preds = %275
  %277 = load ptr, ptr %19, align 8, !tbaa !5
  %278 = load i32, ptr %277, align 4, !tbaa !9
  %279 = icmp eq i32 %278, 0
  br i1 %279, label %280, label %282

280:                                              ; preds = %276
  %281 = load ptr, ptr %22, align 8, !tbaa !5
  store i32 0, ptr %281, align 4, !tbaa !9
  store i32 1, ptr %61, align 4
  br label %538

282:                                              ; preds = %276
  %283 = call float @slamch_(ptr noundef @.str.7)
  store float %283, ptr %59, align 4, !tbaa !15
  %284 = call float @slamch_(ptr noundef @.str.1)
  store float %284, ptr %51, align 4, !tbaa !15
  %285 = load float, ptr %51, align 4, !tbaa !15
  %286 = fdiv float 1.000000e+00, %285
  store float %286, ptr %48, align 4, !tbaa !15
  call void @slabad_(ptr noundef %51, ptr noundef %48)
  %287 = load float, ptr %51, align 4, !tbaa !15
  %288 = fpext float %287 to double
  %289 = call double @sqrt(double noundef %288) #4
  %290 = load float, ptr %59, 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 %51, align 4, !tbaa !15
  %294 = load float, ptr %51, align 4, !tbaa !15
  %295 = fdiv float 1.000000e+00, %294
  store float %295, ptr %48, align 4, !tbaa !15
  %296 = load ptr, ptr %19, align 8, !tbaa !5
  %297 = load ptr, ptr %19, align 8, !tbaa !5
  %298 = load ptr, ptr %20, align 8, !tbaa !5
  %299 = load i32, ptr %32, align 4, !tbaa !9
  %300 = sext i32 %299 to i64
  %301 = getelementptr inbounds %struct.complex, ptr %298, i64 %300
  %302 = load ptr, ptr %21, align 8, !tbaa !5
  %303 = getelementptr inbounds [1 x float], ptr %58, i64 0, i64 0
  %304 = call float @clange_(ptr noundef @.str.8, ptr noundef %296, ptr noundef %297, ptr noundef %301, ptr noundef %302, ptr noundef %303)
  store float %304, ptr %38, align 4, !tbaa !15
  store i32 0, ptr %46, align 4, !tbaa !9
  %305 = load float, ptr %38, align 4, !tbaa !15
  %306 = fcmp ogt float %305, 0.000000e+00
  br i1 %306, label %307, label %313

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

311:                                              ; preds = %307
  store i32 1, ptr %46, align 4, !tbaa !9
  %312 = load float, ptr %51, align 4, !tbaa !15
  store float %312, ptr %47, align 4, !tbaa !15
  br label %320

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

317:                                              ; preds = %313
  store i32 1, ptr %46, align 4, !tbaa !9
  %318 = load float, ptr %48, align 4, !tbaa !15
  store float %318, ptr %47, align 4, !tbaa !15
  br label %319

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

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

323:                                              ; preds = %320
  %324 = load ptr, ptr %19, align 8, !tbaa !5
  %325 = load ptr, ptr %19, align 8, !tbaa !5
  %326 = load ptr, ptr %20, align 8, !tbaa !5
  %327 = load i32, ptr %32, align 4, !tbaa !9
  %328 = sext i32 %327 to i64
  %329 = getelementptr inbounds %struct.complex, ptr %326, i64 %328
  %330 = load ptr, ptr %21, align 8, !tbaa !5
  call void @clascl_(ptr noundef @.str.9, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %38, ptr noundef %47, ptr noundef %324, ptr noundef %325, ptr noundef %329, ptr noundef %330, ptr noundef %39)
  br label %331

331:                                              ; preds = %323, %320
  store i32 1, ptr %37, align 4, !tbaa !9
  %332 = load ptr, ptr %19, align 8, !tbaa !5
  %333 = load ptr, ptr %20, align 8, !tbaa !5
  %334 = load i32, ptr %32, align 4, !tbaa !9
  %335 = sext i32 %334 to i64
  %336 = getelementptr inbounds %struct.complex, ptr %333, i64 %335
  %337 = load ptr, ptr %21, align 8, !tbaa !5
  %338 = load ptr, ptr %28, align 8, !tbaa !5
  %339 = load i32, ptr %37, align 4, !tbaa !9
  %340 = sext i32 %339 to i64
  %341 = getelementptr inbounds float, ptr %338, i64 %340
  call void @cgebal_(ptr noundef @.str.7, ptr noundef %332, ptr noundef %336, ptr noundef %337, ptr noundef %57, ptr noundef %56, ptr noundef %341, ptr noundef %39)
  store i32 1, ptr %40, align 4, !tbaa !9
  %342 = load ptr, ptr %19, align 8, !tbaa !5
  %343 = load i32, ptr %342, align 4, !tbaa !9
  %344 = load i32, ptr %40, align 4, !tbaa !9
  %345 = add nsw i32 %343, %344
  store i32 %345, ptr %41, align 4, !tbaa !9
  %346 = load ptr, ptr %27, align 8, !tbaa !5
  %347 = load i32, ptr %346, align 4, !tbaa !9
  %348 = load i32, ptr %41, align 4, !tbaa !9
  %349 = sub nsw i32 %347, %348
  %350 = add nsw i32 %349, 1
  store i32 %350, ptr %35, align 4, !tbaa !9
  %351 = load ptr, ptr %19, align 8, !tbaa !5
  %352 = load ptr, ptr %20, align 8, !tbaa !5
  %353 = load i32, ptr %32, align 4, !tbaa !9
  %354 = sext i32 %353 to i64
  %355 = getelementptr inbounds %struct.complex, ptr %352, i64 %354
  %356 = load ptr, ptr %21, align 8, !tbaa !5
  %357 = load ptr, ptr %26, align 8, !tbaa !5
  %358 = load i32, ptr %40, align 4, !tbaa !9
  %359 = sext i32 %358 to i64
  %360 = getelementptr inbounds %struct.complex, ptr %357, i64 %359
  %361 = load ptr, ptr %26, align 8, !tbaa !5
  %362 = load i32, ptr %41, align 4, !tbaa !9
  %363 = sext i32 %362 to i64
  %364 = getelementptr inbounds %struct.complex, ptr %361, i64 %363
  call void @cgehrd_(ptr noundef %351, ptr noundef %57, ptr noundef %56, ptr noundef %355, ptr noundef %356, ptr noundef %360, ptr noundef %364, ptr noundef %35, ptr noundef %39)
  %365 = load i32, ptr %55, align 4, !tbaa !9
  %366 = icmp ne i32 %365, 0
  br i1 %366, label %367, label %399

367:                                              ; preds = %331
  %368 = load ptr, ptr %19, align 8, !tbaa !5
  %369 = load ptr, ptr %19, align 8, !tbaa !5
  %370 = load ptr, ptr %20, align 8, !tbaa !5
  %371 = load i32, ptr %32, align 4, !tbaa !9
  %372 = sext i32 %371 to i64
  %373 = getelementptr inbounds %struct.complex, ptr %370, i64 %372
  %374 = load ptr, ptr %21, align 8, !tbaa !5
  %375 = load ptr, ptr %24, align 8, !tbaa !5
  %376 = load i32, ptr %34, align 4, !tbaa !9
  %377 = sext i32 %376 to i64
  %378 = getelementptr inbounds %struct.complex, ptr %375, i64 %377
  %379 = load ptr, ptr %25, align 8, !tbaa !5
  call void @clacpy_(ptr noundef @.str.10, ptr noundef %368, ptr noundef %369, ptr noundef %373, ptr noundef %374, ptr noundef %378, ptr noundef %379)
  %380 = load ptr, ptr %27, align 8, !tbaa !5
  %381 = load i32, ptr %380, align 4, !tbaa !9
  %382 = load i32, ptr %41, align 4, !tbaa !9
  %383 = sub nsw i32 %381, %382
  %384 = add nsw i32 %383, 1
  store i32 %384, ptr %35, align 4, !tbaa !9
  %385 = load ptr, ptr %19, align 8, !tbaa !5
  %386 = load ptr, ptr %24, align 8, !tbaa !5
  %387 = load i32, ptr %34, align 4, !tbaa !9
  %388 = sext i32 %387 to i64
  %389 = getelementptr inbounds %struct.complex, ptr %386, i64 %388
  %390 = load ptr, ptr %25, align 8, !tbaa !5
  %391 = load ptr, ptr %26, align 8, !tbaa !5
  %392 = load i32, ptr %40, align 4, !tbaa !9
  %393 = sext i32 %392 to i64
  %394 = getelementptr inbounds %struct.complex, ptr %391, i64 %393
  %395 = load ptr, ptr %26, align 8, !tbaa !5
  %396 = load i32, ptr %41, align 4, !tbaa !9
  %397 = sext i32 %396 to i64
  %398 = getelementptr inbounds %struct.complex, ptr %395, i64 %397
  call void @cunghr_(ptr noundef %385, ptr noundef %57, ptr noundef %56, ptr noundef %389, ptr noundef %390, ptr noundef %394, ptr noundef %398, ptr noundef %35, ptr noundef %39)
  br label %399

399:                                              ; preds = %367, %331
  %400 = load ptr, ptr %22, align 8, !tbaa !5
  store i32 0, ptr %400, align 4, !tbaa !9
  %401 = load i32, ptr %40, align 4, !tbaa !9
  store i32 %401, ptr %41, align 4, !tbaa !9
  %402 = load ptr, ptr %27, align 8, !tbaa !5
  %403 = load i32, ptr %402, align 4, !tbaa !9
  %404 = load i32, ptr %41, align 4, !tbaa !9
  %405 = sub nsw i32 %403, %404
  %406 = add nsw i32 %405, 1
  store i32 %406, ptr %35, align 4, !tbaa !9
  %407 = load ptr, ptr %16, align 8, !tbaa !5
  %408 = load ptr, ptr %19, align 8, !tbaa !5
  %409 = load ptr, ptr %20, align 8, !tbaa !5
  %410 = load i32, ptr %32, align 4, !tbaa !9
  %411 = sext i32 %410 to i64
  %412 = getelementptr inbounds %struct.complex, ptr %409, i64 %411
  %413 = load ptr, ptr %21, align 8, !tbaa !5
  %414 = load ptr, ptr %23, align 8, !tbaa !5
  %415 = getelementptr inbounds %struct.complex, ptr %414, i64 1
  %416 = load ptr, ptr %24, align 8, !tbaa !5
  %417 = load i32, ptr %34, align 4, !tbaa !9
  %418 = sext i32 %417 to i64
  %419 = getelementptr inbounds %struct.complex, ptr %416, i64 %418
  %420 = load ptr, ptr %25, align 8, !tbaa !5
  %421 = load ptr, ptr %26, align 8, !tbaa !5
  %422 = load i32, ptr %41, align 4, !tbaa !9
  %423 = sext i32 %422 to i64
  %424 = getelementptr inbounds %struct.complex, ptr %421, i64 %423
  call void @chseqr_(ptr noundef @.str.1, ptr noundef %407, ptr noundef %408, ptr noundef %57, ptr noundef %56, ptr noundef %412, ptr noundef %413, ptr noundef %415, ptr noundef %419, ptr noundef %420, ptr noundef %424, ptr noundef %35, ptr noundef %45)
  %425 = load i32, ptr %45, align 4, !tbaa !9
  %426 = icmp sgt i32 %425, 0
  br i1 %426, label %427, label %430

427:                                              ; preds = %399
  %428 = load i32, ptr %45, align 4, !tbaa !9
  %429 = load ptr, ptr %30, align 8, !tbaa !5
  store i32 %428, ptr %429, align 4, !tbaa !9
  br label %430

430:                                              ; preds = %427, %399
  %431 = load i32, ptr %53, align 4, !tbaa !9
  %432 = icmp ne i32 %431, 0
  br i1 %432, label %433, label %493

433:                                              ; preds = %430
  %434 = load ptr, ptr %30, align 8, !tbaa !5
  %435 = load i32, ptr %434, align 4, !tbaa !9
  %436 = icmp eq i32 %435, 0
  br i1 %436, label %437, label %493

437:                                              ; preds = %433
  %438 = load i32, ptr %46, align 4, !tbaa !9
  %439 = icmp ne i32 %438, 0
  br i1 %439, label %440, label %445

440:                                              ; preds = %437
  %441 = load ptr, ptr %19, align 8, !tbaa !5
  %442 = load ptr, ptr %23, align 8, !tbaa !5
  %443 = getelementptr inbounds %struct.complex, ptr %442, i64 1
  %444 = load ptr, ptr %19, align 8, !tbaa !5
  call void @clascl_(ptr noundef @.str.9, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %47, ptr noundef %38, ptr noundef %441, ptr noundef @c__1, ptr noundef %443, ptr noundef %444, ptr noundef %39)
  br label %445

445:                                              ; preds = %440, %437
  %446 = load ptr, ptr %19, align 8, !tbaa !5
  %447 = load i32, ptr %446, align 4, !tbaa !9
  store i32 %447, ptr %35, align 4, !tbaa !9
  store i32 1, ptr %42, align 4, !tbaa !9
  br label %448

448:                                              ; preds = %463, %445
  %449 = load i32, ptr %42, align 4, !tbaa !9
  %450 = load i32, ptr %35, align 4, !tbaa !9
  %451 = icmp sle i32 %449, %450
  br i1 %451, label %452, label %466

452:                                              ; preds = %448
  %453 = load ptr, ptr %18, align 8, !tbaa !5
  %454 = load ptr, ptr %23, align 8, !tbaa !5
  %455 = load i32, ptr %42, align 4, !tbaa !9
  %456 = sext i32 %455 to i64
  %457 = getelementptr inbounds %struct.complex, ptr %454, i64 %456
  %458 = call i32 (ptr, ...) %453(ptr noundef %457)
  %459 = load ptr, ptr %29, align 8, !tbaa !5
  %460 = load i32, ptr %42, align 4, !tbaa !9
  %461 = sext i32 %460 to i64
  %462 = getelementptr inbounds i32, ptr %459, i64 %461
  store i32 %458, ptr %462, align 4, !tbaa !9
  br label %463

463:                                              ; preds = %452
  %464 = load i32, ptr %42, align 4, !tbaa !9
  %465 = add nsw i32 %464, 1
  store i32 %465, ptr %42, align 4, !tbaa !9
  br label %448, !llvm.loop !16

466:                                              ; preds = %448
  %467 = load ptr, ptr %27, align 8, !tbaa !5
  %468 = load i32, ptr %467, align 4, !tbaa !9
  %469 = load i32, ptr %41, align 4, !tbaa !9
  %470 = sub nsw i32 %468, %469
  %471 = add nsw i32 %470, 1
  store i32 %471, ptr %35, align 4, !tbaa !9
  %472 = load ptr, ptr %16, align 8, !tbaa !5
  %473 = load ptr, ptr %29, align 8, !tbaa !5
  %474 = getelementptr inbounds i32, ptr %473, i64 1
  %475 = load ptr, ptr %19, align 8, !tbaa !5
  %476 = load ptr, ptr %20, align 8, !tbaa !5
  %477 = load i32, ptr %32, align 4, !tbaa !9
  %478 = sext i32 %477 to i64
  %479 = getelementptr inbounds %struct.complex, ptr %476, i64 %478
  %480 = load ptr, ptr %21, align 8, !tbaa !5
  %481 = load ptr, ptr %24, align 8, !tbaa !5
  %482 = load i32, ptr %34, align 4, !tbaa !9
  %483 = sext i32 %482 to i64
  %484 = getelementptr inbounds %struct.complex, ptr %481, i64 %483
  %485 = load ptr, ptr %25, align 8, !tbaa !5
  %486 = load ptr, ptr %23, align 8, !tbaa !5
  %487 = getelementptr inbounds %struct.complex, ptr %486, i64 1
  %488 = load ptr, ptr %22, align 8, !tbaa !5
  %489 = load ptr, ptr %26, align 8, !tbaa !5
  %490 = load i32, ptr %41, align 4, !tbaa !9
  %491 = sext i32 %490 to i64
  %492 = getelementptr inbounds %struct.complex, ptr %489, i64 %491
  call void @ctrsen_(ptr noundef @.str.2, ptr noundef %472, ptr noundef %474, ptr noundef %475, ptr noundef %479, ptr noundef %480, ptr noundef %484, ptr noundef %485, ptr noundef %487, ptr noundef %488, ptr noundef %43, ptr noundef %60, ptr noundef %492, ptr noundef %35, ptr noundef %44)
  br label %493

493:                                              ; preds = %466, %433, %430
  %494 = load i32, ptr %55, align 4, !tbaa !9
  %495 = icmp ne i32 %494, 0
  br i1 %495, label %496, label %508

496:                                              ; preds = %493
  %497 = load ptr, ptr %19, align 8, !tbaa !5
  %498 = load ptr, ptr %28, align 8, !tbaa !5
  %499 = load i32, ptr %37, align 4, !tbaa !9
  %500 = sext i32 %499 to i64
  %501 = getelementptr inbounds float, ptr %498, i64 %500
  %502 = load ptr, ptr %19, align 8, !tbaa !5
  %503 = load ptr, ptr %24, align 8, !tbaa !5
  %504 = load i32, ptr %34, align 4, !tbaa !9
  %505 = sext i32 %504 to i64
  %506 = getelementptr inbounds %struct.complex, ptr %503, i64 %505
  %507 = load ptr, ptr %25, align 8, !tbaa !5
  call void @cgebak_(ptr noundef @.str.7, ptr noundef @.str.11, ptr noundef %497, ptr noundef %57, ptr noundef %56, ptr noundef %501, ptr noundef %502, ptr noundef %506, ptr noundef %507, ptr noundef %39)
  br label %508

508:                                              ; preds = %496, %493
  %509 = load i32, ptr %46, align 4, !tbaa !9
  %510 = icmp ne i32 %509, 0
  br i1 %510, label %511, label %529

511:                                              ; preds = %508
  %512 = load ptr, ptr %19, align 8, !tbaa !5
  %513 = load ptr, ptr %19, align 8, !tbaa !5
  %514 = load ptr, ptr %20, align 8, !tbaa !5
  %515 = load i32, ptr %32, align 4, !tbaa !9
  %516 = sext i32 %515 to i64
  %517 = getelementptr inbounds %struct.complex, ptr %514, i64 %516
  %518 = load ptr, ptr %21, align 8, !tbaa !5
  call void @clascl_(ptr noundef @.str.12, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %47, ptr noundef %38, ptr noundef %512, ptr noundef %513, ptr noundef %517, ptr noundef %518, ptr noundef %39)
  %519 = load ptr, ptr %21, align 8, !tbaa !5
  %520 = load i32, ptr %519, align 4, !tbaa !9
  %521 = add nsw i32 %520, 1
  store i32 %521, ptr %35, align 4, !tbaa !9
  %522 = load ptr, ptr %19, align 8, !tbaa !5
  %523 = load ptr, ptr %20, align 8, !tbaa !5
  %524 = load i32, ptr %32, align 4, !tbaa !9
  %525 = sext i32 %524 to i64
  %526 = getelementptr inbounds %struct.complex, ptr %523, i64 %525
  %527 = load ptr, ptr %23, align 8, !tbaa !5
  %528 = getelementptr inbounds %struct.complex, ptr %527, i64 1
  call void @ccopy_(ptr noundef %522, ptr noundef %526, ptr noundef %35, ptr noundef %528, ptr noundef @c__1)
  br label %529

529:                                              ; preds = %511, %508
  %530 = load i32, ptr %50, align 4, !tbaa !9
  %531 = sitofp i32 %530 to float
  %532 = load ptr, ptr %26, align 8, !tbaa !5
  %533 = getelementptr inbounds %struct.complex, ptr %532, i64 1
  %534 = getelementptr inbounds %struct.complex, ptr %533, i32 0, i32 0
  store float %531, ptr %534, align 4, !tbaa !11
  %535 = load ptr, ptr %26, align 8, !tbaa !5
  %536 = getelementptr inbounds %struct.complex, ptr %535, i64 1
  %537 = getelementptr inbounds %struct.complex, ptr %536, i32 0, i32 1
  store float 0.000000e+00, ptr %537, align 4, !tbaa !14
  store i32 1, ptr %61, align 4
  br label %538

538:                                              ; preds = %529, %280, %274, %266
  call void @llvm.lifetime.end.p0(i64 4, ptr %60) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %59) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %58) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %56) #4
  call void @llvm.lifetime.end.p0(i64 4, 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 4, ptr %52) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #4
  ret void
}

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

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

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

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

declare float @slamch_(ptr noundef) #2

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

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

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

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

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

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

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

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

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

declare void @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 = !{!"int", !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 i32, align 4
@.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 i32, align 4
@c_n1 = external hidden global i32, align 4
@.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 void @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 i32, align 4
  %17 = alloca float, align 4
  %18 = alloca i32, align 4
  %19 = alloca float, align 4
  %20 = alloca i32, align 4
  %21 = alloca i32, align 4
  %22 = alloca float, align 4
  %23 = alloca float, align 4
  %24 = alloca float, align 4
  %25 = alloca i32, align 4
  %26 = alloca i32, align 4
  %27 = alloca [1 x float], align 4
  %28 = alloca float, align 4
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %16) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %17) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %18) #5
  call void @llvm.lifetime.start.p0(i64 4, 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 4, ptr nonnull %23) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %24) #5
  call void @llvm.lifetime.start.p0(i64 4, 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 %10, i64 -8
  %31 = getelementptr inbounds i8, ptr %13, i64 -4
  store i32 0, ptr %14, align 4, !tbaa !5
  %32 = load i32, ptr %11, align 4, !tbaa !5
  %33 = icmp eq i32 %32, -1
  %34 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str) #5
  %35 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.1) #5
  %.not = icmp ne i32 %34, 0
  br i1 %.not, label %38, label %36

36:                                               ; preds = %15
  %37 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.2) #5
  %.not207 = icmp eq i32 %37, 0
  br i1 %.not207, label %.thread221.sink.split, label %38

38:                                               ; preds = %36, %15
  %.not208 = icmp eq i32 %35, 0
  br i1 %.not208, label %39, label %41

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

41:                                               ; preds = %39, %38
  %42 = load i32, ptr %3, align 4, !tbaa !5
  %43 = icmp slt i32 %42, 0
  br i1 %43, label %.thread221.sink.split, label %44

44:                                               ; preds = %41
  %45 = load i32, ptr %5, align 4, !tbaa !5
  %spec.select = tail call i32 @llvm.umax.i32(i32 %42, i32 1)
  %46 = icmp slt i32 %45, %spec.select
  br i1 %46, label %.thread221.sink.split, label %47

47:                                               ; preds = %44
  %48 = load i32, ptr %9, align 4, !tbaa !5
  %49 = icmp slt i32 %48, 1
  %50 = icmp ult i32 %48, %42
  %or.cond232 = and i1 %.not, %50
  %or.cond233 = or i1 %49, %or.cond232
  br i1 %or.cond233, label %.thread221.sink.split, label %51

51:                                               ; preds = %47
  %.pr = load i32, ptr %14, align 4, !tbaa !5
  %52 = icmp eq i32 %.pr, 0
  br i1 %52, label %53, label %.thread221

53:                                               ; preds = %51
  %54 = icmp eq i32 %42, 0
  br i1 %54, label %74, label %55

55:                                               ; preds = %53
  %56 = tail call i32 @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, i32 noundef 6, i32 noundef 1) #5
  %57 = add i32 %56, 1
  %58 = mul i32 %57, %42
  %59 = load i32, ptr %3, align 4, !tbaa !5
  %60 = shl i32 %59, 1
  call void @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 %21) #5
  %61 = load float, ptr %10, align 4, !tbaa !9
  %62 = fptosi float %61 to i32
  br i1 %.not, label %65, label %63

63:                                               ; preds = %55
  %64 = call i32 @llvm.smax.i32(i32 %58, i32 %62)
  br label %74

65:                                               ; preds = %55
  store i32 %58, ptr %16, align 4, !tbaa !5
  %66 = load i32, ptr %3, align 4, !tbaa !5
  %67 = add nsw i32 %66, -1
  %68 = call i32 @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, i32 noundef 6, i32 noundef 1) #5
  %69 = mul nsw i32 %67, %68
  %70 = add nsw i32 %69, %66
  %71 = load i32, ptr %16, align 4
  %72 = call i32 @llvm.smax.i32(i32 %71, i32 %70)
  %73 = call i32 @llvm.smax.i32(i32 %72, i32 %62)
  br label %74

74:                                               ; preds = %53, %63, %65
  %.0196 = phi i32 [ %60, %65 ], [ %60, %63 ], [ 1, %53 ]
  %.0 = phi i32 [ %73, %65 ], [ %64, %63 ], [ 1, %53 ]
  %75 = sitofp i32 %.0 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 i32, ptr %11, align 4, !tbaa !5
  %78 = icmp sge i32 %77, %.0196
  %or.cond = select i1 %78, i1 true, i1 %33
  br i1 %or.cond, label %.thread, label %.thread221.sink.split

.thread:                                          ; preds = %74
  %.pr218.pr = load i32, ptr %14, align 4, !tbaa !5
  %.not213 = icmp eq i32 %.pr218.pr, 0
  br i1 %.not213, label %82, label %.thread221

.thread221.sink.split:                            ; preds = %74, %47, %44, %41, %39, %36
  %.sink = phi i32 [ -1, %36 ], [ -2, %39 ], [ -4, %41 ], [ -6, %44 ], [ -10, %47 ], [ -12, %74 ]
  store i32 %.sink, ptr %14, align 4, !tbaa !5
  br label %.thread221

.thread221:                                       ; preds = %.thread221.sink.split, %51, %.thread
  %79 = phi i32 [ %.pr218.pr, %.thread ], [ %.pr, %51 ], [ %.sink, %.thread221.sink.split ]
  %80 = sub nsw i32 0, %79
  store i32 %80, ptr %16, align 4, !tbaa !5
  %81 = call i32 @xerbla_(ptr noundef nonnull @.str.6, ptr noundef nonnull %16, i32 noundef 6) #5
  br label %142

82:                                               ; preds = %.thread
  br i1 %33, label %142, label %83

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

86:                                               ; preds = %83
  store i32 0, ptr %6, align 4, !tbaa !5
  br label %142

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

102:                                              ; preds = %87
  %103 = load float, ptr %23, align 4, !tbaa !13
  %104 = fcmp ogt float %98, %103
  br i1 %104, label %105, label %106

105:                                              ; preds = %87, %102
  %storemerge = phi float [ %103, %102 ], [ %100, %87 ]
  store float %storemerge, ptr %22, align 4, !tbaa !13
  call void @clascl_(ptr noundef nonnull @.str.9, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %17, ptr noundef nonnull %22, ptr noundef nonnull %3, ptr noundef nonnull %3, ptr noundef %4, ptr noundef nonnull %5, ptr noundef nonnull %18) #5
  br label %106

106:                                              ; preds = %102, %105
  %.not214228 = phi i1 [ false, %105 ], [ true, %102 ]
  call void @cgebal_(ptr noundef nonnull @.str.7, ptr noundef nonnull %3, ptr noundef %4, ptr noundef nonnull %5, ptr noundef nonnull %26, ptr noundef nonnull %25, ptr noundef %12, ptr noundef nonnull %18) #5
  %107 = load i32, ptr %3, align 4, !tbaa !5
  %108 = load i32, ptr %11, align 4, !tbaa !5
  %109 = sub i32 %108, %107
  store i32 %109, ptr %16, align 4, !tbaa !5
  %110 = sext i32 %107 to i64
  %111 = getelementptr %struct.complex, ptr %30, i64 %110
  %112 = getelementptr i8, ptr %111, i64 8
  call void @cgehrd_(ptr noundef nonnull %3, ptr noundef nonnull %26, ptr noundef nonnull %25, ptr noundef %4, ptr noundef nonnull %5, ptr noundef nonnull %10, ptr noundef nonnull %112, ptr noundef nonnull %16, ptr noundef nonnull %18) #5
  br i1 %.not, label %113, label %116

113:                                              ; preds = %106
  call void @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
  %114 = load i32, ptr %11, align 4, !tbaa !5
  %115 = sub i32 %114, %107
  store i32 %115, ptr %16, align 4, !tbaa !5
  call void @cunghr_(ptr noundef nonnull %3, ptr noundef nonnull %26, ptr noundef nonnull %25, ptr noundef %8, ptr noundef nonnull %9, ptr noundef nonnull %10, ptr noundef nonnull %112, ptr noundef nonnull %16, ptr noundef nonnull %18) #5
  br label %116

116:                                              ; preds = %113, %106
  store i32 0, ptr %6, align 4, !tbaa !5
  %117 = load i32, ptr %11, align 4, !tbaa !5
  store i32 %117, ptr %16, align 4, !tbaa !5
  call void @chseqr_(ptr noundef nonnull @.str.1, ptr noundef %0, ptr noundef nonnull %3, ptr noundef nonnull %26, ptr noundef nonnull %25, 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 %21) #5
  %118 = load i32, ptr %21, align 4, !tbaa !5
  %119 = icmp sgt i32 %118, 0
  br i1 %119, label %120, label %121

120:                                              ; preds = %116
  store i32 %118, ptr %14, align 4, !tbaa !5
  br label %121

121:                                              ; preds = %120, %116
  br i1 %.not208, label %135, label %122

122:                                              ; preds = %121
  %123 = load i32, ptr %14, align 4, !tbaa !5
  %124 = icmp eq i32 %123, 0
  br i1 %124, label %125, label %135

125:                                              ; preds = %122
  br i1 %.not214228, label %127, label %126

126:                                              ; preds = %125
  call void @clascl_(ptr noundef nonnull @.str.9, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %22, ptr noundef nonnull %17, ptr noundef nonnull %3, ptr noundef nonnull @c__1, ptr noundef %7, ptr noundef nonnull %3, ptr noundef nonnull %18) #5
  br label %127

127:                                              ; preds = %126, %125
  %128 = load i32, ptr %3, align 4, !tbaa !5
  store i32 %128, ptr %16, align 4, !tbaa !5
  %.not216236 = icmp slt i32 %128, 1
  br i1 %.not216236, label %._crit_edge, label %.lr.ph

.lr.ph:                                           ; preds = %127, %.lr.ph
  %indvars.iv = phi i64 [ %indvars.iv.next, %.lr.ph ], [ 1, %127 ]
  %129 = getelementptr inbounds %struct.complex, ptr %29, i64 %indvars.iv
  %130 = call i32 (ptr, ...) %2(ptr noundef nonnull %129) #5
  %131 = getelementptr inbounds i32, ptr %31, i64 %indvars.iv
  store i32 %130, ptr %131, align 4, !tbaa !5
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %132 = load i32, ptr %16, align 4, !tbaa !5
  %133 = sext i32 %132 to i64
  %.not216.not = icmp slt i64 %indvars.iv, %133
  br i1 %.not216.not, label %.lr.ph, label %._crit_edge, !llvm.loop !14

._crit_edge:                                      ; preds = %.lr.ph, %127
  %134 = load i32, ptr %11, align 4, !tbaa !5
  store i32 %134, ptr %16, align 4, !tbaa !5
  call void @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 %19, ptr noundef nonnull %28, ptr noundef nonnull %10, ptr noundef nonnull %16, ptr noundef nonnull %20) #5
  br label %135

135:                                              ; preds = %._crit_edge, %122, %121
  br i1 %.not, label %136, label %137

136:                                              ; preds = %135
  call void @cgebak_(ptr noundef nonnull @.str.7, ptr noundef nonnull @.str.11, ptr noundef nonnull %3, ptr noundef nonnull %26, ptr noundef nonnull %25, ptr noundef %12, ptr noundef nonnull %3, ptr noundef %8, ptr noundef nonnull %9, ptr noundef nonnull %18) #5
  br label %137

137:                                              ; preds = %136, %135
  br i1 %.not214228, label %141, label %138

138:                                              ; preds = %137
  call void @clascl_(ptr noundef nonnull @.str.12, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %22, ptr noundef nonnull %17, ptr noundef nonnull %3, ptr noundef nonnull %3, ptr noundef %4, ptr noundef nonnull %5, ptr noundef nonnull %18) #5
  %139 = load i32, ptr %5, align 4, !tbaa !5
  %140 = add nsw i32 %139, 1
  store i32 %140, ptr %16, align 4, !tbaa !5
  call void @ccopy_(ptr noundef nonnull %3, ptr noundef %4, ptr noundef nonnull %16, ptr noundef %7, ptr noundef nonnull @c__1) #5
  br label %141

141:                                              ; preds = %138, %137
  store float %75, ptr %10, align 4, !tbaa !9
  store float 0.000000e+00, ptr %76, align 4, !tbaa !12
  br label %142

142:                                              ; preds = %82, %141, %86, %.thread221
  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 4, ptr nonnull %25) #5
  call void @llvm.lifetime.end.p0(i64 4, 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 4, ptr nonnull %21) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %20) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %19) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %18) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %17) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %16) #5
  ret void
}

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

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

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

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

declare float @slamch_(ptr noundef) local_unnamed_addr #2

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

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

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

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

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

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

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

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 = !{!"int", !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,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,PostOrderFunctionAttrsPass,ReassociatePass,SROAPass,SimplifyCFGPass,TailCallElimPass