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

; 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__1 = external hidden global i64, align 8
@.str.2 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [2 x i8], align 1
@c__0 = external hidden global i64, align 8
@.str.4 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [7 x i8], align 1
@c_n1 = external hidden global i64, align 8
@.str.6 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.15 = 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.16 = external hidden unnamed_addr constant [2 x i8], align 1

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

130:                                              ; preds = %17
  store i64 1, ptr %77, align 8, !tbaa !9
  store i64 0, ptr %65, align 8, !tbaa !9
  br label %138

131:                                              ; preds = %17
  %132 = load ptr, ptr %19, align 8, !tbaa !5
  %133 = call i64 @lsame_(ptr noundef %132, ptr noundef @.str.1)
  %134 = icmp ne i64 %133, 0
  br i1 %134, label %135, label %136

135:                                              ; preds = %131
  store i64 2, ptr %77, align 8, !tbaa !9
  store i64 1, ptr %65, align 8, !tbaa !9
  br label %137

136:                                              ; preds = %131
  store i64 -1, ptr %77, align 8, !tbaa !9
  store i64 0, ptr %65, align 8, !tbaa !9
  br label %137

137:                                              ; preds = %136, %135
  br label %138

138:                                              ; preds = %137, %130
  %139 = load ptr, ptr %20, align 8, !tbaa !5
  %140 = call i64 @lsame_(ptr noundef %139, ptr noundef @.str)
  %141 = icmp ne i64 %140, 0
  br i1 %141, label %142, label %143

142:                                              ; preds = %138
  store i64 1, ptr %79, align 8, !tbaa !9
  store i64 0, ptr %66, align 8, !tbaa !9
  br label %150

143:                                              ; preds = %138
  %144 = load ptr, ptr %20, align 8, !tbaa !5
  %145 = call i64 @lsame_(ptr noundef %144, ptr noundef @.str.1)
  %146 = icmp ne i64 %145, 0
  br i1 %146, label %147, label %148

147:                                              ; preds = %143
  store i64 2, ptr %79, align 8, !tbaa !9
  store i64 1, ptr %66, align 8, !tbaa !9
  br label %149

148:                                              ; preds = %143
  store i64 -1, ptr %79, align 8, !tbaa !9
  store i64 0, ptr %66, align 8, !tbaa !9
  br label %149

149:                                              ; preds = %148, %147
  br label %150

150:                                              ; preds = %149, %142
  %151 = load i64, ptr %65, align 8, !tbaa !9
  %152 = icmp ne i64 %151, 0
  br i1 %152, label %156, label %153

153:                                              ; preds = %150
  %154 = load i64, ptr %66, align 8, !tbaa !9
  %155 = icmp ne i64 %154, 0
  br label %156

156:                                              ; preds = %153, %150
  %157 = phi i1 [ true, %150 ], [ %155, %153 ]
  %158 = zext i1 %157 to i32
  %159 = sext i32 %158 to i64
  store i64 %159, ptr %59, align 8, !tbaa !9
  %160 = load ptr, ptr %35, align 8, !tbaa !5
  store i64 0, ptr %160, align 8, !tbaa !9
  %161 = load ptr, ptr %33, align 8, !tbaa !5
  %162 = load i64, ptr %161, align 8, !tbaa !9
  %163 = icmp eq i64 %162, -1
  %164 = zext i1 %163 to i32
  %165 = sext i32 %164 to i64
  store i64 %165, ptr %85, align 8, !tbaa !9
  %166 = load i64, ptr %77, align 8, !tbaa !9
  %167 = icmp sle i64 %166, 0
  br i1 %167, label %168, label %170

168:                                              ; preds = %156
  %169 = load ptr, ptr %35, align 8, !tbaa !5
  store i64 -1, ptr %169, align 8, !tbaa !9
  br label %247

170:                                              ; preds = %156
  %171 = load i64, ptr %79, align 8, !tbaa !9
  %172 = icmp sle i64 %171, 0
  br i1 %172, label %173, label %175

173:                                              ; preds = %170
  %174 = load ptr, ptr %35, align 8, !tbaa !5
  store i64 -2, ptr %174, align 8, !tbaa !9
  br label %246

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

179:                                              ; preds = %175
  %180 = load ptr, ptr %35, align 8, !tbaa !5
  store i64 -3, ptr %180, align 8, !tbaa !9
  br label %245

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

187:                                              ; preds = %181
  br label %191

188:                                              ; preds = %181
  %189 = load ptr, ptr %21, align 8, !tbaa !5
  %190 = load i64, ptr %189, align 8, !tbaa !9
  br label %191

191:                                              ; preds = %188, %187
  %192 = phi i64 [ 1, %187 ], [ %190, %188 ]
  %193 = icmp slt i64 %183, %192
  br i1 %193, label %194, label %196

194:                                              ; preds = %191
  %195 = load ptr, ptr %35, align 8, !tbaa !5
  store i64 -5, ptr %195, align 8, !tbaa !9
  br label %244

196:                                              ; preds = %191
  %197 = load ptr, ptr %25, align 8, !tbaa !5
  %198 = load i64, ptr %197, align 8, !tbaa !9
  %199 = load ptr, ptr %21, align 8, !tbaa !5
  %200 = load i64, ptr %199, align 8, !tbaa !9
  %201 = icmp sge i64 1, %200
  br i1 %201, label %202, label %203

202:                                              ; preds = %196
  br label %206

203:                                              ; preds = %196
  %204 = load ptr, ptr %21, align 8, !tbaa !5
  %205 = load i64, ptr %204, align 8, !tbaa !9
  br label %206

206:                                              ; preds = %203, %202
  %207 = phi i64 [ 1, %202 ], [ %205, %203 ]
  %208 = icmp slt i64 %198, %207
  br i1 %208, label %209, label %211

209:                                              ; preds = %206
  %210 = load ptr, ptr %35, align 8, !tbaa !5
  store i64 -7, ptr %210, align 8, !tbaa !9
  br label %243

211:                                              ; preds = %206
  %212 = load ptr, ptr %29, align 8, !tbaa !5
  %213 = load i64, ptr %212, align 8, !tbaa !9
  %214 = icmp slt i64 %213, 1
  br i1 %214, label %224, label %215

215:                                              ; preds = %211
  %216 = load i64, ptr %65, align 8, !tbaa !9
  %217 = icmp ne i64 %216, 0
  br i1 %217, label %218, label %226

218:                                              ; preds = %215
  %219 = load ptr, ptr %29, align 8, !tbaa !5
  %220 = load i64, ptr %219, align 8, !tbaa !9
  %221 = load ptr, ptr %21, align 8, !tbaa !5
  %222 = load i64, ptr %221, align 8, !tbaa !9
  %223 = icmp slt i64 %220, %222
  br i1 %223, label %224, label %226

224:                                              ; preds = %218, %211
  %225 = load ptr, ptr %35, align 8, !tbaa !5
  store i64 -11, ptr %225, align 8, !tbaa !9
  br label %242

226:                                              ; preds = %218, %215
  %227 = load ptr, ptr %31, align 8, !tbaa !5
  %228 = load i64, ptr %227, align 8, !tbaa !9
  %229 = icmp slt i64 %228, 1
  br i1 %229, label %239, label %230

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

233:                                              ; preds = %230
  %234 = load ptr, ptr %31, align 8, !tbaa !5
  %235 = load i64, ptr %234, align 8, !tbaa !9
  %236 = load ptr, ptr %21, align 8, !tbaa !5
  %237 = load i64, ptr %236, align 8, !tbaa !9
  %238 = icmp slt i64 %235, %237
  br i1 %238, label %239, label %241

239:                                              ; preds = %233, %226
  %240 = load ptr, ptr %35, align 8, !tbaa !5
  store i64 -13, ptr %240, align 8, !tbaa !9
  br label %241

241:                                              ; preds = %239, %233, %230
  br label %242

242:                                              ; preds = %241, %224
  br label %243

243:                                              ; preds = %242, %209
  br label %244

244:                                              ; preds = %243, %194
  br label %245

245:                                              ; preds = %244, %179
  br label %246

246:                                              ; preds = %245, %173
  br label %247

247:                                              ; preds = %246, %168
  %248 = load ptr, ptr %35, align 8, !tbaa !5
  %249 = load i64, ptr %248, align 8, !tbaa !9
  %250 = icmp eq i64 %249, 0
  br i1 %250, label %251, label %342

251:                                              ; preds = %247
  store i64 1, ptr %44, align 8, !tbaa !9
  %252 = load ptr, ptr %21, align 8, !tbaa !5
  %253 = load i64, ptr %252, align 8, !tbaa !9
  %254 = shl i64 %253, 1
  store i64 %254, ptr %45, align 8, !tbaa !9
  %255 = load i64, ptr %44, align 8, !tbaa !9
  %256 = load i64, ptr %45, align 8, !tbaa !9
  %257 = icmp sge i64 %255, %256
  br i1 %257, label %258, label %260

258:                                              ; preds = %251
  %259 = load i64, ptr %44, align 8, !tbaa !9
  br label %262

260:                                              ; preds = %251
  %261 = load i64, ptr %45, align 8, !tbaa !9
  br label %262

262:                                              ; preds = %260, %258
  %263 = phi i64 [ %259, %258 ], [ %261, %260 ]
  store i64 %263, ptr %81, align 8, !tbaa !9
  store i64 1, ptr %44, align 8, !tbaa !9
  %264 = load ptr, ptr %21, align 8, !tbaa !5
  %265 = load i64, ptr %264, align 8, !tbaa !9
  %266 = load ptr, ptr %21, align 8, !tbaa !5
  %267 = load i64, ptr %266, align 8, !tbaa !9
  %268 = load ptr, ptr %21, align 8, !tbaa !5
  %269 = load ptr, ptr %21, align 8, !tbaa !5
  %270 = call i64 @ilaenv_(ptr noundef @c__1, ptr noundef @.str.2, ptr noundef @.str.3, ptr noundef %268, ptr noundef @c__1, ptr noundef %269, ptr noundef @c__0)
  %271 = mul nsw i64 %267, %270
  %272 = add nsw i64 %265, %271
  store i64 %272, ptr %45, align 8, !tbaa !9
  %273 = load i64, ptr %44, align 8, !tbaa !9
  %274 = load i64, ptr %45, align 8, !tbaa !9
  %275 = icmp sge i64 %273, %274
  br i1 %275, label %276, label %278

276:                                              ; preds = %262
  %277 = load i64, ptr %44, align 8, !tbaa !9
  br label %280

278:                                              ; preds = %262
  %279 = load i64, ptr %45, align 8, !tbaa !9
  br label %280

280:                                              ; preds = %278, %276
  %281 = phi i64 [ %277, %276 ], [ %279, %278 ]
  store i64 %281, ptr %84, align 8, !tbaa !9
  %282 = load i64, ptr %84, align 8, !tbaa !9
  store i64 %282, ptr %44, align 8, !tbaa !9
  %283 = load ptr, ptr %21, align 8, !tbaa !5
  %284 = load i64, ptr %283, align 8, !tbaa !9
  %285 = load ptr, ptr %21, align 8, !tbaa !5
  %286 = load i64, ptr %285, align 8, !tbaa !9
  %287 = load ptr, ptr %21, align 8, !tbaa !5
  %288 = load ptr, ptr %21, align 8, !tbaa !5
  %289 = call i64 @ilaenv_(ptr noundef @c__1, ptr noundef @.str.4, ptr noundef @.str.3, ptr noundef %287, ptr noundef @c__1, ptr noundef %288, ptr noundef @c__0)
  %290 = mul nsw i64 %286, %289
  %291 = add nsw i64 %284, %290
  store i64 %291, ptr %45, align 8, !tbaa !9
  %292 = load i64, ptr %44, align 8, !tbaa !9
  %293 = load i64, ptr %45, align 8, !tbaa !9
  %294 = icmp sge i64 %292, %293
  br i1 %294, label %295, label %297

295:                                              ; preds = %280
  %296 = load i64, ptr %44, align 8, !tbaa !9
  br label %299

297:                                              ; preds = %280
  %298 = load i64, ptr %45, align 8, !tbaa !9
  br label %299

299:                                              ; preds = %297, %295
  %300 = phi i64 [ %296, %295 ], [ %298, %297 ]
  store i64 %300, ptr %84, align 8, !tbaa !9
  %301 = load i64, ptr %65, align 8, !tbaa !9
  %302 = icmp ne i64 %301, 0
  br i1 %302, label %303, label %323

303:                                              ; preds = %299
  %304 = load i64, ptr %84, align 8, !tbaa !9
  store i64 %304, ptr %44, align 8, !tbaa !9
  %305 = load ptr, ptr %21, align 8, !tbaa !5
  %306 = load i64, ptr %305, align 8, !tbaa !9
  %307 = load ptr, ptr %21, align 8, !tbaa !5
  %308 = load i64, ptr %307, align 8, !tbaa !9
  %309 = load ptr, ptr %21, align 8, !tbaa !5
  %310 = load ptr, ptr %21, align 8, !tbaa !5
  %311 = call i64 @ilaenv_(ptr noundef @c__1, ptr noundef @.str.5, ptr noundef @.str.3, ptr noundef %309, ptr noundef @c__1, ptr noundef %310, ptr noundef @c_n1)
  %312 = mul nsw i64 %308, %311
  %313 = add nsw i64 %306, %312
  store i64 %313, ptr %45, align 8, !tbaa !9
  %314 = load i64, ptr %44, align 8, !tbaa !9
  %315 = load i64, ptr %45, align 8, !tbaa !9
  %316 = icmp sge i64 %314, %315
  br i1 %316, label %317, label %319

317:                                              ; preds = %303
  %318 = load i64, ptr %44, align 8, !tbaa !9
  br label %321

319:                                              ; preds = %303
  %320 = load i64, ptr %45, align 8, !tbaa !9
  br label %321

321:                                              ; preds = %319, %317
  %322 = phi i64 [ %318, %317 ], [ %320, %319 ]
  store i64 %322, ptr %84, align 8, !tbaa !9
  br label %323

323:                                              ; preds = %321, %299
  %324 = load i64, ptr %84, align 8, !tbaa !9
  %325 = sitofp i64 %324 to float
  %326 = load ptr, ptr %32, align 8, !tbaa !5
  %327 = getelementptr inbounds %struct.complex, ptr %326, i64 1
  %328 = getelementptr inbounds %struct.complex, ptr %327, i32 0, i32 0
  store float %325, ptr %328, align 4, !tbaa !11
  %329 = load ptr, ptr %32, align 8, !tbaa !5
  %330 = getelementptr inbounds %struct.complex, ptr %329, i64 1
  %331 = getelementptr inbounds %struct.complex, ptr %330, i32 0, i32 1
  store float 0.000000e+00, ptr %331, align 4, !tbaa !14
  %332 = load ptr, ptr %33, align 8, !tbaa !5
  %333 = load i64, ptr %332, align 8, !tbaa !9
  %334 = load i64, ptr %81, align 8, !tbaa !9
  %335 = icmp slt i64 %333, %334
  br i1 %335, label %336, label %341

336:                                              ; preds = %323
  %337 = load i64, ptr %85, align 8, !tbaa !9
  %338 = icmp ne i64 %337, 0
  br i1 %338, label %341, label %339

339:                                              ; preds = %336
  %340 = load ptr, ptr %35, align 8, !tbaa !5
  store i64 -15, ptr %340, align 8, !tbaa !9
  br label %341

