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

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

141:                                              ; preds = %23
  %142 = load ptr, ptr %44, align 8, !tbaa !5
  %143 = getelementptr inbounds float, ptr %142, i64 1
  %144 = load float, ptr %143, align 4, !tbaa !11
  %145 = fcmp olt float %144, 0.000000e+00
  br i1 %145, label %146, label %149

146:                                              ; preds = %141
  %147 = load ptr, ptr %44, align 8, !tbaa !5
  %148 = getelementptr inbounds float, ptr %147, i64 1
  store float 1.000000e+00, ptr %148, align 4, !tbaa !11
  br label %154

149:                                              ; preds = %141
  %150 = load ptr, ptr %44, align 8, !tbaa !5
  %151 = getelementptr inbounds float, ptr %150, i64 1
  %152 = load float, ptr %151, align 4, !tbaa !11
  %153 = fptosi float %152 to i64
  store i64 %153, ptr %66, align 8, !tbaa !9
  br label %154

154:                                              ; preds = %149, %146
  br label %155

155:                                              ; preds = %154, %23
  %156 = load ptr, ptr %27, align 8, !tbaa !5
  %157 = load i64, ptr %156, align 8, !tbaa !9
  %158 = sitofp i64 %157 to float
  %159 = fpext float %158 to double
  %160 = call double @slamch_(ptr noundef @.str)
  %161 = fmul double %159, %160
  %162 = fptrunc double %161 to float
  store float %162, ptr %63, align 4, !tbaa !11
  store i64 10, ptr %75, align 8, !tbaa !9
  store float 5.000000e-01, ptr %77, align 4, !tbaa !11
  store float 2.500000e-01, ptr %64, align 4, !tbaa !11
  store i64 0, ptr %72, align 8, !tbaa !9
  %163 = load ptr, ptr %43, align 8, !tbaa !5
  %164 = load i64, ptr %163, align 8, !tbaa !9
  %165 = icmp sge i64 %164, 2
  br i1 %165, label %166, label %182

166:                                              ; preds = %155
  %167 = load ptr, ptr %44, align 8, !tbaa !5
  %168 = getelementptr inbounds float, ptr %167, i64 2
  %169 = load float, ptr %168, align 4, !tbaa !11
  %170 = fcmp olt float %169, 0.000000e+00
  br i1 %170, label %171, label %176

171:                                              ; preds = %166
  %172 = load i64, ptr %75, align 8, !tbaa !9
  %173 = sitofp i64 %172 to float
  %174 = load ptr, ptr %44, align 8, !tbaa !5
  %175 = getelementptr inbounds float, ptr %174, i64 2
  store float %173, ptr %175, align 4, !tbaa !11
  br label %181

176:                                              ; preds = %166
  %177 = load ptr, ptr %44, align 8, !tbaa !5
  %178 = getelementptr inbounds float, ptr %177, i64 2
  %179 = load float, ptr %178, align 4, !tbaa !11
  %180 = fptosi float %179 to i64
  store i64 %180, ptr %75, align 8, !tbaa !9
  br label %181

181:                                              ; preds = %176, %171
  br label %182

182:                                              ; preds = %181, %155
  %183 = load ptr, ptr %43, align 8, !tbaa !5
  %184 = load i64, ptr %183, align 8, !tbaa !9
  %185 = icmp sge i64 %184, 3
  br i1 %185, label %186, label %209

186:                                              ; preds = %182
  %187 = load ptr, ptr %44, align 8, !tbaa !5
  %188 = getelementptr inbounds float, ptr %187, i64 3
  %189 = load float, ptr %188, align 4, !tbaa !11
  %190 = fcmp olt float %189, 0.000000e+00
  br i1 %190, label %191, label %201

191:                                              ; preds = %186
  %192 = load i64, ptr %72, align 8, !tbaa !9
  %193 = icmp ne i64 %192, 0
  br i1 %193, label %194, label %197

194:                                              ; preds = %191
  %195 = load ptr, ptr %44, align 8, !tbaa !5
  %196 = getelementptr inbounds float, ptr %195, i64 3
  store float 0.000000e+00, ptr %196, align 4, !tbaa !11
  br label %200

197:                                              ; preds = %191
  %198 = load ptr, ptr %44, align 8, !tbaa !5
  %199 = getelementptr inbounds float, ptr %198, i64 3
  store float 1.000000e+00, ptr %199, align 4, !tbaa !11
  br label %200

200:                                              ; preds = %197, %194
  br label %208

201:                                              ; preds = %186
  %202 = load ptr, ptr %44, align 8, !tbaa !5
  %203 = getelementptr inbounds float, ptr %202, i64 3
  %204 = load float, ptr %203, align 4, !tbaa !11
  %205 = fcmp oeq float %204, 0.000000e+00
  %206 = zext i1 %205 to i32
  %207 = sext i32 %206 to i64
  store i64 %207, ptr %72, align 8, !tbaa !9
  br label %208

208:                                              ; preds = %201, %200
  br label %209

209:                                              ; preds = %208, %182
  %210 = load i64, ptr %66, align 8, !tbaa !9
  %211 = icmp eq i64 %210, 0
  br i1 %211, label %216, label %212

212:                                              ; preds = %209
  %213 = load ptr, ptr %40, align 8, !tbaa !5
  %214 = load i64, ptr %213, align 8, !tbaa !9
  %215 = icmp eq i64 %214, 0
  br i1 %215, label %216, label %217

216:                                              ; preds = %212, %209
  store i64 0, ptr %76, align 8, !tbaa !9
  br label %223

217:                                              ; preds = %212
  %218 = load i64, ptr %72, align 8, !tbaa !9
  %219 = icmp ne i64 %218, 0
  br i1 %219, label %220, label %221

220:                                              ; preds = %217
  store i64 1, ptr %76, align 8, !tbaa !9
  br label %222

221:                                              ; preds = %217
  store i64 2, ptr %76, align 8, !tbaa !9
  br label %222

222:                                              ; preds = %221, %220
  br label %223

223:                                              ; preds = %222, %216
  %224 = load ptr, ptr %26, align 8, !tbaa !5
  %225 = call i64 @lsame_(ptr noundef %224, ptr noundef @.str.1)
  store i64 %225, ptr %74, align 8, !tbaa !9
  %226 = load ptr, ptr %25, align 8, !tbaa !5
  %227 = call i64 @lsame_(ptr noundef %226, ptr noundef @.str.2)
  %228 = icmp ne i64 %227, 0
  br i1 %228, label %235, label %229

229:                                              ; preds = %223
  %230 = load ptr, ptr %25, align 8, !tbaa !5
  %231 = call i64 @lsame_(ptr noundef %230, ptr noundef @.str.3)
  %232 = icmp ne i64 %231, 0
  br i1 %232, label %235, label %233

233:                                              ; preds = %229
  %234 = load ptr, ptr %47, align 8, !tbaa !5
  store i64 -1, ptr %234, align 8, !tbaa !9
  br label %323

235:                                              ; preds = %229, %223
  %236 = load i64, ptr %74, align 8, !tbaa !9
  %237 = icmp ne i64 %236, 0
  br i1 %237, label %244, label %238

238:                                              ; preds = %235
  %239 = load ptr, ptr %26, align 8, !tbaa !5
  %240 = call i64 @lsame_(ptr noundef %239, ptr noundef @.str.4)
  %241 = icmp ne i64 %240, 0
  br i1 %241, label %244, label %242

242:                                              ; preds = %238
  %243 = load ptr, ptr %47, align 8, !tbaa !5
  store i64 -2, ptr %243, align 8, !tbaa !9
  br label %322

244:                                              ; preds = %238, %235
  %245 = load ptr, ptr %27, align 8, !tbaa !5
  %246 = load i64, ptr %245, align 8, !tbaa !9
  %247 = icmp slt i64 %246, 0
  br i1 %247, label %248, label %250

248:                                              ; preds = %244
  %249 = load ptr, ptr %47, align 8, !tbaa !5
  store i64 -3, ptr %249, align 8, !tbaa !9
  br label %321

250:                                              ; preds = %244
  %251 = load ptr, ptr %28, align 8, !tbaa !5
  %252 = load i64, ptr %251, align 8, !tbaa !9
  %253 = icmp slt i64 %252, 0
  br i1 %253, label %254, label %256

254:                                              ; preds = %250
  %255 = load ptr, ptr %47, align 8, !tbaa !5
  store i64 -4, ptr %255, align 8, !tbaa !9
  br label %320

256:                                              ; preds = %250
  %257 = load ptr, ptr %30, align 8, !tbaa !5
  %258 = load i64, ptr %257, align 8, !tbaa !9
  %259 = load ptr, ptr %27, align 8, !tbaa !5
  %260 = load i64, ptr %259, align 8, !tbaa !9
  %261 = icmp sge i64 1, %260
  br i1 %261, label %262, label %263

262:                                              ; preds = %256
  br label %266

263:                                              ; preds = %256
  %264 = load ptr, ptr %27, align 8, !tbaa !5
  %265 = load i64, ptr %264, align 8, !tbaa !9
  br label %266

266:                                              ; preds = %263, %262
  %267 = phi i64 [ 1, %262 ], [ %265, %263 ]
  %268 = icmp slt i64 %258, %267
  br i1 %268, label %269, label %271

269:                                              ; preds = %266
  %270 = load ptr, ptr %47, align 8, !tbaa !5
  store i64 -6, ptr %270, align 8, !tbaa !9
  br label %319

271:                                              ; preds = %266
  %272 = load ptr, ptr %32, align 8, !tbaa !5
  %273 = load i64, ptr %272, align 8, !tbaa !9
  %274 = load ptr, ptr %27, align 8, !tbaa !5
  %275 = load i64, ptr %274, align 8, !tbaa !9
  %276 = icmp sge i64 1, %275
  br i1 %276, label %277, label %278

277:                                              ; preds = %271
  br label %281

278:                                              ; preds = %271
  %279 = load ptr, ptr %27, align 8, !tbaa !5
  %280 = load i64, ptr %279, align 8, !tbaa !9
  br label %281

