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

/* Forward declarations */

/* Type definitions */

/* Variables and functions */
int /*<<< orphan*/ assert(int);
int /*<<< orphan*/ rsencode(int const, int const, unsigned char *);
void apply_mask(const int mask, const int data_length,
                unsigned char *masked_codeword_array,
                const unsigned char *codeword_array, const int ecc_length) {
  int weight = 0;
  int j;
  assert(mask >= 0 && mask <= 3);
  switch (mask) {
  case 0:
    masked_codeword_array[0] = 0;
    for (j = 0; j < data_length; j++) {
      masked_codeword_array[j + 1] = codeword_array[j];
    }
    break;
  case 1:
    masked_codeword_array[0] = 1;
    for (j = 0; j < data_length; j++) {
      masked_codeword_array[j + 1] = (weight + codeword_array[j]) % 113;
      weight += 3;
    }
    break;
  case 2:
    masked_codeword_array[0] = 2;
    for (j = 0; j < data_length; j++) {
      masked_codeword_array[j + 1] = (weight + codeword_array[j]) % 113;
      weight += 7;
    }
    break;
  case 3:
    masked_codeword_array[0] = 3;
    for (j = 0; j < data_length; j++) {
      masked_codeword_array[j + 1] = (weight + codeword_array[j]) % 113;
      weight += 17;
    }
    break;
  }
  rsencode(data_length + 1, ecc_length, masked_codeword_array);
}


