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

; 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 [8 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [2 x i8], align 1
@c_true = external hidden global i64, align 8
@c_false = external hidden global i64, align 8

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

145:                                              ; preds = %24
  %146 = load ptr, ptr %46, align 8, !tbaa !5
  %147 = getelementptr inbounds float, ptr %146, i64 1
  %148 = load float, ptr %147, align 4, !tbaa !11
  %149 = fcmp olt float %148, 0.000000e+00
  br i1 %149, label %150, label %153

150:                                              ; preds = %145
  %151 = load ptr, ptr %46, align 8, !tbaa !5
  %152 = getelementptr inbounds float, ptr %151, i64 1
  store float 1.000000e+00, ptr %152, align 4, !tbaa !11
  br label %158

153:                                              ; preds = %145
  %154 = load ptr, ptr %46, align 8, !tbaa !5
  %155 = getelementptr inbounds float, ptr %154, i64 1
  %156 = load float, ptr %155, align 4, !tbaa !11
  %157 = fptosi float %156 to i64
  store i64 %157, ptr %68, align 8, !tbaa !9
  br label %158

158:                                              ; preds = %153, %150
  br label %159

159:                                              ; preds = %158, %24
  %160 = load ptr, ptr %28, align 8, !tbaa !5
  %161 = load i64, ptr %160, align 8, !tbaa !9
  %162 = sitofp i64 %161 to float
  %163 = fpext float %162 to double
  %164 = call double @slamch_(ptr noundef @.str)
  %165 = fmul double %163, %164
  %166 = fptrunc double %165 to float
  store float %166, ptr %65, align 4, !tbaa !11
  store i64 10, ptr %77, align 8, !tbaa !9
  store float 5.000000e-01, ptr %79, align 4, !tbaa !11
  store float 2.500000e-01, ptr %66, align 4, !tbaa !11
  store i64 0, ptr %74, align 8, !tbaa !9
  %167 = load ptr, ptr %45, align 8, !tbaa !5
  %168 = load i64, ptr %167, align 8, !tbaa !9
  %169 = icmp sge i64 %168, 2
  br i1 %169, label %170, label %186

170:                                              ; preds = %159
  %171 = load ptr, ptr %46, align 8, !tbaa !5
  %172 = getelementptr inbounds float, ptr %171, i64 2
  %173 = load float, ptr %172, align 4, !tbaa !11
  %174 = fcmp olt float %173, 0.000000e+00
  br i1 %174, label %175, label %180

175:                                              ; preds = %170
  %176 = load i64, ptr %77, align 8, !tbaa !9
  %177 = sitofp i64 %176 to float
  %178 = load ptr, ptr %46, align 8, !tbaa !5
  %179 = getelementptr inbounds float, ptr %178, i64 2
  store float %177, ptr %179, align 4, !tbaa !11
  br label %185

180:                                              ; preds = %170
  %181 = load ptr, ptr %46, align 8, !tbaa !5
  %182 = getelementptr inbounds float, ptr %181, i64 2
  %183 = load float, ptr %182, align 4, !tbaa !11
  %184 = fptosi float %183 to i64
  store i64 %184, ptr %77, align 8, !tbaa !9
  br label %185

185:                                              ; preds = %180, %175
  br label %186

186:                                              ; preds = %185, %159
  %187 = load ptr, ptr %45, align 8, !tbaa !5
  %188 = load i64, ptr %187, align 8, !tbaa !9
  %189 = icmp sge i64 %188, 3
  br i1 %189, label %190, label %213

190:                                              ; preds = %186
  %191 = load ptr, ptr %46, align 8, !tbaa !5
  %192 = getelementptr inbounds float, ptr %191, i64 3
  %193 = load float, ptr %192, align 4, !tbaa !11
  %194 = fcmp olt float %193, 0.000000e+00
  br i1 %194, label %195, label %205

195:                                              ; preds = %190
  %196 = load i64, ptr %74, align 8, !tbaa !9
  %197 = icmp ne i64 %196, 0
  br i1 %197, label %198, label %201

198:                                              ; preds = %195
  %199 = load ptr, ptr %46, align 8, !tbaa !5
  %200 = getelementptr inbounds float, ptr %199, i64 3
  store float 0.000000e+00, ptr %200, align 4, !tbaa !11
  br label %204

201:                                              ; preds = %195
  %202 = load ptr, ptr %46, align 8, !tbaa !5
  %203 = getelementptr inbounds float, ptr %202, i64 3
  store float 1.000000e+00, ptr %203, align 4, !tbaa !11
  br label %204

204:                                              ; preds = %201, %198
  br label %212

205:                                              ; preds = %190
  %206 = load ptr, ptr %46, align 8, !tbaa !5
  %207 = getelementptr inbounds float, ptr %206, i64 3
  %208 = load float, ptr %207, align 4, !tbaa !11
  %209 = fcmp oeq float %208, 0.000000e+00
  %210 = zext i1 %209 to i32
  %211 = sext i32 %210 to i64
  store i64 %211, ptr %74, align 8, !tbaa !9
  br label %212

212:                                              ; preds = %205, %204
  br label %213

213:                                              ; preds = %212, %186
  %214 = load i64, ptr %68, align 8, !tbaa !9
  %215 = icmp eq i64 %214, 0
  br i1 %215, label %220, label %216

216:                                              ; preds = %213
  %217 = load ptr, ptr %42, align 8, !tbaa !5
  %218 = load i64, ptr %217, align 8, !tbaa !9
  %219 = icmp eq i64 %218, 0
  br i1 %219, label %220, label %221

220:                                              ; preds = %216, %213
  store i64 0, ptr %78, align 8, !tbaa !9
  br label %227

221:                                              ; preds = %216
  %222 = load i64, ptr %74, align 8, !tbaa !9
  %223 = icmp ne i64 %222, 0
  br i1 %223, label %224, label %225

224:                                              ; preds = %221
  store i64 1, ptr %78, align 8, !tbaa !9
  br label %226

225:                                              ; preds = %221
  store i64 2, ptr %78, align 8, !tbaa !9
  br label %226

226:                                              ; preds = %225, %224
  br label %227

227:                                              ; preds = %226, %220
  %228 = load ptr, ptr %27, align 8, !tbaa !5
  %229 = call i64 @lsame_(ptr noundef %228, ptr noundef @.str.1)
  store i64 %229, ptr %76, align 8, !tbaa !9
  %230 = load ptr, ptr %26, align 8, !tbaa !5
  %231 = call i64 @lsame_(ptr noundef %230, ptr noundef @.str.2)
  %232 = icmp ne i64 %231, 0
  br i1 %232, label %239, label %233

233:                                              ; preds = %227
  %234 = load ptr, ptr %26, align 8, !tbaa !5
  %235 = call i64 @lsame_(ptr noundef %234, ptr noundef @.str.3)
  %236 = icmp ne i64 %235, 0
  br i1 %236, label %239, label %237

237:                                              ; preds = %233
  %238 = load ptr, ptr %49, align 8, !tbaa !5
  store i64 -1, ptr %238, align 8, !tbaa !9
  br label %327

239:                                              ; preds = %233, %227
  %240 = load i64, ptr %76, align 8, !tbaa !9
  %241 = icmp ne i64 %240, 0
  br i1 %241, label %248, label %242

242:                                              ; preds = %239
  %243 = load ptr, ptr %27, align 8, !tbaa !5
  %244 = call i64 @lsame_(ptr noundef %243, ptr noundef @.str.4)
  %245 = icmp ne i64 %244, 0
  br i1 %245, label %248, label %246

246:                                              ; preds = %242
  %247 = load ptr, ptr %49, align 8, !tbaa !5
  store i64 -2, ptr %247, align 8, !tbaa !9
  br label %326

248:                                              ; preds = %242, %239
  %249 = load ptr, ptr %28, align 8, !tbaa !5
  %250 = load i64, ptr %249, align 8, !tbaa !9
  %251 = icmp slt i64 %250, 0
  br i1 %251, label %252, label %254

252:                                              ; preds = %248
  %253 = load ptr, ptr %49, align 8, !tbaa !5
  store i64 -3, ptr %253, align 8, !tbaa !9
  br label %325

254:                                              ; preds = %248
  %255 = load ptr, ptr %29, align 8, !tbaa !5
  %256 = load i64, ptr %255, align 8, !tbaa !9
  %257 = icmp slt i64 %256, 0
  br i1 %257, label %258, label %260

258:                                              ; preds = %254
  %259 = load ptr, ptr %49, align 8, !tbaa !5
  store i64 -4, ptr %259, align 8, !tbaa !9
  br label %324

260:                                              ; preds = %254
  %261 = load ptr, ptr %31, align 8, !tbaa !5
  %262 = load i64, ptr %261, align 8, !tbaa !9
  %263 = load ptr, ptr %28, align 8, !tbaa !5
  %264 = load i64, ptr %263, align 8, !tbaa !9
  %265 = icmp sge i64 1, %264
  br i1 %265, label %266, label %267

266:                                              ; preds = %260
  br label %270

267:                                              ; preds = %260
  %268 = load ptr, ptr %28, align 8, !tbaa !5
  %269 = load i64, ptr %268, align 8, !tbaa !9
  br label %270

270:                                              ; preds = %267, %266
  %271 = phi i64 [ 1, %266 ], [ %269, %267 ]
  %272 = icmp slt i64 %262, %271
  br i1 %272, label %273, label %275

273:                                              ; preds = %270
  %274 = load ptr, ptr %49, align 8, !tbaa !5
  store i64 -6, ptr %274, align 8, !tbaa !9
  br label %323

275:                                              ; preds = %270
  %276 = load ptr, ptr %33, align 8, !tbaa !5
  %277 = load i64, ptr %276, align 8, !tbaa !9
  %278 = load ptr, ptr %28, align 8, !tbaa !5
  %279 = load i64, ptr %278, align 8, !tbaa !9
  %280 = icmp sge i64 1, %279
  br i1 %280, label %281, label %282

281:                                              ; preds = %275
  br label %285

282:                                              ; preds = %275
  %283 = load ptr, ptr %28, align 8, !tbaa !5
  %284 = load i64, ptr %283, align 8, !tbaa !9
  br label %285

285:                                              ; preds = %282, %281
  %286 = phi i64 [ 1, %281 ], [ %284, %282 ]
  %287 = icmp slt i64 %277, %286
  br i1 %287, label %288, label %290

288:                                              ; preds = %285
  %289 = load ptr, ptr %49, align 8, !tbaa !5
  store i64 -8, ptr %289, align 8, !tbaa !9
  br label %322

290:                                              ; preds = %285
  %291 = load ptr, ptr %37, align 8, !tbaa !5
  %292 = load i64, ptr %291, align 8, !tbaa !9
  %293 = load ptr, ptr %28, align 8, !tbaa !5
  %294 = load i64, ptr %293, align 8, !tbaa !9
  %295 = icmp sge i64 1, %294
  br i1 %295, label %296, label %297

296:                                              ; preds = %290
  br label %300

297:                                              ; preds = %290
  %298 = load ptr, ptr %28, align 8, !tbaa !5
  %299 = load i64, ptr %298, align 8, !tbaa !9
  br label %300

300:                                              ; preds = %297, %296
  %301 = phi i64 [ 1, %296 ], [ %299, %297 ]
  %302 = icmp slt i64 %292, %301
  br i1 %302, label %303, label %305

303:                                              ; preds = %300
  %304 = load ptr, ptr %49, align 8, !tbaa !5
  store i64 -11, ptr %304, align 8, !tbaa !9
  br label %321

305:                                              ; preds = %300
  %306 = load ptr, ptr %39, align 8, !tbaa !5
  %307 = load i64, ptr %306, align 8, !tbaa !9
  %308 = load ptr, ptr %28, align 8, !tbaa !5
  %309 = load i64, ptr %308, align 8, !tbaa !9
  %310 = icmp sge i64 1, %309
  br i1 %310, label %311, label %312

311:                                              ; preds = %305
  br label %315

312:                                              ; preds = %305
  %313 = load ptr, ptr %28, align 8, !tbaa !5
  %314 = load i64, ptr %313, align 8, !tbaa !9
  br label %315

315:                                              ; preds = %312, %311
  %316 = phi i64 [ 1, %311 ], [ %314, %312 ]
  %317 = icmp slt i64 %307, %316
  br i1 %317, label %318, label %320

318:                                              ; preds = %315
  %319 = load ptr, ptr %49, align 8, !tbaa !5
  store i64 -13, ptr %319, align 8, !tbaa !9
  br label %320

320:                                              ; preds = %318, %315
  br label %321

321:                                              ; preds = %320, %303
  br label %322

322:                                              ; preds = %321, %288
  br label %323

323:                                              ; preds = %322, %273
  br label %324

324:                                              ; preds = %323, %258
  br label %325

325:                                              ; preds = %324, %252
  br label %326

326:                                              ; preds = %325, %246
  br label %327

327:                                              ; preds = %326, %237
  %328 = load ptr, ptr %49, align 8, !tbaa !5
  %329 = load i64, ptr %328, align 8, !tbaa !9
  %330 = icmp ne i64 %329, 0
  br i1 %330, label %331, label %336

331:                                              ; preds = %327
  %332 = load ptr, ptr %49, align 8, !tbaa !5
  %333 = load i64, ptr %332, align 8, !tbaa !9
  %334 = sub nsw i64 0, %333
  store i64 %334, ptr %62, align 8, !tbaa !9
  %335 = call i32 @xerbla_(ptr noundef @.str.5, ptr noundef %62)
  store i32 0, ptr %25, align 4
  store i32 1, ptr %80, align 4
  br label %872

336:                                              ; preds = %327
  %337 = load ptr, ptr %28, align 8, !tbaa !5
  %338 = load i64, ptr %337, align 8, !tbaa !9
  %339 = icmp eq i64 %338, 0
  br i1 %339, label %344, label %340

340:                                              ; preds = %336
  %341 = load ptr, ptr %29, align 8, !tbaa !5
  %342 = load i64, ptr %341, align 8, !tbaa !9
  %343 = icmp eq i64 %342, 0
  br i1 %343, label %344, label %411

344:                                              ; preds = %340, %336
  %345 = load ptr, ptr %40, align 8, !tbaa !5
  store float 1.000000e+00, ptr %345, align 4, !tbaa !11
  %346 = load ptr, ptr %29, align 8, !tbaa !5
  %347 = load i64, ptr %346, align 8, !tbaa !9
  store i64 %347, ptr %62, align 8, !tbaa !9
  store i64 1, ptr %69, align 8, !tbaa !9
  br label %348

348:                                              ; preds = %407, %344
  %349 = load i64, ptr %69, align 8, !tbaa !9
  %350 = load i64, ptr %62, align 8, !tbaa !9
  %351 = icmp sle i64 %349, %350
  br i1 %351, label %352, label %410

352:                                              ; preds = %348
  %353 = load ptr, ptr %41, align 8, !tbaa !5
  %354 = load i64, ptr %69, align 8, !tbaa !9
  %355 = getelementptr inbounds float, ptr %353, i64 %354
  store float 0.000000e+00, ptr %355, align 4, !tbaa !11
  %356 = load ptr, ptr %42, align 8, !tbaa !5
  %357 = load i64, ptr %356, align 8, !tbaa !9
  %358 = icmp sge i64 %357, 1
  br i1 %358, label %359, label %370

359:                                              ; preds = %352
  %360 = load ptr, ptr %43, align 8, !tbaa !5
  %361 = load i64, ptr %69, align 8, !tbaa !9
  %362 = load i64, ptr %58, align 8, !tbaa !9
  %363 = add nsw i64 %361, %362
  %364 = getelementptr inbounds float, ptr %360, i64 %363
  store float 1.000000e+00, ptr %364, align 4, !tbaa !11
  %365 = load ptr, ptr %44, align 8, !tbaa !5
  %366 = load i64, ptr %69, align 8, !tbaa !9
  %367 = load i64, ptr %60, align 8, !tbaa !9
  %368 = add nsw i64 %366, %367
  %369 = getelementptr inbounds float, ptr %365, i64 %368
  store float 1.000000e+00, ptr %369, align 4, !tbaa !11
  br label %406

370:                                              ; preds = %352
  %371 = load ptr, ptr %42, align 8, !tbaa !5
  %372 = load i64, ptr %371, align 8, !tbaa !9
  %373 = icmp sge i64 %372, 2
  br i1 %373, label %374, label %387

374:                                              ; preds = %370
  %375 = load ptr, ptr %43, align 8, !tbaa !5
  %376 = load i64, ptr %69, align 8, !tbaa !9
  %377 = load i64, ptr %58, align 8, !tbaa !9
  %378 = shl i64 %377, 1
  %379 = add nsw i64 %376, %378
  %380 = getelementptr inbounds float, ptr %375, i64 %379
  store float 0.000000e+00, ptr %380, align 4, !tbaa !11
  %381 = load ptr, ptr %44, align 8, !tbaa !5
  %382 = load i64, ptr %69, align 8, !tbaa !9
  %383 = load i64, ptr %60, align 8, !tbaa !9
  %384 = shl i64 %383, 1
  %385 = add nsw i64 %382, %384
  %386 = getelementptr inbounds float, ptr %381, i64 %385
  store float 0.000000e+00, ptr %386, align 4, !tbaa !11
  br label %405

387:                                              ; preds = %370
  %388 = load ptr, ptr %42, align 8, !tbaa !5
  %389 = load i64, ptr %388, align 8, !tbaa !9
  %390 = icmp sge i64 %389, 3
  br i1 %390, label %391, label %404

391:                                              ; preds = %387
  %392 = load ptr, ptr %43, align 8, !tbaa !5
  %393 = load i64, ptr %69, align 8, !tbaa !9
  %394 = load i64, ptr %58, align 8, !tbaa !9
  %395 = mul nsw i64 %394, 3
  %396 = add nsw i64 %393, %395
  %397 = getelementptr inbounds float, ptr %392, i64 %396
  store float 1.000000e+00, ptr %397, align 4, !tbaa !11
  %398 = load ptr, ptr %44, align 8, !tbaa !5
  %399 = load i64, ptr %69, align 8, !tbaa !9
  %400 = load i64, ptr %60, align 8, !tbaa !9
  %401 = mul nsw i64 %400, 3
  %402 = add nsw i64 %399, %401
  %403 = getelementptr inbounds float, ptr %398, i64 %402
  store float 1.000000e+00, ptr %403, align 4, !tbaa !11
  br label %404

404:                                              ; preds = %391, %387
  br label %405

405:                                              ; preds = %404, %374
  br label %406

406:                                              ; preds = %405, %359
  br label %407

407:                                              ; preds = %406
  %408 = load i64, ptr %69, align 8, !tbaa !9
  %409 = add nsw i64 %408, 1
  store i64 %409, ptr %69, align 8, !tbaa !9
  br label %348, !llvm.loop !13

410:                                              ; preds = %348
  store i32 0, ptr %25, align 4
  store i32 1, ptr %80, align 4
  br label %872

411:                                              ; preds = %340
  %412 = load ptr, ptr %40, align 8, !tbaa !5
  store float 0.000000e+00, ptr %412, align 4, !tbaa !11
  %413 = load ptr, ptr %29, align 8, !tbaa !5
  %414 = load i64, ptr %413, align 8, !tbaa !9
  store i64 %414, ptr %62, align 8, !tbaa !9
  store i64 1, ptr %69, align 8, !tbaa !9
  br label %415

415:                                              ; preds = %474, %411
  %416 = load i64, ptr %69, align 8, !tbaa !9
  %417 = load i64, ptr %62, align 8, !tbaa !9
  %418 = icmp sle i64 %416, %417
  br i1 %418, label %419, label %477

419:                                              ; preds = %415
  %420 = load ptr, ptr %41, align 8, !tbaa !5
  %421 = load i64, ptr %69, align 8, !tbaa !9
  %422 = getelementptr inbounds float, ptr %420, i64 %421
  store float 1.000000e+00, ptr %422, align 4, !tbaa !11
  %423 = load ptr, ptr %42, align 8, !tbaa !5
  %424 = load i64, ptr %423, align 8, !tbaa !9
  %425 = icmp sge i64 %424, 1
  br i1 %425, label %426, label %437

426:                                              ; preds = %419
  %427 = load ptr, ptr %43, align 8, !tbaa !5
  %428 = load i64, ptr %69, align 8, !tbaa !9
  %429 = load i64, ptr %58, align 8, !tbaa !9
  %430 = add nsw i64 %428, %429
  %431 = getelementptr inbounds float, ptr %427, i64 %430
  store float 1.000000e+00, ptr %431, align 4, !tbaa !11
  %432 = load ptr, ptr %44, align 8, !tbaa !5
  %433 = load i64, ptr %69, align 8, !tbaa !9
  %434 = load i64, ptr %60, align 8, !tbaa !9
  %435 = add nsw i64 %433, %434
  %436 = getelementptr inbounds float, ptr %432, i64 %435
  store float 1.000000e+00, ptr %436, align 4, !tbaa !11
  br label %473

437:                                              ; preds = %419
  %438 = load ptr, ptr %42, align 8, !tbaa !5
  %439 = load i64, ptr %438, align 8, !tbaa !9
  %440 = icmp sge i64 %439, 2
  br i1 %440, label %441, label %454

441:                                              ; preds = %437
  %442 = load ptr, ptr %43, align 8, !tbaa !5
  %443 = load i64, ptr %69, align 8, !tbaa !9
  %444 = load i64, ptr %58, align 8, !tbaa !9
  %445 = shl i64 %444, 1
  %446 = add nsw i64 %443, %445
  %447 = getelementptr inbounds float, ptr %442, i64 %446
  store float 1.000000e+00, ptr %447, align 4, !tbaa !11
  %448 = load ptr, ptr %44, align 8, !tbaa !5
  %449 = load i64, ptr %69, align 8, !tbaa !9
  %450 = load i64, ptr %60, align 8, !tbaa !9
  %451 = shl i64 %450, 1
  %452 = add nsw i64 %449, %451
  %453 = getelementptr inbounds float, ptr %448, i64 %452
  store float 1.000000e+00, ptr %453, align 4, !tbaa !11
  br label %472

454:                                              ; preds = %437
  %455 = load ptr, ptr %42, align 8, !tbaa !5
  %456 = load i64, ptr %455, align 8, !tbaa !9
  %457 = icmp sge i64 %456, 3
  br i1 %457, label %458, label %471

458:                                              ; preds = %454
  %459 = load ptr, ptr %43, align 8, !tbaa !5
  %460 = load i64, ptr %69, align 8, !tbaa !9
  %461 = load i64, ptr %58, align 8, !tbaa !9
  %462 = mul nsw i64 %461, 3
  %463 = add nsw i64 %460, %462
  %464 = getelementptr inbounds float, ptr %459, i64 %463
  store float 0.000000e+00, ptr %464, align 4, !tbaa !11
  %465 = load ptr, ptr %44, align 8, !tbaa !5
  %466 = load i64, ptr %69, align 8, !tbaa !9
  %467 = load i64, ptr %60, align 8, !tbaa !9
  %468 = mul nsw i64 %467, 3
  %469 = add nsw i64 %466, %468
  %470 = getelementptr inbounds float, ptr %465, i64 %469
  store float 0.000000e+00, ptr %470, align 4, !tbaa !11
  br label %471

471:                                              ; preds = %458, %454
  br label %472

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

473:                                              ; preds = %472, %426
  br label %474

474:                                              ; preds = %473
  %475 = load i64, ptr %69, align 8, !tbaa !9
  %476 = add nsw i64 %475, 1
  store i64 %476, ptr %69, align 8, !tbaa !9
  br label %415, !llvm.loop !15

477:                                              ; preds = %415
  %478 = getelementptr inbounds [1 x i8], ptr %73, i64 0, i64 0
  store i8 73, ptr %478, align 1, !tbaa !16
  %479 = getelementptr inbounds [1 x i8], ptr %73, i64 0, i64 0
  %480 = load ptr, ptr %26, align 8, !tbaa !5
  %481 = load ptr, ptr %28, align 8, !tbaa !5
  %482 = load ptr, ptr %30, align 8, !tbaa !5
  %483 = load i64, ptr %51, align 8, !tbaa !9
  %484 = getelementptr inbounds %struct.complex, ptr %482, i64 %483
  %485 = load ptr, ptr %31, align 8, !tbaa !5
  %486 = load ptr, ptr %48, align 8, !tbaa !5
  %487 = getelementptr inbounds float, ptr %486, i64 1
  %488 = call double @clanhe_(ptr noundef %479, ptr noundef %480, ptr noundef %481, ptr noundef %484, ptr noundef %485, ptr noundef %487)
  %489 = fptrunc double %488 to float
  store float %489, ptr %75, align 4, !tbaa !11
  %490 = load ptr, ptr %26, align 8, !tbaa !5
  %491 = load ptr, ptr %28, align 8, !tbaa !5
  %492 = load ptr, ptr %32, align 8, !tbaa !5
  %493 = load i64, ptr %53, align 8, !tbaa !9
  %494 = getelementptr inbounds %struct.complex, ptr %492, i64 %493
  %495 = load ptr, ptr %33, align 8, !tbaa !5
  %496 = load ptr, ptr %34, align 8, !tbaa !5
  %497 = getelementptr inbounds i64, ptr %496, i64 1
  %498 = load ptr, ptr %40, align 8, !tbaa !5
  %499 = load ptr, ptr %47, align 8, !tbaa !5
  %500 = getelementptr inbounds %struct.complex, ptr %499, i64 1
  %501 = load ptr, ptr %49, align 8, !tbaa !5
  %502 = call i32 @checon_(ptr noundef %490, ptr noundef %491, ptr noundef %494, ptr noundef %495, ptr noundef %497, ptr noundef %75, ptr noundef %498, ptr noundef %500, ptr noundef %501)
  %503 = load i64, ptr %68, align 8, !tbaa !9
  %504 = icmp ne i64 %503, 0
  br i1 %504, label %505, label %552

505:                                              ; preds = %477
  %506 = call i64 @ilaprec_(ptr noundef @.str.6)
  store i64 %506, ptr %71, align 8, !tbaa !9
  %507 = load ptr, ptr %26, align 8, !tbaa !5
  %508 = load ptr, ptr %28, align 8, !tbaa !5
  %509 = load ptr, ptr %29, align 8, !tbaa !5
  %510 = load ptr, ptr %30, align 8, !tbaa !5
  %511 = load i64, ptr %51, align 8, !tbaa !9
  %512 = getelementptr inbounds %struct.complex, ptr %510, i64 %511
  %513 = load ptr, ptr %31, align 8, !tbaa !5
  %514 = load ptr, ptr %32, align 8, !tbaa !5
  %515 = load i64, ptr %53, align 8, !tbaa !9
  %516 = getelementptr inbounds %struct.complex, ptr %514, i64 %515
  %517 = load ptr, ptr %33, align 8, !tbaa !5
  %518 = load ptr, ptr %34, align 8, !tbaa !5
  %519 = getelementptr inbounds i64, ptr %518, i64 1
  %520 = load ptr, ptr %35, align 8, !tbaa !5
  %521 = getelementptr inbounds float, ptr %520, i64 1
  %522 = load ptr, ptr %36, align 8, !tbaa !5
  %523 = load i64, ptr %55, align 8, !tbaa !9
  %524 = getelementptr inbounds %struct.complex, ptr %522, i64 %523
  %525 = load ptr, ptr %37, align 8, !tbaa !5
  %526 = load ptr, ptr %38, align 8, !tbaa !5
  %527 = load i64, ptr %57, align 8, !tbaa !9
  %528 = getelementptr inbounds %struct.complex, ptr %526, i64 %527
  %529 = load ptr, ptr %39, align 8, !tbaa !5
  %530 = load ptr, ptr %41, align 8, !tbaa !5
  %531 = getelementptr inbounds float, ptr %530, i64 1
  %532 = load ptr, ptr %43, align 8, !tbaa !5
  %533 = load i64, ptr %59, align 8, !tbaa !9
  %534 = getelementptr inbounds float, ptr %532, i64 %533
  %535 = load ptr, ptr %44, align 8, !tbaa !5
  %536 = load i64, ptr %61, align 8, !tbaa !9
  %537 = getelementptr inbounds float, ptr %535, i64 %536
  %538 = load ptr, ptr %47, align 8, !tbaa !5
  %539 = getelementptr inbounds %struct.complex, ptr %538, i64 1
  %540 = load ptr, ptr %48, align 8, !tbaa !5
  %541 = getelementptr inbounds float, ptr %540, i64 1
  %542 = load ptr, ptr %47, align 8, !tbaa !5
  %543 = load ptr, ptr %28, align 8, !tbaa !5
  %544 = load i64, ptr %543, align 8, !tbaa !9
  %545 = add nsw i64 %544, 1
  %546 = getelementptr inbounds %struct.complex, ptr %542, i64 %545
  %547 = load ptr, ptr %48, align 8, !tbaa !5
  %548 = getelementptr inbounds float, ptr %547, i64 1
  %549 = load ptr, ptr %40, align 8, !tbaa !5
  %550 = load ptr, ptr %49, align 8, !tbaa !5
  %551 = call i32 @cla_herfsx_extended__(ptr noundef %71, ptr noundef %507, ptr noundef %508, ptr noundef %509, ptr noundef %512, ptr noundef %513, ptr noundef %516, ptr noundef %517, ptr noundef %519, ptr noundef %76, ptr noundef %521, ptr noundef %524, ptr noundef %525, ptr noundef %528, ptr noundef %529, ptr noundef %531, ptr noundef %78, ptr noundef %534, ptr noundef %537, ptr noundef %539, ptr noundef %541, ptr noundef %546, ptr noundef %548, ptr noundef %549, ptr noundef %77, ptr noundef %79, ptr noundef %66, ptr noundef %74, ptr noundef %550, i64 noundef 1)
  br label %552

552:                                              ; preds = %505, %477
  store float 1.000000e+01, ptr %63, align 4, !tbaa !11
  %553 = load ptr, ptr %28, align 8, !tbaa !5
  %554 = load i64, ptr %553, align 8, !tbaa !9
  %555 = sitofp i64 %554 to float
  %556 = fpext float %555 to double
  %557 = call double @sqrt(double noundef %556) #4
  %558 = fptrunc double %557 to float
  store float %558, ptr %64, align 4, !tbaa !11
  %559 = load float, ptr %63, align 4, !tbaa !11
  %560 = load float, ptr %64, align 4, !tbaa !11
  %561 = fcmp oge float %559, %560
  br i1 %561, label %562, label %564

562:                                              ; preds = %552
  %563 = load float, ptr %63, align 4, !tbaa !11
  br label %566

564:                                              ; preds = %552
  %565 = load float, ptr %64, align 4, !tbaa !11
  br label %566

566:                                              ; preds = %564, %562
  %567 = phi float [ %563, %562 ], [ %565, %564 ]
  %568 = fpext float %567 to double
  %569 = call double @slamch_(ptr noundef @.str)
  %570 = fmul double %568, %569
  %571 = fptrunc double %570 to float
  store float %571, ptr %67, align 4, !tbaa !11
  %572 = load ptr, ptr %42, align 8, !tbaa !5
  %573 = load i64, ptr %572, align 8, !tbaa !9
  %574 = icmp sge i64 %573, 1
  br i1 %574, label %575, label %721

575:                                              ; preds = %566
  %576 = load i64, ptr %78, align 8, !tbaa !9
  %577 = icmp sge i64 %576, 1
  br i1 %577, label %578, label %721

578:                                              ; preds = %575
  %579 = load i64, ptr %76, align 8, !tbaa !9
  %580 = icmp ne i64 %579, 0
  br i1 %580, label %581, label %603

581:                                              ; preds = %578
  %582 = load ptr, ptr %26, align 8, !tbaa !5
  %583 = load ptr, ptr %28, align 8, !tbaa !5
  %584 = load ptr, ptr %30, align 8, !tbaa !5
  %585 = load i64, ptr %51, align 8, !tbaa !9
  %586 = getelementptr inbounds %struct.complex, ptr %584, i64 %585
  %587 = load ptr, ptr %31, align 8, !tbaa !5
  %588 = load ptr, ptr %32, align 8, !tbaa !5
  %589 = load i64, ptr %53, align 8, !tbaa !9
  %590 = getelementptr inbounds %struct.complex, ptr %588, i64 %589
  %591 = load ptr, ptr %33, align 8, !tbaa !5
  %592 = load ptr, ptr %34, align 8, !tbaa !5
  %593 = getelementptr inbounds i64, ptr %592, i64 1
  %594 = load ptr, ptr %35, align 8, !tbaa !5
  %595 = getelementptr inbounds float, ptr %594, i64 1
  %596 = load ptr, ptr %49, align 8, !tbaa !5
  %597 = load ptr, ptr %47, align 8, !tbaa !5
  %598 = getelementptr inbounds %struct.complex, ptr %597, i64 1
  %599 = load ptr, ptr %48, align 8, !tbaa !5
  %600 = getelementptr inbounds float, ptr %599, i64 1
  %601 = call double @cla_hercond_c__(ptr noundef %582, ptr noundef %583, ptr noundef %586, ptr noundef %587, ptr noundef %590, ptr noundef %591, ptr noundef %593, ptr noundef %595, ptr noundef @c_true, ptr noundef %596, ptr noundef %598, ptr noundef %600, i64 noundef 1)
  %602 = fptrunc double %601 to float
  store float %602, ptr %70, align 4, !tbaa !11
  br label %625

603:                                              ; preds = %578
  %604 = load ptr, ptr %26, align 8, !tbaa !5
  %605 = load ptr, ptr %28, align 8, !tbaa !5
  %606 = load ptr, ptr %30, align 8, !tbaa !5
  %607 = load i64, ptr %51, align 8, !tbaa !9
  %608 = getelementptr inbounds %struct.complex, ptr %606, i64 %607
  %609 = load ptr, ptr %31, align 8, !tbaa !5
  %610 = load ptr, ptr %32, align 8, !tbaa !5
  %611 = load i64, ptr %53, align 8, !tbaa !9
  %612 = getelementptr inbounds %struct.complex, ptr %610, i64 %611
  %613 = load ptr, ptr %33, align 8, !tbaa !5
  %614 = load ptr, ptr %34, align 8, !tbaa !5
  %615 = getelementptr inbounds i64, ptr %614, i64 1
  %616 = load ptr, ptr %35, align 8, !tbaa !5
  %617 = getelementptr inbounds float, ptr %616, i64 1
  %618 = load ptr, ptr %49, align 8, !tbaa !5
  %619 = load ptr, ptr %47, align 8, !tbaa !5
  %620 = getelementptr inbounds %struct.complex, ptr %619, i64 1
  %621 = load ptr, ptr %48, align 8, !tbaa !5
  %622 = getelementptr inbounds float, ptr %621, i64 1
  %623 = call double @cla_hercond_c__(ptr noundef %604, ptr noundef %605, ptr noundef %608, ptr noundef %609, ptr noundef %612, ptr noundef %613, ptr noundef %615, ptr noundef %617, ptr noundef @c_false, ptr noundef %618, ptr noundef %620, ptr noundef %622, i64 noundef 1)
  %624 = fptrunc double %623 to float
  store float %624, ptr %70, align 4, !tbaa !11
  br label %625

625:                                              ; preds = %603, %581
  %626 = load ptr, ptr %29, align 8, !tbaa !5
  %627 = load i64, ptr %626, align 8, !tbaa !9
  store i64 %627, ptr %62, align 8, !tbaa !9
  store i64 1, ptr %69, align 8, !tbaa !9
  br label %628

628:                                              ; preds = %717, %625
  %629 = load i64, ptr %69, align 8, !tbaa !9
  %630 = load i64, ptr %62, align 8, !tbaa !9
  %631 = icmp sle i64 %629, %630
  br i1 %631, label %632, label %720

632:                                              ; preds = %628
  %633 = load ptr, ptr %42, align 8, !tbaa !5
  %634 = load i64, ptr %633, align 8, !tbaa !9
  %635 = icmp sge i64 %634, 2
  br i1 %635, label %636, label %652

636:                                              ; preds = %632
  %637 = load ptr, ptr %43, align 8, !tbaa !5
  %638 = load i64, ptr %69, align 8, !tbaa !9
  %639 = load i64, ptr %58, align 8, !tbaa !9
  %640 = shl i64 %639, 1
  %641 = add nsw i64 %638, %640
  %642 = getelementptr inbounds float, ptr %637, i64 %641
  %643 = load float, ptr %642, align 4, !tbaa !11
  %644 = fcmp ogt float %643, 1.000000e+00
  br i1 %644, label %645, label %652

645:                                              ; preds = %636
  %646 = load ptr, ptr %43, align 8, !tbaa !5
  %647 = load i64, ptr %69, align 8, !tbaa !9
  %648 = load i64, ptr %58, align 8, !tbaa !9
  %649 = shl i64 %648, 1
  %650 = add nsw i64 %647, %649
  %651 = getelementptr inbounds float, ptr %646, i64 %650
  store float 1.000000e+00, ptr %651, align 4, !tbaa !11
  br label %652

652:                                              ; preds = %645, %636, %632
  %653 = load float, ptr %70, align 4, !tbaa !11
  %654 = load float, ptr %65, align 4, !tbaa !11
  %655 = fcmp olt float %653, %654
  br i1 %655, label %656, label %680

656:                                              ; preds = %652
  %657 = load ptr, ptr %43, align 8, !tbaa !5
  %658 = load i64, ptr %69, align 8, !tbaa !9
  %659 = load i64, ptr %58, align 8, !tbaa !9
  %660 = shl i64 %659, 1
  %661 = add nsw i64 %658, %660
  %662 = getelementptr inbounds float, ptr %657, i64 %661
  store float 1.000000e+00, ptr %662, align 4, !tbaa !11
  %663 = load ptr, ptr %43, align 8, !tbaa !5
  %664 = load i64, ptr %69, align 8, !tbaa !9
  %665 = load i64, ptr %58, align 8, !tbaa !9
  %666 = add nsw i64 %664, %665
  %667 = getelementptr inbounds float, ptr %663, i64 %666
  store float 0.000000e+00, ptr %667, align 4, !tbaa !11
  %668 = load ptr, ptr %49, align 8, !tbaa !5
  %669 = load i64, ptr %668, align 8, !tbaa !9
  %670 = load ptr, ptr %28, align 8, !tbaa !5
  %671 = load i64, ptr %670, align 8, !tbaa !9
  %672 = icmp sle i64 %669, %671
  br i1 %672, label %673, label %679

673:                                              ; preds = %656
  %674 = load ptr, ptr %28, align 8, !tbaa !5
  %675 = load i64, ptr %674, align 8, !tbaa !9
  %676 = load i64, ptr %69, align 8, !tbaa !9
  %677 = add nsw i64 %675, %676
  %678 = load ptr, ptr %49, align 8, !tbaa !5
  store i64 %677, ptr %678, align 8, !tbaa !9
  br label %679

679:                                              ; preds = %673, %656
  br label %704

680:                                              ; preds = %652
  %681 = load ptr, ptr %43, align 8, !tbaa !5
  %682 = load i64, ptr %69, align 8, !tbaa !9
  %683 = load i64, ptr %58, align 8, !tbaa !9
  %684 = shl i64 %683, 1
  %685 = add nsw i64 %682, %684
  %686 = getelementptr inbounds float, ptr %681, i64 %685
  %687 = load float, ptr %686, align 4, !tbaa !11
  %688 = load float, ptr %67, align 4, !tbaa !11
  %689 = fcmp olt float %687, %688
  br i1 %689, label %690, label %703

690:                                              ; preds = %680
  %691 = load float, ptr %67, align 4, !tbaa !11
  %692 = load ptr, ptr %43, align 8, !tbaa !5
  %693 = load i64, ptr %69, align 8, !tbaa !9
  %694 = load i64, ptr %58, align 8, !tbaa !9
  %695 = shl i64 %694, 1
  %696 = add nsw i64 %693, %695
  %697 = getelementptr inbounds float, ptr %692, i64 %696
  store float %691, ptr %697, align 4, !tbaa !11
  %698 = load ptr, ptr %43, align 8, !tbaa !5
  %699 = load i64, ptr %69, align 8, !tbaa !9
  %700 = load i64, ptr %58, align 8, !tbaa !9
  %701 = add nsw i64 %699, %700
  %702 = getelementptr inbounds float, ptr %698, i64 %701
  store float 1.000000e+00, ptr %702, align 4, !tbaa !11
  br label %703

703:                                              ; preds = %690, %680
  br label %704

704:                                              ; preds = %703, %679
  %705 = load ptr, ptr %42, align 8, !tbaa !5
  %706 = load i64, ptr %705, align 8, !tbaa !9
  %707 = icmp sge i64 %706, 3
  br i1 %707, label %708, label %716

708:                                              ; preds = %704
  %709 = load float, ptr %70, align 4, !tbaa !11
  %710 = load ptr, ptr %43, align 8, !tbaa !5
  %711 = load i64, ptr %69, align 8, !tbaa !9
  %712 = load i64, ptr %58, align 8, !tbaa !9
  %713 = mul nsw i64 %712, 3
  %714 = add nsw i64 %711, %713
  %715 = getelementptr inbounds float, ptr %710, i64 %714
  store float %709, ptr %715, align 4, !tbaa !11
  br label %716

716:                                              ; preds = %708, %704
  br label %717

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

720:                                              ; preds = %628
  br label %721

721:                                              ; preds = %720, %575, %566
  %722 = load ptr, ptr %42, align 8, !tbaa !5
  %723 = load i64, ptr %722, align 8, !tbaa !9
  %724 = icmp sge i64 %723, 1
  br i1 %724, label %725, label %871

725:                                              ; preds = %721
  %726 = load i64, ptr %78, align 8, !tbaa !9
  %727 = icmp sge i64 %726, 2
  br i1 %727, label %728, label %871

728:                                              ; preds = %725
  %729 = call double @slamch_(ptr noundef @.str)
  %730 = call double @sqrt(double noundef %729) #4
  %731 = fptrunc double %730 to float
  store float %731, ptr %72, align 4, !tbaa !11
  %732 = load ptr, ptr %29, align 8, !tbaa !5
  %733 = load i64, ptr %732, align 8, !tbaa !9
  store i64 %733, ptr %62, align 8, !tbaa !9
  store i64 1, ptr %69, align 8, !tbaa !9
  br label %734

734:                                              ; preds = %867, %728
  %735 = load i64, ptr %69, align 8, !tbaa !9
  %736 = load i64, ptr %62, align 8, !tbaa !9
  %737 = icmp sle i64 %735, %736
  br i1 %737, label %738, label %870

738:                                              ; preds = %734
  %739 = load ptr, ptr %44, align 8, !tbaa !5
  %740 = load i64, ptr %69, align 8, !tbaa !9
  %741 = load i64, ptr %60, align 8, !tbaa !9
  %742 = shl i64 %741, 1
  %743 = add nsw i64 %740, %742
  %744 = getelementptr inbounds float, ptr %739, i64 %743
  %745 = load float, ptr %744, align 4, !tbaa !11
  %746 = load float, ptr %72, align 4, !tbaa !11
  %747 = fcmp olt float %745, %746
  br i1 %747, label %748, label %774

748:                                              ; preds = %738
  %749 = load ptr, ptr %26, align 8, !tbaa !5
  %750 = load ptr, ptr %28, align 8, !tbaa !5
  %751 = load ptr, ptr %30, align 8, !tbaa !5
  %752 = load i64, ptr %51, align 8, !tbaa !9
  %753 = getelementptr inbounds %struct.complex, ptr %751, i64 %752
  %754 = load ptr, ptr %31, align 8, !tbaa !5
  %755 = load ptr, ptr %32, align 8, !tbaa !5
  %756 = load i64, ptr %53, align 8, !tbaa !9
  %757 = getelementptr inbounds %struct.complex, ptr %755, i64 %756
  %758 = load ptr, ptr %33, align 8, !tbaa !5
  %759 = load ptr, ptr %34, align 8, !tbaa !5
  %760 = getelementptr inbounds i64, ptr %759, i64 1
  %761 = load ptr, ptr %38, align 8, !tbaa !5
  %762 = load i64, ptr %69, align 8, !tbaa !9
  %763 = load i64, ptr %56, align 8, !tbaa !9
  %764 = mul nsw i64 %762, %763
  %765 = add nsw i64 %764, 1
  %766 = getelementptr inbounds %struct.complex, ptr %761, i64 %765
  %767 = load ptr, ptr %49, align 8, !tbaa !5
  %768 = load ptr, ptr %47, align 8, !tbaa !5
  %769 = getelementptr inbounds %struct.complex, ptr %768, i64 1
  %770 = load ptr, ptr %48, align 8, !tbaa !5
  %771 = getelementptr inbounds float, ptr %770, i64 1
  %772 = call double @cla_hercond_x__(ptr noundef %749, ptr noundef %750, ptr noundef %753, ptr noundef %754, ptr noundef %757, ptr noundef %758, ptr noundef %760, ptr noundef %766, ptr noundef %767, ptr noundef %769, ptr noundef %771, i64 noundef 1)
  %773 = fptrunc double %772 to float
  store float %773, ptr %70, align 4, !tbaa !11
  br label %775

774:                                              ; preds = %738
  store float 0.000000e+00, ptr %70, align 4, !tbaa !11
  br label %775

775:                                              ; preds = %774, %748
  %776 = load ptr, ptr %42, align 8, !tbaa !5
  %777 = load i64, ptr %776, align 8, !tbaa !9
  %778 = icmp sge i64 %777, 2
  br i1 %778, label %779, label %795

779:                                              ; preds = %775
  %780 = load ptr, ptr %44, align 8, !tbaa !5
  %781 = load i64, ptr %69, align 8, !tbaa !9
  %782 = load i64, ptr %60, align 8, !tbaa !9
  %783 = shl i64 %782, 1
  %784 = add nsw i64 %781, %783
  %785 = getelementptr inbounds float, ptr %780, i64 %784
  %786 = load float, ptr %785, align 4, !tbaa !11
  %787 = fcmp ogt float %786, 1.000000e+00
  br i1 %787, label %788, label %795

788:                                              ; preds = %779
  %789 = load ptr, ptr %44, align 8, !tbaa !5
  %790 = load i64, ptr %69, align 8, !tbaa !9
  %791 = load i64, ptr %60, align 8, !tbaa !9
  %792 = shl i64 %791, 1
  %793 = add nsw i64 %790, %792
  %794 = getelementptr inbounds float, ptr %789, i64 %793
  store float 1.000000e+00, ptr %794, align 4, !tbaa !11
  br label %795

795:                                              ; preds = %788, %779, %775
  %796 = load float, ptr %70, align 4, !tbaa !11
  %797 = load float, ptr %65, align 4, !tbaa !11
  %798 = fcmp olt float %796, %797
  br i1 %798, label %799, label %830

799:                                              ; preds = %795
  %800 = load ptr, ptr %44, align 8, !tbaa !5
  %801 = load i64, ptr %69, align 8, !tbaa !9
  %802 = load i64, ptr %60, align 8, !tbaa !9
  %803 = shl i64 %802, 1
  %804 = add nsw i64 %801, %803
  %805 = getelementptr inbounds float, ptr %800, i64 %804
  store float 1.000000e+00, ptr %805, align 4, !tbaa !11
  %806 = load ptr, ptr %44, align 8, !tbaa !5
  %807 = load i64, ptr %69, align 8, !tbaa !9
  %808 = load i64, ptr %60, align 8, !tbaa !9
  %809 = add nsw i64 %807, %808
  %810 = getelementptr inbounds float, ptr %806, i64 %809
  store float 0.000000e+00, ptr %810, align 4, !tbaa !11
  %811 = load ptr, ptr %46, align 8, !tbaa !5
  %812 = getelementptr inbounds float, ptr %811, i64 3
  %813 = load float, ptr %812, align 4, !tbaa !11
  %814 = fcmp oeq float %813, 1.000000e+00
  br i1 %814, label %815, label %829

815:                                              ; preds = %799
  %816 = load ptr, ptr %49, align 8, !tbaa !5
  %817 = load i64, ptr %816, align 8, !tbaa !9
  %818 = load ptr, ptr %28, align 8, !tbaa !5
  %819 = load i64, ptr %818, align 8, !tbaa !9
  %820 = load i64, ptr %69, align 8, !tbaa !9
  %821 = add nsw i64 %819, %820
  %822 = icmp slt i64 %817, %821
  br i1 %822, label %823, label %829

823:                                              ; preds = %815
  %824 = load ptr, ptr %28, align 8, !tbaa !5
  %825 = load i64, ptr %824, align 8, !tbaa !9
  %826 = load i64, ptr %69, align 8, !tbaa !9
  %827 = add nsw i64 %825, %826
  %828 = load ptr, ptr %49, align 8, !tbaa !5
  store i64 %827, ptr %828, align 8, !tbaa !9
  br label %829

829:                                              ; preds = %823, %815, %799
  br label %854

830:                                              ; preds = %795
  %831 = load ptr, ptr %44, align 8, !tbaa !5
  %832 = load i64, ptr %69, align 8, !tbaa !9
  %833 = load i64, ptr %60, align 8, !tbaa !9
  %834 = shl i64 %833, 1
  %835 = add nsw i64 %832, %834
  %836 = getelementptr inbounds float, ptr %831, i64 %835
  %837 = load float, ptr %836, align 4, !tbaa !11
  %838 = load float, ptr %67, align 4, !tbaa !11
  %839 = fcmp olt float %837, %838
  br i1 %839, label %840, label %853

840:                                              ; preds = %830
  %841 = load float, ptr %67, align 4, !tbaa !11
  %842 = load ptr, ptr %44, align 8, !tbaa !5
  %843 = load i64, ptr %69, align 8, !tbaa !9
  %844 = load i64, ptr %60, align 8, !tbaa !9
  %845 = shl i64 %844, 1
  %846 = add nsw i64 %843, %845
  %847 = getelementptr inbounds float, ptr %842, i64 %846
  store float %841, ptr %847, align 4, !tbaa !11
  %848 = load ptr, ptr %44, align 8, !tbaa !5
  %849 = load i64, ptr %69, align 8, !tbaa !9
  %850 = load i64, ptr %60, align 8, !tbaa !9
  %851 = add nsw i64 %849, %850
  %852 = getelementptr inbounds float, ptr %848, i64 %851
  store float 1.000000e+00, ptr %852, align 4, !tbaa !11
  br label %853

853:                                              ; preds = %840, %830
  br label %854

854:                                              ; preds = %853, %829
  %855 = load ptr, ptr %42, align 8, !tbaa !5
  %856 = load i64, ptr %855, align 8, !tbaa !9
  %857 = icmp sge i64 %856, 3
  br i1 %857, label %858, label %866

858:                                              ; preds = %854
  %859 = load float, ptr %70, align 4, !tbaa !11
  %860 = load ptr, ptr %44, align 8, !tbaa !5
  %861 = load i64, ptr %69, align 8, !tbaa !9
  %862 = load i64, ptr %60, align 8, !tbaa !9
  %863 = mul nsw i64 %862, 3
  %864 = add nsw i64 %861, %863
  %865 = getelementptr inbounds float, ptr %860, i64 %864
  store float %859, ptr %865, align 4, !tbaa !11
  br label %866

866:                                              ; preds = %858, %854
  br label %867

867:                                              ; preds = %866
  %868 = load i64, ptr %69, align 8, !tbaa !9
  %869 = add nsw i64 %868, 1
  store i64 %869, ptr %69, align 8, !tbaa !9
  br label %734, !llvm.loop !18

870:                                              ; preds = %734
  br label %871

871:                                              ; preds = %870, %725, %721
  store i32 0, ptr %25, align 4
  store i32 1, ptr %80, align 4
  br label %872

872:                                              ; preds = %871, %410, %331
  call void @llvm.lifetime.end.p0(i64 4, ptr %79) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %78) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %77) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %76) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %75) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %74) #4
  call void @llvm.lifetime.end.p0(i64 1, ptr %73) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %72) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %71) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %70) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %67) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %66) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %65) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %64) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %63) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #4
  %873 = load i32, ptr %25, align 4
  ret i32 %873
}

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

