; LLVM IR from OpenMathLib/OpenBLAS :: lapack-netlib/SRC (cggev3)

; 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
@c_n1 = external hidden global i32, align 4
@.str.2 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [2 x i8], align 1
@c__1 = external hidden global i32, align 4
@.str.4 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [8 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
@c__0 = external hidden global i32, align 4
@.str.10 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [5 x i8], align 1
@c_b1 = external hidden global %struct.complex, align 4
@c_b2 = external hidden global %struct.complex, align 4
@.str.12 = external hidden unnamed_addr constant [2 x i8], align 1

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

138:                                              ; preds = %17
  store i32 1, ptr %72, align 4, !tbaa !9
  store i32 0, ptr %57, align 4, !tbaa !9
  br label %146

139:                                              ; preds = %17
  %140 = load ptr, ptr %18, align 8, !tbaa !5
  %141 = call i32 @lsame_(ptr noundef %140, ptr noundef @.str.1)
  %142 = icmp ne i32 %141, 0
  br i1 %142, label %143, label %144

143:                                              ; preds = %139
  store i32 2, ptr %72, align 4, !tbaa !9
  store i32 1, ptr %57, align 4, !tbaa !9
  br label %145

144:                                              ; preds = %139
  store i32 -1, ptr %72, align 4, !tbaa !9
  store i32 0, ptr %57, align 4, !tbaa !9
  br label %145

145:                                              ; preds = %144, %143
  br label %146

146:                                              ; preds = %145, %138
  %147 = load ptr, ptr %19, align 8, !tbaa !5
  %148 = call i32 @lsame_(ptr noundef %147, ptr noundef @.str)
  %149 = icmp ne i32 %148, 0
  br i1 %149, label %150, label %151

150:                                              ; preds = %146
  store i32 1, ptr %74, align 4, !tbaa !9
  store i32 0, ptr %58, align 4, !tbaa !9
  br label %158

151:                                              ; preds = %146
  %152 = load ptr, ptr %19, align 8, !tbaa !5
  %153 = call i32 @lsame_(ptr noundef %152, ptr noundef @.str.1)
  %154 = icmp ne i32 %153, 0
  br i1 %154, label %155, label %156

155:                                              ; preds = %151
  store i32 2, ptr %74, align 4, !tbaa !9
  store i32 1, ptr %58, align 4, !tbaa !9
  br label %157

156:                                              ; preds = %151
  store i32 -1, ptr %74, align 4, !tbaa !9
  store i32 0, ptr %58, align 4, !tbaa !9
  br label %157

157:                                              ; preds = %156, %155
  br label %158

158:                                              ; preds = %157, %150
  %159 = load i32, ptr %57, align 4, !tbaa !9
  %160 = icmp ne i32 %159, 0
  br i1 %160, label %164, label %161

161:                                              ; preds = %158
  %162 = load i32, ptr %58, align 4, !tbaa !9
  %163 = icmp ne i32 %162, 0
  br label %164

164:                                              ; preds = %161, %158
  %165 = phi i1 [ true, %158 ], [ %163, %161 ]
  %166 = zext i1 %165 to i32
  store i32 %166, ptr %83, align 4, !tbaa !9
  %167 = load ptr, ptr %34, align 8, !tbaa !5
  store i32 0, ptr %167, align 4, !tbaa !9
  %168 = load ptr, ptr %32, align 8, !tbaa !5
  %169 = load i32, ptr %168, align 4, !tbaa !9
  %170 = icmp eq i32 %169, -1
  %171 = zext i1 %170 to i32
  store i32 %171, ptr %79, align 4, !tbaa !9
  %172 = load i32, ptr %72, align 4, !tbaa !9
  %173 = icmp sle i32 %172, 0
  br i1 %173, label %174, label %176

174:                                              ; preds = %164
  %175 = load ptr, ptr %34, align 8, !tbaa !5
  store i32 -1, ptr %175, align 4, !tbaa !9
  br label %275

176:                                              ; preds = %164
  %177 = load i32, ptr %74, align 4, !tbaa !9
  %178 = icmp sle i32 %177, 0
  br i1 %178, label %179, label %181

179:                                              ; preds = %176
  %180 = load ptr, ptr %34, align 8, !tbaa !5
  store i32 -2, ptr %180, align 4, !tbaa !9
  br label %274

181:                                              ; preds = %176
  %182 = load ptr, ptr %20, align 8, !tbaa !5
  %183 = load i32, ptr %182, align 4, !tbaa !9
  %184 = icmp slt i32 %183, 0
  br i1 %184, label %185, label %187

185:                                              ; preds = %181
  %186 = load ptr, ptr %34, align 8, !tbaa !5
  store i32 -3, ptr %186, align 4, !tbaa !9
  br label %273

187:                                              ; preds = %181
  %188 = load ptr, ptr %22, align 8, !tbaa !5
  %189 = load i32, ptr %188, align 4, !tbaa !9
  %190 = load ptr, ptr %20, align 8, !tbaa !5
  %191 = load i32, ptr %190, align 4, !tbaa !9
  %192 = icmp sge i32 1, %191
  br i1 %192, label %193, label %194

193:                                              ; preds = %187
  br label %197

194:                                              ; preds = %187
  %195 = load ptr, ptr %20, align 8, !tbaa !5
  %196 = load i32, ptr %195, align 4, !tbaa !9
  br label %197

197:                                              ; preds = %194, %193
  %198 = phi i32 [ 1, %193 ], [ %196, %194 ]
  %199 = icmp slt i32 %189, %198
  br i1 %199, label %200, label %202

200:                                              ; preds = %197
  %201 = load ptr, ptr %34, align 8, !tbaa !5
  store i32 -5, ptr %201, align 4, !tbaa !9
  br label %272

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

208:                                              ; preds = %202
  br label %212

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

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

215:                                              ; preds = %212
  %216 = load ptr, ptr %34, align 8, !tbaa !5
  store i32 -7, ptr %216, align 4, !tbaa !9
  br label %271

217:                                              ; preds = %212
  %218 = load ptr, ptr %28, align 8, !tbaa !5
  %219 = load i32, ptr %218, align 4, !tbaa !9
  %220 = icmp slt i32 %219, 1
  br i1 %220, label %230, label %221

221:                                              ; preds = %217
  %222 = load i32, ptr %57, align 4, !tbaa !9
  %223 = icmp ne i32 %222, 0
  br i1 %223, label %224, label %232

224:                                              ; preds = %221
  %225 = load ptr, ptr %28, align 8, !tbaa !5
  %226 = load i32, ptr %225, align 4, !tbaa !9
  %227 = load ptr, ptr %20, align 8, !tbaa !5
  %228 = load i32, ptr %227, align 4, !tbaa !9
  %229 = icmp slt i32 %226, %228
  br i1 %229, label %230, label %232

230:                                              ; preds = %224, %217
  %231 = load ptr, ptr %34, align 8, !tbaa !5
  store i32 -11, ptr %231, align 4, !tbaa !9
  br label %270

232:                                              ; preds = %224, %221
  %233 = load ptr, ptr %30, align 8, !tbaa !5
  %234 = load i32, ptr %233, align 4, !tbaa !9
  %235 = icmp slt i32 %234, 1
  br i1 %235, label %245, label %236

236:                                              ; preds = %232
  %237 = load i32, ptr %58, align 4, !tbaa !9
  %238 = icmp ne i32 %237, 0
  br i1 %238, label %239, label %247

239:                                              ; preds = %236
  %240 = load ptr, ptr %30, align 8, !tbaa !5
  %241 = load i32, ptr %240, align 4, !tbaa !9
  %242 = load ptr, ptr %20, align 8, !tbaa !5
  %243 = load i32, ptr %242, align 4, !tbaa !9
  %244 = icmp slt i32 %241, %243
  br i1 %244, label %245, label %247

245:                                              ; preds = %239, %232
  %246 = load ptr, ptr %34, align 8, !tbaa !5
  store i32 -13, ptr %246, align 4, !tbaa !9
  br label %269

247:                                              ; preds = %239, %236
  store i32 1, ptr %43, align 4, !tbaa !9
  %248 = load ptr, ptr %20, align 8, !tbaa !5
  %249 = load i32, ptr %248, align 4, !tbaa !9
  %250 = shl i32 %249, 1
  store i32 %250, ptr %44, align 4, !tbaa !9
  %251 = load ptr, ptr %32, align 8, !tbaa !5
  %252 = load i32, ptr %251, align 4, !tbaa !9
  %253 = load i32, ptr %43, align 4, !tbaa !9
  %254 = load i32, ptr %44, align 4, !tbaa !9
  %255 = icmp sge i32 %253, %254
  br i1 %255, label %256, label %258

256:                                              ; preds = %247
  %257 = load i32, ptr %43, align 4, !tbaa !9
  br label %260

258:                                              ; preds = %247
  %259 = load i32, ptr %44, align 4, !tbaa !9
  br label %260

260:                                              ; preds = %258, %256
  %261 = phi i32 [ %257, %256 ], [ %259, %258 ]
  %262 = icmp slt i32 %252, %261
  br i1 %262, label %263, label %268

263:                                              ; preds = %260
  %264 = load i32, ptr %79, align 4, !tbaa !9
  %265 = icmp ne i32 %264, 0
  br i1 %265, label %268, label %266

266:                                              ; preds = %263
  %267 = load ptr, ptr %34, align 8, !tbaa !5
  store i32 -15, ptr %267, align 4, !tbaa !9
  br label %268

268:                                              ; preds = %266, %263, %260
  br label %269

269:                                              ; preds = %268, %245
  br label %270

270:                                              ; preds = %269, %230
  br label %271

271:                                              ; preds = %270, %215
  br label %272

272:                                              ; preds = %271, %200
  br label %273

273:                                              ; preds = %272, %185
  br label %274

274:                                              ; preds = %273, %179
  br label %275

275:                                              ; preds = %274, %174
  %276 = load ptr, ptr %34, align 8, !tbaa !5
  %277 = load i32, ptr %276, align 4, !tbaa !9
  %278 = icmp eq i32 %277, 0
  br i1 %278, label %279, label %584

279:                                              ; preds = %275
  %280 = load ptr, ptr %20, align 8, !tbaa !5
  %281 = load ptr, ptr %20, align 8, !tbaa !5
  %282 = load ptr, ptr %23, align 8, !tbaa !5
  %283 = load i32, ptr %38, align 4, !tbaa !9
  %284 = sext i32 %283 to i64
  %285 = getelementptr inbounds %struct.complex, ptr %282, i64 %284
  %286 = load ptr, ptr %24, align 8, !tbaa !5
  %287 = load ptr, ptr %31, align 8, !tbaa !5
  %288 = getelementptr inbounds %struct.complex, ptr %287, i64 1
  %289 = load ptr, ptr %31, align 8, !tbaa !5
  %290 = getelementptr inbounds %struct.complex, ptr %289, i64 1
  call void @cgeqrf_(ptr noundef %280, ptr noundef %281, ptr noundef %285, ptr noundef %286, ptr noundef %288, ptr noundef %290, ptr noundef @c_n1, ptr noundef %54)
  %291 = load ptr, ptr %20, align 8, !tbaa !5
  %292 = load i32, ptr %291, align 4, !tbaa !9
  store i32 %292, ptr %43, align 4, !tbaa !9
  %293 = load ptr, ptr %20, align 8, !tbaa !5
  %294 = load i32, ptr %293, align 4, !tbaa !9
  %295 = load ptr, ptr %31, align 8, !tbaa !5
  %296 = getelementptr inbounds %struct.complex, ptr %295, i64 1
  %297 = getelementptr inbounds %struct.complex, ptr %296, i32 0, i32 0
  %298 = load float, ptr %297, align 4, !tbaa !11
  %299 = fptosi float %298 to i32
  %300 = add nsw i32 %294, %299
  store i32 %300, ptr %44, align 4, !tbaa !9
  %301 = load i32, ptr %43, align 4, !tbaa !9
  %302 = load i32, ptr %44, align 4, !tbaa !9
  %303 = icmp sge i32 %301, %302
  br i1 %303, label %304, label %306

304:                                              ; preds = %279
  %305 = load i32, ptr %43, align 4, !tbaa !9
  br label %308

306:                                              ; preds = %279
  %307 = load i32, ptr %44, align 4, !tbaa !9
  br label %308

308:                                              ; preds = %306, %304
  %309 = phi i32 [ %305, %304 ], [ %307, %306 ]
  store i32 %309, ptr %78, align 4, !tbaa !9
  %310 = load ptr, ptr %20, align 8, !tbaa !5
  %311 = load ptr, ptr %20, align 8, !tbaa !5
  %312 = load ptr, ptr %20, align 8, !tbaa !5
  %313 = load ptr, ptr %23, align 8, !tbaa !5
  %314 = load i32, ptr %38, align 4, !tbaa !9
  %315 = sext i32 %314 to i64
  %316 = getelementptr inbounds %struct.complex, ptr %313, i64 %315
  %317 = load ptr, ptr %24, align 8, !tbaa !5
  %318 = load ptr, ptr %31, align 8, !tbaa !5
  %319 = getelementptr inbounds %struct.complex, ptr %318, i64 1
  %320 = load ptr, ptr %21, align 8, !tbaa !5
  %321 = load i32, ptr %36, align 4, !tbaa !9
  %322 = sext i32 %321 to i64
  %323 = getelementptr inbounds %struct.complex, ptr %320, i64 %322
  %324 = load ptr, ptr %22, align 8, !tbaa !5
  %325 = load ptr, ptr %31, align 8, !tbaa !5
  %326 = getelementptr inbounds %struct.complex, ptr %325, i64 1
  call void @cunmqr_(ptr noundef @.str.2, ptr noundef @.str.3, ptr noundef %310, ptr noundef %311, ptr noundef %312, ptr noundef %316, ptr noundef %317, ptr noundef %319, ptr noundef %323, ptr noundef %324, ptr noundef %326, ptr noundef @c_n1, ptr noundef %54)
  %327 = load i32, ptr %78, align 4, !tbaa !9
  store i32 %327, ptr %43, align 4, !tbaa !9
  %328 = load ptr, ptr %20, align 8, !tbaa !5
  %329 = load i32, ptr %328, align 4, !tbaa !9
  %330 = load ptr, ptr %31, align 8, !tbaa !5
  %331 = getelementptr inbounds %struct.complex, ptr %330, i64 1
  %332 = getelementptr inbounds %struct.complex, ptr %331, i32 0, i32 0
  %333 = load float, ptr %332, align 4, !tbaa !11
  %334 = fptosi float %333 to i32
  %335 = add nsw i32 %329, %334
  store i32 %335, ptr %44, align 4, !tbaa !9
  %336 = load i32, ptr %43, align 4, !tbaa !9
  %337 = load i32, ptr %44, align 4, !tbaa !9
  %338 = icmp sge i32 %336, %337
  br i1 %338, label %339, label %341

339:                                              ; preds = %308
  %340 = load i32, ptr %43, align 4, !tbaa !9
  br label %343

341:                                              ; preds = %308
  %342 = load i32, ptr %44, align 4, !tbaa !9
  br label %343

343:                                              ; preds = %341, %339
  %344 = phi i32 [ %340, %339 ], [ %342, %341 ]
  store i32 %344, ptr %78, align 4, !tbaa !9
  %345 = load i32, ptr %57, align 4, !tbaa !9
  %346 = icmp ne i32 %345, 0
  br i1 %346, label %347, label %378

347:                                              ; preds = %343
  %348 = load ptr, ptr %20, align 8, !tbaa !5
  %349 = load ptr, ptr %20, align 8, !tbaa !5
  %350 = load ptr, ptr %20, align 8, !tbaa !5
  %351 = load ptr, ptr %27, align 8, !tbaa !5
  %352 = load i32, ptr %40, align 4, !tbaa !9
  %353 = sext i32 %352 to i64
  %354 = getelementptr inbounds %struct.complex, ptr %351, i64 %353
  %355 = load ptr, ptr %28, align 8, !tbaa !5
  %356 = load ptr, ptr %31, align 8, !tbaa !5
  %357 = getelementptr inbounds %struct.complex, ptr %356, i64 1
  %358 = load ptr, ptr %31, align 8, !tbaa !5
  %359 = getelementptr inbounds %struct.complex, ptr %358, i64 1
  call void @cungqr_(ptr noundef %348, ptr noundef %349, ptr noundef %350, ptr noundef %354, ptr noundef %355, ptr noundef %357, ptr noundef %359, ptr noundef @c_n1, ptr noundef %54)
  %360 = load i32, ptr %78, align 4, !tbaa !9
  store i32 %360, ptr %43, align 4, !tbaa !9
  %361 = load ptr, ptr %20, align 8, !tbaa !5
  %362 = load i32, ptr %361, align 4, !tbaa !9
  %363 = load ptr, ptr %31, align 8, !tbaa !5
  %364 = getelementptr inbounds %struct.complex, ptr %363, i64 1
  %365 = getelementptr inbounds %struct.complex, ptr %364, i32 0, i32 0
  %366 = load float, ptr %365, align 4, !tbaa !11
  %367 = fptosi float %366 to i32
  %368 = add nsw i32 %362, %367
  store i32 %368, ptr %44, align 4, !tbaa !9
  %369 = load i32, ptr %43, align 4, !tbaa !9
  %370 = load i32, ptr %44, align 4, !tbaa !9
  %371 = icmp sge i32 %369, %370
  br i1 %371, label %372, label %374

372:                                              ; preds = %347
  %373 = load i32, ptr %43, align 4, !tbaa !9
  br label %376

374:                                              ; preds = %347
  %375 = load i32, ptr %44, align 4, !tbaa !9
  br label %376

376:                                              ; preds = %374, %372
  %377 = phi i32 [ %373, %372 ], [ %375, %374 ]
  store i32 %377, ptr %78, align 4, !tbaa !9
  br label %378

378:                                              ; preds = %376, %343
  %379 = load i32, ptr %83, align 4, !tbaa !9
  %380 = icmp ne i32 %379, 0
  br i1 %380, label %381, label %476

381:                                              ; preds = %378
  %382 = load ptr, ptr %18, align 8, !tbaa !5
  %383 = load ptr, ptr %19, align 8, !tbaa !5
  %384 = load ptr, ptr %20, align 8, !tbaa !5
  %385 = load ptr, ptr %20, align 8, !tbaa !5
  %386 = load ptr, ptr %21, align 8, !tbaa !5
  %387 = load i32, ptr %36, align 4, !tbaa !9
  %388 = sext i32 %387 to i64
  %389 = getelementptr inbounds %struct.complex, ptr %386, i64 %388
  %390 = load ptr, ptr %22, align 8, !tbaa !5
  %391 = load ptr, ptr %23, align 8, !tbaa !5
  %392 = load i32, ptr %38, align 4, !tbaa !9
  %393 = sext i32 %392 to i64
  %394 = getelementptr inbounds %struct.complex, ptr %391, i64 %393
  %395 = load ptr, ptr %24, align 8, !tbaa !5
  %396 = load ptr, ptr %27, align 8, !tbaa !5
  %397 = load i32, ptr %40, align 4, !tbaa !9
  %398 = sext i32 %397 to i64
  %399 = getelementptr inbounds %struct.complex, ptr %396, i64 %398
  %400 = load ptr, ptr %28, align 8, !tbaa !5
  %401 = load ptr, ptr %29, align 8, !tbaa !5
  %402 = load i32, ptr %42, align 4, !tbaa !9
  %403 = sext i32 %402 to i64
  %404 = getelementptr inbounds %struct.complex, ptr %401, i64 %403
  %405 = load ptr, ptr %30, align 8, !tbaa !5
  %406 = load ptr, ptr %31, align 8, !tbaa !5
  %407 = getelementptr inbounds %struct.complex, ptr %406, i64 1
  call void @cgghd3_(ptr noundef %382, ptr noundef %383, ptr noundef %384, ptr noundef @c__1, ptr noundef %385, ptr noundef %389, ptr noundef %390, ptr noundef %394, ptr noundef %395, ptr noundef %399, ptr noundef %400, ptr noundef %404, ptr noundef %405, ptr noundef %407, ptr noundef @c_n1, ptr noundef %54)
  %408 = load i32, ptr %78, align 4, !tbaa !9
  store i32 %408, ptr %43, align 4, !tbaa !9
  %409 = load ptr, ptr %20, align 8, !tbaa !5
  %410 = load i32, ptr %409, align 4, !tbaa !9
  %411 = load ptr, ptr %31, align 8, !tbaa !5
  %412 = getelementptr inbounds %struct.complex, ptr %411, i64 1
  %413 = getelementptr inbounds %struct.complex, ptr %412, i32 0, i32 0
  %414 = load float, ptr %413, align 4, !tbaa !11
  %415 = fptosi float %414 to i32
  %416 = add nsw i32 %410, %415
  store i32 %416, ptr %44, align 4, !tbaa !9
  %417 = load i32, ptr %43, align 4, !tbaa !9
  %418 = load i32, ptr %44, align 4, !tbaa !9
  %419 = icmp sge i32 %417, %418
  br i1 %419, label %420, label %422

420:                                              ; preds = %381
  %421 = load i32, ptr %43, align 4, !tbaa !9
  br label %424

422:                                              ; preds = %381
  %423 = load i32, ptr %44, align 4, !tbaa !9
  br label %424

424:                                              ; preds = %422, %420
  %425 = phi i32 [ %421, %420 ], [ %423, %422 ]
  store i32 %425, ptr %78, align 4, !tbaa !9
  %426 = load ptr, ptr %18, align 8, !tbaa !5
  %427 = load ptr, ptr %19, align 8, !tbaa !5
  %428 = load ptr, ptr %20, align 8, !tbaa !5
  %429 = load ptr, ptr %20, align 8, !tbaa !5
  %430 = load ptr, ptr %21, align 8, !tbaa !5
  %431 = load i32, ptr %36, align 4, !tbaa !9
  %432 = sext i32 %431 to i64
  %433 = getelementptr inbounds %struct.complex, ptr %430, i64 %432
  %434 = load ptr, ptr %22, align 8, !tbaa !5
  %435 = load ptr, ptr %23, align 8, !tbaa !5
  %436 = load i32, ptr %38, align 4, !tbaa !9
  %437 = sext i32 %436 to i64
  %438 = getelementptr inbounds %struct.complex, ptr %435, i64 %437
  %439 = load ptr, ptr %24, align 8, !tbaa !5
  %440 = load ptr, ptr %25, align 8, !tbaa !5
  %441 = getelementptr inbounds %struct.complex, ptr %440, i64 1
  %442 = load ptr, ptr %26, align 8, !tbaa !5
  %443 = getelementptr inbounds %struct.complex, ptr %442, i64 1
  %444 = load ptr, ptr %27, align 8, !tbaa !5
  %445 = load i32, ptr %40, align 4, !tbaa !9
  %446 = sext i32 %445 to i64
  %447 = getelementptr inbounds %struct.complex, ptr %444, i64 %446
  %448 = load ptr, ptr %28, align 8, !tbaa !5
  %449 = load ptr, ptr %29, align 8, !tbaa !5
  %450 = load i32, ptr %42, align 4, !tbaa !9
  %451 = sext i32 %450 to i64
  %452 = getelementptr inbounds %struct.complex, ptr %449, i64 %451
  %453 = load ptr, ptr %30, align 8, !tbaa !5
  %454 = load ptr, ptr %31, align 8, !tbaa !5
  %455 = getelementptr inbounds %struct.complex, ptr %454, i64 1
  %456 = load ptr, ptr %33, align 8, !tbaa !5
  %457 = getelementptr inbounds float, ptr %456, i64 1
  call void @chgeqz_(ptr noundef @.str.4, ptr noundef %426, ptr noundef %427, ptr noundef %428, ptr noundef @c__1, ptr noundef %429, ptr noundef %433, ptr noundef %434, ptr noundef %438, ptr noundef %439, ptr noundef %441, ptr noundef %443, ptr noundef %447, ptr noundef %448, ptr noundef %452, ptr noundef %453, ptr noundef %455, ptr noundef @c_n1, ptr noundef %457, ptr noundef %54)
  %458 = load i32, ptr %78, align 4, !tbaa !9
  store i32 %458, ptr %43, align 4, !tbaa !9
  %459 = load ptr, ptr %20, align 8, !tbaa !5
  %460 = load i32, ptr %459, align 4, !tbaa !9
  %461 = load ptr, ptr %31, align 8, !tbaa !5
  %462 = getelementptr inbounds %struct.complex, ptr %461, i64 1
  %463 = getelementptr inbounds %struct.complex, ptr %462, i32 0, i32 0
  %464 = load float, ptr %463, align 4, !tbaa !11
  %465 = fptosi float %464 to i32
  %466 = add nsw i32 %460, %465
  store i32 %466, ptr %44, align 4, !tbaa !9
  %467 = load i32, ptr %43, align 4, !tbaa !9
  %468 = load i32, ptr %44, align 4, !tbaa !9
  %469 = icmp sge i32 %467, %468
  br i1 %469, label %470, label %472

470:                                              ; preds = %424
  %471 = load i32, ptr %43, align 4, !tbaa !9
  br label %474

472:                                              ; preds = %424
  %473 = load i32, ptr %44, align 4, !tbaa !9
  br label %474

474:                                              ; preds = %472, %470
  %475 = phi i32 [ %471, %470 ], [ %473, %472 ]
  store i32 %475, ptr %78, align 4, !tbaa !9
  br label %569

476:                                              ; preds = %378
  %477 = load ptr, ptr %20, align 8, !tbaa !5
  %478 = load ptr, ptr %20, align 8, !tbaa !5
  %479 = load ptr, ptr %21, align 8, !tbaa !5
  %480 = load i32, ptr %36, align 4, !tbaa !9
  %481 = sext i32 %480 to i64
  %482 = getelementptr inbounds %struct.complex, ptr %479, i64 %481
  %483 = load ptr, ptr %22, align 8, !tbaa !5
  %484 = load ptr, ptr %23, align 8, !tbaa !5
  %485 = load i32, ptr %38, align 4, !tbaa !9
  %486 = sext i32 %485 to i64
  %487 = getelementptr inbounds %struct.complex, ptr %484, i64 %486
  %488 = load ptr, ptr %24, align 8, !tbaa !5
  %489 = load ptr, ptr %27, align 8, !tbaa !5
  %490 = load i32, ptr %40, align 4, !tbaa !9
  %491 = sext i32 %490 to i64
  %492 = getelementptr inbounds %struct.complex, ptr %489, i64 %491
  %493 = load ptr, ptr %28, align 8, !tbaa !5
  %494 = load ptr, ptr %29, align 8, !tbaa !5
  %495 = load i32, ptr %42, align 4, !tbaa !9
  %496 = sext i32 %495 to i64
  %497 = getelementptr inbounds %struct.complex, ptr %494, i64 %496
  %498 = load ptr, ptr %30, align 8, !tbaa !5
  %499 = load ptr, ptr %31, align 8, !tbaa !5
  %500 = getelementptr inbounds %struct.complex, ptr %499, i64 1
  call void @cgghd3_(ptr noundef @.str, ptr noundef @.str, ptr noundef %477, ptr noundef @c__1, ptr noundef %478, ptr noundef %482, ptr noundef %483, ptr noundef %487, ptr noundef %488, ptr noundef %492, ptr noundef %493, ptr noundef %497, ptr noundef %498, ptr noundef %500, ptr noundef @c_n1, ptr noundef %54)
  %501 = load i32, ptr %78, align 4, !tbaa !9
  store i32 %501, ptr %43, align 4, !tbaa !9
  %502 = load ptr, ptr %20, align 8, !tbaa !5
  %503 = load i32, ptr %502, align 4, !tbaa !9
  %504 = load ptr, ptr %31, align 8, !tbaa !5
  %505 = getelementptr inbounds %struct.complex, ptr %504, i64 1
  %506 = getelementptr inbounds %struct.complex, ptr %505, i32 0, i32 0
  %507 = load float, ptr %506, align 4, !tbaa !11
  %508 = fptosi float %507 to i32
  %509 = add nsw i32 %503, %508
  store i32 %509, ptr %44, align 4, !tbaa !9
  %510 = load i32, ptr %43, align 4, !tbaa !9
  %511 = load i32, ptr %44, align 4, !tbaa !9
  %512 = icmp sge i32 %510, %511
  br i1 %512, label %513, label %515

513:                                              ; preds = %476
  %514 = load i32, ptr %43, align 4, !tbaa !9
  br label %517

515:                                              ; preds = %476
  %516 = load i32, ptr %44, align 4, !tbaa !9
  br label %517

517:                                              ; preds = %515, %513
  %518 = phi i32 [ %514, %513 ], [ %516, %515 ]
  store i32 %518, ptr %78, align 4, !tbaa !9
  %519 = load ptr, ptr %18, align 8, !tbaa !5
  %520 = load ptr, ptr %19, align 8, !tbaa !5
  %521 = load ptr, ptr %20, align 8, !tbaa !5
  %522 = load ptr, ptr %20, align 8, !tbaa !5
  %523 = load ptr, ptr %21, align 8, !tbaa !5
  %524 = load i32, ptr %36, align 4, !tbaa !9
  %525 = sext i32 %524 to i64
  %526 = getelementptr inbounds %struct.complex, ptr %523, i64 %525
  %527 = load ptr, ptr %22, align 8, !tbaa !5
  %528 = load ptr, ptr %23, align 8, !tbaa !5
  %529 = load i32, ptr %38, align 4, !tbaa !9
  %530 = sext i32 %529 to i64
  %531 = getelementptr inbounds %struct.complex, ptr %528, i64 %530
  %532 = load ptr, ptr %24, align 8, !tbaa !5
  %533 = load ptr, ptr %25, align 8, !tbaa !5
  %534 = getelementptr inbounds %struct.complex, ptr %533, i64 1
  %535 = load ptr, ptr %26, align 8, !tbaa !5
  %536 = getelementptr inbounds %struct.complex, ptr %535, i64 1
  %537 = load ptr, ptr %27, align 8, !tbaa !5
  %538 = load i32, ptr %40, align 4, !tbaa !9
  %539 = sext i32 %538 to i64
  %540 = getelementptr inbounds %struct.complex, ptr %537, i64 %539
  %541 = load ptr, ptr %28, align 8, !tbaa !5
  %542 = load ptr, ptr %29, align 8, !tbaa !5
  %543 = load i32, ptr %42, align 4, !tbaa !9
  %544 = sext i32 %543 to i64
  %545 = getelementptr inbounds %struct.complex, ptr %542, i64 %544
  %546 = load ptr, ptr %30, align 8, !tbaa !5
  %547 = load ptr, ptr %31, align 8, !tbaa !5
  %548 = getelementptr inbounds %struct.complex, ptr %547, i64 1
  %549 = load ptr, ptr %33, align 8, !tbaa !5
  %550 = getelementptr inbounds float, ptr %549, i64 1
  call void @chgeqz_(ptr noundef @.str.5, ptr noundef %519, ptr noundef %520, ptr noundef %521, ptr noundef @c__1, ptr noundef %522, ptr noundef %526, ptr noundef %527, ptr noundef %531, ptr noundef %532, ptr noundef %534, ptr noundef %536, ptr noundef %540, ptr noundef %541, ptr noundef %545, ptr noundef %546, ptr noundef %548, ptr noundef @c_n1, ptr noundef %550, ptr noundef %54)
  %551 = load i32, ptr %78, align 4, !tbaa !9
  store i32 %551, ptr %43, align 4, !tbaa !9
  %552 = load ptr, ptr %20, align 8, !tbaa !5
  %553 = load i32, ptr %552, align 4, !tbaa !9
  %554 = load ptr, ptr %31, align 8, !tbaa !5
  %555 = getelementptr inbounds %struct.complex, ptr %554, i64 1
  %556 = getelementptr inbounds %struct.complex, ptr %555, i32 0, i32 0
  %557 = load float, ptr %556, align 4, !tbaa !11
  %558 = fptosi float %557 to i32
  %559 = add nsw i32 %553, %558
  store i32 %559, ptr %44, align 4, !tbaa !9
  %560 = load i32, ptr %43, align 4, !tbaa !9
  %561 = load i32, ptr %44, align 4, !tbaa !9
  %562 = icmp sge i32 %560, %561
  br i1 %562, label %563, label %565

563:                                              ; preds = %517
  %564 = load i32, ptr %43, align 4, !tbaa !9
  br label %567

565:                                              ; preds = %517
  %566 = load i32, ptr %44, align 4, !tbaa !9
  br label %567

567:                                              ; preds = %565, %563
  %568 = phi i32 [ %564, %563 ], [ %566, %565 ]
  store i32 %568, ptr %78, align 4, !tbaa !9
  br label %569

569:                                              ; preds = %567, %474
  %570 = load i32, ptr %78, align 4, !tbaa !9
  %571 = sitofp i32 %570 to float
  %572 = getelementptr inbounds %struct.complex, ptr %51, i32 0, i32 0
  store float %571, ptr %572, align 4, !tbaa !11
  %573 = getelementptr inbounds %struct.complex, ptr %51, i32 0, i32 1
  store float 0.000000e+00, ptr %573, align 4, !tbaa !14
  %574 = getelementptr inbounds %struct.complex, ptr %51, i32 0, i32 0
  %575 = load float, ptr %574, align 4, !tbaa !11
  %576 = load ptr, ptr %31, align 8, !tbaa !5
  %577 = getelementptr inbounds %struct.complex, ptr %576, i64 1
  %578 = getelementptr inbounds %struct.complex, ptr %577, i32 0, i32 0
  store float %575, ptr %578, align 4, !tbaa !11
  %579 = getelementptr inbounds %struct.complex, ptr %51, i32 0, i32 1
  %580 = load float, ptr %579, align 4, !tbaa !14
  %581 = load ptr, ptr %31, align 8, !tbaa !5
  %582 = getelementptr inbounds %struct.complex, ptr %581, i64 1
  %583 = getelementptr inbounds %struct.complex, ptr %582, i32 0, i32 1
  store float %580, ptr %583, align 4, !tbaa !14
  br label %584

584:                                              ; preds = %569, %275
  %585 = load ptr, ptr %34, align 8, !tbaa !5
  %586 = load i32, ptr %585, align 4, !tbaa !9
  %587 = icmp ne i32 %586, 0
  br i1 %587, label %588, label %593

588:                                              ; preds = %584
  %589 = load ptr, ptr %34, align 8, !tbaa !5
  %590 = load i32, ptr %589, align 4, !tbaa !9
  %591 = sub nsw i32 0, %590
  store i32 %591, ptr %43, align 4, !tbaa !9
  %592 = call i32 @xerbla_(ptr noundef @.str.6, ptr noundef %43, i32 noundef 7)
  store i32 1, ptr %84, align 4
  br label %1425

593:                                              ; preds = %584
  %594 = load i32, ptr %79, align 4, !tbaa !9
  %595 = icmp ne i32 %594, 0
  br i1 %595, label %596, label %597

596:                                              ; preds = %593
  store i32 1, ptr %84, align 4
  br label %1425

597:                                              ; preds = %593
  br label %598

598:                                              ; preds = %597
  %599 = load ptr, ptr %20, align 8, !tbaa !5
  %600 = load i32, ptr %599, align 4, !tbaa !9
  %601 = icmp eq i32 %600, 0
  br i1 %601, label %602, label %603

602:                                              ; preds = %598
  store i32 1, ptr %84, align 4
  br label %1425

603:                                              ; preds = %598
  %604 = call float @slamch_(ptr noundef @.str.5)
  %605 = call float @slamch_(ptr noundef @.str.7)
  %606 = fmul float %604, %605
  store float %606, ptr %82, align 4, !tbaa !15
  %607 = call float @slamch_(ptr noundef @.str.4)
  store float %607, ptr %77, align 4, !tbaa !15
  %608 = load float, ptr %77, align 4, !tbaa !15
  %609 = fdiv float 1.000000e+00, %608
  store float %609, ptr %71, align 4, !tbaa !15
  call void @slabad_(ptr noundef %77, ptr noundef %71)
  %610 = load float, ptr %77, align 4, !tbaa !15
  %611 = fpext float %610 to double
  %612 = call double @sqrt(double noundef %611) #5
  %613 = load float, ptr %82, align 4, !tbaa !15
  %614 = fpext float %613 to double
  %615 = fdiv double %612, %614
  %616 = fptrunc double %615 to float
  store float %616, ptr %77, align 4, !tbaa !15
  %617 = load float, ptr %77, align 4, !tbaa !15
  %618 = fdiv float 1.000000e+00, %617
  store float %618, ptr %71, align 4, !tbaa !15
  %619 = load ptr, ptr %20, align 8, !tbaa !5
  %620 = load ptr, ptr %20, align 8, !tbaa !5
  %621 = load ptr, ptr %21, align 8, !tbaa !5
  %622 = load i32, ptr %36, align 4, !tbaa !9
  %623 = sext i32 %622 to i64
  %624 = getelementptr inbounds %struct.complex, ptr %621, i64 %623
  %625 = load ptr, ptr %22, align 8, !tbaa !5
  %626 = load ptr, ptr %33, align 8, !tbaa !5
  %627 = getelementptr inbounds float, ptr %626, i64 1
  %628 = call float @clange_(ptr noundef @.str.8, ptr noundef %619, ptr noundef %620, ptr noundef %624, ptr noundef %625, ptr noundef %627)
  store float %628, ptr %52, align 4, !tbaa !15
  store i32 0, ptr %67, align 4, !tbaa !9
  %629 = load float, ptr %52, align 4, !tbaa !15
  %630 = fcmp ogt float %629, 0.000000e+00
  br i1 %630, label %631, label %637

631:                                              ; preds = %603
  %632 = load float, ptr %52, align 4, !tbaa !15
  %633 = load float, ptr %77, align 4, !tbaa !15
  %634 = fcmp olt float %632, %633
  br i1 %634, label %635, label %637

635:                                              ; preds = %631
  %636 = load float, ptr %77, align 4, !tbaa !15
  store float %636, ptr %75, align 4, !tbaa !15
  store i32 1, ptr %67, align 4, !tbaa !9
  br label %644

637:                                              ; preds = %631, %603
  %638 = load float, ptr %52, align 4, !tbaa !15
  %639 = load float, ptr %71, align 4, !tbaa !15
  %640 = fcmp ogt float %638, %639
  br i1 %640, label %641, label %643

641:                                              ; preds = %637
  %642 = load float, ptr %71, align 4, !tbaa !15
  store float %642, ptr %75, align 4, !tbaa !15
  store i32 1, ptr %67, align 4, !tbaa !9
  br label %643

643:                                              ; preds = %641, %637
  br label %644

644:                                              ; preds = %643, %635
  %645 = load i32, ptr %67, align 4, !tbaa !9
  %646 = icmp ne i32 %645, 0
  br i1 %646, label %647, label %655

647:                                              ; preds = %644
  %648 = load ptr, ptr %20, align 8, !tbaa !5
  %649 = load ptr, ptr %20, align 8, !tbaa !5
  %650 = load ptr, ptr %21, align 8, !tbaa !5
  %651 = load i32, ptr %36, align 4, !tbaa !9
  %652 = sext i32 %651 to i64
  %653 = getelementptr inbounds %struct.complex, ptr %650, i64 %652
  %654 = load ptr, ptr %22, align 8, !tbaa !5
  call void @clascl_(ptr noundef @.str.9, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %52, ptr noundef %75, ptr noundef %648, ptr noundef %649, ptr noundef %653, ptr noundef %654, ptr noundef %54)
  br label %655

655:                                              ; preds = %647, %644
  %656 = load ptr, ptr %20, align 8, !tbaa !5
  %657 = load ptr, ptr %20, align 8, !tbaa !5
  %658 = load ptr, ptr %23, align 8, !tbaa !5
  %659 = load i32, ptr %38, align 4, !tbaa !9
  %660 = sext i32 %659 to i64
  %661 = getelementptr inbounds %struct.complex, ptr %658, i64 %660
  %662 = load ptr, ptr %24, align 8, !tbaa !5
  %663 = load ptr, ptr %33, align 8, !tbaa !5
  %664 = getelementptr inbounds float, ptr %663, i64 1
  %665 = call float @clange_(ptr noundef @.str.8, ptr noundef %656, ptr noundef %657, ptr noundef %661, ptr noundef %662, ptr noundef %664)
  store float %665, ptr %53, align 4, !tbaa !15
  store i32 0, ptr %68, align 4, !tbaa !9
  %666 = load float, ptr %53, align 4, !tbaa !15
  %667 = fcmp ogt float %666, 0.000000e+00
  br i1 %667, label %668, label %674

668:                                              ; preds = %655
  %669 = load float, ptr %53, align 4, !tbaa !15
  %670 = load float, ptr %77, align 4, !tbaa !15
  %671 = fcmp olt float %669, %670
  br i1 %671, label %672, label %674

672:                                              ; preds = %668
  %673 = load float, ptr %77, align 4, !tbaa !15
  store float %673, ptr %76, align 4, !tbaa !15
  store i32 1, ptr %68, align 4, !tbaa !9
  br label %681

674:                                              ; preds = %668, %655
  %675 = load float, ptr %53, align 4, !tbaa !15
  %676 = load float, ptr %71, align 4, !tbaa !15
  %677 = fcmp ogt float %675, %676
  br i1 %677, label %678, label %680

678:                                              ; preds = %674
  %679 = load float, ptr %71, align 4, !tbaa !15
  store float %679, ptr %76, align 4, !tbaa !15
  store i32 1, ptr %68, align 4, !tbaa !9
  br label %680

680:                                              ; preds = %678, %674
  br label %681

681:                                              ; preds = %680, %672
  %682 = load i32, ptr %68, align 4, !tbaa !9
  %683 = icmp ne i32 %682, 0
  br i1 %683, label %684, label %692

684:                                              ; preds = %681
  %685 = load ptr, ptr %20, align 8, !tbaa !5
  %686 = load ptr, ptr %20, align 8, !tbaa !5
  %687 = load ptr, ptr %23, align 8, !tbaa !5
  %688 = load i32, ptr %38, align 4, !tbaa !9
  %689 = sext i32 %688 to i64
  %690 = getelementptr inbounds %struct.complex, ptr %687, i64 %689
  %691 = load ptr, ptr %24, align 8, !tbaa !5
  call void @clascl_(ptr noundef @.str.9, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %53, ptr noundef %76, ptr noundef %685, ptr noundef %686, ptr noundef %690, ptr noundef %691, ptr noundef %54)
  br label %692

692:                                              ; preds = %684, %681
  store i32 1, ptr %60, align 4, !tbaa !9
  %693 = load ptr, ptr %20, align 8, !tbaa !5
  %694 = load i32, ptr %693, align 4, !tbaa !9
  %695 = add nsw i32 %694, 1
  store i32 %695, ptr %73, align 4, !tbaa !9
  %696 = load i32, ptr %73, align 4, !tbaa !9
  %697 = load ptr, ptr %20, align 8, !tbaa !5
  %698 = load i32, ptr %697, align 4, !tbaa !9
  %699 = add nsw i32 %696, %698
  store i32 %699, ptr %62, align 4, !tbaa !9
  %700 = load ptr, ptr %20, align 8, !tbaa !5
  %701 = load ptr, ptr %21, align 8, !tbaa !5
  %702 = load i32, ptr %36, align 4, !tbaa !9
  %703 = sext i32 %702 to i64
  %704 = getelementptr inbounds %struct.complex, ptr %701, i64 %703
  %705 = load ptr, ptr %22, align 8, !tbaa !5
  %706 = load ptr, ptr %23, align 8, !tbaa !5
  %707 = load i32, ptr %38, align 4, !tbaa !9
  %708 = sext i32 %707 to i64
  %709 = getelementptr inbounds %struct.complex, ptr %706, i64 %708
  %710 = load ptr, ptr %24, align 8, !tbaa !5
  %711 = load ptr, ptr %33, align 8, !tbaa !5
  %712 = load i32, ptr %60, align 4, !tbaa !9
  %713 = sext i32 %712 to i64
  %714 = getelementptr inbounds float, ptr %711, i64 %713
  %715 = load ptr, ptr %33, align 8, !tbaa !5
  %716 = load i32, ptr %73, align 4, !tbaa !9
  %717 = sext i32 %716 to i64
  %718 = getelementptr inbounds float, ptr %715, i64 %717
  %719 = load ptr, ptr %33, align 8, !tbaa !5
  %720 = load i32, ptr %62, align 4, !tbaa !9
  %721 = sext i32 %720 to i64
  %722 = getelementptr inbounds float, ptr %719, i64 %721
  call void @cggbal_(ptr noundef @.str.10, ptr noundef %700, ptr noundef %704, ptr noundef %705, ptr noundef %709, ptr noundef %710, ptr noundef %81, ptr noundef %80, ptr noundef %714, ptr noundef %718, ptr noundef %722, ptr noundef %54)
  %723 = load i32, ptr %80, align 4, !tbaa !9
  %724 = add nsw i32 %723, 1
  %725 = load i32, ptr %81, align 4, !tbaa !9
  %726 = sub nsw i32 %724, %725
  store i32 %726, ptr %63, align 4, !tbaa !9
  %727 = load i32, ptr %83, align 4, !tbaa !9
  %728 = icmp ne i32 %727, 0
  br i1 %728, label %729, label %735

729:                                              ; preds = %692
  %730 = load ptr, ptr %20, align 8, !tbaa !5
  %731 = load i32, ptr %730, align 4, !tbaa !9
  %732 = add nsw i32 %731, 1
  %733 = load i32, ptr %81, align 4, !tbaa !9
  %734 = sub nsw i32 %732, %733
  store i32 %734, ptr %61, align 4, !tbaa !9
  br label %737

735:                                              ; preds = %692
  %736 = load i32, ptr %63, align 4, !tbaa !9
  store i32 %736, ptr %61, align 4, !tbaa !9
  br label %737

737:                                              ; preds = %735, %729
  store i32 1, ptr %55, align 4, !tbaa !9
  %738 = load i32, ptr %55, align 4, !tbaa !9
  %739 = load i32, ptr %63, align 4, !tbaa !9
  %740 = add nsw i32 %738, %739
  store i32 %740, ptr %59, align 4, !tbaa !9
  %741 = load ptr, ptr %32, align 8, !tbaa !5
  %742 = load i32, ptr %741, align 4, !tbaa !9
  %743 = add nsw i32 %742, 1
  %744 = load i32, ptr %59, align 4, !tbaa !9
  %745 = sub nsw i32 %743, %744
  store i32 %745, ptr %43, align 4, !tbaa !9
  %746 = load ptr, ptr %23, align 8, !tbaa !5
  %747 = load i32, ptr %81, align 4, !tbaa !9
  %748 = load i32, ptr %81, align 4, !tbaa !9
  %749 = load i32, ptr %37, align 4, !tbaa !9
  %750 = mul nsw i32 %748, %749
  %751 = add nsw i32 %747, %750
  %752 = sext i32 %751 to i64
  %753 = getelementptr inbounds %struct.complex, ptr %746, i64 %752
  %754 = load ptr, ptr %24, align 8, !tbaa !5
  %755 = load ptr, ptr %31, align 8, !tbaa !5
  %756 = load i32, ptr %55, align 4, !tbaa !9
  %757 = sext i32 %756 to i64
  %758 = getelementptr inbounds %struct.complex, ptr %755, i64 %757
  %759 = load ptr, ptr %31, align 8, !tbaa !5
  %760 = load i32, ptr %59, align 4, !tbaa !9
  %761 = sext i32 %760 to i64
  %762 = getelementptr inbounds %struct.complex, ptr %759, i64 %761
  call void @cgeqrf_(ptr noundef %63, ptr noundef %61, ptr noundef %753, ptr noundef %754, ptr noundef %758, ptr noundef %762, ptr noundef %43, ptr noundef %54)
  %763 = load ptr, ptr %32, align 8, !tbaa !5
  %764 = load i32, ptr %763, align 4, !tbaa !9
  %765 = add nsw i32 %764, 1
  %766 = load i32, ptr %59, align 4, !tbaa !9
  %767 = sub nsw i32 %765, %766
  store i32 %767, ptr %43, align 4, !tbaa !9
  %768 = load ptr, ptr %23, align 8, !tbaa !5
  %769 = load i32, ptr %81, align 4, !tbaa !9
  %770 = load i32, ptr %81, align 4, !tbaa !9
  %771 = load i32, ptr %37, align 4, !tbaa !9
  %772 = mul nsw i32 %770, %771
  %773 = add nsw i32 %769, %772
  %774 = sext i32 %773 to i64
  %775 = getelementptr inbounds %struct.complex, ptr %768, i64 %774
  %776 = load ptr, ptr %24, align 8, !tbaa !5
  %777 = load ptr, ptr %31, align 8, !tbaa !5
  %778 = load i32, ptr %55, align 4, !tbaa !9
  %779 = sext i32 %778 to i64
  %780 = getelementptr inbounds %struct.complex, ptr %777, i64 %779
  %781 = load ptr, ptr %21, align 8, !tbaa !5
  %782 = load i32, ptr %81, align 4, !tbaa !9
  %783 = load i32, ptr %81, align 4, !tbaa !9
  %784 = load i32, ptr %35, align 4, !tbaa !9
  %785 = mul nsw i32 %783, %784
  %786 = add nsw i32 %782, %785
  %787 = sext i32 %786 to i64
  %788 = getelementptr inbounds %struct.complex, ptr %781, i64 %787
  %789 = load ptr, ptr %22, align 8, !tbaa !5
  %790 = load ptr, ptr %31, align 8, !tbaa !5
  %791 = load i32, ptr %59, align 4, !tbaa !9
  %792 = sext i32 %791 to i64
  %793 = getelementptr inbounds %struct.complex, ptr %790, i64 %792
  call void @cunmqr_(ptr noundef @.str.2, ptr noundef @.str.3, ptr noundef %63, ptr noundef %61, ptr noundef %63, ptr noundef %775, ptr noundef %776, ptr noundef %780, ptr noundef %788, ptr noundef %789, ptr noundef %793, ptr noundef %43, ptr noundef %54)
  %794 = load i32, ptr %57, align 4, !tbaa !9
  %795 = icmp ne i32 %794, 0
  br i1 %795, label %796, label %854

796:                                              ; preds = %737
  %797 = load ptr, ptr %20, align 8, !tbaa !5
  %798 = load ptr, ptr %20, align 8, !tbaa !5
  %799 = load ptr, ptr %27, align 8, !tbaa !5
  %800 = load i32, ptr %40, align 4, !tbaa !9
  %801 = sext i32 %800 to i64
  %802 = getelementptr inbounds %struct.complex, ptr %799, i64 %801
  %803 = load ptr, ptr %28, align 8, !tbaa !5
  call void @claset_(ptr noundef @.str.11, ptr noundef %797, ptr noundef %798, ptr noundef @c_b1, ptr noundef @c_b2, ptr noundef %802, ptr noundef %803)
  %804 = load i32, ptr %63, align 4, !tbaa !9
  %805 = icmp sgt i32 %804, 1
  br i1 %805, label %806, label %831

806:                                              ; preds = %796
  %807 = load i32, ptr %63, align 4, !tbaa !9
  %808 = sub nsw i32 %807, 1
  store i32 %808, ptr %43, align 4, !tbaa !9
  %809 = load i32, ptr %63, align 4, !tbaa !9
  %810 = sub nsw i32 %809, 1
  store i32 %810, ptr %44, align 4, !tbaa !9
  %811 = load ptr, ptr %23, align 8, !tbaa !5
  %812 = load i32, ptr %81, align 4, !tbaa !9
  %813 = add nsw i32 %812, 1
  %814 = load i32, ptr %81, align 4, !tbaa !9
  %815 = load i32, ptr %37, align 4, !tbaa !9
  %816 = mul nsw i32 %814, %815
  %817 = add nsw i32 %813, %816
  %818 = sext i32 %817 to i64
  %819 = getelementptr inbounds %struct.complex, ptr %811, i64 %818
  %820 = load ptr, ptr %24, align 8, !tbaa !5
  %821 = load ptr, ptr %27, align 8, !tbaa !5
  %822 = load i32, ptr %81, align 4, !tbaa !9
  %823 = add nsw i32 %822, 1
  %824 = load i32, ptr %81, align 4, !tbaa !9
  %825 = load i32, ptr %39, align 4, !tbaa !9
  %826 = mul nsw i32 %824, %825
  %827 = add nsw i32 %823, %826
  %828 = sext i32 %827 to i64
  %829 = getelementptr inbounds %struct.complex, ptr %821, i64 %828
  %830 = load ptr, ptr %28, align 8, !tbaa !5
  call void @clacpy_(ptr noundef @.str.2, ptr noundef %43, ptr noundef %44, ptr noundef %819, ptr noundef %820, ptr noundef %829, ptr noundef %830)
  br label %831

831:                                              ; preds = %806, %796
  %832 = load ptr, ptr %32, align 8, !tbaa !5
  %833 = load i32, ptr %832, align 4, !tbaa !9
  %834 = add nsw i32 %833, 1
  %835 = load i32, ptr %59, align 4, !tbaa !9
  %836 = sub nsw i32 %834, %835
  store i32 %836, ptr %43, align 4, !tbaa !9
  %837 = load ptr, ptr %27, align 8, !tbaa !5
  %838 = load i32, ptr %81, align 4, !tbaa !9
  %839 = load i32, ptr %81, align 4, !tbaa !9
  %840 = load i32, ptr %39, align 4, !tbaa !9
  %841 = mul nsw i32 %839, %840
  %842 = add nsw i32 %838, %841
  %843 = sext i32 %842 to i64
  %844 = getelementptr inbounds %struct.complex, ptr %837, i64 %843
  %845 = load ptr, ptr %28, align 8, !tbaa !5
  %846 = load ptr, ptr %31, align 8, !tbaa !5
  %847 = load i32, ptr %55, align 4, !tbaa !9
  %848 = sext i32 %847 to i64
  %849 = getelementptr inbounds %struct.complex, ptr %846, i64 %848
  %850 = load ptr, ptr %31, align 8, !tbaa !5
  %851 = load i32, ptr %59, align 4, !tbaa !9
  %852 = sext i32 %851 to i64
  %853 = getelementptr inbounds %struct.complex, ptr %850, i64 %852
  call void @cungqr_(ptr noundef %63, ptr noundef %63, ptr noundef %63, ptr noundef %844, ptr noundef %845, ptr noundef %849, ptr noundef %853, ptr noundef %43, ptr noundef %54)
  br label %854

854:                                              ; preds = %831, %737
  %855 = load i32, ptr %58, align 4, !tbaa !9
  %856 = icmp ne i32 %855, 0
  br i1 %856, label %857, label %865

857:                                              ; preds = %854
  %858 = load ptr, ptr %20, align 8, !tbaa !5
  %859 = load ptr, ptr %20, align 8, !tbaa !5
  %860 = load ptr, ptr %29, align 8, !tbaa !5
  %861 = load i32, ptr %42, align 4, !tbaa !9
  %862 = sext i32 %861 to i64
  %863 = getelementptr inbounds %struct.complex, ptr %860, i64 %862
  %864 = load ptr, ptr %30, align 8, !tbaa !5
  call void @claset_(ptr noundef @.str.11, ptr noundef %858, ptr noundef %859, ptr noundef @c_b1, ptr noundef @c_b2, ptr noundef %863, ptr noundef %864)
  br label %865

865:                                              ; preds = %857, %854
  %866 = load i32, ptr %83, align 4, !tbaa !9
  %867 = icmp ne i32 %866, 0
  br i1 %867, label %868, label %901

868:                                              ; preds = %865
  %869 = load ptr, ptr %32, align 8, !tbaa !5
  %870 = load i32, ptr %869, align 4, !tbaa !9
  %871 = add nsw i32 %870, 1
  %872 = load i32, ptr %59, align 4, !tbaa !9
  %873 = sub nsw i32 %871, %872
  store i32 %873, ptr %43, align 4, !tbaa !9
  %874 = load ptr, ptr %18, align 8, !tbaa !5
  %875 = load ptr, ptr %19, align 8, !tbaa !5
  %876 = load ptr, ptr %20, align 8, !tbaa !5
  %877 = load ptr, ptr %21, align 8, !tbaa !5
  %878 = load i32, ptr %36, align 4, !tbaa !9
  %879 = sext i32 %878 to i64
  %880 = getelementptr inbounds %struct.complex, ptr %877, i64 %879
  %881 = load ptr, ptr %22, align 8, !tbaa !5
  %882 = load ptr, ptr %23, align 8, !tbaa !5
  %883 = load i32, ptr %38, align 4, !tbaa !9
  %884 = sext i32 %883 to i64
  %885 = getelementptr inbounds %struct.complex, ptr %882, i64 %884
  %886 = load ptr, ptr %24, align 8, !tbaa !5
  %887 = load ptr, ptr %27, align 8, !tbaa !5
  %888 = load i32, ptr %40, align 4, !tbaa !9
  %889 = sext i32 %888 to i64
  %890 = getelementptr inbounds %struct.complex, ptr %887, i64 %889
  %891 = load ptr, ptr %28, align 8, !tbaa !5
  %892 = load ptr, ptr %29, align 8, !tbaa !5
  %893 = load i32, ptr %42, align 4, !tbaa !9
  %894 = sext i32 %893 to i64
  %895 = getelementptr inbounds %struct.complex, ptr %892, i64 %894
  %896 = load ptr, ptr %30, align 8, !tbaa !5
  %897 = load ptr, ptr %31, align 8, !tbaa !5
  %898 = load i32, ptr %59, align 4, !tbaa !9
  %899 = sext i32 %898 to i64
  %900 = getelementptr inbounds %struct.complex, ptr %897, i64 %899
  call void @cgghd3_(ptr noundef %874, ptr noundef %875, ptr noundef %876, ptr noundef %81, ptr noundef %80, ptr noundef %880, ptr noundef %881, ptr noundef %885, ptr noundef %886, ptr noundef %890, ptr noundef %891, ptr noundef %895, ptr noundef %896, ptr noundef %900, ptr noundef %43, ptr noundef %54)
  br label %939

901:                                              ; preds = %865
  %902 = load ptr, ptr %32, align 8, !tbaa !5
  %903 = load i32, ptr %902, align 4, !tbaa !9
  %904 = add nsw i32 %903, 1
  %905 = load i32, ptr %59, align 4, !tbaa !9
  %906 = sub nsw i32 %904, %905
  store i32 %906, ptr %43, align 4, !tbaa !9
  %907 = load ptr, ptr %21, align 8, !tbaa !5
  %908 = load i32, ptr %81, align 4, !tbaa !9
  %909 = load i32, ptr %81, align 4, !tbaa !9
  %910 = load i32, ptr %35, align 4, !tbaa !9
  %911 = mul nsw i32 %909, %910
  %912 = add nsw i32 %908, %911
  %913 = sext i32 %912 to i64
  %914 = getelementptr inbounds %struct.complex, ptr %907, i64 %913
  %915 = load ptr, ptr %22, align 8, !tbaa !5
  %916 = load ptr, ptr %23, align 8, !tbaa !5
  %917 = load i32, ptr %81, align 4, !tbaa !9
  %918 = load i32, ptr %81, align 4, !tbaa !9
  %919 = load i32, ptr %37, align 4, !tbaa !9
  %920 = mul nsw i32 %918, %919
  %921 = add nsw i32 %917, %920
  %922 = sext i32 %921 to i64
  %923 = getelementptr inbounds %struct.complex, ptr %916, i64 %922
  %924 = load ptr, ptr %24, align 8, !tbaa !5
  %925 = load ptr, ptr %27, align 8, !tbaa !5
  %926 = load i32, ptr %40, align 4, !tbaa !9
  %927 = sext i32 %926 to i64
  %928 = getelementptr inbounds %struct.complex, ptr %925, i64 %927
  %929 = load ptr, ptr %28, align 8, !tbaa !5
  %930 = load ptr, ptr %29, align 8, !tbaa !5
  %931 = load i32, ptr %42, align 4, !tbaa !9
  %932 = sext i32 %931 to i64
  %933 = getelementptr inbounds %struct.complex, ptr %930, i64 %932
  %934 = load ptr, ptr %30, align 8, !tbaa !5
  %935 = load ptr, ptr %31, align 8, !tbaa !5
  %936 = load i32, ptr %59, align 4, !tbaa !9
  %937 = sext i32 %936 to i64
  %938 = getelementptr inbounds %struct.complex, ptr %935, i64 %937
  call void @cgghd3_(ptr noundef @.str, ptr noundef @.str, ptr noundef %63, ptr noundef @c__1, ptr noundef %63, ptr noundef %914, ptr noundef %915, ptr noundef %923, ptr noundef %924, ptr noundef %928, ptr noundef %929, ptr noundef %933, ptr noundef %934, ptr noundef %938, ptr noundef %43, ptr noundef %54)
  br label %939

939:                                              ; preds = %901, %868
  %940 = load i32, ptr %55, align 4, !tbaa !9
  store i32 %940, ptr %59, align 4, !tbaa !9
  %941 = load i32, ptr %83, align 4, !tbaa !9
  %942 = icmp ne i32 %941, 0
  br i1 %942, label %943, label %945

943:                                              ; preds = %939
  %944 = getelementptr inbounds [1 x i8], ptr %70, i64 0, i64 0
  store i8 83, ptr %944, align 1, !tbaa !16
  br label %947

945:                                              ; preds = %939
  %946 = getelementptr inbounds [1 x i8], ptr %70, i64 0, i64 0
  store i8 69, ptr %946, align 1, !tbaa !16
  br label %947

947:                                              ; preds = %945, %943
  %948 = load ptr, ptr %32, align 8, !tbaa !5
  %949 = load i32, ptr %948, align 4, !tbaa !9
  %950 = add nsw i32 %949, 1
  %951 = load i32, ptr %59, align 4, !tbaa !9
  %952 = sub nsw i32 %950, %951
  store i32 %952, ptr %43, align 4, !tbaa !9
  %953 = getelementptr inbounds [1 x i8], ptr %70, i64 0, i64 0
  %954 = load ptr, ptr %18, align 8, !tbaa !5
  %955 = load ptr, ptr %19, align 8, !tbaa !5
  %956 = load ptr, ptr %20, align 8, !tbaa !5
  %957 = load ptr, ptr %21, align 8, !tbaa !5
  %958 = load i32, ptr %36, align 4, !tbaa !9
  %959 = sext i32 %958 to i64
  %960 = getelementptr inbounds %struct.complex, ptr %957, i64 %959
  %961 = load ptr, ptr %22, align 8, !tbaa !5
  %962 = load ptr, ptr %23, align 8, !tbaa !5
  %963 = load i32, ptr %38, align 4, !tbaa !9
  %964 = sext i32 %963 to i64
  %965 = getelementptr inbounds %struct.complex, ptr %962, i64 %964
  %966 = load ptr, ptr %24, align 8, !tbaa !5
  %967 = load ptr, ptr %25, align 8, !tbaa !5
  %968 = getelementptr inbounds %struct.complex, ptr %967, i64 1
  %969 = load ptr, ptr %26, align 8, !tbaa !5
  %970 = getelementptr inbounds %struct.complex, ptr %969, i64 1
  %971 = load ptr, ptr %27, align 8, !tbaa !5
  %972 = load i32, ptr %40, align 4, !tbaa !9
  %973 = sext i32 %972 to i64
  %974 = getelementptr inbounds %struct.complex, ptr %971, i64 %973
  %975 = load ptr, ptr %28, align 8, !tbaa !5
  %976 = load ptr, ptr %29, align 8, !tbaa !5
  %977 = load i32, ptr %42, align 4, !tbaa !9
  %978 = sext i32 %977 to i64
  %979 = getelementptr inbounds %struct.complex, ptr %976, i64 %978
  %980 = load ptr, ptr %30, align 8, !tbaa !5
  %981 = load ptr, ptr %31, align 8, !tbaa !5
  %982 = load i32, ptr %59, align 4, !tbaa !9
  %983 = sext i32 %982 to i64
  %984 = getelementptr inbounds %struct.complex, ptr %981, i64 %983
  %985 = load ptr, ptr %33, align 8, !tbaa !5
  %986 = load i32, ptr %62, align 4, !tbaa !9
  %987 = sext i32 %986 to i64
  %988 = getelementptr inbounds float, ptr %985, i64 %987
  call void @chgeqz_(ptr noundef %953, ptr noundef %954, ptr noundef %955, ptr noundef %956, ptr noundef %81, ptr noundef %80, ptr noundef %960, ptr noundef %961, ptr noundef %965, ptr noundef %966, ptr noundef %968, ptr noundef %970, ptr noundef %974, ptr noundef %975, ptr noundef %979, ptr noundef %980, ptr noundef %984, ptr noundef %43, ptr noundef %988, ptr noundef %54)
  %989 = load i32, ptr %54, align 4, !tbaa !9
  %990 = icmp ne i32 %989, 0
  br i1 %990, label %991, label %1026

991:                                              ; preds = %947
  %992 = load i32, ptr %54, align 4, !tbaa !9
  %993 = icmp sgt i32 %992, 0
  br i1 %993, label %994, label %1002

994:                                              ; preds = %991
  %995 = load i32, ptr %54, align 4, !tbaa !9
  %996 = load ptr, ptr %20, align 8, !tbaa !5
  %997 = load i32, ptr %996, align 4, !tbaa !9
  %998 = icmp sle i32 %995, %997
  br i1 %998, label %999, label %1002

999:                                              ; preds = %994
  %1000 = load i32, ptr %54, align 4, !tbaa !9
  %1001 = load ptr, ptr %34, align 8, !tbaa !5
  store i32 %1000, ptr %1001, align 4, !tbaa !9
  br label %1025

1002:                                             ; preds = %994, %991
  %1003 = load i32, ptr %54, align 4, !tbaa !9
  %1004 = load ptr, ptr %20, align 8, !tbaa !5
  %1005 = load i32, ptr %1004, align 4, !tbaa !9
  %1006 = icmp sgt i32 %1003, %1005
  br i1 %1006, label %1007, label %1019

1007:                                             ; preds = %1002
  %1008 = load i32, ptr %54, align 4, !tbaa !9
  %1009 = load ptr, ptr %20, align 8, !tbaa !5
  %1010 = load i32, ptr %1009, align 4, !tbaa !9
  %1011 = shl i32 %1010, 1
  %1012 = icmp sle i32 %1008, %1011
  br i1 %1012, label %1013, label %1019

1013:                                             ; preds = %1007
  %1014 = load i32, ptr %54, align 4, !tbaa !9
  %1015 = load ptr, ptr %20, align 8, !tbaa !5
  %1016 = load i32, ptr %1015, align 4, !tbaa !9
  %1017 = sub nsw i32 %1014, %1016
  %1018 = load ptr, ptr %34, align 8, !tbaa !5
  store i32 %1017, ptr %1018, align 4, !tbaa !9
  br label %1024

1019:                                             ; preds = %1007, %1002
  %1020 = load ptr, ptr %20, align 8, !tbaa !5
  %1021 = load i32, ptr %1020, align 4, !tbaa !9
  %1022 = add nsw i32 %1021, 1
  %1023 = load ptr, ptr %34, align 8, !tbaa !5
  store i32 %1022, ptr %1023, align 4, !tbaa !9
  br label %1024

1024:                                             ; preds = %1019, %1013
  br label %1025

1025:                                             ; preds = %1024, %999
  br label %1394

1026:                                             ; preds = %947
  %1027 = load i32, ptr %83, align 4, !tbaa !9
  %1028 = icmp ne i32 %1027, 0
  br i1 %1028, label %1029, label %1393

1029:                                             ; preds = %1026
  %1030 = load i32, ptr %57, align 4, !tbaa !9
  %1031 = icmp ne i32 %1030, 0
  br i1 %1031, label %1032, label %1040

1032:                                             ; preds = %1029
  %1033 = load i32, ptr %58, align 4, !tbaa !9
  %1034 = icmp ne i32 %1033, 0
  br i1 %1034, label %1035, label %1037

1035:                                             ; preds = %1032
  %1036 = getelementptr inbounds [1 x i8], ptr %70, i64 0, i64 0
  store i8 66, ptr %1036, align 1, !tbaa !16
  br label %1039

1037:                                             ; preds = %1032
  %1038 = getelementptr inbounds [1 x i8], ptr %70, i64 0, i64 0
  store i8 76, ptr %1038, align 1, !tbaa !16
  br label %1039

1039:                                             ; preds = %1037, %1035
  br label %1042

1040:                                             ; preds = %1029
  %1041 = getelementptr inbounds [1 x i8], ptr %70, i64 0, i64 0
  store i8 82, ptr %1041, align 1, !tbaa !16
  br label %1042

1042:                                             ; preds = %1040, %1039
  %1043 = getelementptr inbounds [1 x i8], ptr %70, i64 0, i64 0
  %1044 = getelementptr inbounds [1 x i32], ptr %69, i64 0, i64 0
  %1045 = load ptr, ptr %20, align 8, !tbaa !5
  %1046 = load ptr, ptr %21, align 8, !tbaa !5
  %1047 = load i32, ptr %36, align 4, !tbaa !9
  %1048 = sext i32 %1047 to i64
  %1049 = getelementptr inbounds %struct.complex, ptr %1046, i64 %1048
  %1050 = load ptr, ptr %22, align 8, !tbaa !5
  %1051 = load ptr, ptr %23, align 8, !tbaa !5
  %1052 = load i32, ptr %38, align 4, !tbaa !9
  %1053 = sext i32 %1052 to i64
  %1054 = getelementptr inbounds %struct.complex, ptr %1051, i64 %1053
  %1055 = load ptr, ptr %24, align 8, !tbaa !5
  %1056 = load ptr, ptr %27, align 8, !tbaa !5
  %1057 = load i32, ptr %40, align 4, !tbaa !9
  %1058 = sext i32 %1057 to i64
  %1059 = getelementptr inbounds %struct.complex, ptr %1056, i64 %1058
  %1060 = load ptr, ptr %28, align 8, !tbaa !5
  %1061 = load ptr, ptr %29, align 8, !tbaa !5
  %1062 = load i32, ptr %42, align 4, !tbaa !9
  %1063 = sext i32 %1062 to i64
  %1064 = getelementptr inbounds %struct.complex, ptr %1061, i64 %1063
  %1065 = load ptr, ptr %30, align 8, !tbaa !5
  %1066 = load ptr, ptr %20, align 8, !tbaa !5
  %1067 = load ptr, ptr %31, align 8, !tbaa !5
  %1068 = load i32, ptr %59, align 4, !tbaa !9
  %1069 = sext i32 %1068 to i64
  %1070 = getelementptr inbounds %struct.complex, ptr %1067, i64 %1069
  %1071 = load ptr, ptr %33, align 8, !tbaa !5
  %1072 = load i32, ptr %62, align 4, !tbaa !9
  %1073 = sext i32 %1072 to i64
  %1074 = getelementptr inbounds float, ptr %1071, i64 %1073
  call void @ctgevc_(ptr noundef %1043, ptr noundef @.str.7, ptr noundef %1044, ptr noundef %1045, ptr noundef %1049, ptr noundef %1050, ptr noundef %1054, ptr noundef %1055, ptr noundef %1059, ptr noundef %1060, ptr noundef %1064, ptr noundef %1065, ptr noundef %1066, ptr noundef %65, ptr noundef %1070, ptr noundef %1074, ptr noundef %54)
  %1075 = load i32, ptr %54, align 4, !tbaa !9
  %1076 = icmp ne i32 %1075, 0
  br i1 %1076, label %1077, label %1082

1077:                                             ; preds = %1042
  %1078 = load ptr, ptr %20, align 8, !tbaa !5
  %1079 = load i32, ptr %1078, align 4, !tbaa !9
  %1080 = add nsw i32 %1079, 2
  %1081 = load ptr, ptr %34, align 8, !tbaa !5
  store i32 %1080, ptr %1081, align 4, !tbaa !9
  br label %1394

1082:                                             ; preds = %1042
  %1083 = load i32, ptr %57, align 4, !tbaa !9
  %1084 = icmp ne i32 %1083, 0
  br i1 %1084, label %1085, label %1237

1085:                                             ; preds = %1082
  %1086 = load ptr, ptr %20, align 8, !tbaa !5
  %1087 = load ptr, ptr %33, align 8, !tbaa !5
  %1088 = load i32, ptr %60, align 4, !tbaa !9
  %1089 = sext i32 %1088 to i64
  %1090 = getelementptr inbounds float, ptr %1087, i64 %1089
  %1091 = load ptr, ptr %33, align 8, !tbaa !5
  %1092 = load i32, ptr %73, align 4, !tbaa !9
  %1093 = sext i32 %1092 to i64
  %1094 = getelementptr inbounds float, ptr %1091, i64 %1093
  %1095 = load ptr, ptr %20, align 8, !tbaa !5
  %1096 = load ptr, ptr %27, align 8, !tbaa !5
  %1097 = load i32, ptr %40, align 4, !tbaa !9
  %1098 = sext i32 %1097 to i64
  %1099 = getelementptr inbounds %struct.complex, ptr %1096, i64 %1098
  %1100 = load ptr, ptr %28, align 8, !tbaa !5
  call void @cggbak_(ptr noundef @.str.10, ptr noundef @.str.2, ptr noundef %1086, ptr noundef %81, ptr noundef %80, ptr noundef %1090, ptr noundef %1094, ptr noundef %1095, ptr noundef %1099, ptr noundef %1100, ptr noundef %54)
  %1101 = load ptr, ptr %20, align 8, !tbaa !5
  %1102 = load i32, ptr %1101, align 4, !tbaa !9
  store i32 %1102, ptr %43, align 4, !tbaa !9
  store i32 1, ptr %64, align 4, !tbaa !9
  br label %1103

1103:                                             ; preds = %1233, %1085
  %1104 = load i32, ptr %64, align 4, !tbaa !9
  %1105 = load i32, ptr %43, align 4, !tbaa !9
  %1106 = icmp sle i32 %1104, %1105
  br i1 %1106, label %1107, label %1236

1107:                                             ; preds = %1103
  store float 0.000000e+00, ptr %56, align 4, !tbaa !15
  %1108 = load ptr, ptr %20, align 8, !tbaa !5
  %1109 = load i32, ptr %1108, align 4, !tbaa !9
  store i32 %1109, ptr %44, align 4, !tbaa !9
  store i32 1, ptr %66, align 4, !tbaa !9
  br label %1110

1110:                                             ; preds = %1168, %1107
  %1111 = load i32, ptr %66, align 4, !tbaa !9
  %1112 = load i32, ptr %44, align 4, !tbaa !9
  %1113 = icmp sle i32 %1111, %1112
  br i1 %1113, label %1114, label %1171

1114:                                             ; preds = %1110
  %1115 = load i32, ptr %66, align 4, !tbaa !9
  %1116 = load i32, ptr %64, align 4, !tbaa !9
  %1117 = load i32, ptr %39, align 4, !tbaa !9
  %1118 = mul nsw i32 %1116, %1117
  %1119 = add nsw i32 %1115, %1118
  store i32 %1119, ptr %45, align 4, !tbaa !9
  %1120 = load float, ptr %56, align 4, !tbaa !15
  store float %1120, ptr %49, align 4, !tbaa !15
  %1121 = load ptr, ptr %27, align 8, !tbaa !5
  %1122 = load i32, ptr %45, align 4, !tbaa !9
  %1123 = sext i32 %1122 to i64
  %1124 = getelementptr inbounds %struct.complex, ptr %1121, i64 %1123
  %1125 = getelementptr inbounds %struct.complex, ptr %1124, i32 0, i32 0
  %1126 = load float, ptr %1125, align 4, !tbaa !11
  store float %1126, ptr %47, align 4, !tbaa !15
  %1127 = load float, ptr %47, align 4, !tbaa !15
  %1128 = fcmp oge float %1127, 0.000000e+00
  br i1 %1128, label %1129, label %1131

1129:                                             ; preds = %1114
  %1130 = load float, ptr %47, align 4, !tbaa !15
  br label %1134

1131:                                             ; preds = %1114
  %1132 = load float, ptr %47, align 4, !tbaa !15
  %1133 = fneg float %1132
  br label %1134

1134:                                             ; preds = %1131, %1129
  %1135 = phi float [ %1130, %1129 ], [ %1133, %1131 ]
  %1136 = load ptr, ptr %27, align 8, !tbaa !5
  %1137 = load i32, ptr %66, align 4, !tbaa !9
  %1138 = load i32, ptr %64, align 4, !tbaa !9
  %1139 = load i32, ptr %39, align 4, !tbaa !9
  %1140 = mul nsw i32 %1138, %1139
  %1141 = add nsw i32 %1137, %1140
  %1142 = sext i32 %1141 to i64
  %1143 = getelementptr inbounds %struct.complex, ptr %1136, i64 %1142
  %1144 = call <2 x float> @Cf(ptr noundef %1143)
  store <2 x float> %1144, ptr %85, align 4
  %1145 = getelementptr inbounds { float, float }, ptr %85, i32 0, i32 0
  %1146 = load float, ptr %1145, align 4
  %1147 = getelementptr inbounds { float, float }, ptr %85, i32 0, i32 1
  %1148 = load float, ptr %1147, align 4
  store float %1148, ptr %48, align 4, !tbaa !15
  %1149 = load float, ptr %48, align 4, !tbaa !15
  %1150 = fcmp oge float %1149, 0.000000e+00
  br i1 %1150, label %1151, label %1153

1151:                                             ; preds = %1134
  %1152 = load float, ptr %48, align 4, !tbaa !15
  br label %1156

1153:                                             ; preds = %1134
  %1154 = load float, ptr %48, align 4, !tbaa !15
  %1155 = fneg float %1154
  br label %1156

1156:                                             ; preds = %1153, %1151
  %1157 = phi float [ %1152, %1151 ], [ %1155, %1153 ]
  %1158 = fadd float %1135, %1157
  store float %1158, ptr %50, align 4, !tbaa !15
  %1159 = load float, ptr %49, align 4, !tbaa !15
  %1160 = load float, ptr %50, align 4, !tbaa !15
  %1161 = fcmp oge float %1159, %1160
  br i1 %1161, label %1162, label %1164

1162:                                             ; preds = %1156
  %1163 = load float, ptr %49, align 4, !tbaa !15
  br label %1166

1164:                                             ; preds = %1156
  %1165 = load float, ptr %50, align 4, !tbaa !15
  br label %1166

1166:                                             ; preds = %1164, %1162
  %1167 = phi float [ %1163, %1162 ], [ %1165, %1164 ]
  store float %1167, ptr %56, align 4, !tbaa !15
  br label %1168

1168:                                             ; preds = %1166
  %1169 = load i32, ptr %66, align 4, !tbaa !9
  %1170 = add nsw i32 %1169, 1
  store i32 %1170, ptr %66, align 4, !tbaa !9
  br label %1110, !llvm.loop !17

1171:                                             ; preds = %1110
  %1172 = load float, ptr %56, align 4, !tbaa !15
  %1173 = load float, ptr %77, align 4, !tbaa !15
  %1174 = fcmp olt float %1172, %1173
  br i1 %1174, label %1175, label %1176

1175:                                             ; preds = %1171
  br label %1232

1176:                                             ; preds = %1171
  %1177 = load float, ptr %56, align 4, !tbaa !15
  %1178 = fdiv float 1.000000e+00, %1177
  store float %1178, ptr %56, align 4, !tbaa !15
  %1179 = load ptr, ptr %20, align 8, !tbaa !5
  %1180 = load i32, ptr %1179, align 4, !tbaa !9
  store i32 %1180, ptr %44, align 4, !tbaa !9
  store i32 1, ptr %66, align 4, !tbaa !9
  br label %1181

1181:                                             ; preds = %1228, %1176
  %1182 = load i32, ptr %66, align 4, !tbaa !9
  %1183 = load i32, ptr %44, align 4, !tbaa !9
  %1184 = icmp sle i32 %1182, %1183
  br i1 %1184, label %1185, label %1231

1185:                                             ; preds = %1181
  %1186 = load i32, ptr %66, align 4, !tbaa !9
  %1187 = load i32, ptr %64, align 4, !tbaa !9
  %1188 = load i32, ptr %39, align 4, !tbaa !9
  %1189 = mul nsw i32 %1187, %1188
  %1190 = add nsw i32 %1186, %1189
  store i32 %1190, ptr %45, align 4, !tbaa !9
  %1191 = load i32, ptr %66, align 4, !tbaa !9
  %1192 = load i32, ptr %64, align 4, !tbaa !9
  %1193 = load i32, ptr %39, align 4, !tbaa !9
  %1194 = mul nsw i32 %1192, %1193
  %1195 = add nsw i32 %1191, %1194
  store i32 %1195, ptr %46, align 4, !tbaa !9
  %1196 = load float, ptr %56, align 4, !tbaa !15
  %1197 = load ptr, ptr %27, align 8, !tbaa !5
  %1198 = load i32, ptr %46, align 4, !tbaa !9
  %1199 = sext i32 %1198 to i64
  %1200 = getelementptr inbounds %struct.complex, ptr %1197, i64 %1199
  %1201 = getelementptr inbounds %struct.complex, ptr %1200, i32 0, i32 0
  %1202 = load float, ptr %1201, align 4, !tbaa !11
  %1203 = fmul float %1196, %1202
  %1204 = getelementptr inbounds %struct.complex, ptr %51, i32 0, i32 0
  store float %1203, ptr %1204, align 4, !tbaa !11
  %1205 = load float, ptr %56, align 4, !tbaa !15
  %1206 = load ptr, ptr %27, align 8, !tbaa !5
  %1207 = load i32, ptr %46, align 4, !tbaa !9
  %1208 = sext i32 %1207 to i64
  %1209 = getelementptr inbounds %struct.complex, ptr %1206, i64 %1208
  %1210 = getelementptr inbounds %struct.complex, ptr %1209, i32 0, i32 1
  %1211 = load float, ptr %1210, align 4, !tbaa !14
  %1212 = fmul float %1205, %1211
  %1213 = getelementptr inbounds %struct.complex, ptr %51, i32 0, i32 1
  store float %1212, ptr %1213, align 4, !tbaa !14
  %1214 = getelementptr inbounds %struct.complex, ptr %51, i32 0, i32 0
  %1215 = load float, ptr %1214, align 4, !tbaa !11
  %1216 = load ptr, ptr %27, align 8, !tbaa !5
  %1217 = load i32, ptr %45, align 4, !tbaa !9
  %1218 = sext i32 %1217 to i64
  %1219 = getelementptr inbounds %struct.complex, ptr %1216, i64 %1218
  %1220 = getelementptr inbounds %struct.complex, ptr %1219, i32 0, i32 0
  store float %1215, ptr %1220, align 4, !tbaa !11
  %1221 = getelementptr inbounds %struct.complex, ptr %51, i32 0, i32 1
  %1222 = load float, ptr %1221, align 4, !tbaa !14
  %1223 = load ptr, ptr %27, align 8, !tbaa !5
  %1224 = load i32, ptr %45, align 4, !tbaa !9
  %1225 = sext i32 %1224 to i64
  %1226 = getelementptr inbounds %struct.complex, ptr %1223, i64 %1225
  %1227 = getelementptr inbounds %struct.complex, ptr %1226, i32 0, i32 1
  store float %1222, ptr %1227, align 4, !tbaa !14
  br label %1228

1228:                                             ; preds = %1185
  %1229 = load i32, ptr %66, align 4, !tbaa !9
  %1230 = add nsw i32 %1229, 1
  store i32 %1230, ptr %66, align 4, !tbaa !9
  br label %1181, !llvm.loop !19

1231:                                             ; preds = %1181
  br label %1232

1232:                                             ; preds = %1231, %1175
  br label %1233

1233:                                             ; preds = %1232
  %1234 = load i32, ptr %64, align 4, !tbaa !9
  %1235 = add nsw i32 %1234, 1
  store i32 %1235, ptr %64, align 4, !tbaa !9
  br label %1103, !llvm.loop !20

1236:                                             ; preds = %1103
  br label %1237

1237:                                             ; preds = %1236, %1082
  %1238 = load i32, ptr %58, align 4, !tbaa !9
  %1239 = icmp ne i32 %1238, 0
  br i1 %1239, label %1240, label %1392

1240:                                             ; preds = %1237
  %1241 = load ptr, ptr %20, align 8, !tbaa !5
  %1242 = load ptr, ptr %33, align 8, !tbaa !5
  %1243 = load i32, ptr %60, align 4, !tbaa !9
  %1244 = sext i32 %1243 to i64
  %1245 = getelementptr inbounds float, ptr %1242, i64 %1244
  %1246 = load ptr, ptr %33, align 8, !tbaa !5
  %1247 = load i32, ptr %73, align 4, !tbaa !9
  %1248 = sext i32 %1247 to i64
  %1249 = getelementptr inbounds float, ptr %1246, i64 %1248
  %1250 = load ptr, ptr %20, align 8, !tbaa !5
  %1251 = load ptr, ptr %29, align 8, !tbaa !5
  %1252 = load i32, ptr %42, align 4, !tbaa !9
  %1253 = sext i32 %1252 to i64
  %1254 = getelementptr inbounds %struct.complex, ptr %1251, i64 %1253
  %1255 = load ptr, ptr %30, align 8, !tbaa !5
  call void @cggbak_(ptr noundef @.str.10, ptr noundef @.str.12, ptr noundef %1241, ptr noundef %81, ptr noundef %80, ptr noundef %1245, ptr noundef %1249, ptr noundef %1250, ptr noundef %1254, ptr noundef %1255, ptr noundef %54)
  %1256 = load ptr, ptr %20, align 8, !tbaa !5
  %1257 = load i32, ptr %1256, align 4, !tbaa !9
  store i32 %1257, ptr %43, align 4, !tbaa !9
  store i32 1, ptr %64, align 4, !tbaa !9
  br label %1258

1258:                                             ; preds = %1388, %1240
  %1259 = load i32, ptr %64, align 4, !tbaa !9
  %1260 = load i32, ptr %43, align 4, !tbaa !9
  %1261 = icmp sle i32 %1259, %1260
  br i1 %1261, label %1262, label %1391

1262:                                             ; preds = %1258
  store float 0.000000e+00, ptr %56, align 4, !tbaa !15
  %1263 = load ptr, ptr %20, align 8, !tbaa !5
  %1264 = load i32, ptr %1263, align 4, !tbaa !9
  store i32 %1264, ptr %44, align 4, !tbaa !9
  store i32 1, ptr %66, align 4, !tbaa !9
  br label %1265

1265:                                             ; preds = %1323, %1262
  %1266 = load i32, ptr %66, align 4, !tbaa !9
  %1267 = load i32, ptr %44, align 4, !tbaa !9
  %1268 = icmp sle i32 %1266, %1267
  br i1 %1268, label %1269, label %1326

1269:                                             ; preds = %1265
  %1270 = load i32, ptr %66, align 4, !tbaa !9
  %1271 = load i32, ptr %64, align 4, !tbaa !9
  %1272 = load i32, ptr %41, align 4, !tbaa !9
  %1273 = mul nsw i32 %1271, %1272
  %1274 = add nsw i32 %1270, %1273
  store i32 %1274, ptr %45, align 4, !tbaa !9
  %1275 = load float, ptr %56, align 4, !tbaa !15
  store float %1275, ptr %49, align 4, !tbaa !15
  %1276 = load ptr, ptr %29, align 8, !tbaa !5
  %1277 = load i32, ptr %45, align 4, !tbaa !9
  %1278 = sext i32 %1277 to i64
  %1279 = getelementptr inbounds %struct.complex, ptr %1276, i64 %1278
  %1280 = getelementptr inbounds %struct.complex, ptr %1279, i32 0, i32 0
  %1281 = load float, ptr %1280, align 4, !tbaa !11
  store float %1281, ptr %47, align 4, !tbaa !15
  %1282 = load float, ptr %47, align 4, !tbaa !15
  %1283 = fcmp oge float %1282, 0.000000e+00
  br i1 %1283, label %1284, label %1286

1284:                                             ; preds = %1269
  %1285 = load float, ptr %47, align 4, !tbaa !15
  br label %1289

1286:                                             ; preds = %1269
  %1287 = load float, ptr %47, align 4, !tbaa !15
  %1288 = fneg float %1287
  br label %1289

1289:                                             ; preds = %1286, %1284
  %1290 = phi float [ %1285, %1284 ], [ %1288, %1286 ]
  %1291 = load ptr, ptr %29, align 8, !tbaa !5
  %1292 = load i32, ptr %66, align 4, !tbaa !9
  %1293 = load i32, ptr %64, align 4, !tbaa !9
  %1294 = load i32, ptr %41, align 4, !tbaa !9
  %1295 = mul nsw i32 %1293, %1294
  %1296 = add nsw i32 %1292, %1295
  %1297 = sext i32 %1296 to i64
  %1298 = getelementptr inbounds %struct.complex, ptr %1291, i64 %1297
  %1299 = call <2 x float> @Cf(ptr noundef %1298)
  store <2 x float> %1299, ptr %86, align 4
  %1300 = getelementptr inbounds { float, float }, ptr %86, i32 0, i32 0
  %1301 = load float, ptr %1300, align 4
  %1302 = getelementptr inbounds { float, float }, ptr %86, i32 0, i32 1
  %1303 = load float, ptr %1302, align 4
  store float %1303, ptr %48, align 4, !tbaa !15
  %1304 = load float, ptr %48, align 4, !tbaa !15
  %1305 = fcmp oge float %1304, 0.000000e+00
  br i1 %1305, label %1306, label %1308

1306:                                             ; preds = %1289
  %1307 = load float, ptr %48, align 4, !tbaa !15
  br label %1311

1308:                                             ; preds = %1289
  %1309 = load float, ptr %48, align 4, !tbaa !15
  %1310 = fneg float %1309
  br label %1311

1311:                                             ; preds = %1308, %1306
  %1312 = phi float [ %1307, %1306 ], [ %1310, %1308 ]
  %1313 = fadd float %1290, %1312
  store float %1313, ptr %50, align 4, !tbaa !15
  %1314 = load float, ptr %49, align 4, !tbaa !15
  %1315 = load float, ptr %50, align 4, !tbaa !15
  %1316 = fcmp oge float %1314, %1315
  br i1 %1316, label %1317, label %1319

1317:                                             ; preds = %1311
  %1318 = load float, ptr %49, align 4, !tbaa !15
  br label %1321

1319:                                             ; preds = %1311
  %1320 = load float, ptr %50, align 4, !tbaa !15
  br label %1321

1321:                                             ; preds = %1319, %1317
  %1322 = phi float [ %1318, %1317 ], [ %1320, %1319 ]
  store float %1322, ptr %56, align 4, !tbaa !15
  br label %1323

1323:                                             ; preds = %1321
  %1324 = load i32, ptr %66, align 4, !tbaa !9
  %1325 = add nsw i32 %1324, 1
  store i32 %1325, ptr %66, align 4, !tbaa !9
  br label %1265, !llvm.loop !21

1326:                                             ; preds = %1265
  %1327 = load float, ptr %56, align 4, !tbaa !15
  %1328 = load float, ptr %77, align 4, !tbaa !15
  %1329 = fcmp olt float %1327, %1328
  br i1 %1329, label %1330, label %1331

1330:                                             ; preds = %1326
  br label %1387

1331:                                             ; preds = %1326
  %1332 = load float, ptr %56, align 4, !tbaa !15
  %1333 = fdiv float 1.000000e+00, %1332
  store float %1333, ptr %56, align 4, !tbaa !15
  %1334 = load ptr, ptr %20, align 8, !tbaa !5
  %1335 = load i32, ptr %1334, align 4, !tbaa !9
  store i32 %1335, ptr %44, align 4, !tbaa !9
  store i32 1, ptr %66, align 4, !tbaa !9
  br label %1336

1336:                                             ; preds = %1383, %1331
  %1337 = load i32, ptr %66, align 4, !tbaa !9
  %1338 = load i32, ptr %44, align 4, !tbaa !9
  %1339 = icmp sle i32 %1337, %1338
  br i1 %1339, label %1340, label %1386

1340:                                             ; preds = %1336
  %1341 = load i32, ptr %66, align 4, !tbaa !9
  %1342 = load i32, ptr %64, align 4, !tbaa !9
  %1343 = load i32, ptr %41, align 4, !tbaa !9
  %1344 = mul nsw i32 %1342, %1343
  %1345 = add nsw i32 %1341, %1344
  store i32 %1345, ptr %45, align 4, !tbaa !9
  %1346 = load i32, ptr %66, align 4, !tbaa !9
  %1347 = load i32, ptr %64, align 4, !tbaa !9
  %1348 = load i32, ptr %41, align 4, !tbaa !9
  %1349 = mul nsw i32 %1347, %1348
  %1350 = add nsw i32 %1346, %1349
  store i32 %1350, ptr %46, align 4, !tbaa !9
  %1351 = load float, ptr %56, align 4, !tbaa !15
  %1352 = load ptr, ptr %29, align 8, !tbaa !5
  %1353 = load i32, ptr %46, align 4, !tbaa !9
  %1354 = sext i32 %1353 to i64
  %1355 = getelementptr inbounds %struct.complex, ptr %1352, i64 %1354
  %1356 = getelementptr inbounds %struct.complex, ptr %1355, i32 0, i32 0
  %1357 = load float, ptr %1356, align 4, !tbaa !11
  %1358 = fmul float %1351, %1357
  %1359 = getelementptr inbounds %struct.complex, ptr %51, i32 0, i32 0
  store float %1358, ptr %1359, align 4, !tbaa !11
  %1360 = load float, ptr %56, align 4, !tbaa !15
  %1361 = load ptr, ptr %29, align 8, !tbaa !5
  %1362 = load i32, ptr %46, align 4, !tbaa !9
  %1363 = sext i32 %1362 to i64
  %1364 = getelementptr inbounds %struct.complex, ptr %1361, i64 %1363
  %1365 = getelementptr inbounds %struct.complex, ptr %1364, i32 0, i32 1
  %1366 = load float, ptr %1365, align 4, !tbaa !14
  %1367 = fmul float %1360, %1366
  %1368 = getelementptr inbounds %struct.complex, ptr %51, i32 0, i32 1
  store float %1367, ptr %1368, align 4, !tbaa !14
  %1369 = getelementptr inbounds %struct.complex, ptr %51, i32 0, i32 0
  %1370 = load float, ptr %1369, align 4, !tbaa !11
  %1371 = load ptr, ptr %29, align 8, !tbaa !5
  %1372 = load i32, ptr %45, align 4, !tbaa !9
  %1373 = sext i32 %1372 to i64
  %1374 = getelementptr inbounds %struct.complex, ptr %1371, i64 %1373
  %1375 = getelementptr inbounds %struct.complex, ptr %1374, i32 0, i32 0
  store float %1370, ptr %1375, align 4, !tbaa !11
  %1376 = getelementptr inbounds %struct.complex, ptr %51, i32 0, i32 1
  %1377 = load float, ptr %1376, align 4, !tbaa !14
  %1378 = load ptr, ptr %29, align 8, !tbaa !5
  %1379 = load i32, ptr %45, align 4, !tbaa !9
  %1380 = sext i32 %1379 to i64
  %1381 = getelementptr inbounds %struct.complex, ptr %1378, i64 %1380
  %1382 = getelementptr inbounds %struct.complex, ptr %1381, i32 0, i32 1
  store float %1377, ptr %1382, align 4, !tbaa !14
  br label %1383

1383:                                             ; preds = %1340
  %1384 = load i32, ptr %66, align 4, !tbaa !9
  %1385 = add nsw i32 %1384, 1
  store i32 %1385, ptr %66, align 4, !tbaa !9
  br label %1336, !llvm.loop !22

1386:                                             ; preds = %1336
  br label %1387

1387:                                             ; preds = %1386, %1330
  br label %1388

1388:                                             ; preds = %1387
  %1389 = load i32, ptr %64, align 4, !tbaa !9
  %1390 = add nsw i32 %1389, 1
  store i32 %1390, ptr %64, align 4, !tbaa !9
  br label %1258, !llvm.loop !23

1391:                                             ; preds = %1258
  br label %1392

1392:                                             ; preds = %1391, %1237
  br label %1393

1393:                                             ; preds = %1392, %1026
  br label %1394

1394:                                             ; preds = %1393, %1077, %1025
  %1395 = load i32, ptr %67, align 4, !tbaa !9
  %1396 = icmp ne i32 %1395, 0
  br i1 %1396, label %1397, label %1402

1397:                                             ; preds = %1394
  %1398 = load ptr, ptr %20, align 8, !tbaa !5
  %1399 = load ptr, ptr %25, align 8, !tbaa !5
  %1400 = getelementptr inbounds %struct.complex, ptr %1399, i64 1
  %1401 = load ptr, ptr %20, align 8, !tbaa !5
  call void @clascl_(ptr noundef @.str.9, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %75, ptr noundef %52, ptr noundef %1398, ptr noundef @c__1, ptr noundef %1400, ptr noundef %1401, ptr noundef %54)
  br label %1402

1402:                                             ; preds = %1397, %1394
  %1403 = load i32, ptr %68, align 4, !tbaa !9
  %1404 = icmp ne i32 %1403, 0
  br i1 %1404, label %1405, label %1410

1405:                                             ; preds = %1402
  %1406 = load ptr, ptr %20, align 8, !tbaa !5
  %1407 = load ptr, ptr %26, align 8, !tbaa !5
  %1408 = getelementptr inbounds %struct.complex, ptr %1407, i64 1
  %1409 = load ptr, ptr %20, align 8, !tbaa !5
  call void @clascl_(ptr noundef @.str.9, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %76, ptr noundef %53, ptr noundef %1406, ptr noundef @c__1, ptr noundef %1408, ptr noundef %1409, ptr noundef %54)
  br label %1410

1410:                                             ; preds = %1405, %1402
  %1411 = load i32, ptr %78, align 4, !tbaa !9
  %1412 = sitofp i32 %1411 to float
  %1413 = getelementptr inbounds %struct.complex, ptr %51, i32 0, i32 0
  store float %1412, ptr %1413, align 4, !tbaa !11
  %1414 = getelementptr inbounds %struct.complex, ptr %51, i32 0, i32 1
  store float 0.000000e+00, ptr %1414, align 4, !tbaa !14
  %1415 = getelementptr inbounds %struct.complex, ptr %51, i32 0, i32 0
  %1416 = load float, ptr %1415, align 4, !tbaa !11
  %1417 = load ptr, ptr %31, align 8, !tbaa !5
  %1418 = getelementptr inbounds %struct.complex, ptr %1417, i64 1
  %1419 = getelementptr inbounds %struct.complex, ptr %1418, i32 0, i32 0
  store float %1416, ptr %1419, align 4, !tbaa !11
  %1420 = getelementptr inbounds %struct.complex, ptr %51, i32 0, i32 1
  %1421 = load float, ptr %1420, align 4, !tbaa !14
  %1422 = load ptr, ptr %31, align 8, !tbaa !5
  %1423 = getelementptr inbounds %struct.complex, ptr %1422, i64 1
  %1424 = getelementptr inbounds %struct.complex, ptr %1423, i32 0, i32 1
  store float %1421, ptr %1424, align 4, !tbaa !14
  store i32 1, ptr %84, align 4
  br label %1425

1425:                                             ; preds = %1410, %602, %596, %588
  call void @llvm.lifetime.end.p0(i64 4, ptr %83) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %82) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %81) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %80) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %79) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %78) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %77) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %76) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %75) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %74) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %73) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %72) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %71) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %70) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %69) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %68) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %67) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %66) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %65) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %64) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %63) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %62) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %61) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %60) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %59) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %58) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %56) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %54) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %53) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #5
  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 void @cgeqrf_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

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

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

