#define NULL ((void *)0)
typedef unsigned long size_t; // Customize by platform.
typedef long intptr_t;
typedef unsigned long uintptr_t;
typedef long scalar_t__; // Either arithmetic or pointer type.
/* By default, we understand bool (as a convenience). */
typedef int bool;
#define false 0
#define true 1

/* Forward declarations */

/* Type definitions */

/* Variables and functions */
float fabs(float);
float sqrt(float);
void slas2(float f__, float g__, float h__, float *ssmin, float *ssmax) {
  float r__1, r__2;
  static float fhmn, fhmx, c, fa, ga, ha, as, at, au;
  fa = fabs(f__);
  ga = fabs(g__);
  ha = fabs(h__);
  fhmn = (((fa) < (ha)) ? (fa) : (ha));
  fhmx = (((fa) > (ha)) ? (fa) : (ha));
  if (fhmn == 0.f) {
    *ssmin = 0.f;
    if (fhmx == 0.f) {
      *ssmax = ga;
    } else {
      r__1 =
          (((fhmx) < (ga)) ? (fhmx) : (ga)) / (((fhmx) > (ga)) ? (fhmx) : (ga));
      *ssmax = (((fhmx) > (ga)) ? (fhmx) : (ga)) * sqrt(r__1 * r__1 + 1.f);
    }
  } else {
    if (ga < fhmx) {
      as = fhmn / fhmx + 1.f;
      at = (fhmx - fhmn) / fhmx;
      r__1 = ga / fhmx;
      au = r__1 * r__1;
      c = 2.f / (sqrt(as * as + au) + sqrt(at * at + au));
      *ssmin = fhmn * c;
      *ssmax = fhmx / c;
    } else {
      au = fhmx / ga;
      if (au == 0.f) {
        *ssmin = fhmn * fhmx / ga;
        *ssmax = ga;
      } else {
        as = fhmn / fhmx + 1.f;
        at = (fhmx - fhmn) / fhmx;
        r__1 = as * au;
        r__2 = at * au;
        c = 1.f / (sqrt(r__1 * r__1 + 1.f) + sqrt(r__2 * r__2 + 1.f));
        *ssmin = fhmn * c * au;
        *ssmin += *ssmin;
        *ssmax = ga / (c + c);
      }
    }
  }
}


