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

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

%struct.complex = type { float, float }

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

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

158:                                              ; preds = %25
  %159 = load i32, ptr %71, align 4, !tbaa !9
  %160 = icmp ne i32 %159, 0
  br i1 %160, label %161, label %163

161:                                              ; preds = %158, %25
  %162 = load ptr, ptr %34, align 8, !tbaa !5
  store i8 78, ptr %162, align 1, !tbaa !13
  store i32 0, ptr %72, align 4, !tbaa !9
  br label %166

163:                                              ; preds = %158
  %164 = load ptr, ptr %34, align 8, !tbaa !5
  %165 = call i32 @lsame_(ptr noundef %164, ptr noundef @.str.3)
  store i32 %165, ptr %72, align 4, !tbaa !9
  br label %166

166:                                              ; preds = %163, %161
  %167 = load ptr, ptr %41, align 8, !tbaa !5
  store float 0.000000e+00, ptr %167, align 4, !tbaa !11
  %168 = load i32, ptr %73, align 4, !tbaa !9
  %169 = icmp ne i32 %168, 0
  br i1 %169, label %179, label %170

170:                                              ; preds = %166
  %171 = load i32, ptr %71, align 4, !tbaa !9
  %172 = icmp ne i32 %171, 0
  br i1 %172, label %179, label %173

173:                                              ; preds = %170
  %174 = load ptr, ptr %26, align 8, !tbaa !5
  %175 = call i32 @lsame_(ptr noundef %174, ptr noundef @.str.4)
  %176 = icmp ne i32 %175, 0
  br i1 %176, label %179, label %177

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

179:                                              ; preds = %173, %170, %166
  %180 = load ptr, ptr %27, align 8, !tbaa !5
  %181 = call i32 @lsame_(ptr noundef %180, ptr noundef @.str.5)
  %182 = icmp ne i32 %181, 0
  br i1 %182, label %189, label %183

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

187:                                              ; preds = %183
  %188 = load ptr, ptr %50, align 8, !tbaa !5
  store i32 -2, ptr %188, align 4, !tbaa !9
  br label %363

189:                                              ; preds = %183, %179
  %190 = load ptr, ptr %28, align 8, !tbaa !5
  %191 = load i32, ptr %190, align 4, !tbaa !9
  %192 = icmp slt i32 %191, 0
  br i1 %192, label %193, label %195

193:                                              ; preds = %189
  %194 = load ptr, ptr %50, align 8, !tbaa !5
  store i32 -3, ptr %194, align 4, !tbaa !9
  br label %362

195:                                              ; preds = %189
  %196 = load ptr, ptr %29, align 8, !tbaa !5
  %197 = load i32, ptr %196, align 4, !tbaa !9
  %198 = icmp slt i32 %197, 0
  br i1 %198, label %199, label %201

199:                                              ; preds = %195
  %200 = load ptr, ptr %50, align 8, !tbaa !5
  store i32 -4, ptr %200, align 4, !tbaa !9
  br label %361

201:                                              ; preds = %195
  %202 = load ptr, ptr %31, align 8, !tbaa !5
  %203 = load i32, ptr %202, align 4, !tbaa !9
  %204 = load ptr, ptr %28, align 8, !tbaa !5
  %205 = load i32, ptr %204, align 4, !tbaa !9
  %206 = icmp sge i32 1, %205
  br i1 %206, label %207, label %208

207:                                              ; preds = %201
  br label %211

208:                                              ; preds = %201
  %209 = load ptr, ptr %28, align 8, !tbaa !5
  %210 = load i32, ptr %209, align 4, !tbaa !9
  br label %211

211:                                              ; preds = %208, %207
  %212 = phi i32 [ 1, %207 ], [ %210, %208 ]
  %213 = icmp slt i32 %203, %212
  br i1 %213, label %214, label %216

214:                                              ; preds = %211
  %215 = load ptr, ptr %50, align 8, !tbaa !5
  store i32 -6, ptr %215, align 4, !tbaa !9
  br label %360

216:                                              ; preds = %211
  %217 = load ptr, ptr %33, align 8, !tbaa !5
  %218 = load i32, ptr %217, align 4, !tbaa !9
  %219 = load ptr, ptr %28, align 8, !tbaa !5
  %220 = load i32, ptr %219, align 4, !tbaa !9
  %221 = icmp sge i32 1, %220
  br i1 %221, label %222, label %223

222:                                              ; preds = %216
  br label %226

223:                                              ; preds = %216
  %224 = load ptr, ptr %28, align 8, !tbaa !5
  %225 = load i32, ptr %224, align 4, !tbaa !9
  br label %226

226:                                              ; preds = %223, %222
  %227 = phi i32 [ 1, %222 ], [ %225, %223 ]
  %228 = icmp slt i32 %218, %227
  br i1 %228, label %229, label %231

229:                                              ; preds = %226
  %230 = load ptr, ptr %50, align 8, !tbaa !5
  store i32 -8, ptr %230, align 4, !tbaa !9
  br label %359

231:                                              ; preds = %226
  %232 = load ptr, ptr %26, align 8, !tbaa !5
  %233 = call i32 @lsame_(ptr noundef %232, ptr noundef @.str.4)
  %234 = icmp ne i32 %233, 0
  br i1 %234, label %235, label %244

235:                                              ; preds = %231
  %236 = load i32, ptr %72, align 4, !tbaa !9
  %237 = icmp ne i32 %236, 0
  br i1 %237, label %244, label %238

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

242:                                              ; preds = %238
  %243 = load ptr, ptr %50, align 8, !tbaa !5
  store i32 -9, ptr %243, align 4, !tbaa !9
  br label %358