declare void @chgeqz_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, 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 @cggbal_(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 @claset_(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 @ctgevc_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

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

; Function Attrs: inlinehint nounwind uwtable
declare hidden <2 x float> @Cf(ptr noundef) #4

; 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"="64" "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 = { inlinehint nounwind uwtable "min-legal-vector-width"="64" "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 #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 = !{!"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 = !{!7, !7, i64 0}
!17 = distinct !{!17, !18}
!18 = !{!"llvm.loop.mustprogress"}
!19 = distinct !{!19, !18}
!20 = distinct !{!20, !18}
!21 = distinct !{!21, !18}
!22 = distinct !{!22, !18}
!23 = distinct !{!23, !18}


; 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
@c_n1 = external hidden global i32, align 4
@.str.2 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [2 x i8], align 1
@c__1 = external hidden global i32, align 4
@.str.4 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [8 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
@c__0 = external hidden global i32, align 4
@.str.10 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [5 x i8], align 1
@c_b1 = external hidden global %struct.complex, align 4
@c_b2 = external hidden global %struct.complex, align 4
@.str.12 = external hidden unnamed_addr constant [2 x i8], align 1

; Function Attrs: nounwind uwtable
define dso_local void @cggev3_(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 nocapture noundef readonly %14, ptr noundef %15, ptr nocapture noundef %16) local_unnamed_addr #0 {
  %18 = alloca i32, align 4
  %19 = alloca i32, align 4
  %20 = alloca float, align 4
  %21 = alloca float, align 4
  %22 = alloca i32, align 4
  %23 = alloca i32, align 4
  %24 = alloca i32, align 4
  %25 = alloca i32, align 4
  %26 = alloca [1 x i32], align 4
  %27 = alloca [1 x i8], align 1
  %28 = alloca float, align 4
  %29 = alloca float, align 4
  %30 = alloca float, align 4
  %31 = alloca float, align 4
  %32 = alloca i32, align 4
  %33 = alloca i32, align 4
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %18) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %19) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %20) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %21) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %22) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %23) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %24) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %25) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %26) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %27) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %28) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %29) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %30) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %31) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %32) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %33) #6
  %34 = load i32, ptr %4, align 4, !tbaa !5
  %narrow = xor i32 %34, -1
  %35 = sext i32 %narrow to i64
  %36 = getelementptr inbounds %struct.complex, ptr %3, i64 %35
  %37 = load i32, ptr %6, align 4, !tbaa !5
  %narrow542 = xor i32 %37, -1
  %38 = sext i32 %narrow542 to i64
  %39 = getelementptr inbounds %struct.complex, ptr %5, i64 %38
  %40 = load i32, ptr %10, align 4, !tbaa !5
  %narrow545 = xor i32 %40, -1
  %41 = sext i32 %narrow545 to i64
  %42 = getelementptr inbounds %struct.complex, ptr %9, i64 %41
  %43 = load i32, ptr %12, align 4, !tbaa !5
  %narrow546 = xor i32 %43, -1
  %44 = sext i32 %narrow546 to i64
  %45 = getelementptr inbounds %struct.complex, ptr %11, i64 %44
  %46 = getelementptr inbounds i8, ptr %13, i64 -8
  %47 = getelementptr inbounds i8, ptr %15, i64 -4
  %48 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str) #6
  %.not = icmp eq i32 %48, 0
  br i1 %.not, label %49, label %.thread653

