void rgb2yuy2(char *RGB, char *YUV, int NumPixels) {
  int i, j;
  register int y0, y1, u0, u1, v0, v1;
  register int r, g, b;
  for (i = 0, j = 0; i < (NumPixels + (NumPixels << 1)); i += 6, j += 4) {
    r = (unsigned char)RGB[i + 0];
    g = (unsigned char)RGB[i + 1];
    b = (unsigned char)RGB[i + 2];
    y0 = (9798 * r + 19235 * g + 3736 * b) >> 15;
    u0 = ((-4784 * r - 9437 * g + 14221 * b) >> 15) + 128;
    v0 = ((20218 * r - 16941 * g - 3277 * b) >> 15) + 128;
    y0 = y0 < 0 ? 0 : y0;
    u0 = u0 < 0 ? 0 : u0;
    v0 = v0 < 0 ? 0 : v0;
    y0 = y0 > 255 ? 255 : y0;
    u0 = u0 > 255 ? 255 : u0;
    v0 = v0 > 255 ? 255 : v0;
    r = (unsigned char)RGB[i + 3];
    g = (unsigned char)RGB[i + 4];
    b = (unsigned char)RGB[i + 5];
    y1 = (9798 * r + 19235 * g + 3736 * b) >> 15;
    u1 = ((-4784 * r - 9437 * g + 14221 * b) >> 15) + 128;
    v1 = ((20218 * r - 16941 * g - 3277 * b) >> 15) + 128;
    y1 = y1 < 0 ? 0 : y1;
    u1 = u1 < 0 ? 0 : u1;
    v1 = v1 < 0 ? 0 : v1;
    y1 = y1 > 255 ? 255 : y1;
    u1 = u1 > 255 ? 255 : u1;
    v1 = v1 > 255 ? 255 : v1;
    YUV[j + 0] = y0;
    YUV[j + 1] = (u0 + u1) >> 1;
    YUV[j + 2] = y1;
    YUV[j + 3] = (v0 + v1) >> 1;
  }
}


