void value2_to_rgb(double value, double color[3], int color_system_type) {
  double r, g, b;
  if (color_system_type == 1) {
    if (value < 0.0)
      value = 0.0;
    if (value > 1.0)
      value = 1.0;
    if (value <= 0.25) {
      r = 0.0;
      g = value * 4.0;
      b = 1.0;
    } else if ((value > 0.25) && (value <= 0.5)) {
      r = 0.0;
      g = 1.0;
      b = (0.5 - value) * 4.0;
    } else if ((value > 0.5) && (value <= 0.75)) {
      r = (value - 0.5) * 4.0;
      g = 1.0;
      b = 0.0;
    } else if (value > 0.75) {
      r = 1.0;
      g = (1.0 - value) * 4.0;
      b = 0.0;
    }
  } else if (color_system_type == 2) {
    if (value < 0.0)
      value = 0.0;
    if (value > 1.0)
      value = 1.0;
    if (value <= 0.2) {
      r = (0.2 - value) * 5.0;
      g = 0.0;
      b = 1.0;
    } else if ((value > 0.2) && (value <= 0.4)) {
      r = 0.0;
      g = (value - 0.2) * 5.0;
      b = 1.0;
    } else if ((value > 0.4) && (value <= 0.6)) {
      r = 0.0;
      g = 1.0;
      b = 1.0 - (value - 0.4) * 5.0;
    } else if ((value > 0.6) && (value <= 0.8)) {
      r = (value - 0.6) * 5.0;
      g = 1.0;
      b = 0.0;
    } else if (value > 0.0) {
      r = 1.0;
      g = 1.0 - (value - 0.8) * 5.0;
      b = 0.0;
    }
  } else if (color_system_type == 3) {
    r = g = b = value;
  }
  color[0] = r;
  color[1] = g;
  color[2] = b;
  return;
}