49:                                               ; preds = %17
  %50 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.1) #6
  %.not530 = icmp ne i32 %50, 0
  %51 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str) #6
  %.not531 = icmp eq i32 %51, 0
  br i1 %.not531, label %54, label %.thread

.thread653:                                       ; preds = %17
  %52 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str) #6
  %.not531654 = icmp eq i32 %52, 0
  br i1 %.not531654, label %.thread660, label %.thread.thread

.thread660:                                       ; preds = %.thread653
  %53 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.1) #6
  store i32 0, ptr %16, align 4, !tbaa !5
  br label %56

.thread.thread:                                   ; preds = %.thread653
  store i32 0, ptr %16, align 4, !tbaa !5
  br label %.thread563

54:                                               ; preds = %49
  %55 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.1) #6
  store i32 0, ptr %16, align 4, !tbaa !5
  br i1 %.not530, label %56, label %.thread572.sink.split

.thread:                                          ; preds = %49
  store i32 0, ptr %16, align 4, !tbaa !5
  br i1 %.not530, label %.thread563, label %.thread572.sink.split

56:                                               ; preds = %.thread660, %54
  %57 = phi i32 [ %53, %.thread660 ], [ %55, %54 ]
  %.not532.not = icmp eq i32 %57, 0
  br i1 %.not532.not, label %.thread572.sink.split, label %.thread563

