#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 */
double sqrt(double);
void HSPtoRGB(double HSP[], double RGB[]) {
  double H = HSP[0];
  double S = HSP[1];
  double P = HSP[2];
  double *R = RGB;
  double *G = RGB + 1;
  double *B = RGB + 2;
  double part;
  double minOverMax = 1 - S;
  if (minOverMax > 0) {
    if (H < 1 / 6.) {
      H *= 6;
      part = 1 + H * (1 / minOverMax - 1);
      *B = P /
           sqrt(.299 / (minOverMax * minOverMax) + .587 * part * part + .114);
      *R = (*B) / minOverMax;
      *G = (*B) + H * ((*R) - (*B));
    } else if (H < 2 / 6.) {
      H = 6 * (2 / 6 - H);
      part = 1. + H * (1 / minOverMax - 1);
      *B = P /
           sqrt(.587 / (minOverMax * minOverMax) + .299 * part * part + .114);
      *G = (*B) / minOverMax;
      *R = (*B) + H * ((*G) - (*B));
    } else if (H < 3. / 6.) {
      H = 6 * (H - 2 / 6.);
      part = 1 + H * (1 / minOverMax - 1);
      *R = P /
           sqrt(.587 / (minOverMax * minOverMax) + .114 * part * part + .299);
      *G = (*R) / minOverMax;
      *B = (*R) + H * ((*G) - (*R));
    } else if (H < 4 / 6.) {
      H = 6 * (4 / 6. - H);
      part = 1. + H * (1 / minOverMax - 1);
      *R = P / sqrt(.114 / minOverMax / minOverMax + .587 * part * part + .299);
      *B = (*R) / minOverMax;
      *G = (*R) + H * ((*B) - (*R));
    } else if (H < 5 / 6.) {
      H = 6 * (H - 4 / 6.);
      part = 1 + H * (1 / minOverMax - 1);
      *G = P /
           sqrt(.114 / (minOverMax * minOverMax) + .299 * part * part + .587);
      *B = (*G) / minOverMax;
      *R = (*G) + H * ((*B) - (*G));
    } else {
      H = 6 * (1 - H);
      part = 1 + H * (1 / minOverMax - 1);
      *G = P /
           sqrt(.299 / (minOverMax * minOverMax) + .114 * part * part + .587);
      *R = (*G) / minOverMax;
      *B = (*G) + H * ((*R) - (*G));
    }
  } else {
    if (H < 1 / 6.) {
      H *= 6;
      *R = sqrt(P * P / (.299 + .587 * H * H));
      *G = (*R) * H;
      *B = 0;
    } else if (H < 2 / 6.) {
      H = 6 * (2 / 6. - H);
      *G = sqrt(P * P / (.587 + .299 * H * H));
      *R = (*G) * H;
      *B = 0;
    } else if (H < 3 / 6.) {
      H = 6 * (H - 2 / 6.);
      *G = sqrt(P * P / (.587 + .114 * H * H));
      *B = (*G) * H;
      *R = 0;
    } else if (H < 4. / 6.) {
      H = 6 * (4 / 6. - H);
      *B = sqrt(P * P / (.114 + .587 * H * H));
      *G = (*B) * H;
      *R = 0;
    } else if (H < 5 / 6.) {
      H = 6 * (H - 4 / 6.);
      *B = sqrt(P * P / (.114 + .299 * H * H));
      *R = (*B) * H;
      *G = 0;
    } else {
      H = 6 * (1 - H);
      *R = sqrt(P * P / (.299 + .114 * H * H));
      *B = (*R) * H;
      *G = 0;
    }
  }
  int c;
  double max = 0;
  for (c = 0; c < 3; c++) {
    if (RGB[c] > max)
      max = RGB[c];
  }
  if (max > 1)
    for (c = 0; c < 3; c++) {
      RGB[c] /= max;
    }
}


