#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 RGBtoHSP(double RGB[], double HSP[]) {
  double R = RGB[0];
  double G = RGB[1];
  double B = RGB[2];
  double *H = HSP;
  double *S = HSP + 1;
  double *P = HSP + 2;
  *P = sqrt(R * R * .299 + G * G * .587 + B * B * .114);
  if (R == G && R == B) {
    *H = 0;
    *S = 0;
    return;
  }
  if (R >= G && R >= B) {
    if (B >= G) {
      *H = 1 - (B - G) / (6 * (R - G));
      *S = 1 - G / R;
    } else {
      *H = (G - B) / (6 * (R - B));
      *S = 1 - B / R;
    }
  } else if (G >= R && G >= B) {
    if (R >= B) {
      *H = 2. / 6. - (R - B) / (6 * (G - B));
      *S = 1 - B / G;
    } else {
      *H = 2. / 6. + (B - R) / (6 * (G - R));
      *S = 1 - R / G;
    }
  } else {
    if (G >= R) {
      *H = 4. / 6. - (G - R) / (6 * (B - R));
      *S = 1 - R / B;
    } else {
      *H = 4. / 6. + (R - G) / (6 * (B - G));
      *S = 1. - G / B;
    }
  }
}


x86 assembly (clang, -O0):
<RGBtoHSP>:
push   %rbp
mov    %rsp,%rbp
sub    $0x40,%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  -0x18(%rbp),%xmm1
mulsd  -0x18(%rbp),%xmm1
movsd  -0x20(%rbp),%xmm0
mulsd  -0x20(%rbp),%xmm0
movsd  0xe8b(%rip),%xmm2
mulsd  %xmm2,%xmm0
movsd  0xe77(%rip),%xmm2
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  -0x28(%rbp),%xmm0
mulsd  -0x28(%rbp),%xmm0
movsd  0xe55(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
call   1030 <sqrt@plt>
mov    -0x40(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  -0x18(%rbp),%xmm0
ucomisd -0x20(%rbp),%xmm0
jne    1207 <RGBtoHSP+0xf7>
jp     1207 <RGBtoHSP+0xf7>
movsd  -0x18(%rbp),%xmm0
ucomisd -0x28(%rbp),%xmm0
jne    1207 <RGBtoHSP+0xf7>
jp     1207 <RGBtoHSP+0xf7>
mov    -0x30(%rbp),%rax
xorps  %xmm0,%xmm0
movsd  %xmm0,(%rax)
mov    -0x38(%rbp),%rax
xorps  %xmm0,%xmm0
movsd  %xmm0,(%rax)
jmp    1492 <RGBtoHSP+0x382>
movsd  -0x18(%rbp),%xmm0
ucomisd -0x20(%rbp),%xmm0
jb     12e1 <RGBtoHSP+0x1d1>
movsd  -0x18(%rbp),%xmm0
ucomisd -0x28(%rbp),%xmm0
jb     12e1 <RGBtoHSP+0x1d1>
movsd  -0x28(%rbp),%xmm0
ucomisd -0x20(%rbp),%xmm0
jb     1292 <RGBtoHSP+0x182>
movsd  -0x28(%rbp),%xmm1
subsd  -0x20(%rbp),%xmm1
movsd  -0x18(%rbp),%xmm2
subsd  -0x20(%rbp),%xmm2
movsd  0xdd5(%rip),%xmm0
mulsd  %xmm2,%xmm0
divsd  %xmm0,%xmm1
movsd  0xdb5(%rip),%xmm0
subsd  %xmm1,%xmm0
mov    -0x30(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  -0x20(%rbp),%xmm1
divsd  -0x18(%rbp),%xmm1
movsd  0xd97(%rip),%xmm0
subsd  %xmm1,%xmm0
mov    -0x38(%rbp),%rax
movsd  %xmm0,(%rax)
jmp    12dc <RGBtoHSP+0x1cc>
movsd  -0x20(%rbp),%xmm0
subsd  -0x28(%rbp),%xmm0
movsd  -0x18(%rbp),%xmm2
subsd  -0x28(%rbp),%xmm2
movsd  0xd7a(%rip),%xmm1
mulsd  %xmm2,%xmm1
divsd  %xmm1,%xmm0
mov    -0x30(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  -0x28(%rbp),%xmm1
divsd  -0x18(%rbp),%xmm1
movsd  0xd48(%rip),%xmm0
subsd  %xmm1,%xmm0
mov    -0x38(%rbp),%rax
movsd  %xmm0,(%rax)
jmp    1492 <RGBtoHSP+0x382>
movsd  -0x20(%rbp),%xmm0
ucomisd -0x18(%rbp),%xmm0
jb     13c7 <RGBtoHSP+0x2b7>
movsd  -0x20(%rbp),%xmm0
ucomisd -0x28(%rbp),%xmm0
jb     13c7 <RGBtoHSP+0x2b7>
movsd  -0x18(%rbp),%xmm0
ucomisd -0x28(%rbp),%xmm0
jb     136c <RGBtoHSP+0x25c>
movsd  -0x18(%rbp),%xmm1
subsd  -0x28(%rbp),%xmm1
movsd  -0x20(%rbp),%xmm2
subsd  -0x28(%rbp),%xmm2
movsd  0xcfb(%rip),%xmm0
mulsd  %xmm2,%xmm0
divsd  %xmm0,%xmm1
movsd  0xcf3(%rip),%xmm0
subsd  %xmm1,%xmm0
mov    -0x30(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  -0x28(%rbp),%xmm1
divsd  -0x20(%rbp),%xmm1
movsd  0xcbd(%rip),%xmm0
subsd  %xmm1,%xmm0
mov    -0x38(%rbp),%rax
movsd  %xmm0,(%rax)
jmp    13c2 <RGBtoHSP+0x2b2>
movsd  -0x28(%rbp),%xmm1
subsd  -0x18(%rbp),%xmm1
movsd  -0x20(%rbp),%xmm2
subsd  -0x18(%rbp),%xmm2
movsd  0xca0(%rip),%xmm0
mulsd  %xmm2,%xmm0
divsd  %xmm0,%xmm1
movsd  0xc98(%rip),%xmm0
addsd  %xmm1,%xmm0
mov    -0x30(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  -0x18(%rbp),%xmm1
divsd  -0x20(%rbp),%xmm1
movsd  0xc62(%rip),%xmm0
subsd  %xmm1,%xmm0
mov    -0x38(%rbp),%rax
movsd  %xmm0,(%rax)
jmp    148d <RGBtoHSP+0x37d>
movsd  -0x20(%rbp),%xmm0
ucomisd -0x18(%rbp),%xmm0
jb     1432 <RGBtoHSP+0x322>
movsd  -0x20(%rbp),%xmm1
subsd  -0x18(%rbp),%xmm1
movsd  -0x28(%rbp),%xmm2
subsd  -0x18(%rbp),%xmm2
movsd  0xc35(%rip),%xmm0
mulsd  %xmm2,%xmm0
divsd  %xmm0,%xmm1
movsd  0xc1d(%rip),%xmm0
subsd  %xmm1,%xmm0
mov    -0x30(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  -0x18(%rbp),%xmm1
divsd  -0x28(%rbp),%xmm1
movsd  0xbf7(%rip),%xmm0
subsd  %xmm1,%xmm0
mov    -0x38(%rbp),%rax
movsd  %xmm0,(%rax)
jmp    1488 <RGBtoHSP+0x378>
movsd  -0x18(%rbp),%xmm1
subsd  -0x20(%rbp),%xmm1
movsd  -0x28(%rbp),%xmm2
subsd  -0x20(%rbp),%xmm2
movsd  0xbda(%rip),%xmm0
mulsd  %xmm2,%xmm0
divsd  %xmm0,%xmm1
movsd  0xbc2(%rip),%xmm0
addsd  %xmm1,%xmm0
mov    -0x30(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  -0x20(%rbp),%xmm1
divsd  -0x28(%rbp),%xmm1
movsd  0xb9c(%rip),%xmm0
subsd  %xmm1,%xmm0
mov    -0x38(%rbp),%rax
movsd  %xmm0,(%rax)
jmp    148d <RGBtoHSP+0x37d>
jmp    1492 <RGBtoHSP+0x382>
add    $0x40,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<RGBtoHSP>:
push   %rbx
sub    $0x30,%rsp
mov    %rsi,%rbx
movsd  (%rdi),%xmm3
movsd  0x8(%rdi),%xmm4
movsd  0x10(%rdi),%xmm2
movapd %xmm3,%xmm1
mulsd  %xmm3,%xmm1
movapd %xmm4,%xmm0
mulsd  %xmm4,%xmm0
mulsd  0xec2(%rip),%xmm0
mulsd  0xec2(%rip),%xmm1
addsd  %xmm0,%xmm1
movapd %xmm2,%xmm0
mulsd  %xmm2,%xmm0
mulsd  0xeb6(%rip),%xmm0
addsd  %xmm1,%xmm0
xorpd  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jb     116e <RGBtoHSP+0x5e>
sqrtsd %xmm0,%xmm0
jmp    1195 <RGBtoHSP+0x85>
movapd %xmm2,0x20(%rsp)
movapd %xmm3,0x10(%rsp)
movapd %xmm4,(%rsp)
call   1030 <sqrt@plt>
movapd (%rsp),%xmm4
movapd 0x10(%rsp),%xmm3
movapd 0x20(%rsp),%xmm2
movsd  %xmm0,0x10(%rbx)
ucomisd %xmm4,%xmm3
jne    11b7 <RGBtoHSP+0xa7>
jp     11b7 <RGBtoHSP+0xa7>
ucomisd %xmm2,%xmm3
jne    11b7 <RGBtoHSP+0xa7>
jp     11b7 <RGBtoHSP+0xa7>
xorpd  %xmm0,%xmm0
movupd %xmm0,(%rbx)
jmp    1339 <RGBtoHSP+0x229>
ucomisd %xmm4,%xmm3
jb     1203 <RGBtoHSP+0xf3>
ucomisd %xmm2,%xmm3
jb     1203 <RGBtoHSP+0xf3>
ucomisd %xmm4,%xmm2
jae    1295 <RGBtoHSP+0x185>
subsd  %xmm2,%xmm4
movapd %xmm3,%xmm0
subsd  %xmm2,%xmm0
mulsd  0xe37(%rip),%xmm0
divsd  %xmm0,%xmm4
movsd  %xmm4,(%rbx)
divsd  %xmm3,%xmm2
movsd  0xe2b(%rip),%xmm0
subsd  %xmm2,%xmm0
movsd  %xmm0,0x8(%rbx)
jmp    1339 <RGBtoHSP+0x229>
ucomisd %xmm3,%xmm4
jb     1256 <RGBtoHSP+0x146>
ucomisd %xmm2,%xmm4
jb     1256 <RGBtoHSP+0x146>
ucomisd %xmm2,%xmm3
jae    12c7 <RGBtoHSP+0x1b7>
subsd  %xmm3,%xmm2
movapd %xmm4,%xmm0
subsd  %xmm3,%xmm0
mulsd  0xdeb(%rip),%xmm0
unpcklpd %xmm3,%xmm2
unpcklpd %xmm4,%xmm0
divpd  %xmm0,%xmm2
movsd  0xde7(%rip),%xmm0
addpd  %xmm2,%xmm0
movapd 0xe13(%rip),%xmm1
subpd  %xmm2,%xmm1
jmp    1331 <RGBtoHSP+0x221>
ucomisd %xmm3,%xmm4
jb     12f9 <RGBtoHSP+0x1e9>
subsd  %xmm3,%xmm4
movapd %xmm2,%xmm0
subsd  %xmm3,%xmm0
mulsd  0xda4(%rip),%xmm0
unpcklpd %xmm3,%xmm4
unpcklpd %xmm2,%xmm0
divpd  %xmm0,%xmm4
movapd 0xde8(%rip),%xmm0
subpd  %xmm4,%xmm0
movupd %xmm0,(%rbx)
jmp    1339 <RGBtoHSP+0x229>
subsd  %xmm4,%xmm2
movapd %xmm3,%xmm0
subsd  %xmm4,%xmm0
mulsd  0xd6f(%rip),%xmm0
unpcklpd %xmm4,%xmm2
unpcklpd %xmm3,%xmm0
divpd  %xmm0,%xmm2
movapd 0xd83(%rip),%xmm0
subpd  %xmm2,%xmm0
movupd %xmm0,(%rbx)
jmp    1339 <RGBtoHSP+0x229>
subsd  %xmm2,%xmm3
movapd %xmm4,%xmm0
subsd  %xmm2,%xmm0
mulsd  0xd3d(%rip),%xmm0
unpcklpd %xmm2,%xmm3
unpcklpd %xmm4,%xmm0
divpd  %xmm0,%xmm3
movapd 0xd61(%rip),%xmm0
subpd  %xmm3,%xmm0
movupd %xmm0,(%rbx)
jmp    1339 <RGBtoHSP+0x229>
subsd  %xmm4,%xmm3
movapd %xmm2,%xmm0
subsd  %xmm4,%xmm0
mulsd  0xd0b(%rip),%xmm0
unpcklpd %xmm4,%xmm3
unpcklpd %xmm2,%xmm0
divpd  %xmm0,%xmm3
movsd  0xd0f(%rip),%xmm0
addpd  %xmm3,%xmm0
movapd 0xd33(%rip),%xmm1
subpd  %xmm3,%xmm1
movsd  %xmm0,%xmm1
movupd %xmm1,(%rbx)
add    $0x30,%rsp
pop    %rbx
ret

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

LLVM IR (-O2):
define void @RGBtoHSP(double* nocapture %0, double* nocapture writeonly %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 = fmul double %3, %3
%11 = fmul double %5, %5
%12 = fmul double %11, 5.870000e-01
%13 = tail call double @llvm.fmuladd.f64(double %10, double 2.990000e-01, double %12)
%14 = fmul double %7, %7
%15 = tail call double @llvm.fmuladd.f64(double %14, double 1.140000e-01, double %13)
%16 = tail call double @sqrt(double %15)
store double %16, double* %9
%17 = fcmp oeq double %3, %5
%18 = fcmp oeq double %3, %7
%19 = select i1 %17, i1 %18, i1 false
br i1 %19, label %20, label %22
20: ; preds = %2
%21 = bitcast double* %1 to i8*
br label %101
22: ; preds = %2
%23 = fcmp ult double %3, %5
%24 = fcmp ult double %3, %7
%25 = select i1 %23, i1 true, i1 %24
br i1 %25, label %46, label %26
26: ; preds = %22
%27 = fcmp ult double %7, %5
br i1 %27, label %39, label %28
28: ; preds = %26
%29 = fsub double %7, %5
%30 = fsub double %3, %5
%31 = fmul double %30, 6.000000e+00
%32 = insertelement <2 x double> poison, double %29, i64 0
%33 = insertelement <2 x double> %32, double %5, i64 1
%34 = insertelement <2 x double> poison, double %31, i64 0
%35 = insertelement <2 x double> %34, double %3, i64 1
%36 = fdiv <2 x double> %33, %35
%37 = fsub <2 x double> <double 1.000000e+00, double 1.000000e+00>, %36
%38 = bitcast double* %1 to <2 x double>*
store <2 x double> %37, <2 x double>* %38
br label %101
39: ; preds = %26
%40 = fsub double %5, %7
%41 = fsub double %3, %7
%42 = fmul double %41, 6.000000e+00
%43 = fdiv double %40, %42
store double %43, double* %1
%44 = fdiv double %7, %3
%45 = fsub double 1.000000e+00, %44
store double %45, double* %8
br label %101
46: ; preds = %22
%47 = fcmp oge double %5, %3
%48 = xor i1 %47, true
%49 = fcmp ult double %5, %7
%50 = select i1 %48, i1 true, i1 %49
br i1 %50, label %76, label %51
51: ; preds = %46
br i1 %24, label %63, label %52
52: ; preds = %51
%53 = fsub double %3, %7
%54 = fsub double %5, %7
%55 = fmul double %54, 6.000000e+00
%56 = insertelement <2 x double> poison, double %53, i64 0
%57 = insertelement <2 x double> %56, double %7, i64 1
%58 = insertelement <2 x double> poison, double %55, i64 0
%59 = insertelement <2 x double> %58, double %5, i64 1
%60 = fdiv <2 x double> %57, %59
%61 = fsub <2 x double> <double 0x3FD5555555555555, double 1.000000e+00>, %60
%62 = bitcast double* %1 to <2 x double>*
store <2 x double> %61, <2 x double>* %62
br label %101
63: ; preds = %51
%64 = fsub double %7, %3
%65 = fsub double %5, %3
%66 = fmul double %65, 6.000000e+00
%67 = insertelement <2 x double> poison, double %64, i64 0
%68 = insertelement <2 x double> %67, double %3, i64 1
%69 = insertelement <2 x double> poison, double %66, i64 0
%70 = insertelement <2 x double> %69, double %5, i64 1
%71 = fdiv <2 x double> %68, %70
%72 = fadd <2 x double> %71, <double 0x3FD5555555555555, double poison>
%73 = fsub <2 x double> <double poison, double 1.000000e+00>, %71
%74 = shufflevector <2 x double> %72, <2 x double> %73, <2 x i32> <i32 0, i32 3>
%75 = bitcast double* %1 to <2 x double>*
store <2 x double> %74, <2 x double>* %75
br label %101
76: ; preds = %46
br i1 %47, label %77, label %88
77: ; preds = %76
%78 = fsub double %5, %3
%79 = fsub double %7, %3
%80 = fmul double %79, 6.000000e+00
%81 = insertelement <2 x double> poison, double %78, i64 0
%82 = insertelement <2 x double> %81, double %3, i64 1
%83 = insertelement <2 x double> poison, double %80, i64 0
%84 = insertelement <2 x double> %83, double %7, i64 1
%85 = fdiv <2 x double> %82, %84
%86 = fsub <2 x double> <double 0x3FE5555555555555, double 1.000000e+00>, %85
%87 = bitcast double* %1 to <2 x double>*
store <2 x double> %86, <2 x double>* %87
br label %101
88: ; preds = %76
%89 = fsub double %3, %5
%90 = fsub double %7, %5
%91 = fmul double %90, 6.000000e+00
%92 = insertelement <2 x double> poison, double %89, i64 0
%93 = insertelement <2 x double> %92, double %5, i64 1
%94 = insertelement <2 x double> poison, double %91, i64 0
%95 = insertelement <2 x double> %94, double %7, i64 1
%96 = fdiv <2 x double> %93, %95
%97 = fadd <2 x double> %96, <double 0x3FE5555555555555, double poison>
%98 = fsub <2 x double> <double poison, double 1.000000e+00>, %96
%99 = shufflevector <2 x double> %97, <2 x double> %98, <2 x i32> <i32 0, i32 3>
%100 = bitcast double* %1 to <2 x double>*
store <2 x double> %99, <2 x double>* %100
br label %101
101: ; preds = %39, %28, %77, %88, %52, %63, %20
ret void
}