void dblineXRGBtoRGB32x2(unsigned char *d1, unsigned char *d2, int dest_x,
                         unsigned char *s1, unsigned char *s2, int src_x,
                         int dx) {
  register unsigned int a, b, c, d, e, f;
  register unsigned int w, x, y, z;
  if (dest_x & 1) {
    a = *(unsigned int *)s1;
    b = *(unsigned int *)(s1 + 4);
    w = a;
    x = a + b + 0x00400801;
    *(unsigned int *)(d1 + 0) = ((w & 0x000000ff) >> 0) |
                                ((w & 0x0007f800) >> 3) |
                                ((w & 0x3fc00000) >> 6);
    *(unsigned int *)(d1 + 4) = ((x & 0x000001fe) >> 1) |
                                ((x & 0x000ff000) >> 4) |
                                ((x & 0x7f800000) >> 7);
    c = *(unsigned int *)s2;
    d = *(unsigned int *)(s2 + 4);
    w = a + c + 0x00400801;
    x = a + b + c + d + (0x00400801 << 1);
    *(unsigned int *)d2 = ((w & 0x000001fe) >> 1) | ((w & 0x000ff000) >> 4) |
                          ((w & 0x7f800000) >> 7);
    *(unsigned int *)(d2 + 4) = ((x & 0x000003fc) >> 2) |
                                ((x & 0x001fe000) >> 5) |
                                ((x & 0xff000000) >> 8);
    s1 += 4;
    s2 += 4;
    d1 += 2 * 4;
    d2 += 2 * 4;
    dx -= 1;
  }
  while (dx > 2) {
    a = *(unsigned int *)s1;
    b = *(unsigned int *)(s1 + 4);
    e = *(unsigned int *)(s1 + 2 * 4);
    w = a;
    x = a + b + 0x00400801;
    y = b;
    z = b + e + 0x00400801;
    *(unsigned int *)d1 = ((w & 0x000000ff) >> 0) | ((w & 0x0007f800) >> 3) |
                          ((w & 0x3fc00000) >> 6);
    *(unsigned int *)(d1 + 4) = ((x & 0x000001fe) >> 1) |
                                ((x & 0x000ff000) >> 4) |
                                ((x & 0x7f800000) >> 7);
    *(unsigned int *)(d1 + 2 * 4) = ((y & 0x000000ff) >> 0) |
                                    ((y & 0x0007f800) >> 3) |
                                    ((y & 0x3fc00000) >> 6);
    *(unsigned int *)(d1 + 3 * 4) = ((z & 0x000001fe) >> 1) |
                                    ((z & 0x000ff000) >> 4) |
                                    ((z & 0x7f800000) >> 7);
    c = *(unsigned int *)s2;
    d = *(unsigned int *)(s2 + 4);
    f = *(unsigned int *)(s2 + 2 * 4);
    w = a + c + 0x00400801;
    x = a + b + c + d + (0x00400801 << 1);
    y = b + d + 0x00400801;
    z = b + e + d + f + (0x00400801 << 1);
    *(unsigned int *)d2 = ((w & 0x000001fe) >> 1) | ((w & 0x000ff000) >> 4) |
                          ((w & 0x7f800000) >> 7);
    *(unsigned int *)(d2 + 4) = ((x & 0x000003fc) >> 2) |
                                ((x & 0x001fe000) >> 5) |
                                ((x & 0xff000000) >> 8);
    *(unsigned int *)(d2 + 2 * 4) = ((y & 0x000001fe) >> 1) |
                                    ((y & 0x000ff000) >> 4) |
                                    ((y & 0x7f800000) >> 7);
    *(unsigned int *)(d2 + 3 * 4) = ((z & 0x000003fc) >> 2) |
                                    ((z & 0x001fe000) >> 5) |
                                    ((z & 0xff000000) >> 8);
    s1 += 2 * 4;
    s2 += 2 * 4;
    d1 += 4 * 4;
    d2 += 4 * 4;
    dx -= 2;
  }
  if (dx > 1) {
    a = *(unsigned int *)s1;
    b = *(unsigned int *)(s1 + 4);
    e = b;
    w = a;
    x = a + b + 0x00400801;
    y = b;
    z = b + e + 0x00400801;
    *(unsigned int *)d1 = ((w & 0x000000ff) >> 0) | ((w & 0x0007f800) >> 3) |
                          ((w & 0x3fc00000) >> 6);
    *(unsigned int *)(d1 + 4) = ((x & 0x000001fe) >> 1) |
                                ((x & 0x000ff000) >> 4) |
                                ((x & 0x7f800000) >> 7);
    *(unsigned int *)(d1 + 2 * 4) = ((y & 0x000000ff) >> 0) |
                                    ((y & 0x0007f800) >> 3) |
                                    ((y & 0x3fc00000) >> 6);
    *(unsigned int *)(d1 + 3 * 4) = ((z & 0x000001fe) >> 1) |
                                    ((z & 0x000ff000) >> 4) |
                                    ((z & 0x7f800000) >> 7);
    c = *(unsigned int *)s2;
    d = *(unsigned int *)(s2 + 4);
    f = d;
    w = a + c + 0x00400801;
    x = a + b + c + d + (0x00400801 << 1);
    y = b + d + 0x00400801;
    z = b + e + d + f + (0x00400801 << 1);
    *(unsigned int *)d2 = ((w & 0x000001fe) >> 1) | ((w & 0x000ff000) >> 4) |
                          ((w & 0x7f800000) >> 7);
    *(unsigned int *)(d2 + 4) = ((x & 0x000003fc) >> 2) |
                                ((x & 0x001fe000) >> 5) |
                                ((x & 0xff000000) >> 8);
    *(unsigned int *)(d2 + 2 * 4) = ((y & 0x000001fe) >> 1) |
                                    ((y & 0x000ff000) >> 4) |
                                    ((y & 0x7f800000) >> 7);
    *(unsigned int *)(d2 + 3 * 4) = ((z & 0x000003fc) >> 2) |
                                    ((z & 0x001fe000) >> 5) |
                                    ((z & 0xff000000) >> 8);
  } else {
    a = *(unsigned int *)s1;
    b = a;
    w = a;
    x = a + b + 0x00400801;
    *(unsigned int *)(d1 + 0) = ((w & 0x000000ff) >> 0) |
                                ((w & 0x0007f800) >> 3) |
                                ((w & 0x3fc00000) >> 6);
    *(unsigned int *)(d1 + 4) = ((x & 0x000001fe) >> 1) |
                                ((x & 0x000ff000) >> 4) |
                                ((x & 0x7f800000) >> 7);
    c = *(unsigned int *)s2;
    d = c;
    w = a + c + 0x00400801;
    x = a + b + c + d + (0x00400801 << 1);
    *(unsigned int *)d2 = ((w & 0x000001fe) >> 1) | ((w & 0x000ff000) >> 4) |
                          ((w & 0x7f800000) >> 7);
    *(unsigned int *)(d2 + 4) = ((x & 0x000003fc) >> 2) |
                                ((x & 0x001fe000) >> 5) |
                                ((x & 0xff000000) >> 8);
  }
}


