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

; Unoptimized IR (clang -disable-llvm-passes):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

%struct.complex = type { float, float }

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

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

151:                                              ; preds = %24
  %152 = load i32, ptr %72, align 4, !tbaa !9
  %153 = icmp ne i32 %152, 0
  br i1 %153, label %154, label %156

154:                                              ; preds = %151, %24
  %155 = load ptr, ptr %36, align 8, !tbaa !5
  store i8 78, ptr %155, align 1, !tbaa !11
  store i32 0, ptr %83, align 4, !tbaa !9
  store i32 0, ptr %79, align 4, !tbaa !9
  br label %180

156:                                              ; preds = %151
  %157 = load ptr, ptr %36, align 8, !tbaa !5
  %158 = call i32 @lsame_(ptr noundef %157, ptr noundef @.str.2)
  %159 = icmp ne i32 %158, 0
  br i1 %159, label %164, label %160

160:                                              ; preds = %156
  %161 = load ptr, ptr %36, align 8, !tbaa !5
  %162 = call i32 @lsame_(ptr noundef %161, ptr noundef @.str.3)
  %163 = icmp ne i32 %162, 0
  br label %164

164:                                              ; preds = %160, %156
  %165 = phi i1 [ true, %156 ], [ %163, %160 ]
  %166 = zext i1 %165 to i32
  store i32 %166, ptr %83, align 4, !tbaa !9
  %167 = load ptr, ptr %36, align 8, !tbaa !5
  %168 = call i32 @lsame_(ptr noundef %167, ptr noundef @.str.4)
  %169 = icmp ne i32 %168, 0
  br i1 %169, label %174, label %170

170:                                              ; preds = %164
  %171 = load ptr, ptr %36, align 8, !tbaa !5
  %172 = call i32 @lsame_(ptr noundef %171, ptr noundef @.str.3)
  %173 = icmp ne i32 %172, 0
  br label %174

174:                                              ; preds = %170, %164
  %175 = phi i1 [ true, %164 ], [ %173, %170 ]
  %176 = zext i1 %175 to i32
  store i32 %176, ptr %79, align 4, !tbaa !9
  %177 = call float @slamch_(ptr noundef @.str.5)
  store float %177, ptr %82, align 4, !tbaa !12
  %178 = load float, ptr %82, align 4, !tbaa !12
  %179 = fdiv float 1.000000e+00, %178
  store float %179, ptr %77, align 4, !tbaa !12
  br label %180

180:                                              ; preds = %174, %154
  %181 = load i32, ptr %76, align 4, !tbaa !9
  %182 = icmp ne i32 %181, 0
  br i1 %182, label %192, label %183

183:                                              ; preds = %180
  %184 = load i32, ptr %72, align 4, !tbaa !9
  %185 = icmp ne i32 %184, 0
  br i1 %185, label %192, label %186

186:                                              ; preds = %183
  %187 = load ptr, ptr %25, align 8, !tbaa !5
  %188 = call i32 @lsame_(ptr noundef %187, ptr noundef @.str.6)
  %189 = icmp ne i32 %188, 0
  br i1 %189, label %192, label %190

190:                                              ; preds = %186
  %191 = load ptr, ptr %48, align 8, !tbaa !5
  store i32 -1, ptr %191, align 4, !tbaa !9
  br label %473

192:                                              ; preds = %186, %183, %180
  %193 = load i32, ptr %81, align 4, !tbaa !9
  %194 = icmp ne i32 %193, 0
  br i1 %194, label %205, label %195

195:                                              ; preds = %192
  %196 = load ptr, ptr %26, align 8, !tbaa !5
  %197 = call i32 @lsame_(ptr noundef %196, ptr noundef @.str.7)
  %198 = icmp ne i32 %197, 0
  br i1 %198, label %205, label %199

199:                                              ; preds = %195
  %200 = load ptr, ptr %26, align 8, !tbaa !5
  %201 = call i32 @lsame_(ptr noundef %200, ptr noundef @.str.4)
  %202 = icmp ne i32 %201, 0
  br i1 %202, label %205, label %203

203:                                              ; preds = %199
  %204 = load ptr, ptr %48, align 8, !tbaa !5
  store i32 -2, ptr %204, align 4, !tbaa !9
  br label %472

205:                                              ; preds = %199, %195, %192
  %206 = load ptr, ptr %27, align 8, !tbaa !5
  %207 = load i32, ptr %206, align 4, !tbaa !9
  %208 = icmp slt i32 %207, 0
  br i1 %208, label %209, label %211

209:                                              ; preds = %205
  %210 = load ptr, ptr %48, align 8, !tbaa !5
  store i32 -3, ptr %210, align 4, !tbaa !9
  br label %471

211:                                              ; preds = %205
  %212 = load ptr, ptr %28, align 8, !tbaa !5
  %213 = load i32, ptr %212, align 4, !tbaa !9
  %214 = icmp slt i32 %213, 0
  br i1 %214, label %215, label %217

215:                                              ; preds = %211
  %216 = load ptr, ptr %48, align 8, !tbaa !5
  store i32 -4, ptr %216, align 4, !tbaa !9
  br label %470

217:                                              ; preds = %211
  %218 = load ptr, ptr %29, align 8, !tbaa !5
  %219 = load i32, ptr %218, align 4, !tbaa !9
  %220 = icmp slt i32 %219, 0
  br i1 %220, label %221, label %223

221:                                              ; preds = %217
  %222 = load ptr, ptr %48, align 8, !tbaa !5
  store i32 -5, ptr %222, align 4, !tbaa !9
  br label %469

223:                                              ; preds = %217
  %224 = load ptr, ptr %30, align 8, !tbaa !5
  %225 = load i32, ptr %224, align 4, !tbaa !9
  %226 = icmp slt i32 %225, 0
  br i1 %226, label %227, label %229

227:                                              ; preds = %223
  %228 = load ptr, ptr %48, align 8, !tbaa !5
  store i32 -6, ptr %228, align 4, !tbaa !9
  br label %468

229:                                              ; preds = %223
  %230 = load ptr, ptr %32, align 8, !tbaa !5
  %231 = load i32, ptr %230, align 4, !tbaa !9
  %232 = load ptr, ptr %28, align 8, !tbaa !5
  %233 = load i32, ptr %232, align 4, !tbaa !9
  %234 = load ptr, ptr %29, align 8, !tbaa !5
  %235 = load i32, ptr %234, align 4, !tbaa !9
  %236 = add nsw i32 %233, %235
  %237 = add nsw i32 %236, 1
  %238 = icmp slt i32 %231, %237
  br i1 %238, label %239, label %241

239:                                              ; preds = %229
  %240 = load ptr, ptr %48, align 8, !tbaa !5
  store i32 -8, ptr %240, align 4, !tbaa !9
  br label %467

241:                                              ; preds = %229
  %242 = load ptr, ptr %34, align 8, !tbaa !5
  %243 = load i32, ptr %242, align 4, !tbaa !9
  %244 = load ptr, ptr %28, align 8, !tbaa !5
  %245 = load i32, ptr %244, align 4, !tbaa !9
  %246 = shl i32 %245, 1
  %247 = load ptr, ptr %29, align 8, !tbaa !5
  %248 = load i32, ptr %247, align 4, !tbaa !9
  %249 = add nsw i32 %246, %248
  %250 = add nsw i32 %249, 1
  %251 = icmp slt i32 %243, %250
  br i1 %251, label %252, label %254

252:                                              ; preds = %241
  %253 = load ptr, ptr %48, align 8, !tbaa !5
  store i32 -10, ptr %253, align 4, !tbaa !9
  br label %466

254:                                              ; preds = %241
  %255 = load ptr, ptr %25, align 8, !tbaa !5
  %256 = call i32 @lsame_(ptr noundef %255, ptr noundef @.str.6)
  %257 = icmp ne i32 %256, 0
  br i1 %257, label %258, label %270

258:                                              ; preds = %254
  %259 = load i32, ptr %83, align 4, !tbaa !9
  %260 = icmp ne i32 %259, 0
  br i1 %260, label %270, label %261

261:                                              ; preds = %258
  %262 = load i32, ptr %79, align 4, !tbaa !9
  %263 = icmp ne i32 %262, 0
  br i1 %263, label %270, label %264

264:                                              ; preds = %261
  %265 = load ptr, ptr %36, align 8, !tbaa !5
  %266 = call i32 @lsame_(ptr noundef %265, ptr noundef @.str)
  %267 = icmp ne i32 %266, 0
  br i1 %267, label %270, label %268

268:                                              ; preds = %264
  %269 = load ptr, ptr %48, align 8, !tbaa !5
  store i32 -12, ptr %269, align 4, !tbaa !9
  br label %465

270:                                              ; preds = %264, %261, %258, %254
  %271 = load i32, ptr %83, align 4, !tbaa !9
  %272 = icmp ne i32 %271, 0
  br i1 %272, label %273, label %347

273:                                              ; preds = %270
  %274 = load float, ptr %77, align 4, !tbaa !12
  store float %274, ptr %69, align 4, !tbaa !12
  store float 0.000000e+00, ptr %70, align 4, !tbaa !12
  %275 = load ptr, ptr %27, align 8, !tbaa !5
  %276 = load i32, ptr %275, align 4, !tbaa !9
  store i32 %276, ptr %57, align 4, !tbaa !9
  store i32 1, ptr %68, align 4, !tbaa !9
  br label %277

277:                                              ; preds = %312, %273
  %278 = load i32, ptr %68, align 4, !tbaa !9
  %279 = load i32, ptr %57, align 4, !tbaa !9
  %280 = icmp sle i32 %278, %279
  br i1 %280, label %281, label %315

281:                                              ; preds = %277
  %282 = load float, ptr %69, align 4, !tbaa !12
  store float %282, ptr %62, align 4, !tbaa !12
  %283 = load ptr, ptr %37, align 8, !tbaa !5
  %284 = load i32, ptr %68, align 4, !tbaa !9
  %285 = sext i32 %284 to i64
  %286 = getelementptr inbounds float, ptr %283, i64 %285
  %287 = load float, ptr %286, align 4, !tbaa !12
  store float %287, ptr %63, align 4, !tbaa !12
  %288 = load float, ptr %62, align 4, !tbaa !12
  %289 = load float, ptr %63, align 4, !tbaa !12
  %290 = fcmp ole float %288, %289
  br i1 %290, label %291, label %293

291:                                              ; preds = %281
  %292 = load float, ptr %62, align 4, !tbaa !12
  br label %295

293:                                              ; preds = %281
  %294 = load float, ptr %63, align 4, !tbaa !12
  br label %295

295:                                              ; preds = %293, %291
  %296 = phi float [ %292, %291 ], [ %294, %293 ]
  store float %296, ptr %69, align 4, !tbaa !12
  %297 = load float, ptr %70, align 4, !tbaa !12
  store float %297, ptr %62, align 4, !tbaa !12
  %298 = load ptr, ptr %37, align 8, !tbaa !5
  %299 = load i32, ptr %68, align 4, !tbaa !9
  %300 = sext i32 %299 to i64
  %301 = getelementptr inbounds float, ptr %298, i64 %300
  %302 = load float, ptr %301, align 4, !tbaa !12
  store float %302, ptr %63, align 4, !tbaa !12
  %303 = load float, ptr %62, align 4, !tbaa !12
  %304 = load float, ptr %63, align 4, !tbaa !12
  %305 = fcmp oge float %303, %304
  br i1 %305, label %306, label %308

306:                                              ; preds = %295
  %307 = load float, ptr %62, align 4, !tbaa !12
  br label %310

308:                                              ; preds = %295
  %309 = load float, ptr %63, align 4, !tbaa !12
  br label %310

310:                                              ; preds = %308, %306
  %311 = phi float [ %307, %306 ], [ %309, %308 ]
  store float %311, ptr %70, align 4, !tbaa !12
  br label %312

312:                                              ; preds = %310
  %313 = load i32, ptr %68, align 4, !tbaa !9
  %314 = add nsw i32 %313, 1
  store i32 %314, ptr %68, align 4, !tbaa !9
  br label %277, !llvm.loop !14

315:                                              ; preds = %277
  %316 = load float, ptr %69, align 4, !tbaa !12
  %317 = fcmp ole float %316, 0.000000e+00
  br i1 %317, label %318, label %320

318:                                              ; preds = %315
  %319 = load ptr, ptr %48, align 8, !tbaa !5
  store i32 -13, ptr %319, align 4, !tbaa !9
  br label %346

320:                                              ; preds = %315
  %321 = load ptr, ptr %27, align 8, !tbaa !5
  %322 = load i32, ptr %321, align 4, !tbaa !9
  %323 = icmp sgt i32 %322, 0
  br i1 %323, label %324, label %344

324:                                              ; preds = %320
  %325 = load float, ptr %69, align 4, !tbaa !12
  %326 = load float, ptr %82, align 4, !tbaa !12
  %327 = fcmp oge float %325, %326
  br i1 %327, label %328, label %330

328:                                              ; preds = %324
  %329 = load float, ptr %69, align 4, !tbaa !12
  br label %332

330:                                              ; preds = %324
  %331 = load float, ptr %82, align 4, !tbaa !12
  br label %332

332:                                              ; preds = %330, %328
  %333 = phi float [ %329, %328 ], [ %331, %330 ]
  %334 = load float, ptr %70, align 4, !tbaa !12
  %335 = load float, ptr %77, align 4, !tbaa !12
  %336 = fcmp ole float %334, %335
  br i1 %336, label %337, label %339

337:                                              ; preds = %332
  %338 = load float, ptr %70, align 4, !tbaa !12
  br label %341

339:                                              ; preds = %332
  %340 = load float, ptr %77, align 4, !tbaa !12
  br label %341

341:                                              ; preds = %339, %337
  %342 = phi float [ %338, %337 ], [ %340, %339 ]
  %343 = fdiv float %333, %342
  store float %343, ptr %80, align 4, !tbaa !12
  br label %345

344:                                              ; preds = %320
  store float 1.000000e+00, ptr %80, align 4, !tbaa !12
  br label %345

345:                                              ; preds = %344, %341
  br label %346

346:                                              ; preds = %345, %318
  br label %347

347:                                              ; preds = %346, %270
  %348 = load i32, ptr %79, align 4, !tbaa !9
  %349 = icmp ne i32 %348, 0
  br i1 %349, label %350, label %428

350:                                              ; preds = %347
  %351 = load ptr, ptr %48, align 8, !tbaa !5
  %352 = load i32, ptr %351, align 4, !tbaa !9
  %353 = icmp eq i32 %352, 0
  br i1 %353, label %354, label %428

354:                                              ; preds = %350
  %355 = load float, ptr %77, align 4, !tbaa !12
  store float %355, ptr %69, align 4, !tbaa !12
  store float 0.000000e+00, ptr %70, align 4, !tbaa !12
  %356 = load ptr, ptr %27, align 8, !tbaa !5
  %357 = load i32, ptr %356, align 4, !tbaa !9
  store i32 %357, ptr %57, align 4, !tbaa !9
  store i32 1, ptr %68, align 4, !tbaa !9
  br label %358

358:                                              ; preds = %393, %354
  %359 = load i32, ptr %68, align 4, !tbaa !9
  %360 = load i32, ptr %57, align 4, !tbaa !9
  %361 = icmp sle i32 %359, %360
  br i1 %361, label %362, label %396

362:                                              ; preds = %358
  %363 = load float, ptr %69, align 4, !tbaa !12
  store float %363, ptr %62, align 4, !tbaa !12
  %364 = load ptr, ptr %38, align 8, !tbaa !5
  %365 = load i32, ptr %68, align 4, !tbaa !9
  %366 = sext i32 %365 to i64
  %367 = getelementptr inbounds float, ptr %364, i64 %366
  %368 = load float, ptr %367, align 4, !tbaa !12
  store float %368, ptr %63, align 4, !tbaa !12
  %369 = load float, ptr %62, align 4, !tbaa !12
  %370 = load float, ptr %63, align 4, !tbaa !12
  %371 = fcmp ole float %369, %370
  br i1 %371, label %372, label %374

372:                                              ; preds = %362
  %373 = load float, ptr %62, align 4, !tbaa !12
  br label %376

374:                                              ; preds = %362
  %375 = load float, ptr %63, align 4, !tbaa !12
  br label %376

376:                                              ; preds = %374, %372
  %377 = phi float [ %373, %372 ], [ %375, %374 ]
  store float %377, ptr %69, align 4, !tbaa !12
  %378 = load float, ptr %70, align 4, !tbaa !12
  store float %378, ptr %62, align 4, !tbaa !12
  %379 = load ptr, ptr %38, align 8, !tbaa !5
  %380 = load i32, ptr %68, align 4, !tbaa !9
  %381 = sext i32 %380 to i64
  %382 = getelementptr inbounds float, ptr %379, i64 %381
  %383 = load float, ptr %382, align 4, !tbaa !12
  store float %383, ptr %63, align 4, !tbaa !12
  %384 = load float, ptr %62, align 4, !tbaa !12
  %385 = load float, ptr %63, align 4, !tbaa !12
  %386 = fcmp oge float %384, %385
  br i1 %386, label %387, label %389

387:                                              ; preds = %376
  %388 = load float, ptr %62, align 4, !tbaa !12
  br label %391

389:                                              ; preds = %376
  %390 = load float, ptr %63, align 4, !tbaa !12
  br label %391

391:                                              ; preds = %389, %387
  %392 = phi float [ %388, %387 ], [ %390, %389 ]
  store float %392, ptr %70, align 4, !tbaa !12
  br label %393

393:                                              ; preds = %391
  %394 = load i32, ptr %68, align 4, !tbaa !9
  %395 = add nsw i32 %394, 1
  store i32 %395, ptr %68, align 4, !tbaa !9
  br label %358, !llvm.loop !16

396:                                              ; preds = %358
  %397 = load float, ptr %69, align 4, !tbaa !12
  %398 = fcmp ole float %397, 0.000000e+00
  br i1 %398, label %399, label %401

399:                                              ; preds = %396
  %400 = load ptr, ptr %48, align 8, !tbaa !5
  store i32 -14, ptr %400, align 4, !tbaa !9
  br label %427

401:                                              ; preds = %396
  %402 = load ptr, ptr %27, align 8, !tbaa !5
  %403 = load i32, ptr %402, align 4, !tbaa !9
  %404 = icmp sgt i32 %403, 0
  br i1 %404, label %405, label %425

405:                                              ; preds = %401
  %406 = load float, ptr %69, align 4, !tbaa !12
  %407 = load float, ptr %82, align 4, !tbaa !12
  %408 = fcmp oge float %406, %407
  br i1 %408, label %409, label %411

409:                                              ; preds = %405
  %410 = load float, ptr %69, align 4, !tbaa !12
  br label %413

411:                                              ; preds = %405
  %412 = load float, ptr %82, align 4, !tbaa !12
  br label %413

413:                                              ; preds = %411, %409
  %414 = phi float [ %410, %409 ], [ %412, %411 ]
  %415 = load float, ptr %70, align 4, !tbaa !12
  %416 = load float, ptr %77, align 4, !tbaa !12
  %417 = fcmp ole float %415, %416
  br i1 %417, label %418, label %420

418:                                              ; preds = %413
  %419 = load float, ptr %70, align 4, !tbaa !12
  br label %422

420:                                              ; preds = %413
  %421 = load float, ptr %77, align 4, !tbaa !12
  br label %422

422:                                              ; preds = %420, %418
  %423 = phi float [ %419, %418 ], [ %421, %420 ]
  %424 = fdiv float %414, %423
  store float %424, ptr %75, align 4, !tbaa !12
  br label %426

425:                                              ; preds = %401
  store float 1.000000e+00, ptr %75, align 4, !tbaa !12
  br label %426

426:                                              ; preds = %425, %422
  br label %427

427:                                              ; preds = %426, %399
  br label %428

428:                                              ; preds = %427, %350, %347
  %429 = load ptr, ptr %48, align 8, !tbaa !5
  %430 = load i32, ptr %429, align 4, !tbaa !9
  %431 = icmp eq i32 %430, 0
  br i1 %431, label %432, label %464

432:                                              ; preds = %428
  %433 = load ptr, ptr %40, align 8, !tbaa !5
  %434 = load i32, ptr %433, align 4, !tbaa !9
  %435 = load ptr, ptr %27, align 8, !tbaa !5
  %436 = load i32, ptr %435, align 4, !tbaa !9
  %437 = icmp sge i32 1, %436
  br i1 %437, label %438, label %439

438:                                              ; preds = %432
  br label %442

439:                                              ; preds = %432
  %440 = load ptr, ptr %27, align 8, !tbaa !5
  %441 = load i32, ptr %440, align 4, !tbaa !9
  br label %442

442:                                              ; preds = %439, %438
  %443 = phi i32 [ 1, %438 ], [ %441, %439 ]
  %444 = icmp slt i32 %434, %443
  br i1 %444, label %445, label %447

