void ConvertRGBToYCbCr(unsigned char *buf, int n) {
  double lum, cb, cr;
  double r, g, b;
  unsigned char *pn;
  pn = buf + n;
  while (buf < pn) {
    r = buf[0];
    g = buf[1];
    b = buf[2];
    lum = (((0.299 * r + 0.587 * g + 0.114 * b) < 0)
               ? (int)((0.299 * r + 0.587 * g + 0.114 * b) - 0.5)
               : (int)((0.299 * r + 0.587 * g + 0.114 * b) + 0.5));
    cb = ((((b - lum) / 1.772 + 127.5) < 0)
              ? (int)(((b - lum) / 1.772 + 127.5) - 0.5)
              : (int)(((b - lum) / 1.772 + 127.5) + 0.5));
    cr = ((((r - lum) / 1.402 + 127.5) < 0)
              ? (int)(((r - lum) / 1.402 + 127.5) - 0.5)
              : (int)(((r - lum) / 1.402 + 127.5) + 0.5));
    buf[0] = (unsigned char)((lum) < 0 ? 0 : ((lum) > 255 ? 255 : (lum)));
    buf[1] = (unsigned char)((cb) < 0 ? 0 : ((cb) > 255 ? 255 : (cb)));
    buf[2] = (unsigned char)((cr) < 0 ? 0 : ((cr) > 255 ? 255 : (cr)));
    buf += 3;
  }
}