244:                                              ; preds = %238, %235, %231
  %245 = load i32, ptr %72, align 4, !tbaa !9
  %246 = icmp ne i32 %245, 0
  br i1 %246, label %247, label %321

247:                                              ; preds = %244
  %248 = load float, ptr %74, align 4, !tbaa !11
  store float %248, ptr %67, align 4, !tbaa !11
  store float 0.000000e+00, ptr %68, align 4, !tbaa !11
  %249 = load ptr, ptr %28, align 8, !tbaa !5
  %250 = load i32, ptr %249, align 4, !tbaa !9
  store i32 %250, ptr %63, align 4, !tbaa !9
  store i32 1, ptr %69, align 4, !tbaa !9
  br label %251

251:                                              ; preds = %286, %247
  %252 = load i32, ptr %69, align 4, !tbaa !9
  %253 = load i32, ptr %63, align 4, !tbaa !9
  %254 = icmp sle i32 %252, %253
  br i1 %254, label %255, label %289

255:                                              ; preds = %251
  %256 = load float, ptr %67, align 4, !tbaa !11
  store float %256, ptr %64, align 4, !tbaa !11
  %257 = load ptr, ptr %35, align 8, !tbaa !5
  %258 = load i32, ptr %69, align 4, !tbaa !9
  %259 = sext i32 %258 to i64
  %260 = getelementptr inbounds float, ptr %257, i64 %259
  %261 = load float, ptr %260, align 4, !tbaa !11
  store float %261, ptr %65, align 4, !tbaa !11
  %262 = load float, ptr %64, align 4, !tbaa !11
  %263 = load float, ptr %65, align 4, !tbaa !11
  %264 = fcmp ole float %262, %263
  br i1 %264, label %265, label %267

265:                                              ; preds = %255
  %266 = load float, ptr %64, align 4, !tbaa !11
  br label %269

267:                                              ; preds = %255
  %268 = load float, ptr %65, align 4, !tbaa !11
  br label %269

269:                                              ; preds = %267, %265
  %270 = phi float [ %266, %265 ], [ %268, %267 ]
  store float %270, ptr %67, align 4, !tbaa !11
  %271 = load float, ptr %68, align 4, !tbaa !11
  store float %271, ptr %64, align 4, !tbaa !11
  %272 = load ptr, ptr %35, align 8, !tbaa !5
  %273 = load i32, ptr %69, align 4, !tbaa !9
  %274 = sext i32 %273 to i64
  %275 = getelementptr inbounds float, ptr %272, i64 %274
  %276 = load float, ptr %275, align 4, !tbaa !11
  store float %276, ptr %65, align 4, !tbaa !11
  %277 = load float, ptr %64, align 4, !tbaa !11
  %278 = load float, ptr %65, align 4, !tbaa !11
  %279 = fcmp oge float %277, %278
  br i1 %279, label %280, label %282

280:                                              ; preds = %269
  %281 = load float, ptr %64, align 4, !tbaa !11
  br label %284

282:                                              ; preds = %269
  %283 = load float, ptr %65, align 4, !tbaa !11
  br label %284

284:                                              ; preds = %282, %280
  %285 = phi float [ %281, %280 ], [ %283, %282 ]
  store float %285, ptr %68, align 4, !tbaa !11
  br label %286

286:                                              ; preds = %284
  %287 = load i32, ptr %69, align 4, !tbaa !9
  %288 = add nsw i32 %287, 1
  store i32 %288, ptr %69, align 4, !tbaa !9
  br label %251, !llvm.loop !14

289:                                              ; preds = %251
  %290 = load float, ptr %67, align 4, !tbaa !11
  %291 = fcmp ole float %290, 0.000000e+00
  br i1 %291, label %292, label %294

292:                                              ; preds = %289
  %293 = load ptr, ptr %50, align 8, !tbaa !5
  store i32 -10, ptr %293, align 4, !tbaa !9
  br label %320

294:                                              ; preds = %289
  %295 = load ptr, ptr %28, align 8, !tbaa !5
  %296 = load i32, ptr %295, align 4, !tbaa !9
  %297 = icmp sgt i32 %296, 0
  br i1 %297, label %298, label %318

298:                                              ; preds = %294
  %299 = load float, ptr %67, align 4, !tbaa !11
  %300 = load float, ptr %76, align 4, !tbaa !11
  %301 = fcmp oge float %299, %300
  br i1 %301, label %302, label %304

302:                                              ; preds = %298
  %303 = load float, ptr %67, align 4, !tbaa !11
  br label %306

304:                                              ; preds = %298
  %305 = load float, ptr %76, align 4, !tbaa !11
  br label %306

306:                                              ; preds = %304, %302
  %307 = phi float [ %303, %302 ], [ %305, %304 ]
  %308 = load float, ptr %68, align 4, !tbaa !11
  %309 = load float, ptr %74, align 4, !tbaa !11
  %310 = fcmp ole float %308, %309
  br i1 %310, label %311, label %313

311:                                              ; preds = %306
  %312 = load float, ptr %68, align 4, !tbaa !11
  br label %315

313:                                              ; preds = %306
  %314 = load float, ptr %74, align 4, !tbaa !11
  br label %315

315:                                              ; preds = %313, %311
  %316 = phi float [ %312, %311 ], [ %314, %313 ]
  %317 = fdiv float %307, %316
  store float %317, ptr %70, align 4, !tbaa !11
  br label %319

318:                                              ; preds = %294
  store float 1.000000e+00, ptr %70, align 4, !tbaa !11
  br label %319

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

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