445:                                              ; preds = %442
  %446 = load ptr, ptr %48, align 8, !tbaa !5
  store i32 -16, ptr %446, align 4, !tbaa !9
  br label %463

447:                                              ; preds = %442
  %448 = load ptr, ptr %42, align 8, !tbaa !5
  %449 = load i32, ptr %448, align 4, !tbaa !9
  %450 = load ptr, ptr %27, align 8, !tbaa !5
  %451 = load i32, ptr %450, align 4, !tbaa !9
  %452 = icmp sge i32 1, %451
  br i1 %452, label %453, label %454

453:                                              ; preds = %447
  br label %457

454:                                              ; preds = %447
  %455 = load ptr, ptr %27, align 8, !tbaa !5
  %456 = load i32, ptr %455, align 4, !tbaa !9
  br label %457

457:                                              ; preds = %454, %453
  %458 = phi i32 [ 1, %453 ], [ %456, %454 ]
  %459 = icmp slt i32 %449, %458
  br i1 %459, label %460, label %462

460:                                              ; preds = %457
  %461 = load ptr, ptr %48, align 8, !tbaa !5
  store i32 -18, ptr %461, align 4, !tbaa !9
  br label %462

462:                                              ; preds = %460, %457
  br label %463

463:                                              ; preds = %462, %445
  br label %464

464:                                              ; preds = %463, %428
  br label %465

465:                                              ; preds = %464, %268
  br label %466

466:                                              ; preds = %465, %252
  br label %467

467:                                              ; preds = %466, %239
  br label %468

468:                                              ; preds = %467, %227
  br label %469

469:                                              ; preds = %468, %221
  br label %470

470:                                              ; preds = %469, %215
  br label %471

471:                                              ; preds = %470, %209
  br label %472

472:                                              ; preds = %471, %203
  br label %473

473:                                              ; preds = %472, %190
  %474 = load ptr, ptr %48, align 8, !tbaa !5
  %475 = load i32, ptr %474, align 4, !tbaa !9
  %476 = icmp ne i32 %475, 0
  br i1 %476, label %477, label %482

477:                                              ; preds = %473
  %478 = load ptr, ptr %48, align 8, !tbaa !5
  %479 = load i32, ptr %478, align 4, !tbaa !9
  %480 = sub nsw i32 0, %479
  store i32 %480, ptr %57, align 4, !tbaa !9
  %481 = call i32 @xerbla_(ptr noundef @.str.8, ptr noundef %57, i32 noundef 6)
  store i32 1, ptr %85, align 4
  br label %1274

482:                                              ; preds = %473
  %483 = load i32, ptr %72, align 4, !tbaa !9
  %484 = icmp ne i32 %483, 0
  br i1 %484, label %485, label %537

485:                                              ; preds = %482
  %486 = load ptr, ptr %27, align 8, !tbaa !5
  %487 = load ptr, ptr %27, align 8, !tbaa !5
  %488 = load ptr, ptr %28, align 8, !tbaa !5
  %489 = load ptr, ptr %29, align 8, !tbaa !5
  %490 = load ptr, ptr %31, align 8, !tbaa !5
  %491 = load i32, ptr %50, align 4, !tbaa !9
  %492 = sext i32 %491 to i64
  %493 = getelementptr inbounds %struct.complex, ptr %490, i64 %492
  %494 = load ptr, ptr %32, align 8, !tbaa !5
  %495 = load ptr, ptr %37, align 8, !tbaa !5
  %496 = getelementptr inbounds float, ptr %495, i64 1
  %497 = load ptr, ptr %38, align 8, !tbaa !5
  %498 = getelementptr inbounds float, ptr %497, i64 1
  call void @cgbequ_(ptr noundef %486, ptr noundef %487, ptr noundef %488, ptr noundef %489, ptr noundef %493, ptr noundef %494, ptr noundef %496, ptr noundef %498, ptr noundef %80, ptr noundef %75, ptr noundef %65, ptr noundef %78)
  %499 = load i32, ptr %78, align 4, !tbaa !9
  %500 = icmp eq i32 %499, 0
  br i1 %500, label %501, label %536

501:                                              ; preds = %485
  %502 = load ptr, ptr %27, align 8, !tbaa !5
  %503 = load ptr, ptr %27, align 8, !tbaa !5
  %504 = load ptr, ptr %28, align 8, !tbaa !5
  %505 = load ptr, ptr %29, align 8, !tbaa !5
  %506 = load ptr, ptr %31, align 8, !tbaa !5
  %507 = load i32, ptr %50, align 4, !tbaa !9
  %508 = sext i32 %507 to i64
  %509 = getelementptr inbounds %struct.complex, ptr %506, i64 %508
  %510 = load ptr, ptr %32, align 8, !tbaa !5
  %511 = load ptr, ptr %37, align 8, !tbaa !5
  %512 = getelementptr inbounds float, ptr %511, i64 1
  %513 = load ptr, ptr %38, align 8, !tbaa !5
  %514 = getelementptr inbounds float, ptr %513, i64 1
  %515 = load ptr, ptr %36, align 8, !tbaa !5
  call void @claqgb_(ptr noundef %502, ptr noundef %503, ptr noundef %504, ptr noundef %505, ptr noundef %509, ptr noundef %510, ptr noundef %512, ptr noundef %514, ptr noundef %80, ptr noundef %75, ptr noundef %65, ptr noundef %515)
  %516 = load ptr, ptr %36, align 8, !tbaa !5
  %517 = call i32 @lsame_(ptr noundef %516, ptr noundef @.str.2)
  %518 = icmp ne i32 %517, 0
  br i1 %518, label %523, label %519

519:                                              ; preds = %501
  %520 = load ptr, ptr %36, align 8, !tbaa !5
  %521 = call i32 @lsame_(ptr noundef %520, ptr noundef @.str.3)
  %522 = icmp ne i32 %521, 0
  br label %523

523:                                              ; preds = %519, %501
  %524 = phi i1 [ true, %501 ], [ %522, %519 ]
  %525 = zext i1 %524 to i32
  store i32 %525, ptr %83, align 4, !tbaa !9
  %526 = load ptr, ptr %36, align 8, !tbaa !5
  %527 = call i32 @lsame_(ptr noundef %526, ptr noundef @.str.4)
  %528 = icmp ne i32 %527, 0
  br i1 %528, label %533, label %529

529:                                              ; preds = %523
  %530 = load ptr, ptr %36, align 8, !tbaa !5
  %531 = call i32 @lsame_(ptr noundef %530, ptr noundef @.str.3)
  %532 = icmp ne i32 %531, 0
  br label %533

533:                                              ; preds = %529, %523
  %534 = phi i1 [ true, %523 ], [ %532, %529 ]
  %535 = zext i1 %534 to i32
  store i32 %535, ptr %79, align 4, !tbaa !9
  br label %536

536:                                              ; preds = %533, %485
  br label %537

537:                                              ; preds = %536, %482
  %538 = load i32, ptr %81, align 4, !tbaa !9
  %539 = icmp ne i32 %538, 0
  br i1 %539, label %540, label %618

540:                                              ; preds = %537
  %541 = load i32, ptr %83, align 4, !tbaa !9
  %542 = icmp ne i32 %541, 0
  br i1 %542, label %543, label %617

543:                                              ; preds = %540
  %544 = load ptr, ptr %30, align 8, !tbaa !5
  %545 = load i32, ptr %544, align 4, !tbaa !9
  store i32 %545, ptr %57, align 4, !tbaa !9
  store i32 1, ptr %68, align 4, !tbaa !9
  br label %546

546:                                              ; preds = %613, %543
  %547 = load i32, ptr %68, align 4, !tbaa !9
  %548 = load i32, ptr %57, align 4, !tbaa !9
  %549 = icmp sle i32 %547, %548
  br i1 %549, label %550, label %616

550:                                              ; preds = %546
  %551 = load ptr, ptr %27, align 8, !tbaa !5
  %552 = load i32, ptr %551, align 4, !tbaa !9
  store i32 %552, ptr %58, align 4, !tbaa !9
  store i32 1, ptr %67, align 4, !tbaa !9
  br label %553

553:                                              ; preds = %609, %550
  %554 = load i32, ptr %67, align 4, !tbaa !9
  %555 = load i32, ptr %58, align 4, !tbaa !9
  %556 = icmp sle i32 %554, %555
  br i1 %556, label %557, label %612

557:                                              ; preds = %553
  %558 = load i32, ptr %67, align 4, !tbaa !9
  %559 = load i32, ptr %68, align 4, !tbaa !9
  %560 = load i32, ptr %53, align 4, !tbaa !9
  %561 = mul nsw i32 %559, %560
  %562 = add nsw i32 %558, %561
  store i32 %562, ptr %59, align 4, !tbaa !9
  %563 = load i32, ptr %67, align 4, !tbaa !9
  store i32 %563, ptr %60, align 4, !tbaa !9
  %564 = load i32, ptr %67, align 4, !tbaa !9
  %565 = load i32, ptr %68, align 4, !tbaa !9
  %566 = load i32, ptr %53, align 4, !tbaa !9
  %567 = mul nsw i32 %565, %566
  %568 = add nsw i32 %564, %567
  store i32 %568, ptr %61, align 4, !tbaa !9
  %569 = load ptr, ptr %37, align 8, !tbaa !5
  %570 = load i32, ptr %60, align 4, !tbaa !9
  %571 = sext i32 %570 to i64
  %572 = getelementptr inbounds float, ptr %569, i64 %571
  %573 = load float, ptr %572, align 4, !tbaa !12
  %574 = load ptr, ptr %39, align 8, !tbaa !5
  %575 = load i32, ptr %61, align 4, !tbaa !9
  %576 = sext i32 %575 to i64
  %577 = getelementptr inbounds %struct.complex, ptr %574, i64 %576
  %578 = getelementptr inbounds %struct.complex, ptr %577, i32 0, i32 0
  %579 = load float, ptr %578, align 4, !tbaa !17
  %580 = fmul float %573, %579
  %581 = getelementptr inbounds %struct.complex, ptr %64, i32 0, i32 0
  store float %580, ptr %581, align 4, !tbaa !17
  %582 = load ptr, ptr %37, align 8, !tbaa !5
  %583 = load i32, ptr %60, align 4, !tbaa !9
  %584 = sext i32 %583 to i64
  %585 = getelementptr inbounds float, ptr %582, i64 %584
  %586 = load float, ptr %585, align 4, !tbaa !12
  %587 = load ptr, ptr %39, align 8, !tbaa !5
  %588 = load i32, ptr %61, align 4, !tbaa !9
  %589 = sext i32 %588 to i64
  %590 = getelementptr inbounds %struct.complex, ptr %587, i64 %589
  %591 = getelementptr inbounds %struct.complex, ptr %590, i32 0, i32 1
  %592 = load float, ptr %591, align 4, !tbaa !19
  %593 = fmul float %586, %592
  %594 = getelementptr inbounds %struct.complex, ptr %64, i32 0, i32 1
  store float %593, ptr %594, align 4, !tbaa !19
  %595 = getelementptr inbounds %struct.complex, ptr %64, i32 0, i32 0
  %596 = load float, ptr %595, align 4, !tbaa !17
  %597 = load ptr, ptr %39, align 8, !tbaa !5
  %598 = load i32, ptr %59, align 4, !tbaa !9
  %599 = sext i32 %598 to i64
  %600 = getelementptr inbounds %struct.complex, ptr %597, i64 %599
  %601 = getelementptr inbounds %struct.complex, ptr %600, i32 0, i32 0
  store float %596, ptr %601, align 4, !tbaa !17
  %602 = getelementptr inbounds %struct.complex, ptr %64, i32 0, i32 1
  %603 = load float, ptr %602, align 4, !tbaa !19
  %604 = load ptr, ptr %39, align 8, !tbaa !5
  %605 = load i32, ptr %59, align 4, !tbaa !9
  %606 = sext i32 %605 to i64
  %607 = getelementptr inbounds %struct.complex, ptr %604, i64 %606
  %608 = getelementptr inbounds %struct.complex, ptr %607, i32 0, i32 1
  store float %603, ptr %608, align 4, !tbaa !19
  br label %609

609:                                              ; preds = %557
  %610 = load i32, ptr %67, align 4, !tbaa !9
  %611 = add nsw i32 %610, 1
  store i32 %611, ptr %67, align 4, !tbaa !9
  br label %553, !llvm.loop !20

612:                                              ; preds = %553
  br label %613

613:                                              ; preds = %612
  %614 = load i32, ptr %68, align 4, !tbaa !9
  %615 = add nsw i32 %614, 1
  store i32 %615, ptr %68, align 4, !tbaa !9
  br label %546, !llvm.loop !21

616:                                              ; preds = %546
  br label %617

617:                                              ; preds = %616, %540
  br label %696

618:                                              ; preds = %537
  %619 = load i32, ptr %79, align 4, !tbaa !9
  %620 = icmp ne i32 %619, 0
  br i1 %620, label %621, label %695

621:                                              ; preds = %618
  %622 = load ptr, ptr %30, align 8, !tbaa !5
  %623 = load i32, ptr %622, align 4, !tbaa !9
  store i32 %623, ptr %57, align 4, !tbaa !9
  store i32 1, ptr %68, align 4, !tbaa !9
  br label %624

624:                                              ; preds = %691, %621
  %625 = load i32, ptr %68, align 4, !tbaa !9
  %626 = load i32, ptr %57, align 4, !tbaa !9
  %627 = icmp sle i32 %625, %626
  br i1 %627, label %628, label %694

628:                                              ; preds = %624
  %629 = load ptr, ptr %27, align 8, !tbaa !5
  %630 = load i32, ptr %629, align 4, !tbaa !9
  store i32 %630, ptr %58, align 4, !tbaa !9
  store i32 1, ptr %67, align 4, !tbaa !9
  br label %631

631:                                              ; preds = %687, %628
  %632 = load i32, ptr %67, align 4, !tbaa !9
  %633 = load i32, ptr %58, align 4, !tbaa !9
  %634 = icmp sle i32 %632, %633
  br i1 %634, label %635, label %690

635:                                              ; preds = %631
  %636 = load i32, ptr %67, align 4, !tbaa !9
  %637 = load i32, ptr %68, align 4, !tbaa !9
  %638 = load i32, ptr %53, align 4, !tbaa !9
  %639 = mul nsw i32 %637, %638
  %640 = add nsw i32 %636, %639
  store i32 %640, ptr %59, align 4, !tbaa !9
  %641 = load i32, ptr %67, align 4, !tbaa !9
  store i32 %641, ptr %60, align 4, !tbaa !9
  %642 = load i32, ptr %67, align 4, !tbaa !9
  %643 = load i32, ptr %68, align 4, !tbaa !9
  %644 = load i32, ptr %53, align 4, !tbaa !9
  %645 = mul nsw i32 %643, %644
  %646 = add nsw i32 %642, %645
  store i32 %646, ptr %61, align 4, !tbaa !9
  %647 = load ptr, ptr %38, align 8, !tbaa !5
  %648 = load i32, ptr %60, align 4, !tbaa !9
  %649 = sext i32 %648 to i64
  %650 = getelementptr inbounds float, ptr %647, i64 %649
  %651 = load float, ptr %650, align 4, !tbaa !12
  %652 = load ptr, ptr %39, align 8, !tbaa !5
  %653 = load i32, ptr %61, align 4, !tbaa !9
  %654 = sext i32 %653 to i64
  %655 = getelementptr inbounds %struct.complex, ptr %652, i64 %654
  %656 = getelementptr inbounds %struct.complex, ptr %655, i32 0, i32 0
  %657 = load float, ptr %656, align 4, !tbaa !17
  %658 = fmul float %651, %657
  %659 = getelementptr inbounds %struct.complex, ptr %64, i32 0, i32 0
  store float %658, ptr %659, align 4, !tbaa !17
  %660 = load ptr, ptr %38, align 8, !tbaa !5
  %661 = load i32, ptr %60, align 4, !tbaa !9
  %662 = sext i32 %661 to i64
  %663 = getelementptr inbounds float, ptr %660, i64 %662
  %664 = load float, ptr %663, align 4, !tbaa !12
  %665 = load ptr, ptr %39, align 8, !tbaa !5
  %666 = load i32, ptr %61, align 4, !tbaa !9
  %667 = sext i32 %666 to i64
  %668 = getelementptr inbounds %struct.complex, ptr %665, i64 %667
  %669 = getelementptr inbounds %struct.complex, ptr %668, i32 0, i32 1
  %670 = load float, ptr %669, align 4, !tbaa !19
  %671 = fmul float %664, %670
  %672 = getelementptr inbounds %struct.complex, ptr %64, i32 0, i32 1
  store float %671, ptr %672, align 4, !tbaa !19
  %673 = getelementptr inbounds %struct.complex, ptr %64, i32 0, i32 0
  %674 = load float, ptr %673, align 4, !tbaa !17
  %675 = load ptr, ptr %39, align 8, !tbaa !5
  %676 = load i32, ptr %59, align 4, !tbaa !9
  %677 = sext i32 %676 to i64
  %678 = getelementptr inbounds %struct.complex, ptr %675, i64 %677
  %679 = getelementptr inbounds %struct.complex, ptr %678, i32 0, i32 0
  store float %674, ptr %679, align 4, !tbaa !17
  %680 = getelementptr inbounds %struct.complex, ptr %64, i32 0, i32 1
  %681 = load float, ptr %680, align 4, !tbaa !19
  %682 = load ptr, ptr %39, align 8, !tbaa !5
  %683 = load i32, ptr %59, align 4, !tbaa !9
  %684 = sext i32 %683 to i64
  %685 = getelementptr inbounds %struct.complex, ptr %682, i64 %684
  %686 = getelementptr inbounds %struct.complex, ptr %685, i32 0, i32 1
  store float %681, ptr %686, align 4, !tbaa !19
  br label %687

687:                                              ; preds = %635
  %688 = load i32, ptr %67, align 4, !tbaa !9
  %689 = add nsw i32 %688, 1
  store i32 %689, ptr %67, align 4, !tbaa !9
  br label %631, !llvm.loop !22

690:                                              ; preds = %631
  br label %691

691:                                              ; preds = %690
  %692 = load i32, ptr %68, align 4, !tbaa !9
  %693 = add nsw i32 %692, 1
  store i32 %693, ptr %68, align 4, !tbaa !9
  br label %624, !llvm.loop !23

694:                                              ; preds = %624
  br label %695

695:                                              ; preds = %694, %618
  br label %696

696:                                              ; preds = %695, %617
  %697 = load i32, ptr %76, align 4, !tbaa !9
  %698 = icmp ne i32 %697, 0
  br i1 %698, label %702, label %699

699:                                              ; preds = %696
  %700 = load i32, ptr %72, align 4, !tbaa !9
  %701 = icmp ne i32 %700, 0
  br i1 %701, label %702, label %931

702:                                              ; preds = %699, %696
  %703 = load ptr, ptr %27, align 8, !tbaa !5
  %704 = load i32, ptr %703, align 4, !tbaa !9
  store i32 %704, ptr %57, align 4, !tbaa !9
  store i32 1, ptr %68, align 4, !tbaa !9
  br label %705

705:                                              ; preds = %771, %702
  %706 = load i32, ptr %68, align 4, !tbaa !9
  %707 = load i32, ptr %57, align 4, !tbaa !9
  %708 = icmp sle i32 %706, %707
  br i1 %708, label %709, label %774

709:                                              ; preds = %705
  %710 = load i32, ptr %68, align 4, !tbaa !9
  %711 = load ptr, ptr %29, align 8, !tbaa !5
  %712 = load i32, ptr %711, align 4, !tbaa !9
  %713 = sub nsw i32 %710, %712
  store i32 %713, ptr %58, align 4, !tbaa !9
  %714 = load i32, ptr %58, align 4, !tbaa !9
  %715 = icmp sge i32 %714, 1
  br i1 %715, label %716, label %718

716:                                              ; preds = %709
  %717 = load i32, ptr %58, align 4, !tbaa !9
  br label %719

718:                                              ; preds = %709
  br label %719

719:                                              ; preds = %718, %716
  %720 = phi i32 [ %717, %716 ], [ 1, %718 ]
  store i32 %720, ptr %73, align 4, !tbaa !9
  %721 = load i32, ptr %68, align 4, !tbaa !9
  %722 = load ptr, ptr %28, align 8, !tbaa !5
  %723 = load i32, ptr %722, align 4, !tbaa !9
  %724 = add nsw i32 %721, %723
  store i32 %724, ptr %58, align 4, !tbaa !9
  %725 = load i32, ptr %58, align 4, !tbaa !9
  %726 = load ptr, ptr %27, align 8, !tbaa !5
  %727 = load i32, ptr %726, align 4, !tbaa !9
  %728 = icmp sle i32 %725, %727
  br i1 %728, label %729, label %731

