void dblineXRGBtoBGR32x2(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) << 16) |
                                ((w & 0x0007f800) >> 3) |
                                ((w & 0x3fc00000) >> 22);
    *(unsigned int *)(d1 + 4) = ((x & 0x000001fe) << 15) |
                                ((x & 0x000ff000) >> 4) |
                                ((x & 0x7f800000) >> 23);
    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) << 15) | ((w & 0x000ff000) >> 4) |
                          ((w & 0x7f800000) >> 23);
    *(unsigned int *)(d2 + 4) = ((x & 0x000003fc) << 14) |
                                ((x & 0x001fe000) >> 5) |
                                ((x & 0xff000000) >> 24);
    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) << 16) | ((w & 0x0007f800) >> 3) |
                          ((w & 0x3fc00000) >> 22);
    *(unsigned int *)(d1 + 4) = ((x & 0x000001fe) << 15) |
                                ((x & 0x000ff000) >> 4) |
                                ((x & 0x7f800000) >> 23);
    *(unsigned int *)(d1 + 2 * 4) = ((y & 0x000000ff) << 16) |
                                    ((y & 0x0007f800) >> 3) |
                                    ((y & 0x3fc00000) >> 22);
    *(unsigned int *)(d1 + 3 * 4) = ((z & 0x000001fe) << 15) |
                                    ((z & 0x000ff000) >> 4) |
                                    ((z & 0x7f800000) >> 23);
    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) << 15) | ((w & 0x000ff000) >> 4) |
                          ((w & 0x7f800000) >> 23);
    *(unsigned int *)(d2 + 4) = ((x & 0x000003fc) << 14) |
                                ((x & 0x001fe000) >> 5) |
                                ((x & 0xff000000) >> 24);
    *(unsigned int *)(d2 + 2 * 4) = ((y & 0x000001fe) << 15) |
                                    ((y & 0x000ff000) >> 4) |
                                    ((y & 0x7f800000) >> 23);
    *(unsigned int *)(d2 + 3 * 4) = ((z & 0x000003fc) << 14) |
                                    ((z & 0x001fe000) >> 5) |
                                    ((z & 0xff000000) >> 24);
    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) << 16) | ((w & 0x0007f800) >> 3) |
                          ((w & 0x3fc00000) >> 22);
    *(unsigned int *)(d1 + 4) = ((x & 0x000001fe) << 15) |
                                ((x & 0x000ff000) >> 4) |
                                ((x & 0x7f800000) >> 23);
    *(unsigned int *)(d1 + 2 * 4) = ((y & 0x000000ff) << 16) |
                                    ((y & 0x0007f800) >> 3) |
                                    ((y & 0x3fc00000) >> 22);
    *(unsigned int *)(d1 + 3 * 4) = ((z & 0x000001fe) << 15) |
                                    ((z & 0x000ff000) >> 4) |
                                    ((z & 0x7f800000) >> 23);
    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) << 15) | ((w & 0x000ff000) >> 4) |
                          ((w & 0x7f800000) >> 23);
    *(unsigned int *)(d2 + 4) = ((x & 0x000003fc) << 14) |
                                ((x & 0x001fe000) >> 5) |
                                ((x & 0xff000000) >> 24);
    *(unsigned int *)(d2 + 2 * 4) = ((y & 0x000001fe) << 15) |
                                    ((y & 0x000ff000) >> 4) |
                                    ((y & 0x7f800000) >> 23);
    *(unsigned int *)(d2 + 3 * 4) = ((z & 0x000003fc) << 14) |
                                    ((z & 0x001fe000) >> 5) |
                                    ((z & 0xff000000) >> 24);
  } else {
    a = *(unsigned int *)s1;
    b = a;
    w = a;
    x = a + b + 0x00400801;
    *(unsigned int *)(d1 + 0) = ((w & 0x000000ff) << 16) |
                                ((w & 0x0007f800) >> 3) |
                                ((w & 0x3fc00000) >> 22);
    *(unsigned int *)(d1 + 4) = ((x & 0x000001fe) << 15) |
                                ((x & 0x000ff000) >> 4) |
                                ((x & 0x7f800000) >> 23);
    c = *(unsigned int *)s2;
    d = c;
    w = a + c + 0x00400801;
    x = a + b + c + d + (0x00400801 << 1);
    *(unsigned int *)d2 = ((w & 0x000001fe) << 15) | ((w & 0x000ff000) >> 4) |
                          ((w & 0x7f800000) >> 23);
    *(unsigned int *)(d2 + 4) = ((x & 0x000003fc) << 14) |
                                ((x & 0x001fe000) >> 5) |
                                ((x & 0xff000000) >> 24);
  }
}