.thread563:                                       ; preds = %.thread.thread, %.thread, %56
  %.not531655 = phi i1 [ true, %56 ], [ false, %.thread ], [ false, %.thread.thread ]
  %58 = phi i1 [ %.not, %56 ], [ %.not530, %.thread ], [ false, %.thread.thread ]
  %59 = phi i1 [ true, %56 ], [ %.not530, %.thread ], [ false, %.thread.thread ]
  %60 = load i32, ptr %14, align 4, !tbaa !5
  %61 = icmp eq i32 %60, -1
  %62 = load i32, ptr %2, align 4, !tbaa !5
  %63 = icmp slt i32 %62, 0
  br i1 %63, label %.thread572.sink.split, label %64

64:                                               ; preds = %.thread563
  %65 = load i32, ptr %4, align 4, !tbaa !5
  %spec.select = tail call i32 @llvm.umax.i32(i32 %62, i32 1)
  %66 = icmp slt i32 %65, %spec.select
  br i1 %66, label %.thread572.sink.split, label %67

67:                                               ; preds = %64
  %68 = load i32, ptr %6, align 4, !tbaa !5
  %69 = icmp slt i32 %68, %spec.select
  br i1 %69, label %.thread572.sink.split, label %70

70:                                               ; preds = %67
  %71 = load i32, ptr %10, align 4, !tbaa !5
  %72 = icmp slt i32 %71, 1
  %73 = icmp ult i32 %71, %62
  %or.cond594 = and i1 %58, %73
  %or.cond596 = select i1 %72, i1 true, i1 %or.cond594
  br i1 %or.cond596, label %.thread572.sink.split, label %74

