void move_420_block(int yTL, int yTR, int yBL, int yBR, int u, int v,
                    int rowPixels, unsigned char *rgb, int bits) {
  const int rvScale = 91881;
  const int guScale = -22553;
  const int gvScale = -46801;
  const int buScale = 116129;
  const int yScale = 65536;
  int r, g, b;
  g = guScale * u + gvScale * v;
  if (1) {
    r = buScale * u;
    b = rvScale * v;
  } else {
    r = rvScale * v;
    b = buScale * u;
  }
  yTL *= yScale;
  yTR *= yScale;
  yBL *= yScale;
  yBR *= yScale;
  if (bits == 24) {
    rgb[0] =
        ((b + yTL) > 0xffffff ? 0xff
                              : ((b + yTL) <= 0xffff ? 0 : ((b + yTL) >> 16)));
    rgb[1] =
        ((g + yTL) > 0xffffff ? 0xff
                              : ((g + yTL) <= 0xffff ? 0 : ((g + yTL) >> 16)));
    rgb[2] =
        ((r + yTL) > 0xffffff ? 0xff
                              : ((r + yTL) <= 0xffff ? 0 : ((r + yTL) >> 16)));
    rgb[3] =
        ((b + yTR) > 0xffffff ? 0xff
                              : ((b + yTR) <= 0xffff ? 0 : ((b + yTR) >> 16)));
    rgb[4] =
        ((g + yTR) > 0xffffff ? 0xff
                              : ((g + yTR) <= 0xffff ? 0 : ((g + yTR) >> 16)));
    rgb[5] =
        ((r + yTR) > 0xffffff ? 0xff
                              : ((r + yTR) <= 0xffff ? 0 : ((r + yTR) >> 16)));
    rgb += 3 * rowPixels;
    rgb[0] =
        ((b + yBL) > 0xffffff ? 0xff
                              : ((b + yBL) <= 0xffff ? 0 : ((b + yBL) >> 16)));
    rgb[1] =
        ((g + yBL) > 0xffffff ? 0xff
                              : ((g + yBL) <= 0xffff ? 0 : ((g + yBL) >> 16)));
    rgb[2] =
        ((r + yBL) > 0xffffff ? 0xff
                              : ((r + yBL) <= 0xffff ? 0 : ((r + yBL) >> 16)));
    rgb[3] =
        ((b + yBR) > 0xffffff ? 0xff
                              : ((b + yBR) <= 0xffff ? 0 : ((b + yBR) >> 16)));
    rgb[4] =
        ((g + yBR) > 0xffffff ? 0xff
                              : ((g + yBR) <= 0xffff ? 0 : ((g + yBR) >> 16)));
    rgb[5] =
        ((r + yBR) > 0xffffff ? 0xff
                              : ((r + yBR) <= 0xffff ? 0 : ((r + yBR) >> 16)));
  } else if (bits == 16) {
    rgb[0] =
        ((((b + yTL) > 0xffffff
               ? 0xff
               : ((b + yTL) <= 0xffff ? 0 : ((b + yTL) >> 16))) >>
          3) &
         0x1F) |
        ((((g + yTL) > 0xffffff ? 0xff
                                : ((g + yTL) <= 0xffff ? 0 : ((g + yTL) >> 16)))
          << 3) &
         0xE0);
    rgb[1] = ((((g + yTL) > 0xffffff
                    ? 0xff
                    : ((g + yTL) <= 0xffff ? 0 : ((g + yTL) >> 16))) >>
               5) &
              0x07) |
             (((r + yTL) > 0xffffff
                   ? 0xff
                   : ((r + yTL) <= 0xffff ? 0 : ((r + yTL) >> 16))) &
              0xF8);
    rgb[2] =
        ((((b + yTR) > 0xffffff
               ? 0xff
               : ((b + yTR) <= 0xffff ? 0 : ((b + yTR) >> 16))) >>
          3) &
         0x1F) |
        ((((g + yTR) > 0xffffff ? 0xff
                                : ((g + yTR) <= 0xffff ? 0 : ((g + yTR) >> 16)))
          << 3) &
         0xE0);
    rgb[3] = ((((g + yTR) > 0xffffff
                    ? 0xff
                    : ((g + yTR) <= 0xffff ? 0 : ((g + yTR) >> 16))) >>
               5) &
              0x07) |
             (((r + yTR) > 0xffffff
                   ? 0xff
                   : ((r + yTR) <= 0xffff ? 0 : ((r + yTR) >> 16))) &
              0xF8);
    rgb += 2 * rowPixels;
    rgb[0] =
        ((((b + yBL) > 0xffffff
               ? 0xff
               : ((b + yBL) <= 0xffff ? 0 : ((b + yBL) >> 16))) >>
          3) &
         0x1F) |
        ((((g + yBL) > 0xffffff ? 0xff
                                : ((g + yBL) <= 0xffff ? 0 : ((g + yBL) >> 16)))
          << 3) &
         0xE0);
    rgb[1] = ((((g + yBL) > 0xffffff
                    ? 0xff
                    : ((g + yBL) <= 0xffff ? 0 : ((g + yBL) >> 16))) >>
               5) &
              0x07) |
             (((r + yBL) > 0xffffff
                   ? 0xff
                   : ((r + yBL) <= 0xffff ? 0 : ((r + yBL) >> 16))) &
              0xF8);
    rgb[2] =
        ((((b + yBR) > 0xffffff
               ? 0xff
               : ((b + yBR) <= 0xffff ? 0 : ((b + yBR) >> 16))) >>
          3) &
         0x1F) |
        ((((g + yBR) > 0xffffff ? 0xff
                                : ((g + yBR) <= 0xffff ? 0 : ((g + yBR) >> 16)))
          << 3) &
         0xE0);
    rgb[3] = ((((g + yBR) > 0xffffff
                    ? 0xff
                    : ((g + yBR) <= 0xffff ? 0 : ((g + yBR) >> 16))) >>
               5) &
              0x07) |
             (((r + yBR) > 0xffffff
                   ? 0xff
                   : ((r + yBR) <= 0xffff ? 0 : ((r + yBR) >> 16))) &
              0xF8);
  }
}


