void RGB2HSL(float r, float g, float b, float *outH, float *outS, float *outL) {
  float h, s, l, v, m, vm, r2, g2, b2;
  h = 0;
  s = 0;
  l = 0;
  v = (((r) > (g)) ? (r) : (g));
  v = (((v) > (b)) ? (v) : (b));
  m = (((r) < (g)) ? (r) : (g));
  m = (((m) < (b)) ? (m) : (b));
  l = (m + v) / 2.0f;
  if (l <= 0.0) {
    if (outH)
      *outH = h;
    if (outS)
      *outS = s;
    if (outL)
      *outL = l;
    return;
  }
  vm = v - m;
  s = vm;
  if (s > 0.0f) {
    s /= (l <= 0.5f) ? (v + m) : (2.0 - v - m);
  } else {
    if (outH)
      *outH = h;
    if (outS)
      *outS = s;
    if (outL)
      *outL = l;
    return;
  }
  r2 = (v - r) / vm;
  g2 = (v - g) / vm;
  b2 = (v - b) / vm;
  if (r == v) {
    h = (g == m ? 5.0f + b2 : 1.0f - g2);
  } else if (g == v) {
    h = (b == m ? 1.0f + r2 : 3.0 - b2);
  } else {
    h = (r == m ? 3.0f + g2 : 5.0f - r2);
  }
  h /= 6.0f;
  if (outH)
    *outH = h;
  if (outS)
    *outS = s;
  if (outL)
    *outL = l;
}


