void YUVtoHSV(float *yuv, float *rgb, float *hsv) {
  float red, green, blue;
  float rgbmin, rgbmax;
  red = 1.1644 * (yuv[0] - 16.0) + 1.596 * (yuv[2] - 128.0);
  green = 1.1644 * (yuv[0] - 16.0) - 0.813 * (yuv[1] - 128.0) -
          0.391 * (yuv[2] - 128.0);
  blue = 1.1644 * (yuv[0] - 16.0) + 2.018 * (yuv[1] - 128.0);
  rgbmax = red;
  (rgbmax < green) && (rgbmax = green);
  (rgbmax < blue) && (rgbmax = blue);
  rgbmin = red;
  (rgbmin > green) && (rgbmin = green);
  (rgbmin > blue) && (rgbmin = blue);
  if (rgbmax == rgbmin) {
    hsv[0] = 0.0;
  } else if (rgbmax == red) {
    hsv[0] = 60 * (0 + (green - blue) / (rgbmax - rgbmin));
  } else if (rgbmax == green) {
    hsv[0] = 60 * (2 + (blue - red) / (rgbmax - rgbmin));
  } else {
    hsv[0] = 60 * (4 + (red - green) / (rgbmax - rgbmin));
  }
  if (hsv[0] < 0) {
    hsv[0] = hsv[0] + 360.0;
  }
  (rgbmax == 0) ? hsv[1] = 0 : (hsv[1] = (rgbmax - rgbmin) / rgbmax);
  hsv[2] = rgbmax / 255;
  rgb[0] = red;
  rgb[1] = green;
  rgb[2] = blue;
}