x86 assembly (clang, -O0):
<move_420_block>:
push   %rbp
mov    %rsp,%rbp
sub    $0xb8,%rsp
mov    0x20(%rbp),%eax
mov    0x18(%rbp),%rax
mov    0x10(%rbp),%eax
mov    %edi,-0x4(%rbp)
mov    %esi,-0x8(%rbp)
mov    %edx,-0xc(%rbp)
mov    %ecx,-0x10(%rbp)
mov    %r8d,-0x14(%rbp)
mov    %r9d,-0x18(%rbp)
movl   $0x166e9,-0x1c(%rbp)
movl   $0xffffa7e7,-0x20(%rbp)
movl   $0xffff492f,-0x24(%rbp)
movl   $0x1c5a1,-0x28(%rbp)
movl   $0x10000,-0x2c(%rbp)
imul   $0xffffa7e7,-0x14(%rbp),%eax
imul   $0xffff492f,-0x18(%rbp),%ecx
add    %ecx,%eax
mov    %eax,-0x34(%rbp)
imul   $0x1c5a1,-0x14(%rbp),%eax
mov    %eax,-0x30(%rbp)
imul   $0x166e9,-0x18(%rbp),%eax
mov    %eax,-0x38(%rbp)
mov    -0x4(%rbp),%eax
shl    $0x10,%eax
mov    %eax,-0x4(%rbp)
mov    -0x8(%rbp),%eax
shl    $0x10,%eax
mov    %eax,-0x8(%rbp)
mov    -0xc(%rbp),%eax
shl    $0x10,%eax
mov    %eax,-0xc(%rbp)
mov    -0x10(%rbp),%eax
shl    $0x10,%eax
mov    %eax,-0x10(%rbp)
cmpl   $0x18,0x20(%rbp)
jne    1600 <move_420_block+0x500>
mov    -0x38(%rbp),%eax
add    -0x4(%rbp),%eax
cmp    $0xffffff,%eax
jle    11bf <move_420_block+0xbf>
mov    $0xff,%eax
mov    %eax,-0x3c(%rbp)
jmp    11ec <move_420_block+0xec>
mov    -0x38(%rbp),%eax
add    -0x4(%rbp),%eax
cmp    $0xffff,%eax
jg     11da <move_420_block+0xda>
xor    %eax,%eax
mov    %eax,-0x40(%rbp)
jmp    11e6 <move_420_block+0xe6>
mov    -0x38(%rbp),%eax
add    -0x4(%rbp),%eax
sar    $0x10,%eax
mov    %eax,-0x40(%rbp)
mov    -0x40(%rbp),%eax
mov    %eax,-0x3c(%rbp)
mov    -0x3c(%rbp),%eax
mov    %al,%cl
mov    0x18(%rbp),%rax
mov    %cl,(%rax)
mov    -0x34(%rbp),%eax
add    -0x4(%rbp),%eax
cmp    $0xffffff,%eax
jle    1215 <move_420_block+0x115>
mov    $0xff,%eax
mov    %eax,-0x44(%rbp)
jmp    1242 <move_420_block+0x142>
mov    -0x34(%rbp),%eax
add    -0x4(%rbp),%eax
cmp    $0xffff,%eax
jg     1230 <move_420_block+0x130>
xor    %eax,%eax
mov    %eax,-0x48(%rbp)
jmp    123c <move_420_block+0x13c>
mov    -0x34(%rbp),%eax
add    -0x4(%rbp),%eax
sar    $0x10,%eax
mov    %eax,-0x48(%rbp)
mov    -0x48(%rbp),%eax
mov    %eax,-0x44(%rbp)
mov    -0x44(%rbp),%eax
mov    %al,%cl
mov    0x18(%rbp),%rax
mov    %cl,0x1(%rax)
mov    -0x30(%rbp),%eax
add    -0x4(%rbp),%eax
cmp    $0xffffff,%eax
jle    126c <move_420_block+0x16c>
mov    $0xff,%eax
mov    %eax,-0x4c(%rbp)
jmp    1299 <move_420_block+0x199>
mov    -0x30(%rbp),%eax
add    -0x4(%rbp),%eax
cmp    $0xffff,%eax
jg     1287 <move_420_block+0x187>
xor    %eax,%eax
mov    %eax,-0x50(%rbp)
jmp    1293 <move_420_block+0x193>
mov    -0x30(%rbp),%eax
add    -0x4(%rbp),%eax
sar    $0x10,%eax
mov    %eax,-0x50(%rbp)
mov    -0x50(%rbp),%eax
mov    %eax,-0x4c(%rbp)
mov    -0x4c(%rbp),%eax
mov    %al,%cl
mov    0x18(%rbp),%rax
mov    %cl,0x2(%rax)
mov    -0x38(%rbp),%eax
add    -0x8(%rbp),%eax
cmp    $0xffffff,%eax
jle    12c3 <move_420_block+0x1c3>
mov    $0xff,%eax
mov    %eax,-0x54(%rbp)
jmp    12f0 <move_420_block+0x1f0>
mov    -0x38(%rbp),%eax
add    -0x8(%rbp),%eax
cmp    $0xffff,%eax
jg     12de <move_420_block+0x1de>
xor    %eax,%eax
mov    %eax,-0x58(%rbp)
jmp    12ea <move_420_block+0x1ea>
mov    -0x38(%rbp),%eax
add    -0x8(%rbp),%eax
sar    $0x10,%eax
mov    %eax,-0x58(%rbp)
mov    -0x58(%rbp),%eax
mov    %eax,-0x54(%rbp)
mov    -0x54(%rbp),%eax
mov    %al,%cl
mov    0x18(%rbp),%rax
mov    %cl,0x3(%rax)
mov    -0x34(%rbp),%eax
add    -0x8(%rbp),%eax
cmp    $0xffffff,%eax
jle    131a <move_420_block+0x21a>
mov    $0xff,%eax
mov    %eax,-0x5c(%rbp)
jmp    1347 <move_420_block+0x247>
mov    -0x34(%rbp),%eax
add    -0x8(%rbp),%eax
cmp    $0xffff,%eax
jg     1335 <move_420_block+0x235>
xor    %eax,%eax
mov    %eax,-0x60(%rbp)
jmp    1341 <move_420_block+0x241>
mov    -0x34(%rbp),%eax
add    -0x8(%rbp),%eax
sar    $0x10,%eax
mov    %eax,-0x60(%rbp)
mov    -0x60(%rbp),%eax
mov    %eax,-0x5c(%rbp)
mov    -0x5c(%rbp),%eax
mov    %al,%cl
mov    0x18(%rbp),%rax
mov    %cl,0x4(%rax)
mov    -0x30(%rbp),%eax
add    -0x8(%rbp),%eax
cmp    $0xffffff,%eax
jle    1371 <move_420_block+0x271>
mov    $0xff,%eax
mov    %eax,-0x64(%rbp)
jmp    139e <move_420_block+0x29e>
mov    -0x30(%rbp),%eax
add    -0x8(%rbp),%eax
cmp    $0xffff,%eax
jg     138c <move_420_block+0x28c>
xor    %eax,%eax
mov    %eax,-0x68(%rbp)
jmp    1398 <move_420_block+0x298>
mov    -0x30(%rbp),%eax
add    -0x8(%rbp),%eax
sar    $0x10,%eax
mov    %eax,-0x68(%rbp)
mov    -0x68(%rbp),%eax
mov    %eax,-0x64(%rbp)
mov    -0x64(%rbp),%eax
mov    %al,%cl
mov    0x18(%rbp),%rax
mov    %cl,0x5(%rax)
imul   $0x3,0x10(%rbp),%ecx
mov    0x18(%rbp),%rax
movslq %ecx,%rcx
add    %rcx,%rax
mov    %rax,0x18(%rbp)
mov    -0x38(%rbp),%eax
add    -0xc(%rbp),%eax
cmp    $0xffffff,%eax
jle    13da <move_420_block+0x2da>
mov    $0xff,%eax
mov    %eax,-0x6c(%rbp)
jmp    1407 <move_420_block+0x307>
mov    -0x38(%rbp),%eax
add    -0xc(%rbp),%eax
cmp    $0xffff,%eax
jg     13f5 <move_420_block+0x2f5>
xor    %eax,%eax
mov    %eax,-0x70(%rbp)
jmp    1401 <move_420_block+0x301>
mov    -0x38(%rbp),%eax
add    -0xc(%rbp),%eax
sar    $0x10,%eax
mov    %eax,-0x70(%rbp)
mov    -0x70(%rbp),%eax
mov    %eax,-0x6c(%rbp)
mov    -0x6c(%rbp),%eax
mov    %al,%cl
mov    0x18(%rbp),%rax
mov    %cl,(%rax)
mov    -0x34(%rbp),%eax
add    -0xc(%rbp),%eax
cmp    $0xffffff,%eax
jle    1430 <move_420_block+0x330>
mov    $0xff,%eax
mov    %eax,-0x74(%rbp)
jmp    145d <move_420_block+0x35d>
mov    -0x34(%rbp),%eax
add    -0xc(%rbp),%eax
cmp    $0xffff,%eax
jg     144b <move_420_block+0x34b>
xor    %eax,%eax
mov    %eax,-0x78(%rbp)
jmp    1457 <move_420_block+0x357>
mov    -0x34(%rbp),%eax
add    -0xc(%rbp),%eax
sar    $0x10,%eax
mov    %eax,-0x78(%rbp)
mov    -0x78(%rbp),%eax
mov    %eax,-0x74(%rbp)
mov    -0x74(%rbp),%eax
mov    %al,%cl
mov    0x18(%rbp),%rax
mov    %cl,0x1(%rax)
mov    -0x30(%rbp),%eax
add    -0xc(%rbp),%eax
cmp    $0xffffff,%eax
jle    1487 <move_420_block+0x387>
mov    $0xff,%eax
mov    %eax,-0x7c(%rbp)
jmp    14b4 <move_420_block+0x3b4>
mov    -0x30(%rbp),%eax
add    -0xc(%rbp),%eax
cmp    $0xffff,%eax
jg     14a2 <move_420_block+0x3a2>
xor    %eax,%eax
mov    %eax,-0x80(%rbp)
jmp    14ae <move_420_block+0x3ae>
mov    -0x30(%rbp),%eax
add    -0xc(%rbp),%eax
sar    $0x10,%eax
mov    %eax,-0x80(%rbp)
mov    -0x80(%rbp),%eax
mov    %eax,-0x7c(%rbp)
mov    -0x7c(%rbp),%eax
mov    %al,%cl
mov    0x18(%rbp),%rax
mov    %cl,0x2(%rax)
mov    -0x38(%rbp),%eax
add    -0x10(%rbp),%eax
cmp    $0xffffff,%eax
jle    14e1 <move_420_block+0x3e1>
mov    $0xff,%eax
mov    %eax,-0x84(%rbp)
jmp    151a <move_420_block+0x41a>
mov    -0x38(%rbp),%eax
add    -0x10(%rbp),%eax
cmp    $0xffff,%eax
jg     14ff <move_420_block+0x3ff>
xor    %eax,%eax
mov    %eax,-0x88(%rbp)
jmp    150e <move_420_block+0x40e>
mov    -0x38(%rbp),%eax
add    -0x10(%rbp),%eax
sar    $0x10,%eax
mov    %eax,-0x88(%rbp)
mov    -0x88(%rbp),%eax
mov    %eax,-0x84(%rbp)
mov    -0x84(%rbp),%eax
mov    %al,%cl
mov    0x18(%rbp),%rax
mov    %cl,0x3(%rax)
mov    -0x34(%rbp),%eax
add    -0x10(%rbp),%eax
cmp    $0xffffff,%eax
jle    154a <move_420_block+0x44a>
mov    $0xff,%eax
mov    %eax,-0x8c(%rbp)
jmp    1583 <move_420_block+0x483>
mov    -0x34(%rbp),%eax
add    -0x10(%rbp),%eax
cmp    $0xffff,%eax
jg     1568 <move_420_block+0x468>
xor    %eax,%eax
mov    %eax,-0x90(%rbp)
jmp    1577 <move_420_block+0x477>
mov    -0x34(%rbp),%eax
add    -0x10(%rbp),%eax
sar    $0x10,%eax
mov    %eax,-0x90(%rbp)
mov    -0x90(%rbp),%eax
mov    %eax,-0x8c(%rbp)
mov    -0x8c(%rbp),%eax
mov    %al,%cl
mov    0x18(%rbp),%rax
mov    %cl,0x4(%rax)
mov    -0x30(%rbp),%eax
add    -0x10(%rbp),%eax
cmp    $0xffffff,%eax
jle    15b3 <move_420_block+0x4b3>
mov    $0xff,%eax
mov    %eax,-0x94(%rbp)
jmp    15ec <move_420_block+0x4ec>
mov    -0x30(%rbp),%eax
add    -0x10(%rbp),%eax
cmp    $0xffff,%eax
jg     15d1 <move_420_block+0x4d1>
xor    %eax,%eax
mov    %eax,-0x98(%rbp)
jmp    15e0 <move_420_block+0x4e0>
mov    -0x30(%rbp),%eax
add    -0x10(%rbp),%eax
sar    $0x10,%eax
mov    %eax,-0x98(%rbp)
mov    -0x98(%rbp),%eax
mov    %eax,-0x94(%rbp)
mov    -0x94(%rbp),%eax
mov    %al,%cl
mov    0x18(%rbp),%rax
mov    %cl,0x5(%rax)
jmp    1d45 <move_420_block+0xc45>
cmpl   $0x10,0x20(%rbp)
jne    1d40 <move_420_block+0xc40>
mov    -0x38(%rbp),%eax
add    -0x4(%rbp),%eax
cmp    $0xffffff,%eax
jle    162b <move_420_block+0x52b>
mov    $0xff,%eax
mov    %eax,-0x9c(%rbp)
jmp    1664 <move_420_block+0x564>
mov    -0x38(%rbp),%eax
add    -0x4(%rbp),%eax
cmp    $0xffff,%eax
jg     1649 <move_420_block+0x549>
xor    %eax,%eax
mov    %eax,-0xa0(%rbp)
jmp    1658 <move_420_block+0x558>
mov    -0x38(%rbp),%eax
add    -0x4(%rbp),%eax
sar    $0x10,%eax
mov    %eax,-0xa0(%rbp)
mov    -0xa0(%rbp),%eax
mov    %eax,-0x9c(%rbp)
mov    -0x9c(%rbp),%eax
sar    $0x3,%eax
and    $0x1f,%eax
mov    %eax,-0xa4(%rbp)
mov    -0x34(%rbp),%eax
add    -0x4(%rbp),%eax
cmp    $0xffffff,%eax
jle    1697 <move_420_block+0x597>
mov    $0xff,%eax
mov    %eax,-0xa8(%rbp)
jmp    16d0 <move_420_block+0x5d0>
mov    -0x34(%rbp),%eax
add    -0x4(%rbp),%eax
cmp    $0xffff,%eax
jg     16b5 <move_420_block+0x5b5>
xor    %eax,%eax
mov    %eax,-0xac(%rbp)
jmp    16c4 <move_420_block+0x5c4>
mov    -0x34(%rbp),%eax
add    -0x4(%rbp),%eax
sar    $0x10,%eax
mov    %eax,-0xac(%rbp)
mov    -0xac(%rbp),%eax
mov    %eax,-0xa8(%rbp)
mov    -0xa4(%rbp),%eax
mov    -0xa8(%rbp),%ecx
shl    $0x3,%ecx
and    $0xe0,%ecx
or     %ecx,%eax
mov    %al,%cl
mov    0x18(%rbp),%rax
mov    %cl,(%rax)
mov    -0x34(%rbp),%eax
add    -0x4(%rbp),%eax
cmp    $0xffffff,%eax
jle    1710 <move_420_block+0x610>
mov    $0xff,%eax
mov    %eax,-0xb0(%rbp)
jmp    1749 <move_420_block+0x649>
mov    -0x34(%rbp),%eax
add    -0x4(%rbp),%eax
cmp    $0xffff,%eax
jg     172e <move_420_block+0x62e>
xor    %eax,%eax
mov    %eax,-0xb4(%rbp)
jmp    173d <move_420_block+0x63d>
mov    -0x34(%rbp),%eax
add    -0x4(%rbp),%eax
sar    $0x10,%eax
mov    %eax,-0xb4(%rbp)
mov    -0xb4(%rbp),%eax
mov    %eax,-0xb0(%rbp)
mov    -0xb0(%rbp),%eax
sar    $0x5,%eax
and    $0x7,%eax
mov    %eax,-0xb8(%rbp)
mov    -0x30(%rbp),%eax
add    -0x4(%rbp),%eax
cmp    $0xffffff,%eax
jle    177c <move_420_block+0x67c>
mov    $0xff,%eax
mov    %eax,-0xbc(%rbp)
jmp    17b5 <move_420_block+0x6b5>
mov    -0x30(%rbp),%eax
add    -0x4(%rbp),%eax
cmp    $0xffff,%eax
jg     179a <move_420_block+0x69a>
xor    %eax,%eax
mov    %eax,-0xc0(%rbp)
jmp    17a9 <move_420_block+0x6a9>
mov    -0x30(%rbp),%eax
add    -0x4(%rbp),%eax
sar    $0x10,%eax
mov    %eax,-0xc0(%rbp)
mov    -0xc0(%rbp),%eax
mov    %eax,-0xbc(%rbp)
mov    -0xb8(%rbp),%eax
mov    -0xbc(%rbp),%ecx
and    $0xf8,%ecx
or     %ecx,%eax
mov    %al,%cl
mov    0x18(%rbp),%rax
mov    %cl,0x1(%rax)
mov    -0x38(%rbp),%eax
add    -0x8(%rbp),%eax
cmp    $0xffffff,%eax
jle    17f3 <move_420_block+0x6f3>
mov    $0xff,%eax
mov    %eax,-0xc4(%rbp)
jmp    182c <move_420_block+0x72c>
mov    -0x38(%rbp),%eax
add    -0x8(%rbp),%eax
cmp    $0xffff,%eax
jg     1811 <move_420_block+0x711>
xor    %eax,%eax
mov    %eax,-0xc8(%rbp)
jmp    1820 <move_420_block+0x720>
mov    -0x38(%rbp),%eax
add    -0x8(%rbp),%eax
sar    $0x10,%eax
mov    %eax,-0xc8(%rbp)
mov    -0xc8(%rbp),%eax
mov    %eax,-0xc4(%rbp)
mov    -0xc4(%rbp),%eax
sar    $0x3,%eax
and    $0x1f,%eax
mov    %eax,-0xcc(%rbp)
mov    -0x34(%rbp),%eax
add    -0x8(%rbp),%eax
cmp    $0xffffff,%eax
jle    185f <move_420_block+0x75f>
mov    $0xff,%eax
mov    %eax,-0xd0(%rbp)
jmp    1898 <move_420_block+0x798>
mov    -0x34(%rbp),%eax
add    -0x8(%rbp),%eax
cmp    $0xffff,%eax
jg     187d <move_420_block+0x77d>
xor    %eax,%eax
mov    %eax,-0xd4(%rbp)
jmp    188c <move_420_block+0x78c>
mov    -0x34(%rbp),%eax
add    -0x8(%rbp),%eax
sar    $0x10,%eax
mov    %eax,-0xd4(%rbp)
mov    -0xd4(%rbp),%eax
mov    %eax,-0xd0(%rbp)
mov    -0xcc(%rbp),%eax
mov    -0xd0(%rbp),%ecx
shl    $0x3,%ecx
and    $0xe0,%ecx
or     %ecx,%eax
mov    %al,%cl
mov    0x18(%rbp),%rax
mov    %cl,0x2(%rax)
mov    -0x34(%rbp),%eax
add    -0x8(%rbp),%eax
cmp    $0xffffff,%eax
jle    18d9 <move_420_block+0x7d9>
mov    $0xff,%eax
mov    %eax,-0xd8(%rbp)
jmp    1912 <move_420_block+0x812>
mov    -0x34(%rbp),%eax
add    -0x8(%rbp),%eax
cmp    $0xffff,%eax
jg     18f7 <move_420_block+0x7f7>
xor    %eax,%eax
mov    %eax,-0xdc(%rbp)
jmp    1906 <move_420_block+0x806>
mov    -0x34(%rbp),%eax
add    -0x8(%rbp),%eax
sar    $0x10,%eax
mov    %eax,-0xdc(%rbp)
mov    -0xdc(%rbp),%eax
mov    %eax,-0xd8(%rbp)
mov    -0xd8(%rbp),%eax
sar    $0x5,%eax
and    $0x7,%eax
mov    %eax,-0xe0(%rbp)
mov    -0x30(%rbp),%eax
add    -0x8(%rbp),%eax
cmp    $0xffffff,%eax
jle    1945 <move_420_block+0x845>
mov    $0xff,%eax
mov    %eax,-0xe4(%rbp)
jmp    197e <move_420_block+0x87e>
mov    -0x30(%rbp),%eax
add    -0x8(%rbp),%eax
cmp    $0xffff,%eax
jg     1963 <move_420_block+0x863>
xor    %eax,%eax
mov    %eax,-0xe8(%rbp)
jmp    1972 <move_420_block+0x872>
mov    -0x30(%rbp),%eax
add    -0x8(%rbp),%eax
sar    $0x10,%eax
mov    %eax,-0xe8(%rbp)
mov    -0xe8(%rbp),%eax
mov    %eax,-0xe4(%rbp)
mov    -0xe0(%rbp),%eax
mov    -0xe4(%rbp),%ecx
and    $0xf8,%ecx
or     %ecx,%eax
mov    %al,%cl
mov    0x18(%rbp),%rax
mov    %cl,0x3(%rax)
mov    0x10(%rbp),%ecx
shl    $0x1,%ecx
mov    0x18(%rbp),%rax
movslq %ecx,%rcx
add    %rcx,%rax
mov    %rax,0x18(%rbp)
mov    -0x38(%rbp),%eax
add    -0xc(%rbp),%eax
cmp    $0xffffff,%eax
jle    19d0 <move_420_block+0x8d0>
mov    $0xff,%eax
mov    %eax,-0xec(%rbp)
jmp    1a09 <move_420_block+0x909>
mov    -0x38(%rbp),%eax
add    -0xc(%rbp),%eax
cmp    $0xffff,%eax
jg     19ee <move_420_block+0x8ee>
xor    %eax,%eax
mov    %eax,-0xf0(%rbp)
jmp    19fd <move_420_block+0x8fd>
mov    -0x38(%rbp),%eax
add    -0xc(%rbp),%eax
sar    $0x10,%eax
mov    %eax,-0xf0(%rbp)
mov    -0xf0(%rbp),%eax
mov    %eax,-0xec(%rbp)
mov    -0xec(%rbp),%eax
sar    $0x3,%eax
and    $0x1f,%eax
mov    %eax,-0xf4(%rbp)
mov    -0x34(%rbp),%eax
add    -0xc(%rbp),%eax
cmp    $0xffffff,%eax
jle    1a3c <move_420_block+0x93c>
mov    $0xff,%eax
mov    %eax,-0xf8(%rbp)
jmp    1a75 <move_420_block+0x975>
mov    -0x34(%rbp),%eax
add    -0xc(%rbp),%eax
cmp    $0xffff,%eax
jg     1a5a <move_420_block+0x95a>
xor    %eax,%eax
mov    %eax,-0xfc(%rbp)
jmp    1a69 <move_420_block+0x969>
mov    -0x34(%rbp),%eax
add    -0xc(%rbp),%eax
sar    $0x10,%eax
mov    %eax,-0xfc(%rbp)
mov    -0xfc(%rbp),%eax
mov    %eax,-0xf8(%rbp)
mov    -0xf4(%rbp),%eax
mov    -0xf8(%rbp),%ecx
shl    $0x3,%ecx
and    $0xe0,%ecx
or     %ecx,%eax
mov    %al,%cl
mov    0x18(%rbp),%rax
mov    %cl,(%rax)
mov    -0x34(%rbp),%eax
add    -0xc(%rbp),%eax
cmp    $0xffffff,%eax
jle    1ab5 <move_420_block+0x9b5>
mov    $0xff,%eax
mov    %eax,-0x100(%rbp)
jmp    1aee <move_420_block+0x9ee>
mov    -0x34(%rbp),%eax
add    -0xc(%rbp),%eax
cmp    $0xffff,%eax
jg     1ad3 <move_420_block+0x9d3>
xor    %eax,%eax
mov    %eax,-0x104(%rbp)
jmp    1ae2 <move_420_block+0x9e2>
mov    -0x34(%rbp),%eax
add    -0xc(%rbp),%eax
sar    $0x10,%eax
mov    %eax,-0x104(%rbp)
mov    -0x104(%rbp),%eax
mov    %eax,-0x100(%rbp)
mov    -0x100(%rbp),%eax
sar    $0x5,%eax
and    $0x7,%eax
mov    %eax,-0x108(%rbp)
mov    -0x30(%rbp),%eax
add    -0xc(%rbp),%eax
cmp    $0xffffff,%eax
jle    1b21 <move_420_block+0xa21>
mov    $0xff,%eax
mov    %eax,-0x10c(%rbp)
jmp    1b5a <move_420_block+0xa5a>
mov    -0x30(%rbp),%eax
add    -0xc(%rbp),%eax
cmp    $0xffff,%eax
jg     1b3f <move_420_block+0xa3f>
xor    %eax,%eax
mov    %eax,-0x110(%rbp)
jmp    1b4e <move_420_block+0xa4e>
mov    -0x30(%rbp),%eax
add    -0xc(%rbp),%eax
sar    $0x10,%eax
mov    %eax,-0x110(%rbp)
mov    -0x110(%rbp),%eax
mov    %eax,-0x10c(%rbp)
mov    -0x108(%rbp),%eax
mov    -0x10c(%rbp),%ecx
and    $0xf8,%ecx
or     %ecx,%eax
mov    %al,%cl
mov    0x18(%rbp),%rax
mov    %cl,0x1(%rax)
mov    -0x38(%rbp),%eax
add    -0x10(%rbp),%eax
cmp    $0xffffff,%eax
jle    1b98 <move_420_block+0xa98>
mov    $0xff,%eax
mov    %eax,-0x114(%rbp)
jmp    1bd1 <move_420_block+0xad1>
mov    -0x38(%rbp),%eax
add    -0x10(%rbp),%eax
cmp    $0xffff,%eax
jg     1bb6 <move_420_block+0xab6>
xor    %eax,%eax
mov    %eax,-0x118(%rbp)
jmp    1bc5 <move_420_block+0xac5>
mov    -0x38(%rbp),%eax
add    -0x10(%rbp),%eax
sar    $0x10,%eax
mov    %eax,-0x118(%rbp)
mov    -0x118(%rbp),%eax
mov    %eax,-0x114(%rbp)
mov    -0x114(%rbp),%eax
sar    $0x3,%eax
and    $0x1f,%eax
mov    %eax,-0x11c(%rbp)
mov    -0x34(%rbp),%eax
add    -0x10(%rbp),%eax
cmp    $0xffffff,%eax
jle    1c04 <move_420_block+0xb04>
mov    $0xff,%eax
mov    %eax,-0x120(%rbp)
jmp    1c3d <move_420_block+0xb3d>
mov    -0x34(%rbp),%eax
add    -0x10(%rbp),%eax
cmp    $0xffff,%eax
jg     1c22 <move_420_block+0xb22>
xor    %eax,%eax
mov    %eax,-0x124(%rbp)
jmp    1c31 <move_420_block+0xb31>
mov    -0x34(%rbp),%eax
add    -0x10(%rbp),%eax
sar    $0x10,%eax
mov    %eax,-0x124(%rbp)
mov    -0x124(%rbp),%eax
mov    %eax,-0x120(%rbp)
mov    -0x11c(%rbp),%eax
mov    -0x120(%rbp),%ecx
shl    $0x3,%ecx
and    $0xe0,%ecx
or     %ecx,%eax
mov    %al,%cl
mov    0x18(%rbp),%rax
mov    %cl,0x2(%rax)
mov    -0x34(%rbp),%eax
add    -0x10(%rbp),%eax
cmp    $0xffffff,%eax
jle    1c7e <move_420_block+0xb7e>
mov    $0xff,%eax
mov    %eax,-0x128(%rbp)
jmp    1cb7 <move_420_block+0xbb7>
mov    -0x34(%rbp),%eax
add    -0x10(%rbp),%eax
cmp    $0xffff,%eax
jg     1c9c <move_420_block+0xb9c>
xor    %eax,%eax
mov    %eax,-0x12c(%rbp)
jmp    1cab <move_420_block+0xbab>
mov    -0x34(%rbp),%eax
add    -0x10(%rbp),%eax
sar    $0x10,%eax
mov    %eax,-0x12c(%rbp)
mov    -0x12c(%rbp),%eax
mov    %eax,-0x128(%rbp)
mov    -0x128(%rbp),%eax
sar    $0x5,%eax
and    $0x7,%eax
mov    %eax,-0x130(%rbp)
mov    -0x30(%rbp),%eax
add    -0x10(%rbp),%eax
cmp    $0xffffff,%eax
jle    1cea <move_420_block+0xbea>
mov    $0xff,%eax
mov    %eax,-0x134(%rbp)
jmp    1d23 <move_420_block+0xc23>
mov    -0x30(%rbp),%eax
add    -0x10(%rbp),%eax
cmp    $0xffff,%eax
jg     1d08 <move_420_block+0xc08>
xor    %eax,%eax
mov    %eax,-0x138(%rbp)
jmp    1d17 <move_420_block+0xc17>
mov    -0x30(%rbp),%eax
add    -0x10(%rbp),%eax
sar    $0x10,%eax
mov    %eax,-0x138(%rbp)
mov    -0x138(%rbp),%eax
mov    %eax,-0x134(%rbp)
mov    -0x130(%rbp),%eax
mov    -0x134(%rbp),%ecx
and    $0xf8,%ecx
or     %ecx,%eax
mov    %al,%cl
mov    0x18(%rbp),%rax
mov    %cl,0x3(%rax)
jmp    1d45 <move_420_block+0xc45>
add    $0xb8,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<move_420_block>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
mov    0x48(%rsp),%eax
mov    0x40(%rsp),%r12
imul   $0xffffa7e7,%r8d,%ebp
imul   $0xffff492f,%r9d,%r15d
add    %ebp,%r15d
imul   $0x1c5a1,%r8d,%r8d
imul   $0x166e9,%r9d,%r9d
shl    $0x10,%edi
shl    $0x10,%esi
shl    $0x10,%edx
shl    $0x10,%ecx
cmp    $0x10,%eax
je     12fa <move_420_block+0x1fa>
cmp    $0x18,%eax
jne    1573 <move_420_block+0x473>
lea    (%r9,%rdi,1),%ebp
mov    %ebp,%eax
shr    $0x10,%eax
xor    %r10d,%r10d
cmp    $0x10000,%ebp
cmovl  %r10d,%eax
cmp    $0x1000000,%ebp
mov    $0xff,%r11d
cmovge %r11d,%eax
mov    %al,(%r12)
lea    (%r15,%rdi,1),%ebx
mov    %ebx,%eax
shr    $0x10,%eax
cmp    $0x10000,%ebx
cmovl  %r10d,%eax
cmp    $0x1000000,%ebx
cmovge %r11d,%eax
add    %r8d,%edi
mov    %edi,%ebx
shr    $0x10,%ebx
cmp    $0x10000,%edi
cmovl  %r10d,%ebx
cmp    $0x1000000,%edi
cmovge %r11d,%ebx
lea    (%r9,%rsi,1),%ebp
mov    %ebp,%edi
shr    $0x10,%edi
cmp    $0x10000,%ebp
cmovl  %r10d,%edi
mov    %al,0x1(%r12)
cmp    $0x1000000,%ebp
cmovge %r11d,%edi
mov    %bl,0x2(%r12)
mov    %dil,0x3(%r12)
lea    (%r15,%rsi,1),%eax
mov    %eax,%edi
shr    $0x10,%edi
cmp    $0x10000,%eax
cmovl  %r10d,%edi
cmp    $0x1000000,%eax
cmovge %r11d,%edi
mov    %dil,0x4(%r12)
add    %r8d,%esi
mov    %esi,%eax
shr    $0x10,%eax
cmp    $0x10000,%esi
cmovl  %r10d,%eax
cmp    $0x1000000,%esi
cmovge %r11d,%eax
mov    %al,0x5(%r12)
movslq 0x38(%rsp),%rax
lea    (%rax,%rax,2),%rsi
lea    (%r9,%rdx,1),%eax
mov    %eax,%edi
shr    $0x10,%edi
cmp    $0x10000,%eax
cmovl  %r10d,%edi
cmp    $0x1000000,%eax
cmovge %r11d,%edi
mov    %dil,(%r12,%rsi,1)
lea    (%r15,%rdx,1),%eax
mov    %eax,%edi
shr    $0x10,%edi
cmp    $0x10000,%eax
cmovl  %r10d,%edi
cmp    $0x1000000,%eax
cmovge %r11d,%edi
add    %r8d,%edx
mov    %edx,%eax
shr    $0x10,%eax
cmp    $0x10000,%edx
cmovl  %r10d,%eax
cmp    $0x1000000,%edx
cmovge %r11d,%eax
add    %ecx,%r9d
mov    %r9d,%edx
shr    $0x10,%edx
cmp    $0x10000,%r9d
cmovl  %r10d,%edx
mov    %dil,0x1(%r12,%rsi,1)
cmp    $0x1000000,%r9d
cmovge %r11d,%edx
mov    %al,0x2(%r12,%rsi,1)
mov    %dl,0x3(%r12,%rsi,1)
add    %ecx,%r15d
mov    %r15d,%eax
shr    $0x10,%eax
cmp    $0x10000,%r15d
cmovl  %r10d,%eax
cmp    $0x1000000,%r15d
cmovge %r11d,%eax
mov    %al,0x4(%r12,%rsi,1)
add    %ecx,%r8d
mov    %r8d,%eax
shr    $0x10,%eax
cmp    $0x10000,%r8d
cmovl  %r10d,%eax
cmp    $0x1000000,%r8d
cmovge %r11d,%eax
mov    %al,0x5(%r12,%rsi,1)
jmp    1573 <move_420_block+0x473>
lea    (%r9,%rdi,1),%eax
mov    %eax,%ebx
shr    $0x13,%ebx
and    $0x1f,%ebx
cmp    $0x10000,%eax
mov    $0x10000,%r13d
cmovl  %r13d,%ebx
cmp    $0x1000000,%eax
mov    $0x1f,%eax
cmovge %eax,%ebx
lea    (%r15,%rdi,1),%r10d
mov    %r10d,%r12d
shr    $0xd,%r12d
and    $0xe0,%r12d
mov    %r10d,%eax
shr    $0x15,%eax
and    $0x7,%eax
cmp    $0x10000,%r10d
cmovl  %r13d,%r12d
cmovl  %r13d,%eax
cmp    $0x1000000,%r10d
mov    $0xe0,%ebp
cmovge %ebp,%r12d
mov    $0x7,%ebp
cmovge %ebp,%eax
or     %ebx,%r12d
add    %r8d,%edi
mov    %edi,%ebx
shr    $0x10,%ebx
and    $0xf8,%ebx
cmp    $0x10000,%edi
cmovl  %r13d,%ebx
cmp    $0x1000000,%edi
mov    $0xf8,%edi
cmovge %edi,%ebx
or     %eax,%ebx
lea    (%r9,%rsi,1),%r10d
mov    %r10d,%eax
shr    $0x13,%eax
and    $0x1f,%eax
cmp    $0x10000,%r10d
cmovl  %r13d,%eax
cmp    $0x1000000,%r10d
mov    $0x1f,%ebp
cmovge %ebp,%eax
lea    (%r15,%rsi,1),%r10d
mov    %r10d,%r11d
shr    $0xd,%r11d
and    $0xe0,%r11d
mov    %r10d,%r14d
shr    $0x15,%r14d
and    $0x7,%r14d
cmp    $0x10000,%r10d
cmovl  %r13d,%r11d
cmovl  %r13d,%r14d
cmp    $0x1000000,%r10d
mov    $0xe0,%edi
cmovge %edi,%r11d
mov    $0x7,%edi
cmovge %edi,%r14d
or     %eax,%r11d
add    %r8d,%esi
mov    %esi,%r10d
shr    $0x10,%r10d
and    $0xf8,%r10d
cmp    $0x10000,%esi
cmovl  %r13d,%r10d
cmp    $0x1000000,%esi
mov    $0xf8,%eax
cmovge %eax,%r10d
mov    0x40(%rsp),%rdi
mov    %r12b,(%rdi)
or     %r14d,%r10d
lea    (%r9,%rdx,1),%esi
mov    %esi,%eax
shr    $0x13,%eax
and    $0x1f,%eax
cmp    $0x10000,%esi
cmovl  %r13d,%eax
mov    %rdi,%r14
mov    %bl,0x1(%rdi)
cmp    $0x1000000,%esi
cmovge %ebp,%eax
lea    (%r15,%rdx,1),%ebp
mov    %ebp,%esi
shr    $0xd,%esi
and    $0xe0,%esi
mov    %ebp,%ebx
shr    $0x15,%ebx
and    $0x7,%ebx
cmp    $0x10000,%ebp
cmovl  %r13d,%esi
mov    %r11b,0x2(%rdi)
cmovl  %r13d,%ebx
cmp    $0x1000000,%ebp
mov    $0xe0,%edi
cmovge %edi,%esi
mov    $0xe0,%edi
mov    $0x7,%ebp
cmovge %ebp,%ebx
mov    $0x7,%r12d
mov    %r10b,0x3(%r14)
mov    %r14,%r11
or     %eax,%esi
add    %r8d,%edx
mov    %edx,%ebp
shr    $0x10,%ebp
and    $0xf8,%ebp
cmp    $0x10000,%edx
cmovl  %r13d,%ebp
cmp    $0x1000000,%edx
movslq 0x38(%rsp),%r10
mov    $0xf8,%r14d
cmovge %r14d,%ebp
or     %ebx,%ebp
add    %ecx,%r9d
mov    %r9d,%eax
shr    $0x13,%eax
and    $0x1f,%eax
cmp    $0x10000,%r9d
cmovl  %r13d,%eax
cmp    $0x1000000,%r9d
mov    $0x1f,%edx
cmovge %edx,%eax
add    %ecx,%r15d
mov    %r15d,%edx
shr    $0xd,%edx
and    $0xe0,%edx
mov    %r15d,%ebx
shr    $0x15,%ebx
and    $0x7,%ebx
cmp    $0x10000,%r15d
cmovl  %r13d,%edx
cmovl  %r13d,%ebx
mov    %sil,(%r11,%r10,2)
cmp    $0x1000000,%r15d
cmovge %edi,%edx
mov    %r11,%rsi
mov    %bpl,0x1(%r11,%r10,2)
cmovge %r12d,%ebx
or     %eax,%edx
mov    %dl,0x2(%r11,%r10,2)
add    %ecx,%r8d
mov    %r8d,%eax
shr    $0x10,%eax
and    $0xf8,%eax
cmp    $0x10000,%r8d
cmovl  %r13d,%eax
cmp    $0x1000000,%r8d
cmovge %r14d,%eax
or     %ebx,%eax
mov    %al,0x3(%r11,%r10,2)
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