341:                                              ; preds = %339, %336, %323
  br label %342

342:                                              ; preds = %341, %247
  %343 = load ptr, ptr %35, align 8, !tbaa !5
  %344 = load i64, ptr %343, align 8, !tbaa !9
  %345 = icmp ne i64 %344, 0
  br i1 %345, label %346, label %351

346:                                              ; preds = %342
  %347 = load ptr, ptr %35, align 8, !tbaa !5
  %348 = load i64, ptr %347, align 8, !tbaa !9
  %349 = sub nsw i64 0, %348
  store i64 %349, ptr %44, align 8, !tbaa !9
  %350 = call i32 @xerbla_(ptr noundef @.str.6, ptr noundef %44)
  store i32 0, ptr %18, align 4
  store i32 1, ptr %86, align 4
  br label %1124

351:                                              ; preds = %342
  %352 = load i64, ptr %85, align 8, !tbaa !9
  %353 = icmp ne i64 %352, 0
  br i1 %353, label %354, label %355

354:                                              ; preds = %351
  store i32 0, ptr %18, align 4
  store i32 1, ptr %86, align 4
  br label %1124

355:                                              ; preds = %351
  br label %356

356:                                              ; preds = %355
  %357 = load ptr, ptr %21, align 8, !tbaa !5
  %358 = load i64, ptr %357, align 8, !tbaa !9
  %359 = icmp eq i64 %358, 0
  br i1 %359, label %360, label %361

360:                                              ; preds = %356
  store i32 0, ptr %18, align 4
  store i32 1, ptr %86, align 4
  br label %1124

361:                                              ; preds = %356
  %362 = call double @slamch_(ptr noundef @.str.7)
  %363 = call double @slamch_(ptr noundef @.str.8)
  %364 = fmul double %362, %363
  %365 = fptrunc double %364 to float
  store float %365, ptr %58, align 4, !tbaa !15
  %366 = call double @slamch_(ptr noundef @.str.9)
  %367 = fptrunc double %366 to float
  store float %367, ptr %83, align 4, !tbaa !15
  %368 = load float, ptr %83, align 4, !tbaa !15
  %369 = fdiv float 1.000000e+00, %368
  store float %369, ptr %76, align 4, !tbaa !15
  %370 = call i32 @slabad_(ptr noundef %83, ptr noundef %76)
  %371 = load float, ptr %83, align 4, !tbaa !15
  %372 = fpext float %371 to double
  %373 = call double @sqrt(double noundef %372) #4
  %374 = load float, ptr %58, align 4, !tbaa !15
  %375 = fpext float %374 to double
  %376 = fdiv double %373, %375
  %377 = fptrunc double %376 to float
  store float %377, ptr %83, align 4, !tbaa !15
  %378 = load float, ptr %83, align 4, !tbaa !15
  %379 = fdiv float 1.000000e+00, %378
  store float %379, ptr %76, align 4, !tbaa !15
  %380 = load ptr, ptr %21, align 8, !tbaa !5
  %381 = load ptr, ptr %21, align 8, !tbaa !5
  %382 = load ptr, ptr %22, align 8, !tbaa !5
  %383 = load i64, ptr %37, align 8, !tbaa !9
  %384 = getelementptr inbounds %struct.complex, ptr %382, i64 %383
  %385 = load ptr, ptr %23, align 8, !tbaa !5
  %386 = load ptr, ptr %34, align 8, !tbaa !5
  %387 = getelementptr inbounds float, ptr %386, i64 1
  %388 = call double @clange_(ptr noundef @.str.10, ptr noundef %380, ptr noundef %381, ptr noundef %384, ptr noundef %385, ptr noundef %387)
  %389 = fptrunc double %388 to float
  store float %389, ptr %60, align 4, !tbaa !15
  store i64 0, ptr %72, align 8, !tbaa !9
  %390 = load float, ptr %60, align 4, !tbaa !15
  %391 = fcmp ogt float %390, 0.000000e+00
  br i1 %391, label %392, label %398

392:                                              ; preds = %361
  %393 = load float, ptr %60, align 4, !tbaa !15
  %394 = load float, ptr %83, align 4, !tbaa !15
  %395 = fcmp olt float %393, %394
  br i1 %395, label %396, label %398

396:                                              ; preds = %392
  %397 = load float, ptr %83, align 4, !tbaa !15
  store float %397, ptr %80, align 4, !tbaa !15
  store i64 1, ptr %72, align 8, !tbaa !9
  br label %405

398:                                              ; preds = %392, %361
  %399 = load float, ptr %60, align 4, !tbaa !15
  %400 = load float, ptr %76, align 4, !tbaa !15
  %401 = fcmp ogt float %399, %400
  br i1 %401, label %402, label %404

402:                                              ; preds = %398
  %403 = load float, ptr %76, align 4, !tbaa !15
  store float %403, ptr %80, align 4, !tbaa !15
  store i64 1, ptr %72, align 8, !tbaa !9
  br label %404

404:                                              ; preds = %402, %398
  br label %405

405:                                              ; preds = %404, %396
  %406 = load i64, ptr %72, align 8, !tbaa !9
  %407 = icmp ne i64 %406, 0
  br i1 %407, label %408, label %416

408:                                              ; preds = %405
  %409 = load ptr, ptr %21, align 8, !tbaa !5
  %410 = load ptr, ptr %21, align 8, !tbaa !5
  %411 = load ptr, ptr %22, align 8, !tbaa !5
  %412 = load i64, ptr %37, align 8, !tbaa !9
  %413 = getelementptr inbounds %struct.complex, ptr %411, i64 %412
  %414 = load ptr, ptr %23, align 8, !tbaa !5
  %415 = call i32 @clascl_(ptr noundef @.str.11, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %60, ptr noundef %80, ptr noundef %409, ptr noundef %410, ptr noundef %413, ptr noundef %414, ptr noundef %62)
  br label %416

416:                                              ; preds = %408, %405
  %417 = load ptr, ptr %21, align 8, !tbaa !5
  %418 = load ptr, ptr %21, align 8, !tbaa !5
  %419 = load ptr, ptr %24, align 8, !tbaa !5
  %420 = load i64, ptr %39, align 8, !tbaa !9
  %421 = getelementptr inbounds %struct.complex, ptr %419, i64 %420
  %422 = load ptr, ptr %25, align 8, !tbaa !5
  %423 = load ptr, ptr %34, align 8, !tbaa !5
  %424 = getelementptr inbounds float, ptr %423, i64 1
  %425 = call double @clange_(ptr noundef @.str.10, ptr noundef %417, ptr noundef %418, ptr noundef %421, ptr noundef %422, ptr noundef %424)
  %426 = fptrunc double %425 to float
  store float %426, ptr %61, align 4, !tbaa !15
  store i64 0, ptr %73, align 8, !tbaa !9
  %427 = load float, ptr %61, align 4, !tbaa !15
  %428 = fcmp ogt float %427, 0.000000e+00
  br i1 %428, label %429, label %435

429:                                              ; preds = %416
  %430 = load float, ptr %61, align 4, !tbaa !15
  %431 = load float, ptr %83, align 4, !tbaa !15
  %432 = fcmp olt float %430, %431
  br i1 %432, label %433, label %435

433:                                              ; preds = %429
  %434 = load float, ptr %83, align 4, !tbaa !15
  store float %434, ptr %82, align 4, !tbaa !15
  store i64 1, ptr %73, align 8, !tbaa !9
  br label %442

435:                                              ; preds = %429, %416
  %436 = load float, ptr %61, align 4, !tbaa !15
  %437 = load float, ptr %76, align 4, !tbaa !15
  %438 = fcmp ogt float %436, %437
  br i1 %438, label %439, label %441

439:                                              ; preds = %435
  %440 = load float, ptr %76, align 4, !tbaa !15
  store float %440, ptr %82, align 4, !tbaa !15
  store i64 1, ptr %73, align 8, !tbaa !9
  br label %441

441:                                              ; preds = %439, %435
  br label %442

442:                                              ; preds = %441, %433
  %443 = load i64, ptr %73, align 8, !tbaa !9
  %444 = icmp ne i64 %443, 0
  br i1 %444, label %445, label %453

445:                                              ; preds = %442
  %446 = load ptr, ptr %21, align 8, !tbaa !5
  %447 = load ptr, ptr %21, align 8, !tbaa !5
  %448 = load ptr, ptr %24, align 8, !tbaa !5
  %449 = load i64, ptr %39, align 8, !tbaa !9
  %450 = getelementptr inbounds %struct.complex, ptr %448, i64 %449
  %451 = load ptr, ptr %25, align 8, !tbaa !5
  %452 = call i32 @clascl_(ptr noundef @.str.11, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %61, ptr noundef %82, ptr noundef %446, ptr noundef %447, ptr noundef %450, ptr noundef %451, ptr noundef %62)
  br label %453

453:                                              ; preds = %445, %442
  store i64 1, ptr %68, align 8, !tbaa !9
  %454 = load ptr, ptr %21, align 8, !tbaa !5
  %455 = load i64, ptr %454, align 8, !tbaa !9
  %456 = add nsw i64 %455, 1
  store i64 %456, ptr %78, align 8, !tbaa !9
  %457 = load i64, ptr %78, align 8, !tbaa !9
  %458 = load ptr, ptr %21, align 8, !tbaa !5
  %459 = load i64, ptr %458, align 8, !tbaa !9
  %460 = add nsw i64 %457, %459
  store i64 %460, ptr %70, align 8, !tbaa !9
  %461 = load ptr, ptr %21, align 8, !tbaa !5
  %462 = load ptr, ptr %22, align 8, !tbaa !5
  %463 = load i64, ptr %37, align 8, !tbaa !9
  %464 = getelementptr inbounds %struct.complex, ptr %462, i64 %463
  %465 = load ptr, ptr %23, align 8, !tbaa !5
  %466 = load ptr, ptr %24, align 8, !tbaa !5
  %467 = load i64, ptr %39, align 8, !tbaa !9
  %468 = getelementptr inbounds %struct.complex, ptr %466, i64 %467
  %469 = load ptr, ptr %25, align 8, !tbaa !5
  %470 = load ptr, ptr %34, align 8, !tbaa !5
  %471 = load i64, ptr %68, align 8, !tbaa !9
  %472 = getelementptr inbounds float, ptr %470, i64 %471
  %473 = load ptr, ptr %34, align 8, !tbaa !5
  %474 = load i64, ptr %78, align 8, !tbaa !9
  %475 = getelementptr inbounds float, ptr %473, i64 %474
  %476 = load ptr, ptr %34, align 8, !tbaa !5
  %477 = load i64, ptr %70, align 8, !tbaa !9
  %478 = getelementptr inbounds float, ptr %476, i64 %477
  %479 = call i32 @cggbal_(ptr noundef @.str.12, ptr noundef %461, ptr noundef %464, ptr noundef %465, ptr noundef %468, ptr noundef %469, ptr noundef %57, ptr noundef %56, ptr noundef %472, ptr noundef %475, ptr noundef %478, ptr noundef %62)
  %480 = load i64, ptr %56, align 8, !tbaa !9
  %481 = add nsw i64 %480, 1
  %482 = load i64, ptr %57, align 8, !tbaa !9
  %483 = sub nsw i64 %481, %482
  store i64 %483, ptr %71, align 8, !tbaa !9
  %484 = load i64, ptr %59, align 8, !tbaa !9
  %485 = icmp ne i64 %484, 0
  br i1 %485, label %486, label %492

486:                                              ; preds = %453
  %487 = load ptr, ptr %21, align 8, !tbaa !5
  %488 = load i64, ptr %487, align 8, !tbaa !9
  %489 = add nsw i64 %488, 1
  %490 = load i64, ptr %57, align 8, !tbaa !9
  %491 = sub nsw i64 %489, %490
  store i64 %491, ptr %69, align 8, !tbaa !9
  br label %494

492:                                              ; preds = %453
  %493 = load i64, ptr %71, align 8, !tbaa !9
  store i64 %493, ptr %69, align 8, !tbaa !9
  br label %494

494:                                              ; preds = %492, %486
  store i64 1, ptr %63, align 8, !tbaa !9
  %495 = load i64, ptr %63, align 8, !tbaa !9
  %496 = load i64, ptr %71, align 8, !tbaa !9
  %497 = add nsw i64 %495, %496
  store i64 %497, ptr %67, align 8, !tbaa !9
  %498 = load ptr, ptr %33, align 8, !tbaa !5
  %499 = load i64, ptr %498, align 8, !tbaa !9
  %500 = add nsw i64 %499, 1
  %501 = load i64, ptr %67, align 8, !tbaa !9
  %502 = sub nsw i64 %500, %501
  store i64 %502, ptr %44, align 8, !tbaa !9
  %503 = load ptr, ptr %24, align 8, !tbaa !5
  %504 = load i64, ptr %57, align 8, !tbaa !9
  %505 = load i64, ptr %57, align 8, !tbaa !9
  %506 = load i64, ptr %38, align 8, !tbaa !9
  %507 = mul nsw i64 %505, %506
  %508 = add nsw i64 %504, %507
  %509 = getelementptr inbounds %struct.complex, ptr %503, i64 %508
  %510 = load ptr, ptr %25, align 8, !tbaa !5
  %511 = load ptr, ptr %32, align 8, !tbaa !5
  %512 = load i64, ptr %63, align 8, !tbaa !9
  %513 = getelementptr inbounds %struct.complex, ptr %511, i64 %512
  %514 = load ptr, ptr %32, align 8, !tbaa !5
  %515 = load i64, ptr %67, align 8, !tbaa !9
  %516 = getelementptr inbounds %struct.complex, ptr %514, i64 %515
  %517 = call i32 @cgeqrf_(ptr noundef %71, ptr noundef %69, ptr noundef %509, ptr noundef %510, ptr noundef %513, ptr noundef %516, ptr noundef %44, ptr noundef %62)
  %518 = load ptr, ptr %33, align 8, !tbaa !5
  %519 = load i64, ptr %518, align 8, !tbaa !9
  %520 = add nsw i64 %519, 1
  %521 = load i64, ptr %67, align 8, !tbaa !9
  %522 = sub nsw i64 %520, %521
  store i64 %522, ptr %44, align 8, !tbaa !9
  %523 = load ptr, ptr %24, align 8, !tbaa !5
  %524 = load i64, ptr %57, align 8, !tbaa !9
  %525 = load i64, ptr %57, align 8, !tbaa !9
  %526 = load i64, ptr %38, align 8, !tbaa !9
  %527 = mul nsw i64 %525, %526
  %528 = add nsw i64 %524, %527
  %529 = getelementptr inbounds %struct.complex, ptr %523, i64 %528
  %530 = load ptr, ptr %25, align 8, !tbaa !5
  %531 = load ptr, ptr %32, align 8, !tbaa !5
  %532 = load i64, ptr %63, align 8, !tbaa !9
  %533 = getelementptr inbounds %struct.complex, ptr %531, i64 %532
  %534 = load ptr, ptr %22, align 8, !tbaa !5
  %535 = load i64, ptr %57, align 8, !tbaa !9
  %536 = load i64, ptr %57, align 8, !tbaa !9
  %537 = load i64, ptr %36, align 8, !tbaa !9
  %538 = mul nsw i64 %536, %537
  %539 = add nsw i64 %535, %538
  %540 = getelementptr inbounds %struct.complex, ptr %534, i64 %539
  %541 = load ptr, ptr %23, align 8, !tbaa !5
  %542 = load ptr, ptr %32, align 8, !tbaa !5
  %543 = load i64, ptr %67, align 8, !tbaa !9
  %544 = getelementptr inbounds %struct.complex, ptr %542, i64 %543
  %545 = call i32 @cunmqr_(ptr noundef @.str.13, ptr noundef @.str.14, ptr noundef %71, ptr noundef %69, ptr noundef %71, ptr noundef %529, ptr noundef %530, ptr noundef %533, ptr noundef %540, ptr noundef %541, ptr noundef %544, ptr noundef %44, ptr noundef %62)
  %546 = load i64, ptr %65, align 8, !tbaa !9
  %547 = icmp ne i64 %546, 0
  br i1 %547, label %548, label %603