729:                                              ; preds = %719
  %730 = load i32, ptr %58, align 4, !tbaa !9
  br label %734

731:                                              ; preds = %719
  %732 = load ptr, ptr %27, align 8, !tbaa !5
  %733 = load i32, ptr %732, align 4, !tbaa !9
  br label %734

734:                                              ; preds = %731, %729
  %735 = phi i32 [ %730, %729 ], [ %733, %731 ]
  store i32 %735, ptr %74, align 4, !tbaa !9
  %736 = load i32, ptr %74, align 4, !tbaa !9
  %737 = load i32, ptr %73, align 4, !tbaa !9
  %738 = sub nsw i32 %736, %737
  %739 = add nsw i32 %738, 1
  store i32 %739, ptr %58, align 4, !tbaa !9
  %740 = load ptr, ptr %31, align 8, !tbaa !5
  %741 = load ptr, ptr %29, align 8, !tbaa !5
  %742 = load i32, ptr %741, align 4, !tbaa !9
  %743 = add nsw i32 %742, 1
  %744 = load i32, ptr %68, align 4, !tbaa !9
  %745 = sub nsw i32 %743, %744
  %746 = load i32, ptr %73, align 4, !tbaa !9
  %747 = add nsw i32 %745, %746
  %748 = load i32, ptr %68, align 4, !tbaa !9
  %749 = load i32, ptr %49, align 4, !tbaa !9
  %750 = mul nsw i32 %748, %749
  %751 = add nsw i32 %747, %750
  %752 = sext i32 %751 to i64
  %753 = getelementptr inbounds %struct.complex, ptr %740, i64 %752
  %754 = load ptr, ptr %33, align 8, !tbaa !5
  %755 = load ptr, ptr %28, align 8, !tbaa !5
  %756 = load i32, ptr %755, align 4, !tbaa !9
  %757 = load ptr, ptr %29, align 8, !tbaa !5
  %758 = load i32, ptr %757, align 4, !tbaa !9
  %759 = add nsw i32 %756, %758
  %760 = add nsw i32 %759, 1
  %761 = load i32, ptr %68, align 4, !tbaa !9
  %762 = sub nsw i32 %760, %761
  %763 = load i32, ptr %73, align 4, !tbaa !9
  %764 = add nsw i32 %762, %763
  %765 = load i32, ptr %68, align 4, !tbaa !9
  %766 = load i32, ptr %51, align 4, !tbaa !9
  %767 = mul nsw i32 %765, %766
  %768 = add nsw i32 %764, %767
  %769 = sext i32 %768 to i64
  %770 = getelementptr inbounds %struct.complex, ptr %754, i64 %769
  call void @ccopy_(ptr noundef %58, ptr noundef %753, ptr noundef @c__1, ptr noundef %770, ptr noundef @c__1)
  br label %771

771:                                              ; preds = %734
  %772 = load i32, ptr %68, align 4, !tbaa !9
  %773 = add nsw i32 %772, 1
  store i32 %773, ptr %68, align 4, !tbaa !9
  br label %705, !llvm.loop !24

774:                                              ; preds = %705
  %775 = load ptr, ptr %27, align 8, !tbaa !5
  %776 = load ptr, ptr %27, align 8, !tbaa !5
  %777 = load ptr, ptr %28, align 8, !tbaa !5
  %778 = load ptr, ptr %29, align 8, !tbaa !5
  %779 = load ptr, ptr %33, align 8, !tbaa !5
  %780 = load i32, ptr %52, align 4, !tbaa !9
  %781 = sext i32 %780 to i64
  %782 = getelementptr inbounds %struct.complex, ptr %779, i64 %781
  %783 = load ptr, ptr %34, align 8, !tbaa !5
  %784 = load ptr, ptr %35, align 8, !tbaa !5
  %785 = getelementptr inbounds i32, ptr %784, i64 1
  %786 = load ptr, ptr %48, align 8, !tbaa !5
  call void @cgbtrf_(ptr noundef %775, ptr noundef %776, ptr noundef %777, ptr noundef %778, ptr noundef %782, ptr noundef %783, ptr noundef %785, ptr noundef %786)
  %787 = load ptr, ptr %48, align 8, !tbaa !5
  %788 = load i32, ptr %787, align 4, !tbaa !9
  %789 = icmp sgt i32 %788, 0
  br i1 %789, label %790, label %930

790:                                              ; preds = %774
  store float 0.000000e+00, ptr %71, align 4, !tbaa !12
  %791 = load ptr, ptr %48, align 8, !tbaa !5
  %792 = load i32, ptr %791, align 4, !tbaa !9
  store i32 %792, ptr %57, align 4, !tbaa !9
  store i32 1, ptr %68, align 4, !tbaa !9
  br label %793

793:                                              ; preds = %869, %790
  %794 = load i32, ptr %68, align 4, !tbaa !9
  %795 = load i32, ptr %57, align 4, !tbaa !9
  %796 = icmp sle i32 %794, %795
  br i1 %796, label %797, label %872

797:                                              ; preds = %793
  %798 = load ptr, ptr %29, align 8, !tbaa !5
  %799 = load i32, ptr %798, align 4, !tbaa !9
  %800 = add nsw i32 %799, 2
  %801 = load i32, ptr %68, align 4, !tbaa !9
  %802 = sub nsw i32 %800, %801
  store i32 %802, ptr %58, align 4, !tbaa !9
  %803 = load ptr, ptr %27, align 8, !tbaa !5
  %804 = load i32, ptr %803, align 4, !tbaa !9
  %805 = load ptr, ptr %29, align 8, !tbaa !5
  %806 = load i32, ptr %805, align 4, !tbaa !9
  %807 = add nsw i32 %804, %806
  %808 = add nsw i32 %807, 1
  %809 = load i32, ptr %68, align 4, !tbaa !9
  %810 = sub nsw i32 %808, %809
  store i32 %810, ptr %60, align 4, !tbaa !9
  %811 = load ptr, ptr %28, align 8, !tbaa !5
  %812 = load i32, ptr %811, align 4, !tbaa !9
  %813 = load ptr, ptr %29, align 8, !tbaa !5
  %814 = load i32, ptr %813, align 4, !tbaa !9
  %815 = add nsw i32 %812, %814
  %816 = add nsw i32 %815, 1
  store i32 %816, ptr %61, align 4, !tbaa !9
  %817 = load i32, ptr %60, align 4, !tbaa !9
  %818 = load i32, ptr %61, align 4, !tbaa !9
  %819 = icmp sle i32 %817, %818
  br i1 %819, label %820, label %822

820:                                              ; preds = %797
  %821 = load i32, ptr %60, align 4, !tbaa !9
  br label %824

822:                                              ; preds = %797
  %823 = load i32, ptr %61, align 4, !tbaa !9
  br label %824

824:                                              ; preds = %822, %820
  %825 = phi i32 [ %821, %820 ], [ %823, %822 ]
  store i32 %825, ptr %59, align 4, !tbaa !9
  %826 = load i32, ptr %58, align 4, !tbaa !9
  %827 = icmp sge i32 %826, 1
  br i1 %827, label %828, label %830

828:                                              ; preds = %824
  %829 = load i32, ptr %58, align 4, !tbaa !9
  br label %831

830:                                              ; preds = %824
  br label %831

831:                                              ; preds = %830, %828
  %832 = phi i32 [ %829, %828 ], [ 1, %830 ]
  store i32 %832, ptr %67, align 4, !tbaa !9
  br label %833

833:                                              ; preds = %865, %831
  %834 = load i32, ptr %67, align 4, !tbaa !9
  %835 = load i32, ptr %59, align 4, !tbaa !9
  %836 = icmp sle i32 %834, %835
  br i1 %836, label %837, label %868

837:                                              ; preds = %833
  %838 = load float, ptr %71, align 4, !tbaa !12
  store float %838, ptr %62, align 4, !tbaa !12
  %839 = load ptr, ptr %31, align 8, !tbaa !5
  %840 = load i32, ptr %67, align 4, !tbaa !9
  %841 = load i32, ptr %68, align 4, !tbaa !9
  %842 = load i32, ptr %49, align 4, !tbaa !9
  %843 = mul nsw i32 %841, %842
  %844 = add nsw i32 %840, %843
  %845 = sext i32 %844 to i64
  %846 = getelementptr inbounds %struct.complex, ptr %839, i64 %845
  %847 = call <2 x float> @Cf(ptr noundef %846)
  store <2 x float> %847, ptr %86, align 4
  %848 = getelementptr inbounds { float, float }, ptr %86, i32 0, i32 0
  %849 = load float, ptr %848, align 4
  %850 = getelementptr inbounds { float, float }, ptr %86, i32 0, i32 1
  %851 = load float, ptr %850, align 4
  %852 = getelementptr inbounds { float, float }, ptr %87, i32 0, i32 0
  %853 = getelementptr inbounds { float, float }, ptr %87, i32 0, i32 1
  store float %849, ptr %852, align 4
  store float %851, ptr %853, align 4
  %854 = load <2 x float>, ptr %87, align 4
  %855 = call float @cabsf(<2 x float> noundef %854) #5
  store float %855, ptr %63, align 4, !tbaa !12
  %856 = load float, ptr %62, align 4, !tbaa !12
  %857 = load float, ptr %63, align 4, !tbaa !12
  %858 = fcmp oge float %856, %857
  br i1 %858, label %859, label %861

859:                                              ; preds = %837
  %860 = load float, ptr %62, align 4, !tbaa !12
  br label %863

861:                                              ; preds = %837
  %862 = load float, ptr %63, align 4, !tbaa !12
  br label %863

863:                                              ; preds = %861, %859
  %864 = phi float [ %860, %859 ], [ %862, %861 ]
  store float %864, ptr %71, align 4, !tbaa !12
  br label %865

865:                                              ; preds = %863
  %866 = load i32, ptr %67, align 4, !tbaa !9
  %867 = add nsw i32 %866, 1
  store i32 %867, ptr %67, align 4, !tbaa !9
  br label %833, !llvm.loop !25

868:                                              ; preds = %833
  br label %869

869:                                              ; preds = %868
  %870 = load i32, ptr %68, align 4, !tbaa !9
  %871 = add nsw i32 %870, 1
  store i32 %871, ptr %68, align 4, !tbaa !9
  br label %793, !llvm.loop !26

872:                                              ; preds = %793
  %873 = load ptr, ptr %48, align 8, !tbaa !5
  %874 = load i32, ptr %873, align 4, !tbaa !9
  %875 = sub nsw i32 %874, 1
  store i32 %875, ptr %59, align 4, !tbaa !9
  %876 = load ptr, ptr %28, align 8, !tbaa !5
  %877 = load i32, ptr %876, align 4, !tbaa !9
  %878 = load ptr, ptr %29, align 8, !tbaa !5
  %879 = load i32, ptr %878, align 4, !tbaa !9
  %880 = add nsw i32 %877, %879
  store i32 %880, ptr %58, align 4, !tbaa !9
  %881 = load i32, ptr %59, align 4, !tbaa !9
  %882 = load i32, ptr %58, align 4, !tbaa !9
  %883 = icmp sle i32 %881, %882
  br i1 %883, label %884, label %886

884:                                              ; preds = %872
  %885 = load i32, ptr %59, align 4, !tbaa !9
  br label %888

886:                                              ; preds = %872
  %887 = load i32, ptr %58, align 4, !tbaa !9
  br label %888

888:                                              ; preds = %886, %884
  %889 = phi i32 [ %885, %884 ], [ %887, %886 ]
  store i32 %889, ptr %57, align 4, !tbaa !9
  store i32 1, ptr %60, align 4, !tbaa !9
  %890 = load ptr, ptr %28, align 8, !tbaa !5
  %891 = load i32, ptr %890, align 4, !tbaa !9
  %892 = load ptr, ptr %29, align 8, !tbaa !5
  %893 = load i32, ptr %892, align 4, !tbaa !9
  %894 = add nsw i32 %891, %893
  %895 = add nsw i32 %894, 2
  %896 = load ptr, ptr %48, align 8, !tbaa !5
  %897 = load i32, ptr %896, align 4, !tbaa !9
  %898 = sub nsw i32 %895, %897
  store i32 %898, ptr %61, align 4, !tbaa !9
  %899 = load ptr, ptr %48, align 8, !tbaa !5
  %900 = load ptr, ptr %33, align 8, !tbaa !5
  %901 = load i32, ptr %60, align 4, !tbaa !9
  %902 = load i32, ptr %61, align 4, !tbaa !9
  %903 = icmp sge i32 %901, %902
  br i1 %903, label %904, label %906

904:                                              ; preds = %888
  %905 = load i32, ptr %60, align 4, !tbaa !9
  br label %908

906:                                              ; preds = %888
  %907 = load i32, ptr %61, align 4, !tbaa !9
  br label %908

908:                                              ; preds = %906, %904
  %909 = phi i32 [ %905, %904 ], [ %907, %906 ]
  %910 = load i32, ptr %51, align 4, !tbaa !9
  %911 = add nsw i32 %909, %910
  %912 = sext i32 %911 to i64
  %913 = getelementptr inbounds %struct.complex, ptr %900, i64 %912
  %914 = load ptr, ptr %34, align 8, !tbaa !5
  %915 = load ptr, ptr %47, align 8, !tbaa !5
  %916 = getelementptr inbounds float, ptr %915, i64 1
  %917 = call float @clantb_(ptr noundef @.str.9, ptr noundef @.str.10, ptr noundef @.str, ptr noundef %899, ptr noundef %57, ptr noundef %913, ptr noundef %914, ptr noundef %916)
  store float %917, ptr %84, align 4, !tbaa !12
  %918 = load float, ptr %84, align 4, !tbaa !12
  %919 = fcmp oeq float %918, 0.000000e+00
  br i1 %919, label %920, label %921

920:                                              ; preds = %908
  store float 1.000000e+00, ptr %84, align 4, !tbaa !12
  br label %925

921:                                              ; preds = %908
  %922 = load float, ptr %71, align 4, !tbaa !12
  %923 = load float, ptr %84, align 4, !tbaa !12
  %924 = fdiv float %922, %923
  store float %924, ptr %84, align 4, !tbaa !12
  br label %925

925:                                              ; preds = %921, %920
  %926 = load float, ptr %84, align 4, !tbaa !12
  %927 = load ptr, ptr %47, align 8, !tbaa !5
  %928 = getelementptr inbounds float, ptr %927, i64 1
  store float %926, ptr %928, align 4, !tbaa !12
  %929 = load ptr, ptr %43, align 8, !tbaa !5
  store float 0.000000e+00, ptr %929, align 4, !tbaa !12
  store i32 1, ptr %85, align 4
  br label %1274

930:                                              ; preds = %774
  br label %931

931:                                              ; preds = %930, %699
  %932 = load i32, ptr %81, align 4, !tbaa !9
  %933 = icmp ne i32 %932, 0
  br i1 %933, label %934, label %936

934:                                              ; preds = %931
  %935 = getelementptr inbounds [1 x i8], ptr %66, i64 0, i64 0
  store i8 49, ptr %935, align 1, !tbaa !11
  br label %938

936:                                              ; preds = %931
  %937 = getelementptr inbounds [1 x i8], ptr %66, i64 0, i64 0
  store i8 73, ptr %937, align 1, !tbaa !11
  br label %938

938:                                              ; preds = %936, %934
  %939 = getelementptr inbounds [1 x i8], ptr %66, i64 0, i64 0
  %940 = load ptr, ptr %27, align 8, !tbaa !5
  %941 = load ptr, ptr %28, align 8, !tbaa !5
  %942 = load ptr, ptr %29, align 8, !tbaa !5
  %943 = load ptr, ptr %31, align 8, !tbaa !5
  %944 = load i32, ptr %50, align 4, !tbaa !9
  %945 = sext i32 %944 to i64
  %946 = getelementptr inbounds %struct.complex, ptr %943, i64 %945
  %947 = load ptr, ptr %32, align 8, !tbaa !5
  %948 = load ptr, ptr %47, align 8, !tbaa !5
  %949 = getelementptr inbounds float, ptr %948, i64 1
  %950 = call float @clangb_(ptr noundef %939, ptr noundef %940, ptr noundef %941, ptr noundef %942, ptr noundef %946, ptr noundef %947, ptr noundef %949)
  store float %950, ptr %71, align 4, !tbaa !12
  %951 = load ptr, ptr %28, align 8, !tbaa !5
  %952 = load i32, ptr %951, align 4, !tbaa !9
  %953 = load ptr, ptr %29, align 8, !tbaa !5
  %954 = load i32, ptr %953, align 4, !tbaa !9
  %955 = add nsw i32 %952, %954
  store i32 %955, ptr %57, align 4, !tbaa !9
  %956 = load ptr, ptr %27, align 8, !tbaa !5
  %957 = load ptr, ptr %33, align 8, !tbaa !5
  %958 = load i32, ptr %52, align 4, !tbaa !9
  %959 = sext i32 %958 to i64
  %960 = getelementptr inbounds %struct.complex, ptr %957, i64 %959
  %961 = load ptr, ptr %34, align 8, !tbaa !5
  %962 = load ptr, ptr %47, align 8, !tbaa !5
  %963 = getelementptr inbounds float, ptr %962, i64 1
  %964 = call float @clantb_(ptr noundef @.str.9, ptr noundef @.str.10, ptr noundef @.str, ptr noundef %956, ptr noundef %57, ptr noundef %960, ptr noundef %961, ptr noundef %963)
  store float %964, ptr %84, align 4, !tbaa !12
  %965 = load float, ptr %84, align 4, !tbaa !12
  %966 = fcmp oeq float %965, 0.000000e+00
  br i1 %966, label %967, label %968

967:                                              ; preds = %938
  store float 1.000000e+00, ptr %84, align 4, !tbaa !12
  br label %982

968:                                              ; preds = %938
  %969 = load ptr, ptr %27, align 8, !tbaa !5
  %970 = load ptr, ptr %28, align 8, !tbaa !5
  %971 = load ptr, ptr %29, align 8, !tbaa !5
  %972 = load ptr, ptr %31, align 8, !tbaa !5
  %973 = load i32, ptr %50, align 4, !tbaa !9
  %974 = sext i32 %973 to i64
  %975 = getelementptr inbounds %struct.complex, ptr %972, i64 %974
  %976 = load ptr, ptr %32, align 8, !tbaa !5
  %977 = load ptr, ptr %47, align 8, !tbaa !5
  %978 = getelementptr inbounds float, ptr %977, i64 1
  %979 = call float @clangb_(ptr noundef @.str.9, ptr noundef %969, ptr noundef %970, ptr noundef %971, ptr noundef %975, ptr noundef %976, ptr noundef %978)
  %980 = load float, ptr %84, align 4, !tbaa !12
  %981 = fdiv float %979, %980
  store float %981, ptr %84, align 4, !tbaa !12
  br label %982

