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

128:                                              ; preds = %21
  %129 = load i64, ptr %69, align 8, !tbaa !9
  %130 = icmp ne i64 %129, 0
  br i1 %130, label %131, label %133

131:                                              ; preds = %128, %21
  %132 = load ptr, ptr %32, align 8, !tbaa !5
  store i8 78, ptr %132, align 1, !tbaa !11
  store i64 0, ptr %70, align 8, !tbaa !9
  br label %140

133:                                              ; preds = %128
  %134 = load ptr, ptr %32, align 8, !tbaa !5
  %135 = call i64 @lsame_(ptr noundef %134, ptr noundef @.str.3)
  store i64 %135, ptr %70, align 8, !tbaa !9
  %136 = call double @slamch_(ptr noundef @.str.4)
  %137 = fptrunc double %136 to float
  store float %137, ptr %75, align 4, !tbaa !12
  %138 = load float, ptr %75, align 4, !tbaa !12
  %139 = fdiv float 1.000000e+00, %138
  store float %139, ptr %73, align 4, !tbaa !12
  br label %140

140:                                              ; preds = %133, %131
  %141 = load i64, ptr %72, align 8, !tbaa !9
  %142 = icmp ne i64 %141, 0
  br i1 %142, label %152, label %143

143:                                              ; preds = %140
  %144 = load i64, ptr %69, align 8, !tbaa !9
  %145 = icmp ne i64 %144, 0
  br i1 %145, label %152, label %146

146:                                              ; preds = %143
  %147 = load ptr, ptr %23, align 8, !tbaa !5
  %148 = call i64 @lsame_(ptr noundef %147, ptr noundef @.str.5)
  %149 = icmp ne i64 %148, 0
  br i1 %149, label %152, label %150

150:                                              ; preds = %146
  %151 = load ptr, ptr %43, align 8, !tbaa !5
  store i64 -1, ptr %151, align 8, !tbaa !9
  br label %336

152:                                              ; preds = %146, %143, %140
  %153 = load i64, ptr %71, align 8, !tbaa !9
  %154 = icmp ne i64 %153, 0
  br i1 %154, label %161, label %155

155:                                              ; preds = %152
  %156 = load ptr, ptr %24, align 8, !tbaa !5
  %157 = call i64 @lsame_(ptr noundef %156, ptr noundef @.str.6)
  %158 = icmp ne i64 %157, 0
  br i1 %158, label %161, label %159

159:                                              ; preds = %155
  %160 = load ptr, ptr %43, align 8, !tbaa !5
  store i64 -2, ptr %160, align 8, !tbaa !9
  br label %335

161:                                              ; preds = %155, %152
  %162 = load ptr, ptr %25, align 8, !tbaa !5
  %163 = load i64, ptr %162, align 8, !tbaa !9
  %164 = icmp slt i64 %163, 0
  br i1 %164, label %165, label %167

165:                                              ; preds = %161
  %166 = load ptr, ptr %43, align 8, !tbaa !5
  store i64 -3, ptr %166, align 8, !tbaa !9
  br label %334

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

171:                                              ; preds = %167
  %172 = load ptr, ptr %43, align 8, !tbaa !5
  store i64 -4, ptr %172, align 8, !tbaa !9
  br label %333

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

177:                                              ; preds = %173
  %178 = load ptr, ptr %43, align 8, !tbaa !5
  store i64 -5, ptr %178, align 8, !tbaa !9
  br label %332

179:                                              ; preds = %173
  %180 = load ptr, ptr %29, align 8, !tbaa !5
  %181 = load i64, ptr %180, align 8, !tbaa !9
  %182 = load ptr, ptr %26, align 8, !tbaa !5
  %183 = load i64, ptr %182, align 8, !tbaa !9
  %184 = add nsw i64 %183, 1
  %185 = icmp slt i64 %181, %184
  br i1 %185, label %186, label %188

186:                                              ; preds = %179
  %187 = load ptr, ptr %43, align 8, !tbaa !5
  store i64 -7, ptr %187, align 8, !tbaa !9
  br label %331

188:                                              ; preds = %179
  %189 = load ptr, ptr %31, align 8, !tbaa !5
  %190 = load i64, ptr %189, align 8, !tbaa !9
  %191 = load ptr, ptr %26, align 8, !tbaa !5
  %192 = load i64, ptr %191, align 8, !tbaa !9
  %193 = add nsw i64 %192, 1
  %194 = icmp slt i64 %190, %193
  br i1 %194, label %195, label %197

195:                                              ; preds = %188
  %196 = load ptr, ptr %43, align 8, !tbaa !5
  store i64 -9, ptr %196, align 8, !tbaa !9
  br label %330

197:                                              ; preds = %188
  %198 = load ptr, ptr %23, align 8, !tbaa !5
  %199 = call i64 @lsame_(ptr noundef %198, ptr noundef @.str.5)
  %200 = icmp ne i64 %199, 0
  br i1 %200, label %201, label %210

201:                                              ; preds = %197
  %202 = load i64, ptr %70, align 8, !tbaa !9
  %203 = icmp ne i64 %202, 0
  br i1 %203, label %210, label %204

204:                                              ; preds = %201
  %205 = load ptr, ptr %32, align 8, !tbaa !5
  %206 = call i64 @lsame_(ptr noundef %205, ptr noundef @.str)
  %207 = icmp ne i64 %206, 0
  br i1 %207, label %210, label %208

208:                                              ; preds = %204
  %209 = load ptr, ptr %43, align 8, !tbaa !5
  store i64 -10, ptr %209, align 8, !tbaa !9
  br label %329

210:                                              ; preds = %204, %201, %197
  %211 = load i64, ptr %70, align 8, !tbaa !9
  %212 = icmp ne i64 %211, 0
  br i1 %212, label %213, label %292

213:                                              ; preds = %210
  %214 = load float, ptr %73, align 4, !tbaa !12
  store float %214, ptr %65, align 4, !tbaa !12
  store float 0.000000e+00, ptr %66, align 4, !tbaa !12
  %215 = load ptr, ptr %25, align 8, !tbaa !5
  %216 = load i64, ptr %215, align 8, !tbaa !9
  store i64 %216, ptr %52, align 8, !tbaa !9
  store i64 1, ptr %61, align 8, !tbaa !9
  br label %217

217:                                              ; preds = %254, %213
  %218 = load i64, ptr %61, align 8, !tbaa !9
  %219 = load i64, ptr %52, align 8, !tbaa !9
  %220 = icmp sle i64 %218, %219
  br i1 %220, label %221, label %257

221:                                              ; preds = %217
  %222 = load float, ptr %65, align 4, !tbaa !12
  store float %222, ptr %57, align 4, !tbaa !12
  %223 = load ptr, ptr %33, align 8, !tbaa !5
  %224 = load i64, ptr %61, align 8, !tbaa !9
  %225 = getelementptr inbounds float, ptr %223, i64 %224
  %226 = load float, ptr %225, align 4, !tbaa !12
  store float %226, ptr %58, align 4, !tbaa !12
  %227 = load float, ptr %57, align 4, !tbaa !12
  %228 = load float, ptr %58, align 4, !tbaa !12
  %229 = fcmp ole float %227, %228
  br i1 %229, label %230, label %232

230:                                              ; preds = %221
  %231 = load float, ptr %57, align 4, !tbaa !12
  br label %234

232:                                              ; preds = %221
  %233 = load float, ptr %58, align 4, !tbaa !12
  br label %234

234:                                              ; preds = %232, %230
  %235 = phi float [ %231, %230 ], [ %233, %232 ]
  %236 = fpext float %235 to double
  %237 = fptrunc double %236 to float
  store float %237, ptr %65, align 4, !tbaa !12
  %238 = load float, ptr %66, align 4, !tbaa !12
  store float %238, ptr %57, align 4, !tbaa !12
  %239 = load ptr, ptr %33, align 8, !tbaa !5
  %240 = load i64, ptr %61, align 8, !tbaa !9
  %241 = getelementptr inbounds float, ptr %239, i64 %240
  %242 = load float, ptr %241, align 4, !tbaa !12
  store float %242, ptr %58, align 4, !tbaa !12
  %243 = load float, ptr %57, align 4, !tbaa !12
  %244 = load float, ptr %58, align 4, !tbaa !12
  %245 = fcmp oge float %243, %244
  br i1 %245, label %246, label %248

246:                                              ; preds = %234
  %247 = load float, ptr %57, align 4, !tbaa !12
  br label %250

248:                                              ; preds = %234
  %249 = load float, ptr %58, align 4, !tbaa !12
  br label %250

250:                                              ; preds = %248, %246
  %251 = phi float [ %247, %246 ], [ %249, %248 ]
  %252 = fpext float %251 to double
  %253 = fptrunc double %252 to float
  store float %253, ptr %66, align 4, !tbaa !12
  br label %254

254:                                              ; preds = %250
  %255 = load i64, ptr %61, align 8, !tbaa !9
  %256 = add nsw i64 %255, 1
  store i64 %256, ptr %61, align 8, !tbaa !9
  br label %217, !llvm.loop !14

257:                                              ; preds = %217
  %258 = load float, ptr %65, align 4, !tbaa !12
  %259 = fcmp ole float %258, 0.000000e+00
  br i1 %259, label %260, label %262

260:                                              ; preds = %257
  %261 = load ptr, ptr %43, align 8, !tbaa !5
  store i64 -11, ptr %261, align 8, !tbaa !9
  br label %291

262:                                              ; preds = %257
  %263 = load ptr, ptr %25, align 8, !tbaa !5
  %264 = load i64, ptr %263, align 8, !tbaa !9
  %265 = icmp sgt i64 %264, 0
  br i1 %265, label %266, label %289

266:                                              ; preds = %262
  %267 = load float, ptr %65, align 4, !tbaa !12
  %268 = load float, ptr %75, align 4, !tbaa !12
  %269 = fcmp oge float %267, %268
  br i1 %269, label %270, label %272

270:                                              ; preds = %266
  %271 = load float, ptr %65, align 4, !tbaa !12
  br label %274