x86 assembly (clang, -O0):
<dblineXRGBtoBGR32x2>:
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 <dblineXRGBtoBGR32x2+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
shl    $0x10,%ecx
mov    -0x48(%rbp),%eax
and    $0x7f800,%eax
shr    $0x3,%eax
or     %eax,%ecx
mov    -0x48(%rbp),%eax
and    $0x3fc00000,%eax
shr    $0x16,%eax
or     %eax,%ecx
mov    -0x8(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x4c(%rbp),%ecx
and    $0x1fe,%ecx
shl    $0xf,%ecx
mov    -0x4c(%rbp),%eax
and    $0xff000,%eax
shr    $0x4,%eax
or     %eax,%ecx
mov    -0x4c(%rbp),%eax
and    $0x7f800000,%eax
shr    $0x17,%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
shl    $0xf,%ecx
mov    -0x48(%rbp),%eax
and    $0xff000,%eax
shr    $0x4,%eax
or     %eax,%ecx
mov    -0x48(%rbp),%eax
and    $0x7f800000,%eax
shr    $0x17,%eax
or     %eax,%ecx
mov    -0x10(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x4c(%rbp),%ecx
and    $0x3fc,%ecx
shl    $0xe,%ecx
mov    -0x4c(%rbp),%eax
and    $0x1fe000,%eax
shr    $0x5,%eax
or     %eax,%ecx
mov    -0x4c(%rbp),%eax
and    $0xff000000,%eax
shr    $0x18,%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 <dblineXRGBtoBGR32x2+0x179>
cmpl   $0x2,0x10(%rbp)
jle    14cd <dblineXRGBtoBGR32x2+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
shl    $0x10,%ecx
mov    -0x48(%rbp),%eax
and    $0x7f800,%eax
shr    $0x3,%eax
or     %eax,%ecx
mov    -0x48(%rbp),%eax
and    $0x3fc00000,%eax
shr    $0x16,%eax
or     %eax,%ecx
mov    -0x8(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x4c(%rbp),%ecx
and    $0x1fe,%ecx
shl    $0xf,%ecx
mov    -0x4c(%rbp),%eax
and    $0xff000,%eax
shr    $0x4,%eax
or     %eax,%ecx
mov    -0x4c(%rbp),%eax
and    $0x7f800000,%eax
shr    $0x17,%eax
or     %eax,%ecx
mov    -0x8(%rbp),%rax
mov    %ecx,0x4(%rax)
mov    -0x50(%rbp),%ecx
and    $0xff,%ecx
shl    $0x10,%ecx
mov    -0x50(%rbp),%eax
and    $0x7f800,%eax
shr    $0x3,%eax
or     %eax,%ecx
mov    -0x50(%rbp),%eax
and    $0x3fc00000,%eax
shr    $0x16,%eax
or     %eax,%ecx
mov    -0x8(%rbp),%rax
mov    %ecx,0x8(%rax)
mov    -0x54(%rbp),%ecx
and    $0x1fe,%ecx
shl    $0xf,%ecx
mov    -0x54(%rbp),%eax
and    $0xff000,%eax
shr    $0x4,%eax
or     %eax,%ecx
mov    -0x54(%rbp),%eax
and    $0x7f800000,%eax
shr    $0x17,%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
shl    $0xf,%ecx
mov    -0x48(%rbp),%eax
and    $0xff000,%eax
shr    $0x4,%eax
or     %eax,%ecx
mov    -0x48(%rbp),%eax
and    $0x7f800000,%eax
shr    $0x17,%eax
or     %eax,%ecx
mov    -0x10(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x4c(%rbp),%ecx
and    $0x3fc,%ecx
shl    $0xe,%ecx
mov    -0x4c(%rbp),%eax
and    $0x1fe000,%eax
shr    $0x5,%eax
or     %eax,%ecx
mov    -0x4c(%rbp),%eax
and    $0xff000000,%eax
shr    $0x18,%eax
or     %eax,%ecx
mov    -0x10(%rbp),%rax
mov    %ecx,0x4(%rax)
mov    -0x50(%rbp),%ecx
and    $0x1fe,%ecx
shl    $0xf,%ecx
mov    -0x50(%rbp),%eax
and    $0xff000,%eax
shr    $0x4,%eax
or     %eax,%ecx
mov    -0x50(%rbp),%eax
and    $0x7f800000,%eax
shr    $0x17,%eax
or     %eax,%ecx
mov    -0x10(%rbp),%rax
mov    %ecx,0x8(%rax)
mov    -0x54(%rbp),%ecx
and    $0x3fc,%ecx
shl    $0xe,%ecx
mov    -0x54(%rbp),%eax
and    $0x1fe000,%eax
shr    $0x5,%eax
or     %eax,%ecx
mov    -0x54(%rbp),%eax
and    $0xff000000,%eax
shr    $0x18,%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 <dblineXRGBtoBGR32x2+0x179>
cmpl   $0x1,0x10(%rbp)
jle    16e0 <dblineXRGBtoBGR32x2+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
shl    $0x10,%ecx
mov    -0x48(%rbp),%eax
and    $0x7f800,%eax
shr    $0x3,%eax
or     %eax,%ecx
mov    -0x48(%rbp),%eax
and    $0x3fc00000,%eax
shr    $0x16,%eax
or     %eax,%ecx
mov    -0x8(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x4c(%rbp),%ecx
and    $0x1fe,%ecx
shl    $0xf,%ecx
mov    -0x4c(%rbp),%eax
and    $0xff000,%eax
shr    $0x4,%eax
or     %eax,%ecx
mov    -0x4c(%rbp),%eax
and    $0x7f800000,%eax
shr    $0x17,%eax
or     %eax,%ecx
mov    -0x8(%rbp),%rax
mov    %ecx,0x4(%rax)
mov    -0x50(%rbp),%ecx
and    $0xff,%ecx
shl    $0x10,%ecx
mov    -0x50(%rbp),%eax
and    $0x7f800,%eax
shr    $0x3,%eax
or     %eax,%ecx
mov    -0x50(%rbp),%eax
and    $0x3fc00000,%eax
shr    $0x16,%eax
or     %eax,%ecx
mov    -0x8(%rbp),%rax
mov    %ecx,0x8(%rax)
mov    -0x54(%rbp),%ecx
and    $0x1fe,%ecx
shl    $0xf,%ecx
mov    -0x54(%rbp),%eax
and    $0xff000,%eax
shr    $0x4,%eax
or     %eax,%ecx
mov    -0x54(%rbp),%eax
and    $0x7f800000,%eax
shr    $0x17,%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
shl    $0xf,%ecx
mov    -0x48(%rbp),%eax
and    $0xff000,%eax
shr    $0x4,%eax
or     %eax,%ecx
mov    -0x48(%rbp),%eax
and    $0x7f800000,%eax
shr    $0x17,%eax
or     %eax,%ecx
mov    -0x10(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x4c(%rbp),%ecx
and    $0x3fc,%ecx
shl    $0xe,%ecx
mov    -0x4c(%rbp),%eax
and    $0x1fe000,%eax
shr    $0x5,%eax
or     %eax,%ecx
mov    -0x4c(%rbp),%eax
and    $0xff000000,%eax
shr    $0x18,%eax
or     %eax,%ecx
mov    -0x10(%rbp),%rax
mov    %ecx,0x4(%rax)
mov    -0x50(%rbp),%ecx
and    $0x1fe,%ecx
shl    $0xf,%ecx
mov    -0x50(%rbp),%eax
and    $0xff000,%eax
shr    $0x4,%eax
or     %eax,%ecx
mov    -0x50(%rbp),%eax
and    $0x7f800000,%eax
shr    $0x17,%eax
or     %eax,%ecx
mov    -0x10(%rbp),%rax
mov    %ecx,0x8(%rax)
mov    -0x54(%rbp),%ecx
and    $0x3fc,%ecx
shl    $0xe,%ecx
mov    -0x54(%rbp),%eax
and    $0x1fe000,%eax
shr    $0x5,%eax
or     %eax,%ecx
mov    -0x54(%rbp),%eax
and    $0xff000000,%eax
shr    $0x18,%eax
or     %eax,%ecx
mov    -0x10(%rbp),%rax
mov    %ecx,0xc(%rax)
jmp    17e6 <dblineXRGBtoBGR32x2+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
shl    $0x10,%ecx
mov    -0x48(%rbp),%eax
and    $0x7f800,%eax
shr    $0x3,%eax
or     %eax,%ecx
mov    -0x48(%rbp),%eax
and    $0x3fc00000,%eax
shr    $0x16,%eax
or     %eax,%ecx
mov    -0x8(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x4c(%rbp),%ecx
and    $0x1fe,%ecx
shl    $0xf,%ecx
mov    -0x4c(%rbp),%eax
and    $0xff000,%eax
shr    $0x4,%eax
or     %eax,%ecx
mov    -0x4c(%rbp),%eax
and    $0x7f800000,%eax
shr    $0x17,%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
shl    $0xf,%ecx
mov    -0x48(%rbp),%eax
and    $0xff000,%eax
shr    $0x4,%eax
or     %eax,%ecx
mov    -0x48(%rbp),%eax
and    $0x7f800000,%eax
shr    $0x17,%eax
or     %eax,%ecx
mov    -0x10(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x4c(%rbp),%ecx
and    $0x3fc,%ecx
shl    $0xe,%ecx
mov    -0x4c(%rbp),%eax
and    $0x1fe000,%eax
shr    $0x5,%eax
or     %eax,%ecx
mov    -0x4c(%rbp),%eax
and    $0xff000000,%eax
shr    $0x18,%eax
or     %eax,%ecx
mov    -0x10(%rbp),%rax
mov    %ecx,0x4(%rax)
pop    %rbp
ret

x86 assembly (clang, -O2):
<dblineXRGBtoBGR32x2>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
mov    0x38(%rsp),%eax
test   $0x1,%dl
je     11f0 <dblineXRGBtoBGR32x2+0xf0>
mov    (%rcx),%r9d
mov    0x4(%rcx),%ebx
add    $0x4,%rcx
lea    (%rbx,%r9,1),%r10d
add    $0x400801,%r10d
add    %r9d,%ebx
movzbl %r9b,%edx
shl    $0x10,%edx
mov    %r9d,%ebp
shr    $0x3,%ebp
and    $0xff00,%ebp
or     %edx,%ebp
mov    %r9d,%edx
shr    $0x16,%edx
movzbl %dl,%edx
or     %ebp,%edx
mov    %edx,(%rdi)
mov    %r10d,%edx
shl    $0xf,%edx
and    $0xff0000,%edx
mov    %r10d,%ebp
shr    $0x4,%ebp
and    $0xff00,%ebp
or     %edx,%ebp
shr    $0x17,%r10d
movzbl %r10b,%edx
or     %ebp,%edx
mov    %edx,0x4(%rdi)
mov    (%r8),%edx
mov    0x4(%r8),%r10d
add    $0x4,%r8
add    %edx,%r9d
add    $0x400801,%r9d
add    %edx,%ebx
add    %ebx,%r10d
add    $0x801002,%r10d
mov    %r9d,%ebp
shl    $0xf,%ebp
and    $0xff0000,%ebp
mov    %r9d,%ebx
shr    $0x4,%ebx
and    $0xff00,%ebx
or     %ebp,%ebx
shr    $0x17,%r9d
movzbl %r9b,%ebp
or     %ebx,%ebp
mov    %ebp,(%rsi)
mov    %r10d,%ebp
shl    $0xe,%ebp
and    $0xff0000,%ebp
mov    %r10d,%edx
shr    $0x5,%edx
and    $0xff00,%edx
shr    $0x18,%r10d
or     %edx,%r10d
or     %ebp,%r10d
mov    %r10d,0x4(%rsi)
add    $0x8,%rdi
add    $0x8,%rsi
add    $0xffffffff,%eax
cmp    $0x3,%eax
jl     176d <dblineXRGBtoBGR32x2+0x66d>
xor    %edx,%edx
mov    %eax,%ebx
sub    $0x4,%ebx
cmovb  %edx,%ebx
add    $0x1,%ebx
cmp    $0x8,%ebx
jb     15d0 <dblineXRGBtoBGR32x2+0x4d0>
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    15d0 <dblineXRGBtoBGR32x2+0x4d0>
and    %r12b,%r13b
jne    15d0 <dblineXRGBtoBGR32x2+0x4d0>
and    %dl,%r9b
jne    15d0 <dblineXRGBtoBGR32x2+0x4d0>
and    -0x1(%rsp),%r10b
jne    15d0 <dblineXRGBtoBGR32x2+0x4d0>
and    %bpl,%r11b
jne    15d0 <dblineXRGBtoBGR32x2+0x4d0>
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 0xd09(%rip),%xmm9
movdqa 0xd10(%rip),%xmm11
movdqa 0xd17(%rip),%xmm12
movdqa 0xd1e(%rip),%xmm10
movdqa 0xd25(%rip),%xmm8
nopl   0x0(%rax,%rax,1)
movups (%rcx,%rbx,1),%xmm1
movups 0x4(%rcx,%rbx,1),%xmm14
movups 0x10(%rcx,%rbx,1),%xmm0
shufps $0x88,%xmm0,%xmm1
movups 0x14(%rcx,%rbx,1),%xmm0
movaps %xmm14,%xmm7
shufps $0x88,%xmm0,%xmm7
shufps $0xdd,%xmm0,%xmm14
movaps %xmm7,%xmm13
paddd  %xmm1,%xmm13
movdqa %xmm13,%xmm2
paddd  %xmm9,%xmm2
paddd  %xmm7,%xmm14
movdqa %xmm14,%xmm3
paddd  %xmm9,%xmm3
movdqa %xmm1,%xmm5
pslld  $0x10,%xmm5
pand   %xmm11,%xmm5
movdqa %xmm1,%xmm6
psrld  $0x3,%xmm6
pand   %xmm12,%xmm6
por    %xmm5,%xmm6
movdqa %xmm1,%xmm5
psrld  $0x16,%xmm5
pand   %xmm10,%xmm5
por    %xmm6,%xmm5
movdqa %xmm2,%xmm6
pslld  $0xf,%xmm6
pand   %xmm11,%xmm6
movdqa %xmm2,%xmm0
psrld  $0x4,%xmm0
pand   %xmm12,%xmm0
por    %xmm6,%xmm0
psrld  $0x17,%xmm2
pand   %xmm10,%xmm2
por    %xmm0,%xmm2
movdqa %xmm7,%xmm0
pslld  $0x10,%xmm0
pand   %xmm11,%xmm0
movdqa %xmm7,%xmm4
psrld  $0x3,%xmm4
pand   %xmm12,%xmm4
por    %xmm0,%xmm4
movdqa %xmm7,%xmm6
psrld  $0x16,%xmm6
pand   %xmm10,%xmm6
por    %xmm4,%xmm6
movdqa %xmm3,%xmm0
pslld  $0xf,%xmm0
pand   %xmm11,%xmm0
movdqa %xmm3,%xmm4
psrld  $0x4,%xmm4
pand   %xmm12,%xmm4
por    %xmm0,%xmm4
psrld  $0x17,%xmm3
pand   %xmm10,%xmm3
por    %xmm4,%xmm3
movdqa %xmm6,%xmm0
punpckhdq %xmm3,%xmm0
movdqa %xmm5,%xmm4
punpckhdq %xmm2,%xmm4
movdqa %xmm4,%xmm15
punpcklqdq %xmm0,%xmm15
punpckldq %xmm3,%xmm6
punpckldq %xmm2,%xmm5
movdqa %xmm5,%xmm2
punpckhqdq %xmm6,%xmm2
punpcklqdq %xmm6,%xmm5
punpckhqdq %xmm0,%xmm4
movdqu %xmm4,0x30(%rdi,%rbx,2)
movdqu %xmm5,(%rdi,%rbx,2)
movdqu %xmm2,0x10(%rdi,%rbx,2)
movdqu %xmm15,0x20(%rdi,%rbx,2)
movups (%r8,%rbx,1),%xmm0
movups 0x4(%r8,%rbx,1),%xmm3
movups 0x10(%r8,%rbx,1),%xmm2
shufps $0x88,%xmm2,%xmm0
movups 0x14(%r8,%rbx,1),%xmm2
movaps %xmm3,%xmm4
shufps $0x88,%xmm2,%xmm4
shufps $0xdd,%xmm2,%xmm3
paddd  %xmm0,%xmm1
paddd  %xmm9,%xmm1
paddd  %xmm4,%xmm7
paddd  %xmm8,%xmm4
paddd  %xmm13,%xmm0
paddd  %xmm4,%xmm0
paddd  %xmm9,%xmm7
paddd  %xmm14,%xmm3
paddd  %xmm4,%xmm3
movdqa %xmm1,%xmm2
pslld  $0xf,%xmm2
pand   %xmm11,%xmm2
movdqa %xmm1,%xmm4
psrld  $0x4,%xmm4
pand   %xmm12,%xmm4
por    %xmm2,%xmm4
psrld  $0x17,%xmm1
pand   %xmm10,%xmm1
por    %xmm4,%xmm1
movdqa %xmm0,%xmm2
pslld  $0xe,%xmm2
pand   %xmm11,%xmm2
movdqa %xmm0,%xmm4
psrld  $0x5,%xmm4
pand   %xmm12,%xmm4
psrld  $0x18,%xmm0
por    %xmm4,%xmm0
por    %xmm2,%xmm0
movdqa %xmm7,%xmm2
pslld  $0xf,%xmm2
pand   %xmm11,%xmm2
movdqa %xmm7,%xmm4
psrld  $0x4,%xmm4
pand   %xmm12,%xmm4
por    %xmm2,%xmm4
psrld  $0x17,%xmm7
pand   %xmm10,%xmm7
por    %xmm4,%xmm7
movdqa %xmm3,%xmm2
pslld  $0xe,%xmm2
pand   %xmm11,%xmm2
movdqa %xmm3,%xmm4
psrld  $0x5,%xmm4
pand   %xmm12,%xmm4
psrld  $0x18,%xmm3
por    %xmm4,%xmm3
por    %xmm2,%xmm3
movdqa %xmm7,%xmm2
punpckldq %xmm3,%xmm2
movdqa %xmm1,%xmm4
punpckldq %xmm0,%xmm4
movdqa %xmm4,%xmm5
punpckhqdq %xmm2,%xmm5
punpcklqdq %xmm2,%xmm4
punpckhdq %xmm3,%xmm7
punpckhdq %xmm0,%xmm1
movdqa %xmm1,%xmm0
punpckhqdq %xmm7,%xmm0
punpcklqdq %xmm7,%xmm1
movdqu %xmm1,0x20(%rsi,%rbx,2)
movdqu %xmm0,0x30(%rsi,%rbx,2)
movdqu %xmm4,(%rsi,%rbx,2)
movdqu %xmm5,0x10(%rsi,%rbx,2)
add    $0x20,%rbx
add    $0x4,%rdx
jne    1320 <dblineXRGBtoBGR32x2+0x220>
mov    %r14,%rdi
mov    %r10,%r8
mov    %r11,%rcx
mov    %r9,%rsi
nop
mov    %eax,%r9d
mov    (%rcx),%r14d
mov    0x4(%rcx),%r12d
mov    0x8(%rcx),%r11d
add    $0x8,%rcx
lea    (%r12,%r14,1),%r10d
lea    (%r12,%r14,1),%ebp
add    $0x400801,%ebp
lea    (%r11,%r12,1),%r15d
add    $0x400801,%r15d
add    %r12d,%r11d
movzbl %r14b,%ebx
shl    $0x10,%ebx
mov    %r14d,%edx
shr    $0x3,%edx
and    $0xff00,%edx
or     %ebx,%edx
mov    %r14d,%ebx
shr    $0x16,%ebx
movzbl %bl,%ebx
or     %edx,%ebx
mov    %ebx,(%rdi)
mov    %ebp,%edx
shl    $0xf,%edx
and    $0xff0000,%edx
mov    %ebp,%ebx
shr    $0x4,%ebx
and    $0xff00,%ebx
or     %edx,%ebx
shr    $0x17,%ebp
movzbl %bpl,%edx
or     %ebx,%edx
mov    %edx,0x4(%rdi)
movzbl %r12b,%edx
shl    $0x10,%edx
mov    %r12d,%ebx
shr    $0x3,%ebx
and    $0xff00,%ebx
or     %edx,%ebx
mov    %r12d,%edx
shr    $0x16,%edx
movzbl %dl,%edx
or     %ebx,%edx
mov    %edx,0x8(%rdi)
mov    %r15d,%edx
shl    $0xf,%edx
and    $0xff0000,%edx
mov    %r15d,%ebx
shr    $0x4,%ebx
and    $0xff00,%ebx
or     %edx,%ebx
shr    $0x17,%r15d
movzbl %r15b,%edx
or     %ebx,%edx
mov    %edx,0xc(%rdi)
mov    (%r8),%ebx
mov    0x4(%r8),%eax
add    %ebx,%r14d
add    $0x400801,%r14d
lea    (%rax,%r10,1),%edx
add    $0x801002,%edx
add    %ebx,%edx
add    %eax,%r11d
add    $0x801002,%r11d
add    0x8(%r8),%r11d
lea    (%r12,%rax,1),%r10d
add    $0x400801,%r10d
add    $0x8,%r8
mov    %r14d,%eax
shl    $0xf,%eax
and    $0xff0000,%eax
mov    %r14d,%ebp
shr    $0x4,%ebp
and    $0xff00,%ebp
or     %eax,%ebp
shr    $0x17,%r14d
movzbl %r14b,%eax
or     %ebp,%eax
mov    %eax,(%rsi)
mov    %edx,%eax
shl    $0xe,%eax
and    $0xff0000,%eax
mov    %edx,%ebx
shr    $0x5,%ebx
and    $0xff00,%ebx
shr    $0x18,%edx
or     %ebx,%edx
or     %eax,%edx
mov    %edx,0x4(%rsi)
mov    %r10d,%eax
shl    $0xf,%eax
and    $0xff0000,%eax
mov    %r10d,%edx
shr    $0x4,%edx
and    $0xff00,%edx
or     %eax,%edx
shr    $0x17,%r10d
movzbl %r10b,%eax
or     %edx,%eax
mov    %eax,0x8(%rsi)
mov    %r11d,%eax
shl    $0xe,%eax
and    $0xff0000,%eax
mov    %r11d,%edx
shr    $0x5,%edx
and    $0xff00,%edx
shr    $0x18,%r11d
or     %edx,%r11d
or     %eax,%r11d
mov    %r11d,0xc(%rsi)
add    $0x10,%rdi
add    $0x10,%rsi
lea    -0x2(%r9),%eax
cmp    $0x4,%r9d
ja     15d0 <dblineXRGBtoBGR32x2+0x4d0>
mov    (%rcx),%edx
cmp    $0x2,%eax
jne    18bb <dblineXRGBtoBGR32x2+0x7bb>
mov    0x4(%rcx),%r11d
lea    (%r11,%rdx,1),%r9d
lea    (%r11,%rdx,1),%eax
add    $0x400801,%eax
lea    (%r11,%r11,1),%r10d
add    $0x400801,%r10d
movzbl %dl,%ecx
shl    $0x10,%ecx
mov    %edx,%ebx
shr    $0x3,%ebx
and    $0xff00,%ebx
or     %ecx,%ebx
mov    %edx,%ecx
shr    $0x16,%ecx
movzbl %cl,%ecx
or     %ebx,%ecx
mov    %ecx,(%rdi)
mov    %eax,%ecx
shl    $0xf,%ecx
and    $0xff0000,%ecx
mov    %eax,%ebp
shr    $0x4,%ebp
and    $0xff00,%ebp
or     %ecx,%ebp
shr    $0x17,%eax
movzbl %al,%eax
or     %ebp,%eax
mov    %eax,0x4(%rdi)
movzbl %r11b,%eax
shl    $0x10,%eax
mov    %r11d,%ecx
shr    $0x3,%ecx
and    $0xff00,%ecx
or     %eax,%ecx
mov    %r11d,%eax
shr    $0x16,%eax
movzbl %al,%eax
or     %ecx,%eax
mov    %eax,0x8(%rdi)
mov    %r10d,%eax
shl    $0xf,%eax
and    $0xff0000,%eax
mov    %r10d,%ecx
shr    $0x4,%ecx
and    $0xff00,%ecx
or     %eax,%ecx
shr    $0x17,%r10d
movzbl %r10b,%eax
or     %ecx,%eax
mov    %eax,0xc(%rdi)
mov    (%r8),%eax
mov    0x4(%r8),%ecx
lea    (%rdx,%rax,1),%ebx
add    $0x400801,%ebx
add    %eax,%r9d
lea    (%rcx,%r9,1),%edx
add    $0x801002,%edx
lea    (%rcx,%r11,1),%r8d
add    $0x400801,%r8d
add    %r11d,%ecx
mov    %ebx,%eax
shl    $0xf,%eax
and    $0xff0000,%eax
mov    %ebx,%ebp
shr    $0x4,%ebp
and    $0xff00,%ebp
or     %eax,%ebp
shr    $0x17,%ebx
movzbl %bl,%eax
or     %ebp,%eax
mov    %eax,(%rsi)
mov    %edx,%eax
shl    $0xe,%eax
and    $0xff0000,%eax
mov    %edx,%edi
shr    $0x5,%edi
and    $0xff00,%edi
shr    $0x18,%edx
or     %edi,%edx
or     %eax,%edx
mov    %edx,0x4(%rsi)
mov    %r8d,%eax
shl    $0xf,%eax
and    $0xff0000,%eax
mov    %r8d,%edi
shr    $0x4,%edi
and    $0xff00,%edi
or     %eax,%edi
shr    $0x17,%r8d
movzbl %r8b,%edx
or     %edi,%edx
lea    0x8(%rsi),%rdi
mov    $0xc,%eax
jmp    193b <dblineXRGBtoBGR32x2+0x83b>
lea    (%rdx,%rdx,1),%ebx
add    $0x400801,%ebx
movzbl %dl,%ecx
shl    $0x10,%ecx
mov    %edx,%ebp
shr    $0x3,%ebp
and    $0xff00,%ebp
or     %ecx,%ebp
mov    %edx,%ecx
shr    $0x16,%ecx
movzbl %cl,%ecx
or     %ebp,%ecx
mov    %ecx,(%rdi)
mov    %ebx,%ecx
shl    $0xf,%ecx
and    $0xff0000,%ecx
mov    %ebx,%eax
shr    $0x4,%eax
and    $0xff00,%eax
or     %ecx,%eax
shr    $0x17,%ebx
movzbl %bl,%ecx
or     %eax,%ecx
mov    %ecx,0x4(%rdi)
mov    (%r8),%eax
mov    %edx,%ecx
add    %eax,%ecx
add    %edx,%eax
add    $0x400801,%eax
mov    %eax,%edx
shl    $0xf,%edx
and    $0xff0000,%edx
mov    %eax,%edi
shr    $0x4,%edi
and    $0xff00,%edi
or     %edx,%edi
shr    $0x17,%eax
movzbl %al,%edx
or     %edi,%edx
mov    $0x4,%eax
mov    %rsi,%rdi
add    %ecx,%ecx
add    $0x801002,%ecx
mov    %edx,(%rdi)
mov    %ecx,%edx
shl    $0xe,%edx
and    $0xff0000,%edx
mov    %ecx,%edi
shr    $0x5,%edi
and    $0xff00,%edi
shr    $0x18,%ecx
or     %edi,%ecx
or     %edx,%ecx
mov    %ecx,(%rsi,%rax,1)
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

LLVM IR (-O0):
define void @dblineXRGBtoBGR32x2(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 = shl i32 %42, 16
%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, 22
%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 = shl i32 %56, 15
%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, 23
%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 = shl i32 %89, 15
%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, 23
%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 = shl i32 %102, 14
%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, 24
%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 = shl i32 %152, 16
%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, 22
%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 = shl i32 %165, 15
%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, 23
%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 = shl i32 %179, 16
%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, 22
%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 = shl i32 %193, 15
%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, 23
%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 = shl i32 %242, 15
%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, 23
%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 = shl i32 %255, 14
%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, 24
%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 = shl i32 %269, 15
%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, 23
%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 = shl i32 %283, 14
%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, 24
%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 = shl i32 %329, 16
%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, 22
%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 = shl i32 %342, 15
%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, 23
%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 = shl i32 %356, 16
%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, 22
%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 = shl i32 %370, 15
%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, 23
%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 = shl i32 %416, 15
%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, 23
%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 = shl i32 %429, 14
%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, 24
%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 = shl i32 %443, 15
%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, 23
%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 = shl i32 %457, 14
%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, 24
%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 = shl i32 %481, 16
%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, 22
%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 = shl i32 %495, 15
%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, 23
%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 = shl i32 %525, 15
%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, 23
%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 = shl i32 %538, 14
%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, 24
%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 @dblineXRGBtoBGR32x2(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 = shl i32 %12, 16
%19 = and i32 %18, 16711680
%20 = lshr i32 %12, 3
%21 = and i32 %20, 65280
%22 = or i32 %19, %21
%23 = lshr i32 %12, 22
%24 = and i32 %23, 255
%25 = or i32 %22, %24
%26 = bitcast i8* %0 to i32*
store i32 %25, i32* %26
%27 = shl i32 %17, 15
%28 = and i32 %27, 16711680
%29 = lshr i32 %17, 4
%30 = and i32 %29, 65280
%31 = or i32 %28, %30
%32 = lshr i32 %17, 23
%33 = and i32 %32, 255
%34 = or i32 %31, %33
%35 = getelementptr inbounds i8, i8* %0, i64 4
%36 = bitcast i8* %35 to i32*
store i32 %34, i32* %36
%37 = bitcast i8* %4 to i32*
%38 = load i32, i32* %37
%39 = getelementptr inbounds i8, i8* %4, i64 4
%40 = bitcast i8* %39 to i32*
%41 = load i32, i32* %40
%42 = add i32 %12, 4196353
%43 = add i32 %42, %38
%44 = add i32 %16, 8392706
%45 = add i32 %44, %38
%46 = add i32 %45, %41
%47 = shl i32 %43, 15
%48 = and i32 %47, 16711680
%49 = lshr i32 %43, 4
%50 = and i32 %49, 65280
%51 = or i32 %48, %50
%52 = lshr i32 %43, 23
%53 = and i32 %52, 255
%54 = or i32 %51, %53
%55 = bitcast i8* %1 to i32*
store i32 %54, i32* %55
%56 = shl i32 %46, 14
%57 = and i32 %56, 16711680
%58 = lshr i32 %46, 5
%59 = and i32 %58, 65280
%60 = lshr i32 %46, 24
%61 = or i32 %59, %60
%62 = or i32 %61, %57
%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* [ %39, %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 = shl <4 x i32> %142, <i32 16, i32 16, i32 16, i32 16>
%153 = and <4 x i32> %152, <i32 16711680, i32 16711680, i32 16711680, i32 16711680>
%154 = lshr <4 x i32> %142, <i32 3, i32 3, i32 3, i32 3>
%155 = and <4 x i32> %154, <i32 65280, i32 65280, i32 65280, i32 65280>
%156 = or <4 x i32> %153, %155
%157 = lshr <4 x i32> %142, <i32 22, i32 22, i32 22, i32 22>
%158 = and <4 x i32> %157, <i32 255, i32 255, i32 255, i32 255>
%159 = or <4 x i32> %156, %158
%160 = shl <4 x i32> %149, <i32 15, i32 15, i32 15, i32 15>
%161 = and <4 x i32> %160, <i32 16711680, i32 16711680, i32 16711680, i32 16711680>
%162 = lshr <4 x i32> %149, <i32 4, i32 4, i32 4, i32 4>
%163 = and <4 x i32> %162, <i32 65280, i32 65280, i32 65280, i32 65280>
%164 = or <4 x i32> %161, %163
%165 = lshr <4 x i32> %149, <i32 23, i32 23, i32 23, i32 23>
%166 = and <4 x i32> %165, <i32 255, i32 255, i32 255, i32 255>
%167 = or <4 x i32> %164, %166
%168 = shl <4 x i32> %146, <i32 16, i32 16, i32 16, i32 16>
%169 = and <4 x i32> %168, <i32 16711680, i32 16711680, i32 16711680, i32 16711680>
%170 = lshr <4 x i32> %146, <i32 3, i32 3, i32 3, i32 3>
%171 = and <4 x i32> %170, <i32 65280, i32 65280, i32 65280, i32 65280>
%172 = or <4 x i32> %169, %171
%173 = lshr <4 x i32> %146, <i32 22, i32 22, i32 22, i32 22>
%174 = and <4 x i32> %173, <i32 255, i32 255, i32 255, i32 255>
%175 = or <4 x i32> %172, %174
%176 = shl <4 x i32> %151, <i32 15, i32 15, i32 15, i32 15>
%177 = and <4 x i32> %176, <i32 16711680, i32 16711680, i32 16711680, i32 16711680>
%178 = lshr <4 x i32> %151, <i32 4, i32 4, i32 4, i32 4>
%179 = and <4 x i32> %178, <i32 65280, i32 65280, i32 65280, i32 65280>
%180 = or <4 x i32> %177, %179
%181 = lshr <4 x i32> %151, <i32 23, i32 23, i32 23, i32 23>
%182 = and <4 x i32> %181, <i32 255, i32 255, i32 255, i32 255>
%183 = or <4 x i32> %180, %182
%184 = getelementptr inbounds i8, i8* %72, i64 %134
%185 = bitcast i8* %184 to <16 x i32>*
%186 = shufflevector <4 x i32> %159, <4 x i32> %167, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>
%187 = shufflevector <4 x i32> %175, <4 x i32> %183, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>
%188 = shufflevector <8 x i32> %186, <8 x i32> %187, <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> %188, <16 x i32>* %185
%189 = bitcast i8* %136 to <8 x i32>*
%190 = load <8 x i32>, <8 x i32>* %189
%191 = shufflevector <8 x i32> %190, <8 x i32> poison, <4 x i32> <i32 0, i32 2, i32 4, i32 6>
%192 = getelementptr inbounds i8, i8* %136, i64 4
%193 = bitcast i8* %192 to <8 x i32>*
%194 = load <8 x i32>, <8 x i32>* %193
%195 = shufflevector <8 x i32> %194, <8 x i32> poison, <4 x i32> <i32 0, i32 2, i32 4, i32 6>
%196 = shufflevector <8 x i32> %194, <8 x i32> poison, <4 x i32> <i32 1, i32 3, i32 5, i32 7>
%197 = add <4 x i32> %142, <i32 4196353, i32 4196353, i32 4196353, i32 4196353>
%198 = add <4 x i32> %197, %191
%199 = add <4 x i32> %195, <i32 8392706, i32 8392706, i32 8392706, i32 8392706>
%200 = add <4 x i32> %199, %148
%201 = add <4 x i32> %200, %191
%202 = add <4 x i32> %146, <i32 4196353, i32 4196353, i32 4196353, i32 4196353>
%203 = add <4 x i32> %202, %195
%204 = add <4 x i32> %199, %150
%205 = add <4 x i32> %204, %196
%206 = shl <4 x i32> %198, <i32 15, i32 15, i32 15, i32 15>
%207 = and <4 x i32> %206, <i32 16711680, i32 16711680, i32 16711680, i32 16711680>
%208 = lshr <4 x i32> %198, <i32 4, i32 4, i32 4, i32 4>
%209 = and <4 x i32> %208, <i32 65280, i32 65280, i32 65280, i32 65280>
%210 = or <4 x i32> %207, %209
%211 = lshr <4 x i32> %198, <i32 23, i32 23, i32 23, i32 23>
%212 = and <4 x i32> %211, <i32 255, i32 255, i32 255, i32 255>
%213 = or <4 x i32> %210, %212
%214 = shl <4 x i32> %201, <i32 14, i32 14, i32 14, i32 14>
%215 = and <4 x i32> %214, <i32 16711680, i32 16711680, i32 16711680, i32 16711680>
%216 = lshr <4 x i32> %201, <i32 5, i32 5, i32 5, i32 5>
%217 = and <4 x i32> %216, <i32 65280, i32 65280, i32 65280, i32 65280>
%218 = lshr <4 x i32> %201, <i32 24, i32 24, i32 24, i32 24>
%219 = or <4 x i32> %217, %218
%220 = or <4 x i32> %219, %215
%221 = shl <4 x i32> %203, <i32 15, i32 15, i32 15, i32 15>
%222 = and <4 x i32> %221, <i32 16711680, i32 16711680, i32 16711680, i32 16711680>
%223 = lshr <4 x i32> %203, <i32 4, i32 4, i32 4, i32 4>
%224 = and <4 x i32> %223, <i32 65280, i32 65280, i32 65280, i32 65280>
%225 = or <4 x i32> %222, %224
%226 = lshr <4 x i32> %203, <i32 23, i32 23, i32 23, i32 23>
%227 = and <4 x i32> %226, <i32 255, i32 255, i32 255, i32 255>
%228 = or <4 x i32> %225, %227
%229 = shl <4 x i32> %205, <i32 14, i32 14, i32 14, i32 14>
%230 = and <4 x i32> %229, <i32 16711680, i32 16711680, i32 16711680, i32 16711680>
%231 = lshr <4 x i32> %205, <i32 5, i32 5, i32 5, i32 5>
%232 = and <4 x i32> %231, <i32 65280, i32 65280, i32 65280, i32 65280>
%233 = lshr <4 x i32> %205, <i32 24, i32 24, i32 24, i32 24>
%234 = or <4 x i32> %232, %233
%235 = or <4 x i32> %234, %230
%236 = getelementptr inbounds i8, i8* %69, i64 %139
%237 = bitcast i8* %236 to <16 x i32>*
%238 = shufflevector <4 x i32> %213, <4 x i32> %220, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>
%239 = shufflevector <4 x i32> %228, <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* [ %311, %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 = shl i32 %256, 16
%268 = and i32 %267, 16711680
%269 = lshr i32 %256, 3
%270 = and i32 %269, 65280
%271 = or i32 %268, %270
%272 = lshr i32 %256, 22
%273 = and i32 %272, 255
%274 = or i32 %271, %273
%275 = bitcast i8* %251 to i32*
store i32 %274, i32* %275
%276 = shl i32 %264, 15
%277 = and i32 %276, 16711680
%278 = lshr i32 %264, 4
%279 = and i32 %278, 65280
%280 = or i32 %277, %279
%281 = lshr i32 %264, 23
%282 = and i32 %281, 255
%283 = or i32 %280, %282
%284 = getelementptr inbounds i8, i8* %251, i64 4
%285 = bitcast i8* %284 to i32*
store i32 %283, i32* %285
%286 = shl i32 %259, 16
%287 = and i32 %286, 16711680
%288 = lshr i32 %259, 3
%289 = and i32 %288, 65280
%290 = or i32 %287, %289
%291 = lshr i32 %259, 22
%292 = and i32 %291, 255
%293 = or i32 %290, %292
%294 = getelementptr inbounds i8, i8* %251, i64 8
%295 = bitcast i8* %294 to i32*
store i32 %293, i32* %295
%296 = shl i32 %266, 15
%297 = and i32 %296, 16711680
%298 = lshr i32 %266, 4
%299 = and i32 %298, 65280
%300 = or i32 %297, %299
%301 = lshr i32 %266, 23
%302 = and i32 %301, 255
%303 = or i32 %300, %302
%304 = getelementptr inbounds i8, i8* %251, i64 12
%305 = bitcast i8* %304 to i32*
store i32 %303, i32* %305
%306 = bitcast i8* %252 to i32*
%307 = load i32, i32* %306
%308 = getelementptr inbounds i8, i8* %252, i64 4
%309 = bitcast i8* %308 to i32*
%310 = load i32, i32* %309
%311 = getelementptr inbounds i8, i8* %252, i64 8
%312 = bitcast i8* %311 to i32*
%313 = load i32, i32* %312
%314 = add i32 %256, 4196353
%315 = add i32 %314, %307
%316 = add i32 %310, 8392706
%317 = add i32 %316, %263
%318 = add i32 %317, %307
%319 = add i32 %259, 4196353
%320 = add i32 %319, %310
%321 = add i32 %316, %265
%322 = add i32 %321, %313
%323 = shl i32 %315, 15
%324 = and i32 %323, 16711680
%325 = lshr i32 %315, 4
%326 = and i32 %325, 65280
%327 = or i32 %324, %326
%328 = lshr i32 %315, 23
%329 = and i32 %328, 255
%330 = or i32 %327, %329
%331 = bitcast i8* %254 to i32*
store i32 %330, i32* %331
%332 = shl i32 %318, 14
%333 = and i32 %332, 16711680
%334 = lshr i32 %318, 5
%335 = and i32 %334, 65280
%336 = lshr i32 %318, 24
%337 = or i32 %335, %336
%338 = or i32 %337, %333
%339 = getelementptr inbounds i8, i8* %254, i64 4
%340 = bitcast i8* %339 to i32*
store i32 %338, i32* %340
%341 = shl i32 %320, 15
%342 = and i32 %341, 16711680
%343 = lshr i32 %320, 4
%344 = and i32 %343, 65280
%345 = or i32 %342, %344
%346 = lshr i32 %320, 23
%347 = and i32 %346, 255
%348 = or i32 %345, %347
%349 = getelementptr inbounds i8, i8* %254, i64 8
%350 = bitcast i8* %349 to i32*
store i32 %348, i32* %350
%351 = shl i32 %322, 14
%352 = and i32 %351, 16711680
%353 = lshr i32 %322, 5
%354 = and i32 %353, 65280
%355 = lshr i32 %322, 24
%356 = or i32 %354, %355
%357 = or i32 %356, %352
%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 ], [ %311, %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 %459
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 = shl i32 %372, 16
%382 = and i32 %381, 16711680
%383 = lshr i32 %372, 3
%384 = and i32 %383, 65280
%385 = or i32 %382, %384
%386 = lshr i32 %372, 22
%387 = and i32 %386, 255
%388 = or i32 %385, %387
%389 = bitcast i8* %368 to i32*
store i32 %388, i32* %389
%390 = shl i32 %378, 15
%391 = and i32 %390, 16711680
%392 = lshr i32 %378, 4
%393 = and i32 %392, 65280
%394 = or i32 %391, %393
%395 = lshr i32 %378, 23
%396 = and i32 %395, 255
%397 = or i32 %394, %396
%398 = getelementptr inbounds i8, i8* %368, i64 4
%399 = bitcast i8* %398 to i32*
store i32 %397, i32* %399
%400 = shl i32 %376, 16
%401 = and i32 %400, 16711680
%402 = lshr i32 %376, 3
%403 = and i32 %402, 65280
%404 = or i32 %401, %403
%405 = lshr i32 %376, 22
%406 = and i32 %405, 255
%407 = or i32 %404, %406
%408 = getelementptr inbounds i8, i8* %368, i64 8
%409 = bitcast i8* %408 to i32*
store i32 %407, i32* %409
%410 = shl i32 %380, 15
%411 = and i32 %410, 16711680
%412 = lshr i32 %380, 4
%413 = and i32 %412, 65280
%414 = or i32 %411, %413
%415 = lshr i32 %380, 23
%416 = and i32 %415, 255
%417 = or i32 %414, %416
%418 = getelementptr inbounds i8, i8* %368, i64 12
%419 = bitcast i8* %418 to i32*
store i32 %417, i32* %419
%420 = bitcast i8* %367 to i32*
%421 = load i32, i32* %420
%422 = getelementptr inbounds i8, i8* %367, i64 4
%423 = bitcast i8* %422 to i32*
%424 = load i32, i32* %423
%425 = add i32 %372, 4196353
%426 = add i32 %425, %421
%427 = add i32 %377, 8392706
%428 = add i32 %427, %421
%429 = add i32 %428, %424
%430 = add i32 %424, %376
%431 = add i32 %430, 4196353
%432 = shl i32 %426, 15
%433 = and i32 %432, 16711680
%434 = lshr i32 %426, 4
%435 = and i32 %434, 65280
%436 = or i32 %433, %435
%437 = lshr i32 %426, 23
%438 = and i32 %437, 255
%439 = or i32 %436, %438
%440 = bitcast i8* %365 to i32*
store i32 %439, i32* %440
%441 = shl i32 %429, 14
%442 = and i32 %441, 16711680
%443 = lshr i32 %429, 5
%444 = and i32 %443, 65280
%445 = lshr i32 %429, 24
%446 = or i32 %444, %445
%447 = or i32 %446, %442
%448 = getelementptr inbounds i8, i8* %365, i64 4
%449 = bitcast i8* %448 to i32*
store i32 %447, i32* %449
%450 = shl i32 %431, 15
%451 = and i32 %450, 16711680
%452 = lshr i32 %431, 4
%453 = and i32 %452, 65280
%454 = or i32 %451, %453
%455 = lshr i32 %431, 23
%456 = and i32 %455, 255
%457 = or i32 %454, %456
%458 = getelementptr inbounds i8, i8* %365, i64 8
br label %493
459: ; preds = %364
%460 = shl i32 %372, 1
%461 = add i32 %460, 4196353
%462 = shl i32 %372, 16
%463 = and i32 %462, 16711680
%464 = lshr i32 %372, 3
%465 = and i32 %464, 65280
%466 = or i32 %463, %465
%467 = lshr i32 %372, 22
%468 = and i32 %467, 255
%469 = or i32 %466, %468
%470 = bitcast i8* %368 to i32*
store i32 %469, i32* %470
%471 = shl i32 %461, 15
%472 = and i32 %471, 16711680
%473 = lshr i32 %461, 4
%474 = and i32 %473, 65280
%475 = or i32 %472, %474
%476 = lshr i32 %461, 23
%477 = and i32 %476, 255
%478 = or i32 %475, %477
%479 = getelementptr inbounds i8, i8* %368, i64 4
%480 = bitcast i8* %479 to i32*
store i32 %478, i32* %480
%481 = bitcast i8* %367 to i32*
%482 = load i32, i32* %481
%483 = add i32 %482, %372
%484 = add i32 %483, 4196353
%485 = shl i32 %484, 15
%486 = and i32 %485, 16711680
%487 = lshr i32 %484, 4
%488 = and i32 %487, 65280
%489 = or i32 %486, %488
%490 = lshr i32 %484, 23
%491 = and i32 %490, 255
%492 = or i32 %489, %491
br label %493
493: ; preds = %459, %373
%494 = phi i8* [ %365, %459 ], [ %458, %373 ]
%495 = phi i32 [ %492, %459 ], [ %457, %373 ]
%496 = phi i32 [ %483, %459 ], [ %430, %373 ]
%497 = phi i64 [ 4, %459 ], [ 12, %373 ]
%498 = shl i32 %496, 1
%499 = add i32 %498, 8392706
%500 = bitcast i8* %494 to i32*
store i32 %495, i32* %500
%501 = shl i32 %499, 14
%502 = and i32 %501, 16711680
%503 = lshr i32 %499, 5
%504 = and i32 %503, 65280
%505 = lshr i32 %499, 24
%506 = or i32 %504, %505
%507 = or i32 %506, %502
%508 = getelementptr inbounds i8, i8* %365, i64 %497
%509 = bitcast i8* %508 to i32*
store i32 %507, i32* %509
ret void
}