#define NULL ((void *)0)
typedef unsigned long size_t; // Customize by platform.
typedef long intptr_t;
typedef unsigned long uintptr_t;
typedef long scalar_t__; // Either arithmetic or pointer type.
/* By default, we understand bool (as a convenience). */
typedef int bool;
#define false 0
#define true 1

/* Forward declarations */

/* Type definitions */

/* Variables and functions */
int /*<<< orphan*/ VIM_JPEG_WriteYUVData(unsigned char);
void VIM_MAPI_WriteUYVYEncodeDataLine(unsigned char *pbuf, unsigned short Width,
                                      unsigned short Height) {
  unsigned short uint, i, j, m, leavex, uint1;
  uint = uint1 = Width / 16;
  leavex = Width % 16;
  if (leavex)
    uint1++;
  if (!Height)
    return;
  for (i = 0; i < uint1; i++) {
    for (j = 0; j < 8; j++)
      for (m = 0; m < 8; m++) {
        if (((m > leavex) && (i == uint)) || (Height == j))
          VIM_JPEG_WriteYUVData(0);
        else
          VIM_JPEG_WriteYUVData(pbuf[i * 32 + j * Width * 2 + m * 2 + 1] + 128);
      }
    for (j = 0; j < 8; j++)
      for (m = 0; m < 8; m++) {
        if ((m > (leavex + 8)) && (i == uint) || (Height == j))
          VIM_JPEG_WriteYUVData(0);
        else
          VIM_JPEG_WriteYUVData(pbuf[i * 32 + 16 + 2 * j * Width + 2 * m + 1] +
                                128);
      }
    for (j = 0; j < 8; j++)
      for (m = 0; m < 8; m++) {
        if ((m > (leavex * 2)) && (i == uint) || (Height == j))
          VIM_JPEG_WriteYUVData(0);
        else
          VIM_JPEG_WriteYUVData(pbuf[i * 32 + j * Width * 2 + 4 * m] + 128);
      }
    for (j = 0; j < 8; j++)
      for (m = 0; m < 8; m++) {
        if ((m > (leavex * 2)) && (i == uint) || (Height == j))
          VIM_JPEG_WriteYUVData(0);
        else
          VIM_JPEG_WriteYUVData(pbuf[i * 32 + j * Width * 2 + 4 * m + 2] + 128);
      }
  }
}