LLVM IR (-O0):
define void @move_420_block(i32 %0, i32 %1, i32 %2, i32 %3, i32 %4, i32 %5, i32 %6, i8* %7, i32 %8) {
%10 = alloca i32
%11 = alloca i32
%12 = alloca i32
%13 = alloca i32
%14 = alloca i32
%15 = alloca i32
%16 = alloca i32
%17 = alloca i8*
%18 = alloca i32
%19 = alloca i32
%20 = alloca i32
%21 = alloca i32
%22 = alloca i32
%23 = alloca i32
%24 = alloca i32
%25 = alloca i32
%26 = alloca i32
store i32 %0, i32* %10
store i32 %1, i32* %11
store i32 %2, i32* %12
store i32 %3, i32* %13
store i32 %4, i32* %14
store i32 %5, i32* %15
store i32 %6, i32* %16
store i8* %7, i8** %17
store i32 %8, i32* %18
store i32 91881, i32* %19
store i32 -22553, i32* %20
store i32 -46801, i32* %21
store i32 116129, i32* %22
store i32 65536, i32* %23
%27 = load i32, i32* %14
%28 = mul nsw i32 -22553, %27
%29 = load i32, i32* %15
%30 = mul nsw i32 -46801, %29
%31 = add nsw i32 %28, %30
store i32 %31, i32* %25
%32 = load i32, i32* %14
%33 = mul nsw i32 116129, %32
store i32 %33, i32* %24
%34 = load i32, i32* %15
%35 = mul nsw i32 91881, %34
store i32 %35, i32* %26
%36 = load i32, i32* %10
%37 = mul nsw i32 %36, 65536
store i32 %37, i32* %10
%38 = load i32, i32* %11
%39 = mul nsw i32 %38, 65536
store i32 %39, i32* %11
%40 = load i32, i32* %12
%41 = mul nsw i32 %40, 65536
store i32 %41, i32* %12
%42 = load i32, i32* %13
%43 = mul nsw i32 %42, 65536
store i32 %43, i32* %13
%44 = load i32, i32* %18
%45 = icmp eq i32 %44, 24
br i1 %45, label %46, label %328
46: ; preds = %9
%47 = load i32, i32* %26
%48 = load i32, i32* %10
%49 = add nsw i32 %47, %48
%50 = icmp sgt i32 %49, 16777215
br i1 %50, label %51, label %52
51: ; preds = %46
br label %65
52: ; preds = %46
%53 = load i32, i32* %26
%54 = load i32, i32* %10
%55 = add nsw i32 %53, %54
%56 = icmp sle i32 %55, 65535
br i1 %56, label %57, label %58
57: ; preds = %52
br label %63
58: ; preds = %52
%59 = load i32, i32* %26
%60 = load i32, i32* %10
%61 = add nsw i32 %59, %60
%62 = ashr i32 %61, 16
br label %63
63: ; preds = %58, %57
%64 = phi i32 [ 0, %57 ], [ %62, %58 ]
br label %65
65: ; preds = %63, %51
%66 = phi i32 [ 255, %51 ], [ %64, %63 ]
%67 = trunc i32 %66 to i8
%68 = load i8*, i8** %17
%69 = getelementptr inbounds i8, i8* %68, i64 0
store i8 %67, i8* %69
%70 = load i32, i32* %25
%71 = load i32, i32* %10
%72 = add nsw i32 %70, %71
%73 = icmp sgt i32 %72, 16777215
br i1 %73, label %74, label %75
74: ; preds = %65
br label %88
75: ; preds = %65
%76 = load i32, i32* %25
%77 = load i32, i32* %10
%78 = add nsw i32 %76, %77
%79 = icmp sle i32 %78, 65535
br i1 %79, label %80, label %81
80: ; preds = %75
br label %86
81: ; preds = %75
%82 = load i32, i32* %25
%83 = load i32, i32* %10
%84 = add nsw i32 %82, %83
%85 = ashr i32 %84, 16
br label %86
86: ; preds = %81, %80
%87 = phi i32 [ 0, %80 ], [ %85, %81 ]
br label %88
88: ; preds = %86, %74
%89 = phi i32 [ 255, %74 ], [ %87, %86 ]
%90 = trunc i32 %89 to i8
%91 = load i8*, i8** %17
%92 = getelementptr inbounds i8, i8* %91, i64 1
store i8 %90, i8* %92
%93 = load i32, i32* %24
%94 = load i32, i32* %10
%95 = add nsw i32 %93, %94
%96 = icmp sgt i32 %95, 16777215
br i1 %96, label %97, label %98
97: ; preds = %88
br label %111
98: ; preds = %88
%99 = load i32, i32* %24
%100 = load i32, i32* %10
%101 = add nsw i32 %99, %100
%102 = icmp sle i32 %101, 65535
br i1 %102, label %103, label %104
103: ; preds = %98
br label %109
104: ; preds = %98
%105 = load i32, i32* %24
%106 = load i32, i32* %10
%107 = add nsw i32 %105, %106
%108 = ashr i32 %107, 16
br label %109
109: ; preds = %104, %103
%110 = phi i32 [ 0, %103 ], [ %108, %104 ]
br label %111
111: ; preds = %109, %97
%112 = phi i32 [ 255, %97 ], [ %110, %109 ]
%113 = trunc i32 %112 to i8
%114 = load i8*, i8** %17
%115 = getelementptr inbounds i8, i8* %114, i64 2
store i8 %113, i8* %115
%116 = load i32, i32* %26
%117 = load i32, i32* %11
%118 = add nsw i32 %116, %117
%119 = icmp sgt i32 %118, 16777215
br i1 %119, label %120, label %121
120: ; preds = %111
br label %134
121: ; preds = %111
%122 = load i32, i32* %26
%123 = load i32, i32* %11
%124 = add nsw i32 %122, %123
%125 = icmp sle i32 %124, 65535
br i1 %125, label %126, label %127
126: ; preds = %121
br label %132
127: ; preds = %121
%128 = load i32, i32* %26
%129 = load i32, i32* %11
%130 = add nsw i32 %128, %129
%131 = ashr i32 %130, 16
br label %132
132: ; preds = %127, %126
%133 = phi i32 [ 0, %126 ], [ %131, %127 ]
br label %134
134: ; preds = %132, %120
%135 = phi i32 [ 255, %120 ], [ %133, %132 ]
%136 = trunc i32 %135 to i8
%137 = load i8*, i8** %17
%138 = getelementptr inbounds i8, i8* %137, i64 3
store i8 %136, i8* %138
%139 = load i32, i32* %25
%140 = load i32, i32* %11
%141 = add nsw i32 %139, %140
%142 = icmp sgt i32 %141, 16777215
br i1 %142, label %143, label %144
143: ; preds = %134
br label %157
144: ; preds = %134
%145 = load i32, i32* %25
%146 = load i32, i32* %11
%147 = add nsw i32 %145, %146
%148 = icmp sle i32 %147, 65535
br i1 %148, label %149, label %150
149: ; preds = %144
br label %155
150: ; preds = %144
%151 = load i32, i32* %25
%152 = load i32, i32* %11
%153 = add nsw i32 %151, %152
%154 = ashr i32 %153, 16
br label %155
155: ; preds = %150, %149
%156 = phi i32 [ 0, %149 ], [ %154, %150 ]
br label %157
157: ; preds = %155, %143
%158 = phi i32 [ 255, %143 ], [ %156, %155 ]
%159 = trunc i32 %158 to i8
%160 = load i8*, i8** %17
%161 = getelementptr inbounds i8, i8* %160, i64 4
store i8 %159, i8* %161
%162 = load i32, i32* %24
%163 = load i32, i32* %11
%164 = add nsw i32 %162, %163
%165 = icmp sgt i32 %164, 16777215
br i1 %165, label %166, label %167
166: ; preds = %157
br label %180
167: ; preds = %157
%168 = load i32, i32* %24
%169 = load i32, i32* %11
%170 = add nsw i32 %168, %169
%171 = icmp sle i32 %170, 65535
br i1 %171, label %172, label %173
172: ; preds = %167
br label %178
173: ; preds = %167
%174 = load i32, i32* %24
%175 = load i32, i32* %11
%176 = add nsw i32 %174, %175
%177 = ashr i32 %176, 16
br label %178
178: ; preds = %173, %172
%179 = phi i32 [ 0, %172 ], [ %177, %173 ]
br label %180
180: ; preds = %178, %166
%181 = phi i32 [ 255, %166 ], [ %179, %178 ]
%182 = trunc i32 %181 to i8
%183 = load i8*, i8** %17
%184 = getelementptr inbounds i8, i8* %183, i64 5
store i8 %182, i8* %184
%185 = load i32, i32* %16
%186 = mul nsw i32 3, %185
%187 = load i8*, i8** %17
%188 = sext i32 %186 to i64
%189 = getelementptr inbounds i8, i8* %187, i64 %188
store i8* %189, i8** %17
%190 = load i32, i32* %26
%191 = load i32, i32* %12
%192 = add nsw i32 %190, %191
%193 = icmp sgt i32 %192, 16777215
br i1 %193, label %194, label %195
194: ; preds = %180
br label %208
195: ; preds = %180
%196 = load i32, i32* %26
%197 = load i32, i32* %12
%198 = add nsw i32 %196, %197
%199 = icmp sle i32 %198, 65535
br i1 %199, label %200, label %201
200: ; preds = %195
br label %206
201: ; preds = %195
%202 = load i32, i32* %26
%203 = load i32, i32* %12
%204 = add nsw i32 %202, %203
%205 = ashr i32 %204, 16
br label %206
206: ; preds = %201, %200
%207 = phi i32 [ 0, %200 ], [ %205, %201 ]
br label %208
208: ; preds = %206, %194
%209 = phi i32 [ 255, %194 ], [ %207, %206 ]
%210 = trunc i32 %209 to i8
%211 = load i8*, i8** %17
%212 = getelementptr inbounds i8, i8* %211, i64 0
store i8 %210, i8* %212
%213 = load i32, i32* %25
%214 = load i32, i32* %12
%215 = add nsw i32 %213, %214
%216 = icmp sgt i32 %215, 16777215
br i1 %216, label %217, label %218
217: ; preds = %208
br label %231
218: ; preds = %208
%219 = load i32, i32* %25
%220 = load i32, i32* %12
%221 = add nsw i32 %219, %220
%222 = icmp sle i32 %221, 65535
br i1 %222, label %223, label %224
223: ; preds = %218
br label %229
224: ; preds = %218
%225 = load i32, i32* %25
%226 = load i32, i32* %12
%227 = add nsw i32 %225, %226
%228 = ashr i32 %227, 16
br label %229
229: ; preds = %224, %223
%230 = phi i32 [ 0, %223 ], [ %228, %224 ]
br label %231
231: ; preds = %229, %217
%232 = phi i32 [ 255, %217 ], [ %230, %229 ]
%233 = trunc i32 %232 to i8
%234 = load i8*, i8** %17
%235 = getelementptr inbounds i8, i8* %234, i64 1
store i8 %233, i8* %235
%236 = load i32, i32* %24
%237 = load i32, i32* %12
%238 = add nsw i32 %236, %237
%239 = icmp sgt i32 %238, 16777215
br i1 %239, label %240, label %241
240: ; preds = %231
br label %254
241: ; preds = %231
%242 = load i32, i32* %24
%243 = load i32, i32* %12
%244 = add nsw i32 %242, %243
%245 = icmp sle i32 %244, 65535
br i1 %245, label %246, label %247
246: ; preds = %241
br label %252
247: ; preds = %241
%248 = load i32, i32* %24
%249 = load i32, i32* %12
%250 = add nsw i32 %248, %249
%251 = ashr i32 %250, 16
br label %252
252: ; preds = %247, %246
%253 = phi i32 [ 0, %246 ], [ %251, %247 ]
br label %254
254: ; preds = %252, %240
%255 = phi i32 [ 255, %240 ], [ %253, %252 ]
%256 = trunc i32 %255 to i8
%257 = load i8*, i8** %17
%258 = getelementptr inbounds i8, i8* %257, i64 2
store i8 %256, i8* %258
%259 = load i32, i32* %26
%260 = load i32, i32* %13
%261 = add nsw i32 %259, %260
%262 = icmp sgt i32 %261, 16777215
br i1 %262, label %263, label %264
263: ; preds = %254
br label %277
264: ; preds = %254
%265 = load i32, i32* %26
%266 = load i32, i32* %13
%267 = add nsw i32 %265, %266
%268 = icmp sle i32 %267, 65535
br i1 %268, label %269, label %270
269: ; preds = %264
br label %275
270: ; preds = %264
%271 = load i32, i32* %26
%272 = load i32, i32* %13
%273 = add nsw i32 %271, %272
%274 = ashr i32 %273, 16
br label %275
275: ; preds = %270, %269
%276 = phi i32 [ 0, %269 ], [ %274, %270 ]
br label %277
277: ; preds = %275, %263
%278 = phi i32 [ 255, %263 ], [ %276, %275 ]
%279 = trunc i32 %278 to i8
%280 = load i8*, i8** %17
%281 = getelementptr inbounds i8, i8* %280, i64 3
store i8 %279, i8* %281
%282 = load i32, i32* %25
%283 = load i32, i32* %13
%284 = add nsw i32 %282, %283
%285 = icmp sgt i32 %284, 16777215
br i1 %285, label %286, label %287
286: ; preds = %277
br label %300
287: ; preds = %277
%288 = load i32, i32* %25
%289 = load i32, i32* %13
%290 = add nsw i32 %288, %289
%291 = icmp sle i32 %290, 65535
br i1 %291, label %292, label %293
292: ; preds = %287
br label %298
293: ; preds = %287
%294 = load i32, i32* %25
%295 = load i32, i32* %13
%296 = add nsw i32 %294, %295
%297 = ashr i32 %296, 16
br label %298
298: ; preds = %293, %292
%299 = phi i32 [ 0, %292 ], [ %297, %293 ]
br label %300
300: ; preds = %298, %286
%301 = phi i32 [ 255, %286 ], [ %299, %298 ]
%302 = trunc i32 %301 to i8
%303 = load i8*, i8** %17
%304 = getelementptr inbounds i8, i8* %303, i64 4
store i8 %302, i8* %304
%305 = load i32, i32* %24
%306 = load i32, i32* %13
%307 = add nsw i32 %305, %306
%308 = icmp sgt i32 %307, 16777215
br i1 %308, label %309, label %310
309: ; preds = %300
br label %323
310: ; preds = %300
%311 = load i32, i32* %24
%312 = load i32, i32* %13
%313 = add nsw i32 %311, %312
%314 = icmp sle i32 %313, 65535
br i1 %314, label %315, label %316
315: ; preds = %310
br label %321
316: ; preds = %310
%317 = load i32, i32* %24
%318 = load i32, i32* %13
%319 = add nsw i32 %317, %318
%320 = ashr i32 %319, 16
br label %321
321: ; preds = %316, %315
%322 = phi i32 [ 0, %315 ], [ %320, %316 ]
br label %323
323: ; preds = %321, %309
%324 = phi i32 [ 255, %309 ], [ %322, %321 ]
%325 = trunc i32 %324 to i8
%326 = load i8*, i8** %17
%327 = getelementptr inbounds i8, i8* %326, i64 5
store i8 %325, i8* %327
br label %718
328: ; preds = %9
%329 = load i32, i32* %18
%330 = icmp eq i32 %329, 16
br i1 %330, label %331, label %717
331: ; preds = %328
%332 = load i32, i32* %26
%333 = load i32, i32* %10
%334 = add nsw i32 %332, %333
%335 = icmp sgt i32 %334, 16777215
br i1 %335, label %336, label %337
336: ; preds = %331
br label %350
337: ; preds = %331
%338 = load i32, i32* %26
%339 = load i32, i32* %10
%340 = add nsw i32 %338, %339
%341 = icmp sle i32 %340, 65535
br i1 %341, label %342, label %343
342: ; preds = %337
br label %348
343: ; preds = %337
%344 = load i32, i32* %26
%345 = load i32, i32* %10
%346 = add nsw i32 %344, %345
%347 = ashr i32 %346, 16
br label %348
348: ; preds = %343, %342
%349 = phi i32 [ 0, %342 ], [ %347, %343 ]
br label %350
350: ; preds = %348, %336
%351 = phi i32 [ 255, %336 ], [ %349, %348 ]
%352 = ashr i32 %351, 3
%353 = and i32 %352, 31
%354 = load i32, i32* %25
%355 = load i32, i32* %10
%356 = add nsw i32 %354, %355
%357 = icmp sgt i32 %356, 16777215
br i1 %357, label %358, label %359
358: ; preds = %350
br label %372
359: ; preds = %350
%360 = load i32, i32* %25
%361 = load i32, i32* %10
%362 = add nsw i32 %360, %361
%363 = icmp sle i32 %362, 65535
br i1 %363, label %364, label %365
364: ; preds = %359
br label %370
365: ; preds = %359
%366 = load i32, i32* %25
%367 = load i32, i32* %10
%368 = add nsw i32 %366, %367
%369 = ashr i32 %368, 16
br label %370
370: ; preds = %365, %364
%371 = phi i32 [ 0, %364 ], [ %369, %365 ]
br label %372
372: ; preds = %370, %358
%373 = phi i32 [ 255, %358 ], [ %371, %370 ]
%374 = shl i32 %373, 3
%375 = and i32 %374, 224
%376 = or i32 %353, %375
%377 = trunc i32 %376 to i8
%378 = load i8*, i8** %17
%379 = getelementptr inbounds i8, i8* %378, i64 0
store i8 %377, i8* %379
%380 = load i32, i32* %25
%381 = load i32, i32* %10
%382 = add nsw i32 %380, %381
%383 = icmp sgt i32 %382, 16777215
br i1 %383, label %384, label %385
384: ; preds = %372
br label %398
385: ; preds = %372
%386 = load i32, i32* %25
%387 = load i32, i32* %10
%388 = add nsw i32 %386, %387
%389 = icmp sle i32 %388, 65535
br i1 %389, label %390, label %391
390: ; preds = %385
br label %396
391: ; preds = %385
%392 = load i32, i32* %25
%393 = load i32, i32* %10
%394 = add nsw i32 %392, %393
%395 = ashr i32 %394, 16
br label %396
396: ; preds = %391, %390
%397 = phi i32 [ 0, %390 ], [ %395, %391 ]
br label %398
398: ; preds = %396, %384
%399 = phi i32 [ 255, %384 ], [ %397, %396 ]
%400 = ashr i32 %399, 5
%401 = and i32 %400, 7
%402 = load i32, i32* %24
%403 = load i32, i32* %10
%404 = add nsw i32 %402, %403
%405 = icmp sgt i32 %404, 16777215
br i1 %405, label %406, label %407
406: ; preds = %398
br label %420
407: ; preds = %398
%408 = load i32, i32* %24
%409 = load i32, i32* %10
%410 = add nsw i32 %408, %409
%411 = icmp sle i32 %410, 65535
br i1 %411, label %412, label %413
412: ; preds = %407
br label %418
413: ; preds = %407
%414 = load i32, i32* %24
%415 = load i32, i32* %10
%416 = add nsw i32 %414, %415
%417 = ashr i32 %416, 16
br label %418
418: ; preds = %413, %412
%419 = phi i32 [ 0, %412 ], [ %417, %413 ]
br label %420
420: ; preds = %418, %406
%421 = phi i32 [ 255, %406 ], [ %419, %418 ]
%422 = and i32 %421, 248
%423 = or i32 %401, %422
%424 = trunc i32 %423 to i8
%425 = load i8*, i8** %17
%426 = getelementptr inbounds i8, i8* %425, i64 1
store i8 %424, i8* %426
%427 = load i32, i32* %26
%428 = load i32, i32* %11
%429 = add nsw i32 %427, %428
%430 = icmp sgt i32 %429, 16777215
br i1 %430, label %431, label %432
431: ; preds = %420
br label %445
432: ; preds = %420
%433 = load i32, i32* %26
%434 = load i32, i32* %11
%435 = add nsw i32 %433, %434
%436 = icmp sle i32 %435, 65535
br i1 %436, label %437, label %438
437: ; preds = %432
br label %443
438: ; preds = %432
%439 = load i32, i32* %26
%440 = load i32, i32* %11
%441 = add nsw i32 %439, %440
%442 = ashr i32 %441, 16
br label %443
443: ; preds = %438, %437
%444 = phi i32 [ 0, %437 ], [ %442, %438 ]
br label %445
445: ; preds = %443, %431
%446 = phi i32 [ 255, %431 ], [ %444, %443 ]
%447 = ashr i32 %446, 3
%448 = and i32 %447, 31
%449 = load i32, i32* %25
%450 = load i32, i32* %11
%451 = add nsw i32 %449, %450
%452 = icmp sgt i32 %451, 16777215
br i1 %452, label %453, label %454
453: ; preds = %445
br label %467
454: ; preds = %445
%455 = load i32, i32* %25
%456 = load i32, i32* %11
%457 = add nsw i32 %455, %456
%458 = icmp sle i32 %457, 65535
br i1 %458, label %459, label %460
459: ; preds = %454
br label %465
460: ; preds = %454
%461 = load i32, i32* %25
%462 = load i32, i32* %11
%463 = add nsw i32 %461, %462
%464 = ashr i32 %463, 16
br label %465
465: ; preds = %460, %459
%466 = phi i32 [ 0, %459 ], [ %464, %460 ]
br label %467
467: ; preds = %465, %453
%468 = phi i32 [ 255, %453 ], [ %466, %465 ]
%469 = shl i32 %468, 3
%470 = and i32 %469, 224
%471 = or i32 %448, %470
%472 = trunc i32 %471 to i8
%473 = load i8*, i8** %17
%474 = getelementptr inbounds i8, i8* %473, i64 2
store i8 %472, i8* %474
%475 = load i32, i32* %25
%476 = load i32, i32* %11
%477 = add nsw i32 %475, %476
%478 = icmp sgt i32 %477, 16777215
br i1 %478, label %479, label %480
479: ; preds = %467
br label %493
480: ; preds = %467
%481 = load i32, i32* %25
%482 = load i32, i32* %11
%483 = add nsw i32 %481, %482
%484 = icmp sle i32 %483, 65535
br i1 %484, label %485, label %486
485: ; preds = %480
br label %491
486: ; preds = %480
%487 = load i32, i32* %25
%488 = load i32, i32* %11
%489 = add nsw i32 %487, %488
%490 = ashr i32 %489, 16
br label %491
491: ; preds = %486, %485
%492 = phi i32 [ 0, %485 ], [ %490, %486 ]
br label %493
493: ; preds = %491, %479
%494 = phi i32 [ 255, %479 ], [ %492, %491 ]
%495 = ashr i32 %494, 5
%496 = and i32 %495, 7
%497 = load i32, i32* %24
%498 = load i32, i32* %11
%499 = add nsw i32 %497, %498
%500 = icmp sgt i32 %499, 16777215
br i1 %500, label %501, label %502
501: ; preds = %493
br label %515
502: ; preds = %493
%503 = load i32, i32* %24
%504 = load i32, i32* %11
%505 = add nsw i32 %503, %504
%506 = icmp sle i32 %505, 65535
br i1 %506, label %507, label %508
507: ; preds = %502
br label %513
508: ; preds = %502
%509 = load i32, i32* %24
%510 = load i32, i32* %11
%511 = add nsw i32 %509, %510
%512 = ashr i32 %511, 16
br label %513
513: ; preds = %508, %507
%514 = phi i32 [ 0, %507 ], [ %512, %508 ]
br label %515
515: ; preds = %513, %501
%516 = phi i32 [ 255, %501 ], [ %514, %513 ]
%517 = and i32 %516, 248
%518 = or i32 %496, %517
%519 = trunc i32 %518 to i8
%520 = load i8*, i8** %17
%521 = getelementptr inbounds i8, i8* %520, i64 3
store i8 %519, i8* %521
%522 = load i32, i32* %16
%523 = mul nsw i32 2, %522
%524 = load i8*, i8** %17
%525 = sext i32 %523 to i64
%526 = getelementptr inbounds i8, i8* %524, i64 %525
store i8* %526, i8** %17
%527 = load i32, i32* %26
%528 = load i32, i32* %12
%529 = add nsw i32 %527, %528
%530 = icmp sgt i32 %529, 16777215
br i1 %530, label %531, label %532
531: ; preds = %515
br label %545
532: ; preds = %515
%533 = load i32, i32* %26
%534 = load i32, i32* %12
%535 = add nsw i32 %533, %534
%536 = icmp sle i32 %535, 65535
br i1 %536, label %537, label %538
537: ; preds = %532
br label %543
538: ; preds = %532
%539 = load i32, i32* %26
%540 = load i32, i32* %12
%541 = add nsw i32 %539, %540
%542 = ashr i32 %541, 16
br label %543
543: ; preds = %538, %537
%544 = phi i32 [ 0, %537 ], [ %542, %538 ]
br label %545
545: ; preds = %543, %531
%546 = phi i32 [ 255, %531 ], [ %544, %543 ]
%547 = ashr i32 %546, 3
%548 = and i32 %547, 31
%549 = load i32, i32* %25
%550 = load i32, i32* %12
%551 = add nsw i32 %549, %550
%552 = icmp sgt i32 %551, 16777215
br i1 %552, label %553, label %554
553: ; preds = %545
br label %567
554: ; preds = %545
%555 = load i32, i32* %25
%556 = load i32, i32* %12
%557 = add nsw i32 %555, %556
%558 = icmp sle i32 %557, 65535
br i1 %558, label %559, label %560
559: ; preds = %554
br label %565
560: ; preds = %554
%561 = load i32, i32* %25
%562 = load i32, i32* %12
%563 = add nsw i32 %561, %562
%564 = ashr i32 %563, 16
br label %565
565: ; preds = %560, %559
%566 = phi i32 [ 0, %559 ], [ %564, %560 ]
br label %567
567: ; preds = %565, %553
%568 = phi i32 [ 255, %553 ], [ %566, %565 ]
%569 = shl i32 %568, 3
%570 = and i32 %569, 224
%571 = or i32 %548, %570
%572 = trunc i32 %571 to i8
%573 = load i8*, i8** %17
%574 = getelementptr inbounds i8, i8* %573, i64 0
store i8 %572, i8* %574
%575 = load i32, i32* %25
%576 = load i32, i32* %12
%577 = add nsw i32 %575, %576
%578 = icmp sgt i32 %577, 16777215
br i1 %578, label %579, label %580
579: ; preds = %567
br label %593
580: ; preds = %567
%581 = load i32, i32* %25
%582 = load i32, i32* %12
%583 = add nsw i32 %581, %582
%584 = icmp sle i32 %583, 65535
br i1 %584, label %585, label %586
585: ; preds = %580
br label %591
586: ; preds = %580
%587 = load i32, i32* %25
%588 = load i32, i32* %12
%589 = add nsw i32 %587, %588
%590 = ashr i32 %589, 16
br label %591
591: ; preds = %586, %585
%592 = phi i32 [ 0, %585 ], [ %590, %586 ]
br label %593
593: ; preds = %591, %579
%594 = phi i32 [ 255, %579 ], [ %592, %591 ]
%595 = ashr i32 %594, 5
%596 = and i32 %595, 7
%597 = load i32, i32* %24
%598 = load i32, i32* %12
%599 = add nsw i32 %597, %598
%600 = icmp sgt i32 %599, 16777215
br i1 %600, label %601, label %602
601: ; preds = %593
br label %615
602: ; preds = %593
%603 = load i32, i32* %24
%604 = load i32, i32* %12
%605 = add nsw i32 %603, %604
%606 = icmp sle i32 %605, 65535
br i1 %606, label %607, label %608
607: ; preds = %602
br label %613
608: ; preds = %602
%609 = load i32, i32* %24
%610 = load i32, i32* %12
%611 = add nsw i32 %609, %610
%612 = ashr i32 %611, 16
br label %613
613: ; preds = %608, %607
%614 = phi i32 [ 0, %607 ], [ %612, %608 ]
br label %615
615: ; preds = %613, %601
%616 = phi i32 [ 255, %601 ], [ %614, %613 ]
%617 = and i32 %616, 248
%618 = or i32 %596, %617
%619 = trunc i32 %618 to i8
%620 = load i8*, i8** %17
%621 = getelementptr inbounds i8, i8* %620, i64 1
store i8 %619, i8* %621
%622 = load i32, i32* %26
%623 = load i32, i32* %13
%624 = add nsw i32 %622, %623
%625 = icmp sgt i32 %624, 16777215
br i1 %625, label %626, label %627
626: ; preds = %615
br label %640
627: ; preds = %615
%628 = load i32, i32* %26
%629 = load i32, i32* %13
%630 = add nsw i32 %628, %629
%631 = icmp sle i32 %630, 65535
br i1 %631, label %632, label %633
632: ; preds = %627
br label %638
633: ; preds = %627
%634 = load i32, i32* %26
%635 = load i32, i32* %13
%636 = add nsw i32 %634, %635
%637 = ashr i32 %636, 16
br label %638
638: ; preds = %633, %632
%639 = phi i32 [ 0, %632 ], [ %637, %633 ]
br label %640
640: ; preds = %638, %626
%641 = phi i32 [ 255, %626 ], [ %639, %638 ]
%642 = ashr i32 %641, 3
%643 = and i32 %642, 31
%644 = load i32, i32* %25
%645 = load i32, i32* %13
%646 = add nsw i32 %644, %645
%647 = icmp sgt i32 %646, 16777215
br i1 %647, label %648, label %649
648: ; preds = %640
br label %662
649: ; preds = %640
%650 = load i32, i32* %25
%651 = load i32, i32* %13
%652 = add nsw i32 %650, %651
%653 = icmp sle i32 %652, 65535
br i1 %653, label %654, label %655
654: ; preds = %649
br label %660
655: ; preds = %649
%656 = load i32, i32* %25
%657 = load i32, i32* %13
%658 = add nsw i32 %656, %657
%659 = ashr i32 %658, 16
br label %660
660: ; preds = %655, %654
%661 = phi i32 [ 0, %654 ], [ %659, %655 ]
br label %662
662: ; preds = %660, %648
%663 = phi i32 [ 255, %648 ], [ %661, %660 ]
%664 = shl i32 %663, 3
%665 = and i32 %664, 224
%666 = or i32 %643, %665
%667 = trunc i32 %666 to i8
%668 = load i8*, i8** %17
%669 = getelementptr inbounds i8, i8* %668, i64 2
store i8 %667, i8* %669
%670 = load i32, i32* %25
%671 = load i32, i32* %13
%672 = add nsw i32 %670, %671
%673 = icmp sgt i32 %672, 16777215
br i1 %673, label %674, label %675
674: ; preds = %662
br label %688
675: ; preds = %662
%676 = load i32, i32* %25
%677 = load i32, i32* %13
%678 = add nsw i32 %676, %677
%679 = icmp sle i32 %678, 65535
br i1 %679, label %680, label %681
680: ; preds = %675
br label %686
681: ; preds = %675
%682 = load i32, i32* %25
%683 = load i32, i32* %13
%684 = add nsw i32 %682, %683
%685 = ashr i32 %684, 16
br label %686
686: ; preds = %681, %680
%687 = phi i32 [ 0, %680 ], [ %685, %681 ]
br label %688
688: ; preds = %686, %674
%689 = phi i32 [ 255, %674 ], [ %687, %686 ]
%690 = ashr i32 %689, 5
%691 = and i32 %690, 7
%692 = load i32, i32* %24
%693 = load i32, i32* %13
%694 = add nsw i32 %692, %693
%695 = icmp sgt i32 %694, 16777215
br i1 %695, label %696, label %697
696: ; preds = %688
br label %710
697: ; preds = %688
%698 = load i32, i32* %24
%699 = load i32, i32* %13
%700 = add nsw i32 %698, %699
%701 = icmp sle i32 %700, 65535
br i1 %701, label %702, label %703
702: ; preds = %697
br label %708
703: ; preds = %697
%704 = load i32, i32* %24
%705 = load i32, i32* %13
%706 = add nsw i32 %704, %705
%707 = ashr i32 %706, 16
br label %708
708: ; preds = %703, %702
%709 = phi i32 [ 0, %702 ], [ %707, %703 ]
br label %710
710: ; preds = %708, %696
%711 = phi i32 [ 255, %696 ], [ %709, %708 ]
%712 = and i32 %711, 248
%713 = or i32 %691, %712
%714 = trunc i32 %713 to i8
%715 = load i8*, i8** %17
%716 = getelementptr inbounds i8, i8* %715, i64 3
store i8 %714, i8* %716
br label %717
717: ; preds = %710, %328
br label %718
718: ; preds = %717, %323
ret void
}