74:                                               ; preds = %70
  %75 = load i32, ptr %12, align 4, !tbaa !5
  %76 = icmp slt i32 %75, 1
  %77 = icmp ult i32 %75, %62
  %or.cond595 = and i1 %.not531655, %77
  %or.cond597 = or i1 %76, %or.cond595
  br i1 %or.cond597, label %.thread572.sink.split, label %78

78:                                               ; preds = %74
  store i32 1, ptr %18, align 4, !tbaa !5
  %79 = shl nuw i32 %62, 1
  store i32 %79, ptr %19, align 4, !tbaa !5
  %80 = tail call i32 @llvm.smax.i32(i32 %79, i32 1)
  %81 = icmp sge i32 %60, %80
  %or.cond = or i1 %61, %81
  br i1 %or.cond, label %82, label %.thread572.sink.split

82:                                               ; preds = %78
  call void @cgeqrf_(ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %13, ptr noundef %13, ptr noundef nonnull @c_n1, ptr noundef nonnull %22) #6
  %83 = load i32, ptr %2, align 4, !tbaa !5
  store i32 %83, ptr %18, align 4, !tbaa !5
  %84 = load float, ptr %13, align 4, !tbaa !9
  %85 = fptosi float %84 to i32
  %86 = add nsw i32 %83, %85
  store i32 %86, ptr %19, align 4, !tbaa !5
  %87 = call i32 @llvm.smax.i32(i32 %83, i32 %86)
  call void @cunmqr_(ptr noundef nonnull @.str.2, ptr noundef nonnull @.str.3, ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef %5, ptr noundef nonnull %6, ptr noundef nonnull %13, ptr noundef %3, ptr noundef nonnull %4, ptr noundef nonnull %13, ptr noundef nonnull @c_n1, ptr noundef nonnull %22) #6
  store i32 %87, ptr %18, align 4, !tbaa !5
  %88 = load i32, ptr %2, align 4, !tbaa !5
  %89 = load float, ptr %13, align 4, !tbaa !9
  %90 = fptosi float %89 to i32
  %91 = add nsw i32 %88, %90
  store i32 %91, ptr %19, align 4, !tbaa !5
  %92 = call i32 @llvm.smax.i32(i32 %87, i32 %91)
  br i1 %58, label %93, label %99

