void yuyv422_to_yuv422sp(unsigned char *bufsrc, unsigned char *bufdest,
                         int width, int height) {
  unsigned char *ptrsrcy1, *ptrsrcy2;
  unsigned char *ptrsrcy3, *ptrsrcy4;
  unsigned char *ptrsrccb1, *ptrsrccb2;
  unsigned char *ptrsrccb3, *ptrsrccb4;
  unsigned char *ptrsrccr1, *ptrsrccr2;
  unsigned char *ptrsrccr3, *ptrsrccr4;
  int srcystride, srcccstride;
  ptrsrcy1 = bufsrc;
  ptrsrcy2 = bufsrc + (width << 1);
  ptrsrcy3 = bufsrc + (width << 1) * 2;
  ptrsrcy4 = bufsrc + (width << 1) * 3;
  ptrsrccb1 = bufsrc + 1;
  ptrsrccb2 = bufsrc + (width << 1) + 1;
  ptrsrccb3 = bufsrc + (width << 1) * 2 + 1;
  ptrsrccb4 = bufsrc + (width << 1) * 3 + 1;
  ptrsrccr1 = bufsrc + 3;
  ptrsrccr2 = bufsrc + (width << 1) + 3;
  ptrsrccr3 = bufsrc + (width << 1) * 2 + 3;
  ptrsrccr4 = bufsrc + (width << 1) * 3 + 3;
  srcystride = (width << 1) * 3;
  srcccstride = (width << 1) * 3;
  unsigned char *ptrdesty1, *ptrdesty2;
  unsigned char *ptrdesty3, *ptrdesty4;
  unsigned char *ptrdestcb1, *ptrdestcb2;
  unsigned char *ptrdestcb3, *ptrdestcb4;
  unsigned char *ptrdestcr1, *ptrdestcr2;
  unsigned char *ptrdestcr3, *ptrdestcr4;
  int destystride, destccstride;
  ptrdesty1 = bufdest;
  ptrdesty2 = bufdest + width;
  ptrdesty3 = bufdest + width * 2;
  ptrdesty4 = bufdest + width * 3;
  ptrdestcb1 = bufdest + width * height;
  ptrdestcb2 = bufdest + width * height + width;
  ptrdestcr1 = bufdest + width * height + 1;
  ptrdestcr2 = bufdest + width * height + width + 1;
  destystride = (width)*3;
  destccstride = width;
  int i, j;
  for (j = 0; j < (height / 4); j++) {
    for (i = 0; i < (width / 2); i++) {
      (*ptrdesty1++) = (*ptrsrcy1);
      (*ptrdesty2++) = (*ptrsrcy2);
      (*ptrdesty3++) = (*ptrsrcy3);
      (*ptrdesty4++) = (*ptrsrcy4);
      ptrsrcy1 += 2;
      ptrsrcy2 += 2;
      ptrsrcy3 += 2;
      ptrsrcy4 += 2;
      (*ptrdesty1++) = (*ptrsrcy1);
      (*ptrdesty2++) = (*ptrsrcy2);
      (*ptrdesty3++) = (*ptrsrcy3);
      (*ptrdesty4++) = (*ptrsrcy4);
      ptrsrcy1 += 2;
      ptrsrcy2 += 2;
      ptrsrcy3 += 2;
      ptrsrcy4 += 2;
      (*ptrdestcb1) = (*ptrsrccb1);
      (*ptrdestcb2) = (*ptrsrccb2);
      (*ptrdestcb3) = (*ptrsrccb3);
      (*ptrdestcb4) = (*ptrsrccb4);
      ptrdestcb1 += 2;
      ptrdestcb2 += 2;
      ptrdestcb3 += 2;
      ptrdestcb4 += 2;
      ptrsrccb1 += 4;
      ptrsrccb2 += 4;
      ptrsrccb3 += 4;
      ptrsrccb4 += 4;
      (*ptrdestcr1) = (*ptrsrccr1);
      (*ptrdestcr2) = (*ptrsrccr2);
      (*ptrdestcr3) = (*ptrsrccr3);
      (*ptrdestcr4) = (*ptrsrccr4);
      ptrdestcr1 += 2;
      ptrdestcr2 += 2;
      ptrdestcr3 += 2;
      ptrdestcr4 += 2;
      ptrsrccr1 += 4;
      ptrsrccr2 += 4;
      ptrsrccr3 += 4;
      ptrsrccr4 += 4;
    }
    ptrsrcy1 += srcystride;
    ptrsrcy2 += srcystride;
    ptrsrcy3 += srcystride;
    ptrsrcy4 += srcystride;
    ptrsrccb1 += srcccstride;
    ptrsrccb3 += srcccstride;
    ptrsrccr1 += srcccstride;
    ptrsrccr3 += srcccstride;
    ptrdesty1 += destystride;
    ptrdesty2 += destystride;
    ptrdesty3 += destystride;
    ptrdesty4 += destystride;
    ptrdestcb1 += destccstride;
    ptrdestcb2 += destccstride;
    ptrdestcb3 += destccstride;
    ptrdestcb4 += destccstride;
    ptrdestcr1 += destccstride;
    ptrdestcr2 += destccstride;
    ptrdestcr3 += destccstride;
    ptrdestcr4 += destccstride;
  }
}