x86 assembly (clang, -O0):
<slas2>:
push   %rbp
mov    %rsp,%rbp
sub    $0x50,%rsp
movss  %xmm0,-0x4(%rbp)
movss  %xmm1,-0x8(%rbp)
movss  %xmm2,-0xc(%rbp)
mov    %rdi,-0x18(%rbp)
mov    %rsi,-0x20(%rbp)
movss  -0x4(%rbp),%xmm0
call   1030 <fabs@plt>
movss  %xmm0,0x2eef(%rip)
movss  -0x8(%rbp),%xmm0
call   1030 <fabs@plt>
movss  %xmm0,0x2ee1(%rip)
movss  -0xc(%rbp),%xmm0
call   1030 <fabs@plt>
movss  %xmm0,0x2ed3(%rip)
movss  0x2ec3(%rip),%xmm1
movss  0x2ec3(%rip),%xmm0
ucomiss %xmm1,%xmm0
jbe    11a0 <slas2+0x80>
movss  0x2eaa(%rip),%xmm0
movss  %xmm0,-0x2c(%rbp)
jmp    11ad <slas2+0x8d>
movss  0x2ea0(%rip),%xmm0
movss  %xmm0,-0x2c(%rbp)
movss  -0x2c(%rbp),%xmm0
movss  %xmm0,0x2e7a(%rip)
movss  0x2e7e(%rip),%xmm0
ucomiss 0x2e7f(%rip),%xmm0
jbe    11e1 <slas2+0xc1>
movss  0x2e69(%rip),%xmm0
movss  %xmm0,-0x30(%rbp)
jmp    11ee <slas2+0xce>
movss  0x2e5f(%rip),%xmm0
movss  %xmm0,-0x30(%rbp)
movss  -0x30(%rbp),%xmm0
movss  %xmm0,0x2e3d(%rip)
movss  0x2e31(%rip),%xmm0
xorps  %xmm1,%xmm1
ucomiss %xmm1,%xmm0
jne    134e <slas2+0x22e>
jp     134e <slas2+0x22e>
mov    -0x18(%rbp),%rax
xorps  %xmm0,%xmm0
movss  %xmm0,(%rax)
movss  0x2e10(%rip),%xmm0
xorps  %xmm1,%xmm1
ucomiss %xmm1,%xmm0
jne    124f <slas2+0x12f>
jp     124f <slas2+0x12f>
movss  0x2e02(%rip),%xmm0
mov    -0x20(%rbp),%rax
movss  %xmm0,(%rax)
jmp    1349 <slas2+0x229>
movss  0x2de1(%rip),%xmm1
movss  0x2de5(%rip),%xmm0
ucomiss %xmm1,%xmm0
jbe    127a <slas2+0x15a>
movss  0x2dc8(%rip),%xmm0
movss  %xmm0,-0x34(%rbp)
jmp    1287 <slas2+0x167>
movss  0x2dc2(%rip),%xmm0
movss  %xmm0,-0x34(%rbp)
movss  -0x34(%rbp),%xmm0
movss  %xmm0,-0x38(%rbp)
movss  0x2d9f(%rip),%xmm0
ucomiss 0x2da4(%rip),%xmm0
jbe    12b8 <slas2+0x198>
movss  0x2d8a(%rip),%xmm0
movss  %xmm0,-0x3c(%rbp)
jmp    12c5 <slas2+0x1a5>
movss  0x2d84(%rip),%xmm0
movss  %xmm0,-0x3c(%rbp)
movss  -0x38(%rbp),%xmm0
movss  -0x3c(%rbp),%xmm1
divss  %xmm1,%xmm0
movss  %xmm0,-0x24(%rbp)
movss  0x2d58(%rip),%xmm0
ucomiss 0x2d5d(%rip),%xmm0
jbe    12ff <slas2+0x1df>
movss  0x2d43(%rip),%xmm0
movss  %xmm0,-0x40(%rbp)
jmp    130c <slas2+0x1ec>
movss  0x2d3d(%rip),%xmm0
movss  %xmm0,-0x40(%rbp)
movss  -0x40(%rbp),%xmm0
movss  %xmm0,-0x44(%rbp)
movss  -0x24(%rbp),%xmm0
movss  -0x24(%rbp),%xmm1
mulss  %xmm1,%xmm0
movss  0xcd4(%rip),%xmm1
addss  %xmm1,%xmm0
call   1040 <sqrt@plt>
movaps %xmm0,%xmm1
movss  -0x44(%rbp),%xmm0
mulss  %xmm1,%xmm0
mov    -0x20(%rbp),%rax
movss  %xmm0,(%rax)
jmp    160a <slas2+0x4ea>
movss  0x2cee(%rip),%xmm1
movss  0x2cda(%rip),%xmm0
ucomiss %xmm1,%xmm0
jbe    1473 <slas2+0x353>
movss  0x2cc5(%rip),%xmm0
divss  0x2cc1(%rip),%xmm0
movss  0xc81(%rip),%xmm1
addss  %xmm1,%xmm0
movss  %xmm0,0x2cc1(%rip)
movss  0x2ca5(%rip),%xmm0
subss  0x2c99(%rip),%xmm0
divss  0x2c95(%rip),%xmm0
movss  %xmm0,0x2ca5(%rip)
movss  0x2c91(%rip),%xmm0
divss  0x2c7d(%rip),%xmm0
movss  %xmm0,-0x24(%rbp)
movss  -0x24(%rbp),%xmm0
mulss  -0x24(%rbp),%xmm0
movss  %xmm0,0x2c82(%rip)
movss  0x2c72(%rip),%xmm0
movss  0x2c6a(%rip),%xmm2
movss  0x2c6a(%rip),%xmm1
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
call   1040 <sqrt@plt>
movss  %xmm0,-0x48(%rbp)
movss  0x2c4c(%rip),%xmm0
movss  0x2c44(%rip),%xmm2
movss  0x2c40(%rip),%xmm1
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
call   1040 <sqrt@plt>
movss  -0x48(%rbp),%xmm1
addss  %xmm0,%xmm1
movss  0xbd2(%rip),%xmm0
divss  %xmm1,%xmm0
movss  %xmm0,0x2bfe(%rip)
movss  0x2bee(%rip),%xmm0
mulss  0x2bee(%rip),%xmm0
mov    -0x18(%rbp),%rax
movss  %xmm0,(%rax)
movss  0x2bda(%rip),%xmm0
divss  0x2bd6(%rip),%xmm0
mov    -0x20(%rbp),%rax
movss  %xmm0,(%rax)
jmp    1605 <slas2+0x4e5>
movss  0x2bbd(%rip),%xmm0
divss  0x2bc1(%rip),%xmm0
movss  %xmm0,0x2bc9(%rip)
movss  0x2bc1(%rip),%xmm0
xorps  %xmm1,%xmm1
ucomiss %xmm1,%xmm0
jne    14da <slas2+0x3ba>
jp     14da <slas2+0x3ba>
movss  0x2b87(%rip),%xmm0
mulss  0x2b83(%rip),%xmm0
divss  0x2b87(%rip),%xmm0
mov    -0x18(%rbp),%rax
movss  %xmm0,(%rax)
movss  0x2b77(%rip),%xmm0
mov    -0x20(%rbp),%rax
movss  %xmm0,(%rax)
jmp    1600 <slas2+0x4e0>
movss  0x2b52(%rip),%xmm0
divss  0x2b4e(%rip),%xmm0
movss  0xb0e(%rip),%xmm1
addss  %xmm1,%xmm0
movss  %xmm0,0x2b4e(%rip)
movss  0x2b32(%rip),%xmm0
subss  0x2b26(%rip),%xmm0
divss  0x2b22(%rip),%xmm0
movss  %xmm0,0x2b32(%rip)
movss  0x2b26(%rip),%xmm0
mulss  0x2b26(%rip),%xmm0
movss  %xmm0,-0x24(%rbp)
movss  0x2b15(%rip),%xmm0
mulss  0x2b11(%rip),%xmm0
movss  %xmm0,-0x28(%rbp)
movss  -0x24(%rbp),%xmm0
movss  -0x24(%rbp),%xmm1
mulss  %xmm1,%xmm0
movss  0xaa2(%rip),%xmm1
addss  %xmm1,%xmm0
call   1040 <sqrt@plt>
movss  %xmm0,-0x4c(%rbp)
movss  -0x28(%rbp),%xmm0
movss  -0x28(%rbp),%xmm1
mulss  %xmm1,%xmm0
movss  0xa7e(%rip),%xmm1
addss  %xmm1,%xmm0
call   1040 <sqrt@plt>
movss  -0x4c(%rbp),%xmm1
addss  %xmm0,%xmm1
movss  0xa64(%rip),%xmm0
divss  %xmm1,%xmm0
movss  %xmm0,0x2a94(%rip)
movss  0x2a84(%rip),%xmm0
mulss  0x2a84(%rip),%xmm0
mulss  0x2a94(%rip),%xmm0
mov    -0x18(%rbp),%rax
movss  %xmm0,(%rax)
mov    -0x18(%rbp),%rax
movss  (%rax),%xmm0
mov    -0x18(%rbp),%rax
addss  (%rax),%xmm0
movss  %xmm0,(%rax)
movss  0x2a60(%rip),%xmm0
movss  0x2a50(%rip),%xmm1
addss  0x2a48(%rip),%xmm1
divss  %xmm1,%xmm0
mov    -0x20(%rbp),%rax
movss  %xmm0,(%rax)
jmp    1605 <slas2+0x4e5>
jmp    160a <slas2+0x4ea>
add    $0x50,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<slas2>:
push   %r14
push   %rbx
sub    $0x18,%rsp
mov    %rsi,%r14
mov    %rdi,%rbx
movaps %xmm0,%xmm4
movaps 0xed9(%rip),%xmm0
andps  %xmm0,%xmm4
andps  %xmm0,%xmm1
movss  %xmm1,0x2eff(%rip)
andps  %xmm0,%xmm2
movaps %xmm4,%xmm0
minss  %xmm2,%xmm0
movss  %xmm0,0x2ee5(%rip)
maxss  %xmm2,%xmm4
movss  %xmm4,0x2edd(%rip)
xorps  %xmm2,%xmm2
ucomiss %xmm2,%xmm0
jne    119e <slas2+0x8e>
jp     119e <slas2+0x8e>
movl   $0x0,(%rbx)
ucomiss %xmm2,%xmm4
jne    116e <slas2+0x5e>
jnp    135c <slas2+0x24c>
movaps %xmm4,%xmm0
minss  %xmm1,%xmm0
maxss  %xmm1,%xmm4
divss  %xmm4,%xmm0
mulss  %xmm0,%xmm0
addss  0xe87(%rip),%xmm0
xorps  %xmm1,%xmm1
ucomiss %xmm1,%xmm0
jb     121d <slas2+0x10d>
sqrtss %xmm0,%xmm0
jmp    122a <slas2+0x11a>
ucomiss %xmm1,%xmm4
jbe    11eb <slas2+0xdb>
movaps %xmm4,%xmm2
subss  %xmm0,%xmm2
divss  %xmm4,%xmm0
addss  0xe5a(%rip),%xmm0
divss  %xmm4,%xmm2
movss  %xmm2,0x2e76(%rip)
divss  %xmm4,%xmm1
mulss  %xmm1,%xmm1
movss  %xmm1,0x2e6a(%rip)
mulss  %xmm0,%xmm0
addss  %xmm1,%xmm0
xorps  %xmm2,%xmm2
ucomiss %xmm2,%xmm0
jb     1236 <slas2+0x126>
xorps  %xmm1,%xmm1
sqrtss %xmm0,%xmm1
jmp    1241 <slas2+0x131>
movaps %xmm4,%xmm3
divss  %xmm1,%xmm3
movss  %xmm3,0x2e42(%rip)
xorps  %xmm2,%xmm2
ucomiss %xmm2,%xmm3
jne    12a0 <slas2+0x190>
jp     12a0 <slas2+0x190>
mulss  %xmm4,%xmm0
divss  %xmm1,%xmm0
movss  %xmm0,(%rbx)
jmp    135c <slas2+0x24c>
movaps %xmm4,(%rsp)
call   1030 <sqrt@plt>
movaps (%rsp),%xmm4
mulss  %xmm0,%xmm4
movaps %xmm4,%xmm1
jmp    135c <slas2+0x24c>
call   1030 <sqrt@plt>
xorps  %xmm2,%xmm2
movaps %xmm0,%xmm1
movss  0x2def(%rip),%xmm0
mulss  %xmm0,%xmm0
addss  0x2de7(%rip),%xmm0
ucomiss %xmm2,%xmm0
jb     1260 <slas2+0x150>
sqrtss %xmm0,%xmm0
jmp    126f <slas2+0x15f>
movss  %xmm1,(%rsp)
call   1030 <sqrt@plt>
movss  (%rsp),%xmm1
addss  %xmm0,%xmm1
movss  0xd99(%rip),%xmm0
divss  %xmm1,%xmm0
movss  0x2da5(%rip),%xmm1
mulss  %xmm0,%xmm1
movss  %xmm1,(%rbx)
movss  0x2d99(%rip),%xmm1
divss  %xmm0,%xmm1
jmp    135c <slas2+0x24c>
movaps %xmm4,%xmm5
subss  %xmm0,%xmm5
divss  %xmm4,%xmm0
movss  0xd5d(%rip),%xmm1
addss  %xmm1,%xmm0
divss  %xmm4,%xmm5
movss  %xmm5,0x2d75(%rip)
mulss  %xmm3,%xmm0
mulss  %xmm3,%xmm5
mulss  %xmm0,%xmm0
addss  %xmm1,%xmm0
ucomiss %xmm2,%xmm0
jb     12e1 <slas2+0x1d1>
xorps  %xmm1,%xmm1
sqrtss %xmm0,%xmm1
jmp    12f1 <slas2+0x1e1>
movaps %xmm5,(%rsp)
call   1030 <sqrt@plt>
movaps (%rsp),%xmm5
movaps %xmm0,%xmm1
mulss  %xmm5,%xmm5
addss  0xd13(%rip),%xmm5
xorps  %xmm0,%xmm0
ucomiss %xmm0,%xmm5
jb     130e <slas2+0x1fe>
xorps  %xmm0,%xmm0
sqrtss %xmm5,%xmm0
jmp    1320 <slas2+0x210>
movaps %xmm5,%xmm0
movss  %xmm1,(%rsp)
call   1030 <sqrt@plt>
movss  (%rsp),%xmm1
addss  %xmm0,%xmm1
movss  0xce4(%rip),%xmm2
divss  %xmm1,%xmm2
movss  0x2cf4(%rip),%xmm0
mulss  %xmm2,%xmm0
mulss  0x2cf8(%rip),%xmm0
addss  %xmm0,%xmm0
movss  %xmm0,(%rbx)
movss  0x2ce0(%rip),%xmm1
addss  %xmm2,%xmm2
divss  %xmm2,%xmm1
movss  %xmm1,(%r14)
add    $0x18,%rsp
pop    %rbx
pop    %r14
ret