93:                                               ; preds = %82
  call void @cungqr_(ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef %9, ptr noundef nonnull %10, ptr noundef nonnull %13, ptr noundef nonnull %13, ptr noundef nonnull @c_n1, ptr noundef nonnull %22) #6
  store i32 %92, ptr %18, align 4, !tbaa !5
  %94 = load i32, ptr %2, align 4, !tbaa !5
  %95 = load float, ptr %13, align 4, !tbaa !9
  %96 = fptosi float %95 to i32
  %97 = add nsw i32 %94, %96
  store i32 %97, ptr %19, align 4, !tbaa !5
  %98 = call i32 @llvm.smax.i32(i32 %92, i32 %97)
  br label %99

99:                                               ; preds = %93, %82
  %.0 = phi i32 [ %98, %93 ], [ %92, %82 ]
  br i1 %59, label %100, label %101

100:                                              ; preds = %99
  call void @cgghd3_(ptr noundef %0, ptr noundef %1, ptr noundef nonnull %2, ptr noundef nonnull @c__1, ptr noundef nonnull %2, ptr noundef %3, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %9, ptr noundef nonnull %10, ptr noundef %11, ptr noundef nonnull %12, ptr noundef nonnull %13, ptr noundef nonnull @c_n1, ptr noundef nonnull %22) #6
  br label %.thread567