321:                                              ; preds = %320, %244
  %322 = load ptr, ptr %50, align 8, !tbaa !5
  %323 = load i32, ptr %322, align 4, !tbaa !9
  %324 = icmp eq i32 %323, 0
  br i1 %324, label %325, label %357

325:                                              ; preds = %321
  %326 = load ptr, ptr %37, align 8, !tbaa !5
  %327 = load i32, ptr %326, align 4, !tbaa !9
  %328 = load ptr, ptr %28, align 8, !tbaa !5
  %329 = load i32, ptr %328, align 4, !tbaa !9
  %330 = icmp sge i32 1, %329
  br i1 %330, label %331, label %332

331:                                              ; preds = %325
  br label %335

332:                                              ; preds = %325
  %333 = load ptr, ptr %28, align 8, !tbaa !5
  %334 = load i32, ptr %333, align 4, !tbaa !9
  br label %335

335:                                              ; preds = %332, %331
  %336 = phi i32 [ 1, %331 ], [ %334, %332 ]
  %337 = icmp slt i32 %327, %336
  br i1 %337, label %338, label %340

338:                                              ; preds = %335
  %339 = load ptr, ptr %50, align 8, !tbaa !5
  store i32 -12, ptr %339, align 4, !tbaa !9
  br label %356

340:                                              ; preds = %335
  %341 = load ptr, ptr %39, align 8, !tbaa !5
  %342 = load i32, ptr %341, align 4, !tbaa !9
  %343 = load ptr, ptr %28, align 8, !tbaa !5
  %344 = load i32, ptr %343, align 4, !tbaa !9
  %345 = icmp sge i32 1, %344
  br i1 %345, label %346, label %347

346:                                              ; preds = %340
  br label %350

347:                                              ; preds = %340
  %348 = load ptr, ptr %28, align 8, !tbaa !5
  %349 = load i32, ptr %348, align 4, !tbaa !9
  br label %350

350:                                              ; preds = %347, %346
  %351 = phi i32 [ 1, %346 ], [ %349, %347 ]
  %352 = icmp slt i32 %342, %351
  br i1 %352, label %353, label %355

353:                                              ; preds = %350
  %354 = load ptr, ptr %50, align 8, !tbaa !5
  store i32 -14, ptr %354, align 4, !tbaa !9
  br label %355

355:                                              ; preds = %353, %350
  br label %356

356:                                              ; preds = %355, %338
  br label %357

357:                                              ; preds = %356, %321
  br label %358

358:                                              ; preds = %357, %242
  br label %359

359:                                              ; preds = %358, %229
  br label %360

360:                                              ; preds = %359, %214
  br label %361

361:                                              ; preds = %360, %199
  br label %362

362:                                              ; preds = %361, %193
  br label %363

363:                                              ; preds = %362, %187
  br label %364

364:                                              ; preds = %363, %177
  %365 = load ptr, ptr %50, align 8, !tbaa !5
  %366 = load i32, ptr %365, align 4, !tbaa !9
  %367 = icmp ne i32 %366, 0
  br i1 %367, label %368, label %373

368:                                              ; preds = %364
  %369 = load ptr, ptr %50, align 8, !tbaa !5
  %370 = load i32, ptr %369, align 4, !tbaa !9
  %371 = sub nsw i32 0, %370
  store i32 %371, ptr %63, align 4, !tbaa !9
  %372 = call i32 @xerbla_(ptr noundef @.str.7, ptr noundef %63, i32 noundef 7)
  store i32 1, ptr %77, align 4
  br label %565

373:                                              ; preds = %364
  %374 = load i32, ptr %71, align 4, !tbaa !9
  %375 = icmp ne i32 %374, 0
  br i1 %375, label %376, label %401

376:                                              ; preds = %373
  %377 = load ptr, ptr %28, align 8, !tbaa !5
  %378 = load ptr, ptr %30, align 8, !tbaa !5
  %379 = load i32, ptr %52, align 4, !tbaa !9
  %380 = sext i32 %379 to i64
  %381 = getelementptr inbounds %struct.complex, ptr %378, i64 %380
  %382 = load ptr, ptr %31, align 8, !tbaa !5
  %383 = load ptr, ptr %35, align 8, !tbaa !5
  %384 = getelementptr inbounds float, ptr %383, i64 1
  call void @cpoequb_(ptr noundef %377, ptr noundef %381, ptr noundef %382, ptr noundef %384, ptr noundef %70, ptr noundef %66, ptr noundef %75)
  %385 = load i32, ptr %75, align 4, !tbaa !9
  %386 = icmp eq i32 %385, 0
  br i1 %386, label %387, label %400

387:                                              ; preds = %376
  %388 = load ptr, ptr %27, align 8, !tbaa !5
  %389 = load ptr, ptr %28, align 8, !tbaa !5
  %390 = load ptr, ptr %30, align 8, !tbaa !5
  %391 = load i32, ptr %52, align 4, !tbaa !9
  %392 = sext i32 %391 to i64
  %393 = getelementptr inbounds %struct.complex, ptr %390, i64 %392
  %394 = load ptr, ptr %31, align 8, !tbaa !5
  %395 = load ptr, ptr %35, align 8, !tbaa !5
  %396 = getelementptr inbounds float, ptr %395, i64 1
  %397 = load ptr, ptr %34, align 8, !tbaa !5
  call void @claqhe_(ptr noundef %388, ptr noundef %389, ptr noundef %393, ptr noundef %394, ptr noundef %396, ptr noundef %70, ptr noundef %66, ptr noundef %397)
  %398 = load ptr, ptr %34, align 8, !tbaa !5
  %399 = call i32 @lsame_(ptr noundef %398, ptr noundef @.str.3)
  store i32 %399, ptr %72, align 4, !tbaa !9
  br label %400

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