548:                                              ; preds = %494
  %549 = load ptr, ptr %21, align 8, !tbaa !5
  %550 = load ptr, ptr %21, align 8, !tbaa !5
  %551 = load ptr, ptr %28, align 8, !tbaa !5
  %552 = load i64, ptr %41, align 8, !tbaa !9
  %553 = getelementptr inbounds %struct.complex, ptr %551, i64 %552
  %554 = load ptr, ptr %29, align 8, !tbaa !5
  %555 = call i32 @claset_(ptr noundef @.str.15, ptr noundef %549, ptr noundef %550, ptr noundef @c_b1, ptr noundef @c_b2, ptr noundef %553, ptr noundef %554)
  %556 = load i64, ptr %71, align 8, !tbaa !9
  %557 = icmp sgt i64 %556, 1
  br i1 %557, label %558, label %582

558:                                              ; preds = %548
  %559 = load i64, ptr %71, align 8, !tbaa !9
  %560 = sub nsw i64 %559, 1
  store i64 %560, ptr %44, align 8, !tbaa !9
  %561 = load i64, ptr %71, align 8, !tbaa !9
  %562 = sub nsw i64 %561, 1
  store i64 %562, ptr %45, align 8, !tbaa !9
  %563 = load ptr, ptr %24, align 8, !tbaa !5
  %564 = load i64, ptr %57, align 8, !tbaa !9
  %565 = add nsw i64 %564, 1
  %566 = load i64, ptr %57, align 8, !tbaa !9
  %567 = load i64, ptr %38, align 8, !tbaa !9
  %568 = mul nsw i64 %566, %567
  %569 = add nsw i64 %565, %568
  %570 = getelementptr inbounds %struct.complex, ptr %563, i64 %569
  %571 = load ptr, ptr %25, align 8, !tbaa !5
  %572 = load ptr, ptr %28, align 8, !tbaa !5
  %573 = load i64, ptr %57, align 8, !tbaa !9
  %574 = add nsw i64 %573, 1
  %575 = load i64, ptr %57, align 8, !tbaa !9
  %576 = load i64, ptr %40, align 8, !tbaa !9
  %577 = mul nsw i64 %575, %576
  %578 = add nsw i64 %574, %577
  %579 = getelementptr inbounds %struct.complex, ptr %572, i64 %578
  %580 = load ptr, ptr %29, align 8, !tbaa !5
  %581 = call i32 @clacpy_(ptr noundef @.str.13, ptr noundef %44, ptr noundef %45, ptr noundef %570, ptr noundef %571, ptr noundef %579, ptr noundef %580)
  br label %582

582:                                              ; preds = %558, %548
  %583 = load ptr, ptr %33, align 8, !tbaa !5
  %584 = load i64, ptr %583, align 8, !tbaa !9
  %585 = add nsw i64 %584, 1
  %586 = load i64, ptr %67, align 8, !tbaa !9
  %587 = sub nsw i64 %585, %586
  store i64 %587, ptr %44, align 8, !tbaa !9
  %588 = load ptr, ptr %28, align 8, !tbaa !5
  %589 = load i64, ptr %57, align 8, !tbaa !9
  %590 = load i64, ptr %57, align 8, !tbaa !9
  %591 = load i64, ptr %40, align 8, !tbaa !9
  %592 = mul nsw i64 %590, %591
  %593 = add nsw i64 %589, %592
  %594 = getelementptr inbounds %struct.complex, ptr %588, i64 %593
  %595 = load ptr, ptr %29, align 8, !tbaa !5
  %596 = load ptr, ptr %32, align 8, !tbaa !5
  %597 = load i64, ptr %63, align 8, !tbaa !9
  %598 = getelementptr inbounds %struct.complex, ptr %596, i64 %597
  %599 = load ptr, ptr %32, align 8, !tbaa !5
  %600 = load i64, ptr %67, align 8, !tbaa !9
  %601 = getelementptr inbounds %struct.complex, ptr %599, i64 %600
  %602 = call i32 @cungqr_(ptr noundef %71, ptr noundef %71, ptr noundef %71, ptr noundef %594, ptr noundef %595, ptr noundef %598, ptr noundef %601, ptr noundef %44, ptr noundef %62)
  br label %603

603:                                              ; preds = %582, %494
  %604 = load i64, ptr %66, align 8, !tbaa !9
  %605 = icmp ne i64 %604, 0
  br i1 %605, label %606, label %614

606:                                              ; preds = %603
  %607 = load ptr, ptr %21, align 8, !tbaa !5
  %608 = load ptr, ptr %21, align 8, !tbaa !5
  %609 = load ptr, ptr %30, align 8, !tbaa !5
  %610 = load i64, ptr %43, align 8, !tbaa !9
  %611 = getelementptr inbounds %struct.complex, ptr %609, i64 %610
  %612 = load ptr, ptr %31, align 8, !tbaa !5
  %613 = call i32 @claset_(ptr noundef @.str.15, ptr noundef %607, ptr noundef %608, ptr noundef @c_b1, ptr noundef @c_b2, ptr noundef %611, ptr noundef %612)
  br label %614

614:                                              ; preds = %606, %603
  %615 = load i64, ptr %59, align 8, !tbaa !9
  %616 = icmp ne i64 %615, 0
  br i1 %616, label %617, label %638

617:                                              ; preds = %614
  %618 = load ptr, ptr %19, align 8, !tbaa !5
  %619 = load ptr, ptr %20, align 8, !tbaa !5
  %620 = load ptr, ptr %21, align 8, !tbaa !5
  %621 = load ptr, ptr %22, align 8, !tbaa !5
  %622 = load i64, ptr %37, align 8, !tbaa !9
  %623 = getelementptr inbounds %struct.complex, ptr %621, i64 %622
  %624 = load ptr, ptr %23, align 8, !tbaa !5
  %625 = load ptr, ptr %24, align 8, !tbaa !5
  %626 = load i64, ptr %39, align 8, !tbaa !9
  %627 = getelementptr inbounds %struct.complex, ptr %625, i64 %626
  %628 = load ptr, ptr %25, align 8, !tbaa !5
  %629 = load ptr, ptr %28, align 8, !tbaa !5
  %630 = load i64, ptr %41, align 8, !tbaa !9
  %631 = getelementptr inbounds %struct.complex, ptr %629, i64 %630
  %632 = load ptr, ptr %29, align 8, !tbaa !5
  %633 = load ptr, ptr %30, align 8, !tbaa !5
  %634 = load i64, ptr %43, align 8, !tbaa !9
  %635 = getelementptr inbounds %struct.complex, ptr %633, i64 %634
  %636 = load ptr, ptr %31, align 8, !tbaa !5
  %637 = call i32 @cgghrd_(ptr noundef %618, ptr noundef %619, ptr noundef %620, ptr noundef %57, ptr noundef %56, ptr noundef %623, ptr noundef %624, ptr noundef %627, ptr noundef %628, ptr noundef %631, ptr noundef %632, ptr noundef %635, ptr noundef %636, ptr noundef %62)
  br label %664

638:                                              ; preds = %614
  %639 = load ptr, ptr %22, align 8, !tbaa !5
  %640 = load i64, ptr %57, align 8, !tbaa !9
  %641 = load i64, ptr %57, align 8, !tbaa !9
  %642 = load i64, ptr %36, align 8, !tbaa !9
  %643 = mul nsw i64 %641, %642
  %644 = add nsw i64 %640, %643
  %645 = getelementptr inbounds %struct.complex, ptr %639, i64 %644
  %646 = load ptr, ptr %23, align 8, !tbaa !5
  %647 = load ptr, ptr %24, align 8, !tbaa !5
  %648 = load i64, ptr %57, align 8, !tbaa !9
  %649 = load i64, ptr %57, align 8, !tbaa !9
  %650 = load i64, ptr %38, align 8, !tbaa !9
  %651 = mul nsw i64 %649, %650
  %652 = add nsw i64 %648, %651
  %653 = getelementptr inbounds %struct.complex, ptr %647, i64 %652
  %654 = load ptr, ptr %25, align 8, !tbaa !5
  %655 = load ptr, ptr %28, align 8, !tbaa !5
  %656 = load i64, ptr %41, align 8, !tbaa !9
  %657 = getelementptr inbounds %struct.complex, ptr %655, i64 %656
  %658 = load ptr, ptr %29, align 8, !tbaa !5
  %659 = load ptr, ptr %30, align 8, !tbaa !5
  %660 = load i64, ptr %43, align 8, !tbaa !9
  %661 = getelementptr inbounds %struct.complex, ptr %659, i64 %660
  %662 = load ptr, ptr %31, align 8, !tbaa !5
  %663 = call i32 @cgghrd_(ptr noundef @.str, ptr noundef @.str, ptr noundef %71, ptr noundef @c__1, ptr noundef %71, ptr noundef %645, ptr noundef %646, ptr noundef %653, ptr noundef %654, ptr noundef %657, ptr noundef %658, ptr noundef %661, ptr noundef %662, ptr noundef %62)
  br label %664

664:                                              ; preds = %638, %617
  %665 = load i64, ptr %63, align 8, !tbaa !9
  store i64 %665, ptr %67, align 8, !tbaa !9
  %666 = load i64, ptr %59, align 8, !tbaa !9
  %667 = icmp ne i64 %666, 0
  br i1 %667, label %668, label %670

668:                                              ; preds = %664
  %669 = getelementptr inbounds [1 x i8], ptr %75, i64 0, i64 0
  store i8 83, ptr %669, align 1, !tbaa !16
  br label %672

670:                                              ; preds = %664
  %671 = getelementptr inbounds [1 x i8], ptr %75, i64 0, i64 0
  store i8 69, ptr %671, align 1, !tbaa !16
  br label %672

672:                                              ; preds = %670, %668
  %673 = load ptr, ptr %33, align 8, !tbaa !5
  %674 = load i64, ptr %673, align 8, !tbaa !9
  %675 = add nsw i64 %674, 1
  %676 = load i64, ptr %67, align 8, !tbaa !9
  %677 = sub nsw i64 %675, %676
  store i64 %677, ptr %44, align 8, !tbaa !9
  %678 = getelementptr inbounds [1 x i8], ptr %75, i64 0, i64 0
  %679 = load ptr, ptr %19, align 8, !tbaa !5
  %680 = load ptr, ptr %20, align 8, !tbaa !5
  %681 = load ptr, ptr %21, align 8, !tbaa !5
  %682 = load ptr, ptr %22, align 8, !tbaa !5
  %683 = load i64, ptr %37, align 8, !tbaa !9
  %684 = getelementptr inbounds %struct.complex, ptr %682, i64 %683
  %685 = load ptr, ptr %23, align 8, !tbaa !5
  %686 = load ptr, ptr %24, align 8, !tbaa !5
  %687 = load i64, ptr %39, align 8, !tbaa !9
  %688 = getelementptr inbounds %struct.complex, ptr %686, i64 %687
  %689 = load ptr, ptr %25, align 8, !tbaa !5
  %690 = load ptr, ptr %26, align 8, !tbaa !5
  %691 = getelementptr inbounds %struct.complex, ptr %690, i64 1
  %692 = load ptr, ptr %27, align 8, !tbaa !5
  %693 = getelementptr inbounds %struct.complex, ptr %692, i64 1
  %694 = load ptr, ptr %28, align 8, !tbaa !5
  %695 = load i64, ptr %41, align 8, !tbaa !9
  %696 = getelementptr inbounds %struct.complex, ptr %694, i64 %695
  %697 = load ptr, ptr %29, align 8, !tbaa !5
  %698 = load ptr, ptr %30, align 8, !tbaa !5
  %699 = load i64, ptr %43, align 8, !tbaa !9
  %700 = getelementptr inbounds %struct.complex, ptr %698, i64 %699
  %701 = load ptr, ptr %31, align 8, !tbaa !5
  %702 = load ptr, ptr %32, align 8, !tbaa !5
  %703 = load i64, ptr %67, align 8, !tbaa !9
  %704 = getelementptr inbounds %struct.complex, ptr %702, i64 %703
  %705 = load ptr, ptr %34, align 8, !tbaa !5
  %706 = load i64, ptr %70, align 8, !tbaa !9
  %707 = getelementptr inbounds float, ptr %705, i64 %706
  %708 = call i32 @chgeqz_(ptr noundef %678, ptr noundef %679, ptr noundef %680, ptr noundef %681, ptr noundef %57, ptr noundef %56, ptr noundef %684, ptr noundef %685, ptr noundef %688, ptr noundef %689, ptr noundef %691, ptr noundef %693, ptr noundef %696, ptr noundef %697, ptr noundef %700, ptr noundef %701, ptr noundef %704, ptr noundef %44, ptr noundef %707, ptr noundef %62)
  %709 = load i64, ptr %62, align 8, !tbaa !9
  %710 = icmp ne i64 %709, 0
  br i1 %710, label %711, label %746

711:                                              ; preds = %672
  %712 = load i64, ptr %62, align 8, !tbaa !9
  %713 = icmp sgt i64 %712, 0
  br i1 %713, label %714, label %722

714:                                              ; preds = %711
  %715 = load i64, ptr %62, align 8, !tbaa !9
  %716 = load ptr, ptr %21, align 8, !tbaa !5
  %717 = load i64, ptr %716, align 8, !tbaa !9
  %718 = icmp sle i64 %715, %717
  br i1 %718, label %719, label %722

719:                                              ; preds = %714
  %720 = load i64, ptr %62, align 8, !tbaa !9
  %721 = load ptr, ptr %35, align 8, !tbaa !5
  store i64 %720, ptr %721, align 8, !tbaa !9
  br label %745

722:                                              ; preds = %714, %711
  %723 = load i64, ptr %62, align 8, !tbaa !9
  %724 = load ptr, ptr %21, align 8, !tbaa !5
  %725 = load i64, ptr %724, align 8, !tbaa !9
  %726 = icmp sgt i64 %723, %725
  br i1 %726, label %727, label %739

727:                                              ; preds = %722
  %728 = load i64, ptr %62, align 8, !tbaa !9
  %729 = load ptr, ptr %21, align 8, !tbaa !5
  %730 = load i64, ptr %729, align 8, !tbaa !9
  %731 = shl i64 %730, 1
  %732 = icmp sle i64 %728, %731
  br i1 %732, label %733, label %739

733:                                              ; preds = %727
  %734 = load i64, ptr %62, align 8, !tbaa !9
  %735 = load ptr, ptr %21, align 8, !tbaa !5
  %736 = load i64, ptr %735, align 8, !tbaa !9
  %737 = sub nsw i64 %734, %736
  %738 = load ptr, ptr %35, align 8, !tbaa !5
  store i64 %737, ptr %738, align 8, !tbaa !9
  br label %744

