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 < 113); 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    $0x360,%rsp
mov    %edi,-0x4(%rbp)
mov    %esi,-0x8(%rbp)
mov    %rdx,-0x10(%rbp)
movl   $0x1,-0x1f0(%rbp)
movl   $0x1,-0x14(%rbp)
mov    -0x14(%rbp),%ecx
xor    %eax,%eax
cmp    -0x8(%rbp),%ecx
mov    %al,-0x3cd(%rbp)
jg     1147 <rsencode+0x47>
cmpl   $0x71,-0x14(%rbp)
setl   %al
mov    %al,-0x3cd(%rbp)
mov    -0x3cd(%rbp),%al
test   $0x1,%al
jne    115a <rsencode+0x5a>
jmp    118b <rsencode+0x8b>
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    14c3 <rsencode+0x3c3>
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     122c <rsencode+0x12c>
movslq -0x14(%rbp),%rax
movl   $0x0,-0x3c0(%rbp,%rax,4)
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14(%rbp)
jmp    1200 <rsencode+0x100>
movl   $0x1,-0x3c0(%rbp)
movl   $0x1,-0x14(%rbp)
mov    -0x14(%rbp),%eax
cmp    -0x3cc(%rbp),%eax
jg     12d3 <rsencode+0x1d3>
mov    -0x3cc(%rbp),%eax
mov    %eax,-0x18(%rbp)
cmpl   $0x1,-0x18(%rbp)
jl     12c0 <rsencode+0x1c0>
movslq -0x18(%rbp),%rax
mov    -0x3c0(%rbp,%rax,4),%eax
add    $0x71,%eax
mov    %eax,-0x3d4(%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    -0x3d4(%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    1255 <rsencode+0x155>
jmp    12c5 <rsencode+0x1c5>
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14(%rbp)
jmp    123d <rsencode+0x13d>
mov    -0x3c4(%rbp),%eax
mov    %eax,-0x14(%rbp)
mov    -0x14(%rbp),%eax
cmp    -0x3c8(%rbp),%eax
jge    1310 <rsencode+0x210>
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    12dc <rsencode+0x1dc>
movl   $0x0,-0x14(%rbp)
mov    -0x14(%rbp),%eax
cmp    -0x3c4(%rbp),%eax
jge    144e <rsencode+0x34e>
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    13f5 <rsencode+0x2f5>
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    136b <rsencode+0x26b>
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    1317 <rsencode+0x217>
mov    -0x3c4(%rbp),%eax
mov    %eax,-0x14(%rbp)
mov    -0x14(%rbp),%eax
cmp    -0x3c8(%rbp),%eax
jge    14b0 <rsencode+0x3b0>
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    1457 <rsencode+0x357>
jmp    14b5 <rsencode+0x3b5>
mov    -0x24(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x24(%rbp)
jmp    11af <rsencode+0xaf>
add    $0x360,%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>
lea    -0x1(%rsi),%eax
cmp    $0x6f,%eax
mov    $0x6f,%ecx
cmovb  %eax,%ecx
lea    0x1(%rcx),%r8d
test   %ecx,%ecx
je     1f5a <rsencode+0xe4a>
mov    %r8d,%r9d
and    $0xfffffffe,%r9d
neg    %r9
mov    $0x1,%ecx
mov    $0x1,%ebp
nopw   0x0(%rax,%rax,1)
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
mov    0x98(%rsp),%r15
jae    16f5 <rsencode+0x5e5>
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
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
mov    $0x1,%ecx
mov    $0x3,%ebx
test   $0x1,%r8b
jne    11e6 <rsencode+0xd6>
jmp    11ed <rsencode+0xdd>

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