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

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

@slacon_.iter = external hidden global i32, align 4
@slacon_.temp = external hidden global float, align 4
@slacon_.jump = external hidden global i32, align 4
@slacon_.i__ = external hidden global i32, align 4
@slacon_.j = external hidden global i32, align 4
@slacon_.jlast = external hidden global i32, align 4
@slacon_.altsgn = external hidden global float, align 4
@slacon_.estold = external hidden global float, align 4
@c__1 = external hidden global i32, align 4
@c_b11 = external hidden global float, align 4

; Function Attrs: nounwind uwtable
define dso_local void @slacon_(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %5) #0 {
  %7 = alloca ptr, align 8
  %8 = alloca ptr, align 8
  %9 = alloca ptr, align 8
  %10 = alloca ptr, align 8
  %11 = alloca ptr, align 8
  %12 = alloca ptr, align 8
  %13 = alloca i32, align 4
  %14 = alloca float, align 4
  %15 = alloca i32, align 4
  store ptr %0, ptr %7, align 8, !tbaa !5
  store ptr %1, ptr %8, align 8, !tbaa !5
  store ptr %2, ptr %9, align 8, !tbaa !5
  store ptr %3, ptr %10, align 8, !tbaa !5
  store ptr %4, ptr %11, align 8, !tbaa !5
  store ptr %5, ptr %12, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #4
  %16 = load ptr, ptr %10, align 8, !tbaa !5
  %17 = getelementptr inbounds i32, ptr %16, i32 -1
  store ptr %17, ptr %10, align 8, !tbaa !5
  %18 = load ptr, ptr %9, align 8, !tbaa !5
  %19 = getelementptr inbounds float, ptr %18, i32 -1
  store ptr %19, ptr %9, align 8, !tbaa !5
  %20 = load ptr, ptr %8, align 8, !tbaa !5
  %21 = getelementptr inbounds float, ptr %20, i32 -1
  store ptr %21, ptr %8, align 8, !tbaa !5
  %22 = load ptr, ptr %12, align 8, !tbaa !5
  %23 = load i32, ptr %22, align 4, !tbaa !9
  %24 = icmp eq i32 %23, 0
  br i1 %24, label %25, label %46

25:                                               ; preds = %6
  %26 = load ptr, ptr %7, align 8, !tbaa !5
  %27 = load i32, ptr %26, align 4, !tbaa !9
  store i32 %27, ptr %13, align 4, !tbaa !9
  store i32 1, ptr @slacon_.i__, align 4, !tbaa !9
  br label %28

28:                                               ; preds = %41, %25
  %29 = load i32, ptr @slacon_.i__, align 4, !tbaa !9
  %30 = load i32, ptr %13, align 4, !tbaa !9
  %31 = icmp sle i32 %29, %30
  br i1 %31, label %32, label %44

32:                                               ; preds = %28
  %33 = load ptr, ptr %7, align 8, !tbaa !5
  %34 = load i32, ptr %33, align 4, !tbaa !9
  %35 = sitofp i32 %34 to float
  %36 = fdiv float 1.000000e+00, %35
  %37 = load ptr, ptr %9, align 8, !tbaa !5
  %38 = load i32, ptr @slacon_.i__, align 4, !tbaa !9
  %39 = sext i32 %38 to i64
  %40 = getelementptr inbounds float, ptr %37, i64 %39
  store float %36, ptr %40, align 4, !tbaa !11
  br label %41

41:                                               ; preds = %32
  %42 = load i32, ptr @slacon_.i__, align 4, !tbaa !9
  %43 = add nsw i32 %42, 1
  store i32 %43, ptr @slacon_.i__, align 4, !tbaa !9
  br label %28, !llvm.loop !13

44:                                               ; preds = %28
  %45 = load ptr, ptr %12, align 8, !tbaa !5
  store i32 1, ptr %45, align 4, !tbaa !9
  store i32 1, ptr @slacon_.jump, align 4, !tbaa !9
  store i32 1, ptr %15, align 4
  br label %439

46:                                               ; preds = %6
  %47 = load i32, ptr @slacon_.jump, align 4, !tbaa !9
  switch i32 %47, label %53 [
    i32 1, label %48
    i32 2, label %49
    i32 3, label %50
    i32 4, label %51
    i32 5, label %52
  ]

48:                                               ; preds = %46
  br label %54

49:                                               ; preds = %46
  br label %163

50:                                               ; preds = %46
  br label %189

51:                                               ; preds = %46
  br label %350

52:                                               ; preds = %46
  br label %413

53:                                               ; preds = %46
  br label %54

54:                                               ; preds = %53, %48
  %55 = load ptr, ptr %7, align 8, !tbaa !5
  %56 = load i32, ptr %55, align 4, !tbaa !9
  %57 = icmp eq i32 %56, 1
  br i1 %57, label %58, label %80

58:                                               ; preds = %54
  %59 = load ptr, ptr %9, align 8, !tbaa !5
  %60 = getelementptr inbounds float, ptr %59, i64 1
  %61 = load float, ptr %60, align 4, !tbaa !11
  %62 = load ptr, ptr %8, align 8, !tbaa !5
  %63 = getelementptr inbounds float, ptr %62, i64 1
  store float %61, ptr %63, align 4, !tbaa !11
  %64 = load ptr, ptr %8, align 8, !tbaa !5
  %65 = getelementptr inbounds float, ptr %64, i64 1
  %66 = load float, ptr %65, align 4, !tbaa !11
  %67 = fcmp oge float %66, 0.000000e+00
  br i1 %67, label %68, label %72

68:                                               ; preds = %58
  %69 = load ptr, ptr %8, align 8, !tbaa !5
  %70 = getelementptr inbounds float, ptr %69, i64 1
  %71 = load float, ptr %70, align 4, !tbaa !11
  br label %77

72:                                               ; preds = %58
  %73 = load ptr, ptr %8, align 8, !tbaa !5
  %74 = getelementptr inbounds float, ptr %73, i64 1
  %75 = load float, ptr %74, align 4, !tbaa !11
  %76 = fneg float %75
  br label %77

77:                                               ; preds = %72, %68
  %78 = phi float [ %71, %68 ], [ %76, %72 ]
  %79 = load ptr, ptr %11, align 8, !tbaa !5
  store float %78, ptr %79, align 4, !tbaa !11
  br label %437

80:                                               ; preds = %54
  %81 = load ptr, ptr %7, align 8, !tbaa !5
  %82 = load ptr, ptr %9, align 8, !tbaa !5
  %83 = getelementptr inbounds float, ptr %82, i64 1
  %84 = call float @sasum_(ptr noundef %81, ptr noundef %83, ptr noundef @c__1)
  %85 = load ptr, ptr %11, align 8, !tbaa !5
  store float %84, ptr %85, align 4, !tbaa !11
  %86 = load ptr, ptr %7, align 8, !tbaa !5
  %87 = load i32, ptr %86, align 4, !tbaa !9
  store i32 %87, ptr %13, align 4, !tbaa !9
  store i32 1, ptr @slacon_.i__, align 4, !tbaa !9
  br label %88

88:                                               ; preds = %158, %80
  %89 = load i32, ptr @slacon_.i__, align 4, !tbaa !9
  %90 = load i32, ptr %13, align 4, !tbaa !9
  %91 = icmp sle i32 %89, %90
  br i1 %91, label %92, label %161