739:                                              ; preds = %727, %722
  %740 = load ptr, ptr %21, align 8, !tbaa !5
  %741 = load i64, ptr %740, align 8, !tbaa !9
  %742 = add nsw i64 %741, 1
  %743 = load ptr, ptr %35, align 8, !tbaa !5
  store i64 %742, ptr %743, align 8, !tbaa !9
  br label %744

744:                                              ; preds = %739, %733
  br label %745

745:                                              ; preds = %744, %719
  br label %1115

746:                                              ; preds = %672
  %747 = load i64, ptr %59, align 8, !tbaa !9
  %748 = icmp ne i64 %747, 0
  br i1 %748, label %749, label %1096

749:                                              ; preds = %746
  %750 = load i64, ptr %65, align 8, !tbaa !9
  %751 = icmp ne i64 %750, 0
  br i1 %751, label %752, label %760

752:                                              ; preds = %749
  %753 = load i64, ptr %66, align 8, !tbaa !9
  %754 = icmp ne i64 %753, 0
  br i1 %754, label %755, label %757

755:                                              ; preds = %752
  %756 = getelementptr inbounds [1 x i8], ptr %75, i64 0, i64 0
  store i8 66, ptr %756, align 1, !tbaa !16
  br label %759

757:                                              ; preds = %752
  %758 = getelementptr inbounds [1 x i8], ptr %75, i64 0, i64 0
  store i8 76, ptr %758, align 1, !tbaa !16
  br label %759

759:                                              ; preds = %757, %755
  br label %762

760:                                              ; preds = %749
  %761 = getelementptr inbounds [1 x i8], ptr %75, i64 0, i64 0
  store i8 82, ptr %761, align 1, !tbaa !16
  br label %762

762:                                              ; preds = %760, %759
  %763 = getelementptr inbounds [1 x i8], ptr %75, i64 0, i64 0
  %764 = getelementptr inbounds [1 x i64], ptr %74, i64 0, i64 0
  %765 = load ptr, ptr %21, align 8, !tbaa !5
  %766 = load ptr, ptr %22, align 8, !tbaa !5
  %767 = load i64, ptr %37, align 8, !tbaa !9
  %768 = getelementptr inbounds %struct.complex, ptr %766, i64 %767
  %769 = load ptr, ptr %23, align 8, !tbaa !5
  %770 = load ptr, ptr %24, align 8, !tbaa !5
  %771 = load i64, ptr %39, align 8, !tbaa !9
  %772 = getelementptr inbounds %struct.complex, ptr %770, i64 %771
  %773 = load ptr, ptr %25, align 8, !tbaa !5
  %774 = load ptr, ptr %28, align 8, !tbaa !5
  %775 = load i64, ptr %41, align 8, !tbaa !9
  %776 = getelementptr inbounds %struct.complex, ptr %774, i64 %775
  %777 = load ptr, ptr %29, align 8, !tbaa !5
  %778 = load ptr, ptr %30, align 8, !tbaa !5
  %779 = load i64, ptr %43, align 8, !tbaa !9
  %780 = getelementptr inbounds %struct.complex, ptr %778, i64 %779
  %781 = load ptr, ptr %31, align 8, !tbaa !5
  %782 = load ptr, ptr %21, align 8, !tbaa !5
  %783 = load ptr, ptr %32, align 8, !tbaa !5
  %784 = load i64, ptr %67, align 8, !tbaa !9
  %785 = getelementptr inbounds %struct.complex, ptr %783, i64 %784
  %786 = load ptr, ptr %34, align 8, !tbaa !5
  %787 = load i64, ptr %70, align 8, !tbaa !9
  %788 = getelementptr inbounds float, ptr %786, i64 %787
  %789 = call i32 @ctgevc_(ptr noundef %763, ptr noundef @.str.8, ptr noundef %764, ptr noundef %765, ptr noundef %768, ptr noundef %769, ptr noundef %772, ptr noundef %773, ptr noundef %776, ptr noundef %777, ptr noundef %780, ptr noundef %781, ptr noundef %782, ptr noundef %54, ptr noundef %785, ptr noundef %788, ptr noundef %62)
  %790 = load i64, ptr %62, align 8, !tbaa !9
  %791 = icmp ne i64 %790, 0
  br i1 %791, label %792, label %797

792:                                              ; preds = %762
  %793 = load ptr, ptr %21, align 8, !tbaa !5
  %794 = load i64, ptr %793, align 8, !tbaa !9
  %795 = add nsw i64 %794, 2
  %796 = load ptr, ptr %35, align 8, !tbaa !5
  store i64 %795, ptr %796, align 8, !tbaa !9
  br label %1115

797:                                              ; preds = %762
  %798 = load i64, ptr %65, align 8, !tbaa !9
  %799 = icmp ne i64 %798, 0
  br i1 %799, label %800, label %946

800:                                              ; preds = %797
  %801 = load ptr, ptr %21, align 8, !tbaa !5
  %802 = load ptr, ptr %34, align 8, !tbaa !5
  %803 = load i64, ptr %68, align 8, !tbaa !9
  %804 = getelementptr inbounds float, ptr %802, i64 %803
  %805 = load ptr, ptr %34, align 8, !tbaa !5
  %806 = load i64, ptr %78, align 8, !tbaa !9
  %807 = getelementptr inbounds float, ptr %805, i64 %806
  %808 = load ptr, ptr %21, align 8, !tbaa !5
  %809 = load ptr, ptr %28, align 8, !tbaa !5
  %810 = load i64, ptr %41, align 8, !tbaa !9
  %811 = getelementptr inbounds %struct.complex, ptr %809, i64 %810
  %812 = load ptr, ptr %29, align 8, !tbaa !5
  %813 = call i32 @cggbak_(ptr noundef @.str.12, ptr noundef @.str.13, ptr noundef %801, ptr noundef %57, ptr noundef %56, ptr noundef %804, ptr noundef %807, ptr noundef %808, ptr noundef %811, ptr noundef %812, ptr noundef %62)
  %814 = load ptr, ptr %21, align 8, !tbaa !5
  %815 = load i64, ptr %814, align 8, !tbaa !9
  store i64 %815, ptr %44, align 8, !tbaa !9
  store i64 1, ptr %53, align 8, !tbaa !9
  br label %816

816:                                              ; preds = %942, %800
  %817 = load i64, ptr %53, align 8, !tbaa !9
  %818 = load i64, ptr %44, align 8, !tbaa !9
  %819 = icmp sle i64 %817, %818
  br i1 %819, label %820, label %945

820:                                              ; preds = %816
  store float 0.000000e+00, ptr %64, align 4, !tbaa !15
  %821 = load ptr, ptr %21, align 8, !tbaa !5
  %822 = load i64, ptr %821, align 8, !tbaa !9
  store i64 %822, ptr %45, align 8, !tbaa !9
  store i64 1, ptr %55, align 8, !tbaa !9
  br label %823

823:                                              ; preds = %881, %820
  %824 = load i64, ptr %55, align 8, !tbaa !9
  %825 = load i64, ptr %45, align 8, !tbaa !9
  %826 = icmp sle i64 %824, %825
  br i1 %826, label %827, label %884

827:                                              ; preds = %823
  %828 = load i64, ptr %55, align 8, !tbaa !9
  %829 = load i64, ptr %53, align 8, !tbaa !9
  %830 = load i64, ptr %40, align 8, !tbaa !9
  %831 = mul nsw i64 %829, %830
  %832 = add nsw i64 %828, %831
  store i64 %832, ptr %46, align 8, !tbaa !9
  %833 = load float, ptr %64, align 4, !tbaa !15
  store float %833, ptr %50, align 4, !tbaa !15
  %834 = load ptr, ptr %28, align 8, !tbaa !5
  %835 = load i64, ptr %46, align 8, !tbaa !9
  %836 = getelementptr inbounds %struct.complex, ptr %834, i64 %835
  %837 = getelementptr inbounds %struct.complex, ptr %836, i32 0, i32 0
  %838 = load float, ptr %837, align 4, !tbaa !11
  store float %838, ptr %48, align 4, !tbaa !15
  %839 = load float, ptr %48, align 4, !tbaa !15
  %840 = fcmp oge float %839, 0.000000e+00
  br i1 %840, label %841, label %843

841:                                              ; preds = %827
  %842 = load float, ptr %48, align 4, !tbaa !15
  br label %846

843:                                              ; preds = %827
  %844 = load float, ptr %48, align 4, !tbaa !15
  %845 = fneg float %844
  br label %846

846:                                              ; preds = %843, %841
  %847 = phi float [ %842, %841 ], [ %845, %843 ]
  %848 = fpext float %847 to double
  %849 = load ptr, ptr %28, align 8, !tbaa !5
  %850 = load i64, ptr %55, align 8, !tbaa !9
  %851 = load i64, ptr %53, align 8, !tbaa !9
  %852 = load i64, ptr %40, align 8, !tbaa !9
  %853 = mul nsw i64 %851, %852
  %854 = add nsw i64 %850, %853
  %855 = getelementptr inbounds %struct.complex, ptr %849, i64 %854
  %856 = call double @r_imag(ptr noundef %855)
  %857 = fptrunc double %856 to float
  store float %857, ptr %49, align 4, !tbaa !15
  %858 = load float, ptr %49, align 4, !tbaa !15
  %859 = fcmp oge float %858, 0.000000e+00
  br i1 %859, label %860, label %862

860:                                              ; preds = %846
  %861 = load float, ptr %49, align 4, !tbaa !15
  br label %865

862:                                              ; preds = %846
  %863 = load float, ptr %49, align 4, !tbaa !15
  %864 = fneg float %863
  br label %865

865:                                              ; preds = %862, %860
  %866 = phi float [ %861, %860 ], [ %864, %862 ]
  %867 = fpext float %866 to double
  %868 = fadd double %848, %867
  %869 = fptrunc double %868 to float
  store float %869, ptr %51, align 4, !tbaa !15
  %870 = load float, ptr %50, align 4, !tbaa !15
  %871 = load float, ptr %51, align 4, !tbaa !15
  %872 = fcmp oge float %870, %871
  br i1 %872, label %873, label %875

873:                                              ; preds = %865
  %874 = load float, ptr %50, align 4, !tbaa !15
  br label %877

875:                                              ; preds = %865
  %876 = load float, ptr %51, align 4, !tbaa !15
  br label %877

877:                                              ; preds = %875, %873
  %878 = phi float [ %874, %873 ], [ %876, %875 ]
  %879 = fpext float %878 to double
  %880 = fptrunc double %879 to float
  store float %880, ptr %64, align 4, !tbaa !15
  br label %881

881:                                              ; preds = %877
  %882 = load i64, ptr %55, align 8, !tbaa !9
  %883 = add nsw i64 %882, 1
  store i64 %883, ptr %55, align 8, !tbaa !9
  br label %823, !llvm.loop !17

884:                                              ; preds = %823
  %885 = load float, ptr %64, align 4, !tbaa !15
  %886 = load float, ptr %83, align 4, !tbaa !15
  %887 = fcmp olt float %885, %886
  br i1 %887, label %888, label %889

888:                                              ; preds = %884
  br label %941

889:                                              ; preds = %884
  %890 = load float, ptr %64, align 4, !tbaa !15
  %891 = fdiv float 1.000000e+00, %890
  store float %891, ptr %64, align 4, !tbaa !15
  %892 = load ptr, ptr %21, align 8, !tbaa !5
  %893 = load i64, ptr %892, align 8, !tbaa !9
  store i64 %893, ptr %45, align 8, !tbaa !9
  store i64 1, ptr %55, align 8, !tbaa !9
  br label %894

894:                                              ; preds = %937, %889
  %895 = load i64, ptr %55, align 8, !tbaa !9
  %896 = load i64, ptr %45, align 8, !tbaa !9
  %897 = icmp sle i64 %895, %896
  br i1 %897, label %898, label %940

898:                                              ; preds = %894
  %899 = load i64, ptr %55, align 8, !tbaa !9
  %900 = load i64, ptr %53, align 8, !tbaa !9
  %901 = load i64, ptr %40, align 8, !tbaa !9
  %902 = mul nsw i64 %900, %901
  %903 = add nsw i64 %899, %902
  store i64 %903, ptr %46, align 8, !tbaa !9
  %904 = load i64, ptr %55, align 8, !tbaa !9
  %905 = load i64, ptr %53, align 8, !tbaa !9
  %906 = load i64, ptr %40, align 8, !tbaa !9
  %907 = mul nsw i64 %905, %906
  %908 = add nsw i64 %904, %907
  store i64 %908, ptr %47, align 8, !tbaa !9
  %909 = load float, ptr %64, align 4, !tbaa !15
  %910 = load ptr, ptr %28, align 8, !tbaa !5
  %911 = load i64, ptr %47, align 8, !tbaa !9
  %912 = getelementptr inbounds %struct.complex, ptr %910, i64 %911
  %913 = getelementptr inbounds %struct.complex, ptr %912, i32 0, i32 0
  %914 = load float, ptr %913, align 4, !tbaa !11
  %915 = fmul float %909, %914
  %916 = getelementptr inbounds %struct.complex, ptr %52, i32 0, i32 0
  store float %915, ptr %916, align 4, !tbaa !11
  %917 = load float, ptr %64, align 4, !tbaa !15
  %918 = load ptr, ptr %28, align 8, !tbaa !5
  %919 = load i64, ptr %47, align 8, !tbaa !9
  %920 = getelementptr inbounds %struct.complex, ptr %918, i64 %919
  %921 = getelementptr inbounds %struct.complex, ptr %920, i32 0, i32 1
  %922 = load float, ptr %921, align 4, !tbaa !14
  %923 = fmul float %917, %922
  %924 = getelementptr inbounds %struct.complex, ptr %52, i32 0, i32 1
  store float %923, ptr %924, align 4, !tbaa !14
  %925 = getelementptr inbounds %struct.complex, ptr %52, i32 0, i32 0
  %926 = load float, ptr %925, align 4, !tbaa !11
  %927 = load ptr, ptr %28, align 8, !tbaa !5
  %928 = load i64, ptr %46, align 8, !tbaa !9
  %929 = getelementptr inbounds %struct.complex, ptr %927, i64 %928
  %930 = getelementptr inbounds %struct.complex, ptr %929, i32 0, i32 0
  store float %926, ptr %930, align 4, !tbaa !11
  %931 = getelementptr inbounds %struct.complex, ptr %52, i32 0, i32 1
  %932 = load float, ptr %931, align 4, !tbaa !14
  %933 = load ptr, ptr %28, align 8, !tbaa !5
  %934 = load i64, ptr %46, align 8, !tbaa !9
  %935 = getelementptr inbounds %struct.complex, ptr %933, i64 %934
  %936 = getelementptr inbounds %struct.complex, ptr %935, i32 0, i32 1
  store float %932, ptr %936, align 4, !tbaa !14
  br label %937

937:                                              ; preds = %898
  %938 = load i64, ptr %55, align 8, !tbaa !9
  %939 = add nsw i64 %938, 1
  store i64 %939, ptr %55, align 8, !tbaa !9
  br label %894, !llvm.loop !19

940:                                              ; preds = %894
  br label %941

941:                                              ; preds = %940, %888
  br label %942

942:                                              ; preds = %941
  %943 = load i64, ptr %53, align 8, !tbaa !9
  %944 = add nsw i64 %943, 1
  store i64 %944, ptr %53, align 8, !tbaa !9
  br label %816, !llvm.loop !20

945:                                              ; preds = %816
  br label %946