982:                                              ; preds = %968, %967
  %983 = getelementptr inbounds [1 x i8], ptr %66, i64 0, i64 0
  %984 = load ptr, ptr %27, align 8, !tbaa !5
  %985 = load ptr, ptr %28, align 8, !tbaa !5
  %986 = load ptr, ptr %29, align 8, !tbaa !5
  %987 = load ptr, ptr %33, align 8, !tbaa !5
  %988 = load i32, ptr %52, align 4, !tbaa !9
  %989 = sext i32 %988 to i64
  %990 = getelementptr inbounds %struct.complex, ptr %987, i64 %989
  %991 = load ptr, ptr %34, align 8, !tbaa !5
  %992 = load ptr, ptr %35, align 8, !tbaa !5
  %993 = getelementptr inbounds i32, ptr %992, i64 1
  %994 = load ptr, ptr %43, align 8, !tbaa !5
  %995 = load ptr, ptr %46, align 8, !tbaa !5
  %996 = getelementptr inbounds %struct.complex, ptr %995, i64 1
  %997 = load ptr, ptr %47, align 8, !tbaa !5
  %998 = getelementptr inbounds float, ptr %997, i64 1
  %999 = load ptr, ptr %48, align 8, !tbaa !5
  call void @cgbcon_(ptr noundef %983, ptr noundef %984, ptr noundef %985, ptr noundef %986, ptr noundef %990, ptr noundef %991, ptr noundef %993, ptr noundef %71, ptr noundef %994, ptr noundef %996, ptr noundef %998, ptr noundef %999)
  %1000 = load ptr, ptr %27, align 8, !tbaa !5
  %1001 = load ptr, ptr %30, align 8, !tbaa !5
  %1002 = load ptr, ptr %39, align 8, !tbaa !5
  %1003 = load i32, ptr %54, align 4, !tbaa !9
  %1004 = sext i32 %1003 to i64
  %1005 = getelementptr inbounds %struct.complex, ptr %1002, i64 %1004
  %1006 = load ptr, ptr %40, align 8, !tbaa !5
  %1007 = load ptr, ptr %41, align 8, !tbaa !5
  %1008 = load i32, ptr %56, align 4, !tbaa !9
  %1009 = sext i32 %1008 to i64
  %1010 = getelementptr inbounds %struct.complex, ptr %1007, i64 %1009
  %1011 = load ptr, ptr %42, align 8, !tbaa !5
  call void @clacpy_(ptr noundef @.str.11, ptr noundef %1000, ptr noundef %1001, ptr noundef %1005, ptr noundef %1006, ptr noundef %1010, ptr noundef %1011)
  %1012 = load ptr, ptr %26, align 8, !tbaa !5
  %1013 = load ptr, ptr %27, align 8, !tbaa !5
  %1014 = load ptr, ptr %28, align 8, !tbaa !5
  %1015 = load ptr, ptr %29, align 8, !tbaa !5
  %1016 = load ptr, ptr %30, align 8, !tbaa !5
  %1017 = load ptr, ptr %33, align 8, !tbaa !5
  %1018 = load i32, ptr %52, align 4, !tbaa !9
  %1019 = sext i32 %1018 to i64
  %1020 = getelementptr inbounds %struct.complex, ptr %1017, i64 %1019
  %1021 = load ptr, ptr %34, align 8, !tbaa !5
  %1022 = load ptr, ptr %35, align 8, !tbaa !5
  %1023 = getelementptr inbounds i32, ptr %1022, i64 1
  %1024 = load ptr, ptr %41, align 8, !tbaa !5
  %1025 = load i32, ptr %56, align 4, !tbaa !9
  %1026 = sext i32 %1025 to i64
  %1027 = getelementptr inbounds %struct.complex, ptr %1024, i64 %1026
  %1028 = load ptr, ptr %42, align 8, !tbaa !5
  %1029 = load ptr, ptr %48, align 8, !tbaa !5
  call void @cgbtrs_(ptr noundef %1012, ptr noundef %1013, ptr noundef %1014, ptr noundef %1015, ptr noundef %1016, ptr noundef %1020, ptr noundef %1021, ptr noundef %1023, ptr noundef %1027, ptr noundef %1028, ptr noundef %1029)
  %1030 = load ptr, ptr %26, align 8, !tbaa !5
  %1031 = load ptr, ptr %27, align 8, !tbaa !5
  %1032 = load ptr, ptr %28, align 8, !tbaa !5
  %1033 = load ptr, ptr %29, align 8, !tbaa !5
  %1034 = load ptr, ptr %30, align 8, !tbaa !5
  %1035 = load ptr, ptr %31, align 8, !tbaa !5
  %1036 = load i32, ptr %50, align 4, !tbaa !9
  %1037 = sext i32 %1036 to i64
  %1038 = getelementptr inbounds %struct.complex, ptr %1035, i64 %1037
  %1039 = load ptr, ptr %32, align 8, !tbaa !5
  %1040 = load ptr, ptr %33, align 8, !tbaa !5
  %1041 = load i32, ptr %52, align 4, !tbaa !9
  %1042 = sext i32 %1041 to i64
  %1043 = getelementptr inbounds %struct.complex, ptr %1040, i64 %1042
  %1044 = load ptr, ptr %34, align 8, !tbaa !5
  %1045 = load ptr, ptr %35, align 8, !tbaa !5
  %1046 = getelementptr inbounds i32, ptr %1045, i64 1
  %1047 = load ptr, ptr %39, align 8, !tbaa !5
  %1048 = load i32, ptr %54, align 4, !tbaa !9
  %1049 = sext i32 %1048 to i64
  %1050 = getelementptr inbounds %struct.complex, ptr %1047, i64 %1049
  %1051 = load ptr, ptr %40, align 8, !tbaa !5
  %1052 = load ptr, ptr %41, align 8, !tbaa !5
  %1053 = load i32, ptr %56, align 4, !tbaa !9
  %1054 = sext i32 %1053 to i64
  %1055 = getelementptr inbounds %struct.complex, ptr %1052, i64 %1054
  %1056 = load ptr, ptr %42, align 8, !tbaa !5
  %1057 = load ptr, ptr %44, align 8, !tbaa !5
  %1058 = getelementptr inbounds float, ptr %1057, i64 1
  %1059 = load ptr, ptr %45, align 8, !tbaa !5
  %1060 = getelementptr inbounds float, ptr %1059, i64 1
  %1061 = load ptr, ptr %46, align 8, !tbaa !5
  %1062 = getelementptr inbounds %struct.complex, ptr %1061, i64 1
  %1063 = load ptr, ptr %47, align 8, !tbaa !5
  %1064 = getelementptr inbounds float, ptr %1063, i64 1
  %1065 = load ptr, ptr %48, align 8, !tbaa !5
  call void @cgbrfs_(ptr noundef %1030, ptr noundef %1031, ptr noundef %1032, ptr noundef %1033, ptr noundef %1034, ptr noundef %1038, ptr noundef %1039, ptr noundef %1043, ptr noundef %1044, ptr noundef %1046, ptr noundef %1050, ptr noundef %1051, ptr noundef %1055, ptr noundef %1056, ptr noundef %1058, ptr noundef %1060, ptr noundef %1062, ptr noundef %1064, ptr noundef %1065)
  %1066 = load i32, ptr %81, align 4, !tbaa !9
  %1067 = icmp ne i32 %1066, 0
  br i1 %1067, label %1068, label %1164

1068:                                             ; preds = %982
  %1069 = load i32, ptr %79, align 4, !tbaa !9
  %1070 = icmp ne i32 %1069, 0
  br i1 %1070, label %1071, label %1163

1071:                                             ; preds = %1068
  %1072 = load ptr, ptr %30, align 8, !tbaa !5
  %1073 = load i32, ptr %1072, align 4, !tbaa !9
  store i32 %1073, ptr %57, align 4, !tbaa !9
  store i32 1, ptr %68, align 4, !tbaa !9
  br label %1074

1074:                                             ; preds = %1141, %1071
  %1075 = load i32, ptr %68, align 4, !tbaa !9
  %1076 = load i32, ptr %57, align 4, !tbaa !9
  %1077 = icmp sle i32 %1075, %1076
  br i1 %1077, label %1078, label %1144

1078:                                             ; preds = %1074
  %1079 = load ptr, ptr %27, align 8, !tbaa !5
  %1080 = load i32, ptr %1079, align 4, !tbaa !9
  store i32 %1080, ptr %59, align 4, !tbaa !9
  store i32 1, ptr %67, align 4, !tbaa !9
  br label %1081

1081:                                             ; preds = %1137, %1078
  %1082 = load i32, ptr %67, align 4, !tbaa !9
  %1083 = load i32, ptr %59, align 4, !tbaa !9
  %1084 = icmp sle i32 %1082, %1083
  br i1 %1084, label %1085, label %1140

1085:                                             ; preds = %1081
  %1086 = load i32, ptr %67, align 4, !tbaa !9
  %1087 = load i32, ptr %68, align 4, !tbaa !9
  %1088 = load i32, ptr %55, align 4, !tbaa !9
  %1089 = mul nsw i32 %1087, %1088
  %1090 = add nsw i32 %1086, %1089
  store i32 %1090, ptr %58, align 4, !tbaa !9
  %1091 = load i32, ptr %67, align 4, !tbaa !9
  store i32 %1091, ptr %60, align 4, !tbaa !9
  %1092 = load i32, ptr %67, align 4, !tbaa !9
  %1093 = load i32, ptr %68, align 4, !tbaa !9
  %1094 = load i32, ptr %55, align 4, !tbaa !9
  %1095 = mul nsw i32 %1093, %1094
  %1096 = add nsw i32 %1092, %1095
  store i32 %1096, ptr %61, align 4, !tbaa !9
  %1097 = load ptr, ptr %38, align 8, !tbaa !5
  %1098 = load i32, ptr %60, align 4, !tbaa !9
  %1099 = sext i32 %1098 to i64
  %1100 = getelementptr inbounds float, ptr %1097, i64 %1099
  %1101 = load float, ptr %1100, align 4, !tbaa !12
  %1102 = load ptr, ptr %41, align 8, !tbaa !5
  %1103 = load i32, ptr %61, align 4, !tbaa !9
  %1104 = sext i32 %1103 to i64
  %1105 = getelementptr inbounds %struct.complex, ptr %1102, i64 %1104
  %1106 = getelementptr inbounds %struct.complex, ptr %1105, i32 0, i32 0
  %1107 = load float, ptr %1106, align 4, !tbaa !17
  %1108 = fmul float %1101, %1107
  %1109 = getelementptr inbounds %struct.complex, ptr %64, i32 0, i32 0
  store float %1108, ptr %1109, align 4, !tbaa !17
  %1110 = load ptr, ptr %38, align 8, !tbaa !5
  %1111 = load i32, ptr %60, align 4, !tbaa !9
  %1112 = sext i32 %1111 to i64
  %1113 = getelementptr inbounds float, ptr %1110, i64 %1112
  %1114 = load float, ptr %1113, align 4, !tbaa !12
  %1115 = load ptr, ptr %41, align 8, !tbaa !5
  %1116 = load i32, ptr %61, align 4, !tbaa !9
  %1117 = sext i32 %1116 to i64
  %1118 = getelementptr inbounds %struct.complex, ptr %1115, i64 %1117
  %1119 = getelementptr inbounds %struct.complex, ptr %1118, i32 0, i32 1
  %1120 = load float, ptr %1119, align 4, !tbaa !19
  %1121 = fmul float %1114, %1120
  %1122 = getelementptr inbounds %struct.complex, ptr %64, i32 0, i32 1
  store float %1121, ptr %1122, align 4, !tbaa !19
  %1123 = getelementptr inbounds %struct.complex, ptr %64, i32 0, i32 0
  %1124 = load float, ptr %1123, align 4, !tbaa !17
  %1125 = load ptr, ptr %41, align 8, !tbaa !5
  %1126 = load i32, ptr %58, align 4, !tbaa !9
  %1127 = sext i32 %1126 to i64
  %1128 = getelementptr inbounds %struct.complex, ptr %1125, i64 %1127
  %1129 = getelementptr inbounds %struct.complex, ptr %1128, i32 0, i32 0
  store float %1124, ptr %1129, align 4, !tbaa !17
  %1130 = getelementptr inbounds %struct.complex, ptr %64, i32 0, i32 1
  %1131 = load float, ptr %1130, align 4, !tbaa !19
  %1132 = load ptr, ptr %41, align 8, !tbaa !5
  %1133 = load i32, ptr %58, align 4, !tbaa !9
  %1134 = sext i32 %1133 to i64
  %1135 = getelementptr inbounds %struct.complex, ptr %1132, i64 %1134
  %1136 = getelementptr inbounds %struct.complex, ptr %1135, i32 0, i32 1
  store float %1131, ptr %1136, align 4, !tbaa !19
  br label %1137

1137:                                             ; preds = %1085
  %1138 = load i32, ptr %67, align 4, !tbaa !9
  %1139 = add nsw i32 %1138, 1
  store i32 %1139, ptr %67, align 4, !tbaa !9
  br label %1081, !llvm.loop !27

1140:                                             ; preds = %1081
  br label %1141

1141:                                             ; preds = %1140
  %1142 = load i32, ptr %68, align 4, !tbaa !9
  %1143 = add nsw i32 %1142, 1
  store i32 %1143, ptr %68, align 4, !tbaa !9
  br label %1074, !llvm.loop !28

1144:                                             ; preds = %1074
  %1145 = load ptr, ptr %30, align 8, !tbaa !5
  %1146 = load i32, ptr %1145, align 4, !tbaa !9
  store i32 %1146, ptr %57, align 4, !tbaa !9
  store i32 1, ptr %68, align 4, !tbaa !9
  br label %1147

1147:                                             ; preds = %1159, %1144
  %1148 = load i32, ptr %68, align 4, !tbaa !9
  %1149 = load i32, ptr %57, align 4, !tbaa !9
  %1150 = icmp sle i32 %1148, %1149
  br i1 %1150, label %1151, label %1162

1151:                                             ; preds = %1147
  %1152 = load float, ptr %75, align 4, !tbaa !12
  %1153 = load ptr, ptr %44, align 8, !tbaa !5
  %1154 = load i32, ptr %68, align 4, !tbaa !9
  %1155 = sext i32 %1154 to i64
  %1156 = getelementptr inbounds float, ptr %1153, i64 %1155
  %1157 = load float, ptr %1156, align 4, !tbaa !12
  %1158 = fdiv float %1157, %1152
  store float %1158, ptr %1156, align 4, !tbaa !12
  br label %1159

1159:                                             ; preds = %1151
  %1160 = load i32, ptr %68, align 4, !tbaa !9
  %1161 = add nsw i32 %1160, 1
  store i32 %1161, ptr %68, align 4, !tbaa !9
  br label %1147, !llvm.loop !29

1162:                                             ; preds = %1147
  br label %1163

1163:                                             ; preds = %1162, %1068
  br label %1260

1164:                                             ; preds = %982
  %1165 = load i32, ptr %83, align 4, !tbaa !9
  %1166 = icmp ne i32 %1165, 0
  br i1 %1166, label %1167, label %1259

1167:                                             ; preds = %1164
  %1168 = load ptr, ptr %30, align 8, !tbaa !5
  %1169 = load i32, ptr %1168, align 4, !tbaa !9
  store i32 %1169, ptr %57, align 4, !tbaa !9
  store i32 1, ptr %68, align 4, !tbaa !9
  br label %1170

1170:                                             ; preds = %1237, %1167
  %1171 = load i32, ptr %68, align 4, !tbaa !9
  %1172 = load i32, ptr %57, align 4, !tbaa !9
  %1173 = icmp sle i32 %1171, %1172
  br i1 %1173, label %1174, label %1240

1174:                                             ; preds = %1170
  %1175 = load ptr, ptr %27, align 8, !tbaa !5
  %1176 = load i32, ptr %1175, align 4, !tbaa !9
  store i32 %1176, ptr %59, align 4, !tbaa !9
  store i32 1, ptr %67, align 4, !tbaa !9
  br label %1177

1177:                                             ; preds = %1233, %1174
  %1178 = load i32, ptr %67, align 4, !tbaa !9
  %1179 = load i32, ptr %59, align 4, !tbaa !9
  %1180 = icmp sle i32 %1178, %1179
  br i1 %1180, label %1181, label %1236

1181:                                             ; preds = %1177
  %1182 = load i32, ptr %67, align 4, !tbaa !9
  %1183 = load i32, ptr %68, align 4, !tbaa !9
  %1184 = load i32, ptr %55, align 4, !tbaa !9
  %1185 = mul nsw i32 %1183, %1184
  %1186 = add nsw i32 %1182, %1185
  store i32 %1186, ptr %58, align 4, !tbaa !9
  %1187 = load i32, ptr %67, align 4, !tbaa !9
  store i32 %1187, ptr %60, align 4, !tbaa !9
  %1188 = load i32, ptr %67, align 4, !tbaa !9
  %1189 = load i32, ptr %68, align 4, !tbaa !9
  %1190 = load i32, ptr %55, align 4, !tbaa !9
  %1191 = mul nsw i32 %1189, %1190
  %1192 = add nsw i32 %1188, %1191
  store i32 %1192, ptr %61, align 4, !tbaa !9
  %1193 = load ptr, ptr %37, align 8, !tbaa !5
  %1194 = load i32, ptr %60, align 4, !tbaa !9
  %1195 = sext i32 %1194 to i64
  %1196 = getelementptr inbounds float, ptr %1193, i64 %1195
  %1197 = load float, ptr %1196, align 4, !tbaa !12
  %1198 = load ptr, ptr %41, align 8, !tbaa !5
  %1199 = load i32, ptr %61, align 4, !tbaa !9
  %1200 = sext i32 %1199 to i64
  %1201 = getelementptr inbounds %struct.complex, ptr %1198, i64 %1200
  %1202 = getelementptr inbounds %struct.complex, ptr %1201, i32 0, i32 0
  %1203 = load float, ptr %1202, align 4, !tbaa !17
  %1204 = fmul float %1197, %1203
  %1205 = getelementptr inbounds %struct.complex, ptr %64, i32 0, i32 0
  store float %1204, ptr %1205, align 4, !tbaa !17
  %1206 = load ptr, ptr %37, align 8, !tbaa !5
  %1207 = load i32, ptr %60, align 4, !tbaa !9
  %1208 = sext i32 %1207 to i64
  %1209 = getelementptr inbounds float, ptr %1206, i64 %1208
  %1210 = load float, ptr %1209, align 4, !tbaa !12
  %1211 = load ptr, ptr %41, align 8, !tbaa !5
  %1212 = load i32, ptr %61, align 4, !tbaa !9
  %1213 = sext i32 %1212 to i64
  %1214 = getelementptr inbounds %struct.complex, ptr %1211, i64 %1213
  %1215 = getelementptr inbounds %struct.complex, ptr %1214, i32 0, i32 1
  %1216 = load float, ptr %1215, align 4, !tbaa !19
  %1217 = fmul float %1210, %1216
  %1218 = getelementptr inbounds %struct.complex, ptr %64, i32 0, i32 1
  store float %1217, ptr %1218, align 4, !tbaa !19
  %1219 = getelementptr inbounds %struct.complex, ptr %64, i32 0, i32 0
  %1220 = load float, ptr %1219, align 4, !tbaa !17
  %1221 = load ptr, ptr %41, align 8, !tbaa !5
  %1222 = load i32, ptr %58, align 4, !tbaa !9
  %1223 = sext i32 %1222 to i64
  %1224 = getelementptr inbounds %struct.complex, ptr %1221, i64 %1223
  %1225 = getelementptr inbounds %struct.complex, ptr %1224, i32 0, i32 0
  store float %1220, ptr %1225, align 4, !tbaa !17
  %1226 = getelementptr inbounds %struct.complex, ptr %64, i32 0, i32 1
  %1227 = load float, ptr %1226, align 4, !tbaa !19
  %1228 = load ptr, ptr %41, align 8, !tbaa !5
  %1229 = load i32, ptr %58, align 4, !tbaa !9
  %1230 = sext i32 %1229 to i64
  %1231 = getelementptr inbounds %struct.complex, ptr %1228, i64 %1230
  %1232 = getelementptr inbounds %struct.complex, ptr %1231, i32 0, i32 1
  store float %1227, ptr %1232, align 4, !tbaa !19
  br label %1233

1233:                                             ; preds = %1181
  %1234 = load i32, ptr %67, align 4, !tbaa !9
  %1235 = add nsw i32 %1234, 1
  store i32 %1235, ptr %67, align 4, !tbaa !9
  br label %1177, !llvm.loop !30

1236:                                             ; preds = %1177
  br label %1237

1237:                                             ; preds = %1236
  %1238 = load i32, ptr %68, align 4, !tbaa !9
  %1239 = add nsw i32 %1238, 1
  store i32 %1239, ptr %68, align 4, !tbaa !9
  br label %1170, !llvm.loop !31

1240:                                             ; preds = %1170
  %1241 = load ptr, ptr %30, align 8, !tbaa !5
  %1242 = load i32, ptr %1241, align 4, !tbaa !9
  store i32 %1242, ptr %57, align 4, !tbaa !9
  store i32 1, ptr %68, align 4, !tbaa !9
  br label %1243

1243:                                             ; preds = %1255, %1240
  %1244 = load i32, ptr %68, align 4, !tbaa !9
  %1245 = load i32, ptr %57, align 4, !tbaa !9
  %1246 = icmp sle i32 %1244, %1245
  br i1 %1246, label %1247, label %1258

1247:                                             ; preds = %1243
  %1248 = load float, ptr %80, align 4, !tbaa !12
  %1249 = load ptr, ptr %44, align 8, !tbaa !5
  %1250 = load i32, ptr %68, align 4, !tbaa !9
  %1251 = sext i32 %1250 to i64
  %1252 = getelementptr inbounds float, ptr %1249, i64 %1251
  %1253 = load float, ptr %1252, align 4, !tbaa !12
  %1254 = fdiv float %1253, %1248
  store float %1254, ptr %1252, align 4, !tbaa !12
  br label %1255

1255:                                             ; preds = %1247
  %1256 = load i32, ptr %68, align 4, !tbaa !9
  %1257 = add nsw i32 %1256, 1
  store i32 %1257, ptr %68, align 4, !tbaa !9
  br label %1243, !llvm.loop !32

1258:                                             ; preds = %1243
  br label %1259

1259:                                             ; preds = %1258, %1164
  br label %1260

1260:                                             ; preds = %1259, %1163
  %1261 = load ptr, ptr %43, align 8, !tbaa !5
  %1262 = load float, ptr %1261, align 4, !tbaa !12
  %1263 = call float @slamch_(ptr noundef @.str.12)
  %1264 = fcmp olt float %1262, %1263
  br i1 %1264, label %1265, label %1270