401:                                              ; preds = %400, %373
  %402 = load i32, ptr %72, align 4, !tbaa !9
  %403 = icmp ne i32 %402, 0
  br i1 %403, label %404, label %414

404:                                              ; preds = %401
  %405 = load ptr, ptr %28, align 8, !tbaa !5
  %406 = load ptr, ptr %29, align 8, !tbaa !5
  %407 = load ptr, ptr %35, align 8, !tbaa !5
  %408 = getelementptr inbounds float, ptr %407, i64 1
  %409 = load ptr, ptr %36, align 8, !tbaa !5
  %410 = load i32, ptr %56, align 4, !tbaa !9
  %411 = sext i32 %410 to i64
  %412 = getelementptr inbounds %struct.complex, ptr %409, i64 %411
  %413 = load ptr, ptr %37, align 8, !tbaa !5
  call void @clascl2_(ptr noundef %405, ptr noundef %406, ptr noundef %408, ptr noundef %412, ptr noundef %413)
  br label %414

414:                                              ; preds = %404, %401
  %415 = load i32, ptr %73, align 4, !tbaa !9
  %416 = icmp ne i32 %415, 0
  br i1 %416, label %420, label %417

417:                                              ; preds = %414
  %418 = load i32, ptr %71, align 4, !tbaa !9
  %419 = icmp ne i32 %418, 0
  br i1 %419, label %420, label %463

420:                                              ; preds = %417, %414
  %421 = load ptr, ptr %27, align 8, !tbaa !5
  %422 = load ptr, ptr %28, align 8, !tbaa !5
  %423 = load ptr, ptr %28, align 8, !tbaa !5
  %424 = load ptr, ptr %30, align 8, !tbaa !5
  %425 = load i32, ptr %52, align 4, !tbaa !9
  %426 = sext i32 %425 to i64
  %427 = getelementptr inbounds %struct.complex, ptr %424, i64 %426
  %428 = load ptr, ptr %31, align 8, !tbaa !5
  %429 = load ptr, ptr %32, align 8, !tbaa !5
  %430 = load i32, ptr %54, align 4, !tbaa !9
  %431 = sext i32 %430 to i64
  %432 = getelementptr inbounds %struct.complex, ptr %429, i64 %431
  %433 = load ptr, ptr %33, align 8, !tbaa !5
  call void @clacpy_(ptr noundef %421, ptr noundef %422, ptr noundef %423, ptr noundef %427, ptr noundef %428, ptr noundef %432, ptr noundef %433)
  %434 = load ptr, ptr %27, align 8, !tbaa !5
  %435 = load ptr, ptr %28, align 8, !tbaa !5
  %436 = load ptr, ptr %32, align 8, !tbaa !5
  %437 = load i32, ptr %54, align 4, !tbaa !9
  %438 = sext i32 %437 to i64
  %439 = getelementptr inbounds %struct.complex, ptr %436, i64 %438
  %440 = load ptr, ptr %33, align 8, !tbaa !5
  %441 = load ptr, ptr %50, align 8, !tbaa !5
  call void @cpotrf_(ptr noundef %434, ptr noundef %435, ptr noundef %439, ptr noundef %440, ptr noundef %441)
  %442 = load ptr, ptr %50, align 8, !tbaa !5
  %443 = load i32, ptr %442, align 4, !tbaa !9
  %444 = icmp sgt i32 %443, 0
  br i1 %444, label %445, label %462

445:                                              ; preds = %420
  %446 = load ptr, ptr %27, align 8, !tbaa !5
  %447 = load ptr, ptr %28, align 8, !tbaa !5
  %448 = load ptr, ptr %30, align 8, !tbaa !5
  %449 = load i32, ptr %52, align 4, !tbaa !9
  %450 = sext i32 %449 to i64
  %451 = getelementptr inbounds %struct.complex, ptr %448, i64 %450
  %452 = load ptr, ptr %31, align 8, !tbaa !5
  %453 = load ptr, ptr %32, align 8, !tbaa !5
  %454 = load i32, ptr %54, align 4, !tbaa !9
  %455 = sext i32 %454 to i64
  %456 = getelementptr inbounds %struct.complex, ptr %453, i64 %455
  %457 = load ptr, ptr %33, align 8, !tbaa !5
  %458 = load ptr, ptr %49, align 8, !tbaa !5
  %459 = getelementptr inbounds float, ptr %458, i64 1
  %460 = call float @cla_porpvgrw_(ptr noundef %446, ptr noundef %447, ptr noundef %451, ptr noundef %452, ptr noundef %456, ptr noundef %457, ptr noundef %459)
  %461 = load ptr, ptr %41, align 8, !tbaa !5
  store float %460, ptr %461, align 4, !tbaa !11
  store i32 1, ptr %77, align 4
  br label %565

462:                                              ; preds = %420
  br label %463