946:                                              ; preds = %945, %797
  %947 = load i64, ptr %66, align 8, !tbaa !9
  %948 = icmp ne i64 %947, 0
  br i1 %948, label %949, label %1095

949:                                              ; preds = %946
  %950 = load ptr, ptr %21, align 8, !tbaa !5
  %951 = load ptr, ptr %34, align 8, !tbaa !5
  %952 = load i64, ptr %68, align 8, !tbaa !9
  %953 = getelementptr inbounds float, ptr %951, i64 %952
  %954 = load ptr, ptr %34, align 8, !tbaa !5
  %955 = load i64, ptr %78, align 8, !tbaa !9
  %956 = getelementptr inbounds float, ptr %954, i64 %955
  %957 = load ptr, ptr %21, align 8, !tbaa !5
  %958 = load ptr, ptr %30, align 8, !tbaa !5
  %959 = load i64, ptr %43, align 8, !tbaa !9
  %960 = getelementptr inbounds %struct.complex, ptr %958, i64 %959
  %961 = load ptr, ptr %31, align 8, !tbaa !5
  %962 = call i32 @cggbak_(ptr noundef @.str.12, ptr noundef @.str.16, ptr noundef %950, ptr noundef %57, ptr noundef %56, ptr noundef %953, ptr noundef %956, ptr noundef %957, ptr noundef %960, ptr noundef %961, ptr noundef %62)
  %963 = load ptr, ptr %21, align 8, !tbaa !5
  %964 = load i64, ptr %963, align 8, !tbaa !9
  store i64 %964, ptr %44, align 8, !tbaa !9
  store i64 1, ptr %53, align 8, !tbaa !9
  br label %965

965:                                              ; preds = %1091, %949
  %966 = load i64, ptr %53, align 8, !tbaa !9
  %967 = load i64, ptr %44, align 8, !tbaa !9
  %968 = icmp sle i64 %966, %967
  br i1 %968, label %969, label %1094

969:                                              ; preds = %965
  store float 0.000000e+00, ptr %64, align 4, !tbaa !15
  %970 = load ptr, ptr %21, align 8, !tbaa !5
  %971 = load i64, ptr %970, align 8, !tbaa !9
  store i64 %971, ptr %45, align 8, !tbaa !9
  store i64 1, ptr %55, align 8, !tbaa !9
  br label %972

972:                                              ; preds = %1030, %969
  %973 = load i64, ptr %55, align 8, !tbaa !9
  %974 = load i64, ptr %45, align 8, !tbaa !9
  %975 = icmp sle i64 %973, %974
  br i1 %975, label %976, label %1033

976:                                              ; preds = %972
  %977 = load i64, ptr %55, align 8, !tbaa !9
  %978 = load i64, ptr %53, align 8, !tbaa !9
  %979 = load i64, ptr %42, align 8, !tbaa !9
  %980 = mul nsw i64 %978, %979
  %981 = add nsw i64 %977, %980
  store i64 %981, ptr %46, align 8, !tbaa !9
  %982 = load float, ptr %64, align 4, !tbaa !15
  store float %982, ptr %50, align 4, !tbaa !15
  %983 = load ptr, ptr %30, align 8, !tbaa !5
  %984 = load i64, ptr %46, align 8, !tbaa !9
  %985 = getelementptr inbounds %struct.complex, ptr %983, i64 %984
  %986 = getelementptr inbounds %struct.complex, ptr %985, i32 0, i32 0
  %987 = load float, ptr %986, align 4, !tbaa !11
  store float %987, ptr %48, align 4, !tbaa !15
  %988 = load float, ptr %48, align 4, !tbaa !15
  %989 = fcmp oge float %988, 0.000000e+00
  br i1 %989, label %990, label %992

990:                                              ; preds = %976
  %991 = load float, ptr %48, align 4, !tbaa !15
  br label %995

992:                                              ; preds = %976
  %993 = load float, ptr %48, align 4, !tbaa !15
  %994 = fneg float %993
  br label %995

995:                                              ; preds = %992, %990
  %996 = phi float [ %991, %990 ], [ %994, %992 ]
  %997 = fpext float %996 to double
  %998 = load ptr, ptr %30, align 8, !tbaa !5
  %999 = load i64, ptr %55, align 8, !tbaa !9
  %1000 = load i64, ptr %53, align 8, !tbaa !9
  %1001 = load i64, ptr %42, align 8, !tbaa !9
  %1002 = mul nsw i64 %1000, %1001
  %1003 = add nsw i64 %999, %1002
  %1004 = getelementptr inbounds %struct.complex, ptr %998, i64 %1003
  %1005 = call double @r_imag(ptr noundef %1004)
  %1006 = fptrunc double %1005 to float
  store float %1006, ptr %49, align 4, !tbaa !15
  %1007 = load float, ptr %49, align 4, !tbaa !15
  %1008 = fcmp oge float %1007, 0.000000e+00
  br i1 %1008, label %1009, label %1011

1009:                                             ; preds = %995
  %1010 = load float, ptr %49, align 4, !tbaa !15
  br label %1014

1011:                                             ; preds = %995
  %1012 = load float, ptr %49, align 4, !tbaa !15
  %1013 = fneg float %1012
  br label %1014

1014:                                             ; preds = %1011, %1009
  %1015 = phi float [ %1010, %1009 ], [ %1013, %1011 ]
  %1016 = fpext float %1015 to double
  %1017 = fadd double %997, %1016
  %1018 = fptrunc double %1017 to float
  store float %1018, ptr %51, align 4, !tbaa !15
  %1019 = load float, ptr %50, align 4, !tbaa !15
  %1020 = load float, ptr %51, align 4, !tbaa !15
  %1021 = fcmp oge float %1019, %1020
  br i1 %1021, label %1022, label %1024

1022:                                             ; preds = %1014
  %1023 = load float, ptr %50, align 4, !tbaa !15
  br label %1026

1024:                                             ; preds = %1014
  %1025 = load float, ptr %51, align 4, !tbaa !15
  br label %1026

1026:                                             ; preds = %1024, %1022
  %1027 = phi float [ %1023, %1022 ], [ %1025, %1024 ]
  %1028 = fpext float %1027 to double
  %1029 = fptrunc double %1028 to float
  store float %1029, ptr %64, align 4, !tbaa !15
  br label %1030

1030:                                             ; preds = %1026
  %1031 = load i64, ptr %55, align 8, !tbaa !9
  %1032 = add nsw i64 %1031, 1
  store i64 %1032, ptr %55, align 8, !tbaa !9
  br label %972, !llvm.loop !21

1033:                                             ; preds = %972
  %1034 = load float, ptr %64, align 4, !tbaa !15
  %1035 = load float, ptr %83, align 4, !tbaa !15
  %1036 = fcmp olt float %1034, %1035
  br i1 %1036, label %1037, label %1038

1037:                                             ; preds = %1033
  br label %1090

1038:                                             ; preds = %1033
  %1039 = load float, ptr %64, align 4, !tbaa !15
  %1040 = fdiv float 1.000000e+00, %1039
  store float %1040, ptr %64, align 4, !tbaa !15
  %1041 = load ptr, ptr %21, align 8, !tbaa !5
  %1042 = load i64, ptr %1041, align 8, !tbaa !9
  store i64 %1042, ptr %45, align 8, !tbaa !9
  store i64 1, ptr %55, align 8, !tbaa !9
  br label %1043

1043:                                             ; preds = %1086, %1038
  %1044 = load i64, ptr %55, align 8, !tbaa !9
  %1045 = load i64, ptr %45, align 8, !tbaa !9
  %1046 = icmp sle i64 %1044, %1045
  br i1 %1046, label %1047, label %1089

1047:                                             ; preds = %1043
  %1048 = load i64, ptr %55, align 8, !tbaa !9
  %1049 = load i64, ptr %53, align 8, !tbaa !9
  %1050 = load i64, ptr %42, align 8, !tbaa !9
  %1051 = mul nsw i64 %1049, %1050
  %1052 = add nsw i64 %1048, %1051
  store i64 %1052, ptr %46, align 8, !tbaa !9
  %1053 = load i64, ptr %55, align 8, !tbaa !9
  %1054 = load i64, ptr %53, align 8, !tbaa !9
  %1055 = load i64, ptr %42, align 8, !tbaa !9
  %1056 = mul nsw i64 %1054, %1055
  %1057 = add nsw i64 %1053, %1056
  store i64 %1057, ptr %47, align 8, !tbaa !9
  %1058 = load float, ptr %64, align 4, !tbaa !15
  %1059 = load ptr, ptr %30, align 8, !tbaa !5
  %1060 = load i64, ptr %47, align 8, !tbaa !9
  %1061 = getelementptr inbounds %struct.complex, ptr %1059, i64 %1060
  %1062 = getelementptr inbounds %struct.complex, ptr %1061, i32 0, i32 0
  %1063 = load float, ptr %1062, align 4, !tbaa !11
  %1064 = fmul float %1058, %1063
  %1065 = getelementptr inbounds %struct.complex, ptr %52, i32 0, i32 0
  store float %1064, ptr %1065, align 4, !tbaa !11
  %1066 = load float, ptr %64, align 4, !tbaa !15
  %1067 = load ptr, ptr %30, align 8, !tbaa !5
  %1068 = load i64, ptr %47, align 8, !tbaa !9
  %1069 = getelementptr inbounds %struct.complex, ptr %1067, i64 %1068
  %1070 = getelementptr inbounds %struct.complex, ptr %1069, i32 0, i32 1
  %1071 = load float, ptr %1070, align 4, !tbaa !14
  %1072 = fmul float %1066, %1071
  %1073 = getelementptr inbounds %struct.complex, ptr %52, i32 0, i32 1
  store float %1072, ptr %1073, align 4, !tbaa !14
  %1074 = getelementptr inbounds %struct.complex, ptr %52, i32 0, i32 0
  %1075 = load float, ptr %1074, align 4, !tbaa !11
  %1076 = load ptr, ptr %30, align 8, !tbaa !5
  %1077 = load i64, ptr %46, align 8, !tbaa !9
  %1078 = getelementptr inbounds %struct.complex, ptr %1076, i64 %1077
  %1079 = getelementptr inbounds %struct.complex, ptr %1078, i32 0, i32 0
  store float %1075, ptr %1079, align 4, !tbaa !11
  %1080 = getelementptr inbounds %struct.complex, ptr %52, i32 0, i32 1
  %1081 = load float, ptr %1080, align 4, !tbaa !14
  %1082 = load ptr, ptr %30, align 8, !tbaa !5
  %1083 = load i64, ptr %46, align 8, !tbaa !9
  %1084 = getelementptr inbounds %struct.complex, ptr %1082, i64 %1083
  %1085 = getelementptr inbounds %struct.complex, ptr %1084, i32 0, i32 1
  store float %1081, ptr %1085, align 4, !tbaa !14
  br label %1086

1086:                                             ; preds = %1047
  %1087 = load i64, ptr %55, align 8, !tbaa !9
  %1088 = add nsw i64 %1087, 1
  store i64 %1088, ptr %55, align 8, !tbaa !9
  br label %1043, !llvm.loop !22

1089:                                             ; preds = %1043
  br label %1090

1090:                                             ; preds = %1089, %1037
  br label %1091

1091:                                             ; preds = %1090
  %1092 = load i64, ptr %53, align 8, !tbaa !9
  %1093 = add nsw i64 %1092, 1
  store i64 %1093, ptr %53, align 8, !tbaa !9
  br label %965, !llvm.loop !23

1094:                                             ; preds = %965
  br label %1095

1095:                                             ; preds = %1094, %946
  br label %1096

1096:                                             ; preds = %1095, %746
  %1097 = load i64, ptr %72, align 8, !tbaa !9
  %1098 = icmp ne i64 %1097, 0
  br i1 %1098, label %1099, label %1105

1099:                                             ; preds = %1096
  %1100 = load ptr, ptr %21, align 8, !tbaa !5
  %1101 = load ptr, ptr %26, align 8, !tbaa !5
  %1102 = getelementptr inbounds %struct.complex, ptr %1101, i64 1
  %1103 = load ptr, ptr %21, align 8, !tbaa !5
  %1104 = call i32 @clascl_(ptr noundef @.str.11, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %80, ptr noundef %60, ptr noundef %1100, ptr noundef @c__1, ptr noundef %1102, ptr noundef %1103, ptr noundef %62)
  br label %1105

1105:                                             ; preds = %1099, %1096
  %1106 = load i64, ptr %73, align 8, !tbaa !9
  %1107 = icmp ne i64 %1106, 0
  br i1 %1107, label %1108, label %1114

1108:                                             ; preds = %1105
  %1109 = load ptr, ptr %21, align 8, !tbaa !5
  %1110 = load ptr, ptr %27, align 8, !tbaa !5
  %1111 = getelementptr inbounds %struct.complex, ptr %1110, i64 1
  %1112 = load ptr, ptr %21, align 8, !tbaa !5
  %1113 = call i32 @clascl_(ptr noundef @.str.11, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %82, ptr noundef %61, ptr noundef %1109, ptr noundef @c__1, ptr noundef %1111, ptr noundef %1112, ptr noundef %62)
  br label %1114

1114:                                             ; preds = %1108, %1105
  br label %1115

1115:                                             ; preds = %1114, %792, %745
  %1116 = load i64, ptr %84, align 8, !tbaa !9
  %1117 = sitofp i64 %1116 to float
  %1118 = load ptr, ptr %32, align 8, !tbaa !5
  %1119 = getelementptr inbounds %struct.complex, ptr %1118, i64 1
  %1120 = getelementptr inbounds %struct.complex, ptr %1119, i32 0, i32 0
  store float %1117, ptr %1120, align 4, !tbaa !11
  %1121 = load ptr, ptr %32, align 8, !tbaa !5
  %1122 = getelementptr inbounds %struct.complex, ptr %1121, i64 1
  %1123 = getelementptr inbounds %struct.complex, ptr %1122, i32 0, i32 1
  store float 0.000000e+00, ptr %1123, align 4, !tbaa !14
  store i32 0, ptr %18, align 4
  store i32 1, ptr %86, align 4
  br label %1124

1124:                                             ; preds = %1115, %360, %354, %346
  call void @llvm.lifetime.end.p0(i64 8, ptr %85) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %84) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %83) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %82) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %81) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %80) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %79) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %78) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %77) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %76) #4
  call void @llvm.lifetime.end.p0(i64 1, ptr %75) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %74) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %73) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %72) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %71) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %64) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %61) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %60) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %58) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #4
  %1125 = load i32, ptr %18, align 4
  ret i32 %1125
}

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

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

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

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

declare double @slamch_(ptr noundef) #2

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

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

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

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

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

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

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

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

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

declare double @r_imag(ptr noundef) #2

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"long", !7, i64 0}
!11 = !{!12, !13, i64 0}
!12 = !{!"", !13, i64 0, !13, i64 4}
!13 = !{!"float", !7, i64 0}
!14 = !{!12, !13, i64 4}
!15 = !{!13, !13, i64 0}
!16 = !{!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__1 = external hidden global i64, align 8
@.str.2 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [2 x i8], align 1
@c__0 = external hidden global i64, align 8
@.str.4 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [7 x i8], align 1
@c_n1 = external hidden global i64, align 8
@.str.6 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.15 = 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.16 = external hidden unnamed_addr constant [2 x i8], align 1

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

47:                                               ; preds = %17
  %48 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.1) #5
  %.not411 = icmp ne i64 %48, 0
  %49 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str) #5
  %.not412 = icmp eq i64 %49, 0
  br i1 %.not412, label %52, label %.thread