declare double @slamch_(ptr noundef) #2

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

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

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

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

declare i64 @ilaprec_(ptr noundef) #2

declare i32 @cla_herfsx_extended__(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, i64 noundef) #2

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

declare double @cla_hercond_c__(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, i64 noundef) #2

declare double @cla_hercond_x__(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, i64 noundef) #2

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"long", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"float", !7, i64 0}
!13 = distinct !{!13, !14}
!14 = !{!"llvm.loop.mustprogress"}
!15 = distinct !{!15, !14}
!16 = !{!7, !7, i64 0}
!17 = distinct !{!17, !14}
!18 = distinct !{!18, !14}


; 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 [8 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [2 x i8], align 1
@c_true = external hidden global i64, align 8
@c_false = external hidden global i64, align 8

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

51:                                               ; preds = %24
  %52 = load float, ptr %20, align 4, !tbaa !9
  %53 = fcmp olt float %52, 0.000000e+00
  br i1 %53, label %54, label %55

54:                                               ; preds = %51
  store float 1.000000e+00, ptr %20, align 4, !tbaa !9
  br label %57

55:                                               ; preds = %51
  %56 = fptosi float %52 to i64
  br label %57

57:                                               ; preds = %54, %55, %24
  %.0314 = phi i64 [ 1, %54 ], [ %56, %55 ], [ 1, %24 ]
  %58 = load i64, ptr %2, align 8, !tbaa !5
  %59 = sitofp i64 %58 to float
  %60 = fpext float %59 to double
  %61 = tail call double @slamch_(ptr noundef nonnull @.str) #6
  %62 = fmul double %61, %60
  %63 = fptrunc double %62 to float
  store i64 10, ptr %38, align 8, !tbaa !5
  store float 5.000000e-01, ptr %40, align 4, !tbaa !9
  store float 2.500000e-01, ptr %32, align 4, !tbaa !9
  store i64 0, ptr %35, align 8, !tbaa !5
  %64 = load i64, ptr %19, align 8, !tbaa !5
  %65 = icmp sgt i64 %64, 1
  br i1 %65, label %66, label %.thread

66:                                               ; preds = %57
  %67 = getelementptr inbounds i8, ptr %20, i64 4
  %68 = load float, ptr %67, align 4, !tbaa !9
  %69 = fcmp olt float %68, 0.000000e+00
  br i1 %69, label %70, label %71

70:                                               ; preds = %66
  store float 1.000000e+01, ptr %67, align 4, !tbaa !9
  br label %73

71:                                               ; preds = %66
  %72 = fptosi float %68 to i64
  store i64 %72, ptr %38, align 8, !tbaa !5
  br label %73

73:                                               ; preds = %70, %71
  %.not = icmp eq i64 %64, 2
  br i1 %.not, label %.thread, label %74

74:                                               ; preds = %73
  %75 = getelementptr inbounds i8, ptr %20, i64 8
  %76 = load float, ptr %75, align 4, !tbaa !9
  %77 = fcmp olt float %76, 0.000000e+00
  br i1 %77, label %78, label %79

78:                                               ; preds = %74
  store float 1.000000e+00, ptr %75, align 4, !tbaa !9
  br label %.thread

79:                                               ; preds = %74
  %80 = fcmp oeq float %76, 0.000000e+00
  %81 = zext i1 %80 to i64
  store i64 %81, ptr %35, align 8, !tbaa !5
  br label %.thread

.thread:                                          ; preds = %57, %79, %78, %73
  %82 = phi i64 [ 0, %57 ], [ %81, %79 ], [ 0, %78 ], [ 0, %73 ]
  %83 = icmp eq i64 %.0314, 0
  br i1 %83, label %87, label %84

84:                                               ; preds = %.thread
  %85 = load i64, ptr %16, align 8, !tbaa !5
  %86 = icmp eq i64 %85, 0
  br i1 %86, label %87, label %88

87:                                               ; preds = %84, %.thread
  store i64 0, ptr %39, align 8, !tbaa !5
  br label %91

88:                                               ; preds = %84
  %.not328 = icmp eq i64 %82, 0
  br i1 %.not328, label %90, label %89

89:                                               ; preds = %88
  store i64 1, ptr %39, align 8, !tbaa !5
  br label %91

90:                                               ; preds = %88
  store i64 2, ptr %39, align 8, !tbaa !5
  br label %91

91:                                               ; preds = %89, %90, %87
  %92 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.1) #6
  store i64 %92, ptr %37, align 8, !tbaa !5
  %93 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.2) #6
  %.not329 = icmp eq i64 %93, 0
  br i1 %.not329, label %94, label %96

