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

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

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

135:                                              ; preds = %21
  %136 = load i32, ptr %66, align 4, !tbaa !9
  %137 = icmp ne i32 %136, 0
  br i1 %137, label %138, label %140

138:                                              ; preds = %135, %21
  %139 = load ptr, ptr %31, align 8, !tbaa !5
  store i8 78, ptr %139, align 1, !tbaa !11
  store i32 0, ptr %67, align 4, !tbaa !9
  br label %146

140:                                              ; preds = %135
  %141 = load ptr, ptr %31, align 8, !tbaa !5
  %142 = call i32 @lsame_(ptr noundef %141, ptr noundef @.str.3)
  store i32 %142, ptr %67, align 4, !tbaa !9
  %143 = call float @slamch_(ptr noundef @.str.4)
  store float %143, ptr %74, align 4, !tbaa !12
  %144 = load float, ptr %74, align 4, !tbaa !12
  %145 = fdiv float 1.000000e+00, %144
  store float %145, ptr %72, align 4, !tbaa !12
  br label %146

146:                                              ; preds = %140, %138
  %147 = load i32, ptr %71, align 4, !tbaa !9
  %148 = icmp ne i32 %147, 0
  br i1 %148, label %158, label %149

149:                                              ; preds = %146
  %150 = load i32, ptr %66, align 4, !tbaa !9
  %151 = icmp ne i32 %150, 0
  br i1 %151, label %158, label %152

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

156:                                              ; preds = %152
  %157 = load ptr, ptr %42, align 8, !tbaa !5
  store i32 -1, ptr %157, align 4, !tbaa !9
  br label %337

158:                                              ; preds = %152, %149, %146
  %159 = load i32, ptr %68, align 4, !tbaa !9
  %160 = icmp ne i32 %159, 0
  br i1 %160, label %167, label %161

161:                                              ; preds = %158
  %162 = load ptr, ptr %23, align 8, !tbaa !5
  %163 = call i32 @lsame_(ptr noundef %162, ptr noundef @.str.6)
  %164 = icmp ne i32 %163, 0
  br i1 %164, label %167, label %165

165:                                              ; preds = %161
  %166 = load ptr, ptr %42, align 8, !tbaa !5
  store i32 -2, ptr %166, align 4, !tbaa !9
  br label %336

167:                                              ; preds = %161, %158
  %168 = load ptr, ptr %24, align 8, !tbaa !5
  %169 = load i32, ptr %168, align 4, !tbaa !9
  %170 = icmp slt i32 %169, 0
  br i1 %170, label %171, label %173

171:                                              ; preds = %167
  %172 = load ptr, ptr %42, align 8, !tbaa !5
  store i32 -3, ptr %172, align 4, !tbaa !9
  br label %335

173:                                              ; preds = %167
  %174 = load ptr, ptr %25, align 8, !tbaa !5
  %175 = load i32, ptr %174, align 4, !tbaa !9
  %176 = icmp slt i32 %175, 0
  br i1 %176, label %177, label %179

177:                                              ; preds = %173
  %178 = load ptr, ptr %42, align 8, !tbaa !5
  store i32 -4, ptr %178, align 4, !tbaa !9
  br label %334

179:                                              ; preds = %173
  %180 = load ptr, ptr %26, align 8, !tbaa !5
  %181 = load i32, ptr %180, align 4, !tbaa !9
  %182 = icmp slt i32 %181, 0
  br i1 %182, label %183, label %185

183:                                              ; preds = %179
  %184 = load ptr, ptr %42, align 8, !tbaa !5
  store i32 -5, ptr %184, align 4, !tbaa !9
  br label %333

185:                                              ; preds = %179
  %186 = load ptr, ptr %28, align 8, !tbaa !5
  %187 = load i32, ptr %186, align 4, !tbaa !9
  %188 = load ptr, ptr %25, align 8, !tbaa !5
  %189 = load i32, ptr %188, align 4, !tbaa !9
  %190 = add nsw i32 %189, 1
  %191 = icmp slt i32 %187, %190
  br i1 %191, label %192, label %194

192:                                              ; preds = %185
  %193 = load ptr, ptr %42, align 8, !tbaa !5
  store i32 -7, ptr %193, align 4, !tbaa !9
  br label %332

194:                                              ; preds = %185
  %195 = load ptr, ptr %30, align 8, !tbaa !5
  %196 = load i32, ptr %195, align 4, !tbaa !9
  %197 = load ptr, ptr %25, align 8, !tbaa !5
  %198 = load i32, ptr %197, align 4, !tbaa !9
  %199 = add nsw i32 %198, 1
  %200 = icmp slt i32 %196, %199
  br i1 %200, label %201, label %203

201:                                              ; preds = %194
  %202 = load ptr, ptr %42, align 8, !tbaa !5
  store i32 -9, ptr %202, align 4, !tbaa !9
  br label %331

203:                                              ; preds = %194
  %204 = load ptr, ptr %22, align 8, !tbaa !5
  %205 = call i32 @lsame_(ptr noundef %204, ptr noundef @.str.5)
  %206 = icmp ne i32 %205, 0
  br i1 %206, label %207, label %216

207:                                              ; preds = %203
  %208 = load i32, ptr %67, align 4, !tbaa !9
  %209 = icmp ne i32 %208, 0
  br i1 %209, label %216, label %210

210:                                              ; preds = %207
  %211 = load ptr, ptr %31, align 8, !tbaa !5
  %212 = call i32 @lsame_(ptr noundef %211, ptr noundef @.str)
  %213 = icmp ne i32 %212, 0
  br i1 %213, label %216, label %214

214:                                              ; preds = %210
  %215 = load ptr, ptr %42, align 8, !tbaa !5
  store i32 -10, ptr %215, align 4, !tbaa !9
  br label %330

216:                                              ; preds = %210, %207, %203
  %217 = load i32, ptr %67, align 4, !tbaa !9
  %218 = icmp ne i32 %217, 0
  br i1 %218, label %219, label %293

219:                                              ; preds = %216
  %220 = load float, ptr %72, align 4, !tbaa !12
  store float %220, ptr %60, align 4, !tbaa !12
  store float 0.000000e+00, ptr %61, align 4, !tbaa !12
  %221 = load ptr, ptr %24, align 8, !tbaa !5
  %222 = load i32, ptr %221, align 4, !tbaa !9
  store i32 %222, ptr %51, align 4, !tbaa !9
  store i32 1, ptr %63, align 4, !tbaa !9
  br label %223

223:                                              ; preds = %258, %219
  %224 = load i32, ptr %63, align 4, !tbaa !9
  %225 = load i32, ptr %51, align 4, !tbaa !9
  %226 = icmp sle i32 %224, %225
  br i1 %226, label %227, label %261

227:                                              ; preds = %223
  %228 = load float, ptr %60, align 4, !tbaa !12
  store float %228, ptr %56, align 4, !tbaa !12
  %229 = load ptr, ptr %32, align 8, !tbaa !5
  %230 = load i32, ptr %63, align 4, !tbaa !9
  %231 = sext i32 %230 to i64
  %232 = getelementptr inbounds float, ptr %229, i64 %231
  %233 = load float, ptr %232, align 4, !tbaa !12
  store float %233, ptr %57, align 4, !tbaa !12
  %234 = load float, ptr %56, align 4, !tbaa !12
  %235 = load float, ptr %57, align 4, !tbaa !12
  %236 = fcmp ole float %234, %235
  br i1 %236, label %237, label %239

237:                                              ; preds = %227
  %238 = load float, ptr %56, align 4, !tbaa !12
  br label %241

239:                                              ; preds = %227
  %240 = load float, ptr %57, align 4, !tbaa !12
  br label %241

241:                                              ; preds = %239, %237
  %242 = phi float [ %238, %237 ], [ %240, %239 ]
  store float %242, ptr %60, align 4, !tbaa !12
  %243 = load float, ptr %61, align 4, !tbaa !12
  store float %243, ptr %56, align 4, !tbaa !12
  %244 = load ptr, ptr %32, align 8, !tbaa !5
  %245 = load i32, ptr %63, align 4, !tbaa !9
  %246 = sext i32 %245 to i64
  %247 = getelementptr inbounds float, ptr %244, i64 %246
  %248 = load float, ptr %247, align 4, !tbaa !12
  store float %248, ptr %57, align 4, !tbaa !12
  %249 = load float, ptr %56, align 4, !tbaa !12
  %250 = load float, ptr %57, align 4, !tbaa !12
  %251 = fcmp oge float %249, %250
  br i1 %251, label %252, label %254

252:                                              ; preds = %241
  %253 = load float, ptr %56, align 4, !tbaa !12
  br label %256

254:                                              ; preds = %241
  %255 = load float, ptr %57, align 4, !tbaa !12
  br label %256

256:                                              ; preds = %254, %252
  %257 = phi float [ %253, %252 ], [ %255, %254 ]
  store float %257, ptr %61, align 4, !tbaa !12
  br label %258

258:                                              ; preds = %256
  %259 = load i32, ptr %63, align 4, !tbaa !9
  %260 = add nsw i32 %259, 1
  store i32 %260, ptr %63, align 4, !tbaa !9
  br label %223, !llvm.loop !14

261:                                              ; preds = %223
  %262 = load float, ptr %60, align 4, !tbaa !12
  %263 = fcmp ole float %262, 0.000000e+00
  br i1 %263, label %264, label %266

264:                                              ; preds = %261
  %265 = load ptr, ptr %42, align 8, !tbaa !5
  store i32 -11, ptr %265, align 4, !tbaa !9
  br label %292

266:                                              ; preds = %261
  %267 = load ptr, ptr %24, align 8, !tbaa !5
  %268 = load i32, ptr %267, align 4, !tbaa !9
  %269 = icmp sgt i32 %268, 0
  br i1 %269, label %270, label %290

270:                                              ; preds = %266
  %271 = load float, ptr %60, align 4, !tbaa !12
  %272 = load float, ptr %74, align 4, !tbaa !12
  %273 = fcmp oge float %271, %272
  br i1 %273, label %274, label %276

274:                                              ; preds = %270
  %275 = load float, ptr %60, align 4, !tbaa !12
  br label %278

276:                                              ; preds = %270
  %277 = load float, ptr %74, align 4, !tbaa !12
  br label %278

278:                                              ; preds = %276, %274
  %279 = phi float [ %275, %274 ], [ %277, %276 ]
  %280 = load float, ptr %61, align 4, !tbaa !12
  %281 = load float, ptr %72, align 4, !tbaa !12
  %282 = fcmp ole float %280, %281
  br i1 %282, label %283, label %285

