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

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

%struct.complex = type { float, float }

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

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

128:                                              ; preds = %20
  %129 = load i32, ptr %64, align 4, !tbaa !9
  %130 = icmp ne i32 %129, 0
  br i1 %130, label %131, label %133

131:                                              ; preds = %128, %20
  %132 = load ptr, ptr %29, align 8, !tbaa !5
  store i8 78, ptr %132, align 1, !tbaa !11
  store i32 0, ptr %65, align 4, !tbaa !9
  br label %139

133:                                              ; preds = %128
  %134 = load ptr, ptr %29, align 8, !tbaa !5
  %135 = call i32 @lsame_(ptr noundef %134, ptr noundef @.str.2)
  store i32 %135, ptr %65, align 4, !tbaa !9
  %136 = call float @slamch_(ptr noundef @.str.3)
  store float %136, ptr %69, align 4, !tbaa !12
  %137 = load float, ptr %69, align 4, !tbaa !12
  %138 = fdiv float 1.000000e+00, %137
  store float %138, ptr %67, align 4, !tbaa !12
  br label %139

139:                                              ; preds = %133, %131
  %140 = load i32, ptr %66, align 4, !tbaa !9
  %141 = icmp ne i32 %140, 0
  br i1 %141, label %151, label %142

142:                                              ; preds = %139
  %143 = load i32, ptr %64, align 4, !tbaa !9
  %144 = icmp ne i32 %143, 0
  br i1 %144, label %151, label %145

145:                                              ; preds = %142
  %146 = load ptr, ptr %21, align 8, !tbaa !5
  %147 = call i32 @lsame_(ptr noundef %146, ptr noundef @.str.4)
  %148 = icmp ne i32 %147, 0
  br i1 %148, label %151, label %149

149:                                              ; preds = %145
  %150 = load ptr, ptr %40, align 8, !tbaa !5
  store i32 -1, ptr %150, align 4, !tbaa !9
  br label %336

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

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

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

161:                                              ; preds = %155, %151
  %162 = load ptr, ptr %23, align 8, !tbaa !5
  %163 = load i32, ptr %162, align 4, !tbaa !9
  %164 = icmp slt i32 %163, 0
  br i1 %164, label %165, label %167

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

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

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

173:                                              ; preds = %167
  %174 = load ptr, ptr %26, align 8, !tbaa !5
  %175 = load i32, ptr %174, align 4, !tbaa !9
  %176 = load ptr, ptr %23, align 8, !tbaa !5
  %177 = load i32, ptr %176, align 4, !tbaa !9
  %178 = icmp sge i32 1, %177
  br i1 %178, label %179, label %180

179:                                              ; preds = %173
  br label %183

180:                                              ; preds = %173
  %181 = load ptr, ptr %23, align 8, !tbaa !5
  %182 = load i32, ptr %181, align 4, !tbaa !9
  br label %183

183:                                              ; preds = %180, %179
  %184 = phi i32 [ 1, %179 ], [ %182, %180 ]
  %185 = icmp slt i32 %175, %184
  br i1 %185, label %186, label %188

186:                                              ; preds = %183
  %187 = load ptr, ptr %40, align 8, !tbaa !5
  store i32 -6, ptr %187, align 4, !tbaa !9
  br label %332

188:                                              ; preds = %183
  %189 = load ptr, ptr %28, align 8, !tbaa !5
  %190 = load i32, ptr %189, align 4, !tbaa !9
  %191 = load ptr, ptr %23, align 8, !tbaa !5
  %192 = load i32, ptr %191, align 4, !tbaa !9
  %193 = icmp sge i32 1, %192
  br i1 %193, label %194, label %195

194:                                              ; preds = %188
  br label %198

195:                                              ; preds = %188
  %196 = load ptr, ptr %23, align 8, !tbaa !5
  %197 = load i32, ptr %196, align 4, !tbaa !9
  br label %198

198:                                              ; preds = %195, %194
  %199 = phi i32 [ 1, %194 ], [ %197, %195 ]
  %200 = icmp slt i32 %190, %199
  br i1 %200, label %201, label %203

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

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

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

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

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

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

219:                                              ; preds = %216
  %220 = load float, ptr %67, align 4, !tbaa !12
  store float %220, ptr %58, align 4, !tbaa !12
  store float 0.000000e+00, ptr %59, align 4, !tbaa !12
  %221 = load ptr, ptr %23, align 8, !tbaa !5
  %222 = load i32, ptr %221, align 4, !tbaa !9
  store i32 %222, ptr %49, align 4, !tbaa !9
  store i32 1, ptr %61, align 4, !tbaa !9
  br label %223

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

303:                                              ; preds = %297
  br label %307

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

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

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

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

318:                                              ; preds = %312
  br label %322

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

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

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

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

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

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

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

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

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

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

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

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

336:                                              ; preds = %335, %149
  %337 = load ptr, ptr %40, align 8, !tbaa !5
  %338 = load i32, ptr %337, align 4, !tbaa !9
  %339 = icmp ne i32 %338, 0
  br i1 %339, label %340, label %345

340:                                              ; preds = %336
  %341 = load ptr, ptr %40, align 8, !tbaa !5
  %342 = load i32, ptr %341, align 4, !tbaa !9
  %343 = sub nsw i32 0, %342
  store i32 %343, ptr %49, align 4, !tbaa !9
  %344 = call i32 @xerbla_(ptr noundef @.str.7, ptr noundef %49, i32 noundef 6)
  store i32 1, ptr %70, align 4
  br label %672

345:                                              ; preds = %336
  %346 = load i32, ptr %64, align 4, !tbaa !9
  %347 = icmp ne i32 %346, 0
  br i1 %347, label %348, label %373

348:                                              ; preds = %345
  %349 = load ptr, ptr %23, align 8, !tbaa !5
  %350 = load ptr, ptr %25, align 8, !tbaa !5
  %351 = load i32, ptr %42, align 4, !tbaa !9
  %352 = sext i32 %351 to i64
  %353 = getelementptr inbounds %struct.complex, ptr %350, i64 %352
  %354 = load ptr, ptr %26, align 8, !tbaa !5
  %355 = load ptr, ptr %30, align 8, !tbaa !5
  %356 = getelementptr inbounds float, ptr %355, i64 1
  call void @cpoequ_(ptr noundef %349, ptr noundef %353, ptr noundef %354, ptr noundef %356, ptr noundef %62, ptr noundef %57, ptr noundef %68)
  %357 = load i32, ptr %68, align 4, !tbaa !9
  %358 = icmp eq i32 %357, 0
  br i1 %358, label %359, label %372

359:                                              ; preds = %348
  %360 = load ptr, ptr %22, align 8, !tbaa !5
  %361 = load ptr, ptr %23, align 8, !tbaa !5
  %362 = load ptr, ptr %25, align 8, !tbaa !5
  %363 = load i32, ptr %42, align 4, !tbaa !9
  %364 = sext i32 %363 to i64
  %365 = getelementptr inbounds %struct.complex, ptr %362, i64 %364
  %366 = load ptr, ptr %26, align 8, !tbaa !5
  %367 = load ptr, ptr %30, align 8, !tbaa !5
  %368 = getelementptr inbounds float, ptr %367, i64 1
  %369 = load ptr, ptr %29, align 8, !tbaa !5
  call void @claqhe_(ptr noundef %360, ptr noundef %361, ptr noundef %365, ptr noundef %366, ptr noundef %368, ptr noundef %62, ptr noundef %57, ptr noundef %369)
  %370 = load ptr, ptr %29, align 8, !tbaa !5
  %371 = call i32 @lsame_(ptr noundef %370, ptr noundef @.str.2)
  store i32 %371, ptr %65, align 4, !tbaa !9
  br label %372

372:                                              ; preds = %359, %348
  br label %373

373:                                              ; preds = %372, %345
  %374 = load i32, ptr %65, align 4, !tbaa !9
  %375 = icmp ne i32 %374, 0
  br i1 %375, label %376, label %450