94:                                               ; preds = %91
  %95 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.3) #6
  %.not330 = icmp eq i64 %95, 0
  br i1 %.not330, label %.thread349.sink.split, label %96

96:                                               ; preds = %94, %91
  %.not331 = icmp eq i64 %92, 0
  br i1 %.not331, label %97, label %99

97:                                               ; preds = %96
  %98 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.4) #6
  %.not332 = icmp eq i64 %98, 0
  br i1 %.not332, label %.thread349.sink.split, label %99

99:                                               ; preds = %97, %96
  %100 = load i64, ptr %2, align 8, !tbaa !5
  %101 = icmp slt i64 %100, 0
  br i1 %101, label %.thread349.sink.split, label %102

102:                                              ; preds = %99
  %103 = load i64, ptr %3, align 8, !tbaa !5
  %104 = icmp slt i64 %103, 0
  br i1 %104, label %.thread349.sink.split, label %105

105:                                              ; preds = %102
  %106 = load i64, ptr %5, align 8, !tbaa !5
  %spec.select = tail call i64 @llvm.umax.i64(i64 %100, i64 1)
  %107 = icmp slt i64 %106, %spec.select
  br i1 %107, label %.thread349.sink.split, label %108

108:                                              ; preds = %105
  %109 = load i64, ptr %7, align 8, !tbaa !5
  %110 = icmp slt i64 %109, %spec.select
  br i1 %110, label %.thread349.sink.split, label %111