1265:                                             ; preds = %1260
  %1266 = load ptr, ptr %27, align 8, !tbaa !5
  %1267 = load i32, ptr %1266, align 4, !tbaa !9
  %1268 = add nsw i32 %1267, 1
  %1269 = load ptr, ptr %48, align 8, !tbaa !5
  store i32 %1268, ptr %1269, align 4, !tbaa !9
  br label %1270

1270:                                             ; preds = %1265, %1260
  %1271 = load float, ptr %84, align 4, !tbaa !12
  %1272 = load ptr, ptr %47, align 8, !tbaa !5
  %1273 = getelementptr inbounds float, ptr %1272, i64 1
  store float %1271, ptr %1273, align 4, !tbaa !12
  store i32 1, ptr %85, align 4
  br label %1274

1274:                                             ; preds = %1270, %925, %477
  call void @llvm.lifetime.end.p0(i64 4, ptr %84) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %83) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %82) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %81) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %80) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %79) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %78) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %77) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %76) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %75) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %74) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %73) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %72) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %71) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %70) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %69) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %68) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %67) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %66) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %65) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %63) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %62) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %61) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %60) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %59) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %58) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %56) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %54) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %53) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #5
  ret void
}

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

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

declare float @slamch_(ptr noundef) #2

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

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

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

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

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

; Function Attrs: nounwind
declare float @cabsf(<2 x float> noundef) #3

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

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

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

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

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

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

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!7, !7, i64 0}
!12 = !{!13, !13, i64 0}
!13 = !{!"float", !7, i64 0}
!14 = distinct !{!14, !15}
!15 = !{!"llvm.loop.mustprogress"}
!16 = distinct !{!16, !15}
!17 = !{!18, !13, i64 0}
!18 = !{!"", !13, i64 0, !13, i64 4}
!19 = !{!18, !13, i64 4}
!20 = distinct !{!20, !15}
!21 = distinct !{!21, !15}
!22 = distinct !{!22, !15}
!23 = distinct !{!23, !15}
!24 = distinct !{!24, !15}
!25 = distinct !{!25, !15}
!26 = distinct !{!26, !15}
!27 = distinct !{!27, !15}
!28 = distinct !{!28, !15}
!29 = distinct !{!29, !15}
!30 = distinct !{!30, !15}
!31 = distinct !{!31, !15}
!32 = distinct !{!32, !15}


; Optimized IR (opt -passes='default<O3>'):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

%struct.complex = type { float, float }

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

; Function Attrs: nounwind uwtable
define dso_local void @cgbsvx_(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %5, ptr noundef %6, ptr noundef %7, ptr noundef %8, ptr noundef %9, ptr noundef %10, ptr noundef %11, ptr noundef %12, ptr noundef %13, ptr noundef %14, ptr noundef %15, ptr noundef %16, ptr noundef %17, ptr noundef %18, ptr noundef %19, ptr noundef %20, ptr noundef %21, ptr noundef %22, ptr noundef %23) local_unnamed_addr #0 {
  %25 = alloca i32, align 4
  %26 = alloca i32, align 4
  %27 = alloca float, align 4
  %28 = alloca [1 x i8], align 1
  %29 = alloca float, align 4
  %30 = alloca float, align 4
  %31 = alloca i32, align 4
  %32 = alloca float, align 4
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %25) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %26) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %27) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %28) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %29) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %30) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %31) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %32) #6
  %33 = load i32, ptr %7, align 4, !tbaa !5
  %narrow = xor i32 %33, -1
  %34 = sext i32 %narrow to i64
  %35 = getelementptr inbounds %struct.complex, ptr %6, i64 %34
  %36 = load i32, ptr %9, align 4, !tbaa !5
  %narrow504 = xor i32 %36, -1
  %37 = sext i32 %narrow504 to i64
  %38 = getelementptr inbounds %struct.complex, ptr %8, i64 %37
  %39 = getelementptr inbounds i8, ptr %12, i64 -4
  %40 = getelementptr inbounds i8, ptr %13, i64 -4
  %41 = load i32, ptr %15, align 4, !tbaa !5
  %narrow505 = xor i32 %41, -1
  %42 = sext i32 %narrow505 to i64
  %43 = getelementptr inbounds %struct.complex, ptr %14, i64 %42
  %44 = load i32, ptr %17, align 4, !tbaa !5
  %narrow506 = xor i32 %44, -1
  %45 = sext i32 %narrow506 to i64
  %46 = getelementptr inbounds %struct.complex, ptr %16, i64 %45
  %47 = getelementptr inbounds i8, ptr %19, i64 -4
  store i32 0, ptr %23, align 4, !tbaa !5
  %48 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str) #6
  %49 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.1) #6
  %50 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str) #6
  %51 = icmp ne i32 %48, 0
  %52 = icmp ne i32 %49, 0
  %or.cond = select i1 %51, i1 true, i1 %52
  br i1 %or.cond, label %.thread, label %53

.thread:                                          ; preds = %24
  store i8 78, ptr %11, align 1, !tbaa !9
  br label %71

53:                                               ; preds = %24
  %54 = tail call i32 @lsame_(ptr noundef %11, ptr noundef nonnull @.str.2) #6
  %.not = icmp eq i32 %54, 0
  br i1 %.not, label %55, label %58

55:                                               ; preds = %53
  %56 = tail call i32 @lsame_(ptr noundef %11, ptr noundef nonnull @.str.3) #6
  %57 = icmp ne i32 %56, 0
  br label %58

58:                                               ; preds = %55, %53
  %59 = phi i1 [ true, %53 ], [ %57, %55 ]
  %60 = zext i1 %59 to i32
  %61 = tail call i32 @lsame_(ptr noundef %11, ptr noundef nonnull @.str.4) #6
  %.not484 = icmp eq i32 %61, 0
  br i1 %.not484, label %62, label %65

62:                                               ; preds = %58
  %63 = tail call i32 @lsame_(ptr noundef %11, ptr noundef nonnull @.str.3) #6
  %64 = icmp ne i32 %63, 0
  br label %65

65:                                               ; preds = %62, %58
  %66 = phi i1 [ true, %58 ], [ %64, %62 ]
  %67 = zext i1 %66 to i32
  %68 = tail call float @slamch_(ptr noundef nonnull @.str.5) #6
  %69 = fdiv float 1.000000e+00, %68
  %70 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.6) #6
  %.not485 = icmp eq i32 %70, 0
  br i1 %.not485, label %.thread539.sink.split, label %71

71:                                               ; preds = %.thread, %65
  %.0458532 = phi i32 [ 0, %.thread ], [ %60, %65 ]
  %.0460530 = phi float [ undef, %.thread ], [ %68, %65 ]
  %.0461529 = phi i32 [ 0, %.thread ], [ %67, %65 ]
  %.0463527 = phi float [ undef, %.thread ], [ %69, %65 ]
  %.not486 = icmp eq i32 %50, 0
  br i1 %.not486, label %72, label %76

72:                                               ; preds = %71
  %73 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.7) #6
  %.not487 = icmp eq i32 %73, 0
  br i1 %.not487, label %74, label %76

74:                                               ; preds = %72
  %75 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.4) #6
  %.not488 = icmp eq i32 %75, 0
  br i1 %.not488, label %.thread539.sink.split, label %76

76:                                               ; preds = %74, %72, %71
  %77 = load i32, ptr %2, align 4, !tbaa !5
  %78 = icmp slt i32 %77, 0
  br i1 %78, label %.thread539.sink.split, label %79

79:                                               ; preds = %76
  %80 = load i32, ptr %3, align 4, !tbaa !5
  %81 = icmp slt i32 %80, 0
  br i1 %81, label %.thread539.sink.split, label %82

82:                                               ; preds = %79
  %83 = load i32, ptr %4, align 4, !tbaa !5
  %84 = icmp slt i32 %83, 0
  br i1 %84, label %.thread539.sink.split, label %85

85:                                               ; preds = %82
  %86 = load i32, ptr %5, align 4, !tbaa !5
  %87 = icmp slt i32 %86, 0
  br i1 %87, label %.thread539.sink.split, label %88

88:                                               ; preds = %85
  %89 = load i32, ptr %7, align 4, !tbaa !5
  %90 = add nuw nsw i32 %83, %80
  %.not489 = icmp sgt i32 %89, %90
  br i1 %.not489, label %91, label %.thread539.sink.split

91:                                               ; preds = %88
  %92 = load i32, ptr %9, align 4, !tbaa !5
  %93 = shl nuw i32 %80, 1
  %94 = add nsw i32 %83, %93
  %.not490 = icmp sgt i32 %92, %94
  br i1 %.not490, label %95, label %.thread539.sink.split

95:                                               ; preds = %91
  %96 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.6) #6
  %97 = icmp eq i32 %96, 0
  %98 = icmp ne i32 %.0458532, 0
  %or.cond5 = select i1 %97, i1 true, i1 %98
  %99 = icmp ne i32 %.0461529, 0
  %or.cond7 = select i1 %or.cond5, i1 true, i1 %99
  br i1 %or.cond7, label %102, label %100

100:                                              ; preds = %95
  %101 = tail call i32 @lsame_(ptr noundef %11, ptr noundef nonnull @.str) #6
  %.not491 = icmp eq i32 %101, 0
  br i1 %.not491, label %.thread539.sink.split, label %..thread534_crit_edge

..thread534_crit_edge:                            ; preds = %100
  %.pr.pre = load i32, ptr %23, align 4, !tbaa !5
  br label %.thread534

102:                                              ; preds = %95
  br i1 %98, label %103, label %135

103:                                              ; preds = %102
  %104 = load i32, ptr %2, align 4, !tbaa !5
  store i32 %104, ptr %25, align 4, !tbaa !5
  %.not492549 = icmp slt i32 %104, 1
  br i1 %.not492549, label %._crit_edge, label %.lr.ph.preheader

.lr.ph.preheader:                                 ; preds = %103
  %105 = zext nneg i32 %104 to i64
  %xtraiter = and i64 %105, 1
  %106 = icmp eq i32 %104, 1
  br i1 %106, label %._crit_edge.loopexit.unr-lcssa, label %.lr.ph.preheader.new

.lr.ph.preheader.new:                             ; preds = %.lr.ph.preheader
  %unroll_iter = and i64 %105, 2147483646
  br label %.lr.ph

.lr.ph:                                           ; preds = %.lr.ph, %.lr.ph.preheader.new
  %indvars.iv = phi i64 [ 1, %.lr.ph.preheader.new ], [ %indvars.iv.next.1, %.lr.ph ]
  %.0464552 = phi float [ 0.000000e+00, %.lr.ph.preheader.new ], [ %118, %.lr.ph ]
  %.0466551 = phi float [ %.0463527, %.lr.ph.preheader.new ], [ %116, %.lr.ph ]
  %niter = phi i64 [ 0, %.lr.ph.preheader.new ], [ %niter.next.1, %.lr.ph ]
  %107 = getelementptr inbounds float, ptr %39, i64 %indvars.iv
  %108 = load float, ptr %107, align 4, !tbaa !10
  %109 = fcmp ole float %.0466551, %108
  %110 = select i1 %109, float %.0466551, float %108
  %111 = fcmp oge float %.0464552, %108
  %112 = select i1 %111, float %.0464552, float %108
  %113 = getelementptr float, ptr %12, i64 %indvars.iv
  %114 = load float, ptr %113, align 4, !tbaa !10
  %115 = fcmp ole float %110, %114
  %116 = select i1 %115, float %110, float %114
  %117 = fcmp oge float %112, %114
  %118 = select i1 %117, float %112, float %114
  %indvars.iv.next.1 = add nuw nsw i64 %indvars.iv, 2
  %niter.next.1 = add i64 %niter, 2
  %niter.ncmp.1 = icmp eq i64 %niter.next.1, %unroll_iter
  br i1 %niter.ncmp.1, label %._crit_edge.loopexit.unr-lcssa, label %.lr.ph, !llvm.loop !12

._crit_edge.loopexit.unr-lcssa:                   ; preds = %.lr.ph, %.lr.ph.preheader
  %.lcssa862.ph = phi float [ poison, %.lr.ph.preheader ], [ %116, %.lr.ph ]
  %.lcssa861.ph = phi float [ poison, %.lr.ph.preheader ], [ %118, %.lr.ph ]
  %indvars.iv.unr = phi i64 [ 1, %.lr.ph.preheader ], [ %indvars.iv.next.1, %.lr.ph ]
  %.0464552.unr = phi float [ 0.000000e+00, %.lr.ph.preheader ], [ %118, %.lr.ph ]
  %.0466551.unr = phi float [ %.0463527, %.lr.ph.preheader ], [ %116, %.lr.ph ]
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %._crit_edge, label %.lr.ph.epil

.lr.ph.epil:                                      ; preds = %._crit_edge.loopexit.unr-lcssa
  %119 = getelementptr inbounds float, ptr %39, i64 %indvars.iv.unr
  %120 = load float, ptr %119, align 4, !tbaa !10
  %121 = fcmp ole float %.0466551.unr, %120
  %122 = select i1 %121, float %.0466551.unr, float %120
  %123 = fcmp oge float %.0464552.unr, %120
  %124 = select i1 %123, float %.0464552.unr, float %120
  br label %._crit_edge

._crit_edge:                                      ; preds = %.lr.ph.epil, %._crit_edge.loopexit.unr-lcssa, %103
  %.0466.lcssa = phi float [ %.0463527, %103 ], [ %.lcssa862.ph, %._crit_edge.loopexit.unr-lcssa ], [ %122, %.lr.ph.epil ]
  %.0464.lcssa = phi float [ 0.000000e+00, %103 ], [ %.lcssa861.ph, %._crit_edge.loopexit.unr-lcssa ], [ %124, %.lr.ph.epil ]
  %125 = fcmp ugt float %.0466.lcssa, 0.000000e+00
  br i1 %125, label %126, label %.thread539.sink.split

126:                                              ; preds = %._crit_edge
  %127 = icmp sgt i32 %104, 0
  br i1 %127, label %128, label %134

128:                                              ; preds = %126
  %129 = fcmp oge float %.0466.lcssa, %.0460530
  %130 = select i1 %129, float %.0466.lcssa, float %.0460530
  %131 = fcmp ole float %.0464.lcssa, %.0463527
  %132 = select i1 %131, float %.0464.lcssa, float %.0463527
  %133 = fdiv float %130, %132
  store float %133, ptr %32, align 4, !tbaa !10
  br label %135

134:                                              ; preds = %126
  store float 1.000000e+00, ptr %32, align 4, !tbaa !10
  br label %135

135:                                              ; preds = %134, %128, %102
  %.pr.pre701.pr = load i32, ptr %23, align 4, !tbaa !5
  br i1 %99, label %136, label %.thread534

136:                                              ; preds = %135
  %137 = icmp eq i32 %.pr.pre701.pr, 0
  br i1 %137, label %138, label %.thread539

138:                                              ; preds = %136
  %139 = load i32, ptr %2, align 4, !tbaa !5
  store i32 %139, ptr %25, align 4, !tbaa !5
  %.not493554 = icmp slt i32 %139, 1
  br i1 %.not493554, label %._crit_edge560, label %.lr.ph559.preheader

.lr.ph559.preheader:                              ; preds = %138
  %140 = zext nneg i32 %139 to i64
  %xtraiter865 = and i64 %140, 1
  %141 = icmp eq i32 %139, 1
  br i1 %141, label %._crit_edge560.loopexit.unr-lcssa, label %.lr.ph559.preheader.new

.lr.ph559.preheader.new:                          ; preds = %.lr.ph559.preheader
  %unroll_iter869 = and i64 %140, 2147483646
  br label %.lr.ph559

.lr.ph559:                                        ; preds = %.lr.ph559, %.lr.ph559.preheader.new
  %indvars.iv637 = phi i64 [ 1, %.lr.ph559.preheader.new ], [ %indvars.iv.next638.1, %.lr.ph559 ]
  %.1465557 = phi float [ 0.000000e+00, %.lr.ph559.preheader.new ], [ %153, %.lr.ph559 ]
  %.1467556 = phi float [ %.0463527, %.lr.ph559.preheader.new ], [ %151, %.lr.ph559 ]
  %niter870 = phi i64 [ 0, %.lr.ph559.preheader.new ], [ %niter870.next.1, %.lr.ph559 ]
  %142 = getelementptr inbounds float, ptr %40, i64 %indvars.iv637
  %143 = load float, ptr %142, align 4, !tbaa !10
  %144 = fcmp ole float %.1467556, %143
  %145 = select i1 %144, float %.1467556, float %143
  %146 = fcmp oge float %.1465557, %143
  %147 = select i1 %146, float %.1465557, float %143
  %148 = getelementptr float, ptr %13, i64 %indvars.iv637
  %149 = load float, ptr %148, align 4, !tbaa !10
  %150 = fcmp ole float %145, %149
  %151 = select i1 %150, float %145, float %149
  %152 = fcmp oge float %147, %149
  %153 = select i1 %152, float %147, float %149
  %indvars.iv.next638.1 = add nuw nsw i64 %indvars.iv637, 2
  %niter870.next.1 = add i64 %niter870, 2
  %niter870.ncmp.1 = icmp eq i64 %niter870.next.1, %unroll_iter869
  br i1 %niter870.ncmp.1, label %._crit_edge560.loopexit.unr-lcssa, label %.lr.ph559, !llvm.loop !14

._crit_edge560.loopexit.unr-lcssa:                ; preds = %.lr.ph559, %.lr.ph559.preheader
  %.lcssa860.ph = phi float [ poison, %.lr.ph559.preheader ], [ %151, %.lr.ph559 ]
  %.lcssa859.ph = phi float [ poison, %.lr.ph559.preheader ], [ %153, %.lr.ph559 ]
  %indvars.iv637.unr = phi i64 [ 1, %.lr.ph559.preheader ], [ %indvars.iv.next638.1, %.lr.ph559 ]
  %.1465557.unr = phi float [ 0.000000e+00, %.lr.ph559.preheader ], [ %153, %.lr.ph559 ]
  %.1467556.unr = phi float [ %.0463527, %.lr.ph559.preheader ], [ %151, %.lr.ph559 ]
  %lcmp.mod866.not = icmp eq i64 %xtraiter865, 0
  br i1 %lcmp.mod866.not, label %._crit_edge560, label %.lr.ph559.epil

.lr.ph559.epil:                                   ; preds = %._crit_edge560.loopexit.unr-lcssa
  %154 = getelementptr inbounds float, ptr %40, i64 %indvars.iv637.unr
  %155 = load float, ptr %154, align 4, !tbaa !10
  %156 = fcmp ole float %.1467556.unr, %155
  %157 = select i1 %156, float %.1467556.unr, float %155
  %158 = fcmp oge float %.1465557.unr, %155
  %159 = select i1 %158, float %.1465557.unr, float %155
  br label %._crit_edge560

._crit_edge560:                                   ; preds = %.lr.ph559.epil, %._crit_edge560.loopexit.unr-lcssa, %138
  %.1467.lcssa = phi float [ %.0463527, %138 ], [ %.lcssa860.ph, %._crit_edge560.loopexit.unr-lcssa ], [ %157, %.lr.ph559.epil ]
  %.1465.lcssa = phi float [ 0.000000e+00, %138 ], [ %.lcssa859.ph, %._crit_edge560.loopexit.unr-lcssa ], [ %159, %.lr.ph559.epil ]
  %160 = fcmp ugt float %.1467.lcssa, 0.000000e+00
  br i1 %160, label %161, label %.thread539.sink.split

161:                                              ; preds = %._crit_edge560
  %162 = icmp sgt i32 %139, 0
  br i1 %162, label %163, label %169

163:                                              ; preds = %161
  %164 = fcmp oge float %.1467.lcssa, %.0460530
  %165 = select i1 %164, float %.1467.lcssa, float %.0460530
  %166 = fcmp ole float %.1465.lcssa, %.0463527
  %167 = select i1 %166, float %.1465.lcssa, float %.0463527
  %168 = fdiv float %165, %167
  store float %168, ptr %30, align 4, !tbaa !10
  br label %.thread534.thread

169:                                              ; preds = %161
  store float 1.000000e+00, ptr %30, align 4, !tbaa !10
  br label %.thread534.thread

.thread534:                                       ; preds = %..thread534_crit_edge, %135
  %.pr537.pr = phi i32 [ %.pr.pre, %..thread534_crit_edge ], [ %.pr.pre701.pr, %135 ]
  %170 = icmp eq i32 %.pr537.pr, 0
  br i1 %170, label %.thread534.thread, label %.thread539

.thread534.thread:                                ; preds = %163, %169, %.thread534
  %171 = load i32, ptr %15, align 4, !tbaa !5
  %172 = load i32, ptr %2, align 4, !tbaa !5
  %spec.select = tail call i32 @llvm.smax.i32(i32 %172, i32 1)
  %173 = icmp slt i32 %171, %spec.select
  br i1 %173, label %.thread539.sink.split, label %174