376:                                              ; preds = %373
  %377 = load ptr, ptr %24, align 8, !tbaa !5
  %378 = load i32, ptr %377, align 4, !tbaa !9
  store i32 %378, ptr %49, align 4, !tbaa !9
  store i32 1, ptr %61, align 4, !tbaa !9
  br label %379

379:                                              ; preds = %446, %376
  %380 = load i32, ptr %61, align 4, !tbaa !9
  %381 = load i32, ptr %49, align 4, !tbaa !9
  %382 = icmp sle i32 %380, %381
  br i1 %382, label %383, label %449

383:                                              ; preds = %379
  %384 = load ptr, ptr %23, align 8, !tbaa !5
  %385 = load i32, ptr %384, align 4, !tbaa !9
  store i32 %385, ptr %50, align 4, !tbaa !9
  store i32 1, ptr %60, align 4, !tbaa !9
  br label %386

386:                                              ; preds = %442, %383
  %387 = load i32, ptr %60, align 4, !tbaa !9
  %388 = load i32, ptr %50, align 4, !tbaa !9
  %389 = icmp sle i32 %387, %388
  br i1 %389, label %390, label %445

390:                                              ; preds = %386
  %391 = load i32, ptr %60, align 4, !tbaa !9
  %392 = load i32, ptr %61, align 4, !tbaa !9
  %393 = load i32, ptr %45, align 4, !tbaa !9
  %394 = mul nsw i32 %392, %393
  %395 = add nsw i32 %391, %394
  store i32 %395, ptr %51, align 4, !tbaa !9
  %396 = load i32, ptr %60, align 4, !tbaa !9
  store i32 %396, ptr %52, align 4, !tbaa !9
  %397 = load i32, ptr %60, align 4, !tbaa !9
  %398 = load i32, ptr %61, align 4, !tbaa !9
  %399 = load i32, ptr %45, align 4, !tbaa !9
  %400 = mul nsw i32 %398, %399
  %401 = add nsw i32 %397, %400
  store i32 %401, ptr %53, align 4, !tbaa !9
  %402 = load ptr, ptr %30, align 8, !tbaa !5
  %403 = load i32, ptr %52, align 4, !tbaa !9
  %404 = sext i32 %403 to i64
  %405 = getelementptr inbounds float, ptr %402, i64 %404
  %406 = load float, ptr %405, align 4, !tbaa !12
  %407 = load ptr, ptr %31, align 8, !tbaa !5
  %408 = load i32, ptr %53, align 4, !tbaa !9
  %409 = sext i32 %408 to i64
  %410 = getelementptr inbounds %struct.complex, ptr %407, i64 %409
  %411 = getelementptr inbounds %struct.complex, ptr %410, i32 0, i32 0
  %412 = load float, ptr %411, align 4, !tbaa !16
  %413 = fmul float %406, %412
  %414 = getelementptr inbounds %struct.complex, ptr %56, i32 0, i32 0
  store float %413, ptr %414, align 4, !tbaa !16
  %415 = load ptr, ptr %30, align 8, !tbaa !5
  %416 = load i32, ptr %52, align 4, !tbaa !9
  %417 = sext i32 %416 to i64
  %418 = getelementptr inbounds float, ptr %415, i64 %417
  %419 = load float, ptr %418, align 4, !tbaa !12
  %420 = load ptr, ptr %31, align 8, !tbaa !5
  %421 = load i32, ptr %53, align 4, !tbaa !9
  %422 = sext i32 %421 to i64
  %423 = getelementptr inbounds %struct.complex, ptr %420, i64 %422
  %424 = getelementptr inbounds %struct.complex, ptr %423, i32 0, i32 1
  %425 = load float, ptr %424, align 4, !tbaa !18
  %426 = fmul float %419, %425
  %427 = getelementptr inbounds %struct.complex, ptr %56, i32 0, i32 1
  store float %426, ptr %427, align 4, !tbaa !18
  %428 = getelementptr inbounds %struct.complex, ptr %56, i32 0, i32 0
  %429 = load float, ptr %428, align 4, !tbaa !16
  %430 = load ptr, ptr %31, align 8, !tbaa !5
  %431 = load i32, ptr %51, align 4, !tbaa !9
  %432 = sext i32 %431 to i64
  %433 = getelementptr inbounds %struct.complex, ptr %430, i64 %432
  %434 = getelementptr inbounds %struct.complex, ptr %433, i32 0, i32 0
  store float %429, ptr %434, align 4, !tbaa !16
  %435 = getelementptr inbounds %struct.complex, ptr %56, i32 0, i32 1
  %436 = load float, ptr %435, align 4, !tbaa !18
  %437 = load ptr, ptr %31, align 8, !tbaa !5
  %438 = load i32, ptr %51, align 4, !tbaa !9
  %439 = sext i32 %438 to i64
  %440 = getelementptr inbounds %struct.complex, ptr %437, i64 %439
  %441 = getelementptr inbounds %struct.complex, ptr %440, i32 0, i32 1
  store float %436, ptr %441, align 4, !tbaa !18
  br label %442

442:                                              ; preds = %390
  %443 = load i32, ptr %60, align 4, !tbaa !9
  %444 = add nsw i32 %443, 1
  store i32 %444, ptr %60, align 4, !tbaa !9
  br label %386, !llvm.loop !19

445:                                              ; preds = %386
  br label %446

446:                                              ; preds = %445
  %447 = load i32, ptr %61, align 4, !tbaa !9
  %448 = add nsw i32 %447, 1
  store i32 %448, ptr %61, align 4, !tbaa !9
  br label %379, !llvm.loop !20

449:                                              ; preds = %379
  br label %450

450:                                              ; preds = %449, %373
  %451 = load i32, ptr %66, align 4, !tbaa !9
  %452 = icmp ne i32 %451, 0
  br i1 %452, label %456, label %453

453:                                              ; preds = %450
  %454 = load i32, ptr %64, align 4, !tbaa !9
  %455 = icmp ne i32 %454, 0
  br i1 %455, label %456, label %485

456:                                              ; preds = %453, %450
  %457 = load ptr, ptr %22, align 8, !tbaa !5
  %458 = load ptr, ptr %23, align 8, !tbaa !5
  %459 = load ptr, ptr %23, align 8, !tbaa !5
  %460 = load ptr, ptr %25, align 8, !tbaa !5
  %461 = load i32, ptr %42, align 4, !tbaa !9
  %462 = sext i32 %461 to i64
  %463 = getelementptr inbounds %struct.complex, ptr %460, i64 %462
  %464 = load ptr, ptr %26, align 8, !tbaa !5
  %465 = load ptr, ptr %27, align 8, !tbaa !5
  %466 = load i32, ptr %44, align 4, !tbaa !9
  %467 = sext i32 %466 to i64
  %468 = getelementptr inbounds %struct.complex, ptr %465, i64 %467
  %469 = load ptr, ptr %28, align 8, !tbaa !5
  call void @clacpy_(ptr noundef %457, ptr noundef %458, ptr noundef %459, ptr noundef %463, ptr noundef %464, ptr noundef %468, ptr noundef %469)
  %470 = load ptr, ptr %22, align 8, !tbaa !5
  %471 = load ptr, ptr %23, align 8, !tbaa !5
  %472 = load ptr, ptr %27, align 8, !tbaa !5
  %473 = load i32, ptr %44, align 4, !tbaa !9
  %474 = sext i32 %473 to i64
  %475 = getelementptr inbounds %struct.complex, ptr %472, i64 %474
  %476 = load ptr, ptr %28, align 8, !tbaa !5
  %477 = load ptr, ptr %40, align 8, !tbaa !5
  %478 = call i32 @cpotrf_(ptr noundef %470, ptr noundef %471, ptr noundef %475, ptr noundef %476, ptr noundef %477)
  %479 = load ptr, ptr %40, align 8, !tbaa !5
  %480 = load i32, ptr %479, align 4, !tbaa !9
  %481 = icmp sgt i32 %480, 0
  br i1 %481, label %482, label %484

