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

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

; Function Attrs: nounwind uwtable
define dso_local void @slaed5_(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 float, align 4
  %14 = alloca float, align 4
  %15 = alloca float, align 4
  %16 = alloca float, align 4
  %17 = alloca float, align 4
  %18 = alloca float, align 4
  %19 = alloca float, 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
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #4
  %20 = load ptr, ptr %10, align 8, !tbaa !5
  %21 = getelementptr inbounds float, ptr %20, i32 -1
  store ptr %21, ptr %10, align 8, !tbaa !5
  %22 = load ptr, ptr %9, align 8, !tbaa !5
  %23 = getelementptr inbounds float, ptr %22, i32 -1
  store ptr %23, ptr %9, align 8, !tbaa !5
  %24 = load ptr, ptr %8, align 8, !tbaa !5
  %25 = getelementptr inbounds float, ptr %24, i32 -1
  store ptr %25, ptr %8, align 8, !tbaa !5
  %26 = load ptr, ptr %8, align 8, !tbaa !5
  %27 = getelementptr inbounds float, ptr %26, i64 2
  %28 = load float, ptr %27, align 4, !tbaa !9
  %29 = load ptr, ptr %8, align 8, !tbaa !5
  %30 = getelementptr inbounds float, ptr %29, i64 1
  %31 = load float, ptr %30, align 4, !tbaa !9
  %32 = fsub float %28, %31
  store float %32, ptr %18, align 4, !tbaa !9
  %33 = load ptr, ptr %7, align 8, !tbaa !5
  %34 = load i32, ptr %33, align 4, !tbaa !11
  %35 = icmp eq i32 %34, 1
  br i1 %35, label %36, label %256

36:                                               ; preds = %6
  %37 = load ptr, ptr %11, align 8, !tbaa !5
  %38 = load float, ptr %37, align 4, !tbaa !9
  %39 = fmul float %38, 2.000000e+00
  %40 = load ptr, ptr %9, align 8, !tbaa !5
  %41 = getelementptr inbounds float, ptr %40, i64 2
  %42 = load float, ptr %41, align 4, !tbaa !9
  %43 = load ptr, ptr %9, align 8, !tbaa !5
  %44 = getelementptr inbounds float, ptr %43, i64 2
  %45 = load float, ptr %44, align 4, !tbaa !9
  %46 = load ptr, ptr %9, align 8, !tbaa !5
  %47 = getelementptr inbounds float, ptr %46, i64 1
  %48 = load float, ptr %47, align 4, !tbaa !9
  %49 = load ptr, ptr %9, align 8, !tbaa !5
  %50 = getelementptr inbounds float, ptr %49, i64 1
  %51 = load float, ptr %50, align 4, !tbaa !9
  %52 = fmul float %48, %51
  %53 = fneg float %52
  %54 = call float @llvm.fmuladd.f32(float %42, float %45, float %53)
  %55 = fmul float %39, %54
  %56 = load float, ptr %18, align 4, !tbaa !9
  %57 = fdiv float %55, %56
  %58 = fadd float %57, 1.000000e+00
  store float %58, ptr %17, align 4, !tbaa !9
  %59 = load float, ptr %17, align 4, !tbaa !9
  %60 = fcmp ogt float %59, 0.000000e+00
  br i1 %60, label %61, label %140

61:                                               ; preds = %36
  %62 = load float, ptr %18, align 4, !tbaa !9
  %63 = load ptr, ptr %11, align 8, !tbaa !5
  %64 = load float, ptr %63, align 4, !tbaa !9
  %65 = load ptr, ptr %9, align 8, !tbaa !5
  %66 = getelementptr inbounds float, ptr %65, i64 1
  %67 = load float, ptr %66, align 4, !tbaa !9
  %68 = load ptr, ptr %9, align 8, !tbaa !5
  %69 = getelementptr inbounds float, ptr %68, i64 1
  %70 = load float, ptr %69, align 4, !tbaa !9
  %71 = load ptr, ptr %9, align 8, !tbaa !5
  %72 = getelementptr inbounds float, ptr %71, i64 2
  %73 = load float, ptr %72, align 4, !tbaa !9
  %74 = load ptr, ptr %9, align 8, !tbaa !5
  %75 = getelementptr inbounds float, ptr %74, i64 2
  %76 = load float, ptr %75, align 4, !tbaa !9
  %77 = fmul float %73, %76
  %78 = call float @llvm.fmuladd.f32(float %67, float %70, float %77)
  %79 = call float @llvm.fmuladd.f32(float %64, float %78, float %62)
  store float %79, ptr %15, align 4, !tbaa !9
  %80 = load ptr, ptr %11, align 8, !tbaa !5
  %81 = load float, ptr %80, align 4, !tbaa !9
  %82 = load ptr, ptr %9, align 8, !tbaa !5
  %83 = getelementptr inbounds float, ptr %82, i64 1
  %84 = load float, ptr %83, align 4, !tbaa !9
  %85 = fmul float %81, %84
  %86 = load ptr, ptr %9, align 8, !tbaa !5
  %87 = getelementptr inbounds float, ptr %86, i64 1
  %88 = load float, ptr %87, align 4, !tbaa !9
  %89 = fmul float %85, %88
  %90 = load float, ptr %18, align 4, !tbaa !9
  %91 = fmul float %89, %90
  store float %91, ptr %16, align 4, !tbaa !9
  %92 = load float, ptr %16, align 4, !tbaa !9
  %93 = fmul float %92, 2.000000e+00
  %94 = fpext float %93 to double
  %95 = load float, ptr %15, align 4, !tbaa !9
  %96 = fpext float %95 to double
  %97 = load float, ptr %15, align 4, !tbaa !9
  %98 = load float, ptr %15, align 4, !tbaa !9
  %99 = load float, ptr %16, align 4, !tbaa !9
  %100 = fmul float %99, 4.000000e+00
  %101 = fneg float %100
  %102 = call float @llvm.fmuladd.f32(float %97, float %98, float %101)
  store float %102, ptr %13, align 4, !tbaa !9
  %103 = load float, ptr %13, align 4, !tbaa !9
  %104 = fcmp oge float %103, 0.000000e+00
  br i1 %104, label %105, label %107

105:                                              ; preds = %61
  %106 = load float, ptr %13, align 4, !tbaa !9
  br label %110

107:                                              ; preds = %61
  %108 = load float, ptr %13, align 4, !tbaa !9
  %109 = fneg float %108
  br label %110

110:                                              ; preds = %107, %105
  %111 = phi float [ %106, %105 ], [ %109, %107 ]
  %112 = fpext float %111 to double
  %113 = call double @sqrt(double noundef %112) #4
  %114 = fadd double %96, %113
  %115 = fdiv double %94, %114
  %116 = fptrunc double %115 to float
  store float %116, ptr %19, align 4, !tbaa !9
  %117 = load ptr, ptr %8, align 8, !tbaa !5
  %118 = getelementptr inbounds float, ptr %117, i64 1
  %119 = load float, ptr %118, align 4, !tbaa !9
  %120 = load float, ptr %19, align 4, !tbaa !9
  %121 = fadd float %119, %120
  %122 = load ptr, ptr %12, align 8, !tbaa !5
  store float %121, ptr %122, align 4, !tbaa !9
  %123 = load ptr, ptr %9, align 8, !tbaa !5
  %124 = getelementptr inbounds float, ptr %123, i64 1
  %125 = load float, ptr %124, align 4, !tbaa !9
  %126 = fneg float %125
  %127 = load float, ptr %19, align 4, !tbaa !9
  %128 = fdiv float %126, %127
  %129 = load ptr, ptr %10, align 8, !tbaa !5
  %130 = getelementptr inbounds float, ptr %129, i64 1
  store float %128, ptr %130, align 4, !tbaa !9
  %131 = load ptr, ptr %9, align 8, !tbaa !5
  %132 = getelementptr inbounds float, ptr %131, i64 2
  %133 = load float, ptr %132, align 4, !tbaa !9
  %134 = load float, ptr %18, align 4, !tbaa !9
  %135 = load float, ptr %19, align 4, !tbaa !9
  %136 = fsub float %134, %135
  %137 = fdiv float %133, %136
  %138 = load ptr, ptr %10, align 8, !tbaa !5
  %139 = getelementptr inbounds float, ptr %138, i64 2
  store float %137, ptr %139, align 4, !tbaa !9
  br label %228

140:                                              ; preds = %36
  %141 = load float, ptr %18, align 4, !tbaa !9
  %142 = fneg float %141
  %143 = load ptr, ptr %11, align 8, !tbaa !5
  %144 = load float, ptr %143, align 4, !tbaa !9
  %145 = load ptr, ptr %9, align 8, !tbaa !5
  %146 = getelementptr inbounds float, ptr %145, i64 1
  %147 = load float, ptr %146, align 4, !tbaa !9
  %148 = load ptr, ptr %9, align 8, !tbaa !5
  %149 = getelementptr inbounds float, ptr %148, i64 1
  %150 = load float, ptr %149, align 4, !tbaa !9
  %151 = load ptr, ptr %9, align 8, !tbaa !5
  %152 = getelementptr inbounds float, ptr %151, i64 2
  %153 = load float, ptr %152, align 4, !tbaa !9
  %154 = load ptr, ptr %9, align 8, !tbaa !5
  %155 = getelementptr inbounds float, ptr %154, i64 2
  %156 = load float, ptr %155, align 4, !tbaa !9
  %157 = fmul float %153, %156
  %158 = call float @llvm.fmuladd.f32(float %147, float %150, float %157)
  %159 = call float @llvm.fmuladd.f32(float %144, float %158, float %142)
  store float %159, ptr %15, align 4, !tbaa !9
  %160 = load ptr, ptr %11, align 8, !tbaa !5
  %161 = load float, ptr %160, align 4, !tbaa !9
  %162 = load ptr, ptr %9, align 8, !tbaa !5
  %163 = getelementptr inbounds float, ptr %162, i64 2
  %164 = load float, ptr %163, align 4, !tbaa !9
  %165 = fmul float %161, %164
  %166 = load ptr, ptr %9, align 8, !tbaa !5
  %167 = getelementptr inbounds float, ptr %166, i64 2
  %168 = load float, ptr %167, align 4, !tbaa !9
  %169 = fmul float %165, %168
  %170 = load float, ptr %18, align 4, !tbaa !9
  %171 = fmul float %169, %170
  store float %171, ptr %16, align 4, !tbaa !9
  %172 = load float, ptr %15, align 4, !tbaa !9
  %173 = fcmp ogt float %172, 0.000000e+00
  br i1 %173, label %174, label %190

174:                                              ; preds = %140
  %175 = load float, ptr %16, align 4, !tbaa !9
  %176 = fmul float %175, -2.000000e+00
  %177 = fpext float %176 to double
  %178 = load float, ptr %15, align 4, !tbaa !9
  %179 = fpext float %178 to double
  %180 = load float, ptr %15, align 4, !tbaa !9
  %181 = load float, ptr %15, align 4, !tbaa !9
  %182 = load float, ptr %16, align 4, !tbaa !9
  %183 = fmul float %182, 4.000000e+00
  %184 = call float @llvm.fmuladd.f32(float %180, float %181, float %183)
  %185 = fpext float %184 to double
  %186 = call double @sqrt(double noundef %185) #4
  %187 = fadd double %179, %186
  %188 = fdiv double %177, %187
  %189 = fptrunc double %188 to float
  store float %189, ptr %19, align 4, !tbaa !9
  br label %203

190:                                              ; preds = %140
  %191 = load float, ptr %15, align 4, !tbaa !9
  %192 = fpext float %191 to double
  %193 = load float, ptr %15, align 4, !tbaa !9
  %194 = load float, ptr %15, align 4, !tbaa !9
  %195 = load float, ptr %16, align 4, !tbaa !9
  %196 = fmul float %195, 4.000000e+00
  %197 = call float @llvm.fmuladd.f32(float %193, float %194, float %196)
  %198 = fpext float %197 to double
  %199 = call double @sqrt(double noundef %198) #4
  %200 = fsub double %192, %199
  %201 = fdiv double %200, 2.000000e+00
  %202 = fptrunc double %201 to float
  store float %202, ptr %19, align 4, !tbaa !9
  br label %203

203:                                              ; preds = %190, %174
  %204 = load ptr, ptr %8, align 8, !tbaa !5
  %205 = getelementptr inbounds float, ptr %204, i64 2
  %206 = load float, ptr %205, align 4, !tbaa !9
  %207 = load float, ptr %19, align 4, !tbaa !9
  %208 = fadd float %206, %207
  %209 = load ptr, ptr %12, align 8, !tbaa !5
  store float %208, ptr %209, align 4, !tbaa !9
  %210 = load ptr, ptr %9, align 8, !tbaa !5
  %211 = getelementptr inbounds float, ptr %210, i64 1
  %212 = load float, ptr %211, align 4, !tbaa !9
  %213 = fneg float %212
  %214 = load float, ptr %18, align 4, !tbaa !9
  %215 = load float, ptr %19, align 4, !tbaa !9
  %216 = fadd float %214, %215
  %217 = fdiv float %213, %216
  %218 = load ptr, ptr %10, align 8, !tbaa !5
  %219 = getelementptr inbounds float, ptr %218, i64 1
  store float %217, ptr %219, align 4, !tbaa !9
  %220 = load ptr, ptr %9, align 8, !tbaa !5
  %221 = getelementptr inbounds float, ptr %220, i64 2
  %222 = load float, ptr %221, align 4, !tbaa !9
  %223 = fneg float %222
  %224 = load float, ptr %19, align 4, !tbaa !9
  %225 = fdiv float %223, %224
  %226 = load ptr, ptr %10, align 8, !tbaa !5
  %227 = getelementptr inbounds float, ptr %226, i64 2
  store float %225, ptr %227, align 4, !tbaa !9
  br label %228

228:                                              ; preds = %203, %110
  %229 = load ptr, ptr %10, align 8, !tbaa !5
  %230 = getelementptr inbounds float, ptr %229, i64 1
  %231 = load float, ptr %230, align 4, !tbaa !9
  %232 = load ptr, ptr %10, align 8, !tbaa !5
  %233 = getelementptr inbounds float, ptr %232, i64 1
  %234 = load float, ptr %233, align 4, !tbaa !9
  %235 = load ptr, ptr %10, align 8, !tbaa !5
  %236 = getelementptr inbounds float, ptr %235, i64 2
  %237 = load float, ptr %236, align 4, !tbaa !9
  %238 = load ptr, ptr %10, align 8, !tbaa !5
  %239 = getelementptr inbounds float, ptr %238, i64 2
  %240 = load float, ptr %239, align 4, !tbaa !9
  %241 = fmul float %237, %240
  %242 = call float @llvm.fmuladd.f32(float %231, float %234, float %241)
  %243 = fpext float %242 to double
  %244 = call double @sqrt(double noundef %243) #4
  %245 = fptrunc double %244 to float
  store float %245, ptr %14, align 4, !tbaa !9
  %246 = load float, ptr %14, align 4, !tbaa !9
  %247 = load ptr, ptr %10, align 8, !tbaa !5
  %248 = getelementptr inbounds float, ptr %247, i64 1
  %249 = load float, ptr %248, align 4, !tbaa !9
  %250 = fdiv float %249, %246
  store float %250, ptr %248, align 4, !tbaa !9
  %251 = load float, ptr %14, align 4, !tbaa !9
  %252 = load ptr, ptr %10, align 8, !tbaa !5
  %253 = getelementptr inbounds float, ptr %252, i64 2
  %254 = load float, ptr %253, align 4, !tbaa !9
  %255 = fdiv float %254, %251
  store float %255, ptr %253, align 4, !tbaa !9
  br label %372

256:                                              ; preds = %6
  %257 = load float, ptr %18, align 4, !tbaa !9
  %258 = fneg float %257
  %259 = load ptr, ptr %11, align 8, !tbaa !5
  %260 = load float, ptr %259, align 4, !tbaa !9
  %261 = load ptr, ptr %9, align 8, !tbaa !5
  %262 = getelementptr inbounds float, ptr %261, i64 1
  %263 = load float, ptr %262, align 4, !tbaa !9
  %264 = load ptr, ptr %9, align 8, !tbaa !5
  %265 = getelementptr inbounds float, ptr %264, i64 1
  %266 = load float, ptr %265, align 4, !tbaa !9
  %267 = load ptr, ptr %9, align 8, !tbaa !5
  %268 = getelementptr inbounds float, ptr %267, i64 2
  %269 = load float, ptr %268, align 4, !tbaa !9
  %270 = load ptr, ptr %9, align 8, !tbaa !5
  %271 = getelementptr inbounds float, ptr %270, i64 2
  %272 = load float, ptr %271, align 4, !tbaa !9
  %273 = fmul float %269, %272
  %274 = call float @llvm.fmuladd.f32(float %263, float %266, float %273)
  %275 = call float @llvm.fmuladd.f32(float %260, float %274, float %258)
  store float %275, ptr %15, align 4, !tbaa !9
  %276 = load ptr, ptr %11, align 8, !tbaa !5
  %277 = load float, ptr %276, align 4, !tbaa !9
  %278 = load ptr, ptr %9, align 8, !tbaa !5
  %279 = getelementptr inbounds float, ptr %278, i64 2
  %280 = load float, ptr %279, align 4, !tbaa !9
  %281 = fmul float %277, %280
  %282 = load ptr, ptr %9, align 8, !tbaa !5
  %283 = getelementptr inbounds float, ptr %282, i64 2
  %284 = load float, ptr %283, align 4, !tbaa !9
  %285 = fmul float %281, %284
  %286 = load float, ptr %18, align 4, !tbaa !9
  %287 = fmul float %285, %286
  store float %287, ptr %16, align 4, !tbaa !9
  %288 = load float, ptr %15, align 4, !tbaa !9
  %289 = fcmp ogt float %288, 0.000000e+00
  br i1 %289, label %290, label %303

290:                                              ; preds = %256
  %291 = load float, ptr %15, align 4, !tbaa !9
  %292 = fpext float %291 to double
  %293 = load float, ptr %15, align 4, !tbaa !9
  %294 = load float, ptr %15, align 4, !tbaa !9
  %295 = load float, ptr %16, align 4, !tbaa !9
  %296 = fmul float %295, 4.000000e+00
  %297 = call float @llvm.fmuladd.f32(float %293, float %294, float %296)
  %298 = fpext float %297 to double
  %299 = call double @sqrt(double noundef %298) #4
  %300 = fadd double %292, %299
  %301 = fdiv double %300, 2.000000e+00
  %302 = fptrunc double %301 to float
  store float %302, ptr %19, align 4, !tbaa !9
  br label %320

303:                                              ; preds = %256
  %304 = load float, ptr %16, align 4, !tbaa !9
  %305 = fmul float %304, 2.000000e+00
  %306 = fpext float %305 to double
  %307 = load float, ptr %15, align 4, !tbaa !9
  %308 = fneg float %307
  %309 = fpext float %308 to double
  %310 = load float, ptr %15, align 4, !tbaa !9
  %311 = load float, ptr %15, align 4, !tbaa !9
  %312 = load float, ptr %16, align 4, !tbaa !9
  %313 = fmul float %312, 4.000000e+00
  %314 = call float @llvm.fmuladd.f32(float %310, float %311, float %313)
  %315 = fpext float %314 to double
  %316 = call double @sqrt(double noundef %315) #4
  %317 = fadd double %309, %316
  %318 = fdiv double %306, %317
  %319 = fptrunc double %318 to float
  store float %319, ptr %19, align 4, !tbaa !9
  br label %320

320:                                              ; preds = %303, %290
  %321 = load ptr, ptr %8, align 8, !tbaa !5
  %322 = getelementptr inbounds float, ptr %321, i64 2
  %323 = load float, ptr %322, align 4, !tbaa !9
  %324 = load float, ptr %19, align 4, !tbaa !9
  %325 = fadd float %323, %324
  %326 = load ptr, ptr %12, align 8, !tbaa !5
  store float %325, ptr %326, align 4, !tbaa !9
  %327 = load ptr, ptr %9, align 8, !tbaa !5
  %328 = getelementptr inbounds float, ptr %327, i64 1
  %329 = load float, ptr %328, align 4, !tbaa !9
  %330 = fneg float %329
  %331 = load float, ptr %18, align 4, !tbaa !9
  %332 = load float, ptr %19, align 4, !tbaa !9
  %333 = fadd float %331, %332
  %334 = fdiv float %330, %333
  %335 = load ptr, ptr %10, align 8, !tbaa !5
  %336 = getelementptr inbounds float, ptr %335, i64 1
  store float %334, ptr %336, align 4, !tbaa !9
  %337 = load ptr, ptr %9, align 8, !tbaa !5
  %338 = getelementptr inbounds float, ptr %337, i64 2
  %339 = load float, ptr %338, align 4, !tbaa !9
  %340 = fneg float %339
  %341 = load float, ptr %19, align 4, !tbaa !9
  %342 = fdiv float %340, %341
  %343 = load ptr, ptr %10, align 8, !tbaa !5
  %344 = getelementptr inbounds float, ptr %343, i64 2
  store float %342, ptr %344, align 4, !tbaa !9
  %345 = load ptr, ptr %10, align 8, !tbaa !5
  %346 = getelementptr inbounds float, ptr %345, i64 1
  %347 = load float, ptr %346, align 4, !tbaa !9
  %348 = load ptr, ptr %10, align 8, !tbaa !5
  %349 = getelementptr inbounds float, ptr %348, i64 1
  %350 = load float, ptr %349, align 4, !tbaa !9
  %351 = load ptr, ptr %10, align 8, !tbaa !5
  %352 = getelementptr inbounds float, ptr %351, i64 2
  %353 = load float, ptr %352, align 4, !tbaa !9
  %354 = load ptr, ptr %10, align 8, !tbaa !5
  %355 = getelementptr inbounds float, ptr %354, i64 2
  %356 = load float, ptr %355, align 4, !tbaa !9
  %357 = fmul float %353, %356
  %358 = call float @llvm.fmuladd.f32(float %347, float %350, float %357)
  %359 = fpext float %358 to double
  %360 = call double @sqrt(double noundef %359) #4
  %361 = fptrunc double %360 to float
  store float %361, ptr %14, align 4, !tbaa !9
  %362 = load float, ptr %14, align 4, !tbaa !9
  %363 = load ptr, ptr %10, align 8, !tbaa !5
  %364 = getelementptr inbounds float, ptr %363, i64 1
  %365 = load float, ptr %364, align 4, !tbaa !9
  %366 = fdiv float %365, %362
  store float %366, ptr %364, align 4, !tbaa !9
  %367 = load float, ptr %14, align 4, !tbaa !9
  %368 = load ptr, ptr %10, align 8, !tbaa !5
  %369 = getelementptr inbounds float, ptr %368, i64 2
  %370 = load float, ptr %369, align 4, !tbaa !9
  %371 = fdiv float %370, %367
  store float %371, ptr %369, align 4, !tbaa !9
  br label %372

372:                                              ; preds = %320, %228
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #4
  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

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare float @llvm.fmuladd.f32(float, float, float) #2

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

; 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 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #3 = { nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { nounwind }

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

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


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

; Function Attrs: mustprogress nofree nounwind willreturn memory(write, argmem: readwrite) uwtable
define dso_local void @slaed5_(ptr nocapture noundef readonly %0, ptr nocapture noundef readonly %1, ptr nocapture noundef readonly %2, ptr nocapture noundef writeonly %3, ptr nocapture noundef readonly %4, ptr nocapture noundef writeonly %5) local_unnamed_addr #0 {
  %7 = getelementptr inbounds i8, ptr %1, i64 4
  %8 = load float, ptr %7, align 4, !tbaa !5
  %9 = load float, ptr %1, align 4, !tbaa !5
  %10 = fsub float %8, %9
  %11 = load i32, ptr %0, align 4, !tbaa !9
  %12 = icmp eq i32 %11, 1
  br i1 %12, label %13, label %101

13:                                               ; preds = %6
  %14 = load float, ptr %4, align 4, !tbaa !5
  %15 = fmul float %14, 2.000000e+00
  %16 = getelementptr inbounds i8, ptr %2, i64 4
  %17 = load float, ptr %16, align 4, !tbaa !5
  %18 = load float, ptr %2, align 4, !tbaa !5
  %19 = fneg float %18
  %20 = fmul float %18, %19
  %21 = tail call float @llvm.fmuladd.f32(float %17, float %17, float %20)
  %22 = fmul float %15, %21
  %23 = fdiv float %22, %10
  %24 = fadd float %23, 1.000000e+00
  %25 = fcmp ogt float %24, 0.000000e+00
  br i1 %25, label %26, label %56

26:                                               ; preds = %13
  %27 = fmul float %17, %17
  %28 = tail call float @llvm.fmuladd.f32(float %18, float %18, float %27)
  %29 = tail call float @llvm.fmuladd.f32(float %14, float %28, float %10)
  %30 = fmul float %14, %18
  %31 = fmul float %18, %30
  %32 = fmul float %10, %31
  %33 = fmul float %32, 2.000000e+00
  %34 = fpext float %33 to double
  %35 = fpext float %29 to double
  %36 = fmul float %32, -4.000000e+00
  %37 = tail call float @llvm.fmuladd.f32(float %29, float %29, float %36)
  %38 = fcmp oge float %37, 0.000000e+00
  %39 = fneg float %37
  %40 = select i1 %38, float %37, float %39
  %41 = fpext float %40 to double
  %42 = tail call double @sqrt(double noundef %41) #4
  %43 = fadd double %42, %35
  %44 = fdiv double %34, %43
  %45 = fptrunc double %44 to float
  %46 = load float, ptr %1, align 4, !tbaa !5
  %47 = fadd float %46, %45
  store float %47, ptr %5, align 4, !tbaa !5
  %48 = load float, ptr %2, align 4, !tbaa !5
  %49 = fneg float %48
  %50 = fsub float %10, %45
  %51 = fdiv float %49, %45
  store float %51, ptr %3, align 4, !tbaa !5
  %52 = load float, ptr %16, align 4, !tbaa !5
  %53 = fdiv float %52, %50
  %54 = insertelement <2 x float> poison, float %51, i64 0
  %55 = insertelement <2 x float> %54, float %53, i64 1
  br label %95

56:                                               ; preds = %13
  %57 = fneg float %10
  %58 = fmul float %17, %17
  %59 = tail call float @llvm.fmuladd.f32(float %18, float %18, float %58)
  %60 = tail call float @llvm.fmuladd.f32(float %14, float %59, float %57)
  %61 = fmul float %14, %17
  %62 = fmul float %17, %61
  %63 = fmul float %10, %62
  %64 = fcmp ogt float %60, 0.000000e+00
  br i1 %64, label %65, label %75

65:                                               ; preds = %56
  %66 = fmul float %63, -2.000000e+00
  %67 = fpext float %66 to double
  %68 = fpext float %60 to double
  %69 = fmul float %63, 4.000000e+00
  %70 = tail call float @llvm.fmuladd.f32(float %60, float %60, float %69)
  %71 = fpext float %70 to double
  %72 = tail call double @sqrt(double noundef %71) #4
  %73 = fadd double %72, %68
  %74 = fdiv double %67, %73
  br label %83

75:                                               ; preds = %56
  %76 = fpext float %60 to double
  %77 = fmul float %63, 4.000000e+00
  %78 = tail call float @llvm.fmuladd.f32(float %60, float %60, float %77)
  %79 = fpext float %78 to double
  %80 = tail call double @sqrt(double noundef %79) #4
  %81 = fsub double %76, %80
  %82 = fmul double %81, 5.000000e-01
  br label %83

83:                                               ; preds = %75, %65
  %.0.in = phi double [ %74, %65 ], [ %82, %75 ]
  %.0 = fptrunc double %.0.in to float
  %84 = load float, ptr %7, align 4, !tbaa !5
  %85 = fadd float %84, %.0
  store float %85, ptr %5, align 4, !tbaa !5
  %86 = load float, ptr %2, align 4, !tbaa !5
  %87 = fneg float %86
  %88 = fadd float %10, %.0
  %89 = fdiv float %87, %88
  store float %89, ptr %3, align 4, !tbaa !5
  %90 = load float, ptr %16, align 4, !tbaa !5
  %91 = fneg float %90
  %92 = fdiv float %91, %.0
  %93 = insertelement <2 x float> poison, float %89, i64 0
  %94 = insertelement <2 x float> %93, float %92, i64 1
  br label %95

95:                                               ; preds = %83, %26
  %96 = phi <2 x float> [ %94, %83 ], [ %55, %26 ]
  %97 = fmul <2 x float> %96, %96
  %98 = extractelement <2 x float> %97, i64 1
  %99 = extractelement <2 x float> %96, i64 0
  %100 = tail call float @llvm.fmuladd.f32(float %99, float %99, float %98)
  br label %147

101:                                              ; preds = %6
  %102 = fneg float %10
  %103 = load float, ptr %4, align 4, !tbaa !5
  %104 = load float, ptr %2, align 4, !tbaa !5
  %105 = getelementptr inbounds i8, ptr %2, i64 4
  %106 = load float, ptr %105, align 4, !tbaa !5
  %107 = fmul float %106, %106
  %108 = tail call float @llvm.fmuladd.f32(float %104, float %104, float %107)
  %109 = tail call float @llvm.fmuladd.f32(float %103, float %108, float %102)
  %110 = fmul float %103, %106
  %111 = fmul float %106, %110
  %112 = fmul float %10, %111
  %113 = fcmp ogt float %109, 0.000000e+00
  br i1 %113, label %114, label %122

114:                                              ; preds = %101
  %115 = fpext float %109 to double
  %116 = fmul float %112, 4.000000e+00
  %117 = tail call float @llvm.fmuladd.f32(float %109, float %109, float %116)
  %118 = fpext float %117 to double
  %119 = tail call double @sqrt(double noundef %118) #4
  %120 = fadd double %119, %115
  %121 = fmul double %120, 5.000000e-01
  br label %133

122:                                              ; preds = %101
  %123 = fmul float %112, 2.000000e+00
  %124 = fpext float %123 to double
  %125 = fneg float %109
  %126 = fpext float %125 to double
  %127 = fmul float %112, 4.000000e+00
  %128 = tail call float @llvm.fmuladd.f32(float %109, float %109, float %127)
  %129 = fpext float %128 to double
  %130 = tail call double @sqrt(double noundef %129) #4
  %131 = fadd double %130, %126
  %132 = fdiv double %124, %131
  br label %133

133:                                              ; preds = %122, %114
  %.1.in = phi double [ %121, %114 ], [ %132, %122 ]
  %.1 = fptrunc double %.1.in to float
  %134 = load float, ptr %7, align 4, !tbaa !5
  %135 = fadd float %134, %.1
  store float %135, ptr %5, align 4, !tbaa !5
  %136 = load float, ptr %2, align 4, !tbaa !5
  %137 = fneg float %136
  %138 = fadd float %10, %.1
  %139 = fdiv float %137, %138
  store float %139, ptr %3, align 4, !tbaa !5
  %140 = load float, ptr %105, align 4, !tbaa !5
  %141 = fneg float %140
  %142 = fdiv float %141, %.1
  %143 = fmul float %142, %142
  %144 = tail call float @llvm.fmuladd.f32(float %139, float %139, float %143)
  %145 = insertelement <2 x float> poison, float %139, i64 0
  %146 = insertelement <2 x float> %145, float %142, i64 1
  br label %147

147:                                              ; preds = %133, %95
  %.sink = phi float [ %144, %133 ], [ %100, %95 ]
  %148 = phi <2 x float> [ %146, %133 ], [ %96, %95 ]
  %sqrt122 = tail call float @llvm.sqrt.f32(float %.sink)
  %149 = insertelement <2 x float> poison, float %sqrt122, i64 0
  %150 = shufflevector <2 x float> %149, <2 x float> poison, <2 x i32> zeroinitializer
  %151 = fdiv <2 x float> %148, %150
  store <2 x float> %151, ptr %3, align 4, !tbaa !5
  ret void
}

; Function Attrs: mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare float @llvm.fmuladd.f32(float, float, float) #1

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

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare float @llvm.sqrt.f32(float) #3

attributes #0 = { mustprogress nofree nounwind willreturn memory(write, argmem: readwrite) 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 speculatable willreturn memory(none) }
attributes #2 = { mustprogress nofree nounwind willreturn memory(write) "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #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 = !{!"float", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}


; Effective O3 passes: AggressiveInstCombinePass,DSEPass,EarlyCSEPass,GVNPass,GlobalOptPass,InferFunctionAttrsPass,InstCombinePass,PostOrderFunctionAttrsPass,ReassociatePass,SLPVectorizerPass,SROAPass,SimplifyCFGPass,TailCallElimPass,VectorCombinePass