281:                                              ; preds = %278, %277
  %282 = phi i64 [ 1, %277 ], [ %280, %278 ]
  %283 = icmp slt i64 %273, %282
  br i1 %283, label %284, label %286

284:                                              ; preds = %281
  %285 = load ptr, ptr %47, align 8, !tbaa !5
  store i64 -8, ptr %285, align 8, !tbaa !9
  br label %318

286:                                              ; preds = %281
  %287 = load ptr, ptr %35, align 8, !tbaa !5
  %288 = load i64, ptr %287, align 8, !tbaa !9
  %289 = load ptr, ptr %27, align 8, !tbaa !5
  %290 = load i64, ptr %289, align 8, !tbaa !9
  %291 = icmp sge i64 1, %290
  br i1 %291, label %292, label %293

292:                                              ; preds = %286
  br label %296

293:                                              ; preds = %286
  %294 = load ptr, ptr %27, align 8, !tbaa !5
  %295 = load i64, ptr %294, align 8, !tbaa !9
  br label %296

296:                                              ; preds = %293, %292
  %297 = phi i64 [ 1, %292 ], [ %295, %293 ]
  %298 = icmp slt i64 %288, %297
  br i1 %298, label %299, label %301

299:                                              ; preds = %296
  %300 = load ptr, ptr %47, align 8, !tbaa !5
  store i64 -11, ptr %300, align 8, !tbaa !9
  br label %317

301:                                              ; preds = %296
  %302 = load ptr, ptr %37, align 8, !tbaa !5
  %303 = load i64, ptr %302, align 8, !tbaa !9
  %304 = load ptr, ptr %27, align 8, !tbaa !5
  %305 = load i64, ptr %304, align 8, !tbaa !9
  %306 = icmp sge i64 1, %305
  br i1 %306, label %307, label %308

307:                                              ; preds = %301
  br label %311

308:                                              ; preds = %301
  %309 = load ptr, ptr %27, align 8, !tbaa !5
  %310 = load i64, ptr %309, align 8, !tbaa !9
  br label %311

311:                                              ; preds = %308, %307
  %312 = phi i64 [ 1, %307 ], [ %310, %308 ]
  %313 = icmp slt i64 %303, %312
  br i1 %313, label %314, label %316

314:                                              ; preds = %311
  %315 = load ptr, ptr %47, align 8, !tbaa !5
  store i64 -13, ptr %315, align 8, !tbaa !9
  br label %316

316:                                              ; preds = %314, %311
  br label %317

317:                                              ; preds = %316, %299
  br label %318

318:                                              ; preds = %317, %284
  br label %319

319:                                              ; preds = %318, %269
  br label %320

320:                                              ; preds = %319, %254
  br label %321

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

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

323:                                              ; preds = %322, %233
  %324 = load ptr, ptr %47, align 8, !tbaa !5
  %325 = load i64, ptr %324, align 8, !tbaa !9
  %326 = icmp ne i64 %325, 0
  br i1 %326, label %327, label %332

327:                                              ; preds = %323
  %328 = load ptr, ptr %47, align 8, !tbaa !5
  %329 = load i64, ptr %328, align 8, !tbaa !9
  %330 = sub nsw i64 0, %329
  store i64 %330, ptr %60, align 8, !tbaa !9
  %331 = call i32 @xerbla_(ptr noundef @.str.5, ptr noundef %60)
  store i32 0, ptr %24, align 4
  store i32 1, ptr %78, align 4
  br label %860

332:                                              ; preds = %323
  %333 = load ptr, ptr %27, align 8, !tbaa !5
  %334 = load i64, ptr %333, align 8, !tbaa !9
  %335 = icmp eq i64 %334, 0
  br i1 %335, label %340, label %336

336:                                              ; preds = %332
  %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 %340, label %407

340:                                              ; preds = %336, %332
  %341 = load ptr, ptr %38, align 8, !tbaa !5
  store float 1.000000e+00, ptr %341, align 4, !tbaa !11
  %342 = load ptr, ptr %28, align 8, !tbaa !5
  %343 = load i64, ptr %342, align 8, !tbaa !9
  store i64 %343, ptr %60, align 8, !tbaa !9
  store i64 1, ptr %67, align 8, !tbaa !9
  br label %344

344:                                              ; preds = %403, %340
  %345 = load i64, ptr %67, align 8, !tbaa !9
  %346 = load i64, ptr %60, align 8, !tbaa !9
  %347 = icmp sle i64 %345, %346
  br i1 %347, label %348, label %406

348:                                              ; preds = %344
  %349 = load ptr, ptr %39, align 8, !tbaa !5
  %350 = load i64, ptr %67, align 8, !tbaa !9
  %351 = getelementptr inbounds float, ptr %349, i64 %350
  store float 0.000000e+00, ptr %351, align 4, !tbaa !11
  %352 = load ptr, ptr %40, align 8, !tbaa !5
  %353 = load i64, ptr %352, align 8, !tbaa !9
  %354 = icmp sge i64 %353, 1
  br i1 %354, label %355, label %366

355:                                              ; preds = %348
  %356 = load ptr, ptr %41, align 8, !tbaa !5
  %357 = load i64, ptr %67, align 8, !tbaa !9
  %358 = load i64, ptr %56, align 8, !tbaa !9
  %359 = add nsw i64 %357, %358
  %360 = getelementptr inbounds float, ptr %356, i64 %359
  store float 1.000000e+00, ptr %360, align 4, !tbaa !11
  %361 = load ptr, ptr %42, align 8, !tbaa !5
  %362 = load i64, ptr %67, align 8, !tbaa !9
  %363 = load i64, ptr %58, align 8, !tbaa !9
  %364 = add nsw i64 %362, %363
  %365 = getelementptr inbounds float, ptr %361, i64 %364
  store float 1.000000e+00, ptr %365, align 4, !tbaa !11
  br label %402

366:                                              ; preds = %348
  %367 = load ptr, ptr %40, align 8, !tbaa !5
  %368 = load i64, ptr %367, align 8, !tbaa !9
  %369 = icmp sge i64 %368, 2
  br i1 %369, label %370, label %383

370:                                              ; preds = %366
  %371 = load ptr, ptr %41, align 8, !tbaa !5
  %372 = load i64, ptr %67, align 8, !tbaa !9
  %373 = load i64, ptr %56, align 8, !tbaa !9
  %374 = shl i64 %373, 1
  %375 = add nsw i64 %372, %374
  %376 = getelementptr inbounds float, ptr %371, i64 %375
  store float 0.000000e+00, ptr %376, align 4, !tbaa !11
  %377 = load ptr, ptr %42, align 8, !tbaa !5
  %378 = load i64, ptr %67, align 8, !tbaa !9
  %379 = load i64, ptr %58, align 8, !tbaa !9
  %380 = shl i64 %379, 1
  %381 = add nsw i64 %378, %380
  %382 = getelementptr inbounds float, ptr %377, i64 %381
  store float 0.000000e+00, ptr %382, align 4, !tbaa !11
  br label %401

383:                                              ; preds = %366
  %384 = load ptr, ptr %40, align 8, !tbaa !5
  %385 = load i64, ptr %384, align 8, !tbaa !9
  %386 = icmp sge i64 %385, 3
  br i1 %386, label %387, label %400

387:                                              ; preds = %383
  %388 = load ptr, ptr %41, align 8, !tbaa !5
  %389 = load i64, ptr %67, align 8, !tbaa !9
  %390 = load i64, ptr %56, align 8, !tbaa !9
  %391 = mul nsw i64 %390, 3
  %392 = add nsw i64 %389, %391
  %393 = getelementptr inbounds float, ptr %388, i64 %392
  store float 1.000000e+00, ptr %393, align 4, !tbaa !11
  %394 = load ptr, ptr %42, align 8, !tbaa !5
  %395 = load i64, ptr %67, align 8, !tbaa !9
  %396 = load i64, ptr %58, align 8, !tbaa !9
  %397 = mul nsw i64 %396, 3
  %398 = add nsw i64 %395, %397
  %399 = getelementptr inbounds float, ptr %394, i64 %398
  store float 1.000000e+00, ptr %399, align 4, !tbaa !11
  br label %400

400:                                              ; preds = %387, %383
  br label %401

401:                                              ; preds = %400, %370
  br label %402

402:                                              ; preds = %401, %355
  br label %403

403:                                              ; preds = %402
  %404 = load i64, ptr %67, align 8, !tbaa !9
  %405 = add nsw i64 %404, 1
  store i64 %405, ptr %67, align 8, !tbaa !9
  br label %344, !llvm.loop !13

406:                                              ; preds = %344
  store i32 0, ptr %24, align 4
  store i32 1, ptr %78, align 4
  br label %860

407:                                              ; preds = %336
  %408 = load ptr, ptr %38, align 8, !tbaa !5
  store float 0.000000e+00, ptr %408, align 4, !tbaa !11
  %409 = load ptr, ptr %28, align 8, !tbaa !5
  %410 = load i64, ptr %409, align 8, !tbaa !9
  store i64 %410, ptr %60, align 8, !tbaa !9
  store i64 1, ptr %67, align 8, !tbaa !9
  br label %411

411:                                              ; preds = %470, %407
  %412 = load i64, ptr %67, align 8, !tbaa !9
  %413 = load i64, ptr %60, align 8, !tbaa !9
  %414 = icmp sle i64 %412, %413
  br i1 %414, label %415, label %473

415:                                              ; preds = %411
  %416 = load ptr, ptr %39, align 8, !tbaa !5
  %417 = load i64, ptr %67, align 8, !tbaa !9
  %418 = getelementptr inbounds float, ptr %416, i64 %417
  store float 1.000000e+00, ptr %418, align 4, !tbaa !11
  %419 = load ptr, ptr %40, align 8, !tbaa !5
  %420 = load i64, ptr %419, align 8, !tbaa !9
  %421 = icmp sge i64 %420, 1
  br i1 %421, label %422, label %433