482:                                              ; preds = %456
  %483 = load ptr, ptr %35, align 8, !tbaa !5
  store float 0.000000e+00, ptr %483, align 4, !tbaa !12
  store i32 1, ptr %70, align 4
  br label %672

484:                                              ; preds = %456
  br label %485

485:                                              ; preds = %484, %453
  %486 = load ptr, ptr %22, align 8, !tbaa !5
  %487 = load ptr, ptr %23, align 8, !tbaa !5
  %488 = load ptr, ptr %25, align 8, !tbaa !5
  %489 = load i32, ptr %42, align 4, !tbaa !9
  %490 = sext i32 %489 to i64
  %491 = getelementptr inbounds %struct.complex, ptr %488, i64 %490
  %492 = load ptr, ptr %26, align 8, !tbaa !5
  %493 = load ptr, ptr %39, align 8, !tbaa !5
  %494 = getelementptr inbounds float, ptr %493, i64 1
  %495 = call float @clanhe_(ptr noundef @.str.8, ptr noundef %486, ptr noundef %487, ptr noundef %491, ptr noundef %492, ptr noundef %494)
  store float %495, ptr %63, align 4, !tbaa !12
  %496 = load ptr, ptr %22, align 8, !tbaa !5
  %497 = load ptr, ptr %23, align 8, !tbaa !5
  %498 = load ptr, ptr %27, align 8, !tbaa !5
  %499 = load i32, ptr %44, align 4, !tbaa !9
  %500 = sext i32 %499 to i64
  %501 = getelementptr inbounds %struct.complex, ptr %498, i64 %500
  %502 = load ptr, ptr %28, align 8, !tbaa !5
  %503 = load ptr, ptr %35, align 8, !tbaa !5
  %504 = load ptr, ptr %38, align 8, !tbaa !5
  %505 = getelementptr inbounds %struct.complex, ptr %504, i64 1
  %506 = load ptr, ptr %39, align 8, !tbaa !5
  %507 = getelementptr inbounds float, ptr %506, i64 1
  %508 = load ptr, ptr %40, align 8, !tbaa !5
  call void @cpocon_(ptr noundef %496, ptr noundef %497, ptr noundef %501, ptr noundef %502, ptr noundef %63, ptr noundef %503, ptr noundef %505, ptr noundef %507, ptr noundef %508)
  %509 = load ptr, ptr %23, align 8, !tbaa !5
  %510 = load ptr, ptr %24, align 8, !tbaa !5
  %511 = load ptr, ptr %31, align 8, !tbaa !5
  %512 = load i32, ptr %46, align 4, !tbaa !9
  %513 = sext i32 %512 to i64
  %514 = getelementptr inbounds %struct.complex, ptr %511, i64 %513
  %515 = load ptr, ptr %32, align 8, !tbaa !5
  %516 = load ptr, ptr %33, align 8, !tbaa !5
  %517 = load i32, ptr %48, align 4, !tbaa !9
  %518 = sext i32 %517 to i64
  %519 = getelementptr inbounds %struct.complex, ptr %516, i64 %518
  %520 = load ptr, ptr %34, align 8, !tbaa !5
  call void @clacpy_(ptr noundef @.str.9, ptr noundef %509, ptr noundef %510, ptr noundef %514, ptr noundef %515, ptr noundef %519, ptr noundef %520)
  %521 = load ptr, ptr %22, align 8, !tbaa !5
  %522 = load ptr, ptr %23, align 8, !tbaa !5
  %523 = load ptr, ptr %24, align 8, !tbaa !5
  %524 = load ptr, ptr %27, align 8, !tbaa !5
  %525 = load i32, ptr %44, align 4, !tbaa !9
  %526 = sext i32 %525 to i64
  %527 = getelementptr inbounds %struct.complex, ptr %524, i64 %526
  %528 = load ptr, ptr %28, align 8, !tbaa !5
  %529 = load ptr, ptr %33, align 8, !tbaa !5
  %530 = load i32, ptr %48, align 4, !tbaa !9
  %531 = sext i32 %530 to i64
  %532 = getelementptr inbounds %struct.complex, ptr %529, i64 %531
  %533 = load ptr, ptr %34, align 8, !tbaa !5
  %534 = load ptr, ptr %40, align 8, !tbaa !5
  call void @cpotrs_(ptr noundef %521, ptr noundef %522, ptr noundef %523, ptr noundef %527, ptr noundef %528, ptr noundef %532, ptr noundef %533, ptr noundef %534)
  %535 = load ptr, ptr %22, align 8, !tbaa !5
  %536 = load ptr, ptr %23, align 8, !tbaa !5
  %537 = load ptr, ptr %24, align 8, !tbaa !5
  %538 = load ptr, ptr %25, align 8, !tbaa !5
  %539 = load i32, ptr %42, align 4, !tbaa !9
  %540 = sext i32 %539 to i64
  %541 = getelementptr inbounds %struct.complex, ptr %538, i64 %540
  %542 = load ptr, ptr %26, align 8, !tbaa !5
  %543 = load ptr, ptr %27, align 8, !tbaa !5
  %544 = load i32, ptr %44, align 4, !tbaa !9
  %545 = sext i32 %544 to i64
  %546 = getelementptr inbounds %struct.complex, ptr %543, i64 %545
  %547 = load ptr, ptr %28, align 8, !tbaa !5
  %548 = load ptr, ptr %31, align 8, !tbaa !5
  %549 = load i32, ptr %46, align 4, !tbaa !9
  %550 = sext i32 %549 to i64
  %551 = getelementptr inbounds %struct.complex, ptr %548, i64 %550
  %552 = load ptr, ptr %32, align 8, !tbaa !5
  %553 = load ptr, ptr %33, align 8, !tbaa !5
  %554 = load i32, ptr %48, align 4, !tbaa !9
  %555 = sext i32 %554 to i64
  %556 = getelementptr inbounds %struct.complex, ptr %553, i64 %555
  %557 = load ptr, ptr %34, align 8, !tbaa !5
  %558 = load ptr, ptr %36, align 8, !tbaa !5
  %559 = getelementptr inbounds float, ptr %558, i64 1
  %560 = load ptr, ptr %37, align 8, !tbaa !5
  %561 = getelementptr inbounds float, ptr %560, i64 1
  %562 = load ptr, ptr %38, align 8, !tbaa !5
  %563 = getelementptr inbounds %struct.complex, ptr %562, i64 1
  %564 = load ptr, ptr %39, align 8, !tbaa !5
  %565 = getelementptr inbounds float, ptr %564, i64 1
  %566 = load ptr, ptr %40, align 8, !tbaa !5
  call void @cporfs_(ptr noundef %535, ptr noundef %536, ptr noundef %537, ptr noundef %541, ptr noundef %542, ptr noundef %546, ptr noundef %547, ptr noundef %551, ptr noundef %552, ptr noundef %556, ptr noundef %557, ptr noundef %559, ptr noundef %561, ptr noundef %563, ptr noundef %565, ptr noundef %566)
  %567 = load i32, ptr %65, align 4, !tbaa !9
  %568 = icmp ne i32 %567, 0
  br i1 %568, label %569, label %661

569:                                              ; preds = %485
  %570 = load ptr, ptr %24, align 8, !tbaa !5
  %571 = load i32, ptr %570, align 4, !tbaa !9
  store i32 %571, ptr %49, align 4, !tbaa !9
  store i32 1, ptr %61, align 4, !tbaa !9
  br label %572

572:                                              ; preds = %639, %569
  %573 = load i32, ptr %61, align 4, !tbaa !9
  %574 = load i32, ptr %49, align 4, !tbaa !9
  %575 = icmp sle i32 %573, %574
  br i1 %575, label %576, label %642

576:                                              ; preds = %572
  %577 = load ptr, ptr %23, align 8, !tbaa !5
  %578 = load i32, ptr %577, align 4, !tbaa !9
  store i32 %578, ptr %50, align 4, !tbaa !9
  store i32 1, ptr %60, align 4, !tbaa !9
  br label %579