272:                                              ; preds = %266
  %273 = load float, ptr %75, align 4, !tbaa !12
  br label %274

274:                                              ; preds = %272, %270
  %275 = phi float [ %271, %270 ], [ %273, %272 ]
  %276 = fpext float %275 to double
  %277 = load float, ptr %66, align 4, !tbaa !12
  %278 = load float, ptr %73, align 4, !tbaa !12
  %279 = fcmp ole float %277, %278
  br i1 %279, label %280, label %282

280:                                              ; preds = %274
  %281 = load float, ptr %66, align 4, !tbaa !12
  br label %284

282:                                              ; preds = %274
  %283 = load float, ptr %73, align 4, !tbaa !12
  br label %284

284:                                              ; preds = %282, %280
  %285 = phi float [ %281, %280 ], [ %283, %282 ]
  %286 = fpext float %285 to double
  %287 = fdiv double %276, %286
  %288 = fptrunc double %287 to float
  store float %288, ptr %67, align 4, !tbaa !12
  br label %290

289:                                              ; preds = %262
  store float 1.000000e+00, ptr %67, align 4, !tbaa !12
  br label %290

290:                                              ; preds = %289, %284
  br label %291

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

292:                                              ; preds = %291, %210
  %293 = load ptr, ptr %43, align 8, !tbaa !5
  %294 = load i64, ptr %293, align 8, !tbaa !9
  %295 = icmp eq i64 %294, 0
  br i1 %295, label %296, label %328

296:                                              ; preds = %292
  %297 = load ptr, ptr %35, align 8, !tbaa !5
  %298 = load i64, ptr %297, align 8, !tbaa !9
  %299 = load ptr, ptr %25, align 8, !tbaa !5
  %300 = load i64, ptr %299, align 8, !tbaa !9
  %301 = icmp sge i64 1, %300
  br i1 %301, label %302, label %303

302:                                              ; preds = %296
  br label %306

303:                                              ; preds = %296
  %304 = load ptr, ptr %25, align 8, !tbaa !5
  %305 = load i64, ptr %304, align 8, !tbaa !9
  br label %306

306:                                              ; preds = %303, %302
  %307 = phi i64 [ 1, %302 ], [ %305, %303 ]
  %308 = icmp slt i64 %298, %307
  br i1 %308, label %309, label %311

309:                                              ; preds = %306
  %310 = load ptr, ptr %43, align 8, !tbaa !5
  store i64 -13, ptr %310, align 8, !tbaa !9
  br label %327

311:                                              ; preds = %306
  %312 = load ptr, ptr %37, align 8, !tbaa !5
  %313 = load i64, ptr %312, align 8, !tbaa !9
  %314 = load ptr, ptr %25, align 8, !tbaa !5
  %315 = load i64, ptr %314, align 8, !tbaa !9
  %316 = icmp sge i64 1, %315
  br i1 %316, label %317, label %318

317:                                              ; preds = %311
  br label %321

318:                                              ; preds = %311
  %319 = load ptr, ptr %25, align 8, !tbaa !5
  %320 = load i64, ptr %319, align 8, !tbaa !9
  br label %321

321:                                              ; preds = %318, %317
  %322 = phi i64 [ 1, %317 ], [ %320, %318 ]
  %323 = icmp slt i64 %313, %322
  br i1 %323, label %324, label %326

324:                                              ; preds = %321
  %325 = load ptr, ptr %43, align 8, !tbaa !5
  store i64 -15, ptr %325, align 8, !tbaa !9
  br label %326

326:                                              ; preds = %324, %321
  br label %327

327:                                              ; preds = %326, %309
  br label %328

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

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

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

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

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

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

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

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

336:                                              ; preds = %335, %150
  %337 = load ptr, ptr %43, align 8, !tbaa !5
  %338 = load i64, ptr %337, align 8, !tbaa !9
  %339 = icmp ne i64 %338, 0
  br i1 %339, label %340, label %345

340:                                              ; preds = %336
  %341 = load ptr, ptr %43, align 8, !tbaa !5
  %342 = load i64, ptr %341, align 8, !tbaa !9
  %343 = sub nsw i64 0, %342
  store i64 %343, ptr %52, align 8, !tbaa !9
  %344 = call i32 @xerbla_(ptr noundef @.str.7, ptr noundef %52)
  store i32 0, ptr %22, align 4
  store i32 1, ptr %76, align 4
  br label %750

345:                                              ; preds = %336
  %346 = load i64, ptr %69, align 8, !tbaa !9
  %347 = icmp ne i64 %346, 0
  br i1 %347, label %348, label %376

348:                                              ; preds = %345
  %349 = load ptr, ptr %24, align 8, !tbaa !5
  %350 = load ptr, ptr %25, align 8, !tbaa !5
  %351 = load ptr, ptr %26, align 8, !tbaa !5
  %352 = load ptr, ptr %28, align 8, !tbaa !5
  %353 = load i64, ptr %45, align 8, !tbaa !9
  %354 = getelementptr inbounds %struct.complex, ptr %352, i64 %353
  %355 = load ptr, ptr %29, align 8, !tbaa !5
  %356 = load ptr, ptr %33, align 8, !tbaa !5
  %357 = getelementptr inbounds float, ptr %356, i64 1
  %358 = call i32 @cpbequ_(ptr noundef %349, ptr noundef %350, ptr noundef %351, ptr noundef %354, ptr noundef %355, ptr noundef %357, ptr noundef %67, ptr noundef %64, ptr noundef %74)
  %359 = load i64, ptr %74, align 8, !tbaa !9
  %360 = icmp eq i64 %359, 0
  br i1 %360, label %361, label %375

361:                                              ; preds = %348
  %362 = load ptr, ptr %24, align 8, !tbaa !5
  %363 = load ptr, ptr %25, align 8, !tbaa !5
  %364 = load ptr, ptr %26, align 8, !tbaa !5
  %365 = load ptr, ptr %28, align 8, !tbaa !5
  %366 = load i64, ptr %45, align 8, !tbaa !9
  %367 = getelementptr inbounds %struct.complex, ptr %365, i64 %366
  %368 = load ptr, ptr %29, align 8, !tbaa !5
  %369 = load ptr, ptr %33, align 8, !tbaa !5
  %370 = getelementptr inbounds float, ptr %369, i64 1
  %371 = load ptr, ptr %32, align 8, !tbaa !5
  %372 = call i32 @claqhb_(ptr noundef %362, ptr noundef %363, ptr noundef %364, ptr noundef %367, ptr noundef %368, ptr noundef %370, ptr noundef %67, ptr noundef %64, ptr noundef %371)
  %373 = load ptr, ptr %32, align 8, !tbaa !5
  %374 = call i64 @lsame_(ptr noundef %373, ptr noundef @.str.3)
  store i64 %374, ptr %70, align 8, !tbaa !9
  br label %375

375:                                              ; preds = %361, %348
  br label %376

376:                                              ; preds = %375, %345
  %377 = load i64, ptr %70, align 8, !tbaa !9
  %378 = icmp ne i64 %377, 0
  br i1 %378, label %379, label %447

379:                                              ; preds = %376
  %380 = load ptr, ptr %27, align 8, !tbaa !5
  %381 = load i64, ptr %380, align 8, !tbaa !9
  store i64 %381, ptr %52, align 8, !tbaa !9
  store i64 1, ptr %61, align 8, !tbaa !9
  br label %382

382:                                              ; preds = %443, %379
  %383 = load i64, ptr %61, align 8, !tbaa !9
  %384 = load i64, ptr %52, align 8, !tbaa !9
  %385 = icmp sle i64 %383, %384
  br i1 %385, label %386, label %446

386:                                              ; preds = %382
  %387 = load ptr, ptr %25, align 8, !tbaa !5
  %388 = load i64, ptr %387, align 8, !tbaa !9
  store i64 %388, ptr %53, align 8, !tbaa !9
  store i64 1, ptr %60, align 8, !tbaa !9
  br label %389

389:                                              ; preds = %439, %386
  %390 = load i64, ptr %60, align 8, !tbaa !9
  %391 = load i64, ptr %53, align 8, !tbaa !9
  %392 = icmp sle i64 %390, %391
  br i1 %392, label %393, label %442

393:                                              ; preds = %389
  %394 = load i64, ptr %60, align 8, !tbaa !9
  %395 = load i64, ptr %61, align 8, !tbaa !9
  %396 = load i64, ptr %48, align 8, !tbaa !9
  %397 = mul nsw i64 %395, %396
  %398 = add nsw i64 %394, %397
  store i64 %398, ptr %54, align 8, !tbaa !9
  %399 = load i64, ptr %60, align 8, !tbaa !9
  store i64 %399, ptr %55, align 8, !tbaa !9
  %400 = load i64, ptr %60, align 8, !tbaa !9
  %401 = load i64, ptr %61, align 8, !tbaa !9
  %402 = load i64, ptr %48, align 8, !tbaa !9
  %403 = mul nsw i64 %401, %402
  %404 = add nsw i64 %400, %403
  store i64 %404, ptr %56, align 8, !tbaa !9
  %405 = load ptr, ptr %33, align 8, !tbaa !5
  %406 = load i64, ptr %55, align 8, !tbaa !9
  %407 = getelementptr inbounds float, ptr %405, i64 %406
  %408 = load float, ptr %407, align 4, !tbaa !12
  %409 = load ptr, ptr %34, align 8, !tbaa !5
  %410 = load i64, ptr %56, align 8, !tbaa !9
  %411 = getelementptr inbounds %struct.complex, ptr %409, i64 %410
  %412 = getelementptr inbounds %struct.complex, ptr %411, i32 0, i32 0
  %413 = load float, ptr %412, align 4, !tbaa !16
  %414 = fmul float %408, %413
  %415 = getelementptr inbounds %struct.complex, ptr %59, i32 0, i32 0
  store float %414, ptr %415, align 4, !tbaa !16
  %416 = load ptr, ptr %33, align 8, !tbaa !5
  %417 = load i64, ptr %55, align 8, !tbaa !9
  %418 = getelementptr inbounds float, ptr %416, i64 %417
  %419 = load float, ptr %418, align 4, !tbaa !12
  %420 = load ptr, ptr %34, align 8, !tbaa !5
  %421 = load i64, ptr %56, align 8, !tbaa !9
  %422 = getelementptr inbounds %struct.complex, ptr %420, i64 %421
  %423 = getelementptr inbounds %struct.complex, ptr %422, i32 0, i32 1
  %424 = load float, ptr %423, align 4, !tbaa !18
  %425 = fmul float %419, %424
  %426 = getelementptr inbounds %struct.complex, ptr %59, i32 0, i32 1
  store float %425, ptr %426, align 4, !tbaa !18
  %427 = getelementptr inbounds %struct.complex, ptr %59, i32 0, i32 0
  %428 = load float, ptr %427, align 4, !tbaa !16
  %429 = load ptr, ptr %34, align 8, !tbaa !5
  %430 = load i64, ptr %54, align 8, !tbaa !9
  %431 = getelementptr inbounds %struct.complex, ptr %429, i64 %430
  %432 = getelementptr inbounds %struct.complex, ptr %431, i32 0, i32 0
  store float %428, ptr %432, align 4, !tbaa !16
  %433 = getelementptr inbounds %struct.complex, ptr %59, i32 0, i32 1
  %434 = load float, ptr %433, align 4, !tbaa !18
  %435 = load ptr, ptr %34, align 8, !tbaa !5
  %436 = load i64, ptr %54, align 8, !tbaa !9
  %437 = getelementptr inbounds %struct.complex, ptr %435, i64 %436
  %438 = getelementptr inbounds %struct.complex, ptr %437, i32 0, i32 1
  store float %434, ptr %438, align 4, !tbaa !18
  br label %439