283:                                              ; preds = %278
  %284 = load float, ptr %61, align 4, !tbaa !12
  br label %287

285:                                              ; preds = %278
  %286 = load float, ptr %72, align 4, !tbaa !12
  br label %287

287:                                              ; preds = %285, %283
  %288 = phi float [ %284, %283 ], [ %286, %285 ]
  %289 = fdiv float %279, %288
  store float %289, ptr %64, align 4, !tbaa !12
  br label %291

290:                                              ; preds = %266
  store float 1.000000e+00, ptr %64, align 4, !tbaa !12
  br label %291

291:                                              ; preds = %290, %287
  br label %292

292:                                              ; preds = %291, %264
  br label %293

293:                                              ; preds = %292, %216
  %294 = load ptr, ptr %42, align 8, !tbaa !5
  %295 = load i32, ptr %294, align 4, !tbaa !9
  %296 = icmp eq i32 %295, 0
  br i1 %296, label %297, label %329

297:                                              ; preds = %293
  %298 = load ptr, ptr %34, align 8, !tbaa !5
  %299 = load i32, ptr %298, align 4, !tbaa !9
  %300 = load ptr, ptr %24, align 8, !tbaa !5
  %301 = load i32, ptr %300, align 4, !tbaa !9
  %302 = icmp sge i32 1, %301
  br i1 %302, label %303, label %304

303:                                              ; preds = %297
  br label %307

304:                                              ; preds = %297
  %305 = load ptr, ptr %24, align 8, !tbaa !5
  %306 = load i32, ptr %305, align 4, !tbaa !9
  br label %307

307:                                              ; preds = %304, %303
  %308 = phi i32 [ 1, %303 ], [ %306, %304 ]
  %309 = icmp slt i32 %299, %308
  br i1 %309, label %310, label %312

310:                                              ; preds = %307
  %311 = load ptr, ptr %42, align 8, !tbaa !5
  store i32 -13, ptr %311, align 4, !tbaa !9
  br label %328

312:                                              ; preds = %307
  %313 = load ptr, ptr %36, align 8, !tbaa !5
  %314 = load i32, ptr %313, align 4, !tbaa !9
  %315 = load ptr, ptr %24, align 8, !tbaa !5
  %316 = load i32, ptr %315, align 4, !tbaa !9
  %317 = icmp sge i32 1, %316
  br i1 %317, label %318, label %319

318:                                              ; preds = %312
  br label %322

319:                                              ; preds = %312
  %320 = load ptr, ptr %24, align 8, !tbaa !5
  %321 = load i32, ptr %320, align 4, !tbaa !9
  br label %322

322:                                              ; preds = %319, %318
  %323 = phi i32 [ 1, %318 ], [ %321, %319 ]
  %324 = icmp slt i32 %314, %323
  br i1 %324, label %325, label %327

325:                                              ; preds = %322
  %326 = load ptr, ptr %42, align 8, !tbaa !5
  store i32 -15, ptr %326, align 4, !tbaa !9
  br label %327

327:                                              ; preds = %325, %322
  br label %328

328:                                              ; preds = %327, %310
  br label %329

329:                                              ; preds = %328, %293
  br label %330

330:                                              ; preds = %329, %214
  br label %331

331:                                              ; preds = %330, %201
  br label %332

332:                                              ; preds = %331, %192
  br label %333

333:                                              ; preds = %332, %183
  br label %334

334:                                              ; preds = %333, %177
  br label %335

335:                                              ; preds = %334, %171
  br label %336

336:                                              ; preds = %335, %165
  br label %337

337:                                              ; preds = %336, %156
  %338 = load ptr, ptr %42, align 8, !tbaa !5
  %339 = load i32, ptr %338, align 4, !tbaa !9
  %340 = icmp ne i32 %339, 0
  br i1 %340, label %341, label %346

341:                                              ; preds = %337
  %342 = load ptr, ptr %42, align 8, !tbaa !5
  %343 = load i32, ptr %342, align 4, !tbaa !9
  %344 = sub nsw i32 0, %343
  store i32 %344, ptr %51, align 4, !tbaa !9
  %345 = call i32 @xerbla_(ptr noundef @.str.7, ptr noundef %51, i32 noundef 6)
  store i32 1, ptr %75, align 4
  br label %770

346:                                              ; preds = %337
  %347 = load i32, ptr %66, align 4, !tbaa !9
  %348 = icmp ne i32 %347, 0
  br i1 %348, label %349, label %377

349:                                              ; preds = %346
  %350 = load ptr, ptr %23, align 8, !tbaa !5
  %351 = load ptr, ptr %24, align 8, !tbaa !5
  %352 = load ptr, ptr %25, align 8, !tbaa !5
  %353 = load ptr, ptr %27, align 8, !tbaa !5
  %354 = load i32, ptr %44, align 4, !tbaa !9
  %355 = sext i32 %354 to i64
  %356 = getelementptr inbounds %struct.complex, ptr %353, i64 %355
  %357 = load ptr, ptr %28, align 8, !tbaa !5
  %358 = load ptr, ptr %32, align 8, !tbaa !5
  %359 = getelementptr inbounds float, ptr %358, i64 1
  call void @cpbequ_(ptr noundef %350, ptr noundef %351, ptr noundef %352, ptr noundef %356, ptr noundef %357, ptr noundef %359, ptr noundef %64, ptr noundef %59, ptr noundef %73)
  %360 = load i32, ptr %73, align 4, !tbaa !9
  %361 = icmp eq i32 %360, 0
  br i1 %361, label %362, label %376

362:                                              ; preds = %349
  %363 = load ptr, ptr %23, align 8, !tbaa !5
  %364 = load ptr, ptr %24, align 8, !tbaa !5
  %365 = load ptr, ptr %25, align 8, !tbaa !5
  %366 = load ptr, ptr %27, align 8, !tbaa !5
  %367 = load i32, ptr %44, align 4, !tbaa !9
  %368 = sext i32 %367 to i64
  %369 = getelementptr inbounds %struct.complex, ptr %366, i64 %368
  %370 = load ptr, ptr %28, align 8, !tbaa !5
  %371 = load ptr, ptr %32, align 8, !tbaa !5
  %372 = getelementptr inbounds float, ptr %371, i64 1
  %373 = load ptr, ptr %31, align 8, !tbaa !5
  call void @claqhb_(ptr noundef %363, ptr noundef %364, ptr noundef %365, ptr noundef %369, ptr noundef %370, ptr noundef %372, ptr noundef %64, ptr noundef %59, ptr noundef %373)
  %374 = load ptr, ptr %31, align 8, !tbaa !5
  %375 = call i32 @lsame_(ptr noundef %374, ptr noundef @.str.3)
  store i32 %375, ptr %67, align 4, !tbaa !9
  br label %376

376:                                              ; preds = %362, %349
  br label %377

377:                                              ; preds = %376, %346
  %378 = load i32, ptr %67, align 4, !tbaa !9
  %379 = icmp ne i32 %378, 0
  br i1 %379, label %380, label %454

380:                                              ; preds = %377
  %381 = load ptr, ptr %26, align 8, !tbaa !5
  %382 = load i32, ptr %381, align 4, !tbaa !9
  store i32 %382, ptr %51, align 4, !tbaa !9
  store i32 1, ptr %63, align 4, !tbaa !9
  br label %383

383:                                              ; preds = %450, %380
  %384 = load i32, ptr %63, align 4, !tbaa !9
  %385 = load i32, ptr %51, align 4, !tbaa !9
  %386 = icmp sle i32 %384, %385
  br i1 %386, label %387, label %453

387:                                              ; preds = %383
  %388 = load ptr, ptr %24, align 8, !tbaa !5
  %389 = load i32, ptr %388, align 4, !tbaa !9
  store i32 %389, ptr %52, align 4, !tbaa !9
  store i32 1, ptr %62, align 4, !tbaa !9
  br label %390

390:                                              ; preds = %446, %387
  %391 = load i32, ptr %62, align 4, !tbaa !9
  %392 = load i32, ptr %52, align 4, !tbaa !9
  %393 = icmp sle i32 %391, %392
  br i1 %393, label %394, label %449

394:                                              ; preds = %390
  %395 = load i32, ptr %62, align 4, !tbaa !9
  %396 = load i32, ptr %63, align 4, !tbaa !9
  %397 = load i32, ptr %47, align 4, !tbaa !9
  %398 = mul nsw i32 %396, %397
  %399 = add nsw i32 %395, %398
  store i32 %399, ptr %53, align 4, !tbaa !9
  %400 = load i32, ptr %62, align 4, !tbaa !9
  store i32 %400, ptr %54, align 4, !tbaa !9
  %401 = load i32, ptr %62, align 4, !tbaa !9
  %402 = load i32, ptr %63, align 4, !tbaa !9
  %403 = load i32, ptr %47, align 4, !tbaa !9
  %404 = mul nsw i32 %402, %403
  %405 = add nsw i32 %401, %404
  store i32 %405, ptr %55, align 4, !tbaa !9
  %406 = load ptr, ptr %32, align 8, !tbaa !5
  %407 = load i32, ptr %54, align 4, !tbaa !9
  %408 = sext i32 %407 to i64
  %409 = getelementptr inbounds float, ptr %406, i64 %408
  %410 = load float, ptr %409, align 4, !tbaa !12
  %411 = load ptr, ptr %33, align 8, !tbaa !5
  %412 = load i32, ptr %55, align 4, !tbaa !9
  %413 = sext i32 %412 to i64
  %414 = getelementptr inbounds %struct.complex, ptr %411, i64 %413
  %415 = getelementptr inbounds %struct.complex, ptr %414, i32 0, i32 0
  %416 = load float, ptr %415, align 4, !tbaa !16
  %417 = fmul float %410, %416
  %418 = getelementptr inbounds %struct.complex, ptr %58, i32 0, i32 0
  store float %417, ptr %418, align 4, !tbaa !16
  %419 = load ptr, ptr %32, align 8, !tbaa !5
  %420 = load i32, ptr %54, align 4, !tbaa !9
  %421 = sext i32 %420 to i64
  %422 = getelementptr inbounds float, ptr %419, i64 %421
  %423 = load float, ptr %422, align 4, !tbaa !12
  %424 = load ptr, ptr %33, align 8, !tbaa !5
  %425 = load i32, ptr %55, align 4, !tbaa !9
  %426 = sext i32 %425 to i64
  %427 = getelementptr inbounds %struct.complex, ptr %424, i64 %426
  %428 = getelementptr inbounds %struct.complex, ptr %427, i32 0, i32 1
  %429 = load float, ptr %428, align 4, !tbaa !18
  %430 = fmul float %423, %429
  %431 = getelementptr inbounds %struct.complex, ptr %58, i32 0, i32 1
  store float %430, ptr %431, align 4, !tbaa !18
  %432 = getelementptr inbounds %struct.complex, ptr %58, i32 0, i32 0
  %433 = load float, ptr %432, align 4, !tbaa !16
  %434 = load ptr, ptr %33, align 8, !tbaa !5
  %435 = load i32, ptr %53, align 4, !tbaa !9
  %436 = sext i32 %435 to i64
  %437 = getelementptr inbounds %struct.complex, ptr %434, i64 %436
  %438 = getelementptr inbounds %struct.complex, ptr %437, i32 0, i32 0
  store float %433, ptr %438, align 4, !tbaa !16
  %439 = getelementptr inbounds %struct.complex, ptr %58, i32 0, i32 1
  %440 = load float, ptr %439, align 4, !tbaa !18
  %441 = load ptr, ptr %33, align 8, !tbaa !5
  %442 = load i32, ptr %53, align 4, !tbaa !9
  %443 = sext i32 %442 to i64
  %444 = getelementptr inbounds %struct.complex, ptr %441, i64 %443
  %445 = getelementptr inbounds %struct.complex, ptr %444, i32 0, i32 1
  store float %440, ptr %445, align 4, !tbaa !18
  br label %446