x86 assembly (clang, -O0):
<dblineXRGBtoRGB32x2>:
push   %rbp
mov    %rsp,%rbp
mov    0x10(%rbp),%eax
mov    %rdi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
mov    %edx,-0x14(%rbp)
mov    %rcx,-0x20(%rbp)
mov    %r8,-0x28(%rbp)
mov    %r9d,-0x2c(%rbp)
mov    -0x14(%rbp),%eax
and    $0x1,%eax
cmp    $0x0,%eax
je     1274 <dblineXRGBtoRGB32x2+0x174>
mov    -0x20(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0x30(%rbp)
mov    -0x20(%rbp),%rax
mov    0x4(%rax),%eax
mov    %eax,-0x34(%rbp)
mov    -0x30(%rbp),%eax
mov    %eax,-0x48(%rbp)
mov    -0x30(%rbp),%eax
add    -0x34(%rbp),%eax
add    $0x400801,%eax
mov    %eax,-0x4c(%rbp)
mov    -0x48(%rbp),%ecx
and    $0xff,%ecx
shr    $0x0,%ecx
mov    -0x48(%rbp),%eax
and    $0x7f800,%eax
shr    $0x3,%eax
or     %eax,%ecx
mov    -0x48(%rbp),%eax
and    $0x3fc00000,%eax
shr    $0x6,%eax
or     %eax,%ecx
mov    -0x8(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x4c(%rbp),%ecx
and    $0x1fe,%ecx
shr    $0x1,%ecx
mov    -0x4c(%rbp),%eax
and    $0xff000,%eax
shr    $0x4,%eax
or     %eax,%ecx
mov    -0x4c(%rbp),%eax
and    $0x7f800000,%eax
shr    $0x7,%eax
or     %eax,%ecx
mov    -0x8(%rbp),%rax
mov    %ecx,0x4(%rax)
mov    -0x28(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0x38(%rbp)
mov    -0x28(%rbp),%rax
mov    0x4(%rax),%eax
mov    %eax,-0x3c(%rbp)
mov    -0x30(%rbp),%eax
add    -0x38(%rbp),%eax
add    $0x400801,%eax
mov    %eax,-0x48(%rbp)
mov    -0x30(%rbp),%eax
add    -0x34(%rbp),%eax
add    -0x38(%rbp),%eax
add    -0x3c(%rbp),%eax
add    $0x801002,%eax
mov    %eax,-0x4c(%rbp)
mov    -0x48(%rbp),%ecx
and    $0x1fe,%ecx
shr    $0x1,%ecx
mov    -0x48(%rbp),%eax
and    $0xff000,%eax
shr    $0x4,%eax
or     %eax,%ecx
mov    -0x48(%rbp),%eax
and    $0x7f800000,%eax
shr    $0x7,%eax
or     %eax,%ecx
mov    -0x10(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x4c(%rbp),%ecx
and    $0x3fc,%ecx
shr    $0x2,%ecx
mov    -0x4c(%rbp),%eax
and    $0x1fe000,%eax
shr    $0x5,%eax
or     %eax,%ecx
mov    -0x4c(%rbp),%eax
and    $0xff000000,%eax
shr    $0x8,%eax
or     %eax,%ecx
mov    -0x10(%rbp),%rax
mov    %ecx,0x4(%rax)
mov    -0x20(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0x20(%rbp)
mov    -0x28(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0x28(%rbp)
mov    -0x8(%rbp),%rax
add    $0x8,%rax
mov    %rax,-0x8(%rbp)
mov    -0x10(%rbp),%rax
add    $0x8,%rax
mov    %rax,-0x10(%rbp)
mov    0x10(%rbp),%eax
sub    $0x1,%eax
mov    %eax,0x10(%rbp)
jmp    1279 <dblineXRGBtoRGB32x2+0x179>
cmpl   $0x2,0x10(%rbp)
jle    14cd <dblineXRGBtoRGB32x2+0x3cd>
mov    -0x20(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0x30(%rbp)
mov    -0x20(%rbp),%rax
mov    0x4(%rax),%eax
mov    %eax,-0x34(%rbp)
mov    -0x20(%rbp),%rax
mov    0x8(%rax),%eax
mov    %eax,-0x40(%rbp)
mov    -0x30(%rbp),%eax
mov    %eax,-0x48(%rbp)
mov    -0x30(%rbp),%eax
add    -0x34(%rbp),%eax
add    $0x400801,%eax
mov    %eax,-0x4c(%rbp)
mov    -0x34(%rbp),%eax
mov    %eax,-0x50(%rbp)
mov    -0x34(%rbp),%eax
add    -0x40(%rbp),%eax
add    $0x400801,%eax
mov    %eax,-0x54(%rbp)
mov    -0x48(%rbp),%ecx
and    $0xff,%ecx
shr    $0x0,%ecx
mov    -0x48(%rbp),%eax
and    $0x7f800,%eax
shr    $0x3,%eax
or     %eax,%ecx
mov    -0x48(%rbp),%eax
and    $0x3fc00000,%eax
shr    $0x6,%eax
or     %eax,%ecx
mov    -0x8(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x4c(%rbp),%ecx
and    $0x1fe,%ecx
shr    $0x1,%ecx
mov    -0x4c(%rbp),%eax
and    $0xff000,%eax
shr    $0x4,%eax
or     %eax,%ecx
mov    -0x4c(%rbp),%eax
and    $0x7f800000,%eax
shr    $0x7,%eax
or     %eax,%ecx
mov    -0x8(%rbp),%rax
mov    %ecx,0x4(%rax)
mov    -0x50(%rbp),%ecx
and    $0xff,%ecx
shr    $0x0,%ecx
mov    -0x50(%rbp),%eax
and    $0x7f800,%eax
shr    $0x3,%eax
or     %eax,%ecx
mov    -0x50(%rbp),%eax
and    $0x3fc00000,%eax
shr    $0x6,%eax
or     %eax,%ecx
mov    -0x8(%rbp),%rax
mov    %ecx,0x8(%rax)
mov    -0x54(%rbp),%ecx
and    $0x1fe,%ecx
shr    $0x1,%ecx
mov    -0x54(%rbp),%eax
and    $0xff000,%eax
shr    $0x4,%eax
or     %eax,%ecx
mov    -0x54(%rbp),%eax
and    $0x7f800000,%eax
shr    $0x7,%eax
or     %eax,%ecx
mov    -0x8(%rbp),%rax
mov    %ecx,0xc(%rax)
mov    -0x28(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0x38(%rbp)
mov    -0x28(%rbp),%rax
mov    0x4(%rax),%eax
mov    %eax,-0x3c(%rbp)
mov    -0x28(%rbp),%rax
mov    0x8(%rax),%eax
mov    %eax,-0x44(%rbp)
mov    -0x30(%rbp),%eax
add    -0x38(%rbp),%eax
add    $0x400801,%eax
mov    %eax,-0x48(%rbp)
mov    -0x30(%rbp),%eax
add    -0x34(%rbp),%eax
add    -0x38(%rbp),%eax
add    -0x3c(%rbp),%eax
add    $0x801002,%eax
mov    %eax,-0x4c(%rbp)
mov    -0x34(%rbp),%eax
add    -0x3c(%rbp),%eax
add    $0x400801,%eax
mov    %eax,-0x50(%rbp)
mov    -0x34(%rbp),%eax
add    -0x40(%rbp),%eax
add    -0x3c(%rbp),%eax
add    -0x44(%rbp),%eax
add    $0x801002,%eax
mov    %eax,-0x54(%rbp)
mov    -0x48(%rbp),%ecx
and    $0x1fe,%ecx
shr    $0x1,%ecx
mov    -0x48(%rbp),%eax
and    $0xff000,%eax
shr    $0x4,%eax
or     %eax,%ecx
mov    -0x48(%rbp),%eax
and    $0x7f800000,%eax
shr    $0x7,%eax
or     %eax,%ecx
mov    -0x10(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x4c(%rbp),%ecx
and    $0x3fc,%ecx
shr    $0x2,%ecx
mov    -0x4c(%rbp),%eax
and    $0x1fe000,%eax
shr    $0x5,%eax
or     %eax,%ecx
mov    -0x4c(%rbp),%eax
and    $0xff000000,%eax
shr    $0x8,%eax
or     %eax,%ecx
mov    -0x10(%rbp),%rax
mov    %ecx,0x4(%rax)
mov    -0x50(%rbp),%ecx
and    $0x1fe,%ecx
shr    $0x1,%ecx
mov    -0x50(%rbp),%eax
and    $0xff000,%eax
shr    $0x4,%eax
or     %eax,%ecx
mov    -0x50(%rbp),%eax
and    $0x7f800000,%eax
shr    $0x7,%eax
or     %eax,%ecx
mov    -0x10(%rbp),%rax
mov    %ecx,0x8(%rax)
mov    -0x54(%rbp),%ecx
and    $0x3fc,%ecx
shr    $0x2,%ecx
mov    -0x54(%rbp),%eax
and    $0x1fe000,%eax
shr    $0x5,%eax
or     %eax,%ecx
mov    -0x54(%rbp),%eax
and    $0xff000000,%eax
shr    $0x8,%eax
or     %eax,%ecx
mov    -0x10(%rbp),%rax
mov    %ecx,0xc(%rax)
mov    -0x20(%rbp),%rax
add    $0x8,%rax
mov    %rax,-0x20(%rbp)
mov    -0x28(%rbp),%rax
add    $0x8,%rax
mov    %rax,-0x28(%rbp)
mov    -0x8(%rbp),%rax
add    $0x10,%rax
mov    %rax,-0x8(%rbp)
mov    -0x10(%rbp),%rax
add    $0x10,%rax
mov    %rax,-0x10(%rbp)
mov    0x10(%rbp),%eax
sub    $0x2,%eax
mov    %eax,0x10(%rbp)
jmp    1279 <dblineXRGBtoRGB32x2+0x179>
cmpl   $0x1,0x10(%rbp)
jle    16e0 <dblineXRGBtoRGB32x2+0x5e0>
mov    -0x20(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0x30(%rbp)
mov    -0x20(%rbp),%rax
mov    0x4(%rax),%eax
mov    %eax,-0x34(%rbp)
mov    -0x34(%rbp),%eax
mov    %eax,-0x40(%rbp)
mov    -0x30(%rbp),%eax
mov    %eax,-0x48(%rbp)
mov    -0x30(%rbp),%eax
add    -0x34(%rbp),%eax
add    $0x400801,%eax
mov    %eax,-0x4c(%rbp)
mov    -0x34(%rbp),%eax
mov    %eax,-0x50(%rbp)
mov    -0x34(%rbp),%eax
add    -0x40(%rbp),%eax
add    $0x400801,%eax
mov    %eax,-0x54(%rbp)
mov    -0x48(%rbp),%ecx
and    $0xff,%ecx
shr    $0x0,%ecx
mov    -0x48(%rbp),%eax
and    $0x7f800,%eax
shr    $0x3,%eax
or     %eax,%ecx
mov    -0x48(%rbp),%eax
and    $0x3fc00000,%eax
shr    $0x6,%eax
or     %eax,%ecx
mov    -0x8(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x4c(%rbp),%ecx
and    $0x1fe,%ecx
shr    $0x1,%ecx
mov    -0x4c(%rbp),%eax
and    $0xff000,%eax
shr    $0x4,%eax
or     %eax,%ecx
mov    -0x4c(%rbp),%eax
and    $0x7f800000,%eax
shr    $0x7,%eax
or     %eax,%ecx
mov    -0x8(%rbp),%rax
mov    %ecx,0x4(%rax)
mov    -0x50(%rbp),%ecx
and    $0xff,%ecx
shr    $0x0,%ecx
mov    -0x50(%rbp),%eax
and    $0x7f800,%eax
shr    $0x3,%eax
or     %eax,%ecx
mov    -0x50(%rbp),%eax
and    $0x3fc00000,%eax
shr    $0x6,%eax
or     %eax,%ecx
mov    -0x8(%rbp),%rax
mov    %ecx,0x8(%rax)
mov    -0x54(%rbp),%ecx
and    $0x1fe,%ecx
shr    $0x1,%ecx
mov    -0x54(%rbp),%eax
and    $0xff000,%eax
shr    $0x4,%eax
or     %eax,%ecx
mov    -0x54(%rbp),%eax
and    $0x7f800000,%eax
shr    $0x7,%eax
or     %eax,%ecx
mov    -0x8(%rbp),%rax
mov    %ecx,0xc(%rax)
mov    -0x28(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0x38(%rbp)
mov    -0x28(%rbp),%rax
mov    0x4(%rax),%eax
mov    %eax,-0x3c(%rbp)
mov    -0x3c(%rbp),%eax
mov    %eax,-0x44(%rbp)
mov    -0x30(%rbp),%eax
add    -0x38(%rbp),%eax
add    $0x400801,%eax
mov    %eax,-0x48(%rbp)
mov    -0x30(%rbp),%eax
add    -0x34(%rbp),%eax
add    -0x38(%rbp),%eax
add    -0x3c(%rbp),%eax
add    $0x801002,%eax
mov    %eax,-0x4c(%rbp)
mov    -0x34(%rbp),%eax
add    -0x3c(%rbp),%eax
add    $0x400801,%eax
mov    %eax,-0x50(%rbp)
mov    -0x34(%rbp),%eax
add    -0x40(%rbp),%eax
add    -0x3c(%rbp),%eax
add    -0x44(%rbp),%eax
add    $0x801002,%eax
mov    %eax,-0x54(%rbp)
mov    -0x48(%rbp),%ecx
and    $0x1fe,%ecx
shr    $0x1,%ecx
mov    -0x48(%rbp),%eax
and    $0xff000,%eax
shr    $0x4,%eax
or     %eax,%ecx
mov    -0x48(%rbp),%eax
and    $0x7f800000,%eax
shr    $0x7,%eax
or     %eax,%ecx
mov    -0x10(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x4c(%rbp),%ecx
and    $0x3fc,%ecx
shr    $0x2,%ecx
mov    -0x4c(%rbp),%eax
and    $0x1fe000,%eax
shr    $0x5,%eax
or     %eax,%ecx
mov    -0x4c(%rbp),%eax
and    $0xff000000,%eax
shr    $0x8,%eax
or     %eax,%ecx
mov    -0x10(%rbp),%rax
mov    %ecx,0x4(%rax)
mov    -0x50(%rbp),%ecx
and    $0x1fe,%ecx
shr    $0x1,%ecx
mov    -0x50(%rbp),%eax
and    $0xff000,%eax
shr    $0x4,%eax
or     %eax,%ecx
mov    -0x50(%rbp),%eax
and    $0x7f800000,%eax
shr    $0x7,%eax
or     %eax,%ecx
mov    -0x10(%rbp),%rax
mov    %ecx,0x8(%rax)
mov    -0x54(%rbp),%ecx
and    $0x3fc,%ecx
shr    $0x2,%ecx
mov    -0x54(%rbp),%eax
and    $0x1fe000,%eax
shr    $0x5,%eax
or     %eax,%ecx
mov    -0x54(%rbp),%eax
and    $0xff000000,%eax
shr    $0x8,%eax
or     %eax,%ecx
mov    -0x10(%rbp),%rax
mov    %ecx,0xc(%rax)
jmp    17e6 <dblineXRGBtoRGB32x2+0x6e6>
mov    -0x20(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0x30(%rbp)
mov    -0x30(%rbp),%eax
mov    %eax,-0x34(%rbp)
mov    -0x30(%rbp),%eax
mov    %eax,-0x48(%rbp)
mov    -0x30(%rbp),%eax
add    -0x34(%rbp),%eax
add    $0x400801,%eax
mov    %eax,-0x4c(%rbp)
mov    -0x48(%rbp),%ecx
and    $0xff,%ecx
shr    $0x0,%ecx
mov    -0x48(%rbp),%eax
and    $0x7f800,%eax
shr    $0x3,%eax
or     %eax,%ecx
mov    -0x48(%rbp),%eax
and    $0x3fc00000,%eax
shr    $0x6,%eax
or     %eax,%ecx
mov    -0x8(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x4c(%rbp),%ecx
and    $0x1fe,%ecx
shr    $0x1,%ecx
mov    -0x4c(%rbp),%eax
and    $0xff000,%eax
shr    $0x4,%eax
or     %eax,%ecx
mov    -0x4c(%rbp),%eax
and    $0x7f800000,%eax
shr    $0x7,%eax
or     %eax,%ecx
mov    -0x8(%rbp),%rax
mov    %ecx,0x4(%rax)
mov    -0x28(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0x38(%rbp)
mov    -0x38(%rbp),%eax
mov    %eax,-0x3c(%rbp)
mov    -0x30(%rbp),%eax
add    -0x38(%rbp),%eax
add    $0x400801,%eax
mov    %eax,-0x48(%rbp)
mov    -0x30(%rbp),%eax
add    -0x34(%rbp),%eax
add    -0x38(%rbp),%eax
add    -0x3c(%rbp),%eax
add    $0x801002,%eax
mov    %eax,-0x4c(%rbp)
mov    -0x48(%rbp),%ecx
and    $0x1fe,%ecx
shr    $0x1,%ecx
mov    -0x48(%rbp),%eax
and    $0xff000,%eax
shr    $0x4,%eax
or     %eax,%ecx
mov    -0x48(%rbp),%eax
and    $0x7f800000,%eax
shr    $0x7,%eax
or     %eax,%ecx
mov    -0x10(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x4c(%rbp),%ecx
and    $0x3fc,%ecx
shr    $0x2,%ecx
mov    -0x4c(%rbp),%eax
and    $0x1fe000,%eax
shr    $0x5,%eax
or     %eax,%ecx
mov    -0x4c(%rbp),%eax
and    $0xff000000,%eax
shr    $0x8,%eax
or     %eax,%ecx
mov    -0x10(%rbp),%rax
mov    %ecx,0x4(%rax)
pop    %rbp
ret

x86 assembly (clang, -O2):
<dblineXRGBtoRGB32x2>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
mov    0x38(%rsp),%eax
test   $0x1,%dl
je     11f7 <dblineXRGBtoRGB32x2+0xf7>
mov    (%rcx),%r10d
mov    0x4(%rcx),%ebx
add    $0x4,%rcx
lea    (%rbx,%r10,1),%r11d
add    $0x400801,%r11d
add    %r10d,%ebx
movzbl %r10b,%r9d
mov    %r10d,%edx
shr    $0x3,%edx
and    $0xff00,%edx
or     %r9d,%edx
mov    %r10d,%ebp
shr    $0x6,%ebp
and    $0xff0000,%ebp
or     %edx,%ebp
mov    %ebp,(%rdi)
mov    %r11d,%edx
shr    %edx
movzbl %dl,%edx
mov    %r11d,%ebp
shr    $0x4,%ebp
and    $0xff00,%ebp
or     %edx,%ebp
shr    $0x7,%r11d
and    $0xff0000,%r11d
or     %ebp,%r11d
mov    %r11d,0x4(%rdi)
mov    (%r8),%ebp
mov    0x4(%r8),%r9d
add    $0x4,%r8
add    %ebp,%r10d
add    $0x400801,%r10d
add    %ebp,%ebx
add    %ebx,%r9d
add    $0x801002,%r9d
mov    %r10d,%ebp
shr    %ebp
movzbl %bpl,%ebp
mov    %r10d,%edx
shr    $0x4,%edx
and    $0xff00,%edx
or     %ebp,%edx
shr    $0x7,%r10d
and    $0xff0000,%r10d
or     %edx,%r10d
mov    %r10d,(%rsi)
mov    %r9d,%edx
shr    $0x2,%edx
movzbl %dl,%edx
mov    %r9d,%ebx
shr    $0x5,%ebx
and    $0xff00,%ebx
or     %edx,%ebx
shr    $0x8,%r9d
and    $0xff0000,%r9d
or     %ebx,%r9d
mov    %r9d,0x4(%rsi)
add    $0x8,%rdi
add    $0x8,%rsi
add    $0xffffffff,%eax
cmp    $0x3,%eax
jl     1779 <dblineXRGBtoRGB32x2+0x679>
xor    %edx,%edx
mov    %eax,%ebx
sub    $0x4,%ebx
cmovb  %edx,%ebx
add    $0x1,%ebx
cmp    $0x8,%ebx
jb     15e0 <dblineXRGBtoRGB32x2+0x4e0>
mov    %eax,%ebp
sub    $0x4,%ebp
cmovb  %edx,%ebp
add    $0x1,%ebp
shr    %ebp
lea    (%rcx,%rbp,8),%r10
add    $0xc,%r10
lea    (%r8,%rbp,8),%r11
add    $0xc,%r11
shl    $0x4,%rbp
lea    (%rdi,%rbp,1),%rdx
add    $0x10,%rdx
add    %rsi,%rbp
add    $0x10,%rbp
cmp    %rbp,%rdi
setb   %r15b
cmp    %rdx,%rsi
setb   %r14b
cmp    %r10,%rdi
setb   %r13b
cmp    %rdx,%rcx
setb   %r12b
cmp    %r11,%rdi
setb   %r9b
cmp    %rdx,%r8
setb   %dl
cmp    %r10,%rsi
setb   %r10b
cmp    %rbp,%rcx
setb   -0x1(%rsp)
cmp    %r11,%rsi
setb   %r11b
cmp    %rbp,%r8
setb   %bpl
test   %r14b,%r15b
jne    15e0 <dblineXRGBtoRGB32x2+0x4e0>
and    %r12b,%r13b
jne    15e0 <dblineXRGBtoRGB32x2+0x4e0>
and    %dl,%r9b
jne    15e0 <dblineXRGBtoRGB32x2+0x4e0>
and    -0x1(%rsp),%r10b
jne    15e0 <dblineXRGBtoRGB32x2+0x4e0>
and    %bpl,%r11b
jne    15e0 <dblineXRGBtoRGB32x2+0x4e0>
shr    %ebx
add    $0x1,%ebx
mov    %ebx,%ebp
and    $0x3,%ebp
test   %rbp,%rbp
mov    $0x4,%edx
cmovne %rbp,%rdx
mov    %rbx,%r9
sub    %rdx,%r9
sub    %r9d,%eax
sub    %r9d,%eax
lea    (%r8,%r9,8),%r10
lea    (%rcx,%r9,8),%r11
shl    $0x4,%r9
lea    (%rdi,%r9,1),%r14
add    %rsi,%r9
sub    %rbx,%rdx
xor    %ebx,%ebx
movdqa 0xd02(%rip),%xmm9
movdqa 0xd09(%rip),%xmm10
movdqa 0xd10(%rip),%xmm11
movdqa 0xd17(%rip),%xmm12
movdqa 0xd1e(%rip),%xmm8
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
movups (%rcx,%rbx,1),%xmm5
movups 0x4(%rcx,%rbx,1),%xmm14
movups 0x10(%rcx,%rbx,1),%xmm0
shufps $0x88,%xmm0,%xmm5
movups 0x14(%rcx,%rbx,1),%xmm0
movaps %xmm14,%xmm2
shufps $0x88,%xmm0,%xmm2
shufps $0xdd,%xmm0,%xmm14
movaps %xmm2,%xmm13
paddd  %xmm5,%xmm13
movdqa %xmm13,%xmm3
paddd  %xmm9,%xmm3
paddd  %xmm2,%xmm14
movdqa %xmm14,%xmm7
paddd  %xmm9,%xmm7
movdqa %xmm5,%xmm1
pand   %xmm10,%xmm1
movdqa %xmm5,%xmm6
psrld  $0x3,%xmm6
pand   %xmm11,%xmm6
por    %xmm1,%xmm6
movdqa %xmm5,%xmm1
psrld  $0x6,%xmm1
pand   %xmm12,%xmm1
por    %xmm6,%xmm1
movdqa %xmm3,%xmm6
psrld  $0x1,%xmm6
pand   %xmm10,%xmm6
movdqa %xmm3,%xmm0
psrld  $0x4,%xmm0
pand   %xmm11,%xmm0
por    %xmm6,%xmm0
psrld  $0x7,%xmm3
pand   %xmm12,%xmm3
por    %xmm0,%xmm3
movdqa %xmm2,%xmm0
pand   %xmm10,%xmm0
movdqa %xmm2,%xmm4
psrld  $0x3,%xmm4
pand   %xmm11,%xmm4
por    %xmm0,%xmm4
movdqa %xmm2,%xmm6
psrld  $0x6,%xmm6
pand   %xmm12,%xmm6
por    %xmm4,%xmm6
movdqa %xmm7,%xmm0
psrld  $0x1,%xmm0
pand   %xmm10,%xmm0
movdqa %xmm7,%xmm4
psrld  $0x4,%xmm4
pand   %xmm11,%xmm4
por    %xmm0,%xmm4
psrld  $0x7,%xmm7
pand   %xmm12,%xmm7
por    %xmm4,%xmm7
movdqa %xmm6,%xmm0
punpckhdq %xmm7,%xmm0
movdqa %xmm1,%xmm4
punpckhdq %xmm3,%xmm4
movdqa %xmm4,%xmm15
punpcklqdq %xmm0,%xmm15
punpckldq %xmm7,%xmm6
punpckldq %xmm3,%xmm1
movdqa %xmm1,%xmm3
punpckhqdq %xmm6,%xmm3
punpcklqdq %xmm6,%xmm1
punpckhqdq %xmm0,%xmm4
movdqu %xmm4,0x30(%rdi,%rbx,2)
movdqu %xmm1,(%rdi,%rbx,2)
movdqu %xmm3,0x10(%rdi,%rbx,2)
movdqu %xmm15,0x20(%rdi,%rbx,2)
movups (%r8,%rbx,1),%xmm0
movups 0x4(%r8,%rbx,1),%xmm1
movups 0x10(%r8,%rbx,1),%xmm3
shufps $0x88,%xmm3,%xmm0
movups 0x14(%r8,%rbx,1),%xmm3
movaps %xmm1,%xmm4
shufps $0x88,%xmm3,%xmm4
shufps $0xdd,%xmm3,%xmm1
paddd  %xmm0,%xmm5
paddd  %xmm9,%xmm5
paddd  %xmm4,%xmm2
paddd  %xmm8,%xmm4
paddd  %xmm13,%xmm0
paddd  %xmm4,%xmm0
paddd  %xmm9,%xmm2
paddd  %xmm14,%xmm1
paddd  %xmm4,%xmm1
movdqa %xmm5,%xmm3
psrld  $0x1,%xmm3
pand   %xmm10,%xmm3
movdqa %xmm5,%xmm4
psrld  $0x4,%xmm4
pand   %xmm11,%xmm4
por    %xmm3,%xmm4
psrld  $0x7,%xmm5
pand   %xmm12,%xmm5
por    %xmm4,%xmm5
movdqa %xmm0,%xmm3
psrld  $0x2,%xmm3
pand   %xmm10,%xmm3
movdqa %xmm0,%xmm4
psrld  $0x5,%xmm4
pand   %xmm11,%xmm4
por    %xmm3,%xmm4
psrld  $0x8,%xmm0
pand   %xmm12,%xmm0
por    %xmm4,%xmm0
movdqa %xmm2,%xmm3
psrld  $0x1,%xmm3
pand   %xmm10,%xmm3
movdqa %xmm2,%xmm4
psrld  $0x4,%xmm4
pand   %xmm11,%xmm4
por    %xmm3,%xmm4
psrld  $0x7,%xmm2
pand   %xmm12,%xmm2
por    %xmm4,%xmm2
movdqa %xmm1,%xmm3
psrld  $0x2,%xmm3
pand   %xmm10,%xmm3
movdqa %xmm1,%xmm4
psrld  $0x5,%xmm4
pand   %xmm11,%xmm4
por    %xmm3,%xmm4
psrld  $0x8,%xmm1
pand   %xmm12,%xmm1
por    %xmm4,%xmm1
movdqa %xmm2,%xmm3
punpckldq %xmm1,%xmm3
movdqa %xmm5,%xmm4
punpckldq %xmm0,%xmm4
movdqa %xmm4,%xmm6
punpckhqdq %xmm3,%xmm6
punpcklqdq %xmm3,%xmm4
punpckhdq %xmm1,%xmm2
punpckhdq %xmm0,%xmm5
movdqa %xmm5,%xmm0
punpckhqdq %xmm2,%xmm0
punpcklqdq %xmm2,%xmm5
movdqu %xmm5,0x20(%rsi,%rbx,2)
movdqu %xmm0,0x30(%rsi,%rbx,2)
movdqu %xmm4,(%rsi,%rbx,2)
movdqu %xmm6,0x10(%rsi,%rbx,2)
add    $0x20,%rbx
add    $0x4,%rdx
jne    1330 <dblineXRGBtoRGB32x2+0x230>
mov    %r14,%rdi
mov    %r10,%r8
mov    %r11,%rcx
mov    %r9,%rsi
nop
mov    %eax,%r9d
mov    (%rcx),%r15d
mov    0x4(%rcx),%r12d
mov    0x8(%rcx),%r11d
add    $0x8,%rcx
lea    (%r12,%r15,1),%r10d
lea    (%r12,%r15,1),%ebp
add    $0x400801,%ebp
lea    (%r11,%r12,1),%edx
add    $0x400801,%edx
add    %r12d,%r11d
movzbl %r15b,%r14d
mov    %r15d,%ebx
shr    $0x3,%ebx
and    $0xff00,%ebx
or     %r14d,%ebx
mov    %r15d,%eax
shr    $0x6,%eax
and    $0xff0000,%eax
or     %ebx,%eax
mov    %eax,(%rdi)
mov    %ebp,%eax
shr    %eax
movzbl %al,%eax
mov    %ebp,%ebx
shr    $0x4,%ebx
and    $0xff00,%ebx
or     %eax,%ebx
shr    $0x7,%ebp
and    $0xff0000,%ebp
or     %ebx,%ebp
mov    %ebp,0x4(%rdi)
movzbl %r12b,%eax
mov    %r12d,%ebx
shr    $0x3,%ebx
and    $0xff00,%ebx
or     %eax,%ebx
mov    %r12d,%eax
shr    $0x6,%eax
and    $0xff0000,%eax
or     %ebx,%eax
mov    %eax,0x8(%rdi)
mov    %edx,%eax
shr    %eax
movzbl %al,%eax
mov    %edx,%ebx
shr    $0x4,%ebx
and    $0xff00,%ebx
or     %eax,%ebx
shr    $0x7,%edx
and    $0xff0000,%edx
or     %ebx,%edx
mov    %edx,0xc(%rdi)
mov    (%r8),%ebp
mov    0x4(%r8),%edx
lea    (%r15,%rbp,1),%eax
add    $0x400801,%eax
lea    (%rdx,%r10,1),%ebx
add    $0x801002,%ebx
add    %ebp,%ebx
lea    (%r12,%rdx,1),%r10d
add    $0x400801,%r10d
add    %edx,%r11d
add    $0x801002,%r11d
add    0x8(%r8),%r11d
add    $0x8,%r8
mov    %eax,%ebp
shr    %ebp
movzbl %bpl,%ebp
mov    %eax,%edx
shr    $0x4,%edx
and    $0xff00,%edx
or     %ebp,%edx
shr    $0x7,%eax
and    $0xff0000,%eax
or     %edx,%eax
mov    %eax,(%rsi)
mov    %ebx,%eax
shr    $0x2,%eax
movzbl %al,%eax
mov    %ebx,%edx
shr    $0x5,%edx
and    $0xff00,%edx
or     %eax,%edx
shr    $0x8,%ebx
and    $0xff0000,%ebx
or     %edx,%ebx
mov    %ebx,0x4(%rsi)
mov    %r10d,%eax
shr    %eax
movzbl %al,%eax
mov    %r10d,%edx
shr    $0x4,%edx
and    $0xff00,%edx
or     %eax,%edx
shr    $0x7,%r10d
and    $0xff0000,%r10d
or     %edx,%r10d
mov    %r10d,0x8(%rsi)
mov    %r11d,%eax
shr    $0x2,%eax
movzbl %al,%eax
mov    %r11d,%edx
shr    $0x5,%edx
and    $0xff00,%edx
or     %eax,%edx
shr    $0x8,%r11d
and    $0xff0000,%r11d
or     %edx,%r11d
mov    %r11d,0xc(%rsi)
add    $0x10,%rdi
add    $0x10,%rsi
lea    -0x2(%r9),%eax
cmp    $0x4,%r9d
ja     15e0 <dblineXRGBtoRGB32x2+0x4e0>
mov    (%rcx),%r14d
cmp    $0x2,%eax
jne    18c8 <dblineXRGBtoRGB32x2+0x7c8>
mov    0x4(%rcx),%r11d
lea    (%r11,%r14,1),%r9d
lea    (%r11,%r14,1),%edx
add    $0x400801,%edx
lea    (%r11,%r11,1),%ecx
add    $0x400801,%ecx
movzbl %r14b,%r10d
mov    %r14d,%eax
shr    $0x3,%eax
and    $0xff00,%eax
or     %r10d,%eax
mov    %r14d,%ebx
shr    $0x6,%ebx
and    $0xff0000,%ebx
or     %eax,%ebx
mov    %ebx,(%rdi)
mov    %edx,%eax
shr    %eax
movzbl %al,%eax
mov    %edx,%ebp
shr    $0x4,%ebp
and    $0xff00,%ebp
or     %eax,%ebp
shr    $0x7,%edx
and    $0xff0000,%edx
or     %ebp,%edx
mov    %edx,0x4(%rdi)
movzbl %r11b,%eax
mov    %r11d,%edx
shr    $0x3,%edx
and    $0xff00,%edx
or     %eax,%edx
mov    %r11d,%eax
shr    $0x6,%eax
and    $0xff0000,%eax
or     %edx,%eax
mov    %eax,0x8(%rdi)
mov    %ecx,%eax
shr    %eax
movzbl %al,%eax
mov    %ecx,%edx
shr    $0x4,%edx
and    $0xff00,%edx
or     %eax,%edx
shr    $0x7,%ecx
and    $0xff0000,%ecx
or     %edx,%ecx
mov    %ecx,0xc(%rdi)
mov    (%r8),%eax
mov    0x4(%r8),%edi
lea    (%r14,%rax,1),%ebx
add    $0x400801,%ebx
add    %eax,%r9d
lea    (%rdi,%r9,1),%eax
add    $0x801002,%eax
lea    (%rdi,%r11,1),%ecx
add    $0x400801,%ecx
mov    %edi,%r8d
add    %r11d,%r8d
mov    %ebx,%edi
shr    %edi
movzbl %dil,%edi
mov    %ebx,%ebp
shr    $0x4,%ebp
and    $0xff00,%ebp
or     %edi,%ebp
shr    $0x7,%ebx
and    $0xff0000,%ebx
or     %ebp,%ebx
mov    %ebx,(%rsi)
mov    %eax,%edi
shr    $0x2,%edi
movzbl %dil,%edi
mov    %eax,%edx
shr    $0x5,%edx
and    $0xff00,%edx
or     %edi,%edx
shr    $0x8,%eax
and    $0xff0000,%eax
or     %edx,%eax
mov    %eax,0x4(%rsi)
mov    %ecx,%eax
shr    %eax
movzbl %al,%eax
mov    %ecx,%edx
shr    $0x4,%edx
and    $0xff00,%edx
or     %eax,%edx
shr    $0x7,%ecx
and    $0xff0000,%ecx
or     %edx,%ecx
lea    0x8(%rsi),%rdi
mov    $0xc,%edx
jmp    194e <dblineXRGBtoRGB32x2+0x84e>
lea    (%r14,%r14,1),%eax
add    $0x400801,%eax
movzbl %r14b,%ecx
mov    %r14d,%edx
shr    $0x3,%edx
and    $0xff00,%edx
or     %ecx,%edx
mov    %r14d,%ecx
shr    $0x6,%ecx
and    $0xff0000,%ecx
or     %edx,%ecx
mov    %ecx,(%rdi)
mov    %eax,%ecx
shr    %ecx
movzbl %cl,%ecx
mov    %eax,%edx
shr    $0x4,%edx
and    $0xff00,%edx
or     %ecx,%edx
shr    $0x7,%eax
and    $0xff0000,%eax
or     %edx,%eax
mov    %eax,0x4(%rdi)
mov    (%r8),%eax
mov    %r14d,%r8d
add    %eax,%r8d
lea    (%rax,%r14,1),%ecx
add    $0x400801,%ecx
mov    %ecx,%eax
shr    %eax
movzbl %al,%eax
mov    %ecx,%edx
shr    $0x4,%edx
and    $0xff00,%edx
or     %eax,%edx
shr    $0x7,%ecx
and    $0xff0000,%ecx
or     %edx,%ecx
mov    $0x4,%edx
mov    %rsi,%rdi
lea    (%r8,%r8,1),%eax
add    $0x801002,%eax
mov    %ecx,(%rdi)
mov    %eax,%ecx
shr    $0x2,%ecx
movzbl %cl,%ecx
mov    %eax,%edi
shr    $0x5,%edi
and    $0xff00,%edi
or     %ecx,%edi
shr    $0x8,%eax
and    $0xff0000,%eax
or     %edi,%eax
mov    %eax,(%rsi,%rdx,1)
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

LLVM IR (-O0):
define void @dblineXRGBtoRGB32x2(i8* %0, i8* %1, i32 %2, i8* %3, i8* %4, i32 %5, i32 %6) {
%8 = alloca i8*
%9 = alloca i8*
%10 = alloca i32
%11 = alloca i8*
%12 = alloca i8*
%13 = alloca i32
%14 = alloca i32
%15 = alloca i32
%16 = alloca i32
%17 = alloca i32
%18 = alloca i32
%19 = alloca i32
%20 = alloca i32
%21 = alloca i32
%22 = alloca i32
%23 = alloca i32
%24 = alloca i32
store i8* %0, i8** %8
store i8* %1, i8** %9
store i32 %2, i32* %10
store i8* %3, i8** %11
store i8* %4, i8** %12
store i32 %5, i32* %13
store i32 %6, i32* %14
%25 = load i32, i32* %10
%26 = and i32 %25, 1
%27 = icmp ne i32 %26, 0
br i1 %27, label %28, label %125
28: ; preds = %7
%29 = load i8*, i8** %11
%30 = bitcast i8* %29 to i32*
%31 = load i32, i32* %30
store i32 %31, i32* %15
%32 = load i8*, i8** %11
%33 = getelementptr inbounds i8, i8* %32, i64 4
%34 = bitcast i8* %33 to i32*
%35 = load i32, i32* %34
store i32 %35, i32* %16
%36 = load i32, i32* %15
store i32 %36, i32* %21
%37 = load i32, i32* %15
%38 = load i32, i32* %16
%39 = add i32 %37, %38
%40 = add i32 %39, 4196353
store i32 %40, i32* %22
%41 = load i32, i32* %21
%42 = and i32 %41, 255
%43 = lshr i32 %42, 0
%44 = load i32, i32* %21
%45 = and i32 %44, 522240
%46 = lshr i32 %45, 3
%47 = or i32 %43, %46
%48 = load i32, i32* %21
%49 = and i32 %48, 1069547520
%50 = lshr i32 %49, 6
%51 = or i32 %47, %50
%52 = load i8*, i8** %8
%53 = getelementptr inbounds i8, i8* %52, i64 0
%54 = bitcast i8* %53 to i32*
store i32 %51, i32* %54
%55 = load i32, i32* %22
%56 = and i32 %55, 510
%57 = lshr i32 %56, 1
%58 = load i32, i32* %22
%59 = and i32 %58, 1044480
%60 = lshr i32 %59, 4
%61 = or i32 %57, %60
%62 = load i32, i32* %22
%63 = and i32 %62, 2139095040
%64 = lshr i32 %63, 7
%65 = or i32 %61, %64
%66 = load i8*, i8** %8
%67 = getelementptr inbounds i8, i8* %66, i64 4
%68 = bitcast i8* %67 to i32*
store i32 %65, i32* %68
%69 = load i8*, i8** %12
%70 = bitcast i8* %69 to i32*
%71 = load i32, i32* %70
store i32 %71, i32* %17
%72 = load i8*, i8** %12
%73 = getelementptr inbounds i8, i8* %72, i64 4
%74 = bitcast i8* %73 to i32*
%75 = load i32, i32* %74
store i32 %75, i32* %18
%76 = load i32, i32* %15
%77 = load i32, i32* %17
%78 = add i32 %76, %77
%79 = add i32 %78, 4196353
store i32 %79, i32* %21
%80 = load i32, i32* %15
%81 = load i32, i32* %16
%82 = add i32 %80, %81
%83 = load i32, i32* %17
%84 = add i32 %82, %83
%85 = load i32, i32* %18
%86 = add i32 %84, %85
%87 = add i32 %86, 8392706
store i32 %87, i32* %22
%88 = load i32, i32* %21
%89 = and i32 %88, 510
%90 = lshr i32 %89, 1
%91 = load i32, i32* %21
%92 = and i32 %91, 1044480
%93 = lshr i32 %92, 4
%94 = or i32 %90, %93
%95 = load i32, i32* %21
%96 = and i32 %95, 2139095040
%97 = lshr i32 %96, 7
%98 = or i32 %94, %97
%99 = load i8*, i8** %9
%100 = bitcast i8* %99 to i32*
store i32 %98, i32* %100
%101 = load i32, i32* %22
%102 = and i32 %101, 1020
%103 = lshr i32 %102, 2
%104 = load i32, i32* %22
%105 = and i32 %104, 2088960
%106 = lshr i32 %105, 5
%107 = or i32 %103, %106
%108 = load i32, i32* %22
%109 = and i32 %108, -16777216
%110 = lshr i32 %109, 8
%111 = or i32 %107, %110
%112 = load i8*, i8** %9
%113 = getelementptr inbounds i8, i8* %112, i64 4
%114 = bitcast i8* %113 to i32*
store i32 %111, i32* %114
%115 = load i8*, i8** %11
%116 = getelementptr inbounds i8, i8* %115, i64 4
store i8* %116, i8** %11
%117 = load i8*, i8** %12
%118 = getelementptr inbounds i8, i8* %117, i64 4
store i8* %118, i8** %12
%119 = load i8*, i8** %8
%120 = getelementptr inbounds i8, i8* %119, i64 8
store i8* %120, i8** %8
%121 = load i8*, i8** %9
%122 = getelementptr inbounds i8, i8* %121, i64 8
store i8* %122, i8** %9
%123 = load i32, i32* %14
%124 = sub nsw i32 %123, 1
store i32 %124, i32* %14
br label %125
125: ; preds = %28, %7
br label %126
126: ; preds = %129, %125
%127 = load i32, i32* %14
%128 = icmp sgt i32 %127, 2
br i1 %128, label %129, label %306
129: ; preds = %126
%130 = load i8*, i8** %11
%131 = bitcast i8* %130 to i32*
%132 = load i32, i32* %131
store i32 %132, i32* %15
%133 = load i8*, i8** %11
%134 = getelementptr inbounds i8, i8* %133, i64 4
%135 = bitcast i8* %134 to i32*
%136 = load i32, i32* %135
store i32 %136, i32* %16
%137 = load i8*, i8** %11
%138 = getelementptr inbounds i8, i8* %137, i64 8
%139 = bitcast i8* %138 to i32*
%140 = load i32, i32* %139
store i32 %140, i32* %19
%141 = load i32, i32* %15
store i32 %141, i32* %21
%142 = load i32, i32* %15
%143 = load i32, i32* %16
%144 = add i32 %142, %143
%145 = add i32 %144, 4196353
store i32 %145, i32* %22
%146 = load i32, i32* %16
store i32 %146, i32* %23
%147 = load i32, i32* %16
%148 = load i32, i32* %19
%149 = add i32 %147, %148
%150 = add i32 %149, 4196353
store i32 %150, i32* %24
%151 = load i32, i32* %21
%152 = and i32 %151, 255
%153 = lshr i32 %152, 0
%154 = load i32, i32* %21
%155 = and i32 %154, 522240
%156 = lshr i32 %155, 3
%157 = or i32 %153, %156
%158 = load i32, i32* %21
%159 = and i32 %158, 1069547520
%160 = lshr i32 %159, 6
%161 = or i32 %157, %160
%162 = load i8*, i8** %8
%163 = bitcast i8* %162 to i32*
store i32 %161, i32* %163
%164 = load i32, i32* %22
%165 = and i32 %164, 510
%166 = lshr i32 %165, 1
%167 = load i32, i32* %22
%168 = and i32 %167, 1044480
%169 = lshr i32 %168, 4
%170 = or i32 %166, %169
%171 = load i32, i32* %22
%172 = and i32 %171, 2139095040
%173 = lshr i32 %172, 7
%174 = or i32 %170, %173
%175 = load i8*, i8** %8
%176 = getelementptr inbounds i8, i8* %175, i64 4
%177 = bitcast i8* %176 to i32*
store i32 %174, i32* %177
%178 = load i32, i32* %23
%179 = and i32 %178, 255
%180 = lshr i32 %179, 0
%181 = load i32, i32* %23
%182 = and i32 %181, 522240
%183 = lshr i32 %182, 3
%184 = or i32 %180, %183
%185 = load i32, i32* %23
%186 = and i32 %185, 1069547520
%187 = lshr i32 %186, 6
%188 = or i32 %184, %187
%189 = load i8*, i8** %8
%190 = getelementptr inbounds i8, i8* %189, i64 8
%191 = bitcast i8* %190 to i32*
store i32 %188, i32* %191
%192 = load i32, i32* %24
%193 = and i32 %192, 510
%194 = lshr i32 %193, 1
%195 = load i32, i32* %24
%196 = and i32 %195, 1044480
%197 = lshr i32 %196, 4
%198 = or i32 %194, %197
%199 = load i32, i32* %24
%200 = and i32 %199, 2139095040
%201 = lshr i32 %200, 7
%202 = or i32 %198, %201
%203 = load i8*, i8** %8
%204 = getelementptr inbounds i8, i8* %203, i64 12
%205 = bitcast i8* %204 to i32*
store i32 %202, i32* %205
%206 = load i8*, i8** %12
%207 = bitcast i8* %206 to i32*
%208 = load i32, i32* %207
store i32 %208, i32* %17
%209 = load i8*, i8** %12
%210 = getelementptr inbounds i8, i8* %209, i64 4
%211 = bitcast i8* %210 to i32*
%212 = load i32, i32* %211
store i32 %212, i32* %18
%213 = load i8*, i8** %12
%214 = getelementptr inbounds i8, i8* %213, i64 8
%215 = bitcast i8* %214 to i32*
%216 = load i32, i32* %215
store i32 %216, i32* %20
%217 = load i32, i32* %15
%218 = load i32, i32* %17
%219 = add i32 %217, %218
%220 = add i32 %219, 4196353
store i32 %220, i32* %21
%221 = load i32, i32* %15
%222 = load i32, i32* %16
%223 = add i32 %221, %222
%224 = load i32, i32* %17
%225 = add i32 %223, %224
%226 = load i32, i32* %18
%227 = add i32 %225, %226
%228 = add i32 %227, 8392706
store i32 %228, i32* %22
%229 = load i32, i32* %16
%230 = load i32, i32* %18
%231 = add i32 %229, %230
%232 = add i32 %231, 4196353
store i32 %232, i32* %23
%233 = load i32, i32* %16
%234 = load i32, i32* %19
%235 = add i32 %233, %234
%236 = load i32, i32* %18
%237 = add i32 %235, %236
%238 = load i32, i32* %20
%239 = add i32 %237, %238
%240 = add i32 %239, 8392706
store i32 %240, i32* %24
%241 = load i32, i32* %21
%242 = and i32 %241, 510
%243 = lshr i32 %242, 1
%244 = load i32, i32* %21
%245 = and i32 %244, 1044480
%246 = lshr i32 %245, 4
%247 = or i32 %243, %246
%248 = load i32, i32* %21
%249 = and i32 %248, 2139095040
%250 = lshr i32 %249, 7
%251 = or i32 %247, %250
%252 = load i8*, i8** %9
%253 = bitcast i8* %252 to i32*
store i32 %251, i32* %253
%254 = load i32, i32* %22
%255 = and i32 %254, 1020
%256 = lshr i32 %255, 2
%257 = load i32, i32* %22
%258 = and i32 %257, 2088960
%259 = lshr i32 %258, 5
%260 = or i32 %256, %259
%261 = load i32, i32* %22
%262 = and i32 %261, -16777216
%263 = lshr i32 %262, 8
%264 = or i32 %260, %263
%265 = load i8*, i8** %9
%266 = getelementptr inbounds i8, i8* %265, i64 4
%267 = bitcast i8* %266 to i32*
store i32 %264, i32* %267
%268 = load i32, i32* %23
%269 = and i32 %268, 510
%270 = lshr i32 %269, 1
%271 = load i32, i32* %23
%272 = and i32 %271, 1044480
%273 = lshr i32 %272, 4
%274 = or i32 %270, %273
%275 = load i32, i32* %23
%276 = and i32 %275, 2139095040
%277 = lshr i32 %276, 7
%278 = or i32 %274, %277
%279 = load i8*, i8** %9
%280 = getelementptr inbounds i8, i8* %279, i64 8
%281 = bitcast i8* %280 to i32*
store i32 %278, i32* %281
%282 = load i32, i32* %24
%283 = and i32 %282, 1020
%284 = lshr i32 %283, 2
%285 = load i32, i32* %24
%286 = and i32 %285, 2088960
%287 = lshr i32 %286, 5
%288 = or i32 %284, %287
%289 = load i32, i32* %24
%290 = and i32 %289, -16777216
%291 = lshr i32 %290, 8
%292 = or i32 %288, %291
%293 = load i8*, i8** %9
%294 = getelementptr inbounds i8, i8* %293, i64 12
%295 = bitcast i8* %294 to i32*
store i32 %292, i32* %295
%296 = load i8*, i8** %11
%297 = getelementptr inbounds i8, i8* %296, i64 8
store i8* %297, i8** %11
%298 = load i8*, i8** %12
%299 = getelementptr inbounds i8, i8* %298, i64 8
store i8* %299, i8** %12
%300 = load i8*, i8** %8
%301 = getelementptr inbounds i8, i8* %300, i64 16
store i8* %301, i8** %8
%302 = load i8*, i8** %9
%303 = getelementptr inbounds i8, i8* %302, i64 16
store i8* %303, i8** %9
%304 = load i32, i32* %14
%305 = sub nsw i32 %304, 2
store i32 %305, i32* %14
br label %126
306: ; preds = %126
%307 = load i32, i32* %14
%308 = icmp sgt i32 %307, 1
br i1 %308, label %309, label %470
309: ; preds = %306
%310 = load i8*, i8** %11
%311 = bitcast i8* %310 to i32*
%312 = load i32, i32* %311
store i32 %312, i32* %15
%313 = load i8*, i8** %11
%314 = getelementptr inbounds i8, i8* %313, i64 4
%315 = bitcast i8* %314 to i32*
%316 = load i32, i32* %315
store i32 %316, i32* %16
%317 = load i32, i32* %16
store i32 %317, i32* %19
%318 = load i32, i32* %15
store i32 %318, i32* %21
%319 = load i32, i32* %15
%320 = load i32, i32* %16
%321 = add i32 %319, %320
%322 = add i32 %321, 4196353
store i32 %322, i32* %22
%323 = load i32, i32* %16
store i32 %323, i32* %23
%324 = load i32, i32* %16
%325 = load i32, i32* %19
%326 = add i32 %324, %325
%327 = add i32 %326, 4196353
store i32 %327, i32* %24
%328 = load i32, i32* %21
%329 = and i32 %328, 255
%330 = lshr i32 %329, 0
%331 = load i32, i32* %21
%332 = and i32 %331, 522240
%333 = lshr i32 %332, 3
%334 = or i32 %330, %333
%335 = load i32, i32* %21
%336 = and i32 %335, 1069547520
%337 = lshr i32 %336, 6
%338 = or i32 %334, %337
%339 = load i8*, i8** %8
%340 = bitcast i8* %339 to i32*
store i32 %338, i32* %340
%341 = load i32, i32* %22
%342 = and i32 %341, 510
%343 = lshr i32 %342, 1
%344 = load i32, i32* %22
%345 = and i32 %344, 1044480
%346 = lshr i32 %345, 4
%347 = or i32 %343, %346
%348 = load i32, i32* %22
%349 = and i32 %348, 2139095040
%350 = lshr i32 %349, 7
%351 = or i32 %347, %350
%352 = load i8*, i8** %8
%353 = getelementptr inbounds i8, i8* %352, i64 4
%354 = bitcast i8* %353 to i32*
store i32 %351, i32* %354
%355 = load i32, i32* %23
%356 = and i32 %355, 255
%357 = lshr i32 %356, 0
%358 = load i32, i32* %23
%359 = and i32 %358, 522240
%360 = lshr i32 %359, 3
%361 = or i32 %357, %360
%362 = load i32, i32* %23
%363 = and i32 %362, 1069547520
%364 = lshr i32 %363, 6
%365 = or i32 %361, %364
%366 = load i8*, i8** %8
%367 = getelementptr inbounds i8, i8* %366, i64 8
%368 = bitcast i8* %367 to i32*
store i32 %365, i32* %368
%369 = load i32, i32* %24
%370 = and i32 %369, 510
%371 = lshr i32 %370, 1
%372 = load i32, i32* %24
%373 = and i32 %372, 1044480
%374 = lshr i32 %373, 4
%375 = or i32 %371, %374
%376 = load i32, i32* %24
%377 = and i32 %376, 2139095040
%378 = lshr i32 %377, 7
%379 = or i32 %375, %378
%380 = load i8*, i8** %8
%381 = getelementptr inbounds i8, i8* %380, i64 12
%382 = bitcast i8* %381 to i32*
store i32 %379, i32* %382
%383 = load i8*, i8** %12
%384 = bitcast i8* %383 to i32*
%385 = load i32, i32* %384
store i32 %385, i32* %17
%386 = load i8*, i8** %12
%387 = getelementptr inbounds i8, i8* %386, i64 4
%388 = bitcast i8* %387 to i32*
%389 = load i32, i32* %388
store i32 %389, i32* %18
%390 = load i32, i32* %18
store i32 %390, i32* %20
%391 = load i32, i32* %15
%392 = load i32, i32* %17
%393 = add i32 %391, %392
%394 = add i32 %393, 4196353
store i32 %394, i32* %21
%395 = load i32, i32* %15
%396 = load i32, i32* %16
%397 = add i32 %395, %396
%398 = load i32, i32* %17
%399 = add i32 %397, %398
%400 = load i32, i32* %18
%401 = add i32 %399, %400
%402 = add i32 %401, 8392706
store i32 %402, i32* %22
%403 = load i32, i32* %16
%404 = load i32, i32* %18
%405 = add i32 %403, %404
%406 = add i32 %405, 4196353
store i32 %406, i32* %23
%407 = load i32, i32* %16
%408 = load i32, i32* %19
%409 = add i32 %407, %408
%410 = load i32, i32* %18
%411 = add i32 %409, %410
%412 = load i32, i32* %20
%413 = add i32 %411, %412
%414 = add i32 %413, 8392706
store i32 %414, i32* %24
%415 = load i32, i32* %21
%416 = and i32 %415, 510
%417 = lshr i32 %416, 1
%418 = load i32, i32* %21
%419 = and i32 %418, 1044480
%420 = lshr i32 %419, 4
%421 = or i32 %417, %420
%422 = load i32, i32* %21
%423 = and i32 %422, 2139095040
%424 = lshr i32 %423, 7
%425 = or i32 %421, %424
%426 = load i8*, i8** %9
%427 = bitcast i8* %426 to i32*
store i32 %425, i32* %427
%428 = load i32, i32* %22
%429 = and i32 %428, 1020
%430 = lshr i32 %429, 2
%431 = load i32, i32* %22
%432 = and i32 %431, 2088960
%433 = lshr i32 %432, 5
%434 = or i32 %430, %433
%435 = load i32, i32* %22
%436 = and i32 %435, -16777216
%437 = lshr i32 %436, 8
%438 = or i32 %434, %437
%439 = load i8*, i8** %9
%440 = getelementptr inbounds i8, i8* %439, i64 4
%441 = bitcast i8* %440 to i32*
store i32 %438, i32* %441
%442 = load i32, i32* %23
%443 = and i32 %442, 510
%444 = lshr i32 %443, 1
%445 = load i32, i32* %23
%446 = and i32 %445, 1044480
%447 = lshr i32 %446, 4
%448 = or i32 %444, %447
%449 = load i32, i32* %23
%450 = and i32 %449, 2139095040
%451 = lshr i32 %450, 7
%452 = or i32 %448, %451
%453 = load i8*, i8** %9
%454 = getelementptr inbounds i8, i8* %453, i64 8
%455 = bitcast i8* %454 to i32*
store i32 %452, i32* %455
%456 = load i32, i32* %24
%457 = and i32 %456, 1020
%458 = lshr i32 %457, 2
%459 = load i32, i32* %24
%460 = and i32 %459, 2088960
%461 = lshr i32 %460, 5
%462 = or i32 %458, %461
%463 = load i32, i32* %24
%464 = and i32 %463, -16777216
%465 = lshr i32 %464, 8
%466 = or i32 %462, %465
%467 = load i8*, i8** %9
%468 = getelementptr inbounds i8, i8* %467, i64 12
%469 = bitcast i8* %468 to i32*
store i32 %466, i32* %469
br label %551
470: ; preds = %306
%471 = load i8*, i8** %11
%472 = bitcast i8* %471 to i32*
%473 = load i32, i32* %472
store i32 %473, i32* %15
%474 = load i32, i32* %15
store i32 %474, i32* %16
%475 = load i32, i32* %15
store i32 %475, i32* %21
%476 = load i32, i32* %15
%477 = load i32, i32* %16
%478 = add i32 %476, %477
%479 = add i32 %478, 4196353
store i32 %479, i32* %22
%480 = load i32, i32* %21
%481 = and i32 %480, 255
%482 = lshr i32 %481, 0
%483 = load i32, i32* %21
%484 = and i32 %483, 522240
%485 = lshr i32 %484, 3
%486 = or i32 %482, %485
%487 = load i32, i32* %21
%488 = and i32 %487, 1069547520
%489 = lshr i32 %488, 6
%490 = or i32 %486, %489
%491 = load i8*, i8** %8
%492 = getelementptr inbounds i8, i8* %491, i64 0
%493 = bitcast i8* %492 to i32*
store i32 %490, i32* %493
%494 = load i32, i32* %22
%495 = and i32 %494, 510
%496 = lshr i32 %495, 1
%497 = load i32, i32* %22
%498 = and i32 %497, 1044480
%499 = lshr i32 %498, 4
%500 = or i32 %496, %499
%501 = load i32, i32* %22
%502 = and i32 %501, 2139095040
%503 = lshr i32 %502, 7
%504 = or i32 %500, %503
%505 = load i8*, i8** %8
%506 = getelementptr inbounds i8, i8* %505, i64 4
%507 = bitcast i8* %506 to i32*
store i32 %504, i32* %507
%508 = load i8*, i8** %12
%509 = bitcast i8* %508 to i32*
%510 = load i32, i32* %509
store i32 %510, i32* %17
%511 = load i32, i32* %17
store i32 %511, i32* %18
%512 = load i32, i32* %15
%513 = load i32, i32* %17
%514 = add i32 %512, %513
%515 = add i32 %514, 4196353
store i32 %515, i32* %21
%516 = load i32, i32* %15
%517 = load i32, i32* %16
%518 = add i32 %516, %517
%519 = load i32, i32* %17
%520 = add i32 %518, %519
%521 = load i32, i32* %18
%522 = add i32 %520, %521
%523 = add i32 %522, 8392706
store i32 %523, i32* %22
%524 = load i32, i32* %21
%525 = and i32 %524, 510
%526 = lshr i32 %525, 1
%527 = load i32, i32* %21
%528 = and i32 %527, 1044480
%529 = lshr i32 %528, 4
%530 = or i32 %526, %529
%531 = load i32, i32* %21
%532 = and i32 %531, 2139095040
%533 = lshr i32 %532, 7
%534 = or i32 %530, %533
%535 = load i8*, i8** %9
%536 = bitcast i8* %535 to i32*
store i32 %534, i32* %536
%537 = load i32, i32* %22
%538 = and i32 %537, 1020
%539 = lshr i32 %538, 2
%540 = load i32, i32* %22
%541 = and i32 %540, 2088960
%542 = lshr i32 %541, 5
%543 = or i32 %539, %542
%544 = load i32, i32* %22
%545 = and i32 %544, -16777216
%546 = lshr i32 %545, 8
%547 = or i32 %543, %546
%548 = load i8*, i8** %9
%549 = getelementptr inbounds i8, i8* %548, i64 4
%550 = bitcast i8* %549 to i32*
store i32 %547, i32* %550
br label %551
551: ; preds = %470, %309
ret void
}

LLVM IR (-O2):
define void @dblineXRGBtoRGB32x2(i8* nocapture writeonly %0, i8* nocapture writeonly %1, i32 %2, i8* nocapture %3, i8* nocapture %4, i32 %5, i32 %6) {
%8 = and i32 %2, 1
%9 = icmp eq i32 %8, 0
br i1 %9, label %68, label %10
10: ; preds = %7
%11 = bitcast i8* %3 to i32*
%12 = load i32, i32* %11
%13 = getelementptr inbounds i8, i8* %3, i64 4
%14 = bitcast i8* %13 to i32*
%15 = load i32, i32* %14
%16 = add i32 %15, %12
%17 = add i32 %16, 4196353
%18 = and i32 %12, 255
%19 = lshr i32 %12, 3
%20 = and i32 %19, 65280
%21 = or i32 %20, %18
%22 = lshr i32 %12, 6
%23 = and i32 %22, 16711680
%24 = or i32 %21, %23
%25 = bitcast i8* %0 to i32*
store i32 %24, i32* %25
%26 = lshr i32 %17, 1
%27 = and i32 %26, 255
%28 = lshr i32 %17, 4
%29 = and i32 %28, 65280
%30 = or i32 %27, %29
%31 = lshr i32 %17, 7
%32 = and i32 %31, 16711680
%33 = or i32 %30, %32
%34 = getelementptr inbounds i8, i8* %0, i64 4
%35 = bitcast i8* %34 to i32*
store i32 %33, i32* %35
%36 = bitcast i8* %4 to i32*
%37 = load i32, i32* %36
%38 = getelementptr inbounds i8, i8* %4, i64 4
%39 = bitcast i8* %38 to i32*
%40 = load i32, i32* %39
%41 = add i32 %12, 4196353
%42 = add i32 %41, %37
%43 = add i32 %16, 8392706
%44 = add i32 %43, %37
%45 = add i32 %44, %40
%46 = lshr i32 %42, 1
%47 = and i32 %46, 255
%48 = lshr i32 %42, 4
%49 = and i32 %48, 65280
%50 = or i32 %47, %49
%51 = lshr i32 %42, 7
%52 = and i32 %51, 16711680
%53 = or i32 %50, %52
%54 = bitcast i8* %1 to i32*
store i32 %53, i32* %54
%55 = lshr i32 %45, 2
%56 = and i32 %55, 255
%57 = lshr i32 %45, 5
%58 = and i32 %57, 65280
%59 = or i32 %56, %58
%60 = lshr i32 %45, 8
%61 = and i32 %60, 16711680
%62 = or i32 %59, %61
%63 = getelementptr inbounds i8, i8* %1, i64 4
%64 = bitcast i8* %63 to i32*
store i32 %62, i32* %64
%65 = getelementptr inbounds i8, i8* %0, i64 8
%66 = getelementptr inbounds i8, i8* %1, i64 8
%67 = add nsw i32 %6, -1
br label %68
68: ; preds = %10, %7
%69 = phi i8* [ %66, %10 ], [ %1, %7 ]
%70 = phi i8* [ %13, %10 ], [ %3, %7 ]
%71 = phi i8* [ %38, %10 ], [ %4, %7 ]
%72 = phi i8* [ %65, %10 ], [ %0, %7 ]
%73 = phi i32 [ %67, %10 ], [ %6, %7 ]
%74 = icmp sgt i32 %73, 2
br i1 %74, label %75, label %364
75: ; preds = %68
%76 = add i32 %73, 1
%77 = call i32 @llvm.umin.i32(i32 %73, i32 4)
%78 = sub i32 %76, %77
%79 = lshr i32 %78, 1
%80 = add nuw i32 %79, 1
%81 = zext i32 %80 to i64
%82 = icmp ult i32 %78, 8
br i1 %82, label %243, label %83
83: ; preds = %75
%84 = add i32 %73, 1
%85 = call i32 @llvm.umin.i32(i32 %73, i32 4)
%86 = sub i32 %84, %85
%87 = lshr i32 %86, 1
%88 = zext i32 %87 to i64
%89 = shl nuw nsw i64 %88, 4
%90 = add nuw nsw i64 %89, 16
%91 = getelementptr i8, i8* %72, i64 %90
%92 = getelementptr i8, i8* %69, i64 %90
%93 = shl nuw nsw i64 %88, 3
%94 = add nuw nsw i64 %93, 12
%95 = getelementptr i8, i8* %70, i64 %94
%96 = getelementptr i8, i8* %71, i64 %94
%97 = icmp ult i8* %72, %92
%98 = icmp ult i8* %69, %91
%99 = and i1 %97, %98
%100 = icmp ult i8* %72, %95
%101 = icmp ult i8* %70, %91
%102 = and i1 %100, %101
%103 = or i1 %99, %102
%104 = icmp ult i8* %72, %96
%105 = icmp ult i8* %71, %91
%106 = and i1 %104, %105
%107 = or i1 %103, %106
%108 = icmp ult i8* %69, %95
%109 = icmp ult i8* %70, %92
%110 = and i1 %108, %109
%111 = or i1 %107, %110
%112 = icmp ult i8* %69, %96
%113 = icmp ult i8* %71, %92
%114 = and i1 %112, %113
%115 = or i1 %111, %114
br i1 %115, label %243, label %116
116: ; preds = %83
%117 = and i64 %81, 3
%118 = icmp eq i64 %117, 0
%119 = select i1 %118, i64 4, i64 %117
%120 = sub nsw i64 %81, %119
%121 = trunc i64 %120 to i32
%122 = mul i32 %121, -2
%123 = add i32 %73, %122
%124 = shl nsw i64 %120, 4
%125 = getelementptr i8, i8* %72, i64 %124
%126 = shl nsw i64 %120, 3
%127 = getelementptr i8, i8* %71, i64 %126
%128 = shl nsw i64 %120, 3
%129 = getelementptr i8, i8* %70, i64 %128
%130 = shl nsw i64 %120, 4
%131 = getelementptr i8, i8* %69, i64 %130
br label %132
132: ; preds = %132, %116
%133 = phi i64 [ 0, %116 ], [ %241, %132 ]
%134 = shl i64 %133, 4
%135 = shl i64 %133, 3
%136 = getelementptr i8, i8* %71, i64 %135
%137 = shl i64 %133, 3
%138 = getelementptr i8, i8* %70, i64 %137
%139 = shl i64 %133, 4
%140 = bitcast i8* %138 to <8 x i32>*
%141 = load <8 x i32>, <8 x i32>* %140
%142 = shufflevector <8 x i32> %141, <8 x i32> poison, <4 x i32> <i32 0, i32 2, i32 4, i32 6>
%143 = getelementptr inbounds i8, i8* %138, i64 4
%144 = bitcast i8* %143 to <8 x i32>*
%145 = load <8 x i32>, <8 x i32>* %144
%146 = shufflevector <8 x i32> %145, <8 x i32> poison, <4 x i32> <i32 0, i32 2, i32 4, i32 6>
%147 = shufflevector <8 x i32> %145, <8 x i32> poison, <4 x i32> <i32 1, i32 3, i32 5, i32 7>
%148 = add <4 x i32> %146, %142
%149 = add <4 x i32> %148, <i32 4196353, i32 4196353, i32 4196353, i32 4196353>
%150 = add <4 x i32> %147, %146
%151 = add <4 x i32> %150, <i32 4196353, i32 4196353, i32 4196353, i32 4196353>
%152 = and <4 x i32> %142, <i32 255, i32 255, i32 255, i32 255>
%153 = lshr <4 x i32> %142, <i32 3, i32 3, i32 3, i32 3>
%154 = and <4 x i32> %153, <i32 65280, i32 65280, i32 65280, i32 65280>
%155 = or <4 x i32> %154, %152
%156 = lshr <4 x i32> %142, <i32 6, i32 6, i32 6, i32 6>
%157 = and <4 x i32> %156, <i32 16711680, i32 16711680, i32 16711680, i32 16711680>
%158 = or <4 x i32> %155, %157
%159 = lshr <4 x i32> %149, <i32 1, i32 1, i32 1, i32 1>
%160 = and <4 x i32> %159, <i32 255, i32 255, i32 255, i32 255>
%161 = lshr <4 x i32> %149, <i32 4, i32 4, i32 4, i32 4>
%162 = and <4 x i32> %161, <i32 65280, i32 65280, i32 65280, i32 65280>
%163 = or <4 x i32> %160, %162
%164 = lshr <4 x i32> %149, <i32 7, i32 7, i32 7, i32 7>
%165 = and <4 x i32> %164, <i32 16711680, i32 16711680, i32 16711680, i32 16711680>
%166 = or <4 x i32> %163, %165
%167 = and <4 x i32> %146, <i32 255, i32 255, i32 255, i32 255>
%168 = lshr <4 x i32> %146, <i32 3, i32 3, i32 3, i32 3>
%169 = and <4 x i32> %168, <i32 65280, i32 65280, i32 65280, i32 65280>
%170 = or <4 x i32> %169, %167
%171 = lshr <4 x i32> %146, <i32 6, i32 6, i32 6, i32 6>
%172 = and <4 x i32> %171, <i32 16711680, i32 16711680, i32 16711680, i32 16711680>
%173 = or <4 x i32> %170, %172
%174 = lshr <4 x i32> %151, <i32 1, i32 1, i32 1, i32 1>
%175 = and <4 x i32> %174, <i32 255, i32 255, i32 255, i32 255>
%176 = lshr <4 x i32> %151, <i32 4, i32 4, i32 4, i32 4>
%177 = and <4 x i32> %176, <i32 65280, i32 65280, i32 65280, i32 65280>
%178 = or <4 x i32> %175, %177
%179 = lshr <4 x i32> %151, <i32 7, i32 7, i32 7, i32 7>
%180 = and <4 x i32> %179, <i32 16711680, i32 16711680, i32 16711680, i32 16711680>
%181 = or <4 x i32> %178, %180
%182 = getelementptr inbounds i8, i8* %72, i64 %134
%183 = bitcast i8* %182 to <16 x i32>*
%184 = shufflevector <4 x i32> %158, <4 x i32> %166, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>
%185 = shufflevector <4 x i32> %173, <4 x i32> %181, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>
%186 = shufflevector <8 x i32> %184, <8 x i32> %185, <16 x i32> <i32 0, i32 4, i32 8, i32 12, i32 1, i32 5, i32 9, i32 13, i32 2, i32 6, i32 10, i32 14, i32 3, i32 7, i32 11, i32 15>
store <16 x i32> %186, <16 x i32>* %183
%187 = bitcast i8* %136 to <8 x i32>*
%188 = load <8 x i32>, <8 x i32>* %187
%189 = shufflevector <8 x i32> %188, <8 x i32> poison, <4 x i32> <i32 0, i32 2, i32 4, i32 6>
%190 = getelementptr inbounds i8, i8* %136, i64 4
%191 = bitcast i8* %190 to <8 x i32>*
%192 = load <8 x i32>, <8 x i32>* %191
%193 = shufflevector <8 x i32> %192, <8 x i32> poison, <4 x i32> <i32 0, i32 2, i32 4, i32 6>
%194 = shufflevector <8 x i32> %192, <8 x i32> poison, <4 x i32> <i32 1, i32 3, i32 5, i32 7>
%195 = add <4 x i32> %142, <i32 4196353, i32 4196353, i32 4196353, i32 4196353>
%196 = add <4 x i32> %195, %189
%197 = add <4 x i32> %193, <i32 8392706, i32 8392706, i32 8392706, i32 8392706>
%198 = add <4 x i32> %197, %148
%199 = add <4 x i32> %198, %189
%200 = add <4 x i32> %146, <i32 4196353, i32 4196353, i32 4196353, i32 4196353>
%201 = add <4 x i32> %200, %193
%202 = add <4 x i32> %197, %150
%203 = add <4 x i32> %202, %194
%204 = lshr <4 x i32> %196, <i32 1, i32 1, i32 1, i32 1>
%205 = and <4 x i32> %204, <i32 255, i32 255, i32 255, i32 255>
%206 = lshr <4 x i32> %196, <i32 4, i32 4, i32 4, i32 4>
%207 = and <4 x i32> %206, <i32 65280, i32 65280, i32 65280, i32 65280>
%208 = or <4 x i32> %205, %207
%209 = lshr <4 x i32> %196, <i32 7, i32 7, i32 7, i32 7>
%210 = and <4 x i32> %209, <i32 16711680, i32 16711680, i32 16711680, i32 16711680>
%211 = or <4 x i32> %208, %210
%212 = lshr <4 x i32> %199, <i32 2, i32 2, i32 2, i32 2>
%213 = and <4 x i32> %212, <i32 255, i32 255, i32 255, i32 255>
%214 = lshr <4 x i32> %199, <i32 5, i32 5, i32 5, i32 5>
%215 = and <4 x i32> %214, <i32 65280, i32 65280, i32 65280, i32 65280>
%216 = or <4 x i32> %213, %215
%217 = lshr <4 x i32> %199, <i32 8, i32 8, i32 8, i32 8>
%218 = and <4 x i32> %217, <i32 16711680, i32 16711680, i32 16711680, i32 16711680>
%219 = or <4 x i32> %216, %218
%220 = lshr <4 x i32> %201, <i32 1, i32 1, i32 1, i32 1>
%221 = and <4 x i32> %220, <i32 255, i32 255, i32 255, i32 255>
%222 = lshr <4 x i32> %201, <i32 4, i32 4, i32 4, i32 4>
%223 = and <4 x i32> %222, <i32 65280, i32 65280, i32 65280, i32 65280>
%224 = or <4 x i32> %221, %223
%225 = lshr <4 x i32> %201, <i32 7, i32 7, i32 7, i32 7>
%226 = and <4 x i32> %225, <i32 16711680, i32 16711680, i32 16711680, i32 16711680>
%227 = or <4 x i32> %224, %226
%228 = lshr <4 x i32> %203, <i32 2, i32 2, i32 2, i32 2>
%229 = and <4 x i32> %228, <i32 255, i32 255, i32 255, i32 255>
%230 = lshr <4 x i32> %203, <i32 5, i32 5, i32 5, i32 5>
%231 = and <4 x i32> %230, <i32 65280, i32 65280, i32 65280, i32 65280>
%232 = or <4 x i32> %229, %231
%233 = lshr <4 x i32> %203, <i32 8, i32 8, i32 8, i32 8>
%234 = and <4 x i32> %233, <i32 16711680, i32 16711680, i32 16711680, i32 16711680>
%235 = or <4 x i32> %232, %234
%236 = getelementptr inbounds i8, i8* %69, i64 %139
%237 = bitcast i8* %236 to <16 x i32>*
%238 = shufflevector <4 x i32> %211, <4 x i32> %219, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>
%239 = shufflevector <4 x i32> %227, <4 x i32> %235, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>
%240 = shufflevector <8 x i32> %238, <8 x i32> %239, <16 x i32> <i32 0, i32 4, i32 8, i32 12, i32 1, i32 5, i32 9, i32 13, i32 2, i32 6, i32 10, i32 14, i32 3, i32 7, i32 11, i32 15>
store <16 x i32> %240, <16 x i32>* %237
%241 = add nuw i64 %133, 4
%242 = icmp eq i64 %241, %120
br i1 %242, label %243, label %132
243: ; preds = %132, %83, %75
%244 = phi i32 [ %73, %83 ], [ %73, %75 ], [ %123, %132 ]
%245 = phi i8* [ %72, %83 ], [ %72, %75 ], [ %125, %132 ]
%246 = phi i8* [ %71, %83 ], [ %71, %75 ], [ %127, %132 ]
%247 = phi i8* [ %70, %83 ], [ %70, %75 ], [ %129, %132 ]
%248 = phi i8* [ %69, %83 ], [ %69, %75 ], [ %131, %132 ]
br label %249
249: ; preds = %243, %249
%250 = phi i32 [ %362, %249 ], [ %244, %243 ]
%251 = phi i8* [ %360, %249 ], [ %245, %243 ]
%252 = phi i8* [ %309, %249 ], [ %246, %243 ]
%253 = phi i8* [ %260, %249 ], [ %247, %243 ]
%254 = phi i8* [ %361, %249 ], [ %248, %243 ]
%255 = bitcast i8* %253 to i32*
%256 = load i32, i32* %255
%257 = getelementptr inbounds i8, i8* %253, i64 4
%258 = bitcast i8* %257 to i32*
%259 = load i32, i32* %258
%260 = getelementptr inbounds i8, i8* %253, i64 8
%261 = bitcast i8* %260 to i32*
%262 = load i32, i32* %261
%263 = add i32 %259, %256
%264 = add i32 %263, 4196353
%265 = add i32 %262, %259
%266 = add i32 %265, 4196353
%267 = and i32 %256, 255
%268 = lshr i32 %256, 3
%269 = and i32 %268, 65280
%270 = or i32 %269, %267
%271 = lshr i32 %256, 6
%272 = and i32 %271, 16711680
%273 = or i32 %270, %272
%274 = bitcast i8* %251 to i32*
store i32 %273, i32* %274
%275 = lshr i32 %264, 1
%276 = and i32 %275, 255
%277 = lshr i32 %264, 4
%278 = and i32 %277, 65280
%279 = or i32 %276, %278
%280 = lshr i32 %264, 7
%281 = and i32 %280, 16711680
%282 = or i32 %279, %281
%283 = getelementptr inbounds i8, i8* %251, i64 4
%284 = bitcast i8* %283 to i32*
store i32 %282, i32* %284
%285 = and i32 %259, 255
%286 = lshr i32 %259, 3
%287 = and i32 %286, 65280
%288 = or i32 %287, %285
%289 = lshr i32 %259, 6
%290 = and i32 %289, 16711680
%291 = or i32 %288, %290
%292 = getelementptr inbounds i8, i8* %251, i64 8
%293 = bitcast i8* %292 to i32*
store i32 %291, i32* %293
%294 = lshr i32 %266, 1
%295 = and i32 %294, 255
%296 = lshr i32 %266, 4
%297 = and i32 %296, 65280
%298 = or i32 %295, %297
%299 = lshr i32 %266, 7
%300 = and i32 %299, 16711680
%301 = or i32 %298, %300
%302 = getelementptr inbounds i8, i8* %251, i64 12
%303 = bitcast i8* %302 to i32*
store i32 %301, i32* %303
%304 = bitcast i8* %252 to i32*
%305 = load i32, i32* %304
%306 = getelementptr inbounds i8, i8* %252, i64 4
%307 = bitcast i8* %306 to i32*
%308 = load i32, i32* %307
%309 = getelementptr inbounds i8, i8* %252, i64 8
%310 = bitcast i8* %309 to i32*
%311 = load i32, i32* %310
%312 = add i32 %256, 4196353
%313 = add i32 %312, %305
%314 = add i32 %308, 8392706
%315 = add i32 %314, %263
%316 = add i32 %315, %305
%317 = add i32 %259, 4196353
%318 = add i32 %317, %308
%319 = add i32 %314, %265
%320 = add i32 %319, %311
%321 = lshr i32 %313, 1
%322 = and i32 %321, 255
%323 = lshr i32 %313, 4
%324 = and i32 %323, 65280
%325 = or i32 %322, %324
%326 = lshr i32 %313, 7
%327 = and i32 %326, 16711680
%328 = or i32 %325, %327
%329 = bitcast i8* %254 to i32*
store i32 %328, i32* %329
%330 = lshr i32 %316, 2
%331 = and i32 %330, 255
%332 = lshr i32 %316, 5
%333 = and i32 %332, 65280
%334 = or i32 %331, %333
%335 = lshr i32 %316, 8
%336 = and i32 %335, 16711680
%337 = or i32 %334, %336
%338 = getelementptr inbounds i8, i8* %254, i64 4
%339 = bitcast i8* %338 to i32*
store i32 %337, i32* %339
%340 = lshr i32 %318, 1
%341 = and i32 %340, 255
%342 = lshr i32 %318, 4
%343 = and i32 %342, 65280
%344 = or i32 %341, %343
%345 = lshr i32 %318, 7
%346 = and i32 %345, 16711680
%347 = or i32 %344, %346
%348 = getelementptr inbounds i8, i8* %254, i64 8
%349 = bitcast i8* %348 to i32*
store i32 %347, i32* %349
%350 = lshr i32 %320, 2
%351 = and i32 %350, 255
%352 = lshr i32 %320, 5
%353 = and i32 %352, 65280
%354 = or i32 %351, %353
%355 = lshr i32 %320, 8
%356 = and i32 %355, 16711680
%357 = or i32 %354, %356
%358 = getelementptr inbounds i8, i8* %254, i64 12
%359 = bitcast i8* %358 to i32*
store i32 %357, i32* %359
%360 = getelementptr inbounds i8, i8* %251, i64 16
%361 = getelementptr inbounds i8, i8* %254, i64 16
%362 = add nsw i32 %250, -2
%363 = icmp ugt i32 %250, 4
br i1 %363, label %249, label %364
364: ; preds = %249, %68
%365 = phi i8* [ %69, %68 ], [ %361, %249 ]
%366 = phi i8* [ %70, %68 ], [ %260, %249 ]
%367 = phi i8* [ %71, %68 ], [ %309, %249 ]
%368 = phi i8* [ %72, %68 ], [ %360, %249 ]
%369 = phi i32 [ %73, %68 ], [ %362, %249 ]
%370 = icmp eq i32 %369, 2
%371 = bitcast i8* %366 to i32*
%372 = load i32, i32* %371
br i1 %370, label %373, label %458
373: ; preds = %364
%374 = getelementptr inbounds i8, i8* %366, i64 4
%375 = bitcast i8* %374 to i32*
%376 = load i32, i32* %375
%377 = add i32 %376, %372
%378 = add i32 %377, 4196353
%379 = shl i32 %376, 1
%380 = add i32 %379, 4196353
%381 = and i32 %372, 255
%382 = lshr i32 %372, 3
%383 = and i32 %382, 65280
%384 = or i32 %383, %381
%385 = lshr i32 %372, 6
%386 = and i32 %385, 16711680
%387 = or i32 %384, %386
%388 = bitcast i8* %368 to i32*
store i32 %387, i32* %388
%389 = lshr i32 %378, 1
%390 = and i32 %389, 255
%391 = lshr i32 %378, 4
%392 = and i32 %391, 65280
%393 = or i32 %390, %392
%394 = lshr i32 %378, 7
%395 = and i32 %394, 16711680
%396 = or i32 %393, %395
%397 = getelementptr inbounds i8, i8* %368, i64 4
%398 = bitcast i8* %397 to i32*
store i32 %396, i32* %398
%399 = and i32 %376, 255
%400 = lshr i32 %376, 3
%401 = and i32 %400, 65280
%402 = or i32 %401, %399
%403 = lshr i32 %376, 6
%404 = and i32 %403, 16711680
%405 = or i32 %402, %404
%406 = getelementptr inbounds i8, i8* %368, i64 8
%407 = bitcast i8* %406 to i32*
store i32 %405, i32* %407
%408 = lshr i32 %380, 1
%409 = and i32 %408, 255
%410 = lshr i32 %380, 4
%411 = and i32 %410, 65280
%412 = or i32 %409, %411
%413 = lshr i32 %380, 7
%414 = and i32 %413, 16711680
%415 = or i32 %412, %414
%416 = getelementptr inbounds i8, i8* %368, i64 12
%417 = bitcast i8* %416 to i32*
store i32 %415, i32* %417
%418 = bitcast i8* %367 to i32*
%419 = load i32, i32* %418
%420 = getelementptr inbounds i8, i8* %367, i64 4
%421 = bitcast i8* %420 to i32*
%422 = load i32, i32* %421
%423 = add i32 %372, 4196353
%424 = add i32 %423, %419
%425 = add i32 %377, 8392706
%426 = add i32 %425, %419
%427 = add i32 %426, %422
%428 = add i32 %422, %376
%429 = add i32 %428, 4196353
%430 = lshr i32 %424, 1
%431 = and i32 %430, 255
%432 = lshr i32 %424, 4
%433 = and i32 %432, 65280
%434 = or i32 %431, %433
%435 = lshr i32 %424, 7
%436 = and i32 %435, 16711680
%437 = or i32 %434, %436
%438 = bitcast i8* %365 to i32*
store i32 %437, i32* %438
%439 = lshr i32 %427, 2
%440 = and i32 %439, 255
%441 = lshr i32 %427, 5
%442 = and i32 %441, 65280
%443 = or i32 %440, %442
%444 = lshr i32 %427, 8
%445 = and i32 %444, 16711680
%446 = or i32 %443, %445
%447 = getelementptr inbounds i8, i8* %365, i64 4
%448 = bitcast i8* %447 to i32*
store i32 %446, i32* %448
%449 = lshr i32 %429, 1
%450 = and i32 %449, 255
%451 = lshr i32 %429, 4
%452 = and i32 %451, 65280
%453 = or i32 %450, %452
%454 = lshr i32 %429, 7
%455 = and i32 %454, 16711680
%456 = or i32 %453, %455
%457 = getelementptr inbounds i8, i8* %365, i64 8
br label %491
458: ; preds = %364
%459 = shl i32 %372, 1
%460 = add i32 %459, 4196353
%461 = and i32 %372, 255
%462 = lshr i32 %372, 3
%463 = and i32 %462, 65280
%464 = or i32 %463, %461
%465 = lshr i32 %372, 6
%466 = and i32 %465, 16711680
%467 = or i32 %464, %466
%468 = bitcast i8* %368 to i32*
store i32 %467, i32* %468
%469 = lshr i32 %460, 1
%470 = and i32 %469, 255
%471 = lshr i32 %460, 4
%472 = and i32 %471, 65280
%473 = or i32 %470, %472
%474 = lshr i32 %460, 7
%475 = and i32 %474, 16711680
%476 = or i32 %473, %475
%477 = getelementptr inbounds i8, i8* %368, i64 4
%478 = bitcast i8* %477 to i32*
store i32 %476, i32* %478
%479 = bitcast i8* %367 to i32*
%480 = load i32, i32* %479
%481 = add i32 %480, %372
%482 = add i32 %481, 4196353
%483 = lshr i32 %482, 1
%484 = and i32 %483, 255
%485 = lshr i32 %482, 4
%486 = and i32 %485, 65280
%487 = or i32 %484, %486
%488 = lshr i32 %482, 7
%489 = and i32 %488, 16711680
%490 = or i32 %487, %489
br label %491
491: ; preds = %458, %373
%492 = phi i8* [ %365, %458 ], [ %457, %373 ]
%493 = phi i32 [ %490, %458 ], [ %456, %373 ]
%494 = phi i32 [ %481, %458 ], [ %428, %373 ]
%495 = phi i64 [ 4, %458 ], [ 12, %373 ]
%496 = shl i32 %494, 1
%497 = add i32 %496, 8392706
%498 = bitcast i8* %492 to i32*
store i32 %493, i32* %498
%499 = lshr i32 %497, 2
%500 = and i32 %499, 255
%501 = lshr i32 %497, 5
%502 = and i32 %501, 65280
%503 = or i32 %500, %502
%504 = lshr i32 %497, 8
%505 = and i32 %504, 16711680
%506 = or i32 %503, %505
%507 = getelementptr inbounds i8, i8* %365, i64 %495
%508 = bitcast i8* %507 to i32*
store i32 %506, i32* %508
ret void
}