111:                                              ; preds = %108
  %112 = load i64, ptr %11, align 8, !tbaa !5
  %113 = icmp slt i64 %112, %spec.select
  br i1 %113, label %.thread349.sink.split, label %114

114:                                              ; preds = %111
  %115 = load i64, ptr %13, align 8, !tbaa !5
  %116 = icmp slt i64 %115, %spec.select
  br i1 %116, label %.thread349.sink.split, label %117

117:                                              ; preds = %114
  %.pr = load i64, ptr %23, align 8, !tbaa !5
  %.not333 = icmp eq i64 %.pr, 0
  br i1 %.not333, label %121, label %.thread349

.thread349.sink.split:                            ; preds = %114, %111, %108, %105, %102, %99, %97, %94
  %.sink = phi i64 [ -1, %94 ], [ -2, %97 ], [ -3, %99 ], [ -4, %102 ], [ -6, %105 ], [ -8, %108 ], [ -11, %111 ], [ -13, %114 ]
  store i64 %.sink, ptr %23, align 8, !tbaa !5
  br label %.thread349

.thread349:                                       ; preds = %.thread349.sink.split, %117
  %118 = phi i64 [ %.pr, %117 ], [ %.sink, %.thread349.sink.split ]
  %119 = sub nsw i64 0, %118
  store i64 %119, ptr %31, align 8, !tbaa !5
  %120 = call i32 @xerbla_(ptr noundef nonnull @.str.5, ptr noundef nonnull %31) #6
  br label %.loopexit

