void rsencode(int nd, int nc, unsigned char *wd) {
  int i, j, k, nw, start, step, root[113], c[113];
  root[0] = 1;
  for (i = 1; i <= nc; i++)
    root[i] = (3 * root[i - 1]) % 113;
  nw = nd + nc;
  step = (nw + 113 - 2) / (113 - 1);
  for (start = 0; start < step; start++) {
    int ND = (nd - start + step - 1) / step,
        NW = (nw - start + step - 1) / step, NC = NW - ND;
    for (i = 1; i <= NC; i++)
      c[i] = 0;
    c[0] = 1;
    for (i = 1; i <= NC; i++) {
      for (j = NC; j >= 1; j--) {
        c[j] = (113 + c[j] - (root[i] * c[j - 1]) % 113) % 113;
      }
    }
    for (i = ND; i < NW; i++)
      wd[start + i * step] = 0;
    for (i = 0; i < ND; i++) {
      k = (wd[start + i * step] + wd[start + ND * step]) % 113;
      for (j = 0; j < NC - 1; j++) {
        wd[start + (ND + j) * step] =
            (113 - ((c[j + 1] * k) % 113) + wd[start + (ND + j + 1) * step]) %
            113;
      }
      wd[start + (ND + NC - 1) * step] = (113 - ((c[NC] * k) % 113)) % 113;
    }
    for (i = ND; i < NW; i++)
      wd[start + i * step] = (113 - wd[start + i * step]) % 113;
  }
}