463:                                              ; preds = %462, %417
  %464 = load ptr, ptr %27, align 8, !tbaa !5
  %465 = load ptr, ptr %28, align 8, !tbaa !5
  %466 = load ptr, ptr %30, align 8, !tbaa !5
  %467 = load i32, ptr %52, align 4, !tbaa !9
  %468 = sext i32 %467 to i64
  %469 = getelementptr inbounds %struct.complex, ptr %466, i64 %468
  %470 = load ptr, ptr %31, align 8, !tbaa !5
  %471 = load ptr, ptr %32, align 8, !tbaa !5
  %472 = load i32, ptr %54, align 4, !tbaa !9
  %473 = sext i32 %472 to i64
  %474 = getelementptr inbounds %struct.complex, ptr %471, i64 %473
  %475 = load ptr, ptr %33, align 8, !tbaa !5
  %476 = load ptr, ptr %49, align 8, !tbaa !5
  %477 = getelementptr inbounds float, ptr %476, i64 1
  %478 = call float @cla_porpvgrw_(ptr noundef %464, ptr noundef %465, ptr noundef %469, ptr noundef %470, ptr noundef %474, ptr noundef %475, ptr noundef %477)
  %479 = load ptr, ptr %41, align 8, !tbaa !5
  store float %478, ptr %479, align 4, !tbaa !11
  %480 = load ptr, ptr %28, align 8, !tbaa !5
  %481 = load ptr, ptr %29, align 8, !tbaa !5
  %482 = load ptr, ptr %36, align 8, !tbaa !5
  %483 = load i32, ptr %56, align 4, !tbaa !9
  %484 = sext i32 %483 to i64
  %485 = getelementptr inbounds %struct.complex, ptr %482, i64 %484
  %486 = load ptr, ptr %37, align 8, !tbaa !5
  %487 = load ptr, ptr %38, align 8, !tbaa !5
  %488 = load i32, ptr %58, align 4, !tbaa !9
  %489 = sext i32 %488 to i64
  %490 = getelementptr inbounds %struct.complex, ptr %487, i64 %489
  %491 = load ptr, ptr %39, align 8, !tbaa !5
  call void @clacpy_(ptr noundef @.str.8, ptr noundef %480, ptr noundef %481, ptr noundef %485, ptr noundef %486, ptr noundef %490, ptr noundef %491)
  %492 = load ptr, ptr %27, align 8, !tbaa !5
  %493 = load ptr, ptr %28, align 8, !tbaa !5
  %494 = load ptr, ptr %29, align 8, !tbaa !5
  %495 = load ptr, ptr %32, align 8, !tbaa !5
  %496 = load i32, ptr %54, align 4, !tbaa !9
  %497 = sext i32 %496 to i64
  %498 = getelementptr inbounds %struct.complex, ptr %495, i64 %497
  %499 = load ptr, ptr %33, align 8, !tbaa !5
  %500 = load ptr, ptr %38, align 8, !tbaa !5
  %501 = load i32, ptr %58, align 4, !tbaa !9
  %502 = sext i32 %501 to i64
  %503 = getelementptr inbounds %struct.complex, ptr %500, i64 %502
  %504 = load ptr, ptr %39, align 8, !tbaa !5
  %505 = load ptr, ptr %50, align 8, !tbaa !5
  call void @cpotrs_(ptr noundef %492, ptr noundef %493, ptr noundef %494, ptr noundef %498, ptr noundef %499, ptr noundef %503, ptr noundef %504, ptr noundef %505)
  %506 = load ptr, ptr %27, align 8, !tbaa !5
  %507 = load ptr, ptr %34, align 8, !tbaa !5
  %508 = load ptr, ptr %28, align 8, !tbaa !5
  %509 = load ptr, ptr %29, align 8, !tbaa !5
  %510 = load ptr, ptr %30, align 8, !tbaa !5
  %511 = load i32, ptr %52, align 4, !tbaa !9
  %512 = sext i32 %511 to i64
  %513 = getelementptr inbounds %struct.complex, ptr %510, i64 %512
  %514 = load ptr, ptr %31, align 8, !tbaa !5
  %515 = load ptr, ptr %32, align 8, !tbaa !5
  %516 = load i32, ptr %54, align 4, !tbaa !9
  %517 = sext i32 %516 to i64
  %518 = getelementptr inbounds %struct.complex, ptr %515, i64 %517
  %519 = load ptr, ptr %33, align 8, !tbaa !5
  %520 = load ptr, ptr %35, align 8, !tbaa !5
  %521 = getelementptr inbounds float, ptr %520, i64 1
  %522 = load ptr, ptr %36, align 8, !tbaa !5
  %523 = load i32, ptr %56, align 4, !tbaa !9
  %524 = sext i32 %523 to i64
  %525 = getelementptr inbounds %struct.complex, ptr %522, i64 %524
  %526 = load ptr, ptr %37, align 8, !tbaa !5
  %527 = load ptr, ptr %38, align 8, !tbaa !5
  %528 = load i32, ptr %58, align 4, !tbaa !9
  %529 = sext i32 %528 to i64
  %530 = getelementptr inbounds %struct.complex, ptr %527, i64 %529
  %531 = load ptr, ptr %39, align 8, !tbaa !5
  %532 = load ptr, ptr %40, align 8, !tbaa !5
  %533 = load ptr, ptr %42, align 8, !tbaa !5
  %534 = getelementptr inbounds float, ptr %533, i64 1
  %535 = load ptr, ptr %43, align 8, !tbaa !5
  %536 = load ptr, ptr %44, align 8, !tbaa !5
  %537 = load i32, ptr %60, align 4, !tbaa !9
  %538 = sext i32 %537 to i64
  %539 = getelementptr inbounds float, ptr %536, i64 %538
  %540 = load ptr, ptr %45, align 8, !tbaa !5
  %541 = load i32, ptr %62, align 4, !tbaa !9
  %542 = sext i32 %541 to i64
  %543 = getelementptr inbounds float, ptr %540, i64 %542
  %544 = load ptr, ptr %46, align 8, !tbaa !5
  %545 = load ptr, ptr %47, align 8, !tbaa !5
  %546 = getelementptr inbounds float, ptr %545, i64 1
  %547 = load ptr, ptr %48, align 8, !tbaa !5
  %548 = getelementptr inbounds %struct.complex, ptr %547, i64 1
  %549 = load ptr, ptr %49, align 8, !tbaa !5
  %550 = getelementptr inbounds float, ptr %549, i64 1
  %551 = load ptr, ptr %50, align 8, !tbaa !5
  call void @cporfsx_(ptr noundef %506, ptr noundef %507, ptr noundef %508, ptr noundef %509, ptr noundef %513, ptr noundef %514, ptr noundef %518, ptr noundef %519, ptr noundef %521, ptr noundef %525, ptr noundef %526, ptr noundef %530, ptr noundef %531, ptr noundef %532, ptr noundef %534, ptr noundef %535, ptr noundef %539, ptr noundef %543, ptr noundef %544, ptr noundef %546, ptr noundef %548, ptr noundef %550, ptr noundef %551)
  %552 = load i32, ptr %72, align 4, !tbaa !9
  %553 = icmp ne i32 %552, 0
  br i1 %553, label %554, label %564