121:                                              ; preds = %117
  %122 = icmp eq i64 %100, 0
  br i1 %122, label %125, label %123

123:                                              ; preds = %121
  %124 = icmp eq i64 %103, 0
  br i1 %124, label %.thread385, label %.lr.ph

.thread385:                                       ; preds = %123
  store float 1.000000e+00, ptr %14, align 4, !tbaa !9
  br label %.loopexit

125:                                              ; preds = %121
  store float 1.000000e+00, ptr %14, align 4, !tbaa !9
  %.not345367 = icmp eq i64 %103, 0
  br i1 %.not345367, label %.loopexit, label %.lr.ph370

.lr.ph370:                                        ; preds = %125
  %126 = load i64, ptr %16, align 8, !tbaa !5
  %127 = icmp sgt i64 %126, 0
  br i1 %127, label %.lr.ph370.split.us.preheader, label %.lr.ph370.split.preheader

.lr.ph370.split.us.preheader:                     ; preds = %.lr.ph370
  %min.iters.check419 = icmp ult i64 %103, 12
  br i1 %min.iters.check419, label %.lr.ph370.split.us.preheader430, label %vector.memcheck411

.lr.ph370.split.us.preheader430:                  ; preds = %middle.block417, %vector.memcheck411, %.lr.ph370.split.us.preheader
  %.0312368.us.ph = phi i64 [ 1, %vector.memcheck411 ], [ 1, %.lr.ph370.split.us.preheader ], [ %ind.end423, %middle.block417 ]
  %xtraiter436 = and i64 %103, 1
  %lcmp.mod437.not = icmp eq i64 %xtraiter436, 0
  br i1 %lcmp.mod437.not, label %.lr.ph370.split.us.prol.loopexit, label %.lr.ph370.split.us.prol