579:                                              ; preds = %635, %576
  %580 = load i32, ptr %60, align 4, !tbaa !9
  %581 = load i32, ptr %50, align 4, !tbaa !9
  %582 = icmp sle i32 %580, %581
  br i1 %582, label %583, label %638

583:                                              ; preds = %579
  %584 = load i32, ptr %60, align 4, !tbaa !9
  %585 = load i32, ptr %61, align 4, !tbaa !9
  %586 = load i32, ptr %47, align 4, !tbaa !9
  %587 = mul nsw i32 %585, %586
  %588 = add nsw i32 %584, %587
  store i32 %588, ptr %51, align 4, !tbaa !9
  %589 = load i32, ptr %60, align 4, !tbaa !9
  store i32 %589, ptr %52, align 4, !tbaa !9
  %590 = load i32, ptr %60, align 4, !tbaa !9
  %591 = load i32, ptr %61, align 4, !tbaa !9
  %592 = load i32, ptr %47, align 4, !tbaa !9
  %593 = mul nsw i32 %591, %592
  %594 = add nsw i32 %590, %593
  store i32 %594, ptr %53, align 4, !tbaa !9
  %595 = load ptr, ptr %30, align 8, !tbaa !5
  %596 = load i32, ptr %52, align 4, !tbaa !9
  %597 = sext i32 %596 to i64
  %598 = getelementptr inbounds float, ptr %595, i64 %597
  %599 = load float, ptr %598, align 4, !tbaa !12
  %600 = load ptr, ptr %33, align 8, !tbaa !5
  %601 = load i32, ptr %53, align 4, !tbaa !9
  %602 = sext i32 %601 to i64
  %603 = getelementptr inbounds %struct.complex, ptr %600, i64 %602
  %604 = getelementptr inbounds %struct.complex, ptr %603, i32 0, i32 0
  %605 = load float, ptr %604, align 4, !tbaa !16
  %606 = fmul float %599, %605
  %607 = getelementptr inbounds %struct.complex, ptr %56, i32 0, i32 0
  store float %606, ptr %607, align 4, !tbaa !16
  %608 = load ptr, ptr %30, align 8, !tbaa !5
  %609 = load i32, ptr %52, align 4, !tbaa !9
  %610 = sext i32 %609 to i64
  %611 = getelementptr inbounds float, ptr %608, i64 %610
  %612 = load float, ptr %611, align 4, !tbaa !12
  %613 = load ptr, ptr %33, align 8, !tbaa !5
  %614 = load i32, ptr %53, align 4, !tbaa !9
  %615 = sext i32 %614 to i64
  %616 = getelementptr inbounds %struct.complex, ptr %613, i64 %615
  %617 = getelementptr inbounds %struct.complex, ptr %616, i32 0, i32 1
  %618 = load float, ptr %617, align 4, !tbaa !18
  %619 = fmul float %612, %618
  %620 = getelementptr inbounds %struct.complex, ptr %56, i32 0, i32 1
  store float %619, ptr %620, align 4, !tbaa !18
  %621 = getelementptr inbounds %struct.complex, ptr %56, i32 0, i32 0
  %622 = load float, ptr %621, align 4, !tbaa !16
  %623 = load ptr, ptr %33, align 8, !tbaa !5
  %624 = load i32, ptr %51, align 4, !tbaa !9
  %625 = sext i32 %624 to i64
  %626 = getelementptr inbounds %struct.complex, ptr %623, i64 %625
  %627 = getelementptr inbounds %struct.complex, ptr %626, i32 0, i32 0
  store float %622, ptr %627, align 4, !tbaa !16
  %628 = getelementptr inbounds %struct.complex, ptr %56, i32 0, i32 1
  %629 = load float, ptr %628, align 4, !tbaa !18
  %630 = load ptr, ptr %33, align 8, !tbaa !5
  %631 = load i32, ptr %51, align 4, !tbaa !9
  %632 = sext i32 %631 to i64
  %633 = getelementptr inbounds %struct.complex, ptr %630, i64 %632
  %634 = getelementptr inbounds %struct.complex, ptr %633, i32 0, i32 1
  store float %629, ptr %634, align 4, !tbaa !18
  br label %635

635:                                              ; preds = %583
  %636 = load i32, ptr %60, align 4, !tbaa !9
  %637 = add nsw i32 %636, 1
  store i32 %637, ptr %60, align 4, !tbaa !9
  br label %579, !llvm.loop !21

638:                                              ; preds = %579
  br label %639

639:                                              ; preds = %638
  %640 = load i32, ptr %61, align 4, !tbaa !9
  %641 = add nsw i32 %640, 1
  store i32 %641, ptr %61, align 4, !tbaa !9
  br label %572, !llvm.loop !22

642:                                              ; preds = %572
  %643 = load ptr, ptr %24, align 8, !tbaa !5
  %644 = load i32, ptr %643, align 4, !tbaa !9
  store i32 %644, ptr %49, align 4, !tbaa !9
  store i32 1, ptr %61, align 4, !tbaa !9
  br label %645

645:                                              ; preds = %657, %642
  %646 = load i32, ptr %61, align 4, !tbaa !9
  %647 = load i32, ptr %49, align 4, !tbaa !9
  %648 = icmp sle i32 %646, %647
  br i1 %648, label %649, label %660

649:                                              ; preds = %645
  %650 = load float, ptr %62, align 4, !tbaa !12
  %651 = load ptr, ptr %36, align 8, !tbaa !5
  %652 = load i32, ptr %61, align 4, !tbaa !9
  %653 = sext i32 %652 to i64
  %654 = getelementptr inbounds float, ptr %651, i64 %653
  %655 = load float, ptr %654, align 4, !tbaa !12
  %656 = fdiv float %655, %650
  store float %656, ptr %654, align 4, !tbaa !12
  br label %657

657:                                              ; preds = %649
  %658 = load i32, ptr %61, align 4, !tbaa !9
  %659 = add nsw i32 %658, 1
  store i32 %659, ptr %61, align 4, !tbaa !9
  br label %645, !llvm.loop !23

660:                                              ; preds = %645
  br label %661

661:                                              ; preds = %660, %485
  %662 = load ptr, ptr %35, align 8, !tbaa !5
  %663 = load float, ptr %662, align 4, !tbaa !12
  %664 = call float @slamch_(ptr noundef @.str.10)
  %665 = fcmp olt float %663, %664
  br i1 %665, label %666, label %671

666:                                              ; preds = %661
  %667 = load ptr, ptr %23, align 8, !tbaa !5
  %668 = load i32, ptr %667, align 4, !tbaa !9
  %669 = add nsw i32 %668, 1
  %670 = load ptr, ptr %40, align 8, !tbaa !5
  store i32 %669, ptr %670, align 4, !tbaa !9
  br label %671

671:                                              ; preds = %666, %661
  store i32 1, ptr %70, align 4
  br label %672

672:                                              ; preds = %671, %482, %340
  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 8, ptr %56) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %54) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %53) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #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 @cpoequ_(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 @clacpy_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

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

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

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

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

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

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

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


; Optimized IR (opt -passes='default<O3>'):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

%struct.complex = type { float, float }

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

; Function Attrs: nounwind uwtable
define dso_local void @cposvx_(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) local_unnamed_addr #0 {
  %21 = alloca i32, align 4
  %22 = alloca float, align 4
  %23 = alloca float, align 4
  %24 = alloca float, align 4
  %25 = alloca i32, align 4
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %21) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %22) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %23) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %24) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %25) #4
  %26 = getelementptr inbounds i8, ptr %9, i64 -4
  %27 = load i32, ptr %11, align 4, !tbaa !5
  %narrow = xor i32 %27, -1
  %28 = sext i32 %narrow to i64
  %29 = getelementptr inbounds %struct.complex, ptr %10, i64 %28
  %30 = load i32, ptr %13, align 4, !tbaa !5
  %narrow269 = xor i32 %30, -1
  %31 = sext i32 %narrow269 to i64
  %32 = getelementptr inbounds %struct.complex, ptr %12, i64 %31
  %33 = getelementptr inbounds i8, ptr %15, i64 -4
  store i32 0, ptr %19, align 4, !tbaa !5
  %34 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str) #4
  %35 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.1) #4
  %36 = icmp ne i32 %34, 0
  %37 = icmp ne i32 %35, 0
  %or.cond = select i1 %36, i1 true, i1 %37
  br i1 %or.cond, label %.thread, label %38