.thread518:                                       ; preds = %17
  %50 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str) #5
  %.not412519 = icmp eq i64 %50, 0
  br i1 %.not412519, label %.thread525, label %.thread.thread

.thread525:                                       ; preds = %.thread518
  %51 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.1) #5
  store i64 0, ptr %16, align 8, !tbaa !5
  br label %54

.thread.thread:                                   ; preds = %.thread518
  store i64 0, ptr %16, align 8, !tbaa !5
  br label %.thread437

52:                                               ; preds = %47
  %53 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.1) #5
  store i64 0, ptr %16, align 8, !tbaa !5
  br i1 %.not411, label %54, label %.thread449.sink.split

.thread:                                          ; preds = %47
  store i64 0, ptr %16, align 8, !tbaa !5
  br i1 %.not411, label %.thread437, label %.thread449.sink.split

54:                                               ; preds = %.thread525, %52
  %55 = phi i64 [ %51, %.thread525 ], [ %53, %52 ]
  %.not413.not = icmp eq i64 %55, 0
  br i1 %.not413.not, label %.thread449.sink.split, label %.thread437

.thread437:                                       ; preds = %.thread.thread, %.thread, %54
  %.not412520 = phi i1 [ true, %54 ], [ false, %.thread ], [ false, %.thread.thread ]
  %56 = phi i1 [ %.not, %54 ], [ %.not411, %.thread ], [ false, %.thread.thread ]
  %57 = phi i1 [ true, %54 ], [ %.not411, %.thread ], [ false, %.thread.thread ]
  %.in = load i64, ptr %14, align 8, !tbaa !5
  %58 = icmp eq i64 %.in, -1
  %59 = load i64, ptr %2, align 8, !tbaa !5
  %60 = icmp slt i64 %59, 0
  br i1 %60, label %.thread449.sink.split, label %61

61:                                               ; preds = %.thread437
  %62 = load i64, ptr %4, align 8, !tbaa !5
  %spec.select = tail call i64 @llvm.umax.i64(i64 %59, i64 1)
  %63 = icmp slt i64 %62, %spec.select
  br i1 %63, label %.thread449.sink.split, label %64

64:                                               ; preds = %61
  %65 = load i64, ptr %6, align 8, !tbaa !5
  %66 = icmp slt i64 %65, %spec.select
  br i1 %66, label %.thread449.sink.split, label %67

67:                                               ; preds = %64
  %68 = load i64, ptr %10, align 8, !tbaa !5
  %69 = icmp slt i64 %68, 1
  %70 = icmp ult i64 %68, %59
  %or.cond471 = and i1 %56, %70
  %or.cond473 = select i1 %69, i1 true, i1 %or.cond471
  br i1 %or.cond473, label %.thread449.sink.split, label %71

71:                                               ; preds = %67
  %72 = load i64, ptr %12, align 8, !tbaa !5
  %73 = icmp slt i64 %72, 1
  %74 = icmp ult i64 %72, %59
  %or.cond472 = and i1 %.not412520, %74
  %or.cond474 = or i1 %73, %or.cond472
  br i1 %or.cond474, label %.thread449.sink.split, label %75

75:                                               ; preds = %71
  %76 = shl nuw i64 %59, 1
  %77 = tail call i64 @llvm.smax.i64(i64 %76, i64 1)
  %78 = tail call i64 @ilaenv_(ptr noundef nonnull @c__1, ptr noundef nonnull @.str.2, ptr noundef nonnull @.str.3, ptr noundef nonnull %2, ptr noundef nonnull @c__1, ptr noundef nonnull %2, ptr noundef nonnull @c__0) #5
  %79 = add i64 %78, 1
  %80 = mul i64 %79, %59
  %81 = tail call i64 @llvm.smax.i64(i64 %80, i64 1)
  store i64 %81, ptr %18, align 8, !tbaa !5
  %82 = load i64, ptr %2, align 8, !tbaa !5
  %83 = tail call i64 @ilaenv_(ptr noundef nonnull @c__1, ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.3, ptr noundef nonnull %2, ptr noundef nonnull @c__1, ptr noundef nonnull %2, ptr noundef nonnull @c__0) #5
  %84 = add i64 %83, 1
  %85 = mul i64 %84, %82
  store i64 %85, ptr %19, align 8, !tbaa !5
  %86 = tail call i64 @llvm.smax.i64(i64 %81, i64 %85)
  br i1 %56, label %87, label %93

87:                                               ; preds = %75
  store i64 %86, ptr %18, align 8, !tbaa !5
  %88 = load i64, ptr %2, align 8, !tbaa !5
  %89 = tail call i64 @ilaenv_(ptr noundef nonnull @c__1, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.3, ptr noundef nonnull %2, ptr noundef nonnull @c__1, ptr noundef nonnull %2, ptr noundef nonnull @c_n1) #5
  %90 = add i64 %89, 1
  %91 = mul i64 %90, %88
  store i64 %91, ptr %19, align 8, !tbaa !5
  %92 = tail call i64 @llvm.smax.i64(i64 %86, i64 %91)
  br label %93

93:                                               ; preds = %87, %75
  %.0384 = phi i64 [ %92, %87 ], [ %86, %75 ]
  %94 = uitofp nneg i64 %.0384 to float
  store float %94, ptr %13, align 4, !tbaa !9
  %95 = getelementptr inbounds i8, ptr %13, i64 4
  store float 0.000000e+00, ptr %95, align 4, !tbaa !12
  %96 = load i64, ptr %14, align 8, !tbaa !5
  %97 = icmp sge i64 %96, %77
  %or.cond = select i1 %97, i1 true, i1 %58
  br i1 %or.cond, label %.thread441, label %.thread449.sink.split

.thread441:                                       ; preds = %93
  %.pr445.pr = load i64, ptr %16, align 8, !tbaa !5
  %.not417 = icmp eq i64 %.pr445.pr, 0
  br i1 %.not417, label %101, label %.thread449

.thread449.sink.split:                            ; preds = %93, %71, %67, %64, %61, %.thread437, %54, %52, %.thread
  %.sink = phi i64 [ -1, %.thread ], [ -1, %52 ], [ -2, %54 ], [ -3, %.thread437 ], [ -5, %61 ], [ -7, %64 ], [ -11, %67 ], [ -13, %71 ], [ -15, %93 ]
  store i64 %.sink, ptr %16, align 8, !tbaa !5
  br label %.thread449

.thread449:                                       ; preds = %.thread449.sink.split, %.thread441
  %98 = phi i64 [ %.pr445.pr, %.thread441 ], [ %.sink, %.thread449.sink.split ]
  %99 = sub nsw i64 0, %98
  store i64 %99, ptr %18, align 8, !tbaa !5
  %100 = call i32 @xerbla_(ptr noundef nonnull @.str.6, ptr noundef nonnull %18) #5
  br label %375

101:                                              ; preds = %.thread441
  br i1 %58, label %375, label %102

102:                                              ; preds = %101
  %103 = load i64, ptr %2, align 8, !tbaa !5
  %104 = icmp eq i64 %103, 0
  br i1 %104, label %375, label %105

105:                                              ; preds = %102
  %106 = tail call double @slamch_(ptr noundef nonnull @.str.7) #5
  %107 = tail call double @slamch_(ptr noundef nonnull @.str.8) #5
  %108 = fmul double %106, %107
  %109 = fptrunc double %108 to float
  %110 = tail call double @slamch_(ptr noundef nonnull @.str.9) #5
  %111 = fptrunc double %110 to float
  store float %111, ptr %33, align 4, !tbaa !13
  %112 = fdiv float 1.000000e+00, %111
  store float %112, ptr %30, align 4, !tbaa !13
  %113 = call i32 @slabad_(ptr noundef nonnull %33, ptr noundef nonnull %30) #5
  %114 = load float, ptr %33, align 4, !tbaa !13
  %115 = fpext float %114 to double
  %116 = call double @sqrt(double noundef %115) #5
  %117 = fpext float %109 to double
  %118 = fdiv double %116, %117
  %119 = fptrunc double %118 to float
  store float %119, ptr %33, align 4, !tbaa !13
  %120 = fdiv float 1.000000e+00, %119
  store float %120, ptr %30, align 4, !tbaa !13
  %121 = call double @clange_(ptr noundef nonnull @.str.10, ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef %3, ptr noundef nonnull %4, ptr noundef %15) #5
  %122 = fptrunc double %121 to float
  store float %122, ptr %23, align 4, !tbaa !13
  %123 = fcmp ogt float %122, 0.000000e+00
  %124 = load float, ptr %33, align 4
  %125 = fcmp ogt float %124, %122
  %or.cond479 = select i1 %123, i1 %125, i1 false
  br i1 %or.cond479, label %129, label %126

126:                                              ; preds = %105
  %127 = load float, ptr %30, align 4, !tbaa !13
  %128 = fcmp olt float %127, %122
  br i1 %128, label %129, label %131

129:                                              ; preds = %105, %126
  %storemerge475 = phi float [ %127, %126 ], [ %124, %105 ]
  store float %storemerge475, ptr %31, align 4, !tbaa !13
  %130 = call i32 @clascl_(ptr noundef nonnull @.str.11, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %23, ptr noundef nonnull %31, ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef %3, ptr noundef nonnull %4, ptr noundef nonnull %25) #5
  br label %131

131:                                              ; preds = %126, %129
  %.not418456 = phi i1 [ false, %129 ], [ true, %126 ]
  %132 = call double @clange_(ptr noundef nonnull @.str.10, ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %15) #5
  %133 = fptrunc double %132 to float
  store float %133, ptr %24, align 4, !tbaa !13
  %134 = fcmp ogt float %133, 0.000000e+00
  %135 = load float, ptr %33, align 4
  %136 = fcmp ogt float %135, %133
  %or.cond481 = select i1 %134, i1 %136, i1 false
  br i1 %or.cond481, label %140, label %137

137:                                              ; preds = %131
  %138 = load float, ptr %30, align 4, !tbaa !13
  %139 = fcmp olt float %138, %133
  br i1 %139, label %140, label %142

140:                                              ; preds = %131, %137
  %storemerge476 = phi float [ %138, %137 ], [ %135, %131 ]
  store float %storemerge476, ptr %32, align 4, !tbaa !13
  %141 = call i32 @clascl_(ptr noundef nonnull @.str.11, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %24, ptr noundef nonnull %32, ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef %5, ptr noundef nonnull %6, ptr noundef nonnull %25) #5
  br label %142

142:                                              ; preds = %137, %140
  %.not419461 = phi i1 [ false, %140 ], [ true, %137 ]
  %143 = load i64, ptr %2, align 8, !tbaa !5
  %144 = getelementptr float, ptr %15, i64 %143
  %.idx = shl i64 %143, 3
  %145 = getelementptr i8, ptr %15, i64 %.idx
  %146 = call i32 @cggbal_(ptr noundef nonnull @.str.12, ptr noundef nonnull %2, ptr noundef %3, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef nonnull %22, ptr noundef nonnull %21, ptr noundef %15, ptr noundef %144, ptr noundef %145, ptr noundef nonnull %25) #5
  %147 = load i64, ptr %21, align 8, !tbaa !5
  %148 = add nsw i64 %147, 1
  %149 = load i64, ptr %22, align 8, !tbaa !5
  %150 = sub i64 %148, %149
  store i64 %150, ptr %27, align 8, !tbaa !5
  br i1 %57, label %151, label %154

151:                                              ; preds = %142
  %152 = load i64, ptr %2, align 8, !tbaa !5
  %reass.sub = sub i64 %152, %149
  %153 = add i64 %reass.sub, 1
  br label %154

154:                                              ; preds = %142, %151
  %storemerge = phi i64 [ %153, %151 ], [ %150, %142 ]
  store i64 %storemerge, ptr %26, align 8, !tbaa !5
  %155 = load i64, ptr %14, align 8, !tbaa !5
  %156 = sub i64 %155, %150
  store i64 %156, ptr %18, align 8, !tbaa !5
  %157 = add i64 %37, 1
  %158 = mul i64 %149, %157
  %159 = getelementptr inbounds %struct.complex, ptr %39, i64 %158
  %160 = getelementptr %struct.complex, ptr %13, i64 %150
  %161 = call i32 @cgeqrf_(ptr noundef nonnull %27, ptr noundef nonnull %26, ptr noundef %159, ptr noundef nonnull %6, ptr noundef nonnull %13, ptr noundef %160, ptr noundef nonnull %18, ptr noundef nonnull %25) #5
  %162 = load i64, ptr %14, align 8, !tbaa !5
  %163 = sub i64 %162, %150
  store i64 %163, ptr %18, align 8, !tbaa !5
  %164 = load i64, ptr %22, align 8, !tbaa !5
  %165 = mul i64 %164, %157
  %166 = getelementptr inbounds %struct.complex, ptr %39, i64 %165
  %167 = add i64 %34, 1
  %168 = mul i64 %164, %167
  %169 = getelementptr inbounds %struct.complex, ptr %36, i64 %168
  %170 = call i32 @cunmqr_(ptr noundef nonnull @.str.13, ptr noundef nonnull @.str.14, ptr noundef nonnull %27, ptr noundef nonnull %26, ptr noundef nonnull %27, ptr noundef %166, ptr noundef nonnull %6, ptr noundef nonnull %13, ptr noundef %169, ptr noundef nonnull %4, ptr noundef %160, ptr noundef nonnull %18, ptr noundef nonnull %25) #5
  br i1 %56, label %171, label %194

171:                                              ; preds = %154
  %172 = call i32 @claset_(ptr noundef nonnull @.str.15, 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) #5
  %173 = load i64, ptr %27, align 8, !tbaa !5
  %174 = icmp sgt i64 %173, 1
  br i1 %174, label %175, label %186

175:                                              ; preds = %171
  %176 = add nsw i64 %173, -1
  store i64 %176, ptr %18, align 8, !tbaa !5
  store i64 %176, ptr %19, align 8, !tbaa !5
  %177 = load i64, ptr %22, align 8, !tbaa !5
  %178 = add nsw i64 %177, 1
  %179 = mul nsw i64 %177, %37
  %180 = getelementptr %struct.complex, ptr %39, i64 %178
  %181 = getelementptr %struct.complex, ptr %180, i64 %179
  %182 = mul nsw i64 %177, %40
  %183 = getelementptr %struct.complex, ptr %42, i64 %178
  %184 = getelementptr %struct.complex, ptr %183, i64 %182
  %185 = call i32 @clacpy_(ptr noundef nonnull @.str.13, ptr noundef nonnull %18, ptr noundef nonnull %19, ptr noundef %181, ptr noundef nonnull %6, ptr noundef %184, ptr noundef nonnull %10) #5
  br label %186

186:                                              ; preds = %175, %171
  %187 = load i64, ptr %14, align 8, !tbaa !5
  %188 = sub i64 %187, %150
  store i64 %188, ptr %18, align 8, !tbaa !5
  %189 = load i64, ptr %22, align 8, !tbaa !5
  %190 = add i64 %40, 1
  %191 = mul i64 %189, %190
  %192 = getelementptr inbounds %struct.complex, ptr %42, i64 %191
  %193 = call i32 @cungqr_(ptr noundef nonnull %27, ptr noundef nonnull %27, ptr noundef nonnull %27, ptr noundef %192, ptr noundef nonnull %10, ptr noundef nonnull %13, ptr noundef %160, ptr noundef nonnull %18, ptr noundef nonnull %25) #5
  br label %194