422:                                              ; preds = %415
  %423 = load ptr, ptr %41, align 8, !tbaa !5
  %424 = load i64, ptr %67, align 8, !tbaa !9
  %425 = load i64, ptr %56, align 8, !tbaa !9
  %426 = add nsw i64 %424, %425
  %427 = getelementptr inbounds float, ptr %423, i64 %426
  store float 1.000000e+00, ptr %427, align 4, !tbaa !11
  %428 = load ptr, ptr %42, align 8, !tbaa !5
  %429 = load i64, ptr %67, align 8, !tbaa !9
  %430 = load i64, ptr %58, align 8, !tbaa !9
  %431 = add nsw i64 %429, %430
  %432 = getelementptr inbounds float, ptr %428, i64 %431
  store float 1.000000e+00, ptr %432, align 4, !tbaa !11
  br label %469

433:                                              ; preds = %415
  %434 = load ptr, ptr %40, align 8, !tbaa !5
  %435 = load i64, ptr %434, align 8, !tbaa !9
  %436 = icmp sge i64 %435, 2
  br i1 %436, label %437, label %450

437:                                              ; preds = %433
  %438 = load ptr, ptr %41, align 8, !tbaa !5
  %439 = load i64, ptr %67, align 8, !tbaa !9
  %440 = load i64, ptr %56, align 8, !tbaa !9
  %441 = shl i64 %440, 1
  %442 = add nsw i64 %439, %441
  %443 = getelementptr inbounds float, ptr %438, i64 %442
  store float 1.000000e+00, ptr %443, align 4, !tbaa !11
  %444 = load ptr, ptr %42, align 8, !tbaa !5
  %445 = load i64, ptr %67, align 8, !tbaa !9
  %446 = load i64, ptr %58, align 8, !tbaa !9
  %447 = shl i64 %446, 1
  %448 = add nsw i64 %445, %447
  %449 = getelementptr inbounds float, ptr %444, i64 %448
  store float 1.000000e+00, ptr %449, align 4, !tbaa !11
  br label %468

450:                                              ; preds = %433
  %451 = load ptr, ptr %40, align 8, !tbaa !5
  %452 = load i64, ptr %451, align 8, !tbaa !9
  %453 = icmp sge i64 %452, 3
  br i1 %453, label %454, label %467

454:                                              ; preds = %450
  %455 = load ptr, ptr %41, align 8, !tbaa !5
  %456 = load i64, ptr %67, align 8, !tbaa !9
  %457 = load i64, ptr %56, align 8, !tbaa !9
  %458 = mul nsw i64 %457, 3
  %459 = add nsw i64 %456, %458
  %460 = getelementptr inbounds float, ptr %455, i64 %459
  store float 0.000000e+00, ptr %460, align 4, !tbaa !11
  %461 = load ptr, ptr %42, align 8, !tbaa !5
  %462 = load i64, ptr %67, align 8, !tbaa !9
  %463 = load i64, ptr %58, align 8, !tbaa !9
  %464 = mul nsw i64 %463, 3
  %465 = add nsw i64 %462, %464
  %466 = getelementptr inbounds float, ptr %461, i64 %465
  store float 0.000000e+00, ptr %466, align 4, !tbaa !11
  br label %467

467:                                              ; preds = %454, %450
  br label %468

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

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

470:                                              ; preds = %469
  %471 = load i64, ptr %67, align 8, !tbaa !9
  %472 = add nsw i64 %471, 1
  store i64 %472, ptr %67, align 8, !tbaa !9
  br label %411, !llvm.loop !15

473:                                              ; preds = %411
  %474 = getelementptr inbounds [1 x i8], ptr %71, i64 0, i64 0
  store i8 73, ptr %474, align 1, !tbaa !16
  %475 = getelementptr inbounds [1 x i8], ptr %71, i64 0, i64 0
  %476 = load ptr, ptr %25, align 8, !tbaa !5
  %477 = load ptr, ptr %27, align 8, !tbaa !5
  %478 = load ptr, ptr %29, align 8, !tbaa !5
  %479 = load i64, ptr %49, align 8, !tbaa !9
  %480 = getelementptr inbounds %struct.complex, ptr %478, i64 %479
  %481 = load ptr, ptr %30, align 8, !tbaa !5
  %482 = load ptr, ptr %46, align 8, !tbaa !5
  %483 = getelementptr inbounds float, ptr %482, i64 1
  %484 = call double @clanhe_(ptr noundef %475, ptr noundef %476, ptr noundef %477, ptr noundef %480, ptr noundef %481, ptr noundef %483)
  %485 = fptrunc double %484 to float
  store float %485, ptr %73, align 4, !tbaa !11
  %486 = load ptr, ptr %25, align 8, !tbaa !5
  %487 = load ptr, ptr %27, align 8, !tbaa !5
  %488 = load ptr, ptr %31, align 8, !tbaa !5
  %489 = load i64, ptr %51, align 8, !tbaa !9
  %490 = getelementptr inbounds %struct.complex, ptr %488, i64 %489
  %491 = load ptr, ptr %32, align 8, !tbaa !5
  %492 = load ptr, ptr %38, align 8, !tbaa !5
  %493 = load ptr, ptr %45, align 8, !tbaa !5
  %494 = getelementptr inbounds %struct.complex, ptr %493, i64 1
  %495 = load ptr, ptr %46, align 8, !tbaa !5
  %496 = getelementptr inbounds float, ptr %495, i64 1
  %497 = load ptr, ptr %47, align 8, !tbaa !5
  %498 = call i32 @cpocon_(ptr noundef %486, ptr noundef %487, ptr noundef %490, ptr noundef %491, ptr noundef %73, ptr noundef %492, ptr noundef %494, ptr noundef %496, ptr noundef %497)
  %499 = load i64, ptr %66, align 8, !tbaa !9
  %500 = icmp ne i64 %499, 0
  br i1 %500, label %501, label %546

501:                                              ; preds = %473
  %502 = call i64 @ilaprec_(ptr noundef @.str.6)
  store i64 %502, ptr %69, align 8, !tbaa !9
  %503 = load ptr, ptr %25, align 8, !tbaa !5
  %504 = load ptr, ptr %27, align 8, !tbaa !5
  %505 = load ptr, ptr %28, align 8, !tbaa !5
  %506 = load ptr, ptr %29, align 8, !tbaa !5
  %507 = load i64, ptr %49, align 8, !tbaa !9
  %508 = getelementptr inbounds %struct.complex, ptr %506, i64 %507
  %509 = load ptr, ptr %30, align 8, !tbaa !5
  %510 = load ptr, ptr %31, 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 %32, align 8, !tbaa !5
  %514 = load ptr, ptr %33, align 8, !tbaa !5
  %515 = getelementptr inbounds float, ptr %514, i64 1
  %516 = load ptr, ptr %34, align 8, !tbaa !5
  %517 = load i64, ptr %53, align 8, !tbaa !9
  %518 = getelementptr inbounds %struct.complex, ptr %516, i64 %517
  %519 = load ptr, ptr %35, align 8, !tbaa !5
  %520 = load ptr, ptr %36, align 8, !tbaa !5
  %521 = load i64, ptr %55, align 8, !tbaa !9
  %522 = getelementptr inbounds %struct.complex, ptr %520, i64 %521
  %523 = load ptr, ptr %37, align 8, !tbaa !5
  %524 = load ptr, ptr %39, align 8, !tbaa !5
  %525 = getelementptr inbounds float, ptr %524, i64 1
  %526 = load ptr, ptr %41, align 8, !tbaa !5
  %527 = load i64, ptr %57, align 8, !tbaa !9
  %528 = getelementptr inbounds float, ptr %526, i64 %527
  %529 = load ptr, ptr %42, align 8, !tbaa !5
  %530 = load i64, ptr %59, align 8, !tbaa !9
  %531 = getelementptr inbounds float, ptr %529, i64 %530
  %532 = load ptr, ptr %45, align 8, !tbaa !5
  %533 = getelementptr inbounds %struct.complex, ptr %532, i64 1
  %534 = load ptr, ptr %46, align 8, !tbaa !5
  %535 = getelementptr inbounds float, ptr %534, i64 1
  %536 = load ptr, ptr %45, align 8, !tbaa !5
  %537 = load ptr, ptr %27, align 8, !tbaa !5
  %538 = load i64, ptr %537, align 8, !tbaa !9
  %539 = add nsw i64 %538, 1
  %540 = getelementptr inbounds %struct.complex, ptr %536, i64 %539
  %541 = load ptr, ptr %46, align 8, !tbaa !5
  %542 = getelementptr inbounds float, ptr %541, i64 1
  %543 = load ptr, ptr %38, align 8, !tbaa !5
  %544 = load ptr, ptr %47, align 8, !tbaa !5
  %545 = call i32 @cla_porfsx_extended__(ptr noundef %69, ptr noundef %503, ptr noundef %504, ptr noundef %505, ptr noundef %508, ptr noundef %509, ptr noundef %512, ptr noundef %513, ptr noundef %74, ptr noundef %515, ptr noundef %518, ptr noundef %519, ptr noundef %522, ptr noundef %523, ptr noundef %525, ptr noundef %76, ptr noundef %528, ptr noundef %531, ptr noundef %533, ptr noundef %535, ptr noundef %540, ptr noundef %542, ptr noundef %543, ptr noundef %75, ptr noundef %77, ptr noundef %64, ptr noundef %72, ptr noundef %544, i64 noundef 1)
  br label %546

546:                                              ; preds = %501, %473
  store float 1.000000e+01, ptr %61, align 4, !tbaa !11
  %547 = load ptr, ptr %27, align 8, !tbaa !5
  %548 = load i64, ptr %547, align 8, !tbaa !9
  %549 = sitofp i64 %548 to float
  %550 = fpext float %549 to double
  %551 = call double @sqrt(double noundef %550) #4
  %552 = fptrunc double %551 to float
  store float %552, ptr %62, align 4, !tbaa !11
  %553 = load float, ptr %61, align 4, !tbaa !11
  %554 = load float, ptr %62, align 4, !tbaa !11
  %555 = fcmp oge float %553, %554
  br i1 %555, label %556, label %558

556:                                              ; preds = %546
  %557 = load float, ptr %61, align 4, !tbaa !11
  br label %560

558:                                              ; preds = %546
  %559 = load float, ptr %62, align 4, !tbaa !11
  br label %560