x86 assembly (clang, -O0):
<rgb2yuy2>:
push   %rbp
mov    %rsp,%rbp
mov    %rdi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
mov    %edx,-0x14(%rbp)
movl   $0x0,-0x18(%rbp)
movl   $0x0,-0x1c(%rbp)
mov    -0x18(%rbp),%eax
mov    -0x14(%rbp),%ecx
mov    -0x14(%rbp),%edx
shl    $0x1,%edx
add    %edx,%ecx
cmp    %ecx,%eax
jge    1494 <rgb2yuy2+0x394>
mov    -0x8(%rbp),%rax
mov    -0x18(%rbp),%ecx
add    $0x0,%ecx
movslq %ecx,%rcx
movzbl (%rax,%rcx,1),%eax
mov    %eax,-0x38(%rbp)
mov    -0x8(%rbp),%rax
mov    -0x18(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movzbl (%rax,%rcx,1),%eax
mov    %eax,-0x3c(%rbp)
mov    -0x8(%rbp),%rax
mov    -0x18(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
movzbl (%rax,%rcx,1),%eax
mov    %eax,-0x40(%rbp)
imul   $0x2646,-0x38(%rbp),%eax
imul   $0x4b23,-0x3c(%rbp),%ecx
add    %ecx,%eax
imul   $0xe98,-0x40(%rbp),%ecx
add    %ecx,%eax
sar    $0xf,%eax
mov    %eax,-0x20(%rbp)
imul   $0xffffed50,-0x38(%rbp),%eax
imul   $0x24dd,-0x3c(%rbp),%ecx
sub    %ecx,%eax
imul   $0x378d,-0x40(%rbp),%ecx
add    %ecx,%eax
sar    $0xf,%eax
add    $0x80,%eax
mov    %eax,-0x28(%rbp)
imul   $0x4efa,-0x38(%rbp),%eax
imul   $0x422d,-0x3c(%rbp),%ecx
sub    %ecx,%eax
imul   $0xccd,-0x40(%rbp),%ecx
sub    %ecx,%eax
sar    $0xf,%eax
add    $0x80,%eax
mov    %eax,-0x30(%rbp)
cmpl   $0x0,-0x20(%rbp)
jge    11ea <rgb2yuy2+0xea>
xor    %eax,%eax
mov    %eax,-0x44(%rbp)
jmp    11f0 <rgb2yuy2+0xf0>
mov    -0x20(%rbp),%eax
mov    %eax,-0x44(%rbp)
mov    -0x44(%rbp),%eax
mov    %eax,-0x20(%rbp)
cmpl   $0x0,-0x28(%rbp)
jge    120a <rgb2yuy2+0x10a>
xor    %eax,%eax
mov    %eax,-0x48(%rbp)
jmp    1210 <rgb2yuy2+0x110>
mov    -0x28(%rbp),%eax
mov    %eax,-0x48(%rbp)
mov    -0x48(%rbp),%eax
mov    %eax,-0x28(%rbp)
cmpl   $0x0,-0x30(%rbp)
jge    122a <rgb2yuy2+0x12a>
xor    %eax,%eax
mov    %eax,-0x4c(%rbp)
jmp    1230 <rgb2yuy2+0x130>
mov    -0x30(%rbp),%eax
mov    %eax,-0x4c(%rbp)
mov    -0x4c(%rbp),%eax
mov    %eax,-0x30(%rbp)
cmpl   $0xff,-0x20(%rbp)
jle    1250 <rgb2yuy2+0x150>
mov    $0xff,%eax
mov    %eax,-0x50(%rbp)
jmp    1256 <rgb2yuy2+0x156>
mov    -0x20(%rbp),%eax
mov    %eax,-0x50(%rbp)
mov    -0x50(%rbp),%eax
mov    %eax,-0x20(%rbp)
cmpl   $0xff,-0x28(%rbp)
jle    1276 <rgb2yuy2+0x176>
mov    $0xff,%eax
mov    %eax,-0x54(%rbp)
jmp    127c <rgb2yuy2+0x17c>
mov    -0x28(%rbp),%eax
mov    %eax,-0x54(%rbp)
mov    -0x54(%rbp),%eax
mov    %eax,-0x28(%rbp)
cmpl   $0xff,-0x30(%rbp)
jle    129c <rgb2yuy2+0x19c>
mov    $0xff,%eax
mov    %eax,-0x58(%rbp)
jmp    12a2 <rgb2yuy2+0x1a2>
mov    -0x30(%rbp),%eax
mov    %eax,-0x58(%rbp)
mov    -0x58(%rbp),%eax
mov    %eax,-0x30(%rbp)
mov    -0x8(%rbp),%rax
mov    -0x18(%rbp),%ecx
add    $0x3,%ecx
movslq %ecx,%rcx
movzbl (%rax,%rcx,1),%eax
mov    %eax,-0x38(%rbp)
mov    -0x8(%rbp),%rax
mov    -0x18(%rbp),%ecx
add    $0x4,%ecx
movslq %ecx,%rcx
movzbl (%rax,%rcx,1),%eax
mov    %eax,-0x3c(%rbp)
mov    -0x8(%rbp),%rax
mov    -0x18(%rbp),%ecx
add    $0x5,%ecx
movslq %ecx,%rcx
movzbl (%rax,%rcx,1),%eax
mov    %eax,-0x40(%rbp)
imul   $0x2646,-0x38(%rbp),%eax
imul   $0x4b23,-0x3c(%rbp),%ecx
add    %ecx,%eax
imul   $0xe98,-0x40(%rbp),%ecx
add    %ecx,%eax
sar    $0xf,%eax
mov    %eax,-0x24(%rbp)
imul   $0xffffed50,-0x38(%rbp),%eax
imul   $0x24dd,-0x3c(%rbp),%ecx
sub    %ecx,%eax
imul   $0x378d,-0x40(%rbp),%ecx
add    %ecx,%eax
sar    $0xf,%eax
add    $0x80,%eax
mov    %eax,-0x2c(%rbp)
imul   $0x4efa,-0x38(%rbp),%eax
imul   $0x422d,-0x3c(%rbp),%ecx
sub    %ecx,%eax
imul   $0xccd,-0x40(%rbp),%ecx
sub    %ecx,%eax
sar    $0xf,%eax
add    $0x80,%eax
mov    %eax,-0x34(%rbp)
cmpl   $0x0,-0x24(%rbp)
jge    135f <rgb2yuy2+0x25f>
xor    %eax,%eax
mov    %eax,-0x5c(%rbp)
jmp    1365 <rgb2yuy2+0x265>
mov    -0x24(%rbp),%eax
mov    %eax,-0x5c(%rbp)
mov    -0x5c(%rbp),%eax
mov    %eax,-0x24(%rbp)
cmpl   $0x0,-0x2c(%rbp)
jge    137f <rgb2yuy2+0x27f>
xor    %eax,%eax
mov    %eax,-0x60(%rbp)
jmp    1385 <rgb2yuy2+0x285>
mov    -0x2c(%rbp),%eax
mov    %eax,-0x60(%rbp)
mov    -0x60(%rbp),%eax
mov    %eax,-0x2c(%rbp)
cmpl   $0x0,-0x34(%rbp)
jge    139f <rgb2yuy2+0x29f>
xor    %eax,%eax
mov    %eax,-0x64(%rbp)
jmp    13a5 <rgb2yuy2+0x2a5>
mov    -0x34(%rbp),%eax
mov    %eax,-0x64(%rbp)
mov    -0x64(%rbp),%eax
mov    %eax,-0x34(%rbp)
cmpl   $0xff,-0x24(%rbp)
jle    13c5 <rgb2yuy2+0x2c5>
mov    $0xff,%eax
mov    %eax,-0x68(%rbp)
jmp    13cb <rgb2yuy2+0x2cb>
mov    -0x24(%rbp),%eax
mov    %eax,-0x68(%rbp)
mov    -0x68(%rbp),%eax
mov    %eax,-0x24(%rbp)
cmpl   $0xff,-0x2c(%rbp)
jle    13eb <rgb2yuy2+0x2eb>
mov    $0xff,%eax
mov    %eax,-0x6c(%rbp)
jmp    13f1 <rgb2yuy2+0x2f1>
mov    -0x2c(%rbp),%eax
mov    %eax,-0x6c(%rbp)
mov    -0x6c(%rbp),%eax
mov    %eax,-0x2c(%rbp)
cmpl   $0xff,-0x34(%rbp)
jle    1411 <rgb2yuy2+0x311>
mov    $0xff,%eax
mov    %eax,-0x70(%rbp)
jmp    1417 <rgb2yuy2+0x317>
mov    -0x34(%rbp),%eax
mov    %eax,-0x70(%rbp)
mov    -0x70(%rbp),%eax
mov    %eax,-0x34(%rbp)
mov    -0x20(%rbp),%eax
mov    %al,%dl
mov    -0x10(%rbp),%rax
mov    -0x1c(%rbp),%ecx
add    $0x0,%ecx
movslq %ecx,%rcx
mov    %dl,(%rax,%rcx,1)
mov    -0x28(%rbp),%eax
add    -0x2c(%rbp),%eax
sar    $0x1,%eax
mov    %al,%dl
mov    -0x10(%rbp),%rax
mov    -0x1c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
mov    %dl,(%rax,%rcx,1)
mov    -0x24(%rbp),%eax
mov    %al,%dl
mov    -0x10(%rbp),%rax
mov    -0x1c(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
mov    %dl,(%rax,%rcx,1)
mov    -0x30(%rbp),%eax
add    -0x34(%rbp),%eax
sar    $0x1,%eax
mov    %al,%dl
mov    -0x10(%rbp),%rax
mov    -0x1c(%rbp),%ecx
add    $0x3,%ecx
movslq %ecx,%rcx
mov    %dl,(%rax,%rcx,1)
mov    -0x18(%rbp),%eax
add    $0x6,%eax
mov    %eax,-0x18(%rbp)
mov    -0x1c(%rbp),%eax
add    $0x4,%eax
mov    %eax,-0x1c(%rbp)
jmp    111d <rgb2yuy2+0x1d>
pop    %rbp
ret

x86 assembly (clang, -O2):
<rgb2yuy2>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x78,%rsp
lea    (%rdx,%rdx,2),%eax
test   %eax,%eax
jle    20fb <rgb2yuy2+0xffb>
mov    %eax,%r11d
lea    -0x1(%r11),%rcx
movabs $0xaaaaaaaaaaaaaaab,%rbp
aa aa aa
mov    %rcx,%rax
mul    %rbp
cmp    $0x12,%rcx
jb     1169 <rgb2yuy2+0x69>
mov    %rdx,%r15
mov    %rcx,%rax
mul    %rbp
shr    $0x2,%rdx
lea    (%rdx,%rdx,2),%rax
lea    (%rdi,%rax,2),%rax
add    $0x6,%rax
cmp    %rsi,%rax
jbe    12a1 <rgb2yuy2+0x1a1>
lea    (%rsi,%rdx,4),%rax
add    $0x4,%rax
cmp    %rdi,%rax
jbe    12a1 <rgb2yuy2+0x1a1>
xor    %r8d,%r8d
xor    %r9d,%r9d
lea    (%r8,%rsi,1),%r15
add    $0x3,%r15
mov    $0xffffff80,%r8d
jmp    11b4 <rgb2yuy2+0xb4>
nop
mov    %r10b,-0x3(%r15)
add    %r14d,%eax
add    $0x100,%eax
shr    %eax
mov    %al,-0x2(%r15)
mov    %dl,-0x1(%r15)
lea    (%rsi,%rbp,1),%eax
add    $0x100,%eax
shr    %eax
mov    %al,(%r15)
add    $0x6,%r9
add    $0x4,%r15
cmp    %r11,%r9
jae    20fb <rgb2yuy2+0xffb>
movzbl (%rdi,%r9,1),%eax
movzbl 0x1(%rdi,%r9,1),%edx
movzbl 0x2(%rdi,%r9,1),%esi
imul   $0x2646,%eax,%ebp
imul   $0x4b23,%edx,%ebx
add    %ebp,%ebx
imul   $0xe98,%esi,%r10d
add    %ebx,%r10d
imul   $0xffffed50,%eax,%ebx
imul   $0xffffdb23,%edx,%ebp
add    %ebx,%ebp
imul   $0x378d,%esi,%r14d
add    %ebp,%r14d
imul   $0x4efa,%eax,%eax
imul   $0xffffbdd3,%edx,%edx
add    %eax,%edx
imul   $0xfffff333,%esi,%ebp
add    %edx,%ebp
sar    $0xf,%ebp
cmp    $0xffffff81,%ebp
cmovl  %r8d,%ebp
cmp    $0x7f,%ebp
jl     121f <rgb2yuy2+0x11f>
mov    $0x7f,%ebp
shr    $0xf,%r10d
shr    $0xf,%r14d
movzbl 0x3(%rdi,%r9,1),%esi
movzbl 0x4(%rdi,%r9,1),%ebx
movzbl 0x5(%rdi,%r9,1),%r12d
imul   $0x2646,%esi,%edx
imul   $0x4b23,%ebx,%eax
add    %edx,%eax
imul   $0xe98,%r12d,%edx
add    %eax,%edx
shr    $0xf,%edx
imul   $0xffffed50,%esi,%eax
imul   $0xffffdb23,%ebx,%ecx
add    %eax,%ecx
imul   $0x378d,%r12d,%eax
add    %ecx,%eax
shr    $0xf,%eax
imul   $0x4efa,%esi,%ecx
imul   $0xffffbdd3,%ebx,%ebx
add    %ecx,%ebx
imul   $0xfffff333,%r12d,%esi
add    %ebx,%esi
sar    $0xf,%esi
cmp    $0xffffff81,%esi
cmovl  %r8d,%esi
cmp    $0x7f,%esi
jl     1180 <rgb2yuy2+0x80>
mov    $0x7f,%esi
jmp    1180 <rgb2yuy2+0x80>
movabs $0x7ffffffffffffff0,%r10
ff ff 7f
cmp    $0x5a,%rcx
jae    12b9 <rgb2yuy2+0x1b9>
xor    %r15d,%r15d
jmp    1dbc <rgb2yuy2+0xcbc>
mov    %rcx,-0x80(%rsp)
shr    $0x2,%r15
add    $0x1,%r15
mov    %r15,-0x78(%rsp)
and    %r10,%r15
lea    0x5f(%rdi),%rax
xor    %r12d,%r12d
cs nopw 0x0(%rax,%rax,1)
nop
movzbl -0x5f(%rax),%ecx
movzbl -0x53(%rax),%edx
movzbl -0x47(%rax),%r14d
movzbl -0x3b(%rax),%r13d
movzbl -0x2f(%rax),%ebx
movzbl -0x23(%rax),%ebp
movzbl -0x17(%rax),%r8d
movzbl -0xb(%rax),%r9d
movzbl -0x4d(%rax),%r10d
shl    $0x8,%r10d
or     %edx,%r10d
movzbl -0x59(%rax),%edx
shl    $0x8,%edx
or     %ecx,%edx
movd   %edx,%xmm3
pinsrw $0x1,%r10d,%xmm3
movzbl -0x5(%rax),%ecx
shl    $0x8,%ecx
or     %r9d,%ecx
movzbl -0x11(%rax),%edx
shl    $0x8,%edx
or     %r8d,%edx
movd   %edx,%xmm2
pinsrw $0x1,%ecx,%xmm2
movzbl -0x1d(%rax),%ecx
shl    $0x8,%ecx
or     %ebp,%ecx
movzbl -0x29(%rax),%edx
shl    $0x8,%edx
or     %ebx,%edx
movd   %edx,%xmm5
pinsrw $0x1,%ecx,%xmm5
pxor   %xmm0,%xmm0
punpcklbw %xmm0,%xmm2
punpcklbw %xmm0,%xmm5
pxor   %xmm13,%xmm13
movzbl -0x35(%rax),%ecx
shl    $0x8,%ecx
or     %r13d,%ecx
movzbl -0x41(%rax),%edx
shl    $0x8,%edx
or     %r14d,%edx
movd   %edx,%xmm6
pinsrw $0x1,%ecx,%xmm6
punpcklbw %xmm13,%xmm6
punpcklbw %xmm13,%xmm3
movzbl -0x5e(%rax),%ebx
movzbl -0x52(%rax),%ecx
movzbl -0x46(%rax),%r8d
movzbl -0x3a(%rax),%r9d
movzbl -0x2e(%rax),%r10d
movzbl -0x22(%rax),%r14d
movzbl -0x16(%rax),%r13d
movzbl -0xa(%rax),%ebp
movzbl -0x4c(%rax),%edx
shl    $0x8,%edx
or     %ecx,%edx
movzbl -0x58(%rax),%ecx
shl    $0x8,%ecx
or     %ebx,%ecx
movd   %ecx,%xmm8
pinsrw $0x1,%edx,%xmm8
movzbl -0x4(%rax),%ecx
shl    $0x8,%ecx
or     %ebp,%ecx
movzbl -0x10(%rax),%edx
shl    $0x8,%edx
or     %r13d,%edx
movd   %edx,%xmm9
pinsrw $0x1,%ecx,%xmm9
punpcklbw %xmm13,%xmm9
punpcklwd %xmm2,%xmm9
movzbl -0x1c(%rax),%ecx
shl    $0x8,%ecx
or     %r14d,%ecx
movzbl -0x28(%rax),%edx
shl    $0x8,%edx
or     %r10d,%edx
movd   %edx,%xmm10
pinsrw $0x1,%ecx,%xmm10
punpcklbw %xmm13,%xmm10
movzbl -0x34(%rax),%ecx
shl    $0x8,%ecx
or     %r9d,%ecx
movzbl -0x40(%rax),%edx
shl    $0x8,%edx
or     %r8d,%edx
movd   %edx,%xmm11
pinsrw $0x1,%ecx,%xmm11
punpcklwd %xmm5,%xmm10
punpcklbw %xmm13,%xmm11
punpcklwd %xmm6,%xmm11
punpcklbw %xmm13,%xmm8
punpcklwd %xmm3,%xmm8
movzbl -0x5d(%rax),%ebx
movzbl -0x51(%rax),%ecx
movzbl -0x45(%rax),%r8d
movzbl -0x39(%rax),%r9d
movzbl -0x2d(%rax),%r10d
movzbl -0x21(%rax),%r14d
movzbl -0x15(%rax),%r13d
movzbl -0x9(%rax),%ebp
movzbl -0x4b(%rax),%edx
shl    $0x8,%edx
or     %ecx,%edx
movzbl -0x57(%rax),%ecx
shl    $0x8,%ecx
or     %ebx,%ecx
movd   %ecx,%xmm3
pinsrw $0x1,%edx,%xmm3
movzbl -0x3(%rax),%ecx
shl    $0x8,%ecx
or     %ebp,%ecx
movzbl -0xf(%rax),%edx
shl    $0x8,%edx
or     %r13d,%edx
movd   %edx,%xmm14
pinsrw $0x1,%ecx,%xmm14
punpcklbw %xmm13,%xmm14
punpcklwd %xmm13,%xmm14
movzbl -0x1b(%rax),%ecx
shl    $0x8,%ecx
or     %r14d,%ecx
movzbl -0x27(%rax),%edx
shl    $0x8,%edx
or     %r10d,%edx
movd   %edx,%xmm6
pinsrw $0x1,%ecx,%xmm6
punpcklbw %xmm13,%xmm6
movzbl -0x33(%rax),%ecx
shl    $0x8,%ecx
or     %r9d,%ecx
movzbl -0x3f(%rax),%edx
shl    $0x8,%edx
or     %r8d,%edx
movd   %edx,%xmm7
pinsrw $0x1,%ecx,%xmm7
punpcklwd %xmm13,%xmm6
punpcklbw %xmm13,%xmm7
punpcklwd %xmm13,%xmm7
punpcklbw %xmm13,%xmm3
punpcklwd %xmm13,%xmm3
movdqa %xmm8,%xmm1
movdqa 0x1ada(%rip),%xmm0
pmaddwd %xmm0,%xmm1
movdqa %xmm11,%xmm4
pmaddwd %xmm0,%xmm4
movdqa %xmm10,%xmm2
pmaddwd %xmm0,%xmm2
movdqa %xmm9,%xmm12
pmaddwd %xmm0,%xmm12
movdqa %xmm3,%xmm5
movdqa 0x1abd(%rip),%xmm15
pmaddwd %xmm15,%xmm5
paddd  %xmm1,%xmm5
movdqa %xmm5,0x60(%rsp)
movdqa %xmm7,%xmm0
pmaddwd %xmm15,%xmm0
paddd  %xmm4,%xmm0
movdqa %xmm0,0x50(%rsp)
movdqa %xmm6,%xmm0
pmaddwd %xmm15,%xmm0
paddd  %xmm2,%xmm0
movdqa %xmm0,0x40(%rsp)
movdqa %xmm14,%xmm0
pmaddwd %xmm15,%xmm0
paddd  %xmm12,%xmm0
movdqa %xmm0,0x30(%rsp)
movdqa %xmm9,%xmm0
movdqa 0x1a76(%rip),%xmm4
pmaddwd %xmm4,%xmm0
movdqa %xmm10,%xmm1
pmaddwd %xmm4,%xmm1
movdqa %xmm11,%xmm2
pmaddwd %xmm4,%xmm2
movdqa %xmm4,%xmm12
movdqa %xmm14,%xmm5
movdqa 0x1a5e(%rip),%xmm4
pmaddwd %xmm4,%xmm5
paddd  %xmm0,%xmm5
movdqa %xmm5,(%rsp)
movdqa %xmm6,%xmm0
pmaddwd %xmm4,%xmm0
paddd  %xmm1,%xmm0
movdqa %xmm0,-0x30(%rsp)
movdqa %xmm7,%xmm0
pmaddwd %xmm4,%xmm0
paddd  %xmm2,%xmm0
movdqa %xmm0,-0x20(%rsp)
movdqa %xmm8,%xmm0
pmaddwd %xmm12,%xmm0
movdqa %xmm3,%xmm1
pmaddwd %xmm4,%xmm1
paddd  %xmm0,%xmm1
movdqa %xmm1,-0x10(%rsp)
movdqa 0x1a19(%rip),%xmm0
pmaddwd %xmm0,%xmm9
pmaddwd %xmm0,%xmm10
pmaddwd %xmm0,%xmm11
pmaddwd %xmm0,%xmm8
movdqa 0x1a0d(%rip),%xmm0
pmaddwd %xmm0,%xmm14
paddd  %xmm9,%xmm14
pmaddwd %xmm0,%xmm6
paddd  %xmm10,%xmm6
pmaddwd %xmm0,%xmm7
paddd  %xmm11,%xmm7
pmaddwd %xmm0,%xmm3
paddd  %xmm8,%xmm3
psrad  $0xf,%xmm14
psrad  $0xf,%xmm6
psrad  $0xf,%xmm7
psrad  $0xf,%xmm3
movdqa %xmm3,%xmm0
movdqa 0x19d7(%rip),%xmm5
pcmpgtd %xmm5,%xmm0
pand   %xmm0,%xmm3
pandn  %xmm5,%xmm0
por    %xmm3,%xmm0
movdqa %xmm7,%xmm1
pcmpgtd %xmm5,%xmm1
pand   %xmm1,%xmm7
pandn  %xmm5,%xmm1
por    %xmm7,%xmm1
movdqa %xmm6,%xmm2
pcmpgtd %xmm5,%xmm2
pand   %xmm2,%xmm6
pandn  %xmm5,%xmm2
por    %xmm6,%xmm2
movdqa %xmm14,%xmm4
pcmpgtd %xmm5,%xmm4
pand   %xmm4,%xmm14
pandn  %xmm5,%xmm4
por    %xmm14,%xmm4
movdqa 0x1990(%rip),%xmm3
movdqa %xmm3,%xmm5
pcmpgtd %xmm4,%xmm5
pand   %xmm5,%xmm4
pandn  %xmm3,%xmm5
por    %xmm4,%xmm5
movdqa %xmm5,-0x50(%rsp)
movdqa %xmm3,%xmm4
pcmpgtd %xmm2,%xmm4
pand   %xmm4,%xmm2
pandn  %xmm3,%xmm4
por    %xmm2,%xmm4
movdqa %xmm4,-0x40(%rsp)
movdqa %xmm3,%xmm2
pcmpgtd %xmm1,%xmm2
pand   %xmm2,%xmm1
pandn  %xmm3,%xmm2
por    %xmm1,%xmm2
movdqa %xmm2,0x10(%rsp)
movdqa %xmm3,%xmm1
pcmpgtd %xmm0,%xmm1
pand   %xmm1,%xmm0
pandn  %xmm3,%xmm1
por    %xmm0,%xmm1
movdqa %xmm1,0x20(%rsp)
movzbl -0x5c(%rax),%ecx
movzbl -0x50(%rax),%ebx
movzbl -0x44(%rax),%r13d
movzbl -0x38(%rax),%r14d
movzbl -0x2c(%rax),%r8d
movzbl -0x20(%rax),%r9d
movzbl -0x14(%rax),%edx
movzbl -0x8(%rax),%ebp
movzbl -0x4a(%rax),%r10d
shl    $0x8,%r10d
or     %ebx,%r10d
movzbl -0x56(%rax),%ebx
shl    $0x8,%ebx
or     %ecx,%ebx
movzbl -0x2(%rax),%ecx
shl    $0x8,%ecx
or     %ebp,%ecx
movzbl -0xe(%rax),%ebp
shl    $0x8,%ebp
or     %edx,%ebp
movd   %ebp,%xmm2
pinsrw $0x1,%ecx,%xmm2
punpcklbw %xmm13,%xmm2
movzbl -0x1a(%rax),%ecx
shl    $0x8,%ecx
or     %r9d,%ecx
movzbl -0x26(%rax),%edx
shl    $0x8,%edx
or     %r8d,%edx
movd   %edx,%xmm1
pinsrw $0x1,%ecx,%xmm1
punpcklbw %xmm13,%xmm1
movzbl -0x32(%rax),%ecx
shl    $0x8,%ecx
or     %r14d,%ecx
movzbl -0x3e(%rax),%edx
shl    $0x8,%edx
or     %r13d,%edx
movd   %edx,%xmm0
pinsrw $0x1,%ecx,%xmm0
punpcklbw %xmm13,%xmm0
movzbl -0x43(%rax),%r13d
movzbl -0x37(%rax),%r8d
movzbl -0x2b(%rax),%r9d
movzbl -0x1f(%rax),%r14d
movzbl -0x13(%rax),%ebp
movzbl -0x7(%rax),%edx
movzbl -0x1(%rax),%ecx
shl    $0x8,%ecx
or     %edx,%ecx
movzbl -0xd(%rax),%edx
shl    $0x8,%edx
or     %ebp,%edx
movd   %edx,%xmm12
pinsrw $0x1,%ecx,%xmm12
punpcklbw %xmm13,%xmm12
punpcklwd %xmm2,%xmm12
movzbl -0x19(%rax),%ecx
shl    $0x8,%ecx
or     %r14d,%ecx
movzbl -0x25(%rax),%edx
shl    $0x8,%edx
or     %r9d,%edx
movd   %edx,%xmm15
pinsrw $0x1,%ecx,%xmm15
punpcklbw %xmm13,%xmm15
punpcklwd %xmm1,%xmm15
movzbl -0x31(%rax),%ecx
shl    $0x8,%ecx
or     %r8d,%ecx
movzbl -0x3d(%rax),%edx
shl    $0x8,%edx
or     %r13d,%edx
movd   %edx,%xmm8
pinsrw $0x1,%ecx,%xmm8
punpcklbw %xmm13,%xmm8
punpcklwd %xmm0,%xmm8
movd   %ebx,%xmm0
pinsrw $0x1,%r10d,%xmm0
punpcklbw %xmm13,%xmm0
movzbl -0x5b(%rax),%ecx
movzbl -0x4f(%rax),%edx
movzbl -0x49(%rax),%ebp
shl    $0x8,%ebp
or     %edx,%ebp
movzbl -0x55(%rax),%edx
shl    $0x8,%edx
or     %ecx,%edx
movd   %edx,%xmm7
pinsrw $0x1,%ebp,%xmm7
punpcklbw %xmm13,%xmm7
punpcklwd %xmm0,%xmm7
movzbl -0x5a(%rax),%ecx
movzbl -0x4e(%rax),%edx
movzbl -0x48(%rax),%ebp
shl    $0x8,%ebp
or     %edx,%ebp
movzbl -0x54(%rax),%edx
shl    $0x8,%edx
or     %ecx,%edx
movd   %edx,%xmm5
pinsrw $0x1,%ebp,%xmm5
punpcklbw %xmm13,%xmm5
punpcklwd %xmm13,%xmm5
movdqa %xmm7,%xmm0
movdqa 0x1712(%rip),%xmm1
pmaddwd %xmm1,%xmm0
movdqa %xmm5,%xmm10
movdqa 0x1711(%rip),%xmm2
pmaddwd %xmm2,%xmm10
paddd  %xmm0,%xmm10
movzbl -0x42(%rax),%ecx
movzbl -0x36(%rax),%edx
movzbl -0x30(%rax),%ebp
shl    $0x8,%ebp
or     %edx,%ebp
movzbl -0x3c(%rax),%edx
shl    $0x8,%edx
or     %ecx,%edx
movd   %edx,%xmm14
pinsrw $0x1,%ebp,%xmm14
punpcklbw %xmm13,%xmm14
punpcklwd %xmm13,%xmm14
movdqa %xmm8,%xmm0
pmaddwd %xmm1,%xmm0
movdqa %xmm14,%xmm3
pmaddwd %xmm2,%xmm3
paddd  %xmm0,%xmm3
movdqa %xmm3,-0x60(%rsp)
movzbl -0x2a(%rax),%ecx
movzbl -0x1e(%rax),%edx
movzbl -0x18(%rax),%ebp
shl    $0x8,%ebp
or     %edx,%ebp
movzbl -0x24(%rax),%edx
shl    $0x8,%edx
or     %ecx,%edx
movd   %edx,%xmm9
pinsrw $0x1,%ebp,%xmm9
pxor   %xmm0,%xmm0
punpcklbw %xmm0,%xmm9
punpcklwd %xmm0,%xmm9
pxor   %xmm3,%xmm3
movdqa %xmm15,%xmm0
pmaddwd %xmm1,%xmm0
movdqa %xmm9,%xmm13
pmaddwd %xmm2,%xmm13
paddd  %xmm0,%xmm13
movzbl -0x12(%rax),%ecx
movzbl -0x6(%rax),%edx
movzbl (%rax),%ebp
shl    $0x8,%ebp
or     %edx,%ebp
movzbl -0xc(%rax),%edx
shl    $0x8,%edx
or     %ecx,%edx
movd   %edx,%xmm11
pinsrw $0x1,%ebp,%xmm11
punpcklbw %xmm3,%xmm11
punpcklwd %xmm3,%xmm11
movdqa %xmm12,%xmm0
pmaddwd %xmm1,%xmm0
movdqa %xmm11,%xmm1
pmaddwd %xmm2,%xmm1
paddd  %xmm0,%xmm1
movdqa %xmm1,-0x70(%rsp)
movdqa %xmm12,%xmm0
movdqa 0x1626(%rip),%xmm4
pmaddwd %xmm4,%xmm0
movdqa %xmm11,%xmm3
movdqa 0x1625(%rip),%xmm6
pmaddwd %xmm6,%xmm3
paddd  %xmm0,%xmm3
movdqa %xmm15,%xmm1
pmaddwd %xmm4,%xmm1
movdqa %xmm9,%xmm0
pmaddwd %xmm6,%xmm0
paddd  %xmm1,%xmm0
movdqa %xmm8,%xmm2
pmaddwd %xmm4,%xmm2
movdqa %xmm14,%xmm1
pmaddwd %xmm6,%xmm1
paddd  %xmm2,%xmm1
movdqa %xmm7,%xmm4
pmaddwd 0x15d5(%rip),%xmm4
movdqa %xmm5,%xmm2
pmaddwd %xmm6,%xmm2
paddd  %xmm4,%xmm2
movdqa (%rsp),%xmm4
psrld  $0xf,%xmm4
psrld  $0xf,%xmm3
paddd  %xmm4,%xmm3
movdqa -0x30(%rsp),%xmm4
psrld  $0xf,%xmm4
psrld  $0xf,%xmm0
paddd  %xmm4,%xmm0
movdqa -0x20(%rsp),%xmm4
psrld  $0xf,%xmm4
psrld  $0xf,%xmm1
paddd  %xmm4,%xmm1
movdqa -0x10(%rsp),%xmm4
psrld  $0xf,%xmm4
psrld  $0xf,%xmm2
paddd  %xmm4,%xmm2
movdqa 0x1592(%rip),%xmm6
pmaddwd %xmm6,%xmm12
movdqa 0x1595(%rip),%xmm4
pmaddwd %xmm4,%xmm11
paddd  %xmm12,%xmm11
pmaddwd %xmm6,%xmm15
pmaddwd %xmm4,%xmm9
paddd  %xmm15,%xmm9
pmaddwd %xmm6,%xmm8
pmaddwd %xmm4,%xmm14
paddd  %xmm8,%xmm14
pmaddwd %xmm6,%xmm7
pmaddwd %xmm4,%xmm5
paddd  %xmm7,%xmm5
psrad  $0xf,%xmm5
movdqa %xmm5,%xmm15
movdqa 0x155f(%rip),%xmm7
pcmpgtd %xmm7,%xmm15
pand   %xmm15,%xmm5
pandn  %xmm7,%xmm15
por    %xmm5,%xmm15
psrad  $0xf,%xmm14
movdqa %xmm14,%xmm5
pcmpgtd %xmm7,%xmm5
pand   %xmm5,%xmm14
pandn  %xmm7,%xmm5
por    %xmm14,%xmm5
psrad  $0xf,%xmm9
movdqa %xmm9,%xmm4
pcmpgtd %xmm7,%xmm4
pand   %xmm4,%xmm9
pandn  %xmm7,%xmm4
por    %xmm9,%xmm4
psrad  $0xf,%xmm11
movdqa %xmm11,%xmm6
pcmpgtd %xmm7,%xmm6
pand   %xmm6,%xmm11
pandn  %xmm7,%xmm6
por    %xmm11,%xmm6
movdqa 0x14fb(%rip),%xmm9
movdqa %xmm9,%xmm8
pcmpgtd %xmm6,%xmm8
pand   %xmm8,%xmm6
pandn  %xmm9,%xmm8
por    %xmm6,%xmm8
paddd  -0x50(%rsp),%xmm8
movdqa %xmm9,%xmm6
pcmpgtd %xmm4,%xmm6
pand   %xmm6,%xmm4
pandn  %xmm9,%xmm6
por    %xmm4,%xmm6
paddd  -0x40(%rsp),%xmm6
movdqa %xmm9,%xmm4
pcmpgtd %xmm5,%xmm4
pand   %xmm4,%xmm5
pandn  %xmm9,%xmm4
por    %xmm5,%xmm4
paddd  0x10(%rsp),%xmm4
movdqa %xmm9,%xmm7
pcmpgtd %xmm15,%xmm7
pand   %xmm7,%xmm15
pandn  %xmm9,%xmm7
por    %xmm15,%xmm7
paddd  0x20(%rsp),%xmm7
movdqa 0x40(%rsp),%xmm9
psrld  $0xf,%xmm9
movdqa 0x30(%rsp),%xmm11
psrld  $0xf,%xmm11
movdqa 0x1471(%rip),%xmm14
pand   %xmm14,%xmm11
pand   %xmm14,%xmm9
packuswb %xmm11,%xmm9
movdqa 0x60(%rsp),%xmm11
psrld  $0xf,%xmm11
movdqa 0x50(%rsp),%xmm5
psrld  $0xf,%xmm5
pand   %xmm14,%xmm5
pand   %xmm14,%xmm11
packuswb %xmm5,%xmm11
packuswb %xmm9,%xmm11
movdqa 0x143d(%rip),%xmm9
paddd  %xmm9,%xmm3
paddd  %xmm9,%xmm0
psrld  $0x1,%xmm0
psrld  $0x1,%xmm3
pand   %xmm14,%xmm3
pand   %xmm14,%xmm0
packuswb %xmm3,%xmm0
paddd  %xmm9,%xmm1
paddd  %xmm9,%xmm2
psrld  $0x1,%xmm2
psrld  $0x1,%xmm1
pand   %xmm14,%xmm1
pand   %xmm14,%xmm2
packuswb %xmm1,%xmm2
packuswb %xmm0,%xmm2
psrld  $0xf,%xmm13
movdqa -0x70(%rsp),%xmm0
psrld  $0xf,%xmm0
pand   %xmm14,%xmm0
pand   %xmm14,%xmm13
packuswb %xmm0,%xmm13
psrld  $0xf,%xmm10
movdqa -0x60(%rsp),%xmm0
psrld  $0xf,%xmm0
pand   %xmm14,%xmm0
pand   %xmm14,%xmm10
packuswb %xmm0,%xmm10
packuswb %xmm13,%xmm10
paddd  %xmm9,%xmm8
paddd  %xmm9,%xmm6
paddd  %xmm9,%xmm4
paddd  %xmm9,%xmm7
psrld  $0x1,%xmm7
psrld  $0x1,%xmm4
psrld  $0x1,%xmm6
psrld  $0x1,%xmm8
pand   %xmm14,%xmm8
pand   %xmm14,%xmm6
packuswb %xmm8,%xmm6
pand   %xmm14,%xmm4
pand   %xmm14,%xmm7
packuswb %xmm4,%xmm7
packuswb %xmm6,%xmm7
movdqa %xmm10,%xmm0
punpcklbw %xmm7,%xmm0
movdqa %xmm11,%xmm1
punpcklbw %xmm2,%xmm1
movdqa %xmm1,%xmm3
punpcklwd %xmm0,%xmm3
punpckhwd %xmm0,%xmm1
punpckhbw %xmm7,%xmm10
punpckhbw %xmm2,%xmm11
movdqa %xmm11,%xmm0
punpcklwd %xmm10,%xmm0
punpckhwd %xmm10,%xmm11
movdqu %xmm11,0x30(%rsi,%r12,4)
movdqu %xmm0,0x20(%rsi,%r12,4)
movdqu %xmm1,0x10(%rsi,%r12,4)
movdqu %xmm3,(%rsi,%r12,4)
add    $0x10,%r12
add    $0x60,%rax
cmp    %r12,%r15
jne    12e0 <rgb2yuy2+0x1e0>
mov    -0x78(%rsp),%rax
cmp    %r15,%rax
je     20fb <rgb2yuy2+0xffb>
test   $0xc,%al
je     210a <rgb2yuy2+0x100a>
movabs $0x7ffffffffffffff0,%r10
ff ff 7f
mov    -0x80(%rsp),%rcx
movabs $0xaaaaaaaaaaaaaaab,%rbp
aa aa aa
mov    %rcx,%rax
mul    %rbp
shr    $0x2,%rdx
add    $0x1,%rdx
add    $0xc,%r10
and    %rdx,%r10
lea    0x0(,%r10,4),%r8
lea    (%r10,%r10,1),%rax
lea    (%rax,%rax,2),%r9
lea    (%r15,%r15,2),%rax
lea    0x17(%rdi,%rax,2),%rbx
pxor   %xmm0,%xmm0
movdqa 0x1219(%rip),%xmm13
movdqa 0x1220(%rip),%xmm14
movdqa 0x1227(%rip),%xmm15
movdqa 0x122e(%rip),%xmm11
movdqa 0x1235(%rip),%xmm12
nopl   0x0(%rax,%rax,1)
movzbl -0x17(%rbx),%eax
movzbl -0xb(%rbx),%ecx
movzbl -0x5(%rbx),%ebp
shl    $0x8,%ebp
or     %ecx,%ebp
movzbl -0x11(%rbx),%ecx
shl    $0x8,%ecx
or     %eax,%ecx
movd   %ecx,%xmm2
pinsrw $0x1,%ebp,%xmm2
punpcklbw %xmm0,%xmm2
movzbl -0x16(%rbx),%eax
movzbl -0xa(%rbx),%ecx
movzbl -0x4(%rbx),%ebp
shl    $0x8,%ebp
or     %ecx,%ebp
movzbl -0x10(%rbx),%ecx
shl    $0x8,%ecx
or     %eax,%ecx
movd   %ecx,%xmm1
pinsrw $0x1,%ebp,%xmm1
punpcklbw %xmm0,%xmm1
punpcklwd %xmm2,%xmm1
movzbl -0x15(%rbx),%eax
movzbl -0x9(%rbx),%ecx
movzbl -0x3(%rbx),%ebp
shl    $0x8,%ebp
or     %ecx,%ebp
movzbl -0xf(%rbx),%ecx
shl    $0x8,%ecx
or     %eax,%ecx
movd   %ecx,%xmm4
pinsrw $0x1,%ebp,%xmm4
punpcklbw %xmm0,%xmm4
punpcklwd %xmm0,%xmm4
movdqa %xmm1,%xmm2
movdqa 0x1156(%rip),%xmm10
pmaddwd %xmm10,%xmm2
movdqa %xmm4,%xmm5
pmaddwd %xmm13,%xmm5
paddd  %xmm2,%xmm5
movdqa %xmm1,%xmm7
pmaddwd %xmm14,%xmm7
movdqa %xmm4,%xmm2
pmaddwd %xmm15,%xmm2
paddd  %xmm7,%xmm2
pmaddwd %xmm11,%xmm1
pmaddwd %xmm12,%xmm4
paddd  %xmm1,%xmm4
psrad  $0xf,%xmm4
movdqa %xmm4,%xmm7
movdqa 0x116f(%rip),%xmm6
pcmpgtd %xmm6,%xmm7
pand   %xmm7,%xmm4
pandn  %xmm6,%xmm7
por    %xmm4,%xmm7
movdqa 0x1167(%rip),%xmm3
movdqa %xmm3,%xmm1
pcmpgtd %xmm7,%xmm1
pand   %xmm1,%xmm7
pandn  %xmm3,%xmm1
por    %xmm7,%xmm1
movzbl -0x14(%rbx),%eax
movzbl -0x8(%rbx),%ecx
movzbl -0x2(%rbx),%ebp
shl    $0x8,%ebp
or     %ecx,%ebp
movzbl -0xe(%rbx),%ecx
shl    $0x8,%ecx
or     %eax,%ecx
movd   %ecx,%xmm4
pinsrw $0x1,%ebp,%xmm4
punpcklbw %xmm0,%xmm4
movzbl -0x13(%rbx),%eax
movzbl -0x7(%rbx),%ecx
movzbl -0x1(%rbx),%ebp
shl    $0x8,%ebp
or     %ecx,%ebp
movzbl -0xd(%rbx),%ecx
shl    $0x8,%ecx
or     %eax,%ecx
movd   %ecx,%xmm9
pinsrw $0x1,%ebp,%xmm9
punpcklbw %xmm0,%xmm9
punpcklwd %xmm4,%xmm9
movzbl -0x12(%rbx),%eax
movzbl -0x6(%rbx),%ecx
movzbl (%rbx),%ebp
shl    $0x8,%ebp
or     %ecx,%ebp
movzbl -0xc(%rbx),%ecx
shl    $0x8,%ecx
or     %eax,%ecx
movd   %ecx,%xmm8
pinsrw $0x1,%ebp,%xmm8
punpcklbw %xmm0,%xmm8
punpcklwd %xmm0,%xmm8
movdqa %xmm9,%xmm4
pmaddwd %xmm10,%xmm4
movdqa %xmm8,%xmm10
pmaddwd %xmm13,%xmm10
paddd  %xmm4,%xmm10
movdqa %xmm9,%xmm7
pmaddwd %xmm14,%xmm7
movdqa %xmm8,%xmm4
pmaddwd %xmm15,%xmm4
paddd  %xmm7,%xmm4
psrld  $0xf,%xmm2
psrld  $0xf,%xmm4
paddd  %xmm2,%xmm4
pmaddwd %xmm11,%xmm9
pmaddwd %xmm12,%xmm8
paddd  %xmm9,%xmm8
psrad  $0xf,%xmm8
movdqa %xmm8,%xmm2
pcmpgtd %xmm6,%xmm2
pand   %xmm2,%xmm8
pandn  %xmm6,%xmm2
por    %xmm8,%xmm2
movdqa %xmm3,%xmm7
pcmpgtd %xmm2,%xmm7
pand   %xmm7,%xmm2
pandn  %xmm3,%xmm7
por    %xmm2,%xmm7
paddd  %xmm1,%xmm7
psrld  $0xf,%xmm10
movdqa 0x105e(%rip),%xmm3
paddd  %xmm3,%xmm7
psrld  $0x1,%xmm7
movdqa 0x103d(%rip),%xmm6
pand   %xmm6,%xmm7
pand   %xmm6,%xmm10
packuswb %xmm7,%xmm10
packuswb %xmm10,%xmm10
punpcklbw %xmm0,%xmm10
pshufd $0xd7,%xmm10,%xmm1
pshuflw $0x24,%xmm1,%xmm1
pshufhw $0xd4,%xmm1,%xmm1
pshufd $0x28,%xmm10,%xmm2
pshuflw $0x84,%xmm2,%xmm2
pshufhw $0x74,%xmm2,%xmm2
packuswb %xmm1,%xmm2
movdqa 0x1019(%rip),%xmm7
movdqa %xmm7,%xmm1
pandn  %xmm2,%xmm1
psrld  $0xf,%xmm5
paddd  %xmm3,%xmm4
psrld  $0x1,%xmm4
pand   %xmm6,%xmm4
pand   %xmm6,%xmm5
packuswb %xmm4,%xmm5
packuswb %xmm5,%xmm5
punpcklbw %xmm0,%xmm5
pshufd $0xd7,%xmm5,%xmm2
pshuflw $0xe2,%xmm2,%xmm2
pshufhw $0xed,%xmm2,%xmm2
pshufd $0x28,%xmm5,%xmm4
pshuflw $0xe8,%xmm4,%xmm4
pshufhw $0xe7,%xmm4,%xmm4
packuswb %xmm2,%xmm4
pand   %xmm7,%xmm4
por    %xmm1,%xmm4
movdqu %xmm4,(%rsi,%r15,4)
add    $0x4,%r15
add    $0x18,%rbx
cmp    %r15,%r10
jne    1e20 <rgb2yuy2+0xd20>
cmp    %r10,%rdx
jne    116f <rgb2yuy2+0x6f>
add    $0x78,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret
lea    (%r15,%r15,1),%rax
lea    (%rax,%rax,2),%r9
shl    $0x2,%r15
mov    %r15,%r8
jmp    116f <rgb2yuy2+0x6f>

LLVM IR (-O0):
define void @rgb2yuy2(i8* %0, i8* %1, i32 %2) {
%4 = alloca i8*
%5 = alloca i8*
%6 = alloca i32
%7 = alloca i32
%8 = alloca i32
%9 = alloca i32
%10 = alloca i32
%11 = alloca i32
%12 = alloca i32
%13 = alloca i32
%14 = alloca i32
%15 = alloca i32
%16 = alloca i32
%17 = alloca i32
store i8* %0, i8** %4
store i8* %1, i8** %5
store i32 %2, i32* %6
store i32 0, i32* %7
store i32 0, i32* %8
br label %18
18: ; preds = %244, %3
%19 = load i32, i32* %7
%20 = load i32, i32* %6
%21 = load i32, i32* %6
%22 = shl i32 %21, 1
%23 = add nsw i32 %20, %22
%24 = icmp slt i32 %19, %23
br i1 %24, label %25, label %249
25: ; preds = %18
%26 = load i8*, i8** %4
%27 = load i32, i32* %7
%28 = add nsw i32 %27, 0
%29 = sext i32 %28 to i64
%30 = getelementptr inbounds i8, i8* %26, i64 %29
%31 = load i8, i8* %30
%32 = zext i8 %31 to i32
store i32 %32, i32* %15
%33 = load i8*, i8** %4
%34 = load i32, i32* %7
%35 = add nsw i32 %34, 1
%36 = sext i32 %35 to i64
%37 = getelementptr inbounds i8, i8* %33, i64 %36
%38 = load i8, i8* %37
%39 = zext i8 %38 to i32
store i32 %39, i32* %16
%40 = load i8*, i8** %4
%41 = load i32, i32* %7
%42 = add nsw i32 %41, 2
%43 = sext i32 %42 to i64
%44 = getelementptr inbounds i8, i8* %40, i64 %43
%45 = load i8, i8* %44
%46 = zext i8 %45 to i32
store i32 %46, i32* %17
%47 = load i32, i32* %15
%48 = mul nsw i32 9798, %47
%49 = load i32, i32* %16
%50 = mul nsw i32 19235, %49
%51 = add nsw i32 %48, %50
%52 = load i32, i32* %17
%53 = mul nsw i32 3736, %52
%54 = add nsw i32 %51, %53
%55 = ashr i32 %54, 15
store i32 %55, i32* %9
%56 = load i32, i32* %15
%57 = mul nsw i32 -4784, %56
%58 = load i32, i32* %16
%59 = mul nsw i32 9437, %58
%60 = sub nsw i32 %57, %59
%61 = load i32, i32* %17
%62 = mul nsw i32 14221, %61
%63 = add nsw i32 %60, %62
%64 = ashr i32 %63, 15
%65 = add nsw i32 %64, 128
store i32 %65, i32* %11
%66 = load i32, i32* %15
%67 = mul nsw i32 20218, %66
%68 = load i32, i32* %16
%69 = mul nsw i32 16941, %68
%70 = sub nsw i32 %67, %69
%71 = load i32, i32* %17
%72 = mul nsw i32 3277, %71
%73 = sub nsw i32 %70, %72
%74 = ashr i32 %73, 15
%75 = add nsw i32 %74, 128
store i32 %75, i32* %13
%76 = load i32, i32* %9
%77 = icmp slt i32 %76, 0
br i1 %77, label %78, label %79
78: ; preds = %25
br label %81
79: ; preds = %25
%80 = load i32, i32* %9
br label %81
81: ; preds = %79, %78
%82 = phi i32 [ 0, %78 ], [ %80, %79 ]
store i32 %82, i32* %9
%83 = load i32, i32* %11
%84 = icmp slt i32 %83, 0
br i1 %84, label %85, label %86
85: ; preds = %81
br label %88
86: ; preds = %81
%87 = load i32, i32* %11
br label %88
88: ; preds = %86, %85
%89 = phi i32 [ 0, %85 ], [ %87, %86 ]
store i32 %89, i32* %11
%90 = load i32, i32* %13
%91 = icmp slt i32 %90, 0
br i1 %91, label %92, label %93
92: ; preds = %88
br label %95
93: ; preds = %88
%94 = load i32, i32* %13
br label %95
95: ; preds = %93, %92
%96 = phi i32 [ 0, %92 ], [ %94, %93 ]
store i32 %96, i32* %13
%97 = load i32, i32* %9
%98 = icmp sgt i32 %97, 255
br i1 %98, label %99, label %100
99: ; preds = %95
br label %102
100: ; preds = %95
%101 = load i32, i32* %9
br label %102
102: ; preds = %100, %99
%103 = phi i32 [ 255, %99 ], [ %101, %100 ]
store i32 %103, i32* %9
%104 = load i32, i32* %11
%105 = icmp sgt i32 %104, 255
br i1 %105, label %106, label %107
106: ; preds = %102
br label %109
107: ; preds = %102
%108 = load i32, i32* %11
br label %109
109: ; preds = %107, %106
%110 = phi i32 [ 255, %106 ], [ %108, %107 ]
store i32 %110, i32* %11
%111 = load i32, i32* %13
%112 = icmp sgt i32 %111, 255
br i1 %112, label %113, label %114
113: ; preds = %109
br label %116
114: ; preds = %109
%115 = load i32, i32* %13
br label %116
116: ; preds = %114, %113
%117 = phi i32 [ 255, %113 ], [ %115, %114 ]
store i32 %117, i32* %13
%118 = load i8*, i8** %4
%119 = load i32, i32* %7
%120 = add nsw i32 %119, 3
%121 = sext i32 %120 to i64
%122 = getelementptr inbounds i8, i8* %118, i64 %121
%123 = load i8, i8* %122
%124 = zext i8 %123 to i32
store i32 %124, i32* %15
%125 = load i8*, i8** %4
%126 = load i32, i32* %7
%127 = add nsw i32 %126, 4
%128 = sext i32 %127 to i64
%129 = getelementptr inbounds i8, i8* %125, i64 %128
%130 = load i8, i8* %129
%131 = zext i8 %130 to i32
store i32 %131, i32* %16
%132 = load i8*, i8** %4
%133 = load i32, i32* %7
%134 = add nsw i32 %133, 5
%135 = sext i32 %134 to i64
%136 = getelementptr inbounds i8, i8* %132, i64 %135
%137 = load i8, i8* %136
%138 = zext i8 %137 to i32
store i32 %138, i32* %17
%139 = load i32, i32* %15
%140 = mul nsw i32 9798, %139
%141 = load i32, i32* %16
%142 = mul nsw i32 19235, %141
%143 = add nsw i32 %140, %142
%144 = load i32, i32* %17
%145 = mul nsw i32 3736, %144
%146 = add nsw i32 %143, %145
%147 = ashr i32 %146, 15
store i32 %147, i32* %10
%148 = load i32, i32* %15
%149 = mul nsw i32 -4784, %148
%150 = load i32, i32* %16
%151 = mul nsw i32 9437, %150
%152 = sub nsw i32 %149, %151
%153 = load i32, i32* %17
%154 = mul nsw i32 14221, %153
%155 = add nsw i32 %152, %154
%156 = ashr i32 %155, 15
%157 = add nsw i32 %156, 128
store i32 %157, i32* %12
%158 = load i32, i32* %15
%159 = mul nsw i32 20218, %158
%160 = load i32, i32* %16
%161 = mul nsw i32 16941, %160
%162 = sub nsw i32 %159, %161
%163 = load i32, i32* %17
%164 = mul nsw i32 3277, %163
%165 = sub nsw i32 %162, %164
%166 = ashr i32 %165, 15
%167 = add nsw i32 %166, 128
store i32 %167, i32* %14
%168 = load i32, i32* %10
%169 = icmp slt i32 %168, 0
br i1 %169, label %170, label %171
170: ; preds = %116
br label %173
171: ; preds = %116
%172 = load i32, i32* %10
br label %173
173: ; preds = %171, %170
%174 = phi i32 [ 0, %170 ], [ %172, %171 ]
store i32 %174, i32* %10
%175 = load i32, i32* %12
%176 = icmp slt i32 %175, 0
br i1 %176, label %177, label %178
177: ; preds = %173
br label %180
178: ; preds = %173
%179 = load i32, i32* %12
br label %180
180: ; preds = %178, %177
%181 = phi i32 [ 0, %177 ], [ %179, %178 ]
store i32 %181, i32* %12
%182 = load i32, i32* %14
%183 = icmp slt i32 %182, 0
br i1 %183, label %184, label %185
184: ; preds = %180
br label %187
185: ; preds = %180
%186 = load i32, i32* %14
br label %187
187: ; preds = %185, %184
%188 = phi i32 [ 0, %184 ], [ %186, %185 ]
store i32 %188, i32* %14
%189 = load i32, i32* %10
%190 = icmp sgt i32 %189, 255
br i1 %190, label %191, label %192
191: ; preds = %187
br label %194
192: ; preds = %187
%193 = load i32, i32* %10
br label %194
194: ; preds = %192, %191
%195 = phi i32 [ 255, %191 ], [ %193, %192 ]
store i32 %195, i32* %10
%196 = load i32, i32* %12
%197 = icmp sgt i32 %196, 255
br i1 %197, label %198, label %199
198: ; preds = %194
br label %201
199: ; preds = %194
%200 = load i32, i32* %12
br label %201
201: ; preds = %199, %198
%202 = phi i32 [ 255, %198 ], [ %200, %199 ]
store i32 %202, i32* %12
%203 = load i32, i32* %14
%204 = icmp sgt i32 %203, 255
br i1 %204, label %205, label %206
205: ; preds = %201
br label %208
206: ; preds = %201
%207 = load i32, i32* %14
br label %208
208: ; preds = %206, %205
%209 = phi i32 [ 255, %205 ], [ %207, %206 ]
store i32 %209, i32* %14
%210 = load i32, i32* %9
%211 = trunc i32 %210 to i8
%212 = load i8*, i8** %5
%213 = load i32, i32* %8
%214 = add nsw i32 %213, 0
%215 = sext i32 %214 to i64
%216 = getelementptr inbounds i8, i8* %212, i64 %215
store i8 %211, i8* %216
%217 = load i32, i32* %11
%218 = load i32, i32* %12
%219 = add nsw i32 %217, %218
%220 = ashr i32 %219, 1
%221 = trunc i32 %220 to i8
%222 = load i8*, i8** %5
%223 = load i32, i32* %8
%224 = add nsw i32 %223, 1
%225 = sext i32 %224 to i64
%226 = getelementptr inbounds i8, i8* %222, i64 %225
store i8 %221, i8* %226
%227 = load i32, i32* %10
%228 = trunc i32 %227 to i8
%229 = load i8*, i8** %5
%230 = load i32, i32* %8
%231 = add nsw i32 %230, 2
%232 = sext i32 %231 to i64
%233 = getelementptr inbounds i8, i8* %229, i64 %232
store i8 %228, i8* %233
%234 = load i32, i32* %13
%235 = load i32, i32* %14
%236 = add nsw i32 %234, %235
%237 = ashr i32 %236, 1
%238 = trunc i32 %237 to i8
%239 = load i8*, i8** %5
%240 = load i32, i32* %8
%241 = add nsw i32 %240, 3
%242 = sext i32 %241 to i64
%243 = getelementptr inbounds i8, i8* %239, i64 %242
store i8 %238, i8* %243
br label %244
244: ; preds = %208
%245 = load i32, i32* %7
%246 = add nsw i32 %245, 6
store i32 %246, i32* %7
%247 = load i32, i32* %8
%248 = add nsw i32 %247, 4
store i32 %248, i32* %8
br label %18
249: ; preds = %18
ret void
}

LLVM IR (-O2):
define void @rgb2yuy2(i8* nocapture %0, i8* nocapture writeonly %1, i32 %2) {
%4 = mul i32 %2, 3
%5 = icmp sgt i32 %4, 0
br i1 %5, label %6, label %762
6: ; preds = %3
%7 = zext i32 %4 to i64
%8 = add nsw i64 %7, -1
%9 = udiv i64 %8, 6
%10 = add nuw nsw i64 %9, 1
%11 = icmp ult i64 %8, 18
br i1 %11, label %669, label %12
12: ; preds = %6
%13 = add nsw i64 %7, -1
%14 = udiv i64 %13, 6
%15 = shl nuw i64 %14, 2
%16 = add nuw i64 %15, 4
%17 = getelementptr i8, i8* %1, i64 %16
%18 = mul nuw i64 %14, 6
%19 = add i64 %18, 6
%20 = getelementptr i8, i8* %0, i64 %19
%21 = icmp ugt i8* %20, %1
%22 = icmp ugt i8* %17, %0
%23 = and i1 %21, %22
br i1 %23, label %669, label %24
24: ; preds = %12
%25 = icmp ult i64 %8, 90
br i1 %25, label %491, label %26
26: ; preds = %24
%27 = and i64 %10, 9223372036854775792
%28 = getelementptr inbounds i8, i8* %1, i64 -3
br label %29
29: ; preds = %29, %26
%30 = phi i64 [ 0, %26 ], [ %482, %29 ]
%31 = shl i64 %30, 2
%32 = mul i64 %30, 6
%33 = or i64 %32, 6
%34 = or i64 %32, 12
%35 = or i64 %32, 18
%36 = or i64 %32, 24
%37 = or i64 %32, 30
%38 = add i64 %32, 36
%39 = add i64 %32, 42
%40 = add i64 %32, 48
%41 = add i64 %32, 54
%42 = add i64 %32, 60
%43 = add i64 %32, 66
%44 = add i64 %32, 72
%45 = add i64 %32, 78
%46 = add i64 %32, 84
%47 = add i64 %32, 90
%48 = getelementptr inbounds i8, i8* %0, i64 %32
%49 = getelementptr inbounds i8, i8* %0, i64 %33
%50 = getelementptr inbounds i8, i8* %0, i64 %34
%51 = getelementptr inbounds i8, i8* %0, i64 %35
%52 = getelementptr inbounds i8, i8* %0, i64 %36
%53 = getelementptr inbounds i8, i8* %0, i64 %37
%54 = getelementptr inbounds i8, i8* %0, i64 %38
%55 = getelementptr inbounds i8, i8* %0, i64 %39
%56 = getelementptr inbounds i8, i8* %0, i64 %40
%57 = getelementptr inbounds i8, i8* %0, i64 %41
%58 = getelementptr inbounds i8, i8* %0, i64 %42
%59 = getelementptr inbounds i8, i8* %0, i64 %43
%60 = getelementptr inbounds i8, i8* %0, i64 %44
%61 = getelementptr inbounds i8, i8* %0, i64 %45
%62 = getelementptr inbounds i8, i8* %0, i64 %46
%63 = getelementptr inbounds i8, i8* %0, i64 %47
%64 = load i8, i8* %48
%65 = load i8, i8* %49
%66 = load i8, i8* %50
%67 = load i8, i8* %51
%68 = load i8, i8* %52
%69 = load i8, i8* %53
%70 = load i8, i8* %54
%71 = load i8, i8* %55
%72 = load i8, i8* %56
%73 = load i8, i8* %57
%74 = load i8, i8* %58
%75 = load i8, i8* %59
%76 = load i8, i8* %60
%77 = load i8, i8* %61
%78 = load i8, i8* %62
%79 = load i8, i8* %63
%80 = insertelement <16 x i8> poison, i8 %64, i64 0
%81 = insertelement <16 x i8> %80, i8 %65, i64 1
%82 = insertelement <16 x i8> %81, i8 %66, i64 2
%83 = insertelement <16 x i8> %82, i8 %67, i64 3
%84 = insertelement <16 x i8> %83, i8 %68, i64 4
%85 = insertelement <16 x i8> %84, i8 %69, i64 5
%86 = insertelement <16 x i8> %85, i8 %70, i64 6
%87 = insertelement <16 x i8> %86, i8 %71, i64 7
%88 = insertelement <16 x i8> %87, i8 %72, i64 8
%89 = insertelement <16 x i8> %88, i8 %73, i64 9
%90 = insertelement <16 x i8> %89, i8 %74, i64 10
%91 = insertelement <16 x i8> %90, i8 %75, i64 11
%92 = insertelement <16 x i8> %91, i8 %76, i64 12
%93 = insertelement <16 x i8> %92, i8 %77, i64 13
%94 = insertelement <16 x i8> %93, i8 %78, i64 14
%95 = insertelement <16 x i8> %94, i8 %79, i64 15
%96 = zext <16 x i8> %95 to <16 x i32>
%97 = or i64 %32, 1
%98 = or i64 %32, 7
%99 = or i64 %32, 13
%100 = or i64 %32, 19
%101 = or i64 %32, 25
%102 = or i64 %32, 31
%103 = or i64 %38, 1
%104 = or i64 %39, 1
%105 = or i64 %40, 1
%106 = or i64 %41, 1
%107 = or i64 %42, 1
%108 = or i64 %43, 1
%109 = or i64 %44, 1
%110 = or i64 %45, 1
%111 = or i64 %46, 1
%112 = or i64 %47, 1
%113 = getelementptr inbounds i8, i8* %0, i64 %97
%114 = getelementptr inbounds i8, i8* %0, i64 %98
%115 = getelementptr inbounds i8, i8* %0, i64 %99
%116 = getelementptr inbounds i8, i8* %0, i64 %100
%117 = getelementptr inbounds i8, i8* %0, i64 %101
%118 = getelementptr inbounds i8, i8* %0, i64 %102
%119 = getelementptr inbounds i8, i8* %0, i64 %103
%120 = getelementptr inbounds i8, i8* %0, i64 %104
%121 = getelementptr inbounds i8, i8* %0, i64 %105
%122 = getelementptr inbounds i8, i8* %0, i64 %106
%123 = getelementptr inbounds i8, i8* %0, i64 %107
%124 = getelementptr inbounds i8, i8* %0, i64 %108
%125 = getelementptr inbounds i8, i8* %0, i64 %109
%126 = getelementptr inbounds i8, i8* %0, i64 %110
%127 = getelementptr inbounds i8, i8* %0, i64 %111
%128 = getelementptr inbounds i8, i8* %0, i64 %112
%129 = load i8, i8* %113
%130 = load i8, i8* %114
%131 = load i8, i8* %115
%132 = load i8, i8* %116
%133 = load i8, i8* %117
%134 = load i8, i8* %118
%135 = load i8, i8* %119
%136 = load i8, i8* %120
%137 = load i8, i8* %121
%138 = load i8, i8* %122
%139 = load i8, i8* %123
%140 = load i8, i8* %124
%141 = load i8, i8* %125
%142 = load i8, i8* %126
%143 = load i8, i8* %127
%144 = load i8, i8* %128
%145 = insertelement <16 x i8> poison, i8 %129, i64 0
%146 = insertelement <16 x i8> %145, i8 %130, i64 1
%147 = insertelement <16 x i8> %146, i8 %131, i64 2
%148 = insertelement <16 x i8> %147, i8 %132, i64 3
%149 = insertelement <16 x i8> %148, i8 %133, i64 4
%150 = insertelement <16 x i8> %149, i8 %134, i64 5
%151 = insertelement <16 x i8> %150, i8 %135, i64 6
%152 = insertelement <16 x i8> %151, i8 %136, i64 7
%153 = insertelement <16 x i8> %152, i8 %137, i64 8
%154 = insertelement <16 x i8> %153, i8 %138, i64 9
%155 = insertelement <16 x i8> %154, i8 %139, i64 10
%156 = insertelement <16 x i8> %155, i8 %140, i64 11
%157 = insertelement <16 x i8> %156, i8 %141, i64 12
%158 = insertelement <16 x i8> %157, i8 %142, i64 13
%159 = insertelement <16 x i8> %158, i8 %143, i64 14
%160 = insertelement <16 x i8> %159, i8 %144, i64 15
%161 = zext <16 x i8> %160 to <16 x i32>
%162 = or i64 %32, 2
%163 = or i64 %32, 8
%164 = or i64 %32, 14
%165 = or i64 %32, 20
%166 = or i64 %32, 26
%167 = add i64 %32, 32
%168 = add i64 %32, 38
%169 = add i64 %32, 44
%170 = add i64 %32, 50
%171 = add i64 %32, 56
%172 = add i64 %32, 62
%173 = add i64 %32, 68
%174 = add i64 %32, 74
%175 = add i64 %32, 80
%176 = add i64 %32, 86
%177 = add i64 %32, 92
%178 = getelementptr inbounds i8, i8* %0, i64 %162
%179 = getelementptr inbounds i8, i8* %0, i64 %163
%180 = getelementptr inbounds i8, i8* %0, i64 %164
%181 = getelementptr inbounds i8, i8* %0, i64 %165
%182 = getelementptr inbounds i8, i8* %0, i64 %166
%183 = getelementptr inbounds i8, i8* %0, i64 %167
%184 = getelementptr inbounds i8, i8* %0, i64 %168
%185 = getelementptr inbounds i8, i8* %0, i64 %169
%186 = getelementptr inbounds i8, i8* %0, i64 %170
%187 = getelementptr inbounds i8, i8* %0, i64 %171
%188 = getelementptr inbounds i8, i8* %0, i64 %172
%189 = getelementptr inbounds i8, i8* %0, i64 %173
%190 = getelementptr inbounds i8, i8* %0, i64 %174
%191 = getelementptr inbounds i8, i8* %0, i64 %175
%192 = getelementptr inbounds i8, i8* %0, i64 %176
%193 = getelementptr inbounds i8, i8* %0, i64 %177
%194 = load i8, i8* %178
%195 = load i8, i8* %179
%196 = load i8, i8* %180
%197 = load i8, i8* %181
%198 = load i8, i8* %182
%199 = load i8, i8* %183
%200 = load i8, i8* %184
%201 = load i8, i8* %185
%202 = load i8, i8* %186
%203 = load i8, i8* %187
%204 = load i8, i8* %188
%205 = load i8, i8* %189
%206 = load i8, i8* %190
%207 = load i8, i8* %191
%208 = load i8, i8* %192
%209 = load i8, i8* %193
%210 = insertelement <16 x i8> poison, i8 %194, i64 0
%211 = insertelement <16 x i8> %210, i8 %195, i64 1
%212 = insertelement <16 x i8> %211, i8 %196, i64 2
%213 = insertelement <16 x i8> %212, i8 %197, i64 3
%214 = insertelement <16 x i8> %213, i8 %198, i64 4
%215 = insertelement <16 x i8> %214, i8 %199, i64 5
%216 = insertelement <16 x i8> %215, i8 %200, i64 6
%217 = insertelement <16 x i8> %216, i8 %201, i64 7
%218 = insertelement <16 x i8> %217, i8 %202, i64 8
%219 = insertelement <16 x i8> %218, i8 %203, i64 9
%220 = insertelement <16 x i8> %219, i8 %204, i64 10
%221 = insertelement <16 x i8> %220, i8 %205, i64 11
%222 = insertelement <16 x i8> %221, i8 %206, i64 12
%223 = insertelement <16 x i8> %222, i8 %207, i64 13
%224 = insertelement <16 x i8> %223, i8 %208, i64 14
%225 = insertelement <16 x i8> %224, i8 %209, i64 15
%226 = zext <16 x i8> %225 to <16 x i32>
%227 = mul nuw nsw <16 x i32> %96, <i32 9798, i32 9798, i32 9798, i32 9798, i32 9798, i32 9798, i32 9798, i32 9798, i32 9798, i32 9798, i32 9798, i32 9798, i32 9798, i32 9798, i32 9798, i32 9798>
%228 = mul nuw nsw <16 x i32> %161, <i32 19235, i32 19235, i32 19235, i32 19235, i32 19235, i32 19235, i32 19235, i32 19235, i32 19235, i32 19235, i32 19235, i32 19235, i32 19235, i32 19235, i32 19235, i32 19235>
%229 = add nuw nsw <16 x i32> %228, %227
%230 = mul nuw nsw <16 x i32> %226, <i32 3736, i32 3736, i32 3736, i32 3736, i32 3736, i32 3736, i32 3736, i32 3736, i32 3736, i32 3736, i32 3736, i32 3736, i32 3736, i32 3736, i32 3736, i32 3736>
%231 = add nuw nsw <16 x i32> %229, %230
%232 = lshr <16 x i32> %231, <i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15>
%233 = mul nsw <16 x i32> %96, <i32 -4784, i32 -4784, i32 -4784, i32 -4784, i32 -4784, i32 -4784, i32 -4784, i32 -4784, i32 -4784, i32 -4784, i32 -4784, i32 -4784, i32 -4784, i32 -4784, i32 -4784, i32 -4784>
%234 = mul nsw <16 x i32> %161, <i32 -9437, i32 -9437, i32 -9437, i32 -9437, i32 -9437, i32 -9437, i32 -9437, i32 -9437, i32 -9437, i32 -9437, i32 -9437, i32 -9437, i32 -9437, i32 -9437, i32 -9437, i32 -9437>
%235 = add nsw <16 x i32> %234, %233
%236 = mul nuw nsw <16 x i32> %226, <i32 14221, i32 14221, i32 14221, i32 14221, i32 14221, i32 14221, i32 14221, i32 14221, i32 14221, i32 14221, i32 14221, i32 14221, i32 14221, i32 14221, i32 14221, i32 14221>
%237 = add nsw <16 x i32> %235, %236
%238 = lshr <16 x i32> %237, <i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15>
%239 = mul nuw nsw <16 x i32> %96, <i32 20218, i32 20218, i32 20218, i32 20218, i32 20218, i32 20218, i32 20218, i32 20218, i32 20218, i32 20218, i32 20218, i32 20218, i32 20218, i32 20218, i32 20218, i32 20218>
%240 = mul nsw <16 x i32> %161, <i32 -16941, i32 -16941, i32 -16941, i32 -16941, i32 -16941, i32 -16941, i32 -16941, i32 -16941, i32 -16941, i32 -16941, i32 -16941, i32 -16941, i32 -16941, i32 -16941, i32 -16941, i32 -16941>
%241 = add nsw <16 x i32> %240, %239
%242 = mul nsw <16 x i32> %226, <i32 -3277, i32 -3277, i32 -3277, i32 -3277, i32 -3277, i32 -3277, i32 -3277, i32 -3277, i32 -3277, i32 -3277, i32 -3277, i32 -3277, i32 -3277, i32 -3277, i32 -3277, i32 -3277>
%243 = add nsw <16 x i32> %241, %242
%244 = ashr <16 x i32> %243, <i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15>
%245 = icmp sgt <16 x i32> %244, <i32 -128, i32 -128, i32 -128, i32 -128, i32 -128, i32 -128, i32 -128, i32 -128, i32 -128, i32 -128, i32 -128, i32 -128, i32 -128, i32 -128, i32 -128, i32 -128>
%246 = select <16 x i1> %245, <16 x i32> %244, <16 x i32> <i32 -128, i32 -128, i32 -128, i32 -128, i32 -128, i32 -128, i32 -128, i32 -128, i32 -128, i32 -128, i32 -128, i32 -128, i32 -128, i32 -128, i32 -128, i32 -128>
%247 = icmp slt <16 x i32> %246, <i32 127, i32 127, i32 127, i32 127, i32 127, i32 127, i32 127, i32 127, i32 127, i32 127, i32 127, i32 127, i32 127, i32 127, i32 127, i32 127>
%248 = select <16 x i1> %247, <16 x i32> %246, <16 x i32> <i32 127, i32 127, i32 127, i32 127, i32 127, i32 127, i32 127, i32 127, i32 127, i32 127, i32 127, i32 127, i32 127, i32 127, i32 127, i32 127>
%249 = or i64 %32, 3
%250 = or i64 %32, 9
%251 = or i64 %32, 15
%252 = or i64 %32, 21
%253 = or i64 %32, 27
%254 = add i64 %32, 33
%255 = add i64 %32, 39
%256 = add i64 %32, 45
%257 = add i64 %32, 51
%258 = add i64 %32, 57
%259 = add i64 %32, 63
%260 = add i64 %32, 69
%261 = add i64 %32, 75
%262 = add i64 %32, 81
%263 = add i64 %32, 87
%264 = add i64 %32, 93
%265 = getelementptr inbounds i8, i8* %0, i64 %249
%266 = getelementptr inbounds i8, i8* %0, i64 %250
%267 = getelementptr inbounds i8, i8* %0, i64 %251
%268 = getelementptr inbounds i8, i8* %0, i64 %252
%269 = getelementptr inbounds i8, i8* %0, i64 %253
%270 = getelementptr inbounds i8, i8* %0, i64 %254
%271 = getelementptr inbounds i8, i8* %0, i64 %255
%272 = getelementptr inbounds i8, i8* %0, i64 %256
%273 = getelementptr inbounds i8, i8* %0, i64 %257
%274 = getelementptr inbounds i8, i8* %0, i64 %258
%275 = getelementptr inbounds i8, i8* %0, i64 %259
%276 = getelementptr inbounds i8, i8* %0, i64 %260
%277 = getelementptr inbounds i8, i8* %0, i64 %261
%278 = getelementptr inbounds i8, i8* %0, i64 %262
%279 = getelementptr inbounds i8, i8* %0, i64 %263
%280 = getelementptr inbounds i8, i8* %0, i64 %264
%281 = load i8, i8* %265
%282 = load i8, i8* %266
%283 = load i8, i8* %267
%284 = load i8, i8* %268
%285 = load i8, i8* %269
%286 = load i8, i8* %270
%287 = load i8, i8* %271
%288 = load i8, i8* %272
%289 = load i8, i8* %273
%290 = load i8, i8* %274
%291 = load i8, i8* %275
%292 = load i8, i8* %276
%293 = load i8, i8* %277
%294 = load i8, i8* %278
%295 = load i8, i8* %279
%296 = load i8, i8* %280
%297 = insertelement <16 x i8> poison, i8 %281, i64 0
%298 = insertelement <16 x i8> %297, i8 %282, i64 1
%299 = insertelement <16 x i8> %298, i8 %283, i64 2
%300 = insertelement <16 x i8> %299, i8 %284, i64 3
%301 = insertelement <16 x i8> %300, i8 %285, i64 4
%302 = insertelement <16 x i8> %301, i8 %286, i64 5
%303 = insertelement <16 x i8> %302, i8 %287, i64 6
%304 = insertelement <16 x i8> %303, i8 %288, i64 7
%305 = insertelement <16 x i8> %304, i8 %289, i64 8
%306 = insertelement <16 x i8> %305, i8 %290, i64 9
%307 = insertelement <16 x i8> %306, i8 %291, i64 10
%308 = insertelement <16 x i8> %307, i8 %292, i64 11
%309 = insertelement <16 x i8> %308, i8 %293, i64 12
%310 = insertelement <16 x i8> %309, i8 %294, i64 13
%311 = insertelement <16 x i8> %310, i8 %295, i64 14
%312 = insertelement <16 x i8> %311, i8 %296, i64 15
%313 = zext <16 x i8> %312 to <16 x i32>
%314 = or i64 %32, 4
%315 = or i64 %32, 10
%316 = or i64 %32, 16
%317 = or i64 %32, 22
%318 = or i64 %32, 28
%319 = add i64 %32, 34
%320 = add i64 %32, 40
%321 = add i64 %32, 46
%322 = add i64 %32, 52
%323 = add i64 %32, 58
%324 = add i64 %32, 64
%325 = add i64 %32, 70
%326 = add i64 %32, 76
%327 = add i64 %32, 82
%328 = add i64 %32, 88
%329 = add i64 %32, 94
%330 = getelementptr inbounds i8, i8* %0, i64 %314
%331 = getelementptr inbounds i8, i8* %0, i64 %315
%332 = getelementptr inbounds i8, i8* %0, i64 %316
%333 = getelementptr inbounds i8, i8* %0, i64 %317
%334 = getelementptr inbounds i8, i8* %0, i64 %318
%335 = getelementptr inbounds i8, i8* %0, i64 %319
%336 = getelementptr inbounds i8, i8* %0, i64 %320
%337 = getelementptr inbounds i8, i8* %0, i64 %321
%338 = getelementptr inbounds i8, i8* %0, i64 %322
%339 = getelementptr inbounds i8, i8* %0, i64 %323
%340 = getelementptr inbounds i8, i8* %0, i64 %324
%341 = getelementptr inbounds i8, i8* %0, i64 %325
%342 = getelementptr inbounds i8, i8* %0, i64 %326
%343 = getelementptr inbounds i8, i8* %0, i64 %327
%344 = getelementptr inbounds i8, i8* %0, i64 %328
%345 = getelementptr inbounds i8, i8* %0, i64 %329
%346 = load i8, i8* %330
%347 = load i8, i8* %331
%348 = load i8, i8* %332
%349 = load i8, i8* %333
%350 = load i8, i8* %334
%351 = load i8, i8* %335
%352 = load i8, i8* %336
%353 = load i8, i8* %337
%354 = load i8, i8* %338
%355 = load i8, i8* %339
%356 = load i8, i8* %340
%357 = load i8, i8* %341
%358 = load i8, i8* %342
%359 = load i8, i8* %343
%360 = load i8, i8* %344
%361 = load i8, i8* %345
%362 = insertelement <16 x i8> poison, i8 %346, i64 0
%363 = insertelement <16 x i8> %362, i8 %347, i64 1
%364 = insertelement <16 x i8> %363, i8 %348, i64 2
%365 = insertelement <16 x i8> %364, i8 %349, i64 3
%366 = insertelement <16 x i8> %365, i8 %350, i64 4
%367 = insertelement <16 x i8> %366, i8 %351, i64 5
%368 = insertelement <16 x i8> %367, i8 %352, i64 6
%369 = insertelement <16 x i8> %368, i8 %353, i64 7
%370 = insertelement <16 x i8> %369, i8 %354, i64 8
%371 = insertelement <16 x i8> %370, i8 %355, i64 9
%372 = insertelement <16 x i8> %371, i8 %356, i64 10
%373 = insertelement <16 x i8> %372, i8 %357, i64 11
%374 = insertelement <16 x i8> %373, i8 %358, i64 12
%375 = insertelement <16 x i8> %374, i8 %359, i64 13
%376 = insertelement <16 x i8> %375, i8 %360, i64 14
%377 = insertelement <16 x i8> %376, i8 %361, i64 15
%378 = zext <16 x i8> %377 to <16 x i32>
%379 = or i64 %32, 5
%380 = or i64 %32, 11
%381 = or i64 %32, 17
%382 = or i64 %32, 23
%383 = or i64 %32, 29
%384 = add i64 %32, 35
%385 = add i64 %32, 41
%386 = add i64 %32, 47
%387 = add i64 %32, 53
%388 = add i64 %32, 59
%389 = add i64 %32, 65
%390 = add i64 %32, 71
%391 = add i64 %32, 77
%392 = add i64 %32, 83
%393 = add i64 %32, 89
%394 = add i64 %32, 95
%395 = getelementptr inbounds i8, i8* %0, i64 %379
%396 = getelementptr inbounds i8, i8* %0, i64 %380
%397 = getelementptr inbounds i8, i8* %0, i64 %381
%398 = getelementptr inbounds i8, i8* %0, i64 %382
%399 = getelementptr inbounds i8, i8* %0, i64 %383
%400 = getelementptr inbounds i8, i8* %0, i64 %384
%401 = getelementptr inbounds i8, i8* %0, i64 %385
%402 = getelementptr inbounds i8, i8* %0, i64 %386
%403 = getelementptr inbounds i8, i8* %0, i64 %387
%404 = getelementptr inbounds i8, i8* %0, i64 %388
%405 = getelementptr inbounds i8, i8* %0, i64 %389
%406 = getelementptr inbounds i8, i8* %0, i64 %390
%407 = getelementptr inbounds i8, i8* %0, i64 %391
%408 = getelementptr inbounds i8, i8* %0, i64 %392
%409 = getelementptr inbounds i8, i8* %0, i64 %393
%410 = getelementptr inbounds i8, i8* %0, i64 %394
%411 = load i8, i8* %395
%412 = load i8, i8* %396
%413 = load i8, i8* %397
%414 = load i8, i8* %398
%415 = load i8, i8* %399
%416 = load i8, i8* %400
%417 = load i8, i8* %401
%418 = load i8, i8* %402
%419 = load i8, i8* %403
%420 = load i8, i8* %404
%421 = load i8, i8* %405
%422 = load i8, i8* %406
%423 = load i8, i8* %407
%424 = load i8, i8* %408
%425 = load i8, i8* %409
%426 = load i8, i8* %410
%427 = insertelement <16 x i8> poison, i8 %411, i64 0
%428 = insertelement <16 x i8> %427, i8 %412, i64 1
%429 = insertelement <16 x i8> %428, i8 %413, i64 2
%430 = insertelement <16 x i8> %429, i8 %414, i64 3
%431 = insertelement <16 x i8> %430, i8 %415, i64 4
%432 = insertelement <16 x i8> %431, i8 %416, i64 5
%433 = insertelement <16 x i8> %432, i8 %417, i64 6
%434 = insertelement <16 x i8> %433, i8 %418, i64 7
%435 = insertelement <16 x i8> %434, i8 %419, i64 8
%436 = insertelement <16 x i8> %435, i8 %420, i64 9
%437 = insertelement <16 x i8> %436, i8 %421, i64 10
%438 = insertelement <16 x i8> %437, i8 %422, i64 11
%439 = insertelement <16 x i8> %438, i8 %423, i64 12
%440 = insertelement <16 x i8> %439, i8 %424, i64 13
%441 = insertelement <16 x i8> %440, i8 %425, i64 14
%442 = insertelement <16 x i8> %441, i8 %426, i64 15
%443 = zext <16 x i8> %442 to <16 x i32>
%444 = mul nuw nsw <16 x i32> %313, <i32 9798, i32 9798, i32 9798, i32 9798, i32 9798, i32 9798, i32 9798, i32 9798, i32 9798, i32 9798, i32 9798, i32 9798, i32 9798, i32 9798, i32 9798, i32 9798>
%445 = mul nuw nsw <16 x i32> %378, <i32 19235, i32 19235, i32 19235, i32 19235, i32 19235, i32 19235, i32 19235, i32 19235, i32 19235, i32 19235, i32 19235, i32 19235, i32 19235, i32 19235, i32 19235, i32 19235>
%446 = add nuw nsw <16 x i32> %445, %444
%447 = mul nuw nsw <16 x i32> %443, <i32 3736, i32 3736, i32 3736, i32 3736, i32 3736, i32 3736, i32 3736, i32 3736, i32 3736, i32 3736, i32 3736, i32 3736, i32 3736, i32 3736, i32 3736, i32 3736>
%448 = add nuw nsw <16 x i32> %446, %447
%449 = lshr <16 x i32> %448, <i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15>
%450 = mul nsw <16 x i32> %313, <i32 -4784, i32 -4784, i32 -4784, i32 -4784, i32 -4784, i32 -4784, i32 -4784, i32 -4784, i32 -4784, i32 -4784, i32 -4784, i32 -4784, i32 -4784, i32 -4784, i32 -4784, i32 -4784>
%451 = mul nsw <16 x i32> %378, <i32 -9437, i32 -9437, i32 -9437, i32 -9437, i32 -9437, i32 -9437, i32 -9437, i32 -9437, i32 -9437, i32 -9437, i32 -9437, i32 -9437, i32 -9437, i32 -9437, i32 -9437, i32 -9437>
%452 = add nsw <16 x i32> %451, %450
%453 = mul nuw nsw <16 x i32> %443, <i32 14221, i32 14221, i32 14221, i32 14221, i32 14221, i32 14221, i32 14221, i32 14221, i32 14221, i32 14221, i32 14221, i32 14221, i32 14221, i32 14221, i32 14221, i32 14221>
%454 = add nsw <16 x i32> %452, %453
%455 = lshr <16 x i32> %454, <i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15>
%456 = mul nuw nsw <16 x i32> %313, <i32 20218, i32 20218, i32 20218, i32 20218, i32 20218, i32 20218, i32 20218, i32 20218, i32 20218, i32 20218, i32 20218, i32 20218, i32 20218, i32 20218, i32 20218, i32 20218>
%457 = mul nsw <16 x i32> %378, <i32 -16941, i32 -16941, i32 -16941, i32 -16941, i32 -16941, i32 -16941, i32 -16941, i32 -16941, i32 -16941, i32 -16941, i32 -16941, i32 -16941, i32 -16941, i32 -16941, i32 -16941, i32 -16941>
%458 = add nsw <16 x i32> %457, %456
%459 = mul nsw <16 x i32> %443, <i32 -3277, i32 -3277, i32 -3277, i32 -3277, i32 -3277, i32 -3277, i32 -3277, i32 -3277, i32 -3277, i32 -3277, i32 -3277, i32 -3277, i32 -3277, i32 -3277, i32 -3277, i32 -3277>
%460 = add nsw <16 x i32> %458, %459
%461 = ashr <16 x i32> %460, <i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15>
%462 = icmp sgt <16 x i32> %461, <i32 -128, i32 -128, i32 -128, i32 -128, i32 -128, i32 -128, i32 -128, i32 -128, i32 -128, i32 -128, i32 -128, i32 -128, i32 -128, i32 -128, i32 -128, i32 -128>
%463 = select <16 x i1> %462, <16 x i32> %461, <16 x i32> <i32 -128, i32 -128, i32 -128, i32 -128, i32 -128, i32 -128, i32 -128, i32 -128, i32 -128, i32 -128, i32 -128, i32 -128, i32 -128, i32 -128, i32 -128, i32 -128>
%464 = icmp slt <16 x i32> %463, <i32 127, i32 127, i32 127, i32 127, i32 127, i32 127, i32 127, i32 127, i32 127, i32 127, i32 127, i32 127, i32 127, i32 127, i32 127, i32 127>
%465 = select <16 x i1> %464, <16 x i32> %463, <16 x i32> <i32 127, i32 127, i32 127, i32 127, i32 127, i32 127, i32 127, i32 127, i32 127, i32 127, i32 127, i32 127, i32 127, i32 127, i32 127, i32 127>
%466 = trunc <16 x i32> %232 to <16 x i8>
%467 = add nuw nsw <16 x i32> %238, <i32 256, i32 256, i32 256, i32 256, i32 256, i32 256, i32 256, i32 256, i32 256, i32 256, i32 256, i32 256, i32 256, i32 256, i32 256, i32 256>
%468 = add nuw nsw <16 x i32> %467, %455
%469 = lshr <16 x i32> %468, <i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1>
%470 = trunc <16 x i32> %469 to <16 x i8>
%471 = trunc <16 x i32> %449 to <16 x i8>
%472 = add nsw <16 x i32> %248, <i32 256, i32 256, i32 256, i32 256, i32 256, i32 256, i32 256, i32 256, i32 256, i32 256, i32 256, i32 256, i32 256, i32 256, i32 256, i32 256>
%473 = add nsw <16 x i32> %472, %465
%474 = lshr <16 x i32> %473, <i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1>
%475 = trunc <16 x i32> %474 to <16 x i8>
%476 = or i64 %31, 3
%477 = getelementptr inbounds i8, i8* %28, i64 %476
%478 = bitcast i8* %477 to <64 x i8>*
%479 = shufflevector <16 x i8> %466, <16 x i8> %470, <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>
%480 = shufflevector <16 x i8> %471, <16 x i8> %475, <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>
%481 = shufflevector <32 x i8> %479, <32 x i8> %480, <64 x i32> <i32 0, i32 16, i32 32, i32 48, i32 1, i32 17, i32 33, i32 49, i32 2, i32 18, i32 34, i32 50, i32 3, i32 19, i32 35, i32 51, i32 4, i32 20, i32 36, i32 52, i32 5, i32 21, i32 37, i32 53, i32 6, i32 22, i32 38, i32 54, i32 7, i32 23, i32 39, i32 55, i32 8, i32 24, i32 40, i32 56, i32 9, i32 25, i32 41, i32 57, i32 10, i32 26, i32 42, i32 58, i32 11, i32 27, i32 43, i32 59, i32 12, i32 28, i32 44, i32 60, i32 13, i32 29, i32 45, i32 61, i32 14, i32 30, i32 46, i32 62, i32 15, i32 31, i32 47, i32 63>
store <64 x i8> %481, <64 x i8>* %478
%482 = add nuw i64 %30, 16
%483 = icmp eq i64 %482, %27
br i1 %483, label %484, label %29
484: ; preds = %29
%485 = icmp eq i64 %10, %27
br i1 %485, label %762, label %486
486: ; preds = %484
%487 = mul i64 %27, 6
%488 = shl i64 %27, 2
%489 = and i64 %10, 12
%490 = icmp eq i64 %489, 0
br i1 %490, label %669, label %491
491: ; preds = %24, %486
%492 = phi i64 [ %27, %486 ], [ 0, %24 ]
%493 = add nsw i64 %7, -1
%494 = udiv i64 %493, 6
%495 = add nuw nsw i64 %494, 1
%496 = and i64 %495, 9223372036854775804
%497 = shl i64 %496, 2
%498 = mul i64 %496, 6
%499 = getelementptr inbounds i8, i8* %1, i64 -3
br label %500
500: ; preds = %500, %491
%501 = phi i64 [ %492, %491 ], [ %665, %500 ]
%502 = shl i64 %501, 2
%503 = mul i64 %501, 6
%504 = or i64 %503, 6
%505 = add i64 %503, 12
%506 = add i64 %503, 18
%507 = getelementptr inbounds i8, i8* %0, i64 %503
%508 = getelementptr inbounds i8, i8* %0, i64 %504
%509 = getelementptr inbounds i8, i8* %0, i64 %505
%510 = getelementptr inbounds i8, i8* %0, i64 %506
%511 = load i8, i8* %507
%512 = load i8, i8* %508
%513 = load i8, i8* %509
%514 = load i8, i8* %510
%515 = insertelement <4 x i8> poison, i8 %511, i64 0
%516 = insertelement <4 x i8> %515, i8 %512, i64 1
%517 = insertelement <4 x i8> %516, i8 %513, i64 2
%518 = insertelement <4 x i8> %517, i8 %514, i64 3
%519 = zext <4 x i8> %518 to <4 x i32>
%520 = or i64 %503, 1
%521 = or i64 %503, 7
%522 = or i64 %505, 1
%523 = or i64 %506, 1
%524 = getelementptr inbounds i8, i8* %0, i64 %520
%525 = getelementptr inbounds i8, i8* %0, i64 %521
%526 = getelementptr inbounds i8, i8* %0, i64 %522
%527 = getelementptr inbounds i8, i8* %0, i64 %523
%528 = load i8, i8* %524
%529 = load i8, i8* %525
%530 = load i8, i8* %526
%531 = load i8, i8* %527
%532 = insertelement <4 x i8> poison, i8 %528, i64 0
%533 = insertelement <4 x i8> %532, i8 %529, i64 1
%534 = insertelement <4 x i8> %533, i8 %530, i64 2
%535 = insertelement <4 x i8> %534, i8 %531, i64 3
%536 = zext <4 x i8> %535 to <4 x i32>
%537 = or i64 %503, 2
%538 = add i64 %503, 8
%539 = add i64 %503, 14
%540 = add i64 %503, 20
%541 = getelementptr inbounds i8, i8* %0, i64 %537
%542 = getelementptr inbounds i8, i8* %0, i64 %538
%543 = getelementptr inbounds i8, i8* %0, i64 %539
%544 = getelementptr inbounds i8, i8* %0, i64 %540
%545 = load i8, i8* %541
%546 = load i8, i8* %542
%547 = load i8, i8* %543
%548 = load i8, i8* %544
%549 = insertelement <4 x i8> poison, i8 %545, i64 0
%550 = insertelement <4 x i8> %549, i8 %546, i64 1
%551 = insertelement <4 x i8> %550, i8 %547, i64 2
%552 = insertelement <4 x i8> %551, i8 %548, i64 3
%553 = zext <4 x i8> %552 to <4 x i32>
%554 = mul nuw nsw <4 x i32> %519, <i32 9798, i32 9798, i32 9798, i32 9798>
%555 = mul nuw nsw <4 x i32> %536, <i32 19235, i32 19235, i32 19235, i32 19235>
%556 = add nuw nsw <4 x i32> %555, %554
%557 = mul nuw nsw <4 x i32> %553, <i32 3736, i32 3736, i32 3736, i32 3736>
%558 = add nuw nsw <4 x i32> %556, %557
%559 = lshr <4 x i32> %558, <i32 15, i32 15, i32 15, i32 15>
%560 = mul nsw <4 x i32> %519, <i32 -4784, i32 -4784, i32 -4784, i32 -4784>
%561 = mul nsw <4 x i32> %536, <i32 -9437, i32 -9437, i32 -9437, i32 -9437>
%562 = add nsw <4 x i32> %561, %560
%563 = mul nuw nsw <4 x i32> %553, <i32 14221, i32 14221, i32 14221, i32 14221>
%564 = add nsw <4 x i32> %562, %563
%565 = lshr <4 x i32> %564, <i32 15, i32 15, i32 15, i32 15>
%566 = mul nuw nsw <4 x i32> %519, <i32 20218, i32 20218, i32 20218, i32 20218>
%567 = mul nsw <4 x i32> %536, <i32 -16941, i32 -16941, i32 -16941, i32 -16941>
%568 = add nsw <4 x i32> %567, %566
%569 = mul nsw <4 x i32> %553, <i32 -3277, i32 -3277, i32 -3277, i32 -3277>
%570 = add nsw <4 x i32> %568, %569
%571 = ashr <4 x i32> %570, <i32 15, i32 15, i32 15, i32 15>
%572 = icmp sgt <4 x i32> %571, <i32 -128, i32 -128, i32 -128, i32 -128>
%573 = select <4 x i1> %572, <4 x i32> %571, <4 x i32> <i32 -128, i32 -128, i32 -128, i32 -128>
%574 = icmp slt <4 x i32> %573, <i32 127, i32 127, i32 127, i32 127>
%575 = select <4 x i1> %574, <4 x i32> %573, <4 x i32> <i32 127, i32 127, i32 127, i32 127>
%576 = or i64 %503, 3
%577 = add i64 %503, 9
%578 = add i64 %503, 15
%579 = add i64 %503, 21
%580 = getelementptr inbounds i8, i8* %0, i64 %576
%581 = getelementptr inbounds i8, i8* %0, i64 %577
%582 = getelementptr inbounds i8, i8* %0, i64 %578
%583 = getelementptr inbounds i8, i8* %0, i64 %579
%584 = load i8, i8* %580
%585 = load i8, i8* %581
%586 = load i8, i8* %582
%587 = load i8, i8* %583
%588 = insertelement <4 x i8> poison, i8 %584, i64 0
%589 = insertelement <4 x i8> %588, i8 %585, i64 1
%590 = insertelement <4 x i8> %589, i8 %586, i64 2
%591 = insertelement <4 x i8> %590, i8 %587, i64 3
%592 = zext <4 x i8> %591 to <4 x i32>
%593 = or i64 %503, 4
%594 = add i64 %503, 10
%595 = add i64 %503, 16
%596 = add i64 %503, 22
%597 = getelementptr inbounds i8, i8* %0, i64 %593
%598 = getelementptr inbounds i8, i8* %0, i64 %594
%599 = getelementptr inbounds i8, i8* %0, i64 %595
%600 = getelementptr inbounds i8, i8* %0, i64 %596
%601 = load i8, i8* %597
%602 = load i8, i8* %598
%603 = load i8, i8* %599
%604 = load i8, i8* %600
%605 = insertelement <4 x i8> poison, i8 %601, i64 0
%606 = insertelement <4 x i8> %605, i8 %602, i64 1
%607 = insertelement <4 x i8> %606, i8 %603, i64 2
%608 = insertelement <4 x i8> %607, i8 %604, i64 3
%609 = zext <4 x i8> %608 to <4 x i32>
%610 = or i64 %503, 5
%611 = add i64 %503, 11
%612 = add i64 %503, 17
%613 = add i64 %503, 23
%614 = getelementptr inbounds i8, i8* %0, i64 %610
%615 = getelementptr inbounds i8, i8* %0, i64 %611
%616 = getelementptr inbounds i8, i8* %0, i64 %612
%617 = getelementptr inbounds i8, i8* %0, i64 %613
%618 = load i8, i8* %614
%619 = load i8, i8* %615
%620 = load i8, i8* %616
%621 = load i8, i8* %617
%622 = insertelement <4 x i8> poison, i8 %618, i64 0
%623 = insertelement <4 x i8> %622, i8 %619, i64 1
%624 = insertelement <4 x i8> %623, i8 %620, i64 2
%625 = insertelement <4 x i8> %624, i8 %621, i64 3
%626 = zext <4 x i8> %625 to <4 x i32>
%627 = mul nuw nsw <4 x i32> %592, <i32 9798, i32 9798, i32 9798, i32 9798>
%628 = mul nuw nsw <4 x i32> %609, <i32 19235, i32 19235, i32 19235, i32 19235>
%629 = add nuw nsw <4 x i32> %628, %627
%630 = mul nuw nsw <4 x i32> %626, <i32 3736, i32 3736, i32 3736, i32 3736>
%631 = add nuw nsw <4 x i32> %629, %630
%632 = lshr <4 x i32> %631, <i32 15, i32 15, i32 15, i32 15>
%633 = mul nsw <4 x i32> %592, <i32 -4784, i32 -4784, i32 -4784, i32 -4784>
%634 = mul nsw <4 x i32> %609, <i32 -9437, i32 -9437, i32 -9437, i32 -9437>
%635 = add nsw <4 x i32> %634, %633
%636 = mul nuw nsw <4 x i32> %626, <i32 14221, i32 14221, i32 14221, i32 14221>
%637 = add nsw <4 x i32> %635, %636
%638 = lshr <4 x i32> %637, <i32 15, i32 15, i32 15, i32 15>
%639 = mul nuw nsw <4 x i32> %592, <i32 20218, i32 20218, i32 20218, i32 20218>
%640 = mul nsw <4 x i32> %609, <i32 -16941, i32 -16941, i32 -16941, i32 -16941>
%641 = add nsw <4 x i32> %640, %639
%642 = mul nsw <4 x i32> %626, <i32 -3277, i32 -3277, i32 -3277, i32 -3277>
%643 = add nsw <4 x i32> %641, %642
%644 = ashr <4 x i32> %643, <i32 15, i32 15, i32 15, i32 15>
%645 = icmp sgt <4 x i32> %644, <i32 -128, i32 -128, i32 -128, i32 -128>
%646 = select <4 x i1> %645, <4 x i32> %644, <4 x i32> <i32 -128, i32 -128, i32 -128, i32 -128>
%647 = icmp slt <4 x i32> %646, <i32 127, i32 127, i32 127, i32 127>
%648 = select <4 x i1> %647, <4 x i32> %646, <4 x i32> <i32 127, i32 127, i32 127, i32 127>
%649 = trunc <4 x i32> %559 to <4 x i8>
%650 = add nuw nsw <4 x i32> %565, <i32 256, i32 256, i32 256, i32 256>
%651 = add nuw nsw <4 x i32> %650, %638
%652 = lshr <4 x i32> %651, <i32 1, i32 1, i32 1, i32 1>
%653 = trunc <4 x i32> %652 to <4 x i8>
%654 = trunc <4 x i32> %632 to <4 x i8>
%655 = add nsw <4 x i32> %575, <i32 256, i32 256, i32 256, i32 256>
%656 = add nsw <4 x i32> %655, %648
%657 = lshr <4 x i32> %656, <i32 1, i32 1, i32 1, i32 1>
%658 = trunc <4 x i32> %657 to <4 x i8>
%659 = or i64 %502, 3
%660 = getelementptr inbounds i8, i8* %499, i64 %659
%661 = bitcast i8* %660 to <16 x i8>*
%662 = shufflevector <4 x i8> %649, <4 x i8> %653, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>
%663 = shufflevector <4 x i8> %654, <4 x i8> %658, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>
%664 = shufflevector <8 x i8> %662, <8 x i8> %663, <16 x i32> <i32 0, i32 4, i32 8, i32 12, i32 1, i32 5, i32 9, i32 13, i32 2, i32 6, i32 10, i32 14, i32 3, i32 7, i32 11, i32 15>
store <16 x i8> %664, <16 x i8>* %661
%665 = add nuw i64 %501, 4
%666 = icmp eq i64 %665, %496
br i1 %666, label %667, label %500
667: ; preds = %500
%668 = icmp eq i64 %495, %496
br i1 %668, label %762, label %669
669: ; preds = %12, %6, %486, %667
%670 = phi i64 [ 0, %6 ], [ 0, %12 ], [ %488, %486 ], [ %497, %667 ]
%671 = phi i64 [ 0, %6 ], [ 0, %12 ], [ %487, %486 ], [ %498, %667 ]
br label %672
672: ; preds = %669, %672
%673 = phi i64 [ %760, %672 ], [ %670, %669 ]
%674 = phi i64 [ %759, %672 ], [ %671, %669 ]
%675 = getelementptr inbounds i8, i8* %0, i64 %674
%676 = load i8, i8* %675
%677 = zext i8 %676 to i32
%678 = or i64 %674, 1
%679 = getelementptr inbounds i8, i8* %0, i64 %678
%680 = load i8, i8* %679
%681 = zext i8 %680 to i32
%682 = add nuw nsw i64 %674, 2
%683 = getelementptr inbounds i8, i8* %0, i64 %682
%684 = load i8, i8* %683
%685 = zext i8 %684 to i32
%686 = mul nuw nsw i32 %677, 9798
%687 = mul nuw nsw i32 %681, 19235
%688 = add nuw nsw i32 %687, %686
%689 = mul nuw nsw i32 %685, 3736
%690 = add nuw nsw i32 %688, %689
%691 = lshr i32 %690, 15
%692 = mul nsw i32 %677, -4784
%693 = mul nsw i32 %681, -9437
%694 = add nsw i32 %693, %692
%695 = mul nuw nsw i32 %685, 14221
%696 = add nsw i32 %694, %695
%697 = lshr i32 %696, 15
%698 = mul nuw nsw i32 %677, 20218
%699 = mul nsw i32 %681, -16941
%700 = add nsw i32 %699, %698
%701 = mul nsw i32 %685, -3277
%702 = add nsw i32 %700, %701
%703 = ashr i32 %702, 15
%704 = icmp sgt i32 %703, -128
%705 = select i1 %704, i32 %703, i32 -128
%706 = icmp slt i32 %705, 127
%707 = select i1 %706, i32 %705, i32 127
%708 = add nuw nsw i64 %674, 3
%709 = getelementptr inbounds i8, i8* %0, i64 %708
%710 = load i8, i8* %709
%711 = zext i8 %710 to i32
%712 = add nuw nsw i64 %674, 4
%713 = getelementptr inbounds i8, i8* %0, i64 %712
%714 = load i8, i8* %713
%715 = zext i8 %714 to i32
%716 = add nuw nsw i64 %674, 5
%717 = getelementptr inbounds i8, i8* %0, i64 %716
%718 = load i8, i8* %717
%719 = zext i8 %718 to i32
%720 = mul nuw nsw i32 %711, 9798
%721 = mul nuw nsw i32 %715, 19235
%722 = add nuw nsw i32 %721, %720
%723 = mul nuw nsw i32 %719, 3736
%724 = add nuw nsw i32 %722, %723
%725 = lshr i32 %724, 15
%726 = mul nsw i32 %711, -4784
%727 = mul nsw i32 %715, -9437
%728 = add nsw i32 %727, %726
%729 = mul nuw nsw i32 %719, 14221
%730 = add nsw i32 %728, %729
%731 = lshr i32 %730, 15
%732 = mul nuw nsw i32 %711, 20218
%733 = mul nsw i32 %715, -16941
%734 = add nsw i32 %733, %732
%735 = mul nsw i32 %719, -3277
%736 = add nsw i32 %734, %735
%737 = ashr i32 %736, 15
%738 = icmp sgt i32 %737, -128
%739 = select i1 %738, i32 %737, i32 -128
%740 = icmp slt i32 %739, 127
%741 = select i1 %740, i32 %739, i32 127
%742 = trunc i32 %691 to i8
%743 = getelementptr inbounds i8, i8* %1, i64 %673
store i8 %742, i8* %743
%744 = add nuw nsw i32 %697, 256
%745 = add nuw nsw i32 %744, %731
%746 = lshr i32 %745, 1
%747 = trunc i32 %746 to i8
%748 = or i64 %673, 1
%749 = getelementptr inbounds i8, i8* %1, i64 %748
store i8 %747, i8* %749
%750 = trunc i32 %725 to i8
%751 = or i64 %673, 2
%752 = getelementptr inbounds i8, i8* %1, i64 %751
store i8 %750, i8* %752
%753 = add nsw i32 %707, 256
%754 = add nsw i32 %753, %741
%755 = lshr i32 %754, 1
%756 = trunc i32 %755 to i8
%757 = or i64 %673, 3
%758 = getelementptr inbounds i8, i8* %1, i64 %757
store i8 %756, i8* %758
%759 = add nuw nsw i64 %674, 6
%760 = add nuw nsw i64 %673, 4
%761 = icmp ult i64 %759, %7
br i1 %761, label %672, label %762
762: ; preds = %672, %484, %667, %3
ret void
}