x86 assembly (clang, -O0):
<yuyv422_to_yuv422sp>:
push   %rbp
mov    %rsp,%rbp
sub    $0x78,%rsp
mov    %rdi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
mov    %edx,-0x14(%rbp)
mov    %ecx,-0x18(%rbp)
mov    -0x8(%rbp),%rax
mov    %rax,-0x20(%rbp)
mov    -0x8(%rbp),%rax
mov    -0x14(%rbp),%ecx
shl    $0x1,%ecx
movslq %ecx,%rcx
add    %rcx,%rax
mov    %rax,-0x28(%rbp)
mov    -0x8(%rbp),%rax
mov    -0x14(%rbp),%ecx
shl    $0x1,%ecx
shl    $0x1,%ecx
movslq %ecx,%rcx
add    %rcx,%rax
mov    %rax,-0x30(%rbp)
mov    -0x8(%rbp),%rax
mov    -0x14(%rbp),%ecx
shl    $0x1,%ecx
imul   $0x3,%ecx,%ecx
movslq %ecx,%rcx
add    %rcx,%rax
mov    %rax,-0x38(%rbp)
mov    -0x8(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x40(%rbp)
mov    -0x8(%rbp),%rax
mov    -0x14(%rbp),%ecx
shl    $0x1,%ecx
movslq %ecx,%rcx
add    %rcx,%rax
add    $0x1,%rax
mov    %rax,-0x48(%rbp)
mov    -0x8(%rbp),%rax
mov    -0x14(%rbp),%ecx
shl    $0x1,%ecx
shl    $0x1,%ecx
movslq %ecx,%rcx
add    %rcx,%rax
add    $0x1,%rax
mov    %rax,-0x50(%rbp)
mov    -0x8(%rbp),%rax
mov    -0x14(%rbp),%ecx
shl    $0x1,%ecx
imul   $0x3,%ecx,%ecx
movslq %ecx,%rcx
add    %rcx,%rax
add    $0x1,%rax
mov    %rax,-0x58(%rbp)
mov    -0x8(%rbp),%rax
add    $0x3,%rax
mov    %rax,-0x60(%rbp)
mov    -0x8(%rbp),%rax
mov    -0x14(%rbp),%ecx
shl    $0x1,%ecx
movslq %ecx,%rcx
add    %rcx,%rax
add    $0x3,%rax
mov    %rax,-0x68(%rbp)
mov    -0x8(%rbp),%rax
mov    -0x14(%rbp),%ecx
shl    $0x1,%ecx
shl    $0x1,%ecx
movslq %ecx,%rcx
add    %rcx,%rax
add    $0x3,%rax
mov    %rax,-0x70(%rbp)
mov    -0x8(%rbp),%rax
mov    -0x14(%rbp),%ecx
shl    $0x1,%ecx
imul   $0x3,%ecx,%ecx
movslq %ecx,%rcx
add    %rcx,%rax
add    $0x3,%rax
mov    %rax,-0x78(%rbp)
mov    -0x14(%rbp),%eax
shl    $0x1,%eax
imul   $0x3,%eax,%eax
mov    %eax,-0x7c(%rbp)
mov    -0x14(%rbp),%eax
shl    $0x1,%eax
imul   $0x3,%eax,%eax
mov    %eax,-0x80(%rbp)
mov    -0x10(%rbp),%rax
mov    %rax,-0x88(%rbp)
mov    -0x10(%rbp),%rax
movslq -0x14(%rbp),%rcx
add    %rcx,%rax
mov    %rax,-0x90(%rbp)
mov    -0x10(%rbp),%rax
mov    -0x14(%rbp),%ecx
shl    $0x1,%ecx
movslq %ecx,%rcx
add    %rcx,%rax
mov    %rax,-0x98(%rbp)
mov    -0x10(%rbp),%rax
imul   $0x3,-0x14(%rbp),%ecx
movslq %ecx,%rcx
add    %rcx,%rax
mov    %rax,-0xa0(%rbp)
mov    -0x10(%rbp),%rax
mov    -0x14(%rbp),%ecx
imul   -0x18(%rbp),%ecx
movslq %ecx,%rcx
add    %rcx,%rax
mov    %rax,-0xa8(%rbp)
mov    -0x10(%rbp),%rax
mov    -0x14(%rbp),%ecx
imul   -0x18(%rbp),%ecx
movslq %ecx,%rcx
add    %rcx,%rax
movslq -0x14(%rbp),%rcx
add    %rcx,%rax
mov    %rax,-0xb0(%rbp)
mov    -0x10(%rbp),%rax
mov    -0x14(%rbp),%ecx
imul   -0x18(%rbp),%ecx
movslq %ecx,%rcx
add    %rcx,%rax
add    $0x1,%rax
mov    %rax,-0xc8(%rbp)
mov    -0x10(%rbp),%rax
mov    -0x14(%rbp),%ecx
imul   -0x18(%rbp),%ecx
movslq %ecx,%rcx
add    %rcx,%rax
movslq -0x14(%rbp),%rcx
add    %rcx,%rax
add    $0x1,%rax
mov    %rax,-0xd0(%rbp)
imul   $0x3,-0x14(%rbp),%eax
mov    %eax,-0xe4(%rbp)
mov    -0x14(%rbp),%eax
mov    %eax,-0xe8(%rbp)
movl   $0x0,-0xf0(%rbp)
mov    -0xf0(%rbp),%eax
mov    %eax,-0xf4(%rbp)
mov    -0x18(%rbp),%eax
mov    $0x4,%ecx
cltd
idiv   %ecx
mov    %eax,%ecx
mov    -0xf4(%rbp),%eax
cmp    %ecx,%eax
jge    17f8 <yuyv422_to_yuv422sp+0x6f8>
movl   $0x0,-0xec(%rbp)
mov    -0xec(%rbp),%eax
mov    %eax,-0xf8(%rbp)
mov    -0x14(%rbp),%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
mov    %eax,%ecx
mov    -0xf8(%rbp),%eax
cmp    %ecx,%eax
jge    1624 <yuyv422_to_yuv422sp+0x524>
mov    -0x20(%rbp),%rax
mov    (%rax),%cl
mov    -0x88(%rbp),%rax
mov    %rax,%rdx
add    $0x1,%rdx
mov    %rdx,-0x88(%rbp)
mov    %cl,(%rax)
mov    -0x28(%rbp),%rax
mov    (%rax),%cl
mov    -0x90(%rbp),%rax
mov    %rax,%rdx
add    $0x1,%rdx
mov    %rdx,-0x90(%rbp)
mov    %cl,(%rax)
mov    -0x30(%rbp),%rax
mov    (%rax),%cl
mov    -0x98(%rbp),%rax
mov    %rax,%rdx
add    $0x1,%rdx
mov    %rdx,-0x98(%rbp)
mov    %cl,(%rax)
mov    -0x38(%rbp),%rax
mov    (%rax),%cl
mov    -0xa0(%rbp),%rax
mov    %rax,%rdx
add    $0x1,%rdx
mov    %rdx,-0xa0(%rbp)
mov    %cl,(%rax)
mov    -0x20(%rbp),%rax
add    $0x2,%rax
mov    %rax,-0x20(%rbp)
mov    -0x28(%rbp),%rax
add    $0x2,%rax
mov    %rax,-0x28(%rbp)
mov    -0x30(%rbp),%rax
add    $0x2,%rax
mov    %rax,-0x30(%rbp)
mov    -0x38(%rbp),%rax
add    $0x2,%rax
mov    %rax,-0x38(%rbp)
mov    -0x20(%rbp),%rax
mov    (%rax),%cl
mov    -0x88(%rbp),%rax
mov    %rax,%rdx
add    $0x1,%rdx
mov    %rdx,-0x88(%rbp)
mov    %cl,(%rax)
mov    -0x28(%rbp),%rax
mov    (%rax),%cl
mov    -0x90(%rbp),%rax
mov    %rax,%rdx
add    $0x1,%rdx
mov    %rdx,-0x90(%rbp)
mov    %cl,(%rax)
mov    -0x30(%rbp),%rax
mov    (%rax),%cl
mov    -0x98(%rbp),%rax
mov    %rax,%rdx
add    $0x1,%rdx
mov    %rdx,-0x98(%rbp)
mov    %cl,(%rax)
mov    -0x38(%rbp),%rax
mov    (%rax),%cl
mov    -0xa0(%rbp),%rax
mov    %rax,%rdx
add    $0x1,%rdx
mov    %rdx,-0xa0(%rbp)
mov    %cl,(%rax)
mov    -0x20(%rbp),%rax
add    $0x2,%rax
mov    %rax,-0x20(%rbp)
mov    -0x28(%rbp),%rax
add    $0x2,%rax
mov    %rax,-0x28(%rbp)
mov    -0x30(%rbp),%rax
add    $0x2,%rax
mov    %rax,-0x30(%rbp)
mov    -0x38(%rbp),%rax
add    $0x2,%rax
mov    %rax,-0x38(%rbp)
mov    -0x40(%rbp),%rax
mov    (%rax),%cl
mov    -0xa8(%rbp),%rax
mov    %cl,(%rax)
mov    -0x48(%rbp),%rax
mov    (%rax),%cl
mov    -0xb0(%rbp),%rax
mov    %cl,(%rax)
mov    -0x50(%rbp),%rax
mov    (%rax),%cl
mov    -0xb8(%rbp),%rax
mov    %cl,(%rax)
mov    -0x58(%rbp),%rax
mov    (%rax),%cl
mov    -0xc0(%rbp),%rax
mov    %cl,(%rax)
mov    -0xa8(%rbp),%rax
add    $0x2,%rax
mov    %rax,-0xa8(%rbp)
mov    -0xb0(%rbp),%rax
add    $0x2,%rax
mov    %rax,-0xb0(%rbp)
mov    -0xb8(%rbp),%rax
add    $0x2,%rax
mov    %rax,-0xb8(%rbp)
mov    -0xc0(%rbp),%rax
add    $0x2,%rax
mov    %rax,-0xc0(%rbp)
mov    -0x40(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0x40(%rbp)
mov    -0x48(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0x48(%rbp)
mov    -0x50(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0x50(%rbp)
mov    -0x58(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0x58(%rbp)
mov    -0x60(%rbp),%rax
mov    (%rax),%cl
mov    -0xc8(%rbp),%rax
mov    %cl,(%rax)
mov    -0x68(%rbp),%rax
mov    (%rax),%cl
mov    -0xd0(%rbp),%rax
mov    %cl,(%rax)
mov    -0x70(%rbp),%rax
mov    (%rax),%cl
mov    -0xd8(%rbp),%rax
mov    %cl,(%rax)
mov    -0x78(%rbp),%rax
mov    (%rax),%cl
mov    -0xe0(%rbp),%rax
mov    %cl,(%rax)
mov    -0xc8(%rbp),%rax
add    $0x2,%rax
mov    %rax,-0xc8(%rbp)
mov    -0xd0(%rbp),%rax
add    $0x2,%rax
mov    %rax,-0xd0(%rbp)
mov    -0xd8(%rbp),%rax
add    $0x2,%rax
mov    %rax,-0xd8(%rbp)
mov    -0xe0(%rbp),%rax
add    $0x2,%rax
mov    %rax,-0xe0(%rbp)
mov    -0x60(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0x60(%rbp)
mov    -0x68(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0x68(%rbp)
mov    -0x70(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0x70(%rbp)
mov    -0x78(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0x78(%rbp)
mov    -0xec(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xec(%rbp)
jmp    1339 <yuyv422_to_yuv422sp+0x239>
mov    -0x7c(%rbp),%ecx
mov    -0x20(%rbp),%rax
movslq %ecx,%rcx
add    %rcx,%rax
mov    %rax,-0x20(%rbp)
mov    -0x7c(%rbp),%ecx
mov    -0x28(%rbp),%rax
movslq %ecx,%rcx
add    %rcx,%rax
mov    %rax,-0x28(%rbp)
mov    -0x7c(%rbp),%ecx
mov    -0x30(%rbp),%rax
movslq %ecx,%rcx
add    %rcx,%rax
mov    %rax,-0x30(%rbp)
mov    -0x7c(%rbp),%ecx
mov    -0x38(%rbp),%rax
movslq %ecx,%rcx
add    %rcx,%rax
mov    %rax,-0x38(%rbp)
mov    -0x80(%rbp),%ecx
mov    -0x40(%rbp),%rax
movslq %ecx,%rcx
add    %rcx,%rax
mov    %rax,-0x40(%rbp)
mov    -0x80(%rbp),%ecx
mov    -0x50(%rbp),%rax
movslq %ecx,%rcx
add    %rcx,%rax
mov    %rax,-0x50(%rbp)
mov    -0x80(%rbp),%ecx
mov    -0x60(%rbp),%rax
movslq %ecx,%rcx
add    %rcx,%rax
mov    %rax,-0x60(%rbp)
mov    -0x80(%rbp),%ecx
mov    -0x70(%rbp),%rax
movslq %ecx,%rcx
add    %rcx,%rax
mov    %rax,-0x70(%rbp)
mov    -0xe4(%rbp),%ecx
mov    -0x88(%rbp),%rax
movslq %ecx,%rcx
add    %rcx,%rax
mov    %rax,-0x88(%rbp)
mov    -0xe4(%rbp),%ecx
mov    -0x90(%rbp),%rax
movslq %ecx,%rcx
add    %rcx,%rax
mov    %rax,-0x90(%rbp)
mov    -0xe4(%rbp),%ecx
mov    -0x98(%rbp),%rax
movslq %ecx,%rcx
add    %rcx,%rax
mov    %rax,-0x98(%rbp)
mov    -0xe4(%rbp),%ecx
mov    -0xa0(%rbp),%rax
movslq %ecx,%rcx
add    %rcx,%rax
mov    %rax,-0xa0(%rbp)
mov    -0xe8(%rbp),%ecx
mov    -0xa8(%rbp),%rax
movslq %ecx,%rcx
add    %rcx,%rax
mov    %rax,-0xa8(%rbp)
mov    -0xe8(%rbp),%ecx
mov    -0xb0(%rbp),%rax
movslq %ecx,%rcx
add    %rcx,%rax
mov    %rax,-0xb0(%rbp)
mov    -0xe8(%rbp),%ecx
mov    -0xb8(%rbp),%rax
movslq %ecx,%rcx
add    %rcx,%rax
mov    %rax,-0xb8(%rbp)
mov    -0xe8(%rbp),%ecx
mov    -0xc0(%rbp),%rax
movslq %ecx,%rcx
add    %rcx,%rax
mov    %rax,-0xc0(%rbp)
mov    -0xe8(%rbp),%ecx
mov    -0xc8(%rbp),%rax
movslq %ecx,%rcx
add    %rcx,%rax
mov    %rax,-0xc8(%rbp)
mov    -0xe8(%rbp),%ecx
mov    -0xd0(%rbp),%rax
movslq %ecx,%rcx
add    %rcx,%rax
mov    %rax,-0xd0(%rbp)
mov    -0xe8(%rbp),%ecx
mov    -0xd8(%rbp),%rax
movslq %ecx,%rcx
add    %rcx,%rax
mov    %rax,-0xd8(%rbp)
mov    -0xe8(%rbp),%ecx
mov    -0xe0(%rbp),%rax
movslq %ecx,%rcx
add    %rcx,%rax
mov    %rax,-0xe0(%rbp)
mov    -0xf0(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xf0(%rbp)
jmp    1308 <yuyv422_to_yuv422sp+0x208>
add    $0x78,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<yuyv422_to_yuv422sp>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x70,%rsp
mov    %rsi,-0x78(%rsp)
lea    0x3(%rcx),%eax
test   %ecx,%ecx
cmovns %ecx,%eax
mov    %eax,-0x7c(%rsp)
cmp    $0x4,%ecx
jl     1508 <yuyv422_to_yuv422sp+0x408>
mov    %edx,%r11d
lea    (%r11,%r11,1),%eax
movslq %eax,%r10
lea    (%rdi,%r10,1),%rdx
lea    0x0(,%r11,4),%eax
movslq %eax,%r13
add    %rdi,%r13
lea    (%r10,%r10,2),%esi
movslq %esi,%r14
lea    (%rdi,%r14,1),%rbp
movslq %r11d,%r12
lea    (%r12,%r12,2),%esi
movslq %esi,%rax
mov    %rax,0x40(%rsp)
imul   %r11d,%ecx
movslq %ecx,%rsi
mov    -0x78(%rsp),%rcx
add    %rcx,%rsi
lea    (%rsi,%r12,1),%rax
sarl   $0x2,-0x7c(%rsp)
mov    %rax,%r8
lea    0x1(%rax),%r9
mov    %rsi,-0x28(%rsp)
add    $0x1,%rsi
mov    %rsi,-0x70(%rsp)
add    %rcx,%r10
mov    %r10,-0x30(%rsp)
lea    (%rcx,%r12,1),%rsi
mov    %rsi,-0x50(%rsp)
lea    0x3(%rbp),%rbx
lea    0x3(%r13),%rsi
mov    %rsi,-0x58(%rsp)
mov    %r12d,%esi
shr    $0x1f,%esi
add    %r11d,%esi
sar    %esi
mov    %esi,0x34(%rsp)
mov    %rdx,%rax
lea    0x3(%rdx),%r15
lea    0x3(%rdi),%rdx
mov    %rdx,-0x60(%rsp)
mov    %rbp,-0x48(%rsp)
add    $0x1,%rbp
mov    %r13,-0x40(%rsp)
lea    0x1(%r13),%rdx
mov    %rdx,-0x68(%rsp)
mov    %rax,-0x38(%rsp)
lea    0x1(%rax),%rdx
lea    0x1(%rdi),%rsi
mov    %rsi,-0x20(%rsp)
xor    %esi,%esi
mov    -0x78(%rsp),%r13
mov    %r11,0x60(%rsp)
mov    %r14,0x58(%rsp)
mov    %r12,0x50(%rsp)
jmp    1301 <yuyv422_to_yuv422sp+0x201>
nopl   0x0(%rax)
mov    -0x70(%rsp),%r9
mov    -0x30(%rsp),%r10
mov    -0x38(%rsp),%rax
mov    -0x40(%rsp),%rbx
mov    -0x58(%rsp),%rsi
mov    -0x48(%rsp),%r8
mov    -0x50(%rsp),%r15
mov    -0x60(%rsp),%r11
mov    -0x68(%rsp),%rbp
mov    0x38(%rsp),%rcx
mov    -0x7c(%rsp),%edx
add    %r14,%rdi
add    %r14,%rax
mov    %rax,-0x38(%rsp)
add    %r14,%rbx
mov    %rbx,-0x40(%rsp)
add    %r14,%r8
mov    %r8,-0x48(%rsp)
add    %r14,-0x20(%rsp)
add    %r14,%rbp
mov    %rbp,-0x68(%rsp)
add    %r14,%r11
mov    %r11,-0x60(%rsp)
add    %r14,%rsi
mov    %rsi,-0x58(%rsp)
mov    0x40(%rsp),%rax
mov    -0x18(%rsp),%r13
add    %rax,%r13
add    %rax,%r15
mov    %r15,-0x50(%rsp)
add    %rax,%r10
mov    %r10,-0x30(%rsp)
add    %r12,-0x28(%rsp)
mov    -0x10(%rsp),%r8
add    %r12,%r8
add    %r12,%rcx
mov    %rcx,0x38(%rsp)
add    %r12,0x48(%rsp)
add    %r12,%r9
mov    %r9,-0x70(%rsp)
mov    -0x8(%rsp),%r9
add    %r12,%r9
mov    (%rsp),%r10
add    %r12,%r10
mov    0x8(%rsp),%rax
add    %r12,%rax
mov    0x68(%rsp),%rsi
add    $0x1,%esi
mov    %edx,-0x7c(%rsp)
cmp    %edx,%esi
mov    0x28(%rsp),%rbx
mov    0x20(%rsp),%r15
mov    0x18(%rsp),%rbp
mov    0x10(%rsp),%rdx
mov    0x60(%rsp),%r11
je     1508 <yuyv422_to_yuv422sp+0x408>
mov    0x40(%rsp),%rcx
add    %rcx,-0x78(%rsp)
cmp    $0x2,%r11d
mov    %rbx,0x28(%rsp)
mov    %r15,0x20(%rsp)
mov    %rsi,0x68(%rsp)
mov    %rbp,0x18(%rsp)
mov    %rdx,0x10(%rsp)
mov    %rax,0x8(%rsp)
mov    %r10,(%rsp)
mov    %r9,-0x8(%rsp)
mov    %r8,-0x10(%rsp)
mov    %r13,-0x18(%rsp)
jl     1210 <yuyv422_to_yuv422sp+0x110>
xor    %r14d,%r14d
xor    %r11d,%r11d
mov    0x34(%rsp),%edx
mov    -0x78(%rsp),%r9
mov    -0x70(%rsp),%rbp
mov    -0x30(%rsp),%r10
mov    -0x38(%rsp),%rax
mov    -0x40(%rsp),%rbx
mov    -0x48(%rsp),%r8
mov    -0x50(%rsp),%r15
mov    0x38(%rsp),%r13
nopl   0x0(%rax,%rax,1)
movzbl (%rdi,%r11,2),%r12d
mov    -0x18(%rsp),%rsi
mov    %r12b,(%rsi,%r11,1)
movzbl (%rax,%r11,2),%ecx
mov    %cl,(%r15,%r11,1)
movzbl (%rbx,%r11,2),%ecx
mov    %cl,(%r10,%r11,1)
movzbl (%r8,%r11,2),%ecx
mov    %cl,(%r9,%r11,1)
movzbl 0x2(%rdi,%r11,2),%ecx
mov    %cl,0x1(%rsi,%r11,1)
movzbl 0x2(%rax,%r11,2),%ecx
mov    %cl,0x1(%r15,%r11,1)
movzbl 0x2(%rbx,%r11,2),%ecx
mov    %cl,0x1(%r10,%r11,1)
movzbl 0x2(%r8,%r11,2),%ecx
mov    %cl,0x1(%r9,%r11,1)
mov    -0x20(%rsp),%rcx
movzbl (%rcx,%r11,2),%ecx
mov    -0x28(%rsp),%rsi
mov    %cl,(%rsi,%r11,1)
mov    0x10(%rsp),%rcx
movzbl (%rcx,%r11,2),%ecx
mov    -0x10(%rsp),%rsi
mov    %cl,(%rsi,%r11,1)
mov    -0x68(%rsp),%rcx
movzbl (%rcx,%r11,2),%ecx
mov    %cl,0x0(%r13,%r11,1)
mov    0x18(%rsp),%rcx
movzbl (%rcx,%r11,2),%ecx
mov    0x48(%rsp),%rsi
mov    %cl,(%rsi,%r11,1)
mov    -0x60(%rsp),%rcx
movzbl (%rcx,%r11,2),%ecx
mov    %cl,0x0(%rbp,%r11,1)
mov    0x20(%rsp),%rcx
movzbl (%rcx,%r11,2),%ecx
mov    -0x8(%rsp),%rsi
mov    %cl,(%rsi,%r11,1)
mov    -0x58(%rsp),%rcx
movzbl (%rcx,%r11,2),%ecx
mov    (%rsp),%rsi
mov    %cl,(%rsi,%r11,1)
mov    0x28(%rsp),%rcx
movzbl (%rcx,%r11,2),%ecx
mov    0x8(%rsp),%rsi
mov    %cl,(%rsi,%r11,1)
add    $0x2,%r11
add    $0x4,%r14
add    $0xffffffff,%edx
jne    1380 <yuyv422_to_yuv422sp+0x280>
add    %r11,0x8(%rsp)
add    %r11,(%rsp)
add    %r11,-0x8(%rsp)
add    %r11,%rbp
mov    %rbp,-0x70(%rsp)
add    %r11,0x48(%rsp)
add    %r11,%r13
add    %r11,-0x10(%rsp)
add    %r11,-0x28(%rsp)
add    %r11,%r9
mov    %r9,-0x78(%rsp)
add    %r11,%r10
add    %r11,%r15
add    %r11,-0x18(%rsp)
add    %r14,%rdi
add    %r14,%rax
add    %r14,%rbx
add    %r14,%r8
add    %r14,0x28(%rsp)
mov    -0x58(%rsp),%rsi
add    %r14,%rsi
add    %r14,0x20(%rsp)
mov    -0x60(%rsp),%r11
add    %r14,%r11
add    %r14,0x18(%rsp)
mov    -0x68(%rsp),%rbp
add    %r14,%rbp
add    %r14,0x10(%rsp)
add    %r14,-0x20(%rsp)
mov    -0x7c(%rsp),%edx
mov    0x58(%rsp),%r14
mov    0x50(%rsp),%r12
mov    -0x70(%rsp),%r9
mov    %r13,%rcx
jmp    1246 <yuyv422_to_yuv422sp+0x146>
add    $0x70,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

LLVM IR (-O0):
define void @yuyv422_to_yuv422sp(i8* %0, i8* %1, i32 %2, i32 %3) {
%5 = alloca i8*
%6 = alloca i8*
%7 = alloca i32
%8 = alloca i32
%9 = alloca i8*
%10 = alloca i8*
%11 = alloca i8*
%12 = alloca i8*
%13 = alloca i8*
%14 = alloca i8*
%15 = alloca i8*
%16 = alloca i8*
%17 = alloca i8*
%18 = alloca i8*
%19 = alloca i8*
%20 = alloca i8*
%21 = alloca i32
%22 = alloca i32
%23 = alloca i8*
%24 = alloca i8*
%25 = alloca i8*
%26 = alloca i8*
%27 = alloca i8*
%28 = alloca i8*
%29 = alloca i8*
%30 = alloca i8*
%31 = alloca i8*
%32 = alloca i8*
%33 = alloca i8*
%34 = alloca i8*
%35 = alloca i32
%36 = alloca i32
%37 = alloca i32
%38 = alloca i32
store i8* %0, i8** %5
store i8* %1, i8** %6
store i32 %2, i32* %7
store i32 %3, i32* %8
%39 = load i8*, i8** %5
store i8* %39, i8** %9
%40 = load i8*, i8** %5
%41 = load i32, i32* %7
%42 = shl i32 %41, 1
%43 = sext i32 %42 to i64
%44 = getelementptr inbounds i8, i8* %40, i64 %43
store i8* %44, i8** %10
%45 = load i8*, i8** %5
%46 = load i32, i32* %7
%47 = shl i32 %46, 1
%48 = mul nsw i32 %47, 2
%49 = sext i32 %48 to i64
%50 = getelementptr inbounds i8, i8* %45, i64 %49
store i8* %50, i8** %11
%51 = load i8*, i8** %5
%52 = load i32, i32* %7
%53 = shl i32 %52, 1
%54 = mul nsw i32 %53, 3
%55 = sext i32 %54 to i64
%56 = getelementptr inbounds i8, i8* %51, i64 %55
store i8* %56, i8** %12
%57 = load i8*, i8** %5
%58 = getelementptr inbounds i8, i8* %57, i64 1
store i8* %58, i8** %13
%59 = load i8*, i8** %5
%60 = load i32, i32* %7
%61 = shl i32 %60, 1
%62 = sext i32 %61 to i64
%63 = getelementptr inbounds i8, i8* %59, i64 %62
%64 = getelementptr inbounds i8, i8* %63, i64 1
store i8* %64, i8** %14
%65 = load i8*, i8** %5
%66 = load i32, i32* %7
%67 = shl i32 %66, 1
%68 = mul nsw i32 %67, 2
%69 = sext i32 %68 to i64
%70 = getelementptr inbounds i8, i8* %65, i64 %69
%71 = getelementptr inbounds i8, i8* %70, i64 1
store i8* %71, i8** %15
%72 = load i8*, i8** %5
%73 = load i32, i32* %7
%74 = shl i32 %73, 1
%75 = mul nsw i32 %74, 3
%76 = sext i32 %75 to i64
%77 = getelementptr inbounds i8, i8* %72, i64 %76
%78 = getelementptr inbounds i8, i8* %77, i64 1
store i8* %78, i8** %16
%79 = load i8*, i8** %5
%80 = getelementptr inbounds i8, i8* %79, i64 3
store i8* %80, i8** %17
%81 = load i8*, i8** %5
%82 = load i32, i32* %7
%83 = shl i32 %82, 1
%84 = sext i32 %83 to i64
%85 = getelementptr inbounds i8, i8* %81, i64 %84
%86 = getelementptr inbounds i8, i8* %85, i64 3
store i8* %86, i8** %18
%87 = load i8*, i8** %5
%88 = load i32, i32* %7
%89 = shl i32 %88, 1
%90 = mul nsw i32 %89, 2
%91 = sext i32 %90 to i64
%92 = getelementptr inbounds i8, i8* %87, i64 %91
%93 = getelementptr inbounds i8, i8* %92, i64 3
store i8* %93, i8** %19
%94 = load i8*, i8** %5
%95 = load i32, i32* %7
%96 = shl i32 %95, 1
%97 = mul nsw i32 %96, 3
%98 = sext i32 %97 to i64
%99 = getelementptr inbounds i8, i8* %94, i64 %98
%100 = getelementptr inbounds i8, i8* %99, i64 3
store i8* %100, i8** %20
%101 = load i32, i32* %7
%102 = shl i32 %101, 1
%103 = mul nsw i32 %102, 3
store i32 %103, i32* %21
%104 = load i32, i32* %7
%105 = shl i32 %104, 1
%106 = mul nsw i32 %105, 3
store i32 %106, i32* %22
%107 = load i8*, i8** %6
store i8* %107, i8** %23
%108 = load i8*, i8** %6
%109 = load i32, i32* %7
%110 = sext i32 %109 to i64
%111 = getelementptr inbounds i8, i8* %108, i64 %110
store i8* %111, i8** %24
%112 = load i8*, i8** %6
%113 = load i32, i32* %7
%114 = mul nsw i32 %113, 2
%115 = sext i32 %114 to i64
%116 = getelementptr inbounds i8, i8* %112, i64 %115
store i8* %116, i8** %25
%117 = load i8*, i8** %6
%118 = load i32, i32* %7
%119 = mul nsw i32 %118, 3
%120 = sext i32 %119 to i64
%121 = getelementptr inbounds i8, i8* %117, i64 %120
store i8* %121, i8** %26
%122 = load i8*, i8** %6
%123 = load i32, i32* %7
%124 = load i32, i32* %8
%125 = mul nsw i32 %123, %124
%126 = sext i32 %125 to i64
%127 = getelementptr inbounds i8, i8* %122, i64 %126
store i8* %127, i8** %27
%128 = load i8*, i8** %6
%129 = load i32, i32* %7
%130 = load i32, i32* %8
%131 = mul nsw i32 %129, %130
%132 = sext i32 %131 to i64
%133 = getelementptr inbounds i8, i8* %128, i64 %132
%134 = load i32, i32* %7
%135 = sext i32 %134 to i64
%136 = getelementptr inbounds i8, i8* %133, i64 %135
store i8* %136, i8** %28
%137 = load i8*, i8** %6
%138 = load i32, i32* %7
%139 = load i32, i32* %8
%140 = mul nsw i32 %138, %139
%141 = sext i32 %140 to i64
%142 = getelementptr inbounds i8, i8* %137, i64 %141
%143 = getelementptr inbounds i8, i8* %142, i64 1
store i8* %143, i8** %31
%144 = load i8*, i8** %6
%145 = load i32, i32* %7
%146 = load i32, i32* %8
%147 = mul nsw i32 %145, %146
%148 = sext i32 %147 to i64
%149 = getelementptr inbounds i8, i8* %144, i64 %148
%150 = load i32, i32* %7
%151 = sext i32 %150 to i64
%152 = getelementptr inbounds i8, i8* %149, i64 %151
%153 = getelementptr inbounds i8, i8* %152, i64 1
store i8* %153, i8** %32
%154 = load i32, i32* %7
%155 = mul nsw i32 %154, 3
store i32 %155, i32* %35
%156 = load i32, i32* %7
store i32 %156, i32* %36
store i32 0, i32* %38
br label %157
157: ; preds = %357, %4
%158 = load i32, i32* %38
%159 = load i32, i32* %8
%160 = sdiv i32 %159, 4
%161 = icmp slt i32 %158, %160
br i1 %161, label %162, label %360
162: ; preds = %157
store i32 0, i32* %37
br label %163
163: ; preds = %273, %162
%164 = load i32, i32* %37
%165 = load i32, i32* %7
%166 = sdiv i32 %165, 2
%167 = icmp slt i32 %164, %166
br i1 %167, label %168, label %276
168: ; preds = %163
%169 = load i8*, i8** %9
%170 = load i8, i8* %169
%171 = load i8*, i8** %23
%172 = getelementptr inbounds i8, i8* %171, i32 1
store i8* %172, i8** %23
store i8 %170, i8* %171
%173 = load i8*, i8** %10
%174 = load i8, i8* %173
%175 = load i8*, i8** %24
%176 = getelementptr inbounds i8, i8* %175, i32 1
store i8* %176, i8** %24
store i8 %174, i8* %175
%177 = load i8*, i8** %11
%178 = load i8, i8* %177
%179 = load i8*, i8** %25
%180 = getelementptr inbounds i8, i8* %179, i32 1
store i8* %180, i8** %25
store i8 %178, i8* %179
%181 = load i8*, i8** %12
%182 = load i8, i8* %181
%183 = load i8*, i8** %26
%184 = getelementptr inbounds i8, i8* %183, i32 1
store i8* %184, i8** %26
store i8 %182, i8* %183
%185 = load i8*, i8** %9
%186 = getelementptr inbounds i8, i8* %185, i64 2
store i8* %186, i8** %9
%187 = load i8*, i8** %10
%188 = getelementptr inbounds i8, i8* %187, i64 2
store i8* %188, i8** %10
%189 = load i8*, i8** %11
%190 = getelementptr inbounds i8, i8* %189, i64 2
store i8* %190, i8** %11
%191 = load i8*, i8** %12
%192 = getelementptr inbounds i8, i8* %191, i64 2
store i8* %192, i8** %12
%193 = load i8*, i8** %9
%194 = load i8, i8* %193
%195 = load i8*, i8** %23
%196 = getelementptr inbounds i8, i8* %195, i32 1
store i8* %196, i8** %23
store i8 %194, i8* %195
%197 = load i8*, i8** %10
%198 = load i8, i8* %197
%199 = load i8*, i8** %24
%200 = getelementptr inbounds i8, i8* %199, i32 1
store i8* %200, i8** %24
store i8 %198, i8* %199
%201 = load i8*, i8** %11
%202 = load i8, i8* %201
%203 = load i8*, i8** %25
%204 = getelementptr inbounds i8, i8* %203, i32 1
store i8* %204, i8** %25
store i8 %202, i8* %203
%205 = load i8*, i8** %12
%206 = load i8, i8* %205
%207 = load i8*, i8** %26
%208 = getelementptr inbounds i8, i8* %207, i32 1
store i8* %208, i8** %26
store i8 %206, i8* %207
%209 = load i8*, i8** %9
%210 = getelementptr inbounds i8, i8* %209, i64 2
store i8* %210, i8** %9
%211 = load i8*, i8** %10
%212 = getelementptr inbounds i8, i8* %211, i64 2
store i8* %212, i8** %10
%213 = load i8*, i8** %11
%214 = getelementptr inbounds i8, i8* %213, i64 2
store i8* %214, i8** %11
%215 = load i8*, i8** %12
%216 = getelementptr inbounds i8, i8* %215, i64 2
store i8* %216, i8** %12
%217 = load i8*, i8** %13
%218 = load i8, i8* %217
%219 = load i8*, i8** %27
store i8 %218, i8* %219
%220 = load i8*, i8** %14
%221 = load i8, i8* %220
%222 = load i8*, i8** %28
store i8 %221, i8* %222
%223 = load i8*, i8** %15
%224 = load i8, i8* %223
%225 = load i8*, i8** %29
store i8 %224, i8* %225
%226 = load i8*, i8** %16
%227 = load i8, i8* %226
%228 = load i8*, i8** %30
store i8 %227, i8* %228
%229 = load i8*, i8** %27
%230 = getelementptr inbounds i8, i8* %229, i64 2
store i8* %230, i8** %27
%231 = load i8*, i8** %28
%232 = getelementptr inbounds i8, i8* %231, i64 2
store i8* %232, i8** %28
%233 = load i8*, i8** %29
%234 = getelementptr inbounds i8, i8* %233, i64 2
store i8* %234, i8** %29
%235 = load i8*, i8** %30
%236 = getelementptr inbounds i8, i8* %235, i64 2
store i8* %236, i8** %30
%237 = load i8*, i8** %13
%238 = getelementptr inbounds i8, i8* %237, i64 4
store i8* %238, i8** %13
%239 = load i8*, i8** %14
%240 = getelementptr inbounds i8, i8* %239, i64 4
store i8* %240, i8** %14
%241 = load i8*, i8** %15
%242 = getelementptr inbounds i8, i8* %241, i64 4
store i8* %242, i8** %15
%243 = load i8*, i8** %16
%244 = getelementptr inbounds i8, i8* %243, i64 4
store i8* %244, i8** %16
%245 = load i8*, i8** %17
%246 = load i8, i8* %245
%247 = load i8*, i8** %31
store i8 %246, i8* %247
%248 = load i8*, i8** %18
%249 = load i8, i8* %248
%250 = load i8*, i8** %32
store i8 %249, i8* %250
%251 = load i8*, i8** %19
%252 = load i8, i8* %251
%253 = load i8*, i8** %33
store i8 %252, i8* %253
%254 = load i8*, i8** %20
%255 = load i8, i8* %254
%256 = load i8*, i8** %34
store i8 %255, i8* %256
%257 = load i8*, i8** %31
%258 = getelementptr inbounds i8, i8* %257, i64 2
store i8* %258, i8** %31
%259 = load i8*, i8** %32
%260 = getelementptr inbounds i8, i8* %259, i64 2
store i8* %260, i8** %32
%261 = load i8*, i8** %33
%262 = getelementptr inbounds i8, i8* %261, i64 2
store i8* %262, i8** %33
%263 = load i8*, i8** %34
%264 = getelementptr inbounds i8, i8* %263, i64 2
store i8* %264, i8** %34
%265 = load i8*, i8** %17
%266 = getelementptr inbounds i8, i8* %265, i64 4
store i8* %266, i8** %17
%267 = load i8*, i8** %18
%268 = getelementptr inbounds i8, i8* %267, i64 4
store i8* %268, i8** %18
%269 = load i8*, i8** %19
%270 = getelementptr inbounds i8, i8* %269, i64 4
store i8* %270, i8** %19
%271 = load i8*, i8** %20
%272 = getelementptr inbounds i8, i8* %271, i64 4
store i8* %272, i8** %20
br label %273
273: ; preds = %168
%274 = load i32, i32* %37
%275 = add nsw i32 %274, 1
store i32 %275, i32* %37
br label %163
276: ; preds = %163
%277 = load i32, i32* %21
%278 = load i8*, i8** %9
%279 = sext i32 %277 to i64
%280 = getelementptr inbounds i8, i8* %278, i64 %279
store i8* %280, i8** %9
%281 = load i32, i32* %21
%282 = load i8*, i8** %10
%283 = sext i32 %281 to i64
%284 = getelementptr inbounds i8, i8* %282, i64 %283
store i8* %284, i8** %10
%285 = load i32, i32* %21
%286 = load i8*, i8** %11
%287 = sext i32 %285 to i64
%288 = getelementptr inbounds i8, i8* %286, i64 %287
store i8* %288, i8** %11
%289 = load i32, i32* %21
%290 = load i8*, i8** %12
%291 = sext i32 %289 to i64
%292 = getelementptr inbounds i8, i8* %290, i64 %291
store i8* %292, i8** %12
%293 = load i32, i32* %22
%294 = load i8*, i8** %13
%295 = sext i32 %293 to i64
%296 = getelementptr inbounds i8, i8* %294, i64 %295
store i8* %296, i8** %13
%297 = load i32, i32* %22
%298 = load i8*, i8** %15
%299 = sext i32 %297 to i64
%300 = getelementptr inbounds i8, i8* %298, i64 %299
store i8* %300, i8** %15
%301 = load i32, i32* %22
%302 = load i8*, i8** %17
%303 = sext i32 %301 to i64
%304 = getelementptr inbounds i8, i8* %302, i64 %303
store i8* %304, i8** %17
%305 = load i32, i32* %22
%306 = load i8*, i8** %19
%307 = sext i32 %305 to i64
%308 = getelementptr inbounds i8, i8* %306, i64 %307
store i8* %308, i8** %19
%309 = load i32, i32* %35
%310 = load i8*, i8** %23
%311 = sext i32 %309 to i64
%312 = getelementptr inbounds i8, i8* %310, i64 %311
store i8* %312, i8** %23
%313 = load i32, i32* %35
%314 = load i8*, i8** %24
%315 = sext i32 %313 to i64
%316 = getelementptr inbounds i8, i8* %314, i64 %315
store i8* %316, i8** %24
%317 = load i32, i32* %35
%318 = load i8*, i8** %25
%319 = sext i32 %317 to i64
%320 = getelementptr inbounds i8, i8* %318, i64 %319
store i8* %320, i8** %25
%321 = load i32, i32* %35
%322 = load i8*, i8** %26
%323 = sext i32 %321 to i64
%324 = getelementptr inbounds i8, i8* %322, i64 %323
store i8* %324, i8** %26
%325 = load i32, i32* %36
%326 = load i8*, i8** %27
%327 = sext i32 %325 to i64
%328 = getelementptr inbounds i8, i8* %326, i64 %327
store i8* %328, i8** %27
%329 = load i32, i32* %36
%330 = load i8*, i8** %28
%331 = sext i32 %329 to i64
%332 = getelementptr inbounds i8, i8* %330, i64 %331
store i8* %332, i8** %28
%333 = load i32, i32* %36
%334 = load i8*, i8** %29
%335 = sext i32 %333 to i64
%336 = getelementptr inbounds i8, i8* %334, i64 %335
store i8* %336, i8** %29
%337 = load i32, i32* %36
%338 = load i8*, i8** %30
%339 = sext i32 %337 to i64
%340 = getelementptr inbounds i8, i8* %338, i64 %339
store i8* %340, i8** %30
%341 = load i32, i32* %36
%342 = load i8*, i8** %31
%343 = sext i32 %341 to i64
%344 = getelementptr inbounds i8, i8* %342, i64 %343
store i8* %344, i8** %31
%345 = load i32, i32* %36
%346 = load i8*, i8** %32
%347 = sext i32 %345 to i64
%348 = getelementptr inbounds i8, i8* %346, i64 %347
store i8* %348, i8** %32
%349 = load i32, i32* %36
%350 = load i8*, i8** %33
%351 = sext i32 %349 to i64
%352 = getelementptr inbounds i8, i8* %350, i64 %351
store i8* %352, i8** %33
%353 = load i32, i32* %36
%354 = load i8*, i8** %34
%355 = sext i32 %353 to i64
%356 = getelementptr inbounds i8, i8* %354, i64 %355
store i8* %356, i8** %34
br label %357
357: ; preds = %276
%358 = load i32, i32* %38
%359 = add nsw i32 %358, 1
store i32 %359, i32* %38
br label %157
360: ; preds = %157
ret void
}

LLVM IR (-O2):
define void @yuyv422_to_yuv422sp(i8* nocapture %0, i8* nocapture writeonly %1, i32 %2, i32 %3) {
%5 = shl i32 %2, 1
%6 = sext i32 %5 to i64
%7 = getelementptr inbounds i8, i8* %0, i64 %6
%8 = shl i32 %2, 2
%9 = sext i32 %8 to i64
%10 = getelementptr inbounds i8, i8* %0, i64 %9
%11 = mul i32 %2, 6
%12 = sext i32 %11 to i64
%13 = getelementptr inbounds i8, i8* %0, i64 %12
%14 = sext i32 %2 to i64
%15 = mul nsw i32 %2, 3
%16 = sext i32 %15 to i64
%17 = mul nsw i32 %3, %2
%18 = sext i32 %17 to i64
%19 = getelementptr inbounds i8, i8* %1, i64 %18
%20 = getelementptr inbounds i8, i8* %19, i64 %14
%21 = sdiv i32 %3, 4
%22 = icmp sgt i32 %3, 3
br i1 %22, label %23, label %187
23: ; preds = %4
%24 = getelementptr inbounds i8, i8* %20, i64 1
%25 = getelementptr inbounds i8, i8* %19, i64 1
%26 = getelementptr inbounds i8, i8* %1, i64 %6
%27 = getelementptr inbounds i8, i8* %1, i64 %14
%28 = getelementptr inbounds i8, i8* %13, i64 3
%29 = getelementptr inbounds i8, i8* %10, i64 3
%30 = getelementptr inbounds i8, i8* %7, i64 3
%31 = getelementptr inbounds i8, i8* %0, i64 3
%32 = getelementptr inbounds i8, i8* %13, i64 1
%33 = getelementptr inbounds i8, i8* %10, i64 1
%34 = getelementptr inbounds i8, i8* %7, i64 1
%35 = getelementptr inbounds i8, i8* %0, i64 1
%36 = sdiv i32 %2, 2
%37 = icmp sgt i32 %2, 1
br label %38
38: ; preds = %23, %141
%39 = phi i32 [ 0, %23 ], [ %185, %141 ]
%40 = phi i8* [ %0, %23 ], [ %166, %141 ]
%41 = phi i8* [ %7, %23 ], [ %167, %141 ]
%42 = phi i8* [ undef, %23 ], [ %184, %141 ]
%43 = phi i8* [ undef, %23 ], [ %183, %141 ]
%44 = phi i8* [ %24, %23 ], [ %182, %141 ]
%45 = phi i8* [ %25, %23 ], [ %181, %141 ]
%46 = phi i8* [ undef, %23 ], [ %180, %141 ]
%47 = phi i8* [ undef, %23 ], [ %179, %141 ]
%48 = phi i8* [ %20, %23 ], [ %178, %141 ]
%49 = phi i8* [ %19, %23 ], [ %177, %141 ]
%50 = phi i8* [ %1, %23 ], [ %155, %141 ]
%51 = phi i8* [ %26, %23 ], [ %176, %141 ]
%52 = phi i8* [ %27, %23 ], [ %175, %141 ]
%53 = phi i8* [ %1, %23 ], [ %174, %141 ]
%54 = phi i8* [ %10, %23 ], [ %168, %141 ]
%55 = phi i8* [ %13, %23 ], [ %169, %141 ]
%56 = phi i8* [ %28, %23 ], [ %149, %141 ]
%57 = phi i8* [ %29, %23 ], [ %173, %141 ]
%58 = phi i8* [ %30, %23 ], [ %147, %141 ]
%59 = phi i8* [ %31, %23 ], [ %172, %141 ]
%60 = phi i8* [ %32, %23 ], [ %145, %141 ]
%61 = phi i8* [ %33, %23 ], [ %171, %141 ]
%62 = phi i8* [ %34, %23 ], [ %143, %141 ]
%63 = phi i8* [ %35, %23 ], [ %170, %141 ]
%64 = getelementptr inbounds i8, i8* %50, i64 %16
br i1 %37, label %65, label %141
65: ; preds = %38, %65
%66 = phi i32 [ %139, %65 ], [ 0, %38 ]
%67 = phi i8* [ %111, %65 ], [ %40, %38 ]
%68 = phi i8* [ %112, %65 ], [ %41, %38 ]
%69 = phi i8* [ %134, %65 ], [ %42, %38 ]
%70 = phi i8* [ %133, %65 ], [ %43, %38 ]
%71 = phi i8* [ %132, %65 ], [ %44, %38 ]
%72 = phi i8* [ %131, %65 ], [ %45, %38 ]
%73 = phi i8* [ %122, %65 ], [ %46, %38 ]
%74 = phi i8* [ %121, %65 ], [ %47, %38 ]
%75 = phi i8* [ %120, %65 ], [ %48, %38 ]
%76 = phi i8* [ %119, %65 ], [ %49, %38 ]
%77 = phi i8* [ %110, %65 ], [ %64, %38 ]
%78 = phi i8* [ %108, %65 ], [ %51, %38 ]
%79 = phi i8* [ %106, %65 ], [ %52, %38 ]
%80 = phi i8* [ %104, %65 ], [ %53, %38 ]
%81 = phi i8* [ %113, %65 ], [ %54, %38 ]
%82 = phi i8* [ %114, %65 ], [ %55, %38 ]
%83 = phi i8* [ %138, %65 ], [ %56, %38 ]
%84 = phi i8* [ %137, %65 ], [ %57, %38 ]
%85 = phi i8* [ %136, %65 ], [ %58, %38 ]
%86 = phi i8* [ %135, %65 ], [ %59, %38 ]
%87 = phi i8* [ %126, %65 ], [ %60, %38 ]
%88 = phi i8* [ %125, %65 ], [ %61, %38 ]
%89 = phi i8* [ %124, %65 ], [ %62, %38 ]
%90 = phi i8* [ %123, %65 ], [ %63, %38 ]
%91 = load i8, i8* %67
%92 = getelementptr inbounds i8, i8* %80, i64 1
store i8 %91, i8* %80
%93 = load i8, i8* %68
%94 = getelementptr inbounds i8, i8* %79, i64 1
store i8 %93, i8* %79
%95 = load i8, i8* %81
%96 = getelementptr inbounds i8, i8* %78, i64 1
store i8 %95, i8* %78
%97 = load i8, i8* %82
%98 = getelementptr inbounds i8, i8* %77, i64 1
store i8 %97, i8* %77
%99 = getelementptr inbounds i8, i8* %67, i64 2
%100 = getelementptr inbounds i8, i8* %68, i64 2
%101 = getelementptr inbounds i8, i8* %81, i64 2
%102 = getelementptr inbounds i8, i8* %82, i64 2
%103 = load i8, i8* %99
%104 = getelementptr inbounds i8, i8* %80, i64 2
store i8 %103, i8* %92
%105 = load i8, i8* %100
%106 = getelementptr inbounds i8, i8* %79, i64 2
store i8 %105, i8* %94
%107 = load i8, i8* %101
%108 = getelementptr inbounds i8, i8* %78, i64 2
store i8 %107, i8* %96
%109 = load i8, i8* %102
%110 = getelementptr inbounds i8, i8* %77, i64 2
store i8 %109, i8* %98
%111 = getelementptr inbounds i8, i8* %67, i64 4
%112 = getelementptr inbounds i8, i8* %68, i64 4
%113 = getelementptr inbounds i8, i8* %81, i64 4
%114 = getelementptr inbounds i8, i8* %82, i64 4
%115 = load i8, i8* %90
store i8 %115, i8* %76
%116 = load i8, i8* %89
store i8 %116, i8* %75
%117 = load i8, i8* %88
store i8 %117, i8* %74
%118 = load i8, i8* %87
store i8 %118, i8* %73
%119 = getelementptr inbounds i8, i8* %76, i64 2
%120 = getelementptr inbounds i8, i8* %75, i64 2
%121 = getelementptr inbounds i8, i8* %74, i64 2
%122 = getelementptr inbounds i8, i8* %73, i64 2
%123 = getelementptr inbounds i8, i8* %90, i64 4
%124 = getelementptr inbounds i8, i8* %89, i64 4
%125 = getelementptr inbounds i8, i8* %88, i64 4
%126 = getelementptr inbounds i8, i8* %87, i64 4
%127 = load i8, i8* %86
store i8 %127, i8* %72
%128 = load i8, i8* %85
store i8 %128, i8* %71
%129 = load i8, i8* %84
store i8 %129, i8* %70
%130 = load i8, i8* %83
store i8 %130, i8* %69
%131 = getelementptr inbounds i8, i8* %72, i64 2
%132 = getelementptr inbounds i8, i8* %71, i64 2
%133 = getelementptr inbounds i8, i8* %70, i64 2
%134 = getelementptr inbounds i8, i8* %69, i64 2
%135 = getelementptr inbounds i8, i8* %86, i64 4
%136 = getelementptr inbounds i8, i8* %85, i64 4
%137 = getelementptr inbounds i8, i8* %84, i64 4
%138 = getelementptr inbounds i8, i8* %83, i64 4
%139 = add nuw nsw i32 %66, 1
%140 = icmp eq i32 %139, %36
br i1 %140, label %141, label %65
141: ; preds = %65, %38
%142 = phi i8* [ %63, %38 ], [ %123, %65 ]
%143 = phi i8* [ %62, %38 ], [ %124, %65 ]
%144 = phi i8* [ %61, %38 ], [ %125, %65 ]
%145 = phi i8* [ %60, %38 ], [ %126, %65 ]
%146 = phi i8* [ %59, %38 ], [ %135, %65 ]
%147 = phi i8* [ %58, %38 ], [ %136, %65 ]
%148 = phi i8* [ %57, %38 ], [ %137, %65 ]
%149 = phi i8* [ %56, %38 ], [ %138, %65 ]
%150 = phi i8* [ %55, %38 ], [ %114, %65 ]
%151 = phi i8* [ %54, %38 ], [ %113, %65 ]
%152 = phi i8* [ %53, %38 ], [ %104, %65 ]
%153 = phi i8* [ %52, %38 ], [ %106, %65 ]
%154 = phi i8* [ %51, %38 ], [ %108, %65 ]
%155 = phi i8* [ %64, %38 ], [ %110, %65 ]
%156 = phi i8* [ %49, %38 ], [ %119, %65 ]
%157 = phi i8* [ %48, %38 ], [ %120, %65 ]
%158 = phi i8* [ %47, %38 ], [ %121, %65 ]
%159 = phi i8* [ %46, %38 ], [ %122, %65 ]
%160 = phi i8* [ %45, %38 ], [ %131, %65 ]
%161 = phi i8* [ %44, %38 ], [ %132, %65 ]
%162 = phi i8* [ %43, %38 ], [ %133, %65 ]
%163 = phi i8* [ %42, %38 ], [ %134, %65 ]
%164 = phi i8* [ %41, %38 ], [ %112, %65 ]
%165 = phi i8* [ %40, %38 ], [ %111, %65 ]
%166 = getelementptr inbounds i8, i8* %165, i64 %12
%167 = getelementptr inbounds i8, i8* %164, i64 %12
%168 = getelementptr inbounds i8, i8* %151, i64 %12
%169 = getelementptr inbounds i8, i8* %150, i64 %12
%170 = getelementptr inbounds i8, i8* %142, i64 %12
%171 = getelementptr inbounds i8, i8* %144, i64 %12
%172 = getelementptr inbounds i8, i8* %146, i64 %12
%173 = getelementptr inbounds i8, i8* %148, i64 %12
%174 = getelementptr inbounds i8, i8* %152, i64 %16
%175 = getelementptr inbounds i8, i8* %153, i64 %16
%176 = getelementptr inbounds i8, i8* %154, i64 %16
%177 = getelementptr inbounds i8, i8* %156, i64 %14
%178 = getelementptr inbounds i8, i8* %157, i64 %14
%179 = getelementptr inbounds i8, i8* %158, i64 %14
%180 = getelementptr inbounds i8, i8* %159, i64 %14
%181 = getelementptr inbounds i8, i8* %160, i64 %14
%182 = getelementptr inbounds i8, i8* %161, i64 %14
%183 = getelementptr inbounds i8, i8* %162, i64 %14
%184 = getelementptr inbounds i8, i8* %163, i64 %14
%185 = add nuw nsw i32 %39, 1
%186 = icmp eq i32 %185, %21
br i1 %186, label %187, label %38
187: ; preds = %141, %4
ret void
}