439:                                              ; preds = %393
  %440 = load i64, ptr %60, align 8, !tbaa !9
  %441 = add nsw i64 %440, 1
  store i64 %441, ptr %60, align 8, !tbaa !9
  br label %389, !llvm.loop !19

442:                                              ; preds = %389
  br label %443

443:                                              ; preds = %442
  %444 = load i64, ptr %61, align 8, !tbaa !9
  %445 = add nsw i64 %444, 1
  store i64 %445, ptr %61, align 8, !tbaa !9
  br label %382, !llvm.loop !20

446:                                              ; preds = %382
  br label %447

447:                                              ; preds = %446, %376
  %448 = load i64, ptr %72, align 8, !tbaa !9
  %449 = icmp ne i64 %448, 0
  br i1 %449, label %453, label %450

450:                                              ; preds = %447
  %451 = load i64, ptr %69, align 8, !tbaa !9
  %452 = icmp ne i64 %451, 0
  br i1 %452, label %453, label %570

453:                                              ; preds = %450, %447
  %454 = load i64, ptr %71, align 8, !tbaa !9
  %455 = icmp ne i64 %454, 0
  br i1 %455, label %456, label %510

456:                                              ; preds = %453
  %457 = load ptr, ptr %25, align 8, !tbaa !5
  %458 = load i64, ptr %457, align 8, !tbaa !9
  store i64 %458, ptr %52, align 8, !tbaa !9
  store i64 1, ptr %61, align 8, !tbaa !9
  br label %459

459:                                              ; preds = %506, %456
  %460 = load i64, ptr %61, align 8, !tbaa !9
  %461 = load i64, ptr %52, align 8, !tbaa !9
  %462 = icmp sle i64 %460, %461
  br i1 %462, label %463, label %509

463:                                              ; preds = %459
  %464 = load i64, ptr %61, align 8, !tbaa !9
  %465 = load ptr, ptr %26, align 8, !tbaa !5
  %466 = load i64, ptr %465, align 8, !tbaa !9
  %467 = sub nsw i64 %464, %466
  store i64 %467, ptr %53, align 8, !tbaa !9
  %468 = load i64, ptr %53, align 8, !tbaa !9
  %469 = icmp sge i64 %468, 1
  br i1 %469, label %470, label %472

470:                                              ; preds = %463
  %471 = load i64, ptr %53, align 8, !tbaa !9
  br label %473

472:                                              ; preds = %463
  br label %473

473:                                              ; preds = %472, %470
  %474 = phi i64 [ %471, %470 ], [ 1, %472 ]
  store i64 %474, ptr %62, align 8, !tbaa !9
  %475 = load i64, ptr %61, align 8, !tbaa !9
  %476 = load i64, ptr %62, align 8, !tbaa !9
  %477 = sub nsw i64 %475, %476
  %478 = add nsw i64 %477, 1
  store i64 %478, ptr %53, align 8, !tbaa !9
  %479 = load ptr, ptr %28, align 8, !tbaa !5
  %480 = load ptr, ptr %26, align 8, !tbaa !5
  %481 = load i64, ptr %480, align 8, !tbaa !9
  %482 = add nsw i64 %481, 1
  %483 = load i64, ptr %61, align 8, !tbaa !9
  %484 = sub nsw i64 %482, %483
  %485 = load i64, ptr %62, align 8, !tbaa !9
  %486 = add nsw i64 %484, %485
  %487 = load i64, ptr %61, align 8, !tbaa !9
  %488 = load i64, ptr %44, align 8, !tbaa !9
  %489 = mul nsw i64 %487, %488
  %490 = add nsw i64 %486, %489
  %491 = getelementptr inbounds %struct.complex, ptr %479, i64 %490
  %492 = load ptr, ptr %30, align 8, !tbaa !5
  %493 = load ptr, ptr %26, align 8, !tbaa !5
  %494 = load i64, ptr %493, align 8, !tbaa !9
  %495 = add nsw i64 %494, 1
  %496 = load i64, ptr %61, align 8, !tbaa !9
  %497 = sub nsw i64 %495, %496
  %498 = load i64, ptr %62, align 8, !tbaa !9
  %499 = add nsw i64 %497, %498
  %500 = load i64, ptr %61, align 8, !tbaa !9
  %501 = load i64, ptr %46, align 8, !tbaa !9
  %502 = mul nsw i64 %500, %501
  %503 = add nsw i64 %499, %502
  %504 = getelementptr inbounds %struct.complex, ptr %492, i64 %503
  %505 = call i32 @f2c_ccopy(ptr noundef %53, ptr noundef %491, ptr noundef @c__1, ptr noundef %504, ptr noundef @c__1)
  br label %506

506:                                              ; preds = %473
  %507 = load i64, ptr %61, align 8, !tbaa !9
  %508 = add nsw i64 %507, 1
  store i64 %508, ptr %61, align 8, !tbaa !9
  br label %459, !llvm.loop !21

509:                                              ; preds = %459
  br label %554

510:                                              ; preds = %453
  %511 = load ptr, ptr %25, align 8, !tbaa !5
  %512 = load i64, ptr %511, align 8, !tbaa !9
  store i64 %512, ptr %52, align 8, !tbaa !9
  store i64 1, ptr %61, align 8, !tbaa !9
  br label %513

513:                                              ; preds = %550, %510
  %514 = load i64, ptr %61, align 8, !tbaa !9
  %515 = load i64, ptr %52, align 8, !tbaa !9
  %516 = icmp sle i64 %514, %515
  br i1 %516, label %517, label %553

517:                                              ; preds = %513
  %518 = load i64, ptr %61, align 8, !tbaa !9
  %519 = load ptr, ptr %26, align 8, !tbaa !5
  %520 = load i64, ptr %519, align 8, !tbaa !9
  %521 = add nsw i64 %518, %520
  store i64 %521, ptr %53, align 8, !tbaa !9
  %522 = load i64, ptr %53, align 8, !tbaa !9
  %523 = load ptr, ptr %25, align 8, !tbaa !5
  %524 = load i64, ptr %523, align 8, !tbaa !9
  %525 = icmp sle i64 %522, %524
  br i1 %525, label %526, label %528

526:                                              ; preds = %517
  %527 = load i64, ptr %53, align 8, !tbaa !9
  br label %531

528:                                              ; preds = %517
  %529 = load ptr, ptr %25, align 8, !tbaa !5
  %530 = load i64, ptr %529, align 8, !tbaa !9
  br label %531

531:                                              ; preds = %528, %526
  %532 = phi i64 [ %527, %526 ], [ %530, %528 ]
  store i64 %532, ptr %63, align 8, !tbaa !9
  %533 = load i64, ptr %63, align 8, !tbaa !9
  %534 = load i64, ptr %61, align 8, !tbaa !9
  %535 = sub nsw i64 %533, %534
  %536 = add nsw i64 %535, 1
  store i64 %536, ptr %53, align 8, !tbaa !9
  %537 = load ptr, ptr %28, align 8, !tbaa !5
  %538 = load i64, ptr %61, align 8, !tbaa !9
  %539 = load i64, ptr %44, align 8, !tbaa !9
  %540 = mul nsw i64 %538, %539
  %541 = add nsw i64 %540, 1
  %542 = getelementptr inbounds %struct.complex, ptr %537, i64 %541
  %543 = load ptr, ptr %30, align 8, !tbaa !5
  %544 = load i64, ptr %61, align 8, !tbaa !9
  %545 = load i64, ptr %46, align 8, !tbaa !9
  %546 = mul nsw i64 %544, %545
  %547 = add nsw i64 %546, 1
  %548 = getelementptr inbounds %struct.complex, ptr %543, i64 %547
  %549 = call i32 @f2c_ccopy(ptr noundef %53, ptr noundef %542, ptr noundef @c__1, ptr noundef %548, ptr noundef @c__1)
  br label %550

550:                                              ; preds = %531
  %551 = load i64, ptr %61, align 8, !tbaa !9
  %552 = add nsw i64 %551, 1
  store i64 %552, ptr %61, align 8, !tbaa !9
  br label %513, !llvm.loop !22

553:                                              ; preds = %513
  br label %554