x86 assembly (clang, -O0):
<ConvertRGBToYCbCr>:
push   %rbp
mov    %rsp,%rbp
push   %rax
mov    %rdi,-0x8(%rbp)
mov    %esi,-0xc(%rbp)
mov    -0x8(%rbp),%rax
movslq -0xc(%rbp),%rcx
add    %rcx,%rax
mov    %rax,-0x48(%rbp)
mov    -0x8(%rbp),%rax
cmp    -0x48(%rbp),%rax
jae    14ef <ConvertRGBToYCbCr+0x3ef>
mov    -0x8(%rbp),%rax
movzbl (%rax),%eax
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0x30(%rbp)
mov    -0x8(%rbp),%rax
movzbl 0x1(%rax),%eax
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0x38(%rbp)
mov    -0x8(%rbp),%rax
movzbl 0x2(%rax),%eax
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0x40(%rbp)
movsd  -0x30(%rbp),%xmm0
movsd  0xea8(%rip),%xmm1
mulsd  -0x38(%rbp),%xmm1
movsd  0xe93(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x40(%rbp),%xmm1
movsd  0xe76(%rip),%xmm2
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
xorps  %xmm0,%xmm0
ucomisd %xmm1,%xmm0
jbe    11ee <ConvertRGBToYCbCr+0xee>
movsd  -0x30(%rbp),%xmm1
movsd  0xe64(%rip),%xmm0
mulsd  -0x38(%rbp),%xmm0
movsd  0xe4f(%rip),%xmm2
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  -0x40(%rbp),%xmm0
movsd  0xe32(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  0xe3a(%rip),%xmm1
subsd  %xmm1,%xmm0
cvttsd2si %xmm0,%eax
mov    %eax,-0x4c(%rbp)
jmp    1238 <ConvertRGBToYCbCr+0x138>
movsd  -0x30(%rbp),%xmm1
movsd  0xe15(%rip),%xmm0
mulsd  -0x38(%rbp),%xmm0
movsd  0xe00(%rip),%xmm2
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  -0x40(%rbp),%xmm0
movsd  0xde3(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  0xdeb(%rip),%xmm1
addsd  %xmm1,%xmm0
cvttsd2si %xmm0,%eax
mov    %eax,-0x4c(%rbp)
mov    -0x4c(%rbp),%eax
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0x18(%rbp)
movsd  -0x40(%rbp),%xmm1
subsd  -0x18(%rbp),%xmm1
movsd  0xdd2(%rip),%xmm0
divsd  %xmm0,%xmm1
movsd  0xdbe(%rip),%xmm0
addsd  %xmm0,%xmm1
xorps  %xmm0,%xmm0
ucomisd %xmm1,%xmm0
jbe    12ad <ConvertRGBToYCbCr+0x1ad>
movsd  -0x40(%rbp),%xmm0
subsd  -0x18(%rbp),%xmm0
movsd  0xda3(%rip),%xmm1
divsd  %xmm1,%xmm0
movsd  0xd8f(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  0xd7b(%rip),%xmm1
subsd  %xmm1,%xmm0
cvttsd2si %xmm0,%eax
mov    %eax,-0x50(%rbp)
jmp    12e2 <ConvertRGBToYCbCr+0x1e2>
movsd  -0x40(%rbp),%xmm0
subsd  -0x18(%rbp),%xmm0
movsd  0xd69(%rip),%xmm1
divsd  %xmm1,%xmm0
movsd  0xd55(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  0xd41(%rip),%xmm1
addsd  %xmm1,%xmm0
cvttsd2si %xmm0,%eax
mov    %eax,-0x50(%rbp)
mov    -0x50(%rbp),%eax
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0x20(%rbp)
movsd  -0x30(%rbp),%xmm1
subsd  -0x18(%rbp),%xmm1
movsd  0xd30(%rip),%xmm0
divsd  %xmm0,%xmm1
movsd  0xd14(%rip),%xmm0
addsd  %xmm0,%xmm1
xorps  %xmm0,%xmm0
ucomisd %xmm1,%xmm0
jbe    1357 <ConvertRGBToYCbCr+0x257>
movsd  -0x30(%rbp),%xmm0
subsd  -0x18(%rbp),%xmm0
movsd  0xd01(%rip),%xmm1
divsd  %xmm1,%xmm0
movsd  0xce5(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  0xcd1(%rip),%xmm1
subsd  %xmm1,%xmm0
cvttsd2si %xmm0,%eax
mov    %eax,-0x54(%rbp)
jmp    138c <ConvertRGBToYCbCr+0x28c>
movsd  -0x30(%rbp),%xmm0
subsd  -0x18(%rbp),%xmm0
movsd  0xcc7(%rip),%xmm1
divsd  %xmm1,%xmm0
movsd  0xcab(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  0xc97(%rip),%xmm1
addsd  %xmm1,%xmm0
cvttsd2si %xmm0,%eax
mov    %eax,-0x54(%rbp)
mov    -0x54(%rbp),%eax
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0x28(%rbp)
xorps  %xmm0,%xmm0
ucomisd -0x18(%rbp),%xmm0
jbe    13b3 <ConvertRGBToYCbCr+0x2b3>
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x60(%rbp)
jmp    13f0 <ConvertRGBToYCbCr+0x2f0>
movsd  -0x18(%rbp),%xmm0
movsd  0xc78(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    13dc <ConvertRGBToYCbCr+0x2dc>
movsd  0xc66(%rip),%xmm0
movsd  %xmm0,-0x68(%rbp)
jmp    13e6 <ConvertRGBToYCbCr+0x2e6>
movsd  -0x18(%rbp),%xmm0
movsd  %xmm0,-0x68(%rbp)
movsd  -0x68(%rbp),%xmm0
movsd  %xmm0,-0x60(%rbp)
movsd  -0x60(%rbp),%xmm0
cvttsd2si %xmm0,%eax
mov    %al,%cl
mov    -0x8(%rbp),%rax
mov    %cl,(%rax)
xorps  %xmm0,%xmm0
ucomisd -0x20(%rbp),%xmm0
jbe    141c <ConvertRGBToYCbCr+0x31c>
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x70(%rbp)
jmp    1459 <ConvertRGBToYCbCr+0x359>
movsd  -0x20(%rbp),%xmm0
movsd  0xc0f(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    1445 <ConvertRGBToYCbCr+0x345>
movsd  0xbfd(%rip),%xmm0
movsd  %xmm0,-0x78(%rbp)
jmp    144f <ConvertRGBToYCbCr+0x34f>
movsd  -0x20(%rbp),%xmm0
movsd  %xmm0,-0x78(%rbp)
movsd  -0x78(%rbp),%xmm0
movsd  %xmm0,-0x70(%rbp)
movsd  -0x70(%rbp),%xmm0
cvttsd2si %xmm0,%eax
mov    %al,%cl
mov    -0x8(%rbp),%rax
mov    %cl,0x1(%rax)
xorps  %xmm0,%xmm0
ucomisd -0x28(%rbp),%xmm0
jbe    1486 <ConvertRGBToYCbCr+0x386>
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x80(%rbp)
jmp    14cc <ConvertRGBToYCbCr+0x3cc>
movsd  -0x28(%rbp),%xmm0
movsd  0xba5(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    14b2 <ConvertRGBToYCbCr+0x3b2>
movsd  0xb93(%rip),%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
jmp    14bf <ConvertRGBToYCbCr+0x3bf>
movsd  -0x28(%rbp),%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
movsd  -0x88(%rbp),%xmm0
ff
movsd  %xmm0,-0x80(%rbp)
movsd  -0x80(%rbp),%xmm0
cvttsd2si %xmm0,%eax
mov    %al,%cl
mov    -0x8(%rbp),%rax
mov    %cl,0x2(%rax)
mov    -0x8(%rbp),%rax
add    $0x3,%rax
mov    %rax,-0x8(%rbp)
jmp    111b <ConvertRGBToYCbCr+0x1b>
add    $0x8,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<ConvertRGBToYCbCr>:
sub    $0x148,%rsp
test   %esi,%esi
jle    29f9 <ConvertRGBToYCbCr+0x18f9>
movslq %esi,%r11
add    %rdi,%r11
lea    0x3(%rdi),%r8
cmp    %r8,%r11
mov    %r8,%rax
cmova  %r11,%rax
sub    %rdi,%rax
xor    %ecx,%ecx
add    $0xfffffffffffffffd,%rax
setne  %cl
sub    %rcx,%rax
movabs $0xaaaaaaaaaaaaaaab,%r9
aa aa aa
mul    %r9
shr    %rdx
lea    (%rdx,%rcx,1),%rax
cmp    $0x7,%rax
jae    1154 <ConvertRGBToYCbCr+0x54>
mov    %rdi,%r10
jmp    287b <ConvertRGBToYCbCr+0x177b>
cmp    $0xf,%rax
jae    1161 <ConvertRGBToYCbCr+0x61>
xor    %ecx,%ecx
jmp    20e0 <ConvertRGBToYCbCr+0xfe0>
lea    (%rdx,%rcx,1),%r10
add    $0x1,%r10
mov    %r10,%rcx
and    $0xfffffffffffffff0,%rcx
mov    %rcx,%rdx
mov    %rdi,%rax
cs nopw 0x0(%rax,%rax,1)
movdqu 0x20(%rax),%xmm4
movdqu 0x10(%rax),%xmm3
movdqu (%rax),%xmm1
movdqa %xmm1,-0x70(%rsp)
pxor   %xmm8,%xmm8
punpckhbw %xmm8,%xmm1
pshufhw $0xec,%xmm1,%xmm0
movdqa %xmm3,%xmm5
punpcklbw %xmm8,%xmm5
pshufd $0x64,%xmm5,%xmm2
movdqa %xmm5,%xmm9
pshufhw $0xe6,%xmm2,%xmm2
punpckhdq %xmm2,%xmm0
packuswb %xmm0,%xmm0
punpcklbw %xmm8,%xmm0
punpcklwd %xmm8,%xmm0
cvtdq2pd %xmm0,%xmm2
movaps %xmm2,0x20(%rsp)
pshufd $0xee,%xmm0,%xmm0
cvtdq2pd %xmm0,%xmm0
movaps %xmm0,-0x80(%rsp)
movdqa %xmm4,%xmm2
movdqa %xmm4,0x50(%rsp)
pshufhw $0xe6,%xmm4,%xmm4
pshufd $0x27,%xmm2,%xmm12
punpcklbw %xmm8,%xmm2
movdqa 0x1dfa(%rip),%xmm0
movdqa %xmm0,%xmm5
pandn  %xmm2,%xmm5
punpckhbw %xmm8,%xmm3
movdqa %xmm2,%xmm6
shufps $0x1,%xmm3,%xmm6
shufps $0xe2,%xmm3,%xmm6
movdqa %xmm3,%xmm7
pand   %xmm0,%xmm7
por    %xmm5,%xmm7
pshufd $0xd8,%xmm7,%xmm5
pshufhw $0xe6,%xmm5,%xmm5
pshufd $0xe8,%xmm5,%xmm5
pshuflw $0x6c,%xmm5,%xmm5
packuswb %xmm5,%xmm5
punpcklbw %xmm8,%xmm5
punpcklwd %xmm8,%xmm5
cvtdq2pd %xmm5,%xmm0
movaps %xmm0,-0x60(%rsp)
pshufd $0xee,%xmm5,%xmm5
cvtdq2pd %xmm5,%xmm0
movdqa %xmm0,-0x50(%rsp)
pshufd $0xe6,%xmm4,%xmm4
pshuflw $0xe1,%xmm4,%xmm4
punpcklbw %xmm4,%xmm4
pshufd $0x4e,%xmm4,%xmm4
pshuflw $0xf4,%xmm4,%xmm4
pshufhw $0xf4,%xmm4,%xmm4
movdqa 0x1d85(%rip),%xmm14
pand   %xmm14,%xmm4
movdqa %xmm14,%xmm15
cvtdq2pd %xmm4,%xmm0
movdqa %xmm0,0x10(%rsp)
pshuflw $0xec,%xmm2,%xmm2
pshufd $0xee,%xmm4,%xmm4
cvtdq2pd %xmm4,%xmm10
movapd %xmm10,0x130(%rsp)
pshufd $0xe6,%xmm3,%xmm3
pshuflw $0xe6,%xmm6,%xmm4
pshufhw $0xec,%xmm4,%xmm4
pshufd $0xe8,%xmm4,%xmm4
pshuflw $0x39,%xmm4,%xmm4
packuswb %xmm4,%xmm4
punpcklbw %xmm8,%xmm4
punpcklwd %xmm8,%xmm4
movdqa 0x1d38(%rip),%xmm13
movdqa %xmm13,%xmm5
pandn  %xmm1,%xmm5
movdqa %xmm9,%xmm14
shufps $0x32,%xmm9,%xmm1
movaps %xmm9,%xmm0
shufps $0x84,%xmm1,%xmm0
pshufd $0xee,%xmm4,%xmm1
cvtdq2pd %xmm1,%xmm7
cvtdq2pd %xmm4,%xmm6
pshuflw $0xec,%xmm0,%xmm0
pshufhw $0xe6,%xmm0,%xmm0
pshufd $0xe8,%xmm0,%xmm0
pshuflw $0x93,%xmm0,%xmm0
packuswb %xmm0,%xmm0
punpcklbw %xmm8,%xmm0
punpcklwd %xmm8,%xmm0
pshuflw $0xe6,%xmm3,%xmm1
punpckldq %xmm2,%xmm1
pshufd $0xee,%xmm0,%xmm2
cvtdq2pd %xmm2,%xmm4
cvtdq2pd %xmm0,%xmm11
pshuflw $0xe6,%xmm12,%xmm0
pshufd $0x24,%xmm0,%xmm0
punpckhbw %xmm0,%xmm0
pshufd $0xd8,%xmm0,%xmm0
pshuflw $0xc7,%xmm0,%xmm0
pshufhw $0xe5,%xmm0,%xmm3
pand   %xmm15,%xmm3
movdqa %xmm15,%xmm9
pand   %xmm13,%xmm14
por    %xmm5,%xmm14
movapd 0x1cac(%rip),%xmm15
mulpd  %xmm15,%xmm11
mulpd  %xmm15,%xmm4
mulpd  %xmm15,%xmm6
mulpd  %xmm15,%xmm7
movapd -0x50(%rsp),%xmm12
movapd 0x1c98(%rip),%xmm8
mulpd  %xmm8,%xmm12
addpd  %xmm7,%xmm12
movapd -0x60(%rsp),%xmm2
mulpd  %xmm8,%xmm2
addpd  %xmm6,%xmm2
movapd -0x80(%rsp),%xmm5
mulpd  %xmm8,%xmm5
addpd  %xmm4,%xmm5
movapd 0x20(%rsp),%xmm7
mulpd  %xmm8,%xmm7
addpd  %xmm11,%xmm7
pshufd $0xee,%xmm3,%xmm0
cvtdq2pd %xmm0,%xmm0
mulpd  %xmm15,%xmm0
movapd %xmm10,%xmm11
mulpd  %xmm8,%xmm11
addpd  %xmm0,%xmm11
cvtdq2pd %xmm3,%xmm0
mulpd  %xmm15,%xmm0
movapd 0x10(%rsp),%xmm13
mulpd  %xmm8,%xmm13
addpd  %xmm0,%xmm13
movdqa -0x70(%rsp),%xmm4
pshufd $0x6c,%xmm4,%xmm0
pshufhw $0xec,%xmm0,%xmm0
pshufd $0xe8,%xmm0,%xmm0
punpcklbw %xmm0,%xmm0
pshuflw $0xf4,%xmm0,%xmm0
pshufhw $0xd6,%xmm0,%xmm3
pand   %xmm9,%xmm3
pshufd $0xee,%xmm3,%xmm0
cvtdq2pd %xmm0,%xmm10
movapd %xmm10,0x120(%rsp)
pshufd $0x27,%xmm4,%xmm0
pshufhw $0xe6,%xmm0,%xmm0
pshufd $0xe6,%xmm0,%xmm0
punpcklbw %xmm0,%xmm0
pshufd $0xd8,%xmm0,%xmm0
pshuflw $0xe5,%xmm0,%xmm0
pshufhw $0xc7,%xmm0,%xmm6
pand   %xmm9,%xmm6
pshufd $0xee,%xmm6,%xmm0
cvtdq2pd %xmm0,%xmm4
mulpd  %xmm15,%xmm4
mulpd  %xmm8,%xmm10
addpd  %xmm4,%xmm10
cvtdq2pd %xmm3,%xmm4
movapd %xmm4,0x110(%rsp)
cvtdq2pd %xmm6,%xmm3
mulpd  %xmm15,%xmm3
mulpd  %xmm8,%xmm4
addpd  %xmm3,%xmm4
pshufd $0xd8,%xmm14,%xmm3
pshuflw $0xe6,%xmm3,%xmm3
pshufd $0xec,%xmm3,%xmm3
pshuflw $0xc6,%xmm3,%xmm3
packuswb %xmm3,%xmm3
pxor   %xmm9,%xmm9
punpcklbw %xmm9,%xmm3
punpcklwd %xmm9,%xmm3
cvtdq2pd %xmm3,%xmm0
movapd %xmm0,-0x40(%rsp)
movapd 0x1b65(%rip),%xmm6
mulpd  %xmm6,%xmm0
addpd  %xmm7,%xmm0
movapd %xmm0,%xmm15
movapd %xmm0,0x40(%rsp)
pshufd $0xee,%xmm3,%xmm3
cvtdq2pd %xmm3,%xmm8
movapd %xmm8,-0x10(%rsp)
mulpd  %xmm6,%xmm8
addpd  %xmm5,%xmm8
movapd %xmm8,(%rsp)
packuswb %xmm1,%xmm1
punpcklbw %xmm9,%xmm1
punpcklwd %xmm9,%xmm1
cvtdq2pd %xmm1,%xmm7
movapd %xmm7,-0x30(%rsp)
mulpd  %xmm6,%xmm7
addpd  %xmm2,%xmm7
pshuflw $0xe6,-0x70(%rsp),%xmm2
pshufd $0xee,%xmm1,%xmm1
cvtdq2pd %xmm1,%xmm0
movdqa %xmm0,-0x20(%rsp)
pshufd $0xe8,%xmm2,%xmm1
punpcklbw %xmm1,%xmm1
pshuflw $0xd6,%xmm1,%xmm1
pshufhw $0xf4,%xmm1,%xmm2
movdqa 0x1aa0(%rip),%xmm5
pand   %xmm5,%xmm2
movdqa %xmm0,%xmm1
mulpd  %xmm6,%xmm1
cvtdq2pd %xmm2,%xmm0
movapd %xmm0,-0x70(%rsp)
addpd  %xmm12,%xmm1
movapd %xmm0,%xmm12
mulpd  %xmm6,%xmm12
addpd  %xmm4,%xmm12
pshufd $0xc6,0x50(%rsp),%xmm4
pshuflw $0xec,%xmm4,%xmm4
pshufd $0xc4,%xmm4,%xmm4
punpckhbw %xmm4,%xmm4
pshuflw $0xd6,%xmm4,%xmm4
pshufhw $0xf4,%xmm4,%xmm4
pshufd $0xee,%xmm2,%xmm2
cvtdq2pd %xmm2,%xmm3
movapd %xmm3,0x70(%rsp)
pand   %xmm5,%xmm4
mulpd  %xmm6,%xmm3
cvtdq2pd %xmm4,%xmm14
movapd %xmm14,0x30(%rsp)
addpd  %xmm10,%xmm3
mulpd  %xmm6,%xmm14
addpd  %xmm13,%xmm14
pshufd $0xee,%xmm4,%xmm0
cvtdq2pd %xmm0,%xmm5
movapd %xmm5,0x60(%rsp)
mulpd  %xmm6,%xmm5
addpd  %xmm11,%xmm5
movapd %xmm15,%xmm10
pxor   %xmm4,%xmm4
cmpltpd %xmm4,%xmm10
movapd 0x1a55(%rip),%xmm15
movapd %xmm15,%xmm0
andpd  %xmm10,%xmm0
movapd 0x1a33(%rip),%xmm2
andnpd %xmm2,%xmm10
orpd   %xmm0,%xmm10
movapd %xmm8,%xmm11
cmpltpd %xmm4,%xmm11
movapd %xmm15,%xmm0
andpd  %xmm11,%xmm0
andnpd %xmm2,%xmm11
orpd   %xmm0,%xmm11
movapd %xmm7,%xmm13
cmpltpd %xmm4,%xmm13
movapd %xmm15,%xmm0
andpd  %xmm13,%xmm0
andnpd %xmm2,%xmm13
orpd   %xmm0,%xmm13
movapd %xmm1,%xmm9
cmpltpd %xmm4,%xmm9
movapd %xmm15,%xmm0
andpd  %xmm9,%xmm0
andnpd %xmm2,%xmm9
orpd   %xmm0,%xmm9
movapd %xmm12,%xmm6
cmpltpd %xmm4,%xmm6
movapd %xmm15,%xmm0
andpd  %xmm6,%xmm0
andnpd %xmm2,%xmm6
movapd %xmm2,%xmm8
orpd   %xmm0,%xmm6
movapd %xmm3,%xmm15
cmpltpd %xmm4,%xmm15
movapd 0x19a9(%rip),%xmm0
movapd %xmm0,%xmm2
andpd  %xmm15,%xmm2
andnpd %xmm8,%xmm15
orpd   %xmm2,%xmm15
movapd %xmm14,%xmm4
cmpltpd 0x1a28(%rip),%xmm4
andpd  %xmm4,%xmm0
andnpd %xmm8,%xmm4
orpd   %xmm0,%xmm4
movapd %xmm5,%xmm2
cmpltpd 0x1a0e(%rip),%xmm2
movapd 0x1966(%rip),%xmm0
andpd  %xmm2,%xmm0
andnpd %xmm8,%xmm2
orpd   %xmm0,%xmm2
addpd  %xmm1,%xmm9
addpd  %xmm7,%xmm13
addpd  (%rsp),%xmm11
addpd  0x40(%rsp),%xmm10
addpd  %xmm5,%xmm2
addpd  %xmm14,%xmm4
addpd  %xmm3,%xmm15
addpd  %xmm12,%xmm6
cvttpd2dq %xmm10,%xmm1
cvttpd2dq %xmm11,%xmm11
cvttpd2dq %xmm13,%xmm0
cvttpd2dq %xmm9,%xmm3
movapd %xmm3,(%rsp)
unpcklpd %xmm11,%xmm1
movapd %xmm1,0x100(%rsp)
unpcklpd %xmm3,%xmm0
movapd %xmm0,%xmm7
movapd %xmm0,0xf0(%rsp)
cvtdq2pd %xmm1,%xmm0
movapd %xmm0,0x40(%rsp)
movapd -0x40(%rsp),%xmm1
subpd  %xmm0,%xmm1
movapd 0x18ea(%rip),%xmm14
movapd %xmm1,%xmm0
divpd  %xmm14,%xmm0
movapd 0x18e8(%rip),%xmm13
addpd  %xmm13,%xmm0
movapd %xmm0,%xmm1
movapd %xmm0,-0x40(%rsp)
xorpd  %xmm5,%xmm5
cmpltpd %xmm5,%xmm1
movapd 0x18a7(%rip),%xmm9
movapd %xmm9,%xmm0
andpd  %xmm1,%xmm0
movapd %xmm8,%xmm12
andnpd %xmm8,%xmm1
cvtdq2pd %xmm7,%xmm3
movapd %xmm3,0x50(%rsp)
orpd   %xmm0,%xmm1
movapd %xmm1,%xmm8
movapd -0x30(%rsp),%xmm1
subpd  %xmm3,%xmm1
divpd  %xmm14,%xmm1
addpd  %xmm13,%xmm1
movapd %xmm1,-0x30(%rsp)
cmpltpd %xmm5,%xmm1
xorpd  %xmm10,%xmm10
movapd %xmm9,%xmm0
andpd  %xmm1,%xmm0
andnpd %xmm12,%xmm1
orpd   %xmm0,%xmm1
movapd %xmm1,%xmm7
cvttpd2dq %xmm6,%xmm0
cvttpd2dq %xmm15,%xmm5
cvtdq2pd %xmm11,%xmm1
movapd %xmm1,0xb0(%rsp)
movapd -0x10(%rsp),%xmm6
subpd  %xmm1,%xmm6
divpd  %xmm14,%xmm6
addpd  %xmm13,%xmm6
movapd %xmm6,-0x10(%rsp)
cmpltpd %xmm10,%xmm6
movapd %xmm9,%xmm1
andpd  %xmm6,%xmm1
andnpd %xmm12,%xmm6
orpd   %xmm1,%xmm6
unpcklpd %xmm5,%xmm0
movapd %xmm0,0xd0(%rsp)
cvtdq2pd (%rsp),%xmm1
movapd %xmm1,(%rsp)
movapd -0x20(%rsp),%xmm3
subpd  %xmm1,%xmm3
divpd  %xmm14,%xmm3
addpd  %xmm13,%xmm3
movapd %xmm3,-0x20(%rsp)
movapd %xmm3,%xmm1
cmpltpd %xmm10,%xmm1
movapd %xmm9,%xmm3
andpd  %xmm1,%xmm3
andnpd %xmm12,%xmm1
cvtdq2pd %xmm0,%xmm11
movapd %xmm11,0xa0(%rsp)
orpd   %xmm3,%xmm1
movapd %xmm1,%xmm10
movapd -0x70(%rsp),%xmm3
subpd  %xmm11,%xmm3
divpd  %xmm14,%xmm3
addpd  %xmm13,%xmm3
movapd %xmm3,-0x70(%rsp)
xorpd  %xmm11,%xmm11
cmpltpd %xmm11,%xmm3
movapd %xmm9,%xmm1
andpd  %xmm3,%xmm1
andnpd %xmm12,%xmm3
orpd   %xmm1,%xmm3
cvttpd2dq %xmm4,%xmm0
cvttpd2dq %xmm2,%xmm1
unpcklpd %xmm1,%xmm0
movapd %xmm0,0xc0(%rsp)
cvtdq2pd %xmm0,%xmm0
movapd %xmm0,0x90(%rsp)
movapd 0x30(%rsp),%xmm15
subpd  %xmm0,%xmm15
divpd  %xmm14,%xmm15
addpd  %xmm13,%xmm15
movapd %xmm15,%xmm4
cmpltpd %xmm11,%xmm4
movapd %xmm9,%xmm2
andpd  %xmm4,%xmm2
andnpd %xmm12,%xmm4
orpd   %xmm2,%xmm4
cvtdq2pd %xmm1,%xmm1
movapd %xmm1,0x80(%rsp)
cvtdq2pd %xmm5,%xmm2
movapd %xmm2,0x30(%rsp)
movapd 0x70(%rsp),%xmm0
subpd  %xmm2,%xmm0
divpd  %xmm14,%xmm0
addpd  %xmm13,%xmm0
movapd %xmm0,%xmm2
movapd %xmm0,%xmm5
xorpd  %xmm11,%xmm11
cmpltpd %xmm11,%xmm2
movapd %xmm9,%xmm0
andpd  %xmm2,%xmm0
andnpd %xmm12,%xmm2
orpd   %xmm0,%xmm2
movapd 0x60(%rsp),%xmm0
subpd  %xmm1,%xmm0
divpd  %xmm14,%xmm0
addpd  %xmm13,%xmm0
movapd %xmm0,%xmm1
movapd %xmm0,%xmm14
cmpltpd %xmm11,%xmm1
movapd %xmm9,%xmm0
andpd  %xmm1,%xmm0
andnpd %xmm12,%xmm1
orpd   %xmm0,%xmm1
addpd  -0x30(%rsp),%xmm7
movapd %xmm7,0x70(%rsp)
addpd  -0x40(%rsp),%xmm8
movapd %xmm8,-0x30(%rsp)
addpd  %xmm15,%xmm4
movapd %xmm4,-0x40(%rsp)
addpd  -0x70(%rsp),%xmm3
movapd %xmm3,-0x70(%rsp)
addpd  -0x20(%rsp),%xmm10
movapd %xmm10,-0x20(%rsp)
addpd  -0x10(%rsp),%xmm6
movapd %xmm6,-0x10(%rsp)
addpd  %xmm14,%xmm1
movapd %xmm1,0x60(%rsp)
addpd  %xmm5,%xmm2
movapd %xmm2,0xe0(%rsp)
movapd 0x20(%rsp),%xmm10
subpd  0x40(%rsp),%xmm10
movapd 0x1641(%rip),%xmm11
divpd  %xmm11,%xmm10
addpd  %xmm13,%xmm10
movapd %xmm10,%xmm8
xorpd  %xmm1,%xmm1
cmpltpd %xmm1,%xmm8
movapd %xmm9,%xmm0
andpd  %xmm8,%xmm0
movapd %xmm12,%xmm6
andnpd %xmm12,%xmm8
orpd   %xmm0,%xmm8
movapd -0x60(%rsp),%xmm3
subpd  0x50(%rsp),%xmm3
divpd  %xmm11,%xmm3
addpd  %xmm13,%xmm3
movapd %xmm3,-0x60(%rsp)
cmpltpd %xmm1,%xmm3
movapd %xmm9,%xmm0
andpd  %xmm3,%xmm0
andnpd %xmm12,%xmm3
orpd   %xmm0,%xmm3
movapd -0x80(%rsp),%xmm1
subpd  0xb0(%rsp),%xmm1
divpd  %xmm11,%xmm1
addpd  %xmm13,%xmm1
movapd %xmm1,-0x80(%rsp)
xorpd  %xmm2,%xmm2
cmpltpd %xmm2,%xmm1
movapd %xmm9,%xmm0
andpd  %xmm1,%xmm0
andnpd %xmm12,%xmm1
orpd   %xmm0,%xmm1
movapd -0x50(%rsp),%xmm7
subpd  (%rsp),%xmm7
divpd  %xmm11,%xmm7
addpd  %xmm13,%xmm7
movapd %xmm7,-0x50(%rsp)
cmpltpd %xmm2,%xmm7
movapd %xmm9,%xmm0
andpd  %xmm7,%xmm0
andnpd %xmm12,%xmm7
orpd   %xmm0,%xmm7
movapd 0x110(%rsp),%xmm12
subpd  0xa0(%rsp),%xmm12
divpd  %xmm11,%xmm12
addpd  %xmm13,%xmm12
movapd %xmm12,%xmm15
cmpltpd %xmm2,%xmm15
xorpd  %xmm4,%xmm4
movapd %xmm9,%xmm0
andpd  %xmm15,%xmm0
andnpd %xmm6,%xmm15
orpd   %xmm0,%xmm15
movapd 0x10(%rsp),%xmm2
subpd  0x90(%rsp),%xmm2
divpd  %xmm11,%xmm2
addpd  %xmm13,%xmm2
movapd %xmm2,%xmm14
cmpltpd %xmm4,%xmm14
movapd %xmm9,%xmm0
andpd  %xmm14,%xmm0
andnpd %xmm6,%xmm14
orpd   %xmm0,%xmm14
movapd 0x120(%rsp),%xmm0
subpd  0x30(%rsp),%xmm0
divpd  %xmm11,%xmm0
addpd  %xmm13,%xmm0
movapd %xmm0,%xmm13
movapd %xmm0,%xmm5
cmpltpd %xmm4,%xmm13
movapd %xmm9,%xmm0
andpd  %xmm13,%xmm0
andnpd %xmm6,%xmm13
orpd   %xmm0,%xmm13
movapd 0x130(%rsp),%xmm0
subpd  0x80(%rsp),%xmm0
divpd  %xmm11,%xmm0
addpd  0x148c(%rip),%xmm0
movapd %xmm0,%xmm11
cmpltpd %xmm4,%xmm11
andpd  %xmm11,%xmm9
andnpd %xmm6,%xmm11
orpd   %xmm9,%xmm11
addpd  -0x60(%rsp),%xmm3
movapd %xmm3,-0x60(%rsp)
addpd  %xmm10,%xmm8
movapd %xmm8,0x20(%rsp)
addpd  %xmm2,%xmm14
addpd  %xmm12,%xmm15
addpd  -0x50(%rsp),%xmm7
movapd %xmm7,-0x50(%rsp)
addpd  -0x80(%rsp),%xmm1
movapd %xmm1,-0x80(%rsp)
addpd  %xmm0,%xmm11
addpd  %xmm5,%xmm13
xorpd  %xmm0,%xmm0
pcmpgtd 0xf0(%rsp),%xmm0
xorpd  %xmm5,%xmm5
pcmpgtd 0xc0(%rsp),%xmm5
packssdw %xmm5,%xmm0
pxor   %xmm5,%xmm5
pcmpgtd 0x100(%rsp),%xmm5
xorpd  %xmm1,%xmm1
pcmpgtd 0xd0(%rsp),%xmm1
packssdw %xmm5,%xmm1
packsswb %xmm0,%xmm1
movdqa %xmm1,%xmm8
movapd 0x1400(%rip),%xmm10
movapd %xmm10,%xmm7
minpd  0x40(%rsp),%xmm7
movapd %xmm10,%xmm5
minpd  0x50(%rsp),%xmm5
movapd %xmm10,%xmm6
minpd  0xa0(%rsp),%xmm6
movapd %xmm10,%xmm4
minpd  0xb0(%rsp),%xmm4
movapd %xmm10,%xmm2
minpd  0x90(%rsp),%xmm2
movapd %xmm10,%xmm1
minpd  (%rsp),%xmm1
movapd %xmm10,%xmm3
minpd  0x30(%rsp),%xmm3
cvttpd2dq %xmm5,%xmm5
movapd %xmm10,%xmm0
minpd  0x80(%rsp),%xmm0
cvttpd2dq %xmm1,%xmm1
unpcklpd %xmm1,%xmm5
cvttpd2dq %xmm2,%xmm1
cvttpd2dq %xmm0,%xmm0
unpcklpd %xmm0,%xmm1
packssdw %xmm1,%xmm5
cvttpd2dq %xmm7,%xmm0
cvttpd2dq %xmm4,%xmm1
cvttpd2dq %xmm6,%xmm2
unpcklpd %xmm1,%xmm0
cvttpd2dq %xmm3,%xmm1
unpcklpd %xmm1,%xmm2
packssdw %xmm0,%xmm2
packuswb %xmm5,%xmm2
cvttpd2dq 0x70(%rsp),%xmm3
pandn  %xmm2,%xmm8
movdqa %xmm8,0x10(%rsp)
cvttpd2dq -0x20(%rsp),%xmm9
unpcklpd %xmm9,%xmm3
cvttpd2dq -0x40(%rsp),%xmm2
cvttpd2dq 0x60(%rsp),%xmm12
unpcklpd %xmm12,%xmm2
xorpd  %xmm4,%xmm4
pcmpgtd %xmm3,%xmm4
pxor   %xmm5,%xmm5
pcmpgtd %xmm2,%xmm5
packssdw %xmm5,%xmm4
cvttpd2dq -0x30(%rsp),%xmm6
cvttpd2dq -0x10(%rsp),%xmm7
cvttpd2dq -0x70(%rsp),%xmm1
unpcklpd %xmm7,%xmm6
cvttpd2dq 0xe0(%rsp),%xmm8
unpcklpd %xmm8,%xmm1
pxor   %xmm0,%xmm0
pcmpgtd %xmm6,%xmm0
pxor   %xmm5,%xmm5
pcmpgtd %xmm1,%xmm5
packssdw %xmm0,%xmm5
packsswb %xmm4,%xmm5
cvtdq2pd %xmm6,%xmm0
movapd %xmm10,%xmm4
minpd  %xmm0,%xmm4
cvtdq2pd %xmm3,%xmm0
movapd %xmm10,%xmm3
minpd  %xmm0,%xmm3
cvtdq2pd %xmm7,%xmm0
cvtdq2pd %xmm1,%xmm1
movapd %xmm10,%xmm6
minpd  %xmm1,%xmm6
movapd %xmm10,%xmm1
minpd  %xmm0,%xmm1
cvtdq2pd %xmm2,%xmm0
movapd %xmm10,%xmm2
minpd  %xmm0,%xmm2
cvtdq2pd %xmm9,%xmm0
movapd %xmm10,%xmm7
minpd  %xmm0,%xmm7
cvtdq2pd %xmm12,%xmm9
cvtdq2pd %xmm8,%xmm8
movapd %xmm10,%xmm12
minpd  %xmm8,%xmm12
movapd %xmm10,%xmm0
minpd  %xmm9,%xmm0
cvttpd2dq %xmm3,%xmm3
cvttpd2dq %xmm7,%xmm7
cvttpd2dq %xmm2,%xmm2
unpcklpd %xmm7,%xmm3
cvttpd2dq %xmm0,%xmm0
unpcklpd %xmm0,%xmm2
cvttpd2dq %xmm4,%xmm0
cvttpd2dq %xmm1,%xmm1
packssdw %xmm2,%xmm3
unpcklpd %xmm1,%xmm0
cvttpd2dq 0x20(%rsp),%xmm1
cvttpd2dq %xmm6,%xmm2
cvttpd2dq %xmm12,%xmm4
unpcklpd %xmm4,%xmm2
cvttpd2dq -0x80(%rsp),%xmm8
unpcklpd %xmm8,%xmm1
cvttpd2dq -0x60(%rsp),%xmm6
cvttpd2dq -0x50(%rsp),%xmm12
cvttpd2dq %xmm15,%xmm4
cvttpd2dq %xmm13,%xmm9
unpcklpd %xmm12,%xmm6
unpcklpd %xmm9,%xmm4
cvttpd2dq %xmm14,%xmm7
cvttpd2dq %xmm11,%xmm13
unpcklpd %xmm13,%xmm7
packssdw %xmm0,%xmm2
packuswb %xmm3,%xmm2
pandn  %xmm2,%xmm5
pxor   %xmm2,%xmm2
pcmpgtd %xmm6,%xmm2
pxor   %xmm0,%xmm0
pcmpgtd %xmm7,%xmm0
packssdw %xmm0,%xmm2
pxor   %xmm3,%xmm3
pcmpgtd %xmm1,%xmm3
pxor   %xmm0,%xmm0
pcmpgtd %xmm4,%xmm0
packssdw %xmm3,%xmm0
cvtdq2pd %xmm6,%xmm3
cvtdq2pd %xmm1,%xmm1
cvtdq2pd %xmm12,%xmm11
cvtdq2pd %xmm7,%xmm7
cvtdq2pd %xmm8,%xmm6
cvtdq2pd %xmm4,%xmm4
cvtdq2pd %xmm13,%xmm8
cvtdq2pd %xmm9,%xmm9
packsswb %xmm2,%xmm0
movapd %xmm10,%xmm12
minpd  %xmm1,%xmm12
movapd %xmm10,%xmm1
minpd  %xmm3,%xmm1
movapd %xmm10,%xmm13
minpd  %xmm4,%xmm13
movapd %xmm10,%xmm4
minpd  %xmm6,%xmm4
movapd %xmm10,%xmm6
minpd  %xmm7,%xmm6
movapd %xmm10,%xmm7
minpd  %xmm11,%xmm7
movapd %xmm10,%xmm3
minpd  %xmm9,%xmm3
cvttpd2dq %xmm1,%xmm1
cvttpd2dq %xmm7,%xmm7
minpd  %xmm8,%xmm10
unpcklpd %xmm7,%xmm1
cvttpd2dq %xmm6,%xmm6
cvttpd2dq %xmm10,%xmm2
unpcklpd %xmm2,%xmm6
packssdw %xmm6,%xmm1
cvttpd2dq %xmm12,%xmm2
cvttpd2dq %xmm4,%xmm4
cvttpd2dq %xmm13,%xmm6
cvttpd2dq %xmm3,%xmm3
unpcklpd %xmm4,%xmm2
unpcklpd %xmm3,%xmm6
packssdw %xmm2,%xmm6
packuswb %xmm1,%xmm6
pandn  %xmm6,%xmm0
pshuflw $0xf6,%xmm0,%xmm1
pshufhw $0x0,%xmm1,%xmm1
movdqa 0x1112(%rip),%xmm8
movdqa %xmm8,%xmm2
pandn  %xmm1,%xmm2
pshufd $0xe6,%xmm5,%xmm1
punpcklbw %xmm1,%xmm1
pshufd $0x4e,%xmm1,%xmm1
pshuflw $0xe9,%xmm1,%xmm1
pshufhw $0x94,%xmm1,%xmm3
pand   %xmm8,%xmm3
por    %xmm2,%xmm3
movdqa 0x10f0(%rip),%xmm7
pand   %xmm7,%xmm3
movdqa 0x10(%rsp),%xmm4
pshuflw $0xff,%xmm4,%xmm1
pshufhw $0x60,%xmm1,%xmm2
movdqa %xmm7,%xmm1
pandn  %xmm2,%xmm1
por    %xmm3,%xmm1
movdqa %xmm5,%xmm2
punpckhbw %xmm5,%xmm2
pshufd $0xe6,%xmm2,%xmm2
pshuflw $0xcc,%xmm2,%xmm2
pshufhw $0xe9,%xmm2,%xmm2
movdqa %xmm7,%xmm3
pandn  %xmm2,%xmm3
pshufd $0xee,%xmm4,%xmm2
movdqa %xmm4,%xmm6
pshuflw $0xa5,%xmm2,%xmm2
pshufhw $0xff,%xmm2,%xmm2
movdqa %xmm8,%xmm4
pandn  %xmm2,%xmm4
pshufd $0xee,%xmm0,%xmm2
pshuflw $0xa5,%xmm2,%xmm2
pshufhw $0xf6,%xmm2,%xmm2
pand   %xmm8,%xmm2
por    %xmm2,%xmm4
pand   %xmm7,%xmm4
por    %xmm3,%xmm4
pshufd $0x44,%xmm0,%xmm0
pshuflw $0x0,%xmm0,%xmm0
pshufhw $0xa5,%xmm0,%xmm0
movdqa %xmm7,%xmm2
pandn  %xmm0,%xmm2
punpcklbw %xmm5,%xmm5
pshufd $0x94,%xmm5,%xmm0
pshuflw $0x94,%xmm0,%xmm0
movdqa %xmm8,%xmm3
pandn  %xmm0,%xmm3
pshufd $0x44,%xmm6,%xmm0
pshuflw $0x60,%xmm0,%xmm0
pshufhw $0xa5,%xmm0,%xmm0
pand   %xmm8,%xmm0
por    %xmm3,%xmm0
pand   %xmm7,%xmm0
por    %xmm2,%xmm0
movdqu %xmm0,(%rax)
movdqu %xmm4,0x20(%rax)
movdqu %xmm1,0x10(%rax)
add    $0x30,%rax
add    $0xfffffffffffffff0,%rdx
jne    1180 <ConvertRGBToYCbCr+0x80>
cmp    %rcx,%r10
je     29f9 <ConvertRGBToYCbCr+0x18f9>
test   $0x8,%r10b
jne    20e0 <ConvertRGBToYCbCr+0xfe0>
lea    (%rcx,%rcx,2),%rax
add    %rax,%rdi
jmp    114c <ConvertRGBToYCbCr+0x4c>
cmp    %r8,%r11
cmova  %r11,%r8
sub    %rdi,%r8
xor    %esi,%esi
add    $0xfffffffffffffffd,%r8
setne  %sil
sub    %rsi,%r8
mov    %r8,%rax
mul    %r9
shr    %rdx
lea    (%rdx,%rsi,1),%r8
add    $0x1,%r8
mov    %r8,%r9
and    $0xfffffffffffffff8,%r9
lea    (%r9,%r9,2),%r10
add    %rdi,%r10
lea    (%rcx,%rcx,2),%rdx
add    %rdi,%rdx
sub    %r9,%rcx
movdqu (%rdx),%xmm1
movdqa %xmm1,%xmm2
xorpd  %xmm9,%xmm9
punpckhbw %xmm9,%xmm2
pshufhw $0xec,%xmm2,%xmm3
movq   0x10(%rdx),%xmm0
punpcklbw %xmm9,%xmm0
pshufd $0x64,%xmm0,%xmm4
pshufhw $0xe6,%xmm4,%xmm4
punpckhdq %xmm4,%xmm3
packuswb %xmm3,%xmm3
punpcklbw %xmm9,%xmm3
punpcklwd %xmm9,%xmm3
cvtdq2pd %xmm3,%xmm4
movaps %xmm4,-0x80(%rsp)
pshufd $0x6c,%xmm1,%xmm4
pshufd $0xee,%xmm3,%xmm3
cvtdq2pd %xmm3,%xmm15
movapd %xmm15,-0x30(%rsp)
pshufhw $0xec,%xmm4,%xmm3
pshufd $0xe8,%xmm3,%xmm3
punpcklbw %xmm3,%xmm3
pshuflw $0xf4,%xmm3,%xmm3
pshufhw $0xd6,%xmm3,%xmm4
movdqa 0xe73(%rip),%xmm14
pand   %xmm14,%xmm4
cvtdq2pd %xmm4,%xmm8
movapd %xmm8,-0x10(%rsp)
pshufd $0x27,%xmm1,%xmm3
pshufd $0xee,%xmm4,%xmm4
cvtdq2pd %xmm4,%xmm12
movapd %xmm12,-0x70(%rsp)
pshuflw $0xe6,%xmm1,%xmm4
movdqa 0xe4f(%rip),%xmm5
movdqa %xmm5,%xmm1
pandn  %xmm2,%xmm1
shufps $0x32,%xmm0,%xmm2
movaps %xmm0,%xmm6
shufps $0x84,%xmm2,%xmm6
pshuflw $0xec,%xmm6,%xmm2
pshufhw $0xe6,%xmm2,%xmm2
pshufd $0xe8,%xmm2,%xmm2
pshuflw $0x93,%xmm2,%xmm2
packuswb %xmm2,%xmm2
punpcklbw %xmm9,%xmm2
punpcklwd %xmm9,%xmm2
pshufd $0xee,%xmm2,%xmm6
cvtdq2pd %xmm6,%xmm6
cvtdq2pd %xmm2,%xmm10
pshufhw $0xe6,%xmm3,%xmm3
pshufd $0xe6,%xmm3,%xmm3
punpcklbw %xmm3,%xmm3
pshufd $0xd8,%xmm3,%xmm3
pshuflw $0xe5,%xmm3,%xmm3
pshufhw $0xc7,%xmm3,%xmm3
pand   %xmm14,%xmm3
pshufd $0xee,%xmm3,%xmm7
cvtdq2pd %xmm7,%xmm2
cvtdq2pd %xmm3,%xmm11
pand   %xmm5,%xmm0
por    %xmm1,%xmm0
pshufd $0xd8,%xmm0,%xmm0
pshuflw $0xe6,%xmm0,%xmm0
pshufd $0xec,%xmm0,%xmm0
pshuflw $0xc6,%xmm0,%xmm0
packuswb %xmm0,%xmm0
punpcklbw %xmm9,%xmm0
punpcklwd %xmm9,%xmm0
pshufd $0xee,%xmm0,%xmm1
cvtdq2pd %xmm1,%xmm13
cvtdq2pd %xmm0,%xmm5
pshufd $0xe8,%xmm4,%xmm0
punpcklbw %xmm0,%xmm0
pshuflw $0xd6,%xmm0,%xmm0
pshufhw $0xf4,%xmm0,%xmm0
pand   %xmm14,%xmm0
pshufd $0xee,%xmm0,%xmm4
cvtdq2pd %xmm4,%xmm7
cvtdq2pd %xmm0,%xmm4
movapd 0xd87(%rip),%xmm0
mulpd  %xmm0,%xmm10
mulpd  %xmm0,%xmm6
mulpd  %xmm0,%xmm11
mulpd  %xmm0,%xmm2
movapd 0xd7d(%rip),%xmm1
mulpd  %xmm1,%xmm15
addpd  %xmm6,%xmm15
movapd -0x80(%rsp),%xmm6
mulpd  %xmm1,%xmm6
addpd  %xmm10,%xmm6
movapd %xmm12,%xmm3
mulpd  %xmm1,%xmm3
addpd  %xmm2,%xmm3
movapd %xmm8,%xmm2
mulpd  %xmm1,%xmm2
addpd  %xmm11,%xmm2
movapd %xmm5,%xmm10
movapd 0xd4c(%rip),%xmm1
mulpd  %xmm1,%xmm10
addpd  %xmm6,%xmm10
movapd %xmm13,%xmm14
mulpd  %xmm1,%xmm14
addpd  %xmm15,%xmm14
movapd %xmm4,%xmm11
mulpd  %xmm1,%xmm11
addpd  %xmm2,%xmm11
movapd %xmm7,%xmm15
mulpd  %xmm1,%xmm15
addpd  %xmm3,%xmm15
movapd %xmm14,%xmm6
xorpd  %xmm0,%xmm0
cmpltpd %xmm0,%xmm6
movapd %xmm10,%xmm3
cmpltpd %xmm0,%xmm3
movapd %xmm11,%xmm2
cmpltpd %xmm0,%xmm2
xorpd  %xmm1,%xmm1
movapd 0xd06(%rip),%xmm12
movapd %xmm12,%xmm0
andpd  %xmm3,%xmm0
movapd 0xce4(%rip),%xmm9
andnpd %xmm9,%xmm3
orpd   %xmm0,%xmm3
movapd %xmm12,%xmm0
andpd  %xmm6,%xmm0
andnpd %xmm9,%xmm6
orpd   %xmm0,%xmm6
movapd %xmm12,%xmm0
andpd  %xmm2,%xmm0
andnpd %xmm9,%xmm2
orpd   %xmm0,%xmm2
movapd %xmm15,%xmm0
cmpltpd %xmm1,%xmm0
movapd %xmm12,%xmm1
andpd  %xmm0,%xmm1
andnpd %xmm9,%xmm0
orpd   %xmm1,%xmm0
addpd  %xmm14,%xmm6
addpd  %xmm10,%xmm3
addpd  %xmm15,%xmm0
cvttpd2dq %xmm3,%xmm3
cvttpd2dq %xmm6,%xmm8
addpd  %xmm11,%xmm2
unpcklpd %xmm8,%xmm3
movapd %xmm3,-0x20(%rsp)
cvttpd2dq %xmm2,%xmm2
cvttpd2dq %xmm0,%xmm10
cvtdq2pd %xmm3,%xmm14
unpcklpd %xmm10,%xmm2
movapd %xmm2,-0x40(%rsp)
cvtdq2pd %xmm8,%xmm0
movapd %xmm0,-0x50(%rsp)
subpd  %xmm14,%xmm5
movapd %xmm14,0x20(%rsp)
subpd  %xmm0,%xmm13
movapd 0xc55(%rip),%xmm11
divpd  %xmm11,%xmm5
divpd  %xmm11,%xmm13
movapd 0xc52(%rip),%xmm9
addpd  %xmm9,%xmm5
addpd  %xmm9,%xmm13
movapd %xmm9,%xmm12
movapd %xmm5,%xmm3
xorpd  %xmm0,%xmm0
cmpltpd %xmm0,%xmm3
movapd %xmm13,%xmm15
cmpltpd %xmm0,%xmm15
xorpd  %xmm8,%xmm8
movapd 0xbfd(%rip),%xmm9
movapd %xmm9,%xmm0
andpd  %xmm3,%xmm0
movapd 0xbdc(%rip),%xmm1
andnpd %xmm1,%xmm3
orpd   %xmm0,%xmm3
movapd %xmm9,%xmm0
andpd  %xmm15,%xmm0
andnpd %xmm1,%xmm15
orpd   %xmm0,%xmm15
cvtdq2pd %xmm2,%xmm0
movapd %xmm0,0x10(%rsp)
subpd  %xmm0,%xmm4
divpd  %xmm11,%xmm4
addpd  %xmm12,%xmm4
movapd %xmm4,%xmm6
cmpltpd %xmm8,%xmm6
movapd %xmm9,%xmm0
andpd  %xmm6,%xmm0
andnpd %xmm1,%xmm6
orpd   %xmm0,%xmm6
cvtdq2pd %xmm10,%xmm0
movapd %xmm0,-0x60(%rsp)
subpd  %xmm0,%xmm7
divpd  %xmm11,%xmm7
addpd  %xmm12,%xmm7
movapd %xmm7,%xmm2
cmpltpd %xmm8,%xmm2
movapd %xmm9,%xmm0
andpd  %xmm2,%xmm0
andnpd %xmm1,%xmm2
movapd %xmm1,%xmm11
orpd   %xmm0,%xmm2
addpd  %xmm5,%xmm3
addpd  %xmm4,%xmm6
addpd  %xmm13,%xmm15
addpd  %xmm7,%xmm2
movapd -0x80(%rsp),%xmm1
subpd  %xmm14,%xmm1
movapd -0x30(%rsp),%xmm8
subpd  -0x50(%rsp),%xmm8
movapd 0xb61(%rip),%xmm13
divpd  %xmm13,%xmm1
divpd  %xmm13,%xmm8
movapd %xmm12,%xmm10
addpd  %xmm12,%xmm1
movapd %xmm1,-0x80(%rsp)
addpd  %xmm12,%xmm8
movapd %xmm1,%xmm0
xorpd  %xmm5,%xmm5
cmpltpd %xmm5,%xmm0
movapd %xmm9,%xmm12
movapd %xmm9,%xmm1
andpd  %xmm0,%xmm1
andnpd %xmm11,%xmm0
orpd   %xmm1,%xmm0
movapd %xmm8,%xmm4
cmpltpd %xmm5,%xmm4
xorpd  %xmm14,%xmm14
movapd %xmm9,%xmm1
andpd  %xmm4,%xmm1
andnpd %xmm11,%xmm4
movapd %xmm11,%xmm9
orpd   %xmm1,%xmm4
movapd -0x10(%rsp),%xmm5
movapd 0x10(%rsp),%xmm11
subpd  %xmm11,%xmm5
divpd  %xmm13,%xmm5
addpd  %xmm10,%xmm5
movapd %xmm5,%xmm7
cmpltpd %xmm14,%xmm7
movapd %xmm12,%xmm1
andpd  %xmm7,%xmm1
andnpd %xmm9,%xmm7
orpd   %xmm1,%xmm7
movapd -0x70(%rsp),%xmm1
subpd  -0x60(%rsp),%xmm1
divpd  %xmm13,%xmm1
addpd  %xmm10,%xmm1
movapd %xmm1,%xmm13
movapd %xmm1,%xmm10
cmpltpd %xmm14,%xmm13
andpd  %xmm13,%xmm12
andnpd %xmm9,%xmm13
orpd   %xmm12,%xmm13
addpd  -0x80(%rsp),%xmm0
addpd  %xmm5,%xmm7
addpd  %xmm8,%xmm4
addpd  %xmm1,%xmm13
xorpd  %xmm5,%xmm5
pcmpgtd -0x20(%rsp),%xmm5
xorpd  %xmm9,%xmm9
pcmpgtd -0x40(%rsp),%xmm9
packssdw %xmm5,%xmm9
movapd 0xa63(%rip),%xmm14
movapd %xmm14,%xmm5
minpd  0x20(%rsp),%xmm5
movapd %xmm14,%xmm8
minpd  %xmm11,%xmm8
movapd %xmm14,%xmm1
minpd  -0x50(%rsp),%xmm1
movapd %xmm14,%xmm10
minpd  -0x60(%rsp),%xmm10
cvttpd2dq %xmm3,%xmm3
cvttpd2dq %xmm15,%xmm11
cvttpd2dq %xmm5,%xmm5
cvttpd2dq %xmm1,%xmm1
unpcklpd %xmm1,%xmm5
unpcklpd %xmm11,%xmm3
cvttpd2dq %xmm6,%xmm1
cvttpd2dq %xmm2,%xmm12
cvttpd2dq %xmm8,%xmm2
unpcklpd %xmm12,%xmm1
cvttpd2dq %xmm10,%xmm6
unpcklpd %xmm6,%xmm2
packssdw %xmm5,%xmm2
pxor   %xmm5,%xmm5
pcmpgtd %xmm3,%xmm5
xorpd  %xmm6,%xmm6
pcmpgtd %xmm1,%xmm6
packssdw %xmm5,%xmm6
cvtdq2pd %xmm3,%xmm3
cvtdq2pd %xmm11,%xmm5
cvtdq2pd %xmm1,%xmm1
cvtdq2pd %xmm12,%xmm8
packsswb %xmm6,%xmm9
movapd %xmm14,%xmm6
minpd  %xmm3,%xmm6
movapd %xmm14,%xmm3
minpd  %xmm1,%xmm3
movapd %xmm14,%xmm1
minpd  %xmm5,%xmm1
movapd %xmm14,%xmm5
cvttpd2dq %xmm6,%xmm6
minpd  %xmm8,%xmm5
cvttpd2dq %xmm1,%xmm1
unpcklpd %xmm1,%xmm6
cvttpd2dq %xmm3,%xmm1
cvttpd2dq %xmm5,%xmm3
unpcklpd %xmm3,%xmm1
packssdw %xmm6,%xmm1
cvttpd2dq %xmm0,%xmm0
cvttpd2dq %xmm4,%xmm3
cvttpd2dq %xmm7,%xmm4
unpcklpd %xmm3,%xmm0
cvttpd2dq %xmm13,%xmm5
packuswb %xmm1,%xmm2
cvtdq2pd %xmm0,%xmm1
cvtdq2pd %xmm3,%xmm3
unpcklpd %xmm5,%xmm4
pandn  %xmm2,%xmm9
pxor   %xmm2,%xmm2
pcmpgtd %xmm0,%xmm2
pxor   %xmm0,%xmm0
pcmpgtd %xmm4,%xmm0
cvtdq2pd %xmm4,%xmm4
cvtdq2pd %xmm5,%xmm5
packssdw %xmm2,%xmm0
movapd %xmm14,%xmm2
minpd  %xmm1,%xmm2
movapd %xmm14,%xmm1
minpd  %xmm4,%xmm1
movapd %xmm14,%xmm4
minpd  %xmm3,%xmm4
movapd %xmm14,%xmm3
minpd  %xmm5,%xmm3
packsswb %xmm0,%xmm0
cvttpd2dq %xmm2,%xmm2
cvttpd2dq %xmm4,%xmm4
cvttpd2dq %xmm1,%xmm1
cvttpd2dq %xmm3,%xmm3
unpcklpd %xmm4,%xmm2
unpcklpd %xmm3,%xmm1
packssdw %xmm2,%xmm1
packuswb %xmm1,%xmm1
pandn  %xmm1,%xmm0
movdqa %xmm9,%xmm1
xorpd  %xmm3,%xmm3
punpcklbw %xmm3,%xmm1
pshufd $0xa5,%xmm1,%xmm2
movdqa 0x915(%rip),%xmm4
pand   %xmm4,%xmm2
punpckhbw %xmm3,%xmm9
pshuflw $0xff,%xmm9,%xmm3
pshufhw $0x0,%xmm3,%xmm3
pandn  %xmm3,%xmm4
por    %xmm2,%xmm4
movdqa %xmm1,%xmm2
punpcklwd %xmm9,%xmm2
pshufd $0x64,%xmm2,%xmm2
pshuflw $0xa4,%xmm2,%xmm2
pshufhw $0x47,%xmm2,%xmm2
packuswb %xmm4,%xmm2
pshufd $0x44,%xmm0,%xmm3
pshuflw $0x0,%xmm3,%xmm3
pshufhw $0xa5,%xmm3,%xmm3
movdqa 0x8b6(%rip),%xmm5
movdqa %xmm5,%xmm4
pandn  %xmm3,%xmm4
pand   %xmm5,%xmm2
por    %xmm2,%xmm4
punpckhwd %xmm1,%xmm9
pshuflw $0xf6,%xmm0,%xmm0
movdqa 0x8b4(%rip),%xmm2
movdqa %xmm2,%xmm1
pandn  %xmm0,%xmm1
pshufd $0xf6,%xmm9,%xmm0
pshuflw $0x16,%xmm0,%xmm0
packuswb %xmm0,%xmm0
pand   %xmm2,%xmm0
por    %xmm0,%xmm1
movq   %xmm1,0x10(%rdx)
movdqu %xmm4,(%rdx)
add    $0x18,%rdx
add    $0x8,%rcx
jne    2120 <ConvertRGBToYCbCr+0x1020>
cmp    %r9,%r8
je     29f9 <ConvertRGBToYCbCr+0x18f9>
movsd  0x8ac(%rip),%xmm10
xorpd  %xmm11,%xmm11
movsd  0x8a6(%rip),%xmm12
movsd  0x8a5(%rip),%xmm13
movapd 0x85c(%rip),%xmm14
movapd 0x7e3(%rip),%xmm15
xorpd  %xmm9,%xmm9
movapd 0x7a6(%rip),%xmm1
movapd 0x7ae(%rip),%xmm2
xor    %r9d,%r9d
movsd  0x87b(%rip),%xmm3
movapd 0x7db(%rip),%xmm4
mov    $0xff,%r8d
nopl   0x0(%rax,%rax,1)
movzbl (%r10),%esi
movzbl 0x1(%r10),%edi
xorps  %xmm6,%xmm6
cvtsi2sd %edi,%xmm6
movzbl 0x2(%r10),%edi
movd   %esi,%xmm5
pinsrw $0x2,%edi,%xmm5
cvtdq2pd %xmm5,%xmm7
mulsd  0x816(%rip),%xmm6
movapd %xmm7,%xmm5
mulsd  0x812(%rip),%xmm5
addsd  %xmm6,%xmm5
movapd %xmm7,%xmm6
unpckhpd %xmm7,%xmm6
mulsd  %xmm10,%xmm6
addsd  %xmm5,%xmm6
movapd %xmm6,%xmm5
cmpltsd %xmm11,%xmm5
movapd %xmm5,%xmm8
andpd  %xmm12,%xmm8
andnpd %xmm13,%xmm5
orpd   %xmm8,%xmm5
addsd  %xmm6,%xmm5
cvttsd2si %xmm5,%edi
cvttpd2dq %xmm5,%xmm5
cvtdq2pd %xmm5,%xmm5
movapd %xmm3,%xmm6
minsd  %xmm5,%xmm6
unpcklpd %xmm5,%xmm5
subpd  %xmm5,%xmm7
divpd  %xmm14,%xmm7
addpd  %xmm15,%xmm7
movapd %xmm7,%xmm5
cmpltpd %xmm9,%xmm5
movapd %xmm5,%xmm0
andnpd %xmm1,%xmm0
andpd  %xmm2,%xmm5
orpd   %xmm0,%xmm5
addpd  %xmm7,%xmm5
cvttpd2dq %xmm5,%xmm0
cvtdq2pd %xmm0,%xmm5
cvttsd2si %xmm6,%esi
movapd %xmm4,%xmm6
cvttsd2si %xmm5,%edx
cmpltpd %xmm5,%xmm6
unpckhpd %xmm5,%xmm5
cvttsd2si %xmm5,%ecx
movmskpd %xmm6,%eax
test   %edi,%edi
cmovs  %r9d,%esi
test   $0x2,%al
cmovne %r8d,%ecx
pshufd $0x50,%xmm0,%xmm0
movmskpd %xmm0,%edi
test   $0x2,%dil
cmovne %r9d,%ecx
test   $0x1,%al
cmovne %r8d,%edx
mov    %sil,(%r10)
test   $0x1,%dil
cmovne %r9d,%edx
mov    %cl,0x1(%r10)
mov    %dl,0x2(%r10)
add    $0x3,%r10
cmp    %r11,%r10
jb     28e0 <ConvertRGBToYCbCr+0x17e0>
add    $0x148,%rsp
ret

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

LLVM IR (-O2):
define void @ConvertRGBToYCbCr(i8* %0, i32 %1) {
%3 = ptrtoint i8* %0 to i64
%4 = sext i32 %1 to i64
%5 = getelementptr inbounds i8, i8* %0, i64 %4
%6 = icmp sgt i32 %1, 0
br i1 %6, label %7, label %221
7: ; preds = %2
%8 = add i64 %3, %4
%9 = add i64 %3, 3
%10 = call i64 @llvm.umax.i64(i64 %8, i64 %9)
%11 = add i64 %10, -3
%12 = sub i64 %11, %3
%13 = icmp ne i64 %12, 0
%14 = zext i1 %13 to i64
%15 = sub i64 %12, %14
%16 = udiv i64 %15, 3
%17 = add nuw nsw i64 %16, %14
%18 = add nuw i64 %17, 1
%19 = icmp ult i64 %17, 7
br i1 %19, label %167, label %20
20: ; preds = %7
%21 = icmp ult i64 %17, 15
br i1 %21, label %90, label %22
22: ; preds = %20
%23 = and i64 %18, -16
br label %24
24: ; preds = %24, %22
%25 = phi i64 [ 0, %22 ], [ %81, %24 ]
%26 = mul i64 %25, 3
%27 = getelementptr i8, i8* %0, i64 %26
%28 = bitcast i8* %27 to <48 x i8>*
%29 = load <48 x i8>, <48 x i8>* %28
%30 = shufflevector <48 x i8> %29, <48 x i8> poison, <16 x i32> <i32 0, i32 3, i32 6, i32 9, i32 12, i32 15, i32 18, i32 21, i32 24, i32 27, i32 30, i32 33, i32 36, i32 39, i32 42, i32 45>
%31 = shufflevector <48 x i8> %29, <48 x i8> poison, <16 x i32> <i32 1, i32 4, i32 7, i32 10, i32 13, i32 16, i32 19, i32 22, i32 25, i32 28, i32 31, i32 34, i32 37, i32 40, i32 43, i32 46>
%32 = shufflevector <48 x i8> %29, <48 x i8> poison, <16 x i32> <i32 2, i32 5, i32 8, i32 11, i32 14, i32 17, i32 20, i32 23, i32 26, i32 29, i32 32, i32 35, i32 38, i32 41, i32 44, i32 47>
%33 = uitofp <16 x i8> %30 to <16 x double>
%34 = uitofp <16 x i8> %31 to <16 x double>
%35 = getelementptr inbounds i8, i8* %27, i64 2
%36 = uitofp <16 x i8> %32 to <16 x double>
%37 = fmul <16 x double> %34, <double 5.870000e-01, double 5.870000e-01, double 5.870000e-01, double 5.870000e-01, double 5.870000e-01, double 5.870000e-01, double 5.870000e-01, double 5.870000e-01, double 5.870000e-01, double 5.870000e-01, double 5.870000e-01, double 5.870000e-01, double 5.870000e-01, double 5.870000e-01, double 5.870000e-01, double 5.870000e-01>
%38 = call <16 x double> @llvm.fmuladd.v16f64(<16 x double> %33, <16 x double> <double 2.990000e-01, double 2.990000e-01, double 2.990000e-01, double 2.990000e-01, double 2.990000e-01, double 2.990000e-01, double 2.990000e-01, double 2.990000e-01, double 2.990000e-01, double 2.990000e-01, double 2.990000e-01, double 2.990000e-01, double 2.990000e-01, double 2.990000e-01, double 2.990000e-01, double 2.990000e-01>, <16 x double> %37)
%39 = call <16 x double> @llvm.fmuladd.v16f64(<16 x double> %36, <16 x double> <double 1.140000e-01, double 1.140000e-01, double 1.140000e-01, double 1.140000e-01, double 1.140000e-01, double 1.140000e-01, double 1.140000e-01, double 1.140000e-01, double 1.140000e-01, double 1.140000e-01, double 1.140000e-01, double 1.140000e-01, double 1.140000e-01, double 1.140000e-01, double 1.140000e-01, double 1.140000e-01>, <16 x double> %38)
%40 = fcmp olt <16 x double> %39, zeroinitializer
%41 = select <16 x i1> %40, <16 x double> <double -5.000000e-01, double -5.000000e-01, double -5.000000e-01, double -5.000000e-01, double -5.000000e-01, double -5.000000e-01, double -5.000000e-01, double -5.000000e-01, double -5.000000e-01, double -5.000000e-01, double -5.000000e-01, double -5.000000e-01, double -5.000000e-01, double -5.000000e-01, double -5.000000e-01, double -5.000000e-01>, <16 x double> <double 5.000000e-01, double 5.000000e-01, double 5.000000e-01, double 5.000000e-01, double 5.000000e-01, double 5.000000e-01, double 5.000000e-01, double 5.000000e-01, double 5.000000e-01, double 5.000000e-01, double 5.000000e-01, double 5.000000e-01, double 5.000000e-01, double 5.000000e-01, double 5.000000e-01, double 5.000000e-01>
%42 = fadd <16 x double> %39, %41
%43 = fptosi <16 x double> %42 to <16 x i32>
%44 = sitofp <16 x i32> %43 to <16 x double>
%45 = fsub <16 x double> %36, %44
%46 = fdiv <16 x double> %45, <double 1.772000e+00, double 1.772000e+00, double 1.772000e+00, double 1.772000e+00, double 1.772000e+00, double 1.772000e+00, double 1.772000e+00, double 1.772000e+00, double 1.772000e+00, double 1.772000e+00, double 1.772000e+00, double 1.772000e+00, double 1.772000e+00, double 1.772000e+00, double 1.772000e+00, double 1.772000e+00>
%47 = fadd <16 x double> %46, <double 1.275000e+02, double 1.275000e+02, double 1.275000e+02, double 1.275000e+02, double 1.275000e+02, double 1.275000e+02, double 1.275000e+02, double 1.275000e+02, double 1.275000e+02, double 1.275000e+02, double 1.275000e+02, double 1.275000e+02, double 1.275000e+02, double 1.275000e+02, double 1.275000e+02, double 1.275000e+02>
%48 = fcmp olt <16 x double> %47, zeroinitializer
%49 = select <16 x i1> %48, <16 x double> <double -5.000000e-01, double -5.000000e-01, double -5.000000e-01, double -5.000000e-01, double -5.000000e-01, double -5.000000e-01, double -5.000000e-01, double -5.000000e-01, double -5.000000e-01, double -5.000000e-01, double -5.000000e-01, double -5.000000e-01, double -5.000000e-01, double -5.000000e-01, double -5.000000e-01, double -5.000000e-01>, <16 x double> <double 5.000000e-01, double 5.000000e-01, double 5.000000e-01, double 5.000000e-01, double 5.000000e-01, double 5.000000e-01, double 5.000000e-01, double 5.000000e-01, double 5.000000e-01, double 5.000000e-01, double 5.000000e-01, double 5.000000e-01, double 5.000000e-01, double 5.000000e-01, double 5.000000e-01, double 5.000000e-01>
%50 = fadd <16 x double> %47, %49
%51 = fptosi <16 x double> %50 to <16 x i32>
%52 = sitofp <16 x i32> %51 to <16 x double>
%53 = fsub <16 x double> %33, %44
%54 = fdiv <16 x double> %53, <double 1.402000e+00, double 1.402000e+00, double 1.402000e+00, double 1.402000e+00, double 1.402000e+00, double 1.402000e+00, double 1.402000e+00, double 1.402000e+00, double 1.402000e+00, double 1.402000e+00, double 1.402000e+00, double 1.402000e+00, double 1.402000e+00, double 1.402000e+00, double 1.402000e+00, double 1.402000e+00>
%55 = fadd <16 x double> %54, <double 1.275000e+02, double 1.275000e+02, double 1.275000e+02, double 1.275000e+02, double 1.275000e+02, double 1.275000e+02, double 1.275000e+02, double 1.275000e+02, double 1.275000e+02, double 1.275000e+02, double 1.275000e+02, double 1.275000e+02, double 1.275000e+02, double 1.275000e+02, double 1.275000e+02, double 1.275000e+02>
%56 = fcmp olt <16 x double> %55, zeroinitializer
%57 = select <16 x i1> %56, <16 x double> <double -5.000000e-01, double -5.000000e-01, double -5.000000e-01, double -5.000000e-01, double -5.000000e-01, double -5.000000e-01, double -5.000000e-01, double -5.000000e-01, double -5.000000e-01, double -5.000000e-01, double -5.000000e-01, double -5.000000e-01, double -5.000000e-01, double -5.000000e-01, double -5.000000e-01, double -5.000000e-01>, <16 x double> <double 5.000000e-01, double 5.000000e-01, double 5.000000e-01, double 5.000000e-01, double 5.000000e-01, double 5.000000e-01, double 5.000000e-01, double 5.000000e-01, double 5.000000e-01, double 5.000000e-01, double 5.000000e-01, double 5.000000e-01, double 5.000000e-01, double 5.000000e-01, double 5.000000e-01, double 5.000000e-01>
%58 = fadd <16 x double> %55, %57
%59 = fptosi <16 x double> %58 to <16 x i32>
%60 = sitofp <16 x i32> %59 to <16 x double>
%61 = icmp slt <16 x i32> %43, zeroinitializer
%62 = fcmp ogt <16 x double> %44, <double 2.550000e+02, double 2.550000e+02, double 2.550000e+02, double 2.550000e+02, double 2.550000e+02, double 2.550000e+02, double 2.550000e+02, double 2.550000e+02, double 2.550000e+02, double 2.550000e+02, double 2.550000e+02, double 2.550000e+02, double 2.550000e+02, double 2.550000e+02, double 2.550000e+02, double 2.550000e+02>
%63 = select <16 x i1> %62, <16 x double> <double 2.550000e+02, double 2.550000e+02, double 2.550000e+02, double 2.550000e+02, double 2.550000e+02, double 2.550000e+02, double 2.550000e+02, double 2.550000e+02, double 2.550000e+02, double 2.550000e+02, double 2.550000e+02, double 2.550000e+02, double 2.550000e+02, double 2.550000e+02, double 2.550000e+02, double 2.550000e+02>, <16 x double> %44
%64 = fptoui <16 x double> %63 to <16 x i8>
%65 = select <16 x i1> %61, <16 x i8> zeroinitializer, <16 x i8> %64
%66 = icmp slt <16 x i32> %51, zeroinitializer
%67 = fcmp ogt <16 x double> %52, <double 2.550000e+02, double 2.550000e+02, double 2.550000e+02, double 2.550000e+02, double 2.550000e+02, double 2.550000e+02, double 2.550000e+02, double 2.550000e+02, double 2.550000e+02, double 2.550000e+02, double 2.550000e+02, double 2.550000e+02, double 2.550000e+02, double 2.550000e+02, double 2.550000e+02, double 2.550000e+02>
%68 = select <16 x i1> %67, <16 x double> <double 2.550000e+02, double 2.550000e+02, double 2.550000e+02, double 2.550000e+02, double 2.550000e+02, double 2.550000e+02, double 2.550000e+02, double 2.550000e+02, double 2.550000e+02, double 2.550000e+02, double 2.550000e+02, double 2.550000e+02, double 2.550000e+02, double 2.550000e+02, double 2.550000e+02, double 2.550000e+02>, <16 x double> %52
%69 = fptoui <16 x double> %68 to <16 x i8>
%70 = select <16 x i1> %66, <16 x i8> zeroinitializer, <16 x i8> %69
%71 = icmp slt <16 x i32> %59, zeroinitializer
%72 = fcmp ogt <16 x double> %60, <double 2.550000e+02, double 2.550000e+02, double 2.550000e+02, double 2.550000e+02, double 2.550000e+02, double 2.550000e+02, double 2.550000e+02, double 2.550000e+02, double 2.550000e+02, double 2.550000e+02, double 2.550000e+02, double 2.550000e+02, double 2.550000e+02, double 2.550000e+02, double 2.550000e+02, double 2.550000e+02>
%73 = select <16 x i1> %72, <16 x double> <double 2.550000e+02, double 2.550000e+02, double 2.550000e+02, double 2.550000e+02, double 2.550000e+02, double 2.550000e+02, double 2.550000e+02, double 2.550000e+02, double 2.550000e+02, double 2.550000e+02, double 2.550000e+02, double 2.550000e+02, double 2.550000e+02, double 2.550000e+02, double 2.550000e+02, double 2.550000e+02>, <16 x double> %60
%74 = fptoui <16 x double> %73 to <16 x i8>
%75 = select <16 x i1> %71, <16 x i8> zeroinitializer, <16 x i8> %74
%76 = getelementptr inbounds i8, i8* %35, i64 -2
%77 = bitcast i8* %76 to <48 x i8>*
%78 = shufflevector <16 x i8> %65, <16 x i8> %70, <32 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 16, i32 17, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23, i32 24, i32 25, i32 26, i32 27, i32 28, i32 29, i32 30, i32 31>
%79 = shufflevector <16 x i8> %75, <16 x i8> poison, <32 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef>
%80 = shufflevector <32 x i8> %78, <32 x i8> %79, <48 x i32> <i32 0, i32 16, i32 32, i32 1, i32 17, i32 33, i32 2, i32 18, i32 34, i32 3, i32 19, i32 35, i32 4, i32 20, i32 36, i32 5, i32 21, i32 37, i32 6, i32 22, i32 38, i32 7, i32 23, i32 39, i32 8, i32 24, i32 40, i32 9, i32 25, i32 41, i32 10, i32 26, i32 42, i32 11, i32 27, i32 43, i32 12, i32 28, i32 44, i32 13, i32 29, i32 45, i32 14, i32 30, i32 46, i32 15, i32 31, i32 47>
store <48 x i8> %80, <48 x i8>* %77
%81 = add nuw i64 %25, 16
%82 = icmp eq i64 %81, %23
br i1 %82, label %83, label %24
83: ; preds = %24
%84 = icmp eq i64 %18, %23
br i1 %84, label %221, label %85
85: ; preds = %83
%86 = mul i64 %23, 3
%87 = getelementptr i8, i8* %0, i64 %86
%88 = and i64 %18, 8
%89 = icmp eq i64 %88, 0
br i1 %89, label %167, label %90
90: ; preds = %20, %85
%91 = phi i64 [ %23, %85 ], [ 0, %20 ]
%92 = add i64 %3, %4
%93 = add i64 %3, 3
%94 = call i64 @llvm.umax.i64(i64 %92, i64 %93)
%95 = add i64 %94, -3
%96 = sub i64 %95, %3
%97 = icmp ne i64 %96, 0
%98 = zext i1 %97 to i64
%99 = sub i64 %96, %98
%100 = udiv i64 %99, 3
%101 = add nuw nsw i64 %100, %98
%102 = add nuw i64 %101, 1
%103 = and i64 %102, -8
%104 = mul i64 %103, 3
%105 = getelementptr i8, i8* %0, i64 %104
br label %106
106: ; preds = %106, %90
%107 = phi i64 [ %91, %90 ], [ %163, %106 ]
%108 = mul i64 %107, 3
%109 = getelementptr i8, i8* %0, i64 %108
%110 = bitcast i8* %109 to <24 x i8>*
%111 = load <24 x i8>, <24 x i8>* %110
%112 = shufflevector <24 x i8> %111, <24 x i8> poison, <8 x i32> <i32 0, i32 3, i32 6, i32 9, i32 12, i32 15, i32 18, i32 21>
%113 = shufflevector <24 x i8> %111, <24 x i8> poison, <8 x i32> <i32 1, i32 4, i32 7, i32 10, i32 13, i32 16, i32 19, i32 22>
%114 = shufflevector <24 x i8> %111, <24 x i8> poison, <8 x i32> <i32 2, i32 5, i32 8, i32 11, i32 14, i32 17, i32 20, i32 23>
%115 = uitofp <8 x i8> %112 to <8 x double>
%116 = uitofp <8 x i8> %113 to <8 x double>
%117 = getelementptr inbounds i8, i8* %109, i64 2
%118 = uitofp <8 x i8> %114 to <8 x double>
%119 = fmul <8 x double> %116, <double 5.870000e-01, double 5.870000e-01, double 5.870000e-01, double 5.870000e-01, double 5.870000e-01, double 5.870000e-01, double 5.870000e-01, double 5.870000e-01>
%120 = call <8 x double> @llvm.fmuladd.v8f64(<8 x double> %115, <8 x double> <double 2.990000e-01, double 2.990000e-01, double 2.990000e-01, double 2.990000e-01, double 2.990000e-01, double 2.990000e-01, double 2.990000e-01, double 2.990000e-01>, <8 x double> %119)
%121 = call <8 x double> @llvm.fmuladd.v8f64(<8 x double> %118, <8 x double> <double 1.140000e-01, double 1.140000e-01, double 1.140000e-01, double 1.140000e-01, double 1.140000e-01, double 1.140000e-01, double 1.140000e-01, double 1.140000e-01>, <8 x double> %120)
%122 = fcmp olt <8 x double> %121, zeroinitializer
%123 = select <8 x i1> %122, <8 x double> <double -5.000000e-01, double -5.000000e-01, double -5.000000e-01, double -5.000000e-01, double -5.000000e-01, double -5.000000e-01, double -5.000000e-01, double -5.000000e-01>, <8 x double> <double 5.000000e-01, double 5.000000e-01, double 5.000000e-01, double 5.000000e-01, double 5.000000e-01, double 5.000000e-01, double 5.000000e-01, double 5.000000e-01>
%124 = fadd <8 x double> %121, %123
%125 = fptosi <8 x double> %124 to <8 x i32>
%126 = sitofp <8 x i32> %125 to <8 x double>
%127 = fsub <8 x double> %118, %126
%128 = fdiv <8 x double> %127, <double 1.772000e+00, double 1.772000e+00, double 1.772000e+00, double 1.772000e+00, double 1.772000e+00, double 1.772000e+00, double 1.772000e+00, double 1.772000e+00>
%129 = fadd <8 x double> %128, <double 1.275000e+02, double 1.275000e+02, double 1.275000e+02, double 1.275000e+02, double 1.275000e+02, double 1.275000e+02, double 1.275000e+02, double 1.275000e+02>
%130 = fcmp olt <8 x double> %129, zeroinitializer
%131 = select <8 x i1> %130, <8 x double> <double -5.000000e-01, double -5.000000e-01, double -5.000000e-01, double -5.000000e-01, double -5.000000e-01, double -5.000000e-01, double -5.000000e-01, double -5.000000e-01>, <8 x double> <double 5.000000e-01, double 5.000000e-01, double 5.000000e-01, double 5.000000e-01, double 5.000000e-01, double 5.000000e-01, double 5.000000e-01, double 5.000000e-01>
%132 = fadd <8 x double> %129, %131
%133 = fptosi <8 x double> %132 to <8 x i32>
%134 = sitofp <8 x i32> %133 to <8 x double>
%135 = fsub <8 x double> %115, %126
%136 = fdiv <8 x double> %135, <double 1.402000e+00, double 1.402000e+00, double 1.402000e+00, double 1.402000e+00, double 1.402000e+00, double 1.402000e+00, double 1.402000e+00, double 1.402000e+00>
%137 = fadd <8 x double> %136, <double 1.275000e+02, double 1.275000e+02, double 1.275000e+02, double 1.275000e+02, double 1.275000e+02, double 1.275000e+02, double 1.275000e+02, double 1.275000e+02>
%138 = fcmp olt <8 x double> %137, zeroinitializer
%139 = select <8 x i1> %138, <8 x double> <double -5.000000e-01, double -5.000000e-01, double -5.000000e-01, double -5.000000e-01, double -5.000000e-01, double -5.000000e-01, double -5.000000e-01, double -5.000000e-01>, <8 x double> <double 5.000000e-01, double 5.000000e-01, double 5.000000e-01, double 5.000000e-01, double 5.000000e-01, double 5.000000e-01, double 5.000000e-01, double 5.000000e-01>
%140 = fadd <8 x double> %137, %139
%141 = fptosi <8 x double> %140 to <8 x i32>
%142 = sitofp <8 x i32> %141 to <8 x double>
%143 = icmp slt <8 x i32> %125, zeroinitializer
%144 = fcmp ogt <8 x double> %126, <double 2.550000e+02, double 2.550000e+02, double 2.550000e+02, double 2.550000e+02, double 2.550000e+02, double 2.550000e+02, double 2.550000e+02, double 2.550000e+02>
%145 = select <8 x i1> %144, <8 x double> <double 2.550000e+02, double 2.550000e+02, double 2.550000e+02, double 2.550000e+02, double 2.550000e+02, double 2.550000e+02, double 2.550000e+02, double 2.550000e+02>, <8 x double> %126
%146 = fptoui <8 x double> %145 to <8 x i8>
%147 = select <8 x i1> %143, <8 x i8> zeroinitializer, <8 x i8> %146
%148 = icmp slt <8 x i32> %133, zeroinitializer
%149 = fcmp ogt <8 x double> %134, <double 2.550000e+02, double 2.550000e+02, double 2.550000e+02, double 2.550000e+02, double 2.550000e+02, double 2.550000e+02, double 2.550000e+02, double 2.550000e+02>
%150 = select <8 x i1> %149, <8 x double> <double 2.550000e+02, double 2.550000e+02, double 2.550000e+02, double 2.550000e+02, double 2.550000e+02, double 2.550000e+02, double 2.550000e+02, double 2.550000e+02>, <8 x double> %134
%151 = fptoui <8 x double> %150 to <8 x i8>
%152 = select <8 x i1> %148, <8 x i8> zeroinitializer, <8 x i8> %151
%153 = icmp slt <8 x i32> %141, zeroinitializer
%154 = fcmp ogt <8 x double> %142, <double 2.550000e+02, double 2.550000e+02, double 2.550000e+02, double 2.550000e+02, double 2.550000e+02, double 2.550000e+02, double 2.550000e+02, double 2.550000e+02>
%155 = select <8 x i1> %154, <8 x double> <double 2.550000e+02, double 2.550000e+02, double 2.550000e+02, double 2.550000e+02, double 2.550000e+02, double 2.550000e+02, double 2.550000e+02, double 2.550000e+02>, <8 x double> %142
%156 = fptoui <8 x double> %155 to <8 x i8>
%157 = select <8 x i1> %153, <8 x i8> zeroinitializer, <8 x i8> %156
%158 = getelementptr inbounds i8, i8* %117, i64 -2
%159 = bitcast i8* %158 to <24 x i8>*
%160 = shufflevector <8 x i8> %147, <8 x i8> %152, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>
%161 = shufflevector <8 x i8> %157, <8 x i8> poison, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef>
%162 = shufflevector <16 x i8> %160, <16 x i8> %161, <24 x i32> <i32 0, i32 8, i32 16, i32 1, i32 9, i32 17, i32 2, i32 10, i32 18, i32 3, i32 11, i32 19, i32 4, i32 12, i32 20, i32 5, i32 13, i32 21, i32 6, i32 14, i32 22, i32 7, i32 15, i32 23>
store <24 x i8> %162, <24 x i8>* %159
%163 = add nuw i64 %107, 8
%164 = icmp eq i64 %163, %103
br i1 %164, label %165, label %106
165: ; preds = %106
%166 = icmp eq i64 %102, %103
br i1 %166, label %221, label %167
167: ; preds = %7, %85, %165
%168 = phi i8* [ %0, %7 ], [ %87, %85 ], [ %105, %165 ]
br label %169
169: ; preds = %167, %169
%170 = phi i8* [ %219, %169 ], [ %168, %167 ]
%171 = load i8, i8* %170
%172 = getelementptr inbounds i8, i8* %170, i64 1
%173 = load i8, i8* %172
%174 = uitofp i8 %173 to double
%175 = getelementptr inbounds i8, i8* %170, i64 2
%176 = load i8, i8* %175
%177 = insertelement <2 x i8> poison, i8 %171, i64 0
%178 = insertelement <2 x i8> %177, i8 %176, i64 1
%179 = uitofp <2 x i8> %178 to <2 x double>
%180 = fmul double %174, 5.870000e-01
%181 = extractelement <2 x double> %179, i64 0
%182 = tail call double @llvm.fmuladd.f64(double %181, double 2.990000e-01, double %180)
%183 = extractelement <2 x double> %179, i64 1
%184 = tail call double @llvm.fmuladd.f64(double %183, double 1.140000e-01, double %182)
%185 = fcmp olt double %184, 0.000000e+00
%186 = select i1 %185, double -5.000000e-01, double 5.000000e-01
%187 = fadd double %184, %186
%188 = fptosi double %187 to i32
%189 = sitofp i32 %188 to double
%190 = insertelement <2 x double> poison, double %189, i64 0
%191 = shufflevector <2 x double> %190, <2 x double> poison, <2 x i32> zeroinitializer
%192 = fsub <2 x double> %179, %191
%193 = fdiv <2 x double> %192, <double 1.402000e+00, double 1.772000e+00>
%194 = fadd <2 x double> %193, <double 1.275000e+02, double 1.275000e+02>
%195 = fcmp olt <2 x double> %194, zeroinitializer
%196 = select <2 x i1> %195, <2 x double> <double -5.000000e-01, double -5.000000e-01>, <2 x double> <double 5.000000e-01, double 5.000000e-01>
%197 = fadd <2 x double> %194, %196
%198 = fptosi <2 x double> %197 to <2 x i32>
%199 = sitofp <2 x i32> %198 to <2 x double>
%200 = icmp slt i32 %188, 0
%201 = fcmp ogt double %189, 2.550000e+02
%202 = select i1 %201, double 2.550000e+02, double %189
%203 = fptoui double %202 to i8
%204 = select i1 %200, i8 0, i8 %203
store i8 %204, i8* %170
%205 = fcmp ogt <2 x double> %199, <double 2.550000e+02, double 2.550000e+02>
%206 = extractelement <2 x i1> %205, i64 1
%207 = extractelement <2 x double> %199, i64 1
%208 = fptoui double %207 to i8
%209 = select i1 %206, i8 -1, i8 %208
%210 = icmp slt <2 x i32> %198, zeroinitializer
%211 = extractelement <2 x i1> %210, i64 1
%212 = select i1 %211, i8 0, i8 %209
store i8 %212, i8* %172
%213 = extractelement <2 x i1> %205, i64 0
%214 = extractelement <2 x double> %199, i64 0
%215 = fptoui double %214 to i8
%216 = select i1 %213, i8 -1, i8 %215
%217 = extractelement <2 x i1> %210, i64 0
%218 = select i1 %217, i8 0, i8 %216
store i8 %218, i8* %175
%219 = getelementptr inbounds i8, i8* %170, i64 3
%220 = icmp ult i8* %219, %5
br i1 %220, label %169, label %221
221: ; preds = %169, %83, %165, %2
ret void
}