92:                                               ; preds = %88
  %93 = load ptr, ptr %9, align 8, !tbaa !5
  %94 = load i32, ptr @slacon_.i__, align 4, !tbaa !9
  %95 = sext i32 %94 to i64
  %96 = getelementptr inbounds float, ptr %93, i64 %95
  %97 = load float, ptr %96, align 4, !tbaa !11
  %98 = fcmp oge float %97, 0.000000e+00
  br i1 %98, label %99, label %109

99:                                               ; preds = %92
  %100 = load float, ptr @c_b11, align 4, !tbaa !11
  %101 = fcmp oge float %100, 0.000000e+00
  br i1 %101, label %102, label %104

102:                                              ; preds = %99
  %103 = load float, ptr @c_b11, align 4, !tbaa !11
  br label %107

104:                                              ; preds = %99
  %105 = load float, ptr @c_b11, align 4, !tbaa !11
  %106 = fneg float %105
  br label %107

107:                                              ; preds = %104, %102
  %108 = phi float [ %103, %102 ], [ %106, %104 ]
  br label %120

109:                                              ; preds = %92
  %110 = load float, ptr @c_b11, align 4, !tbaa !11
  %111 = fcmp oge float %110, 0.000000e+00
  br i1 %111, label %112, label %114

112:                                              ; preds = %109
  %113 = load float, ptr @c_b11, align 4, !tbaa !11
  br label %117

114:                                              ; preds = %109
  %115 = load float, ptr @c_b11, align 4, !tbaa !11
  %116 = fneg float %115
  br label %117

117:                                              ; preds = %114, %112
  %118 = phi float [ %113, %112 ], [ %116, %114 ]
  %119 = fneg float %118
  br label %120

120:                                              ; preds = %117, %107
  %121 = phi float [ %108, %107 ], [ %119, %117 ]
  %122 = load ptr, ptr %9, align 8, !tbaa !5
  %123 = load i32, ptr @slacon_.i__, align 4, !tbaa !9
  %124 = sext i32 %123 to i64
  %125 = getelementptr inbounds float, ptr %122, i64 %124
  store float %121, ptr %125, align 4, !tbaa !11
  %126 = load ptr, ptr %9, align 8, !tbaa !5
  %127 = load i32, ptr @slacon_.i__, align 4, !tbaa !9
  %128 = sext i32 %127 to i64
  %129 = getelementptr inbounds float, ptr %126, i64 %128
  %130 = load float, ptr %129, align 4, !tbaa !11
  %131 = fcmp oge float %130, 0.000000e+00
  br i1 %131, label %132, label %141

132:                                              ; preds = %120
  %133 = load ptr, ptr %9, align 8, !tbaa !5
  %134 = load i32, ptr @slacon_.i__, align 4, !tbaa !9
  %135 = sext i32 %134 to i64
  %136 = getelementptr inbounds float, ptr %133, i64 %135
  %137 = load float, ptr %136, align 4, !tbaa !11
  %138 = fpext float %137 to double
  %139 = fadd double %138, 5.000000e-01
  %140 = call double @llvm.floor.f64(double %139)
  br label %151

141:                                              ; preds = %120
  %142 = load ptr, ptr %9, align 8, !tbaa !5
  %143 = load i32, ptr @slacon_.i__, align 4, !tbaa !9
  %144 = sext i32 %143 to i64
  %145 = getelementptr inbounds float, ptr %142, i64 %144
  %146 = load float, ptr %145, align 4, !tbaa !11
  %147 = fpext float %146 to double
  %148 = fsub double 5.000000e-01, %147
  %149 = call double @llvm.floor.f64(double %148)
  %150 = fneg double %149
  br label %151

151:                                              ; preds = %141, %132
  %152 = phi double [ %140, %132 ], [ %150, %141 ]
  %153 = fptosi double %152 to i32
  %154 = load ptr, ptr %10, align 8, !tbaa !5
  %155 = load i32, ptr @slacon_.i__, align 4, !tbaa !9
  %156 = sext i32 %155 to i64
  %157 = getelementptr inbounds i32, ptr %154, i64 %156
  store i32 %153, ptr %157, align 4, !tbaa !9
  br label %158

158:                                              ; preds = %151
  %159 = load i32, ptr @slacon_.i__, align 4, !tbaa !9
  %160 = add nsw i32 %159, 1
  store i32 %160, ptr @slacon_.i__, align 4, !tbaa !9
  br label %88, !llvm.loop !15

161:                                              ; preds = %88
  %162 = load ptr, ptr %12, align 8, !tbaa !5
  store i32 2, ptr %162, align 4, !tbaa !9
  store i32 2, ptr @slacon_.jump, align 4, !tbaa !9
  store i32 1, ptr %15, align 4
  br label %439

163:                                              ; preds = %49
  %164 = load ptr, ptr %7, align 8, !tbaa !5
  %165 = load ptr, ptr %9, align 8, !tbaa !5
  %166 = getelementptr inbounds float, ptr %165, i64 1
  %167 = call i32 @isamax_(ptr noundef %164, ptr noundef %166, ptr noundef @c__1)
  store i32 %167, ptr @slacon_.j, align 4, !tbaa !9
  store i32 2, ptr @slacon_.iter, align 4, !tbaa !9
  br label %168

168:                                              ; preds = %379, %163
  %169 = load ptr, ptr %7, align 8, !tbaa !5
  %170 = load i32, ptr %169, align 4, !tbaa !9
  store i32 %170, ptr %13, align 4, !tbaa !9
  store i32 1, ptr @slacon_.i__, align 4, !tbaa !9
  br label %171

171:                                              ; preds = %180, %168
  %172 = load i32, ptr @slacon_.i__, align 4, !tbaa !9
  %173 = load i32, ptr %13, align 4, !tbaa !9
  %174 = icmp sle i32 %172, %173
  br i1 %174, label %175, label %183

175:                                              ; preds = %171
  %176 = load ptr, ptr %9, align 8, !tbaa !5
  %177 = load i32, ptr @slacon_.i__, align 4, !tbaa !9
  %178 = sext i32 %177 to i64
  %179 = getelementptr inbounds float, ptr %176, i64 %178
  store float 0.000000e+00, ptr %179, align 4, !tbaa !11
  br label %180

180:                                              ; preds = %175
  %181 = load i32, ptr @slacon_.i__, align 4, !tbaa !9
  %182 = add nsw i32 %181, 1
  store i32 %182, ptr @slacon_.i__, align 4, !tbaa !9
  br label %171, !llvm.loop !16

183:                                              ; preds = %171
  %184 = load ptr, ptr %9, align 8, !tbaa !5
  %185 = load i32, ptr @slacon_.j, align 4, !tbaa !9
  %186 = sext i32 %185 to i64
  %187 = getelementptr inbounds float, ptr %184, i64 %186
  store float 1.000000e+00, ptr %187, align 4, !tbaa !11
  %188 = load ptr, ptr %12, align 8, !tbaa !5
  store i32 1, ptr %188, align 4, !tbaa !9
  store i32 3, ptr @slacon_.jump, align 4, !tbaa !9
  store i32 1, ptr %15, align 4
  br label %439