x86 assembly (clang, -O0):
<rsencode>:
push   %rbp
mov    %rsp,%rbp
sub    $0x350,%rsp
mov    %edi,-0x4(%rbp)
mov    %esi,-0x8(%rbp)
mov    %rdx,-0x10(%rbp)
movl   $0x1,-0x1f0(%rbp)
movl   $0x1,-0x14(%rbp)
mov    -0x14(%rbp),%eax
cmp    -0x8(%rbp),%eax
jg     1163 <rsencode+0x63>
mov    -0x14(%rbp),%eax
sub    $0x1,%eax
cltq
imul   $0x3,-0x1f0(%rbp,%rax,4),%eax
03
mov    $0x71,%ecx
cltd
idiv   %ecx
movslq -0x14(%rbp),%rax
mov    %edx,-0x1f0(%rbp,%rax,4)
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14(%rbp)
jmp    1126 <rsencode+0x26>
mov    -0x4(%rbp),%eax
add    -0x8(%rbp),%eax
mov    %eax,-0x20(%rbp)
mov    -0x20(%rbp),%eax
add    $0x71,%eax
sub    $0x2,%eax
mov    $0x70,%ecx
cltd
idiv   %ecx
mov    %eax,-0x28(%rbp)
movl   $0x0,-0x24(%rbp)
mov    -0x24(%rbp),%eax
cmp    -0x28(%rbp),%eax
jge    149b <rsencode+0x39b>
mov    -0x4(%rbp),%eax
sub    -0x24(%rbp),%eax
add    -0x28(%rbp),%eax
sub    $0x1,%eax
cltd
idivl  -0x28(%rbp)
mov    %eax,-0x3c4(%rbp)
mov    -0x20(%rbp),%eax
sub    -0x24(%rbp),%eax
add    -0x28(%rbp),%eax
sub    $0x1,%eax
cltd
idivl  -0x28(%rbp)
mov    %eax,-0x3c8(%rbp)
mov    -0x3c8(%rbp),%eax
sub    -0x3c4(%rbp),%eax
mov    %eax,-0x3cc(%rbp)
movl   $0x1,-0x14(%rbp)
mov    -0x14(%rbp),%eax
cmp    -0x3cc(%rbp),%eax
jg     1204 <rsencode+0x104>
movslq -0x14(%rbp),%rax
movl   $0x0,-0x3c0(%rbp,%rax,4)
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14(%rbp)
jmp    11d8 <rsencode+0xd8>
movl   $0x1,-0x3c0(%rbp)
movl   $0x1,-0x14(%rbp)
mov    -0x14(%rbp),%eax
cmp    -0x3cc(%rbp),%eax
jg     12ab <rsencode+0x1ab>
mov    -0x3cc(%rbp),%eax
mov    %eax,-0x18(%rbp)
cmpl   $0x1,-0x18(%rbp)
jl     1298 <rsencode+0x198>
movslq -0x18(%rbp),%rax
mov    -0x3c0(%rbp,%rax,4),%eax
add    $0x71,%eax
mov    %eax,-0x3d0(%rbp)
movslq -0x14(%rbp),%rax
mov    -0x1f0(%rbp,%rax,4),%eax
mov    -0x18(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
imul   -0x3c0(%rbp,%rcx,4),%eax
ff
mov    $0x71,%ecx
cltd
idiv   %ecx
mov    -0x3d0(%rbp),%eax
sub    %edx,%eax
mov    $0x71,%ecx
cltd
idiv   %ecx
movslq -0x18(%rbp),%rax
mov    %edx,-0x3c0(%rbp,%rax,4)
mov    -0x18(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x18(%rbp)
jmp    122d <rsencode+0x12d>
jmp    129d <rsencode+0x19d>
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14(%rbp)
jmp    1215 <rsencode+0x115>
mov    -0x3c4(%rbp),%eax
mov    %eax,-0x14(%rbp)
mov    -0x14(%rbp),%eax
cmp    -0x3c8(%rbp),%eax
jge    12e8 <rsencode+0x1e8>
mov    -0x10(%rbp),%rax
mov    -0x24(%rbp),%ecx
mov    -0x14(%rbp),%edx
imul   -0x28(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
movb   $0x0,(%rax,%rcx,1)
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14(%rbp)
jmp    12b4 <rsencode+0x1b4>
movl   $0x0,-0x14(%rbp)
mov    -0x14(%rbp),%eax
cmp    -0x3c4(%rbp),%eax
jge    1426 <rsencode+0x326>
mov    -0x10(%rbp),%rax
mov    -0x24(%rbp),%ecx
mov    -0x14(%rbp),%edx
imul   -0x28(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
movzbl (%rax,%rcx,1),%eax
mov    -0x10(%rbp),%rcx
mov    -0x24(%rbp),%edx
mov    -0x3c4(%rbp),%esi
imul   -0x28(%rbp),%esi
add    %esi,%edx
movslq %edx,%rdx
movzbl (%rcx,%rdx,1),%ecx
add    %ecx,%eax
mov    $0x71,%ecx
cltd
idiv   %ecx
mov    %edx,-0x1c(%rbp)
movl   $0x0,-0x18(%rbp)
mov    -0x18(%rbp),%eax
mov    -0x3cc(%rbp),%ecx
sub    $0x1,%ecx
cmp    %ecx,%eax
jge    13cd <rsencode+0x2cd>
mov    -0x18(%rbp),%eax
add    $0x1,%eax
cltq
mov    -0x3c0(%rbp,%rax,4),%eax
imul   -0x1c(%rbp),%eax
mov    $0x71,%ecx
cltd
idiv   %ecx
mov    $0x71,%eax
sub    %edx,%eax
mov    -0x10(%rbp),%rcx
mov    -0x24(%rbp),%edx
mov    -0x3c4(%rbp),%esi
add    -0x18(%rbp),%esi
add    $0x1,%esi
imul   -0x28(%rbp),%esi
add    %esi,%edx
movslq %edx,%rdx
movzbl (%rcx,%rdx,1),%ecx
add    %ecx,%eax
mov    $0x71,%ecx
cltd
idiv   %ecx
mov    -0x10(%rbp),%rax
mov    -0x24(%rbp),%ecx
mov    -0x3c4(%rbp),%esi
add    -0x18(%rbp),%esi
imul   -0x28(%rbp),%esi
add    %esi,%ecx
movslq %ecx,%rcx
mov    %dl,(%rax,%rcx,1)
mov    -0x18(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x18(%rbp)
jmp    1343 <rsencode+0x243>
movslq -0x3cc(%rbp),%rax
mov    -0x3c0(%rbp,%rax,4),%eax
imul   -0x1c(%rbp),%eax
mov    $0x71,%ecx
cltd
idiv   %ecx
mov    $0x71,%eax
sub    %edx,%eax
mov    $0x71,%ecx
cltd
idiv   %ecx
mov    -0x10(%rbp),%rax
mov    -0x24(%rbp),%ecx
mov    -0x3c4(%rbp),%esi
add    -0x3cc(%rbp),%esi
sub    $0x1,%esi
imul   -0x28(%rbp),%esi
add    %esi,%ecx
movslq %ecx,%rcx
mov    %dl,(%rax,%rcx,1)
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14(%rbp)
jmp    12ef <rsencode+0x1ef>
mov    -0x3c4(%rbp),%eax
mov    %eax,-0x14(%rbp)
mov    -0x14(%rbp),%eax
cmp    -0x3c8(%rbp),%eax
jge    1488 <rsencode+0x388>
mov    -0x10(%rbp),%rax
mov    -0x24(%rbp),%ecx
mov    -0x14(%rbp),%edx
imul   -0x28(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
movzbl (%rax,%rcx,1),%ecx
mov    $0x71,%eax
sub    %ecx,%eax
mov    $0x71,%ecx
cltd
idiv   %ecx
mov    -0x10(%rbp),%rax
mov    -0x24(%rbp),%ecx
mov    -0x14(%rbp),%esi
imul   -0x28(%rbp),%esi
add    %esi,%ecx
movslq %ecx,%rcx
mov    %dl,(%rax,%rcx,1)
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14(%rbp)
jmp    142f <rsencode+0x32f>
jmp    148d <rsencode+0x38d>
mov    -0x24(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x24(%rbp)
jmp    1187 <rsencode+0x87>
add    $0x350,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<rsencode>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x458,%rsp
test   %esi,%esi
jle    11ed <rsencode+0xdd>
mov    %esi,%r8d
cmp    $0x1,%esi
jne    114a <rsencode+0x3a>
mov    $0x1,%ecx
mov    $0x3,%ebx
test   $0x1,%r8b
jne    11e6 <rsencode+0xd6>
jmp    11ed <rsencode+0xdd>
mov    %r8d,%r9d
and    $0xfffffffe,%r9d
neg    %r9
mov    $0x1,%ecx
mov    $0x1,%ebp
xchg   %ax,%ax
lea    0x0(%rbp,%rbp,2),%ebp
movslq %ebp,%rbp
imul   $0x487ede05,%rbp,%rbx
mov    %rbx,%rax
shr    $0x3f,%rax
sar    $0x25,%rbx
add    %eax,%ebx
imul   $0x71,%ebx,%eax
sub    %eax,%ebp
mov    %ebp,0x290(%rsp,%rcx,4)
lea    0x0(%rbp,%rbp,2),%eax
movslq %eax,%rbp
imul   $0x487ede05,%rbp,%rax
mov    %rax,%rbx
shr    $0x3f,%rbx
sar    $0x25,%rax
add    %ebx,%eax
imul   $0x71,%eax,%eax
sub    %eax,%ebp
mov    %ebp,0x294(%rsp,%rcx,4)
lea    (%r9,%rcx,1),%rax
add    $0x2,%rax
add    $0x2,%rcx
cmp    $0x1,%rax
jne    1160 <rsencode+0x50>
lea    0x0(%rbp,%rbp,2),%eax
movslq %eax,%rbx
imul   $0x487ede05,%rbx,%rax
mov    %rax,%rbp
shr    $0x3f,%rbp
sar    $0x25,%rax
add    %ebp,%eax
imul   $0x71,%eax,%eax
sub    %eax,%ebx
test   $0x1,%r8b
je     11ed <rsencode+0xdd>
mov    %ebx,0x290(%rsp,%rcx,4)
lea    (%rsi,%rdi,1),%eax
test   %eax,%eax
jle    1f48 <rsencode+0xe38>
mov    %rax,%rcx
lea    (%rsi,%rdi,1),%eax
add    $0x6f,%eax
cltq
imul   $0xffffffff92492493,%rax,%rax
shr    $0x20,%rax
lea    (%rax,%rcx,1),%esi
add    $0x6f,%esi
mov    %esi,%eax
shr    $0x1f,%eax
sar    $0x6,%esi
add    %eax,%esi
lea    (%rsi,%rdi,1),%eax
add    $0xffffffff,%eax
mov    %rax,0xb0(%rsp)
lea    (%rsi,%rcx,1),%eax
add    $0xffffffff,%eax
mov    %eax,0x74(%rsp)
movslq %esi,%r12
cmp    $0x2,%r12d
mov    $0x1,%eax
mov    %rsi,0x88(%rsp)
cmovge %esi,%eax
mov    %rax,0xa8(%rsp)
add    $0xffffffff,%ecx
mov    %rcx,0x38(%rsp)
lea    0x10(%rdx),%rax
mov    %rax,0x78(%rsp)
mov    %r12,%rax
shl    $0x7,%rax
mov    %rax,0x98(%rsp)
mov    %r12,%rax
shl    $0x5,%rax
mov    %rax,0x80(%rsp)
lea    0x0(,%r12,8),%rax
mov    %rax,0x30(%rsp)
lea    0x0(,%r12,4),%rax
mov    %rax,0x48(%rsp)
lea    (%r12,%r12,1),%rax
mov    %rax,0xa0(%rsp)
xor    %esi,%esi
pxor   %xmm8,%xmm8
movdqa 0xd57(%rip),%xmm7
movdqa 0xd3f(%rip),%xmm6
movdqa 0xd56(%rip),%xmm9
movdqa 0xd5d(%rip),%xmm10
movdqa 0xd64(%rip),%xmm11
mov    %rdx,0x8(%rsp)
xor    %ecx,%ecx
mov    %rdx,0x20(%rsp)
jmp    131a <rsencode+0x20a>
nopw   0x0(%rax,%rax,1)
mov    0x18(%rsp),%rax
mov    %eax,%ecx
add    $0x1,%rax
not    %ecx
addq   $0x1,0x78(%rsp)
addq   $0x1,0x8(%rsp)
mov    %rax,%rsi
cmp    0xa8(%rsp),%rax
je     1f48 <rsencode+0xe38>
mov    %rsi,0x18(%rsp)
mov    0xb0(%rsp),%rax
add    %ecx,%eax
cltd
mov    0x88(%rsp),%rsi
idiv   %esi
mov    %eax,%edi
add    0x74(%rsp),%ecx
mov    %ecx,%eax
cltd
idiv   %esi
mov    %eax,%ebx
sub    %edi,%ebx
test   %ebx,%ebx
mov    %rax,0x40(%rsp)
mov    %edi,0x10(%rsp)
mov    %rbx,0x90(%rsp)
jle    1670 <rsencode+0x560>
mov    %edi,%r14d
not    %r14d
add    %eax,%r14d
lea    0x0(,%r14,4),%r15
lea    0x4(,%r14,4),%rdx
lea    0xc4(%rsp),%r13
mov    %r13,%rdi
xor    %esi,%esi
call   1030 <memset@plt>
movdqa 0xcb0(%rip),%xmm11
movdqa 0xc97(%rip),%xmm10
movdqa 0xc7e(%rip),%xmm9
movdqa 0xc56(%rip),%xmm6
movdqa 0xc5e(%rip),%xmm7
pxor   %xmm8,%xmm8
movl   $0x1,0xc0(%rsp)
mov    %ebx,%ebp
lea    0x1(%rbx),%eax
mov    %rax,0x68(%rsp)
lea    (%rsp,%rbp,4),%rax
add    $0xc0,%rax
lea    (%rsp,%r14,4),%rcx
add    $0xc0,%rcx
mov    %rbp,%rdx
sub    %r14,%rdx
lea    (%rsp,%rdx,4),%rsi
add    $0xc0,%rsi
lea    0x0(,%rbp,4),%r11
add    %r13,%r11
mov    %rax,%rdi
sub    %r15,%rdi
cmp    %rax,%rdi
seta   %al
lea    0x0(,%r14,4),%rdi
add    %r13,%rdi
lea    0xc0(%rsp),%rdx
cmp    %rcx,%rdx
seta   %cl
lea    0x1(%r14),%r10
or     %al,%cl
mov    %cl,0x14(%rsp)
cmp    %rdi,%rsi
setb   %al
cmp    %r11,%rdx
setb   %cl
and    %al,%cl
mov    %cl,0x60(%rsp)
mov    %r10,0x58(%rsp)
and    $0xfffffffffffffffc,%r10
mov    %rbp,%rax
sub    %r10,%rax
mov    %rax,0xb8(%rsp)
mov    %r10,0x50(%rsp)
neg    %r10
mov    $0xffffffff,%eax
mov    %rbp,0x28(%rsp)
lea    (%rax,%rbp,1),%r13
mov    $0x1,%r9d
jmp    148f <rsencode+0x37f>
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
add    $0x1,%r9
cmp    0x68(%rsp),%r9
je     167b <rsencode+0x56b>
cmp    $0x3,%r14d
setb   %al
mov    0x290(%rsp,%r9,4),%r15d
or     0x14(%rsp),%al
or     0x60(%rsp),%al
mov    0x28(%rsp),%rcx
jne    15ea <rsencode+0x4da>
movd   %r15d,%xmm0
pshufd $0x0,%xmm0,%xmm0
xor    %r8d,%r8d
xchg   %ax,%ax
movdqu -0x10(%r11,%r8,4),%xmm1
paddd  %xmm6,%xmm1
pshufd $0x1b,%xmm1,%xmm1
lea    (%r8,%r13,1),%eax
movdqu 0xb4(%rsp,%rax,4),%xmm2
pshufd $0x1b,%xmm2,%xmm4
pshufd $0xa,%xmm2,%xmm2
pshufd $0xf5,%xmm0,%xmm5
pmuludq %xmm2,%xmm5
pshufd $0xe8,%xmm5,%xmm2
pmuludq %xmm0,%xmm4
pshufd $0xe8,%xmm4,%xmm3
punpckldq %xmm2,%xmm3
pmuludq %xmm7,%xmm5
pshufd $0xed,%xmm5,%xmm2
pmuludq %xmm7,%xmm4
pshufd $0xed,%xmm4,%xmm4
punpckldq %xmm2,%xmm4
pxor   %xmm2,%xmm2
pcmpgtd %xmm3,%xmm2
pand   %xmm7,%xmm2
psubd  %xmm2,%xmm4
movdqa %xmm4,%xmm2
psrld  $0x1f,%xmm2
psrad  $0x5,%xmm4
paddd  %xmm2,%xmm4
pshufd $0xf5,%xmm4,%xmm5
pmuludq %xmm6,%xmm4
pshufd $0xe8,%xmm4,%xmm2
pmuludq %xmm6,%xmm5
pshufd $0xe8,%xmm5,%xmm4
punpckldq %xmm4,%xmm2
psubd  %xmm3,%xmm2
paddd  %xmm1,%xmm2
pshufd $0xf5,%xmm2,%xmm1
pxor   %xmm3,%xmm3
pcmpgtd %xmm2,%xmm3
pshufd $0x1b,%xmm2,%xmm4
pmuludq %xmm7,%xmm2
pshufd $0xed,%xmm2,%xmm2
pmuludq %xmm7,%xmm1
pshufd $0xed,%xmm1,%xmm1
punpckldq %xmm1,%xmm2
pand   %xmm7,%xmm3
psubd  %xmm3,%xmm2
movdqa %xmm2,%xmm1
psrld  $0x1f,%xmm1
psrad  $0x5,%xmm2
paddd  %xmm1,%xmm2
pshufd $0xf5,%xmm2,%xmm1
pmuludq %xmm6,%xmm1
pmuludq %xmm6,%xmm2
pshufd $0xe2,%xmm2,%xmm2
pshufd $0xe2,%xmm1,%xmm1
punpckldq %xmm2,%xmm1
psubd  %xmm1,%xmm4
movdqu %xmm4,-0x10(%r11,%r8,4)
add    $0xfffffffffffffffc,%r8
cmp    %r8,%r10
jne    14c0 <rsencode+0x3b0>
mov    0xb8(%rsp),%rcx
mov    0x50(%rsp),%rax
cmp    %rax,0x58(%rsp)
je     1480 <rsencode+0x370>
lea    0x1(%rcx),%r8d
lea    (%rsp,%rcx,4),%rax
add    $0xc0,%rax
add    $0xffffffff,%ecx
lea    (%rsp,%rcx,4),%rcx
add    $0xc0,%rcx
xor    %edi,%edi
nopl   0x0(%rax,%rax,1)
mov    (%rax,%rdi,4),%ebp
mov    (%rcx,%rdi,4),%esi
imul   %r15d,%esi
movslq %esi,%rsi
imul   $0x487ede05,%rsi,%rdx
mov    %rdx,%rbx
shr    $0x3f,%rbx
sar    $0x25,%rdx
add    %ebx,%edx
imul   $0x71,%edx,%edx
sub    %esi,%edx
add    %ebp,%edx
add    $0x71,%edx
movslq %edx,%rdx
imul   $0x487ede05,%rdx,%rsi
mov    %rsi,%rbx
shr    $0x3f,%rbx
sar    $0x25,%rsi
add    %ebx,%esi
imul   $0x71,%esi,%esi
sub    %esi,%edx
mov    %edx,(%rax,%rdi,4)
add    $0xffffffffffffffff,%rdi
lea    (%rdi,%r8,1),%edx
cmp    $0x1,%edx
jg     1610 <rsencode+0x500>
jmp    1480 <rsencode+0x370>
nopl   0x0(%rax)
movl   $0x1,0xc0(%rsp)
mov    0x40(%rsp),%r13
mov    0x10(%rsp),%r10d
cmp    %r10d,%r13d
mov    0x48(%rsp),%rbx
jle    1890 <rsencode+0x780>
movslq %r10d,%r8
movslq %r13d,%rax
mov    %rax,%r9
sub    %r8,%r9
cmp    $0x8,%r9
jb     16c0 <rsencode+0x5b0>
cmpl   $0x6f,0x38(%rsp)
ja     16c0 <rsencode+0x5b0>
cmp    $0x20,%r9
jae    16c8 <rsencode+0x5b8>
xor    %edx,%edx
jmp    17b0 <rsencode+0x6a0>
nopl   0x0(%rax)
mov    %r8,%rdi
jmp    1800 <rsencode+0x6f0>
mov    %r9,%rdx
and    $0xffffffffffffffe0,%rdx
lea    -0x20(%rdx),%rcx
mov    %rcx,%rdi
shr    $0x5,%rdi
add    $0x1,%rdi
mov    %edi,%ebx
and    $0x3,%ebx
cmp    $0x60,%rcx
jae    16ed <rsencode+0x5dd>
xor    %ebp,%ebp
jmp    1761 <rsencode+0x651>
and    $0xfffffffffffffffc,%rdi
lea    0x40(%r8),%r10
imul   %r12,%r10
mov    %r12,%r11
imul   %r8,%r11
lea    0x20(%r8),%r14
imul   %r12,%r14
lea    0x60(%r8),%rcx
imul   %r12,%rcx
mov    0x78(%rsp),%rsi
xor    %ebp,%ebp
mov    0x98(%rsp),%r15
nop
movdqu %xmm8,-0x10(%rsi,%r11,1)
movdqu %xmm8,(%rsi,%r11,1)
movdqu %xmm8,-0x10(%rsi,%r14,1)
movdqu %xmm8,(%rsi,%r14,1)
movdqu %xmm8,-0x10(%rsi,%r10,1)
movdqu %xmm8,(%rsi,%r10,1)
movdqu %xmm8,-0x10(%rsi,%rcx,1)
movdqu %xmm8,(%rsi,%rcx,1)
sub    $0xffffffffffffff80,%rbp
add    %r15,%rsi
add    $0xfffffffffffffffc,%rdi
jne    1720 <rsencode+0x610>
test   %rbx,%rbx
mov    0x80(%rsp),%rcx
mov    0x18(%rsp),%rsi
je     1797 <rsencode+0x687>
add    %r8,%rbp
imul   %r12,%rbp
add    0x20(%rsp),%rbp
nop
movdqu %xmm8,0x0(%rbp,%rsi,1)
movdqu %xmm8,0x10(%rbp,%rsi,1)
add    %rcx,%rbp
add    $0xffffffffffffffff,%rbx
jne    1780 <rsencode+0x670>
cmp    %rdx,%r9
mov    0x48(%rsp),%rbx
mov    0x10(%rsp),%r10d
je     1890 <rsencode+0x780>
test   $0x18,%r9b
je     17fa <rsencode+0x6ea>
mov    0x30(%rsp),%rbp
mov    %r9,%rcx
and    $0xfffffffffffffff8,%rcx
lea    (%rcx,%r8,1),%rdi
mov    %rdx,%rsi
sub    %rcx,%rsi
add    %r8,%rdx
imul   %r12,%rdx
add    0x8(%rsp),%rdx
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
movq   $0x0,(%rdx)
add    %rbp,%rdx
add    $0x8,%rsi
jne    17e0 <rsencode+0x6d0>
cmp    %rcx,%r9
jne    1800 <rsencode+0x6f0>
jmp    1890 <rsencode+0x780>
add    %r8,%rdx
mov    %rdx,%rdi
mov    %r13d,%edx
sub    %edi,%edx
mov    %rdi,%rcx
not    %rcx
add    %rax,%rcx
and    $0x3,%rdx
je     1842 <rsencode+0x732>
mov    %r12,%rsi
imul   %rdi,%rsi
add    0x8(%rsp),%rsi
neg    %rdx
xor    %ebp,%ebp
cs nopw 0x0(%rax,%rax,1)
nop
movb   $0x0,(%rsi)
add    $0xffffffffffffffff,%rbp
add    %r12,%rsi
cmp    %rbp,%rdx
jne    1830 <rsencode+0x720>
sub    %rbp,%rdi
cmp    $0x3,%rcx
jb     1890 <rsencode+0x780>
sub    %rdi,%rax
lea    0x3(%rdi),%rcx
imul   %r12,%rcx
lea    0x2(%rdi),%rdx
imul   %r12,%rdx
mov    %r12,%rsi
imul   %rdi,%rsi
add    $0x1,%rdi
imul   %r12,%rdi
mov    0x8(%rsp),%rbp
nop
movb   $0x0,0x0(%rbp,%rsi,1)
movb   $0x0,0x0(%rbp,%rdi,1)
movb   $0x0,0x0(%rbp,%rdx,1)
movb   $0x0,0x0(%rbp,%rcx,1)
add    %rbx,%rbp
add    $0xfffffffffffffffc,%rax
jne    1870 <rsencode+0x760>
nopl   (%rax)
test   %r10d,%r10d
mov    0x20(%rsp),%r9
jle    1b80 <rsencode+0xa70>
cmpl   $0x70,0x38(%rsp)
setb   %al
mov    0x10(%rsp),%edi
mov    %edi,%ecx
mov    0x88(%rsp),%rsi
imul   %esi,%ecx
movslq %ecx,%rdx
mov    0x18(%rsp),%rcx
add    %rcx,%rdx
mov    %rdx,0x68(%rsp)
mov    0x90(%rsp),%rdx
lea    -0x1(%rdx),%r11d
movslq %edx,%rdx
mov    0xc0(%rsp,%rdx,4),%edx
mov    %edx,0x14(%rsp)
mov    0x40(%rsp),%rdx
add    $0xffffffff,%edx
imul   %esi,%edx
movslq %edx,%rdx
add    %rcx,%rdx
mov    %rdx,0x60(%rsp)
mov    %edi,%edx
cmp    $0x2,%r11d
mov    $0x1,%ecx
cmovl  %ecx,%r11d
cmp    $0x4,%r11d
setae  %cl
and    %al,%cl
mov    %cl,0x58(%rsp)
mov    %r11d,%r15d
and    $0x7ffffffc,%r15d
mov    %r12,%r14
imul   %rdx,%r14
mov    %rdx,0x28(%rsp)
lea    0x1(%rdx),%rax
mov    %r12,%r13
mov    %rax,0x50(%rsp)
imul   %rax,%r13
xor    %r10d,%r10d
jmp    198f <rsencode+0x87f>
xchg   %ax,%ax
imul   0x14(%rsp),%r8d
movslq %r8d,%rax
imul   $0x487ede05,%rax,%rcx
mov    %rcx,%rdx
shr    $0x3f,%rdx
shr    $0x25,%rcx
add    %edx,%ecx
imul   $0x71,%ecx,%ecx
sub    %ecx,%eax
mov    $0x71,%cl
sub    %al,%cl
movzbl %cl,%eax
imul   $0x91,%eax,%ecx
shr    $0xe,%ecx
imul   $0x71,%ecx,%ecx
sub    %cl,%al
mov    0x60(%rsp),%rcx
mov    %al,(%r9,%rcx,1)
add    $0x1,%r10
cmp    0x28(%rsp),%r10
je     1b80 <rsencode+0xa70>
mov    %r10,%rax
imul   %r12,%rax
add    0x18(%rsp),%rax
movzbl (%r9,%rax,1),%eax
mov    0x68(%rsp),%rcx
movzbl (%r9,%rcx,1),%edx
add    %eax,%edx
imul   $0x487f,%edx,%eax
shr    $0x15,%eax
imul   $0x71,%eax,%eax
sub    %eax,%edx
movzwl %dx,%r8d
cmpl   $0x2,0x90(%rsp)
02
jl     1940 <rsencode+0x830>
cmpb   $0x0,0x58(%rsp)
je     1af0 <rsencode+0x9e0>
movd   %r8d,%xmm0
pshufd $0x0,%xmm0,%xmm0
mov    0x8(%rsp),%rdi
xor    %r9d,%r9d
mov    0x48(%rsp),%rax
xchg   %ax,%ax
movdqu 0xc4(%rsp,%r9,4),%xmm1
pshufd $0xf5,%xmm1,%xmm2
movdqa %xmm1,%xmm3
pmuludq %xmm0,%xmm3
pshufd $0xe8,%xmm3,%xmm1
pshufd $0xf5,%xmm0,%xmm4
pmuludq %xmm4,%xmm2
pshufd $0xe8,%xmm2,%xmm4
punpckldq %xmm4,%xmm1
pmuludq %xmm7,%xmm3
pshufd $0xed,%xmm3,%xmm3
pmuludq %xmm7,%xmm2
pshufd $0xed,%xmm2,%xmm2
punpckldq %xmm2,%xmm3
pxor   %xmm2,%xmm2
pcmpgtd %xmm1,%xmm2
pand   %xmm7,%xmm2
psubd  %xmm2,%xmm3
movdqa %xmm3,%xmm2
psrld  $0x1f,%xmm2
psrad  $0x5,%xmm3
paddd  %xmm2,%xmm3
pshufd $0xf5,%xmm3,%xmm2
pmuludq %xmm6,%xmm3
pshufd $0xe8,%xmm3,%xmm3
pmuludq %xmm6,%xmm2
pshufd $0xe8,%xmm2,%xmm2
punpckldq %xmm2,%xmm3
movd   (%rdi,%r13,1),%xmm2
punpcklbw %xmm8,%xmm2
punpcklwd %xmm8,%xmm2
psubd  %xmm1,%xmm3
paddd  %xmm6,%xmm2
paddd  %xmm3,%xmm2
pshuflw $0xe8,%xmm2,%xmm1
pshufhw $0xe8,%xmm1,%xmm1
pshufd $0xe8,%xmm1,%xmm1
movdqa %xmm1,%xmm2
pmulhuw %xmm9,%xmm2
psrlw  $0x5,%xmm2
pmullw %xmm10,%xmm2
psubw  %xmm2,%xmm1
pand   %xmm11,%xmm1
packuswb %xmm1,%xmm1
movd   %xmm1,(%rdi,%r14,1)
add    $0x4,%r9
add    %rax,%rdi
cmp    %r9,%r15
jne    19f0 <rsencode+0x8e0>
mov    %r15,%rdi
cmp    %r11,%r15
mov    0x20(%rsp),%r9
je     1940 <rsencode+0x830>
jmp    1af2 <rsencode+0x9e2>
cs nopw 0x0(%rax,%rax,1)
nop
xor    %edi,%edi
mov    0x28(%rsp),%rax
lea    (%rax,%rdi,1),%rbx
imul   %r12,%rbx
mov    0x50(%rsp),%rax
lea    (%rax,%rdi,1),%rdx
imul   %r12,%rdx
mov    0x8(%rsp),%rax
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
mov    0xc4(%rsp,%rdi,4),%ebp
imul   %r8d,%ebp
add    $0x1,%rdi
movslq %ebp,%rbp
imul   $0x487ede05,%rbp,%rcx
mov    %rcx,%rsi
shr    $0x3f,%rsi
sar    $0x25,%rcx
add    %esi,%ecx
imul   $0x71,%ecx,%ecx
movzbl (%rax,%rdx,1),%esi
sub    %ebp,%ecx
add    %esi,%ecx
add    $0x71,%ecx
movzwl %cx,%esi
imul   $0x487f,%esi,%esi
shr    $0x15,%esi
imul   $0x71,%esi,%esi
sub    %esi,%ecx
mov    %cl,(%rax,%rbx,1)
add    %r12,%rax
cmp    %rdi,%r11
jne    1b20 <rsencode+0xa10>
jmp    1940 <rsencode+0x830>
cs nopw 0x0(%rax,%rax,1)
nop
mov    0x40(%rsp),%r13
mov    0x10(%rsp),%eax
cmp    %eax,%r13d
mov    0x80(%rsp),%r11
mov    0x30(%rsp),%r14
mov    0xa0(%rsp),%r15
jle    12f0 <rsencode+0x1e0>
movslq %eax,%r9
movslq %r13d,%rax
mov    %rax,%r10
sub    %r9,%r10
cmp    $0x8,%r10
jb     1c60 <rsencode+0xb50>
cmpl   $0x6f,0x38(%rsp)
ja     1c60 <rsencode+0xb50>
cmp    $0x10,%r10
jae    1d26 <rsencode+0xc16>
xor    %edx,%edx
mov    %r10,%rsi
and    $0xfffffffffffffff8,%rsi
lea    (%rsi,%r9,1),%rcx
mov    %rdx,%rdi
sub    %rsi,%rdi
add    %r9,%rdx
imul   %r12,%rdx
add    0x8(%rsp),%rdx
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
movq   (%rdx),%xmm0
punpcklbw %xmm8,%xmm0
movdqa %xmm10,%xmm1
psubw  %xmm0,%xmm1
movdqa %xmm1,%xmm0
pmulhw %xmm9,%xmm0
movdqa %xmm0,%xmm2
psrlw  $0xf,%xmm2
psrlw  $0x5,%xmm0
paddw  %xmm2,%xmm0
pmullw %xmm10,%xmm0
psubw  %xmm0,%xmm1
pand   %xmm11,%xmm1
packuswb %xmm1,%xmm1
movq   %xmm1,(%rdx)
add    %r14,%rdx
add    $0x8,%rdi
jne    1c00 <rsencode+0xaf0>
cmp    %rsi,%r10
je     12f0 <rsencode+0x1e0>
jmp    1c63 <rsencode+0xb53>
nopw   0x0(%rax,%rax,1)
mov    %r9,%rcx
sub    %ecx,%r13d
mov    %rcx,%rdx
test   $0x1,%r13b
je     1ca8 <rsencode+0xb98>
mov    %rcx,%rdx
imul   %r12,%rdx
add    0x18(%rsp),%rdx
mov    0x20(%rsp),%rbx
movzbl (%rbx,%rdx,1),%esi
mov    $0x71,%edi
sub    %esi,%edi
imul   $0x487f,%edi,%esi
mov    %esi,%ebp
shr    $0x1f,%ebp
shr    $0x15,%esi
add    %ebp,%esi
imul   $0x71,%esi,%esi
sub    %esi,%edi
mov    %dil,(%rbx,%rdx,1)
lea    0x1(%rcx),%rdx
not    %rcx
add    %rax,%rcx
je     12f0 <rsencode+0x1e0>
sub    %rdx,%rax
mov    %r12,%rcx
imul   %rdx,%rcx
add    $0x1,%rdx
imul   %r12,%rdx
mov    0x8(%rsp),%rsi
nopl   0x0(%rax,%rax,1)
movzbl (%rsi,%rcx,1),%edi
mov    $0x71,%ebp
sub    %edi,%ebp
imul   $0x487f,%ebp,%edi
mov    %edi,%ebx
shr    $0x1f,%ebx
shr    $0x15,%edi
add    %ebx,%edi
imul   $0x71,%edi,%edi
sub    %edi,%ebp
mov    %bpl,(%rsi,%rcx,1)
movzbl (%rsi,%rdx,1),%edi
mov    $0x71,%ebp
sub    %edi,%ebp
imul   $0x487f,%ebp,%edi
mov    %edi,%ebx
shr    $0x1f,%ebx
shr    $0x15,%edi
add    %ebx,%edi
imul   $0x71,%edi,%edi
sub    %edi,%ebp
mov    %bpl,(%rsi,%rdx,1)
add    %r15,%rsi
add    $0xfffffffffffffffe,%rax
jne    1cd0 <rsencode+0xbc0>
jmp    12f0 <rsencode+0x1e0>
mov    %r10,%rdx
and    $0xfffffffffffffff0,%rdx
lea    -0x10(%rdx),%rcx
mov    %rcx,%r8
shr    $0x4,%r8
add    $0x1,%r8
test   %rcx,%rcx
je     1f3a <rsencode+0xe2a>
mov    %r8,%rbp
and    $0xfffffffffffffffe,%rbp
lea    0x10(%r9),%rbx
imul   %r12,%rbx
mov    %r12,%rsi
imul   %r9,%rsi
mov    0x8(%rsp),%rcx
xor    %edi,%edi
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
movdqu (%rcx,%rsi,1),%xmm1
movdqa %xmm1,%xmm2
punpcklbw %xmm8,%xmm2
punpckhbw %xmm8,%xmm1
movdqa %xmm10,%xmm0
psubw  %xmm1,%xmm0
movdqa %xmm10,%xmm1
psubw  %xmm2,%xmm1
movdqa %xmm1,%xmm2
pmulhw %xmm9,%xmm2
movdqa %xmm2,%xmm3
psrlw  $0xf,%xmm3
psrlw  $0x5,%xmm2
paddw  %xmm3,%xmm2
pmullw %xmm10,%xmm2
psubw  %xmm2,%xmm1
movdqa %xmm0,%xmm2
pmulhw %xmm9,%xmm2
movdqa %xmm2,%xmm3
psrlw  $0xf,%xmm3
psrlw  $0x5,%xmm2
paddw  %xmm3,%xmm2
pmullw %xmm10,%xmm2
psubw  %xmm2,%xmm0
pand   %xmm11,%xmm0
pand   %xmm11,%xmm1
packuswb %xmm0,%xmm1
movdqu %xmm1,(%rcx,%rsi,1)
movdqu (%rcx,%rbx,1),%xmm1
movdqa %xmm1,%xmm2
punpcklbw %xmm8,%xmm2
punpckhbw %xmm8,%xmm1
movdqa %xmm10,%xmm0
psubw  %xmm1,%xmm0
movdqa %xmm10,%xmm1
psubw  %xmm2,%xmm1
movdqa %xmm1,%xmm2
pmulhw %xmm9,%xmm2
movdqa %xmm2,%xmm3
psrlw  $0xf,%xmm3
psrlw  $0x5,%xmm2
paddw  %xmm3,%xmm2
pmullw %xmm10,%xmm2
psubw  %xmm2,%xmm1
movdqa %xmm0,%xmm2
pmulhw %xmm9,%xmm2
movdqa %xmm2,%xmm3
psrlw  $0xf,%xmm3
psrlw  $0x5,%xmm2
paddw  %xmm3,%xmm2
pmullw %xmm10,%xmm2
psubw  %xmm2,%xmm0
pand   %xmm11,%xmm0
pand   %xmm11,%xmm1
packuswb %xmm0,%xmm1
movdqu %xmm1,(%rcx,%rbx,1)
add    $0x20,%rdi
add    %r11,%rcx
add    $0xfffffffffffffffe,%rbp
jne    1d70 <rsencode+0xc60>
test   $0x1,%r8b
je     1f1c <rsencode+0xe0c>
add    %r9,%rdi
imul   %r12,%rdi
add    0x18(%rsp),%rdi
mov    0x20(%rsp),%rcx
movdqu (%rcx,%rdi,1),%xmm1
movdqa %xmm1,%xmm2
punpcklbw %xmm8,%xmm2
punpckhbw %xmm8,%xmm1
movdqa %xmm10,%xmm0
psubw  %xmm1,%xmm0
movdqa %xmm10,%xmm1
psubw  %xmm2,%xmm1
movdqa %xmm1,%xmm2
pmulhw %xmm9,%xmm2
movdqa %xmm2,%xmm3
psrlw  $0xf,%xmm3
psrlw  $0x5,%xmm2
paddw  %xmm3,%xmm2
pmullw %xmm10,%xmm2
psubw  %xmm2,%xmm1
movdqa %xmm0,%xmm2
pmulhw %xmm9,%xmm2
movdqa %xmm2,%xmm3
psrlw  $0xf,%xmm3
psrlw  $0x5,%xmm2
paddw  %xmm3,%xmm2
pmullw %xmm10,%xmm2
psubw  %xmm2,%xmm0
pand   %xmm11,%xmm0
pand   %xmm11,%xmm1
packuswb %xmm0,%xmm1
movdqu %xmm1,(%rcx,%rdi,1)
cmp    %rdx,%r10
je     12f0 <rsencode+0x1e0>
test   $0x8,%r10b
jne    1bd4 <rsencode+0xac4>
add    %r9,%rdx
mov    %rdx,%rcx
jmp    1c63 <rsencode+0xb53>
xor    %edi,%edi
test   $0x1,%r8b
jne    1e8b <rsencode+0xd7b>
jmp    1f1c <rsencode+0xe0c>
add    $0x458,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

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

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