174:                                              ; preds = %.thread534.thread
  %175 = load i32, ptr %17, align 4, !tbaa !5
  %176 = icmp slt i32 %175, %spec.select
  br i1 %176, label %.thread539.sink.split, label %.thread535

.thread539.sink.split:                            ; preds = %174, %.thread534.thread, %._crit_edge560, %._crit_edge, %100, %91, %88, %85, %82, %79, %76, %74, %65
  %.sink = phi i32 [ -1, %65 ], [ -2, %74 ], [ -3, %76 ], [ -4, %79 ], [ -5, %82 ], [ -6, %85 ], [ -8, %88 ], [ -10, %91 ], [ -12, %100 ], [ -13, %._crit_edge ], [ -14, %._crit_edge560 ], [ -16, %.thread534.thread ], [ -18, %174 ]
  store i32 %.sink, ptr %23, align 4, !tbaa !5
  br label %.thread539

.thread539:                                       ; preds = %.thread539.sink.split, %136, %.thread534
  %177 = phi i32 [ %.pr537.pr, %.thread534 ], [ %.pr.pre701.pr, %136 ], [ %.sink, %.thread539.sink.split ]
  %178 = sub nsw i32 0, %177
  store i32 %178, ptr %25, align 4, !tbaa !5
  %179 = call i32 @xerbla_(ptr noundef nonnull @.str.8, ptr noundef nonnull %25, i32 noundef 6) #6
  br label %539

.thread535:                                       ; preds = %174
  br i1 %52, label %180, label %198

180:                                              ; preds = %.thread535
  call void @cgbequ_(ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef %6, ptr noundef nonnull %7, ptr noundef %12, ptr noundef %13, ptr noundef nonnull %32, ptr noundef nonnull %30, ptr noundef nonnull %27, ptr noundef nonnull %31) #6
  %181 = load i32, ptr %31, align 4, !tbaa !5
  %182 = icmp eq i32 %181, 0
  br i1 %182, label %183, label %198

183:                                              ; preds = %180
  call void @claqgb_(ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef %6, ptr noundef nonnull %7, ptr noundef %12, ptr noundef %13, ptr noundef nonnull %32, ptr noundef nonnull %30, ptr noundef nonnull %27, ptr noundef %11) #6
  %184 = call i32 @lsame_(ptr noundef %11, ptr noundef nonnull @.str.2) #6
  %.not495 = icmp eq i32 %184, 0
  br i1 %.not495, label %185, label %188

185:                                              ; preds = %183
  %186 = call i32 @lsame_(ptr noundef %11, ptr noundef nonnull @.str.3) #6
  %187 = icmp ne i32 %186, 0
  br label %188

188:                                              ; preds = %185, %183
  %189 = phi i1 [ true, %183 ], [ %187, %185 ]
  %190 = zext i1 %189 to i32
  %191 = call i32 @lsame_(ptr noundef %11, ptr noundef nonnull @.str.4) #6
  %.not496 = icmp eq i32 %191, 0
  br i1 %.not496, label %192, label %195

192:                                              ; preds = %188
  %193 = call i32 @lsame_(ptr noundef %11, ptr noundef nonnull @.str.3) #6
  %194 = icmp ne i32 %193, 0
  br label %195

195:                                              ; preds = %192, %188
  %196 = phi i1 [ true, %188 ], [ %194, %192 ]
  %197 = zext i1 %196 to i32
  br label %198

198:                                              ; preds = %180, %195, %.thread535
  %.1462 = phi i32 [ %197, %195 ], [ %.0461529, %180 ], [ %.0461529, %.thread535 ]
  %.1459 = phi i32 [ %190, %195 ], [ %.0458532, %180 ], [ %.0458532, %.thread535 ]
  br i1 %.not486, label %247, label %199

199:                                              ; preds = %198
  %.not501 = icmp eq i32 %.1459, 0
  br i1 %.not501, label %.loopexit547, label %200

200:                                              ; preds = %199
  %201 = load i32, ptr %5, align 4, !tbaa !5
  store i32 %201, ptr %25, align 4, !tbaa !5
  %.not502568 = icmp slt i32 %201, 1
  br i1 %.not502568, label %.loopexit547, label %.lr.ph571

.lr.ph571:                                        ; preds = %200
  %202 = load i32, ptr %2, align 4, !tbaa !5
  %.not520563 = icmp slt i32 %202, 1
  br i1 %.not520563, label %..loopexit548_crit_edge, label %.lr.ph566.preheader

.lr.ph566.preheader:                              ; preds = %.lr.ph571
  %203 = add nuw i32 %202, 1
  %204 = sext i32 %41 to i64
  %205 = add nuw i32 %201, 1
  %wide.trip.count650 = zext i32 %205 to i64
  %wide.trip.count645 = zext i32 %203 to i64
  %206 = shl nsw i64 %204, 3
  %207 = shl nsw i64 %42, 3
  %208 = getelementptr i8, ptr %14, i64 %206
  %209 = getelementptr i8, ptr %208, i64 %207
  %scevgep = getelementptr i8, ptr %209, i64 8
  %210 = shl nuw nsw i64 %wide.trip.count650, 3
  %211 = add nsw i64 %210, -8
  %212 = mul i64 %211, %204
  %213 = shl nuw nsw i64 %wide.trip.count645, 3
  %214 = getelementptr i8, ptr %14, i64 %212
  %215 = getelementptr i8, ptr %214, i64 %207
  %scevgep730 = getelementptr i8, ptr %215, i64 %213
  %216 = shl nuw nsw i64 %wide.trip.count645, 2
  %217 = getelementptr i8, ptr %12, i64 %216
  %scevgep731 = getelementptr i8, ptr %217, i64 -4
  %218 = zext nneg i32 %202 to i64
  %219 = zext nneg i32 %202 to i64
  %min.iters.check = icmp eq i32 %202, 1
  %bound0 = icmp ult ptr %scevgep, %scevgep731
  %bound1 = icmp ugt ptr %scevgep730, %12
  %found.conflict = and i1 %bound0, %bound1
  %stride.check = icmp slt i32 %41, 0
  %220 = or i1 %found.conflict, %stride.check
  %n.vec = and i64 %218, 2147483646
  %ind.end = or i64 %218, 1
  %cmp.n = icmp eq i64 %n.vec, %218
  %221 = and i32 %202, 1
  %lcmp.mod872.not = icmp eq i32 %221, 0
  br label %.lr.ph566

.lr.ph566:                                        ; preds = %.lr.ph566.preheader, %._crit_edge567
  %indvars.iv647 = phi i64 [ 1, %.lr.ph566.preheader ], [ %indvars.iv.next648, %._crit_edge567 ]
  %222 = mul nsw i64 %indvars.iv647, %204
  %invariant.gep = getelementptr %struct.complex, ptr %43, i64 %222
  %brmerge = select i1 %min.iters.check, i1 true, i1 %220
  br i1 %brmerge, label %scalar.ph.preheader, label %vector.body

vector.body:                                      ; preds = %.lr.ph566, %vector.body
  %index = phi i64 [ %index.next, %vector.body ], [ 0, %.lr.ph566 ]
  %offset.idx = or disjoint i64 %index, 1
  %223 = getelementptr float, ptr %12, i64 %index
  %wide.load = load <2 x float>, ptr %223, align 4, !tbaa !10, !alias.scope !15
  %224 = getelementptr %struct.complex, ptr %invariant.gep, i64 %offset.idx
  %225 = load <4 x float>, ptr %224, align 4, !tbaa !10
  %226 = shufflevector <2 x float> %wide.load, <2 x float> poison, <4 x i32> <i32 0, i32 0, i32 1, i32 1>
  %interleaved.vec = fmul <4 x float> %226, %225
  store <4 x float> %interleaved.vec, ptr %224, align 4, !tbaa !10
  %index.next = add nuw i64 %index, 2
  %227 = icmp eq i64 %index.next, %n.vec
  br i1 %227, label %middle.block, label %vector.body, !llvm.loop !18

middle.block:                                     ; preds = %vector.body
  br i1 %cmp.n, label %._crit_edge567, label %scalar.ph.preheader

scalar.ph.preheader:                              ; preds = %.lr.ph566, %middle.block
  %indvars.iv642.ph = phi i64 [ 1, %.lr.ph566 ], [ %ind.end, %middle.block ]
  br i1 %lcmp.mod872.not, label %scalar.ph.prol.loopexit, label %scalar.ph.prol

scalar.ph.prol:                                   ; preds = %scalar.ph.preheader
  %228 = getelementptr inbounds float, ptr %39, i64 %indvars.iv642.ph
  %229 = load float, ptr %228, align 4, !tbaa !10
  %gep.prol = getelementptr %struct.complex, ptr %invariant.gep, i64 %indvars.iv642.ph
  %230 = load <2 x float>, ptr %gep.prol, align 4, !tbaa !10
  %231 = insertelement <2 x float> poison, float %229, i64 0
  %232 = shufflevector <2 x float> %231, <2 x float> poison, <2 x i32> zeroinitializer
  %233 = fmul <2 x float> %232, %230
  store <2 x float> %233, ptr %gep.prol, align 4, !tbaa !10
  %indvars.iv.next643.prol = add nuw nsw i64 %indvars.iv642.ph, 1
  br label %scalar.ph.prol.loopexit

scalar.ph.prol.loopexit:                          ; preds = %scalar.ph.prol, %scalar.ph.preheader
  %indvars.iv642.unr = phi i64 [ %indvars.iv642.ph, %scalar.ph.preheader ], [ %indvars.iv.next643.prol, %scalar.ph.prol ]
  %234 = icmp eq i64 %indvars.iv642.ph, %219
  br i1 %234, label %._crit_edge567, label %scalar.ph.preheader.new

scalar.ph.preheader.new:                          ; preds = %scalar.ph.prol.loopexit
  %invariant.gep884 = getelementptr i8, ptr %invariant.gep, i64 8
  br label %scalar.ph

scalar.ph:                                        ; preds = %scalar.ph, %scalar.ph.preheader.new
  %indvars.iv642 = phi i64 [ %indvars.iv642.unr, %scalar.ph.preheader.new ], [ %indvars.iv.next643.1, %scalar.ph ]
  %235 = getelementptr inbounds float, ptr %39, i64 %indvars.iv642
  %236 = load float, ptr %235, align 4, !tbaa !10
  %gep = getelementptr %struct.complex, ptr %invariant.gep, i64 %indvars.iv642
  %237 = load <2 x float>, ptr %gep, align 4, !tbaa !10
  %238 = insertelement <2 x float> poison, float %236, i64 0
  %239 = shufflevector <2 x float> %238, <2 x float> poison, <2 x i32> zeroinitializer
  %240 = fmul <2 x float> %239, %237
  store <2 x float> %240, ptr %gep, align 4, !tbaa !10
  %241 = getelementptr float, ptr %12, i64 %indvars.iv642
  %242 = load float, ptr %241, align 4, !tbaa !10
  %gep885 = getelementptr %struct.complex, ptr %invariant.gep884, i64 %indvars.iv642
  %243 = load <2 x float>, ptr %gep885, align 4, !tbaa !10
  %244 = insertelement <2 x float> poison, float %242, i64 0
  %245 = shufflevector <2 x float> %244, <2 x float> poison, <2 x i32> zeroinitializer
  %246 = fmul <2 x float> %245, %243
  store <2 x float> %246, ptr %gep885, align 4, !tbaa !10
  %indvars.iv.next643.1 = add nuw nsw i64 %indvars.iv642, 2
  %exitcond646.not.1 = icmp eq i64 %indvars.iv.next643.1, %wide.trip.count645
  br i1 %exitcond646.not.1, label %._crit_edge567, label %scalar.ph, !llvm.loop !21

._crit_edge567:                                   ; preds = %scalar.ph.prol.loopexit, %scalar.ph, %middle.block
  %indvars.iv.next648 = add nuw nsw i64 %indvars.iv647, 1
  %exitcond651.not = icmp eq i64 %indvars.iv.next648, %wide.trip.count650
  br i1 %exitcond651.not, label %..loopexit548_crit_edge, label %.lr.ph566, !llvm.loop !22

247:                                              ; preds = %198
  %.not498 = icmp eq i32 %.1462, 0
  br i1 %.not498, label %.loopexit547, label %248

248:                                              ; preds = %247
  %249 = load i32, ptr %5, align 4, !tbaa !5
  store i32 %249, ptr %25, align 4, !tbaa !5
  %.not499577 = icmp slt i32 %249, 1
  br i1 %.not499577, label %.loopexit547, label %.lr.ph580

.lr.ph580:                                        ; preds = %248
  %250 = load i32, ptr %2, align 4, !tbaa !5
  %.not500572 = icmp slt i32 %250, 1
  br i1 %.not500572, label %..loopexit547_crit_edge, label %.lr.ph575.preheader

.lr.ph575.preheader:                              ; preds = %.lr.ph580
  %251 = add nuw i32 %250, 1
  %252 = sext i32 %41 to i64
  %253 = add nuw i32 %249, 1
  %wide.trip.count660 = zext i32 %253 to i64
  %wide.trip.count655 = zext i32 %251 to i64
  %254 = shl nsw i64 %252, 3
  %255 = shl nsw i64 %42, 3
  %256 = getelementptr i8, ptr %14, i64 %254
  %257 = getelementptr i8, ptr %256, i64 %255
  %scevgep734 = getelementptr i8, ptr %257, i64 8
  %258 = shl nuw nsw i64 %wide.trip.count660, 3
  %259 = add nsw i64 %258, -8
  %260 = mul i64 %259, %252
  %261 = shl nuw nsw i64 %wide.trip.count655, 3
  %262 = getelementptr i8, ptr %14, i64 %260
  %263 = getelementptr i8, ptr %262, i64 %255
  %scevgep735 = getelementptr i8, ptr %263, i64 %261
  %264 = shl nuw nsw i64 %wide.trip.count655, 2
  %265 = getelementptr i8, ptr %13, i64 %264
  %scevgep736 = getelementptr i8, ptr %265, i64 -4
  %266 = zext nneg i32 %250 to i64
  %267 = zext nneg i32 %250 to i64
  %min.iters.check743 = icmp eq i32 %250, 1
  %bound0737 = icmp ult ptr %scevgep734, %scevgep736
  %bound1738 = icmp ugt ptr %scevgep735, %13
  %found.conflict739 = and i1 %bound0737, %bound1738
  %stride.check740 = icmp slt i32 %41, 0
  %268 = or i1 %found.conflict739, %stride.check740
  %n.vec746 = and i64 %266, 2147483646
  %ind.end747 = or i64 %266, 1
  %cmp.n758 = icmp eq i64 %n.vec746, %266
  %269 = and i32 %250, 1
  %lcmp.mod874.not = icmp eq i32 %269, 0
  br label %.lr.ph575

.lr.ph575:                                        ; preds = %.lr.ph575.preheader, %._crit_edge576
  %indvars.iv657 = phi i64 [ 1, %.lr.ph575.preheader ], [ %indvars.iv.next658, %._crit_edge576 ]
  %270 = mul nsw i64 %indvars.iv657, %252
  %invariant.gep720 = getelementptr %struct.complex, ptr %43, i64 %270
  %brmerge900 = select i1 %min.iters.check743, i1 true, i1 %268
  br i1 %brmerge900, label %scalar.ph742.preheader, label %vector.body749

vector.body749:                                   ; preds = %.lr.ph575, %vector.body749
  %index750 = phi i64 [ %index.next757, %vector.body749 ], [ 0, %.lr.ph575 ]
  %offset.idx751 = or disjoint i64 %index750, 1
  %271 = getelementptr float, ptr %13, i64 %index750
  %wide.load752 = load <2 x float>, ptr %271, align 4, !tbaa !10, !alias.scope !23
  %272 = getelementptr %struct.complex, ptr %invariant.gep720, i64 %offset.idx751
  %273 = load <4 x float>, ptr %272, align 4, !tbaa !10
  %274 = shufflevector <2 x float> %wide.load752, <2 x float> poison, <4 x i32> <i32 0, i32 0, i32 1, i32 1>
  %interleaved.vec756 = fmul <4 x float> %274, %273
  store <4 x float> %interleaved.vec756, ptr %272, align 4, !tbaa !10
  %index.next757 = add nuw i64 %index750, 2
  %275 = icmp eq i64 %index.next757, %n.vec746
  br i1 %275, label %middle.block741, label %vector.body749, !llvm.loop !26

middle.block741:                                  ; preds = %vector.body749
  br i1 %cmp.n758, label %._crit_edge576, label %scalar.ph742.preheader

scalar.ph742.preheader:                           ; preds = %.lr.ph575, %middle.block741
  %indvars.iv652.ph = phi i64 [ 1, %.lr.ph575 ], [ %ind.end747, %middle.block741 ]
  br i1 %lcmp.mod874.not, label %scalar.ph742.prol.loopexit, label %scalar.ph742.prol

scalar.ph742.prol:                                ; preds = %scalar.ph742.preheader
  %276 = getelementptr inbounds float, ptr %40, i64 %indvars.iv652.ph
  %277 = load float, ptr %276, align 4, !tbaa !10
  %gep721.prol = getelementptr %struct.complex, ptr %invariant.gep720, i64 %indvars.iv652.ph
  %278 = load <2 x float>, ptr %gep721.prol, align 4, !tbaa !10
  %279 = insertelement <2 x float> poison, float %277, i64 0
  %280 = shufflevector <2 x float> %279, <2 x float> poison, <2 x i32> zeroinitializer
  %281 = fmul <2 x float> %280, %278
  store <2 x float> %281, ptr %gep721.prol, align 4, !tbaa !10
  %indvars.iv.next653.prol = add nuw nsw i64 %indvars.iv652.ph, 1
  br label %scalar.ph742.prol.loopexit

scalar.ph742.prol.loopexit:                       ; preds = %scalar.ph742.prol, %scalar.ph742.preheader
  %indvars.iv652.unr = phi i64 [ %indvars.iv652.ph, %scalar.ph742.preheader ], [ %indvars.iv.next653.prol, %scalar.ph742.prol ]
  %282 = icmp eq i64 %indvars.iv652.ph, %267
  br i1 %282, label %._crit_edge576, label %scalar.ph742.preheader.new

scalar.ph742.preheader.new:                       ; preds = %scalar.ph742.prol.loopexit
  %invariant.gep886 = getelementptr i8, ptr %invariant.gep720, i64 8
  br label %scalar.ph742

scalar.ph742:                                     ; preds = %scalar.ph742, %scalar.ph742.preheader.new
  %indvars.iv652 = phi i64 [ %indvars.iv652.unr, %scalar.ph742.preheader.new ], [ %indvars.iv.next653.1, %scalar.ph742 ]
  %283 = getelementptr inbounds float, ptr %40, i64 %indvars.iv652
  %284 = load float, ptr %283, align 4, !tbaa !10
  %gep721 = getelementptr %struct.complex, ptr %invariant.gep720, i64 %indvars.iv652
  %285 = load <2 x float>, ptr %gep721, align 4, !tbaa !10
  %286 = insertelement <2 x float> poison, float %284, i64 0
  %287 = shufflevector <2 x float> %286, <2 x float> poison, <2 x i32> zeroinitializer
  %288 = fmul <2 x float> %287, %285
  store <2 x float> %288, ptr %gep721, align 4, !tbaa !10
  %289 = getelementptr float, ptr %13, i64 %indvars.iv652
  %290 = load float, ptr %289, align 4, !tbaa !10
  %gep887 = getelementptr %struct.complex, ptr %invariant.gep886, i64 %indvars.iv652
  %291 = load <2 x float>, ptr %gep887, align 4, !tbaa !10
  %292 = insertelement <2 x float> poison, float %290, i64 0
  %293 = shufflevector <2 x float> %292, <2 x float> poison, <2 x i32> zeroinitializer
  %294 = fmul <2 x float> %293, %291
  store <2 x float> %294, ptr %gep887, align 4, !tbaa !10
  %indvars.iv.next653.1 = add nuw nsw i64 %indvars.iv652, 2
  %exitcond656.not.1 = icmp eq i64 %indvars.iv.next653.1, %wide.trip.count655
  br i1 %exitcond656.not.1, label %._crit_edge576, label %scalar.ph742, !llvm.loop !27

._crit_edge576:                                   ; preds = %scalar.ph742.prol.loopexit, %scalar.ph742, %middle.block741
  %indvars.iv.next658 = add nuw nsw i64 %indvars.iv657, 1
  %exitcond661.not = icmp eq i64 %indvars.iv.next658, %wide.trip.count660
  br i1 %exitcond661.not, label %..loopexit547_crit_edge, label %.lr.ph575, !llvm.loop !28

..loopexit547_crit_edge:                          ; preds = %._crit_edge576, %.lr.ph580
  store i32 %250, ptr %26, align 4, !tbaa !5
  br label %.loopexit547

..loopexit548_crit_edge:                          ; preds = %._crit_edge567, %.lr.ph571
  store i32 %202, ptr %26, align 4, !tbaa !5
  br label %.loopexit547