560:                                              ; preds = %558, %556
  %561 = phi float [ %557, %556 ], [ %559, %558 ]
  %562 = fpext float %561 to double
  %563 = call double @slamch_(ptr noundef @.str)
  %564 = fmul double %562, %563
  %565 = fptrunc double %564 to float
  store float %565, ptr %65, align 4, !tbaa !11
  %566 = load ptr, ptr %40, align 8, !tbaa !5
  %567 = load i64, ptr %566, align 8, !tbaa !9
  %568 = icmp sge i64 %567, 1
  br i1 %568, label %569, label %711

569:                                              ; preds = %560
  %570 = load i64, ptr %76, align 8, !tbaa !9
  %571 = icmp sge i64 %570, 1
  br i1 %571, label %572, label %711

572:                                              ; preds = %569
  %573 = load i64, ptr %74, align 8, !tbaa !9
  %574 = icmp ne i64 %573, 0
  br i1 %574, label %575, label %595

575:                                              ; preds = %572
  %576 = load ptr, ptr %25, align 8, !tbaa !5
  %577 = load ptr, ptr %27, align 8, !tbaa !5
  %578 = load ptr, ptr %29, align 8, !tbaa !5
  %579 = load i64, ptr %49, align 8, !tbaa !9
  %580 = getelementptr inbounds %struct.complex, ptr %578, i64 %579
  %581 = load ptr, ptr %30, align 8, !tbaa !5
  %582 = load ptr, ptr %31, align 8, !tbaa !5
  %583 = load i64, ptr %51, align 8, !tbaa !9
  %584 = getelementptr inbounds %struct.complex, ptr %582, i64 %583
  %585 = load ptr, ptr %32, align 8, !tbaa !5
  %586 = load ptr, ptr %33, align 8, !tbaa !5
  %587 = getelementptr inbounds float, ptr %586, i64 1
  %588 = load ptr, ptr %47, align 8, !tbaa !5
  %589 = load ptr, ptr %45, align 8, !tbaa !5
  %590 = getelementptr inbounds %struct.complex, ptr %589, i64 1
  %591 = load ptr, ptr %46, align 8, !tbaa !5
  %592 = getelementptr inbounds float, ptr %591, i64 1
  %593 = call double @cla_porcond_c__(ptr noundef %576, ptr noundef %577, ptr noundef %580, ptr noundef %581, ptr noundef %584, ptr noundef %585, ptr noundef %587, ptr noundef @c_true, ptr noundef %588, ptr noundef %590, ptr noundef %592, i64 noundef 1)
  %594 = fptrunc double %593 to float
  store float %594, ptr %68, align 4, !tbaa !11
  br label %615

595:                                              ; preds = %572
  %596 = load ptr, ptr %25, align 8, !tbaa !5
  %597 = load ptr, ptr %27, align 8, !tbaa !5
  %598 = load ptr, ptr %29, align 8, !tbaa !5
  %599 = load i64, ptr %49, align 8, !tbaa !9
  %600 = getelementptr inbounds %struct.complex, ptr %598, i64 %599
  %601 = load ptr, ptr %30, align 8, !tbaa !5
  %602 = load ptr, ptr %31, align 8, !tbaa !5
  %603 = load i64, ptr %51, align 8, !tbaa !9
  %604 = getelementptr inbounds %struct.complex, ptr %602, i64 %603
  %605 = load ptr, ptr %32, align 8, !tbaa !5
  %606 = load ptr, ptr %33, align 8, !tbaa !5
  %607 = getelementptr inbounds float, ptr %606, i64 1
  %608 = load ptr, ptr %47, align 8, !tbaa !5
  %609 = load ptr, ptr %45, align 8, !tbaa !5
  %610 = getelementptr inbounds %struct.complex, ptr %609, i64 1
  %611 = load ptr, ptr %46, align 8, !tbaa !5
  %612 = getelementptr inbounds float, ptr %611, i64 1
  %613 = call double @cla_porcond_c__(ptr noundef %596, ptr noundef %597, ptr noundef %600, ptr noundef %601, ptr noundef %604, ptr noundef %605, ptr noundef %607, ptr noundef @c_false, ptr noundef %608, ptr noundef %610, ptr noundef %612, i64 noundef 1)
  %614 = fptrunc double %613 to float
  store float %614, ptr %68, align 4, !tbaa !11
  br label %615

615:                                              ; preds = %595, %575
  %616 = load ptr, ptr %28, align 8, !tbaa !5
  %617 = load i64, ptr %616, align 8, !tbaa !9
  store i64 %617, ptr %60, align 8, !tbaa !9
  store i64 1, ptr %67, align 8, !tbaa !9
  br label %618

618:                                              ; preds = %707, %615
  %619 = load i64, ptr %67, align 8, !tbaa !9
  %620 = load i64, ptr %60, align 8, !tbaa !9
  %621 = icmp sle i64 %619, %620
  br i1 %621, label %622, label %710

622:                                              ; preds = %618
  %623 = load ptr, ptr %40, align 8, !tbaa !5
  %624 = load i64, ptr %623, align 8, !tbaa !9
  %625 = icmp sge i64 %624, 2
  br i1 %625, label %626, label %642

626:                                              ; preds = %622
  %627 = load ptr, ptr %41, align 8, !tbaa !5
  %628 = load i64, ptr %67, align 8, !tbaa !9
  %629 = load i64, ptr %56, align 8, !tbaa !9
  %630 = shl i64 %629, 1
  %631 = add nsw i64 %628, %630
  %632 = getelementptr inbounds float, ptr %627, i64 %631
  %633 = load float, ptr %632, align 4, !tbaa !11
  %634 = fcmp ogt float %633, 1.000000e+00
  br i1 %634, label %635, label %642

635:                                              ; preds = %626
  %636 = load ptr, ptr %41, align 8, !tbaa !5
  %637 = load i64, ptr %67, align 8, !tbaa !9
  %638 = load i64, ptr %56, align 8, !tbaa !9
  %639 = shl i64 %638, 1
  %640 = add nsw i64 %637, %639
  %641 = getelementptr inbounds float, ptr %636, i64 %640
  store float 1.000000e+00, ptr %641, align 4, !tbaa !11
  br label %642

642:                                              ; preds = %635, %626, %622
  %643 = load float, ptr %68, align 4, !tbaa !11
  %644 = load float, ptr %63, align 4, !tbaa !11
  %645 = fcmp olt float %643, %644
  br i1 %645, label %646, label %670

646:                                              ; preds = %642
  %647 = load ptr, ptr %41, align 8, !tbaa !5
  %648 = load i64, ptr %67, align 8, !tbaa !9
  %649 = load i64, ptr %56, align 8, !tbaa !9
  %650 = shl i64 %649, 1
  %651 = add nsw i64 %648, %650
  %652 = getelementptr inbounds float, ptr %647, i64 %651
  store float 1.000000e+00, ptr %652, align 4, !tbaa !11
  %653 = load ptr, ptr %41, align 8, !tbaa !5
  %654 = load i64, ptr %67, align 8, !tbaa !9
  %655 = load i64, ptr %56, align 8, !tbaa !9
  %656 = add nsw i64 %654, %655
  %657 = getelementptr inbounds float, ptr %653, i64 %656
  store float 0.000000e+00, ptr %657, align 4, !tbaa !11
  %658 = load ptr, ptr %47, align 8, !tbaa !5
  %659 = load i64, ptr %658, align 8, !tbaa !9
  %660 = load ptr, ptr %27, align 8, !tbaa !5
  %661 = load i64, ptr %660, align 8, !tbaa !9
  %662 = icmp sle i64 %659, %661
  br i1 %662, label %663, label %669

663:                                              ; preds = %646
  %664 = load ptr, ptr %27, align 8, !tbaa !5
  %665 = load i64, ptr %664, align 8, !tbaa !9
  %666 = load i64, ptr %67, align 8, !tbaa !9
  %667 = add nsw i64 %665, %666
  %668 = load ptr, ptr %47, align 8, !tbaa !5
  store i64 %667, ptr %668, align 8, !tbaa !9
  br label %669

669:                                              ; preds = %663, %646
  br label %694

670:                                              ; preds = %642
  %671 = load ptr, ptr %41, align 8, !tbaa !5
  %672 = load i64, ptr %67, align 8, !tbaa !9
  %673 = load i64, ptr %56, align 8, !tbaa !9
  %674 = shl i64 %673, 1
  %675 = add nsw i64 %672, %674
  %676 = getelementptr inbounds float, ptr %671, i64 %675
  %677 = load float, ptr %676, align 4, !tbaa !11
  %678 = load float, ptr %65, align 4, !tbaa !11
  %679 = fcmp olt float %677, %678
  br i1 %679, label %680, label %693

680:                                              ; preds = %670
  %681 = load float, ptr %65, align 4, !tbaa !11
  %682 = load ptr, ptr %41, align 8, !tbaa !5
  %683 = load i64, ptr %67, align 8, !tbaa !9
  %684 = load i64, ptr %56, align 8, !tbaa !9
  %685 = shl i64 %684, 1
  %686 = add nsw i64 %683, %685
  %687 = getelementptr inbounds float, ptr %682, i64 %686
  store float %681, ptr %687, align 4, !tbaa !11
  %688 = load ptr, ptr %41, align 8, !tbaa !5
  %689 = load i64, ptr %67, align 8, !tbaa !9
  %690 = load i64, ptr %56, align 8, !tbaa !9
  %691 = add nsw i64 %689, %690
  %692 = getelementptr inbounds float, ptr %688, i64 %691
  store float 1.000000e+00, ptr %692, align 4, !tbaa !11
  br label %693

693:                                              ; preds = %680, %670
  br label %694

694:                                              ; preds = %693, %669
  %695 = load ptr, ptr %40, align 8, !tbaa !5
  %696 = load i64, ptr %695, align 8, !tbaa !9
  %697 = icmp sge i64 %696, 3
  br i1 %697, label %698, label %706