.lr.ph370.split.us.prol:                          ; preds = %.lr.ph370.split.us.preheader430
  %128 = getelementptr inbounds float, ptr %48, i64 %.0312368.us.ph
  store float 0.000000e+00, ptr %128, align 4, !tbaa !9
  %129 = add nsw i64 %.0312368.us.ph, %41
  %130 = getelementptr inbounds float, ptr %44, i64 %129
  store float 1.000000e+00, ptr %130, align 4, !tbaa !9
  %131 = getelementptr inbounds float, ptr %43, i64 %129
  store float 1.000000e+00, ptr %131, align 4, !tbaa !9
  %132 = add nuw i64 %.0312368.us.ph, 1
  br label %.lr.ph370.split.us.prol.loopexit

.lr.ph370.split.us.prol.loopexit:                 ; preds = %.lr.ph370.split.us.prol, %.lr.ph370.split.us.preheader430
  %.0312368.us.unr = phi i64 [ %.0312368.us.ph, %.lr.ph370.split.us.preheader430 ], [ %132, %.lr.ph370.split.us.prol ]
  %133 = icmp eq i64 %103, %.0312368.us.ph
  br i1 %133, label %.loopexit, label %.lr.ph370.split.us

vector.memcheck411:                               ; preds = %.lr.ph370.split.us.preheader
  %134 = sub i64 %27, %26
  %diff.check412 = icmp ult i64 %134, 32
  %135 = sub i64 %25, %26
  %diff.check413 = icmp ult i64 %135, 32
  %conflict.rdx414 = or i1 %diff.check412, %diff.check413
  %136 = sub i64 %25, %27
  %diff.check415 = icmp ult i64 %136, 32
  %conflict.rdx416 = or i1 %conflict.rdx414, %diff.check415
  br i1 %conflict.rdx416, label %.lr.ph370.split.us.preheader430, label %vector.ph420

vector.ph420:                                     ; preds = %vector.memcheck411
  %n.vec422 = and i64 %103, 9223372036854775800
  %ind.end423 = or disjoint i64 %n.vec422, 1
  br label %vector.body425

vector.body425:                                   ; preds = %vector.body425, %vector.ph420
  %index426 = phi i64 [ 0, %vector.ph420 ], [ %index.next428, %vector.body425 ]
  %offset.idx427 = or disjoint i64 %index426, 1
  %137 = getelementptr float, ptr %15, i64 %index426
  %138 = getelementptr inbounds i8, ptr %137, i64 16
  store <4 x float> zeroinitializer, ptr %137, align 4, !tbaa !9
  store <4 x float> zeroinitializer, ptr %138, align 4, !tbaa !9
  %139 = add nsw i64 %offset.idx427, %41
  %140 = getelementptr inbounds float, ptr %44, i64 %139
  %141 = getelementptr inbounds i8, ptr %140, i64 16
  store <4 x float> <float 1.000000e+00, float 1.000000e+00, float 1.000000e+00, float 1.000000e+00>, ptr %140, align 4, !tbaa !9
  store <4 x float> <float 1.000000e+00, float 1.000000e+00, float 1.000000e+00, float 1.000000e+00>, ptr %141, align 4, !tbaa !9
  %142 = getelementptr inbounds float, ptr %43, i64 %139
  %143 = getelementptr inbounds i8, ptr %142, i64 16
  store <4 x float> <float 1.000000e+00, float 1.000000e+00, float 1.000000e+00, float 1.000000e+00>, ptr %142, align 4, !tbaa !9
  store <4 x float> <float 1.000000e+00, float 1.000000e+00, float 1.000000e+00, float 1.000000e+00>, ptr %143, align 4, !tbaa !9
  %index.next428 = add nuw i64 %index426, 8
  %144 = icmp eq i64 %index.next428, %n.vec422
  br i1 %144, label %middle.block417, label %vector.body425, !llvm.loop !11

middle.block417:                                  ; preds = %vector.body425
  %cmp.n429 = icmp eq i64 %103, %n.vec422
  br i1 %cmp.n429, label %.loopexit, label %.lr.ph370.split.us.preheader430

.lr.ph370.split.preheader:                        ; preds = %.lr.ph370
  %145 = shl nuw i64 %103, 2
  tail call void @llvm.memset.p0.i64(ptr align 4 %15, i8 0, i64 %145, i1 false), !tbaa !9
  br label %.loopexit

.lr.ph370.split.us:                               ; preds = %.lr.ph370.split.us.prol.loopexit, %.lr.ph370.split.us
  %.0312368.us = phi i64 [ %154, %.lr.ph370.split.us ], [ %.0312368.us.unr, %.lr.ph370.split.us.prol.loopexit ]
  %146 = getelementptr inbounds float, ptr %48, i64 %.0312368.us
  store float 0.000000e+00, ptr %146, align 4, !tbaa !9
  %147 = add nsw i64 %.0312368.us, %41
  %148 = getelementptr inbounds float, ptr %44, i64 %147
  store float 1.000000e+00, ptr %148, align 4, !tbaa !9
  %149 = getelementptr inbounds float, ptr %43, i64 %147
  store float 1.000000e+00, ptr %149, align 4, !tbaa !9
  %150 = add nuw i64 %.0312368.us, 1
  %151 = getelementptr float, ptr %15, i64 %.0312368.us
  store float 0.000000e+00, ptr %151, align 4, !tbaa !9
  %152 = getelementptr inbounds float, ptr %17, i64 %.0312368.us
  store float 1.000000e+00, ptr %152, align 4, !tbaa !9
  %153 = getelementptr inbounds float, ptr %18, i64 %.0312368.us
  store float 1.000000e+00, ptr %153, align 4, !tbaa !9
  %154 = add nuw i64 %.0312368.us, 2
  %exitcond378.not.1 = icmp eq i64 %150, %103
  br i1 %exitcond378.not.1, label %.loopexit, label %.lr.ph370.split.us, !llvm.loop !15

.lr.ph:                                           ; preds = %123
  store float 0.000000e+00, ptr %14, align 4, !tbaa !9
  %155 = load i64, ptr %16, align 8, !tbaa !5
  %156 = icmp sgt i64 %155, 0
  br i1 %156, label %.lr.ph.split.us.preheader, label %.lr.ph.split.preheader

.lr.ph.split.preheader:                           ; preds = %.lr.ph
  %min.iters.check = icmp ult i64 %103, 8
  br i1 %min.iters.check, label %.lr.ph.split.preheader434, label %vector.ph

.lr.ph.split.preheader434:                        ; preds = %middle.block, %.lr.ph.split.preheader
  %.1313354.ph = phi i64 [ 1, %.lr.ph.split.preheader ], [ %ind.end, %middle.block ]
  br label %.lr.ph.split

vector.ph:                                        ; preds = %.lr.ph.split.preheader
  %n.vec = and i64 %103, 9223372036854775800
  %ind.end = or disjoint i64 %n.vec, 1
  br label %vector.body