x86 assembly (clang, -O0):
<value2_to_rgb>:
push   %rbp
mov    %rsp,%rbp
movsd  %xmm0,-0x8(%rbp)
mov    %rdi,-0x10(%rbp)
mov    %esi,-0x14(%rbp)
cmpl   $0x1,-0x14(%rbp)
jne    12b9 <value2_to_rgb+0x1b9>
xorps  %xmm0,%xmm0
ucomisd -0x8(%rbp),%xmm0
jbe    1130 <value2_to_rgb+0x30>
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x8(%rbp)
movsd  -0x8(%rbp),%xmm0
movsd  0xec3(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    1154 <value2_to_rgb+0x54>
movsd  0xeb1(%rip),%xmm0
movsd  %xmm0,-0x8(%rbp)
movsd  0xed4(%rip),%xmm0
ucomisd -0x8(%rbp),%xmm0
jb     1193 <value2_to_rgb+0x93>
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x20(%rbp)
movsd  0xed1(%rip),%xmm0
mulsd  -0x8(%rbp),%xmm0
movsd  %xmm0,-0x28(%rbp)
movsd  0xe77(%rip),%xmm0
movsd  %xmm0,-0x30(%rbp)
jmp    12b4 <value2_to_rgb+0x1b4>
movsd  -0x8(%rbp),%xmm0
movsd  0xe90(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    11f5 <value2_to_rgb+0xf5>
movsd  0xe86(%rip),%xmm0
ucomisd -0x8(%rbp),%xmm0
jb     11f5 <value2_to_rgb+0xf5>
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x20(%rbp)
movsd  0xe33(%rip),%xmm0
movsd  %xmm0,-0x28(%rbp)
movsd  0xe5e(%rip),%xmm0
subsd  -0x8(%rbp),%xmm0
movsd  0xe61(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x30(%rbp)
jmp    12af <value2_to_rgb+0x1af>
movsd  -0x8(%rbp),%xmm0
movsd  0xe36(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    125b <value2_to_rgb+0x15b>
movsd  0xe2c(%rip),%xmm0
ucomisd -0x8(%rbp),%xmm0
jb     125b <value2_to_rgb+0x15b>
movsd  -0x8(%rbp),%xmm0
movsd  0xe0c(%rip),%xmm1
subsd  %xmm1,%xmm0
movsd  0xe10(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x20(%rbp)
movsd  0xdb7(%rip),%xmm0
movsd  %xmm0,-0x28(%rbp)
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x30(%rbp)
jmp    12aa <value2_to_rgb+0x1aa>
movsd  -0x8(%rbp),%xmm0
movsd  0xdd8(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    12a5 <value2_to_rgb+0x1a5>
movsd  0xd86(%rip),%xmm0
movsd  %xmm0,-0x20(%rbp)
movsd  0xd79(%rip),%xmm0
subsd  -0x8(%rbp),%xmm0
movsd  0xdb4(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x28(%rbp)
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x30(%rbp)
jmp    12aa <value2_to_rgb+0x1aa>
jmp    12af <value2_to_rgb+0x1af>
jmp    12b4 <value2_to_rgb+0x1b4>
jmp    154a <value2_to_rgb+0x44a>
cmpl   $0x2,-0x14(%rbp)
jne    1522 <value2_to_rgb+0x422>
xorps  %xmm0,%xmm0
ucomisd -0x8(%rbp),%xmm0
jbe    12d9 <value2_to_rgb+0x1d9>
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x8(%rbp)
movsd  -0x8(%rbp),%xmm0
movsd  0xd1a(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    12fd <value2_to_rgb+0x1fd>
movsd  0xd08(%rip),%xmm0
movsd  %xmm0,-0x8(%rbp)
movsd  0xd03(%rip),%xmm0
ucomisd -0x8(%rbp),%xmm0
jb     1348 <value2_to_rgb+0x248>
movsd  0xcf0(%rip),%xmm0
subsd  -0x8(%rbp),%xmm0
movsd  0xd03(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x20(%rbp)
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x28(%rbp)
movsd  0xcc2(%rip),%xmm0
movsd  %xmm0,-0x30(%rbp)
jmp    151d <value2_to_rgb+0x41d>
movsd  -0x8(%rbp),%xmm0
movsd  0xcb3(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    13ae <value2_to_rgb+0x2ae>
movsd  0xca9(%rip),%xmm0
ucomisd -0x8(%rbp),%xmm0
jb     13ae <value2_to_rgb+0x2ae>
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x20(%rbp)
movsd  -0x8(%rbp),%xmm0
movsd  0xc81(%rip),%xmm1
subsd  %xmm1,%xmm0
movsd  0xc95(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x28(%rbp)
movsd  0xc5c(%rip),%xmm0
movsd  %xmm0,-0x30(%rbp)
jmp    1518 <value2_to_rgb+0x418>
movsd  -0x8(%rbp),%xmm0
movsd  0xc55(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    1437 <value2_to_rgb+0x337>
movsd  0xc4b(%rip),%xmm0
ucomisd -0x8(%rbp),%xmm0
jb     1437 <value2_to_rgb+0x337>
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x20(%rbp)
movsd  0xc18(%rip),%xmm0
movsd  %xmm0,-0x28(%rbp)
movsd  -0x8(%rbp),%xmm0
movsd  0xc16(%rip),%xmm1
subsd  %xmm1,%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  0xc0b(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xbd7(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x30(%rbp)
jmp    1513 <value2_to_rgb+0x413>
movsd  -0x8(%rbp),%xmm0
movsd  0xbd4(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    149d <value2_to_rgb+0x39d>
movsd  0xbca(%rip),%xmm0
ucomisd -0x8(%rbp),%xmm0
jb     149d <value2_to_rgb+0x39d>
movsd  -0x8(%rbp),%xmm0
movsd  0xbaa(%rip),%xmm1
subsd  %xmm1,%xmm0
movsd  0xbae(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x20(%rbp)
movsd  0xb75(%rip),%xmm0
movsd  %xmm0,-0x28(%rbp)
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x30(%rbp)
jmp    150e <value2_to_rgb+0x40e>
movsd  -0x8(%rbp),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jbe    1509 <value2_to_rgb+0x409>
movsd  0xb49(%rip),%xmm0
movsd  %xmm0,-0x20(%rbp)
movsd  -0x8(%rbp),%xmm0
movsd  0xb57(%rip),%xmm1
subsd  %xmm1,%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  0xb3c(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xb08(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x28(%rbp)
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x30(%rbp)
jmp    150e <value2_to_rgb+0x40e>
jmp    1513 <value2_to_rgb+0x413>
jmp    1518 <value2_to_rgb+0x418>
jmp    151d <value2_to_rgb+0x41d>
jmp    1545 <value2_to_rgb+0x445>
cmpl   $0x3,-0x14(%rbp)
jne    1540 <value2_to_rgb+0x440>
movsd  -0x8(%rbp),%xmm0
movsd  %xmm0,-0x30(%rbp)
movsd  %xmm0,-0x28(%rbp)
movsd  %xmm0,-0x20(%rbp)
jmp    1545 <value2_to_rgb+0x445>
jmp    154a <value2_to_rgb+0x44a>
movsd  -0x20(%rbp),%xmm0
mov    -0x10(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  -0x28(%rbp),%xmm0
mov    -0x10(%rbp),%rax
movsd  %xmm0,0x8(%rax)
movsd  -0x30(%rbp),%xmm0
mov    -0x10(%rbp),%rax
movsd  %xmm0,0x10(%rax)
pop    %rbp
ret

x86 assembly (clang, -O2):
<value2_to_rgb>:
cmp    $0x2,%esi
je     1175 <value2_to_rgb+0x75>
cmp    $0x1,%esi
jne    11d9 <value2_to_rgb+0xd9>
xorpd  %xmm2,%xmm2
xorpd  %xmm3,%xmm3
maxsd  %xmm0,%xmm3
movsd  0xede(%rip),%xmm0
movapd %xmm0,%xmm1
minsd  %xmm3,%xmm1
movsd  0xf26(%rip),%xmm3
ucomisd %xmm1,%xmm3
jae    11e3 <value2_to_rgb+0xe3>
ucomisd 0xf14(%rip),%xmm1
jbe    1208 <value2_to_rgb+0x108>
movsd  0xf16(%rip),%xmm0
ucomisd %xmm1,%xmm0
jb     1208 <value2_to_rgb+0x108>
subsd  %xmm1,%xmm0
mulsd  0xef8(%rip),%xmm0
movsd  0xe90(%rip),%xmm1
jmp    11f9 <value2_to_rgb+0xf9>
xorpd  %xmm1,%xmm1
xorpd  %xmm2,%xmm2
maxsd  %xmm0,%xmm2
movsd  0xe77(%rip),%xmm0
movapd %xmm0,%xmm3
minsd  %xmm2,%xmm3
movsd  0xe6f(%rip),%xmm2
ucomisd %xmm3,%xmm2
jae    11ed <value2_to_rgb+0xed>
ucomisd 0xe61(%rip),%xmm3
jbe    1242 <value2_to_rgb+0x142>
movsd  0xe63(%rip),%xmm1
ucomisd %xmm3,%xmm1
jb     1242 <value2_to_rgb+0x142>
addsd  0xe89(%rip),%xmm3
mulsd  0xe41(%rip),%xmm3
xorpd  %xmm2,%xmm2
movapd %xmm3,%xmm1
jmp    11f9 <value2_to_rgb+0xf9>
movapd %xmm0,%xmm2
movapd %xmm0,%xmm1
jmp    11f9 <value2_to_rgb+0xf9>
mulsd  0xe75(%rip),%xmm1
jmp    11f9 <value2_to_rgb+0xf9>
subsd  %xmm3,%xmm2
mulsd  0xe17(%rip),%xmm2
movsd  %xmm2,(%rdi)
movsd  %xmm1,0x8(%rdi)
movsd  %xmm0,0x10(%rdi)
ret
ucomisd 0xe58(%rip),%xmm1
jbe    1283 <value2_to_rgb+0x183>
movsd  0xe56(%rip),%xmm0
ucomisd %xmm1,%xmm0
jb     1283 <value2_to_rgb+0x183>
addsd  0xe50(%rip),%xmm1
mulsd  0xe30(%rip),%xmm1
xorpd  %xmm0,%xmm0
movapd %xmm1,%xmm2
movsd  0xdc0(%rip),%xmm1
jmp    11f9 <value2_to_rgb+0xf9>
ucomisd 0xdce(%rip),%xmm3
jbe    12b2 <value2_to_rgb+0x1b2>
movsd  0xdcc(%rip),%xmm0
ucomisd %xmm3,%xmm0
jb     12b2 <value2_to_rgb+0x1b2>
addsd  0xde6(%rip),%xmm3
mulsd  0xdce(%rip),%xmm3
movsd  0xd8e(%rip),%xmm1
addsd  %xmm1,%xmm3
xorpd  %xmm2,%xmm2
movapd %xmm3,%xmm0
jmp    11f9 <value2_to_rgb+0xf9>
ucomisd 0xde5(%rip),%xmm1
jbe    11f9 <value2_to_rgb+0xf9>
movsd  0xd67(%rip),%xmm2
movapd %xmm2,%xmm3
subsd  %xmm1,%xmm3
mulsd  0xdb7(%rip),%xmm3
xorpd  %xmm0,%xmm0
jmp    11d3 <value2_to_rgb+0xd3>
ucomisd 0xd66(%rip),%xmm3
jbe    12ef <value2_to_rgb+0x1ef>
movsd  0xd64(%rip),%xmm0
ucomisd %xmm3,%xmm0
jb     12ef <value2_to_rgb+0x1ef>
addsd  0xd6e(%rip),%xmm3
mulsd  0xd36(%rip),%xmm3
xorpd  %xmm0,%xmm0
movsd  0xd1a(%rip),%xmm1
movapd %xmm3,%xmm2
jmp    11f9 <value2_to_rgb+0xf9>
xorpd  %xmm0,%xmm0
ucomisd %xmm0,%xmm3
jbe    11f9 <value2_to_rgb+0xf9>
addsd  0xd2b(%rip),%xmm3
mulsd  0xd2b(%rip),%xmm3
movsd  0xceb(%rip),%xmm2
addsd  %xmm2,%xmm3
jmp    11d3 <value2_to_rgb+0xd3>

LLVM IR (-O0):
define void @value2_to_rgb(double %0, double* %1, i32 %2) {
%4 = alloca double
%5 = alloca double*
%6 = alloca i32
%7 = alloca double
%8 = alloca double
%9 = alloca double
store double %0, double* %4
store double* %1, double** %5
store i32 %2, i32* %6
%10 = load i32, i32* %6
%11 = icmp eq i32 %10, 1
br i1 %11, label %12, label %57
12: ; preds = %3
%13 = load double, double* %4
%14 = fcmp olt double %13, 0.000000e+00
br i1 %14, label %15, label %16
15: ; preds = %12
store double 0.000000e+00, double* %4
br label %16
16: ; preds = %15, %12
%17 = load double, double* %4
%18 = fcmp ogt double %17, 1.000000e+00
br i1 %18, label %19, label %20
19: ; preds = %16
store double 1.000000e+00, double* %4
br label %20
20: ; preds = %19, %16
%21 = load double, double* %4
%22 = fcmp ole double %21, 2.500000e-01
br i1 %22, label %23, label %26
23: ; preds = %20
store double 0.000000e+00, double* %7
%24 = load double, double* %4
%25 = fmul double %24, 4.000000e+00
store double %25, double* %8
store double 1.000000e+00, double* %9
br label %56
26: ; preds = %20
%27 = load double, double* %4
%28 = fcmp ogt double %27, 2.500000e-01
br i1 %28, label %29, label %36
29: ; preds = %26
%30 = load double, double* %4
%31 = fcmp ole double %30, 5.000000e-01
br i1 %31, label %32, label %36
32: ; preds = %29
store double 0.000000e+00, double* %7
store double 1.000000e+00, double* %8
%33 = load double, double* %4
%34 = fsub double 5.000000e-01, %33
%35 = fmul double %34, 4.000000e+00
store double %35, double* %9
br label %55
36: ; preds = %29, %26
%37 = load double, double* %4
%38 = fcmp ogt double %37, 5.000000e-01
br i1 %38, label %39, label %46
39: ; preds = %36
%40 = load double, double* %4
%41 = fcmp ole double %40, 7.500000e-01
br i1 %41, label %42, label %46
42: ; preds = %39
%43 = load double, double* %4
%44 = fsub double %43, 5.000000e-01
%45 = fmul double %44, 4.000000e+00
store double %45, double* %7
store double 1.000000e+00, double* %8
store double 0.000000e+00, double* %9
br label %54
46: ; preds = %39, %36
%47 = load double, double* %4
%48 = fcmp ogt double %47, 7.500000e-01
br i1 %48, label %49, label %53
49: ; preds = %46
store double 1.000000e+00, double* %7
%50 = load double, double* %4
%51 = fsub double 1.000000e+00, %50
%52 = fmul double %51, 4.000000e+00
store double %52, double* %8
store double 0.000000e+00, double* %9
br label %53
53: ; preds = %49, %46
br label %54
54: ; preds = %53, %42
br label %55
55: ; preds = %54, %32
br label %56
56: ; preds = %55, %23
br label %126
57: ; preds = %3
%58 = load i32, i32* %6
%59 = icmp eq i32 %58, 2
br i1 %59, label %60, label %119
60: ; preds = %57
%61 = load double, double* %4
%62 = fcmp olt double %61, 0.000000e+00
br i1 %62, label %63, label %64
63: ; preds = %60
store double 0.000000e+00, double* %4
br label %64
64: ; preds = %63, %60
%65 = load double, double* %4
%66 = fcmp ogt double %65, 1.000000e+00
br i1 %66, label %67, label %68
67: ; preds = %64
store double 1.000000e+00, double* %4
br label %68
68: ; preds = %67, %64
%69 = load double, double* %4
%70 = fcmp ole double %69, 2.000000e-01
br i1 %70, label %71, label %75
71: ; preds = %68
%72 = load double, double* %4
%73 = fsub double 2.000000e-01, %72
%74 = fmul double %73, 5.000000e+00
store double %74, double* %7
store double 0.000000e+00, double* %8
store double 1.000000e+00, double* %9
br label %118
75: ; preds = %68
%76 = load double, double* %4
%77 = fcmp ogt double %76, 2.000000e-01
br i1 %77, label %78, label %85
78: ; preds = %75
%79 = load double, double* %4
%80 = fcmp ole double %79, 4.000000e-01
br i1 %80, label %81, label %85
81: ; preds = %78
store double 0.000000e+00, double* %7
%82 = load double, double* %4
%83 = fsub double %82, 2.000000e-01
%84 = fmul double %83, 5.000000e+00
store double %84, double* %8
store double 1.000000e+00, double* %9
br label %117
85: ; preds = %78, %75
%86 = load double, double* %4
%87 = fcmp ogt double %86, 4.000000e-01
br i1 %87, label %88, label %96
88: ; preds = %85
%89 = load double, double* %4
%90 = fcmp ole double %89, 6.000000e-01
br i1 %90, label %91, label %96
91: ; preds = %88
store double 0.000000e+00, double* %7
store double 1.000000e+00, double* %8
%92 = load double, double* %4
%93 = fsub double %92, 4.000000e-01
%94 = fneg double %93
%95 = call double @llvm.fmuladd.f64(double %94, double 5.000000e+00, double 1.000000e+00)
store double %95, double* %9
br label %116
96: ; preds = %88, %85
%97 = load double, double* %4
%98 = fcmp ogt double %97, 6.000000e-01
br i1 %98, label %99, label %106
99: ; preds = %96
%100 = load double, double* %4
%101 = fcmp ole double %100, 8.000000e-01
br i1 %101, label %102, label %106
102: ; preds = %99
%103 = load double, double* %4
%104 = fsub double %103, 6.000000e-01
%105 = fmul double %104, 5.000000e+00
store double %105, double* %7
store double 1.000000e+00, double* %8
store double 0.000000e+00, double* %9
br label %115
106: ; preds = %99, %96
%107 = load double, double* %4
%108 = fcmp ogt double %107, 0.000000e+00
br i1 %108, label %109, label %114
109: ; preds = %106
store double 1.000000e+00, double* %7
%110 = load double, double* %4
%111 = fsub double %110, 8.000000e-01
%112 = fneg double %111
%113 = call double @llvm.fmuladd.f64(double %112, double 5.000000e+00, double 1.000000e+00)
store double %113, double* %8
store double 0.000000e+00, double* %9
br label %114
114: ; preds = %109, %106
br label %115
115: ; preds = %114, %102
br label %116
116: ; preds = %115, %91
br label %117
117: ; preds = %116, %81
br label %118
118: ; preds = %117, %71
br label %125
119: ; preds = %57
%120 = load i32, i32* %6
%121 = icmp eq i32 %120, 3
br i1 %121, label %122, label %124
122: ; preds = %119
%123 = load double, double* %4
store double %123, double* %9
store double %123, double* %8
store double %123, double* %7
br label %124
124: ; preds = %122, %119
br label %125
125: ; preds = %124, %118
br label %126
126: ; preds = %125, %56
%127 = load double, double* %7
%128 = load double*, double** %5
%129 = getelementptr inbounds double, double* %128, i64 0
store double %127, double* %129
%130 = load double, double* %8
%131 = load double*, double** %5
%132 = getelementptr inbounds double, double* %131, i64 1
store double %130, double* %132
%133 = load double, double* %9
%134 = load double*, double** %5
%135 = getelementptr inbounds double, double* %134, i64 2
store double %133, double* %135
ret void
}

LLVM IR (-O2):
define void @value2_to_rgb(double %0, double* nocapture writeonly %1, i32 %2) {
switch i32 %2, label %68 [
i32 1, label %4
i32 2, label %31
]
4: ; preds = %3
%5 = fcmp olt double %0, 0.000000e+00
%6 = select i1 %5, double 0.000000e+00, double %0
%7 = fcmp ogt double %6, 1.000000e+00
%8 = select i1 %7, double 1.000000e+00, double %6
%9 = fcmp ugt double %8, 2.500000e-01
br i1 %9, label %12, label %10
10: ; preds = %4
%11 = fmul double %8, 4.000000e+00
br label %68
12: ; preds = %4
%13 = fcmp ogt double %8, 2.500000e-01
%14 = fcmp ole double %8, 5.000000e-01
%15 = and i1 %13, %14
br i1 %15, label %16, label %19
16: ; preds = %12
%17 = fsub double 5.000000e-01, %8
%18 = fmul double %17, 4.000000e+00
br label %68
19: ; preds = %12
%20 = fcmp ogt double %8, 5.000000e-01
%21 = fcmp ole double %8, 7.500000e-01
%22 = and i1 %20, %21
br i1 %22, label %23, label %26
23: ; preds = %19
%24 = fadd double %8, -5.000000e-01
%25 = fmul double %24, 4.000000e+00
br label %68
26: ; preds = %19
%27 = fcmp ogt double %8, 7.500000e-01
br i1 %27, label %28, label %68
28: ; preds = %26
%29 = fsub double 1.000000e+00, %8
%30 = fmul double %29, 4.000000e+00
br label %68
31: ; preds = %3
%32 = fcmp olt double %0, 0.000000e+00
%33 = select i1 %32, double 0.000000e+00, double %0
%34 = fcmp ogt double %33, 1.000000e+00
%35 = select i1 %34, double 1.000000e+00, double %33
%36 = fcmp ugt double %35, 2.000000e-01
br i1 %36, label %40, label %37
37: ; preds = %31
%38 = fsub double 2.000000e-01, %35
%39 = fmul double %38, 5.000000e+00
br label %68
40: ; preds = %31
%41 = fcmp ogt double %35, 2.000000e-01
%42 = fcmp ole double %35, 4.000000e-01
%43 = and i1 %41, %42
br i1 %43, label %44, label %47
44: ; preds = %40
%45 = fadd double %35, -2.000000e-01
%46 = fmul double %45, 5.000000e+00
br label %68
47: ; preds = %40
%48 = fcmp ogt double %35, 4.000000e-01
%49 = fcmp ole double %35, 6.000000e-01
%50 = and i1 %48, %49
br i1 %50, label %51, label %55
51: ; preds = %47
%52 = fadd double %35, -4.000000e-01
%53 = fneg double %52
%54 = tail call double @llvm.fmuladd.f64(double %53, double 5.000000e+00, double 1.000000e+00)
br label %68
55: ; preds = %47
%56 = fcmp ogt double %35, 6.000000e-01
%57 = fcmp ole double %35, 8.000000e-01
%58 = and i1 %56, %57
br i1 %58, label %59, label %62
59: ; preds = %55
%60 = fadd double %35, -6.000000e-01
%61 = fmul double %60, 5.000000e+00
br label %68
62: ; preds = %55
%63 = fcmp ogt double %35, 0.000000e+00
br i1 %63, label %64, label %68
64: ; preds = %62
%65 = fadd double %35, -8.000000e-01
%66 = fneg double %65
%67 = tail call double @llvm.fmuladd.f64(double %66, double 5.000000e+00, double 1.000000e+00)
br label %68
68: ; preds = %3, %44, %59, %64, %62, %51, %37, %10, %23, %28, %26, %16
%69 = phi double [ 0.000000e+00, %10 ], [ 0.000000e+00, %16 ], [ %25, %23 ], [ 1.000000e+00, %28 ], [ undef, %26 ], [ %39, %37 ], [ 0.000000e+00, %44 ], [ 0.000000e+00, %51 ], [ %61, %59 ], [ 1.000000e+00, %64 ], [ undef, %62 ], [ %0, %3 ]
%70 = phi double [ %11, %10 ], [ 1.000000e+00, %16 ], [ 1.000000e+00, %23 ], [ %30, %28 ], [ undef, %26 ], [ 0.000000e+00, %37 ], [ %46, %44 ], [ 1.000000e+00, %51 ], [ 1.000000e+00, %59 ], [ %67, %64 ], [ undef, %62 ], [ %0, %3 ]
%71 = phi double [ 1.000000e+00, %10 ], [ %18, %16 ], [ 0.000000e+00, %23 ], [ 0.000000e+00, %28 ], [ undef, %26 ], [ 1.000000e+00, %37 ], [ 1.000000e+00, %44 ], [ %54, %51 ], [ 0.000000e+00, %59 ], [ 0.000000e+00, %64 ], [ undef, %62 ], [ %0, %3 ]
store double %69, double* %1
%72 = getelementptr inbounds double, double* %1, i64 1
store double %70, double* %72
%73 = getelementptr inbounds double, double* %1, i64 2
store double %71, double* %73
ret void
}