.thread:                                          ; preds = %20
  store i8 78, ptr %8, align 1, !tbaa !9
  br label %43

38:                                               ; preds = %20
  %39 = tail call i32 @lsame_(ptr noundef %8, ptr noundef nonnull @.str.2) #4
  %40 = tail call float @slamch_(ptr noundef nonnull @.str.3) #4
  %41 = fdiv float 1.000000e+00, %40
  %42 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.4) #4
  %.not = icmp eq i32 %42, 0
  br i1 %.not, label %.thread288.sink.split, label %43

43:                                               ; preds = %.thread, %38
  %.0283 = phi float [ undef, %.thread ], [ %40, %38 ]
  %.0249282 = phi float [ undef, %.thread ], [ %41, %38 ]
  %.0250281 = phi i32 [ 0, %.thread ], [ %39, %38 ]
  %44 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.5) #4
  %.not262 = icmp eq i32 %44, 0
  br i1 %.not262, label %45, label %47

45:                                               ; preds = %43
  %46 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.6) #4
  %.not263 = icmp eq i32 %46, 0
  br i1 %.not263, label %.thread288.sink.split, label %47

47:                                               ; preds = %45, %43
  %48 = load i32, ptr %2, align 4, !tbaa !5
  %49 = icmp slt i32 %48, 0
  br i1 %49, label %.thread288.sink.split, label %50

50:                                               ; preds = %47
  %51 = load i32, ptr %3, align 4, !tbaa !5
  %52 = icmp slt i32 %51, 0
  br i1 %52, label %.thread288.sink.split, label %53

53:                                               ; preds = %50
  %54 = load i32, ptr %5, align 4, !tbaa !5
  %spec.select = tail call i32 @llvm.umax.i32(i32 %48, i32 1)
  %55 = icmp slt i32 %54, %spec.select
  br i1 %55, label %.thread288.sink.split, label %56

56:                                               ; preds = %53
  %57 = load i32, ptr %7, align 4, !tbaa !5
  %58 = icmp slt i32 %57, %spec.select
  br i1 %58, label %.thread288.sink.split, label %59

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

63:                                               ; preds = %59
  %64 = tail call i32 @lsame_(ptr noundef %8, ptr noundef nonnull @.str) #4
  %.not264 = icmp eq i32 %64, 0
  br i1 %.not264, label %.thread288.sink.split, label %.thread284

65:                                               ; preds = %59
  br i1 %62, label %66, label %.thread284

66:                                               ; preds = %65
  %67 = load i32, ptr %2, align 4, !tbaa !5
  %.not265292 = icmp slt i32 %67, 1
  br i1 %.not265292, label %._crit_edge, label %.lr.ph.preheader

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