446:                                              ; preds = %394
  %447 = load i32, ptr %62, align 4, !tbaa !9
  %448 = add nsw i32 %447, 1
  store i32 %448, ptr %62, align 4, !tbaa !9
  br label %390, !llvm.loop !19

449:                                              ; preds = %390
  br label %450

450:                                              ; preds = %449
  %451 = load i32, ptr %63, align 4, !tbaa !9
  %452 = add nsw i32 %451, 1
  store i32 %452, ptr %63, align 4, !tbaa !9
  br label %383, !llvm.loop !20

453:                                              ; preds = %383
  br label %454

454:                                              ; preds = %453, %377
  %455 = load i32, ptr %71, align 4, !tbaa !9
  %456 = icmp ne i32 %455, 0
  br i1 %456, label %460, label %457

457:                                              ; preds = %454
  %458 = load i32, ptr %66, align 4, !tbaa !9
  %459 = icmp ne i32 %458, 0
  br i1 %459, label %460, label %579

460:                                              ; preds = %457, %454
  %461 = load i32, ptr %68, align 4, !tbaa !9
  %462 = icmp ne i32 %461, 0
  br i1 %462, label %463, label %518

463:                                              ; preds = %460
  %464 = load ptr, ptr %24, align 8, !tbaa !5
  %465 = load i32, ptr %464, align 4, !tbaa !9
  store i32 %465, ptr %51, align 4, !tbaa !9
  store i32 1, ptr %63, align 4, !tbaa !9
  br label %466

466:                                              ; preds = %514, %463
  %467 = load i32, ptr %63, align 4, !tbaa !9
  %468 = load i32, ptr %51, align 4, !tbaa !9
  %469 = icmp sle i32 %467, %468
  br i1 %469, label %470, label %517

470:                                              ; preds = %466
  %471 = load i32, ptr %63, align 4, !tbaa !9
  %472 = load ptr, ptr %25, align 8, !tbaa !5
  %473 = load i32, ptr %472, align 4, !tbaa !9
  %474 = sub nsw i32 %471, %473
  store i32 %474, ptr %52, align 4, !tbaa !9
  %475 = load i32, ptr %52, align 4, !tbaa !9
  %476 = icmp sge i32 %475, 1
  br i1 %476, label %477, label %479

477:                                              ; preds = %470
  %478 = load i32, ptr %52, align 4, !tbaa !9
  br label %480

479:                                              ; preds = %470
  br label %480

480:                                              ; preds = %479, %477
  %481 = phi i32 [ %478, %477 ], [ 1, %479 ]
  store i32 %481, ptr %69, align 4, !tbaa !9
  %482 = load i32, ptr %63, align 4, !tbaa !9
  %483 = load i32, ptr %69, align 4, !tbaa !9
  %484 = sub nsw i32 %482, %483
  %485 = add nsw i32 %484, 1
  store i32 %485, ptr %52, align 4, !tbaa !9
  %486 = load ptr, ptr %27, align 8, !tbaa !5
  %487 = load ptr, ptr %25, align 8, !tbaa !5
  %488 = load i32, ptr %487, align 4, !tbaa !9
  %489 = add nsw i32 %488, 1
  %490 = load i32, ptr %63, align 4, !tbaa !9
  %491 = sub nsw i32 %489, %490
  %492 = load i32, ptr %69, align 4, !tbaa !9
  %493 = add nsw i32 %491, %492
  %494 = load i32, ptr %63, align 4, !tbaa !9
  %495 = load i32, ptr %43, align 4, !tbaa !9
  %496 = mul nsw i32 %494, %495
  %497 = add nsw i32 %493, %496
  %498 = sext i32 %497 to i64
  %499 = getelementptr inbounds %struct.complex, ptr %486, i64 %498
  %500 = load ptr, ptr %29, align 8, !tbaa !5
  %501 = load ptr, ptr %25, align 8, !tbaa !5
  %502 = load i32, ptr %501, align 4, !tbaa !9
  %503 = add nsw i32 %502, 1
  %504 = load i32, ptr %63, align 4, !tbaa !9
  %505 = sub nsw i32 %503, %504
  %506 = load i32, ptr %69, align 4, !tbaa !9
  %507 = add nsw i32 %505, %506
  %508 = load i32, ptr %63, align 4, !tbaa !9
  %509 = load i32, ptr %45, align 4, !tbaa !9
  %510 = mul nsw i32 %508, %509
  %511 = add nsw i32 %507, %510
  %512 = sext i32 %511 to i64
  %513 = getelementptr inbounds %struct.complex, ptr %500, i64 %512
  call void @ccopy_(ptr noundef %52, ptr noundef %499, ptr noundef @c__1, ptr noundef %513, ptr noundef @c__1)
  br label %514

514:                                              ; preds = %480
  %515 = load i32, ptr %63, align 4, !tbaa !9
  %516 = add nsw i32 %515, 1
  store i32 %516, ptr %63, align 4, !tbaa !9
  br label %466, !llvm.loop !21

517:                                              ; preds = %466
  br label %563

518:                                              ; preds = %460
  %519 = load ptr, ptr %24, align 8, !tbaa !5
  %520 = load i32, ptr %519, align 4, !tbaa !9
  store i32 %520, ptr %51, align 4, !tbaa !9
  store i32 1, ptr %63, align 4, !tbaa !9
  br label %521

521:                                              ; preds = %559, %518
  %522 = load i32, ptr %63, align 4, !tbaa !9
  %523 = load i32, ptr %51, align 4, !tbaa !9
  %524 = icmp sle i32 %522, %523
  br i1 %524, label %525, label %562

525:                                              ; preds = %521
  %526 = load i32, ptr %63, align 4, !tbaa !9
  %527 = load ptr, ptr %25, align 8, !tbaa !5
  %528 = load i32, ptr %527, align 4, !tbaa !9
  %529 = add nsw i32 %526, %528
  store i32 %529, ptr %52, align 4, !tbaa !9
  %530 = load i32, ptr %52, align 4, !tbaa !9
  %531 = load ptr, ptr %24, align 8, !tbaa !5
  %532 = load i32, ptr %531, align 4, !tbaa !9
  %533 = icmp sle i32 %530, %532
  br i1 %533, label %534, label %536

534:                                              ; preds = %525
  %535 = load i32, ptr %52, align 4, !tbaa !9
  br label %539

536:                                              ; preds = %525
  %537 = load ptr, ptr %24, align 8, !tbaa !5
  %538 = load i32, ptr %537, align 4, !tbaa !9
  br label %539

539:                                              ; preds = %536, %534
  %540 = phi i32 [ %535, %534 ], [ %538, %536 ]
  store i32 %540, ptr %70, align 4, !tbaa !9
  %541 = load i32, ptr %70, align 4, !tbaa !9
  %542 = load i32, ptr %63, align 4, !tbaa !9
  %543 = sub nsw i32 %541, %542
  %544 = add nsw i32 %543, 1
  store i32 %544, ptr %52, align 4, !tbaa !9
  %545 = load ptr, ptr %27, align 8, !tbaa !5
  %546 = load i32, ptr %63, align 4, !tbaa !9
  %547 = load i32, ptr %43, align 4, !tbaa !9
  %548 = mul nsw i32 %546, %547
  %549 = add nsw i32 %548, 1
  %550 = sext i32 %549 to i64
  %551 = getelementptr inbounds %struct.complex, ptr %545, i64 %550
  %552 = load ptr, ptr %29, align 8, !tbaa !5
  %553 = load i32, ptr %63, align 4, !tbaa !9
  %554 = load i32, ptr %45, align 4, !tbaa !9
  %555 = mul nsw i32 %553, %554
  %556 = add nsw i32 %555, 1
  %557 = sext i32 %556 to i64
  %558 = getelementptr inbounds %struct.complex, ptr %552, i64 %557
  call void @ccopy_(ptr noundef %52, ptr noundef %551, ptr noundef @c__1, ptr noundef %558, ptr noundef @c__1)
  br label %559

559:                                              ; preds = %539
  %560 = load i32, ptr %63, align 4, !tbaa !9
  %561 = add nsw i32 %560, 1
  store i32 %561, ptr %63, align 4, !tbaa !9
  br label %521, !llvm.loop !22

562:                                              ; preds = %521
  br label %563

563:                                              ; preds = %562, %517
  %564 = load ptr, ptr %23, align 8, !tbaa !5
  %565 = load ptr, ptr %24, align 8, !tbaa !5
  %566 = load ptr, ptr %25, align 8, !tbaa !5
  %567 = load ptr, ptr %29, align 8, !tbaa !5
  %568 = load i32, ptr %46, align 4, !tbaa !9
  %569 = sext i32 %568 to i64
  %570 = getelementptr inbounds %struct.complex, ptr %567, i64 %569
  %571 = load ptr, ptr %30, align 8, !tbaa !5
  %572 = load ptr, ptr %42, align 8, !tbaa !5
  call void @cpbtrf_(ptr noundef %564, ptr noundef %565, ptr noundef %566, ptr noundef %570, ptr noundef %571, ptr noundef %572)
  %573 = load ptr, ptr %42, align 8, !tbaa !5
  %574 = load i32, ptr %573, align 4, !tbaa !9
  %575 = icmp sgt i32 %574, 0
  br i1 %575, label %576, label %578

