RGBtoHLS(red, green, blue, hue, lightness, saturation) long red, green, blue;
long *hue, *lightness, *saturation;
{
  float max, min;
  float rc, gc, bc;
  float r, g, b;
  float h, l, s;
  r = (float)red / 255.0;
  g = (float)green / 255.0;
  b = (float)blue / 255.0;
  max = r > g ? (r > b ? r : b) : (g > b ? g : b);
  min = r < g ? (r < b ? r : b) : (g < b ? g : b);
  l = (max + min) / 2.0;
  if (max == min) {
    s = 0.0;
    h = 0.0;
  } else {
    if (l < 0.5)
      s = (max - min) / (max + min);
    else
      s = (max - min) / (2.0 - max - min);
    rc = (max - r) / (max - min);
    gc = (max - g) / (max - min);
    bc = (max - b) / (max - min);
    if (r == max)
      h = 2.0 + bc - gc;
    else if (g == max)
      h = 4.0 + rc - bc;
    else if (b == max)
      h = gc - rc;
    h = h * 60.0;
    if (h < 0.0)
      h += 360.0;
  }
  *hue = (int)h;
  *lightness = (int)(l * 100.0);
  *saturation = (int)(s * 100.0);
}


x86 assembly (clang, -O0):
<RGBtoHLS>:
push   %rbp
mov    %rsp,%rbp
mov    %rdi,-0x10(%rbp)
mov    %rsi,-0x18(%rbp)
mov    %rdx,-0x20(%rbp)
mov    %rcx,-0x28(%rbp)
mov    %r8,-0x30(%rbp)
mov    %r9,-0x38(%rbp)
cvtsi2ssq -0x10(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  0xed2(%rip),%xmm1
divsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x50(%rbp)
cvtsi2ssq -0x18(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  0xeb3(%rip),%xmm1
divsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x54(%rbp)
cvtsi2ssq -0x20(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  0xe94(%rip),%xmm1
divsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x58(%rbp)
movss  -0x50(%rbp),%xmm0
ucomiss -0x54(%rbp),%xmm0
jbe    11bf <RGBtoHLS+0xbf>
movss  -0x50(%rbp),%xmm0
ucomiss -0x58(%rbp),%xmm0
jbe    11a6 <RGBtoHLS+0xa6>
movss  -0x50(%rbp),%xmm0
movss  %xmm0,-0x68(%rbp)
jmp    11b0 <RGBtoHLS+0xb0>
movss  -0x58(%rbp),%xmm0
movss  %xmm0,-0x68(%rbp)
movss  -0x68(%rbp),%xmm0
movss  %xmm0,-0x6c(%rbp)
jmp    11f1 <RGBtoHLS+0xf1>
movss  -0x54(%rbp),%xmm0
ucomiss -0x58(%rbp),%xmm0
jbe    11dd <RGBtoHLS+0xdd>
movss  -0x54(%rbp),%xmm0
movss  %xmm0,-0x70(%rbp)
jmp    11e7 <RGBtoHLS+0xe7>
movss  -0x58(%rbp),%xmm0
movss  %xmm0,-0x70(%rbp)
movss  -0x70(%rbp),%xmm0
movss  %xmm0,-0x6c(%rbp)
movss  -0x6c(%rbp),%xmm0
movss  %xmm0,-0x3c(%rbp)
movss  -0x50(%rbp),%xmm1
movss  -0x54(%rbp),%xmm0
ucomiss %xmm1,%xmm0
jbe    1249 <RGBtoHLS+0x149>
movss  -0x50(%rbp),%xmm1
movss  -0x58(%rbp),%xmm0
ucomiss %xmm1,%xmm0
jbe    1230 <RGBtoHLS+0x130>
movss  -0x50(%rbp),%xmm0
movss  %xmm0,-0x74(%rbp)
jmp    123a <RGBtoHLS+0x13a>
movss  -0x58(%rbp),%xmm0
movss  %xmm0,-0x74(%rbp)
movss  -0x74(%rbp),%xmm0
movss  %xmm0,-0x78(%rbp)
jmp    127f <RGBtoHLS+0x17f>
movss  -0x54(%rbp),%xmm1
movss  -0x58(%rbp),%xmm0
ucomiss %xmm1,%xmm0
jbe    126b <RGBtoHLS+0x16b>
movss  -0x54(%rbp),%xmm0
movss  %xmm0,-0x7c(%rbp)
jmp    1275 <RGBtoHLS+0x175>
movss  -0x58(%rbp),%xmm0
movss  %xmm0,-0x7c(%rbp)
movss  -0x7c(%rbp),%xmm0
movss  %xmm0,-0x78(%rbp)
movss  -0x78(%rbp),%xmm0
movss  %xmm0,-0x40(%rbp)
movss  -0x3c(%rbp),%xmm0
addss  -0x40(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  0xd69(%rip),%xmm1
divsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x60(%rbp)
movss  -0x3c(%rbp),%xmm0
ucomiss -0x40(%rbp),%xmm0
jne    12d6 <RGBtoHLS+0x1d6>
jp     12d6 <RGBtoHLS+0x1d6>
xorps  %xmm0,%xmm0
movss  %xmm0,-0x64(%rbp)
xorps  %xmm0,%xmm0
movss  %xmm0,-0x5c(%rbp)
jmp    14b6 <RGBtoHLS+0x3b6>
movss  -0x60(%rbp),%xmm0
cvtss2sd %xmm0,%xmm1
movsd  0xd29(%rip),%xmm0
ucomisd %xmm1,%xmm0
jbe    1313 <RGBtoHLS+0x213>
movss  -0x3c(%rbp),%xmm0
subss  -0x40(%rbp),%xmm0
movss  -0x3c(%rbp),%xmm1
addss  -0x40(%rbp),%xmm1
divss  %xmm1,%xmm0
movss  %xmm0,-0x64(%rbp)
jmp    1350 <RGBtoHLS+0x250>
movss  -0x3c(%rbp),%xmm0
subss  -0x40(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
movss  -0x3c(%rbp),%xmm1
cvtss2sd %xmm1,%xmm2
movsd  0xcd6(%rip),%xmm1
subsd  %xmm2,%xmm1
movss  -0x40(%rbp),%xmm2
cvtss2sd %xmm2,%xmm2
subsd  %xmm2,%xmm1
divsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x64(%rbp)
movss  -0x3c(%rbp),%xmm0
subss  -0x50(%rbp),%xmm0
movss  -0x3c(%rbp),%xmm1
subss  -0x40(%rbp),%xmm1
divss  %xmm1,%xmm0
movss  %xmm0,-0x44(%rbp)
movss  -0x3c(%rbp),%xmm0
subss  -0x54(%rbp),%xmm0
movss  -0x3c(%rbp),%xmm1
subss  -0x40(%rbp),%xmm1
divss  %xmm1,%xmm0
movss  %xmm0,-0x48(%rbp)
movss  -0x3c(%rbp),%xmm0
subss  -0x58(%rbp),%xmm0
movss  -0x3c(%rbp),%xmm1
subss  -0x40(%rbp),%xmm1
divss  %xmm1,%xmm0
movss  %xmm0,-0x4c(%rbp)
movss  -0x50(%rbp),%xmm0
ucomiss -0x3c(%rbp),%xmm0
jne    13ec <RGBtoHLS+0x2ec>
jp     13ec <RGBtoHLS+0x2ec>
movss  -0x4c(%rbp),%xmm0
cvtss2sd %xmm0,%xmm1
movsd  0xc3b(%rip),%xmm0
addsd  %xmm1,%xmm0
movss  -0x48(%rbp),%xmm1
cvtss2sd %xmm1,%xmm1
subsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x5c(%rbp)
jmp    145f <RGBtoHLS+0x35f>
movss  -0x54(%rbp),%xmm0
ucomiss -0x3c(%rbp),%xmm0
jne    1431 <RGBtoHLS+0x331>
jp     1431 <RGBtoHLS+0x331>
movss  -0x44(%rbp),%xmm0
cvtss2sd %xmm0,%xmm1
movsd  0xc06(%rip),%xmm0
addsd  %xmm1,%xmm0
movss  -0x4c(%rbp),%xmm1
cvtss2sd %xmm1,%xmm1
subsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x5c(%rbp)
jmp    145a <RGBtoHLS+0x35a>
movss  -0x58(%rbp),%xmm0
ucomiss -0x3c(%rbp),%xmm0
jne    1455 <RGBtoHLS+0x355>
jp     1455 <RGBtoHLS+0x355>
movss  -0x48(%rbp),%xmm0
subss  -0x44(%rbp),%xmm0
movss  %xmm0,-0x5c(%rbp)
jmp    145a <RGBtoHLS+0x35a>
jmp    145f <RGBtoHLS+0x35f>
movss  -0x5c(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  0xbb0(%rip),%xmm1
mulsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x5c(%rbp)
movss  -0x5c(%rbp),%xmm0
cvtss2sd %xmm0,%xmm1
xorps  %xmm0,%xmm0
ucomisd %xmm1,%xmm0
jbe    14b1 <RGBtoHLS+0x3b1>
movss  -0x5c(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  0xb84(%rip),%xmm1
addsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x5c(%rbp)
jmp    14b6 <RGBtoHLS+0x3b6>
cvttss2si -0x5c(%rbp),%eax
movslq %eax,%rcx
mov    -0x28(%rbp),%rax
mov    %rcx,(%rax)
movss  -0x60(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  0xb5a(%rip),%xmm1
mulsd  %xmm1,%xmm0
cvttsd2si %xmm0,%eax
movslq %eax,%rcx
mov    -0x30(%rbp),%rax
mov    %rcx,(%rax)
movss  -0x64(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  0xb37(%rip),%xmm1
mulsd  %xmm1,%xmm0
cvttsd2si %xmm0,%eax
movslq %eax,%rcx
mov    -0x38(%rbp),%rax
mov    %rcx,(%rax)
mov    -0x4(%rbp),%eax
pop    %rbp
ret

x86 assembly (clang, -O2):
<RGBtoHLS>:
cvtsi2ss %rdi,%xmm1
divss  0xef3(%rip),%xmm1
cvtsi2ss %rdx,%xmm0
cvtsi2ss %rsi,%xmm3
unpcklps %xmm0,%xmm3
divps  0xeef(%rip),%xmm3
movaps %xmm3,%xmm4
shufps $0x55,%xmm3,%xmm4
movaps %xmm1,%xmm5
maxss  %xmm3,%xmm5
maxss  %xmm4,%xmm5
movaps %xmm1,%xmm2
minss  %xmm3,%xmm2
minss  %xmm4,%xmm2
movaps %xmm5,%xmm0
addss  %xmm2,%xmm0
movss  0xeb6(%rip),%xmm9
mulss  %xmm0,%xmm9
xorps  %xmm6,%xmm6
ucomiss %xmm2,%xmm5
xorps  %xmm8,%xmm8
jne    1165 <RGBtoHLS+0x65>
jnp    124b <RGBtoHLS+0x14b>
movss  0xe97(%rip),%xmm6
ucomiss %xmm9,%xmm6
movaps %xmm5,%xmm7
subss  %xmm2,%xmm7
jbe    1185 <RGBtoHLS+0x85>
movaps %xmm7,%xmm8
divss  %xmm0,%xmm8
jmp    11b7 <RGBtoHLS+0xb7>
xorps  %xmm0,%xmm0
cvtss2sd %xmm7,%xmm0
xorps  %xmm8,%xmm8
cvtss2sd %xmm5,%xmm8
movsd  0xe83(%rip),%xmm6
subsd  %xmm8,%xmm6
cvtss2sd %xmm2,%xmm2
subsd  %xmm2,%xmm6
divsd  %xmm6,%xmm0
xorps  %xmm8,%xmm8
cvtsd2ss %xmm0,%xmm8
movaps %xmm5,%xmm6
subss  %xmm3,%xmm6
divss  %xmm7,%xmm6
movaps %xmm5,%xmm0
subss  %xmm4,%xmm0
divss  %xmm7,%xmm0
ucomiss %xmm5,%xmm1
jne    11f4 <RGBtoHLS+0xf4>
jp     11f4 <RGBtoHLS+0xf4>
cvtss2sd %xmm0,%xmm0
addsd  0xe40(%rip),%xmm0
xorps  %xmm1,%xmm1
cvtss2sd %xmm6,%xmm1
subsd  %xmm1,%xmm0
xorps  %xmm6,%xmm6
cvtsd2ss %xmm0,%xmm6
jmp    1233 <RGBtoHLS+0x133>
movaps %xmm5,%xmm2
subss  %xmm1,%xmm2
divss  %xmm7,%xmm2
ucomiss %xmm5,%xmm3
jne    1226 <RGBtoHLS+0x126>
jp     1226 <RGBtoHLS+0x126>
xorps  %xmm1,%xmm1
cvtss2sd %xmm2,%xmm1
addsd  0xe13(%rip),%xmm1
cvtss2sd %xmm0,%xmm0
subsd  %xmm0,%xmm1
xorps  %xmm6,%xmm6
cvtsd2ss %xmm1,%xmm6
jmp    1233 <RGBtoHLS+0x133>
ucomiss %xmm5,%xmm4
jne    1233 <RGBtoHLS+0x133>
jp     1233 <RGBtoHLS+0x133>
subss  %xmm2,%xmm6
jmp    1233 <RGBtoHLS+0x133>
mulss  0xdcd(%rip),%xmm6
xorps  %xmm0,%xmm0
ucomiss %xmm6,%xmm0
jbe    124b <RGBtoHLS+0x14b>
addss  0xdc1(%rip),%xmm6
cvttss2si %xmm6,%eax
cltq
mov    %rax,(%rcx)
xorps  %xmm0,%xmm0
cvtss2sd %xmm9,%xmm0
movsd  0xdcc(%rip),%xmm1
mulsd  %xmm1,%xmm0
cvttsd2si %xmm0,%eax
cltq
mov    %rax,(%r8)
xorps  %xmm0,%xmm0
cvtss2sd %xmm8,%xmm0
mulsd  %xmm1,%xmm0
cvttsd2si %xmm0,%eax
cltq
mov    %rax,(%r9)
ret

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

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