.loopexit547:                                     ; preds = %200, %..loopexit548_crit_edge, %248, %..loopexit547_crit_edge, %247, %199
  br i1 %or.cond, label %295, label %365

295:                                              ; preds = %.loopexit547
  %296 = load i32, ptr %2, align 4, !tbaa !5
  store i32 %296, ptr %25, align 4, !tbaa !5
  %.not503581 = icmp slt i32 %296, 1
  br i1 %.not503581, label %._crit_edge586, label %.lr.ph585

.lr.ph585:                                        ; preds = %295, %.lr.ph585
  %.4.neg583 = phi i32 [ %.4.neg, %.lr.ph585 ], [ -1, %295 ]
  %.4582 = phi i32 [ %318, %.lr.ph585 ], [ 1, %295 ]
  %297 = load i32, ptr %4, align 4, !tbaa !5
  %298 = sub nsw i32 %.4582, %297
  %299 = call i32 @llvm.smax.i32(i32 %298, i32 1)
  %300 = load i32, ptr %3, align 4, !tbaa !5
  %301 = add nsw i32 %300, %.4582
  %302 = load i32, ptr %2, align 4, !tbaa !5
  %. = call i32 @llvm.smin.i32(i32 %301, i32 %302)
  %reass.sub = sub i32 %., %299
  %303 = add i32 %reass.sub, 1
  store i32 %303, ptr %26, align 4, !tbaa !5
  %304 = mul nsw i32 %.4582, %33
  %305 = add nsw i32 %.4.neg583, 1
  %306 = add i32 %305, %304
  %307 = add i32 %306, %297
  %308 = add i32 %307, %299
  %309 = sext i32 %308 to i64
  %310 = getelementptr inbounds %struct.complex, ptr %35, i64 %309
  %311 = mul nsw i32 %.4582, %36
  %312 = add i32 %305, %311
  %313 = add i32 %312, %297
  %314 = add i32 %313, %300
  %315 = add i32 %314, %299
  %316 = sext i32 %315 to i64
  %317 = getelementptr inbounds %struct.complex, ptr %38, i64 %316
  call void @ccopy_(ptr noundef nonnull %26, ptr noundef %310, ptr noundef nonnull @c__1, ptr noundef %317, ptr noundef nonnull @c__1) #6
  %318 = add nuw nsw i32 %.4582, 1
  %.4.neg = xor i32 %.4582, -1
  %319 = load i32, ptr %25, align 4, !tbaa !5
  %.not503.not = icmp slt i32 %.4582, %319
  br i1 %.not503.not, label %.lr.ph585, label %._crit_edge586, !llvm.loop !29

._crit_edge586:                                   ; preds = %.lr.ph585, %295
  call void @cgbtrf_(ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef %8, ptr noundef nonnull %9, ptr noundef %10, ptr noundef nonnull %23) #6
  %320 = load i32, ptr %23, align 4, !tbaa !5
  %321 = icmp sgt i32 %320, 0
  br i1 %321, label %.lr.ph625.preheader, label %365

.lr.ph625.preheader:                              ; preds = %._crit_edge586
  store i32 %320, ptr %25, align 4, !tbaa !5
  %322 = sext i32 %33 to i64
  br label %.lr.ph625

.lr.ph625:                                        ; preds = %.lr.ph625.preheader, %._crit_edge620
  %323 = phi i32 [ %320, %.lr.ph625.preheader ], [ %347, %._crit_edge620 ]
  %324 = phi float [ 0.000000e+00, %.lr.ph625.preheader ], [ %348, %._crit_edge620 ]
  %indvars.iv697 = phi i64 [ 1, %.lr.ph625.preheader ], [ %indvars.iv.next698, %._crit_edge620 ]
  %indvars.iv692 = phi i32 [ 1, %.lr.ph625.preheader ], [ %indvars.iv.next693, %._crit_edge620 ]
  %.5.neg623 = phi i32 [ -1, %.lr.ph625.preheader ], [ %351, %._crit_edge620 ]
  %325 = load i32, ptr %4, align 4, !tbaa !5
  %326 = add nsw i32 %.5.neg623, 2
  %327 = add i32 %326, %325
  store i32 %327, ptr %26, align 4, !tbaa !5
  %328 = load i32, ptr %2, align 4, !tbaa !5
  %329 = add nsw i32 %.5.neg623, 1
  %330 = add i32 %329, %325
  %331 = add i32 %330, %328
  %332 = load i32, ptr %3, align 4, !tbaa !5
  %333 = add i32 %325, 1
  %334 = add i32 %333, %332
  %335 = call i32 @llvm.smin.i32(i32 %331, i32 %334)
  %336 = call i32 @llvm.smax.i32(i32 %327, i32 1)
  %.not518616 = icmp sgt i32 %336, %335
  br i1 %.not518616, label %._crit_edge620, label %.lr.ph619

.lr.ph619:                                        ; preds = %.lr.ph625
  %337 = mul nsw i64 %indvars.iv697, %322
  %338 = add i32 %325, %indvars.iv692
  %smax = call i32 @llvm.smax.i32(i32 %338, i32 1)
  %339 = zext nneg i32 %smax to i64
  %340 = zext nneg i32 %335 to i64
  %invariant.gep722 = getelementptr %struct.complex, ptr %35, i64 %337
  br label %341

341:                                              ; preds = %.lr.ph619, %341
  %342 = phi float [ %324, %.lr.ph619 ], [ %346, %341 ]
  %indvars.iv694 = phi i64 [ %339, %.lr.ph619 ], [ %indvars.iv.next695, %341 ]
  %gep723 = getelementptr %struct.complex, ptr %invariant.gep722, i64 %indvars.iv694
  %343 = call <2 x float> @Cf(ptr noundef %gep723)
  %344 = call float @cabsf(<2 x float> noundef %343) #6
  %345 = fcmp oge float %342, %344
  %346 = select i1 %345, float %342, float %344
  %indvars.iv.next695 = add nuw nsw i64 %indvars.iv694, 1
  %.not518.not = icmp ult i64 %indvars.iv694, %340
  br i1 %.not518.not, label %341, label %._crit_edge620.loopexit, !llvm.loop !30

._crit_edge620.loopexit:                          ; preds = %341
  %.pre = load i32, ptr %25, align 4, !tbaa !5
  br label %._crit_edge620

._crit_edge620:                                   ; preds = %._crit_edge620.loopexit, %.lr.ph625
  %347 = phi i32 [ %.pre, %._crit_edge620.loopexit ], [ %323, %.lr.ph625 ]
  %348 = phi float [ %346, %._crit_edge620.loopexit ], [ %324, %.lr.ph625 ]
  %indvars.iv.next698 = add nuw nsw i64 %indvars.iv697, 1
  %349 = sext i32 %347 to i64
  %.not515.not = icmp slt i64 %indvars.iv697, %349
  %indvars.iv.next693 = add nsw i32 %indvars.iv692, -1
  %350 = trunc i64 %indvars.iv697 to i32
  %351 = xor i32 %350, -1
  br i1 %.not515.not, label %.lr.ph625, label %._crit_edge626, !llvm.loop !31

._crit_edge626:                                   ; preds = %._crit_edge620
  %.pre703 = load i32, ptr %23, align 4, !tbaa !5
  %352 = add nsw i32 %.pre703, -1
  %353 = load i32, ptr %3, align 4, !tbaa !5
  %354 = load i32, ptr %4, align 4, !tbaa !5
  %355 = add nsw i32 %354, %353
  store i32 %355, ptr %26, align 4, !tbaa !5
  %356 = call i32 @llvm.smin.i32(i32 %352, i32 %355)
  store i32 %356, ptr %25, align 4, !tbaa !5
  %reass.sub627 = sub i32 %355, %.pre703
  %357 = add i32 %reass.sub627, 2
  %358 = call i32 @llvm.smax.i32(i32 %357, i32 1)
  %359 = add nsw i32 %358, %36
  %360 = sext i32 %359 to i64
  %361 = getelementptr inbounds %struct.complex, ptr %38, i64 %360
  %362 = call float @clantb_(ptr noundef nonnull @.str.9, ptr noundef nonnull @.str.10, ptr noundef nonnull @.str, ptr noundef nonnull %23, ptr noundef nonnull %25, ptr noundef %361, ptr noundef nonnull %9, ptr noundef %22) #6
  %363 = fcmp oeq float %362, 0.000000e+00
  %364 = fdiv float %348, %362
  %.0 = select i1 %363, float 1.000000e+00, float %364
  store float %.0, ptr %22, align 4, !tbaa !10
  store float 0.000000e+00, ptr %18, align 4, !tbaa !10
  br label %539

365:                                              ; preds = %._crit_edge586, %.loopexit547
  %.522 = select i1 %.not486, i8 73, i8 49
  store i8 %.522, ptr %28, align 1, !tbaa !9
  %366 = call float @clangb_(ptr noundef nonnull %28, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef %6, ptr noundef nonnull %7, ptr noundef %22) #6
  store float %366, ptr %29, align 4, !tbaa !10
  %367 = load i32, ptr %3, align 4, !tbaa !5
  %368 = load i32, ptr %4, align 4, !tbaa !5
  %369 = add nsw i32 %368, %367
  store i32 %369, ptr %25, align 4, !tbaa !5
  %370 = call float @clantb_(ptr noundef nonnull @.str.9, ptr noundef nonnull @.str.10, ptr noundef nonnull @.str, ptr noundef nonnull %2, ptr noundef nonnull %25, ptr noundef %8, ptr noundef nonnull %9, ptr noundef %22) #6
  %371 = fcmp oeq float %370, 0.000000e+00
  br i1 %371, label %375, label %372

372:                                              ; preds = %365
  %373 = call float @clangb_(ptr noundef nonnull @.str.9, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef %6, ptr noundef nonnull %7, ptr noundef %22) #6
  %374 = fdiv float %373, %370
  br label %375

375:                                              ; preds = %365, %372
  %.1 = phi float [ %374, %372 ], [ 1.000000e+00, %365 ]
  call void @cgbcon_(ptr noundef nonnull %28, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef %8, ptr noundef nonnull %9, ptr noundef %10, ptr noundef nonnull %29, ptr noundef %18, ptr noundef %21, ptr noundef %22, ptr noundef nonnull %23) #6
  call void @clacpy_(ptr noundef nonnull @.str.11, ptr noundef nonnull %2, ptr noundef nonnull %5, ptr noundef %14, ptr noundef nonnull %15, ptr noundef %16, ptr noundef nonnull %17) #6
  call void @cgbtrs_(ptr noundef %1, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef nonnull %5, ptr noundef %8, ptr noundef nonnull %9, ptr noundef %10, ptr noundef %16, ptr noundef nonnull %17, ptr noundef nonnull %23) #6
  call void @cgbrfs_(ptr noundef %1, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef nonnull %5, ptr noundef %6, ptr noundef nonnull %7, ptr noundef %8, ptr noundef nonnull %9, ptr noundef %10, ptr noundef %14, ptr noundef nonnull %15, ptr noundef %16, ptr noundef nonnull %17, ptr noundef %19, ptr noundef %20, ptr noundef %21, ptr noundef %22, ptr noundef nonnull %23) #6
  br i1 %.not486, label %454, label %376

376:                                              ; preds = %375
  %.not511 = icmp eq i32 %.1462, 0
  br i1 %.not511, label %.loopexit, label %377

377:                                              ; preds = %376
  %378 = load i32, ptr %5, align 4, !tbaa !5
  %.not512592 = icmp slt i32 %378, 1
  br i1 %.not512592, label %._crit_edge596.thread, label %.lr.ph595

._crit_edge596.thread:                            ; preds = %377
  store i32 %378, ptr %25, align 4, !tbaa !5
  br label %.loopexit

.lr.ph595:                                        ; preds = %377
  %379 = load i32, ptr %2, align 4, !tbaa !5
  %.not514587 = icmp slt i32 %379, 1
  br i1 %.not514587, label %._crit_edge596.thread712, label %.lr.ph590.preheader

._crit_edge596.thread712:                         ; preds = %.lr.ph595
  store i32 %378, ptr %25, align 4, !tbaa !5
  br label %.lr.ph600

.lr.ph590.preheader:                              ; preds = %.lr.ph595
  %380 = add nuw i32 %379, 1
  %381 = sext i32 %44 to i64
  %382 = mul i32 %44, %378
  %383 = add nuw i32 %378, 1
  %wide.trip.count670 = zext i32 %383 to i64
  %wide.trip.count665 = zext i32 %380 to i64
  %384 = add nsw i64 %wide.trip.count665, -2
  %385 = add nsw i64 %381, %45
  %386 = shl nsw i64 %385, 3
  %387 = shl nsw i64 %381, 3
  %388 = shl nsw i64 %381, 3
  %389 = shl nsw i64 %45, 3
  %390 = getelementptr i8, ptr %16, i64 %388
  %391 = getelementptr i8, ptr %390, i64 %389
  %scevgep765 = getelementptr i8, ptr %391, i64 8
  %392 = shl nuw nsw i64 %wide.trip.count670, 3
  %393 = add nsw i64 %392, -8
  %394 = mul i64 %393, %381
  %395 = shl nuw nsw i64 %wide.trip.count665, 3
  %396 = getelementptr i8, ptr %16, i64 %394
  %397 = getelementptr i8, ptr %396, i64 %389
  %scevgep766 = getelementptr i8, ptr %397, i64 %395
  %398 = shl nuw nsw i64 %wide.trip.count665, 2
  %399 = getelementptr i8, ptr %13, i64 %398
  %scevgep767 = getelementptr i8, ptr %399, i64 -4
  %400 = zext nneg i32 %379 to i64
  %401 = zext nneg i32 %379 to i64
  %min.iters.check774 = icmp ult i32 %379, 12
  %402 = getelementptr i8, ptr %16, i64 %386
  %403 = getelementptr i8, ptr %402, i64 8
  %404 = getelementptr i8, ptr %16, i64 %386
  %405 = getelementptr i8, ptr %404, i64 12
  %mul.result = shl nsw i64 %384, 3
  %mul.result762 = shl nsw i64 %384, 3
  %mul.overflow763 = icmp ugt i64 %384, 2305843009213693951
  %bound0768 = icmp ult ptr %scevgep765, %scevgep767
  %bound1769 = icmp ugt ptr %scevgep766, %13
  %found.conflict770 = and i1 %bound0768, %bound1769
  %stride.check771 = icmp slt i32 %44, 0
  %406 = or i1 %found.conflict770, %stride.check771
  %n.vec777 = and i64 %400, 2147483646
  %ind.end778 = or i64 %400, 1
  %cmp.n789 = icmp eq i64 %n.vec777, %400
  %407 = and i32 %379, 1
  %lcmp.mod876.not = icmp eq i32 %407, 0
  %invariant.gep890 = getelementptr i8, ptr %46, i64 8
  br label %.lr.ph590

.lr.ph590:                                        ; preds = %.lr.ph590.preheader, %._crit_edge591
  %indvar = phi i64 [ 0, %.lr.ph590.preheader ], [ %indvar.next, %._crit_edge591 ]
  %indvars.iv667 = phi i64 [ 1, %.lr.ph590.preheader ], [ %indvars.iv.next668, %._crit_edge591 ]
  %408 = mul nsw i64 %indvars.iv667, %381
  br i1 %min.iters.check774, label %scalar.ph773.preheader, label %vector.scevcheck

vector.scevcheck:                                 ; preds = %.lr.ph590
  %409 = mul i64 %387, %indvar
  %scevgep760 = getelementptr i8, ptr %403, i64 %409
  %scevgep759 = getelementptr i8, ptr %405, i64 %409
  %410 = getelementptr i8, ptr %scevgep759, i64 %mul.result
  %411 = icmp ult ptr %410, %scevgep759
  %412 = getelementptr i8, ptr %scevgep760, i64 %mul.result762
  %413 = icmp ult ptr %412, %scevgep760
  %414 = or i1 %413, %mul.overflow763
  %415 = or i1 %411, %414
  %brmerge901 = select i1 %415, i1 true, i1 %406
  br i1 %brmerge901, label %scalar.ph773.preheader, label %vector.body780

vector.body780:                                   ; preds = %vector.scevcheck, %vector.body780
  %index781 = phi i64 [ %index.next788, %vector.body780 ], [ 0, %vector.scevcheck ]
  %offset.idx782 = or disjoint i64 %index781, 1
  %416 = add nsw i64 %offset.idx782, %408
  %417 = getelementptr float, ptr %13, i64 %index781
  %wide.load783 = load <2 x float>, ptr %417, align 4, !tbaa !10, !alias.scope !32
  %418 = getelementptr inbounds %struct.complex, ptr %46, i64 %416
  %419 = load <4 x float>, ptr %418, align 4, !tbaa !10
  %420 = getelementptr inbounds %struct.complex, ptr %46, i64 %416
  %421 = shufflevector <2 x float> %wide.load783, <2 x float> poison, <4 x i32> <i32 0, i32 0, i32 1, i32 1>
  %interleaved.vec787 = fmul <4 x float> %421, %419
  store <4 x float> %interleaved.vec787, ptr %420, align 4, !tbaa !10
  %index.next788 = add nuw i64 %index781, 2
  %422 = icmp eq i64 %index.next788, %n.vec777
  br i1 %422, label %middle.block772, label %vector.body780, !llvm.loop !35

middle.block772:                                  ; preds = %vector.body780
  br i1 %cmp.n789, label %._crit_edge591, label %scalar.ph773.preheader

scalar.ph773.preheader:                           ; preds = %vector.scevcheck, %middle.block772, %.lr.ph590
  %indvars.iv662.ph = phi i64 [ 1, %vector.scevcheck ], [ 1, %.lr.ph590 ], [ %ind.end778, %middle.block772 ]
  br i1 %lcmp.mod876.not, label %scalar.ph773.prol.loopexit, label %scalar.ph773.prol

scalar.ph773.prol:                                ; preds = %scalar.ph773.preheader
  %423 = getelementptr inbounds float, ptr %40, i64 %indvars.iv662.ph
  %424 = load float, ptr %423, align 4, !tbaa !10
  %425 = getelementptr %struct.complex, ptr %46, i64 %indvars.iv662.ph
  %426 = getelementptr %struct.complex, ptr %425, i64 %408
  %427 = load <2 x float>, ptr %426, align 4, !tbaa !10
  %428 = insertelement <2 x float> poison, float %424, i64 0
  %429 = shufflevector <2 x float> %428, <2 x float> poison, <2 x i32> zeroinitializer
  %430 = fmul <2 x float> %429, %427
  store <2 x float> %430, ptr %426, align 4, !tbaa !10
  %indvars.iv.next663.prol = add nuw nsw i64 %indvars.iv662.ph, 1
  br label %scalar.ph773.prol.loopexit

scalar.ph773.prol.loopexit:                       ; preds = %scalar.ph773.prol, %scalar.ph773.preheader
  %indvars.iv662.unr = phi i64 [ %indvars.iv662.ph, %scalar.ph773.preheader ], [ %indvars.iv.next663.prol, %scalar.ph773.prol ]
  %431 = icmp eq i64 %indvars.iv662.ph, %401
  br i1 %431, label %._crit_edge591, label %scalar.ph773.preheader.new

scalar.ph773.preheader.new:                       ; preds = %scalar.ph773.prol.loopexit
  %invariant.gep888 = getelementptr %struct.complex, ptr %46, i64 %408
  %invariant.gep892 = getelementptr %struct.complex, ptr %invariant.gep890, i64 %408
  br label %scalar.ph773

scalar.ph773:                                     ; preds = %scalar.ph773, %scalar.ph773.preheader.new
  %indvars.iv662 = phi i64 [ %indvars.iv662.unr, %scalar.ph773.preheader.new ], [ %indvars.iv.next663.1, %scalar.ph773 ]
  %432 = getelementptr inbounds float, ptr %40, i64 %indvars.iv662
  %433 = load float, ptr %432, align 4, !tbaa !10
  %gep889 = getelementptr %struct.complex, ptr %invariant.gep888, i64 %indvars.iv662
  %434 = load <2 x float>, ptr %gep889, align 4, !tbaa !10
  %435 = insertelement <2 x float> poison, float %433, i64 0
  %436 = shufflevector <2 x float> %435, <2 x float> poison, <2 x i32> zeroinitializer
  %437 = fmul <2 x float> %436, %434
  store <2 x float> %437, ptr %gep889, align 4, !tbaa !10
  %438 = getelementptr float, ptr %13, i64 %indvars.iv662
  %439 = load float, ptr %438, align 4, !tbaa !10
  %gep893 = getelementptr %struct.complex, ptr %invariant.gep892, i64 %indvars.iv662
  %440 = load <2 x float>, ptr %gep893, align 4, !tbaa !10
  %441 = insertelement <2 x float> poison, float %439, i64 0
  %442 = shufflevector <2 x float> %441, <2 x float> poison, <2 x i32> zeroinitializer
  %443 = fmul <2 x float> %442, %440
  store <2 x float> %443, ptr %gep893, align 4, !tbaa !10
  %indvars.iv.next663.1 = add nuw nsw i64 %indvars.iv662, 2
  %exitcond666.not.1 = icmp eq i64 %indvars.iv.next663.1, %wide.trip.count665
  br i1 %exitcond666.not.1, label %._crit_edge591, label %scalar.ph773, !llvm.loop !36