x86 assembly (clang, -O0):
<HSPtoRGB>:
push   %rbp
mov    %rsp,%rbp
sub    $0x90,%rsp
mov    %rdi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
mov    -0x8(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x18(%rbp)
mov    -0x8(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x20(%rbp)
mov    -0x8(%rbp),%rax
movsd  0x10(%rax),%xmm0
movsd  %xmm0,-0x28(%rbp)
mov    -0x10(%rbp),%rax
mov    %rax,-0x30(%rbp)
mov    -0x10(%rbp),%rax
add    $0x8,%rax
mov    %rax,-0x38(%rbp)
mov    -0x10(%rbp),%rax
add    $0x10,%rax
mov    %rax,-0x40(%rbp)
movsd  0xe8c(%rip),%xmm0
subsd  -0x20(%rbp),%xmm0
movsd  %xmm0,-0x50(%rbp)
movsd  -0x50(%rbp),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jbe    17cc <HSPtoRGB+0x6bc>
movsd  0xe70(%rip),%xmm0
ucomisd -0x18(%rbp),%xmm0
jbe    128e <HSPtoRGB+0x17e>
movsd  0xe95(%rip),%xmm0
mulsd  -0x18(%rbp),%xmm0
movsd  %xmm0,-0x18(%rbp)
movsd  -0x18(%rbp),%xmm0
movsd  0xe3e(%rip),%xmm1
divsd  -0x50(%rbp),%xmm1
movsd  0xe31(%rip),%xmm2
subsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  0xe21(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x48(%rbp)
movsd  -0x28(%rbp),%xmm0
movsd  %xmm0,-0x68(%rbp)
movsd  -0x50(%rbp),%xmm0
mulsd  -0x50(%rbp),%xmm0
movsd  0xe2c(%rip),%xmm1
divsd  %xmm0,%xmm1
movsd  0xe38(%rip),%xmm0
mulsd  -0x48(%rbp),%xmm0
movsd  -0x48(%rbp),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  0xe0e(%rip),%xmm1
addsd  %xmm1,%xmm0
call   1030 <sqrt@plt>
movaps %xmm0,%xmm1
movsd  -0x68(%rbp),%xmm0
divsd  %xmm1,%xmm0
mov    -0x40(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x40(%rbp),%rax
movsd  (%rax),%xmm0
divsd  -0x50(%rbp),%xmm0
mov    -0x30(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x40(%rbp),%rax
movsd  (%rax),%xmm1
movsd  -0x18(%rbp),%xmm0
mov    -0x30(%rbp),%rax
movsd  (%rax),%xmm2
mov    -0x40(%rbp),%rax
subsd  (%rax),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x38(%rbp),%rax
movsd  %xmm0,(%rax)
jmp    17c7 <HSPtoRGB+0x6b7>
movsd  0xd7a(%rip),%xmm0
ucomisd -0x18(%rbp),%xmm0
jbe    1393 <HSPtoRGB+0x283>
xorps  %xmm1,%xmm1
subsd  -0x18(%rbp),%xmm1
movsd  0xd8f(%rip),%xmm0
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x18(%rbp)
movsd  -0x18(%rbp),%xmm0
movsd  0xd39(%rip),%xmm1
divsd  -0x50(%rbp),%xmm1
movsd  0xd2c(%rip),%xmm2
subsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  0xd1c(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x48(%rbp)
movsd  -0x28(%rbp),%xmm0
movsd  %xmm0,-0x70(%rbp)
movsd  -0x50(%rbp),%xmm0
mulsd  -0x50(%rbp),%xmm0
movsd  0xd3f(%rip),%xmm1
divsd  %xmm0,%xmm1
movsd  0xd1b(%rip),%xmm0
mulsd  -0x48(%rbp),%xmm0
movsd  -0x48(%rbp),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  0xd09(%rip),%xmm1
addsd  %xmm1,%xmm0
call   1030 <sqrt@plt>
movaps %xmm0,%xmm1
movsd  -0x70(%rbp),%xmm0
divsd  %xmm1,%xmm0
mov    -0x40(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x40(%rbp),%rax
movsd  (%rax),%xmm0
divsd  -0x50(%rbp),%xmm0
mov    -0x38(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x40(%rbp),%rax
movsd  (%rax),%xmm1
movsd  -0x18(%rbp),%xmm0
mov    -0x38(%rbp),%rax
movsd  (%rax),%xmm2
mov    -0x40(%rbp),%rax
subsd  (%rax),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x30(%rbp),%rax
movsd  %xmm0,(%rax)
jmp    17c2 <HSPtoRGB+0x6b2>
movsd  0xc7d(%rip),%xmm0
ucomisd -0x18(%rbp),%xmm0
jbe    14a1 <HSPtoRGB+0x391>
movsd  -0x18(%rbp),%xmm1
movsd  0xc5d(%rip),%xmm0
subsd  %xmm0,%xmm1
movsd  0xc81(%rip),%xmm0
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x18(%rbp)
movsd  -0x18(%rbp),%xmm0
movsd  0xc2b(%rip),%xmm1
divsd  -0x50(%rbp),%xmm1
movsd  0xc1e(%rip),%xmm2
subsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  0xc0e(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x48(%rbp)
movsd  -0x28(%rbp),%xmm0
movsd  %xmm0,-0x78(%rbp)
movsd  -0x50(%rbp),%xmm0
mulsd  -0x50(%rbp),%xmm0
movsd  0xc31(%rip),%xmm1
divsd  %xmm0,%xmm1
movsd  0xc15(%rip),%xmm0
mulsd  -0x48(%rbp),%xmm0
movsd  -0x48(%rbp),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  0xbf3(%rip),%xmm1
addsd  %xmm1,%xmm0
call   1030 <sqrt@plt>
movaps %xmm0,%xmm1
movsd  -0x78(%rbp),%xmm0
divsd  %xmm1,%xmm0
mov    -0x30(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x30(%rbp),%rax
movsd  (%rax),%xmm0
divsd  -0x50(%rbp),%xmm0
mov    -0x38(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x30(%rbp),%rax
movsd  (%rax),%xmm1
movsd  -0x18(%rbp),%xmm0
mov    -0x38(%rbp),%rax
movsd  (%rax),%xmm2
mov    -0x30(%rbp),%rax
subsd  (%rax),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x40(%rbp),%rax
movsd  %xmm0,(%rax)
jmp    17bd <HSPtoRGB+0x6ad>
movsd  0xb77(%rip),%xmm0
ucomisd -0x18(%rbp),%xmm0
jbe    15a7 <HSPtoRGB+0x497>
movsd  0xb64(%rip),%xmm1
subsd  -0x18(%rbp),%xmm1
movsd  0xb77(%rip),%xmm0
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x18(%rbp)
movsd  -0x18(%rbp),%xmm0
movsd  0xb21(%rip),%xmm1
divsd  -0x50(%rbp),%xmm1
movsd  0xb14(%rip),%xmm2
subsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  0xb04(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x48(%rbp)
movsd  -0x28(%rbp),%xmm0
movsd  %xmm0,-0x80(%rbp)
movsd  0xb21(%rip),%xmm1
divsd  -0x50(%rbp),%xmm1
divsd  -0x50(%rbp),%xmm1
movsd  0xb1f(%rip),%xmm0
mulsd  -0x48(%rbp),%xmm0
movsd  -0x48(%rbp),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  0xaed(%rip),%xmm1
addsd  %xmm1,%xmm0
call   1030 <sqrt@plt>
movaps %xmm0,%xmm1
movsd  -0x80(%rbp),%xmm0
divsd  %xmm1,%xmm0
mov    -0x30(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x30(%rbp),%rax
movsd  (%rax),%xmm0
divsd  -0x50(%rbp),%xmm0
mov    -0x40(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x30(%rbp),%rax
movsd  (%rax),%xmm1
movsd  -0x18(%rbp),%xmm0
mov    -0x40(%rbp),%rax
movsd  (%rax),%xmm2
mov    -0x30(%rbp),%rax
subsd  (%rax),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x38(%rbp),%rax
movsd  %xmm0,(%rax)
jmp    17b8 <HSPtoRGB+0x6a8>
movsd  0xa79(%rip),%xmm0
ucomisd -0x18(%rbp),%xmm0
jbe    16bb <HSPtoRGB+0x5ab>
movsd  -0x18(%rbp),%xmm1
movsd  0xa59(%rip),%xmm0
subsd  %xmm0,%xmm1
movsd  0xa6d(%rip),%xmm0
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x18(%rbp)
movsd  -0x18(%rbp),%xmm0
movsd  0xa17(%rip),%xmm1
divsd  -0x50(%rbp),%xmm1
movsd  0xa0a(%rip),%xmm2
subsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  0x9fa(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x48(%rbp)
movsd  -0x28(%rbp),%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
movsd  -0x50(%rbp),%xmm0
mulsd  -0x50(%rbp),%xmm0
movsd  0xa0a(%rip),%xmm1
divsd  %xmm0,%xmm1
movsd  0x9f6(%rip),%xmm0
mulsd  -0x48(%rbp),%xmm0
movsd  -0x48(%rbp),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  0x9f4(%rip),%xmm1
addsd  %xmm1,%xmm0
call   1030 <sqrt@plt>
movaps %xmm0,%xmm1
movsd  -0x88(%rbp),%xmm0
ff
divsd  %xmm1,%xmm0
mov    -0x38(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x38(%rbp),%rax
movsd  (%rax),%xmm0
divsd  -0x50(%rbp),%xmm0
mov    -0x40(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x38(%rbp),%rax
movsd  (%rax),%xmm1
movsd  -0x18(%rbp),%xmm0
mov    -0x40(%rbp),%rax
movsd  (%rax),%xmm2
mov    -0x38(%rbp),%rax
subsd  (%rax),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x30(%rbp),%rax
movsd  %xmm0,(%rax)
jmp    17b3 <HSPtoRGB+0x6a3>
movsd  0x93d(%rip),%xmm1
subsd  -0x18(%rbp),%xmm1
movsd  0x970(%rip),%xmm0
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x18(%rbp)
movsd  -0x18(%rbp),%xmm0
movsd  0x91a(%rip),%xmm1
divsd  -0x50(%rbp),%xmm1
movsd  0x90d(%rip),%xmm2
subsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  0x8fd(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x48(%rbp)
movsd  -0x28(%rbp),%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0x50(%rbp),%xmm0
mulsd  -0x50(%rbp),%xmm0
movsd  0x905(%rip),%xmm1
divsd  %xmm0,%xmm1
movsd  0x901(%rip),%xmm0
mulsd  -0x48(%rbp),%xmm0
movsd  -0x48(%rbp),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  0x8f7(%rip),%xmm1
addsd  %xmm1,%xmm0
call   1030 <sqrt@plt>
movaps %xmm0,%xmm1
movsd  -0x90(%rbp),%xmm0
ff
divsd  %xmm1,%xmm0
mov    -0x38(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x38(%rbp),%rax
movsd  (%rax),%xmm0
divsd  -0x50(%rbp),%xmm0
mov    -0x30(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x38(%rbp),%rax
movsd  (%rax),%xmm1
movsd  -0x18(%rbp),%xmm0
mov    -0x30(%rbp),%rax
movsd  (%rax),%xmm2
mov    -0x38(%rbp),%rax
subsd  (%rax),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x40(%rbp),%rax
movsd  %xmm0,(%rax)
jmp    17b8 <HSPtoRGB+0x6a8>
jmp    17bd <HSPtoRGB+0x6ad>
jmp    17c2 <HSPtoRGB+0x6b2>
jmp    17c7 <HSPtoRGB+0x6b7>
jmp    1b3b <HSPtoRGB+0xa2b>
movsd  0x834(%rip),%xmm0
ucomisd -0x18(%rbp),%xmm0
jbe    1853 <HSPtoRGB+0x743>
movsd  0x859(%rip),%xmm0
mulsd  -0x18(%rbp),%xmm0
movsd  %xmm0,-0x18(%rbp)
movsd  -0x28(%rbp),%xmm0
mulsd  -0x28(%rbp),%xmm0
movsd  0x845(%rip),%xmm1
mulsd  -0x18(%rbp),%xmm1
movsd  -0x18(%rbp),%xmm2
mulsd  %xmm2,%xmm1
movsd  0x817(%rip),%xmm2
addsd  %xmm2,%xmm1
divsd  %xmm1,%xmm0
call   1030 <sqrt@plt>
mov    -0x30(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x30(%rbp),%rax
movsd  (%rax),%xmm0
mulsd  -0x18(%rbp),%xmm0
mov    -0x38(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x40(%rbp),%rax
xorps  %xmm0,%xmm0
movsd  %xmm0,(%rax)
jmp    1b36 <HSPtoRGB+0xa26>
movsd  0x7b5(%rip),%xmm0
ucomisd -0x18(%rbp),%xmm0
jbe    18e6 <HSPtoRGB+0x7d6>
movsd  0x7a2(%rip),%xmm1
subsd  -0x18(%rbp),%xmm1
movsd  0x7c5(%rip),%xmm0
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x18(%rbp)
movsd  -0x28(%rbp),%xmm0
mulsd  -0x28(%rbp),%xmm0
movsd  0x79a(%rip),%xmm1
mulsd  -0x18(%rbp),%xmm1
movsd  -0x18(%rbp),%xmm2
mulsd  %xmm2,%xmm1
movsd  0x79c(%rip),%xmm2
addsd  %xmm2,%xmm1
divsd  %xmm1,%xmm0
call   1030 <sqrt@plt>
mov    -0x38(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x38(%rbp),%rax
movsd  (%rax),%xmm0
mulsd  -0x18(%rbp),%xmm0
mov    -0x30(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x40(%rbp),%rax
xorps  %xmm0,%xmm0
movsd  %xmm0,(%rax)
jmp    1b31 <HSPtoRGB+0xa21>
movsd  0x72a(%rip),%xmm0
ucomisd -0x18(%rbp),%xmm0
jbe    197d <HSPtoRGB+0x86d>
movsd  -0x18(%rbp),%xmm1
movsd  0x70a(%rip),%xmm0
subsd  %xmm0,%xmm1
movsd  0x72e(%rip),%xmm0
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x18(%rbp)
movsd  -0x28(%rbp),%xmm0
mulsd  -0x28(%rbp),%xmm0
movsd  0x70b(%rip),%xmm1
mulsd  -0x18(%rbp),%xmm1
movsd  -0x18(%rbp),%xmm2
mulsd  %xmm2,%xmm1
movsd  0x705(%rip),%xmm2
addsd  %xmm2,%xmm1
divsd  %xmm1,%xmm0
call   1030 <sqrt@plt>
mov    -0x38(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x38(%rbp),%rax
movsd  (%rax),%xmm0
mulsd  -0x18(%rbp),%xmm0
mov    -0x40(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x30(%rbp),%rax
xorps  %xmm0,%xmm0
movsd  %xmm0,(%rax)
jmp    1b2c <HSPtoRGB+0xa1c>
movsd  0x69b(%rip),%xmm0
ucomisd -0x18(%rbp),%xmm0
jbe    1a10 <HSPtoRGB+0x900>
movsd  0x688(%rip),%xmm1
subsd  -0x18(%rbp),%xmm1
movsd  0x69b(%rip),%xmm0
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x18(%rbp)
movsd  -0x28(%rbp),%xmm0
mulsd  -0x28(%rbp),%xmm0
movsd  0x688(%rip),%xmm1
mulsd  -0x18(%rbp),%xmm1
movsd  -0x18(%rbp),%xmm2
mulsd  %xmm2,%xmm1
movsd  0x662(%rip),%xmm2
addsd  %xmm2,%xmm1
divsd  %xmm1,%xmm0
call   1030 <sqrt@plt>
mov    -0x40(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x40(%rbp),%rax
movsd  (%rax),%xmm0
mulsd  -0x18(%rbp),%xmm0
mov    -0x38(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x30(%rbp),%rax
xorps  %xmm0,%xmm0
movsd  %xmm0,(%rax)
jmp    1b27 <HSPtoRGB+0xa17>
movsd  0x610(%rip),%xmm0
ucomisd -0x18(%rbp),%xmm0
jbe    1aa7 <HSPtoRGB+0x997>
movsd  -0x18(%rbp),%xmm1
movsd  0x5f0(%rip),%xmm0
subsd  %xmm0,%xmm1
movsd  0x604(%rip),%xmm0
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x18(%rbp)
movsd  -0x28(%rbp),%xmm0
mulsd  -0x28(%rbp),%xmm0
movsd  0x5d9(%rip),%xmm1
mulsd  -0x18(%rbp),%xmm1
movsd  -0x18(%rbp),%xmm2
mulsd  %xmm2,%xmm1
movsd  0x5cb(%rip),%xmm2
addsd  %xmm2,%xmm1
divsd  %xmm1,%xmm0
call   1030 <sqrt@plt>
mov    -0x40(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x40(%rbp),%rax
movsd  (%rax),%xmm0
mulsd  -0x18(%rbp),%xmm0
mov    -0x30(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x38(%rbp),%rax
xorps  %xmm0,%xmm0
movsd  %xmm0,(%rax)
jmp    1b22 <HSPtoRGB+0xa12>
movsd  0x551(%rip),%xmm1
subsd  -0x18(%rbp),%xmm1
movsd  0x584(%rip),%xmm0
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x18(%rbp)
movsd  -0x28(%rbp),%xmm0
mulsd  -0x28(%rbp),%xmm0
movsd  0x561(%rip),%xmm1
mulsd  -0x18(%rbp),%xmm1
movsd  -0x18(%rbp),%xmm2
mulsd  %xmm2,%xmm1
movsd  0x543(%rip),%xmm2
addsd  %xmm2,%xmm1
divsd  %xmm1,%xmm0
call   1030 <sqrt@plt>
mov    -0x30(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x30(%rbp),%rax
movsd  (%rax),%xmm0
mulsd  -0x18(%rbp),%xmm0
mov    -0x40(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x38(%rbp),%rax
xorps  %xmm0,%xmm0
movsd  %xmm0,(%rax)
jmp    1b27 <HSPtoRGB+0xa17>
jmp    1b2c <HSPtoRGB+0xa1c>
jmp    1b31 <HSPtoRGB+0xa21>
jmp    1b36 <HSPtoRGB+0xa26>
jmp    1b3b <HSPtoRGB+0xa2b>
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x60(%rbp)
movl   $0x0,-0x54(%rbp)
cmpl   $0x3,-0x54(%rbp)
jge    1b91 <HSPtoRGB+0xa81>
mov    -0x10(%rbp),%rax
movslq -0x54(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
ucomisd -0x60(%rbp),%xmm0
jbe    1b7e <HSPtoRGB+0xa6e>
mov    -0x10(%rbp),%rax
movslq -0x54(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x60(%rbp)
jmp    1b83 <HSPtoRGB+0xa73>
mov    -0x54(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x54(%rbp)
jmp    1b4a <HSPtoRGB+0xa3a>
movsd  -0x60(%rbp),%xmm0
movsd  0x462(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    1be7 <HSPtoRGB+0xad7>
movl   $0x0,-0x54(%rbp)
cmpl   $0x3,-0x54(%rbp)
jge    1be2 <HSPtoRGB+0xad2>
movsd  -0x60(%rbp),%xmm1
mov    -0x10(%rbp),%rax
movslq -0x54(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
divsd  %xmm1,%xmm0
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x54(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x54(%rbp)
jmp    1baf <HSPtoRGB+0xa9f>
jmp    1be7 <HSPtoRGB+0xad7>
add    $0x90,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<HSPtoRGB>:
push   %rbx
sub    $0x20,%rsp
mov    %rsi,%rbx
movsd  (%rdi),%xmm3
movsd  0xedc(%rip),%xmm7
movapd %xmm7,%xmm5
subsd  0x8(%rdi),%xmm5
movsd  0x10(%rdi),%xmm4
xorpd  %xmm0,%xmm0
ucomisd %xmm0,%xmm5
jbe    11b5 <HSPtoRGB+0xa5>
movsd  0xec4(%rip),%xmm0
ucomisd %xmm3,%xmm0
jbe    120a <HSPtoRGB+0xfa>
mulsd  0xeda(%rip),%xmm3
movapd %xmm7,%xmm1
divsd  %xmm5,%xmm1
addsd  0xefa(%rip),%xmm1
mulsd  %xmm3,%xmm1
addsd  %xmm7,%xmm1
movapd %xmm5,%xmm0
mulsd  %xmm5,%xmm0
movsd  0xec2(%rip),%xmm2
divsd  %xmm0,%xmm2
movsd  0xec6(%rip),%xmm0
mulsd  %xmm1,%xmm0
mulsd  %xmm1,%xmm0
addsd  %xmm2,%xmm0
addsd  0xe9a(%rip),%xmm0
xorpd  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jb     12e7 <HSPtoRGB+0x1d7>
sqrtsd %xmm0,%xmm0
jmp    1310 <HSPtoRGB+0x200>
movsd  0xe4b(%rip),%xmm0
ucomisd %xmm3,%xmm0
jbe    128b <HSPtoRGB+0x17b>
mulsd  0xe61(%rip),%xmm3
mulsd  %xmm4,%xmm4
movsd  0xe75(%rip),%xmm1
mulsd  %xmm3,%xmm1
mulsd  %xmm3,%xmm1
addsd  0xe55(%rip),%xmm1
movapd %xmm4,%xmm0
divsd  %xmm1,%xmm0
xorpd  %xmm4,%xmm4
ucomisd %xmm4,%xmm0
jb     133f <HSPtoRGB+0x22f>
sqrtsd %xmm0,%xmm6
jmp    1358 <HSPtoRGB+0x248>
movsd  0xdfe(%rip),%xmm0
ucomisd %xmm3,%xmm0
jbe    1372 <HSPtoRGB+0x262>
xorpd  %xmm1,%xmm1
xorpd  %xmm6,%xmm6
subsd  %xmm3,%xmm6
mulsd  0xe00(%rip),%xmm6
movapd %xmm7,%xmm2
divsd  %xmm5,%xmm2
addsd  0xe20(%rip),%xmm2
mulsd  %xmm6,%xmm2
addsd  %xmm7,%xmm2
movapd %xmm5,%xmm0
mulsd  %xmm5,%xmm0
movsd  0xdf8(%rip),%xmm3
divsd  %xmm0,%xmm3
movsd  0xddc(%rip),%xmm0
mulsd  %xmm2,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm3,%xmm0
addsd  0xdc0(%rip),%xmm0
ucomisd %xmm1,%xmm0
jb     144f <HSPtoRGB+0x33f>
sqrtsd %xmm0,%xmm0
jmp    1478 <HSPtoRGB+0x368>
movsd  0xd7d(%rip),%xmm6
ucomisd %xmm3,%xmm6
jbe    13f3 <HSPtoRGB+0x2e3>
subsd  %xmm3,%xmm6
mulsd  0xd87(%rip),%xmm6
mulsd  %xmm4,%xmm4
movsd  0xd8b(%rip),%xmm1
mulsd  %xmm6,%xmm1
mulsd  %xmm6,%xmm1
addsd  0xd8b(%rip),%xmm1
movapd %xmm4,%xmm0
divsd  %xmm1,%xmm0
xorpd  %xmm4,%xmm4
ucomisd %xmm4,%xmm0
jb     14a7 <HSPtoRGB+0x397>
xorps  %xmm3,%xmm3
sqrtsd %xmm0,%xmm3
jmp    14c0 <HSPtoRGB+0x3b0>
movsd  %xmm4,0x18(%rsp)
movsd  %xmm3,0x8(%rsp)
movsd  %xmm5,0x10(%rsp)
call   1030 <sqrt@plt>
movsd  0x10(%rsp),%xmm5
movsd  0x8(%rsp),%xmm3
movsd  0x18(%rsp),%xmm4
divsd  %xmm0,%xmm4
movsd  %xmm4,0x10(%rbx)
movapd %xmm4,%xmm6
divsd  %xmm5,%xmm6
movsd  %xmm6,(%rbx)
movapd %xmm6,%xmm0
subsd  %xmm4,%xmm0
mulsd  %xmm0,%xmm3
addsd  %xmm4,%xmm3
movsd  %xmm3,0x8(%rbx)
jmp    1998 <HSPtoRGB+0x888>
movsd  %xmm3,0x8(%rsp)
call   1030 <sqrt@plt>
movsd  0x8(%rsp),%xmm3
xorpd  %xmm4,%xmm4
movapd %xmm0,%xmm6
movsd  %xmm6,(%rbx)
mulsd  %xmm6,%xmm3
movsd  %xmm3,0x8(%rbx)
movq   $0x0,0x10(%rbx)
jmp    1998 <HSPtoRGB+0x888>
movsd  0xc9e(%rip),%xmm0
ucomisd %xmm3,%xmm0
jbe    14da <HSPtoRGB+0x3ca>
addsd  0xccc(%rip),%xmm3
mulsd  0xc9c(%rip),%xmm3
movapd %xmm7,%xmm1
divsd  %xmm5,%xmm1
addsd  0xcbc(%rip),%xmm1
mulsd  %xmm3,%xmm1
addsd  %xmm7,%xmm1
movapd %xmm5,%xmm0
mulsd  %xmm5,%xmm0
movsd  0xc94(%rip),%xmm2
divsd  %xmm0,%xmm2
movsd  0xc70(%rip),%xmm0
mulsd  %xmm1,%xmm0
mulsd  %xmm1,%xmm0
addsd  %xmm2,%xmm0
addsd  0xc64(%rip),%xmm0
xorpd  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jb     15a8 <HSPtoRGB+0x498>
sqrtsd %xmm0,%xmm0
jmp    15d1 <HSPtoRGB+0x4c1>
movsd  0xc1d(%rip),%xmm0
ucomisd %xmm3,%xmm0
jbe    1553 <HSPtoRGB+0x443>
addsd  0xc4b(%rip),%xmm3
mulsd  0xc1b(%rip),%xmm3
mulsd  %xmm4,%xmm4
movsd  0xc17(%rip),%xmm0
mulsd  %xmm3,%xmm0
mulsd  %xmm3,%xmm0
addsd  0xc1f(%rip),%xmm0
divsd  %xmm0,%xmm4
xorpd  %xmm6,%xmm6
ucomisd %xmm6,%xmm4
jb     1601 <HSPtoRGB+0x4f1>
xorps  %xmm0,%xmm0
sqrtsd %xmm4,%xmm0
jmp    161a <HSPtoRGB+0x50a>
movsd  %xmm4,0x18(%rsp)
movsd  %xmm5,0x10(%rsp)
movsd  %xmm6,0x8(%rsp)
call   1030 <sqrt@plt>
movsd  0x8(%rsp),%xmm6
movsd  0x10(%rsp),%xmm5
movsd  0x18(%rsp),%xmm4
divsd  %xmm0,%xmm4
movsd  %xmm4,0x10(%rbx)
movapd %xmm4,%xmm3
divsd  %xmm5,%xmm3
movsd  %xmm3,0x8(%rbx)
movapd %xmm3,%xmm0
subsd  %xmm4,%xmm0
mulsd  %xmm0,%xmm6
addsd  %xmm4,%xmm6
movsd  %xmm6,(%rbx)
jmp    1998 <HSPtoRGB+0x888>
movsd  %xmm6,0x8(%rsp)
call   1030 <sqrt@plt>
movsd  0x8(%rsp),%xmm6
xorpd  %xmm4,%xmm4
movapd %xmm0,%xmm3
movsd  %xmm3,0x8(%rbx)
mulsd  %xmm3,%xmm6
movsd  %xmm6,(%rbx)
movq   $0x0,0x10(%rbx)
jmp    1998 <HSPtoRGB+0x888>
movsd  0xb3e(%rip),%xmm2
ucomisd %xmm3,%xmm2
jbe    163c <HSPtoRGB+0x52c>
subsd  %xmm3,%xmm2
mulsd  0xb38(%rip),%xmm2
movapd %xmm7,%xmm1
divsd  %xmm5,%xmm1
addsd  0xb58(%rip),%xmm1
mulsd  %xmm2,%xmm1
addsd  %xmm7,%xmm1
movsd  0xb20(%rip),%xmm3
divsd  %xmm5,%xmm3
divsd  %xmm5,%xmm3
movsd  0xb28(%rip),%xmm0
mulsd  %xmm1,%xmm0
mulsd  %xmm1,%xmm0
addsd  %xmm3,%xmm0
addsd  0xb04(%rip),%xmm0
xorpd  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jb     171a <HSPtoRGB+0x60a>
sqrtsd %xmm0,%xmm0
jmp    1743 <HSPtoRGB+0x633>
movsd  0xac5(%rip),%xmm1
ucomisd %xmm3,%xmm1
jbe    16bd <HSPtoRGB+0x5ad>
subsd  %xmm3,%xmm1
mulsd  0xabf(%rip),%xmm1
mulsd  %xmm4,%xmm4
movsd  0xad3(%rip),%xmm0
mulsd  %xmm1,%xmm0
mulsd  %xmm1,%xmm0
addsd  0xaab(%rip),%xmm0
divsd  %xmm0,%xmm4
xorpd  %xmm6,%xmm6
ucomisd %xmm6,%xmm4
jb     177a <HSPtoRGB+0x66a>
sqrtsd %xmm4,%xmm4
jmp    1797 <HSPtoRGB+0x687>
movsd  %xmm4,0x18(%rsp)
movsd  %xmm3,0x8(%rsp)
movsd  %xmm5,0x10(%rsp)
call   1030 <sqrt@plt>
movsd  0x10(%rsp),%xmm5
movsd  0x8(%rsp),%xmm3
movsd  0x18(%rsp),%xmm4
movapd %xmm4,%xmm6
divsd  %xmm0,%xmm6
movsd  %xmm6,(%rbx)
movapd %xmm6,%xmm0
divsd  %xmm5,%xmm0
movsd  %xmm0,0x8(%rbx)
movapd %xmm0,%xmm1
subsd  %xmm6,%xmm1
mulsd  %xmm1,%xmm3
addsd  %xmm6,%xmm3
movsd  %xmm3,0x10(%rbx)
jmp    162f <HSPtoRGB+0x51f>
movapd %xmm4,%xmm0
movsd  %xmm3,0x8(%rsp)
call   1030 <sqrt@plt>
xorpd  %xmm6,%xmm6
movsd  0x8(%rsp),%xmm3
movsd  %xmm0,0x8(%rbx)
mulsd  %xmm0,%xmm3
movsd  %xmm3,0x10(%rbx)
movq   $0x0,(%rbx)
movapd %xmm3,%xmm4
movapd %xmm0,%xmm3
jmp    1998 <HSPtoRGB+0x888>
movsd  0x9e4(%rip),%xmm0
ucomisd %xmm3,%xmm0
jbe    17b5 <HSPtoRGB+0x6a5>
addsd  0x9f2(%rip),%xmm3
mulsd  0x9d2(%rip),%xmm3
movapd %xmm7,%xmm1
divsd  %xmm5,%xmm1
addsd  0x9f2(%rip),%xmm1
mulsd  %xmm3,%xmm1
addsd  %xmm7,%xmm1
movapd %xmm5,%xmm0
mulsd  %xmm5,%xmm0
movsd  0x9b2(%rip),%xmm2
divsd  %xmm0,%xmm2
movsd  0x9ae(%rip),%xmm0
mulsd  %xmm1,%xmm0
mulsd  %xmm1,%xmm0
addsd  %xmm2,%xmm0
addsd  0x9aa(%rip),%xmm0
xorpd  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jb     186a <HSPtoRGB+0x75a>
sqrtsd %xmm0,%xmm0
jmp    1893 <HSPtoRGB+0x783>
movsd  0x963(%rip),%xmm0
ucomisd %xmm3,%xmm0
jbe    1824 <HSPtoRGB+0x714>
addsd  0x971(%rip),%xmm3
movapd %xmm3,%xmm6
mulsd  0x94d(%rip),%xmm6
mulsd  %xmm4,%xmm4
movsd  0x951(%rip),%xmm0
mulsd  %xmm6,%xmm0
mulsd  %xmm6,%xmm0
addsd  0x939(%rip),%xmm0
divsd  %xmm0,%xmm4
xorpd  %xmm3,%xmm3
ucomisd %xmm3,%xmm4
jb     18ce <HSPtoRGB+0x7be>
sqrtsd %xmm4,%xmm4
jmp    18eb <HSPtoRGB+0x7db>
movsd  %xmm4,0x18(%rsp)
movsd  %xmm5,0x10(%rsp)
movsd  %xmm2,0x8(%rsp)
call   1030 <sqrt@plt>
movsd  0x8(%rsp),%xmm2
movsd  0x10(%rsp),%xmm5
movsd  0x18(%rsp),%xmm4
movapd %xmm4,%xmm6
divsd  %xmm0,%xmm6
movsd  %xmm6,(%rbx)
movapd %xmm6,%xmm4
divsd  %xmm5,%xmm4
movsd  %xmm4,0x10(%rbx)
movapd %xmm4,%xmm0
subsd  %xmm6,%xmm0
mulsd  %xmm0,%xmm2
addsd  %xmm6,%xmm2
movsd  %xmm2,0x8(%rbx)
movapd %xmm2,%xmm3
jmp    1998 <HSPtoRGB+0x888>
movapd %xmm4,%xmm0
movsd  %xmm1,0x8(%rsp)
call   1030 <sqrt@plt>
movsd  0x8(%rsp),%xmm1
xorpd  %xmm6,%xmm6
movapd %xmm0,%xmm4
movsd  %xmm4,0x10(%rbx)
mulsd  %xmm4,%xmm1
movsd  %xmm1,0x8(%rbx)
movq   $0x0,(%rbx)
movapd %xmm1,%xmm3
jmp    1998 <HSPtoRGB+0x888>
movapd %xmm7,%xmm2
subsd  %xmm3,%xmm2
mulsd  0x86b(%rip),%xmm2
movapd %xmm7,%xmm1
divsd  %xmm5,%xmm1
addsd  0x88b(%rip),%xmm1
mulsd  %xmm2,%xmm1
addsd  %xmm7,%xmm1
movapd %xmm5,%xmm0
mulsd  %xmm5,%xmm0
movsd  0x853(%rip),%xmm3
divsd  %xmm0,%xmm3
movsd  0x83f(%rip),%xmm0
mulsd  %xmm1,%xmm0
mulsd  %xmm1,%xmm0
addsd  %xmm3,%xmm0
addsd  0x843(%rip),%xmm0
xorpd  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jb     1905 <HSPtoRGB+0x7f5>
sqrtsd %xmm0,%xmm0
jmp    192e <HSPtoRGB+0x81e>
subsd  %xmm3,%xmm7
mulsd  0x800(%rip),%xmm7
mulsd  %xmm4,%xmm4
movsd  0x7fc(%rip),%xmm0
mulsd  %xmm7,%xmm0
mulsd  %xmm7,%xmm0
addsd  0x7f4(%rip),%xmm0
divsd  %xmm0,%xmm4
xorpd  %xmm3,%xmm3
ucomisd %xmm3,%xmm4
jb     1962 <HSPtoRGB+0x852>
xorps  %xmm6,%xmm6
sqrtsd %xmm4,%xmm6
jmp    197f <HSPtoRGB+0x86f>
movsd  %xmm4,0x18(%rsp)
movsd  %xmm3,0x8(%rsp)
movsd  %xmm5,0x10(%rsp)
call   1030 <sqrt@plt>
movsd  0x10(%rsp),%xmm5
movsd  0x8(%rsp),%xmm3
movsd  0x18(%rsp),%xmm4
movapd %xmm4,%xmm1
divsd  %xmm0,%xmm1
movsd  %xmm1,0x8(%rbx)
movapd %xmm1,%xmm4
divsd  %xmm5,%xmm4
movsd  %xmm4,0x10(%rbx)
movapd %xmm4,%xmm0
subsd  %xmm1,%xmm0
mulsd  %xmm0,%xmm3
movapd %xmm3,%xmm6
addsd  %xmm1,%xmm6
movsd  %xmm6,(%rbx)
movapd %xmm1,%xmm3
jmp    1998 <HSPtoRGB+0x888>
movapd %xmm4,%xmm0
movsd  %xmm6,0x8(%rsp)
call   1030 <sqrt@plt>
movsd  0x8(%rsp),%xmm6
xorpd  %xmm3,%xmm3
movapd %xmm0,%xmm4
movsd  %xmm4,0x10(%rbx)
mulsd  %xmm4,%xmm6
movsd  %xmm6,(%rbx)
movq   $0x0,0x8(%rbx)
jmp    1998 <HSPtoRGB+0x888>
movsd  %xmm4,0x18(%rsp)
movsd  %xmm5,0x10(%rsp)
movsd  %xmm2,0x8(%rsp)
call   1030 <sqrt@plt>
movsd  0x8(%rsp),%xmm2
movsd  0x10(%rsp),%xmm5
movsd  0x18(%rsp),%xmm4
movapd %xmm4,%xmm3
divsd  %xmm0,%xmm3
movsd  %xmm3,0x8(%rbx)
movapd %xmm3,%xmm6
divsd  %xmm5,%xmm6
movsd  %xmm6,(%rbx)
movapd %xmm6,%xmm0
subsd  %xmm3,%xmm0
mulsd  %xmm0,%xmm2
addsd  %xmm3,%xmm2
movsd  %xmm2,0x10(%rbx)
movapd %xmm2,%xmm4
jmp    1998 <HSPtoRGB+0x888>
movapd %xmm4,%xmm0
movsd  %xmm7,0x8(%rsp)
call   1030 <sqrt@plt>
movsd  0x8(%rsp),%xmm7
xorpd  %xmm3,%xmm3
movapd %xmm0,%xmm6
movsd  %xmm6,(%rbx)
mulsd  %xmm6,%xmm7
movsd  %xmm7,0x10(%rbx)
movq   $0x0,0x8(%rbx)
movapd %xmm7,%xmm4
xorpd  %xmm0,%xmm0
movapd %xmm6,%xmm1
maxsd  %xmm0,%xmm1
movapd %xmm3,%xmm2
maxsd  %xmm1,%xmm2
movapd %xmm4,%xmm0
maxsd  %xmm2,%xmm0
ucomisd 0x644(%rip),%xmm0
jbe    19d8 <HSPtoRGB+0x8c8>
divsd  %xmm0,%xmm6
movsd  %xmm6,(%rbx)
divsd  %xmm0,%xmm3
movsd  %xmm3,0x8(%rbx)
divsd  %xmm0,%xmm4
movsd  %xmm4,0x10(%rbx)
add    $0x20,%rsp
pop    %rbx
ret

LLVM IR (-O0):
define void @HSPtoRGB(double* %0, double* %1) {
%3 = alloca double*
%4 = alloca double*
%5 = alloca double
%6 = alloca double
%7 = alloca double
%8 = alloca double*
%9 = alloca double*
%10 = alloca double*
%11 = alloca double
%12 = alloca double
%13 = alloca i32
%14 = alloca double
store double* %0, double** %3
store double* %1, double** %4
%15 = load double*, double** %3
%16 = getelementptr inbounds double, double* %15, i64 0
%17 = load double, double* %16
store double %17, double* %5
%18 = load double*, double** %3
%19 = getelementptr inbounds double, double* %18, i64 1
%20 = load double, double* %19
store double %20, double* %6
%21 = load double*, double** %3
%22 = getelementptr inbounds double, double* %21, i64 2
%23 = load double, double* %22
store double %23, double* %7
%24 = load double*, double** %4
store double* %24, double** %8
%25 = load double*, double** %4
%26 = getelementptr inbounds double, double* %25, i64 1
store double* %26, double** %9
%27 = load double*, double** %4
%28 = getelementptr inbounds double, double* %27, i64 2
store double* %28, double** %10
%29 = load double, double* %6
%30 = fsub double 1.000000e+00, %29
store double %30, double* %12
%31 = load double, double* %12
%32 = fcmp ogt double %31, 0.000000e+00
br i1 %32, label %33, label %274
33: ; preds = %2
%34 = load double, double* %5
%35 = fcmp olt double %34, 0x3FC5555555555555
br i1 %35, label %36, label %72
36: ; preds = %33
%37 = load double, double* %5
%38 = fmul double %37, 6.000000e+00
store double %38, double* %5
%39 = load double, double* %5
%40 = load double, double* %12
%41 = fdiv double 1.000000e+00, %40
%42 = fsub double %41, 1.000000e+00
%43 = call double @llvm.fmuladd.f64(double %39, double %42, double 1.000000e+00)
store double %43, double* %11
%44 = load double, double* %7
%45 = load double, double* %12
%46 = load double, double* %12
%47 = fmul double %45, %46
%48 = fdiv double 2.990000e-01, %47
%49 = load double, double* %11
%50 = fmul double 5.870000e-01, %49
%51 = load double, double* %11
%52 = call double @llvm.fmuladd.f64(double %50, double %51, double %48)
%53 = fadd double %52, 1.140000e-01
%54 = call double @sqrt(double %53)
%55 = fdiv double %44, %54
%56 = load double*, double** %10
store double %55, double* %56
%57 = load double*, double** %10
%58 = load double, double* %57
%59 = load double, double* %12
%60 = fdiv double %58, %59
%61 = load double*, double** %8
store double %60, double* %61
%62 = load double*, double** %10
%63 = load double, double* %62
%64 = load double, double* %5
%65 = load double*, double** %8
%66 = load double, double* %65
%67 = load double*, double** %10
%68 = load double, double* %67
%69 = fsub double %66, %68
%70 = call double @llvm.fmuladd.f64(double %64, double %69, double %63)
%71 = load double*, double** %9
store double %70, double* %71
br label %273
72: ; preds = %33
%73 = load double, double* %5
%74 = fcmp olt double %73, 0x3FD5555555555555
br i1 %74, label %75, label %112
75: ; preds = %72
%76 = load double, double* %5
%77 = fsub double 0.000000e+00, %76
%78 = fmul double 6.000000e+00, %77
store double %78, double* %5
%79 = load double, double* %5
%80 = load double, double* %12
%81 = fdiv double 1.000000e+00, %80
%82 = fsub double %81, 1.000000e+00
%83 = call double @llvm.fmuladd.f64(double %79, double %82, double 1.000000e+00)
store double %83, double* %11
%84 = load double, double* %7
%85 = load double, double* %12
%86 = load double, double* %12
%87 = fmul double %85, %86
%88 = fdiv double 5.870000e-01, %87
%89 = load double, double* %11
%90 = fmul double 2.990000e-01, %89
%91 = load double, double* %11
%92 = call double @llvm.fmuladd.f64(double %90, double %91, double %88)
%93 = fadd double %92, 1.140000e-01
%94 = call double @sqrt(double %93)
%95 = fdiv double %84, %94
%96 = load double*, double** %10
store double %95, double* %96
%97 = load double*, double** %10
%98 = load double, double* %97
%99 = load double, double* %12
%100 = fdiv double %98, %99
%101 = load double*, double** %9
store double %100, double* %101
%102 = load double*, double** %10
%103 = load double, double* %102
%104 = load double, double* %5
%105 = load double*, double** %9
%106 = load double, double* %105
%107 = load double*, double** %10
%108 = load double, double* %107
%109 = fsub double %106, %108
%110 = call double @llvm.fmuladd.f64(double %104, double %109, double %103)
%111 = load double*, double** %8
store double %110, double* %111
br label %272
112: ; preds = %72
%113 = load double, double* %5
%114 = fcmp olt double %113, 5.000000e-01
br i1 %114, label %115, label %152
115: ; preds = %112
%116 = load double, double* %5
%117 = fsub double %116, 0x3FD5555555555555
%118 = fmul double 6.000000e+00, %117
store double %118, double* %5
%119 = load double, double* %5
%120 = load double, double* %12
%121 = fdiv double 1.000000e+00, %120
%122 = fsub double %121, 1.000000e+00
%123 = call double @llvm.fmuladd.f64(double %119, double %122, double 1.000000e+00)
store double %123, double* %11
%124 = load double, double* %7
%125 = load double, double* %12
%126 = load double, double* %12
%127 = fmul double %125, %126
%128 = fdiv double 5.870000e-01, %127
%129 = load double, double* %11
%130 = fmul double 1.140000e-01, %129
%131 = load double, double* %11
%132 = call double @llvm.fmuladd.f64(double %130, double %131, double %128)
%133 = fadd double %132, 2.990000e-01
%134 = call double @sqrt(double %133)
%135 = fdiv double %124, %134
%136 = load double*, double** %8
store double %135, double* %136
%137 = load double*, double** %8
%138 = load double, double* %137
%139 = load double, double* %12
%140 = fdiv double %138, %139
%141 = load double*, double** %9
store double %140, double* %141
%142 = load double*, double** %8
%143 = load double, double* %142
%144 = load double, double* %5
%145 = load double*, double** %9
%146 = load double, double* %145
%147 = load double*, double** %8
%148 = load double, double* %147
%149 = fsub double %146, %148
%150 = call double @llvm.fmuladd.f64(double %144, double %149, double %143)
%151 = load double*, double** %10
store double %150, double* %151
br label %271
152: ; preds = %112
%153 = load double, double* %5
%154 = fcmp olt double %153, 0x3FE5555555555555
br i1 %154, label %155, label %192
155: ; preds = %152
%156 = load double, double* %5
%157 = fsub double 0x3FE5555555555555, %156
%158 = fmul double 6.000000e+00, %157
store double %158, double* %5
%159 = load double, double* %5
%160 = load double, double* %12
%161 = fdiv double 1.000000e+00, %160
%162 = fsub double %161, 1.000000e+00
%163 = call double @llvm.fmuladd.f64(double %159, double %162, double 1.000000e+00)
store double %163, double* %11
%164 = load double, double* %7
%165 = load double, double* %12
%166 = fdiv double 1.140000e-01, %165
%167 = load double, double* %12
%168 = fdiv double %166, %167
%169 = load double, double* %11
%170 = fmul double 5.870000e-01, %169
%171 = load double, double* %11
%172 = call double @llvm.fmuladd.f64(double %170, double %171, double %168)
%173 = fadd double %172, 2.990000e-01
%174 = call double @sqrt(double %173)
%175 = fdiv double %164, %174
%176 = load double*, double** %8
store double %175, double* %176
%177 = load double*, double** %8
%178 = load double, double* %177
%179 = load double, double* %12
%180 = fdiv double %178, %179
%181 = load double*, double** %10
store double %180, double* %181
%182 = load double*, double** %8
%183 = load double, double* %182
%184 = load double, double* %5
%185 = load double*, double** %10
%186 = load double, double* %185
%187 = load double*, double** %8
%188 = load double, double* %187
%189 = fsub double %186, %188
%190 = call double @llvm.fmuladd.f64(double %184, double %189, double %183)
%191 = load double*, double** %9
store double %190, double* %191
br label %270
192: ; preds = %152
%193 = load double, double* %5
%194 = fcmp olt double %193, 0x3FEAAAAAAAAAAAAB
br i1 %194, label %195, label %232
195: ; preds = %192
%196 = load double, double* %5
%197 = fsub double %196, 0x3FE5555555555555
%198 = fmul double 6.000000e+00, %197
store double %198, double* %5
%199 = load double, double* %5
%200 = load double, double* %12
%201 = fdiv double 1.000000e+00, %200
%202 = fsub double %201, 1.000000e+00
%203 = call double @llvm.fmuladd.f64(double %199, double %202, double 1.000000e+00)
store double %203, double* %11
%204 = load double, double* %7
%205 = load double, double* %12
%206 = load double, double* %12
%207 = fmul double %205, %206
%208 = fdiv double 1.140000e-01, %207
%209 = load double, double* %11
%210 = fmul double 2.990000e-01, %209
%211 = load double, double* %11
%212 = call double @llvm.fmuladd.f64(double %210, double %211, double %208)
%213 = fadd double %212, 5.870000e-01
%214 = call double @sqrt(double %213)
%215 = fdiv double %204, %214
%216 = load double*, double** %9
store double %215, double* %216
%217 = load double*, double** %9
%218 = load double, double* %217
%219 = load double, double* %12
%220 = fdiv double %218, %219
%221 = load double*, double** %10
store double %220, double* %221
%222 = load double*, double** %9
%223 = load double, double* %222
%224 = load double, double* %5
%225 = load double*, double** %10
%226 = load double, double* %225
%227 = load double*, double** %9
%228 = load double, double* %227
%229 = fsub double %226, %228
%230 = call double @llvm.fmuladd.f64(double %224, double %229, double %223)
%231 = load double*, double** %8
store double %230, double* %231
br label %269
232: ; preds = %192
%233 = load double, double* %5
%234 = fsub double 1.000000e+00, %233
%235 = fmul double 6.000000e+00, %234
store double %235, double* %5
%236 = load double, double* %5
%237 = load double, double* %12
%238 = fdiv double 1.000000e+00, %237
%239 = fsub double %238, 1.000000e+00
%240 = call double @llvm.fmuladd.f64(double %236, double %239, double 1.000000e+00)
store double %240, double* %11
%241 = load double, double* %7
%242 = load double, double* %12
%243 = load double, double* %12
%244 = fmul double %242, %243
%245 = fdiv double 2.990000e-01, %244
%246 = load double, double* %11
%247 = fmul double 1.140000e-01, %246
%248 = load double, double* %11
%249 = call double @llvm.fmuladd.f64(double %247, double %248, double %245)
%250 = fadd double %249, 5.870000e-01
%251 = call double @sqrt(double %250)
%252 = fdiv double %241, %251
%253 = load double*, double** %9
store double %252, double* %253
%254 = load double*, double** %9
%255 = load double, double* %254
%256 = load double, double* %12
%257 = fdiv double %255, %256
%258 = load double*, double** %8
store double %257, double* %258
%259 = load double*, double** %9
%260 = load double, double* %259
%261 = load double, double* %5
%262 = load double*, double** %8
%263 = load double, double* %262
%264 = load double*, double** %9
%265 = load double, double* %264
%266 = fsub double %263, %265
%267 = call double @llvm.fmuladd.f64(double %261, double %266, double %260)
%268 = load double*, double** %10
store double %267, double* %268
br label %269
269: ; preds = %232, %195
br label %270
270: ; preds = %269, %155
br label %271
271: ; preds = %270, %115
br label %272
272: ; preds = %271, %75
br label %273
273: ; preds = %272, %36
br label %413
274: ; preds = %2
%275 = load double, double* %5
%276 = fcmp olt double %275, 0x3FC5555555555555
br i1 %276, label %277, label %296
277: ; preds = %274
%278 = load double, double* %5
%279 = fmul double %278, 6.000000e+00
store double %279, double* %5
%280 = load double, double* %7
%281 = load double, double* %7
%282 = fmul double %280, %281
%283 = load double, double* %5
%284 = fmul double 5.870000e-01, %283
%285 = load double, double* %5
%286 = call double @llvm.fmuladd.f64(double %284, double %285, double 2.990000e-01)
%287 = fdiv double %282, %286
%288 = call double @sqrt(double %287)
%289 = load double*, double** %8
store double %288, double* %289
%290 = load double*, double** %8
%291 = load double, double* %290
%292 = load double, double* %5
%293 = fmul double %291, %292
%294 = load double*, double** %9
store double %293, double* %294
%295 = load double*, double** %10
store double 0.000000e+00, double* %295
br label %412
296: ; preds = %274
%297 = load double, double* %5
%298 = fcmp olt double %297, 0x3FD5555555555555
br i1 %298, label %299, label %319
299: ; preds = %296
%300 = load double, double* %5
%301 = fsub double 0x3FD5555555555555, %300
%302 = fmul double 6.000000e+00, %301
store double %302, double* %5
%303 = load double, double* %7
%304 = load double, double* %7
%305 = fmul double %303, %304
%306 = load double, double* %5
%307 = fmul double 2.990000e-01, %306
%308 = load double, double* %5
%309 = call double @llvm.fmuladd.f64(double %307, double %308, double 5.870000e-01)
%310 = fdiv double %305, %309
%311 = call double @sqrt(double %310)
%312 = load double*, double** %9
store double %311, double* %312
%313 = load double*, double** %9
%314 = load double, double* %313
%315 = load double, double* %5
%316 = fmul double %314, %315
%317 = load double*, double** %8
store double %316, double* %317
%318 = load double*, double** %10
store double 0.000000e+00, double* %318
br label %411
319: ; preds = %296
%320 = load double, double* %5
%321 = fcmp olt double %320, 5.000000e-01
br i1 %321, label %322, label %342
322: ; preds = %319
%323 = load double, double* %5
%324 = fsub double %323, 0x3FD5555555555555
%325 = fmul double 6.000000e+00, %324
store double %325, double* %5
%326 = load double, double* %7
%327 = load double, double* %7
%328 = fmul double %326, %327
%329 = load double, double* %5
%330 = fmul double 1.140000e-01, %329
%331 = load double, double* %5
%332 = call double @llvm.fmuladd.f64(double %330, double %331, double 5.870000e-01)
%333 = fdiv double %328, %332
%334 = call double @sqrt(double %333)
%335 = load double*, double** %9
store double %334, double* %335
%336 = load double*, double** %9
%337 = load double, double* %336
%338 = load double, double* %5
%339 = fmul double %337, %338
%340 = load double*, double** %10
store double %339, double* %340
%341 = load double*, double** %8
store double 0.000000e+00, double* %341
br label %410
342: ; preds = %319
%343 = load double, double* %5
%344 = fcmp olt double %343, 0x3FE5555555555555
br i1 %344, label %345, label %365
345: ; preds = %342
%346 = load double, double* %5
%347 = fsub double 0x3FE5555555555555, %346
%348 = fmul double 6.000000e+00, %347
store double %348, double* %5
%349 = load double, double* %7
%350 = load double, double* %7
%351 = fmul double %349, %350
%352 = load double, double* %5
%353 = fmul double 5.870000e-01, %352
%354 = load double, double* %5
%355 = call double @llvm.fmuladd.f64(double %353, double %354, double 1.140000e-01)
%356 = fdiv double %351, %355
%357 = call double @sqrt(double %356)
%358 = load double*, double** %10
store double %357, double* %358
%359 = load double*, double** %10
%360 = load double, double* %359
%361 = load double, double* %5
%362 = fmul double %360, %361
%363 = load double*, double** %9
store double %362, double* %363
%364 = load double*, double** %8
store double 0.000000e+00, double* %364
br label %409
365: ; preds = %342
%366 = load double, double* %5
%367 = fcmp olt double %366, 0x3FEAAAAAAAAAAAAB
br i1 %367, label %368, label %388
368: ; preds = %365
%369 = load double, double* %5
%370 = fsub double %369, 0x3FE5555555555555
%371 = fmul double 6.000000e+00, %370
store double %371, double* %5
%372 = load double, double* %7
%373 = load double, double* %7
%374 = fmul double %372, %373
%375 = load double, double* %5
%376 = fmul double 2.990000e-01, %375
%377 = load double, double* %5
%378 = call double @llvm.fmuladd.f64(double %376, double %377, double 1.140000e-01)
%379 = fdiv double %374, %378
%380 = call double @sqrt(double %379)
%381 = load double*, double** %10
store double %380, double* %381
%382 = load double*, double** %10
%383 = load double, double* %382
%384 = load double, double* %5
%385 = fmul double %383, %384
%386 = load double*, double** %8
store double %385, double* %386
%387 = load double*, double** %9
store double 0.000000e+00, double* %387
br label %408
388: ; preds = %365
%389 = load double, double* %5
%390 = fsub double 1.000000e+00, %389
%391 = fmul double 6.000000e+00, %390
store double %391, double* %5
%392 = load double, double* %7
%393 = load double, double* %7
%394 = fmul double %392, %393
%395 = load double, double* %5
%396 = fmul double 1.140000e-01, %395
%397 = load double, double* %5
%398 = call double @llvm.fmuladd.f64(double %396, double %397, double 2.990000e-01)
%399 = fdiv double %394, %398
%400 = call double @sqrt(double %399)
%401 = load double*, double** %8
store double %400, double* %401
%402 = load double*, double** %8
%403 = load double, double* %402
%404 = load double, double* %5
%405 = fmul double %403, %404
%406 = load double*, double** %10
store double %405, double* %406
%407 = load double*, double** %9
store double 0.000000e+00, double* %407
br label %408
408: ; preds = %388, %368
br label %409
409: ; preds = %408, %345
br label %410
410: ; preds = %409, %322
br label %411
411: ; preds = %410, %299
br label %412
412: ; preds = %411, %277
br label %413
413: ; preds = %412, %273
store double 0.000000e+00, double* %14
store i32 0, i32* %13
br label %414
414: ; preds = %432, %413
%415 = load i32, i32* %13
%416 = icmp slt i32 %415, 3
br i1 %416, label %417, label %435
417: ; preds = %414
%418 = load double*, double** %4
%419 = load i32, i32* %13
%420 = sext i32 %419 to i64
%421 = getelementptr inbounds double, double* %418, i64 %420
%422 = load double, double* %421
%423 = load double, double* %14
%424 = fcmp ogt double %422, %423
br i1 %424, label %425, label %431
425: ; preds = %417
%426 = load double*, double** %4
%427 = load i32, i32* %13
%428 = sext i32 %427 to i64
%429 = getelementptr inbounds double, double* %426, i64 %428
%430 = load double, double* %429
store double %430, double* %14
br label %431
431: ; preds = %425, %417
br label %432
432: ; preds = %431
%433 = load i32, i32* %13
%434 = add nsw i32 %433, 1
store i32 %434, i32* %13
br label %414
435: ; preds = %414
%436 = load double, double* %14
%437 = fcmp ogt double %436, 1.000000e+00
br i1 %437, label %438, label %454
438: ; preds = %435
store i32 0, i32* %13
br label %439
439: ; preds = %450, %438
%440 = load i32, i32* %13
%441 = icmp slt i32 %440, 3
br i1 %441, label %442, label %453
442: ; preds = %439
%443 = load double, double* %14
%444 = load double*, double** %4
%445 = load i32, i32* %13
%446 = sext i32 %445 to i64
%447 = getelementptr inbounds double, double* %444, i64 %446
%448 = load double, double* %447
%449 = fdiv double %448, %443
store double %449, double* %447
br label %450
450: ; preds = %442
%451 = load i32, i32* %13
%452 = add nsw i32 %451, 1
store i32 %452, i32* %13
br label %439
453: ; preds = %439
br label %454
454: ; preds = %453, %435
ret void
}

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