void yuyv422_to_yuv420(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 *ptrdestcr1, *ptrdestcr2;
  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 >> 1);
  ptrdestcr1 = bufdest + width * height + ((width * height) >> 2);
  ptrdestcr2 =
      bufdest + width * height + ((width * height) >> 2) + (width >> 1);
  destystride = (width)*3;
  destccstride = (width >> 1);
  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++) = (*ptrsrccb3);
      ptrsrccb1 += 4;
      ptrsrccb3 += 4;
      (*ptrdestcr1++) = (*ptrsrccr1);
      (*ptrdestcr2++) = (*ptrsrccr3);
      ptrsrccr1 += 4;
      ptrsrccr3 += 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;
    ptrdestcr1 += destccstride;
    ptrdestcr2 += destccstride;
  }
}


x86 assembly (clang, -O0):
<yuyv422_to_yuv420>:
push   %rbp
mov    %rsp,%rbp
sub    $0x58,%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
mov    -0x14(%rbp),%ecx
sar    $0x1,%ecx
movslq %ecx,%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
mov    -0x14(%rbp),%ecx
imul   -0x18(%rbp),%ecx
sar    $0x2,%ecx
movslq %ecx,%rcx
add    %rcx,%rax
mov    %rax,-0xb8(%rbp)
mov    -0x10(%rbp),%rax
mov    -0x14(%rbp),%ecx
imul   -0x18(%rbp),%ecx
movslq %ecx,%rcx
add    %rcx,%rax
mov    -0x14(%rbp),%ecx
imul   -0x18(%rbp),%ecx
sar    $0x2,%ecx
movslq %ecx,%rcx
add    %rcx,%rax
mov    -0x14(%rbp),%ecx
sar    $0x1,%ecx
movslq %ecx,%rcx
add    %rcx,%rax
mov    %rax,-0xc0(%rbp)
imul   $0x3,-0x14(%rbp),%eax
mov    %eax,-0xc4(%rbp)
mov    -0x14(%rbp),%eax
sar    $0x1,%eax
mov    %eax,-0xc8(%rbp)
movl   $0x0,-0xd0(%rbp)
mov    -0xd0(%rbp),%eax
mov    %eax,-0xd4(%rbp)
mov    -0x18(%rbp),%eax
mov    $0x4,%ecx
cltd
idiv   %ecx
mov    %eax,%ecx
mov    -0xd4(%rbp),%eax
cmp    %ecx,%eax
jge    16f1 <yuyv422_to_yuv420+0x5f1>
movl   $0x0,-0xcc(%rbp)
mov    -0xcc(%rbp),%eax
mov    %eax,-0xd8(%rbp)
mov    -0x14(%rbp),%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
mov    %eax,%ecx
mov    -0xd8(%rbp),%eax
cmp    %ecx,%eax
jge    1585 <yuyv422_to_yuv420+0x485>
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    %rax,%rdx
add    $0x1,%rdx
mov    %rdx,-0xa8(%rbp)
mov    %cl,(%rax)
mov    -0x50(%rbp),%rax
mov    (%rax),%cl
mov    -0xb0(%rbp),%rax
mov    %rax,%rdx
add    $0x1,%rdx
mov    %rdx,-0xb0(%rbp)
mov    %cl,(%rax)
mov    -0x40(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0x40(%rbp)
mov    -0x50(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0x50(%rbp)
mov    -0x60(%rbp),%rax
mov    (%rax),%cl
mov    -0xb8(%rbp),%rax
mov    %rax,%rdx
add    $0x1,%rdx
mov    %rdx,-0xb8(%rbp)
mov    %cl,(%rax)
mov    -0x70(%rbp),%rax
mov    (%rax),%cl
mov    -0xc0(%rbp),%rax
mov    %rax,%rdx
add    $0x1,%rdx
mov    %rdx,-0xc0(%rbp)
mov    %cl,(%rax)
mov    -0x60(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0x60(%rbp)
mov    -0x70(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0x70(%rbp)
mov    -0xcc(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xcc(%rbp)
jmp    135e <yuyv422_to_yuv420+0x25e>
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    -0xc4(%rbp),%ecx
mov    -0x88(%rbp),%rax
movslq %ecx,%rcx
add    %rcx,%rax
mov    %rax,-0x88(%rbp)
mov    -0xc4(%rbp),%ecx
mov    -0x90(%rbp),%rax
movslq %ecx,%rcx
add    %rcx,%rax
mov    %rax,-0x90(%rbp)
mov    -0xc4(%rbp),%ecx
mov    -0x98(%rbp),%rax
movslq %ecx,%rcx
add    %rcx,%rax
mov    %rax,-0x98(%rbp)
mov    -0xc4(%rbp),%ecx
mov    -0xa0(%rbp),%rax
movslq %ecx,%rcx
add    %rcx,%rax
mov    %rax,-0xa0(%rbp)
mov    -0xc8(%rbp),%ecx
mov    -0xa8(%rbp),%rax
movslq %ecx,%rcx
add    %rcx,%rax
mov    %rax,-0xa8(%rbp)
mov    -0xc8(%rbp),%ecx
mov    -0xb0(%rbp),%rax
movslq %ecx,%rcx
add    %rcx,%rax
mov    %rax,-0xb0(%rbp)
mov    -0xc8(%rbp),%ecx
mov    -0xb8(%rbp),%rax
movslq %ecx,%rcx
add    %rcx,%rax
mov    %rax,-0xb8(%rbp)
mov    -0xc8(%rbp),%ecx
mov    -0xc0(%rbp),%rax
movslq %ecx,%rcx
add    %rcx,%rax
mov    %rax,-0xc0(%rbp)
mov    -0xd0(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xd0(%rbp)
jmp    132d <yuyv422_to_yuv420+0x22d>
add    $0x58,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<yuyv422_to_yuv420>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
push   %rax
mov    %rdx,-0x28(%rsp)
mov    %rsi,-0x78(%rsp)
lea    0x3(%rcx),%esi
test   %ecx,%ecx
cmovns %ecx,%esi
cmp    $0x4,%ecx
jl     13ac <yuyv422_to_yuv420+0x2ac>
mov    -0x28(%rsp),%rbp
lea    0x0(%rbp,%rbp,1),%eax
movslq %eax,%r12
lea    0x0(,%rbp,4),%eax
movslq %eax,%r13
add    %rdi,%r13
lea    (%r12,%r12,2),%eax
movslq %eax,%r10
lea    0x0(%rbp,%rbp,2),%eax
cltq
mov    %rax,-0x30(%rsp)
imul   %ebp,%ecx
movslq %ecx,%rcx
mov    -0x78(%rsp),%r14
lea    (%r14,%rcx,1),%rax
mov    %ebp,%edx
sar    %edx
movslq %edx,%r8
sar    $0x2,%ecx
movslq %ecx,%r11
add    %rax,%r11
sar    $0x2,%esi
lea    (%r14,%r12,1),%rcx
movslq %ebp,%r9
lea    (%r14,%r9,1),%rdx
mov    %rdx,-0x50(%rsp)
lea    0x3(%r13),%rdx
mov    %rdx,-0x40(%rsp)
lea    0x3(%rdi),%rbx
mov    %rbx,-0x60(%rsp)
lea    0x1(%r13),%rdx
mov    %rdx,-0x68(%rsp)
lea    0x1(%rdi),%rdx
mov    %rdx,-0x70(%rsp)
add    %rdi,%r12
shr    $0x1f,%r9d
add    %ebp,%r9d
sar    %r9d
xor    %edx,%edx
mov    %r11,-0x58(%rsp)
mov    %r11,%rbp
mov    %rax,-0x48(%rsp)
mov    -0x30(%rsp),%r11
mov    %rdi,%rbx
mov    %esi,-0x7c(%rsp)
mov    %r10,-0x10(%rsp)
mov    %r8,-0x18(%rsp)
mov    %r9,(%rsp)
jmp    1250 <yuyv422_to_yuv420+0x150>
nop
mov    %rsi,-0x78(%rsp)
mov    %rbx,-0x20(%rsp)
mov    -0x60(%rsp),%rdx
mov    -0x68(%rsp),%rbp
mov    -0x70(%rsp),%rbx
mov    -0x7c(%rsp),%esi
add    %r10,%rdi
add    %r10,%r12
add    %r10,%r13
add    %r10,%rbx
mov    %rbx,-0x70(%rsp)
add    %r10,%rbp
mov    %rbp,-0x68(%rsp)
add    %r10,%rdx
mov    %rdx,-0x60(%rsp)
add    %r10,-0x40(%rsp)
add    %r11,%r14
add    %r11,-0x50(%rsp)
add    %r11,%rcx
add    %r8,-0x48(%rsp)
mov    -0x38(%rsp),%rbp
add    %r8,%rbp
mov    -0x8(%rsp),%rdx
add    $0x1,%edx
cmp    %esi,%edx
mov    -0x20(%rsp),%rbx
je     13ac <yuyv422_to_yuv420+0x2ac>
add    %r8,-0x58(%rsp)
add    %r8,%rax
mov    -0x78(%rsp),%rsi
add    %r11,%rsi
add    %r10,%rbx
mov    -0x28(%rsp),%r15
cmp    $0x2,%r15d
mov    %rdx,-0x8(%rsp)
mov    %rbp,-0x38(%rsp)
jl     11e0 <yuyv422_to_yuv420+0xe0>
xor    %ebp,%ebp
xor    %r10d,%r10d
xor    %r8d,%r8d
mov    %rsi,%r15
mov    -0x58(%rsp),%r9
nopl   0x0(%rax)
movzbl (%rdi,%r8,4),%r11d
mov    %r11b,(%r14,%r8,2)
movzbl (%r12,%r8,4),%edx
mov    -0x50(%rsp),%rsi
mov    %dl,(%rsi,%r8,2)
movzbl 0x0(%r13,%r8,4),%edx
mov    %dl,(%rcx,%r8,2)
movzbl (%rbx,%r8,4),%edx
mov    %dl,(%r15,%r8,2)
movzbl 0x2(%rdi,%r8,4),%edx
mov    %dl,0x1(%r14,%r8,2)
movzbl 0x2(%r12,%r8,4),%edx
mov    %dl,0x1(%rsi,%r8,2)
movzbl 0x2(%r13,%r8,4),%edx
mov    %dl,0x1(%rcx,%r8,2)
movzbl 0x2(%rbx,%r8,4),%edx
mov    %dl,0x1(%r15,%r8,2)
mov    -0x70(%rsp),%rdx
movzbl (%rdx,%r8,4),%edx
mov    -0x48(%rsp),%rsi
mov    %dl,(%rsi,%r8,1)
mov    -0x68(%rsp),%rdx
movzbl (%rdx,%r8,4),%edx
mov    %dl,(%rax,%r8,1)
mov    -0x60(%rsp),%rdx
movzbl (%rdx,%r8,4),%edx
mov    -0x38(%rsp),%rsi
mov    %dl,(%rsi,%r8,1)
mov    -0x40(%rsp),%rdx
movzbl (%rdx,%r8,4),%edx
mov    %dl,(%r9,%r8,1)
add    $0x1,%r8
add    $0x4,%r10
add    $0xfffffffffffffffe,%rbp
cmp    %r8d,(%rsp)
jne    1290 <yuyv422_to_yuv420+0x190>
add    %r8,%r9
mov    %r9,-0x58(%rsp)
add    %r8,-0x38(%rsp)
add    %r8,%rax
add    %r8,-0x48(%rsp)
sub    %rbp,%r15
mov    %r15,-0x78(%rsp)
sub    %rbp,%rcx
sub    %rbp,-0x50(%rsp)
sub    %rbp,%r14
add    %r10,%rdi
add    %r10,%r12
add    %r10,%r13
add    %r10,%rbx
mov    %rbx,-0x20(%rsp)
mov    -0x70(%rsp),%rbx
add    %r10,%rbx
add    %r10,-0x40(%rsp)
mov    -0x68(%rsp),%rbp
add    %r10,%rbp
mov    -0x60(%rsp),%rdx
add    %r10,%rdx
mov    -0x7c(%rsp),%esi
mov    -0x10(%rsp),%r10
mov    -0x30(%rsp),%r11
mov    -0x18(%rsp),%r8
jmp    11fd <yuyv422_to_yuv420+0xfd>
add    $0x8,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

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

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