void hsva2rgba(double hsva[4], double rgba[4]) {
  int i;
  double f, p, q, t, h, s, v;
  rgba[3] = hsva[3];
  h = (hsva[0] < 0.0) ? 0.0 : hsva[0];
  h = (h > 1.0) ? 1.0 : h;
  s = (hsva[1] < 0.0) ? 0.0 : hsva[1];
  s = (s > 1.0) ? 1.0 : s;
  v = (hsva[2] < 0.0) ? 0.0 : hsva[2];
  v = (v > 1.0) ? 1.0 : v;
  if (s <= 0.0) {
    rgba[0] = v;
    rgba[1] = v;
    rgba[2] = v;
  } else {
    if (h >= 1.0)
      h = 0.0;
    h = 6.0 * h;
    i = (int)h;
    f = h - (double)i;
    p = v * (1 - s);
    q = v * (1 - (s * f));
    t = v * (1 - (s * (1 - f)));
    switch (i) {
    case 0:
      rgba[0] = v;
      rgba[1] = t;
      rgba[2] = p;
      break;
    case 1:
      rgba[0] = q;
      rgba[1] = v;
      rgba[2] = p;
      break;
    case 2:
      rgba[0] = p;
      rgba[1] = v;
      rgba[2] = t;
      break;
    case 3:
      rgba[0] = p;
      rgba[1] = q;
      rgba[2] = v;
      break;
    case 4:
      rgba[0] = t;
      rgba[1] = p;
      rgba[2] = v;
      break;
    case 5:
      rgba[0] = v;
      rgba[1] = p;
      rgba[2] = q;
      break;
    }
  }
}