x86 assembly (clang, -O0):
<apply_mask>:
push   %rbp
mov    %rsp,%rbp
sub    $0x30,%rsp
mov    %edi,-0x4(%rbp)
mov    %esi,-0x8(%rbp)
mov    %rdx,-0x10(%rbp)
mov    %rcx,-0x18(%rbp)
mov    %r8d,-0x1c(%rbp)
movl   $0x0,-0x20(%rbp)
xor    %eax,%eax
cmpl   $0x0,-0x4(%rbp)
mov    %al,-0x25(%rbp)
jl     115a <apply_mask+0x3a>
cmpl   $0x3,-0x4(%rbp)
setle  %al
mov    %al,-0x25(%rbp)
mov    -0x25(%rbp),%al
movzbl %al,%edi
and    $0x1,%edi
call   1040 <assert@plt>
mov    -0x4(%rbp),%eax
mov    %rax,-0x30(%rbp)
sub    $0x3,%rax
ja     12f2 <apply_mask+0x1d2>
mov    -0x30(%rbp),%rax
lea    0xe7c(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
mov    -0x10(%rbp),%rax
movb   $0x0,(%rax)
movl   $0x0,-0x24(%rbp)
mov    -0x24(%rbp),%eax
cmp    -0x8(%rbp),%eax
jge    11d0 <apply_mask+0xb0>
mov    -0x18(%rbp),%rax
movslq -0x24(%rbp),%rcx
mov    (%rax,%rcx,1),%dl
mov    -0x10(%rbp),%rax
mov    -0x24(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
mov    %dl,(%rax,%rcx,1)
mov    -0x24(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x24(%rbp)
jmp    119b <apply_mask+0x7b>
jmp    12f2 <apply_mask+0x1d2>
mov    -0x10(%rbp),%rax
movb   $0x1,(%rax)
movl   $0x0,-0x24(%rbp)
mov    -0x24(%rbp),%eax
cmp    -0x8(%rbp),%eax
jge    122f <apply_mask+0x10f>
mov    -0x20(%rbp),%eax
mov    -0x18(%rbp),%rcx
movslq -0x24(%rbp),%rdx
movzbl (%rcx,%rdx,1),%ecx
add    %ecx,%eax
mov    $0x71,%ecx
cltd
idiv   %ecx
mov    -0x10(%rbp),%rax
mov    -0x24(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
mov    %dl,(%rax,%rcx,1)
mov    -0x20(%rbp),%eax
add    $0x3,%eax
mov    %eax,-0x20(%rbp)
mov    -0x24(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x24(%rbp)
jmp    11e3 <apply_mask+0xc3>
jmp    12f2 <apply_mask+0x1d2>
mov    -0x10(%rbp),%rax
movb   $0x2,(%rax)
movl   $0x0,-0x24(%rbp)
mov    -0x24(%rbp),%eax
cmp    -0x8(%rbp),%eax
jge    128e <apply_mask+0x16e>
mov    -0x20(%rbp),%eax
mov    -0x18(%rbp),%rcx
movslq -0x24(%rbp),%rdx
movzbl (%rcx,%rdx,1),%ecx
add    %ecx,%eax
mov    $0x71,%ecx
cltd
idiv   %ecx
mov    -0x10(%rbp),%rax
mov    -0x24(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
mov    %dl,(%rax,%rcx,1)
mov    -0x20(%rbp),%eax
add    $0x7,%eax
mov    %eax,-0x20(%rbp)
mov    -0x24(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x24(%rbp)
jmp    1242 <apply_mask+0x122>
jmp    12f2 <apply_mask+0x1d2>
mov    -0x10(%rbp),%rax
movb   $0x3,(%rax)
movl   $0x0,-0x24(%rbp)
mov    -0x24(%rbp),%eax
cmp    -0x8(%rbp),%eax
jge    12ed <apply_mask+0x1cd>
mov    -0x20(%rbp),%eax
mov    -0x18(%rbp),%rcx
movslq -0x24(%rbp),%rdx
movzbl (%rcx,%rdx,1),%ecx
add    %ecx,%eax
mov    $0x71,%ecx
cltd
idiv   %ecx
mov    -0x10(%rbp),%rax
mov    -0x24(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
mov    %dl,(%rax,%rcx,1)
mov    -0x20(%rbp),%eax
add    $0x11,%eax
mov    %eax,-0x20(%rbp)
mov    -0x24(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x24(%rbp)
jmp    12a1 <apply_mask+0x181>
jmp    12f2 <apply_mask+0x1d2>
mov    -0x8(%rbp),%edi
add    $0x1,%edi
mov    -0x1c(%rbp),%esi
mov    -0x10(%rbp),%rdx
call   1030 <rsencode@plt>
add    $0x30,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<apply_mask>:
push   %rbp
push   %r15
push   %r14
push   %r12
push   %rbx
mov    %r8d,%r14d
mov    %rcx,%r12
mov    %rdx,%rbx
mov    %esi,%r15d
mov    %edi,%ebp
xor    %edi,%edi
cmp    $0x4,%ebp
setb   %dil
call   1040 <assert@plt>
cmp    $0x3,%ebp
ja     284b <apply_mask+0x172b>
mov    %ebp,%eax
lea    0x1fea(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
movb   $0x0,(%rbx)
test   %r15d,%r15d
jle    284b <apply_mask+0x172b>
mov    %r15d,%ebp
cmp    $0x8,%r15d
jb     1196 <apply_mask+0x76>
lea    0x1(%rbx),%rcx
lea    (%r12,%rbp,1),%rdx
cmp    %rdx,%rcx
jae    14dc <apply_mask+0x3bc>
lea    (%rbx,%rbp,1),%rcx
add    $0x1,%rcx
cmp    %r12,%rcx
jbe    14dc <apply_mask+0x3bc>
xor    %ecx,%ecx
mov    %rcx,%rdx
not    %rdx
add    %rbp,%rdx
mov    %rbp,%rsi
and    $0x3,%rsi
je     11c3 <apply_mask+0xa3>
nopw   0x0(%rax,%rax,1)
movzbl (%r12,%rcx,1),%eax
mov    %al,0x1(%rbx,%rcx,1)
add    $0x1,%rcx
add    $0xffffffffffffffff,%rsi
jne    11b0 <apply_mask+0x90>
cmp    $0x3,%rdx
jb     284b <apply_mask+0x172b>
nopl   (%rax)
movzbl (%r12,%rcx,1),%eax
mov    %al,0x1(%rbx,%rcx,1)
movzbl 0x1(%r12,%rcx,1),%eax
mov    %al,0x2(%rbx,%rcx,1)
movzbl 0x2(%r12,%rcx,1),%eax
mov    %al,0x3(%rbx,%rcx,1)
movzbl 0x3(%r12,%rcx,1),%eax
mov    %al,0x4(%rbx,%rcx,1)
add    $0x4,%rcx
cmp    %rcx,%rbp
jne    11d0 <apply_mask+0xb0>
jmp    284b <apply_mask+0x172b>
movb   $0x1,(%rbx)
test   %r15d,%r15d
jle    284b <apply_mask+0x172b>
mov    %r15d,%r8d
cmp    $0x10,%r15d
jb     123c <apply_mask+0x11c>
lea    0x1(%rbx),%rcx
lea    (%r12,%r8,1),%rdx
cmp    %rdx,%rcx
jae    14ed <apply_mask+0x3cd>
lea    (%r8,%rbx,1),%rcx
add    $0x1,%rcx
cmp    %r12,%rcx
jbe    14ed <apply_mask+0x3cd>
xor    %ecx,%ecx
xor    %edx,%edx
mov    %rcx,%rsi
not    %rsi
test   $0x1,%r8b
je     1279 <apply_mask+0x159>
movzbl (%r12,%rcx,1),%edi
add    %edx,%edi
imul   $0x21fb7813,%rdi,%rbp
shr    $0x20,%rbp
mov    %edi,%eax
sub    %ebp,%eax
shr    %eax
add    %ebp,%eax
shr    $0x6,%eax
imul   $0x71,%eax,%eax
sub    %eax,%edi
or     $0x1,%rcx
mov    %dil,(%rbx,%rcx,1)
add    $0x3,%edx
add    %r8,%rsi
je     284b <apply_mask+0x172b>
lea    0x3(%rdx),%esi
cs nopw 0x0(%rax,%rax,1)
nop
movzbl (%r12,%rcx,1),%eax
mov    %eax,%edi
add    %edx,%edi
imul   $0x21fb7813,%rdi,%rbp
shr    $0x20,%rbp
sub    %ebp,%edi
shr    %edi
add    %ebp,%edi
shr    $0x6,%edi
imul   $0x71,%edi,%edi
sub    %dil,%al
add    %dl,%al
mov    %al,0x1(%rbx,%rcx,1)
movzbl 0x1(%r12,%rcx,1),%eax
mov    %eax,%edi
add    %esi,%edi
imul   $0x21fb7813,%rdi,%rbp
shr    $0x20,%rbp
sub    %ebp,%edi
shr    %edi
add    %ebp,%edi
shr    $0x6,%edi
imul   $0x71,%edi,%edi
sub    %dil,%al
add    %dl,%al
add    $0x3,%al
mov    %al,0x2(%rbx,%rcx,1)
lea    0x2(%rcx),%rax
add    $0x6,%edx
add    $0x6,%esi
mov    %rax,%rcx
cmp    %rax,%r8
jne    1290 <apply_mask+0x170>
jmp    284b <apply_mask+0x172b>
movb   $0x2,(%rbx)
test   %r15d,%r15d
jle    284b <apply_mask+0x172b>
mov    %r15d,%r8d
cmp    $0x10,%r15d
jb     1333 <apply_mask+0x213>
lea    0x1(%rbx),%rcx
lea    (%r12,%r8,1),%rdx
cmp    %rdx,%rcx
jae    18f8 <apply_mask+0x7d8>
lea    (%r8,%rbx,1),%rcx
add    $0x1,%rcx
cmp    %r12,%rcx
jbe    18f8 <apply_mask+0x7d8>
xor    %ecx,%ecx
xor    %edx,%edx
mov    %rcx,%rsi
not    %rsi
test   $0x1,%r8b
je     1370 <apply_mask+0x250>
movzbl (%r12,%rcx,1),%edi
add    %edx,%edi
imul   $0x21fb7813,%rdi,%rbp
shr    $0x20,%rbp
mov    %edi,%eax
sub    %ebp,%eax
shr    %eax
add    %ebp,%eax
shr    $0x6,%eax
imul   $0x71,%eax,%eax
sub    %eax,%edi
or     $0x1,%rcx
mov    %dil,(%rbx,%rcx,1)
add    $0x7,%edx
add    %r8,%rsi
je     284b <apply_mask+0x172b>
lea    0x7(%rdx),%esi
nopl   0x0(%rax)
movzbl (%r12,%rcx,1),%eax
mov    %eax,%edi
add    %edx,%edi
imul   $0x21fb7813,%rdi,%rbp
shr    $0x20,%rbp
sub    %ebp,%edi
shr    %edi
add    %ebp,%edi
shr    $0x6,%edi
imul   $0x71,%edi,%edi
sub    %dil,%al
add    %dl,%al
mov    %al,0x1(%rbx,%rcx,1)
movzbl 0x1(%r12,%rcx,1),%eax
mov    %eax,%edi
add    %esi,%edi
imul   $0x21fb7813,%rdi,%rbp
shr    $0x20,%rbp
sub    %ebp,%edi
shr    %edi
add    %ebp,%edi
shr    $0x6,%edi
imul   $0x71,%edi,%edi
sub    %dil,%al
add    %dl,%al
add    $0x7,%al
mov    %al,0x2(%rbx,%rcx,1)
lea    0x2(%rcx),%rax
add    $0xe,%edx
add    $0xe,%esi
mov    %rax,%rcx
cmp    %rax,%r8
jne    1380 <apply_mask+0x260>
jmp    284b <apply_mask+0x172b>
movb   $0x3,(%rbx)
test   %r15d,%r15d
jle    284b <apply_mask+0x172b>
mov    %r15d,%r8d
cmp    $0x10,%r15d
jb     1423 <apply_mask+0x303>
lea    0x1(%rbx),%rcx
lea    (%r12,%r8,1),%rdx
cmp    %rdx,%rcx
jae    1d08 <apply_mask+0xbe8>
lea    (%r8,%rbx,1),%rcx
add    $0x1,%rcx
cmp    %r12,%rcx
jbe    1d08 <apply_mask+0xbe8>
xor    %ecx,%ecx
xor    %edx,%edx
mov    %rcx,%rsi
not    %rsi
test   $0x1,%r8b
je     1460 <apply_mask+0x340>
movzbl (%r12,%rcx,1),%edi
add    %edx,%edi
imul   $0x21fb7813,%rdi,%rbp
shr    $0x20,%rbp
mov    %edi,%eax
sub    %ebp,%eax
shr    %eax
add    %ebp,%eax
shr    $0x6,%eax
imul   $0x71,%eax,%eax
sub    %eax,%edi
or     $0x1,%rcx
mov    %dil,(%rbx,%rcx,1)
add    $0x11,%edx
add    %r8,%rsi
je     284b <apply_mask+0x172b>
lea    0x11(%rdx),%esi
nopl   0x0(%rax)
movzbl (%r12,%rcx,1),%eax
mov    %eax,%edi
add    %edx,%edi
imul   $0x21fb7813,%rdi,%rbp
shr    $0x20,%rbp
sub    %ebp,%edi
shr    %edi
add    %ebp,%edi
shr    $0x6,%edi
imul   $0x71,%edi,%edi
sub    %dil,%al
add    %dl,%al
mov    %al,0x1(%rbx,%rcx,1)
movzbl 0x1(%r12,%rcx,1),%eax
mov    %eax,%edi
add    %esi,%edi
imul   $0x21fb7813,%rdi,%rbp
shr    $0x20,%rbp
sub    %ebp,%edi
shr    %edi
add    %ebp,%edi
shr    $0x6,%edi
imul   $0x71,%edi,%edi
sub    %dil,%al
add    %dl,%al
add    $0x11,%al
mov    %al,0x2(%rbx,%rcx,1)
lea    0x2(%rcx),%rax
add    $0x22,%edx
add    $0x22,%esi
mov    %rax,%rcx
cmp    %rax,%r8
jne    1470 <apply_mask+0x350>
jmp    284b <apply_mask+0x172b>
cmp    $0x20,%r15d
jae    2118 <apply_mask+0xff8>
xor    %ecx,%ecx
jmp    2828 <apply_mask+0x1708>
mov    %r8d,%ecx
and    $0xfffffff0,%ecx
lea    -0x10(%rcx),%rdx
mov    %rdx,%rsi
shr    $0x4,%rsi
add    $0x1,%rsi
test   %rdx,%rdx
je     2142 <apply_mask+0x1022>
mov    %rsi,%rdi
and    $0xfffffffffffffffe,%rdi
movdqa 0x1bc5(%rip),%xmm10
movdqa 0x1bcc(%rip),%xmm11
movdqa 0x1bd3(%rip),%xmm14
movdqa 0x1bda(%rip),%xmm12
xor    %edx,%edx
pxor   %xmm13,%xmm13
movdqa 0x1afb(%rip),%xmm5
movdqa 0x1b03(%rip),%xmm6
movdqa 0x1bca(%rip),%xmm8
movdqa 0x1bd1(%rip),%xmm9
nop
movdqu (%r12,%rdx,1),%xmm1
movdqa %xmm1,%xmm7
punpcklbw %xmm13,%xmm7
movdqa %xmm7,%xmm4
punpckhwd %xmm13,%xmm4
punpcklwd %xmm13,%xmm7
punpckhbw %xmm13,%xmm1
movdqa %xmm1,%xmm0
punpckhwd %xmm13,%xmm0
punpcklwd %xmm13,%xmm1
paddd  %xmm11,%xmm1
paddd  %xmm10,%xmm0
paddd  %xmm12,%xmm7
paddd  %xmm14,%xmm4
movdqa %xmm4,%xmm2
pmuludq %xmm5,%xmm2
pshufd $0xed,%xmm2,%xmm2
pshufd $0xf5,%xmm4,%xmm3
pmuludq %xmm5,%xmm3
pshufd $0xed,%xmm3,%xmm3
punpckldq %xmm3,%xmm2
movdqa %xmm4,%xmm3
psubd  %xmm2,%xmm3
psrld  $0x1,%xmm3
paddd  %xmm2,%xmm3
psrld  $0x6,%xmm3
pshufd $0xf5,%xmm3,%xmm2
pmuludq %xmm6,%xmm3
pshufd $0xe8,%xmm3,%xmm3
pmuludq %xmm6,%xmm2
pshufd $0xe8,%xmm2,%xmm2
punpckldq %xmm2,%xmm3
psubd  %xmm3,%xmm4
movdqa %xmm7,%xmm2
pmuludq %xmm5,%xmm2
pshufd $0xed,%xmm2,%xmm2
pshufd $0xf5,%xmm7,%xmm3
pmuludq %xmm5,%xmm3
pshufd $0xed,%xmm3,%xmm3
punpckldq %xmm3,%xmm2
movdqa %xmm7,%xmm3
psubd  %xmm2,%xmm3
psrld  $0x1,%xmm3
paddd  %xmm2,%xmm3
psrld  $0x6,%xmm3
pshufd $0xf5,%xmm3,%xmm2
pmuludq %xmm6,%xmm3
pshufd $0xe8,%xmm3,%xmm3
pmuludq %xmm6,%xmm2
pshufd $0xe8,%xmm2,%xmm2
punpckldq %xmm2,%xmm3
psubd  %xmm3,%xmm7
packuswb %xmm4,%xmm7
movdqa %xmm0,%xmm2
pmuludq %xmm5,%xmm2
pshufd $0xed,%xmm2,%xmm2
pshufd $0xf5,%xmm0,%xmm3
pmuludq %xmm5,%xmm3
pshufd $0xed,%xmm3,%xmm3
punpckldq %xmm3,%xmm2
movdqa %xmm0,%xmm3
psubd  %xmm2,%xmm3
psrld  $0x1,%xmm3
paddd  %xmm2,%xmm3
psrld  $0x6,%xmm3
pshufd $0xf5,%xmm3,%xmm2
pmuludq %xmm6,%xmm3
pshufd $0xe8,%xmm3,%xmm3
pmuludq %xmm6,%xmm2
pshufd $0xe8,%xmm2,%xmm2
punpckldq %xmm2,%xmm3
psubd  %xmm3,%xmm0
movdqa %xmm1,%xmm2
pmuludq %xmm5,%xmm2
pshufd $0xed,%xmm2,%xmm2
pshufd $0xf5,%xmm1,%xmm3
pmuludq %xmm5,%xmm3
pshufd $0xed,%xmm3,%xmm3
punpckldq %xmm3,%xmm2
movdqa %xmm1,%xmm3
psubd  %xmm2,%xmm3
psrld  $0x1,%xmm3
paddd  %xmm2,%xmm3
psrld  $0x6,%xmm3
pshufd $0xf5,%xmm3,%xmm2
pmuludq %xmm6,%xmm3
pshufd $0xe8,%xmm3,%xmm3
pmuludq %xmm6,%xmm2
pshufd $0xe8,%xmm2,%xmm2
punpckldq %xmm2,%xmm3
psubd  %xmm3,%xmm1
packuswb %xmm0,%xmm1
packuswb %xmm1,%xmm7
movdqu %xmm7,0x1(%rbx,%rdx,1)
movdqu 0x10(%r12,%rdx,1),%xmm0
movdqa %xmm0,%xmm2
punpcklbw %xmm13,%xmm2
movdqa %xmm2,%xmm3
punpckhwd %xmm13,%xmm3
punpcklwd %xmm13,%xmm2
punpckhbw %xmm13,%xmm0
movdqa %xmm0,%xmm4
punpckhwd %xmm13,%xmm4
punpcklwd %xmm13,%xmm0
movdqa %xmm11,%xmm1
paddd  %xmm8,%xmm1
paddd  %xmm0,%xmm1
movdqa %xmm10,%xmm0
paddd  %xmm8,%xmm0
paddd  %xmm4,%xmm0
movdqa %xmm12,%xmm7
paddd  %xmm8,%xmm7
paddd  %xmm2,%xmm7
movdqa %xmm14,%xmm2
paddd  %xmm8,%xmm2
paddd  %xmm3,%xmm2
movdqa %xmm2,%xmm3
pmuludq %xmm5,%xmm3
pshufd $0xed,%xmm3,%xmm3
pshufd $0xf5,%xmm2,%xmm4
pmuludq %xmm5,%xmm4
pshufd $0xed,%xmm4,%xmm4
punpckldq %xmm4,%xmm3
movdqa %xmm2,%xmm4
psubd  %xmm3,%xmm4
psrld  $0x1,%xmm4
paddd  %xmm3,%xmm4
psrld  $0x6,%xmm4
pshufd $0xf5,%xmm4,%xmm3
pmuludq %xmm6,%xmm4
pshufd $0xe8,%xmm4,%xmm4
pmuludq %xmm6,%xmm3
pshufd $0xe8,%xmm3,%xmm3
punpckldq %xmm3,%xmm4
psubd  %xmm4,%xmm2
movdqa %xmm7,%xmm3
pmuludq %xmm5,%xmm3
pshufd $0xed,%xmm3,%xmm3
pshufd $0xf5,%xmm7,%xmm4
pmuludq %xmm5,%xmm4
pshufd $0xed,%xmm4,%xmm4
punpckldq %xmm4,%xmm3
movdqa %xmm7,%xmm4
psubd  %xmm3,%xmm4
psrld  $0x1,%xmm4
paddd  %xmm3,%xmm4
psrld  $0x6,%xmm4
pshufd $0xf5,%xmm4,%xmm3
pmuludq %xmm6,%xmm4
pshufd $0xe8,%xmm4,%xmm4
pmuludq %xmm6,%xmm3
pshufd $0xe8,%xmm3,%xmm3
punpckldq %xmm3,%xmm4
psubd  %xmm4,%xmm7
packuswb %xmm2,%xmm7
movdqa %xmm0,%xmm2
pmuludq %xmm5,%xmm2
pshufd $0xed,%xmm2,%xmm2
pshufd $0xf5,%xmm0,%xmm3
pmuludq %xmm5,%xmm3
pshufd $0xed,%xmm3,%xmm3
punpckldq %xmm3,%xmm2
movdqa %xmm0,%xmm3
psubd  %xmm2,%xmm3
psrld  $0x1,%xmm3
paddd  %xmm2,%xmm3
psrld  $0x6,%xmm3
pshufd $0xf5,%xmm3,%xmm2
pmuludq %xmm6,%xmm3
pshufd $0xe8,%xmm3,%xmm3
pmuludq %xmm6,%xmm2
pshufd $0xe8,%xmm2,%xmm2
punpckldq %xmm2,%xmm3
psubd  %xmm3,%xmm0
movdqa %xmm1,%xmm2
pmuludq %xmm5,%xmm2
pshufd $0xed,%xmm2,%xmm2
pshufd $0xf5,%xmm1,%xmm3
pmuludq %xmm5,%xmm3
pshufd $0xed,%xmm3,%xmm3
punpckldq %xmm3,%xmm2
movdqa %xmm1,%xmm3
psubd  %xmm2,%xmm3
psrld  $0x1,%xmm3
paddd  %xmm2,%xmm3
psrld  $0x6,%xmm3
pshufd $0xf5,%xmm3,%xmm2
pmuludq %xmm6,%xmm3
pshufd $0xe8,%xmm3,%xmm3
pmuludq %xmm6,%xmm2
pshufd $0xe8,%xmm2,%xmm2
punpckldq %xmm2,%xmm3
psubd  %xmm3,%xmm1
packuswb %xmm0,%xmm1
packuswb %xmm1,%xmm7
movdqu %xmm7,0x11(%rbx,%rdx,1)
add    $0x20,%rdx
paddd  %xmm9,%xmm12
paddd  %xmm9,%xmm14
paddd  %xmm9,%xmm11
paddd  %xmm9,%xmm10
add    $0xfffffffffffffffe,%rdi
jne    1560 <apply_mask+0x440>
jmp    2168 <apply_mask+0x1048>
mov    %r8d,%ecx
and    $0xfffffff0,%ecx
lea    -0x10(%rcx),%rdx
mov    %rdx,%rsi
shr    $0x4,%rsi
add    $0x1,%rsi
test   %rdx,%rdx
je     234e <apply_mask+0x122e>
mov    %rsi,%rdi
and    $0xfffffffffffffffe,%rdi
movdqa 0x175a(%rip),%xmm10
movdqa 0x1761(%rip),%xmm11
movdqa 0x1768(%rip),%xmm14
movdqa 0x176f(%rip),%xmm12
xor    %edx,%edx
pxor   %xmm13,%xmm13
movdqa 0x16f0(%rip),%xmm5
movdqa 0x16f8(%rip),%xmm6
movdqa 0x175f(%rip),%xmm8
movdqa 0x1766(%rip),%xmm9
nopw   0x0(%rax,%rax,1)
movdqu (%r12,%rdx,1),%xmm1
movdqa %xmm1,%xmm7
punpcklbw %xmm13,%xmm7
movdqa %xmm7,%xmm4
punpckhwd %xmm13,%xmm4
punpcklwd %xmm13,%xmm7
punpckhbw %xmm13,%xmm1
movdqa %xmm1,%xmm0
punpckhwd %xmm13,%xmm0
punpcklwd %xmm13,%xmm1
paddd  %xmm11,%xmm1
paddd  %xmm10,%xmm0
paddd  %xmm12,%xmm7
paddd  %xmm14,%xmm4
movdqa %xmm4,%xmm2
pmuludq %xmm5,%xmm2
pshufd $0xed,%xmm2,%xmm2
pshufd $0xf5,%xmm4,%xmm3
pmuludq %xmm5,%xmm3
pshufd $0xed,%xmm3,%xmm3
punpckldq %xmm3,%xmm2
movdqa %xmm4,%xmm3
psubd  %xmm2,%xmm3
psrld  $0x1,%xmm3
paddd  %xmm2,%xmm3
psrld  $0x6,%xmm3
pshufd $0xf5,%xmm3,%xmm2
pmuludq %xmm6,%xmm3
pshufd $0xe8,%xmm3,%xmm3
pmuludq %xmm6,%xmm2
pshufd $0xe8,%xmm2,%xmm2
punpckldq %xmm2,%xmm3
psubd  %xmm3,%xmm4
movdqa %xmm7,%xmm2
pmuludq %xmm5,%xmm2
pshufd $0xed,%xmm2,%xmm2
pshufd $0xf5,%xmm7,%xmm3
pmuludq %xmm5,%xmm3
pshufd $0xed,%xmm3,%xmm3
punpckldq %xmm3,%xmm2
movdqa %xmm7,%xmm3
psubd  %xmm2,%xmm3
psrld  $0x1,%xmm3
paddd  %xmm2,%xmm3
psrld  $0x6,%xmm3
pshufd $0xf5,%xmm3,%xmm2
pmuludq %xmm6,%xmm3
pshufd $0xe8,%xmm3,%xmm3
pmuludq %xmm6,%xmm2
pshufd $0xe8,%xmm2,%xmm2
punpckldq %xmm2,%xmm3
psubd  %xmm3,%xmm7
packuswb %xmm4,%xmm7
movdqa %xmm0,%xmm2
pmuludq %xmm5,%xmm2
pshufd $0xed,%xmm2,%xmm2
pshufd $0xf5,%xmm0,%xmm3
pmuludq %xmm5,%xmm3
pshufd $0xed,%xmm3,%xmm3
punpckldq %xmm3,%xmm2
movdqa %xmm0,%xmm3
psubd  %xmm2,%xmm3
psrld  $0x1,%xmm3
paddd  %xmm2,%xmm3
psrld  $0x6,%xmm3
pshufd $0xf5,%xmm3,%xmm2
pmuludq %xmm6,%xmm3
pshufd $0xe8,%xmm3,%xmm3
pmuludq %xmm6,%xmm2
pshufd $0xe8,%xmm2,%xmm2
punpckldq %xmm2,%xmm3
psubd  %xmm3,%xmm0
movdqa %xmm1,%xmm2
pmuludq %xmm5,%xmm2
pshufd $0xed,%xmm2,%xmm2
pshufd $0xf5,%xmm1,%xmm3
pmuludq %xmm5,%xmm3
pshufd $0xed,%xmm3,%xmm3
punpckldq %xmm3,%xmm2
movdqa %xmm1,%xmm3
psubd  %xmm2,%xmm3
psrld  $0x1,%xmm3
paddd  %xmm2,%xmm3
psrld  $0x6,%xmm3
pshufd $0xf5,%xmm3,%xmm2
pmuludq %xmm6,%xmm3
pshufd $0xe8,%xmm3,%xmm3
pmuludq %xmm6,%xmm2
pshufd $0xe8,%xmm2,%xmm2
punpckldq %xmm2,%xmm3
psubd  %xmm3,%xmm1
packuswb %xmm0,%xmm1
packuswb %xmm1,%xmm7
movdqu %xmm7,0x1(%rbx,%rdx,1)
movdqu 0x10(%r12,%rdx,1),%xmm0
movdqa %xmm0,%xmm2
punpcklbw %xmm13,%xmm2
movdqa %xmm2,%xmm3
punpckhwd %xmm13,%xmm3
punpcklwd %xmm13,%xmm2
punpckhbw %xmm13,%xmm0
movdqa %xmm0,%xmm4
punpckhwd %xmm13,%xmm4
punpcklwd %xmm13,%xmm0
movdqa %xmm11,%xmm1
paddd  %xmm8,%xmm1
paddd  %xmm0,%xmm1
movdqa %xmm10,%xmm0
paddd  %xmm8,%xmm0
paddd  %xmm4,%xmm0
movdqa %xmm12,%xmm7
paddd  %xmm8,%xmm7
paddd  %xmm2,%xmm7
movdqa %xmm14,%xmm2
paddd  %xmm8,%xmm2
paddd  %xmm3,%xmm2
movdqa %xmm2,%xmm3
pmuludq %xmm5,%xmm3
pshufd $0xed,%xmm3,%xmm3
pshufd $0xf5,%xmm2,%xmm4
pmuludq %xmm5,%xmm4
pshufd $0xed,%xmm4,%xmm4
punpckldq %xmm4,%xmm3
movdqa %xmm2,%xmm4
psubd  %xmm3,%xmm4
psrld  $0x1,%xmm4
paddd  %xmm3,%xmm4
psrld  $0x6,%xmm4
pshufd $0xf5,%xmm4,%xmm3
pmuludq %xmm6,%xmm4
pshufd $0xe8,%xmm4,%xmm4
pmuludq %xmm6,%xmm3
pshufd $0xe8,%xmm3,%xmm3
punpckldq %xmm3,%xmm4
psubd  %xmm4,%xmm2
movdqa %xmm7,%xmm3
pmuludq %xmm5,%xmm3
pshufd $0xed,%xmm3,%xmm3
pshufd $0xf5,%xmm7,%xmm4
pmuludq %xmm5,%xmm4
pshufd $0xed,%xmm4,%xmm4
punpckldq %xmm4,%xmm3
movdqa %xmm7,%xmm4
psubd  %xmm3,%xmm4
psrld  $0x1,%xmm4
paddd  %xmm3,%xmm4
psrld  $0x6,%xmm4
pshufd $0xf5,%xmm4,%xmm3
pmuludq %xmm6,%xmm4
pshufd $0xe8,%xmm4,%xmm4
pmuludq %xmm6,%xmm3
pshufd $0xe8,%xmm3,%xmm3
punpckldq %xmm3,%xmm4
psubd  %xmm4,%xmm7
packuswb %xmm2,%xmm7
movdqa %xmm0,%xmm2
pmuludq %xmm5,%xmm2
pshufd $0xed,%xmm2,%xmm2
pshufd $0xf5,%xmm0,%xmm3
pmuludq %xmm5,%xmm3
pshufd $0xed,%xmm3,%xmm3
punpckldq %xmm3,%xmm2
movdqa %xmm0,%xmm3
psubd  %xmm2,%xmm3
psrld  $0x1,%xmm3
paddd  %xmm2,%xmm3
psrld  $0x6,%xmm3
pshufd $0xf5,%xmm3,%xmm2
pmuludq %xmm6,%xmm3
pshufd $0xe8,%xmm3,%xmm3
pmuludq %xmm6,%xmm2
pshufd $0xe8,%xmm2,%xmm2
punpckldq %xmm2,%xmm3
psubd  %xmm3,%xmm0
movdqa %xmm1,%xmm2
pmuludq %xmm5,%xmm2
pshufd $0xed,%xmm2,%xmm2
pshufd $0xf5,%xmm1,%xmm3
pmuludq %xmm5,%xmm3
pshufd $0xed,%xmm3,%xmm3
punpckldq %xmm3,%xmm2
movdqa %xmm1,%xmm3
psubd  %xmm2,%xmm3
psrld  $0x1,%xmm3
paddd  %xmm2,%xmm3
psrld  $0x6,%xmm3
pshufd $0xf5,%xmm3,%xmm2
pmuludq %xmm6,%xmm3
pshufd $0xe8,%xmm3,%xmm3
pmuludq %xmm6,%xmm2
pshufd $0xe8,%xmm2,%xmm2
punpckldq %xmm2,%xmm3
psubd  %xmm3,%xmm1
packuswb %xmm0,%xmm1
packuswb %xmm1,%xmm7
movdqu %xmm7,0x11(%rbx,%rdx,1)
add    $0x20,%rdx
paddd  %xmm9,%xmm12
paddd  %xmm9,%xmm14
paddd  %xmm9,%xmm11
paddd  %xmm9,%xmm10
add    $0xfffffffffffffffe,%rdi
jne    1970 <apply_mask+0x850>
jmp    2374 <apply_mask+0x1254>
mov    %r8d,%ecx
and    $0xfffffff0,%ecx
lea    -0x10(%rcx),%rdx
mov    %rdx,%rsi
shr    $0x4,%rsi
add    $0x1,%rsi
test   %rdx,%rdx
je     2560 <apply_mask+0x1440>
mov    %rsi,%rdi
and    $0xfffffffffffffffe,%rdi
movdqa 0x12ca(%rip),%xmm10
movdqa 0x12d1(%rip),%xmm11
movdqa 0x12d8(%rip),%xmm14
movdqa 0x12df(%rip),%xmm12
xor    %edx,%edx
pxor   %xmm13,%xmm13
movdqa 0x12e0(%rip),%xmm5
movdqa 0x12e8(%rip),%xmm6
movdqa 0x12ef(%rip),%xmm8
movdqa 0x12f6(%rip),%xmm9
nopw   0x0(%rax,%rax,1)
movdqu (%r12,%rdx,1),%xmm1
movdqa %xmm1,%xmm7
punpcklbw %xmm13,%xmm7
movdqa %xmm7,%xmm4
punpckhwd %xmm13,%xmm4
punpcklwd %xmm13,%xmm7
punpckhbw %xmm13,%xmm1
movdqa %xmm1,%xmm0
punpckhwd %xmm13,%xmm0
punpcklwd %xmm13,%xmm1
paddd  %xmm11,%xmm1
paddd  %xmm10,%xmm0
paddd  %xmm12,%xmm7
paddd  %xmm14,%xmm4
movdqa %xmm4,%xmm2
pmuludq %xmm5,%xmm2
pshufd $0xed,%xmm2,%xmm2
pshufd $0xf5,%xmm4,%xmm3
pmuludq %xmm5,%xmm3
pshufd $0xed,%xmm3,%xmm3
punpckldq %xmm3,%xmm2
movdqa %xmm4,%xmm3
psubd  %xmm2,%xmm3
psrld  $0x1,%xmm3
paddd  %xmm2,%xmm3
psrld  $0x6,%xmm3
pshufd $0xf5,%xmm3,%xmm2
pmuludq %xmm6,%xmm3
pshufd $0xe8,%xmm3,%xmm3
pmuludq %xmm6,%xmm2
pshufd $0xe8,%xmm2,%xmm2
punpckldq %xmm2,%xmm3
psubd  %xmm3,%xmm4
movdqa %xmm7,%xmm2
pmuludq %xmm5,%xmm2
pshufd $0xed,%xmm2,%xmm2
pshufd $0xf5,%xmm7,%xmm3
pmuludq %xmm5,%xmm3
pshufd $0xed,%xmm3,%xmm3
punpckldq %xmm3,%xmm2
movdqa %xmm7,%xmm3
psubd  %xmm2,%xmm3
psrld  $0x1,%xmm3
paddd  %xmm2,%xmm3
psrld  $0x6,%xmm3
pshufd $0xf5,%xmm3,%xmm2
pmuludq %xmm6,%xmm3
pshufd $0xe8,%xmm3,%xmm3
pmuludq %xmm6,%xmm2
pshufd $0xe8,%xmm2,%xmm2
punpckldq %xmm2,%xmm3
psubd  %xmm3,%xmm7
packuswb %xmm4,%xmm7
movdqa %xmm0,%xmm2
pmuludq %xmm5,%xmm2
pshufd $0xed,%xmm2,%xmm2
pshufd $0xf5,%xmm0,%xmm3
pmuludq %xmm5,%xmm3
pshufd $0xed,%xmm3,%xmm3
punpckldq %xmm3,%xmm2
movdqa %xmm0,%xmm3
psubd  %xmm2,%xmm3
psrld  $0x1,%xmm3
paddd  %xmm2,%xmm3
psrld  $0x6,%xmm3
pshufd $0xf5,%xmm3,%xmm2
pmuludq %xmm6,%xmm3
pshufd $0xe8,%xmm3,%xmm3
pmuludq %xmm6,%xmm2
pshufd $0xe8,%xmm2,%xmm2
punpckldq %xmm2,%xmm3
psubd  %xmm3,%xmm0
movdqa %xmm1,%xmm2
pmuludq %xmm5,%xmm2
pshufd $0xed,%xmm2,%xmm2
pshufd $0xf5,%xmm1,%xmm3
pmuludq %xmm5,%xmm3
pshufd $0xed,%xmm3,%xmm3
punpckldq %xmm3,%xmm2
movdqa %xmm1,%xmm3
psubd  %xmm2,%xmm3
psrld  $0x1,%xmm3
paddd  %xmm2,%xmm3
psrld  $0x6,%xmm3
pshufd $0xf5,%xmm3,%xmm2
pmuludq %xmm6,%xmm3
pshufd $0xe8,%xmm3,%xmm3
pmuludq %xmm6,%xmm2
pshufd $0xe8,%xmm2,%xmm2
punpckldq %xmm2,%xmm3
psubd  %xmm3,%xmm1
packuswb %xmm0,%xmm1
packuswb %xmm1,%xmm7
movdqu %xmm7,0x1(%rbx,%rdx,1)
movdqu 0x10(%r12,%rdx,1),%xmm0
movdqa %xmm0,%xmm2
punpcklbw %xmm13,%xmm2
movdqa %xmm2,%xmm3
punpckhwd %xmm13,%xmm3
punpcklwd %xmm13,%xmm2
punpckhbw %xmm13,%xmm0
movdqa %xmm0,%xmm4
punpckhwd %xmm13,%xmm4
punpcklwd %xmm13,%xmm0
movdqa %xmm11,%xmm1
paddd  %xmm8,%xmm1
paddd  %xmm0,%xmm1
movdqa %xmm10,%xmm0
paddd  %xmm8,%xmm0
paddd  %xmm4,%xmm0
movdqa %xmm12,%xmm7
paddd  %xmm8,%xmm7
paddd  %xmm2,%xmm7
movdqa %xmm14,%xmm2
paddd  %xmm8,%xmm2
paddd  %xmm3,%xmm2
movdqa %xmm2,%xmm3
pmuludq %xmm5,%xmm3
pshufd $0xed,%xmm3,%xmm3
pshufd $0xf5,%xmm2,%xmm4
pmuludq %xmm5,%xmm4
pshufd $0xed,%xmm4,%xmm4
punpckldq %xmm4,%xmm3
movdqa %xmm2,%xmm4
psubd  %xmm3,%xmm4
psrld  $0x1,%xmm4
paddd  %xmm3,%xmm4
psrld  $0x6,%xmm4
pshufd $0xf5,%xmm4,%xmm3
pmuludq %xmm6,%xmm4
pshufd $0xe8,%xmm4,%xmm4
pmuludq %xmm6,%xmm3
pshufd $0xe8,%xmm3,%xmm3
punpckldq %xmm3,%xmm4
psubd  %xmm4,%xmm2
movdqa %xmm7,%xmm3
pmuludq %xmm5,%xmm3
pshufd $0xed,%xmm3,%xmm3
pshufd $0xf5,%xmm7,%xmm4
pmuludq %xmm5,%xmm4
pshufd $0xed,%xmm4,%xmm4
punpckldq %xmm4,%xmm3
movdqa %xmm7,%xmm4
psubd  %xmm3,%xmm4
psrld  $0x1,%xmm4
paddd  %xmm3,%xmm4
psrld  $0x6,%xmm4
pshufd $0xf5,%xmm4,%xmm3
pmuludq %xmm6,%xmm4
pshufd $0xe8,%xmm4,%xmm4
pmuludq %xmm6,%xmm3
pshufd $0xe8,%xmm3,%xmm3
punpckldq %xmm3,%xmm4
psubd  %xmm4,%xmm7
packuswb %xmm2,%xmm7
movdqa %xmm0,%xmm2
pmuludq %xmm5,%xmm2
pshufd $0xed,%xmm2,%xmm2
pshufd $0xf5,%xmm0,%xmm3
pmuludq %xmm5,%xmm3
pshufd $0xed,%xmm3,%xmm3
punpckldq %xmm3,%xmm2
movdqa %xmm0,%xmm3
psubd  %xmm2,%xmm3
psrld  $0x1,%xmm3
paddd  %xmm2,%xmm3
psrld  $0x6,%xmm3
pshufd $0xf5,%xmm3,%xmm2
pmuludq %xmm6,%xmm3
pshufd $0xe8,%xmm3,%xmm3
pmuludq %xmm6,%xmm2
pshufd $0xe8,%xmm2,%xmm2
punpckldq %xmm2,%xmm3
psubd  %xmm3,%xmm0
movdqa %xmm1,%xmm2
pmuludq %xmm5,%xmm2
pshufd $0xed,%xmm2,%xmm2
pshufd $0xf5,%xmm1,%xmm3
pmuludq %xmm5,%xmm3
pshufd $0xed,%xmm3,%xmm3
punpckldq %xmm3,%xmm2
movdqa %xmm1,%xmm3
psubd  %xmm2,%xmm3
psrld  $0x1,%xmm3
paddd  %xmm2,%xmm3
psrld  $0x6,%xmm3
pshufd $0xf5,%xmm3,%xmm2
pmuludq %xmm6,%xmm3
pshufd $0xe8,%xmm3,%xmm3
pmuludq %xmm6,%xmm2
pshufd $0xe8,%xmm2,%xmm2
punpckldq %xmm2,%xmm3
psubd  %xmm3,%xmm1
packuswb %xmm0,%xmm1
packuswb %xmm1,%xmm7
movdqu %xmm7,0x11(%rbx,%rdx,1)
add    $0x20,%rdx
paddd  %xmm9,%xmm12
paddd  %xmm9,%xmm14
paddd  %xmm9,%xmm11
paddd  %xmm9,%xmm10
add    $0xfffffffffffffffe,%rdi
jne    1d80 <apply_mask+0xc60>
jmp    2586 <apply_mask+0x1466>
mov    %ebp,%ecx
and    $0xffffffe0,%ecx
lea    -0x20(%rcx),%rsi
mov    %rsi,%rdi
shr    $0x5,%rdi
add    $0x1,%rdi
mov    %edi,%edx
and    $0x3,%edx
cmp    $0x60,%rsi
jae    2770 <apply_mask+0x1650>
xor    %esi,%esi
jmp    27e5 <apply_mask+0x16c5>
movdqa 0xf95(%rip),%xmm10
movdqa 0xf9c(%rip),%xmm11
movdqa 0xfa3(%rip),%xmm14
movdqa 0xfaa(%rip),%xmm12
xor    %edx,%edx
test   $0x1,%sil
je     233d <apply_mask+0x121d>
movdqu (%r12,%rdx,1),%xmm0
pxor   %xmm1,%xmm1
movdqa %xmm0,%xmm2
punpcklbw %xmm1,%xmm2
movdqa %xmm2,%xmm3
punpckhwd %xmm1,%xmm3
paddd  %xmm3,%xmm14
punpcklwd %xmm1,%xmm2
paddd  %xmm2,%xmm12
punpckhbw %xmm1,%xmm0
movdqa %xmm0,%xmm2
punpckhwd %xmm1,%xmm2
paddd  %xmm2,%xmm10
punpcklwd %xmm1,%xmm0
paddd  %xmm0,%xmm11
movdqa 0xe84(%rip),%xmm0
movdqa %xmm14,%xmm1
pmuludq %xmm0,%xmm1
pshufd $0xed,%xmm1,%xmm1
pshufd $0xf5,%xmm14,%xmm2
pmuludq %xmm0,%xmm2
pshufd $0xed,%xmm2,%xmm2
punpckldq %xmm2,%xmm1
movdqa %xmm14,%xmm2
psubd  %xmm1,%xmm2
psrld  $0x1,%xmm2
paddd  %xmm1,%xmm2
psrld  $0x6,%xmm2
movdqa 0xe54(%rip),%xmm1
pshufd $0xf5,%xmm2,%xmm3
pmuludq %xmm1,%xmm2
pshufd $0xe8,%xmm2,%xmm2
pmuludq %xmm1,%xmm3
pshufd $0xe8,%xmm3,%xmm3
punpckldq %xmm3,%xmm2
psubd  %xmm2,%xmm14
movdqa %xmm12,%xmm2
pmuludq %xmm0,%xmm2
pshufd $0xed,%xmm2,%xmm2
pshufd $0xf5,%xmm12,%xmm3
pmuludq %xmm0,%xmm3
pshufd $0xed,%xmm3,%xmm3
punpckldq %xmm3,%xmm2
movdqa %xmm12,%xmm3
psubd  %xmm2,%xmm3
psrld  $0x1,%xmm3
paddd  %xmm2,%xmm3
psrld  $0x6,%xmm3
pshufd $0xf5,%xmm3,%xmm2
pmuludq %xmm1,%xmm3
pshufd $0xe8,%xmm3,%xmm3
pmuludq %xmm1,%xmm2
pshufd $0xe8,%xmm2,%xmm2
punpckldq %xmm2,%xmm3
psubd  %xmm3,%xmm12
packuswb %xmm14,%xmm12
movdqa %xmm10,%xmm2
pmuludq %xmm0,%xmm2
pshufd $0xed,%xmm2,%xmm2
pshufd $0xf5,%xmm10,%xmm3
pmuludq %xmm0,%xmm3
pshufd $0xed,%xmm3,%xmm3
punpckldq %xmm3,%xmm2
movdqa %xmm10,%xmm3
psubd  %xmm2,%xmm3
psrld  $0x1,%xmm3
paddd  %xmm2,%xmm3
psrld  $0x6,%xmm3
pshufd $0xf5,%xmm3,%xmm2
pmuludq %xmm1,%xmm3
pshufd $0xe8,%xmm3,%xmm3
pmuludq %xmm1,%xmm2
pshufd $0xe8,%xmm2,%xmm2
punpckldq %xmm2,%xmm3
psubd  %xmm3,%xmm10
movdqa %xmm11,%xmm2
pmuludq %xmm0,%xmm2
pshufd $0xed,%xmm2,%xmm2
pshufd $0xf5,%xmm11,%xmm3
pmuludq %xmm0,%xmm3
pshufd $0xed,%xmm3,%xmm0
punpckldq %xmm0,%xmm2
movdqa %xmm11,%xmm0
psubd  %xmm2,%xmm0
psrld  $0x1,%xmm0
paddd  %xmm2,%xmm0
psrld  $0x6,%xmm0
pshufd $0xf5,%xmm0,%xmm2
pmuludq %xmm1,%xmm0
pshufd $0xe8,%xmm0,%xmm0
pmuludq %xmm1,%xmm2
pshufd $0xe8,%xmm2,%xmm1
punpckldq %xmm1,%xmm0
psubd  %xmm0,%xmm11
packuswb %xmm10,%xmm11
packuswb %xmm11,%xmm12
or     $0x1,%rdx
movdqu %xmm12,(%rbx,%rdx,1)
cmp    %r8,%rcx
je     284b <apply_mask+0x172b>
lea    (%rcx,%rcx,2),%edx
jmp    1240 <apply_mask+0x120>
movdqa 0xd29(%rip),%xmm10
movdqa 0xd30(%rip),%xmm11
movdqa 0xd37(%rip),%xmm14
movdqa 0xd3e(%rip),%xmm12
xor    %edx,%edx
test   $0x1,%sil
je     2549 <apply_mask+0x1429>
movdqu (%r12,%rdx,1),%xmm0
pxor   %xmm1,%xmm1
movdqa %xmm0,%xmm2
punpcklbw %xmm1,%xmm2
movdqa %xmm2,%xmm3
punpckhwd %xmm1,%xmm3
paddd  %xmm3,%xmm14
punpcklwd %xmm1,%xmm2
paddd  %xmm2,%xmm12
punpckhbw %xmm1,%xmm0
movdqa %xmm0,%xmm2
punpckhwd %xmm1,%xmm2
paddd  %xmm2,%xmm10
punpcklwd %xmm1,%xmm0
paddd  %xmm0,%xmm11
movdqa 0xc78(%rip),%xmm0
movdqa %xmm14,%xmm1
pmuludq %xmm0,%xmm1
pshufd $0xed,%xmm1,%xmm1
pshufd $0xf5,%xmm14,%xmm2
pmuludq %xmm0,%xmm2
pshufd $0xed,%xmm2,%xmm2
punpckldq %xmm2,%xmm1
movdqa %xmm14,%xmm2
psubd  %xmm1,%xmm2
psrld  $0x1,%xmm2
paddd  %xmm1,%xmm2
psrld  $0x6,%xmm2
movdqa 0xc48(%rip),%xmm1
pshufd $0xf5,%xmm2,%xmm3
pmuludq %xmm1,%xmm2
pshufd $0xe8,%xmm2,%xmm2
pmuludq %xmm1,%xmm3
pshufd $0xe8,%xmm3,%xmm3
punpckldq %xmm3,%xmm2
psubd  %xmm2,%xmm14
movdqa %xmm12,%xmm2
pmuludq %xmm0,%xmm2
pshufd $0xed,%xmm2,%xmm2
pshufd $0xf5,%xmm12,%xmm3
pmuludq %xmm0,%xmm3
pshufd $0xed,%xmm3,%xmm3
punpckldq %xmm3,%xmm2
movdqa %xmm12,%xmm3
psubd  %xmm2,%xmm3
psrld  $0x1,%xmm3
paddd  %xmm2,%xmm3
psrld  $0x6,%xmm3
pshufd $0xf5,%xmm3,%xmm2
pmuludq %xmm1,%xmm3
pshufd $0xe8,%xmm3,%xmm3
pmuludq %xmm1,%xmm2
pshufd $0xe8,%xmm2,%xmm2
punpckldq %xmm2,%xmm3
psubd  %xmm3,%xmm12
packuswb %xmm14,%xmm12
movdqa %xmm10,%xmm2
pmuludq %xmm0,%xmm2
pshufd $0xed,%xmm2,%xmm2
pshufd $0xf5,%xmm10,%xmm3
pmuludq %xmm0,%xmm3
pshufd $0xed,%xmm3,%xmm3
punpckldq %xmm3,%xmm2
movdqa %xmm10,%xmm3
psubd  %xmm2,%xmm3
psrld  $0x1,%xmm3
paddd  %xmm2,%xmm3
psrld  $0x6,%xmm3
pshufd $0xf5,%xmm3,%xmm2
pmuludq %xmm1,%xmm3
pshufd $0xe8,%xmm3,%xmm3
pmuludq %xmm1,%xmm2
pshufd $0xe8,%xmm2,%xmm2
punpckldq %xmm2,%xmm3
psubd  %xmm3,%xmm10
movdqa %xmm11,%xmm2
pmuludq %xmm0,%xmm2
pshufd $0xed,%xmm2,%xmm2
pshufd $0xf5,%xmm11,%xmm3
pmuludq %xmm0,%xmm3
pshufd $0xed,%xmm3,%xmm0
punpckldq %xmm0,%xmm2
movdqa %xmm11,%xmm0
psubd  %xmm2,%xmm0
psrld  $0x1,%xmm0
paddd  %xmm2,%xmm0
psrld  $0x6,%xmm0
pshufd $0xf5,%xmm0,%xmm2
pmuludq %xmm1,%xmm0
pshufd $0xe8,%xmm0,%xmm0
pmuludq %xmm1,%xmm2
pshufd $0xe8,%xmm2,%xmm1
punpckldq %xmm1,%xmm0
psubd  %xmm0,%xmm11
packuswb %xmm10,%xmm11
packuswb %xmm11,%xmm12
or     $0x1,%rdx
movdqu %xmm12,(%rbx,%rdx,1)
cmp    %r8,%rcx
je     284b <apply_mask+0x172b>
lea    0x0(,%rcx,8),%edx
sub    %ecx,%edx
jmp    1337 <apply_mask+0x217>
movdqa 0xa97(%rip),%xmm10
movdqa 0xa9e(%rip),%xmm11
movdqa 0xaa5(%rip),%xmm14
movdqa 0xaac(%rip),%xmm12
xor    %edx,%edx
test   $0x1,%sil
je     275b <apply_mask+0x163b>
movdqu (%r12,%rdx,1),%xmm0
pxor   %xmm1,%xmm1
movdqa %xmm0,%xmm2
punpcklbw %xmm1,%xmm2
movdqa %xmm2,%xmm3
punpckhwd %xmm1,%xmm3
paddd  %xmm3,%xmm14
punpcklwd %xmm1,%xmm2
paddd  %xmm2,%xmm12
punpckhbw %xmm1,%xmm0
movdqa %xmm0,%xmm2
punpckhwd %xmm1,%xmm2
paddd  %xmm2,%xmm10
punpcklwd %xmm1,%xmm0
paddd  %xmm0,%xmm11
movdqa 0xa66(%rip),%xmm0
movdqa %xmm14,%xmm1
pmuludq %xmm0,%xmm1
pshufd $0xed,%xmm1,%xmm1
pshufd $0xf5,%xmm14,%xmm2
pmuludq %xmm0,%xmm2
pshufd $0xed,%xmm2,%xmm2
punpckldq %xmm2,%xmm1
movdqa %xmm14,%xmm2
psubd  %xmm1,%xmm2
psrld  $0x1,%xmm2
paddd  %xmm1,%xmm2
psrld  $0x6,%xmm2
movdqa 0xa36(%rip),%xmm1
pshufd $0xf5,%xmm2,%xmm3
pmuludq %xmm1,%xmm2
pshufd $0xe8,%xmm2,%xmm2
pmuludq %xmm1,%xmm3
pshufd $0xe8,%xmm3,%xmm3
punpckldq %xmm3,%xmm2
psubd  %xmm2,%xmm14
movdqa %xmm12,%xmm2
pmuludq %xmm0,%xmm2
pshufd $0xed,%xmm2,%xmm2
pshufd $0xf5,%xmm12,%xmm3
pmuludq %xmm0,%xmm3
pshufd $0xed,%xmm3,%xmm3
punpckldq %xmm3,%xmm2
movdqa %xmm12,%xmm3
psubd  %xmm2,%xmm3
psrld  $0x1,%xmm3
paddd  %xmm2,%xmm3
psrld  $0x6,%xmm3
pshufd $0xf5,%xmm3,%xmm2
pmuludq %xmm1,%xmm3
pshufd $0xe8,%xmm3,%xmm3
pmuludq %xmm1,%xmm2
pshufd $0xe8,%xmm2,%xmm2
punpckldq %xmm2,%xmm3
psubd  %xmm3,%xmm12
packuswb %xmm14,%xmm12
movdqa %xmm10,%xmm2
pmuludq %xmm0,%xmm2
pshufd $0xed,%xmm2,%xmm2
pshufd $0xf5,%xmm10,%xmm3
pmuludq %xmm0,%xmm3
pshufd $0xed,%xmm3,%xmm3
punpckldq %xmm3,%xmm2
movdqa %xmm10,%xmm3
psubd  %xmm2,%xmm3
psrld  $0x1,%xmm3
paddd  %xmm2,%xmm3
psrld  $0x6,%xmm3
pshufd $0xf5,%xmm3,%xmm2
pmuludq %xmm1,%xmm3
pshufd $0xe8,%xmm3,%xmm3
pmuludq %xmm1,%xmm2
pshufd $0xe8,%xmm2,%xmm2
punpckldq %xmm2,%xmm3
psubd  %xmm3,%xmm10
movdqa %xmm11,%xmm2
pmuludq %xmm0,%xmm2
pshufd $0xed,%xmm2,%xmm2
pshufd $0xf5,%xmm11,%xmm3
pmuludq %xmm0,%xmm3
pshufd $0xed,%xmm3,%xmm0
punpckldq %xmm0,%xmm2
movdqa %xmm11,%xmm0
psubd  %xmm2,%xmm0
psrld  $0x1,%xmm0
paddd  %xmm2,%xmm0
psrld  $0x6,%xmm0
pshufd $0xf5,%xmm0,%xmm2
pmuludq %xmm1,%xmm0
pshufd $0xe8,%xmm0,%xmm0
pmuludq %xmm1,%xmm2
pshufd $0xe8,%xmm2,%xmm1
punpckldq %xmm1,%xmm0
psubd  %xmm0,%xmm11
packuswb %xmm10,%xmm11
packuswb %xmm11,%xmm12
or     $0x1,%rdx
movdqu %xmm12,(%rbx,%rdx,1)
cmp    %r8,%rcx
je     284b <apply_mask+0x172b>
mov    %ecx,%edx
shl    $0x4,%edx
add    %ecx,%edx
jmp    1427 <apply_mask+0x307>
and    $0xfffffffffffffffc,%rdi
xor    %esi,%esi
cs nopw 0x0(%rax,%rax,1)
movups (%r12,%rsi,1),%xmm0
movups 0x10(%r12,%rsi,1),%xmm1
movups %xmm0,0x1(%rbx,%rsi,1)
movups %xmm1,0x11(%rbx,%rsi,1)
movups 0x20(%r12,%rsi,1),%xmm0
movups 0x30(%r12,%rsi,1),%xmm1
movups %xmm0,0x21(%rbx,%rsi,1)
movups %xmm1,0x31(%rbx,%rsi,1)
movups 0x40(%r12,%rsi,1),%xmm0
movups 0x50(%r12,%rsi,1),%xmm1
movups %xmm0,0x41(%rbx,%rsi,1)
movups %xmm1,0x51(%rbx,%rsi,1)
movdqu 0x60(%r12,%rsi,1),%xmm0
movdqu 0x70(%r12,%rsi,1),%xmm1
movdqu %xmm0,0x61(%rbx,%rsi,1)
movdqu %xmm1,0x71(%rbx,%rsi,1)
sub    $0xffffffffffffff80,%rsi
add    $0xfffffffffffffffc,%rdi
jne    2780 <apply_mask+0x1660>
test   %rdx,%rdx
je     2819 <apply_mask+0x16f9>
nopw   0x0(%rax,%rax,1)
movdqu (%r12,%rsi,1),%xmm0
movdqu 0x10(%r12,%rsi,1),%xmm1
mov    %rsi,%rdi
or     $0x1,%rdi
movdqu %xmm0,(%rbx,%rdi,1)
movdqu %xmm1,0x10(%rbx,%rdi,1)
add    $0x20,%rsi
add    $0xffffffffffffffff,%rdx
jne    27f0 <apply_mask+0x16d0>
cmp    %rbp,%rcx
je     284b <apply_mask+0x172b>
test   $0x18,%bpl
je     1198 <apply_mask+0x78>
mov    %rcx,%rdx
mov    %ebp,%ecx
and    $0xfffffff8,%ecx
mov    (%r12,%rdx,1),%rsi
mov    %rsi,0x1(%rbx,%rdx,1)
add    $0x8,%rdx
cmp    %rdx,%rcx
jne    2830 <apply_mask+0x1710>
cmp    %rbp,%rcx
jne    1198 <apply_mask+0x78>
add    $0x1,%r15d
mov    %r15d,%edi
mov    %r14d,%esi
mov    %rbx,%rdx
pop    %rbx
pop    %r12
pop    %r14
pop    %r15
pop    %rbp
jmp    1030 <rsencode@plt>

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

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