189:                                              ; preds = %50
  %190 = load ptr, ptr %7, align 8, !tbaa !5
  %191 = load ptr, ptr %9, align 8, !tbaa !5
  %192 = getelementptr inbounds float, ptr %191, i64 1
  %193 = load ptr, ptr %8, align 8, !tbaa !5
  %194 = getelementptr inbounds float, ptr %193, i64 1
  call void @scopy_(ptr noundef %190, ptr noundef %192, ptr noundef @c__1, ptr noundef %194, ptr noundef @c__1)
  %195 = load ptr, ptr %11, align 8, !tbaa !5
  %196 = load float, ptr %195, align 4, !tbaa !11
  store float %196, ptr @slacon_.estold, align 4, !tbaa !11
  %197 = load ptr, ptr %7, align 8, !tbaa !5
  %198 = load ptr, ptr %8, align 8, !tbaa !5
  %199 = getelementptr inbounds float, ptr %198, i64 1
  %200 = call float @sasum_(ptr noundef %197, ptr noundef %199, ptr noundef @c__1)
  %201 = load ptr, ptr %11, align 8, !tbaa !5
  store float %200, ptr %201, align 4, !tbaa !11
  %202 = load ptr, ptr %7, align 8, !tbaa !5
  %203 = load i32, ptr %202, align 4, !tbaa !9
  store i32 %203, ptr %13, align 4, !tbaa !9
  store i32 1, ptr @slacon_.i__, align 4, !tbaa !9
  br label %204

204:                                              ; preds = %262, %189
  %205 = load i32, ptr @slacon_.i__, align 4, !tbaa !9
  %206 = load i32, ptr %13, align 4, !tbaa !9
  %207 = icmp sle i32 %205, %206
  br i1 %207, label %208, label %265

208:                                              ; preds = %204
  %209 = load ptr, ptr %9, align 8, !tbaa !5
  %210 = load i32, ptr @slacon_.i__, align 4, !tbaa !9
  %211 = sext i32 %210 to i64
  %212 = getelementptr inbounds float, ptr %209, i64 %211
  %213 = load float, ptr %212, align 4, !tbaa !11
  %214 = fcmp oge float %213, 0.000000e+00
  br i1 %214, label %215, label %225

215:                                              ; preds = %208
  %216 = load float, ptr @c_b11, align 4, !tbaa !11
  %217 = fcmp oge float %216, 0.000000e+00
  br i1 %217, label %218, label %220

218:                                              ; preds = %215
  %219 = load float, ptr @c_b11, align 4, !tbaa !11
  br label %223

220:                                              ; preds = %215
  %221 = load float, ptr @c_b11, align 4, !tbaa !11
  %222 = fneg float %221
  br label %223

223:                                              ; preds = %220, %218
  %224 = phi float [ %219, %218 ], [ %222, %220 ]
  br label %236

225:                                              ; preds = %208
  %226 = load float, ptr @c_b11, align 4, !tbaa !11
  %227 = fcmp oge float %226, 0.000000e+00
  br i1 %227, label %228, label %230

228:                                              ; preds = %225
  %229 = load float, ptr @c_b11, align 4, !tbaa !11
  br label %233

230:                                              ; preds = %225
  %231 = load float, ptr @c_b11, align 4, !tbaa !11
  %232 = fneg float %231
  br label %233

233:                                              ; preds = %230, %228
  %234 = phi float [ %229, %228 ], [ %232, %230 ]
  %235 = fneg float %234
  br label %236

236:                                              ; preds = %233, %223
  %237 = phi float [ %224, %223 ], [ %235, %233 ]
  store float %237, ptr %14, align 4, !tbaa !11
  %238 = load float, ptr %14, align 4, !tbaa !11
  %239 = fcmp oge float %238, 0.000000e+00
  br i1 %239, label %240, label %245

240:                                              ; preds = %236
  %241 = load float, ptr %14, align 4, !tbaa !11
  %242 = fpext float %241 to double
  %243 = fadd double %242, 5.000000e-01
  %244 = call double @llvm.floor.f64(double %243)
  br label %251

245:                                              ; preds = %236
  %246 = load float, ptr %14, align 4, !tbaa !11
  %247 = fpext float %246 to double
  %248 = fsub double 5.000000e-01, %247
  %249 = call double @llvm.floor.f64(double %248)
  %250 = fneg double %249
  br label %251

251:                                              ; preds = %245, %240
  %252 = phi double [ %244, %240 ], [ %250, %245 ]
  %253 = fptosi double %252 to i32
  %254 = load ptr, ptr %10, align 8, !tbaa !5
  %255 = load i32, ptr @slacon_.i__, align 4, !tbaa !9
  %256 = sext i32 %255 to i64
  %257 = getelementptr inbounds i32, ptr %254, i64 %256
  %258 = load i32, ptr %257, align 4, !tbaa !9
  %259 = icmp ne i32 %253, %258
  br i1 %259, label %260, label %261

260:                                              ; preds = %251
  br label %266

261:                                              ; preds = %251
  br label %262

262:                                              ; preds = %261
  %263 = load i32, ptr @slacon_.i__, align 4, !tbaa !9
  %264 = add nsw i32 %263, 1
  store i32 %264, ptr @slacon_.i__, align 4, !tbaa !9
  br label %204, !llvm.loop !17

265:                                              ; preds = %204
  br label %383

266:                                              ; preds = %260
  %267 = load ptr, ptr %11, align 8, !tbaa !5
  %268 = load float, ptr %267, align 4, !tbaa !11
  %269 = load float, ptr @slacon_.estold, align 4, !tbaa !11
  %270 = fcmp ole float %268, %269
  br i1 %270, label %271, label %272

271:                                              ; preds = %266
  br label %383

272:                                              ; preds = %266
  %273 = load ptr, ptr %7, align 8, !tbaa !5
  %274 = load i32, ptr %273, align 4, !tbaa !9
  store i32 %274, ptr %13, align 4, !tbaa !9
  store i32 1, ptr @slacon_.i__, align 4, !tbaa !9
  br label %275

275:                                              ; preds = %345, %272
  %276 = load i32, ptr @slacon_.i__, align 4, !tbaa !9
  %277 = load i32, ptr %13, align 4, !tbaa !9
  %278 = icmp sle i32 %276, %277
  br i1 %278, label %279, label %348

279:                                              ; preds = %275
  %280 = load ptr, ptr %9, align 8, !tbaa !5
  %281 = load i32, ptr @slacon_.i__, align 4, !tbaa !9
  %282 = sext i32 %281 to i64
  %283 = getelementptr inbounds float, ptr %280, i64 %282
  %284 = load float, ptr %283, align 4, !tbaa !11
  %285 = fcmp oge float %284, 0.000000e+00
  br i1 %285, label %286, label %296

286:                                              ; preds = %279
  %287 = load float, ptr @c_b11, align 4, !tbaa !11
  %288 = fcmp oge float %287, 0.000000e+00
  br i1 %288, label %289, label %291

289:                                              ; preds = %286
  %290 = load float, ptr @c_b11, align 4, !tbaa !11
  br label %294

291:                                              ; preds = %286
  %292 = load float, ptr @c_b11, align 4, !tbaa !11
  %293 = fneg float %292
  br label %294