x86 assembly (clang, -O0):
<hsva2rgba>:
push   %rbp
mov    %rsp,%rbp
push   %rax
mov    %rdi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
mov    -0x8(%rbp),%rax
movsd  0x18(%rax),%xmm0
mov    -0x10(%rbp),%rax
movsd  %xmm0,0x18(%rax)
mov    -0x8(%rbp),%rax
xorps  %xmm0,%xmm0
ucomisd (%rax),%xmm0
jbe    113d <hsva2rgba+0x3d>
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x58(%rbp)
jmp    114a <hsva2rgba+0x4a>
mov    -0x8(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x58(%rbp)
movsd  -0x58(%rbp),%xmm0
movsd  %xmm0,-0x40(%rbp)
movsd  -0x40(%rbp),%xmm0
movsd  0xe9f(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    117d <hsva2rgba+0x7d>
movsd  0xe8d(%rip),%xmm0
movsd  %xmm0,-0x60(%rbp)
jmp    1187 <hsva2rgba+0x87>
movsd  -0x40(%rbp),%xmm0
movsd  %xmm0,-0x60(%rbp)
movsd  -0x60(%rbp),%xmm0
movsd  %xmm0,-0x40(%rbp)
mov    -0x8(%rbp),%rax
xorps  %xmm0,%xmm0
ucomisd 0x8(%rax),%xmm0
jbe    11b0 <hsva2rgba+0xb0>
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x68(%rbp)
jmp    11be <hsva2rgba+0xbe>
mov    -0x8(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x68(%rbp)
movsd  -0x68(%rbp),%xmm0
movsd  %xmm0,-0x48(%rbp)
movsd  -0x48(%rbp),%xmm0
movsd  0xe2b(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    11f1 <hsva2rgba+0xf1>
movsd  0xe19(%rip),%xmm0
movsd  %xmm0,-0x70(%rbp)
jmp    11fb <hsva2rgba+0xfb>
movsd  -0x48(%rbp),%xmm0
movsd  %xmm0,-0x70(%rbp)
movsd  -0x70(%rbp),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0x8(%rbp),%rax
xorps  %xmm0,%xmm0
ucomisd 0x10(%rax),%xmm0
jbe    1224 <hsva2rgba+0x124>
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x78(%rbp)
jmp    1232 <hsva2rgba+0x132>
mov    -0x8(%rbp),%rax
movsd  0x10(%rax),%xmm0
movsd  %xmm0,-0x78(%rbp)
movsd  -0x78(%rbp),%xmm0
movsd  %xmm0,-0x50(%rbp)
movsd  -0x50(%rbp),%xmm0
movsd  0xdb7(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    1265 <hsva2rgba+0x165>
movsd  0xda5(%rip),%xmm0
movsd  %xmm0,-0x80(%rbp)
jmp    126f <hsva2rgba+0x16f>
movsd  -0x50(%rbp),%xmm0
movsd  %xmm0,-0x80(%rbp)
movsd  -0x80(%rbp),%xmm0
movsd  %xmm0,-0x50(%rbp)
xorps  %xmm0,%xmm0
ucomisd -0x48(%rbp),%xmm0
jb     12b5 <hsva2rgba+0x1b5>
movsd  -0x50(%rbp),%xmm0
mov    -0x10(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  -0x50(%rbp),%xmm0
mov    -0x10(%rbp),%rax
movsd  %xmm0,0x8(%rax)
movsd  -0x50(%rbp),%xmm0
mov    -0x10(%rbp),%rax
movsd  %xmm0,0x10(%rax)
jmp    14b0 <hsva2rgba+0x3b0>
movsd  -0x40(%rbp),%xmm0
movsd  0xd3e(%rip),%xmm1
ucomisd %xmm1,%xmm0
jb     12d4 <hsva2rgba+0x1d4>
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x40(%rbp)
movsd  -0x40(%rbp),%xmm0
movsd  0xd27(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x40(%rbp)
cvttsd2si -0x40(%rbp),%eax
mov    %eax,-0x14(%rbp)
movsd  -0x40(%rbp),%xmm0
cvtsi2sdl -0x14(%rbp),%xmm1
subsd  %xmm1,%xmm0
movsd  %xmm0,-0x20(%rbp)
movsd  -0x50(%rbp),%xmm0
movsd  -0x48(%rbp),%xmm3
movsd  0xce9(%rip),%xmm1
movaps %xmm1,%xmm2
subsd  %xmm3,%xmm2
mulsd  %xmm2,%xmm0
movsd  %xmm0,-0x28(%rbp)
movsd  -0x50(%rbp),%xmm0
movsd  -0x48(%rbp),%xmm3
movsd  -0x20(%rbp),%xmm2
mulsd  %xmm2,%xmm3
movaps %xmm1,%xmm2
subsd  %xmm3,%xmm2
mulsd  %xmm2,%xmm0
movsd  %xmm0,-0x30(%rbp)
movsd  -0x50(%rbp),%xmm0
movsd  -0x48(%rbp),%xmm2
movsd  -0x20(%rbp),%xmm4
movaps %xmm1,%xmm3
subsd  %xmm4,%xmm3
mulsd  %xmm3,%xmm2
subsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x38(%rbp)
mov    -0x14(%rbp),%eax
mov    %rax,-0x88(%rbp)
sub    $0x5,%rax
ja     14ab <hsva2rgba+0x3ab>
mov    -0x88(%rbp),%rax
lea    0xc7d(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
movsd  -0x50(%rbp),%xmm0
mov    -0x10(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  -0x38(%rbp),%xmm0
mov    -0x10(%rbp),%rax
movsd  %xmm0,0x8(%rax)
movsd  -0x28(%rbp),%xmm0
mov    -0x10(%rbp),%rax
movsd  %xmm0,0x10(%rax)
jmp    14ab <hsva2rgba+0x3ab>
movsd  -0x30(%rbp),%xmm0
mov    -0x10(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  -0x50(%rbp),%xmm0
mov    -0x10(%rbp),%rax
movsd  %xmm0,0x8(%rax)
movsd  -0x28(%rbp),%xmm0
mov    -0x10(%rbp),%rax
movsd  %xmm0,0x10(%rax)
jmp    14ab <hsva2rgba+0x3ab>
movsd  -0x28(%rbp),%xmm0
mov    -0x10(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  -0x50(%rbp),%xmm0
mov    -0x10(%rbp),%rax
movsd  %xmm0,0x8(%rax)
movsd  -0x38(%rbp),%xmm0
mov    -0x10(%rbp),%rax
movsd  %xmm0,0x10(%rax)
jmp    14ab <hsva2rgba+0x3ab>
movsd  -0x28(%rbp),%xmm0
mov    -0x10(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  -0x30(%rbp),%xmm0
mov    -0x10(%rbp),%rax
movsd  %xmm0,0x8(%rax)
movsd  -0x50(%rbp),%xmm0
mov    -0x10(%rbp),%rax
movsd  %xmm0,0x10(%rax)
jmp    14ab <hsva2rgba+0x3ab>
movsd  -0x38(%rbp),%xmm0
mov    -0x10(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  -0x28(%rbp),%xmm0
mov    -0x10(%rbp),%rax
movsd  %xmm0,0x8(%rax)
movsd  -0x50(%rbp),%xmm0
mov    -0x10(%rbp),%rax
movsd  %xmm0,0x10(%rax)
jmp    14ab <hsva2rgba+0x3ab>
movsd  -0x50(%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)
jmp    14b0 <hsva2rgba+0x3b0>
add    $0x8,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<hsva2rgba>:
movsd  0x18(%rdi),%xmm0
movsd  %xmm0,0x18(%rsi)
xorpd  %xmm2,%xmm2
xorpd  %xmm0,%xmm0
maxsd  0x8(%rdi),%xmm0
movsd  0xee1(%rip),%xmm1
movapd %xmm1,%xmm3
xorpd  %xmm4,%xmm4
maxsd  0x10(%rdi),%xmm4
minsd  %xmm0,%xmm3
movapd %xmm1,%xmm0
minsd  %xmm4,%xmm0
ucomisd %xmm3,%xmm2
jae    11ce <hsva2rgba+0xce>
maxsd  (%rdi),%xmm2
movapd %xmm1,%xmm4
minsd  %xmm2,%xmm4
movapd %xmm1,%xmm2
cmpnlesd %xmm4,%xmm2
mulsd  0xea9(%rip),%xmm4
andpd  %xmm2,%xmm4
cvttsd2si %xmm4,%eax
cmp    $0x5,%eax
ja     11e8 <hsva2rgba+0xe8>
cvttpd2dq %xmm4,%xmm2
cvtdq2pd %xmm2,%xmm2
subsd  %xmm2,%xmm4
movapd %xmm1,%xmm2
subsd  %xmm3,%xmm2
mulsd  %xmm0,%xmm2
movapd %xmm3,%xmm6
mulsd  %xmm4,%xmm6
movapd %xmm1,%xmm5
subsd  %xmm6,%xmm5
mulsd  %xmm0,%xmm5
movapd %xmm1,%xmm6
subsd  %xmm4,%xmm6
mulsd  %xmm3,%xmm6
subsd  %xmm6,%xmm1
mulsd  %xmm0,%xmm1
lea    0xe5d(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
movapd %xmm0,%xmm3
movapd %xmm1,%xmm4
jmp    *%rax
movapd %xmm5,%xmm3
movapd %xmm0,%xmm4
jmp    11da <hsva2rgba+0xda>
movapd %xmm0,%xmm3
movapd %xmm0,%xmm4
movapd %xmm0,%xmm2
movsd  %xmm3,(%rsi)
movsd  %xmm4,0x8(%rsi)
movsd  %xmm2,0x10(%rsi)
ret
movapd %xmm2,%xmm3
movapd %xmm0,%xmm4
movapd %xmm1,%xmm2
jmp    11da <hsva2rgba+0xda>
movapd %xmm2,%xmm3
movapd %xmm5,%xmm4
jmp    11d6 <hsva2rgba+0xd6>
movapd %xmm1,%xmm3
movapd %xmm2,%xmm4
jmp    11d6 <hsva2rgba+0xd6>
movapd %xmm0,%xmm3
movapd %xmm2,%xmm4
movapd %xmm5,%xmm2
jmp    11da <hsva2rgba+0xda>

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

LLVM IR (-O2):
define void @hsva2rgba(double* nocapture %0, double* writeonly %1) {
%3 = getelementptr inbounds double, double* %0, i64 3
%4 = load double, double* %3
%5 = getelementptr inbounds double, double* %1, i64 3
store double %4, double* %5
%6 = load double, double* %0
%7 = fcmp olt double %6, 0.000000e+00
%8 = select i1 %7, double 0.000000e+00, double %6
%9 = fcmp ogt double %8, 1.000000e+00
%10 = select i1 %9, double 1.000000e+00, double %8
%11 = getelementptr inbounds double, double* %0, i64 1
%12 = load double, double* %11
%13 = fcmp olt double %12, 0.000000e+00
%14 = select i1 %13, double 0.000000e+00, double %12
%15 = fcmp ogt double %14, 1.000000e+00
%16 = select i1 %15, double 1.000000e+00, double %14
%17 = getelementptr inbounds double, double* %0, i64 2
%18 = load double, double* %17
%19 = fcmp olt double %18, 0.000000e+00
%20 = select i1 %19, double 0.000000e+00, double %18
%21 = fcmp ogt double %20, 1.000000e+00
%22 = select i1 %21, double 1.000000e+00, double %20
%23 = fcmp ugt double %16, 0.000000e+00
br i1 %23, label %24, label %44
24: ; preds = %2
%25 = fcmp ult double %10, 1.000000e+00
%26 = fmul double %10, 6.000000e+00
%27 = select i1 %25, double %26, double 0.000000e+00
%28 = fptosi double %27 to i32
%29 = sitofp i32 %28 to double
%30 = fsub double %27, %29
%31 = fsub double 1.000000e+00, %16
%32 = fmul double %22, %31
%33 = fneg double %16
%34 = tail call double @llvm.fmuladd.f64(double %33, double %30, double 1.000000e+00)
%35 = fmul double %22, %34
%36 = fsub double 1.000000e+00, %30
%37 = tail call double @llvm.fmuladd.f64(double %33, double %36, double 1.000000e+00)
%38 = fmul double %22, %37
switch i32 %28, label %50 [
i32 0, label %44
i32 1, label %39
i32 2, label %40
i32 3, label %41
i32 4, label %42
i32 5, label %43
]
39: ; preds = %24
br label %44
40: ; preds = %24
br label %44
41: ; preds = %24
br label %44
42: ; preds = %24
br label %44
43: ; preds = %24
br label %44
44: ; preds = %24, %2, %43, %42, %41, %40, %39
%45 = phi double [ %35, %39 ], [ %32, %40 ], [ %32, %41 ], [ %38, %42 ], [ %22, %43 ], [ %22, %2 ], [ %22, %24 ]
%46 = phi double [ %22, %39 ], [ %22, %40 ], [ %35, %41 ], [ %32, %42 ], [ %32, %43 ], [ %22, %2 ], [ %38, %24 ]
%47 = phi double [ %32, %39 ], [ %38, %40 ], [ %22, %41 ], [ %22, %42 ], [ %35, %43 ], [ %22, %2 ], [ %32, %24 ]
store double %45, double* %1
%48 = getelementptr inbounds double, double* %1, i64 1
store double %46, double* %48
%49 = getelementptr inbounds double, double* %1, i64 2
store double %47, double* %49
br label %50
50: ; preds = %44, %24
ret void
}