LLVM IR (-O2):
define void @move_420_block(i32 %0, i32 %1, i32 %2, i32 %3, i32 %4, i32 %5, i32 %6, i8* nocapture writeonly %7, i32 %8) {
%10 = mul nsw i32 %4, -22553
%11 = mul nsw i32 %5, -46801
%12 = add nsw i32 %11, %10
%13 = mul nsw i32 %4, 116129
%14 = mul nsw i32 %5, 91881
%15 = shl nsw i32 %0, 16
%16 = shl nsw i32 %1, 16
%17 = shl nsw i32 %2, 16
%18 = shl nsw i32 %3, 16
switch i32 %8, label %243 [
i32 24, label %19
i32 16, label %117
]
19: ; preds = %9
%20 = add nsw i32 %14, %15
%21 = icmp sgt i32 %20, 16777215
%22 = icmp slt i32 %20, 65536
%23 = lshr i32 %20, 16
%24 = trunc i32 %23 to i8
%25 = select i1 %22, i8 0, i8 %24
%26 = select i1 %21, i8 -1, i8 %25
store i8 %26, i8* %7
%27 = add nsw i32 %12, %15
%28 = icmp sgt i32 %27, 16777215
%29 = icmp slt i32 %27, 65536
%30 = lshr i32 %27, 16
%31 = trunc i32 %30 to i8
%32 = select i1 %29, i8 0, i8 %31
%33 = select i1 %28, i8 -1, i8 %32
%34 = getelementptr inbounds i8, i8* %7, i64 1
store i8 %33, i8* %34
%35 = add nsw i32 %13, %15
%36 = icmp sgt i32 %35, 16777215
%37 = icmp slt i32 %35, 65536
%38 = lshr i32 %35, 16
%39 = trunc i32 %38 to i8
%40 = select i1 %37, i8 0, i8 %39
%41 = select i1 %36, i8 -1, i8 %40
%42 = getelementptr inbounds i8, i8* %7, i64 2
store i8 %41, i8* %42
%43 = add nsw i32 %14, %16
%44 = icmp sgt i32 %43, 16777215
%45 = icmp slt i32 %43, 65536
%46 = lshr i32 %43, 16
%47 = trunc i32 %46 to i8
%48 = select i1 %45, i8 0, i8 %47
%49 = select i1 %44, i8 -1, i8 %48
%50 = getelementptr inbounds i8, i8* %7, i64 3
store i8 %49, i8* %50
%51 = add nsw i32 %12, %16
%52 = icmp sgt i32 %51, 16777215
%53 = icmp slt i32 %51, 65536
%54 = lshr i32 %51, 16
%55 = trunc i32 %54 to i8
%56 = select i1 %53, i8 0, i8 %55
%57 = select i1 %52, i8 -1, i8 %56
%58 = getelementptr inbounds i8, i8* %7, i64 4
store i8 %57, i8* %58
%59 = add nsw i32 %13, %16
%60 = icmp sgt i32 %59, 16777215
%61 = icmp slt i32 %59, 65536
%62 = lshr i32 %59, 16
%63 = trunc i32 %62 to i8
%64 = select i1 %61, i8 0, i8 %63
%65 = select i1 %60, i8 -1, i8 %64
%66 = getelementptr inbounds i8, i8* %7, i64 5
store i8 %65, i8* %66
%67 = mul nsw i32 %6, 3
%68 = sext i32 %67 to i64
%69 = getelementptr inbounds i8, i8* %7, i64 %68
%70 = add nsw i32 %14, %17
%71 = icmp sgt i32 %70, 16777215
%72 = icmp slt i32 %70, 65536
%73 = lshr i32 %70, 16
%74 = trunc i32 %73 to i8
%75 = select i1 %72, i8 0, i8 %74
%76 = select i1 %71, i8 -1, i8 %75
store i8 %76, i8* %69
%77 = add nsw i32 %12, %17
%78 = icmp sgt i32 %77, 16777215
%79 = icmp slt i32 %77, 65536
%80 = lshr i32 %77, 16
%81 = trunc i32 %80 to i8
%82 = select i1 %79, i8 0, i8 %81
%83 = select i1 %78, i8 -1, i8 %82
%84 = getelementptr inbounds i8, i8* %69, i64 1
store i8 %83, i8* %84
%85 = add nsw i32 %13, %17
%86 = icmp sgt i32 %85, 16777215
%87 = icmp slt i32 %85, 65536
%88 = lshr i32 %85, 16
%89 = trunc i32 %88 to i8
%90 = select i1 %87, i8 0, i8 %89
%91 = select i1 %86, i8 -1, i8 %90
%92 = getelementptr inbounds i8, i8* %69, i64 2
store i8 %91, i8* %92
%93 = add nsw i32 %14, %18
%94 = icmp sgt i32 %93, 16777215
%95 = icmp slt i32 %93, 65536
%96 = lshr i32 %93, 16
%97 = trunc i32 %96 to i8
%98 = select i1 %95, i8 0, i8 %97
%99 = select i1 %94, i8 -1, i8 %98
%100 = getelementptr inbounds i8, i8* %69, i64 3
store i8 %99, i8* %100
%101 = add nsw i32 %12, %18
%102 = icmp sgt i32 %101, 16777215
%103 = icmp slt i32 %101, 65536
%104 = lshr i32 %101, 16
%105 = trunc i32 %104 to i8
%106 = select i1 %103, i8 0, i8 %105
%107 = select i1 %102, i8 -1, i8 %106
%108 = getelementptr inbounds i8, i8* %69, i64 4
store i8 %107, i8* %108
%109 = add nsw i32 %13, %18
%110 = icmp sgt i32 %109, 16777215
%111 = icmp slt i32 %109, 65536
%112 = lshr i32 %109, 16
%113 = trunc i32 %112 to i8
%114 = select i1 %111, i8 0, i8 %113
%115 = select i1 %110, i8 -1, i8 %114
%116 = getelementptr inbounds i8, i8* %69, i64 5
store i8 %115, i8* %116
br label %243
117: ; preds = %9
%118 = add nsw i32 %14, %15
%119 = icmp sgt i32 %118, 16777215
%120 = icmp slt i32 %118, 65536
%121 = lshr i32 %118, 19
%122 = and i32 %121, 31
%123 = select i1 %120, i32 65536, i32 %122
%124 = select i1 %119, i32 31, i32 %123
%125 = add nsw i32 %12, %15
%126 = icmp sgt i32 %125, 16777215
%127 = icmp slt i32 %125, 65536
%128 = lshr i32 %125, 13
%129 = and i32 %128, 224
%130 = select i1 %127, i32 65536, i32 %129
%131 = select i1 %126, i32 224, i32 %130
%132 = or i32 %131, %124
%133 = trunc i32 %132 to i8
store i8 %133, i8* %7
%134 = lshr i32 %125, 21
%135 = and i32 %134, 7
%136 = select i1 %127, i32 65536, i32 %135
%137 = select i1 %126, i32 7, i32 %136
%138 = add nsw i32 %13, %15
%139 = icmp sgt i32 %138, 16777215
%140 = icmp slt i32 %138, 65536
%141 = lshr i32 %138, 16
%142 = and i32 %141, 248
%143 = select i1 %140, i32 65536, i32 %142
%144 = select i1 %139, i32 248, i32 %143
%145 = or i32 %137, %144
%146 = trunc i32 %145 to i8
%147 = getelementptr inbounds i8, i8* %7, i64 1
store i8 %146, i8* %147
%148 = add nsw i32 %14, %16
%149 = icmp sgt i32 %148, 16777215
%150 = icmp slt i32 %148, 65536
%151 = lshr i32 %148, 19
%152 = and i32 %151, 31
%153 = select i1 %150, i32 65536, i32 %152
%154 = select i1 %149, i32 31, i32 %153
%155 = add nsw i32 %12, %16
%156 = icmp sgt i32 %155, 16777215
%157 = icmp slt i32 %155, 65536
%158 = lshr i32 %155, 13
%159 = and i32 %158, 224
%160 = select i1 %157, i32 65536, i32 %159
%161 = select i1 %156, i32 224, i32 %160
%162 = or i32 %161, %154
%163 = trunc i32 %162 to i8
%164 = getelementptr inbounds i8, i8* %7, i64 2
store i8 %163, i8* %164
%165 = lshr i32 %155, 21
%166 = and i32 %165, 7
%167 = select i1 %157, i32 65536, i32 %166
%168 = select i1 %156, i32 7, i32 %167
%169 = add nsw i32 %13, %16
%170 = icmp sgt i32 %169, 16777215
%171 = icmp slt i32 %169, 65536
%172 = lshr i32 %169, 16
%173 = and i32 %172, 248
%174 = select i1 %171, i32 65536, i32 %173
%175 = select i1 %170, i32 248, i32 %174
%176 = or i32 %168, %175
%177 = trunc i32 %176 to i8
%178 = getelementptr inbounds i8, i8* %7, i64 3
store i8 %177, i8* %178
%179 = shl nsw i32 %6, 1
%180 = sext i32 %179 to i64
%181 = getelementptr inbounds i8, i8* %7, i64 %180
%182 = add nsw i32 %14, %17
%183 = icmp sgt i32 %182, 16777215
%184 = icmp slt i32 %182, 65536
%185 = lshr i32 %182, 19
%186 = and i32 %185, 31
%187 = select i1 %184, i32 65536, i32 %186
%188 = select i1 %183, i32 31, i32 %187
%189 = add nsw i32 %12, %17
%190 = icmp sgt i32 %189, 16777215
%191 = icmp slt i32 %189, 65536
%192 = lshr i32 %189, 13
%193 = and i32 %192, 224
%194 = select i1 %191, i32 65536, i32 %193
%195 = select i1 %190, i32 224, i32 %194
%196 = or i32 %195, %188
%197 = trunc i32 %196 to i8
store i8 %197, i8* %181
%198 = lshr i32 %189, 21
%199 = and i32 %198, 7
%200 = select i1 %191, i32 65536, i32 %199
%201 = select i1 %190, i32 7, i32 %200
%202 = add nsw i32 %13, %17
%203 = icmp sgt i32 %202, 16777215
%204 = icmp slt i32 %202, 65536
%205 = lshr i32 %202, 16
%206 = and i32 %205, 248
%207 = select i1 %204, i32 65536, i32 %206
%208 = select i1 %203, i32 248, i32 %207
%209 = or i32 %201, %208
%210 = trunc i32 %209 to i8
%211 = getelementptr inbounds i8, i8* %181, i64 1
store i8 %210, i8* %211
%212 = add nsw i32 %14, %18
%213 = icmp sgt i32 %212, 16777215
%214 = icmp slt i32 %212, 65536
%215 = lshr i32 %212, 19
%216 = and i32 %215, 31
%217 = select i1 %214, i32 65536, i32 %216
%218 = select i1 %213, i32 31, i32 %217
%219 = add nsw i32 %12, %18
%220 = icmp sgt i32 %219, 16777215
%221 = icmp slt i32 %219, 65536
%222 = lshr i32 %219, 13
%223 = and i32 %222, 224
%224 = select i1 %221, i32 65536, i32 %223
%225 = select i1 %220, i32 224, i32 %224
%226 = or i32 %225, %218
%227 = trunc i32 %226 to i8
%228 = getelementptr inbounds i8, i8* %181, i64 2
store i8 %227, i8* %228
%229 = lshr i32 %219, 21
%230 = and i32 %229, 7
%231 = select i1 %221, i32 65536, i32 %230
%232 = select i1 %220, i32 7, i32 %231
%233 = add nsw i32 %13, %18
%234 = icmp sgt i32 %233, 16777215
%235 = icmp slt i32 %233, 65536
%236 = lshr i32 %233, 16
%237 = and i32 %236, 248
%238 = select i1 %235, i32 65536, i32 %237
%239 = select i1 %234, i32 248, i32 %238
%240 = or i32 %232, %239
%241 = trunc i32 %240 to i8
%242 = getelementptr inbounds i8, i8* %181, i64 3
store i8 %241, i8* %242
br label %243
243: ; preds = %9, %117, %19
ret void
}