x86 assembly (clang, -O0):
<VIM_MAPI_WriteUYVYEncodeDataLine>:
push   %rbp
mov    %rsp,%rbp
sub    $0x20,%rsp
mov    %dx,%ax
mov    %si,%cx
mov    %rdi,-0x8(%rbp)
mov    %cx,-0xa(%rbp)
mov    %ax,-0xc(%rbp)
movzwl -0xa(%rbp),%eax
mov    $0x10,%ecx
cltd
idiv   %ecx
mov    %ax,-0x18(%rbp)
mov    %ax,-0xe(%rbp)
movzwl -0xa(%rbp),%eax
mov    $0x10,%ecx
cltd
idiv   %ecx
mov    %dx,%ax
mov    %ax,-0x16(%rbp)
cmpw   $0x0,-0x16(%rbp)
je     1168 <VIM_MAPI_WriteUYVYEncodeDataLine+0x58>
mov    -0x18(%rbp),%ax
add    $0x1,%ax
mov    %ax,-0x18(%rbp)
cmpw   $0x0,-0xc(%rbp)
jne    1178 <VIM_MAPI_WriteUYVYEncodeDataLine+0x68>
jmp    14d1 <VIM_MAPI_WriteUYVYEncodeDataLine+0x3c1>
movw   $0x0,-0x10(%rbp)
movzwl -0x10(%rbp),%eax
movzwl -0x18(%rbp),%ecx
cmp    %ecx,%eax
jge    14d1 <VIM_MAPI_WriteUYVYEncodeDataLine+0x3c1>
movw   $0x0,-0x12(%rbp)
movzwl -0x12(%rbp),%eax
cmp    $0x8,%eax
jge    1257 <VIM_MAPI_WriteUYVYEncodeDataLine+0x147>
movw   $0x0,-0x14(%rbp)
movzwl -0x14(%rbp),%eax
cmp    $0x8,%eax
jge    1241 <VIM_MAPI_WriteUYVYEncodeDataLine+0x131>
movzwl -0x14(%rbp),%eax
movzwl -0x16(%rbp),%ecx
cmp    %ecx,%eax
jle    11d4 <VIM_MAPI_WriteUYVYEncodeDataLine+0xc4>
movzwl -0x10(%rbp),%eax
movzwl -0xe(%rbp),%ecx
cmp    %ecx,%eax
je     11e4 <VIM_MAPI_WriteUYVYEncodeDataLine+0xd4>
movzwl -0xc(%rbp),%eax
movzwl -0x12(%rbp),%ecx
cmp    %ecx,%eax
jne    11f0 <VIM_MAPI_WriteUYVYEncodeDataLine+0xe0>
xor    %edi,%edi
call   1030 <VIM_JPEG_WriteYUVData@plt>
jmp    122b <VIM_MAPI_WriteUYVYEncodeDataLine+0x11b>
mov    -0x8(%rbp),%rax
movzwl -0x10(%rbp),%ecx
shl    $0x5,%ecx
movzwl -0x12(%rbp),%edx
movzwl -0xa(%rbp),%esi
imul   %esi,%edx
shl    $0x1,%edx
add    %edx,%ecx
movzwl -0x14(%rbp),%edx
shl    $0x1,%edx
add    %edx,%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movzbl (%rax,%rcx,1),%eax
add    $0x80,%eax
movzbl %al,%edi
call   1030 <VIM_JPEG_WriteYUVData@plt>
jmp    1230 <VIM_MAPI_WriteUYVYEncodeDataLine+0x120>
mov    -0x14(%rbp),%ax
add    $0x1,%ax
mov    %ax,-0x14(%rbp)
jmp    11a7 <VIM_MAPI_WriteUYVYEncodeDataLine+0x97>
jmp    1246 <VIM_MAPI_WriteUYVYEncodeDataLine+0x136>
mov    -0x12(%rbp),%ax
add    $0x1,%ax
mov    %ax,-0x12(%rbp)
jmp    1194 <VIM_MAPI_WriteUYVYEncodeDataLine+0x84>
movw   $0x0,-0x12(%rbp)
movzwl -0x12(%rbp),%eax
cmp    $0x8,%eax
jge    1326 <VIM_MAPI_WriteUYVYEncodeDataLine+0x216>
movw   $0x0,-0x14(%rbp)
movzwl -0x14(%rbp),%eax
cmp    $0x8,%eax
jge    1310 <VIM_MAPI_WriteUYVYEncodeDataLine+0x200>
movzwl -0x14(%rbp),%eax
movzwl -0x16(%rbp),%ecx
add    $0x8,%ecx
cmp    %ecx,%eax
jle    12a0 <VIM_MAPI_WriteUYVYEncodeDataLine+0x190>
movzwl -0x10(%rbp),%eax
movzwl -0xe(%rbp),%ecx
cmp    %ecx,%eax
je     12b0 <VIM_MAPI_WriteUYVYEncodeDataLine+0x1a0>
movzwl -0xc(%rbp),%eax
movzwl -0x12(%rbp),%ecx
cmp    %ecx,%eax
jne    12bc <VIM_MAPI_WriteUYVYEncodeDataLine+0x1ac>
xor    %edi,%edi
call   1030 <VIM_JPEG_WriteYUVData@plt>
jmp    12fa <VIM_MAPI_WriteUYVYEncodeDataLine+0x1ea>
mov    -0x8(%rbp),%rax
movzwl -0x10(%rbp),%ecx
shl    $0x5,%ecx
add    $0x10,%ecx
movzwl -0x12(%rbp),%edx
shl    $0x1,%edx
movzwl -0xa(%rbp),%esi
imul   %esi,%edx
add    %edx,%ecx
movzwl -0x14(%rbp),%edx
shl    $0x1,%edx
add    %edx,%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movzbl (%rax,%rcx,1),%eax
add    $0x80,%eax
movzbl %al,%edi
call   1030 <VIM_JPEG_WriteYUVData@plt>
jmp    12ff <VIM_MAPI_WriteUYVYEncodeDataLine+0x1ef>
mov    -0x14(%rbp),%ax
add    $0x1,%ax
mov    %ax,-0x14(%rbp)
jmp    1270 <VIM_MAPI_WriteUYVYEncodeDataLine+0x160>
jmp    1315 <VIM_MAPI_WriteUYVYEncodeDataLine+0x205>
mov    -0x12(%rbp),%ax
add    $0x1,%ax
mov    %ax,-0x12(%rbp)
jmp    125d <VIM_MAPI_WriteUYVYEncodeDataLine+0x14d>
movw   $0x0,-0x12(%rbp)
movzwl -0x12(%rbp),%eax
cmp    $0x8,%eax
jge    13ef <VIM_MAPI_WriteUYVYEncodeDataLine+0x2df>
movw   $0x0,-0x14(%rbp)
movzwl -0x14(%rbp),%eax
cmp    $0x8,%eax
jge    13d9 <VIM_MAPI_WriteUYVYEncodeDataLine+0x2c9>
movzwl -0x14(%rbp),%eax
movzwl -0x16(%rbp),%ecx
shl    $0x1,%ecx
cmp    %ecx,%eax
jle    136f <VIM_MAPI_WriteUYVYEncodeDataLine+0x25f>
movzwl -0x10(%rbp),%eax
movzwl -0xe(%rbp),%ecx
cmp    %ecx,%eax
je     137f <VIM_MAPI_WriteUYVYEncodeDataLine+0x26f>
movzwl -0xc(%rbp),%eax
movzwl -0x12(%rbp),%ecx
cmp    %ecx,%eax
jne    138b <VIM_MAPI_WriteUYVYEncodeDataLine+0x27b>
xor    %edi,%edi
call   1030 <VIM_JPEG_WriteYUVData@plt>
jmp    13c3 <VIM_MAPI_WriteUYVYEncodeDataLine+0x2b3>
mov    -0x8(%rbp),%rax
movzwl -0x10(%rbp),%ecx
shl    $0x5,%ecx
movzwl -0x12(%rbp),%edx
movzwl -0xa(%rbp),%esi
imul   %esi,%edx
shl    $0x1,%edx
add    %edx,%ecx
movzwl -0x14(%rbp),%edx
shl    $0x2,%edx
add    %edx,%ecx
movslq %ecx,%rcx
movzbl (%rax,%rcx,1),%eax
add    $0x80,%eax
movzbl %al,%edi
call   1030 <VIM_JPEG_WriteYUVData@plt>
jmp    13c8 <VIM_MAPI_WriteUYVYEncodeDataLine+0x2b8>
mov    -0x14(%rbp),%ax
add    $0x1,%ax
mov    %ax,-0x14(%rbp)
jmp    133f <VIM_MAPI_WriteUYVYEncodeDataLine+0x22f>
jmp    13de <VIM_MAPI_WriteUYVYEncodeDataLine+0x2ce>
mov    -0x12(%rbp),%ax
add    $0x1,%ax
mov    %ax,-0x12(%rbp)
jmp    132c <VIM_MAPI_WriteUYVYEncodeDataLine+0x21c>
movw   $0x0,-0x12(%rbp)
movzwl -0x12(%rbp),%eax
cmp    $0x8,%eax
jge    14bb <VIM_MAPI_WriteUYVYEncodeDataLine+0x3ab>
movw   $0x0,-0x14(%rbp)
movzwl -0x14(%rbp),%eax
cmp    $0x8,%eax
jge    14a5 <VIM_MAPI_WriteUYVYEncodeDataLine+0x395>
movzwl -0x14(%rbp),%eax
movzwl -0x16(%rbp),%ecx
shl    $0x1,%ecx
cmp    %ecx,%eax
jle    1438 <VIM_MAPI_WriteUYVYEncodeDataLine+0x328>
movzwl -0x10(%rbp),%eax
movzwl -0xe(%rbp),%ecx
cmp    %ecx,%eax
je     1448 <VIM_MAPI_WriteUYVYEncodeDataLine+0x338>
movzwl -0xc(%rbp),%eax
movzwl -0x12(%rbp),%ecx
cmp    %ecx,%eax
jne    1454 <VIM_MAPI_WriteUYVYEncodeDataLine+0x344>
xor    %edi,%edi
call   1030 <VIM_JPEG_WriteYUVData@plt>
jmp    148f <VIM_MAPI_WriteUYVYEncodeDataLine+0x37f>
mov    -0x8(%rbp),%rax
movzwl -0x10(%rbp),%ecx
shl    $0x5,%ecx
movzwl -0x12(%rbp),%edx
movzwl -0xa(%rbp),%esi
imul   %esi,%edx
shl    $0x1,%edx
add    %edx,%ecx
movzwl -0x14(%rbp),%edx
shl    $0x2,%edx
add    %edx,%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
movzbl (%rax,%rcx,1),%eax
add    $0x80,%eax
movzbl %al,%edi
call   1030 <VIM_JPEG_WriteYUVData@plt>
jmp    1494 <VIM_MAPI_WriteUYVYEncodeDataLine+0x384>
mov    -0x14(%rbp),%ax
add    $0x1,%ax
mov    %ax,-0x14(%rbp)
jmp    1408 <VIM_MAPI_WriteUYVYEncodeDataLine+0x2f8>
jmp    14aa <VIM_MAPI_WriteUYVYEncodeDataLine+0x39a>
mov    -0x12(%rbp),%ax
add    $0x1,%ax
mov    %ax,-0x12(%rbp)
jmp    13f5 <VIM_MAPI_WriteUYVYEncodeDataLine+0x2e5>
jmp    14c0 <VIM_MAPI_WriteUYVYEncodeDataLine+0x3b0>
mov    -0x10(%rbp),%ax
add    $0x1,%ax
mov    %ax,-0x10(%rbp)
jmp    117e <VIM_MAPI_WriteUYVYEncodeDataLine+0x6e>
add    $0x20,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<VIM_MAPI_WriteUYVYEncodeDataLine>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x48,%rsp
xor    %eax,%eax
mov    %esi,%ebp
and    $0xf,%bp
mov    %bp,0xa(%rsp)
setne  %bl
test   %edx,%edx
je     1746 <VIM_MAPI_WriteUYVYEncodeDataLine+0x636>
mov    %esi,%ecx
shr    $0x4,%esi
mov    %bl,%al
add    %esi,%eax
test   %ax,%ax
je     1746 <VIM_MAPI_WriteUYVYEncodeDataLine+0x636>
movzwl %cx,%ecx
add    %rcx,%rcx
mov    %rcx,0x10(%rsp)
movzwl %si,%ecx
mov    %ecx,0xc(%rsp)
movzwl %ax,%eax
mov    %rax,0x38(%rsp)
movzwl %dx,%r13d
lea    0xf(%rdi),%r15
lea    0x1f(%rdi),%rax
mov    %rax,0x20(%rsp)
lea    0x1c(%rdi),%rax
mov    %rax,0x18(%rsp)
add    $0x1e,%rdi
mov    %rdi,0x28(%rsp)
xor    %ecx,%ecx
jmp    11bf <VIM_MAPI_WriteUYVYEncodeDataLine+0xaf>
nopl   0x0(%rax)
mov    0x30(%rsp),%rcx
add    $0x1,%rcx
mov    0x40(%rsp),%r15
add    $0x20,%r15
addq   $0x20,0x20(%rsp)
addq   $0x20,0x18(%rsp)
addq   $0x20,0x28(%rsp)
cmp    0x38(%rsp),%rcx
je     1746 <VIM_MAPI_WriteUYVYEncodeDataLine+0x636>
movzwl 0xa(%rsp),%eax
cmp    $0x7,%ax
setb   %sil
cmp    $0x6,%ax
setb   %dil
cmp    $0x5,%ax
setb   %r8b
cmp    $0x4,%ax
setb   %r9b
cmp    $0x3,%ax
setb   %r10b
cmp    $0x2,%ax
setb   %bl
test   %ax,%ax
sete   %dl
mov    %rcx,0x30(%rsp)
cmp    0xc(%rsp),%ecx
sete   %al
and    %al,%dl
mov    %dl,0x6(%rsp)
and    %al,%bl
mov    %bl,0x7(%rsp)
and    %al,%r10b
mov    %r10b,0x8(%rsp)
and    %al,%r9b
mov    %r9b,0x9(%rsp)
and    %al,%r8b
mov    %r8b,0x5(%rsp)
and    %al,%dil
mov    %dil,0x3(%rsp)
and    %al,%sil
mov    %sil,0x4(%rsp)
mov    %r15,0x40(%rsp)
xor    %r12d,%r12d
jmp    1271 <VIM_MAPI_WriteUYVYEncodeDataLine+0x161>
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
movzbl (%r15),%eax
xor    $0x80,%al
movzbl %al,%edi
call   1030 <VIM_JPEG_WriteYUVData@plt>
add    $0x1,%r12
add    0x10(%rsp),%r15
cmp    $0x8,%r12
je     1390 <VIM_MAPI_WriteUYVYEncodeDataLine+0x280>
cmp    %r12d,%r13d
jne    1290 <VIM_MAPI_WriteUYVYEncodeDataLine+0x180>
xor    %ebp,%ebp
xor    %edi,%edi
call   1030 <VIM_JPEG_WriteYUVData@plt>
jmp    12b9 <VIM_MAPI_WriteUYVYEncodeDataLine+0x1a9>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
sete   %bpl
movzbl -0xe(%r15),%edi
xor    $0x80,%edi
call   1030 <VIM_JPEG_WriteYUVData@plt>
or     0x6(%rsp),%bpl
je     12b0 <VIM_MAPI_WriteUYVYEncodeDataLine+0x1a0>
xor    %ebp,%ebp
jmp    12b9 <VIM_MAPI_WriteUYVYEncodeDataLine+0x1a9>
nop
movzbl -0xc(%r15),%ebp
xor    $0x80,%bpl
cmp    %r12d,%r13d
sete   %r14b
movzbl %bpl,%edi
call   1030 <VIM_JPEG_WriteYUVData@plt>
or     0x7(%rsp),%r14b
je     12e0 <VIM_MAPI_WriteUYVYEncodeDataLine+0x1d0>
xor    %eax,%eax
jmp    12e7 <VIM_MAPI_WriteUYVYEncodeDataLine+0x1d7>
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
movzbl -0xa(%r15),%eax
xor    $0x80,%al
cmp    %r12d,%r13d
sete   %bl
movzbl %al,%edi
call   1030 <VIM_JPEG_WriteYUVData@plt>
or     0x8(%rsp),%bl
je     1300 <VIM_MAPI_WriteUYVYEncodeDataLine+0x1f0>
xor    %eax,%eax
jmp    1307 <VIM_MAPI_WriteUYVYEncodeDataLine+0x1f7>
nop
movzbl -0x8(%r15),%eax
xor    $0x80,%al
cmp    %r12d,%r13d
sete   %bl
movzbl %al,%edi
call   1030 <VIM_JPEG_WriteYUVData@plt>
or     0x9(%rsp),%bl
je     1320 <VIM_MAPI_WriteUYVYEncodeDataLine+0x210>
xor    %eax,%eax
jmp    1327 <VIM_MAPI_WriteUYVYEncodeDataLine+0x217>
nop
movzbl -0x6(%r15),%eax
xor    $0x80,%al
cmp    %r12d,%r13d
sete   %bl
movzbl %al,%edi
call   1030 <VIM_JPEG_WriteYUVData@plt>
or     0x5(%rsp),%bl
je     1340 <VIM_MAPI_WriteUYVYEncodeDataLine+0x230>
xor    %eax,%eax
jmp    1347 <VIM_MAPI_WriteUYVYEncodeDataLine+0x237>
nop
movzbl -0x4(%r15),%eax
xor    $0x80,%al
cmp    %r12d,%r13d
sete   %bl
movzbl %al,%edi
call   1030 <VIM_JPEG_WriteYUVData@plt>
or     0x3(%rsp),%bl
je     1360 <VIM_MAPI_WriteUYVYEncodeDataLine+0x250>
xor    %eax,%eax
jmp    1367 <VIM_MAPI_WriteUYVYEncodeDataLine+0x257>
nop
movzbl -0x2(%r15),%eax
xor    $0x80,%al
cmp    %r12d,%r13d
sete   %bl
movzbl %al,%edi
call   1030 <VIM_JPEG_WriteYUVData@plt>
or     0x4(%rsp),%bl
je     1250 <VIM_MAPI_WriteUYVYEncodeDataLine+0x140>
xor    %eax,%eax
jmp    1256 <VIM_MAPI_WriteUYVYEncodeDataLine+0x146>
cs nopw 0x0(%rax,%rax,1)
mov    0x20(%rsp),%rbx
xor    %ebp,%ebp
mov    0x30(%rsp),%r15
jmp    13f0 <VIM_MAPI_WriteUYVYEncodeDataLine+0x2e0>
xchg   %ax,%ax
xor    %r14d,%r14d
xor    %edi,%edi
call   1030 <VIM_JPEG_WriteYUVData@plt>
xor    %edi,%edi
call   1030 <VIM_JPEG_WriteYUVData@plt>
xor    %edi,%edi
call   1030 <VIM_JPEG_WriteYUVData@plt>
xor    %edi,%edi
call   1030 <VIM_JPEG_WriteYUVData@plt>
xor    %edi,%edi
call   1030 <VIM_JPEG_WriteYUVData@plt>
xor    %edi,%edi
call   1030 <VIM_JPEG_WriteYUVData@plt>
xor    %edi,%edi
call   1030 <VIM_JPEG_WriteYUVData@plt>
movzbl %r14b,%edi
call   1030 <VIM_JPEG_WriteYUVData@plt>
add    $0x1,%rbp
add    0x10(%rsp),%rbx
cmp    $0x8,%rbp
je     1470 <VIM_MAPI_WriteUYVYEncodeDataLine+0x360>
cmp    %ebp,%r13d
je     13a0 <VIM_MAPI_WriteUYVYEncodeDataLine+0x290>
movzbl -0xe(%rbx),%edi
xor    $0x80,%edi
call   1030 <VIM_JPEG_WriteYUVData@plt>
movzbl -0xc(%rbx),%edi
xor    $0x80,%edi
call   1030 <VIM_JPEG_WriteYUVData@plt>
movzbl -0xa(%rbx),%edi
xor    $0x80,%edi
call   1030 <VIM_JPEG_WriteYUVData@plt>
movzbl -0x8(%rbx),%edi
xor    $0x80,%edi
call   1030 <VIM_JPEG_WriteYUVData@plt>
movzbl -0x6(%rbx),%edi
xor    $0x80,%edi
call   1030 <VIM_JPEG_WriteYUVData@plt>
movzbl -0x4(%rbx),%edi
xor    $0x80,%edi
call   1030 <VIM_JPEG_WriteYUVData@plt>
movzbl -0x2(%rbx),%edi
xor    $0x80,%edi
call   1030 <VIM_JPEG_WriteYUVData@plt>
movzbl (%rbx),%r14d
xor    $0x80,%r14b
jmp    13d4 <VIM_MAPI_WriteUYVYEncodeDataLine+0x2c4>
nopl   0x0(%rax,%rax,1)
cmp    0xc(%rsp),%r15d
sete   %al
movzwl 0xa(%rsp),%ecx
cmp    $0x4,%cx
setb   %dl
cmp    $0x3,%cx
setb   %r12b
cmp    $0x2,%cx
setb   %bl
test   %cx,%cx
sete   %cl
and    %al,%cl
mov    %cl,0x3(%rsp)
and    %al,%bl
mov    %bl,0x4(%rsp)
and    %al,%r12b
and    %al,%dl
mov    %dl,0x5(%rsp)
mov    0x18(%rsp),%r15
xor    %ebp,%ebp
jmp    14e1 <VIM_MAPI_WriteUYVYEncodeDataLine+0x3d1>
nopw   0x0(%rax,%rax,1)
movzbl (%r15),%eax
xor    $0x80,%al
movzbl %al,%edi
call   1030 <VIM_JPEG_WriteYUVData@plt>
add    $0x1,%rbp
add    0x10(%rsp),%r15
cmp    $0x8,%rbp
je     1600 <VIM_MAPI_WriteUYVYEncodeDataLine+0x4f0>
cmp    %ebp,%r13d
jne    1500 <VIM_MAPI_WriteUYVYEncodeDataLine+0x3f0>
xor    %ebx,%ebx
xor    %edi,%edi
call   1030 <VIM_JPEG_WriteYUVData@plt>
jmp    1528 <VIM_MAPI_WriteUYVYEncodeDataLine+0x418>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
sete   %bl
movzbl -0x1c(%r15),%edi
xor    $0x80,%edi
call   1030 <VIM_JPEG_WriteYUVData@plt>
or     0x3(%rsp),%bl
je     1520 <VIM_MAPI_WriteUYVYEncodeDataLine+0x410>
xor    %ebx,%ebx
jmp    1528 <VIM_MAPI_WriteUYVYEncodeDataLine+0x418>
nopl   (%rax)
movzbl -0x18(%r15),%ebx
xor    $0x80,%bl
cmp    %ebp,%r13d
sete   %r14b
movzbl %bl,%edi
call   1030 <VIM_JPEG_WriteYUVData@plt>
or     0x3(%rsp),%r14b
je     1550 <VIM_MAPI_WriteUYVYEncodeDataLine+0x440>
xor    %eax,%eax
jmp    1557 <VIM_MAPI_WriteUYVYEncodeDataLine+0x447>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
movzbl -0x14(%r15),%eax
xor    $0x80,%al
cmp    %ebp,%r13d
sete   %bl
movzbl %al,%edi
call   1030 <VIM_JPEG_WriteYUVData@plt>
or     0x4(%rsp),%bl
je     1570 <VIM_MAPI_WriteUYVYEncodeDataLine+0x460>
xor    %eax,%eax
jmp    1577 <VIM_MAPI_WriteUYVYEncodeDataLine+0x467>
nop
movzbl -0x10(%r15),%eax
xor    $0x80,%al
cmp    %ebp,%r13d
sete   %bl
movzbl %al,%edi
call   1030 <VIM_JPEG_WriteYUVData@plt>
or     0x4(%rsp),%bl
je     1590 <VIM_MAPI_WriteUYVYEncodeDataLine+0x480>
xor    %eax,%eax
jmp    1597 <VIM_MAPI_WriteUYVYEncodeDataLine+0x487>
nop
movzbl -0xc(%r15),%eax
xor    $0x80,%al
cmp    %ebp,%r13d
sete   %bl
movzbl %al,%edi
call   1030 <VIM_JPEG_WriteYUVData@plt>
or     %r12b,%bl
je     15b0 <VIM_MAPI_WriteUYVYEncodeDataLine+0x4a0>
xor    %eax,%eax
jmp    15b7 <VIM_MAPI_WriteUYVYEncodeDataLine+0x4a7>
xchg   %ax,%ax
movzbl -0x8(%r15),%eax
xor    $0x80,%al
cmp    %ebp,%r13d
sete   %bl
movzbl %al,%edi
call   1030 <VIM_JPEG_WriteYUVData@plt>
or     %r12b,%bl
je     15d0 <VIM_MAPI_WriteUYVYEncodeDataLine+0x4c0>
xor    %eax,%eax
jmp    15d7 <VIM_MAPI_WriteUYVYEncodeDataLine+0x4c7>
xchg   %ax,%ax
movzbl -0x4(%r15),%eax
xor    $0x80,%al
cmp    %ebp,%r13d
sete   %bl
movzbl %al,%edi
call   1030 <VIM_JPEG_WriteYUVData@plt>
or     0x5(%rsp),%bl
je     14c0 <VIM_MAPI_WriteUYVYEncodeDataLine+0x3b0>
xor    %eax,%eax
jmp    14c6 <VIM_MAPI_WriteUYVYEncodeDataLine+0x3b6>
cs nopw 0x0(%rax,%rax,1)
mov    0x28(%rsp),%r14
xor    %r15d,%r15d
jmp    1631 <VIM_MAPI_WriteUYVYEncodeDataLine+0x521>
nopw   0x0(%rax,%rax,1)
movzbl (%r14),%eax
xor    $0x80,%al
movzbl %al,%edi
call   1030 <VIM_JPEG_WriteYUVData@plt>
add    $0x1,%r15
add    0x10(%rsp),%r14
cmp    $0x8,%r15
je     1190 <VIM_MAPI_WriteUYVYEncodeDataLine+0x80>
cmp    %r15d,%r13d
jne    1650 <VIM_MAPI_WriteUYVYEncodeDataLine+0x540>
xor    %ebp,%ebp
xor    %edi,%edi
call   1030 <VIM_JPEG_WriteYUVData@plt>
jmp    1679 <VIM_MAPI_WriteUYVYEncodeDataLine+0x569>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
sete   %bpl
movzbl -0x1c(%r14),%edi
xor    $0x80,%edi
call   1030 <VIM_JPEG_WriteYUVData@plt>
or     0x3(%rsp),%bpl
je     1670 <VIM_MAPI_WriteUYVYEncodeDataLine+0x560>
xor    %ebp,%ebp
jmp    1679 <VIM_MAPI_WriteUYVYEncodeDataLine+0x569>
nop
movzbl -0x18(%r14),%ebp
xor    $0x80,%bpl
cmp    %r15d,%r13d
sete   %bl
movzbl %bpl,%edi
call   1030 <VIM_JPEG_WriteYUVData@plt>
or     0x3(%rsp),%bl
je     16a0 <VIM_MAPI_WriteUYVYEncodeDataLine+0x590>
xor    %eax,%eax
jmp    16a7 <VIM_MAPI_WriteUYVYEncodeDataLine+0x597>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
movzbl -0x14(%r14),%eax
xor    $0x80,%al
cmp    %r15d,%r13d
sete   %bl
movzbl %al,%edi
call   1030 <VIM_JPEG_WriteYUVData@plt>
or     0x4(%rsp),%bl
je     16c0 <VIM_MAPI_WriteUYVYEncodeDataLine+0x5b0>
xor    %eax,%eax
jmp    16c7 <VIM_MAPI_WriteUYVYEncodeDataLine+0x5b7>
nop
movzbl -0x10(%r14),%eax
xor    $0x80,%al
cmp    %r15d,%r13d
sete   %bl
movzbl %al,%edi
call   1030 <VIM_JPEG_WriteYUVData@plt>
or     0x4(%rsp),%bl
je     16e0 <VIM_MAPI_WriteUYVYEncodeDataLine+0x5d0>
xor    %eax,%eax
jmp    16e7 <VIM_MAPI_WriteUYVYEncodeDataLine+0x5d7>
nop
movzbl -0xc(%r14),%eax
xor    $0x80,%al
cmp    %r15d,%r13d
sete   %bl
movzbl %al,%edi
call   1030 <VIM_JPEG_WriteYUVData@plt>
or     %r12b,%bl
je     1700 <VIM_MAPI_WriteUYVYEncodeDataLine+0x5f0>
xor    %eax,%eax
jmp    1707 <VIM_MAPI_WriteUYVYEncodeDataLine+0x5f7>
xchg   %ax,%ax
movzbl -0x8(%r14),%eax
xor    $0x80,%al
cmp    %r15d,%r13d
sete   %bl
movzbl %al,%edi
call   1030 <VIM_JPEG_WriteYUVData@plt>
or     %r12b,%bl
je     1720 <VIM_MAPI_WriteUYVYEncodeDataLine+0x610>
xor    %eax,%eax
jmp    1727 <VIM_MAPI_WriteUYVYEncodeDataLine+0x617>
xchg   %ax,%ax
movzbl -0x4(%r14),%eax
xor    $0x80,%al
cmp    %r15d,%r13d
sete   %bl
movzbl %al,%edi
call   1030 <VIM_JPEG_WriteYUVData@plt>
or     0x5(%rsp),%bl
je     1610 <VIM_MAPI_WriteUYVYEncodeDataLine+0x500>
xor    %eax,%eax
jmp    1616 <VIM_MAPI_WriteUYVYEncodeDataLine+0x506>
add    $0x48,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

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

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