576:                                              ; preds = %563
  %577 = load ptr, ptr %37, align 8, !tbaa !5
  store float 0.000000e+00, ptr %577, align 4, !tbaa !12
  store i32 1, ptr %75, align 4
  br label %770

578:                                              ; preds = %563
  br label %579

579:                                              ; preds = %578, %457
  %580 = load ptr, ptr %23, align 8, !tbaa !5
  %581 = load ptr, ptr %24, align 8, !tbaa !5
  %582 = load ptr, ptr %25, align 8, !tbaa !5
  %583 = load ptr, ptr %27, align 8, !tbaa !5
  %584 = load i32, ptr %44, align 4, !tbaa !9
  %585 = sext i32 %584 to i64
  %586 = getelementptr inbounds %struct.complex, ptr %583, i64 %585
  %587 = load ptr, ptr %28, align 8, !tbaa !5
  %588 = load ptr, ptr %41, align 8, !tbaa !5
  %589 = getelementptr inbounds float, ptr %588, i64 1
  %590 = call float @clanhb_(ptr noundef @.str.8, ptr noundef %580, ptr noundef %581, ptr noundef %582, ptr noundef %586, ptr noundef %587, ptr noundef %589)
  store float %590, ptr %65, align 4, !tbaa !12
  %591 = load ptr, ptr %23, align 8, !tbaa !5
  %592 = load ptr, ptr %24, align 8, !tbaa !5
  %593 = load ptr, ptr %25, align 8, !tbaa !5
  %594 = load ptr, ptr %29, align 8, !tbaa !5
  %595 = load i32, ptr %46, align 4, !tbaa !9
  %596 = sext i32 %595 to i64
  %597 = getelementptr inbounds %struct.complex, ptr %594, i64 %596
  %598 = load ptr, ptr %30, align 8, !tbaa !5
  %599 = load ptr, ptr %37, align 8, !tbaa !5
  %600 = load ptr, ptr %40, align 8, !tbaa !5
  %601 = getelementptr inbounds %struct.complex, ptr %600, i64 1
  %602 = load ptr, ptr %41, align 8, !tbaa !5
  %603 = getelementptr inbounds float, ptr %602, i64 1
  %604 = load ptr, ptr %42, align 8, !tbaa !5
  call void @cpbcon_(ptr noundef %591, ptr noundef %592, ptr noundef %593, ptr noundef %597, ptr noundef %598, ptr noundef %65, ptr noundef %599, ptr noundef %601, ptr noundef %603, ptr noundef %604)
  %605 = load ptr, ptr %24, align 8, !tbaa !5
  %606 = load ptr, ptr %26, align 8, !tbaa !5
  %607 = load ptr, ptr %33, align 8, !tbaa !5
  %608 = load i32, ptr %48, align 4, !tbaa !9
  %609 = sext i32 %608 to i64
  %610 = getelementptr inbounds %struct.complex, ptr %607, i64 %609
  %611 = load ptr, ptr %34, align 8, !tbaa !5
  %612 = load ptr, ptr %35, align 8, !tbaa !5
  %613 = load i32, ptr %50, align 4, !tbaa !9
  %614 = sext i32 %613 to i64
  %615 = getelementptr inbounds %struct.complex, ptr %612, i64 %614
  %616 = load ptr, ptr %36, align 8, !tbaa !5
  call void @clacpy_(ptr noundef @.str.9, ptr noundef %605, ptr noundef %606, ptr noundef %610, ptr noundef %611, ptr noundef %615, ptr noundef %616)
  %617 = load ptr, ptr %23, align 8, !tbaa !5
  %618 = load ptr, ptr %24, align 8, !tbaa !5
  %619 = load ptr, ptr %25, align 8, !tbaa !5
  %620 = load ptr, ptr %26, align 8, !tbaa !5
  %621 = load ptr, ptr %29, align 8, !tbaa !5
  %622 = load i32, ptr %46, align 4, !tbaa !9
  %623 = sext i32 %622 to i64
  %624 = getelementptr inbounds %struct.complex, ptr %621, i64 %623
  %625 = load ptr, ptr %30, align 8, !tbaa !5
  %626 = load ptr, ptr %35, align 8, !tbaa !5
  %627 = load i32, ptr %50, align 4, !tbaa !9
  %628 = sext i32 %627 to i64
  %629 = getelementptr inbounds %struct.complex, ptr %626, i64 %628
  %630 = load ptr, ptr %36, align 8, !tbaa !5
  %631 = load ptr, ptr %42, align 8, !tbaa !5
  call void @cpbtrs_(ptr noundef %617, ptr noundef %618, ptr noundef %619, ptr noundef %620, ptr noundef %624, ptr noundef %625, ptr noundef %629, ptr noundef %630, ptr noundef %631)
  %632 = load ptr, ptr %23, align 8, !tbaa !5
  %633 = load ptr, ptr %24, align 8, !tbaa !5
  %634 = load ptr, ptr %25, align 8, !tbaa !5
  %635 = load ptr, ptr %26, align 8, !tbaa !5
  %636 = load ptr, ptr %27, align 8, !tbaa !5
  %637 = load i32, ptr %44, align 4, !tbaa !9
  %638 = sext i32 %637 to i64
  %639 = getelementptr inbounds %struct.complex, ptr %636, i64 %638
  %640 = load ptr, ptr %28, align 8, !tbaa !5
  %641 = load ptr, ptr %29, align 8, !tbaa !5
  %642 = load i32, ptr %46, align 4, !tbaa !9
  %643 = sext i32 %642 to i64
  %644 = getelementptr inbounds %struct.complex, ptr %641, i64 %643
  %645 = load ptr, ptr %30, align 8, !tbaa !5
  %646 = load ptr, ptr %33, align 8, !tbaa !5
  %647 = load i32, ptr %48, align 4, !tbaa !9
  %648 = sext i32 %647 to i64
  %649 = getelementptr inbounds %struct.complex, ptr %646, i64 %648
  %650 = load ptr, ptr %34, align 8, !tbaa !5
  %651 = load ptr, ptr %35, align 8, !tbaa !5
  %652 = load i32, ptr %50, align 4, !tbaa !9
  %653 = sext i32 %652 to i64
  %654 = getelementptr inbounds %struct.complex, ptr %651, i64 %653
  %655 = load ptr, ptr %36, align 8, !tbaa !5
  %656 = load ptr, ptr %38, align 8, !tbaa !5
  %657 = getelementptr inbounds float, ptr %656, i64 1
  %658 = load ptr, ptr %39, align 8, !tbaa !5
  %659 = getelementptr inbounds float, ptr %658, i64 1
  %660 = load ptr, ptr %40, align 8, !tbaa !5
  %661 = getelementptr inbounds %struct.complex, ptr %660, i64 1
  %662 = load ptr, ptr %41, align 8, !tbaa !5
  %663 = getelementptr inbounds float, ptr %662, i64 1
  %664 = load ptr, ptr %42, align 8, !tbaa !5
  call void @cpbrfs_(ptr noundef %632, ptr noundef %633, ptr noundef %634, ptr noundef %635, ptr noundef %639, ptr noundef %640, ptr noundef %644, ptr noundef %645, ptr noundef %649, ptr noundef %650, ptr noundef %654, ptr noundef %655, ptr noundef %657, ptr noundef %659, ptr noundef %661, ptr noundef %663, ptr noundef %664)
  %665 = load i32, ptr %67, align 4, !tbaa !9
  %666 = icmp ne i32 %665, 0
  br i1 %666, label %667, label %759

667:                                              ; preds = %579
  %668 = load ptr, ptr %26, align 8, !tbaa !5
  %669 = load i32, ptr %668, align 4, !tbaa !9
  store i32 %669, ptr %51, align 4, !tbaa !9
  store i32 1, ptr %63, align 4, !tbaa !9
  br label %670

670:                                              ; preds = %737, %667
  %671 = load i32, ptr %63, align 4, !tbaa !9
  %672 = load i32, ptr %51, align 4, !tbaa !9
  %673 = icmp sle i32 %671, %672
  br i1 %673, label %674, label %740

674:                                              ; preds = %670
  %675 = load ptr, ptr %24, align 8, !tbaa !5
  %676 = load i32, ptr %675, align 4, !tbaa !9
  store i32 %676, ptr %52, align 4, !tbaa !9
  store i32 1, ptr %62, align 4, !tbaa !9
  br label %677

677:                                              ; preds = %733, %674
  %678 = load i32, ptr %62, align 4, !tbaa !9
  %679 = load i32, ptr %52, align 4, !tbaa !9
  %680 = icmp sle i32 %678, %679
  br i1 %680, label %681, label %736

681:                                              ; preds = %677
  %682 = load i32, ptr %62, align 4, !tbaa !9
  %683 = load i32, ptr %63, align 4, !tbaa !9
  %684 = load i32, ptr %49, align 4, !tbaa !9
  %685 = mul nsw i32 %683, %684
  %686 = add nsw i32 %682, %685
  store i32 %686, ptr %53, align 4, !tbaa !9
  %687 = load i32, ptr %62, align 4, !tbaa !9
  store i32 %687, ptr %54, align 4, !tbaa !9
  %688 = load i32, ptr %62, align 4, !tbaa !9
  %689 = load i32, ptr %63, align 4, !tbaa !9
  %690 = load i32, ptr %49, align 4, !tbaa !9
  %691 = mul nsw i32 %689, %690
  %692 = add nsw i32 %688, %691
  store i32 %692, ptr %55, align 4, !tbaa !9
  %693 = load ptr, ptr %32, align 8, !tbaa !5
  %694 = load i32, ptr %54, align 4, !tbaa !9
  %695 = sext i32 %694 to i64
  %696 = getelementptr inbounds float, ptr %693, i64 %695
  %697 = load float, ptr %696, align 4, !tbaa !12
  %698 = load ptr, ptr %35, align 8, !tbaa !5
  %699 = load i32, ptr %55, align 4, !tbaa !9
  %700 = sext i32 %699 to i64
  %701 = getelementptr inbounds %struct.complex, ptr %698, i64 %700
  %702 = getelementptr inbounds %struct.complex, ptr %701, i32 0, i32 0
  %703 = load float, ptr %702, align 4, !tbaa !16
  %704 = fmul float %697, %703
  %705 = getelementptr inbounds %struct.complex, ptr %58, i32 0, i32 0
  store float %704, ptr %705, align 4, !tbaa !16
  %706 = load ptr, ptr %32, align 8, !tbaa !5
  %707 = load i32, ptr %54, align 4, !tbaa !9
  %708 = sext i32 %707 to i64
  %709 = getelementptr inbounds float, ptr %706, i64 %708
  %710 = load float, ptr %709, align 4, !tbaa !12
  %711 = load ptr, ptr %35, align 8, !tbaa !5
  %712 = load i32, ptr %55, align 4, !tbaa !9
  %713 = sext i32 %712 to i64
  %714 = getelementptr inbounds %struct.complex, ptr %711, i64 %713
  %715 = getelementptr inbounds %struct.complex, ptr %714, i32 0, i32 1
  %716 = load float, ptr %715, align 4, !tbaa !18
  %717 = fmul float %710, %716
  %718 = getelementptr inbounds %struct.complex, ptr %58, i32 0, i32 1
  store float %717, ptr %718, align 4, !tbaa !18
  %719 = getelementptr inbounds %struct.complex, ptr %58, i32 0, i32 0
  %720 = load float, ptr %719, align 4, !tbaa !16
  %721 = load ptr, ptr %35, align 8, !tbaa !5
  %722 = load i32, ptr %53, align 4, !tbaa !9
  %723 = sext i32 %722 to i64
  %724 = getelementptr inbounds %struct.complex, ptr %721, i64 %723
  %725 = getelementptr inbounds %struct.complex, ptr %724, i32 0, i32 0
  store float %720, ptr %725, align 4, !tbaa !16
  %726 = getelementptr inbounds %struct.complex, ptr %58, i32 0, i32 1
  %727 = load float, ptr %726, align 4, !tbaa !18
  %728 = load ptr, ptr %35, align 8, !tbaa !5
  %729 = load i32, ptr %53, align 4, !tbaa !9
  %730 = sext i32 %729 to i64
  %731 = getelementptr inbounds %struct.complex, ptr %728, i64 %730
  %732 = getelementptr inbounds %struct.complex, ptr %731, i32 0, i32 1
  store float %727, ptr %732, align 4, !tbaa !18
  br label %733