698:                                              ; preds = %694
  %699 = load float, ptr %68, align 4, !tbaa !11
  %700 = load ptr, ptr %41, align 8, !tbaa !5
  %701 = load i64, ptr %67, align 8, !tbaa !9
  %702 = load i64, ptr %56, align 8, !tbaa !9
  %703 = mul nsw i64 %702, 3
  %704 = add nsw i64 %701, %703
  %705 = getelementptr inbounds float, ptr %700, i64 %704
  store float %699, ptr %705, align 4, !tbaa !11
  br label %706

706:                                              ; preds = %698, %694
  br label %707

707:                                              ; preds = %706
  %708 = load i64, ptr %67, align 8, !tbaa !9
  %709 = add nsw i64 %708, 1
  store i64 %709, ptr %67, align 8, !tbaa !9
  br label %618, !llvm.loop !17

710:                                              ; preds = %618
  br label %711

711:                                              ; preds = %710, %569, %560
  %712 = load ptr, ptr %40, align 8, !tbaa !5
  %713 = load i64, ptr %712, align 8, !tbaa !9
  %714 = icmp sge i64 %713, 1
  br i1 %714, label %715, label %859

715:                                              ; preds = %711
  %716 = load i64, ptr %76, align 8, !tbaa !9
  %717 = icmp sge i64 %716, 2
  br i1 %717, label %718, label %859

718:                                              ; preds = %715
  %719 = call double @slamch_(ptr noundef @.str)
  %720 = call double @sqrt(double noundef %719) #4
  %721 = fptrunc double %720 to float
  store float %721, ptr %70, align 4, !tbaa !11
  %722 = load ptr, ptr %28, align 8, !tbaa !5
  %723 = load i64, ptr %722, align 8, !tbaa !9
  store i64 %723, ptr %60, align 8, !tbaa !9
  store i64 1, ptr %67, align 8, !tbaa !9
  br label %724

724:                                              ; preds = %855, %718
  %725 = load i64, ptr %67, align 8, !tbaa !9
  %726 = load i64, ptr %60, align 8, !tbaa !9
  %727 = icmp sle i64 %725, %726
  br i1 %727, label %728, label %858

728:                                              ; preds = %724
  %729 = load ptr, ptr %42, align 8, !tbaa !5
  %730 = load i64, ptr %67, align 8, !tbaa !9
  %731 = load i64, ptr %58, align 8, !tbaa !9
  %732 = shl i64 %731, 1
  %733 = add nsw i64 %730, %732
  %734 = getelementptr inbounds float, ptr %729, i64 %733
  %735 = load float, ptr %734, align 4, !tbaa !11
  %736 = load float, ptr %70, align 4, !tbaa !11
  %737 = fcmp olt float %735, %736
  br i1 %737, label %738, label %762

738:                                              ; preds = %728
  %739 = load ptr, ptr %25, align 8, !tbaa !5
  %740 = load ptr, ptr %27, align 8, !tbaa !5
  %741 = load ptr, ptr %29, align 8, !tbaa !5
  %742 = load i64, ptr %49, align 8, !tbaa !9
  %743 = getelementptr inbounds %struct.complex, ptr %741, i64 %742
  %744 = load ptr, ptr %30, align 8, !tbaa !5
  %745 = load ptr, ptr %31, align 8, !tbaa !5
  %746 = load i64, ptr %51, align 8, !tbaa !9
  %747 = getelementptr inbounds %struct.complex, ptr %745, i64 %746
  %748 = load ptr, ptr %32, align 8, !tbaa !5
  %749 = load ptr, ptr %36, align 8, !tbaa !5
  %750 = load i64, ptr %67, align 8, !tbaa !9
  %751 = load i64, ptr %54, align 8, !tbaa !9
  %752 = mul nsw i64 %750, %751
  %753 = add nsw i64 %752, 1
  %754 = getelementptr inbounds %struct.complex, ptr %749, i64 %753
  %755 = load ptr, ptr %47, align 8, !tbaa !5
  %756 = load ptr, ptr %45, align 8, !tbaa !5
  %757 = getelementptr inbounds %struct.complex, ptr %756, i64 1
  %758 = load ptr, ptr %46, align 8, !tbaa !5
  %759 = getelementptr inbounds float, ptr %758, i64 1
  %760 = call double @cla_porcond_x__(ptr noundef %739, ptr noundef %740, ptr noundef %743, ptr noundef %744, ptr noundef %747, ptr noundef %748, ptr noundef %754, ptr noundef %755, ptr noundef %757, ptr noundef %759, i64 noundef 1)
  %761 = fptrunc double %760 to float
  store float %761, ptr %68, align 4, !tbaa !11
  br label %763

762:                                              ; preds = %728
  store float 0.000000e+00, ptr %68, align 4, !tbaa !11
  br label %763

763:                                              ; preds = %762, %738
  %764 = load ptr, ptr %40, align 8, !tbaa !5
  %765 = load i64, ptr %764, align 8, !tbaa !9
  %766 = icmp sge i64 %765, 2
  br i1 %766, label %767, label %783

767:                                              ; preds = %763
  %768 = load ptr, ptr %42, align 8, !tbaa !5
  %769 = load i64, ptr %67, align 8, !tbaa !9
  %770 = load i64, ptr %58, align 8, !tbaa !9
  %771 = shl i64 %770, 1
  %772 = add nsw i64 %769, %771
  %773 = getelementptr inbounds float, ptr %768, i64 %772
  %774 = load float, ptr %773, align 4, !tbaa !11
  %775 = fcmp ogt float %774, 1.000000e+00
  br i1 %775, label %776, label %783

776:                                              ; preds = %767
  %777 = load ptr, ptr %42, align 8, !tbaa !5
  %778 = load i64, ptr %67, align 8, !tbaa !9
  %779 = load i64, ptr %58, align 8, !tbaa !9
  %780 = shl i64 %779, 1
  %781 = add nsw i64 %778, %780
  %782 = getelementptr inbounds float, ptr %777, i64 %781
  store float 1.000000e+00, ptr %782, align 4, !tbaa !11
  br label %783

783:                                              ; preds = %776, %767, %763
  %784 = load float, ptr %68, align 4, !tbaa !11
  %785 = load float, ptr %63, align 4, !tbaa !11
  %786 = fcmp olt float %784, %785
  br i1 %786, label %787, label %818

787:                                              ; preds = %783
  %788 = load ptr, ptr %42, align 8, !tbaa !5
  %789 = load i64, ptr %67, align 8, !tbaa !9
  %790 = load i64, ptr %58, align 8, !tbaa !9
  %791 = shl i64 %790, 1
  %792 = add nsw i64 %789, %791
  %793 = getelementptr inbounds float, ptr %788, i64 %792
  store float 1.000000e+00, ptr %793, align 4, !tbaa !11
  %794 = load ptr, ptr %42, align 8, !tbaa !5
  %795 = load i64, ptr %67, align 8, !tbaa !9
  %796 = load i64, ptr %58, align 8, !tbaa !9
  %797 = add nsw i64 %795, %796
  %798 = getelementptr inbounds float, ptr %794, i64 %797
  store float 0.000000e+00, ptr %798, align 4, !tbaa !11
  %799 = load ptr, ptr %44, align 8, !tbaa !5
  %800 = getelementptr inbounds float, ptr %799, i64 3
  %801 = load float, ptr %800, align 4, !tbaa !11
  %802 = fcmp oeq float %801, 1.000000e+00
  br i1 %802, label %803, label %817

803:                                              ; preds = %787
  %804 = load ptr, ptr %47, align 8, !tbaa !5
  %805 = load i64, ptr %804, align 8, !tbaa !9
  %806 = load ptr, ptr %27, align 8, !tbaa !5
  %807 = load i64, ptr %806, align 8, !tbaa !9
  %808 = load i64, ptr %67, align 8, !tbaa !9
  %809 = add nsw i64 %807, %808
  %810 = icmp slt i64 %805, %809
  br i1 %810, label %811, label %817

811:                                              ; preds = %803
  %812 = load ptr, ptr %27, align 8, !tbaa !5
  %813 = load i64, ptr %812, align 8, !tbaa !9
  %814 = load i64, ptr %67, align 8, !tbaa !9
  %815 = add nsw i64 %813, %814
  %816 = load ptr, ptr %47, align 8, !tbaa !5
  store i64 %815, ptr %816, align 8, !tbaa !9
  br label %817

817:                                              ; preds = %811, %803, %787
  br label %842

818:                                              ; preds = %783
  %819 = load ptr, ptr %42, align 8, !tbaa !5
  %820 = load i64, ptr %67, align 8, !tbaa !9
  %821 = load i64, ptr %58, align 8, !tbaa !9
  %822 = shl i64 %821, 1
  %823 = add nsw i64 %820, %822
  %824 = getelementptr inbounds float, ptr %819, i64 %823
  %825 = load float, ptr %824, align 4, !tbaa !11
  %826 = load float, ptr %65, align 4, !tbaa !11
  %827 = fcmp olt float %825, %826
  br i1 %827, label %828, label %841

828:                                              ; preds = %818
  %829 = load float, ptr %65, align 4, !tbaa !11
  %830 = load ptr, ptr %42, align 8, !tbaa !5
  %831 = load i64, ptr %67, align 8, !tbaa !9
  %832 = load i64, ptr %58, align 8, !tbaa !9
  %833 = shl i64 %832, 1
  %834 = add nsw i64 %831, %833
  %835 = getelementptr inbounds float, ptr %830, i64 %834
  store float %829, ptr %835, align 4, !tbaa !11
  %836 = load ptr, ptr %42, align 8, !tbaa !5
  %837 = load i64, ptr %67, align 8, !tbaa !9
  %838 = load i64, ptr %58, align 8, !tbaa !9
  %839 = add nsw i64 %837, %838
  %840 = getelementptr inbounds float, ptr %836, i64 %839
  store float 1.000000e+00, ptr %840, align 4, !tbaa !11
  br label %841

841:                                              ; preds = %828, %818
  br label %842

842:                                              ; preds = %841, %817
  %843 = load ptr, ptr %40, align 8, !tbaa !5
  %844 = load i64, ptr %843, align 8, !tbaa !9
  %845 = icmp sge i64 %844, 3
  br i1 %845, label %846, label %854