vector.body:                                      ; preds = %vector.body, %vector.ph
  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %157 = getelementptr float, ptr %15, i64 %index
  %158 = getelementptr inbounds i8, ptr %157, i64 16
  store <4 x float> <float 1.000000e+00, float 1.000000e+00, float 1.000000e+00, float 1.000000e+00>, ptr %157, align 4, !tbaa !9
  store <4 x float> <float 1.000000e+00, float 1.000000e+00, float 1.000000e+00, float 1.000000e+00>, ptr %158, align 4, !tbaa !9
  %index.next = add nuw i64 %index, 8
  %159 = icmp eq i64 %index.next, %n.vec
  br i1 %159, label %middle.block, label %vector.body, !llvm.loop !16

middle.block:                                     ; preds = %vector.body
  %cmp.n = icmp eq i64 %103, %n.vec
  br i1 %cmp.n, label %._crit_edge, label %.lr.ph.split.preheader434

.lr.ph.split.us.preheader:                        ; preds = %.lr.ph
  %min.iters.check400 = icmp ult i64 %103, 12
  br i1 %min.iters.check400, label %.lr.ph.split.us.preheader433, label %vector.memcheck

vector.memcheck:                                  ; preds = %.lr.ph.split.us.preheader
  %160 = sub i64 %30, %29
  %diff.check = icmp ult i64 %160, 32
  %161 = sub i64 %28, %29
  %diff.check395 = icmp ult i64 %161, 32
  %conflict.rdx = or i1 %diff.check, %diff.check395
  %162 = sub i64 %28, %30
  %diff.check396 = icmp ult i64 %162, 32
  %conflict.rdx397 = or i1 %conflict.rdx, %diff.check396
  br i1 %conflict.rdx397, label %.lr.ph.split.us.preheader433, label %vector.ph401

vector.ph401:                                     ; preds = %vector.memcheck
  %n.vec403 = and i64 %103, 9223372036854775800
  %ind.end404 = or disjoint i64 %n.vec403, 1
  br label %vector.body406

vector.body406:                                   ; preds = %vector.body406, %vector.ph401
  %index407 = phi i64 [ 0, %vector.ph401 ], [ %index.next409, %vector.body406 ]
  %offset.idx408 = or disjoint i64 %index407, 1
  %163 = getelementptr float, ptr %15, i64 %index407
  %164 = getelementptr inbounds i8, ptr %163, i64 16
  store <4 x float> <float 1.000000e+00, float 1.000000e+00, float 1.000000e+00, float 1.000000e+00>, ptr %163, align 4, !tbaa !9
  store <4 x float> <float 1.000000e+00, float 1.000000e+00, float 1.000000e+00, float 1.000000e+00>, ptr %164, align 4, !tbaa !9
  %165 = add nsw i64 %offset.idx408, %41
  %166 = getelementptr inbounds float, ptr %44, i64 %165
  %167 = getelementptr inbounds i8, ptr %166, i64 16
  store <4 x float> <float 1.000000e+00, float 1.000000e+00, float 1.000000e+00, float 1.000000e+00>, ptr %166, align 4, !tbaa !9
  store <4 x float> <float 1.000000e+00, float 1.000000e+00, float 1.000000e+00, float 1.000000e+00>, ptr %167, align 4, !tbaa !9
  %168 = getelementptr inbounds float, ptr %43, i64 %165
  %169 = getelementptr inbounds i8, ptr %168, i64 16
  store <4 x float> <float 1.000000e+00, float 1.000000e+00, float 1.000000e+00, float 1.000000e+00>, ptr %168, align 4, !tbaa !9
  store <4 x float> <float 1.000000e+00, float 1.000000e+00, float 1.000000e+00, float 1.000000e+00>, ptr %169, align 4, !tbaa !9
  %index.next409 = add nuw i64 %index407, 8
  %170 = icmp eq i64 %index.next409, %n.vec403
  br i1 %170, label %middle.block398, label %vector.body406, !llvm.loop !17

middle.block398:                                  ; preds = %vector.body406
  %cmp.n410 = icmp eq i64 %103, %n.vec403
  br i1 %cmp.n410, label %._crit_edge, label %.lr.ph.split.us.preheader433

.lr.ph.split.us.preheader433:                     ; preds = %middle.block398, %vector.memcheck, %.lr.ph.split.us.preheader
  %.1313354.us.ph = phi i64 [ 1, %vector.memcheck ], [ 1, %.lr.ph.split.us.preheader ], [ %ind.end404, %middle.block398 ]
  %xtraiter = and i64 %103, 1
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %.lr.ph.split.us.prol.loopexit, label %.lr.ph.split.us.prol

.lr.ph.split.us.prol:                             ; preds = %.lr.ph.split.us.preheader433
  %171 = getelementptr inbounds float, ptr %48, i64 %.1313354.us.ph
  store float 1.000000e+00, ptr %171, align 4, !tbaa !9
  %172 = add nsw i64 %.1313354.us.ph, %41
  %173 = getelementptr inbounds float, ptr %44, i64 %172
  store float 1.000000e+00, ptr %173, align 4, !tbaa !9
  %174 = getelementptr inbounds float, ptr %43, i64 %172
  store float 1.000000e+00, ptr %174, align 4, !tbaa !9
  %175 = add nuw i64 %.1313354.us.ph, 1
  br label %.lr.ph.split.us.prol.loopexit

.lr.ph.split.us.prol.loopexit:                    ; preds = %.lr.ph.split.us.prol, %.lr.ph.split.us.preheader433
  %.1313354.us.unr = phi i64 [ %.1313354.us.ph, %.lr.ph.split.us.preheader433 ], [ %175, %.lr.ph.split.us.prol ]
  %176 = icmp eq i64 %103, %.1313354.us.ph
  br i1 %176, label %._crit_edge, label %.lr.ph.split.us

.lr.ph.split.us:                                  ; preds = %.lr.ph.split.us.prol.loopexit, %.lr.ph.split.us
  %.1313354.us = phi i64 [ %185, %.lr.ph.split.us ], [ %.1313354.us.unr, %.lr.ph.split.us.prol.loopexit ]
  %177 = getelementptr inbounds float, ptr %48, i64 %.1313354.us
  store float 1.000000e+00, ptr %177, align 4, !tbaa !9
  %178 = add nsw i64 %.1313354.us, %41
  %179 = getelementptr inbounds float, ptr %44, i64 %178
  store float 1.000000e+00, ptr %179, align 4, !tbaa !9
  %180 = getelementptr inbounds float, ptr %43, i64 %178
  store float 1.000000e+00, ptr %180, align 4, !tbaa !9
  %181 = add nuw i64 %.1313354.us, 1
  %182 = getelementptr float, ptr %15, i64 %.1313354.us
  store float 1.000000e+00, ptr %182, align 4, !tbaa !9
  %183 = getelementptr inbounds float, ptr %17, i64 %.1313354.us
  store float 1.000000e+00, ptr %183, align 4, !tbaa !9
  %184 = getelementptr inbounds float, ptr %18, i64 %.1313354.us
  store float 1.000000e+00, ptr %184, align 4, !tbaa !9
  %185 = add nuw i64 %.1313354.us, 2
  %exitcond375.not.1 = icmp eq i64 %181, %103
  br i1 %exitcond375.not.1, label %._crit_edge, label %.lr.ph.split.us, !llvm.loop !18

.lr.ph.split:                                     ; preds = %.lr.ph.split.preheader434, %.lr.ph.split
  %.1313354 = phi i64 [ %187, %.lr.ph.split ], [ %.1313354.ph, %.lr.ph.split.preheader434 ]
  %186 = getelementptr inbounds float, ptr %48, i64 %.1313354
  store float 1.000000e+00, ptr %186, align 4, !tbaa !9
  %187 = add nuw i64 %.1313354, 1
  %exitcond.not = icmp eq i64 %.1313354, %103
  br i1 %exitcond.not, label %._crit_edge, label %.lr.ph.split, !llvm.loop !19

._crit_edge:                                      ; preds = %.lr.ph.split, %.lr.ph.split.us.prol.loopexit, %.lr.ph.split.us, %middle.block, %middle.block398
  store i8 73, ptr %34, align 1, !tbaa !20
  %188 = call double @clanhe_(ptr noundef nonnull %34, ptr noundef %0, ptr noundef nonnull %2, ptr noundef %4, ptr noundef nonnull %5, ptr noundef %22) #6
  %189 = fptrunc double %188 to float
  store float %189, ptr %36, align 4, !tbaa !9
  %190 = call i32 @checon_(ptr noundef %0, ptr noundef nonnull %2, ptr noundef %6, ptr noundef nonnull %7, ptr noundef %8, ptr noundef nonnull %36, ptr noundef nonnull %14, ptr noundef %21, ptr noundef nonnull %23) #6
  br i1 %83, label %196, label %191

191:                                              ; preds = %._crit_edge
  %192 = call i64 @ilaprec_(ptr noundef nonnull @.str.6) #6
  store i64 %192, ptr %33, align 8, !tbaa !5
  %193 = load i64, ptr %2, align 8, !tbaa !5
  %194 = getelementptr %struct.complex, ptr %21, i64 %193
  %195 = call i32 @cla_herfsx_extended__(ptr noundef nonnull %33, ptr noundef %0, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef %4, ptr noundef nonnull %5, ptr noundef %6, ptr noundef nonnull %7, ptr noundef %8, ptr noundef nonnull %37, ptr noundef %9, ptr noundef %10, ptr noundef nonnull %11, ptr noundef %12, ptr noundef nonnull %13, ptr noundef nonnull %15, ptr noundef nonnull %39, ptr noundef %17, ptr noundef %18, ptr noundef %21, ptr noundef %22, ptr noundef %194, ptr noundef %22, ptr noundef nonnull %14, ptr noundef nonnull %38, ptr noundef nonnull %40, ptr noundef nonnull %32, ptr noundef nonnull %35, ptr noundef nonnull %23, i64 noundef 1) #6
  br label %196

196:                                              ; preds = %191, %._crit_edge
  %197 = load i64, ptr %2, align 8, !tbaa !5
  %198 = sitofp i64 %197 to float
  %sqrtf = call float @sqrtf(float noundef %198) #3
  %199 = fcmp ole float %sqrtf, 1.000000e+01
  %200 = select i1 %199, float 1.000000e+01, float %sqrtf
  %201 = fpext float %200 to double
  %202 = call double @slamch_(ptr noundef nonnull @.str) #6
  %203 = fmul double %202, %201
  %204 = fptrunc double %203 to float
  %205 = load i64, ptr %16, align 8, !tbaa !5
  %206 = icmp sgt i64 %205, 0
  %207 = load i64, ptr %39, align 8
  %208 = icmp sgt i64 %207, 0
  %or.cond = select i1 %206, i1 %208, i1 false
  br i1 %or.cond, label %209, label %.loopexit352

209:                                              ; preds = %196
  %210 = load i64, ptr %37, align 8, !tbaa !5
  %.not336 = icmp eq i64 %210, 0
  %c_false.c_true = select i1 %.not336, ptr @c_false, ptr @c_true
  %211 = call double @cla_hercond_c__(ptr noundef %0, ptr noundef nonnull %2, ptr noundef %4, ptr noundef nonnull %5, ptr noundef %6, ptr noundef nonnull %7, ptr noundef %8, ptr noundef %9, ptr noundef nonnull %c_false.c_true, ptr noundef nonnull %23, ptr noundef %21, ptr noundef %22, i64 noundef 1) #6
  %.0311 = fptrunc double %211 to float
  %212 = load i64, ptr %3, align 8, !tbaa !5
  %.not337355 = icmp slt i64 %212, 1
  br i1 %.not337355, label %..loopexit352_crit_edge, label %.lr.ph358