733:                                              ; preds = %681
  %734 = load i32, ptr %62, align 4, !tbaa !9
  %735 = add nsw i32 %734, 1
  store i32 %735, ptr %62, align 4, !tbaa !9
  br label %677, !llvm.loop !23

736:                                              ; preds = %677
  br label %737

737:                                              ; preds = %736
  %738 = load i32, ptr %63, align 4, !tbaa !9
  %739 = add nsw i32 %738, 1
  store i32 %739, ptr %63, align 4, !tbaa !9
  br label %670, !llvm.loop !24

740:                                              ; preds = %670
  %741 = load ptr, ptr %26, align 8, !tbaa !5
  %742 = load i32, ptr %741, align 4, !tbaa !9
  store i32 %742, ptr %51, align 4, !tbaa !9
  store i32 1, ptr %63, align 4, !tbaa !9
  br label %743

743:                                              ; preds = %755, %740
  %744 = load i32, ptr %63, align 4, !tbaa !9
  %745 = load i32, ptr %51, align 4, !tbaa !9
  %746 = icmp sle i32 %744, %745
  br i1 %746, label %747, label %758

747:                                              ; preds = %743
  %748 = load float, ptr %64, align 4, !tbaa !12
  %749 = load ptr, ptr %38, align 8, !tbaa !5
  %750 = load i32, ptr %63, align 4, !tbaa !9
  %751 = sext i32 %750 to i64
  %752 = getelementptr inbounds float, ptr %749, i64 %751
  %753 = load float, ptr %752, align 4, !tbaa !12
  %754 = fdiv float %753, %748
  store float %754, ptr %752, align 4, !tbaa !12
  br label %755

755:                                              ; preds = %747
  %756 = load i32, ptr %63, align 4, !tbaa !9
  %757 = add nsw i32 %756, 1
  store i32 %757, ptr %63, align 4, !tbaa !9
  br label %743, !llvm.loop !25

758:                                              ; preds = %743
  br label %759

759:                                              ; preds = %758, %579
  %760 = load ptr, ptr %37, align 8, !tbaa !5
  %761 = load float, ptr %760, align 4, !tbaa !12
  %762 = call float @slamch_(ptr noundef @.str.10)
  %763 = fcmp olt float %761, %762
  br i1 %763, label %764, label %769

764:                                              ; preds = %759
  %765 = load ptr, ptr %24, align 8, !tbaa !5
  %766 = load i32, ptr %765, align 4, !tbaa !9
  %767 = add nsw i32 %766, 1
  %768 = load ptr, ptr %42, align 8, !tbaa !5
  store i32 %767, ptr %768, align 4, !tbaa !9
  br label %769

769:                                              ; preds = %764, %759
  store i32 1, ptr %75, align 4
  br label %770

770:                                              ; preds = %769, %576, %341
  call void @llvm.lifetime.end.p0(i64 4, ptr %74) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %73) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %72) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %71) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %70) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %69) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %68) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %67) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %66) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %65) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %64) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %63) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %62) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %61) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %60) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %59) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %56) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %54) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %53) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #3
  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 @cpbequ_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

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

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

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

declare void @cpbrfs_(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"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { nounwind }

!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 = !{!17, !13, i64 0}
!17 = !{!"", !13, i64 0, !13, i64 4}
!18 = !{!17, !13, i64 4}
!19 = distinct !{!19, !15}
!20 = distinct !{!20, !15}
!21 = distinct !{!21, !15}
!22 = distinct !{!22, !15}
!23 = distinct !{!23, !15}
!24 = distinct !{!24, !15}
!25 = distinct !{!25, !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 [13 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [7 x i8], align 1
@c__1 = external hidden global i32, align 4
@.str.8 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [8 x i8], align 1

; Function Attrs: nounwind uwtable
define dso_local void @cpbsvx_(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) local_unnamed_addr #0 {
  %22 = alloca i32, align 4
  %23 = alloca i32, align 4
  %24 = alloca float, align 4
  %25 = alloca float, align 4
  %26 = alloca float, align 4
  %27 = alloca i32, align 4
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %22) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %23) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %24) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %25) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %26) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %27) #4
  %28 = load i32, ptr %6, align 4, !tbaa !5
  %narrow = xor i32 %28, -1
  %29 = sext i32 %narrow to i64
  %30 = getelementptr inbounds %struct.complex, ptr %5, i64 %29
  %31 = load i32, ptr %8, align 4, !tbaa !5
  %narrow310 = xor i32 %31, -1
  %32 = sext i32 %narrow310 to i64
  %33 = getelementptr inbounds %struct.complex, ptr %7, i64 %32
  %34 = getelementptr inbounds i8, ptr %10, i64 -4
  %35 = load i32, ptr %12, align 4, !tbaa !5
  %narrow311 = xor i32 %35, -1
  %36 = sext i32 %narrow311 to i64
  %37 = getelementptr inbounds %struct.complex, ptr %11, i64 %36
  %38 = load i32, ptr %14, align 4, !tbaa !5
  %narrow312 = xor i32 %38, -1
  %39 = sext i32 %narrow312 to i64
  %40 = getelementptr inbounds %struct.complex, ptr %13, i64 %39
  %41 = getelementptr inbounds i8, ptr %16, i64 -4
  store i32 0, ptr %20, align 4, !tbaa !5
  %42 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str) #4
  %43 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.1) #4
  %44 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.2) #4
  %45 = icmp ne i32 %42, 0
  %46 = icmp ne i32 %43, 0
  %or.cond = select i1 %45, i1 true, i1 %46
  br i1 %or.cond, label %.thread, label %47

.thread:                                          ; preds = %21
  store i8 78, ptr %9, align 1, !tbaa !9
  br label %52

47:                                               ; preds = %21
  %48 = tail call i32 @lsame_(ptr noundef %9, ptr noundef nonnull @.str.3) #4
  %49 = tail call float @slamch_(ptr noundef nonnull @.str.4) #4
  %50 = fdiv float 1.000000e+00, %49
  %51 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.5) #4
  %.not = icmp eq i32 %51, 0
  br i1 %.not, label %.thread329.sink.split, label %52

52:                                               ; preds = %.thread, %47
  %.0324 = phi float [ undef, %.thread ], [ %49, %47 ]
  %.0282323 = phi float [ undef, %.thread ], [ %50, %47 ]
  %.0283322 = phi i32 [ 0, %.thread ], [ %48, %47 ]
  %.not297 = icmp eq i32 %44, 0
  br i1 %.not297, label %53, label %55

53:                                               ; preds = %52
  %54 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.6) #4
  %.not298 = icmp eq i32 %54, 0
  br i1 %.not298, label %.thread329.sink.split, label %55

55:                                               ; preds = %53, %52
  %56 = load i32, ptr %2, align 4, !tbaa !5
  %57 = icmp slt i32 %56, 0
  br i1 %57, label %.thread329.sink.split, label %58

58:                                               ; preds = %55
  %59 = load i32, ptr %3, align 4, !tbaa !5
  %60 = icmp slt i32 %59, 0
  br i1 %60, label %.thread329.sink.split, label %61

61:                                               ; preds = %58
  %62 = load i32, ptr %4, align 4, !tbaa !5
  %63 = icmp slt i32 %62, 0
  br i1 %63, label %.thread329.sink.split, label %64

64:                                               ; preds = %61
  %65 = load i32, ptr %6, align 4, !tbaa !5
  %.not299 = icmp sgt i32 %65, %59
  br i1 %.not299, label %66, label %.thread329.sink.split

66:                                               ; preds = %64
  %67 = load i32, ptr %8, align 4, !tbaa !5
  %.not300 = icmp sgt i32 %67, %59
  br i1 %.not300, label %68, label %.thread329.sink.split

68:                                               ; preds = %66
  %69 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.5) #4
  %70 = icmp eq i32 %69, 0
  %71 = icmp ne i32 %.0283322, 0
  %or.cond5 = select i1 %70, i1 true, i1 %71
  br i1 %or.cond5, label %74, label %72

72:                                               ; preds = %68
  %73 = tail call i32 @lsame_(ptr noundef %9, ptr noundef nonnull @.str) #4
  %.not301 = icmp eq i32 %73, 0
  br i1 %.not301, label %.thread329.sink.split, label %.thread325

74:                                               ; preds = %68
  br i1 %71, label %75, label %.thread325

75:                                               ; preds = %74
  %76 = load i32, ptr %2, align 4, !tbaa !5
  %.not302335 = icmp slt i32 %76, 1
  br i1 %.not302335, label %._crit_edge, label %.lr.ph.preheader

.lr.ph.preheader:                                 ; preds = %75
  %77 = zext nneg i32 %76 to i64
  %xtraiter = and i64 %77, 1
  %78 = icmp eq i32 %76, 1
  br i1 %78, label %._crit_edge.loopexit.unr-lcssa, label %.lr.ph.preheader.new