x86 assembly (clang, -O0):
<YUVtoHSV>:
push   %rbp
mov    %rsp,%rbp
mov    %rdi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
mov    %rdx,-0x18(%rbp)
mov    -0x8(%rbp),%rax
movss  (%rax),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  0xef4(%rip),%xmm1
subsd  %xmm1,%xmm0
mov    -0x8(%rbp),%rax
movss  0x8(%rax),%xmm1
cvtss2sd %xmm1,%xmm2
movsd  0xed3(%rip),%xmm1
subsd  %xmm1,%xmm2
movsd  0xee7(%rip),%xmm1
mulsd  %xmm2,%xmm1
movsd  0xeab(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x1c(%rbp)
mov    -0x8(%rbp),%rax
movss  (%rax),%xmm0
cvtss2sd %xmm0,%xmm1
movsd  0xe9e(%rip),%xmm0
subsd  %xmm0,%xmm1
mov    -0x8(%rbp),%rax
movss  0x4(%rax),%xmm0
cvtss2sd %xmm0,%xmm2
movsd  0xe7d(%rip),%xmm0
subsd  %xmm0,%xmm2
movsd  0xe89(%rip),%xmm0
mulsd  %xmm2,%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  0xe3e(%rip),%xmm2
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
mov    -0x8(%rbp),%rax
movss  0x8(%rax),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  0xe31(%rip),%xmm2
subsd  %xmm2,%xmm0
movsd  0xe35(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x20(%rbp)
mov    -0x8(%rbp),%rax
movss  (%rax),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  0xe08(%rip),%xmm1
subsd  %xmm1,%xmm0
mov    -0x8(%rbp),%rax
movss  0x4(%rax),%xmm1
cvtss2sd %xmm1,%xmm2
movsd  0xde7(%rip),%xmm1
subsd  %xmm1,%xmm2
movsd  0xdd3(%rip),%xmm1
mulsd  %xmm2,%xmm1
movsd  0xdbf(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x24(%rbp)
movss  -0x1c(%rbp),%xmm0
movss  %xmm0,-0x2c(%rbp)
movss  -0x2c(%rbp),%xmm1
movss  -0x20(%rbp),%xmm0
xor    %eax,%eax
ucomiss %xmm1,%xmm0
mov    %al,-0x2d(%rbp)
jbe    128f <YUVtoHSV+0x18f>
movss  -0x20(%rbp),%xmm0
movss  %xmm0,-0x2c(%rbp)
xorps  %xmm1,%xmm1
ucomiss %xmm1,%xmm0
setne  %al
setp   %cl
or     %cl,%al
mov    %al,-0x2d(%rbp)
mov    -0x2d(%rbp),%al
movss  -0x2c(%rbp),%xmm1
movss  -0x24(%rbp),%xmm0
xor    %eax,%eax
ucomiss %xmm1,%xmm0
mov    %al,-0x2e(%rbp)
jbe    12c5 <YUVtoHSV+0x1c5>
movss  -0x24(%rbp),%xmm0
movss  %xmm0,-0x2c(%rbp)
xorps  %xmm1,%xmm1
ucomiss %xmm1,%xmm0
setne  %al
setp   %cl
or     %cl,%al
mov    %al,-0x2e(%rbp)
mov    -0x2e(%rbp),%al
movss  -0x1c(%rbp),%xmm0
movss  %xmm0,-0x28(%rbp)
movss  -0x28(%rbp),%xmm0
xor    %eax,%eax
ucomiss -0x20(%rbp),%xmm0
mov    %al,-0x2f(%rbp)
jbe    1301 <YUVtoHSV+0x201>
movss  -0x20(%rbp),%xmm0
movss  %xmm0,-0x28(%rbp)
xorps  %xmm1,%xmm1
ucomiss %xmm1,%xmm0
setne  %al
setp   %cl
or     %cl,%al
mov    %al,-0x2f(%rbp)
mov    -0x2f(%rbp),%al
movss  -0x28(%rbp),%xmm0
xor    %eax,%eax
ucomiss -0x24(%rbp),%xmm0
mov    %al,-0x30(%rbp)
jbe    1333 <YUVtoHSV+0x233>
movss  -0x24(%rbp),%xmm0
movss  %xmm0,-0x28(%rbp)
xorps  %xmm1,%xmm1
ucomiss %xmm1,%xmm0
setne  %al
setp   %cl
or     %cl,%al
mov    %al,-0x30(%rbp)
mov    -0x30(%rbp),%al
movss  -0x2c(%rbp),%xmm0
ucomiss -0x28(%rbp),%xmm0
jne    135b <YUVtoHSV+0x25b>
jp     135b <YUVtoHSV+0x25b>
mov    -0x18(%rbp),%rax
xorps  %xmm0,%xmm0
movss  %xmm0,(%rax)
jmp    143c <YUVtoHSV+0x33c>
movss  -0x2c(%rbp),%xmm0
ucomiss -0x1c(%rbp),%xmm0
jne    13a8 <YUVtoHSV+0x2a8>
jp     13a8 <YUVtoHSV+0x2a8>
movss  -0x20(%rbp),%xmm0
subss  -0x24(%rbp),%xmm0
movss  -0x2c(%rbp),%xmm1
subss  -0x28(%rbp),%xmm1
divss  %xmm1,%xmm0
xorps  %xmm1,%xmm1
addss  %xmm0,%xmm1
movss  0xca9(%rip),%xmm0
mulss  %xmm1,%xmm0
mov    -0x18(%rbp),%rax
movss  %xmm0,(%rax)
jmp    1437 <YUVtoHSV+0x337>
movss  -0x2c(%rbp),%xmm0
ucomiss -0x20(%rbp),%xmm0
jne    13fa <YUVtoHSV+0x2fa>
jp     13fa <YUVtoHSV+0x2fa>
movss  -0x24(%rbp),%xmm0
subss  -0x1c(%rbp),%xmm0
movss  -0x2c(%rbp),%xmm1
subss  -0x28(%rbp),%xmm1
divss  %xmm1,%xmm0
movss  0xc6b(%rip),%xmm1
addss  %xmm0,%xmm1
movss  0xc57(%rip),%xmm0
mulss  %xmm1,%xmm0
mov    -0x18(%rbp),%rax
movss  %xmm0,(%rax)
jmp    1432 <YUVtoHSV+0x332>
movss  -0x1c(%rbp),%xmm0
subss  -0x20(%rbp),%xmm0
movss  -0x2c(%rbp),%xmm1
subss  -0x28(%rbp),%xmm1
divss  %xmm1,%xmm0
movss  0xc2a(%rip),%xmm1
addss  %xmm0,%xmm1
movss  0xc1a(%rip),%xmm0
mulss  %xmm1,%xmm0
mov    -0x18(%rbp),%rax
movss  %xmm0,(%rax)
jmp    1437 <YUVtoHSV+0x337>
jmp    143c <YUVtoHSV+0x33c>
mov    -0x18(%rbp),%rax
xorps  %xmm0,%xmm0
ucomiss (%rax),%xmm0
jbe    1470 <YUVtoHSV+0x370>
mov    -0x18(%rbp),%rax
movss  (%rax),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  0xbd8(%rip),%xmm1
addsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
mov    -0x18(%rbp),%rax
movss  %xmm0,(%rax)
movss  -0x2c(%rbp),%xmm0
xorps  %xmm1,%xmm1
ucomiss %xmm1,%xmm0
jne    1498 <YUVtoHSV+0x398>
jp     1498 <YUVtoHSV+0x398>
mov    -0x18(%rbp),%rax
xorps  %xmm0,%xmm0
movss  %xmm0,0x4(%rax)
jmp    14b0 <YUVtoHSV+0x3b0>
movss  -0x2c(%rbp),%xmm0
subss  -0x28(%rbp),%xmm0
divss  -0x2c(%rbp),%xmm0
mov    -0x18(%rbp),%rax
movss  %xmm0,0x4(%rax)
movss  -0x2c(%rbp),%xmm0
movss  0xb8f(%rip),%xmm1
divss  %xmm1,%xmm0
mov    -0x18(%rbp),%rax
movss  %xmm0,0x8(%rax)
movss  -0x1c(%rbp),%xmm0
mov    -0x10(%rbp),%rax
movss  %xmm0,(%rax)
movss  -0x20(%rbp),%xmm0
mov    -0x10(%rbp),%rax
movss  %xmm0,0x4(%rax)
movss  -0x24(%rbp),%xmm0
mov    -0x10(%rbp),%rax
movss  %xmm0,0x8(%rax)
pop    %rbp
ret

x86 assembly (clang, -O2):
<YUVtoHSV>:
movss  0x8(%rdi),%xmm0
movss  (%rdi),%xmm1
unpcklps %xmm0,%xmm1
cvtps2pd %xmm1,%xmm0
addpd  0xee9(%rip),%xmm0
movapd %xmm0,%xmm1
unpckhpd %xmm0,%xmm1
mulsd  0xef9(%rip),%xmm1
movss  0x4(%rdi),%xmm2
cvtss2sd %xmm2,%xmm2
addsd  0xef0(%rip),%xmm2
movsd  0xef0(%rip),%xmm3
mulsd  %xmm2,%xmm3
movsd  0xeec(%rip),%xmm4
mulsd  %xmm0,%xmm4
addsd  %xmm4,%xmm3
unpcklpd %xmm3,%xmm1
mulpd  0xeb0(%rip),%xmm0
addpd  %xmm1,%xmm0
cvtpd2ps %xmm0,%xmm0
mulsd  0xed0(%rip),%xmm2
addsd  %xmm4,%xmm2
xorps  %xmm1,%xmm1
cvtsd2ss %xmm2,%xmm1
movapd %xmm0,%xmm2
shufps $0x55,%xmm0,%xmm2
movaps %xmm2,%xmm4
maxss  %xmm0,%xmm4
movaps %xmm1,%xmm3
maxss  %xmm4,%xmm3
movaps %xmm2,%xmm5
minss  %xmm0,%xmm5
movaps %xmm1,%xmm4
minss  %xmm5,%xmm4
xorps  %xmm5,%xmm5
ucomiss %xmm4,%xmm3
jne    11a9 <YUVtoHSV+0xa9>
jnp    120e <YUVtoHSV+0x10e>
ucomiss %xmm0,%xmm3
jne    11bc <YUVtoHSV+0xbc>
jp     11bc <YUVtoHSV+0xbc>
movaps %xmm2,%xmm5
subss  %xmm1,%xmm5
xorps  %xmm6,%xmm6
jmp    11e3 <YUVtoHSV+0xe3>
ucomiss %xmm2,%xmm3
jne    11d4 <YUVtoHSV+0xd4>
jp     11d4 <YUVtoHSV+0xd4>
movaps %xmm1,%xmm5
subss  %xmm0,%xmm5
movss  0xe7a(%rip),%xmm6
jmp    11e3 <YUVtoHSV+0xe3>
movaps %xmm0,%xmm5
subss  %xmm2,%xmm5
movss  0xe65(%rip),%xmm6
movaps %xmm3,%xmm7
subss  %xmm4,%xmm7
divss  %xmm7,%xmm5
addss  %xmm6,%xmm5
mulss  0xe56(%rip),%xmm5
movss  %xmm5,(%rdx)
xorps  %xmm6,%xmm6
ucomiss %xmm5,%xmm6
jbe    1212 <YUVtoHSV+0x112>
addss  0xe46(%rip),%xmm5
movss  %xmm5,(%rdx)
xorps  %xmm5,%xmm5
ucomiss %xmm5,%xmm3
jne    121c <YUVtoHSV+0x11c>
jnp    1227 <YUVtoHSV+0x127>
movaps %xmm3,%xmm5
subss  %xmm4,%xmm5
divss  %xmm3,%xmm5
movss  %xmm5,0x4(%rdx)
divss  0xe24(%rip),%xmm3
movss  %xmm3,0x8(%rdx)
movss  %xmm0,(%rsi)
movss  %xmm2,0x4(%rsi)
movss  %xmm1,0x8(%rsi)
ret

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

LLVM IR (-O2):
define void @YUVtoHSV(float* nocapture %0, float* nocapture writeonly %1, float* nocapture %2) {
%4 = load float, float* %0
%5 = getelementptr inbounds float, float* %0, i64 2
%6 = load float, float* %5
%7 = insertelement <2 x float> poison, float %4, i64 0
%8 = insertelement <2 x float> %7, float %6, i64 1
%9 = fpext <2 x float> %8 to <2 x double>
%10 = fadd <2 x double> %9, <double -1.600000e+01, double -1.280000e+02>
%11 = extractelement <2 x double> %10, i64 1
%12 = fmul double %11, 1.596000e+00
%13 = getelementptr inbounds float, float* %0, i64 1
%14 = load float, float* %13
%15 = fpext float %14 to double
%16 = fadd double %15, -1.280000e+02
%17 = fmul double %16, 0xBFEA04189374BC6A
%18 = extractelement <2 x double> %10, i64 0
%19 = tail call double @llvm.fmuladd.f64(double %18, double 1.164400e+00, double %17)
%20 = insertelement <2 x double> poison, double %12, i64 0
%21 = insertelement <2 x double> %20, double %19, i64 1
%22 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %10, <2 x double> <double 1.164400e+00, double -3.910000e-01>, <2 x double> %21)
%23 = fptrunc <2 x double> %22 to <2 x float>
%24 = fmul double %16, 2.018000e+00
%25 = tail call double @llvm.fmuladd.f64(double %18, double 1.164400e+00, double %24)
%26 = fptrunc double %25 to float
%27 = extractelement <2 x float> %23, i64 0
%28 = extractelement <2 x float> %23, i64 1
%29 = fcmp olt float %27, %28
%30 = select i1 %29, float %28, float %27
%31 = fcmp olt float %30, %26
%32 = select i1 %31, float %26, float %30
%33 = fcmp ogt float %27, %28
%34 = select i1 %33, float %28, float %27
%35 = fcmp ogt float %34, %26
%36 = select i1 %35, float %26, float %34
%37 = fcmp oeq float %32, %36
br i1 %37, label %58, label %38
38: ; preds = %3
%39 = fcmp oeq float %32, %27
br i1 %39, label %40, label %42
40: ; preds = %38
%41 = fsub float %28, %26
br label %48
42: ; preds = %38
%43 = fcmp oeq float %32, %28
br i1 %43, label %44, label %46
44: ; preds = %42
%45 = fsub float %26, %27
br label %48
46: ; preds = %42
%47 = fsub float %27, %28
br label %48
48: ; preds = %40, %46, %44
%49 = phi float [ %41, %40 ], [ %47, %46 ], [ %45, %44 ]
%50 = phi float [ 0.000000e+00, %40 ], [ 4.000000e+00, %46 ], [ 2.000000e+00, %44 ]
%51 = fsub float %32, %36
%52 = fdiv float %49, %51
%53 = fadd float %52, %50
%54 = fmul float %53, 6.000000e+01
store float %54, float* %2
%55 = fcmp olt float %54, 0.000000e+00
br i1 %55, label %56, label %60
56: ; preds = %48
%57 = fadd float %54, 3.600000e+02
br label %58
58: ; preds = %3, %56
%59 = phi float [ %57, %56 ], [ 0.000000e+00, %3 ]
store float %59, float* %2
br label %60
60: ; preds = %58, %48
%61 = fcmp oeq float %32, 0.000000e+00
br i1 %61, label %65, label %62
62: ; preds = %60
%63 = fsub float %32, %36
%64 = fdiv float %63, %32
br label %65
65: ; preds = %60, %62
%66 = phi float [ %64, %62 ], [ 0.000000e+00, %60 ]
%67 = getelementptr inbounds float, float* %2, i64 1
store float %66, float* %67
%68 = fdiv float %32, 2.550000e+02
%69 = getelementptr inbounds float, float* %2, i64 2
store float %68, float* %69
store float %27, float* %1
%70 = getelementptr inbounds float, float* %1, i64 1
store float %28, float* %70
%71 = getelementptr inbounds float, float* %1, i64 2
store float %26, float* %71
ret void
}