._crit_edge591:                                   ; preds = %scalar.ph773.prol.loopexit, %scalar.ph773, %middle.block772
  %indvars.iv.next668 = add nuw nsw i64 %indvars.iv667, 1
  %exitcond671.not = icmp eq i64 %indvars.iv.next668, %wide.trip.count670
  %indvar.next = add i64 %indvar, 1
  br i1 %exitcond671.not, label %._crit_edge596, label %.lr.ph590, !llvm.loop !37

._crit_edge596:                                   ; preds = %._crit_edge591
  %444 = add i32 %379, %382
  store i32 %444, ptr %26, align 4, !tbaa !5
  store i32 %378, ptr %25, align 4, !tbaa !5
  br i1 %.not512592, label %.loopexit, label %.lr.ph600

.lr.ph600:                                        ; preds = %._crit_edge596.thread712, %._crit_edge596
  %445 = load float, ptr %30, align 4, !tbaa !10
  %446 = add nuw i32 %378, 1
  %wide.trip.count675 = zext i32 %446 to i64
  %447 = zext nneg i32 %378 to i64
  %min.iters.check792 = icmp ult i32 %378, 4
  br i1 %min.iters.check792, label %scalar.ph791.preheader, label %vector.ph793

vector.ph793:                                     ; preds = %.lr.ph600
  %n.vec795 = and i64 %447, 2147483644
  %ind.end796 = or disjoint i64 %n.vec795, 1
  %broadcast.splatinsert = insertelement <4 x float> poison, float %445, i64 0
  %broadcast.splat = shufflevector <4 x float> %broadcast.splatinsert, <4 x float> poison, <4 x i32> zeroinitializer
  br label %vector.body798

vector.body798:                                   ; preds = %vector.body798, %vector.ph793
  %index799 = phi i64 [ 0, %vector.ph793 ], [ %index.next802, %vector.body798 ]
  %448 = getelementptr float, ptr %19, i64 %index799
  %wide.load801 = load <4 x float>, ptr %448, align 4, !tbaa !10
  %449 = fdiv <4 x float> %wide.load801, %broadcast.splat
  store <4 x float> %449, ptr %448, align 4, !tbaa !10
  %index.next802 = add nuw i64 %index799, 4
  %450 = icmp eq i64 %index.next802, %n.vec795
  br i1 %450, label %middle.block790, label %vector.body798, !llvm.loop !38

middle.block790:                                  ; preds = %vector.body798
  %cmp.n803 = icmp eq i64 %n.vec795, %447
  br i1 %cmp.n803, label %.loopexit, label %scalar.ph791.preheader

scalar.ph791.preheader:                           ; preds = %middle.block790, %.lr.ph600
  %indvars.iv672.ph = phi i64 [ 1, %.lr.ph600 ], [ %ind.end796, %middle.block790 ]
  br label %scalar.ph791

scalar.ph791:                                     ; preds = %scalar.ph791.preheader, %scalar.ph791
  %indvars.iv672 = phi i64 [ %indvars.iv.next673, %scalar.ph791 ], [ %indvars.iv672.ph, %scalar.ph791.preheader ]
  %451 = getelementptr inbounds float, ptr %47, i64 %indvars.iv672
  %452 = load float, ptr %451, align 4, !tbaa !10
  %453 = fdiv float %452, %445
  store float %453, ptr %451, align 4, !tbaa !10
  %indvars.iv.next673 = add nuw nsw i64 %indvars.iv672, 1
  %exitcond676.not = icmp eq i64 %indvars.iv.next673, %wide.trip.count675
  br i1 %exitcond676.not, label %.loopexit, label %scalar.ph791, !llvm.loop !39

454:                                              ; preds = %375
  %.not507 = icmp eq i32 %.1459, 0
  br i1 %.not507, label %.loopexit, label %455

455:                                              ; preds = %454
  %456 = load i32, ptr %5, align 4, !tbaa !5
  %.not508607 = icmp slt i32 %456, 1
  br i1 %.not508607, label %._crit_edge611.thread, label %.lr.ph610

._crit_edge611.thread:                            ; preds = %455
  store i32 %456, ptr %25, align 4, !tbaa !5
  br label %.loopexit

.lr.ph610:                                        ; preds = %455
  %457 = load i32, ptr %2, align 4, !tbaa !5
  %.not510601 = icmp slt i32 %457, 1
  br i1 %.not510601, label %._crit_edge611.thread713, label %.lr.ph604.preheader

._crit_edge611.thread713:                         ; preds = %.lr.ph610
  store i32 %456, ptr %25, align 4, !tbaa !5
  br label %.lr.ph615

.lr.ph604.preheader:                              ; preds = %.lr.ph610
  %458 = add nuw i32 %457, 1
  %459 = sext i32 %44 to i64
  %460 = mul i32 %44, %456
  %461 = add nuw i32 %456, 1
  %wide.trip.count685 = zext i32 %461 to i64
  %wide.trip.count680 = zext i32 %458 to i64
  %462 = add nsw i64 %wide.trip.count680, -2
  %463 = add nsw i64 %459, %45
  %464 = shl nsw i64 %463, 3
  %465 = shl nsw i64 %459, 3
  %466 = shl nsw i64 %459, 3
  %467 = shl nsw i64 %45, 3
  %468 = getelementptr i8, ptr %16, i64 %466
  %469 = getelementptr i8, ptr %468, i64 %467
  %scevgep816 = getelementptr i8, ptr %469, i64 8
  %470 = shl nuw nsw i64 %wide.trip.count685, 3
  %471 = add nsw i64 %470, -8
  %472 = mul i64 %471, %459
  %473 = shl nuw nsw i64 %wide.trip.count680, 3
  %474 = getelementptr i8, ptr %16, i64 %472
  %475 = getelementptr i8, ptr %474, i64 %467
  %scevgep817 = getelementptr i8, ptr %475, i64 %473
  %476 = shl nuw nsw i64 %wide.trip.count680, 2
  %477 = getelementptr i8, ptr %12, i64 %476
  %scevgep818 = getelementptr i8, ptr %477, i64 -4
  %478 = zext nneg i32 %457 to i64
  %479 = zext nneg i32 %457 to i64
  %min.iters.check825 = icmp ult i32 %457, 12
  %480 = getelementptr i8, ptr %16, i64 %464
  %481 = getelementptr i8, ptr %480, i64 8
  %482 = getelementptr i8, ptr %16, i64 %464
  %483 = getelementptr i8, ptr %482, i64 12
  %mul.result809 = shl nsw i64 %462, 3
  %mul.result813 = shl nsw i64 %462, 3
  %mul.overflow814 = icmp ugt i64 %462, 2305843009213693951
  %bound0819 = icmp ult ptr %scevgep816, %scevgep818
  %bound1820 = icmp ugt ptr %scevgep817, %12
  %found.conflict821 = and i1 %bound0819, %bound1820
  %stride.check822 = icmp slt i32 %44, 0
  %484 = or i1 %found.conflict821, %stride.check822
  %n.vec828 = and i64 %478, 2147483646
  %ind.end829 = or i64 %478, 1
  %cmp.n840 = icmp eq i64 %n.vec828, %478
  %485 = and i32 %457, 1
  %lcmp.mod878.not = icmp eq i32 %485, 0
  %invariant.gep896 = getelementptr i8, ptr %46, i64 8
  br label %.lr.ph604

.lr.ph604:                                        ; preds = %.lr.ph604.preheader, %._crit_edge605
  %indvar805 = phi i64 [ 0, %.lr.ph604.preheader ], [ %indvar.next806, %._crit_edge605 ]
  %indvars.iv682 = phi i64 [ 1, %.lr.ph604.preheader ], [ %indvars.iv.next683, %._crit_edge605 ]
  %486 = mul nsw i64 %indvars.iv682, %459
  br i1 %min.iters.check825, label %scalar.ph824.preheader, label %vector.scevcheck804

vector.scevcheck804:                              ; preds = %.lr.ph604
  %487 = mul i64 %465, %indvar805
  %scevgep811 = getelementptr i8, ptr %481, i64 %487
  %scevgep807 = getelementptr i8, ptr %483, i64 %487
  %488 = getelementptr i8, ptr %scevgep807, i64 %mul.result809
  %489 = icmp ult ptr %488, %scevgep807
  %490 = getelementptr i8, ptr %scevgep811, i64 %mul.result813
  %491 = icmp ult ptr %490, %scevgep811
  %492 = or i1 %491, %mul.overflow814
  %493 = or i1 %489, %492
  %brmerge902 = select i1 %493, i1 true, i1 %484
  br i1 %brmerge902, label %scalar.ph824.preheader, label %vector.body831

vector.body831:                                   ; preds = %vector.scevcheck804, %vector.body831
  %index832 = phi i64 [ %index.next839, %vector.body831 ], [ 0, %vector.scevcheck804 ]
  %offset.idx833 = or disjoint i64 %index832, 1
  %494 = add nsw i64 %offset.idx833, %486
  %495 = getelementptr float, ptr %12, i64 %index832
  %wide.load834 = load <2 x float>, ptr %495, align 4, !tbaa !10, !alias.scope !40
  %496 = getelementptr inbounds %struct.complex, ptr %46, i64 %494
  %497 = load <4 x float>, ptr %496, align 4, !tbaa !10
  %498 = getelementptr inbounds %struct.complex, ptr %46, i64 %494
  %499 = shufflevector <2 x float> %wide.load834, <2 x float> poison, <4 x i32> <i32 0, i32 0, i32 1, i32 1>
  %interleaved.vec838 = fmul <4 x float> %499, %497
  store <4 x float> %interleaved.vec838, ptr %498, align 4, !tbaa !10
  %index.next839 = add nuw i64 %index832, 2
  %500 = icmp eq i64 %index.next839, %n.vec828
  br i1 %500, label %middle.block823, label %vector.body831, !llvm.loop !43

middle.block823:                                  ; preds = %vector.body831
  br i1 %cmp.n840, label %._crit_edge605, label %scalar.ph824.preheader

scalar.ph824.preheader:                           ; preds = %vector.scevcheck804, %middle.block823, %.lr.ph604
  %indvars.iv677.ph = phi i64 [ 1, %vector.scevcheck804 ], [ 1, %.lr.ph604 ], [ %ind.end829, %middle.block823 ]
  br i1 %lcmp.mod878.not, label %scalar.ph824.prol.loopexit, label %scalar.ph824.prol

scalar.ph824.prol:                                ; preds = %scalar.ph824.preheader
  %501 = getelementptr inbounds float, ptr %39, i64 %indvars.iv677.ph
  %502 = load float, ptr %501, align 4, !tbaa !10
  %503 = getelementptr %struct.complex, ptr %46, i64 %indvars.iv677.ph
  %504 = getelementptr %struct.complex, ptr %503, i64 %486
  %505 = load <2 x float>, ptr %504, align 4, !tbaa !10
  %506 = insertelement <2 x float> poison, float %502, i64 0
  %507 = shufflevector <2 x float> %506, <2 x float> poison, <2 x i32> zeroinitializer
  %508 = fmul <2 x float> %507, %505
  store <2 x float> %508, ptr %504, align 4, !tbaa !10
  %indvars.iv.next678.prol = add nuw nsw i64 %indvars.iv677.ph, 1
  br label %scalar.ph824.prol.loopexit

scalar.ph824.prol.loopexit:                       ; preds = %scalar.ph824.prol, %scalar.ph824.preheader
  %indvars.iv677.unr = phi i64 [ %indvars.iv677.ph, %scalar.ph824.preheader ], [ %indvars.iv.next678.prol, %scalar.ph824.prol ]
  %509 = icmp eq i64 %indvars.iv677.ph, %479
  br i1 %509, label %._crit_edge605, label %scalar.ph824.preheader.new

scalar.ph824.preheader.new:                       ; preds = %scalar.ph824.prol.loopexit
  %invariant.gep894 = getelementptr %struct.complex, ptr %46, i64 %486
  %invariant.gep898 = getelementptr %struct.complex, ptr %invariant.gep896, i64 %486
  br label %scalar.ph824

scalar.ph824:                                     ; preds = %scalar.ph824, %scalar.ph824.preheader.new
  %indvars.iv677 = phi i64 [ %indvars.iv677.unr, %scalar.ph824.preheader.new ], [ %indvars.iv.next678.1, %scalar.ph824 ]
  %510 = getelementptr inbounds float, ptr %39, i64 %indvars.iv677
  %511 = load float, ptr %510, align 4, !tbaa !10
  %gep895 = getelementptr %struct.complex, ptr %invariant.gep894, i64 %indvars.iv677
  %512 = load <2 x float>, ptr %gep895, align 4, !tbaa !10
  %513 = insertelement <2 x float> poison, float %511, i64 0
  %514 = shufflevector <2 x float> %513, <2 x float> poison, <2 x i32> zeroinitializer
  %515 = fmul <2 x float> %514, %512
  store <2 x float> %515, ptr %gep895, align 4, !tbaa !10
  %516 = getelementptr float, ptr %12, i64 %indvars.iv677
  %517 = load float, ptr %516, align 4, !tbaa !10
  %gep899 = getelementptr %struct.complex, ptr %invariant.gep898, i64 %indvars.iv677
  %518 = load <2 x float>, ptr %gep899, align 4, !tbaa !10
  %519 = insertelement <2 x float> poison, float %517, i64 0
  %520 = shufflevector <2 x float> %519, <2 x float> poison, <2 x i32> zeroinitializer
  %521 = fmul <2 x float> %520, %518
  store <2 x float> %521, ptr %gep899, align 4, !tbaa !10
  %indvars.iv.next678.1 = add nuw nsw i64 %indvars.iv677, 2
  %exitcond681.not.1 = icmp eq i64 %indvars.iv.next678.1, %wide.trip.count680
  br i1 %exitcond681.not.1, label %._crit_edge605, label %scalar.ph824, !llvm.loop !44

._crit_edge605:                                   ; preds = %scalar.ph824.prol.loopexit, %scalar.ph824, %middle.block823
  %indvars.iv.next683 = add nuw nsw i64 %indvars.iv682, 1
  %exitcond686.not = icmp eq i64 %indvars.iv.next683, %wide.trip.count685
  %indvar.next806 = add i64 %indvar805, 1
  br i1 %exitcond686.not, label %._crit_edge611, label %.lr.ph604, !llvm.loop !45

._crit_edge611:                                   ; preds = %._crit_edge605
  %522 = add i32 %457, %460
  store i32 %522, ptr %26, align 4, !tbaa !5
  store i32 %456, ptr %25, align 4, !tbaa !5
  br i1 %.not508607, label %.loopexit, label %.lr.ph615

.lr.ph615:                                        ; preds = %._crit_edge611.thread713, %._crit_edge611
  %523 = load float, ptr %32, align 4, !tbaa !10
  %524 = add nuw i32 %456, 1
  %wide.trip.count690 = zext i32 %524 to i64
  %525 = zext nneg i32 %456 to i64
  %min.iters.check843 = icmp ult i32 %456, 4
  br i1 %min.iters.check843, label %scalar.ph842.preheader, label %vector.ph844

vector.ph844:                                     ; preds = %.lr.ph615
  %n.vec846 = and i64 %525, 2147483644
  %ind.end847 = or disjoint i64 %n.vec846, 1
  %broadcast.splatinsert853 = insertelement <4 x float> poison, float %523, i64 0
  %broadcast.splat854 = shufflevector <4 x float> %broadcast.splatinsert853, <4 x float> poison, <4 x i32> zeroinitializer
  br label %vector.body849

vector.body849:                                   ; preds = %vector.body849, %vector.ph844
  %index850 = phi i64 [ 0, %vector.ph844 ], [ %index.next855, %vector.body849 ]
  %526 = getelementptr float, ptr %19, i64 %index850
  %wide.load852 = load <4 x float>, ptr %526, align 4, !tbaa !10
  %527 = fdiv <4 x float> %wide.load852, %broadcast.splat854
  store <4 x float> %527, ptr %526, align 4, !tbaa !10
  %index.next855 = add nuw i64 %index850, 4
  %528 = icmp eq i64 %index.next855, %n.vec846
  br i1 %528, label %middle.block841, label %vector.body849, !llvm.loop !46

middle.block841:                                  ; preds = %vector.body849
  %cmp.n856 = icmp eq i64 %n.vec846, %525
  br i1 %cmp.n856, label %.loopexit, label %scalar.ph842.preheader

scalar.ph842.preheader:                           ; preds = %middle.block841, %.lr.ph615
  %indvars.iv687.ph = phi i64 [ 1, %.lr.ph615 ], [ %ind.end847, %middle.block841 ]
  br label %scalar.ph842

scalar.ph842:                                     ; preds = %scalar.ph842.preheader, %scalar.ph842
  %indvars.iv687 = phi i64 [ %indvars.iv.next688, %scalar.ph842 ], [ %indvars.iv687.ph, %scalar.ph842.preheader ]
  %529 = getelementptr inbounds float, ptr %47, i64 %indvars.iv687
  %530 = load float, ptr %529, align 4, !tbaa !10
  %531 = fdiv float %530, %523
  store float %531, ptr %529, align 4, !tbaa !10
  %indvars.iv.next688 = add nuw nsw i64 %indvars.iv687, 1
  %exitcond691.not = icmp eq i64 %indvars.iv.next688, %wide.trip.count690
  br i1 %exitcond691.not, label %.loopexit, label %scalar.ph842, !llvm.loop !47

.loopexit:                                        ; preds = %scalar.ph791, %scalar.ph842, %middle.block790, %middle.block841, %._crit_edge611.thread, %._crit_edge596.thread, %._crit_edge596, %._crit_edge611, %454, %376
  %532 = load float, ptr %18, align 4, !tbaa !10
  %533 = call float @slamch_(ptr noundef nonnull @.str.12) #6
  %534 = fcmp olt float %532, %533
  br i1 %534, label %535, label %538

535:                                              ; preds = %.loopexit
  %536 = load i32, ptr %2, align 4, !tbaa !5
  %537 = add nsw i32 %536, 1
  store i32 %537, ptr %23, align 4, !tbaa !5
  br label %538

538:                                              ; preds = %535, %.loopexit
  store float %.1, ptr %22, align 4, !tbaa !10
  br label %539

539:                                              ; preds = %538, %._crit_edge626, %.thread539
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %32) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %31) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %30) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %29) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %28) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %27) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %26) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %25) #6
  ret void
}

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

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

declare float @slamch_(ptr noundef) local_unnamed_addr #2

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

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

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

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

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

; Function Attrs: nounwind
declare float @cabsf(<2 x float> noundef) local_unnamed_addr #3

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

declare float @clantb_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

declare float @clangb_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

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

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

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

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

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

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!7, !7, i64 0}
!10 = !{!11, !11, i64 0}
!11 = !{!"float", !7, i64 0}
!12 = distinct !{!12, !13}
!13 = !{!"llvm.loop.mustprogress"}
!14 = distinct !{!14, !13}
!15 = !{!16}
!16 = distinct !{!16, !17}
!17 = distinct !{!17, !"LVerDomain"}
!18 = distinct !{!18, !13, !19, !20}
!19 = !{!"llvm.loop.isvectorized", i32 1}
!20 = !{!"llvm.loop.unroll.runtime.disable"}
!21 = distinct !{!21, !13, !19}
!22 = distinct !{!22, !13}
!23 = !{!24}
!24 = distinct !{!24, !25}
!25 = distinct !{!25, !"LVerDomain"}
!26 = distinct !{!26, !13, !19, !20}
!27 = distinct !{!27, !13, !19}
!28 = distinct !{!28, !13}
!29 = distinct !{!29, !13}
!30 = distinct !{!30, !13}
!31 = distinct !{!31, !13}
!32 = !{!33}
!33 = distinct !{!33, !34}
!34 = distinct !{!34, !"LVerDomain"}
!35 = distinct !{!35, !13, !19, !20}
!36 = distinct !{!36, !13, !19}
!37 = distinct !{!37, !13}
!38 = distinct !{!38, !13, !19, !20}
!39 = distinct !{!39, !13, !20, !19}
!40 = !{!41}
!41 = distinct !{!41, !42}
!42 = distinct !{!42, !"LVerDomain"}
!43 = distinct !{!43, !13, !19, !20}
!44 = distinct !{!44, !13, !19}
!45 = distinct !{!45, !13}
!46 = distinct !{!46, !13, !19, !20}
!47 = distinct !{!47, !13, !20, !19}


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