846:                                              ; preds = %842
  %847 = load float, ptr %68, align 4, !tbaa !11
  %848 = load ptr, ptr %42, align 8, !tbaa !5
  %849 = load i64, ptr %67, align 8, !tbaa !9
  %850 = load i64, ptr %58, align 8, !tbaa !9
  %851 = mul nsw i64 %850, 3
  %852 = add nsw i64 %849, %851
  %853 = getelementptr inbounds float, ptr %848, i64 %852
  store float %847, ptr %853, align 4, !tbaa !11
  br label %854

854:                                              ; preds = %846, %842
  br label %855

855:                                              ; preds = %854
  %856 = load i64, ptr %67, align 8, !tbaa !9
  %857 = add nsw i64 %856, 1
  store i64 %857, ptr %67, align 8, !tbaa !9
  br label %724, !llvm.loop !18

858:                                              ; preds = %724
  br label %859

859:                                              ; preds = %858, %715, %711
  store i32 0, ptr %24, align 4
  store i32 1, ptr %78, align 4
  br label %860

860:                                              ; preds = %859, %406, %327
  call void @llvm.lifetime.end.p0(i64 4, ptr %77) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %76) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %74) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %73) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %72) #4
  call void @llvm.lifetime.end.p0(i64 1, 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 4, ptr %68) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #4
  call void @llvm.lifetime.end.p0(i64 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 4, ptr %62) #4
  call void @llvm.lifetime.end.p0(i64 4, 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
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #4
  %861 = load i32, ptr %24, align 4
  ret i32 %861
}

; 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 @cpocon_(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_porfsx_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, i64 noundef) #2

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

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

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

53:                                               ; preds = %50
  store float 1.000000e+00, ptr %19, align 4, !tbaa !9
  br label %56

54:                                               ; preds = %50
  %55 = fptosi float %51 to i64
  br label %56

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

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

69:                                               ; preds = %65
  store float 1.000000e+01, ptr %66, align 4, !tbaa !9
  br label %72

70:                                               ; preds = %65
  %71 = fptosi float %67 to i64
  store i64 %71, ptr %37, align 8, !tbaa !5
  br label %72

72:                                               ; preds = %69, %70
  %.not = icmp eq i64 %63, 2
  br i1 %.not, label %.thread, label %73

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

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

78:                                               ; preds = %73
  %79 = fcmp oeq float %75, 0.000000e+00
  %80 = zext i1 %79 to i64
  store i64 %80, ptr %34, align 8, !tbaa !5
  br label %.thread

.thread:                                          ; preds = %56, %78, %77, %72
  %81 = phi i64 [ 0, %56 ], [ %80, %78 ], [ 0, %77 ], [ 0, %72 ]
  %82 = icmp eq i64 %.0309, 0
  br i1 %82, label %86, label %83

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

86:                                               ; preds = %83, %.thread
  store i64 0, ptr %38, align 8, !tbaa !5
  br label %90

87:                                               ; preds = %83
  %.not323 = icmp eq i64 %81, 0
  br i1 %.not323, label %89, label %88

88:                                               ; preds = %87
  store i64 1, ptr %38, align 8, !tbaa !5
  br label %90

89:                                               ; preds = %87
  store i64 2, ptr %38, align 8, !tbaa !5
  br label %90

90:                                               ; preds = %88, %89, %86
  %91 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.1) #6
  store i64 %91, ptr %36, align 8, !tbaa !5
  %92 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.2) #6
  %.not324 = icmp eq i64 %92, 0
  br i1 %.not324, label %93, label %95

93:                                               ; preds = %90
  %94 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.3) #6
  %.not325 = icmp eq i64 %94, 0
  br i1 %.not325, label %.thread344.sink.split, label %95

95:                                               ; preds = %93, %90
  %.not326 = icmp eq i64 %91, 0
  br i1 %.not326, label %96, label %98

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

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

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

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

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

110:                                              ; preds = %107
  %111 = load i64, ptr %10, align 8, !tbaa !5
  %112 = icmp slt i64 %111, %spec.select
  br i1 %112, label %.thread344.sink.split, label %113

113:                                              ; preds = %110
  %114 = load i64, ptr %12, align 8, !tbaa !5
  %115 = icmp slt i64 %114, %spec.select
  br i1 %115, label %.thread344.sink.split, label %116

116:                                              ; preds = %113
  %.pr = load i64, ptr %22, align 8, !tbaa !5
  %.not328 = icmp eq i64 %.pr, 0
  br i1 %.not328, label %120, label %.thread344

.thread344.sink.split:                            ; preds = %113, %110, %107, %104, %101, %98, %96, %93
  %.sink = phi i64 [ -1, %93 ], [ -2, %96 ], [ -3, %98 ], [ -4, %101 ], [ -6, %104 ], [ -8, %107 ], [ -11, %110 ], [ -13, %113 ]
  store i64 %.sink, ptr %22, align 8, !tbaa !5
  br label %.thread344

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

120:                                              ; preds = %116
  %121 = icmp eq i64 %99, 0
  br i1 %121, label %124, label %122

122:                                              ; preds = %120
  %123 = icmp eq i64 %102, 0
  br i1 %123, label %.thread380, label %.lr.ph

.thread380:                                       ; preds = %122
  store float 1.000000e+00, ptr %13, align 4, !tbaa !9
  br label %.loopexit

124:                                              ; preds = %120
  store float 1.000000e+00, ptr %13, align 4, !tbaa !9
  %.not340362 = icmp eq i64 %102, 0
  br i1 %.not340362, label %.loopexit, label %.lr.ph365

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

.lr.ph365.split.us.preheader:                     ; preds = %.lr.ph365
  %min.iters.check414 = icmp ult i64 %102, 12
  br i1 %min.iters.check414, label %.lr.ph365.split.us.preheader425, label %vector.memcheck406

.lr.ph365.split.us.preheader425:                  ; preds = %middle.block412, %vector.memcheck406, %.lr.ph365.split.us.preheader
  %.0307363.us.ph = phi i64 [ 1, %vector.memcheck406 ], [ 1, %.lr.ph365.split.us.preheader ], [ %ind.end418, %middle.block412 ]
  %xtraiter431 = and i64 %102, 1
  %lcmp.mod432.not = icmp eq i64 %xtraiter431, 0
  br i1 %lcmp.mod432.not, label %.lr.ph365.split.us.prol.loopexit, label %.lr.ph365.split.us.prol

.lr.ph365.split.us.prol:                          ; preds = %.lr.ph365.split.us.preheader425
  %127 = getelementptr inbounds float, ptr %47, i64 %.0307363.us.ph
  store float 0.000000e+00, ptr %127, align 4, !tbaa !9
  %128 = add nsw i64 %.0307363.us.ph, %40
  %129 = getelementptr inbounds float, ptr %43, i64 %128
  store float 1.000000e+00, ptr %129, align 4, !tbaa !9
  %130 = getelementptr inbounds float, ptr %42, i64 %128
  store float 1.000000e+00, ptr %130, align 4, !tbaa !9
  %131 = add nuw i64 %.0307363.us.ph, 1
  br label %.lr.ph365.split.us.prol.loopexit

.lr.ph365.split.us.prol.loopexit:                 ; preds = %.lr.ph365.split.us.prol, %.lr.ph365.split.us.preheader425
  %.0307363.us.unr = phi i64 [ %.0307363.us.ph, %.lr.ph365.split.us.preheader425 ], [ %131, %.lr.ph365.split.us.prol ]
  %132 = icmp eq i64 %102, %.0307363.us.ph
  br i1 %132, label %.loopexit, label %.lr.ph365.split.us

vector.memcheck406:                               ; preds = %.lr.ph365.split.us.preheader
  %133 = sub i64 %26, %25
  %diff.check407 = icmp ult i64 %133, 32
  %134 = sub i64 %24, %25
  %diff.check408 = icmp ult i64 %134, 32
  %conflict.rdx409 = or i1 %diff.check407, %diff.check408
  %135 = sub i64 %24, %26
  %diff.check410 = icmp ult i64 %135, 32
  %conflict.rdx411 = or i1 %conflict.rdx409, %diff.check410
  br i1 %conflict.rdx411, label %.lr.ph365.split.us.preheader425, label %vector.ph415

vector.ph415:                                     ; preds = %vector.memcheck406
  %n.vec417 = and i64 %102, 9223372036854775800
  %ind.end418 = or disjoint i64 %n.vec417, 1
  br label %vector.body420

vector.body420:                                   ; preds = %vector.body420, %vector.ph415
  %index421 = phi i64 [ 0, %vector.ph415 ], [ %index.next423, %vector.body420 ]
  %offset.idx422 = or disjoint i64 %index421, 1
  %136 = getelementptr float, ptr %14, i64 %index421
  %137 = getelementptr inbounds i8, ptr %136, i64 16
  store <4 x float> zeroinitializer, ptr %136, align 4, !tbaa !9
  store <4 x float> zeroinitializer, ptr %137, align 4, !tbaa !9
  %138 = add nsw i64 %offset.idx422, %40
  %139 = getelementptr inbounds float, ptr %43, i64 %138
  %140 = getelementptr inbounds i8, ptr %139, i64 16
  store <4 x float> <float 1.000000e+00, float 1.000000e+00, float 1.000000e+00, float 1.000000e+00>, ptr %139, 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 %140, align 4, !tbaa !9
  %141 = getelementptr inbounds float, ptr %42, i64 %138
  %142 = getelementptr inbounds i8, ptr %141, i64 16
  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
  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
  %index.next423 = add nuw i64 %index421, 8
  %143 = icmp eq i64 %index.next423, %n.vec417
  br i1 %143, label %middle.block412, label %vector.body420, !llvm.loop !11

middle.block412:                                  ; preds = %vector.body420
  %cmp.n424 = icmp eq i64 %102, %n.vec417
  br i1 %cmp.n424, label %.loopexit, label %.lr.ph365.split.us.preheader425

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