294:                                              ; preds = %291, %289
  %295 = phi float [ %290, %289 ], [ %293, %291 ]
  br label %307

296:                                              ; preds = %279
  %297 = load float, ptr @c_b11, align 4, !tbaa !11
  %298 = fcmp oge float %297, 0.000000e+00
  br i1 %298, label %299, label %301

299:                                              ; preds = %296
  %300 = load float, ptr @c_b11, align 4, !tbaa !11
  br label %304

301:                                              ; preds = %296
  %302 = load float, ptr @c_b11, align 4, !tbaa !11
  %303 = fneg float %302
  br label %304

304:                                              ; preds = %301, %299
  %305 = phi float [ %300, %299 ], [ %303, %301 ]
  %306 = fneg float %305
  br label %307

307:                                              ; preds = %304, %294
  %308 = phi float [ %295, %294 ], [ %306, %304 ]
  %309 = load ptr, ptr %9, align 8, !tbaa !5
  %310 = load i32, ptr @slacon_.i__, align 4, !tbaa !9
  %311 = sext i32 %310 to i64
  %312 = getelementptr inbounds float, ptr %309, i64 %311
  store float %308, ptr %312, align 4, !tbaa !11
  %313 = load ptr, ptr %9, align 8, !tbaa !5
  %314 = load i32, ptr @slacon_.i__, align 4, !tbaa !9
  %315 = sext i32 %314 to i64
  %316 = getelementptr inbounds float, ptr %313, i64 %315
  %317 = load float, ptr %316, align 4, !tbaa !11
  %318 = fcmp oge float %317, 0.000000e+00
  br i1 %318, label %319, label %328

319:                                              ; preds = %307
  %320 = load ptr, ptr %9, align 8, !tbaa !5
  %321 = load i32, ptr @slacon_.i__, align 4, !tbaa !9
  %322 = sext i32 %321 to i64
  %323 = getelementptr inbounds float, ptr %320, i64 %322
  %324 = load float, ptr %323, align 4, !tbaa !11
  %325 = fpext float %324 to double
  %326 = fadd double %325, 5.000000e-01
  %327 = call double @llvm.floor.f64(double %326)
  br label %338

328:                                              ; preds = %307
  %329 = load ptr, ptr %9, align 8, !tbaa !5
  %330 = load i32, ptr @slacon_.i__, align 4, !tbaa !9
  %331 = sext i32 %330 to i64
  %332 = getelementptr inbounds float, ptr %329, i64 %331
  %333 = load float, ptr %332, align 4, !tbaa !11
  %334 = fpext float %333 to double
  %335 = fsub double 5.000000e-01, %334
  %336 = call double @llvm.floor.f64(double %335)
  %337 = fneg double %336
  br label %338

338:                                              ; preds = %328, %319
  %339 = phi double [ %327, %319 ], [ %337, %328 ]
  %340 = fptosi double %339 to i32
  %341 = load ptr, ptr %10, align 8, !tbaa !5
  %342 = load i32, ptr @slacon_.i__, align 4, !tbaa !9
  %343 = sext i32 %342 to i64
  %344 = getelementptr inbounds i32, ptr %341, i64 %343
  store i32 %340, ptr %344, align 4, !tbaa !9
  br label %345

345:                                              ; preds = %338
  %346 = load i32, ptr @slacon_.i__, align 4, !tbaa !9
  %347 = add nsw i32 %346, 1
  store i32 %347, ptr @slacon_.i__, align 4, !tbaa !9
  br label %275, !llvm.loop !18

348:                                              ; preds = %275
  %349 = load ptr, ptr %12, align 8, !tbaa !5
  store i32 2, ptr %349, align 4, !tbaa !9
  store i32 4, ptr @slacon_.jump, align 4, !tbaa !9
  store i32 1, ptr %15, align 4
  br label %439

350:                                              ; preds = %51
  %351 = load i32, ptr @slacon_.j, align 4, !tbaa !9
  store i32 %351, ptr @slacon_.jlast, align 4, !tbaa !9
  %352 = load ptr, ptr %7, align 8, !tbaa !5
  %353 = load ptr, ptr %9, align 8, !tbaa !5
  %354 = getelementptr inbounds float, ptr %353, i64 1
  %355 = call i32 @isamax_(ptr noundef %352, ptr noundef %354, ptr noundef @c__1)
  store i32 %355, ptr @slacon_.j, align 4, !tbaa !9
  %356 = load ptr, ptr %9, align 8, !tbaa !5
  %357 = load i32, ptr @slacon_.jlast, align 4, !tbaa !9
  %358 = sext i32 %357 to i64
  %359 = getelementptr inbounds float, ptr %356, i64 %358
  %360 = load float, ptr %359, align 4, !tbaa !11
  %361 = load ptr, ptr %9, align 8, !tbaa !5
  %362 = load i32, ptr @slacon_.j, align 4, !tbaa !9
  %363 = sext i32 %362 to i64
  %364 = getelementptr inbounds float, ptr %361, i64 %363
  %365 = load float, ptr %364, align 4, !tbaa !11
  store float %365, ptr %14, align 4, !tbaa !11
  %366 = load float, ptr %14, align 4, !tbaa !11
  %367 = fcmp oge float %366, 0.000000e+00
  br i1 %367, label %368, label %370

368:                                              ; preds = %350
  %369 = load float, ptr %14, align 4, !tbaa !11
  br label %373

370:                                              ; preds = %350
  %371 = load float, ptr %14, align 4, !tbaa !11
  %372 = fneg float %371
  br label %373

373:                                              ; preds = %370, %368
  %374 = phi float [ %369, %368 ], [ %372, %370 ]
  %375 = fcmp une float %360, %374
  br i1 %375, label %376, label %382

376:                                              ; preds = %373
  %377 = load i32, ptr @slacon_.iter, align 4, !tbaa !9
  %378 = icmp slt i32 %377, 5
  br i1 %378, label %379, label %382

379:                                              ; preds = %376
  %380 = load i32, ptr @slacon_.iter, align 4, !tbaa !9
  %381 = add nsw i32 %380, 1
  store i32 %381, ptr @slacon_.iter, align 4, !tbaa !9
  br label %168

382:                                              ; preds = %376, %373
  br label %383

383:                                              ; preds = %382, %271, %265
  store float 1.000000e+00, ptr @slacon_.altsgn, align 4, !tbaa !11
  %384 = load ptr, ptr %7, align 8, !tbaa !5
  %385 = load i32, ptr %384, align 4, !tbaa !9
  store i32 %385, ptr %13, align 4, !tbaa !9
  store i32 1, ptr @slacon_.i__, align 4, !tbaa !9
  br label %386

386:                                              ; preds = %408, %383
  %387 = load i32, ptr @slacon_.i__, align 4, !tbaa !9
  %388 = load i32, ptr %13, align 4, !tbaa !9
  %389 = icmp sle i32 %387, %388
  br i1 %389, label %390, label %411