.lr.ph.preheader.new:                             ; preds = %.lr.ph.preheader
  %unroll_iter = and i64 %68, 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 ]
  %.0255294 = phi float [ 0.000000e+00, %.lr.ph.preheader.new ], [ %81, %.lr.ph ]
  %.0256293 = phi float [ %.0249282, %.lr.ph.preheader.new ], [ %79, %.lr.ph ]
  %niter = phi i64 [ 0, %.lr.ph.preheader.new ], [ %niter.next.1, %.lr.ph ]
  %70 = getelementptr inbounds float, ptr %26, i64 %indvars.iv
  %71 = load float, ptr %70, align 4, !tbaa !10
  %72 = fcmp ole float %.0256293, %71
  %73 = select i1 %72, float %.0256293, float %71
  %74 = fcmp oge float %.0255294, %71
  %75 = select i1 %74, float %.0255294, float %71
  %76 = getelementptr float, ptr %9, i64 %indvars.iv
  %77 = load float, ptr %76, align 4, !tbaa !10
  %78 = fcmp ole float %73, %77
  %79 = select i1 %78, float %73, float %77
  %80 = fcmp oge float %75, %77
  %81 = select i1 %80, float %75, float %77
  %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
  %.lcssa397.ph = phi float [ poison, %.lr.ph.preheader ], [ %79, %.lr.ph ]
  %.lcssa.ph = phi float [ poison, %.lr.ph.preheader ], [ %81, %.lr.ph ]
  %indvars.iv.unr = phi i64 [ 1, %.lr.ph.preheader ], [ %indvars.iv.next.1, %.lr.ph ]
  %.0255294.unr = phi float [ 0.000000e+00, %.lr.ph.preheader ], [ %81, %.lr.ph ]
  %.0256293.unr = phi float [ %.0249282, %.lr.ph.preheader ], [ %79, %.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
  %82 = getelementptr inbounds float, ptr %26, i64 %indvars.iv.unr
  %83 = load float, ptr %82, align 4, !tbaa !10
  %84 = fcmp ole float %.0256293.unr, %83
  %85 = select i1 %84, float %.0256293.unr, float %83
  %86 = fcmp oge float %.0255294.unr, %83
  %87 = select i1 %86, float %.0255294.unr, float %83
  br label %._crit_edge

._crit_edge:                                      ; preds = %.lr.ph.epil, %._crit_edge.loopexit.unr-lcssa, %66
  %.0256.lcssa = phi float [ %.0249282, %66 ], [ %.lcssa397.ph, %._crit_edge.loopexit.unr-lcssa ], [ %85, %.lr.ph.epil ]
  %.0255.lcssa = phi float [ 0.000000e+00, %66 ], [ %.lcssa.ph, %._crit_edge.loopexit.unr-lcssa ], [ %87, %.lr.ph.epil ]
  %88 = fcmp ugt float %.0256.lcssa, 0.000000e+00
  br i1 %88, label %89, label %.thread288.sink.split

89:                                               ; preds = %._crit_edge
  %90 = icmp sgt i32 %67, 0
  br i1 %90, label %91, label %97

91:                                               ; preds = %89
  %92 = fcmp oge float %.0256.lcssa, %.0283
  %93 = select i1 %92, float %.0256.lcssa, float %.0283
  %94 = fcmp ole float %.0255.lcssa, %.0249282
  %95 = select i1 %94, float %.0255.lcssa, float %.0249282
  %96 = fdiv float %93, %95
  store float %96, ptr %23, align 4, !tbaa !10
  br label %.thread284

97:                                               ; preds = %89
  store float 1.000000e+00, ptr %23, align 4, !tbaa !10
  br label %.thread284

.thread284:                                       ; preds = %63, %97, %91, %65
  %.pr = load i32, ptr %19, align 4, !tbaa !5
  %98 = icmp eq i32 %.pr, 0
  br i1 %98, label %99, label %.thread288

99:                                               ; preds = %.thread284
  %100 = load i32, ptr %11, align 4, !tbaa !5
  %101 = load i32, ptr %2, align 4, !tbaa !5
  %spec.select275 = tail call i32 @llvm.smax.i32(i32 %101, i32 1)
  %102 = icmp slt i32 %100, %spec.select275
  br i1 %102, label %.thread288.sink.split, label %103

103:                                              ; preds = %99
  %104 = load i32, ptr %13, align 4, !tbaa !5
  %105 = icmp slt i32 %104, %spec.select275
  br i1 %105, label %.thread288.sink.split, label %109

.thread288.sink.split:                            ; preds = %103, %99, %._crit_edge, %63, %56, %53, %50, %47, %45, %38
  %.sink = phi i32 [ -1, %38 ], [ -2, %45 ], [ -3, %47 ], [ -4, %50 ], [ -6, %53 ], [ -8, %56 ], [ -9, %63 ], [ -10, %._crit_edge ], [ -12, %99 ], [ -14, %103 ]
  store i32 %.sink, ptr %19, align 4, !tbaa !5
  br label %.thread288

.thread288:                                       ; preds = %.thread288.sink.split, %.thread284
  %106 = phi i32 [ %.pr, %.thread284 ], [ %.sink, %.thread288.sink.split ]
  %107 = sub nsw i32 0, %106
  store i32 %107, ptr %21, align 4, !tbaa !5
  %108 = call i32 @xerbla_(ptr noundef nonnull @.str.7, ptr noundef nonnull %21, i32 noundef 6) #4
  br label %232

109:                                              ; preds = %103
  br i1 %37, label %110, label %115

110:                                              ; preds = %109
  call void @cpoequ_(ptr noundef nonnull %2, ptr noundef %4, ptr noundef nonnull %5, ptr noundef %9, ptr noundef nonnull %23, ptr noundef nonnull %22, ptr noundef nonnull %25) #4
  %111 = load i32, ptr %25, align 4, !tbaa !5
  %112 = icmp eq i32 %111, 0
  br i1 %112, label %113, label %115

113:                                              ; preds = %110
  call void @claqhe_(ptr noundef %1, ptr noundef nonnull %2, ptr noundef %4, ptr noundef nonnull %5, ptr noundef %9, ptr noundef nonnull %23, ptr noundef nonnull %22, ptr noundef %8) #4
  %114 = call i32 @lsame_(ptr noundef %8, ptr noundef nonnull @.str.2) #4
  br label %115

115:                                              ; preds = %110, %113, %109
  %.1 = phi i32 [ %114, %113 ], [ %.0250281, %110 ], [ %.0250281, %109 ]
  %.not267 = icmp eq i32 %.1, 0
  br i1 %.not267, label %.loopexit291, label %116

116:                                              ; preds = %115
  %117 = load i32, ptr %3, align 4, !tbaa !5
  %.not268302 = icmp slt i32 %117, 1
  br i1 %.not268302, label %.loopexit291, label %.lr.ph305

.lr.ph305:                                        ; preds = %116
  %118 = load i32, ptr %2, align 4, !tbaa !5
  %.not273297 = icmp slt i32 %118, 1
  br i1 %.not273297, label %.loopexit291, label %.lr.ph300.preheader

.lr.ph300.preheader:                              ; preds = %.lr.ph305
  %119 = add nuw i32 %118, 1
  %120 = sext i32 %27 to i64
  %121 = add nuw i32 %117, 1
  %wide.trip.count332 = zext i32 %121 to i64
  %wide.trip.count327 = zext i32 %119 to i64
  %122 = shl nsw i64 %120, 3
  %123 = shl nsw i64 %28, 3
  %124 = getelementptr i8, ptr %10, i64 %122
  %125 = getelementptr i8, ptr %124, i64 %123
  %scevgep = getelementptr i8, ptr %125, i64 8
  %126 = shl nuw nsw i64 %wide.trip.count332, 3
  %127 = add nsw i64 %126, -8
  %128 = mul i64 %127, %120
  %129 = shl nuw nsw i64 %wide.trip.count327, 3
  %130 = getelementptr i8, ptr %10, i64 %128
  %131 = getelementptr i8, ptr %130, i64 %123
  %scevgep354 = getelementptr i8, ptr %131, i64 %129
  %132 = shl nuw nsw i64 %wide.trip.count327, 2
  %133 = getelementptr i8, ptr %9, i64 %132
  %scevgep355 = getelementptr i8, ptr %133, i64 -4
  %134 = zext nneg i32 %118 to i64
  %135 = zext nneg i32 %118 to i64
  %min.iters.check = icmp eq i32 %118, 1
  %bound0 = icmp ult ptr %scevgep, %scevgep355
  %bound1 = icmp ugt ptr %scevgep354, %9
  %found.conflict = and i1 %bound0, %bound1
  %stride.check = icmp slt i32 %27, 0
  %136 = or i1 %found.conflict, %stride.check
  %n.vec = and i64 %134, 2147483646
  %ind.end = or i64 %134, 1
  %cmp.n = icmp eq i64 %n.vec, %134
  %137 = and i32 %118, 1
  %lcmp.mod401.not = icmp eq i32 %137, 0
  br label %.lr.ph300

.lr.ph300:                                        ; preds = %.lr.ph300.preheader, %._crit_edge301
  %indvars.iv329 = phi i64 [ 1, %.lr.ph300.preheader ], [ %indvars.iv.next330, %._crit_edge301 ]
  %138 = mul nsw i64 %indvars.iv329, %120
  %invariant.gep = getelementptr %struct.complex, ptr %29, i64 %138
  %brmerge = select i1 %min.iters.check, i1 true, i1 %136
  br i1 %brmerge, label %scalar.ph.preheader, label %vector.body

vector.body:                                      ; preds = %.lr.ph300, %vector.body
  %index = phi i64 [ %index.next, %vector.body ], [ 0, %.lr.ph300 ]
  %offset.idx = or disjoint i64 %index, 1
  %139 = getelementptr float, ptr %9, i64 %index
  %wide.load = load <2 x float>, ptr %139, align 4, !tbaa !10, !alias.scope !14
  %140 = getelementptr %struct.complex, ptr %invariant.gep, i64 %offset.idx
  %141 = load <4 x float>, ptr %140, align 4, !tbaa !10
  %142 = shufflevector <2 x float> %wide.load, <2 x float> poison, <4 x i32> <i32 0, i32 0, i32 1, i32 1>
  %interleaved.vec = fmul <4 x float> %142, %141
  store <4 x float> %interleaved.vec, ptr %140, align 4, !tbaa !10
  %index.next = add nuw i64 %index, 2
  %143 = icmp eq i64 %index.next, %n.vec
  br i1 %143, label %middle.block, label %vector.body, !llvm.loop !17

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

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

scalar.ph.prol:                                   ; preds = %scalar.ph.preheader
  %144 = getelementptr inbounds float, ptr %26, i64 %indvars.iv324.ph
  %145 = load float, ptr %144, align 4, !tbaa !10
  %gep.prol = getelementptr %struct.complex, ptr %invariant.gep, i64 %indvars.iv324.ph
  %146 = load <2 x float>, ptr %gep.prol, align 4, !tbaa !10
  %147 = insertelement <2 x float> poison, float %145, i64 0
  %148 = shufflevector <2 x float> %147, <2 x float> poison, <2 x i32> zeroinitializer
  %149 = fmul <2 x float> %148, %146
  store <2 x float> %149, ptr %gep.prol, align 4, !tbaa !10
  %indvars.iv.next325.prol = add nuw nsw i64 %indvars.iv324.ph, 1
  br label %scalar.ph.prol.loopexit

scalar.ph.prol.loopexit:                          ; preds = %scalar.ph.prol, %scalar.ph.preheader
  %indvars.iv324.unr = phi i64 [ %indvars.iv324.ph, %scalar.ph.preheader ], [ %indvars.iv.next325.prol, %scalar.ph.prol ]
  %150 = icmp eq i64 %indvars.iv324.ph, %135
  br i1 %150, label %._crit_edge301, label %scalar.ph.preheader.new

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

scalar.ph:                                        ; preds = %scalar.ph, %scalar.ph.preheader.new
  %indvars.iv324 = phi i64 [ %indvars.iv324.unr, %scalar.ph.preheader.new ], [ %indvars.iv.next325.1, %scalar.ph ]
  %151 = getelementptr inbounds float, ptr %26, i64 %indvars.iv324
  %152 = load float, ptr %151, align 4, !tbaa !10
  %gep = getelementptr %struct.complex, ptr %invariant.gep, i64 %indvars.iv324
  %153 = load <2 x float>, ptr %gep, align 4, !tbaa !10
  %154 = insertelement <2 x float> poison, float %152, i64 0
  %155 = shufflevector <2 x float> %154, <2 x float> poison, <2 x i32> zeroinitializer
  %156 = fmul <2 x float> %155, %153
  store <2 x float> %156, ptr %gep, align 4, !tbaa !10
  %157 = getelementptr float, ptr %9, i64 %indvars.iv324
  %158 = load float, ptr %157, align 4, !tbaa !10
  %gep407 = getelementptr %struct.complex, ptr %invariant.gep406, i64 %indvars.iv324
  %159 = load <2 x float>, ptr %gep407, align 4, !tbaa !10
  %160 = insertelement <2 x float> poison, float %158, i64 0
  %161 = shufflevector <2 x float> %160, <2 x float> poison, <2 x i32> zeroinitializer
  %162 = fmul <2 x float> %161, %159
  store <2 x float> %162, ptr %gep407, align 4, !tbaa !10
  %indvars.iv.next325.1 = add nuw nsw i64 %indvars.iv324, 2
  %exitcond328.not.1 = icmp eq i64 %indvars.iv.next325.1, %wide.trip.count327
  br i1 %exitcond328.not.1, label %._crit_edge301, label %scalar.ph, !llvm.loop !20

._crit_edge301:                                   ; preds = %scalar.ph.prol.loopexit, %scalar.ph, %middle.block
  %indvars.iv.next330 = add nuw nsw i64 %indvars.iv329, 1
  %exitcond333.not = icmp eq i64 %indvars.iv.next330, %wide.trip.count332
  br i1 %exitcond333.not, label %.loopexit291, label %.lr.ph300, !llvm.loop !21

.loopexit291:                                     ; preds = %._crit_edge301, %.lr.ph305, %116, %115
  br i1 %or.cond, label %163, label %168

163:                                              ; preds = %.loopexit291
  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
  %164 = call i32 @cpotrf_(ptr noundef %1, ptr noundef nonnull %2, ptr noundef %6, ptr noundef nonnull %7, ptr noundef nonnull %19) #4
  %165 = load i32, ptr %19, align 4, !tbaa !5
  %166 = icmp sgt i32 %165, 0
  br i1 %166, label %167, label %168

167:                                              ; preds = %163
  store float 0.000000e+00, ptr %14, align 4, !tbaa !10
  br label %232

168:                                              ; preds = %163, %.loopexit291
  %169 = call float @clanhe_(ptr noundef nonnull @.str.8, ptr noundef %1, ptr noundef nonnull %2, ptr noundef %4, ptr noundef nonnull %5, ptr noundef %18) #4
  store float %169, ptr %24, align 4, !tbaa !10
  call void @cpocon_(ptr noundef %1, ptr noundef nonnull %2, ptr noundef %6, ptr noundef nonnull %7, ptr noundef nonnull %24, ptr noundef %14, ptr noundef %17, ptr noundef %18, ptr noundef nonnull %19) #4
  call void @clacpy_(ptr noundef nonnull @.str.9, 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 %19) #4
  call void @cporfs_(ptr noundef %1, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef %4, ptr noundef nonnull %5, ptr noundef %6, ptr noundef nonnull %7, ptr noundef %10, ptr noundef nonnull %11, ptr noundef %12, ptr noundef nonnull %13, ptr noundef %15, ptr noundef %16, ptr noundef %17, ptr noundef %18, ptr noundef nonnull %19) #4
  br i1 %.not267, label %.loopexit, label %170

170:                                              ; preds = %168
  %171 = load i32, ptr %3, align 4, !tbaa !5
  %.not270311 = icmp slt i32 %171, 1
  br i1 %.not270311, label %.loopexit, label %.lr.ph314

.lr.ph314:                                        ; preds = %170
  %172 = load i32, ptr %2, align 4, !tbaa !5
  %.not272306 = icmp slt i32 %172, 1
  br i1 %.not272306, label %.lr.ph319, label %.lr.ph309.preheader

.lr.ph309.preheader:                              ; preds = %.lr.ph314
  %173 = add nuw i32 %172, 1
  %174 = sext i32 %30 to i64
  %175 = add nuw i32 %171, 1
  %wide.trip.count342 = zext i32 %175 to i64
  %wide.trip.count337 = zext i32 %173 to i64
  %176 = shl nsw i64 %174, 3
  %177 = shl nsw i64 %31, 3
  %178 = getelementptr i8, ptr %12, i64 %176
  %179 = getelementptr i8, ptr %178, i64 %177
  %scevgep358 = getelementptr i8, ptr %179, i64 8
  %180 = shl nuw nsw i64 %wide.trip.count342, 3
  %181 = add nsw i64 %180, -8
  %182 = mul i64 %181, %174
  %183 = shl nuw nsw i64 %wide.trip.count337, 3
  %184 = getelementptr i8, ptr %12, i64 %182
  %185 = getelementptr i8, ptr %184, i64 %177
  %scevgep359 = getelementptr i8, ptr %185, i64 %183
  %186 = shl nuw nsw i64 %wide.trip.count337, 2
  %187 = getelementptr i8, ptr %9, i64 %186
  %scevgep360 = getelementptr i8, ptr %187, i64 -4
  %188 = zext nneg i32 %172 to i64
  %189 = zext nneg i32 %172 to i64
  %min.iters.check367 = icmp eq i32 %172, 1
  %bound0361 = icmp ult ptr %scevgep358, %scevgep360
  %bound1362 = icmp ugt ptr %scevgep359, %9
  %found.conflict363 = and i1 %bound0361, %bound1362
  %stride.check364 = icmp slt i32 %30, 0
  %190 = or i1 %found.conflict363, %stride.check364
  %n.vec370 = and i64 %188, 2147483646
  %ind.end371 = or i64 %188, 1
  %cmp.n382 = icmp eq i64 %n.vec370, %188
  %191 = and i32 %172, 1
  %lcmp.mod403.not = icmp eq i32 %191, 0
  br label %.lr.ph309

.lr.ph309:                                        ; preds = %.lr.ph309.preheader, %._crit_edge310
  %indvars.iv339 = phi i64 [ 1, %.lr.ph309.preheader ], [ %indvars.iv.next340, %._crit_edge310 ]
  %192 = mul nsw i64 %indvars.iv339, %174
  %invariant.gep351 = getelementptr %struct.complex, ptr %32, i64 %192
  %brmerge410 = select i1 %min.iters.check367, i1 true, i1 %190
  br i1 %brmerge410, label %scalar.ph366.preheader, label %vector.body373

vector.body373:                                   ; preds = %.lr.ph309, %vector.body373
  %index374 = phi i64 [ %index.next381, %vector.body373 ], [ 0, %.lr.ph309 ]
  %offset.idx375 = or disjoint i64 %index374, 1
  %193 = getelementptr float, ptr %9, i64 %index374
  %wide.load376 = load <2 x float>, ptr %193, align 4, !tbaa !10, !alias.scope !22
  %194 = getelementptr %struct.complex, ptr %invariant.gep351, i64 %offset.idx375
  %195 = load <4 x float>, ptr %194, align 4, !tbaa !10
  %196 = shufflevector <2 x float> %wide.load376, <2 x float> poison, <4 x i32> <i32 0, i32 0, i32 1, i32 1>
  %interleaved.vec380 = fmul <4 x float> %196, %195
  store <4 x float> %interleaved.vec380, ptr %194, align 4, !tbaa !10
  %index.next381 = add nuw i64 %index374, 2
  %197 = icmp eq i64 %index.next381, %n.vec370
  br i1 %197, label %middle.block365, label %vector.body373, !llvm.loop !25

middle.block365:                                  ; preds = %vector.body373
  br i1 %cmp.n382, label %._crit_edge310, label %scalar.ph366.preheader

scalar.ph366.preheader:                           ; preds = %.lr.ph309, %middle.block365
  %indvars.iv334.ph = phi i64 [ 1, %.lr.ph309 ], [ %ind.end371, %middle.block365 ]
  br i1 %lcmp.mod403.not, label %scalar.ph366.prol.loopexit, label %scalar.ph366.prol

scalar.ph366.prol:                                ; preds = %scalar.ph366.preheader
  %198 = getelementptr inbounds float, ptr %26, i64 %indvars.iv334.ph
  %199 = load float, ptr %198, align 4, !tbaa !10
  %gep352.prol = getelementptr %struct.complex, ptr %invariant.gep351, i64 %indvars.iv334.ph
  %200 = load <2 x float>, ptr %gep352.prol, align 4, !tbaa !10
  %201 = insertelement <2 x float> poison, float %199, i64 0
  %202 = shufflevector <2 x float> %201, <2 x float> poison, <2 x i32> zeroinitializer
  %203 = fmul <2 x float> %202, %200
  store <2 x float> %203, ptr %gep352.prol, align 4, !tbaa !10
  %indvars.iv.next335.prol = add nuw nsw i64 %indvars.iv334.ph, 1
  br label %scalar.ph366.prol.loopexit

scalar.ph366.prol.loopexit:                       ; preds = %scalar.ph366.prol, %scalar.ph366.preheader
  %indvars.iv334.unr = phi i64 [ %indvars.iv334.ph, %scalar.ph366.preheader ], [ %indvars.iv.next335.prol, %scalar.ph366.prol ]
  %204 = icmp eq i64 %indvars.iv334.ph, %189
  br i1 %204, label %._crit_edge310, label %scalar.ph366.preheader.new

scalar.ph366.preheader.new:                       ; preds = %scalar.ph366.prol.loopexit
  %invariant.gep408 = getelementptr i8, ptr %invariant.gep351, i64 8
  br label %scalar.ph366

scalar.ph366:                                     ; preds = %scalar.ph366, %scalar.ph366.preheader.new
  %indvars.iv334 = phi i64 [ %indvars.iv334.unr, %scalar.ph366.preheader.new ], [ %indvars.iv.next335.1, %scalar.ph366 ]
  %205 = getelementptr inbounds float, ptr %26, i64 %indvars.iv334
  %206 = load float, ptr %205, align 4, !tbaa !10
  %gep352 = getelementptr %struct.complex, ptr %invariant.gep351, i64 %indvars.iv334
  %207 = load <2 x float>, ptr %gep352, align 4, !tbaa !10
  %208 = insertelement <2 x float> poison, float %206, i64 0
  %209 = shufflevector <2 x float> %208, <2 x float> poison, <2 x i32> zeroinitializer
  %210 = fmul <2 x float> %209, %207
  store <2 x float> %210, ptr %gep352, align 4, !tbaa !10
  %211 = getelementptr float, ptr %9, i64 %indvars.iv334
  %212 = load float, ptr %211, align 4, !tbaa !10
  %gep409 = getelementptr %struct.complex, ptr %invariant.gep408, i64 %indvars.iv334
  %213 = load <2 x float>, ptr %gep409, align 4, !tbaa !10
  %214 = insertelement <2 x float> poison, float %212, i64 0
  %215 = shufflevector <2 x float> %214, <2 x float> poison, <2 x i32> zeroinitializer
  %216 = fmul <2 x float> %215, %213
  store <2 x float> %216, ptr %gep409, align 4, !tbaa !10
  %indvars.iv.next335.1 = add nuw nsw i64 %indvars.iv334, 2
  %exitcond338.not.1 = icmp eq i64 %indvars.iv.next335.1, %wide.trip.count337
  br i1 %exitcond338.not.1, label %._crit_edge310, label %scalar.ph366, !llvm.loop !26

._crit_edge310:                                   ; preds = %scalar.ph366.prol.loopexit, %scalar.ph366, %middle.block365
  %indvars.iv.next340 = add nuw nsw i64 %indvars.iv339, 1
  %exitcond343.not = icmp eq i64 %indvars.iv.next340, %wide.trip.count342
  br i1 %exitcond343.not, label %._crit_edge315, label %.lr.ph309, !llvm.loop !27

._crit_edge315:                                   ; preds = %._crit_edge310
  br i1 %.not270311, label %.loopexit, label %.lr.ph319

.lr.ph319:                                        ; preds = %.lr.ph314, %._crit_edge315
  %217 = load float, ptr %23, align 4, !tbaa !10
  %218 = add nuw i32 %171, 1
  %wide.trip.count347 = zext i32 %218 to i64
  %219 = zext nneg i32 %171 to i64
  %min.iters.check385 = icmp ult i32 %171, 4
  br i1 %min.iters.check385, label %scalar.ph384.preheader, label %vector.ph386

vector.ph386:                                     ; preds = %.lr.ph319
  %n.vec388 = and i64 %219, 2147483644
  %ind.end389 = or disjoint i64 %n.vec388, 1
  %broadcast.splatinsert = insertelement <4 x float> poison, float %217, i64 0
  %broadcast.splat = shufflevector <4 x float> %broadcast.splatinsert, <4 x float> poison, <4 x i32> zeroinitializer
  br label %vector.body391

vector.body391:                                   ; preds = %vector.body391, %vector.ph386
  %index392 = phi i64 [ 0, %vector.ph386 ], [ %index.next395, %vector.body391 ]
  %220 = getelementptr float, ptr %15, i64 %index392
  %wide.load394 = load <4 x float>, ptr %220, align 4, !tbaa !10
  %221 = fdiv <4 x float> %wide.load394, %broadcast.splat
  store <4 x float> %221, ptr %220, align 4, !tbaa !10
  %index.next395 = add nuw i64 %index392, 4
  %222 = icmp eq i64 %index.next395, %n.vec388
  br i1 %222, label %middle.block383, label %vector.body391, !llvm.loop !28

middle.block383:                                  ; preds = %vector.body391
  %cmp.n396 = icmp eq i64 %n.vec388, %219
  br i1 %cmp.n396, label %.loopexit, label %scalar.ph384.preheader

scalar.ph384.preheader:                           ; preds = %middle.block383, %.lr.ph319
  %indvars.iv344.ph = phi i64 [ 1, %.lr.ph319 ], [ %ind.end389, %middle.block383 ]
  br label %scalar.ph384

scalar.ph384:                                     ; preds = %scalar.ph384.preheader, %scalar.ph384
  %indvars.iv344 = phi i64 [ %indvars.iv.next345, %scalar.ph384 ], [ %indvars.iv344.ph, %scalar.ph384.preheader ]
  %223 = getelementptr inbounds float, ptr %33, i64 %indvars.iv344
  %224 = load float, ptr %223, align 4, !tbaa !10
  %225 = fdiv float %224, %217
  store float %225, ptr %223, align 4, !tbaa !10
  %indvars.iv.next345 = add nuw nsw i64 %indvars.iv344, 1
  %exitcond348.not = icmp eq i64 %indvars.iv.next345, %wide.trip.count347
  br i1 %exitcond348.not, label %.loopexit, label %scalar.ph384, !llvm.loop !29

.loopexit:                                        ; preds = %scalar.ph384, %middle.block383, %170, %._crit_edge315, %168
  %226 = load float, ptr %14, align 4, !tbaa !10
  %227 = call float @slamch_(ptr noundef nonnull @.str.10) #4
  %228 = fcmp olt float %226, %227
  br i1 %228, label %229, label %232

229:                                              ; preds = %.loopexit
  %230 = load i32, ptr %2, align 4, !tbaa !5
  %231 = add nsw i32 %230, 1
  store i32 %231, ptr %19, align 4, !tbaa !5
  br label %232

232:                                              ; preds = %.loopexit, %229, %167, %.thread288
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %25) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %24) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %23) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %22) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %21) #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 @cpoequ_(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 @clacpy_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

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

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

declare void @cpocon_(ptr noundef, ptr noundef, 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 @cporfs_(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"}
!14 = !{!15}
!15 = distinct !{!15, !16}
!16 = distinct !{!16, !"LVerDomain"}
!17 = distinct !{!17, !13, !18, !19}
!18 = !{!"llvm.loop.isvectorized", i32 1}
!19 = !{!"llvm.loop.unroll.runtime.disable"}
!20 = distinct !{!20, !13, !18}
!21 = distinct !{!21, !13}
!22 = !{!23}
!23 = distinct !{!23, !24}
!24 = distinct !{!24, !"LVerDomain"}
!25 = distinct !{!25, !13, !18, !19}
!26 = distinct !{!26, !13, !18}
!27 = distinct !{!27, !13}
!28 = distinct !{!28, !13, !18, !19}
!29 = distinct !{!29, !13, !19, !18}


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