101:                                              ; preds = %99
  call void @cgghd3_(ptr noundef nonnull @.str, ptr noundef nonnull @.str, ptr noundef nonnull %2, ptr noundef nonnull @c__1, ptr noundef nonnull %2, ptr noundef %3, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %9, ptr noundef nonnull %10, ptr noundef %11, ptr noundef nonnull %12, ptr noundef nonnull %13, ptr noundef nonnull @c_n1, ptr noundef nonnull %22) #6
  br label %.thread567

.thread567:                                       ; preds = %100, %101
  %.str.4.sink = phi ptr [ @.str.5, %101 ], [ @.str.4, %100 ]
  store i32 %.0, ptr %18, align 4, !tbaa !5
  %102 = load i32, ptr %2, align 4, !tbaa !5
  %103 = load float, ptr %13, align 4, !tbaa !9
  %104 = fptosi float %103 to i32
  %105 = add nsw i32 %102, %104
  store i32 %105, ptr %19, align 4, !tbaa !5
  %106 = call i32 @llvm.smax.i32(i32 %.0, i32 %105)
  call void @chgeqz_(ptr noundef nonnull %.str.4.sink, ptr noundef %0, ptr noundef %1, ptr noundef nonnull %2, ptr noundef nonnull @c__1, ptr noundef nonnull %2, ptr noundef %3, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %7, ptr noundef %8, ptr noundef %9, ptr noundef nonnull %10, ptr noundef %11, ptr noundef nonnull %12, ptr noundef nonnull %13, ptr noundef nonnull @c_n1, ptr noundef %15, ptr noundef nonnull %22) #6
  %107 = load i32, ptr %2, align 4, !tbaa !5
  %108 = load float, ptr %13, align 4, !tbaa !9
  %109 = fptosi float %108 to i32
  %110 = add nsw i32 %107, %109
  %111 = call i32 @llvm.smax.i32(i32 %106, i32 %110)
  store i32 %106, ptr %18, align 4
  store i32 %110, ptr %19, align 4
  %112 = sitofp i32 %111 to float
  store float %112, ptr %13, align 4, !tbaa !9
  %113 = getelementptr inbounds i8, ptr %13, i64 4
  store float 0.000000e+00, ptr %113, align 4, !tbaa !12
  %.pr571.pr = load i32, ptr %16, align 4, !tbaa !5
  %.not540 = icmp eq i32 %.pr571.pr, 0
  br i1 %.not540, label %117, label %.thread572

.thread572.sink.split:                            ; preds = %78, %74, %70, %67, %64, %.thread563, %56, %54, %.thread
  %.sink674 = phi i32 [ -1, %.thread ], [ -1, %54 ], [ -2, %56 ], [ -3, %.thread563 ], [ -5, %64 ], [ -7, %67 ], [ -11, %70 ], [ -13, %74 ], [ -15, %78 ]
  store i32 %.sink674, ptr %16, align 4, !tbaa !5
  br label %.thread572

.thread572:                                       ; preds = %.thread572.sink.split, %.thread567
  %114 = phi i32 [ %.pr571.pr, %.thread567 ], [ %.sink674, %.thread572.sink.split ]
  %115 = sub nsw i32 0, %114
  store i32 %115, ptr %18, align 4, !tbaa !5
  %116 = call i32 @xerbla_(ptr noundef nonnull @.str.6, ptr noundef nonnull %18, i32 noundef 7) #6
  br label %319

117:                                              ; preds = %.thread567
  %118 = icmp eq i32 %107, 0
  %or.cond675 = select i1 %61, i1 true, i1 %118
  br i1 %or.cond675, label %319, label %119

119:                                              ; preds = %117
  %120 = call float @slamch_(ptr noundef nonnull @.str.5) #6
  %121 = call float @slamch_(ptr noundef nonnull @.str.7) #6
  %122 = fmul float %120, %121
  %123 = call float @slamch_(ptr noundef nonnull @.str.4) #6
  store float %123, ptr %31, align 4, !tbaa !13
  %124 = fdiv float 1.000000e+00, %123
  store float %124, ptr %28, align 4, !tbaa !13
  call void @slabad_(ptr noundef nonnull %31, ptr noundef nonnull %28) #6
  %125 = load float, ptr %31, align 4, !tbaa !13
  %126 = fpext float %125 to double
  %127 = call double @sqrt(double noundef %126) #6
  %128 = fpext float %122 to double
  %129 = fdiv double %127, %128
  %130 = fptrunc double %129 to float
  store float %130, ptr %31, align 4, !tbaa !13
  %131 = fdiv float 1.000000e+00, %130
  store float %131, ptr %28, align 4, !tbaa !13
  %132 = call float @clange_(ptr noundef nonnull @.str.8, ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef %3, ptr noundef nonnull %4, ptr noundef %15) #6
  store float %132, ptr %20, align 4, !tbaa !13
  %133 = fcmp ogt float %132, 0.000000e+00
  %134 = load float, ptr %31, align 4
  %135 = fcmp olt float %132, %134
  %or.cond602 = select i1 %133, i1 %135, i1 false
  br i1 %or.cond602, label %139, label %136

136:                                              ; preds = %119
  %137 = load float, ptr %28, align 4, !tbaa !13
  %138 = fcmp ogt float %132, %137
  br i1 %138, label %139, label %140

139:                                              ; preds = %119, %136
  %storemerge598 = phi float [ %137, %136 ], [ %134, %119 ]
  store float %storemerge598, ptr %29, 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 %20, ptr noundef nonnull %29, ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef %3, ptr noundef nonnull %4, ptr noundef nonnull %22) #6
  br label %140

140:                                              ; preds = %136, %139
  %.not541579 = phi i1 [ false, %139 ], [ true, %136 ]
  %141 = call float @clange_(ptr noundef nonnull @.str.8, ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %15) #6
  store float %141, ptr %21, align 4, !tbaa !13
  %142 = fcmp ogt float %141, 0.000000e+00
  %143 = load float, ptr %31, align 4
  %144 = fcmp olt float %141, %143
  %or.cond604 = select i1 %142, i1 %144, i1 false
  br i1 %or.cond604, label %148, label %145

145:                                              ; preds = %140
  %146 = load float, ptr %28, align 4, !tbaa !13
  %147 = fcmp ogt float %141, %146
  br i1 %147, label %148, label %149

148:                                              ; preds = %140, %145
  %storemerge599 = phi float [ %146, %145 ], [ %143, %140 ]
  store float %storemerge599, ptr %30, 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 %21, ptr noundef nonnull %30, ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef %5, ptr noundef nonnull %6, ptr noundef nonnull %22) #6
  br label %149

149:                                              ; preds = %145, %148
  %.not543584 = phi i1 [ false, %148 ], [ true, %145 ]
  %150 = load i32, ptr %2, align 4, !tbaa !5
  %151 = add nsw i32 %150, 1
  %152 = add nsw i32 %151, %150
  %153 = sext i32 %151 to i64
  %154 = getelementptr inbounds float, ptr %47, i64 %153
  %155 = sext i32 %152 to i64
  %156 = getelementptr inbounds float, ptr %47, i64 %155
  call void @cggbal_(ptr noundef nonnull @.str.10, ptr noundef nonnull %2, ptr noundef %3, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef nonnull %33, ptr noundef nonnull %32, ptr noundef %15, ptr noundef nonnull %154, ptr noundef nonnull %156, ptr noundef nonnull %22) #6
  %157 = load i32, ptr %32, align 4, !tbaa !5
  %158 = add nsw i32 %157, 1
  %159 = load i32, ptr %33, align 4, !tbaa !5
  %160 = sub i32 %158, %159
  store i32 %160, ptr %24, align 4, !tbaa !5
  br i1 %59, label %161, label %164

161:                                              ; preds = %149
  %162 = load i32, ptr %2, align 4, !tbaa !5
  %reass.sub = sub i32 %162, %159
  %163 = add i32 %reass.sub, 1
  br label %164

164:                                              ; preds = %149, %161
  %storemerge = phi i32 [ %163, %161 ], [ %160, %149 ]
  store i32 %storemerge, ptr %23, align 4, !tbaa !5
  %165 = load i32, ptr %14, align 4, !tbaa !5
  %166 = sub i32 %165, %160
  store i32 %166, ptr %18, align 4, !tbaa !5
  %167 = add i32 %37, 1
  %168 = mul i32 %159, %167
  %169 = sext i32 %168 to i64
  %170 = getelementptr inbounds %struct.complex, ptr %39, i64 %169
  %171 = sext i32 %160 to i64
  %172 = getelementptr %struct.complex, ptr %46, i64 %171
  %173 = getelementptr i8, ptr %172, i64 8
  call void @cgeqrf_(ptr noundef nonnull %24, ptr noundef nonnull %23, ptr noundef %170, ptr noundef nonnull %6, ptr noundef nonnull %13, ptr noundef nonnull %173, ptr noundef nonnull %18, ptr noundef nonnull %22) #6
  %174 = load i32, ptr %14, align 4, !tbaa !5
  %175 = sub i32 %174, %160
  store i32 %175, ptr %18, align 4, !tbaa !5
  %176 = load i32, ptr %33, align 4, !tbaa !5
  %177 = mul i32 %176, %167
  %178 = sext i32 %177 to i64
  %179 = getelementptr inbounds %struct.complex, ptr %39, i64 %178
  %180 = add i32 %34, 1
  %181 = mul i32 %176, %180
  %182 = sext i32 %181 to i64
  %183 = getelementptr inbounds %struct.complex, ptr %36, i64 %182
  call void @cunmqr_(ptr noundef nonnull @.str.2, ptr noundef nonnull @.str.3, ptr noundef nonnull %24, ptr noundef nonnull %23, ptr noundef nonnull %24, ptr noundef %179, ptr noundef nonnull %6, ptr noundef nonnull %13, ptr noundef %183, ptr noundef nonnull %4, ptr noundef nonnull %173, ptr noundef nonnull %18, ptr noundef nonnull %22) #6
  br i1 %58, label %184, label %207

184:                                              ; preds = %164
  call void @claset_(ptr noundef nonnull @.str.11, ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef nonnull @c_b1, ptr noundef nonnull @c_b2, ptr noundef %9, ptr noundef nonnull %10) #6
  %185 = load i32, ptr %24, align 4, !tbaa !5
  %186 = icmp sgt i32 %185, 1
  br i1 %186, label %187, label %199

187:                                              ; preds = %184
  %188 = add nsw i32 %185, -1
  store i32 %188, ptr %18, align 4, !tbaa !5
  store i32 %188, ptr %19, align 4, !tbaa !5
  %189 = load i32, ptr %33, align 4, !tbaa !5
  %190 = add nsw i32 %189, 1
  %191 = mul nsw i32 %189, %37
  %192 = add nsw i32 %190, %191
  %193 = sext i32 %192 to i64
  %194 = getelementptr inbounds %struct.complex, ptr %39, i64 %193
  %195 = mul nsw i32 %189, %40
  %196 = add nsw i32 %190, %195
  %197 = sext i32 %196 to i64
  %198 = getelementptr inbounds %struct.complex, ptr %42, i64 %197
  call void @clacpy_(ptr noundef nonnull @.str.2, ptr noundef nonnull %18, ptr noundef nonnull %19, ptr noundef %194, ptr noundef nonnull %6, ptr noundef %198, ptr noundef nonnull %10) #6
  br label %199

199:                                              ; preds = %187, %184
  %200 = load i32, ptr %14, align 4, !tbaa !5
  %201 = sub i32 %200, %160
  store i32 %201, ptr %18, align 4, !tbaa !5
  %202 = load i32, ptr %33, align 4, !tbaa !5
  %203 = add i32 %40, 1
  %204 = mul i32 %202, %203
  %205 = sext i32 %204 to i64
  %206 = getelementptr inbounds %struct.complex, ptr %42, i64 %205
  call void @cungqr_(ptr noundef nonnull %24, ptr noundef nonnull %24, ptr noundef nonnull %24, ptr noundef %206, ptr noundef nonnull %10, ptr noundef nonnull %13, ptr noundef nonnull %173, ptr noundef nonnull %18, ptr noundef nonnull %22) #6
  br label %207

207:                                              ; preds = %199, %164
  br i1 %.not531655, label %208, label %209

208:                                              ; preds = %207
  call void @claset_(ptr noundef nonnull @.str.11, ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef nonnull @c_b1, ptr noundef nonnull @c_b2, ptr noundef %11, ptr noundef nonnull %12) #6
  br label %209

209:                                              ; preds = %208, %207
  %210 = load i32, ptr %14, align 4, !tbaa !5
  %211 = sub i32 %210, %160
  store i32 %211, ptr %18, align 4, !tbaa !5
  br i1 %59, label %212, label %213

212:                                              ; preds = %209
  call void @cgghd3_(ptr noundef %0, ptr noundef %1, ptr noundef nonnull %2, ptr noundef nonnull %33, ptr noundef nonnull %32, ptr noundef %3, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %9, ptr noundef nonnull %10, ptr noundef %11, ptr noundef nonnull %12, ptr noundef nonnull %173, ptr noundef nonnull %18, ptr noundef nonnull %22) #6
  br label %221

213:                                              ; preds = %209
  %214 = load i32, ptr %33, align 4, !tbaa !5
  %215 = mul i32 %214, %180
  %216 = sext i32 %215 to i64
  %217 = getelementptr inbounds %struct.complex, ptr %36, i64 %216
  %218 = mul i32 %214, %167
  %219 = sext i32 %218 to i64
  %220 = getelementptr inbounds %struct.complex, ptr %39, i64 %219
  call void @cgghd3_(ptr noundef nonnull @.str, ptr noundef nonnull @.str, ptr noundef nonnull %24, ptr noundef nonnull @c__1, ptr noundef nonnull %24, ptr noundef %217, ptr noundef nonnull %4, ptr noundef %220, ptr noundef nonnull %6, ptr noundef %9, ptr noundef nonnull %10, ptr noundef %11, ptr noundef nonnull %12, ptr noundef nonnull %173, ptr noundef nonnull %18, ptr noundef nonnull %22) #6
  br label %221

221:                                              ; preds = %213, %212
  %.561 = phi i8 [ 69, %213 ], [ 83, %212 ]
  store i8 %.561, ptr %27, align 1, !tbaa !14
  %222 = load i32, ptr %14, align 4, !tbaa !5
  store i32 %222, ptr %18, align 4, !tbaa !5
  call void @chgeqz_(ptr noundef nonnull %27, ptr noundef %0, ptr noundef %1, ptr noundef nonnull %2, ptr noundef nonnull %33, ptr noundef nonnull %32, ptr noundef %3, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %7, ptr noundef %8, ptr noundef %9, ptr noundef nonnull %10, ptr noundef %11, ptr noundef nonnull %12, ptr noundef nonnull %13, ptr noundef nonnull %18, ptr noundef nonnull %156, ptr noundef nonnull %22) #6
  %223 = load i32, ptr %22, align 4, !tbaa !5
  %.not547 = icmp eq i32 %223, 0
  br i1 %.not547, label %233, label %224

224:                                              ; preds = %221
  %225 = icmp slt i32 %223, 1
  %.pre = load i32, ptr %2, align 4, !tbaa !5
  %.not555 = icmp sgt i32 %223, %.pre
  %or.cond676 = select i1 %225, i1 true, i1 %.not555
  br i1 %or.cond676, label %226, label %.loopexit605.sink.split

226:                                              ; preds = %224
  %227 = icmp sle i32 %223, %.pre
  %228 = shl i32 %.pre, 1
  %.not556 = icmp sgt i32 %223, %228
  %or.cond562 = or i1 %227, %.not556
  br i1 %or.cond562, label %231, label %229

229:                                              ; preds = %226
  %230 = sub nsw i32 %223, %.pre
  br label %.loopexit605.sink.split

231:                                              ; preds = %226
  %232 = add nsw i32 %.pre, 1
  br label %.loopexit605.sink.split

233:                                              ; preds = %221
  br i1 %59, label %234, label %.loopexit605

234:                                              ; preds = %233
  br i1 %58, label %235, label %.thread585

235:                                              ; preds = %234
  %. = select i1 %.not531655, i8 66, i8 76
  store i8 %., ptr %27, align 1, !tbaa !14
  call void @ctgevc_(ptr noundef nonnull %27, ptr noundef nonnull @.str.7, ptr noundef nonnull %26, ptr noundef nonnull %2, ptr noundef %3, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %9, ptr noundef nonnull %10, ptr noundef %11, ptr noundef nonnull %12, ptr noundef nonnull %2, ptr noundef nonnull %25, ptr noundef nonnull %13, ptr noundef nonnull %156, ptr noundef nonnull %22) #6
  %236 = load i32, ptr %22, align 4, !tbaa !5
  %.not548 = icmp eq i32 %236, 0
  br i1 %.not548, label %241, label %238

.thread585:                                       ; preds = %234
  store i8 82, ptr %27, align 1, !tbaa !14
  call void @ctgevc_(ptr noundef nonnull %27, ptr noundef nonnull @.str.7, ptr noundef nonnull %26, ptr noundef nonnull %2, ptr noundef %3, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %9, ptr noundef nonnull %10, ptr noundef %11, ptr noundef nonnull %12, ptr noundef nonnull %2, ptr noundef nonnull %25, ptr noundef nonnull %13, ptr noundef nonnull %156, ptr noundef nonnull %22) #6
  %237 = load i32, ptr %22, align 4, !tbaa !5
  %.not548586 = icmp eq i32 %237, 0
  br i1 %.not548586, label %.thread587, label %238