554:                                              ; preds = %463
  %555 = load ptr, ptr %28, align 8, !tbaa !5
  %556 = load ptr, ptr %29, align 8, !tbaa !5
  %557 = load ptr, ptr %35, align 8, !tbaa !5
  %558 = getelementptr inbounds float, ptr %557, i64 1
  %559 = load ptr, ptr %38, align 8, !tbaa !5
  %560 = load i32, ptr %58, align 4, !tbaa !9
  %561 = sext i32 %560 to i64
  %562 = getelementptr inbounds %struct.complex, ptr %559, i64 %561
  %563 = load ptr, ptr %39, align 8, !tbaa !5
  call void @clascl2_(ptr noundef %555, ptr noundef %556, ptr noundef %558, ptr noundef %562, ptr noundef %563)
  br label %564

564:                                              ; preds = %554, %463
  store i32 1, ptr %77, align 4
  br label %565

565:                                              ; preds = %564, %445, %368
  call void @llvm.lifetime.end.p0(i64 4, ptr %76) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %75) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %74) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %73) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %72) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %71) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %70) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %69) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %68) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %67) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %66) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %65) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %64) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %63) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %62) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %61) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %60) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %59) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %58) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %56) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %54) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %53) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #3
  ret void
}

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

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

declare float @slamch_(ptr noundef) #2

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

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

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

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

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

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

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

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

declare void @cporfsx_(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) #2

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

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

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

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


; 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"

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

; Function Attrs: nounwind uwtable
define dso_local void @cposvxx_(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 writeonly %15, ptr noundef %16, ptr noundef %17, ptr noundef %18, ptr noundef %19, ptr noundef %20, ptr noundef %21, ptr noundef %22, ptr noundef %23, ptr noundef %24) local_unnamed_addr #0 {
  %26 = alloca i32, align 4
  %27 = alloca float, align 4
  %28 = alloca float, align 4
  %29 = alloca i32, align 4
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %26) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %27) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %28) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %29) #4
  %30 = getelementptr inbounds i8, ptr %9, i64 -4
  store i32 0, ptr %24, align 4, !tbaa !5
  %31 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str) #4
  %32 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.1) #4
  %33 = tail call float @slamch_(ptr noundef nonnull @.str.2) #4
  %34 = fdiv float 1.000000e+00, %33
  %35 = icmp ne i32 %31, 0
  %36 = icmp ne i32 %32, 0
  %or.cond = select i1 %35, i1 true, i1 %36
  br i1 %or.cond, label %.thread, label %37

.thread:                                          ; preds = %25
  store i8 78, ptr %8, align 1, !tbaa !9
  store float 0.000000e+00, ptr %15, align 4, !tbaa !10
  br label %40

37:                                               ; preds = %25
  %38 = tail call i32 @lsame_(ptr noundef %8, ptr noundef nonnull @.str.3) #4
  store float 0.000000e+00, ptr %15, align 4, !tbaa !10
  %39 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.4) #4
  %.not = icmp eq i32 %39, 0
  br i1 %.not, label %.thread245.sink.split, label %40

40:                                               ; preds = %.thread, %37
  %.0240 = phi i32 [ 0, %.thread ], [ %38, %37 ]
  %41 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.5) #4
  %.not229 = icmp eq i32 %41, 0
  br i1 %.not229, label %42, label %44

42:                                               ; preds = %40
  %43 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.6) #4
  %.not230 = icmp eq i32 %43, 0
  br i1 %.not230, label %.thread245.sink.split, label %44

44:                                               ; preds = %42, %40
  %45 = load i32, ptr %2, align 4, !tbaa !5
  %46 = icmp slt i32 %45, 0
  br i1 %46, label %.thread245.sink.split, label %47

47:                                               ; preds = %44
  %48 = load i32, ptr %3, align 4, !tbaa !5
  %49 = icmp slt i32 %48, 0
  br i1 %49, label %.thread245.sink.split, label %50

50:                                               ; preds = %47
  %51 = load i32, ptr %5, align 4, !tbaa !5
  %spec.select = tail call i32 @llvm.umax.i32(i32 %45, i32 1)
  %52 = icmp slt i32 %51, %spec.select
  br i1 %52, label %.thread245.sink.split, label %53

53:                                               ; preds = %50
  %54 = load i32, ptr %7, align 4, !tbaa !5
  %55 = icmp slt i32 %54, %spec.select
  br i1 %55, label %.thread245.sink.split, label %56

56:                                               ; preds = %53
  %57 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.4) #4
  %58 = icmp eq i32 %57, 0
  %59 = icmp ne i32 %.0240, 0
  %or.cond5 = select i1 %58, i1 true, i1 %59
  br i1 %or.cond5, label %62, label %60