554:                                              ; preds = %553, %509
  %555 = load ptr, ptr %24, align 8, !tbaa !5
  %556 = load ptr, ptr %25, align 8, !tbaa !5
  %557 = load ptr, ptr %26, align 8, !tbaa !5
  %558 = load ptr, ptr %30, align 8, !tbaa !5
  %559 = load i64, ptr %47, align 8, !tbaa !9
  %560 = getelementptr inbounds %struct.complex, ptr %558, i64 %559
  %561 = load ptr, ptr %31, align 8, !tbaa !5
  %562 = load ptr, ptr %43, align 8, !tbaa !5
  %563 = call i32 @cpbtrf_(ptr noundef %555, ptr noundef %556, ptr noundef %557, ptr noundef %560, ptr noundef %561, ptr noundef %562)
  %564 = load ptr, ptr %43, align 8, !tbaa !5
  %565 = load i64, ptr %564, align 8, !tbaa !9
  %566 = icmp sgt i64 %565, 0
  br i1 %566, label %567, label %569

567:                                              ; preds = %554
  %568 = load ptr, ptr %38, align 8, !tbaa !5
  store float 0.000000e+00, ptr %568, align 4, !tbaa !12
  store i32 0, ptr %22, align 4
  store i32 1, ptr %76, align 4
  br label %750

569:                                              ; preds = %554
  br label %570

570:                                              ; preds = %569, %450
  %571 = load ptr, ptr %24, align 8, !tbaa !5
  %572 = load ptr, ptr %25, align 8, !tbaa !5
  %573 = load ptr, ptr %26, align 8, !tbaa !5
  %574 = load ptr, ptr %28, align 8, !tbaa !5
  %575 = load i64, ptr %45, align 8, !tbaa !9
  %576 = getelementptr inbounds %struct.complex, ptr %574, i64 %575
  %577 = load ptr, ptr %29, align 8, !tbaa !5
  %578 = load ptr, ptr %42, align 8, !tbaa !5
  %579 = getelementptr inbounds float, ptr %578, i64 1
  %580 = call double @clanhb_(ptr noundef @.str.8, ptr noundef %571, ptr noundef %572, ptr noundef %573, ptr noundef %576, ptr noundef %577, ptr noundef %579)
  %581 = fptrunc double %580 to float
  store float %581, ptr %68, align 4, !tbaa !12
  %582 = load ptr, ptr %24, align 8, !tbaa !5
  %583 = load ptr, ptr %25, align 8, !tbaa !5
  %584 = load ptr, ptr %26, align 8, !tbaa !5
  %585 = load ptr, ptr %30, align 8, !tbaa !5
  %586 = load i64, ptr %47, align 8, !tbaa !9
  %587 = getelementptr inbounds %struct.complex, ptr %585, i64 %586
  %588 = load ptr, ptr %31, align 8, !tbaa !5
  %589 = load ptr, ptr %38, align 8, !tbaa !5
  %590 = load ptr, ptr %41, align 8, !tbaa !5
  %591 = getelementptr inbounds %struct.complex, ptr %590, i64 1
  %592 = load ptr, ptr %42, align 8, !tbaa !5
  %593 = getelementptr inbounds float, ptr %592, i64 1
  %594 = load ptr, ptr %43, align 8, !tbaa !5
  %595 = call i32 @cpbcon_(ptr noundef %582, ptr noundef %583, ptr noundef %584, ptr noundef %587, ptr noundef %588, ptr noundef %68, ptr noundef %589, ptr noundef %591, ptr noundef %593, ptr noundef %594)
  %596 = load ptr, ptr %25, align 8, !tbaa !5
  %597 = load ptr, ptr %27, align 8, !tbaa !5
  %598 = load ptr, ptr %34, align 8, !tbaa !5
  %599 = load i64, ptr %49, align 8, !tbaa !9
  %600 = getelementptr inbounds %struct.complex, ptr %598, i64 %599
  %601 = load ptr, ptr %35, align 8, !tbaa !5
  %602 = load ptr, ptr %36, align 8, !tbaa !5
  %603 = load i64, ptr %51, align 8, !tbaa !9
  %604 = getelementptr inbounds %struct.complex, ptr %602, i64 %603
  %605 = load ptr, ptr %37, align 8, !tbaa !5
  %606 = call i32 @clacpy_(ptr noundef @.str.9, ptr noundef %596, ptr noundef %597, ptr noundef %600, ptr noundef %601, ptr noundef %604, ptr noundef %605)
  %607 = load ptr, ptr %24, align 8, !tbaa !5
  %608 = load ptr, ptr %25, align 8, !tbaa !5
  %609 = load ptr, ptr %26, align 8, !tbaa !5
  %610 = load ptr, ptr %27, align 8, !tbaa !5
  %611 = load ptr, ptr %30, align 8, !tbaa !5
  %612 = load i64, ptr %47, align 8, !tbaa !9
  %613 = getelementptr inbounds %struct.complex, ptr %611, i64 %612
  %614 = load ptr, ptr %31, align 8, !tbaa !5
  %615 = load ptr, ptr %36, align 8, !tbaa !5
  %616 = load i64, ptr %51, align 8, !tbaa !9
  %617 = getelementptr inbounds %struct.complex, ptr %615, i64 %616
  %618 = load ptr, ptr %37, align 8, !tbaa !5
  %619 = load ptr, ptr %43, align 8, !tbaa !5
  %620 = call i32 @cpbtrs_(ptr noundef %607, ptr noundef %608, ptr noundef %609, ptr noundef %610, ptr noundef %613, ptr noundef %614, ptr noundef %617, ptr noundef %618, ptr noundef %619)
  %621 = load ptr, ptr %24, align 8, !tbaa !5
  %622 = load ptr, ptr %25, align 8, !tbaa !5
  %623 = load ptr, ptr %26, align 8, !tbaa !5
  %624 = load ptr, ptr %27, align 8, !tbaa !5
  %625 = load ptr, ptr %28, align 8, !tbaa !5
  %626 = load i64, ptr %45, align 8, !tbaa !9
  %627 = getelementptr inbounds %struct.complex, ptr %625, i64 %626
  %628 = load ptr, ptr %29, align 8, !tbaa !5
  %629 = load ptr, ptr %30, align 8, !tbaa !5
  %630 = load i64, ptr %47, align 8, !tbaa !9
  %631 = getelementptr inbounds %struct.complex, ptr %629, i64 %630
  %632 = load ptr, ptr %31, align 8, !tbaa !5
  %633 = load ptr, ptr %34, align 8, !tbaa !5
  %634 = load i64, ptr %49, align 8, !tbaa !9
  %635 = getelementptr inbounds %struct.complex, ptr %633, i64 %634
  %636 = load ptr, ptr %35, align 8, !tbaa !5
  %637 = load ptr, ptr %36, align 8, !tbaa !5
  %638 = load i64, ptr %51, align 8, !tbaa !9
  %639 = getelementptr inbounds %struct.complex, ptr %637, i64 %638
  %640 = load ptr, ptr %37, align 8, !tbaa !5
  %641 = load ptr, ptr %39, align 8, !tbaa !5
  %642 = getelementptr inbounds float, ptr %641, i64 1
  %643 = load ptr, ptr %40, align 8, !tbaa !5
  %644 = getelementptr inbounds float, ptr %643, i64 1
  %645 = load ptr, ptr %41, align 8, !tbaa !5
  %646 = getelementptr inbounds %struct.complex, ptr %645, i64 1
  %647 = load ptr, ptr %42, align 8, !tbaa !5
  %648 = getelementptr inbounds float, ptr %647, i64 1
  %649 = load ptr, ptr %43, align 8, !tbaa !5
  %650 = call i32 @cpbrfs_(ptr noundef %621, ptr noundef %622, ptr noundef %623, ptr noundef %624, ptr noundef %627, ptr noundef %628, ptr noundef %631, ptr noundef %632, ptr noundef %635, ptr noundef %636, ptr noundef %639, ptr noundef %640, ptr noundef %642, ptr noundef %644, ptr noundef %646, ptr noundef %648, ptr noundef %649)
  %651 = load i64, ptr %70, align 8, !tbaa !9
  %652 = icmp ne i64 %651, 0
  br i1 %652, label %653, label %738

653:                                              ; preds = %570
  %654 = load ptr, ptr %27, align 8, !tbaa !5
  %655 = load i64, ptr %654, align 8, !tbaa !9
  store i64 %655, ptr %52, align 8, !tbaa !9
  store i64 1, ptr %61, align 8, !tbaa !9
  br label %656

656:                                              ; preds = %717, %653
  %657 = load i64, ptr %61, align 8, !tbaa !9
  %658 = load i64, ptr %52, align 8, !tbaa !9
  %659 = icmp sle i64 %657, %658
  br i1 %659, label %660, label %720

660:                                              ; preds = %656
  %661 = load ptr, ptr %25, align 8, !tbaa !5
  %662 = load i64, ptr %661, align 8, !tbaa !9
  store i64 %662, ptr %53, align 8, !tbaa !9
  store i64 1, ptr %60, align 8, !tbaa !9
  br label %663

663:                                              ; preds = %713, %660
  %664 = load i64, ptr %60, align 8, !tbaa !9
  %665 = load i64, ptr %53, align 8, !tbaa !9
  %666 = icmp sle i64 %664, %665
  br i1 %666, label %667, label %716