.lr.ph365.split.us:                               ; preds = %.lr.ph365.split.us.prol.loopexit, %.lr.ph365.split.us
  %.0307363.us = phi i64 [ %153, %.lr.ph365.split.us ], [ %.0307363.us.unr, %.lr.ph365.split.us.prol.loopexit ]
  %145 = getelementptr inbounds float, ptr %47, i64 %.0307363.us
  store float 0.000000e+00, ptr %145, align 4, !tbaa !9
  %146 = add nsw i64 %.0307363.us, %40
  %147 = getelementptr inbounds float, ptr %43, i64 %146
  store float 1.000000e+00, ptr %147, align 4, !tbaa !9
  %148 = getelementptr inbounds float, ptr %42, i64 %146
  store float 1.000000e+00, ptr %148, align 4, !tbaa !9
  %149 = add nuw i64 %.0307363.us, 1
  %150 = getelementptr float, ptr %14, i64 %.0307363.us
  store float 0.000000e+00, ptr %150, align 4, !tbaa !9
  %151 = getelementptr inbounds float, ptr %16, i64 %.0307363.us
  store float 1.000000e+00, ptr %151, align 4, !tbaa !9
  %152 = getelementptr inbounds float, ptr %17, i64 %.0307363.us
  store float 1.000000e+00, ptr %152, align 4, !tbaa !9
  %153 = add nuw i64 %.0307363.us, 2
  %exitcond373.not.1 = icmp eq i64 %149, %102
  br i1 %exitcond373.not.1, label %.loopexit, label %.lr.ph365.split.us, !llvm.loop !15

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

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

.lr.ph.split.preheader429:                        ; preds = %middle.block, %.lr.ph.split.preheader
  %.1308349.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 %102, 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 ]
  %156 = getelementptr float, ptr %14, i64 %index
  %157 = getelementptr inbounds i8, ptr %156, i64 16
  store <4 x float> <float 1.000000e+00, float 1.000000e+00, float 1.000000e+00, float 1.000000e+00>, ptr %156, 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 %157, align 4, !tbaa !9
  %index.next = add nuw i64 %index, 8
  %158 = icmp eq i64 %index.next, %n.vec
  br i1 %158, label %middle.block, label %vector.body, !llvm.loop !16

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

.lr.ph.split.us.preheader:                        ; preds = %.lr.ph
  %min.iters.check395 = icmp ult i64 %102, 12
  br i1 %min.iters.check395, label %.lr.ph.split.us.preheader428, label %vector.memcheck

vector.memcheck:                                  ; preds = %.lr.ph.split.us.preheader
  %159 = sub i64 %29, %28
  %diff.check = icmp ult i64 %159, 32
  %160 = sub i64 %27, %28
  %diff.check390 = icmp ult i64 %160, 32
  %conflict.rdx = or i1 %diff.check, %diff.check390
  %161 = sub i64 %27, %29
  %diff.check391 = icmp ult i64 %161, 32
  %conflict.rdx392 = or i1 %conflict.rdx, %diff.check391
  br i1 %conflict.rdx392, label %.lr.ph.split.us.preheader428, label %vector.ph396

vector.ph396:                                     ; preds = %vector.memcheck
  %n.vec398 = and i64 %102, 9223372036854775800
  %ind.end399 = or disjoint i64 %n.vec398, 1
  br label %vector.body401

vector.body401:                                   ; preds = %vector.body401, %vector.ph396
  %index402 = phi i64 [ 0, %vector.ph396 ], [ %index.next404, %vector.body401 ]
  %offset.idx403 = or disjoint i64 %index402, 1
  %162 = getelementptr float, ptr %14, i64 %index402
  %163 = getelementptr inbounds i8, ptr %162, i64 16
  store <4 x float> <float 1.000000e+00, float 1.000000e+00, float 1.000000e+00, float 1.000000e+00>, ptr %162, 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 %163, align 4, !tbaa !9
  %164 = add nsw i64 %offset.idx403, %40
  %165 = getelementptr inbounds float, ptr %43, i64 %164
  %166 = getelementptr inbounds i8, ptr %165, i64 16
  store <4 x float> <float 1.000000e+00, float 1.000000e+00, float 1.000000e+00, float 1.000000e+00>, ptr %165, 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 %166, align 4, !tbaa !9
  %167 = getelementptr inbounds float, ptr %42, i64 %164
  %168 = getelementptr inbounds i8, ptr %167, i64 16
  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
  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
  %index.next404 = add nuw i64 %index402, 8
  %169 = icmp eq i64 %index.next404, %n.vec398
  br i1 %169, label %middle.block393, label %vector.body401, !llvm.loop !17

middle.block393:                                  ; preds = %vector.body401
  %cmp.n405 = icmp eq i64 %102, %n.vec398
  br i1 %cmp.n405, label %._crit_edge, label %.lr.ph.split.us.preheader428

.lr.ph.split.us.preheader428:                     ; preds = %middle.block393, %vector.memcheck, %.lr.ph.split.us.preheader
  %.1308349.us.ph = phi i64 [ 1, %vector.memcheck ], [ 1, %.lr.ph.split.us.preheader ], [ %ind.end399, %middle.block393 ]
  %xtraiter = and i64 %102, 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.preheader428
  %170 = getelementptr inbounds float, ptr %47, i64 %.1308349.us.ph
  store float 1.000000e+00, ptr %170, align 4, !tbaa !9
  %171 = add nsw i64 %.1308349.us.ph, %40
  %172 = getelementptr inbounds float, ptr %43, i64 %171
  store float 1.000000e+00, ptr %172, align 4, !tbaa !9
  %173 = getelementptr inbounds float, ptr %42, i64 %171
  store float 1.000000e+00, ptr %173, align 4, !tbaa !9
  %174 = add nuw i64 %.1308349.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.preheader428
  %.1308349.us.unr = phi i64 [ %.1308349.us.ph, %.lr.ph.split.us.preheader428 ], [ %174, %.lr.ph.split.us.prol ]
  %175 = icmp eq i64 %102, %.1308349.us.ph
  br i1 %175, label %._crit_edge, label %.lr.ph.split.us

.lr.ph.split.us:                                  ; preds = %.lr.ph.split.us.prol.loopexit, %.lr.ph.split.us
  %.1308349.us = phi i64 [ %184, %.lr.ph.split.us ], [ %.1308349.us.unr, %.lr.ph.split.us.prol.loopexit ]
  %176 = getelementptr inbounds float, ptr %47, i64 %.1308349.us
  store float 1.000000e+00, ptr %176, align 4, !tbaa !9
  %177 = add nsw i64 %.1308349.us, %40
  %178 = getelementptr inbounds float, ptr %43, i64 %177
  store float 1.000000e+00, ptr %178, align 4, !tbaa !9
  %179 = getelementptr inbounds float, ptr %42, i64 %177
  store float 1.000000e+00, ptr %179, align 4, !tbaa !9
  %180 = add nuw i64 %.1308349.us, 1
  %181 = getelementptr float, ptr %14, i64 %.1308349.us
  store float 1.000000e+00, ptr %181, align 4, !tbaa !9
  %182 = getelementptr inbounds float, ptr %16, i64 %.1308349.us
  store float 1.000000e+00, ptr %182, align 4, !tbaa !9
  %183 = getelementptr inbounds float, ptr %17, i64 %.1308349.us
  store float 1.000000e+00, ptr %183, align 4, !tbaa !9
  %184 = add nuw i64 %.1308349.us, 2
  %exitcond370.not.1 = icmp eq i64 %180, %102
  br i1 %exitcond370.not.1, label %._crit_edge, label %.lr.ph.split.us, !llvm.loop !18

.lr.ph.split:                                     ; preds = %.lr.ph.split.preheader429, %.lr.ph.split
  %.1308349 = phi i64 [ %186, %.lr.ph.split ], [ %.1308349.ph, %.lr.ph.split.preheader429 ]
  %185 = getelementptr inbounds float, ptr %47, i64 %.1308349
  store float 1.000000e+00, ptr %185, align 4, !tbaa !9
  %186 = add nuw i64 %.1308349, 1
  %exitcond.not = icmp eq i64 %.1308349, %102
  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.block393
  store i8 73, ptr %33, align 1, !tbaa !20
  %187 = call double @clanhe_(ptr noundef nonnull %33, ptr noundef %0, ptr noundef nonnull %2, ptr noundef %4, ptr noundef nonnull %5, ptr noundef %21) #6
  %188 = fptrunc double %187 to float
  store float %188, ptr %35, align 4, !tbaa !9
  %189 = call i32 @cpocon_(ptr noundef %0, ptr noundef nonnull %2, ptr noundef %6, ptr noundef nonnull %7, ptr noundef nonnull %35, ptr noundef nonnull %13, ptr noundef %20, ptr noundef %21, ptr noundef nonnull %22) #6
  br i1 %82, label %195, label %190

190:                                              ; preds = %._crit_edge
  %191 = call i64 @ilaprec_(ptr noundef nonnull @.str.6) #6
  store i64 %191, ptr %32, align 8, !tbaa !5
  %192 = load i64, ptr %2, align 8, !tbaa !5
  %193 = getelementptr %struct.complex, ptr %20, i64 %192
  %194 = call i32 @cla_porfsx_extended__(ptr noundef nonnull %32, 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 nonnull %36, ptr noundef %8, ptr noundef %9, ptr noundef nonnull %10, ptr noundef %11, ptr noundef nonnull %12, ptr noundef nonnull %14, ptr noundef nonnull %38, ptr noundef %16, ptr noundef %17, ptr noundef %20, ptr noundef %21, ptr noundef %193, ptr noundef %21, ptr noundef nonnull %13, ptr noundef nonnull %37, ptr noundef nonnull %39, ptr noundef nonnull %31, ptr noundef nonnull %34, ptr noundef nonnull %22, i64 noundef 1) #6
  br label %195

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

208:                                              ; preds = %195
  %209 = load i64, ptr %36, align 8, !tbaa !5
  %.not331 = icmp eq i64 %209, 0
  %c_false.c_true = select i1 %.not331, ptr @c_false, ptr @c_true
  %210 = call double @cla_porcond_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 nonnull %c_false.c_true, ptr noundef nonnull %22, ptr noundef %20, ptr noundef %21, i64 noundef 1) #6
  %.0306 = fptrunc double %210 to float
  %211 = load i64, ptr %3, align 8, !tbaa !5
  %.not332350 = icmp slt i64 %211, 1
  br i1 %.not332350, label %..loopexit347_crit_edge, label %.lr.ph353