60:                                               ; preds = %56
  %61 = tail call i32 @lsame_(ptr noundef %8, ptr noundef nonnull @.str) #4
  %.not231 = icmp eq i32 %61, 0
  br i1 %.not231, label %.thread245.sink.split, label %.thread241

62:                                               ; preds = %56
  br i1 %59, label %63, label %.thread241

63:                                               ; preds = %62
  %64 = load i32, ptr %2, align 4, !tbaa !5
  %.not232248 = icmp slt i32 %64, 1
  br i1 %.not232248, label %._crit_edge, label %.lr.ph.preheader

.lr.ph.preheader:                                 ; preds = %63
  %65 = zext nneg i32 %64 to i64
  %xtraiter = and i64 %65, 1
  %66 = icmp eq i32 %64, 1
  br i1 %66, label %._crit_edge.loopexit.unr-lcssa, label %.lr.ph.preheader.new

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

.lr.ph:                                           ; preds = %.lr.ph, %.lr.ph.preheader.new
  %indvars.iv = phi i64 [ 1, %.lr.ph.preheader.new ], [ %indvars.iv.next.1, %.lr.ph ]
  %.0222250 = phi float [ 0.000000e+00, %.lr.ph.preheader.new ], [ %78, %.lr.ph ]
  %.0223249 = phi float [ %34, %.lr.ph.preheader.new ], [ %76, %.lr.ph ]
  %niter = phi i64 [ 0, %.lr.ph.preheader.new ], [ %niter.next.1, %.lr.ph ]
  %67 = getelementptr inbounds float, ptr %30, i64 %indvars.iv
  %68 = load float, ptr %67, align 4, !tbaa !10
  %69 = fcmp ole float %.0223249, %68
  %70 = select i1 %69, float %.0223249, float %68
  %71 = fcmp oge float %.0222250, %68
  %72 = select i1 %71, float %.0222250, float %68
  %73 = getelementptr float, ptr %9, i64 %indvars.iv
  %74 = load float, ptr %73, align 4, !tbaa !10
  %75 = fcmp ole float %70, %74
  %76 = select i1 %75, float %70, float %74
  %77 = fcmp oge float %72, %74
  %78 = select i1 %77, float %72, float %74
  %indvars.iv.next.1 = add nuw nsw i64 %indvars.iv, 2
  %niter.next.1 = add i64 %niter, 2
  %niter.ncmp.1 = icmp eq i64 %niter.next.1, %unroll_iter
  br i1 %niter.ncmp.1, label %._crit_edge.loopexit.unr-lcssa, label %.lr.ph, !llvm.loop !12

._crit_edge.loopexit.unr-lcssa:                   ; preds = %.lr.ph, %.lr.ph.preheader
  %.lcssa257.ph = phi float [ poison, %.lr.ph.preheader ], [ %76, %.lr.ph ]
  %.lcssa.ph = phi float [ poison, %.lr.ph.preheader ], [ %78, %.lr.ph ]
  %indvars.iv.unr = phi i64 [ 1, %.lr.ph.preheader ], [ %indvars.iv.next.1, %.lr.ph ]
  %.0222250.unr = phi float [ 0.000000e+00, %.lr.ph.preheader ], [ %78, %.lr.ph ]
  %.0223249.unr = phi float [ %34, %.lr.ph.preheader ], [ %76, %.lr.ph ]
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %._crit_edge, label %.lr.ph.epil

.lr.ph.epil:                                      ; preds = %._crit_edge.loopexit.unr-lcssa
  %79 = getelementptr inbounds float, ptr %30, i64 %indvars.iv.unr
  %80 = load float, ptr %79, align 4, !tbaa !10
  %81 = fcmp ole float %.0223249.unr, %80
  %82 = select i1 %81, float %.0223249.unr, float %80
  %83 = fcmp oge float %.0222250.unr, %80
  %84 = select i1 %83, float %.0222250.unr, float %80
  br label %._crit_edge

._crit_edge:                                      ; preds = %.lr.ph.epil, %._crit_edge.loopexit.unr-lcssa, %63
  %.0223.lcssa = phi float [ %34, %63 ], [ %.lcssa257.ph, %._crit_edge.loopexit.unr-lcssa ], [ %82, %.lr.ph.epil ]
  %.0222.lcssa = phi float [ 0.000000e+00, %63 ], [ %.lcssa.ph, %._crit_edge.loopexit.unr-lcssa ], [ %84, %.lr.ph.epil ]
  %85 = fcmp ugt float %.0223.lcssa, 0.000000e+00
  br i1 %85, label %86, label %.thread245.sink.split

86:                                               ; preds = %._crit_edge
  %87 = icmp sgt i32 %64, 0
  br i1 %87, label %88, label %94

88:                                               ; preds = %86
  %89 = fcmp oge float %.0223.lcssa, %33
  %90 = select i1 %89, float %.0223.lcssa, float %33
  %91 = fcmp ole float %.0222.lcssa, %34
  %92 = select i1 %91, float %.0222.lcssa, float %34
  %93 = fdiv float %90, %92
  store float %93, ptr %28, align 4, !tbaa !10
  br label %.thread241

94:                                               ; preds = %86
  store float 1.000000e+00, ptr %28, align 4, !tbaa !10
  br label %.thread241

.thread241:                                       ; preds = %60, %94, %88, %62
  %.pr = load i32, ptr %24, align 4, !tbaa !5
  %95 = icmp eq i32 %.pr, 0
  br i1 %95, label %96, label %.thread245