194:                                              ; preds = %186, %154
  br i1 %.not412520, label %195, label %197

195:                                              ; preds = %194
  %196 = call i32 @claset_(ptr noundef nonnull @.str.15, 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) #5
  br label %197

197:                                              ; preds = %195, %194
  br i1 %57, label %198, label %200

198:                                              ; preds = %197
  %199 = call i32 @cgghrd_(ptr noundef %0, ptr noundef %1, ptr noundef nonnull %2, ptr noundef nonnull %22, ptr noundef nonnull %21, 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 %25) #5
  br label %207

200:                                              ; preds = %197
  %201 = load i64, ptr %22, align 8, !tbaa !5
  %202 = mul i64 %201, %167
  %203 = getelementptr inbounds %struct.complex, ptr %36, i64 %202
  %204 = mul i64 %201, %157
  %205 = getelementptr inbounds %struct.complex, ptr %39, i64 %204
  %206 = call i32 @cgghrd_(ptr noundef nonnull @.str, ptr noundef nonnull @.str, ptr noundef nonnull %27, ptr noundef nonnull @c__1, ptr noundef nonnull %27, ptr noundef %203, ptr noundef nonnull %4, ptr noundef %205, ptr noundef nonnull %6, ptr noundef %9, ptr noundef nonnull %10, ptr noundef %11, ptr noundef nonnull %12, ptr noundef nonnull %25) #5
  br label %207

207:                                              ; preds = %200, %198
  %.435 = phi i8 [ 69, %200 ], [ 83, %198 ]
  store i8 %.435, ptr %29, align 1, !tbaa !14
  %208 = load i64, ptr %14, align 8, !tbaa !5
  store i64 %208, ptr %18, align 8, !tbaa !5
  %209 = call i32 @chgeqz_(ptr noundef nonnull %29, ptr noundef %0, ptr noundef %1, ptr noundef nonnull %2, ptr noundef nonnull %22, ptr noundef nonnull %21, 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 %145, ptr noundef nonnull %25) #5
  %210 = load i64, ptr %25, align 8, !tbaa !5
  %.not421 = icmp eq i64 %210, 0
  br i1 %.not421, label %221, label %211

211:                                              ; preds = %207
  %212 = icmp slt i64 %210, 1
  %.pre = load i64, ptr %2, align 8, !tbaa !5
  %.not429 = icmp sgt i64 %210, %.pre
  %or.cond529 = select i1 %212, i1 true, i1 %.not429
  br i1 %or.cond529, label %214, label %213

213:                                              ; preds = %211
  store i64 %210, ptr %16, align 8, !tbaa !5
  br label %374

214:                                              ; preds = %211
  %215 = icmp sle i64 %210, %.pre
  %216 = shl i64 %.pre, 1
  %.not430 = icmp sgt i64 %210, %216
  %or.cond436 = or i1 %215, %.not430
  br i1 %or.cond436, label %219, label %217

217:                                              ; preds = %214
  %218 = sub nsw i64 %210, %.pre
  store i64 %218, ptr %16, align 8, !tbaa !5
  br label %374

219:                                              ; preds = %214
  %220 = add nsw i64 %.pre, 1
  store i64 %220, ptr %16, align 8, !tbaa !5
  br label %374

221:                                              ; preds = %207
  br i1 %57, label %222, label %.loopexit482

222:                                              ; preds = %221
  br i1 %56, label %223, label %.thread462

223:                                              ; preds = %222
  %. = select i1 %.not412520, i8 66, i8 76
  store i8 %., ptr %29, align 1, !tbaa !14
  %224 = call i32 @ctgevc_(ptr noundef nonnull %29, ptr noundef nonnull @.str.8, ptr noundef nonnull %28, 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 %20, ptr noundef nonnull %13, ptr noundef %145, ptr noundef nonnull %25) #5
  %225 = load i64, ptr %25, align 8, !tbaa !5
  %.not422 = icmp eq i64 %225, 0
  br i1 %.not422, label %231, label %228

.thread462:                                       ; preds = %222
  store i8 82, ptr %29, align 1, !tbaa !14
  %226 = call i32 @ctgevc_(ptr noundef nonnull %29, ptr noundef nonnull @.str.8, ptr noundef nonnull %28, 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 %20, ptr noundef nonnull %13, ptr noundef %145, ptr noundef nonnull %25) #5
  %227 = load i64, ptr %25, align 8, !tbaa !5
  %.not422463 = icmp eq i64 %227, 0
  br i1 %.not422463, label %.thread464, label %228

228:                                              ; preds = %.thread462, %223
  %229 = load i64, ptr %2, align 8, !tbaa !5
  %230 = add nsw i64 %229, 2
  store i64 %230, ptr %16, align 8, !tbaa !5
  br label %374

231:                                              ; preds = %223
  %232 = call i32 @cggbak_(ptr noundef nonnull @.str.12, ptr noundef nonnull @.str.13, ptr noundef nonnull %2, ptr noundef nonnull %22, ptr noundef nonnull %21, ptr noundef %15, ptr noundef %144, ptr noundef nonnull %2, ptr noundef %9, ptr noundef nonnull %10, ptr noundef nonnull %25) #5
  %233 = load i64, ptr %2, align 8, !tbaa !5
  store i64 %233, ptr %18, align 8, !tbaa !5
  %.not423493 = icmp slt i64 %233, 1
  br i1 %.not423493, label %.thread464, label %.lr.ph496.preheader

.lr.ph496.preheader:                              ; preds = %231
  %234 = shl i64 %40, 3
  br label %.lr.ph496

.lr.ph496thread-pre-split:                        ; preds = %.loopexit483
  %235 = add nuw nsw i64 %.0395494, 1
  %.pr = load i64, ptr %2, align 8, !tbaa !5
  %indvar.next = add i64 %indvar, 1
  br label %.lr.ph496

.lr.ph496:                                        ; preds = %.lr.ph496.preheader, %.lr.ph496thread-pre-split
  %indvar = phi i64 [ 0, %.lr.ph496.preheader ], [ %indvar.next, %.lr.ph496thread-pre-split ]
  %236 = phi i64 [ %233, %.lr.ph496.preheader ], [ %.pr, %.lr.ph496thread-pre-split ]
  %.0395494 = phi i64 [ 1, %.lr.ph496.preheader ], [ %235, %.lr.ph496thread-pre-split ]
  %237 = mul i64 %234, %indvar
  %scevgep = getelementptr i8, ptr %9, i64 %237
  %238 = or disjoint i64 %237, 4
  %scevgep531 = getelementptr i8, ptr %9, i64 %238
  store i64 %236, ptr %19, align 8, !tbaa !5
  %.not427484 = icmp slt i64 %236, 1
  br i1 %.not427484, label %._crit_edge, label %.lr.ph

.lr.ph:                                           ; preds = %.lr.ph496
  %239 = mul nsw i64 %.0395494, %40
  %invariant.gep = getelementptr %struct.complex, ptr %42, i64 %239
  br label %240

240:                                              ; preds = %.lr.ph, %240
  %.0391486 = phi float [ 0.000000e+00, %.lr.ph ], [ %252, %240 ]
  %.0393485 = phi i64 [ 1, %.lr.ph ], [ %253, %240 ]
  %gep = getelementptr %struct.complex, ptr %invariant.gep, i64 %.0393485
  %241 = load float, ptr %gep, align 4, !tbaa !9
  %242 = call double @r_imag(ptr noundef nonnull %gep) #5
  %243 = fptrunc double %242 to float
  %244 = insertelement <2 x float> poison, float %241, i64 0
  %245 = insertelement <2 x float> %244, float %243, i64 1
  %246 = fcmp oge <2 x float> %245, zeroinitializer
  %247 = fneg <2 x float> %245
  %248 = select <2 x i1> %246, <2 x float> %245, <2 x float> %247
  %shift = shufflevector <2 x float> %248, <2 x float> poison, <2 x i32> <i32 1, i32 poison>
  %249 = fadd <2 x float> %248, %shift
  %250 = extractelement <2 x float> %249, i64 0
  %251 = fcmp oge float %.0391486, %250
  %252 = select i1 %251, float %.0391486, float %250
  %253 = add nuw nsw i64 %.0393485, 1
  %254 = load i64, ptr %19, align 8, !tbaa !5
  %.not427.not = icmp slt i64 %.0393485, %254
  br i1 %.not427.not, label %240, label %._crit_edge, !llvm.loop !15

._crit_edge:                                      ; preds = %240, %.lr.ph496
  %.0391.lcssa = phi float [ 0.000000e+00, %.lr.ph496 ], [ %252, %240 ]
  %255 = load float, ptr %33, align 4, !tbaa !13
  %256 = fcmp olt float %.0391.lcssa, %255
  br i1 %256, label %.loopexit483, label %257

257:                                              ; preds = %._crit_edge
  %258 = fdiv float 1.000000e+00, %.0391.lcssa
  %259 = load i64, ptr %2, align 8, !tbaa !5
  store i64 %259, ptr %19, align 8, !tbaa !5
  %.not428487 = icmp slt i64 %259, 1
  br i1 %.not428487, label %.loopexit483, label %.lr.ph490

.lr.ph490:                                        ; preds = %257
  %260 = mul nsw i64 %.0395494, %40
  %invariant.gep491 = getelementptr %struct.complex, ptr %42, i64 %260
  %min.iters.check = icmp ult i64 %259, 12
  br i1 %min.iters.check, label %scalar.ph.preheader, label %vector.scevcheck

vector.scevcheck:                                 ; preds = %.lr.ph490
  %261 = add nsw i64 %259, -1
  %mul.result = shl i64 %261, 3
  %262 = getelementptr i8, ptr %scevgep, i64 %mul.result
  %263 = icmp ult ptr %262, %scevgep
  %mul.result533 = shl i64 %261, 3
  %mul.overflow534 = icmp ugt i64 %261, 2305843009213693951
  %264 = getelementptr i8, ptr %scevgep531, i64 %mul.result533
  %265 = icmp ult ptr %264, %scevgep531
  %266 = or i1 %265, %mul.overflow534
  %267 = or i1 %263, %266
  br i1 %267, label %scalar.ph.preheader, label %vector.ph

vector.ph:                                        ; preds = %vector.scevcheck
  %n.vec = and i64 %259, 4611686018427387902
  %ind.end = or i64 %259, 1
  %broadcast.splatinsert = insertelement <2 x float> poison, float %258, 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.gep491, 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 %259, %n.vec
  br i1 %cmp.n, label %.loopexit483, label %scalar.ph.preheader

scalar.ph.preheader:                              ; preds = %middle.block, %vector.scevcheck, %.lr.ph490
  %.1394488.ph = phi i64 [ 1, %vector.scevcheck ], [ 1, %.lr.ph490 ], [ %ind.end, %middle.block ]
  %272 = add nuw i64 %259, 1
  %273 = sub i64 %272, %.1394488.ph
  %274 = sub i64 %259, %.1394488.ph
  %xtraiter = and i64 %273, 3
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %scalar.ph.prol.loopexit, label %scalar.ph.prol.preheader

scalar.ph.prol.preheader:                         ; preds = %scalar.ph.preheader
  %275 = insertelement <2 x float> poison, float %258, i64 0
  %276 = shufflevector <2 x float> %275, <2 x float> poison, <2 x i32> zeroinitializer
  br label %scalar.ph.prol

scalar.ph.prol:                                   ; preds = %scalar.ph.prol, %scalar.ph.prol.preheader
  %.1394488.prol = phi i64 [ %279, %scalar.ph.prol ], [ %.1394488.ph, %scalar.ph.prol.preheader ]
  %prol.iter = phi i64 [ %prol.iter.next, %scalar.ph.prol ], [ 0, %scalar.ph.prol.preheader ]
  %gep492.prol = getelementptr %struct.complex, ptr %invariant.gep491, i64 %.1394488.prol
  %277 = load <2 x float>, ptr %gep492.prol, align 4, !tbaa !13
  %278 = fmul <2 x float> %276, %277
  store <2 x float> %278, ptr %gep492.prol, align 4, !tbaa !13
  %279 = add nuw i64 %.1394488.prol, 1
  %prol.iter.next = add i64 %prol.iter, 1
  %prol.iter.cmp.not = icmp eq i64 %prol.iter.next, %xtraiter
  br i1 %prol.iter.cmp.not, label %scalar.ph.prol.loopexit, label %scalar.ph.prol, !llvm.loop !20

scalar.ph.prol.loopexit:                          ; preds = %scalar.ph.prol, %scalar.ph.preheader
  %.1394488.unr = phi i64 [ %.1394488.ph, %scalar.ph.preheader ], [ %279, %scalar.ph.prol ]
  %280 = icmp ult i64 %274, 3
  br i1 %280, label %.loopexit483, label %scalar.ph.preheader.new

scalar.ph.preheader.new:                          ; preds = %scalar.ph.prol.loopexit
  %281 = insertelement <2 x float> poison, float %258, i64 0
  %282 = shufflevector <2 x float> %281, <2 x float> poison, <2 x i32> zeroinitializer
  %invariant.gep574 = getelementptr i8, ptr %invariant.gep491, i64 8
  %283 = insertelement <2 x float> poison, float %258, i64 0
  %284 = shufflevector <2 x float> %283, <2 x float> poison, <2 x i32> zeroinitializer
  %invariant.gep576 = getelementptr i8, ptr %invariant.gep491, i64 16
  %285 = insertelement <2 x float> poison, float %258, i64 0
  %286 = shufflevector <2 x float> %285, <2 x float> poison, <2 x i32> zeroinitializer
  %287 = insertelement <2 x float> poison, float %258, i64 0
  %288 = shufflevector <2 x float> %287, <2 x float> poison, <2 x i32> zeroinitializer
  br label %scalar.ph

scalar.ph:                                        ; preds = %scalar.ph, %scalar.ph.preheader.new
  %.1394488 = phi i64 [ %.1394488.unr, %scalar.ph.preheader.new ], [ %298, %scalar.ph ]
  %gep492 = getelementptr %struct.complex, ptr %invariant.gep491, i64 %.1394488
  %289 = load <2 x float>, ptr %gep492, align 4, !tbaa !13
  %290 = fmul <2 x float> %282, %289
  store <2 x float> %290, ptr %gep492, align 4, !tbaa !13
  %gep575 = getelementptr %struct.complex, ptr %invariant.gep574, i64 %.1394488
  %291 = load <2 x float>, ptr %gep575, align 4, !tbaa !13
  %292 = fmul <2 x float> %284, %291
  store <2 x float> %292, ptr %gep575, align 4, !tbaa !13
  %gep577 = getelementptr %struct.complex, ptr %invariant.gep576, i64 %.1394488
  %293 = load <2 x float>, ptr %gep577, align 4, !tbaa !13
  %294 = fmul <2 x float> %286, %293
  store <2 x float> %294, ptr %gep577, align 4, !tbaa !13
  %295 = add nuw i64 %.1394488, 3
  %gep492.3 = getelementptr %struct.complex, ptr %invariant.gep491, i64 %295
  %296 = load <2 x float>, ptr %gep492.3, align 4, !tbaa !13
  %297 = fmul <2 x float> %288, %296
  store <2 x float> %297, ptr %gep492.3, align 4, !tbaa !13
  %298 = add nuw i64 %.1394488, 4
  %exitcond.not.3 = icmp eq i64 %295, %259
  br i1 %exitcond.not.3, label %.loopexit483, label %scalar.ph, !llvm.loop !22