..loopexit347_crit_edge:                          ; preds = %208
  %.pre378 = load i64, ptr %15, align 8, !tbaa !5
  br label %.loopexit347

.lr.ph353:                                        ; preds = %208
  %.idx335 = shl i64 %40, 3
  %invariant.gep = getelementptr i8, ptr %43, i64 %.idx335
  %212 = fcmp olt float %.0306, %62
  %.idx339 = mul i64 %40, 12
  %invariant.gep354 = getelementptr i8, ptr %43, i64 %.idx339
  %.pre376 = load i64, ptr %15, align 8, !tbaa !5
  br i1 %212, label %.lr.ph353.split.us, label %.lr.ph353.split.preheader

.lr.ph353.split.preheader:                        ; preds = %.lr.ph353
  %213 = icmp sgt i64 %.pre376, 1
  %invariant.gep385 = getelementptr i8, ptr %43, i64 %.idx335
  %214 = icmp sgt i64 %.pre376, 2
  br label %.lr.ph353.split

.lr.ph353.split.us:                               ; preds = %.lr.ph353, %227
  %215 = phi i64 [ %224, %227 ], [ %.pre376, %.lr.ph353 ]
  %.2351.us = phi i64 [ %228, %227 ], [ 1, %.lr.ph353 ]
  %216 = getelementptr float, ptr %43, i64 %.2351.us
  %217 = getelementptr i8, ptr %216, i64 %.idx335
  store float 1.000000e+00, ptr %217, align 4, !tbaa !9
  %218 = getelementptr float, ptr %216, i64 %40
  store float 0.000000e+00, ptr %218, align 4, !tbaa !9
  %219 = load i64, ptr %22, align 8, !tbaa !5
  %220 = load i64, ptr %2, align 8, !tbaa !5
  %.not338.us = icmp sgt i64 %219, %220
  br i1 %.not338.us, label %223, label %221

221:                                              ; preds = %.lr.ph353.split.us
  %222 = add nsw i64 %220, %.2351.us
  store i64 %222, ptr %22, align 8, !tbaa !5
  %.pre377 = load i64, ptr %15, align 8, !tbaa !5
  br label %223

223:                                              ; preds = %221, %.lr.ph353.split.us
  %224 = phi i64 [ %.pre377, %221 ], [ %215, %.lr.ph353.split.us ]
  %225 = icmp sgt i64 %224, 2
  br i1 %225, label %226, label %227

226:                                              ; preds = %223
  %gep355.us = getelementptr float, ptr %invariant.gep354, i64 %.2351.us
  store float %.0306, ptr %gep355.us, align 4, !tbaa !9
  br label %227

227:                                              ; preds = %226, %223
  %228 = add nuw i64 %.2351.us, 1
  %exitcond372.not = icmp eq i64 %.2351.us, %211
  br i1 %exitcond372.not, label %.loopexit347, label %.lr.ph353.split.us, !llvm.loop !21

.lr.ph353.split:                                  ; preds = %.lr.ph353.split.preheader, %242
  %.2351 = phi i64 [ %243, %242 ], [ 1, %.lr.ph353.split.preheader ]
  br i1 %213, label %229, label %.lr.ph353.split._crit_edge

.lr.ph353.split._crit_edge:                       ; preds = %.lr.ph353.split
  %gep386 = getelementptr float, ptr %invariant.gep385, i64 %.2351
  %.pre375 = load float, ptr %gep386, align 4, !tbaa !9
  br label %233

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

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

233:                                              ; preds = %.lr.ph353.split._crit_edge, %232, %229
  %234 = phi float [ %.pre375, %.lr.ph353.split._crit_edge ], [ 1.000000e+00, %232 ], [ %230, %229 ]
  %235 = fcmp olt float %234, %203
  br i1 %235, label %236, label %240

236:                                              ; preds = %233
  %237 = getelementptr float, ptr %43, i64 %.2351
  %238 = getelementptr i8, ptr %237, i64 %.idx335
  store float %203, ptr %238, align 4, !tbaa !9
  %239 = getelementptr float, ptr %237, i64 %40
  store float 1.000000e+00, ptr %239, align 4, !tbaa !9
  br label %240

240:                                              ; preds = %233, %236
  br i1 %214, label %241, label %242

241:                                              ; preds = %240
  %gep355 = getelementptr float, ptr %invariant.gep354, i64 %.2351
  store float %.0306, ptr %gep355, align 4, !tbaa !9
  br label %242

242:                                              ; preds = %240, %241
  %243 = add nuw i64 %.2351, 1
  %exitcond371.not = icmp eq i64 %.2351, %211
  br i1 %exitcond371.not, label %.loopexit347, label %.lr.ph353.split, !llvm.loop !21

.loopexit347:                                     ; preds = %242, %227, %..loopexit347_crit_edge, %195
  %244 = phi i64 [ %.pre378, %..loopexit347_crit_edge ], [ %204, %195 ], [ %224, %227 ], [ %.pre376, %242 ]
  %245 = icmp sgt i64 %244, 0
  %246 = load i64, ptr %38, align 8
  %247 = icmp sgt i64 %246, 1
  %or.cond3 = select i1 %245, i1 %247, i1 false
  br i1 %or.cond3, label %248, label %.loopexit

248:                                              ; preds = %.loopexit347
  %249 = call double @slamch_(ptr noundef nonnull @.str) #6
  %250 = call double @sqrt(double noundef %249) #6
  %251 = fptrunc double %250 to float
  %252 = load i64, ptr %3, align 8, !tbaa !5
  %invariant.gep356 = getelementptr i8, ptr %46, i64 8
  %.not333358 = icmp slt i64 %252, 1
  br i1 %.not333358, label %.loopexit, label %.lr.ph361

.lr.ph361:                                        ; preds = %248
  %.idx = shl i64 %40, 3
  %253 = getelementptr inbounds i8, ptr %19, i64 8
  %.idx334 = mul i64 %40, 12
  br label %254

254:                                              ; preds = %.lr.ph361, %292
  %.3359 = phi i64 [ 1, %.lr.ph361 ], [ %293, %292 ]
  %255 = getelementptr float, ptr %42, i64 %.3359
  %256 = getelementptr i8, ptr %255, i64 %.idx
  %257 = load float, ptr %256, align 4, !tbaa !9
  %258 = fcmp olt float %257, %251
  br i1 %258, label %259, label %263

259:                                              ; preds = %254
  %260 = mul nsw i64 %.3359, %44
  %gep357 = getelementptr %struct.complex, ptr %invariant.gep356, i64 %260
  %261 = call double @cla_porcond_x__(ptr noundef %0, ptr noundef nonnull %2, ptr noundef %4, ptr noundef nonnull %5, ptr noundef %6, ptr noundef nonnull %7, ptr noundef %gep357, ptr noundef nonnull %22, ptr noundef %20, ptr noundef %21, i64 noundef 1) #6
  %262 = fptrunc double %261 to float
  br label %263

263:                                              ; preds = %254, %259
  %.1 = phi float [ %262, %259 ], [ 0.000000e+00, %254 ]
  %264 = load i64, ptr %15, align 8, !tbaa !5
  %265 = icmp sgt i64 %264, 1
  br i1 %265, label %266, label %270

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

269:                                              ; preds = %266
  store float 1.000000e+00, ptr %256, align 4, !tbaa !9
  br label %270

270:                                              ; preds = %269, %266, %263
  %271 = fcmp olt float %.1, %62
  br i1 %271, label %272, label %282

272:                                              ; preds = %270
  store float 1.000000e+00, ptr %256, align 4, !tbaa !9
  %273 = getelementptr float, ptr %255, i64 %40
  store float 0.000000e+00, ptr %273, align 4, !tbaa !9
  %274 = load float, ptr %253, align 4, !tbaa !9
  %275 = fcmp oeq float %274, 1.000000e+00
  br i1 %275, label %276, label %287

276:                                              ; preds = %272
  %277 = load i64, ptr %22, align 8, !tbaa !5
  %278 = load i64, ptr %2, align 8, !tbaa !5
  %279 = add nsw i64 %278, %.3359
  %280 = icmp slt i64 %277, %279
  br i1 %280, label %281, label %287

281:                                              ; preds = %276
  store i64 %279, ptr %22, align 8, !tbaa !5
  %.pre379 = load i64, ptr %15, align 8, !tbaa !5
  br label %287

282:                                              ; preds = %270
  %283 = load float, ptr %256, align 4, !tbaa !9
  %284 = fcmp olt float %283, %203
  br i1 %284, label %285, label %287

285:                                              ; preds = %282
  store float %203, ptr %256, align 4, !tbaa !9
  %286 = getelementptr float, ptr %255, i64 %40
  store float 1.000000e+00, ptr %286, align 4, !tbaa !9
  br label %287

287:                                              ; preds = %282, %285, %272, %276, %281
  %288 = phi i64 [ %264, %282 ], [ %264, %285 ], [ %264, %272 ], [ %264, %276 ], [ %.pre379, %281 ]
  %289 = icmp sgt i64 %288, 2
  br i1 %289, label %290, label %292

290:                                              ; preds = %287
  %291 = getelementptr i8, ptr %255, i64 %.idx334
  store float %.1, ptr %291, align 4, !tbaa !9
  br label %292

292:                                              ; preds = %287, %290
  %293 = add nuw nsw i64 %.3359, 1
  %.not333.not = icmp slt i64 %.3359, %252
  br i1 %.not333.not, label %254, label %.loopexit, !llvm.loop !22

.loopexit:                                        ; preds = %292, %.lr.ph365.split.us.prol.loopexit, %.lr.ph365.split.us, %middle.block412, %.thread380, %.lr.ph365.split.preheader, %248, %124, %.loopexit347, %.thread344
  call void @llvm.lifetime.end.p0(i64 4, 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 8, ptr nonnull %36) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %35) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %34) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %33) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %32) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %31) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %30) #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 @cpocon_(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_porfsx_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, 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_porcond_c__(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_porcond_x__(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