LLVM IR (-O0):
@slas2.fhmn = internal global float 0.000000e+00
@slas2.fhmx = internal global float 0.000000e+00
@slas2.c = internal global float 0.000000e+00
@slas2.fa = internal global float 0.000000e+00
@slas2.ga = internal global float 0.000000e+00
@slas2.ha = internal global float 0.000000e+00
@slas2.as = internal global float 0.000000e+00
@slas2.at = internal global float 0.000000e+00
@slas2.au = internal global float 0.000000e+00
define void @slas2(float %0, float %1, float %2, float* %3, float* %4) {
%6 = alloca float
%7 = alloca float
%8 = alloca float
%9 = alloca float*
%10 = alloca float*
%11 = alloca float
%12 = alloca float
store float %0, float* %6
store float %1, float* %7
store float %2, float* %8
store float* %3, float** %9
store float* %4, float** %10
%13 = load float, float* %6
%14 = call float @fabs(float %13)
store float %14, float* @slas2.fa
%15 = load float, float* %7
%16 = call float @fabs(float %15)
store float %16, float* @slas2.ga
%17 = load float, float* %8
%18 = call float @fabs(float %17)
store float %18, float* @slas2.ha
%19 = load float, float* @slas2.fa
%20 = load float, float* @slas2.ha
%21 = fcmp olt float %19, %20
br i1 %21, label %22, label %24
22: ; preds = %5
%23 = load float, float* @slas2.fa
br label %26
24: ; preds = %5
%25 = load float, float* @slas2.ha
br label %26
26: ; preds = %24, %22
%27 = phi float [ %23, %22 ], [ %25, %24 ]
store float %27, float* @slas2.fhmn
%28 = load float, float* @slas2.fa
%29 = load float, float* @slas2.ha
%30 = fcmp ogt float %28, %29
br i1 %30, label %31, label %33
31: ; preds = %26
%32 = load float, float* @slas2.fa
br label %35
33: ; preds = %26
%34 = load float, float* @slas2.ha
br label %35
35: ; preds = %33, %31
%36 = phi float [ %32, %31 ], [ %34, %33 ]
store float %36, float* @slas2.fhmx
%37 = load float, float* @slas2.fhmn
%38 = fcmp oeq float %37, 0.000000e+00
br i1 %38, label %39, label %82
39: ; preds = %35
%40 = load float*, float** %9
store float 0.000000e+00, float* %40
%41 = load float, float* @slas2.fhmx
%42 = fcmp oeq float %41, 0.000000e+00
br i1 %42, label %43, label %46
43: ; preds = %39
%44 = load float, float* @slas2.ga
%45 = load float*, float** %10
store float %44, float* %45
br label %81
46: ; preds = %39
%47 = load float, float* @slas2.fhmx
%48 = load float, float* @slas2.ga
%49 = fcmp olt float %47, %48
br i1 %49, label %50, label %52
50: ; preds = %46
%51 = load float, float* @slas2.fhmx
br label %54
52: ; preds = %46
%53 = load float, float* @slas2.ga
br label %54
54: ; preds = %52, %50
%55 = phi float [ %51, %50 ], [ %53, %52 ]
%56 = load float, float* @slas2.fhmx
%57 = load float, float* @slas2.ga
%58 = fcmp ogt float %56, %57
br i1 %58, label %59, label %61
59: ; preds = %54
%60 = load float, float* @slas2.fhmx
br label %63
61: ; preds = %54
%62 = load float, float* @slas2.ga
br label %63
63: ; preds = %61, %59
%64 = phi float [ %60, %59 ], [ %62, %61 ]
%65 = fdiv float %55, %64
store float %65, float* %11
%66 = load float, float* @slas2.fhmx
%67 = load float, float* @slas2.ga
%68 = fcmp ogt float %66, %67
br i1 %68, label %69, label %71
69: ; preds = %63
%70 = load float, float* @slas2.fhmx
br label %73
71: ; preds = %63
%72 = load float, float* @slas2.ga
br label %73
73: ; preds = %71, %69
%74 = phi float [ %70, %69 ], [ %72, %71 ]
%75 = load float, float* %11
%76 = load float, float* %11
%77 = call float @llvm.fmuladd.f32(float %75, float %76, float 1.000000e+00)
%78 = call float @sqrt(float %77)
%79 = fmul float %74, %78
%80 = load float*, float** %10
store float %79, float* %80
br label %81
81: ; preds = %73, %43
br label %182
82: ; preds = %35
%83 = load float, float* @slas2.ga
%84 = load float, float* @slas2.fhmx
%85 = fcmp olt float %83, %84
br i1 %85, label %86, label %122
86: ; preds = %82
%87 = load float, float* @slas2.fhmn
%88 = load float, float* @slas2.fhmx
%89 = fdiv float %87, %88
%90 = fadd float %89, 1.000000e+00
store float %90, float* @slas2.as
%91 = load float, float* @slas2.fhmx
%92 = load float, float* @slas2.fhmn
%93 = fsub float %91, %92
%94 = load float, float* @slas2.fhmx
%95 = fdiv float %93, %94
store float %95, float* @slas2.at
%96 = load float, float* @slas2.ga
%97 = load float, float* @slas2.fhmx
%98 = fdiv float %96, %97
store float %98, float* %11
%99 = load float, float* %11
%100 = load float, float* %11
%101 = fmul float %99, %100
store float %101, float* @slas2.au
%102 = load float, float* @slas2.as
%103 = load float, float* @slas2.as
%104 = load float, float* @slas2.au
%105 = call float @llvm.fmuladd.f32(float %102, float %103, float %104)
%106 = call float @sqrt(float %105)
%107 = load float, float* @slas2.at
%108 = load float, float* @slas2.at
%109 = load float, float* @slas2.au
%110 = call float @llvm.fmuladd.f32(float %107, float %108, float %109)
%111 = call float @sqrt(float %110)
%112 = fadd float %106, %111
%113 = fdiv float 2.000000e+00, %112
store float %113, float* @slas2.c
%114 = load float, float* @slas2.fhmn
%115 = load float, float* @slas2.c
%116 = fmul float %114, %115
%117 = load float*, float** %9
store float %116, float* %117
%118 = load float, float* @slas2.fhmx
%119 = load float, float* @slas2.c
%120 = fdiv float %118, %119
%121 = load float*, float** %10
store float %120, float* %121
br label %181
122: ; preds = %82
%123 = load float, float* @slas2.fhmx
%124 = load float, float* @slas2.ga
%125 = fdiv float %123, %124
store float %125, float* @slas2.au
%126 = load float, float* @slas2.au
%127 = fcmp oeq float %126, 0.000000e+00
br i1 %127, label %128, label %137
128: ; preds = %122
%129 = load float, float* @slas2.fhmn
%130 = load float, float* @slas2.fhmx
%131 = fmul float %129, %130
%132 = load float, float* @slas2.ga
%133 = fdiv float %131, %132
%134 = load float*, float** %9
store float %133, float* %134
%135 = load float, float* @slas2.ga
%136 = load float*, float** %10
store float %135, float* %136
br label %180
137: ; preds = %122
%138 = load float, float* @slas2.fhmn
%139 = load float, float* @slas2.fhmx
%140 = fdiv float %138, %139
%141 = fadd float %140, 1.000000e+00
store float %141, float* @slas2.as
%142 = load float, float* @slas2.fhmx
%143 = load float, float* @slas2.fhmn
%144 = fsub float %142, %143
%145 = load float, float* @slas2.fhmx
%146 = fdiv float %144, %145
store float %146, float* @slas2.at
%147 = load float, float* @slas2.as
%148 = load float, float* @slas2.au
%149 = fmul float %147, %148
store float %149, float* %11
%150 = load float, float* @slas2.at
%151 = load float, float* @slas2.au
%152 = fmul float %150, %151
store float %152, float* %12
%153 = load float, float* %11
%154 = load float, float* %11
%155 = call float @llvm.fmuladd.f32(float %153, float %154, float 1.000000e+00)
%156 = call float @sqrt(float %155)
%157 = load float, float* %12
%158 = load float, float* %12
%159 = call float @llvm.fmuladd.f32(float %157, float %158, float 1.000000e+00)
%160 = call float @sqrt(float %159)
%161 = fadd float %156, %160
%162 = fdiv float 1.000000e+00, %161
store float %162, float* @slas2.c
%163 = load float, float* @slas2.fhmn
%164 = load float, float* @slas2.c
%165 = fmul float %163, %164
%166 = load float, float* @slas2.au
%167 = fmul float %165, %166
%168 = load float*, float** %9
store float %167, float* %168
%169 = load float*, float** %9
%170 = load float, float* %169
%171 = load float*, float** %9
%172 = load float, float* %171
%173 = fadd float %172, %170
store float %173, float* %171
%174 = load float, float* @slas2.ga
%175 = load float, float* @slas2.c
%176 = load float, float* @slas2.c
%177 = fadd float %175, %176
%178 = fdiv float %174, %177
%179 = load float*, float** %10
store float %178, float* %179
br label %180
180: ; preds = %137, %128
br label %181
181: ; preds = %180, %86
br label %182
182: ; preds = %181, %81
ret void
}