390:                                              ; preds = %386
  %391 = load float, ptr @slacon_.altsgn, align 4, !tbaa !11
  %392 = load i32, ptr @slacon_.i__, align 4, !tbaa !9
  %393 = sub nsw i32 %392, 1
  %394 = sitofp i32 %393 to float
  %395 = load ptr, ptr %7, align 8, !tbaa !5
  %396 = load i32, ptr %395, align 4, !tbaa !9
  %397 = sub nsw i32 %396, 1
  %398 = sitofp i32 %397 to float
  %399 = fdiv float %394, %398
  %400 = fadd float %399, 1.000000e+00
  %401 = fmul float %391, %400
  %402 = load ptr, ptr %9, align 8, !tbaa !5
  %403 = load i32, ptr @slacon_.i__, align 4, !tbaa !9
  %404 = sext i32 %403 to i64
  %405 = getelementptr inbounds float, ptr %402, i64 %404
  store float %401, ptr %405, align 4, !tbaa !11
  %406 = load float, ptr @slacon_.altsgn, align 4, !tbaa !11
  %407 = fneg float %406
  store float %407, ptr @slacon_.altsgn, align 4, !tbaa !11
  br label %408

408:                                              ; preds = %390
  %409 = load i32, ptr @slacon_.i__, align 4, !tbaa !9
  %410 = add nsw i32 %409, 1
  store i32 %410, ptr @slacon_.i__, align 4, !tbaa !9
  br label %386, !llvm.loop !19

411:                                              ; preds = %386
  %412 = load ptr, ptr %12, align 8, !tbaa !5
  store i32 1, ptr %412, align 4, !tbaa !9
  store i32 5, ptr @slacon_.jump, align 4, !tbaa !9
  store i32 1, ptr %15, align 4
  br label %439

413:                                              ; preds = %52
  %414 = load ptr, ptr %7, align 8, !tbaa !5
  %415 = load ptr, ptr %9, align 8, !tbaa !5
  %416 = getelementptr inbounds float, ptr %415, i64 1
  %417 = call float @sasum_(ptr noundef %414, ptr noundef %416, ptr noundef @c__1)
  %418 = load ptr, ptr %7, align 8, !tbaa !5
  %419 = load i32, ptr %418, align 4, !tbaa !9
  %420 = mul nsw i32 %419, 3
  %421 = sitofp i32 %420 to float
  %422 = fdiv float %417, %421
  %423 = fmul float %422, 2.000000e+00
  store float %423, ptr @slacon_.temp, align 4, !tbaa !11
  %424 = load float, ptr @slacon_.temp, align 4, !tbaa !11
  %425 = load ptr, ptr %11, align 8, !tbaa !5
  %426 = load float, ptr %425, align 4, !tbaa !11
  %427 = fcmp ogt float %424, %426
  br i1 %427, label %428, label %436

428:                                              ; preds = %413
  %429 = load ptr, ptr %7, align 8, !tbaa !5
  %430 = load ptr, ptr %9, align 8, !tbaa !5
  %431 = getelementptr inbounds float, ptr %430, i64 1
  %432 = load ptr, ptr %8, align 8, !tbaa !5
  %433 = getelementptr inbounds float, ptr %432, i64 1
  call void @scopy_(ptr noundef %429, ptr noundef %431, ptr noundef @c__1, ptr noundef %433, ptr noundef @c__1)
  %434 = load float, ptr @slacon_.temp, align 4, !tbaa !11
  %435 = load ptr, ptr %11, align 8, !tbaa !5
  store float %434, ptr %435, align 4, !tbaa !11
  br label %436

436:                                              ; preds = %428, %413
  br label %437

437:                                              ; preds = %436, %77
  %438 = load ptr, ptr %12, align 8, !tbaa !5
  store i32 0, ptr %438, align 4, !tbaa !9
  store i32 1, ptr %15, align 4
  br label %439

439:                                              ; preds = %437, %411, %348, %183, %161, %44
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #4
  ret void
}

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

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

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare double @llvm.floor.f64(double) #3

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