.loopexit483:                                     ; preds = %scalar.ph.prol.loopexit, %scalar.ph, %middle.block, %257, %._crit_edge
  %299 = load i64, ptr %18, align 8, !tbaa !5
  %.not423.not = icmp slt i64 %.0395494, %299
  br i1 %.not423.not, label %.lr.ph496thread-pre-split, label %.thread464, !llvm.loop !23

.thread464:                                       ; preds = %.loopexit483, %231, %.thread462
  br i1 %.not412520, label %300, label %.loopexit482

300:                                              ; preds = %.thread464
  %301 = call i32 @cggbak_(ptr noundef nonnull @.str.12, ptr noundef nonnull @.str.16, ptr noundef nonnull %2, ptr noundef nonnull %22, ptr noundef nonnull %21, ptr noundef %15, ptr noundef %144, ptr noundef nonnull %2, ptr noundef %11, ptr noundef nonnull %12, ptr noundef nonnull %25) #5
  %302 = load i64, ptr %2, align 8, !tbaa !5
  store i64 %302, ptr %18, align 8, !tbaa !5
  %.not424512 = icmp slt i64 %302, 1
  br i1 %.not424512, label %.loopexit482, label %.lr.ph515.preheader

.lr.ph515.preheader:                              ; preds = %300
  %303 = shl i64 %43, 3
  br label %.lr.ph515

.lr.ph515thread-pre-split:                        ; preds = %.loopexit
  %304 = add nuw nsw i64 %.1396513, 1
  %.pr524 = load i64, ptr %2, align 8, !tbaa !5
  %indvar.next538 = add i64 %indvar537, 1
  br label %.lr.ph515

.lr.ph515:                                        ; preds = %.lr.ph515.preheader, %.lr.ph515thread-pre-split
  %indvar537 = phi i64 [ 0, %.lr.ph515.preheader ], [ %indvar.next538, %.lr.ph515thread-pre-split ]
  %305 = phi i64 [ %302, %.lr.ph515.preheader ], [ %.pr524, %.lr.ph515thread-pre-split ]
  %.1396513 = phi i64 [ 1, %.lr.ph515.preheader ], [ %304, %.lr.ph515thread-pre-split ]
  %306 = mul i64 %303, %indvar537
  %scevgep539 = getelementptr i8, ptr %11, i64 %306
  %307 = or disjoint i64 %306, 4
  %scevgep543 = getelementptr i8, ptr %11, i64 %307
  store i64 %305, ptr %19, align 8, !tbaa !5
  %.not425497 = icmp slt i64 %305, 1
  br i1 %.not425497, label %._crit_edge502, label %.lr.ph501

.lr.ph501:                                        ; preds = %.lr.ph515
  %308 = mul nsw i64 %.1396513, %43
  %invariant.gep504 = getelementptr %struct.complex, ptr %45, i64 %308
  br label %309

309:                                              ; preds = %.lr.ph501, %309
  %.1392499 = phi float [ 0.000000e+00, %.lr.ph501 ], [ %321, %309 ]
  %.2498 = phi i64 [ 1, %.lr.ph501 ], [ %322, %309 ]
  %gep505 = getelementptr %struct.complex, ptr %invariant.gep504, i64 %.2498
  %310 = load float, ptr %gep505, align 4, !tbaa !9
  %311 = call double @r_imag(ptr noundef nonnull %gep505) #5
  %312 = fptrunc double %311 to float
  %313 = insertelement <2 x float> poison, float %310, i64 0
  %314 = insertelement <2 x float> %313, float %312, i64 1
  %315 = fcmp oge <2 x float> %314, zeroinitializer
  %316 = fneg <2 x float> %314
  %317 = select <2 x i1> %315, <2 x float> %314, <2 x float> %316
  %shift566 = shufflevector <2 x float> %317, <2 x float> poison, <2 x i32> <i32 1, i32 poison>
  %318 = fadd <2 x float> %317, %shift566
  %319 = extractelement <2 x float> %318, i64 0
  %320 = fcmp oge float %.1392499, %319
  %321 = select i1 %320, float %.1392499, float %319
  %322 = add nuw nsw i64 %.2498, 1
  %323 = load i64, ptr %19, align 8, !tbaa !5
  %.not425.not = icmp slt i64 %.2498, %323
  br i1 %.not425.not, label %309, label %._crit_edge502, !llvm.loop !24

._crit_edge502:                                   ; preds = %309, %.lr.ph515
  %.1392.lcssa = phi float [ 0.000000e+00, %.lr.ph515 ], [ %321, %309 ]
  %324 = load float, ptr %33, align 4, !tbaa !13
  %325 = fcmp olt float %.1392.lcssa, %324
  br i1 %325, label %.loopexit, label %326

326:                                              ; preds = %._crit_edge502
  %327 = fdiv float 1.000000e+00, %.1392.lcssa
  %328 = load i64, ptr %2, align 8, !tbaa !5
  store i64 %328, ptr %19, align 8, !tbaa !5
  %.not426506 = icmp slt i64 %328, 1
  br i1 %.not426506, label %.loopexit, label %.lr.ph509

.lr.ph509:                                        ; preds = %326
  %329 = mul nsw i64 %.1396513, %43
  %invariant.gep510 = getelementptr %struct.complex, ptr %45, i64 %329
  %min.iters.check549 = icmp ult i64 %328, 12
  br i1 %min.iters.check549, label %scalar.ph548.preheader, label %vector.scevcheck536

vector.scevcheck536:                              ; preds = %.lr.ph509
  %330 = add nsw i64 %328, -1
  %mul.result541 = shl i64 %330, 3
  %331 = getelementptr i8, ptr %scevgep539, i64 %mul.result541
  %332 = icmp ult ptr %331, %scevgep539
  %mul.result545 = shl i64 %330, 3
  %mul.overflow546 = icmp ugt i64 %330, 2305843009213693951
  %333 = getelementptr i8, ptr %scevgep543, i64 %mul.result545
  %334 = icmp ult ptr %333, %scevgep543
  %335 = or i1 %334, %mul.overflow546
  %336 = or i1 %332, %335
  br i1 %336, label %scalar.ph548.preheader, label %vector.ph550

vector.ph550:                                     ; preds = %vector.scevcheck536
  %n.vec552 = and i64 %328, 4611686018427387902
  %ind.end553 = or i64 %328, 1
  %broadcast.splatinsert561 = insertelement <2 x float> poison, float %327, i64 0
  %337 = shufflevector <2 x float> %broadcast.splatinsert561, <2 x float> poison, <4 x i32> zeroinitializer
  br label %vector.body555

vector.body555:                                   ; preds = %vector.body555, %vector.ph550
  %index556 = phi i64 [ 0, %vector.ph550 ], [ %index.next564, %vector.body555 ]
  %offset.idx557 = or disjoint i64 %index556, 1
  %338 = getelementptr %struct.complex, ptr %invariant.gep510, i64 %offset.idx557
  %339 = load <4 x float>, ptr %338, align 4, !tbaa !13
  %interleaved.vec563 = fmul <4 x float> %337, %339
  store <4 x float> %interleaved.vec563, ptr %338, align 4, !tbaa !13
  %index.next564 = add nuw i64 %index556, 2
  %340 = icmp eq i64 %index.next564, %n.vec552
  br i1 %340, label %middle.block547, label %vector.body555, !llvm.loop !25

middle.block547:                                  ; preds = %vector.body555
  %cmp.n565 = icmp eq i64 %328, %n.vec552
  br i1 %cmp.n565, label %.loopexit, label %scalar.ph548.preheader

scalar.ph548.preheader:                           ; preds = %middle.block547, %vector.scevcheck536, %.lr.ph509
  %.3507.ph = phi i64 [ 1, %vector.scevcheck536 ], [ 1, %.lr.ph509 ], [ %ind.end553, %middle.block547 ]
  %341 = add nuw i64 %328, 1
  %342 = sub i64 %341, %.3507.ph
  %343 = sub i64 %328, %.3507.ph
  %xtraiter568 = and i64 %342, 3
  %lcmp.mod569.not = icmp eq i64 %xtraiter568, 0
  br i1 %lcmp.mod569.not, label %scalar.ph548.prol.loopexit, label %scalar.ph548.prol.preheader

scalar.ph548.prol.preheader:                      ; preds = %scalar.ph548.preheader
  %344 = insertelement <2 x float> poison, float %327, i64 0
  %345 = shufflevector <2 x float> %344, <2 x float> poison, <2 x i32> zeroinitializer
  br label %scalar.ph548.prol

scalar.ph548.prol:                                ; preds = %scalar.ph548.prol, %scalar.ph548.prol.preheader
  %.3507.prol = phi i64 [ %348, %scalar.ph548.prol ], [ %.3507.ph, %scalar.ph548.prol.preheader ]
  %prol.iter570 = phi i64 [ %prol.iter570.next, %scalar.ph548.prol ], [ 0, %scalar.ph548.prol.preheader ]
  %gep511.prol = getelementptr %struct.complex, ptr %invariant.gep510, i64 %.3507.prol
  %346 = load <2 x float>, ptr %gep511.prol, align 4, !tbaa !13
  %347 = fmul <2 x float> %345, %346
  store <2 x float> %347, ptr %gep511.prol, align 4, !tbaa !13
  %348 = add nuw i64 %.3507.prol, 1
  %prol.iter570.next = add i64 %prol.iter570, 1
  %prol.iter570.cmp.not = icmp eq i64 %prol.iter570.next, %xtraiter568
  br i1 %prol.iter570.cmp.not, label %scalar.ph548.prol.loopexit, label %scalar.ph548.prol, !llvm.loop !26

scalar.ph548.prol.loopexit:                       ; preds = %scalar.ph548.prol, %scalar.ph548.preheader
  %.3507.unr = phi i64 [ %.3507.ph, %scalar.ph548.preheader ], [ %348, %scalar.ph548.prol ]
  %349 = icmp ult i64 %343, 3
  br i1 %349, label %.loopexit, label %scalar.ph548.preheader.new

scalar.ph548.preheader.new:                       ; preds = %scalar.ph548.prol.loopexit
  %350 = insertelement <2 x float> poison, float %327, i64 0
  %351 = shufflevector <2 x float> %350, <2 x float> poison, <2 x i32> zeroinitializer
  %invariant.gep578 = getelementptr i8, ptr %invariant.gep510, i64 8
  %352 = insertelement <2 x float> poison, float %327, i64 0
  %353 = shufflevector <2 x float> %352, <2 x float> poison, <2 x i32> zeroinitializer
  %invariant.gep580 = getelementptr i8, ptr %invariant.gep510, i64 16
  %354 = insertelement <2 x float> poison, float %327, i64 0
  %355 = shufflevector <2 x float> %354, <2 x float> poison, <2 x i32> zeroinitializer
  %356 = insertelement <2 x float> poison, float %327, i64 0
  %357 = shufflevector <2 x float> %356, <2 x float> poison, <2 x i32> zeroinitializer
  br label %scalar.ph548

scalar.ph548:                                     ; preds = %scalar.ph548, %scalar.ph548.preheader.new
  %.3507 = phi i64 [ %.3507.unr, %scalar.ph548.preheader.new ], [ %367, %scalar.ph548 ]
  %gep511 = getelementptr %struct.complex, ptr %invariant.gep510, i64 %.3507
  %358 = load <2 x float>, ptr %gep511, align 4, !tbaa !13
  %359 = fmul <2 x float> %351, %358
  store <2 x float> %359, ptr %gep511, align 4, !tbaa !13
  %gep579 = getelementptr %struct.complex, ptr %invariant.gep578, i64 %.3507
  %360 = load <2 x float>, ptr %gep579, align 4, !tbaa !13
  %361 = fmul <2 x float> %353, %360
  store <2 x float> %361, ptr %gep579, align 4, !tbaa !13
  %gep581 = getelementptr %struct.complex, ptr %invariant.gep580, i64 %.3507
  %362 = load <2 x float>, ptr %gep581, align 4, !tbaa !13
  %363 = fmul <2 x float> %355, %362
  store <2 x float> %363, ptr %gep581, align 4, !tbaa !13
  %364 = add nuw i64 %.3507, 3
  %gep511.3 = getelementptr %struct.complex, ptr %invariant.gep510, i64 %364
  %365 = load <2 x float>, ptr %gep511.3, align 4, !tbaa !13
  %366 = fmul <2 x float> %357, %365
  store <2 x float> %366, ptr %gep511.3, align 4, !tbaa !13
  %367 = add nuw i64 %.3507, 4
  %exitcond517.not.3 = icmp eq i64 %364, %328
  br i1 %exitcond517.not.3, label %.loopexit, label %scalar.ph548, !llvm.loop !27

.loopexit:                                        ; preds = %scalar.ph548.prol.loopexit, %scalar.ph548, %middle.block547, %326, %._crit_edge502
  %368 = load i64, ptr %18, align 8, !tbaa !5
  %.not424.not = icmp slt i64 %.1396513, %368
  br i1 %.not424.not, label %.lr.ph515thread-pre-split, label %.loopexit482, !llvm.loop !28

.loopexit482:                                     ; preds = %.loopexit, %300, %.thread464, %221
  br i1 %.not418456, label %371, label %369

369:                                              ; preds = %.loopexit482
  %370 = call i32 @clascl_(ptr noundef nonnull @.str.11, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %31, ptr noundef nonnull %23, ptr noundef nonnull %2, ptr noundef nonnull @c__1, ptr noundef %7, ptr noundef nonnull %2, ptr noundef nonnull %25) #5
  br label %371

371:                                              ; preds = %369, %.loopexit482
  br i1 %.not419461, label %374, label %372

372:                                              ; preds = %371
  %373 = call i32 @clascl_(ptr noundef nonnull @.str.11, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %32, ptr noundef nonnull %24, ptr noundef nonnull %2, ptr noundef nonnull @c__1, ptr noundef %8, ptr noundef nonnull %2, ptr noundef nonnull %25) #5
  br label %374

374:                                              ; preds = %371, %372, %213, %219, %217, %228
  store float %94, ptr %13, align 4, !tbaa !9
  store float 0.000000e+00, ptr %95, align 4, !tbaa !12
  br label %375

375:                                              ; preds = %102, %101, %374, %.thread449
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %33) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %32) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %31) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %30) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %29) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %28) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %24) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %23) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #5
  ret i32 0
}

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

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

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

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

declare double @slamch_(ptr noundef) local_unnamed_addr #2

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

; Function Attrs: mustprogress nofree nounwind willreturn memory(write)
declare double @sqrt(double noundef) local_unnamed_addr #3

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

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

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

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

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

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

declare i32 @cgghrd_(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 @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 @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 i32 @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

declare double @r_imag(ptr noundef) local_unnamed_addr #2

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

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"long", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !11, i64 0}
!10 = !{!"", !11, i64 0, !11, i64 4}
!11 = !{!"float", !7, i64 0}
!12 = !{!10, !11, i64 4}
!13 = !{!11, !11, i64 0}
!14 = !{!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, !21}
!21 = !{!"llvm.loop.unroll.disable"}
!22 = distinct !{!22, !16, !18}
!23 = distinct !{!23, !16}
!24 = distinct !{!24, !16}
!25 = distinct !{!25, !16, !18, !19}
!26 = distinct !{!26, !21}
!27 = distinct !{!27, !16, !18}
!28 = distinct !{!28, !16}


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