LLVM IR (-O2):
@slas2.fhmn = internal unnamed_addr global float 0.000000e+00
@slas2.fhmx = internal unnamed_addr global float 0.000000e+00
@slas2.ga = internal unnamed_addr global float 0.000000e+00
@slas2.at = internal unnamed_addr global float 0.000000e+00
@slas2.au = internal unnamed_addr global float 0.000000e+00
define void @slas2(float %0, float %1, float %2, float* nocapture writeonly %3, float* nocapture writeonly %4) {
%6 = tail call float @llvm.fabs.f32(float %0)
%7 = tail call float @llvm.fabs.f32(float %1)
store float %7, float* @slas2.ga
%8 = tail call float @llvm.fabs.f32(float %2)
%9 = fcmp olt float %6, %8
%10 = select i1 %9, float %6, float %8
store float %10, float* @slas2.fhmn
%11 = fcmp ogt float %6, %8
%12 = select i1 %11, float %6, float %8
store float %12, float* @slas2.fhmx
%13 = fcmp oeq float %10, 0.000000e+00
br i1 %13, label %14, label %25
14: ; preds = %5
store float 0.000000e+00, float* %3
%15 = fcmp oeq float %12, 0.000000e+00
br i1 %15, label %73, label %16
16: ; preds = %14
%17 = fcmp olt float %12, %7
%18 = select i1 %17, float %12, float %7
%19 = fcmp ogt float %12, %7
%20 = select i1 %19, float %12, float %7
%21 = fdiv float %18, %20
%22 = tail call float @llvm.fmuladd.f32(float %21, float %21, float 1.000000e+00)
%23 = tail call float @sqrt(float %22)
%24 = fmul float %20, %23
br label %73
25: ; preds = %5
%26 = fcmp olt float %7, %12
br i1 %26, label %27, label %46
27: ; preds = %25
%28 = fdiv float %10, %12
%29 = fadd float %28, 1.000000e+00
%30 = fsub float %12, %10
%31 = fdiv float %30, %12
store float %31, float* @slas2.at
%32 = fdiv float %7, %12
%33 = fmul float %32, %32
store float %33, float* @slas2.au
%34 = tail call float @llvm.fmuladd.f32(float %29, float %29, float %33)
%35 = tail call float @sqrt(float %34)
%36 = load float, float* @slas2.at
%37 = load float, float* @slas2.au
%38 = tail call float @llvm.fmuladd.f32(float %36, float %36, float %37)
%39 = tail call float @sqrt(float %38)
%40 = fadd float %35, %39
%41 = fdiv float 2.000000e+00, %40
%42 = load float, float* @slas2.fhmn
%43 = fmul float %42, %41
store float %43, float* %3
%44 = load float, float* @slas2.fhmx
%45 = fdiv float %44, %41
br label %73
46: ; preds = %25
%47 = fdiv float %12, %7
store float %47, float* @slas2.au
%48 = fcmp oeq float %47, 0.000000e+00
br i1 %48, label %49, label %52
49: ; preds = %46
%50 = fmul float %10, %12
%51 = fdiv float %50, %7
store float %51, float* %3
br label %73
52: ; preds = %46
%53 = fdiv float %10, %12
%54 = fadd float %53, 1.000000e+00
%55 = fsub float %12, %10
%56 = fdiv float %55, %12
store float %56, float* @slas2.at
%57 = fmul float %47, %54
%58 = fmul float %47, %56
%59 = tail call float @llvm.fmuladd.f32(float %57, float %57, float 1.000000e+00)
%60 = tail call float @sqrt(float %59)
%61 = tail call float @llvm.fmuladd.f32(float %58, float %58, float 1.000000e+00)
%62 = tail call float @sqrt(float %61)
%63 = fadd float %60, %62
%64 = fdiv float 1.000000e+00, %63
%65 = load float, float* @slas2.fhmn
%66 = fmul float %65, %64
%67 = load float, float* @slas2.au
%68 = fmul float %66, %67
%69 = fadd float %68, %68
store float %69, float* %3
%70 = load float, float* @slas2.ga
%71 = fadd float %64, %64
%72 = fdiv float %70, %71
br label %73
73: ; preds = %14, %27, %52, %49, %16
%74 = phi float [ %45, %27 ], [ %72, %52 ], [ %7, %49 ], [ %24, %16 ], [ %7, %14 ]
store float %74, float* %4
ret void
}