declare void @scopy_(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 = { 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 = !{!"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 = distinct !{!13, !14}
!14 = !{!"llvm.loop.mustprogress"}
!15 = distinct !{!15, !14}
!16 = distinct !{!16, !14}
!17 = distinct !{!17, !14}
!18 = distinct !{!18, !14}
!19 = distinct !{!19, !14}


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

@slacon_.iter = external hidden local_unnamed_addr global i32, align 4
@slacon_.temp = external hidden local_unnamed_addr global float, align 4
@slacon_.jump = external hidden local_unnamed_addr global i32, align 4
@slacon_.i__ = external hidden local_unnamed_addr global i32, align 4
@slacon_.j = external hidden local_unnamed_addr global i32, align 4
@slacon_.jlast = external hidden local_unnamed_addr global i32, align 4
@slacon_.altsgn = external hidden local_unnamed_addr global float, align 4
@slacon_.estold = external hidden local_unnamed_addr global float, align 4
@c__1 = external hidden global i32, align 4
@c_b11 = external hidden local_unnamed_addr global float, align 4

; Function Attrs: nounwind uwtable
define dso_local void @slacon_(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr nocapture noundef %3, ptr nocapture noundef %4, ptr nocapture noundef %5) local_unnamed_addr #0 {
  %7 = getelementptr inbounds i8, ptr %3, i64 -4
  %8 = getelementptr inbounds i8, ptr %2, i64 -4
  %9 = load i32, ptr %5, align 4, !tbaa !5
  %10 = icmp eq i32 %9, 0
  br i1 %10, label %11, label %44

11:                                               ; preds = %6
  %12 = load i32, ptr %0, align 4, !tbaa !5
  store i32 1, ptr @slacon_.i__, align 4, !tbaa !5
  %.not106127 = icmp slt i32 %12, 1
  br i1 %.not106127, label %._crit_edge131, label %.lr.ph130.preheader

.lr.ph130.preheader:                              ; preds = %11
  %13 = add nuw i32 %12, 1
  %wide.trip.count146 = zext i32 %13 to i64
  %14 = zext nneg i32 %12 to i64
  %min.iters.check = icmp ult i32 %12, 4
  br i1 %min.iters.check, label %.lr.ph130.preheader148, label %vector.memcheck

vector.memcheck:                                  ; preds = %.lr.ph130.preheader
  %scevgep = getelementptr i8, ptr %0, i64 4
  %bound0 = icmp ugt ptr %scevgep, @slacon_.i__
  %bound1 = icmp ult ptr %0, getelementptr inbounds (i8, ptr @slacon_.i__, i64 4)
  %found.conflict = and i1 %bound0, %bound1
  br i1 %found.conflict, label %.lr.ph130.preheader148, label %vector.ph

vector.ph:                                        ; preds = %vector.memcheck
  %n.vec = and i64 %14, 2147483644
  %ind.end = or disjoint i64 %n.vec, 1
  %15 = load i32, ptr %0, align 4, !tbaa !5, !alias.scope !9
  %broadcast.splatinsert = insertelement <4 x i32> poison, i32 %15, i64 0
  %16 = sitofp <4 x i32> %broadcast.splatinsert to <4 x float>
  %17 = fdiv <4 x float> <float 1.000000e+00, float poison, float poison, float poison>, %16
  %18 = shufflevector <4 x float> %17, <4 x float> poison, <4 x i32> zeroinitializer
  br label %vector.body

vector.body:                                      ; preds = %vector.body, %vector.ph
  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %19 = phi i64 [ 4, %vector.ph ], [ %23, %vector.body ]
  %20 = getelementptr float, ptr %2, i64 %index
  store <4 x float> %18, ptr %20, align 4, !tbaa !12
  %21 = trunc i64 %19 to i32
  %22 = or disjoint i32 %21, 1
  %index.next = add nuw i64 %index, 4
  %23 = add i64 %19, 4
  %24 = icmp eq i64 %index.next, %n.vec
  br i1 %24, label %middle.block, label %vector.body, !llvm.loop !14

middle.block:                                     ; preds = %vector.body
  store i32 %22, ptr @slacon_.i__, align 4, !tbaa !5, !alias.scope !18, !noalias !9
  %cmp.n = icmp eq i64 %n.vec, %14
  br i1 %cmp.n, label %._crit_edge131, label %.lr.ph130.preheader148

.lr.ph130.preheader148:                           ; preds = %middle.block, %vector.memcheck, %.lr.ph130.preheader
  %indvars.iv143.ph = phi i64 [ 1, %vector.memcheck ], [ 1, %.lr.ph130.preheader ], [ %ind.end, %middle.block ]
  %25 = zext nneg i32 %12 to i64
  %26 = and i32 %12, 1
  %lcmp.mod.not = icmp eq i32 %26, 0
  br i1 %lcmp.mod.not, label %.lr.ph130.prol.loopexit, label %.lr.ph130.prol

.lr.ph130.prol:                                   ; preds = %.lr.ph130.preheader148
  %27 = load i32, ptr %0, align 4, !tbaa !5
  %28 = sitofp i32 %27 to float
  %29 = fdiv float 1.000000e+00, %28
  %30 = getelementptr inbounds float, ptr %8, i64 %indvars.iv143.ph
  store float %29, ptr %30, align 4, !tbaa !12
  %indvars.iv.next144.prol = add nuw nsw i64 %indvars.iv143.ph, 1
  %31 = trunc nuw i64 %indvars.iv.next144.prol to i32
  store i32 %31, ptr @slacon_.i__, align 4, !tbaa !5
  br label %.lr.ph130.prol.loopexit

.lr.ph130.prol.loopexit:                          ; preds = %.lr.ph130.prol, %.lr.ph130.preheader148
  %indvars.iv143.unr = phi i64 [ %indvars.iv143.ph, %.lr.ph130.preheader148 ], [ %indvars.iv.next144.prol, %.lr.ph130.prol ]
  %32 = icmp eq i64 %indvars.iv143.ph, %25
  br i1 %32, label %._crit_edge131, label %.lr.ph130

.lr.ph130:                                        ; preds = %.lr.ph130.prol.loopexit, %.lr.ph130
  %indvars.iv143 = phi i64 [ %indvars.iv.next144.1, %.lr.ph130 ], [ %indvars.iv143.unr, %.lr.ph130.prol.loopexit ]
  %33 = load i32, ptr %0, align 4, !tbaa !5
  %34 = sitofp i32 %33 to float
  %35 = fdiv float 1.000000e+00, %34
  %36 = getelementptr inbounds float, ptr %8, i64 %indvars.iv143
  store float %35, ptr %36, align 4, !tbaa !12
  %37 = trunc i64 %indvars.iv143 to i32
  %38 = add i32 %37, 1
  store i32 %38, ptr @slacon_.i__, align 4, !tbaa !5
  %39 = load i32, ptr %0, align 4, !tbaa !5
  %40 = sitofp i32 %39 to float
  %41 = fdiv float 1.000000e+00, %40
  %42 = getelementptr float, ptr %2, i64 %indvars.iv143
  store float %41, ptr %42, align 4, !tbaa !12
  %indvars.iv.next144.1 = add nuw nsw i64 %indvars.iv143, 2
  %43 = trunc nuw i64 %indvars.iv.next144.1 to i32
  store i32 %43, ptr @slacon_.i__, align 4, !tbaa !5
  %exitcond147.not.1 = icmp eq i64 %indvars.iv.next144.1, %wide.trip.count146
  br i1 %exitcond147.not.1, label %._crit_edge131, label %.lr.ph130, !llvm.loop !20

._crit_edge131:                                   ; preds = %.lr.ph130.prol.loopexit, %.lr.ph130, %middle.block, %11
  store i32 1, ptr %5, align 4, !tbaa !5
  store i32 1, ptr @slacon_.jump, align 4, !tbaa !5
  br label %201

44:                                               ; preds = %6
  %45 = load i32, ptr @slacon_.jump, align 4, !tbaa !5
  switch i32 %45, label %46 [
    i32 5, label %189
    i32 2, label %84
    i32 3, label %94
    i32 4, label %155
  ]

46:                                               ; preds = %44
  %47 = load i32, ptr %0, align 4, !tbaa !5
  %48 = icmp eq i32 %47, 1
  br i1 %48, label %49, label %54

49:                                               ; preds = %46
  %50 = load float, ptr %2, align 4, !tbaa !12
  store float %50, ptr %1, align 4, !tbaa !12
  %51 = fcmp ult float %50, 0.000000e+00
  %52 = fneg float %50
  %53 = select i1 %51, float %52, float %50
  br label %.sink.split

54:                                               ; preds = %46
  %55 = tail call float @sasum_(ptr noundef nonnull %0, ptr noundef %2, ptr noundef nonnull @c__1) #4
  store float %55, ptr %4, align 4, !tbaa !12
  %56 = load i32, ptr %0, align 4, !tbaa !5
  store i32 1, ptr @slacon_.i__, align 4, !tbaa !5
  %.not103122 = icmp slt i32 %56, 1
  br i1 %.not103122, label %._crit_edge126, label %.lr.ph125

.lr.ph125:                                        ; preds = %54, %78
  %storemerge102123 = phi i32 [ %83, %78 ], [ 1, %54 ]
  %57 = sext i32 %storemerge102123 to i64
  %58 = getelementptr inbounds float, ptr %8, i64 %57
  %59 = load float, ptr %58, align 4, !tbaa !12
  %60 = fcmp ult float %59, 0.000000e+00
  %61 = load float, ptr @c_b11, align 4
  %62 = fcmp oge float %61, 0.000000e+00
  %.neg104 = fneg float %61
  br i1 %60, label %65, label %63

63:                                               ; preds = %.lr.ph125
  %64 = select i1 %62, float %61, float %.neg104
  br label %67

65:                                               ; preds = %.lr.ph125
  %66 = select i1 %62, float %.neg104, float %61
  br label %67

67:                                               ; preds = %65, %63
  %68 = phi float [ %64, %63 ], [ %66, %65 ]
  store float %68, ptr %58, align 4, !tbaa !12
  %69 = fcmp ult float %68, 0.000000e+00
  %70 = fpext float %68 to double
  br i1 %69, label %74, label %71

71:                                               ; preds = %67
  %72 = fadd double %70, 5.000000e-01
  %73 = tail call double @llvm.floor.f64(double %72)
  br label %78

74:                                               ; preds = %67
  %75 = fsub double 5.000000e-01, %70
  %76 = tail call double @llvm.floor.f64(double %75)
  %77 = fneg double %76
  br label %78

78:                                               ; preds = %74, %71
  %79 = phi double [ %73, %71 ], [ %77, %74 ]
  %80 = fptosi double %79 to i32
  %81 = getelementptr inbounds i32, ptr %7, i64 %57
  store i32 %80, ptr %81, align 4, !tbaa !5
  %82 = load i32, ptr @slacon_.i__, align 4, !tbaa !5
  %83 = add nsw i32 %82, 1
  store i32 %83, ptr @slacon_.i__, align 4, !tbaa !5
  %.not103.not = icmp slt i32 %82, %56
  br i1 %.not103.not, label %.lr.ph125, label %._crit_edge126, !llvm.loop !21

._crit_edge126:                                   ; preds = %78, %54
  store i32 2, ptr %5, align 4, !tbaa !5
  store i32 2, ptr @slacon_.jump, align 4, !tbaa !5
  br label %201

84:                                               ; preds = %44
  %85 = tail call i32 @isamax_(ptr noundef %0, ptr noundef %2, ptr noundef nonnull @c__1) #4
  store i32 %85, ptr @slacon_.j, align 4, !tbaa !5
  br label %86

86:                                               ; preds = %171, %84
  %87 = phi i32 [ %157, %171 ], [ %85, %84 ]
  %storemerge = phi i32 [ %172, %171 ], [ 2, %84 ]
  store i32 %storemerge, ptr @slacon_.iter, align 4, !tbaa !5
  %88 = load i32, ptr %0, align 4, !tbaa !5
  %.not101117 = icmp slt i32 %88, 1
  br i1 %.not101117, label %._crit_edge121, label %.lr.ph120.preheader

.lr.ph120.preheader:                              ; preds = %86
  %89 = zext nneg i32 %88 to i64
  %90 = shl nuw nsw i64 %89, 2
  tail call void @llvm.memset.p0.i64(ptr align 4 %2, i8 0, i64 %90, i1 false), !tbaa !12
  %91 = add nuw i32 %88, 1
  br label %._crit_edge121

._crit_edge121:                                   ; preds = %.lr.ph120.preheader, %86
  %storemerge100.lcssa = phi i32 [ 1, %86 ], [ %91, %.lr.ph120.preheader ]
  store i32 %storemerge100.lcssa, ptr @slacon_.i__, align 4, !tbaa !5
  %92 = sext i32 %87 to i64
  %93 = getelementptr inbounds float, ptr %8, i64 %92
  store float 1.000000e+00, ptr %93, align 4, !tbaa !12
  store i32 1, ptr %5, align 4, !tbaa !5
  store i32 3, ptr @slacon_.jump, align 4, !tbaa !5
  br label %201

94:                                               ; preds = %44
  tail call void @scopy_(ptr noundef %0, ptr noundef %2, ptr noundef nonnull @c__1, ptr noundef %1, ptr noundef nonnull @c__1) #4
  %95 = load float, ptr %4, align 4, !tbaa !12
  store float %95, ptr @slacon_.estold, align 4, !tbaa !12
  %96 = tail call float @sasum_(ptr noundef %0, ptr noundef %1, ptr noundef nonnull @c__1) #4
  store float %96, ptr %4, align 4, !tbaa !12
  %97 = load i32, ptr %0, align 4, !tbaa !5
  store i32 1, ptr @slacon_.i__, align 4, !tbaa !5
  %.not107 = icmp slt i32 %97, 1
  br i1 %.not107, label %.loopexit, label %.lr.ph

.lr.ph:                                           ; preds = %94
  %98 = load float, ptr @c_b11, align 4
  %99 = fcmp oge float %98, 0.000000e+00
  %100 = fneg float %98
  %101 = add nuw i32 %97, 1
  %wide.trip.count = zext i32 %101 to i64
  br label %104

102:                                              ; preds = %118
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %103 = trunc nuw i64 %indvars.iv.next to i32
  store i32 %103, ptr @slacon_.i__, align 4, !tbaa !5
  %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count
  br i1 %exitcond.not, label %.loopexit, label %104, !llvm.loop !22

104:                                              ; preds = %.lr.ph, %102
  %indvars.iv = phi i64 [ 1, %.lr.ph ], [ %indvars.iv.next, %102 ]
  %105 = getelementptr inbounds float, ptr %8, i64 %indvars.iv
  %106 = load float, ptr %105, align 4, !tbaa !12
  %107 = fcmp ult float %106, 0.000000e+00
  %108 = xor i1 %99, %107
  %. = select i1 %108, float %98, float %100
  %109 = fcmp ult float %., 0.000000e+00
  %110 = fpext float %. to double
  br i1 %109, label %114, label %111

111:                                              ; preds = %104
  %112 = fadd double %110, 5.000000e-01
  %113 = tail call double @llvm.floor.f64(double %112)
  br label %118

114:                                              ; preds = %104
  %115 = fsub double 5.000000e-01, %110
  %116 = tail call double @llvm.floor.f64(double %115)
  %117 = fneg double %116
  br label %118

118:                                              ; preds = %114, %111
  %119 = phi double [ %113, %111 ], [ %117, %114 ]
  %120 = fptosi double %119 to i32
  %121 = getelementptr inbounds i32, ptr %7, i64 %indvars.iv
  %122 = load i32, ptr %121, align 4, !tbaa !5
  %.not94 = icmp eq i32 %122, %120
  br i1 %.not94, label %102, label %123

123:                                              ; preds = %118
  %124 = load float, ptr @slacon_.estold, align 4, !tbaa !12
  %125 = fcmp ugt float %96, %124
  br i1 %125, label %126, label %.loopexit

126:                                              ; preds = %123
  %127 = load i32, ptr %0, align 4, !tbaa !5
  store i32 1, ptr @slacon_.i__, align 4, !tbaa !5
  %.not96109 = icmp slt i32 %127, 1
  br i1 %.not96109, label %._crit_edge, label %.lr.ph111

.lr.ph111:                                        ; preds = %126, %149
  %storemerge95110 = phi i32 [ %154, %149 ], [ 1, %126 ]
  %128 = sext i32 %storemerge95110 to i64
  %129 = getelementptr inbounds float, ptr %8, i64 %128
  %130 = load float, ptr %129, align 4, !tbaa !12
  %131 = fcmp ult float %130, 0.000000e+00
  %132 = load float, ptr @c_b11, align 4
  %133 = fcmp oge float %132, 0.000000e+00
  %.neg97 = fneg float %132
  br i1 %131, label %136, label %134

134:                                              ; preds = %.lr.ph111
  %135 = select i1 %133, float %132, float %.neg97
  br label %138

136:                                              ; preds = %.lr.ph111
  %137 = select i1 %133, float %.neg97, float %132
  br label %138

138:                                              ; preds = %136, %134
  %139 = phi float [ %135, %134 ], [ %137, %136 ]
  store float %139, ptr %129, align 4, !tbaa !12
  %140 = fcmp ult float %139, 0.000000e+00
  %141 = fpext float %139 to double
  br i1 %140, label %145, label %142

142:                                              ; preds = %138
  %143 = fadd double %141, 5.000000e-01
  %144 = tail call double @llvm.floor.f64(double %143)
  br label %149

145:                                              ; preds = %138
  %146 = fsub double 5.000000e-01, %141
  %147 = tail call double @llvm.floor.f64(double %146)
  %148 = fneg double %147
  br label %149

149:                                              ; preds = %145, %142
  %150 = phi double [ %144, %142 ], [ %148, %145 ]
  %151 = fptosi double %150 to i32
  %152 = getelementptr inbounds i32, ptr %7, i64 %128
  store i32 %151, ptr %152, align 4, !tbaa !5
  %153 = load i32, ptr @slacon_.i__, align 4, !tbaa !5
  %154 = add nsw i32 %153, 1
  store i32 %154, ptr @slacon_.i__, align 4, !tbaa !5
  %.not96.not = icmp slt i32 %153, %127
  br i1 %.not96.not, label %.lr.ph111, label %._crit_edge, !llvm.loop !23

._crit_edge:                                      ; preds = %149, %126
  store i32 2, ptr %5, align 4, !tbaa !5
  store i32 4, ptr @slacon_.jump, align 4, !tbaa !5
  br label %201

155:                                              ; preds = %44
  %156 = load i32, ptr @slacon_.j, align 4, !tbaa !5
  store i32 %156, ptr @slacon_.jlast, align 4, !tbaa !5
  %157 = tail call i32 @isamax_(ptr noundef %0, ptr noundef %2, ptr noundef nonnull @c__1) #4
  store i32 %157, ptr @slacon_.j, align 4, !tbaa !5
  %158 = load i32, ptr @slacon_.jlast, align 4, !tbaa !5
  %159 = sext i32 %158 to i64
  %160 = getelementptr inbounds float, ptr %8, i64 %159
  %161 = load float, ptr %160, align 4, !tbaa !12
  %162 = sext i32 %157 to i64
  %163 = getelementptr inbounds float, ptr %8, i64 %162
  %164 = load float, ptr %163, align 4, !tbaa !12
  %165 = fcmp oge float %164, 0.000000e+00
  %166 = fneg float %164
  %167 = select i1 %165, float %164, float %166
  %168 = fcmp une float %161, %167
  %169 = load i32, ptr @slacon_.iter, align 4
  %170 = icmp slt i32 %169, 5
  %or.cond = select i1 %168, i1 %170, i1 false
  br i1 %or.cond, label %171, label %.loopexit

171:                                              ; preds = %155
  %172 = add nsw i32 %169, 1
  br label %86

.loopexit:                                        ; preds = %102, %94, %155, %123
  store float 1.000000e+00, ptr @slacon_.altsgn, align 4, !tbaa !12
  %173 = load i32, ptr %0, align 4, !tbaa !5
  store i32 1, ptr @slacon_.i__, align 4, !tbaa !5
  %.not99112 = icmp slt i32 %173, 1
  br i1 %.not99112, label %._crit_edge116, label %.lr.ph115.preheader

.lr.ph115.preheader:                              ; preds = %.loopexit
  %174 = add nuw i32 %173, 1
  %wide.trip.count136 = zext i32 %174 to i64
  br label %.lr.ph115

.lr.ph115:                                        ; preds = %.lr.ph115.preheader, %.lr.ph115
  %175 = phi float [ 1.000000e+00, %.lr.ph115.preheader ], [ %187, %.lr.ph115 ]
  %indvars.iv133 = phi i64 [ 1, %.lr.ph115.preheader ], [ %indvars.iv.next134, %.lr.ph115 ]
  %176 = trunc i64 %indvars.iv133 to i32
  %177 = add i32 %176, -1
  %178 = sitofp i32 %177 to float
  %179 = load i32, ptr %0, align 4, !tbaa !5
  %180 = add nsw i32 %179, -1
  %181 = sitofp i32 %180 to float
  %182 = fdiv float %178, %181
  %183 = fadd float %182, 1.000000e+00
  %184 = fmul float %175, %183
  %185 = getelementptr inbounds float, ptr %8, i64 %indvars.iv133
  store float %184, ptr %185, align 4, !tbaa !12
  %186 = load float, ptr @slacon_.altsgn, align 4, !tbaa !12
  %187 = fneg float %186
  store float %187, ptr @slacon_.altsgn, align 4, !tbaa !12
  %indvars.iv.next134 = add nuw nsw i64 %indvars.iv133, 1
  %188 = trunc nuw i64 %indvars.iv.next134 to i32
  store i32 %188, ptr @slacon_.i__, align 4, !tbaa !5
  %exitcond137.not = icmp eq i64 %indvars.iv.next134, %wide.trip.count136
  br i1 %exitcond137.not, label %._crit_edge116, label %.lr.ph115, !llvm.loop !24

._crit_edge116:                                   ; preds = %.lr.ph115, %.loopexit
  store i32 1, ptr %5, align 4, !tbaa !5
  store i32 5, ptr @slacon_.jump, align 4, !tbaa !5
  br label %201

189:                                              ; preds = %44
  %190 = tail call float @sasum_(ptr noundef %0, ptr noundef %2, ptr noundef nonnull @c__1) #4
  %191 = load i32, ptr %0, align 4, !tbaa !5
  %192 = mul nsw i32 %191, 3
  %193 = sitofp i32 %192 to float
  %194 = fdiv float %190, %193
  %195 = fmul float %194, 2.000000e+00
  store float %195, ptr @slacon_.temp, align 4, !tbaa !12
  %196 = load float, ptr %4, align 4, !tbaa !12
  %197 = fcmp ogt float %195, %196
  br i1 %197, label %198, label %200

198:                                              ; preds = %189
  tail call void @scopy_(ptr noundef nonnull %0, ptr noundef %2, ptr noundef nonnull @c__1, ptr noundef %1, ptr noundef nonnull @c__1) #4
  %199 = load float, ptr @slacon_.temp, align 4, !tbaa !12
  br label %.sink.split

.sink.split:                                      ; preds = %49, %198
  %.sink = phi float [ %199, %198 ], [ %53, %49 ]
  store float %.sink, ptr %4, align 4, !tbaa !12
  br label %200

200:                                              ; preds = %.sink.split, %189
  store i32 0, ptr %5, align 4, !tbaa !5
  br label %201

201:                                              ; preds = %200, %._crit_edge116, %._crit_edge, %._crit_edge121, %._crit_edge126, %._crit_edge131
  ret void
}

declare float @sasum_(ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #1

; Function Attrs: mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare double @llvm.floor.f64(double) #2

declare i32 @isamax_(ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #1

declare void @scopy_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #1

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write)
declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #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 = { "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 #2 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #3 = { nocallback nofree nounwind willreturn memory(argmem: write) }
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 = !{!10}
!10 = distinct !{!10, !11}
!11 = distinct !{!11, !"LVerDomain"}
!12 = !{!13, !13, i64 0}
!13 = !{!"float", !7, i64 0}
!14 = distinct !{!14, !15, !16, !17}
!15 = !{!"llvm.loop.mustprogress"}
!16 = !{!"llvm.loop.isvectorized", i32 1}
!17 = !{!"llvm.loop.unroll.runtime.disable"}
!18 = !{!19}
!19 = distinct !{!19, !11}
!20 = distinct !{!20, !15, !16}
!21 = distinct !{!21, !15}
!22 = distinct !{!22, !15}
!23 = distinct !{!23, !15}
!24 = distinct !{!24, !15}


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