x86 assembly (clang, -O0):
<RGB2HSL>:
push   %rbp
mov    %rsp,%rbp
movss  %xmm0,-0x4(%rbp)
movss  %xmm1,-0x8(%rbp)
movss  %xmm2,-0xc(%rbp)
mov    %rdi,-0x18(%rbp)
mov    %rsi,-0x20(%rbp)
mov    %rdx,-0x28(%rbp)
xorps  %xmm0,%xmm0
movss  %xmm0,-0x2c(%rbp)
xorps  %xmm0,%xmm0
movss  %xmm0,-0x30(%rbp)
xorps  %xmm0,%xmm0
movss  %xmm0,-0x34(%rbp)
movss  -0x4(%rbp),%xmm0
ucomiss -0x8(%rbp),%xmm0
jbe    1155 <RGB2HSL+0x55>
movss  -0x4(%rbp),%xmm0
movss  %xmm0,-0x50(%rbp)
jmp    115f <RGB2HSL+0x5f>
movss  -0x8(%rbp),%xmm0
movss  %xmm0,-0x50(%rbp)
movss  -0x50(%rbp),%xmm0
movss  %xmm0,-0x38(%rbp)
movss  -0x38(%rbp),%xmm0
ucomiss -0xc(%rbp),%xmm0
jbe    1187 <RGB2HSL+0x87>
movss  -0x38(%rbp),%xmm0
movss  %xmm0,-0x54(%rbp)
jmp    1191 <RGB2HSL+0x91>
movss  -0xc(%rbp),%xmm0
movss  %xmm0,-0x54(%rbp)
movss  -0x54(%rbp),%xmm0
movss  %xmm0,-0x38(%rbp)
movss  -0x4(%rbp),%xmm1
movss  -0x8(%rbp),%xmm0
ucomiss %xmm1,%xmm0
jbe    11bd <RGB2HSL+0xbd>
movss  -0x4(%rbp),%xmm0
movss  %xmm0,-0x58(%rbp)
jmp    11c7 <RGB2HSL+0xc7>
movss  -0x8(%rbp),%xmm0
movss  %xmm0,-0x58(%rbp)
movss  -0x58(%rbp),%xmm0
movss  %xmm0,-0x3c(%rbp)
movss  -0x3c(%rbp),%xmm1
movss  -0xc(%rbp),%xmm0
ucomiss %xmm1,%xmm0
jbe    11f3 <RGB2HSL+0xf3>
movss  -0x3c(%rbp),%xmm0
movss  %xmm0,-0x5c(%rbp)
jmp    11fd <RGB2HSL+0xfd>
movss  -0xc(%rbp),%xmm0
movss  %xmm0,-0x5c(%rbp)
movss  -0x5c(%rbp),%xmm0
movss  %xmm0,-0x3c(%rbp)
movss  -0x3c(%rbp),%xmm0
addss  -0x38(%rbp),%xmm0
movss  0xde7(%rip),%xmm1
divss  %xmm1,%xmm0
movss  %xmm0,-0x34(%rbp)
movss  -0x34(%rbp),%xmm0
cvtss2sd %xmm0,%xmm1
xorps  %xmm0,%xmm0
ucomisd %xmm1,%xmm0
jb     1285 <RGB2HSL+0x185>
cmpq   $0x0,-0x18(%rbp)
je     1250 <RGB2HSL+0x150>
movss  -0x2c(%rbp),%xmm0
mov    -0x18(%rbp),%rax
movss  %xmm0,(%rax)
cmpq   $0x0,-0x20(%rbp)
je     1268 <RGB2HSL+0x168>
movss  -0x30(%rbp),%xmm0
mov    -0x20(%rbp),%rax
movss  %xmm0,(%rax)
cmpq   $0x0,-0x28(%rbp)
je     1280 <RGB2HSL+0x180>
movss  -0x34(%rbp),%xmm0
mov    -0x28(%rbp),%rax
movss  %xmm0,(%rax)
jmp    1528 <RGB2HSL+0x428>
movss  -0x38(%rbp),%xmm0
subss  -0x3c(%rbp),%xmm0
movss  %xmm0,-0x40(%rbp)
movss  -0x40(%rbp),%xmm0
movss  %xmm0,-0x30(%rbp)
movss  -0x30(%rbp),%xmm0
xorps  %xmm1,%xmm1
ucomiss %xmm1,%xmm0
jbe    1320 <RGB2HSL+0x220>
movss  0xd4d(%rip),%xmm0
ucomiss -0x34(%rbp),%xmm0
jb     12d9 <RGB2HSL+0x1d9>
movss  -0x38(%rbp),%xmm0
addss  -0x3c(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  %xmm0,-0x68(%rbp)
jmp    1300 <RGB2HSL+0x200>
movss  -0x38(%rbp),%xmm0
cvtss2sd %xmm0,%xmm1
movsd  0xd2e(%rip),%xmm0
subsd  %xmm1,%xmm0
movss  -0x3c(%rbp),%xmm1
cvtss2sd %xmm1,%xmm1
subsd  %xmm1,%xmm0
movsd  %xmm0,-0x68(%rbp)
movsd  -0x68(%rbp),%xmm1
movss  -0x30(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
divsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x30(%rbp)
jmp    136d <RGB2HSL+0x26d>
cmpq   $0x0,-0x18(%rbp)
je     1338 <RGB2HSL+0x238>
movss  -0x2c(%rbp),%xmm0
mov    -0x18(%rbp),%rax
movss  %xmm0,(%rax)
cmpq   $0x0,-0x20(%rbp)
je     1350 <RGB2HSL+0x250>
movss  -0x30(%rbp),%xmm0
mov    -0x20(%rbp),%rax
movss  %xmm0,(%rax)
cmpq   $0x0,-0x28(%rbp)
je     1368 <RGB2HSL+0x268>
movss  -0x34(%rbp),%xmm0
mov    -0x28(%rbp),%rax
movss  %xmm0,(%rax)
jmp    1528 <RGB2HSL+0x428>
movss  -0x38(%rbp),%xmm0
subss  -0x4(%rbp),%xmm0
divss  -0x40(%rbp),%xmm0
movss  %xmm0,-0x44(%rbp)
movss  -0x38(%rbp),%xmm0
subss  -0x8(%rbp),%xmm0
divss  -0x40(%rbp),%xmm0
movss  %xmm0,-0x48(%rbp)
movss  -0x38(%rbp),%xmm0
subss  -0xc(%rbp),%xmm0
divss  -0x40(%rbp),%xmm0
movss  %xmm0,-0x4c(%rbp)
movss  -0x4(%rbp),%xmm0
ucomiss -0x38(%rbp),%xmm0
jne    140b <RGB2HSL+0x30b>
jp     140b <RGB2HSL+0x30b>
movss  -0x8(%rbp),%xmm0
ucomiss -0x3c(%rbp),%xmm0
jne    13ea <RGB2HSL+0x2ea>
jp     13ea <RGB2HSL+0x2ea>
movss  0xc2d(%rip),%xmm0
addss  -0x4c(%rbp),%xmm0
movss  %xmm0,-0x6c(%rbp)
jmp    13fc <RGB2HSL+0x2fc>
movss  0xc1e(%rip),%xmm0
subss  -0x48(%rbp),%xmm0
movss  %xmm0,-0x6c(%rbp)
movss  -0x6c(%rbp),%xmm0
movss  %xmm0,-0x2c(%rbp)
jmp    14ca <RGB2HSL+0x3ca>
movss  -0x8(%rbp),%xmm0
ucomiss -0x38(%rbp),%xmm0
jne    147d <RGB2HSL+0x37d>
jp     147d <RGB2HSL+0x37d>
movss  -0xc(%rbp),%xmm0
ucomiss -0x3c(%rbp),%xmm0
jne    1450 <RGB2HSL+0x350>
jp     1450 <RGB2HSL+0x350>
movss  0xbd3(%rip),%xmm0
addss  -0x44(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  %xmm0,-0x78(%rbp)
jmp    146a <RGB2HSL+0x36a>
movss  -0x4c(%rbp),%xmm0
cvtss2sd %xmm0,%xmm1
movsd  0xbbf(%rip),%xmm0
subsd  %xmm1,%xmm0
movsd  %xmm0,-0x78(%rbp)
movsd  -0x78(%rbp),%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x2c(%rbp)
jmp    14c5 <RGB2HSL+0x3c5>
movss  -0x4(%rbp),%xmm0
ucomiss -0x3c(%rbp),%xmm0
jne    14a9 <RGB2HSL+0x3a9>
jp     14a9 <RGB2HSL+0x3a9>
movss  0xb72(%rip),%xmm0
addss  -0x48(%rbp),%xmm0
movss  %xmm0,-0x7c(%rbp)
jmp    14bb <RGB2HSL+0x3bb>
movss  0xb57(%rip),%xmm0
subss  -0x44(%rbp),%xmm0
movss  %xmm0,-0x7c(%rbp)
movss  -0x7c(%rbp),%xmm0
movss  %xmm0,-0x2c(%rbp)
jmp    14ca <RGB2HSL+0x3ca>
movss  -0x2c(%rbp),%xmm0
movss  0xb3d(%rip),%xmm1
divss  %xmm1,%xmm0
movss  %xmm0,-0x2c(%rbp)
cmpq   $0x0,-0x18(%rbp)
je     14f8 <RGB2HSL+0x3f8>
movss  -0x2c(%rbp),%xmm0
mov    -0x18(%rbp),%rax
movss  %xmm0,(%rax)
cmpq   $0x0,-0x20(%rbp)
je     1510 <RGB2HSL+0x410>
movss  -0x30(%rbp),%xmm0
mov    -0x20(%rbp),%rax
movss  %xmm0,(%rax)
cmpq   $0x0,-0x28(%rbp)
je     1528 <RGB2HSL+0x428>
movss  -0x34(%rbp),%xmm0
mov    -0x28(%rbp),%rax
movss  %xmm0,(%rax)
pop    %rbp
ret

x86 assembly (clang, -O2):
<RGB2HSL>:
movaps %xmm0,%xmm7
maxss  %xmm1,%xmm7
maxss  %xmm2,%xmm7
movaps %xmm0,%xmm5
minss  %xmm1,%xmm5
minss  %xmm2,%xmm5
movaps %xmm5,%xmm4
addss  %xmm7,%xmm4
movss  0xedb(%rip),%xmm3
mulss  %xmm4,%xmm3
xorps  %xmm6,%xmm6
ucomiss %xmm3,%xmm6
jae    1170 <RGB2HSL+0x70>
movaps %xmm7,%xmm9
subss  %xmm5,%xmm9
ucomiss %xmm6,%xmm9
jbe    118f <RGB2HSL+0x8f>
movss  0xeb8(%rip),%xmm6
ucomiss %xmm3,%xmm6
jae    11ad <RGB2HSL+0xad>
xorps  %xmm4,%xmm4
cvtss2sd %xmm7,%xmm4
movsd  0xebb(%rip),%xmm8
subsd  %xmm4,%xmm8
xorps  %xmm4,%xmm4
cvtss2sd %xmm5,%xmm4
subsd  %xmm4,%xmm8
jmp    11b2 <RGB2HSL+0xb2>
test   %rdi,%rdi
je     117b <RGB2HSL+0x7b>
movl   $0x0,(%rdi)
test   %rsi,%rsi
je     1255 <RGB2HSL+0x155>
movl   $0x0,(%rsi)
jmp    1255 <RGB2HSL+0x155>
test   %rdi,%rdi
je     119a <RGB2HSL+0x9a>
movl   $0x0,(%rdi)
test   %rsi,%rsi
je     1255 <RGB2HSL+0x155>
movss  %xmm9,(%rsi)
jmp    1255 <RGB2HSL+0x155>
cvtss2sd %xmm4,%xmm8
movaps %xmm7,%xmm6
subss  %xmm1,%xmm6
divss  %xmm9,%xmm6
movaps %xmm7,%xmm4
subss  %xmm2,%xmm4
divss  %xmm9,%xmm4
ucomiss %xmm0,%xmm7
jne    11f5 <RGB2HSL+0xf5>
jp     11f5 <RGB2HSL+0xf5>
addss  0xe2f(%rip),%xmm4
movss  0xe2b(%rip),%xmm0
subss  %xmm6,%xmm0
cmpeqss %xmm1,%xmm5
movaps %xmm5,%xmm1
andnps %xmm0,%xmm1
andps  %xmm4,%xmm5
jmp    1227 <RGB2HSL+0x127>
ucomiss %xmm1,%xmm7
subss  %xmm0,%xmm7
divss  %xmm9,%xmm7
jne    125f <RGB2HSL+0x15f>
jp     125f <RGB2HSL+0x15f>
addss  0xdff(%rip),%xmm7
movss  0xdef(%rip),%xmm0
subss  %xmm4,%xmm0
cmpeqss %xmm2,%xmm5
movaps %xmm5,%xmm1
andnps %xmm0,%xmm1
andps  %xmm7,%xmm5
orps   %xmm1,%xmm5
test   %rdi,%rdi
je     123b <RGB2HSL+0x13b>
divss  0xdd9(%rip),%xmm5
movss  %xmm5,(%rdi)
test   %rsi,%rsi
je     1255 <RGB2HSL+0x155>
xorps  %xmm0,%xmm0
cvtss2sd %xmm9,%xmm0
divsd  %xmm8,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,(%rsi)
test   %rdx,%rdx
je     125e <RGB2HSL+0x15e>
movss  %xmm3,(%rdx)
ret
addss  0xd9d(%rip),%xmm6
movss  0xd99(%rip),%xmm1
subss  %xmm7,%xmm1
cmpeqss %xmm0,%xmm5
movaps %xmm5,%xmm0
andnps %xmm1,%xmm0
andps  %xmm6,%xmm5
orps   %xmm0,%xmm5
test   %rdi,%rdi
jne    122f <RGB2HSL+0x12f>
jmp    123b <RGB2HSL+0x13b>

LLVM IR (-O0):
define void @RGB2HSL(float %0, float %1, float %2, float* %3, float* %4, float* %5) {
%7 = alloca float
%8 = alloca float
%9 = alloca float
%10 = alloca float*
%11 = alloca float*
%12 = alloca float*
%13 = alloca float
%14 = alloca float
%15 = alloca float
%16 = alloca float
%17 = alloca float
%18 = alloca float
%19 = alloca float
%20 = alloca float
%21 = alloca float
store float %0, float* %7
store float %1, float* %8
store float %2, float* %9
store float* %3, float** %10
store float* %4, float** %11
store float* %5, float** %12
store float 0.000000e+00, float* %13
store float 0.000000e+00, float* %14
store float 0.000000e+00, float* %15
%22 = load float, float* %7
%23 = load float, float* %8
%24 = fcmp ogt float %22, %23
br i1 %24, label %25, label %27
25: ; preds = %6
%26 = load float, float* %7
br label %29
27: ; preds = %6
%28 = load float, float* %8
br label %29
29: ; preds = %27, %25
%30 = phi float [ %26, %25 ], [ %28, %27 ]
store float %30, float* %16
%31 = load float, float* %16
%32 = load float, float* %9
%33 = fcmp ogt float %31, %32
br i1 %33, label %34, label %36
34: ; preds = %29
%35 = load float, float* %16
br label %38
36: ; preds = %29
%37 = load float, float* %9
br label %38
38: ; preds = %36, %34
%39 = phi float [ %35, %34 ], [ %37, %36 ]
store float %39, float* %16
%40 = load float, float* %7
%41 = load float, float* %8
%42 = fcmp olt float %40, %41
br i1 %42, label %43, label %45
43: ; preds = %38
%44 = load float, float* %7
br label %47
45: ; preds = %38
%46 = load float, float* %8
br label %47
47: ; preds = %45, %43
%48 = phi float [ %44, %43 ], [ %46, %45 ]
store float %48, float* %17
%49 = load float, float* %17
%50 = load float, float* %9
%51 = fcmp olt float %49, %50
br i1 %51, label %52, label %54
52: ; preds = %47
%53 = load float, float* %17
br label %56
54: ; preds = %47
%55 = load float, float* %9
br label %56
56: ; preds = %54, %52
%57 = phi float [ %53, %52 ], [ %55, %54 ]
store float %57, float* %17
%58 = load float, float* %17
%59 = load float, float* %16
%60 = fadd float %58, %59
%61 = fdiv float %60, 2.000000e+00
store float %61, float* %15
%62 = load float, float* %15
%63 = fpext float %62 to double
%64 = fcmp ole double %63, 0.000000e+00
br i1 %64, label %65, label %84
65: ; preds = %56
%66 = load float*, float** %10
%67 = icmp ne float* %66, null
br i1 %67, label %68, label %71
68: ; preds = %65
%69 = load float, float* %13
%70 = load float*, float** %10
store float %69, float* %70
br label %71
71: ; preds = %68, %65
%72 = load float*, float** %11
%73 = icmp ne float* %72, null
br i1 %73, label %74, label %77
74: ; preds = %71
%75 = load float, float* %14
%76 = load float*, float** %11
store float %75, float* %76
br label %77
77: ; preds = %74, %71
%78 = load float*, float** %12
%79 = icmp ne float* %78, null
br i1 %79, label %80, label %83
80: ; preds = %77
%81 = load float, float* %15
%82 = load float*, float** %12
store float %81, float* %82
br label %83
83: ; preds = %80, %77
br label %214
84: ; preds = %56
%85 = load float, float* %16
%86 = load float, float* %17
%87 = fsub float %85, %86
store float %87, float* %18
%88 = load float, float* %18
store float %88, float* %14
%89 = load float, float* %14
%90 = fcmp ogt float %89, 0.000000e+00
br i1 %90, label %91, label %112
91: ; preds = %84
%92 = load float, float* %15
%93 = fcmp ole float %92, 5.000000e-01
br i1 %93, label %94, label %99
94: ; preds = %91
%95 = load float, float* %16
%96 = load float, float* %17
%97 = fadd float %95, %96
%98 = fpext float %97 to double
br label %106
99: ; preds = %91
%100 = load float, float* %16
%101 = fpext float %100 to double
%102 = fsub double 2.000000e+00, %101
%103 = load float, float* %17
%104 = fpext float %103 to double
%105 = fsub double %102, %104
br label %106
106: ; preds = %99, %94
%107 = phi double [ %98, %94 ], [ %105, %99 ]
%108 = load float, float* %14
%109 = fpext float %108 to double
%110 = fdiv double %109, %107
%111 = fptrunc double %110 to float
store float %111, float* %14
br label %131
112: ; preds = %84
%113 = load float*, float** %10
%114 = icmp ne float* %113, null
br i1 %114, label %115, label %118
115: ; preds = %112
%116 = load float, float* %13
%117 = load float*, float** %10
store float %116, float* %117
br label %118
118: ; preds = %115, %112
%119 = load float*, float** %11
%120 = icmp ne float* %119, null
br i1 %120, label %121, label %124
121: ; preds = %118
%122 = load float, float* %14
%123 = load float*, float** %11
store float %122, float* %123
br label %124
124: ; preds = %121, %118
%125 = load float*, float** %12
%126 = icmp ne float* %125, null
br i1 %126, label %127, label %130
127: ; preds = %124
%128 = load float, float* %15
%129 = load float*, float** %12
store float %128, float* %129
br label %130
130: ; preds = %127, %124
br label %214
131: ; preds = %106
%132 = load float, float* %16
%133 = load float, float* %7
%134 = fsub float %132, %133
%135 = load float, float* %18
%136 = fdiv float %134, %135
store float %136, float* %19
%137 = load float, float* %16
%138 = load float, float* %8
%139 = fsub float %137, %138
%140 = load float, float* %18
%141 = fdiv float %139, %140
store float %141, float* %20
%142 = load float, float* %16
%143 = load float, float* %9
%144 = fsub float %142, %143
%145 = load float, float* %18
%146 = fdiv float %144, %145
store float %146, float* %21
%147 = load float, float* %7
%148 = load float, float* %16
%149 = fcmp oeq float %147, %148
br i1 %149, label %150, label %162
150: ; preds = %131
%151 = load float, float* %8
%152 = load float, float* %17
%153 = fcmp oeq float %151, %152
br i1 %153, label %154, label %157
154: ; preds = %150
%155 = load float, float* %21
%156 = fadd float 5.000000e+00, %155
br label %160
157: ; preds = %150
%158 = load float, float* %20
%159 = fsub float 1.000000e+00, %158
br label %160
160: ; preds = %157, %154
%161 = phi float [ %156, %154 ], [ %159, %157 ]
store float %161, float* %13
br label %194
162: ; preds = %131
%163 = load float, float* %8
%164 = load float, float* %16
%165 = fcmp oeq float %163, %164
br i1 %165, label %166, label %181
166: ; preds = %162
%167 = load float, float* %9
%168 = load float, float* %17
%169 = fcmp oeq float %167, %168
br i1 %169, label %170, label %174
170: ; preds = %166
%171 = load float, float* %19
%172 = fadd float 1.000000e+00, %171
%173 = fpext float %172 to double
br label %178
174: ; preds = %166
%175 = load float, float* %21
%176 = fpext float %175 to double
%177 = fsub double 3.000000e+00, %176
br label %178
178: ; preds = %174, %170
%179 = phi double [ %173, %170 ], [ %177, %174 ]
%180 = fptrunc double %179 to float
store float %180, float* %13
br label %193
181: ; preds = %162
%182 = load float, float* %7
%183 = load float, float* %17
%184 = fcmp oeq float %182, %183
br i1 %184, label %185, label %188
185: ; preds = %181
%186 = load float, float* %20
%187 = fadd float 3.000000e+00, %186
br label %191
188: ; preds = %181
%189 = load float, float* %19
%190 = fsub float 5.000000e+00, %189
br label %191
191: ; preds = %188, %185
%192 = phi float [ %187, %185 ], [ %190, %188 ]
store float %192, float* %13
br label %193
193: ; preds = %191, %178
br label %194
194: ; preds = %193, %160
%195 = load float, float* %13
%196 = fdiv float %195, 6.000000e+00
store float %196, float* %13
%197 = load float*, float** %10
%198 = icmp ne float* %197, null
br i1 %198, label %199, label %202
199: ; preds = %194
%200 = load float, float* %13
%201 = load float*, float** %10
store float %200, float* %201
br label %202
202: ; preds = %199, %194
%203 = load float*, float** %11
%204 = icmp ne float* %203, null
br i1 %204, label %205, label %208
205: ; preds = %202
%206 = load float, float* %14
%207 = load float*, float** %11
store float %206, float* %207
br label %208
208: ; preds = %205, %202
%209 = load float*, float** %12
%210 = icmp ne float* %209, null
br i1 %210, label %211, label %214
211: ; preds = %208
%212 = load float, float* %15
%213 = load float*, float** %12
store float %212, float* %213
br label %214
214: ; preds = %83, %130, %211, %208
ret void
}

LLVM IR (-O2):
define void @RGB2HSL(float %0, float %1, float %2, float* writeonly %3, float* writeonly %4, float* writeonly %5) {
%7 = fcmp ogt float %0, %1
%8 = select i1 %7, float %0, float %1
%9 = fcmp ogt float %8, %2
%10 = select i1 %9, float %8, float %2
%11 = fcmp olt float %0, %1
%12 = select i1 %11, float %0, float %1
%13 = fcmp olt float %12, %2
%14 = select i1 %13, float %12, float %2
%15 = fadd float %14, %10
%16 = fmul float %15, 5.000000e-01
%17 = fcmp ugt float %16, 0.000000e+00
br i1 %17, label %26, label %18
18: ; preds = %6
%19 = icmp eq float* %3, null
br i1 %19, label %21, label %20
20: ; preds = %18
store float 0.000000e+00, float* %3
br label %21
21: ; preds = %20, %18
%22 = icmp eq float* %4, null
br i1 %22, label %24, label %23
23: ; preds = %21
store float 0.000000e+00, float* %4
br label %24
24: ; preds = %23, %21
%25 = icmp eq float* %5, null
br i1 %25, label %86, label %85
26: ; preds = %6
%27 = fsub float %10, %14
%28 = fcmp ogt float %27, 0.000000e+00
br i1 %28, label %29, label %50
29: ; preds = %26
%30 = fcmp ugt float %16, 5.000000e-01
br i1 %30, label %33, label %31
31: ; preds = %29
%32 = fpext float %15 to double
br label %38
33: ; preds = %29
%34 = fpext float %10 to double
%35 = fsub double 2.000000e+00, %34
%36 = fpext float %14 to double
%37 = fsub double %35, %36
br label %38
38: ; preds = %33, %31
%39 = phi double [ %32, %31 ], [ %37, %33 ]
%40 = fpext float %27 to double
%41 = fdiv double %40, %39
%42 = fptrunc double %41 to float
%43 = fsub float %10, %0
%44 = fdiv float %43, %27
%45 = fsub float %10, %1
%46 = fdiv float %45, %27
%47 = fsub float %10, %2
%48 = fdiv float %47, %27
%49 = fcmp oeq float %10, %0
br i1 %49, label %58, label %63
50: ; preds = %26
%51 = icmp eq float* %3, null
br i1 %51, label %53, label %52
52: ; preds = %50
store float 0.000000e+00, float* %3
br label %53
53: ; preds = %52, %50
%54 = icmp eq float* %4, null
br i1 %54, label %56, label %55
55: ; preds = %53
store float %27, float* %4
br label %56
56: ; preds = %55, %53
%57 = icmp eq float* %5, null
br i1 %57, label %86, label %85
58: ; preds = %38
%59 = fcmp oeq float %14, %1
%60 = fadd float %48, 5.000000e+00
%61 = fsub float 1.000000e+00, %46
%62 = select i1 %59, float %60, float %61
br label %75
63: ; preds = %38
%64 = fcmp oeq float %10, %1
br i1 %64, label %65, label %70
65: ; preds = %63
%66 = fcmp oeq float %14, %2
%67 = fadd float %44, 1.000000e+00
%68 = fsub float 3.000000e+00, %48
%69 = select i1 %66, float %67, float %68
br label %75
70: ; preds = %63
%71 = fcmp oeq float %14, %0
%72 = fadd float %46, 3.000000e+00
%73 = fsub float 5.000000e+00, %44
%74 = select i1 %71, float %72, float %73
br label %75
75: ; preds = %65, %70, %58
%76 = phi float [ %62, %58 ], [ %69, %65 ], [ %74, %70 ]
%77 = icmp eq float* %3, null
br i1 %77, label %80, label %78
78: ; preds = %75
%79 = fdiv float %76, 6.000000e+00
store float %79, float* %3
br label %80
80: ; preds = %78, %75
%81 = icmp eq float* %4, null
br i1 %81, label %83, label %82
82: ; preds = %80
store float %42, float* %4
br label %83
83: ; preds = %82, %80
%84 = icmp eq float* %5, null
br i1 %84, label %86, label %85
85: ; preds = %83, %56, %24
store float %16, float* %5
br label %86
86: ; preds = %85, %83, %56, %24
ret void
}