667:                                              ; preds = %663
  %668 = load i64, ptr %60, align 8, !tbaa !9
  %669 = load i64, ptr %61, align 8, !tbaa !9
  %670 = load i64, ptr %50, align 8, !tbaa !9
  %671 = mul nsw i64 %669, %670
  %672 = add nsw i64 %668, %671
  store i64 %672, ptr %54, align 8, !tbaa !9
  %673 = load i64, ptr %60, align 8, !tbaa !9
  store i64 %673, ptr %55, align 8, !tbaa !9
  %674 = load i64, ptr %60, align 8, !tbaa !9
  %675 = load i64, ptr %61, align 8, !tbaa !9
  %676 = load i64, ptr %50, align 8, !tbaa !9
  %677 = mul nsw i64 %675, %676
  %678 = add nsw i64 %674, %677
  store i64 %678, ptr %56, align 8, !tbaa !9
  %679 = load ptr, ptr %33, align 8, !tbaa !5
  %680 = load i64, ptr %55, align 8, !tbaa !9
  %681 = getelementptr inbounds float, ptr %679, i64 %680
  %682 = load float, ptr %681, align 4, !tbaa !12
  %683 = load ptr, ptr %36, align 8, !tbaa !5
  %684 = load i64, ptr %56, align 8, !tbaa !9
  %685 = getelementptr inbounds %struct.complex, ptr %683, i64 %684
  %686 = getelementptr inbounds %struct.complex, ptr %685, i32 0, i32 0
  %687 = load float, ptr %686, align 4, !tbaa !16
  %688 = fmul float %682, %687
  %689 = getelementptr inbounds %struct.complex, ptr %59, i32 0, i32 0
  store float %688, ptr %689, align 4, !tbaa !16
  %690 = load ptr, ptr %33, align 8, !tbaa !5
  %691 = load i64, ptr %55, align 8, !tbaa !9
  %692 = getelementptr inbounds float, ptr %690, i64 %691
  %693 = load float, ptr %692, align 4, !tbaa !12
  %694 = load ptr, ptr %36, align 8, !tbaa !5
  %695 = load i64, ptr %56, align 8, !tbaa !9
  %696 = getelementptr inbounds %struct.complex, ptr %694, i64 %695
  %697 = getelementptr inbounds %struct.complex, ptr %696, i32 0, i32 1
  %698 = load float, ptr %697, align 4, !tbaa !18
  %699 = fmul float %693, %698
  %700 = getelementptr inbounds %struct.complex, ptr %59, i32 0, i32 1
  store float %699, ptr %700, align 4, !tbaa !18
  %701 = getelementptr inbounds %struct.complex, ptr %59, i32 0, i32 0
  %702 = load float, ptr %701, align 4, !tbaa !16
  %703 = load ptr, ptr %36, align 8, !tbaa !5
  %704 = load i64, ptr %54, align 8, !tbaa !9
  %705 = getelementptr inbounds %struct.complex, ptr %703, i64 %704
  %706 = getelementptr inbounds %struct.complex, ptr %705, i32 0, i32 0
  store float %702, ptr %706, align 4, !tbaa !16
  %707 = getelementptr inbounds %struct.complex, ptr %59, i32 0, i32 1
  %708 = load float, ptr %707, align 4, !tbaa !18
  %709 = load ptr, ptr %36, align 8, !tbaa !5
  %710 = load i64, ptr %54, align 8, !tbaa !9
  %711 = getelementptr inbounds %struct.complex, ptr %709, i64 %710
  %712 = getelementptr inbounds %struct.complex, ptr %711, i32 0, i32 1
  store float %708, ptr %712, align 4, !tbaa !18
  br label %713

713:                                              ; preds = %667
  %714 = load i64, ptr %60, align 8, !tbaa !9
  %715 = add nsw i64 %714, 1
  store i64 %715, ptr %60, align 8, !tbaa !9
  br label %663, !llvm.loop !23

716:                                              ; preds = %663
  br label %717

717:                                              ; preds = %716
  %718 = load i64, ptr %61, align 8, !tbaa !9
  %719 = add nsw i64 %718, 1
  store i64 %719, ptr %61, align 8, !tbaa !9
  br label %656, !llvm.loop !24

720:                                              ; preds = %656
  %721 = load ptr, ptr %27, align 8, !tbaa !5
  %722 = load i64, ptr %721, align 8, !tbaa !9
  store i64 %722, ptr %52, align 8, !tbaa !9
  store i64 1, ptr %61, align 8, !tbaa !9
  br label %723

723:                                              ; preds = %734, %720
  %724 = load i64, ptr %61, align 8, !tbaa !9
  %725 = load i64, ptr %52, align 8, !tbaa !9
  %726 = icmp sle i64 %724, %725
  br i1 %726, label %727, label %737

727:                                              ; preds = %723
  %728 = load float, ptr %67, align 4, !tbaa !12
  %729 = load ptr, ptr %39, align 8, !tbaa !5
  %730 = load i64, ptr %61, align 8, !tbaa !9
  %731 = getelementptr inbounds float, ptr %729, i64 %730
  %732 = load float, ptr %731, align 4, !tbaa !12
  %733 = fdiv float %732, %728
  store float %733, ptr %731, align 4, !tbaa !12
  br label %734

734:                                              ; preds = %727
  %735 = load i64, ptr %61, align 8, !tbaa !9
  %736 = add nsw i64 %735, 1
  store i64 %736, ptr %61, align 8, !tbaa !9
  br label %723, !llvm.loop !25

737:                                              ; preds = %723
  br label %738

738:                                              ; preds = %737, %570
  %739 = load ptr, ptr %38, align 8, !tbaa !5
  %740 = load float, ptr %739, align 4, !tbaa !12
  %741 = fpext float %740 to double
  %742 = call double @slamch_(ptr noundef @.str.10)
  %743 = fcmp olt double %741, %742
  br i1 %743, label %744, label %749

744:                                              ; preds = %738
  %745 = load ptr, ptr %25, align 8, !tbaa !5
  %746 = load i64, ptr %745, align 8, !tbaa !9
  %747 = add nsw i64 %746, 1
  %748 = load ptr, ptr %43, align 8, !tbaa !5
  store i64 %747, ptr %748, align 8, !tbaa !9
  br label %749

749:                                              ; preds = %744, %738
  store i32 0, ptr %22, align 4
  store i32 1, ptr %76, align 4
  br label %750

750:                                              ; preds = %749, %567, %340
  call void @llvm.lifetime.end.p0(i64 4, ptr %75) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %74) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %73) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %72) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %71) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #3
  call void @llvm.lifetime.end.p0(i64 8, 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 8, ptr %63) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %58) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #3
  %751 = load i32, ptr %22, align 4
  ret i32 %751
}

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

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

declare double @slamch_(ptr noundef) #2

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

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

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

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

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

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

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

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

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

declare i32 @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 = !{!"long", !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 i64, align 8
@.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 noundef i32 @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 i64, align 8
  %23 = alloca i64, align 8
  %24 = alloca float, align 4
  %25 = alloca float, align 4
  %26 = alloca float, align 4
  %27 = alloca i64, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %22) #4
  call void @llvm.lifetime.start.p0(i64 8, 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 8, ptr nonnull %27) #4
  %28 = load i64, ptr %6, align 8, !tbaa !5
  %29 = xor i64 %28, -1
  %30 = getelementptr inbounds %struct.complex, ptr %5, i64 %29
  %31 = load i64, ptr %8, align 8, !tbaa !5
  %32 = xor i64 %31, -1
  %33 = getelementptr inbounds %struct.complex, ptr %7, i64 %32
  %34 = getelementptr inbounds i8, ptr %10, i64 -4
  %35 = load i64, ptr %12, align 8, !tbaa !5
  %36 = xor i64 %35, -1
  %37 = getelementptr inbounds %struct.complex, ptr %11, i64 %36
  %38 = load i64, ptr %14, align 8, !tbaa !5
  %39 = xor i64 %38, -1
  %40 = getelementptr inbounds %struct.complex, ptr %13, i64 %39
  %41 = getelementptr inbounds i8, ptr %16, i64 -4
  store i64 0, ptr %20, align 8, !tbaa !5
  %42 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str) #4
  %43 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.1) #4
  %44 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.2) #4
  %45 = icmp ne i64 %42, 0
  %46 = icmp ne i64 %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 %53

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

53:                                               ; preds = %.thread, %47
  %.0323 = phi float [ undef, %.thread ], [ %50, %47 ]
  %.0283322 = phi float [ undef, %.thread ], [ %51, %47 ]
  %.0285321 = phi i64 [ 0, %.thread ], [ %48, %47 ]
  %.not299 = icmp eq i64 %44, 0
  br i1 %.not299, label %54, label %56

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

56:                                               ; preds = %54, %53
  %57 = load i64, ptr %2, align 8, !tbaa !5
  %58 = icmp slt i64 %57, 0
  br i1 %58, label %.thread328.sink.split, label %59

59:                                               ; preds = %56
  %60 = load i64, ptr %3, align 8, !tbaa !5
  %61 = icmp slt i64 %60, 0
  br i1 %61, label %.thread328.sink.split, label %62

62:                                               ; preds = %59
  %63 = load i64, ptr %4, align 8, !tbaa !5
  %64 = icmp slt i64 %63, 0
  br i1 %64, label %.thread328.sink.split, label %65

65:                                               ; preds = %62
  %66 = load i64, ptr %6, align 8, !tbaa !5
  %.not301 = icmp sgt i64 %66, %60
  br i1 %.not301, label %67, label %.thread328.sink.split

67:                                               ; preds = %65
  %68 = load i64, ptr %8, align 8, !tbaa !5
  %.not302 = icmp sgt i64 %68, %60
  br i1 %.not302, label %69, label %.thread328.sink.split

69:                                               ; preds = %67
  %70 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.5) #4
  %71 = icmp eq i64 %70, 0
  %72 = icmp ne i64 %.0285321, 0
  %or.cond5 = select i1 %71, i1 true, i1 %72
  br i1 %or.cond5, label %75, label %73

73:                                               ; preds = %69
  %74 = tail call i64 @lsame_(ptr noundef %9, ptr noundef nonnull @.str) #4
  %.not303 = icmp eq i64 %74, 0
  br i1 %.not303, label %.thread328.sink.split, label %.thread324

75:                                               ; preds = %69
  br i1 %72, label %76, label %.thread324

76:                                               ; preds = %75
  %77 = load i64, ptr %2, align 8, !tbaa !5
  %.not304334 = icmp slt i64 %77, 1
  br i1 %.not304334, label %._crit_edge, label %.lr.ph.preheader

.lr.ph.preheader:                                 ; preds = %76
  %xtraiter = and i64 %77, 1
  %78 = icmp eq i64 %77, 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, 9223372036854775806
  br label %.lr.ph