96:                                               ; preds = %.thread241
  %97 = load i32, ptr %11, align 4, !tbaa !5
  %98 = load i32, ptr %2, align 4, !tbaa !5
  %spec.select236 = tail call i32 @llvm.smax.i32(i32 %98, i32 1)
  %99 = icmp slt i32 %97, %spec.select236
  br i1 %99, label %.thread245.sink.split, label %100

100:                                              ; preds = %96
  %101 = load i32, ptr %13, align 4, !tbaa !5
  %102 = icmp slt i32 %101, %spec.select236
  br i1 %102, label %.thread245.sink.split, label %106

.thread245.sink.split:                            ; preds = %100, %96, %._crit_edge, %60, %53, %50, %47, %44, %42, %37
  %.sink = phi i32 [ -1, %37 ], [ -2, %42 ], [ -3, %44 ], [ -4, %47 ], [ -6, %50 ], [ -8, %53 ], [ -9, %60 ], [ -10, %._crit_edge ], [ -12, %96 ], [ -14, %100 ]
  store i32 %.sink, ptr %24, align 4, !tbaa !5
  br label %.thread245

.thread245:                                       ; preds = %.thread245.sink.split, %.thread241
  %103 = phi i32 [ %.pr, %.thread241 ], [ %.sink, %.thread245.sink.split ]
  %104 = sub nsw i32 0, %103
  store i32 %104, ptr %26, align 4, !tbaa !5
  %105 = call i32 @xerbla_(ptr noundef nonnull @.str.7, ptr noundef nonnull %26, i32 noundef 7) #4
  br label %123

106:                                              ; preds = %100
  br i1 %36, label %107, label %112

107:                                              ; preds = %106
  call void @cpoequb_(ptr noundef nonnull %2, ptr noundef %4, ptr noundef nonnull %5, ptr noundef %9, ptr noundef nonnull %28, ptr noundef nonnull %27, ptr noundef nonnull %29) #4
  %108 = load i32, ptr %29, align 4, !tbaa !5
  %109 = icmp eq i32 %108, 0
  br i1 %109, label %110, label %112

110:                                              ; preds = %107
  call void @claqhe_(ptr noundef %1, ptr noundef nonnull %2, ptr noundef %4, ptr noundef nonnull %5, ptr noundef %9, ptr noundef nonnull %28, ptr noundef nonnull %27, ptr noundef %8) #4
  %111 = call i32 @lsame_(ptr noundef %8, ptr noundef nonnull @.str.3) #4
  br label %112

112:                                              ; preds = %107, %110, %106
  %.1 = phi i32 [ %111, %110 ], [ %.0240, %107 ], [ %.0240, %106 ]
  %.not234 = icmp eq i32 %.1, 0
  br i1 %.not234, label %114, label %113

113:                                              ; preds = %112
  call void @clascl2_(ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef %9, ptr noundef %10, ptr noundef nonnull %11) #4
  br label %114

114:                                              ; preds = %113, %112
  br i1 %or.cond, label %115, label %120

115:                                              ; preds = %114
  call void @clacpy_(ptr noundef %1, ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef %4, ptr noundef nonnull %5, ptr noundef %6, ptr noundef nonnull %7) #4
  call void @cpotrf_(ptr noundef %1, ptr noundef nonnull %2, ptr noundef %6, ptr noundef nonnull %7, ptr noundef nonnull %24) #4
  %116 = load i32, ptr %24, align 4, !tbaa !5
  %117 = icmp sgt i32 %116, 0
  br i1 %117, label %118, label %120

118:                                              ; preds = %115
  %119 = call float @cla_porpvgrw_(ptr noundef %1, ptr noundef nonnull %2, ptr noundef %4, ptr noundef nonnull %5, ptr noundef %6, ptr noundef nonnull %7, ptr noundef %23) #4
  store float %119, ptr %15, align 4, !tbaa !10
  br label %123

120:                                              ; preds = %115, %114
  %121 = call float @cla_porpvgrw_(ptr noundef %1, ptr noundef nonnull %2, ptr noundef %4, ptr noundef nonnull %5, ptr noundef %6, ptr noundef nonnull %7, ptr noundef %23) #4
  store float %121, ptr %15, align 4, !tbaa !10
  call void @clacpy_(ptr noundef nonnull @.str.8, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef %10, ptr noundef nonnull %11, ptr noundef %12, ptr noundef nonnull %13) #4
  call void @cpotrs_(ptr noundef %1, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef %6, ptr noundef nonnull %7, ptr noundef %12, ptr noundef nonnull %13, ptr noundef nonnull %24) #4
  call void @cporfsx_(ptr noundef %1, ptr noundef %8, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef %4, ptr noundef nonnull %5, ptr noundef %6, ptr noundef nonnull %7, ptr noundef %9, ptr noundef %10, ptr noundef nonnull %11, ptr noundef %12, ptr noundef nonnull %13, ptr noundef %14, ptr noundef %16, ptr noundef %17, ptr noundef %18, ptr noundef %19, ptr noundef %20, ptr noundef %21, ptr noundef %22, ptr noundef %23, ptr noundef nonnull %24) #4
  br i1 %.not234, label %123, label %122

122:                                              ; preds = %120
  call void @clascl2_(ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef %9, ptr noundef %12, ptr noundef nonnull %13) #4
  br label %123

123:                                              ; preds = %120, %122, %118, %.thread245
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %29) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %28) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %27) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %26) #4
  ret void
}

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

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

declare float @slamch_(ptr noundef) local_unnamed_addr #2

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

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

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

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

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

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

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

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

declare void @cporfsx_(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) local_unnamed_addr #2

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

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

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

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

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

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


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