238:                                              ; preds = %.thread585, %235
  %239 = load i32, ptr %2, align 4, !tbaa !5
  %240 = add nsw i32 %239, 2
  br label %.loopexit605.sink.split

241:                                              ; preds = %235
  call void @cggbak_(ptr noundef nonnull @.str.10, ptr noundef nonnull @.str.2, ptr noundef nonnull %2, ptr noundef nonnull %33, ptr noundef nonnull %32, ptr noundef %15, ptr noundef nonnull %154, ptr noundef nonnull %2, ptr noundef %9, ptr noundef nonnull %10, ptr noundef nonnull %22) #6
  %242 = load i32, ptr %2, align 4, !tbaa !5
  store i32 %242, ptr %18, align 4, !tbaa !5
  %.not549614 = icmp slt i32 %242, 1
  br i1 %.not549614, label %.thread587, label %.lr.ph617.preheader

.lr.ph617.preheader:                              ; preds = %241
  %243 = sext i32 %40 to i64
  br label %.lr.ph617

.lr.ph617thread-pre-split:                        ; preds = %.loopexit606
  %indvars.iv.next639 = add nuw nsw i64 %indvars.iv638, 1
  %.pr = load i32, ptr %2, align 4, !tbaa !5
  br label %.lr.ph617

.lr.ph617:                                        ; preds = %.lr.ph617thread-pre-split, %.lr.ph617.preheader
  %244 = phi i32 [ %.pr, %.lr.ph617thread-pre-split ], [ %242, %.lr.ph617.preheader ]
  %indvars.iv638 = phi i64 [ %indvars.iv.next639, %.lr.ph617thread-pre-split ], [ 1, %.lr.ph617.preheader ]
  store i32 %244, ptr %19, align 4, !tbaa !5
  %.not553607 = icmp slt i32 %244, 1
  br i1 %.not553607, label %._crit_edge, label %.lr.ph

.lr.ph:                                           ; preds = %.lr.ph617
  %245 = mul nsw i64 %indvars.iv638, %243
  %invariant.gep = getelementptr %struct.complex, ptr %42, i64 %245
  br label %246

246:                                              ; preds = %.lr.ph, %246
  %indvars.iv = phi i64 [ 1, %.lr.ph ], [ %indvars.iv.next, %246 ]
  %.0513608 = phi float [ 0.000000e+00, %.lr.ph ], [ %257, %246 ]
  %gep = getelementptr %struct.complex, ptr %invariant.gep, i64 %indvars.iv
  %247 = load float, ptr %gep, align 4, !tbaa !9
  %248 = fcmp oge float %247, 0.000000e+00
  %249 = fneg float %247
  %250 = select i1 %248, float %247, float %249
  %251 = call <2 x float> @Cf(ptr noundef nonnull %gep)
  %.sroa.02.4.vec.extract = extractelement <2 x float> %251, i64 1
  %252 = fcmp oge float %.sroa.02.4.vec.extract, 0.000000e+00
  %253 = fneg float %.sroa.02.4.vec.extract
  %254 = select i1 %252, float %.sroa.02.4.vec.extract, float %253
  %255 = fadd float %250, %254
  %256 = fcmp oge float %.0513608, %255
  %257 = select i1 %256, float %.0513608, float %255
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %258 = load i32, ptr %19, align 4, !tbaa !5
  %259 = sext i32 %258 to i64
  %.not553.not = icmp slt i64 %indvars.iv, %259
  br i1 %.not553.not, label %246, label %._crit_edge, !llvm.loop !15

._crit_edge:                                      ; preds = %246, %.lr.ph617
  %.0513.lcssa = phi float [ 0.000000e+00, %.lr.ph617 ], [ %257, %246 ]
  %260 = load float, ptr %31, align 4, !tbaa !13
  %261 = fcmp olt float %.0513.lcssa, %260
  br i1 %261, label %.loopexit606, label %262

262:                                              ; preds = %._crit_edge
  %263 = fdiv float 1.000000e+00, %.0513.lcssa
  %264 = load i32, ptr %2, align 4, !tbaa !5
  store i32 %264, ptr %19, align 4, !tbaa !5
  %.not554610 = icmp slt i32 %264, 1
  br i1 %.not554610, label %.loopexit606, label %.lr.ph613

.lr.ph613:                                        ; preds = %262
  %265 = mul nsw i64 %indvars.iv638, %243
  %266 = add nuw i32 %264, 1
  %wide.trip.count = zext i32 %266 to i64
  %invariant.gep664 = getelementptr %struct.complex, ptr %42, i64 %265
  %267 = zext nneg i32 %264 to i64
  %min.iters.check = icmp eq i32 %264, 1
  br i1 %min.iters.check, label %scalar.ph.preheader, label %vector.ph

vector.ph:                                        ; preds = %.lr.ph613
  %n.vec = and i64 %267, 2147483646
  %ind.end = or i64 %267, 1
  %broadcast.splatinsert = insertelement <2 x float> poison, float %263, i64 0
  %268 = shufflevector <2 x float> %broadcast.splatinsert, <2 x float> poison, <4 x i32> zeroinitializer
  br label %vector.body

vector.body:                                      ; preds = %vector.body, %vector.ph
  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %offset.idx = or disjoint i64 %index, 1
  %269 = getelementptr %struct.complex, ptr %invariant.gep664, i64 %offset.idx
  %270 = load <4 x float>, ptr %269, align 4, !tbaa !13
  %interleaved.vec = fmul <4 x float> %268, %270
  store <4 x float> %interleaved.vec, ptr %269, align 4, !tbaa !13
  %index.next = add nuw i64 %index, 2
  %271 = icmp eq i64 %index.next, %n.vec
  br i1 %271, label %middle.block, label %vector.body, !llvm.loop !17

middle.block:                                     ; preds = %vector.body
  %cmp.n = icmp eq i64 %n.vec, %267
  br i1 %cmp.n, label %.loopexit606, label %scalar.ph.preheader

scalar.ph.preheader:                              ; preds = %middle.block, %.lr.ph613
  %indvars.iv635.ph = phi i64 [ 1, %.lr.ph613 ], [ %ind.end, %middle.block ]
  %272 = insertelement <2 x float> poison, float %263, i64 0
  %273 = shufflevector <2 x float> %272, <2 x float> poison, <2 x i32> zeroinitializer
  br label %scalar.ph

scalar.ph:                                        ; preds = %scalar.ph.preheader, %scalar.ph
  %indvars.iv635 = phi i64 [ %indvars.iv.next636, %scalar.ph ], [ %indvars.iv635.ph, %scalar.ph.preheader ]
  %gep665 = getelementptr %struct.complex, ptr %invariant.gep664, i64 %indvars.iv635
  %274 = load <2 x float>, ptr %gep665, align 4, !tbaa !13
  %275 = fmul <2 x float> %273, %274
  store <2 x float> %275, ptr %gep665, align 4, !tbaa !13
  %indvars.iv.next636 = add nuw nsw i64 %indvars.iv635, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next636, %wide.trip.count
  br i1 %exitcond.not, label %.loopexit606, label %scalar.ph, !llvm.loop !20

.loopexit606:                                     ; preds = %scalar.ph, %middle.block, %262, %._crit_edge
  %276 = load i32, ptr %18, align 4, !tbaa !5
  %277 = sext i32 %276 to i64
  %.not549.not = icmp slt i64 %indvars.iv638, %277
  br i1 %.not549.not, label %.lr.ph617thread-pre-split, label %.thread587, !llvm.loop !21

.thread587:                                       ; preds = %.loopexit606, %241, %.thread585
  br i1 %.not531655, label %278, label %.loopexit605

278:                                              ; preds = %.thread587
  call void @cggbak_(ptr noundef nonnull @.str.10, ptr noundef nonnull @.str.12, ptr noundef nonnull %2, ptr noundef nonnull %33, ptr noundef nonnull %32, ptr noundef %15, ptr noundef nonnull %154, ptr noundef nonnull %2, ptr noundef %11, ptr noundef nonnull %12, ptr noundef nonnull %22) #6
  %279 = load i32, ptr %2, align 4, !tbaa !5
  store i32 %279, ptr %18, align 4, !tbaa !5
  %.not550629 = icmp slt i32 %279, 1
  br i1 %.not550629, label %.loopexit605, label %.lr.ph632.preheader

.lr.ph632.preheader:                              ; preds = %278
  %280 = sext i32 %43 to i64
  br label %.lr.ph632

.lr.ph632thread-pre-split:                        ; preds = %.loopexit
  %indvars.iv.next650 = add nuw nsw i64 %indvars.iv649, 1
  %.pr659 = load i32, ptr %2, align 4, !tbaa !5
  br label %.lr.ph632

.lr.ph632:                                        ; preds = %.lr.ph632thread-pre-split, %.lr.ph632.preheader
  %281 = phi i32 [ %.pr659, %.lr.ph632thread-pre-split ], [ %279, %.lr.ph632.preheader ]
  %indvars.iv649 = phi i64 [ %indvars.iv.next650, %.lr.ph632thread-pre-split ], [ 1, %.lr.ph632.preheader ]
  store i32 %281, ptr %19, align 4, !tbaa !5
  %.not551618 = icmp slt i32 %281, 1
  br i1 %.not551618, label %._crit_edge623, label %.lr.ph622

.lr.ph622:                                        ; preds = %.lr.ph632
  %282 = mul nsw i64 %indvars.iv649, %280
  %invariant.gep666 = getelementptr %struct.complex, ptr %45, i64 %282
  br label %283

283:                                              ; preds = %.lr.ph622, %283
  %indvars.iv641 = phi i64 [ 1, %.lr.ph622 ], [ %indvars.iv.next642, %283 ]
  %.1514619 = phi float [ 0.000000e+00, %.lr.ph622 ], [ %294, %283 ]
  %gep667 = getelementptr %struct.complex, ptr %invariant.gep666, i64 %indvars.iv641
  %284 = load float, ptr %gep667, align 4, !tbaa !9
  %285 = fcmp oge float %284, 0.000000e+00
  %286 = fneg float %284
  %287 = select i1 %285, float %284, float %286
  %288 = call <2 x float> @Cf(ptr noundef nonnull %gep667)
  %.sroa.0.4.vec.extract = extractelement <2 x float> %288, i64 1
  %289 = fcmp oge float %.sroa.0.4.vec.extract, 0.000000e+00
  %290 = fneg float %.sroa.0.4.vec.extract
  %291 = select i1 %289, float %.sroa.0.4.vec.extract, float %290
  %292 = fadd float %287, %291
  %293 = fcmp oge float %.1514619, %292
  %294 = select i1 %293, float %.1514619, float %292
  %indvars.iv.next642 = add nuw nsw i64 %indvars.iv641, 1
  %295 = load i32, ptr %19, align 4, !tbaa !5
  %296 = sext i32 %295 to i64
  %.not551.not = icmp slt i64 %indvars.iv641, %296
  br i1 %.not551.not, label %283, label %._crit_edge623, !llvm.loop !22

._crit_edge623:                                   ; preds = %283, %.lr.ph632
  %.1514.lcssa = phi float [ 0.000000e+00, %.lr.ph632 ], [ %294, %283 ]
  %297 = load float, ptr %31, align 4, !tbaa !13
  %298 = fcmp olt float %.1514.lcssa, %297
  br i1 %298, label %.loopexit, label %299

299:                                              ; preds = %._crit_edge623
  %300 = fdiv float 1.000000e+00, %.1514.lcssa
  %301 = load i32, ptr %2, align 4, !tbaa !5
  store i32 %301, ptr %19, align 4, !tbaa !5
  %.not552625 = icmp slt i32 %301, 1
  br i1 %.not552625, label %.loopexit, label %.lr.ph628

.lr.ph628:                                        ; preds = %299
  %302 = mul nsw i64 %indvars.iv649, %280
  %303 = add nuw i32 %301, 1
  %wide.trip.count647 = zext i32 %303 to i64
  %invariant.gep668 = getelementptr %struct.complex, ptr %45, i64 %302
  %304 = zext nneg i32 %301 to i64
  %min.iters.check683 = icmp eq i32 %301, 1
  br i1 %min.iters.check683, label %scalar.ph682.preheader, label %vector.ph684

vector.ph684:                                     ; preds = %.lr.ph628
  %n.vec686 = and i64 %304, 2147483646
  %ind.end687 = or i64 %304, 1
  %broadcast.splatinsert695 = insertelement <2 x float> poison, float %300, i64 0
  %305 = shufflevector <2 x float> %broadcast.splatinsert695, <2 x float> poison, <4 x i32> zeroinitializer
  br label %vector.body689

vector.body689:                                   ; preds = %vector.body689, %vector.ph684
  %index690 = phi i64 [ 0, %vector.ph684 ], [ %index.next698, %vector.body689 ]
  %offset.idx691 = or disjoint i64 %index690, 1
  %306 = getelementptr %struct.complex, ptr %invariant.gep668, i64 %offset.idx691
  %307 = load <4 x float>, ptr %306, align 4, !tbaa !13
  %interleaved.vec697 = fmul <4 x float> %305, %307
  store <4 x float> %interleaved.vec697, ptr %306, align 4, !tbaa !13
  %index.next698 = add nuw i64 %index690, 2
  %308 = icmp eq i64 %index.next698, %n.vec686
  br i1 %308, label %middle.block681, label %vector.body689, !llvm.loop !23

middle.block681:                                  ; preds = %vector.body689
  %cmp.n699 = icmp eq i64 %n.vec686, %304
  br i1 %cmp.n699, label %.loopexit, label %scalar.ph682.preheader

scalar.ph682.preheader:                           ; preds = %middle.block681, %.lr.ph628
  %indvars.iv644.ph = phi i64 [ 1, %.lr.ph628 ], [ %ind.end687, %middle.block681 ]
  %309 = insertelement <2 x float> poison, float %300, i64 0
  %310 = shufflevector <2 x float> %309, <2 x float> poison, <2 x i32> zeroinitializer
  br label %scalar.ph682

scalar.ph682:                                     ; preds = %scalar.ph682.preheader, %scalar.ph682
  %indvars.iv644 = phi i64 [ %indvars.iv.next645, %scalar.ph682 ], [ %indvars.iv644.ph, %scalar.ph682.preheader ]
  %gep669 = getelementptr %struct.complex, ptr %invariant.gep668, i64 %indvars.iv644
  %311 = load <2 x float>, ptr %gep669, align 4, !tbaa !13
  %312 = fmul <2 x float> %310, %311
  store <2 x float> %312, ptr %gep669, align 4, !tbaa !13
  %indvars.iv.next645 = add nuw nsw i64 %indvars.iv644, 1
  %exitcond648.not = icmp eq i64 %indvars.iv.next645, %wide.trip.count647
  br i1 %exitcond648.not, label %.loopexit, label %scalar.ph682, !llvm.loop !24

.loopexit:                                        ; preds = %scalar.ph682, %middle.block681, %299, %._crit_edge623
  %313 = load i32, ptr %18, align 4, !tbaa !5
  %314 = sext i32 %313 to i64
  %.not550.not = icmp slt i64 %indvars.iv649, %314
  br i1 %.not550.not, label %.lr.ph632thread-pre-split, label %.loopexit605, !llvm.loop !25

.loopexit605.sink.split:                          ; preds = %224, %238, %229, %231
  %.sink677 = phi i32 [ %232, %231 ], [ %230, %229 ], [ %240, %238 ], [ %223, %224 ]
  store i32 %.sink677, ptr %16, align 4, !tbaa !5
  br label %.loopexit605

.loopexit605:                                     ; preds = %.loopexit, %.loopexit605.sink.split, %278, %233, %.thread587
  br i1 %.not541579, label %316, label %315

315:                                              ; preds = %.loopexit605
  call void @clascl_(ptr noundef nonnull @.str.9, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %29, ptr noundef nonnull %20, ptr noundef nonnull %2, ptr noundef nonnull @c__1, ptr noundef %7, ptr noundef nonnull %2, ptr noundef nonnull %22) #6
  br label %316

316:                                              ; preds = %315, %.loopexit605
  br i1 %.not543584, label %318, label %317

317:                                              ; preds = %316
  call void @clascl_(ptr noundef nonnull @.str.9, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %30, ptr noundef nonnull %21, ptr noundef nonnull %2, ptr noundef nonnull @c__1, ptr noundef %8, ptr noundef nonnull %2, ptr noundef nonnull %22) #6
  br label %318

318:                                              ; preds = %317, %316
  store float %112, ptr %13, align 4, !tbaa !9
  store float 0.000000e+00, ptr %113, align 4, !tbaa !12
  br label %319

319:                                              ; preds = %117, %318, %.thread572
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %33) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %32) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %31) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %30) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %29) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %28) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %27) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %26) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %25) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %24) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %23) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %22) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %21) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %20) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %19) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %18) #6
  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 void @cgeqrf_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

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

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

declare void @chgeqz_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, 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 @cggbal_(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 @claset_(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 @ctgevc_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

declare void @cggbak_(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

; Function Attrs: inlinehint nounwind uwtable
declare hidden <2 x float> @Cf(ptr noundef) local_unnamed_addr #4

; 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) #5

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

attributes #0 = { nounwind uwtable "min-legal-vector-width"="64" "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 = { inlinehint nounwind uwtable "min-legal-vector-width"="64" "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 #5 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #6 = { nounwind }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"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 = !{!7, !7, i64 0}
!15 = distinct !{!15, !16}
!16 = !{!"llvm.loop.mustprogress"}
!17 = distinct !{!17, !16, !18, !19}
!18 = !{!"llvm.loop.isvectorized", i32 1}
!19 = !{!"llvm.loop.unroll.runtime.disable"}
!20 = distinct !{!20, !16, !19, !18}
!21 = distinct !{!21, !16}
!22 = distinct !{!22, !16}
!23 = distinct !{!23, !16, !18, !19}
!24 = distinct !{!24, !16, !19, !18}
!25 = distinct !{!25, !16}


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