.lr.ph.preheader.new:                             ; preds = %.lr.ph.preheader
  %unroll_iter = and i64 %77, 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 ]
  %.0288337 = phi float [ 0.000000e+00, %.lr.ph.preheader.new ], [ %90, %.lr.ph ]
  %.0289336 = phi float [ %.0282323, %.lr.ph.preheader.new ], [ %88, %.lr.ph ]
  %niter = phi i64 [ 0, %.lr.ph.preheader.new ], [ %niter.next.1, %.lr.ph ]
  %79 = getelementptr inbounds float, ptr %34, i64 %indvars.iv
  %80 = load float, ptr %79, align 4, !tbaa !10
  %81 = fcmp ole float %.0289336, %80
  %82 = select i1 %81, float %.0289336, float %80
  %83 = fcmp oge float %.0288337, %80
  %84 = select i1 %83, float %.0288337, float %80
  %85 = getelementptr float, ptr %10, i64 %indvars.iv
  %86 = load float, ptr %85, align 4, !tbaa !10
  %87 = fcmp ole float %82, %86
  %88 = select i1 %87, float %82, float %86
  %89 = fcmp oge float %84, %86
  %90 = select i1 %89, float %84, float %86
  %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
  %.lcssa466.ph = phi float [ poison, %.lr.ph.preheader ], [ %88, %.lr.ph ]
  %.lcssa465.ph = phi float [ poison, %.lr.ph.preheader ], [ %90, %.lr.ph ]
  %indvars.iv.unr = phi i64 [ 1, %.lr.ph.preheader ], [ %indvars.iv.next.1, %.lr.ph ]
  %.0288337.unr = phi float [ 0.000000e+00, %.lr.ph.preheader ], [ %90, %.lr.ph ]
  %.0289336.unr = phi float [ %.0282323, %.lr.ph.preheader ], [ %88, %.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
  %91 = getelementptr inbounds float, ptr %34, i64 %indvars.iv.unr
  %92 = load float, ptr %91, align 4, !tbaa !10
  %93 = fcmp ole float %.0289336.unr, %92
  %94 = select i1 %93, float %.0289336.unr, float %92
  %95 = fcmp oge float %.0288337.unr, %92
  %96 = select i1 %95, float %.0288337.unr, float %92
  br label %._crit_edge

._crit_edge:                                      ; preds = %.lr.ph.epil, %._crit_edge.loopexit.unr-lcssa, %75
  %.0289.lcssa = phi float [ %.0282323, %75 ], [ %.lcssa466.ph, %._crit_edge.loopexit.unr-lcssa ], [ %94, %.lr.ph.epil ]
  %.0288.lcssa = phi float [ 0.000000e+00, %75 ], [ %.lcssa465.ph, %._crit_edge.loopexit.unr-lcssa ], [ %96, %.lr.ph.epil ]
  %97 = fcmp ugt float %.0289.lcssa, 0.000000e+00
  br i1 %97, label %98, label %.thread329.sink.split

98:                                               ; preds = %._crit_edge
  %99 = icmp sgt i32 %76, 0
  br i1 %99, label %100, label %106

100:                                              ; preds = %98
  %101 = fcmp oge float %.0289.lcssa, %.0324
  %102 = select i1 %101, float %.0289.lcssa, float %.0324
  %103 = fcmp ole float %.0288.lcssa, %.0282323
  %104 = select i1 %103, float %.0288.lcssa, float %.0282323
  %105 = fdiv float %102, %104
  store float %105, ptr %25, align 4, !tbaa !10
  br label %.thread325

106:                                              ; preds = %98
  store float 1.000000e+00, ptr %25, align 4, !tbaa !10
  br label %.thread325

.thread325:                                       ; preds = %72, %106, %100, %74
  %.pr = load i32, ptr %20, align 4, !tbaa !5
  %107 = icmp eq i32 %.pr, 0
  br i1 %107, label %108, label %.thread329

108:                                              ; preds = %.thread325
  %109 = load i32, ptr %12, align 4, !tbaa !5
  %110 = load i32, ptr %2, align 4, !tbaa !5
  %spec.select = tail call i32 @llvm.smax.i32(i32 %110, i32 1)
  %111 = icmp slt i32 %109, %spec.select
  br i1 %111, label %.thread329.sink.split, label %112

112:                                              ; preds = %108
  %113 = load i32, ptr %14, align 4, !tbaa !5
  %114 = icmp slt i32 %113, %spec.select
  br i1 %114, label %.thread329.sink.split, label %118

.thread329.sink.split:                            ; preds = %112, %108, %._crit_edge, %72, %66, %64, %61, %58, %55, %53, %47
  %.sink = phi i32 [ -1, %47 ], [ -2, %53 ], [ -3, %55 ], [ -4, %58 ], [ -5, %61 ], [ -7, %64 ], [ -9, %66 ], [ -10, %72 ], [ -11, %._crit_edge ], [ -13, %108 ], [ -15, %112 ]
  store i32 %.sink, ptr %20, align 4, !tbaa !5
  br label %.thread329

.thread329:                                       ; preds = %.thread329.sink.split, %.thread325
  %115 = phi i32 [ %.pr, %.thread325 ], [ %.sink, %.thread329.sink.split ]
  %116 = sub nsw i32 0, %115
  store i32 %116, ptr %22, align 4, !tbaa !5
  %117 = call i32 @xerbla_(ptr noundef nonnull @.str.7, ptr noundef nonnull %22, i32 noundef 6) #4
  br label %270

118:                                              ; preds = %112
  br i1 %46, label %119, label %124

119:                                              ; preds = %118
  call void @cpbequ_(ptr noundef %1, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %10, ptr noundef nonnull %25, ptr noundef nonnull %24, ptr noundef nonnull %27) #4
  %120 = load i32, ptr %27, align 4, !tbaa !5
  %121 = icmp eq i32 %120, 0
  br i1 %121, label %122, label %124

122:                                              ; preds = %119
  call void @claqhb_(ptr noundef %1, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %10, ptr noundef nonnull %25, ptr noundef nonnull %24, ptr noundef %9) #4
  %123 = call i32 @lsame_(ptr noundef %9, ptr noundef nonnull @.str.3) #4
  br label %124

124:                                              ; preds = %119, %122, %118
  %.1 = phi i32 [ %123, %122 ], [ %.0283322, %119 ], [ %.0283322, %118 ]
  %.not304 = icmp eq i32 %.1, 0
  br i1 %.not304, label %172, label %125

125:                                              ; preds = %124
  %126 = load i32, ptr %4, align 4, !tbaa !5
  %.not305345 = icmp slt i32 %126, 1
  br i1 %.not305345, label %.loopexit334, label %.lr.ph348

.lr.ph348:                                        ; preds = %125
  %127 = load i32, ptr %2, align 4, !tbaa !5
  %.not316340 = icmp slt i32 %127, 1
  br i1 %.not316340, label %.loopexit334, label %.lr.ph343.preheader

.lr.ph343.preheader:                              ; preds = %.lr.ph348
  %128 = add nuw i32 %127, 1
  %129 = sext i32 %35 to i64
  %130 = add nuw i32 %126, 1
  %wide.trip.count389 = zext i32 %130 to i64
  %wide.trip.count384 = zext i32 %128 to i64
  %131 = shl nsw i64 %129, 3
  %132 = shl nsw i64 %36, 3
  %133 = getelementptr i8, ptr %11, i64 %131
  %134 = getelementptr i8, ptr %133, i64 %132
  %scevgep = getelementptr i8, ptr %134, i64 8
  %135 = shl nuw nsw i64 %wide.trip.count389, 3
  %136 = add nsw i64 %135, -8
  %137 = mul i64 %136, %129
  %138 = shl nuw nsw i64 %wide.trip.count384, 3
  %139 = getelementptr i8, ptr %11, i64 %137
  %140 = getelementptr i8, ptr %139, i64 %132
  %scevgep421 = getelementptr i8, ptr %140, i64 %138
  %141 = shl nuw nsw i64 %wide.trip.count384, 2
  %142 = getelementptr i8, ptr %10, i64 %141
  %scevgep422 = getelementptr i8, ptr %142, i64 -4
  %143 = zext nneg i32 %127 to i64
  %144 = zext nneg i32 %127 to i64
  %min.iters.check = icmp eq i32 %127, 1
  %bound0 = icmp ult ptr %scevgep, %scevgep422
  %bound1 = icmp ugt ptr %scevgep421, %10
  %found.conflict = and i1 %bound0, %bound1
  %stride.check = icmp slt i32 %35, 0
  %145 = or i1 %found.conflict, %stride.check
  %n.vec = and i64 %143, 2147483646
  %ind.end = or i64 %143, 1
  %cmp.n = icmp eq i64 %n.vec, %143
  %146 = and i32 %127, 1
  %lcmp.mod470.not = icmp eq i32 %146, 0
  br label %.lr.ph343

.lr.ph343:                                        ; preds = %.lr.ph343.preheader, %._crit_edge344
  %indvars.iv386 = phi i64 [ 1, %.lr.ph343.preheader ], [ %indvars.iv.next387, %._crit_edge344 ]
  %147 = mul nsw i64 %indvars.iv386, %129
  %invariant.gep414 = getelementptr %struct.complex, ptr %37, i64 %147
  %brmerge = select i1 %min.iters.check, i1 true, i1 %145
  br i1 %brmerge, label %scalar.ph.preheader, label %vector.body

vector.body:                                      ; preds = %.lr.ph343, %vector.body
  %index = phi i64 [ %index.next, %vector.body ], [ 0, %.lr.ph343 ]
  %offset.idx = or disjoint i64 %index, 1
  %148 = getelementptr float, ptr %10, i64 %index
  %wide.load = load <2 x float>, ptr %148, align 4, !tbaa !10, !alias.scope !14
  %149 = getelementptr %struct.complex, ptr %invariant.gep414, i64 %offset.idx
  %150 = load <4 x float>, ptr %149, align 4, !tbaa !10
  %151 = 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> %151, %150
  store <4 x float> %interleaved.vec, ptr %149, align 4, !tbaa !10
  %index.next = add nuw i64 %index, 2
  %152 = icmp eq i64 %index.next, %n.vec
  br i1 %152, label %middle.block, label %vector.body, !llvm.loop !17

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

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

scalar.ph.prol:                                   ; preds = %scalar.ph.preheader
  %153 = getelementptr inbounds float, ptr %34, i64 %indvars.iv381.ph
  %154 = load float, ptr %153, align 4, !tbaa !10
  %gep415.prol = getelementptr %struct.complex, ptr %invariant.gep414, i64 %indvars.iv381.ph
  %155 = load <2 x float>, ptr %gep415.prol, align 4, !tbaa !10
  %156 = insertelement <2 x float> poison, float %154, i64 0
  %157 = shufflevector <2 x float> %156, <2 x float> poison, <2 x i32> zeroinitializer
  %158 = fmul <2 x float> %157, %155
  store <2 x float> %158, ptr %gep415.prol, align 4, !tbaa !10
  %indvars.iv.next382.prol = add nuw nsw i64 %indvars.iv381.ph, 1
  br label %scalar.ph.prol.loopexit

scalar.ph.prol.loopexit:                          ; preds = %scalar.ph.prol, %scalar.ph.preheader
  %indvars.iv381.unr = phi i64 [ %indvars.iv381.ph, %scalar.ph.preheader ], [ %indvars.iv.next382.prol, %scalar.ph.prol ]
  %159 = icmp eq i64 %indvars.iv381.ph, %144
  br i1 %159, label %._crit_edge344, label %scalar.ph.preheader.new

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

scalar.ph:                                        ; preds = %scalar.ph, %scalar.ph.preheader.new
  %indvars.iv381 = phi i64 [ %indvars.iv381.unr, %scalar.ph.preheader.new ], [ %indvars.iv.next382.1, %scalar.ph ]
  %160 = getelementptr inbounds float, ptr %34, i64 %indvars.iv381
  %161 = load float, ptr %160, align 4, !tbaa !10
  %gep415 = getelementptr %struct.complex, ptr %invariant.gep414, i64 %indvars.iv381
  %162 = load <2 x float>, ptr %gep415, align 4, !tbaa !10
  %163 = insertelement <2 x float> poison, float %161, i64 0
  %164 = shufflevector <2 x float> %163, <2 x float> poison, <2 x i32> zeroinitializer
  %165 = fmul <2 x float> %164, %162
  store <2 x float> %165, ptr %gep415, align 4, !tbaa !10
  %166 = getelementptr float, ptr %10, i64 %indvars.iv381
  %167 = load float, ptr %166, align 4, !tbaa !10
  %gep476 = getelementptr %struct.complex, ptr %invariant.gep475, i64 %indvars.iv381
  %168 = load <2 x float>, ptr %gep476, align 4, !tbaa !10
  %169 = insertelement <2 x float> poison, float %167, i64 0
  %170 = shufflevector <2 x float> %169, <2 x float> poison, <2 x i32> zeroinitializer
  %171 = fmul <2 x float> %170, %168
  store <2 x float> %171, ptr %gep476, align 4, !tbaa !10
  %indvars.iv.next382.1 = add nuw nsw i64 %indvars.iv381, 2
  %exitcond385.not.1 = icmp eq i64 %indvars.iv.next382.1, %wide.trip.count384
  br i1 %exitcond385.not.1, label %._crit_edge344, label %scalar.ph, !llvm.loop !20

._crit_edge344:                                   ; preds = %scalar.ph.prol.loopexit, %scalar.ph, %middle.block
  %indvars.iv.next387 = add nuw nsw i64 %indvars.iv386, 1
  %exitcond390.not = icmp eq i64 %indvars.iv.next387, %wide.trip.count389
  br i1 %exitcond390.not, label %.loopexit334, label %.lr.ph343, !llvm.loop !21

.loopexit334:                                     ; preds = %._crit_edge344, %.lr.ph348, %125
  %.lcssa = phi i32 [ undef, %125 ], [ %127, %.lr.ph348 ], [ %127, %._crit_edge344 ]
  store i32 %.lcssa, ptr %23, align 4, !tbaa !5
  br label %172

172:                                              ; preds = %.loopexit334, %124
  br i1 %or.cond, label %173, label %205

173:                                              ; preds = %172
  %174 = load i32, ptr %2, align 4, !tbaa !5
  br i1 %.not297, label %191, label %175

175:                                              ; preds = %173
  %.not309350 = icmp slt i32 %174, 1
  br i1 %.not309350, label %.loopexit332, label %.lr.ph353

.lr.ph353:                                        ; preds = %175, %.lr.ph353
  %.2351 = phi i32 [ %179, %.lr.ph353 ], [ 1, %175 ]
  %176 = load i32, ptr %3, align 4, !tbaa !5
  %177 = sub nsw i32 %.2351, %176
  %178 = call i32 @llvm.smax.i32(i32 %177, i32 1)
  %179 = add nuw i32 %.2351, 1
  %180 = sub i32 %179, %178
  store i32 %180, ptr %23, align 4, !tbaa !5
  %reass.sub = sub i32 %176, %.2351
  %181 = add i32 %reass.sub, 1
  %182 = add nsw i32 %181, %178
  %183 = mul nsw i32 %.2351, %28
  %184 = add nsw i32 %182, %183
  %185 = sext i32 %184 to i64
  %186 = getelementptr inbounds %struct.complex, ptr %30, i64 %185
  %187 = mul nsw i32 %.2351, %31
  %188 = add nsw i32 %182, %187
  %189 = sext i32 %188 to i64
  %190 = getelementptr inbounds %struct.complex, ptr %33, i64 %189
  call void @ccopy_(ptr noundef nonnull %23, ptr noundef %186, ptr noundef nonnull @c__1, ptr noundef %190, ptr noundef nonnull @c__1) #4
  %.not309.not = icmp slt i32 %.2351, %174
  br i1 %.not309.not, label %.lr.ph353, label %.loopexit332, !llvm.loop !22

191:                                              ; preds = %173
  %invariant.gep = getelementptr i8, ptr %30, i64 8
  %invariant.gep354 = getelementptr i8, ptr %33, i64 8
  %.not307356 = icmp slt i32 %174, 1
  br i1 %.not307356, label %.loopexit332, label %.lr.ph359.preheader

.lr.ph359.preheader:                              ; preds = %191
  %192 = sext i32 %28 to i64
  %193 = sext i32 %31 to i64
  %194 = zext nneg i32 %174 to i64
  br label %.lr.ph359

.lr.ph359:                                        ; preds = %.lr.ph359.preheader, %.lr.ph359
  %indvars.iv391 = phi i64 [ 1, %.lr.ph359.preheader ], [ %indvars.iv.next392, %.lr.ph359 ]
  %195 = load i32, ptr %3, align 4, !tbaa !5
  %196 = trunc nuw nsw i64 %indvars.iv391 to i32
  %197 = add nsw i32 %195, %196
  %198 = load i32, ptr %2, align 4, !tbaa !5
  %. = call i32 @llvm.smin.i32(i32 %197, i32 %198)
  %reass.sub374 = sub i32 %., %196
  %199 = add i32 %reass.sub374, 1
  store i32 %199, ptr %23, align 4, !tbaa !5
  %200 = mul nsw i64 %indvars.iv391, %192
  %gep = getelementptr %struct.complex, ptr %invariant.gep, i64 %200
  %201 = mul nsw i64 %indvars.iv391, %193
  %gep355 = getelementptr %struct.complex, ptr %invariant.gep354, i64 %201
  call void @ccopy_(ptr noundef nonnull %23, ptr noundef %gep, ptr noundef nonnull @c__1, ptr noundef %gep355, ptr noundef nonnull @c__1) #4
  %indvars.iv.next392 = add nuw nsw i64 %indvars.iv391, 1
  %.not307.not = icmp ult i64 %indvars.iv391, %194
  br i1 %.not307.not, label %.lr.ph359, label %.loopexit332, !llvm.loop !23

.loopexit332:                                     ; preds = %.lr.ph353, %.lr.ph359, %175, %191
  call void @cpbtrf_(ptr noundef %1, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef %7, ptr noundef nonnull %8, ptr noundef nonnull %20) #4
  %202 = load i32, ptr %20, align 4, !tbaa !5
  %203 = icmp sgt i32 %202, 0
  br i1 %203, label %204, label %205

204:                                              ; preds = %.loopexit332
  store float 0.000000e+00, ptr %15, align 4, !tbaa !10
  br label %270

205:                                              ; preds = %.loopexit332, %172
  %206 = call float @clanhb_(ptr noundef nonnull @.str.8, ptr noundef %1, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %19) #4
  store float %206, ptr %26, align 4, !tbaa !10
  call void @cpbcon_(ptr noundef %1, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef %7, ptr noundef nonnull %8, ptr noundef nonnull %26, ptr noundef %15, ptr noundef %18, ptr noundef %19, ptr noundef nonnull %20) #4
  call void @clacpy_(ptr noundef nonnull @.str.9, ptr noundef nonnull %2, ptr noundef nonnull %4, ptr noundef %11, ptr noundef nonnull %12, ptr noundef %13, ptr noundef nonnull %14) #4
  call void @cpbtrs_(ptr noundef %1, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef %7, ptr noundef nonnull %8, ptr noundef %13, ptr noundef nonnull %14, ptr noundef nonnull %20) #4
  call void @cpbrfs_(ptr noundef %1, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %7, ptr noundef nonnull %8, ptr noundef %11, ptr noundef nonnull %12, ptr noundef %13, ptr noundef nonnull %14, ptr noundef %16, ptr noundef %17, ptr noundef %18, ptr noundef %19, ptr noundef nonnull %20) #4
  br i1 %.not304, label %.loopexit, label %207

207:                                              ; preds = %205
  %208 = load i32, ptr %4, align 4, !tbaa !5
  %.not313365 = icmp slt i32 %208, 1
  br i1 %.not313365, label %.loopexit, label %.lr.ph368

.lr.ph368:                                        ; preds = %207
  %209 = load i32, ptr %2, align 4, !tbaa !5
  %.not315360 = icmp slt i32 %209, 1
  br i1 %.not315360, label %.thread410, label %.lr.ph363.preheader

.thread410:                                       ; preds = %.lr.ph368
  store i32 %209, ptr %23, align 4, !tbaa !5
  br label %.lr.ph373

.lr.ph363.preheader:                              ; preds = %.lr.ph368
  %210 = add nuw i32 %209, 1
  %211 = sext i32 %38 to i64
  %212 = add nuw i32 %208, 1
  %wide.trip.count402 = zext i32 %212 to i64
  %wide.trip.count397 = zext i32 %210 to i64
  %213 = shl nsw i64 %211, 3
  %214 = shl nsw i64 %39, 3
  %215 = getelementptr i8, ptr %13, i64 %213
  %216 = getelementptr i8, ptr %215, i64 %214
  %scevgep425 = getelementptr i8, ptr %216, i64 8
  %217 = shl nuw nsw i64 %wide.trip.count402, 3
  %218 = add nsw i64 %217, -8
  %219 = mul i64 %218, %211
  %220 = shl nuw nsw i64 %wide.trip.count397, 3
  %221 = getelementptr i8, ptr %13, i64 %219
  %222 = getelementptr i8, ptr %221, i64 %214
  %scevgep426 = getelementptr i8, ptr %222, i64 %220
  %223 = shl nuw nsw i64 %wide.trip.count397, 2
  %224 = getelementptr i8, ptr %10, i64 %223
  %scevgep427 = getelementptr i8, ptr %224, i64 -4
  %225 = zext nneg i32 %209 to i64
  %226 = zext nneg i32 %209 to i64
  %min.iters.check434 = icmp eq i32 %209, 1
  %bound0428 = icmp ult ptr %scevgep425, %scevgep427
  %bound1429 = icmp ugt ptr %scevgep426, %10
  %found.conflict430 = and i1 %bound0428, %bound1429
  %stride.check431 = icmp slt i32 %38, 0
  %227 = or i1 %found.conflict430, %stride.check431
  %n.vec437 = and i64 %225, 2147483646
  %ind.end438 = or i64 %225, 1
  %cmp.n449 = icmp eq i64 %n.vec437, %225
  %228 = and i32 %209, 1
  %lcmp.mod472.not = icmp eq i32 %228, 0
  br label %.lr.ph363

.lr.ph363:                                        ; preds = %.lr.ph363.preheader, %._crit_edge364
  %indvars.iv399 = phi i64 [ 1, %.lr.ph363.preheader ], [ %indvars.iv.next400, %._crit_edge364 ]
  %229 = mul nsw i64 %indvars.iv399, %211
  %invariant.gep416 = getelementptr %struct.complex, ptr %40, i64 %229
  %brmerge479 = select i1 %min.iters.check434, i1 true, i1 %227
  br i1 %brmerge479, label %scalar.ph433.preheader, label %vector.body440

vector.body440:                                   ; preds = %.lr.ph363, %vector.body440
  %index441 = phi i64 [ %index.next448, %vector.body440 ], [ 0, %.lr.ph363 ]
  %offset.idx442 = or disjoint i64 %index441, 1
  %230 = getelementptr float, ptr %10, i64 %index441
  %wide.load443 = load <2 x float>, ptr %230, align 4, !tbaa !10, !alias.scope !24
  %231 = getelementptr %struct.complex, ptr %invariant.gep416, i64 %offset.idx442
  %232 = load <4 x float>, ptr %231, align 4, !tbaa !10
  %233 = shufflevector <2 x float> %wide.load443, <2 x float> poison, <4 x i32> <i32 0, i32 0, i32 1, i32 1>
  %interleaved.vec447 = fmul <4 x float> %233, %232
  store <4 x float> %interleaved.vec447, ptr %231, align 4, !tbaa !10
  %index.next448 = add nuw i64 %index441, 2
  %234 = icmp eq i64 %index.next448, %n.vec437
  br i1 %234, label %middle.block432, label %vector.body440, !llvm.loop !27

middle.block432:                                  ; preds = %vector.body440
  br i1 %cmp.n449, label %._crit_edge364, label %scalar.ph433.preheader

scalar.ph433.preheader:                           ; preds = %.lr.ph363, %middle.block432
  %indvars.iv394.ph = phi i64 [ 1, %.lr.ph363 ], [ %ind.end438, %middle.block432 ]
  br i1 %lcmp.mod472.not, label %scalar.ph433.prol.loopexit, label %scalar.ph433.prol

scalar.ph433.prol:                                ; preds = %scalar.ph433.preheader
  %235 = getelementptr inbounds float, ptr %34, i64 %indvars.iv394.ph
  %236 = load float, ptr %235, align 4, !tbaa !10
  %gep417.prol = getelementptr %struct.complex, ptr %invariant.gep416, i64 %indvars.iv394.ph
  %237 = load <2 x float>, ptr %gep417.prol, 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 %gep417.prol, align 4, !tbaa !10
  %indvars.iv.next395.prol = add nuw nsw i64 %indvars.iv394.ph, 1
  br label %scalar.ph433.prol.loopexit

scalar.ph433.prol.loopexit:                       ; preds = %scalar.ph433.prol, %scalar.ph433.preheader
  %indvars.iv394.unr = phi i64 [ %indvars.iv394.ph, %scalar.ph433.preheader ], [ %indvars.iv.next395.prol, %scalar.ph433.prol ]
  %241 = icmp eq i64 %indvars.iv394.ph, %226
  br i1 %241, label %._crit_edge364, label %scalar.ph433.preheader.new

scalar.ph433.preheader.new:                       ; preds = %scalar.ph433.prol.loopexit
  %invariant.gep477 = getelementptr i8, ptr %invariant.gep416, i64 8
  br label %scalar.ph433

scalar.ph433:                                     ; preds = %scalar.ph433, %scalar.ph433.preheader.new
  %indvars.iv394 = phi i64 [ %indvars.iv394.unr, %scalar.ph433.preheader.new ], [ %indvars.iv.next395.1, %scalar.ph433 ]
  %242 = getelementptr inbounds float, ptr %34, i64 %indvars.iv394
  %243 = load float, ptr %242, align 4, !tbaa !10
  %gep417 = getelementptr %struct.complex, ptr %invariant.gep416, i64 %indvars.iv394
  %244 = load <2 x float>, ptr %gep417, align 4, !tbaa !10
  %245 = insertelement <2 x float> poison, float %243, i64 0
  %246 = shufflevector <2 x float> %245, <2 x float> poison, <2 x i32> zeroinitializer
  %247 = fmul <2 x float> %246, %244
  store <2 x float> %247, ptr %gep417, align 4, !tbaa !10
  %248 = getelementptr float, ptr %10, i64 %indvars.iv394
  %249 = load float, ptr %248, align 4, !tbaa !10
  %gep478 = getelementptr %struct.complex, ptr %invariant.gep477, i64 %indvars.iv394
  %250 = load <2 x float>, ptr %gep478, align 4, !tbaa !10
  %251 = insertelement <2 x float> poison, float %249, i64 0
  %252 = shufflevector <2 x float> %251, <2 x float> poison, <2 x i32> zeroinitializer
  %253 = fmul <2 x float> %252, %250
  store <2 x float> %253, ptr %gep478, align 4, !tbaa !10
  %indvars.iv.next395.1 = add nuw nsw i64 %indvars.iv394, 2
  %exitcond398.not.1 = icmp eq i64 %indvars.iv.next395.1, %wide.trip.count397
  br i1 %exitcond398.not.1, label %._crit_edge364, label %scalar.ph433, !llvm.loop !28

._crit_edge364:                                   ; preds = %scalar.ph433.prol.loopexit, %scalar.ph433, %middle.block432
  %indvars.iv.next400 = add nuw nsw i64 %indvars.iv399, 1
  %exitcond403.not = icmp eq i64 %indvars.iv.next400, %wide.trip.count402
  br i1 %exitcond403.not, label %254, label %.lr.ph363, !llvm.loop !29

254:                                              ; preds = %._crit_edge364
  store i32 %209, ptr %23, align 4, !tbaa !5
  br i1 %.not313365, label %.loopexit, label %.lr.ph373

.lr.ph373:                                        ; preds = %.thread410, %254
  %255 = load float, ptr %25, align 4, !tbaa !10
  %256 = add nuw i32 %208, 1
  %wide.trip.count407 = zext i32 %256 to i64
  %257 = zext nneg i32 %208 to i64
  %min.iters.check452 = icmp ult i32 %208, 4
  br i1 %min.iters.check452, label %scalar.ph451.preheader, label %vector.ph453

vector.ph453:                                     ; preds = %.lr.ph373
  %n.vec455 = and i64 %257, 2147483644
  %ind.end456 = or disjoint i64 %n.vec455, 1
  %broadcast.splatinsert = insertelement <4 x float> poison, float %255, i64 0
  %broadcast.splat = shufflevector <4 x float> %broadcast.splatinsert, <4 x float> poison, <4 x i32> zeroinitializer
  br label %vector.body458

vector.body458:                                   ; preds = %vector.body458, %vector.ph453
  %index459 = phi i64 [ 0, %vector.ph453 ], [ %index.next462, %vector.body458 ]
  %258 = getelementptr float, ptr %16, i64 %index459
  %wide.load461 = load <4 x float>, ptr %258, align 4, !tbaa !10
  %259 = fdiv <4 x float> %wide.load461, %broadcast.splat
  store <4 x float> %259, ptr %258, align 4, !tbaa !10
  %index.next462 = add nuw i64 %index459, 4
  %260 = icmp eq i64 %index.next462, %n.vec455
  br i1 %260, label %middle.block450, label %vector.body458, !llvm.loop !30

middle.block450:                                  ; preds = %vector.body458
  %cmp.n463 = icmp eq i64 %n.vec455, %257
  br i1 %cmp.n463, label %.loopexit, label %scalar.ph451.preheader

scalar.ph451.preheader:                           ; preds = %middle.block450, %.lr.ph373
  %indvars.iv404.ph = phi i64 [ 1, %.lr.ph373 ], [ %ind.end456, %middle.block450 ]
  br label %scalar.ph451

scalar.ph451:                                     ; preds = %scalar.ph451.preheader, %scalar.ph451
  %indvars.iv404 = phi i64 [ %indvars.iv.next405, %scalar.ph451 ], [ %indvars.iv404.ph, %scalar.ph451.preheader ]
  %261 = getelementptr inbounds float, ptr %41, i64 %indvars.iv404
  %262 = load float, ptr %261, align 4, !tbaa !10
  %263 = fdiv float %262, %255
  store float %263, ptr %261, align 4, !tbaa !10
  %indvars.iv.next405 = add nuw nsw i64 %indvars.iv404, 1
  %exitcond408.not = icmp eq i64 %indvars.iv.next405, %wide.trip.count407
  br i1 %exitcond408.not, label %.loopexit, label %scalar.ph451, !llvm.loop !31

.loopexit:                                        ; preds = %scalar.ph451, %middle.block450, %207, %254, %205
  %264 = load float, ptr %15, align 4, !tbaa !10
  %265 = call float @slamch_(ptr noundef nonnull @.str.10) #4
  %266 = fcmp olt float %264, %265
  br i1 %266, label %267, label %270

267:                                              ; preds = %.loopexit
  %268 = load i32, ptr %2, align 4, !tbaa !5
  %269 = add nsw i32 %268, 1
  store i32 %269, ptr %20, align 4, !tbaa !5
  br label %270

270:                                              ; preds = %.loopexit, %267, %204, %.thread329
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %27) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %26) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %25) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %24) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %23) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %22) #4
  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 @cpbequ_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

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

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

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

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

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

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

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

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


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