.lr.ph:                                           ; preds = %.lr.ph, %.lr.ph.preheader.new
  %.0286337 = phi float [ 0.000000e+00, %.lr.ph.preheader.new ], [ %90, %.lr.ph ]
  %.0287336 = phi float [ %.0283322, %.lr.ph.preheader.new ], [ %88, %.lr.ph ]
  %.0288335 = phi i64 [ 1, %.lr.ph.preheader.new ], [ %91, %.lr.ph ]
  %niter = phi i64 [ 0, %.lr.ph.preheader.new ], [ %niter.next.1, %.lr.ph ]
  %79 = getelementptr inbounds float, ptr %34, i64 %.0288335
  %80 = load float, ptr %79, align 4, !tbaa !10
  %81 = fcmp ole float %.0287336, %80
  %82 = select i1 %81, float %.0287336, float %80
  %83 = fcmp oge float %.0286337, %80
  %84 = select i1 %83, float %.0286337, float %80
  %85 = getelementptr float, ptr %10, i64 %.0288335
  %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
  %91 = add nuw i64 %.0288335, 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
  %.lcssa456.ph = phi float [ poison, %.lr.ph.preheader ], [ %88, %.lr.ph ]
  %.lcssa455.ph = phi float [ poison, %.lr.ph.preheader ], [ %90, %.lr.ph ]
  %.0286337.unr = phi float [ 0.000000e+00, %.lr.ph.preheader ], [ %90, %.lr.ph ]
  %.0287336.unr = phi float [ %.0283322, %.lr.ph.preheader ], [ %88, %.lr.ph ]
  %.0288335.unr = phi i64 [ 1, %.lr.ph.preheader ], [ %91, %.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
  %92 = getelementptr inbounds float, ptr %34, i64 %.0288335.unr
  %93 = load float, ptr %92, align 4, !tbaa !10
  %94 = fcmp ole float %.0287336.unr, %93
  %95 = select i1 %94, float %.0287336.unr, float %93
  %96 = fcmp oge float %.0286337.unr, %93
  %97 = select i1 %96, float %.0286337.unr, float %93
  br label %._crit_edge

._crit_edge:                                      ; preds = %.lr.ph.epil, %._crit_edge.loopexit.unr-lcssa, %76
  %.0287.lcssa = phi float [ %.0283322, %76 ], [ %.lcssa456.ph, %._crit_edge.loopexit.unr-lcssa ], [ %95, %.lr.ph.epil ]
  %.0286.lcssa = phi float [ 0.000000e+00, %76 ], [ %.lcssa455.ph, %._crit_edge.loopexit.unr-lcssa ], [ %97, %.lr.ph.epil ]
  %98 = fcmp ugt float %.0287.lcssa, 0.000000e+00
  br i1 %98, label %99, label %.thread328.sink.split

99:                                               ; preds = %._crit_edge
  %100 = icmp sgt i64 %77, 0
  br i1 %100, label %101, label %107

101:                                              ; preds = %99
  %102 = fcmp oge float %.0287.lcssa, %.0323
  %103 = select i1 %102, float %.0287.lcssa, float %.0323
  %104 = fcmp ole float %.0286.lcssa, %.0283322
  %105 = select i1 %104, float %.0286.lcssa, float %.0283322
  %106 = fdiv float %103, %105
  store float %106, ptr %25, align 4, !tbaa !10
  br label %.thread324

107:                                              ; preds = %99
  store float 1.000000e+00, ptr %25, align 4, !tbaa !10
  br label %.thread324

.thread324:                                       ; preds = %73, %107, %101, %75
  %.pr = load i64, ptr %20, align 8, !tbaa !5
  %108 = icmp eq i64 %.pr, 0
  br i1 %108, label %109, label %.thread328

109:                                              ; preds = %.thread324
  %110 = load i64, ptr %12, align 8, !tbaa !5
  %111 = load i64, ptr %2, align 8, !tbaa !5
  %spec.select = tail call i64 @llvm.smax.i64(i64 %111, i64 1)
  %112 = icmp slt i64 %110, %spec.select
  br i1 %112, label %.thread328.sink.split, label %113

113:                                              ; preds = %109
  %114 = load i64, ptr %14, align 8, !tbaa !5
  %115 = icmp slt i64 %114, %spec.select
  br i1 %115, label %.thread328.sink.split, label %119

.thread328.sink.split:                            ; preds = %113, %109, %._crit_edge, %73, %67, %65, %62, %59, %56, %54, %47
  %.sink = phi i64 [ -1, %47 ], [ -2, %54 ], [ -3, %56 ], [ -4, %59 ], [ -5, %62 ], [ -7, %65 ], [ -9, %67 ], [ -10, %73 ], [ -11, %._crit_edge ], [ -13, %109 ], [ -15, %113 ]
  store i64 %.sink, ptr %20, align 8, !tbaa !5
  br label %.thread328

.thread328:                                       ; preds = %.thread328.sink.split, %.thread324
  %116 = phi i64 [ %.pr, %.thread324 ], [ %.sink, %.thread328.sink.split ]
  %117 = sub nsw i64 0, %116
  store i64 %117, ptr %22, align 8, !tbaa !5
  %118 = call i32 @xerbla_(ptr noundef nonnull @.str.7, ptr noundef nonnull %22) #4
  br label %278

119:                                              ; preds = %113
  br i1 %46, label %120, label %127

120:                                              ; preds = %119
  %121 = call i32 @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
  %122 = load i64, ptr %27, align 8, !tbaa !5
  %123 = icmp eq i64 %122, 0
  br i1 %123, label %124, label %127

124:                                              ; preds = %120
  %125 = call i32 @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
  %126 = call i64 @lsame_(ptr noundef %9, ptr noundef nonnull @.str.3) #4
  br label %127

127:                                              ; preds = %120, %124, %119
  %.1 = phi i64 [ %126, %124 ], [ %.0285321, %120 ], [ %.0285321, %119 ]
  %.not306 = icmp eq i64 %.1, 0
  br i1 %.not306, label %176, label %128

128:                                              ; preds = %127
  %129 = load i64, ptr %4, align 8, !tbaa !5
  %.not307344 = icmp slt i64 %129, 1
  br i1 %.not307344, label %.loopexit333, label %.lr.ph347

.lr.ph347:                                        ; preds = %128
  %130 = load i64, ptr %2, align 8, !tbaa !5
  %.not315339 = icmp slt i64 %130, 1
  br i1 %.not315339, label %.loopexit333, label %.lr.ph342.preheader

.lr.ph342.preheader:                              ; preds = %.lr.ph347
  %131 = add nsw i64 %130, -1
  %132 = shl i64 %35, 3
  %133 = add nuw i64 %129, 2305843009213693951
  %134 = mul i64 %35, %133
  %135 = add i64 %134, %130
  %136 = shl i64 %135, 3
  %scevgep400 = getelementptr i8, ptr %11, i64 %136
  %137 = shl i64 %130, 2
  %scevgep401 = getelementptr i8, ptr %10, i64 %137
  %min.iters.check = icmp ult i64 %130, 12
  %mul.result = shl i64 %131, 3
  %mul.result398 = shl i64 %131, 3
  %mul.overflow399 = icmp ugt i64 %131, 2305843009213693951
  %bound0 = icmp ugt ptr %scevgep401, %11
  %bound1 = icmp ugt ptr %scevgep400, %10
  %found.conflict = and i1 %bound0, %bound1
  %.mask = and i64 %35, 1152921504606846976
  %stride.check = icmp ne i64 %.mask, 0
  %138 = or i1 %found.conflict, %stride.check
  %n.vec = and i64 %130, 4611686018427387902
  %ind.end = or i64 %130, 1
  %cmp.n = icmp eq i64 %130, %n.vec
  %xtraiter459 = and i64 %130, 1
  %lcmp.mod460.not = icmp eq i64 %xtraiter459, 0
  br label %.lr.ph342

.lr.ph342:                                        ; preds = %.lr.ph342.preheader, %._crit_edge343
  %indvar = phi i64 [ 0, %.lr.ph342.preheader ], [ %indvar.next, %._crit_edge343 ]
  %.1289345 = phi i64 [ 1, %.lr.ph342.preheader ], [ %175, %._crit_edge343 ]
  %139 = mul nsw i64 %.1289345, %35
  %invariant.gep = getelementptr %struct.complex, ptr %37, i64 %139
  br i1 %min.iters.check, label %scalar.ph.preheader, label %vector.scevcheck

vector.scevcheck:                                 ; preds = %.lr.ph342
  %140 = mul i64 %132, %indvar
  %scevgep396 = getelementptr i8, ptr %11, i64 %140
  %141 = or disjoint i64 %140, 4
  %scevgep = getelementptr i8, ptr %11, i64 %141
  %142 = getelementptr i8, ptr %scevgep, i64 %mul.result
  %143 = icmp ult ptr %142, %scevgep
  %144 = getelementptr i8, ptr %scevgep396, i64 %mul.result398
  %145 = icmp ult ptr %144, %scevgep396
  %146 = or i1 %145, %mul.overflow399
  %147 = or i1 %143, %146
  %brmerge = select i1 %147, i1 true, i1 %138
  br i1 %brmerge, label %scalar.ph.preheader, label %vector.body

vector.body:                                      ; preds = %vector.scevcheck, %vector.body
  %index = phi i64 [ %index.next, %vector.body ], [ 0, %vector.scevcheck ]
  %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.gep, 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_edge343, label %scalar.ph.preheader

scalar.ph.preheader:                              ; preds = %vector.scevcheck, %middle.block, %.lr.ph342
  %.0290340.ph = phi i64 [ 1, %vector.scevcheck ], [ 1, %.lr.ph342 ], [ %ind.end, %middle.block ]
  br i1 %lcmp.mod460.not, label %scalar.ph.prol.loopexit, label %scalar.ph.prol

scalar.ph.prol:                                   ; preds = %scalar.ph.preheader
  %153 = getelementptr inbounds float, ptr %34, i64 %.0290340.ph
  %154 = load float, ptr %153, align 4, !tbaa !10
  %gep.prol = getelementptr %struct.complex, ptr %invariant.gep, i64 %.0290340.ph
  %155 = load <2 x float>, ptr %gep.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 %gep.prol, align 4, !tbaa !10
  %159 = add nuw nsw i64 %.0290340.ph, 1
  br label %scalar.ph.prol.loopexit

scalar.ph.prol.loopexit:                          ; preds = %scalar.ph.prol, %scalar.ph.preheader
  %.0290340.unr = phi i64 [ %.0290340.ph, %scalar.ph.preheader ], [ %159, %scalar.ph.prol ]
  %160 = icmp eq i64 %130, %.0290340.ph
  br i1 %160, label %._crit_edge343, label %scalar.ph

scalar.ph:                                        ; preds = %scalar.ph.prol.loopexit, %scalar.ph
  %.0290340 = phi i64 [ %174, %scalar.ph ], [ %.0290340.unr, %scalar.ph.prol.loopexit ]
  %161 = getelementptr inbounds float, ptr %34, i64 %.0290340
  %162 = load float, ptr %161, align 4, !tbaa !10
  %gep = getelementptr %struct.complex, ptr %invariant.gep, i64 %.0290340
  %163 = load <2 x float>, ptr %gep, align 4, !tbaa !10
  %164 = insertelement <2 x float> poison, float %162, i64 0
  %165 = shufflevector <2 x float> %164, <2 x float> poison, <2 x i32> zeroinitializer
  %166 = fmul <2 x float> %165, %163
  store <2 x float> %166, ptr %gep, align 4, !tbaa !10
  %167 = add nuw i64 %.0290340, 1
  %168 = getelementptr float, ptr %10, i64 %.0290340
  %169 = load float, ptr %168, align 4, !tbaa !10
  %gep.1 = getelementptr %struct.complex, ptr %invariant.gep, i64 %167
  %170 = load <2 x float>, ptr %gep.1, align 4, !tbaa !10
  %171 = insertelement <2 x float> poison, float %169, i64 0
  %172 = shufflevector <2 x float> %171, <2 x float> poison, <2 x i32> zeroinitializer
  %173 = fmul <2 x float> %172, %170
  store <2 x float> %173, ptr %gep.1, align 4, !tbaa !10
  %174 = add nuw i64 %.0290340, 2
  %exitcond383.not.1 = icmp eq i64 %167, %130
  br i1 %exitcond383.not.1, label %._crit_edge343, label %scalar.ph, !llvm.loop !20

._crit_edge343:                                   ; preds = %scalar.ph.prol.loopexit, %scalar.ph, %middle.block
  %175 = add nuw i64 %.1289345, 1
  %exitcond384.not = icmp eq i64 %.1289345, %129
  %indvar.next = add i64 %indvar, 1
  br i1 %exitcond384.not, label %.loopexit333, label %.lr.ph342, !llvm.loop !21

.loopexit333:                                     ; preds = %._crit_edge343, %.lr.ph347, %128
  %.lcssa = phi i64 [ undef, %128 ], [ %130, %.lr.ph347 ], [ %130, %._crit_edge343 ]
  store i64 %.lcssa, ptr %23, align 8, !tbaa !5
  br label %176

176:                                              ; preds = %.loopexit333, %127
  br i1 %or.cond, label %177, label %207

177:                                              ; preds = %176
  %178 = load i64, ptr %2, align 8, !tbaa !5
  br i1 %.not299, label %194, label %179

179:                                              ; preds = %177
  %.not311349 = icmp slt i64 %178, 1
  br i1 %.not311349, label %.loopexit331, label %.lr.ph352

.lr.ph352:                                        ; preds = %179, %.lr.ph352
  %.2350 = phi i64 [ %183, %.lr.ph352 ], [ 1, %179 ]
  %180 = load i64, ptr %3, align 8, !tbaa !5
  %181 = sub nsw i64 %.2350, %180
  %182 = call i64 @llvm.smax.i64(i64 %181, i64 1)
  %183 = add nuw i64 %.2350, 1
  %184 = sub i64 %183, %182
  store i64 %184, ptr %23, align 8, !tbaa !5
  %reass.sub = sub i64 %180, %.2350
  %185 = add i64 %reass.sub, 1
  %186 = add nsw i64 %185, %182
  %187 = mul nsw i64 %.2350, %28
  %188 = getelementptr %struct.complex, ptr %30, i64 %186
  %189 = getelementptr %struct.complex, ptr %188, i64 %187
  %190 = mul nsw i64 %.2350, %31
  %191 = getelementptr %struct.complex, ptr %33, i64 %186
  %192 = getelementptr %struct.complex, ptr %191, i64 %190
  %193 = call i32 @f2c_ccopy(ptr noundef nonnull %23, ptr noundef %189, ptr noundef nonnull @c__1, ptr noundef %192, ptr noundef nonnull @c__1) #4
  %.not311.not = icmp slt i64 %.2350, %178
  br i1 %.not311.not, label %.lr.ph352, label %.loopexit331, !llvm.loop !22

194:                                              ; preds = %177
  %invariant.gep353 = getelementptr i8, ptr %30, i64 8
  %invariant.gep355 = getelementptr i8, ptr %33, i64 8
  %.not309357 = icmp slt i64 %178, 1
  br i1 %.not309357, label %.loopexit331, label %.lr.ph360

.lr.ph360:                                        ; preds = %194, %.lr.ph360
  %.3358 = phi i64 [ %202, %.lr.ph360 ], [ 1, %194 ]
  %195 = load i64, ptr %3, align 8, !tbaa !5
  %196 = add nsw i64 %195, %.3358
  %197 = load i64, ptr %2, align 8, !tbaa !5
  %. = call i64 @llvm.smin.i64(i64 %196, i64 %197)
  %reass.sub377 = sub i64 %., %.3358
  %198 = add i64 %reass.sub377, 1
  store i64 %198, ptr %23, align 8, !tbaa !5
  %199 = mul nsw i64 %.3358, %28
  %gep354 = getelementptr %struct.complex, ptr %invariant.gep353, i64 %199
  %200 = mul nsw i64 %.3358, %31
  %gep356 = getelementptr %struct.complex, ptr %invariant.gep355, i64 %200
  %201 = call i32 @f2c_ccopy(ptr noundef nonnull %23, ptr noundef %gep354, ptr noundef nonnull @c__1, ptr noundef %gep356, ptr noundef nonnull @c__1) #4
  %202 = add nuw nsw i64 %.3358, 1
  %.not309.not = icmp slt i64 %.3358, %178
  br i1 %.not309.not, label %.lr.ph360, label %.loopexit331, !llvm.loop !23

.loopexit331:                                     ; preds = %.lr.ph352, %.lr.ph360, %179, %194
  %203 = call i32 @cpbtrf_(ptr noundef %1, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef %7, ptr noundef nonnull %8, ptr noundef nonnull %20) #4
  %204 = load i64, ptr %20, align 8, !tbaa !5
  %205 = icmp sgt i64 %204, 0
  br i1 %205, label %206, label %207

206:                                              ; preds = %.loopexit331
  store float 0.000000e+00, ptr %15, align 4, !tbaa !10
  br label %278

207:                                              ; preds = %.loopexit331, %176
  %208 = call double @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
  %209 = fptrunc double %208 to float
  store float %209, ptr %26, align 4, !tbaa !10
  %210 = call i32 @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
  %211 = call i32 @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
  %212 = call i32 @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
  %213 = call i32 @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 %.not306, label %.loopexit, label %214

214:                                              ; preds = %207
  %215 = load i64, ptr %4, align 8, !tbaa !5
  %.not312368 = icmp slt i64 %215, 1
  br i1 %.not312368, label %.loopexit, label %.lr.ph371

.lr.ph371:                                        ; preds = %214
  %216 = load i64, ptr %2, align 8, !tbaa !5
  %.not314361 = icmp slt i64 %216, 1
  br i1 %.not314361, label %.thread389, label %.lr.ph364.preheader

.lr.ph364.preheader:                              ; preds = %.lr.ph371
  %217 = add nsw i64 %216, -1
  %218 = shl i64 %38, 3
  %219 = add nuw i64 %215, 2305843009213693951
  %220 = mul i64 %38, %219
  %221 = add i64 %220, %216
  %222 = shl i64 %221, 3
  %scevgep415 = getelementptr i8, ptr %13, i64 %222
  %223 = shl i64 %216, 2
  %scevgep416 = getelementptr i8, ptr %10, i64 %223
  %min.iters.check423 = icmp ult i64 %216, 12
  %mul.result408 = shl i64 %217, 3
  %mul.result412 = shl i64 %217, 3
  %mul.overflow413 = icmp ugt i64 %217, 2305843009213693951
  %bound0417 = icmp ugt ptr %scevgep416, %13
  %bound1418 = icmp ugt ptr %scevgep415, %10
  %found.conflict419 = and i1 %bound0417, %bound1418
  %.mask453 = and i64 %38, 1152921504606846976
  %stride.check420 = icmp ne i64 %.mask453, 0
  %224 = or i1 %found.conflict419, %stride.check420
  %n.vec426 = and i64 %216, 4611686018427387902
  %ind.end427 = or i64 %216, 1
  %cmp.n438 = icmp eq i64 %216, %n.vec426
  %xtraiter461 = and i64 %216, 1
  %lcmp.mod462.not = icmp eq i64 %xtraiter461, 0
  br label %.lr.ph364

.thread389:                                       ; preds = %.lr.ph371
  store i64 %216, ptr %23, align 8, !tbaa !5
  br label %.lr.ph376

.lr.ph364:                                        ; preds = %.lr.ph364.preheader, %._crit_edge365
  %indvar404 = phi i64 [ 0, %.lr.ph364.preheader ], [ %indvar.next405, %._crit_edge365 ]
  %.4369 = phi i64 [ 1, %.lr.ph364.preheader ], [ %261, %._crit_edge365 ]
  %225 = mul nsw i64 %.4369, %38
  %invariant.gep366 = getelementptr %struct.complex, ptr %40, i64 %225
  br i1 %min.iters.check423, label %scalar.ph422.preheader, label %vector.scevcheck403

vector.scevcheck403:                              ; preds = %.lr.ph364
  %226 = mul i64 %218, %indvar404
  %scevgep410 = getelementptr i8, ptr %13, i64 %226
  %227 = or disjoint i64 %226, 4
  %scevgep406 = getelementptr i8, ptr %13, i64 %227
  %228 = getelementptr i8, ptr %scevgep406, i64 %mul.result408
  %229 = icmp ult ptr %228, %scevgep406
  %230 = getelementptr i8, ptr %scevgep410, i64 %mul.result412
  %231 = icmp ult ptr %230, %scevgep410
  %232 = or i1 %231, %mul.overflow413
  %233 = or i1 %229, %232
  %brmerge466 = select i1 %233, i1 true, i1 %224
  br i1 %brmerge466, label %scalar.ph422.preheader, label %vector.body429

vector.body429:                                   ; preds = %vector.scevcheck403, %vector.body429
  %index430 = phi i64 [ %index.next437, %vector.body429 ], [ 0, %vector.scevcheck403 ]
  %offset.idx431 = or disjoint i64 %index430, 1
  %234 = getelementptr float, ptr %10, i64 %index430
  %wide.load432 = load <2 x float>, ptr %234, align 4, !tbaa !10, !alias.scope !24
  %235 = getelementptr %struct.complex, ptr %invariant.gep366, i64 %offset.idx431
  %236 = load <4 x float>, ptr %235, align 4, !tbaa !10
  %237 = shufflevector <2 x float> %wide.load432, <2 x float> poison, <4 x i32> <i32 0, i32 0, i32 1, i32 1>
  %interleaved.vec436 = fmul <4 x float> %237, %236
  store <4 x float> %interleaved.vec436, ptr %235, align 4, !tbaa !10
  %index.next437 = add nuw i64 %index430, 2
  %238 = icmp eq i64 %index.next437, %n.vec426
  br i1 %238, label %middle.block421, label %vector.body429, !llvm.loop !27

middle.block421:                                  ; preds = %vector.body429
  br i1 %cmp.n438, label %._crit_edge365, label %scalar.ph422.preheader

scalar.ph422.preheader:                           ; preds = %vector.scevcheck403, %middle.block421, %.lr.ph364
  %.1291362.ph = phi i64 [ 1, %vector.scevcheck403 ], [ 1, %.lr.ph364 ], [ %ind.end427, %middle.block421 ]
  br i1 %lcmp.mod462.not, label %scalar.ph422.prol.loopexit, label %scalar.ph422.prol

scalar.ph422.prol:                                ; preds = %scalar.ph422.preheader
  %239 = getelementptr inbounds float, ptr %34, i64 %.1291362.ph
  %240 = load float, ptr %239, align 4, !tbaa !10
  %gep367.prol = getelementptr %struct.complex, ptr %invariant.gep366, i64 %.1291362.ph
  %241 = load <2 x float>, ptr %gep367.prol, align 4, !tbaa !10
  %242 = insertelement <2 x float> poison, float %240, i64 0
  %243 = shufflevector <2 x float> %242, <2 x float> poison, <2 x i32> zeroinitializer
  %244 = fmul <2 x float> %243, %241
  store <2 x float> %244, ptr %gep367.prol, align 4, !tbaa !10
  %245 = add nuw nsw i64 %.1291362.ph, 1
  br label %scalar.ph422.prol.loopexit

scalar.ph422.prol.loopexit:                       ; preds = %scalar.ph422.prol, %scalar.ph422.preheader
  %.1291362.unr = phi i64 [ %.1291362.ph, %scalar.ph422.preheader ], [ %245, %scalar.ph422.prol ]
  %246 = icmp eq i64 %216, %.1291362.ph
  br i1 %246, label %._crit_edge365, label %scalar.ph422

scalar.ph422:                                     ; preds = %scalar.ph422.prol.loopexit, %scalar.ph422
  %.1291362 = phi i64 [ %260, %scalar.ph422 ], [ %.1291362.unr, %scalar.ph422.prol.loopexit ]
  %247 = getelementptr inbounds float, ptr %34, i64 %.1291362
  %248 = load float, ptr %247, align 4, !tbaa !10
  %gep367 = getelementptr %struct.complex, ptr %invariant.gep366, i64 %.1291362
  %249 = load <2 x float>, ptr %gep367, align 4, !tbaa !10
  %250 = insertelement <2 x float> poison, float %248, i64 0
  %251 = shufflevector <2 x float> %250, <2 x float> poison, <2 x i32> zeroinitializer
  %252 = fmul <2 x float> %251, %249
  store <2 x float> %252, ptr %gep367, align 4, !tbaa !10
  %253 = add nuw i64 %.1291362, 1
  %254 = getelementptr float, ptr %10, i64 %.1291362
  %255 = load float, ptr %254, align 4, !tbaa !10
  %gep367.1 = getelementptr %struct.complex, ptr %invariant.gep366, i64 %253
  %256 = load <2 x float>, ptr %gep367.1, align 4, !tbaa !10
  %257 = insertelement <2 x float> poison, float %255, i64 0
  %258 = shufflevector <2 x float> %257, <2 x float> poison, <2 x i32> zeroinitializer
  %259 = fmul <2 x float> %258, %256
  store <2 x float> %259, ptr %gep367.1, align 4, !tbaa !10
  %260 = add nuw i64 %.1291362, 2
  %exitcond385.not.1 = icmp eq i64 %253, %216
  br i1 %exitcond385.not.1, label %._crit_edge365, label %scalar.ph422, !llvm.loop !28

._crit_edge365:                                   ; preds = %scalar.ph422.prol.loopexit, %scalar.ph422, %middle.block421
  %261 = add nuw i64 %.4369, 1
  %exitcond386.not = icmp eq i64 %.4369, %215
  %indvar.next405 = add i64 %indvar404, 1
  br i1 %exitcond386.not, label %262, label %.lr.ph364, !llvm.loop !29

262:                                              ; preds = %._crit_edge365
  store i64 %216, ptr %23, align 8, !tbaa !5
  br i1 %.not312368, label %.loopexit, label %.lr.ph376

.lr.ph376:                                        ; preds = %.thread389, %262
  %263 = load float, ptr %25, align 4, !tbaa !10
  %min.iters.check441 = icmp ult i64 %215, 4
  br i1 %min.iters.check441, label %scalar.ph440.preheader, label %vector.ph442

vector.ph442:                                     ; preds = %.lr.ph376
  %n.vec444 = and i64 %215, 9223372036854775804
  %ind.end445 = or disjoint i64 %n.vec444, 1
  %broadcast.splatinsert = insertelement <4 x float> poison, float %263, i64 0
  %broadcast.splat = shufflevector <4 x float> %broadcast.splatinsert, <4 x float> poison, <4 x i32> zeroinitializer
  br label %vector.body447

vector.body447:                                   ; preds = %vector.body447, %vector.ph442
  %index448 = phi i64 [ 0, %vector.ph442 ], [ %index.next451, %vector.body447 ]
  %264 = getelementptr float, ptr %16, i64 %index448
  %wide.load450 = load <4 x float>, ptr %264, align 4, !tbaa !10
  %265 = fdiv <4 x float> %wide.load450, %broadcast.splat
  store <4 x float> %265, ptr %264, align 4, !tbaa !10
  %index.next451 = add nuw i64 %index448, 4
  %266 = icmp eq i64 %index.next451, %n.vec444
  br i1 %266, label %middle.block439, label %vector.body447, !llvm.loop !30

middle.block439:                                  ; preds = %vector.body447
  %cmp.n452 = icmp eq i64 %215, %n.vec444
  br i1 %cmp.n452, label %.loopexit, label %scalar.ph440.preheader

scalar.ph440.preheader:                           ; preds = %middle.block439, %.lr.ph376
  %.5374.ph = phi i64 [ 1, %.lr.ph376 ], [ %ind.end445, %middle.block439 ]
  br label %scalar.ph440

scalar.ph440:                                     ; preds = %scalar.ph440.preheader, %scalar.ph440
  %.5374 = phi i64 [ %270, %scalar.ph440 ], [ %.5374.ph, %scalar.ph440.preheader ]
  %267 = getelementptr inbounds float, ptr %41, i64 %.5374
  %268 = load float, ptr %267, align 4, !tbaa !10
  %269 = fdiv float %268, %263
  store float %269, ptr %267, align 4, !tbaa !10
  %270 = add nuw i64 %.5374, 1
  %exitcond387.not = icmp eq i64 %.5374, %215
  br i1 %exitcond387.not, label %.loopexit, label %scalar.ph440, !llvm.loop !31

.loopexit:                                        ; preds = %scalar.ph440, %middle.block439, %214, %262, %207
  %271 = load float, ptr %15, align 4, !tbaa !10
  %272 = fpext float %271 to double
  %273 = call double @slamch_(ptr noundef nonnull @.str.10) #4
  %274 = fcmp ogt double %273, %272
  br i1 %274, label %275, label %278

275:                                              ; preds = %.loopexit
  %276 = load i64, ptr %2, align 8, !tbaa !5
  %277 = add nsw i64 %276, 1
  store i64 %277, ptr %20, align 8, !tbaa !5
  br label %278

278:                                              ; preds = %.loopexit, %275, %206, %.thread328
  call void @llvm.lifetime.end.p0(i64 8, 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 8, ptr nonnull %23) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #4
  ret i32 0
}

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

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

declare double @slamch_(ptr noundef) local_unnamed_addr #2

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

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

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

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

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

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

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

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

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

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i64 @llvm.smin.i64(i64, i64) #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 = !{!"long", !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,GlobalDCEPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferAlignmentPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopLoadEliminationPass,LoopRotatePass,LoopSimplifyCFGPass,LoopSimplifyPass,LoopUnrollPass,LoopVectorizePass,PostOrderFunctionAttrsPass,ReassociatePass,SCCPPass,SLPVectorizerPass,SROAPass,SimplifyCFGPass,TailCallElimPass,VectorCombinePass