..loopexit352_crit_edge:                          ; preds = %209
  %.pre383 = load i64, ptr %16, align 8, !tbaa !5
  br label %.loopexit352

.lr.ph358:                                        ; preds = %209
  %.idx340 = shl i64 %41, 3
  %invariant.gep = getelementptr i8, ptr %44, i64 %.idx340
  %213 = fcmp olt float %.0311, %63
  %.idx344 = mul i64 %41, 12
  %invariant.gep359 = getelementptr i8, ptr %44, i64 %.idx344
  %.pre381 = load i64, ptr %16, align 8, !tbaa !5
  br i1 %213, label %.lr.ph358.split.us, label %.lr.ph358.split.preheader

.lr.ph358.split.preheader:                        ; preds = %.lr.ph358
  %214 = icmp sgt i64 %.pre381, 1
  %invariant.gep390 = getelementptr i8, ptr %44, i64 %.idx340
  %215 = icmp sgt i64 %.pre381, 2
  br label %.lr.ph358.split

.lr.ph358.split.us:                               ; preds = %.lr.ph358, %228
  %216 = phi i64 [ %225, %228 ], [ %.pre381, %.lr.ph358 ]
  %.2356.us = phi i64 [ %229, %228 ], [ 1, %.lr.ph358 ]
  %217 = getelementptr float, ptr %44, i64 %.2356.us
  %218 = getelementptr i8, ptr %217, i64 %.idx340
  store float 1.000000e+00, ptr %218, align 4, !tbaa !9
  %219 = getelementptr float, ptr %217, i64 %41
  store float 0.000000e+00, ptr %219, align 4, !tbaa !9
  %220 = load i64, ptr %23, align 8, !tbaa !5
  %221 = load i64, ptr %2, align 8, !tbaa !5
  %.not343.us = icmp sgt i64 %220, %221
  br i1 %.not343.us, label %224, label %222

222:                                              ; preds = %.lr.ph358.split.us
  %223 = add nsw i64 %221, %.2356.us
  store i64 %223, ptr %23, align 8, !tbaa !5
  %.pre382 = load i64, ptr %16, align 8, !tbaa !5
  br label %224

224:                                              ; preds = %222, %.lr.ph358.split.us
  %225 = phi i64 [ %.pre382, %222 ], [ %216, %.lr.ph358.split.us ]
  %226 = icmp sgt i64 %225, 2
  br i1 %226, label %227, label %228

227:                                              ; preds = %224
  %gep360.us = getelementptr float, ptr %invariant.gep359, i64 %.2356.us
  store float %.0311, ptr %gep360.us, align 4, !tbaa !9
  br label %228

228:                                              ; preds = %227, %224
  %229 = add nuw i64 %.2356.us, 1
  %exitcond377.not = icmp eq i64 %.2356.us, %212
  br i1 %exitcond377.not, label %.loopexit352, label %.lr.ph358.split.us, !llvm.loop !21

.lr.ph358.split:                                  ; preds = %.lr.ph358.split.preheader, %243
  %.2356 = phi i64 [ %244, %243 ], [ 1, %.lr.ph358.split.preheader ]
  br i1 %214, label %230, label %.lr.ph358.split._crit_edge

.lr.ph358.split._crit_edge:                       ; preds = %.lr.ph358.split
  %gep391 = getelementptr float, ptr %invariant.gep390, i64 %.2356
  %.pre380 = load float, ptr %gep391, align 4, !tbaa !9
  br label %234

230:                                              ; preds = %.lr.ph358.split
  %gep = getelementptr float, ptr %invariant.gep, i64 %.2356
  %231 = load float, ptr %gep, align 4, !tbaa !9
  %232 = fcmp ogt float %231, 1.000000e+00
  br i1 %232, label %233, label %234

233:                                              ; preds = %230
  store float 1.000000e+00, ptr %gep, align 4, !tbaa !9
  br label %234

234:                                              ; preds = %.lr.ph358.split._crit_edge, %233, %230
  %235 = phi float [ %.pre380, %.lr.ph358.split._crit_edge ], [ 1.000000e+00, %233 ], [ %231, %230 ]
  %236 = fcmp olt float %235, %204
  br i1 %236, label %237, label %241

237:                                              ; preds = %234
  %238 = getelementptr float, ptr %44, i64 %.2356
  %239 = getelementptr i8, ptr %238, i64 %.idx340
  store float %204, ptr %239, align 4, !tbaa !9
  %240 = getelementptr float, ptr %238, i64 %41
  store float 1.000000e+00, ptr %240, align 4, !tbaa !9
  br label %241

241:                                              ; preds = %234, %237
  br i1 %215, label %242, label %243

242:                                              ; preds = %241
  %gep360 = getelementptr float, ptr %invariant.gep359, i64 %.2356
  store float %.0311, ptr %gep360, align 4, !tbaa !9
  br label %243

243:                                              ; preds = %241, %242
  %244 = add nuw i64 %.2356, 1
  %exitcond376.not = icmp eq i64 %.2356, %212
  br i1 %exitcond376.not, label %.loopexit352, label %.lr.ph358.split, !llvm.loop !21

.loopexit352:                                     ; preds = %243, %228, %..loopexit352_crit_edge, %196
  %245 = phi i64 [ %.pre383, %..loopexit352_crit_edge ], [ %205, %196 ], [ %225, %228 ], [ %.pre381, %243 ]
  %246 = icmp sgt i64 %245, 0
  %247 = load i64, ptr %39, align 8
  %248 = icmp sgt i64 %247, 1
  %or.cond3 = select i1 %246, i1 %248, i1 false
  br i1 %or.cond3, label %249, label %.loopexit

249:                                              ; preds = %.loopexit352
  %250 = call double @slamch_(ptr noundef nonnull @.str) #6
  %251 = call double @sqrt(double noundef %250) #6
  %252 = fptrunc double %251 to float
  %253 = load i64, ptr %3, align 8, !tbaa !5
  %invariant.gep361 = getelementptr i8, ptr %47, i64 8
  %.not338363 = icmp slt i64 %253, 1
  br i1 %.not338363, label %.loopexit, label %.lr.ph366

.lr.ph366:                                        ; preds = %249
  %.idx = shl i64 %41, 3
  %254 = getelementptr inbounds i8, ptr %20, i64 8
  %.idx339 = mul i64 %41, 12
  br label %255

255:                                              ; preds = %.lr.ph366, %293
  %.3364 = phi i64 [ 1, %.lr.ph366 ], [ %294, %293 ]
  %256 = getelementptr float, ptr %43, i64 %.3364
  %257 = getelementptr i8, ptr %256, i64 %.idx
  %258 = load float, ptr %257, align 4, !tbaa !9
  %259 = fcmp olt float %258, %252
  br i1 %259, label %260, label %264

260:                                              ; preds = %255
  %261 = mul nsw i64 %.3364, %45
  %gep362 = getelementptr %struct.complex, ptr %invariant.gep361, i64 %261
  %262 = call double @cla_hercond_x__(ptr noundef %0, ptr noundef nonnull %2, ptr noundef %4, ptr noundef nonnull %5, ptr noundef %6, ptr noundef nonnull %7, ptr noundef %8, ptr noundef %gep362, ptr noundef nonnull %23, ptr noundef %21, ptr noundef %22, i64 noundef 1) #6
  %263 = fptrunc double %262 to float
  br label %264

264:                                              ; preds = %255, %260
  %.1 = phi float [ %263, %260 ], [ 0.000000e+00, %255 ]
  %265 = load i64, ptr %16, align 8, !tbaa !5
  %266 = icmp sgt i64 %265, 1
  br i1 %266, label %267, label %271

267:                                              ; preds = %264
  %268 = load float, ptr %257, align 4, !tbaa !9
  %269 = fcmp ogt float %268, 1.000000e+00
  br i1 %269, label %270, label %271

270:                                              ; preds = %267
  store float 1.000000e+00, ptr %257, align 4, !tbaa !9
  br label %271

271:                                              ; preds = %270, %267, %264
  %272 = fcmp olt float %.1, %63
  br i1 %272, label %273, label %283

273:                                              ; preds = %271
  store float 1.000000e+00, ptr %257, align 4, !tbaa !9
  %274 = getelementptr float, ptr %256, i64 %41
  store float 0.000000e+00, ptr %274, align 4, !tbaa !9
  %275 = load float, ptr %254, align 4, !tbaa !9
  %276 = fcmp oeq float %275, 1.000000e+00
  br i1 %276, label %277, label %288

277:                                              ; preds = %273
  %278 = load i64, ptr %23, align 8, !tbaa !5
  %279 = load i64, ptr %2, align 8, !tbaa !5
  %280 = add nsw i64 %279, %.3364
  %281 = icmp slt i64 %278, %280
  br i1 %281, label %282, label %288

282:                                              ; preds = %277
  store i64 %280, ptr %23, align 8, !tbaa !5
  %.pre384 = load i64, ptr %16, align 8, !tbaa !5
  br label %288

283:                                              ; preds = %271
  %284 = load float, ptr %257, align 4, !tbaa !9
  %285 = fcmp olt float %284, %204
  br i1 %285, label %286, label %288

286:                                              ; preds = %283
  store float %204, ptr %257, align 4, !tbaa !9
  %287 = getelementptr float, ptr %256, i64 %41
  store float 1.000000e+00, ptr %287, align 4, !tbaa !9
  br label %288

288:                                              ; preds = %283, %286, %273, %277, %282
  %289 = phi i64 [ %265, %283 ], [ %265, %286 ], [ %265, %273 ], [ %265, %277 ], [ %.pre384, %282 ]
  %290 = icmp sgt i64 %289, 2
  br i1 %290, label %291, label %293

291:                                              ; preds = %288
  %292 = getelementptr i8, ptr %256, i64 %.idx339
  store float %.1, ptr %292, align 4, !tbaa !9
  br label %293

293:                                              ; preds = %288, %291
  %294 = add nuw nsw i64 %.3364, 1
  %.not338.not = icmp slt i64 %.3364, %253
  br i1 %.not338.not, label %255, label %.loopexit, !llvm.loop !22

.loopexit:                                        ; preds = %293, %.lr.ph370.split.us.prol.loopexit, %.lr.ph370.split.us, %middle.block417, %.thread385, %.lr.ph370.split.preheader, %249, %125, %.loopexit352, %.thread349
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %40) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %39) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %38) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %37) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %36) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %35) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %34) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %33) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %32) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %31) #6
  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 double @slamch_(ptr noundef) local_unnamed_addr #2

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

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

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

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

declare i64 @ilaprec_(ptr noundef) local_unnamed_addr #2

declare i32 @cla_herfsx_extended__(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, i64 noundef) local_unnamed_addr #2

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

declare double @cla_hercond_c__(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, i64 noundef) local_unnamed_addr #2

declare double @cla_hercond_x__(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, i64 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

declare float @sqrtf(float) local_unnamed_addr

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

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write)
declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #5

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"long", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"float", !7, i64 0}
!11 = distinct !{!11, !12, !13, !14}
!12 = !{!"llvm.loop.mustprogress"}
!13 = !{!"llvm.loop.isvectorized", i32 1}
!14 = !{!"llvm.loop.unroll.runtime.disable"}
!15 = distinct !{!15, !12, !13}
!16 = distinct !{!16, !12, !13, !14}
!17 = distinct !{!17, !12, !13, !14}
!18 = distinct !{!18, !12, !13}
!19 = distinct !{!19, !12, !14, !13}
!20 = !{!7, !7, i64 0}
!21 = distinct !{!21, !12}
!22 = distinct !{!22, !12}


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