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

/* Forward declarations */

/* Type definitions */
typedef int /*<<< orphan*/ key;

/* Variables and functions */
int getch();
int /*<<< orphan*/ printf(char *, char *);
int strlen(char *);
int main() {
  char input[1000];
  int ch, i;
  ch = i = 0;
  while ((ch = getch()) != '\n')
    input[i++] = ch;
  input[i] = '\0';
  int len = strlen(input);
  int key_posi = 0, key[] = {1, 8, 6, 1, 3, 5, 6};
  size_t key_size = sizeof(key) / sizeof(int);
  char output[1000];
  int key_current = 0;
  for (key_posi = 0; key_posi < key_size; key_posi++) {
    key_current = key[key_posi];
    for (i = 0; i < len; i++)
      input[i] = (((input[i] - 32) + (3 * key_current++)) % 94) + 32;
  }
  input[i] = '\0';
  printf("%s\n", input);
  return 0;
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0x820,%rsp
movl   $0x0,-0x4(%rbp)
movl   $0x0,-0x3f8(%rbp)
movl   $0x0,-0x3f4(%rbp)
mov    $0x0,%al
call   1050 <getch@plt>
mov    %eax,-0x3f4(%rbp)
cmp    $0xa,%eax
je     1193 <main+0x63>
mov    -0x3f4(%rbp),%eax
mov    %al,%cl
mov    -0x3f8(%rbp),%eax
mov    %eax,%edx
add    $0x1,%edx
mov    %edx,-0x3f8(%rbp)
cltq
mov    %cl,-0x3f0(%rbp,%rax,1)
jmp    1156 <main+0x26>
movslq -0x3f8(%rbp),%rax
movb   $0x0,-0x3f0(%rbp,%rax,1)
lea    -0x3f0(%rbp),%rdi
call   1030 <strlen@plt>
mov    %eax,-0x3fc(%rbp)
movl   $0x0,-0x400(%rbp)
mov    0xe3b(%rip),%rax
mov    %rax,-0x420(%rbp)
mov    0xe35(%rip),%rax
mov    %rax,-0x418(%rbp)
mov    0xe2f(%rip),%rax
mov    %rax,-0x410(%rbp)
mov    0xe2a(%rip),%eax
mov    %eax,-0x408(%rbp)
movq   $0x7,-0x428(%rbp)
movl   $0x0,-0x814(%rbp)
movl   $0x0,-0x400(%rbp)
movslq -0x400(%rbp),%rax
cmp    -0x428(%rbp),%rax
jae    12c7 <main+0x197>
movslq -0x400(%rbp),%rax
mov    -0x420(%rbp,%rax,4),%eax
mov    %eax,-0x814(%rbp)
movl   $0x0,-0x3f8(%rbp)
mov    -0x3f8(%rbp),%eax
cmp    -0x3fc(%rbp),%eax
jge    12ae <main+0x17e>
movslq -0x3f8(%rbp),%rax
movsbl -0x3f0(%rbp,%rax,1),%eax
ff
sub    $0x20,%eax
mov    -0x814(%rbp),%ecx
mov    %ecx,%edx
add    $0x1,%edx
mov    %edx,-0x814(%rbp)
imul   $0x3,%ecx,%ecx
add    %ecx,%eax
mov    $0x5e,%ecx
cltd
idiv   %ecx
add    $0x20,%edx
mov    %dl,%cl
movslq -0x3f8(%rbp),%rax
mov    %cl,-0x3f0(%rbp,%rax,1)
mov    -0x3f8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x3f8(%rbp)
jmp    1245 <main+0x115>
jmp    12b3 <main+0x183>
mov    -0x400(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x400(%rbp)
jmp    1213 <main+0xe3>
movslq -0x3f8(%rbp),%rax
movb   $0x0,-0x3f0(%rbp,%rax,1)
lea    -0x3f0(%rbp),%rsi
lea    0xd38(%rip),%rdi
call   1040 <printf@plt>
xor    %eax,%eax
add    $0x820,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
push   %rbx
sub    $0x3f0,%rsp
xor    %ebx,%ebx
xor    %eax,%eax
call   1050 <getch@plt>
cmp    $0xa,%eax
je     1165 <main+0x35>
xor    %ebx,%ebx
nopl   0x0(%rax,%rax,1)
mov    %al,(%rsp,%rbx,1)
add    $0x1,%rbx
xor    %eax,%eax
call   1050 <getch@plt>
cmp    $0xa,%eax
jne    1150 <main+0x20>
mov    %ebx,%ebx
movb   $0x0,(%rsp,%rbx,1)
mov    %rsp,%rdi
call   1030 <strlen@plt>
test   %eax,%eax
jle    256c <main+0x143c>
mov    %eax,%r8d
cmp    $0x10,%eax
jae    118d <main+0x5d>
mov    $0x1,%esi
xor    %edx,%edx
jmp    1485 <main+0x355>
mov    %r8d,%edx
and    $0xfffffff0,%edx
lea    0x1(%rdx),%esi
movdqa 0x1e61(%rip),%xmm14
movdqa 0x1e68(%rip),%xmm15
movdqa 0x1e70(%rip),%xmm4
movdqa 0x1e78(%rip),%xmm7
xor    %edi,%edi
movdqa 0x1e7d(%rip),%xmm9
movdqa 0x1e84(%rip),%xmm13
movdqa 0x1e8b(%rip),%xmm12
movdqa 0x1e92(%rip),%xmm10
movdqa 0x1ea9(%rip),%xmm11
nopw   0x0(%rax,%rax,1)
movdqa (%rsp,%rdi,1),%xmm1
punpcklbw %xmm1,%xmm0
punpckhwd %xmm0,%xmm8
psrad  $0x18,%xmm8
punpcklwd %xmm0,%xmm0
psrad  $0x18,%xmm0
punpckhbw %xmm1,%xmm1
punpcklwd %xmm1,%xmm6
psrad  $0x18,%xmm6
punpckhwd %xmm1,%xmm5
psrad  $0x18,%xmm5
movdqa %xmm4,%xmm2
paddd  %xmm4,%xmm2
paddd  %xmm4,%xmm2
movdqa %xmm7,%xmm3
paddd  %xmm7,%xmm3
paddd  %xmm7,%xmm3
paddd  %xmm9,%xmm2
paddd  %xmm8,%xmm2
movdqa %xmm15,%xmm1
paddd  %xmm15,%xmm1
paddd  %xmm15,%xmm1
paddd  %xmm9,%xmm3
paddd  %xmm0,%xmm3
movdqa %xmm14,%xmm0
paddd  %xmm14,%xmm0
paddd  %xmm14,%xmm0
paddd  %xmm9,%xmm1
paddd  %xmm6,%xmm1
paddd  %xmm9,%xmm0
paddd  %xmm5,%xmm0
movdqa %xmm0,%xmm5
pmuludq %xmm13,%xmm5
pshufd $0xed,%xmm5,%xmm5
pshufd $0xf5,%xmm0,%xmm6
pmuludq %xmm13,%xmm6
pshufd $0xed,%xmm6,%xmm6
punpckldq %xmm6,%xmm5
pxor   %xmm6,%xmm6
pcmpgtd %xmm0,%xmm6
pand   %xmm13,%xmm6
paddd  %xmm0,%xmm6
psubd  %xmm6,%xmm5
paddd  %xmm0,%xmm5
movdqa %xmm5,%xmm6
psrld  $0x1f,%xmm6
psrld  $0x6,%xmm5
paddd  %xmm6,%xmm5
pshufd $0xf5,%xmm5,%xmm6
pmuludq %xmm12,%xmm5
pshufd $0xe8,%xmm5,%xmm5
pmuludq %xmm12,%xmm6
pshufd $0xe8,%xmm6,%xmm6
punpckldq %xmm6,%xmm5
psubd  %xmm5,%xmm0
movdqa %xmm1,%xmm5
pmuludq %xmm13,%xmm5
pshufd $0xed,%xmm5,%xmm5
pshufd $0xf5,%xmm1,%xmm6
pmuludq %xmm13,%xmm6
pshufd $0xed,%xmm6,%xmm6
punpckldq %xmm6,%xmm5
pxor   %xmm6,%xmm6
pcmpgtd %xmm1,%xmm6
pand   %xmm13,%xmm6
paddd  %xmm1,%xmm6
psubd  %xmm6,%xmm5
paddd  %xmm1,%xmm5
movdqa %xmm5,%xmm6
psrld  $0x1f,%xmm6
psrld  $0x6,%xmm5
paddd  %xmm6,%xmm5
pshufd $0xf5,%xmm5,%xmm6
pmuludq %xmm12,%xmm5
pshufd $0xe8,%xmm5,%xmm5
pmuludq %xmm12,%xmm6
pshufd $0xe8,%xmm6,%xmm6
punpckldq %xmm6,%xmm5
psubd  %xmm5,%xmm1
movdqa %xmm3,%xmm5
pmuludq %xmm13,%xmm5
pshufd $0xed,%xmm5,%xmm5
pshufd $0xf5,%xmm3,%xmm6
pmuludq %xmm13,%xmm6
pshufd $0xed,%xmm6,%xmm6
punpckldq %xmm6,%xmm5
pxor   %xmm6,%xmm6
pcmpgtd %xmm3,%xmm6
pand   %xmm13,%xmm6
paddd  %xmm3,%xmm6
psubd  %xmm6,%xmm5
paddd  %xmm3,%xmm5
movdqa %xmm5,%xmm6
psrld  $0x1f,%xmm6
psrld  $0x6,%xmm5
paddd  %xmm6,%xmm5
pshufd $0xf5,%xmm5,%xmm6
pmuludq %xmm12,%xmm5
pshufd $0xe8,%xmm5,%xmm5
pmuludq %xmm12,%xmm6
pshufd $0xe8,%xmm6,%xmm6
punpckldq %xmm6,%xmm5
psubd  %xmm5,%xmm3
movdqa %xmm2,%xmm5
pmuludq %xmm13,%xmm5
pshufd $0xed,%xmm5,%xmm5
pshufd $0xf5,%xmm2,%xmm6
pmuludq %xmm13,%xmm6
pshufd $0xed,%xmm6,%xmm6
punpckldq %xmm6,%xmm5
pxor   %xmm6,%xmm6
pcmpgtd %xmm2,%xmm6
pand   %xmm13,%xmm6
paddd  %xmm2,%xmm6
psubd  %xmm6,%xmm5
paddd  %xmm2,%xmm5
movdqa %xmm5,%xmm6
psrld  $0x1f,%xmm6
psrld  $0x6,%xmm5
paddd  %xmm6,%xmm5
pshufd $0xf5,%xmm5,%xmm6
pmuludq %xmm12,%xmm5
pshufd $0xe8,%xmm5,%xmm5
pmuludq %xmm12,%xmm6
pshufd $0xe8,%xmm6,%xmm6
punpckldq %xmm6,%xmm5
psubd  %xmm5,%xmm2
pand   %xmm10,%xmm2
pand   %xmm10,%xmm3
packuswb %xmm2,%xmm3
pand   %xmm10,%xmm1
pand   %xmm10,%xmm0
packuswb %xmm0,%xmm1
packuswb %xmm1,%xmm3
paddb  0x1c26(%rip),%xmm3
movdqa %xmm3,(%rsp,%rdi,1)
add    $0x10,%rdi
paddd  %xmm11,%xmm7
paddd  %xmm11,%xmm4
paddd  %xmm11,%xmm15
paddd  %xmm11,%xmm14
cmp    %rdi,%rdx
jne    11f0 <main+0xc0>
cmp    %r8,%rdx
je     14c9 <main+0x399>
lea    (%rsi,%rsi,2),%esi
add    $0xffffffe0,%esi
nopl   0x0(%rax,%rax,1)
movsbl (%rsp,%rdx,1),%edi
add    %esi,%edi
movslq %edi,%rdi
imul   $0xffffffffae4c415d,%rdi,%rbx
shr    $0x20,%rbx
add    %edi,%ebx
mov    %ebx,%ecx
shr    $0x1f,%ecx
shr    $0x6,%ebx
add    %ecx,%ebx
imul   $0x5e,%ebx,%ecx
sub    %ecx,%edi
add    $0x20,%dil
mov    %dil,(%rsp,%rdx,1)
add    $0x1,%rdx
add    $0x3,%esi
cmp    %rdx,%r8
jne    1490 <main+0x360>
test   %eax,%eax
jle    256c <main+0x143c>
cmp    $0x10,%eax
jae    14e2 <main+0x3b2>
mov    $0x8,%esi
xor    %edx,%edx
jmp    17d5 <main+0x6a5>
mov    %r8d,%edx
and    $0xfffffff0,%edx
lea    0x8(%rdx),%esi
movdqa 0x1bac(%rip),%xmm14
movdqa 0x1bb3(%rip),%xmm15
movdqa 0x1bbb(%rip),%xmm4
movdqa 0x1bc3(%rip),%xmm7
xor    %edi,%edi
movdqa 0x1b28(%rip),%xmm9
movdqa 0x1b2f(%rip),%xmm13
movdqa 0x1b36(%rip),%xmm12
movdqa 0x1b3d(%rip),%xmm10
movdqa 0x1b54(%rip),%xmm11
nopl   0x0(%rax)
movdqa (%rsp,%rdi,1),%xmm1
punpcklbw %xmm1,%xmm0
punpckhwd %xmm0,%xmm8
psrad  $0x18,%xmm8
punpcklwd %xmm0,%xmm0
psrad  $0x18,%xmm0
punpckhbw %xmm1,%xmm1
punpcklwd %xmm1,%xmm6
psrad  $0x18,%xmm6
punpckhwd %xmm1,%xmm5
psrad  $0x18,%xmm5
movdqa %xmm4,%xmm2
paddd  %xmm4,%xmm2
paddd  %xmm4,%xmm2
movdqa %xmm7,%xmm3
paddd  %xmm7,%xmm3
paddd  %xmm7,%xmm3
paddd  %xmm9,%xmm2
paddd  %xmm8,%xmm2
movdqa %xmm15,%xmm1
paddd  %xmm15,%xmm1
paddd  %xmm15,%xmm1
paddd  %xmm9,%xmm3
paddd  %xmm0,%xmm3
movdqa %xmm14,%xmm0
paddd  %xmm14,%xmm0
paddd  %xmm14,%xmm0
paddd  %xmm9,%xmm1
paddd  %xmm6,%xmm1
paddd  %xmm9,%xmm0
paddd  %xmm5,%xmm0
movdqa %xmm0,%xmm5
pmuludq %xmm13,%xmm5
pshufd $0xed,%xmm5,%xmm5
pshufd $0xf5,%xmm0,%xmm6
pmuludq %xmm13,%xmm6
pshufd $0xed,%xmm6,%xmm6
punpckldq %xmm6,%xmm5
pxor   %xmm6,%xmm6
pcmpgtd %xmm0,%xmm6
pand   %xmm13,%xmm6
paddd  %xmm0,%xmm6
psubd  %xmm6,%xmm5
paddd  %xmm0,%xmm5
movdqa %xmm5,%xmm6
psrld  $0x1f,%xmm6
psrld  $0x6,%xmm5
paddd  %xmm6,%xmm5
pshufd $0xf5,%xmm5,%xmm6
pmuludq %xmm12,%xmm5
pshufd $0xe8,%xmm5,%xmm5
pmuludq %xmm12,%xmm6
pshufd $0xe8,%xmm6,%xmm6
punpckldq %xmm6,%xmm5
psubd  %xmm5,%xmm0
movdqa %xmm1,%xmm5
pmuludq %xmm13,%xmm5
pshufd $0xed,%xmm5,%xmm5
pshufd $0xf5,%xmm1,%xmm6
pmuludq %xmm13,%xmm6
pshufd $0xed,%xmm6,%xmm6
punpckldq %xmm6,%xmm5
pxor   %xmm6,%xmm6
pcmpgtd %xmm1,%xmm6
pand   %xmm13,%xmm6
paddd  %xmm1,%xmm6
psubd  %xmm6,%xmm5
paddd  %xmm1,%xmm5
movdqa %xmm5,%xmm6
psrld  $0x1f,%xmm6
psrld  $0x6,%xmm5
paddd  %xmm6,%xmm5
pshufd $0xf5,%xmm5,%xmm6
pmuludq %xmm12,%xmm5
pshufd $0xe8,%xmm5,%xmm5
pmuludq %xmm12,%xmm6
pshufd $0xe8,%xmm6,%xmm6
punpckldq %xmm6,%xmm5
psubd  %xmm5,%xmm1
movdqa %xmm3,%xmm5
pmuludq %xmm13,%xmm5
pshufd $0xed,%xmm5,%xmm5
pshufd $0xf5,%xmm3,%xmm6
pmuludq %xmm13,%xmm6
pshufd $0xed,%xmm6,%xmm6
punpckldq %xmm6,%xmm5
pxor   %xmm6,%xmm6
pcmpgtd %xmm3,%xmm6
pand   %xmm13,%xmm6
paddd  %xmm3,%xmm6
psubd  %xmm6,%xmm5
paddd  %xmm3,%xmm5
movdqa %xmm5,%xmm6
psrld  $0x1f,%xmm6
psrld  $0x6,%xmm5
paddd  %xmm6,%xmm5
pshufd $0xf5,%xmm5,%xmm6
pmuludq %xmm12,%xmm5
pshufd $0xe8,%xmm5,%xmm5
pmuludq %xmm12,%xmm6
pshufd $0xe8,%xmm6,%xmm6
punpckldq %xmm6,%xmm5
psubd  %xmm5,%xmm3
movdqa %xmm2,%xmm5
pmuludq %xmm13,%xmm5
pshufd $0xed,%xmm5,%xmm5
pshufd $0xf5,%xmm2,%xmm6
pmuludq %xmm13,%xmm6
pshufd $0xed,%xmm6,%xmm6
punpckldq %xmm6,%xmm5
pxor   %xmm6,%xmm6
pcmpgtd %xmm2,%xmm6
pand   %xmm13,%xmm6
paddd  %xmm2,%xmm6
psubd  %xmm6,%xmm5
paddd  %xmm2,%xmm5
movdqa %xmm5,%xmm6
psrld  $0x1f,%xmm6
psrld  $0x6,%xmm5
paddd  %xmm6,%xmm5
pshufd $0xf5,%xmm5,%xmm6
pmuludq %xmm12,%xmm5
pshufd $0xe8,%xmm5,%xmm5
pmuludq %xmm12,%xmm6
pshufd $0xe8,%xmm6,%xmm6
punpckldq %xmm6,%xmm5
psubd  %xmm5,%xmm2
pand   %xmm10,%xmm2
pand   %xmm10,%xmm3
packuswb %xmm2,%xmm3
pand   %xmm10,%xmm1
pand   %xmm10,%xmm0
packuswb %xmm0,%xmm1
packuswb %xmm1,%xmm3
paddb  0x18d6(%rip),%xmm3
movdqa %xmm3,(%rsp,%rdi,1)
add    $0x10,%rdi
paddd  %xmm11,%xmm7
paddd  %xmm11,%xmm4
paddd  %xmm11,%xmm15
paddd  %xmm11,%xmm14
cmp    %rdi,%rdx
jne    1540 <main+0x410>
cmp    %r8,%rdx
je     1817 <main+0x6e7>
lea    (%rsi,%rsi,2),%esi
add    $0xffffffe0,%esi
nopl   0x0(%rax,%rax,1)
movsbl (%rsp,%rdx,1),%ecx
add    %esi,%ecx
movslq %ecx,%rcx
imul   $0xffffffffae4c415d,%rcx,%rdi
shr    $0x20,%rdi
add    %ecx,%edi
mov    %edi,%ebx
shr    $0x1f,%ebx
shr    $0x6,%edi
add    %ebx,%edi
imul   $0x5e,%edi,%edi
sub    %edi,%ecx
add    $0x20,%cl
mov    %cl,(%rsp,%rdx,1)
add    $0x1,%rdx
add    $0x3,%esi
cmp    %rdx,%r8
jne    17e0 <main+0x6b0>
test   %eax,%eax
jle    256c <main+0x143c>
cmp    $0x10,%eax
jae    1830 <main+0x700>
mov    $0x6,%esi
xor    %edx,%edx
jmp    1b25 <main+0x9f5>
mov    %r8d,%edx
and    $0xfffffff0,%edx
lea    0x6(%rdx),%esi
movdqa 0x189e(%rip),%xmm14
movdqa 0x18a5(%rip),%xmm15
movdqa 0x18ad(%rip),%xmm4
movdqa 0x18b5(%rip),%xmm7
xor    %edi,%edi
movdqa 0x17da(%rip),%xmm9
movdqa 0x17e1(%rip),%xmm13
movdqa 0x17e8(%rip),%xmm12
movdqa 0x17ef(%rip),%xmm10
movdqa 0x1806(%rip),%xmm11
nopw   0x0(%rax,%rax,1)
movdqa (%rsp,%rdi,1),%xmm1
punpcklbw %xmm1,%xmm0
punpckhwd %xmm0,%xmm8
psrad  $0x18,%xmm8
punpcklwd %xmm0,%xmm0
psrad  $0x18,%xmm0
punpckhbw %xmm1,%xmm1
punpcklwd %xmm1,%xmm6
psrad  $0x18,%xmm6
punpckhwd %xmm1,%xmm5
psrad  $0x18,%xmm5
movdqa %xmm4,%xmm2
paddd  %xmm4,%xmm2
paddd  %xmm4,%xmm2
movdqa %xmm7,%xmm3
paddd  %xmm7,%xmm3
paddd  %xmm7,%xmm3
paddd  %xmm9,%xmm2
paddd  %xmm8,%xmm2
movdqa %xmm15,%xmm1
paddd  %xmm15,%xmm1
paddd  %xmm15,%xmm1
paddd  %xmm9,%xmm3
paddd  %xmm0,%xmm3
movdqa %xmm14,%xmm0
paddd  %xmm14,%xmm0
paddd  %xmm14,%xmm0
paddd  %xmm9,%xmm1
paddd  %xmm6,%xmm1
paddd  %xmm9,%xmm0
paddd  %xmm5,%xmm0
movdqa %xmm0,%xmm5
pmuludq %xmm13,%xmm5
pshufd $0xed,%xmm5,%xmm5
pshufd $0xf5,%xmm0,%xmm6
pmuludq %xmm13,%xmm6
pshufd $0xed,%xmm6,%xmm6
punpckldq %xmm6,%xmm5
pxor   %xmm6,%xmm6
pcmpgtd %xmm0,%xmm6
pand   %xmm13,%xmm6
paddd  %xmm0,%xmm6
psubd  %xmm6,%xmm5
paddd  %xmm0,%xmm5
movdqa %xmm5,%xmm6
psrld  $0x1f,%xmm6
psrld  $0x6,%xmm5
paddd  %xmm6,%xmm5
pshufd $0xf5,%xmm5,%xmm6
pmuludq %xmm12,%xmm5
pshufd $0xe8,%xmm5,%xmm5
pmuludq %xmm12,%xmm6
pshufd $0xe8,%xmm6,%xmm6
punpckldq %xmm6,%xmm5
psubd  %xmm5,%xmm0
movdqa %xmm1,%xmm5
pmuludq %xmm13,%xmm5
pshufd $0xed,%xmm5,%xmm5
pshufd $0xf5,%xmm1,%xmm6
pmuludq %xmm13,%xmm6
pshufd $0xed,%xmm6,%xmm6
punpckldq %xmm6,%xmm5
pxor   %xmm6,%xmm6
pcmpgtd %xmm1,%xmm6
pand   %xmm13,%xmm6
paddd  %xmm1,%xmm6
psubd  %xmm6,%xmm5
paddd  %xmm1,%xmm5
movdqa %xmm5,%xmm6
psrld  $0x1f,%xmm6
psrld  $0x6,%xmm5
paddd  %xmm6,%xmm5
pshufd $0xf5,%xmm5,%xmm6
pmuludq %xmm12,%xmm5
pshufd $0xe8,%xmm5,%xmm5
pmuludq %xmm12,%xmm6
pshufd $0xe8,%xmm6,%xmm6
punpckldq %xmm6,%xmm5
psubd  %xmm5,%xmm1
movdqa %xmm3,%xmm5
pmuludq %xmm13,%xmm5
pshufd $0xed,%xmm5,%xmm5
pshufd $0xf5,%xmm3,%xmm6
pmuludq %xmm13,%xmm6
pshufd $0xed,%xmm6,%xmm6
punpckldq %xmm6,%xmm5
pxor   %xmm6,%xmm6
pcmpgtd %xmm3,%xmm6
pand   %xmm13,%xmm6
paddd  %xmm3,%xmm6
psubd  %xmm6,%xmm5
paddd  %xmm3,%xmm5
movdqa %xmm5,%xmm6
psrld  $0x1f,%xmm6
psrld  $0x6,%xmm5
paddd  %xmm6,%xmm5
pshufd $0xf5,%xmm5,%xmm6
pmuludq %xmm12,%xmm5
pshufd $0xe8,%xmm5,%xmm5
pmuludq %xmm12,%xmm6
pshufd $0xe8,%xmm6,%xmm6
punpckldq %xmm6,%xmm5
psubd  %xmm5,%xmm3
movdqa %xmm2,%xmm5
pmuludq %xmm13,%xmm5
pshufd $0xed,%xmm5,%xmm5
pshufd $0xf5,%xmm2,%xmm6
pmuludq %xmm13,%xmm6
pshufd $0xed,%xmm6,%xmm6
punpckldq %xmm6,%xmm5
pxor   %xmm6,%xmm6
pcmpgtd %xmm2,%xmm6
pand   %xmm13,%xmm6
paddd  %xmm2,%xmm6
psubd  %xmm6,%xmm5
paddd  %xmm2,%xmm5
movdqa %xmm5,%xmm6
psrld  $0x1f,%xmm6
psrld  $0x6,%xmm5
paddd  %xmm6,%xmm5
pshufd $0xf5,%xmm5,%xmm6
pmuludq %xmm12,%xmm5
pshufd $0xe8,%xmm5,%xmm5
pmuludq %xmm12,%xmm6
pshufd $0xe8,%xmm6,%xmm6
punpckldq %xmm6,%xmm5
psubd  %xmm5,%xmm2
pand   %xmm10,%xmm2
pand   %xmm10,%xmm3
packuswb %xmm2,%xmm3
pand   %xmm10,%xmm1
pand   %xmm10,%xmm0
packuswb %xmm0,%xmm1
packuswb %xmm1,%xmm3
paddb  0x1586(%rip),%xmm3
movdqa %xmm3,(%rsp,%rdi,1)
add    $0x10,%rdi
paddd  %xmm11,%xmm7
paddd  %xmm11,%xmm4
paddd  %xmm11,%xmm15
paddd  %xmm11,%xmm14
cmp    %rdi,%rdx
jne    1890 <main+0x760>
cmp    %r8,%rdx
je     1b67 <main+0xa37>
lea    (%rsi,%rsi,2),%esi
add    $0xffffffe0,%esi
nopl   0x0(%rax,%rax,1)
movsbl (%rsp,%rdx,1),%ecx
add    %esi,%ecx
movslq %ecx,%rcx
imul   $0xffffffffae4c415d,%rcx,%rdi
shr    $0x20,%rdi
add    %ecx,%edi
mov    %edi,%ebx
shr    $0x1f,%ebx
shr    $0x6,%edi
add    %ebx,%edi
imul   $0x5e,%edi,%edi
sub    %edi,%ecx
add    $0x20,%cl
mov    %cl,(%rsp,%rdx,1)
add    $0x1,%rdx
add    $0x3,%esi
cmp    %rdx,%r8
jne    1b30 <main+0xa00>
test   %eax,%eax
jle    256c <main+0x143c>
cmp    $0x10,%eax
jae    1b80 <main+0xa50>
mov    $0x1,%esi
xor    %edx,%edx
jmp    1e75 <main+0xd45>
mov    %r8d,%edx
and    $0xfffffff0,%edx
lea    0x1(%rdx),%esi
movdqa 0x146e(%rip),%xmm14
movdqa 0x1475(%rip),%xmm15
movdqa 0x147d(%rip),%xmm4
movdqa 0x1485(%rip),%xmm7
xor    %edi,%edi
movdqa 0x148a(%rip),%xmm9
movdqa 0x1491(%rip),%xmm13
movdqa 0x1498(%rip),%xmm12
movdqa 0x149f(%rip),%xmm10
movdqa 0x14b6(%rip),%xmm11
nopw   0x0(%rax,%rax,1)
movdqa (%rsp,%rdi,1),%xmm1
punpcklbw %xmm1,%xmm0
punpckhwd %xmm0,%xmm8
psrad  $0x18,%xmm8
punpcklwd %xmm0,%xmm0
psrad  $0x18,%xmm0
punpckhbw %xmm1,%xmm1
punpcklwd %xmm1,%xmm6
psrad  $0x18,%xmm6
punpckhwd %xmm1,%xmm5
psrad  $0x18,%xmm5
movdqa %xmm4,%xmm2
paddd  %xmm4,%xmm2
paddd  %xmm4,%xmm2
movdqa %xmm7,%xmm3
paddd  %xmm7,%xmm3
paddd  %xmm7,%xmm3
paddd  %xmm9,%xmm2
paddd  %xmm8,%xmm2
movdqa %xmm15,%xmm1
paddd  %xmm15,%xmm1
paddd  %xmm15,%xmm1
paddd  %xmm9,%xmm3
paddd  %xmm0,%xmm3
movdqa %xmm14,%xmm0
paddd  %xmm14,%xmm0
paddd  %xmm14,%xmm0
paddd  %xmm9,%xmm1
paddd  %xmm6,%xmm1
paddd  %xmm9,%xmm0
paddd  %xmm5,%xmm0
movdqa %xmm0,%xmm5
pmuludq %xmm13,%xmm5
pshufd $0xed,%xmm5,%xmm5
pshufd $0xf5,%xmm0,%xmm6
pmuludq %xmm13,%xmm6
pshufd $0xed,%xmm6,%xmm6
punpckldq %xmm6,%xmm5
pxor   %xmm6,%xmm6
pcmpgtd %xmm0,%xmm6
pand   %xmm13,%xmm6
paddd  %xmm0,%xmm6
psubd  %xmm6,%xmm5
paddd  %xmm0,%xmm5
movdqa %xmm5,%xmm6
psrld  $0x1f,%xmm6
psrld  $0x6,%xmm5
paddd  %xmm6,%xmm5
pshufd $0xf5,%xmm5,%xmm6
pmuludq %xmm12,%xmm5
pshufd $0xe8,%xmm5,%xmm5
pmuludq %xmm12,%xmm6
pshufd $0xe8,%xmm6,%xmm6
punpckldq %xmm6,%xmm5
psubd  %xmm5,%xmm0
movdqa %xmm1,%xmm5
pmuludq %xmm13,%xmm5
pshufd $0xed,%xmm5,%xmm5
pshufd $0xf5,%xmm1,%xmm6
pmuludq %xmm13,%xmm6
pshufd $0xed,%xmm6,%xmm6
punpckldq %xmm6,%xmm5
pxor   %xmm6,%xmm6
pcmpgtd %xmm1,%xmm6
pand   %xmm13,%xmm6
paddd  %xmm1,%xmm6
psubd  %xmm6,%xmm5
paddd  %xmm1,%xmm5
movdqa %xmm5,%xmm6
psrld  $0x1f,%xmm6
psrld  $0x6,%xmm5
paddd  %xmm6,%xmm5
pshufd $0xf5,%xmm5,%xmm6
pmuludq %xmm12,%xmm5
pshufd $0xe8,%xmm5,%xmm5
pmuludq %xmm12,%xmm6
pshufd $0xe8,%xmm6,%xmm6
punpckldq %xmm6,%xmm5
psubd  %xmm5,%xmm1
movdqa %xmm3,%xmm5
pmuludq %xmm13,%xmm5
pshufd $0xed,%xmm5,%xmm5
pshufd $0xf5,%xmm3,%xmm6
pmuludq %xmm13,%xmm6
pshufd $0xed,%xmm6,%xmm6
punpckldq %xmm6,%xmm5
pxor   %xmm6,%xmm6
pcmpgtd %xmm3,%xmm6
pand   %xmm13,%xmm6
paddd  %xmm3,%xmm6
psubd  %xmm6,%xmm5
paddd  %xmm3,%xmm5
movdqa %xmm5,%xmm6
psrld  $0x1f,%xmm6
psrld  $0x6,%xmm5
paddd  %xmm6,%xmm5
pshufd $0xf5,%xmm5,%xmm6
pmuludq %xmm12,%xmm5
pshufd $0xe8,%xmm5,%xmm5
pmuludq %xmm12,%xmm6
pshufd $0xe8,%xmm6,%xmm6
punpckldq %xmm6,%xmm5
psubd  %xmm5,%xmm3
movdqa %xmm2,%xmm5
pmuludq %xmm13,%xmm5
pshufd $0xed,%xmm5,%xmm5
pshufd $0xf5,%xmm2,%xmm6
pmuludq %xmm13,%xmm6
pshufd $0xed,%xmm6,%xmm6
punpckldq %xmm6,%xmm5
pxor   %xmm6,%xmm6
pcmpgtd %xmm2,%xmm6
pand   %xmm13,%xmm6
paddd  %xmm2,%xmm6
psubd  %xmm6,%xmm5
paddd  %xmm2,%xmm5
movdqa %xmm5,%xmm6
psrld  $0x1f,%xmm6
psrld  $0x6,%xmm5
paddd  %xmm6,%xmm5
pshufd $0xf5,%xmm5,%xmm6
pmuludq %xmm12,%xmm5
pshufd $0xe8,%xmm5,%xmm5
pmuludq %xmm12,%xmm6
pshufd $0xe8,%xmm6,%xmm6
punpckldq %xmm6,%xmm5
psubd  %xmm5,%xmm2
pand   %xmm10,%xmm2
pand   %xmm10,%xmm3
packuswb %xmm2,%xmm3
pand   %xmm10,%xmm1
pand   %xmm10,%xmm0
packuswb %xmm0,%xmm1
packuswb %xmm1,%xmm3
paddb  0x1236(%rip),%xmm3
movdqa %xmm3,(%rsp,%rdi,1)
add    $0x10,%rdi
paddd  %xmm11,%xmm7
paddd  %xmm11,%xmm4
paddd  %xmm11,%xmm15
paddd  %xmm11,%xmm14
cmp    %rdi,%rdx
jne    1be0 <main+0xab0>
cmp    %r8,%rdx
je     1eb7 <main+0xd87>
lea    (%rsi,%rsi,2),%esi
add    $0xffffffe0,%esi
nopl   0x0(%rax,%rax,1)
movsbl (%rsp,%rdx,1),%ecx
add    %esi,%ecx
movslq %ecx,%rcx
imul   $0xffffffffae4c415d,%rcx,%rdi
shr    $0x20,%rdi
add    %ecx,%edi
mov    %edi,%ebx
shr    $0x1f,%ebx
shr    $0x6,%edi
add    %ebx,%edi
imul   $0x5e,%edi,%edi
sub    %edi,%ecx
add    $0x20,%cl
mov    %cl,(%rsp,%rdx,1)
add    $0x1,%rdx
add    $0x3,%esi
cmp    %rdx,%r8
jne    1e80 <main+0xd50>
test   %eax,%eax
jle    256c <main+0x143c>
cmp    $0x10,%eax
jae    1ed0 <main+0xda0>
mov    $0x3,%esi
xor    %edx,%edx
jmp    21c5 <main+0x1095>
mov    %r8d,%edx
and    $0xfffffff0,%edx
lea    0x3(%rdx),%esi
movdqa 0x123e(%rip),%xmm14
movdqa 0x1245(%rip),%xmm15
movdqa 0x124d(%rip),%xmm4
movdqa 0x1255(%rip),%xmm7
xor    %edi,%edi
movdqa 0x113a(%rip),%xmm9
movdqa 0x1141(%rip),%xmm13
movdqa 0x1148(%rip),%xmm12
movdqa 0x114f(%rip),%xmm10
movdqa 0x1166(%rip),%xmm11
nopw   0x0(%rax,%rax,1)
movdqa (%rsp,%rdi,1),%xmm1
punpcklbw %xmm1,%xmm0
punpckhwd %xmm0,%xmm8
psrad  $0x18,%xmm8
punpcklwd %xmm0,%xmm0
psrad  $0x18,%xmm0
punpckhbw %xmm1,%xmm1
punpcklwd %xmm1,%xmm6
psrad  $0x18,%xmm6
punpckhwd %xmm1,%xmm5
psrad  $0x18,%xmm5
movdqa %xmm4,%xmm2
paddd  %xmm4,%xmm2
paddd  %xmm4,%xmm2
movdqa %xmm7,%xmm3
paddd  %xmm7,%xmm3
paddd  %xmm7,%xmm3
paddd  %xmm9,%xmm2
paddd  %xmm8,%xmm2
movdqa %xmm15,%xmm1
paddd  %xmm15,%xmm1
paddd  %xmm15,%xmm1
paddd  %xmm9,%xmm3
paddd  %xmm0,%xmm3
movdqa %xmm14,%xmm0
paddd  %xmm14,%xmm0
paddd  %xmm14,%xmm0
paddd  %xmm9,%xmm1
paddd  %xmm6,%xmm1
paddd  %xmm9,%xmm0
paddd  %xmm5,%xmm0
movdqa %xmm0,%xmm5
pmuludq %xmm13,%xmm5
pshufd $0xed,%xmm5,%xmm5
pshufd $0xf5,%xmm0,%xmm6
pmuludq %xmm13,%xmm6
pshufd $0xed,%xmm6,%xmm6
punpckldq %xmm6,%xmm5
pxor   %xmm6,%xmm6
pcmpgtd %xmm0,%xmm6
pand   %xmm13,%xmm6
paddd  %xmm0,%xmm6
psubd  %xmm6,%xmm5
paddd  %xmm0,%xmm5
movdqa %xmm5,%xmm6
psrld  $0x1f,%xmm6
psrld  $0x6,%xmm5
paddd  %xmm6,%xmm5
pshufd $0xf5,%xmm5,%xmm6
pmuludq %xmm12,%xmm5
pshufd $0xe8,%xmm5,%xmm5
pmuludq %xmm12,%xmm6
pshufd $0xe8,%xmm6,%xmm6
punpckldq %xmm6,%xmm5
psubd  %xmm5,%xmm0
movdqa %xmm1,%xmm5
pmuludq %xmm13,%xmm5
pshufd $0xed,%xmm5,%xmm5
pshufd $0xf5,%xmm1,%xmm6
pmuludq %xmm13,%xmm6
pshufd $0xed,%xmm6,%xmm6
punpckldq %xmm6,%xmm5
pxor   %xmm6,%xmm6
pcmpgtd %xmm1,%xmm6
pand   %xmm13,%xmm6
paddd  %xmm1,%xmm6
psubd  %xmm6,%xmm5
paddd  %xmm1,%xmm5
movdqa %xmm5,%xmm6
psrld  $0x1f,%xmm6
psrld  $0x6,%xmm5
paddd  %xmm6,%xmm5
pshufd $0xf5,%xmm5,%xmm6
pmuludq %xmm12,%xmm5
pshufd $0xe8,%xmm5,%xmm5
pmuludq %xmm12,%xmm6
pshufd $0xe8,%xmm6,%xmm6
punpckldq %xmm6,%xmm5
psubd  %xmm5,%xmm1
movdqa %xmm3,%xmm5
pmuludq %xmm13,%xmm5
pshufd $0xed,%xmm5,%xmm5
pshufd $0xf5,%xmm3,%xmm6
pmuludq %xmm13,%xmm6
pshufd $0xed,%xmm6,%xmm6
punpckldq %xmm6,%xmm5
pxor   %xmm6,%xmm6
pcmpgtd %xmm3,%xmm6
pand   %xmm13,%xmm6
paddd  %xmm3,%xmm6
psubd  %xmm6,%xmm5
paddd  %xmm3,%xmm5
movdqa %xmm5,%xmm6
psrld  $0x1f,%xmm6
psrld  $0x6,%xmm5
paddd  %xmm6,%xmm5
pshufd $0xf5,%xmm5,%xmm6
pmuludq %xmm12,%xmm5
pshufd $0xe8,%xmm5,%xmm5
pmuludq %xmm12,%xmm6
pshufd $0xe8,%xmm6,%xmm6
punpckldq %xmm6,%xmm5
psubd  %xmm5,%xmm3
movdqa %xmm2,%xmm5
pmuludq %xmm13,%xmm5
pshufd $0xed,%xmm5,%xmm5
pshufd $0xf5,%xmm2,%xmm6
pmuludq %xmm13,%xmm6
pshufd $0xed,%xmm6,%xmm6
punpckldq %xmm6,%xmm5
pxor   %xmm6,%xmm6
pcmpgtd %xmm2,%xmm6
pand   %xmm13,%xmm6
paddd  %xmm2,%xmm6
psubd  %xmm6,%xmm5
paddd  %xmm2,%xmm5
movdqa %xmm5,%xmm6
psrld  $0x1f,%xmm6
psrld  $0x6,%xmm5
paddd  %xmm6,%xmm5
pshufd $0xf5,%xmm5,%xmm6
pmuludq %xmm12,%xmm5
pshufd $0xe8,%xmm5,%xmm5
pmuludq %xmm12,%xmm6
pshufd $0xe8,%xmm6,%xmm6
punpckldq %xmm6,%xmm5
psubd  %xmm5,%xmm2
pand   %xmm10,%xmm2
pand   %xmm10,%xmm3
packuswb %xmm2,%xmm3
pand   %xmm10,%xmm1
pand   %xmm10,%xmm0
packuswb %xmm0,%xmm1
packuswb %xmm1,%xmm3
paddb  0xee6(%rip),%xmm3
movdqa %xmm3,(%rsp,%rdi,1)
add    $0x10,%rdi
paddd  %xmm11,%xmm7
paddd  %xmm11,%xmm4
paddd  %xmm11,%xmm15
paddd  %xmm11,%xmm14
cmp    %rdi,%rdx
jne    1f30 <main+0xe00>
cmp    %r8,%rdx
je     2207 <main+0x10d7>
lea    (%rsi,%rsi,2),%esi
add    $0xffffffe0,%esi
nopl   0x0(%rax,%rax,1)
movsbl (%rsp,%rdx,1),%ecx
add    %esi,%ecx
movslq %ecx,%rcx
imul   $0xffffffffae4c415d,%rcx,%rdi
shr    $0x20,%rdi
add    %ecx,%edi
mov    %edi,%ebx
shr    $0x1f,%ebx
shr    $0x6,%edi
add    %ebx,%edi
imul   $0x5e,%edi,%edi
sub    %edi,%ecx
add    $0x20,%cl
mov    %cl,(%rsp,%rdx,1)
add    $0x1,%rdx
add    $0x3,%esi
cmp    %rdx,%r8
jne    21d0 <main+0x10a0>
test   %eax,%eax
jle    256c <main+0x143c>
cmp    $0x10,%eax
jae    2220 <main+0x10f0>
mov    $0x5,%esi
xor    %edx,%edx
jmp    2515 <main+0x13e5>
mov    %r8d,%edx
and    $0xfffffff0,%edx
lea    0x5(%rdx),%esi
movdqa 0xf2e(%rip),%xmm14
movdqa 0xdc5(%rip),%xmm15
movdqa 0xdcd(%rip),%xmm4
movdqa 0xdd5(%rip),%xmm7
xor    %edi,%edi
movdqa 0xdea(%rip),%xmm9
movdqa 0xdf1(%rip),%xmm13
movdqa 0xdf8(%rip),%xmm12
movdqa 0xdff(%rip),%xmm10
movdqa 0xe16(%rip),%xmm11
nopw   0x0(%rax,%rax,1)
movdqa (%rsp,%rdi,1),%xmm1
punpcklbw %xmm1,%xmm0
punpckhwd %xmm0,%xmm8
psrad  $0x18,%xmm8
punpcklwd %xmm0,%xmm0
psrad  $0x18,%xmm0
punpckhbw %xmm1,%xmm1
punpcklwd %xmm1,%xmm6
psrad  $0x18,%xmm6
punpckhwd %xmm1,%xmm5
psrad  $0x18,%xmm5
movdqa %xmm4,%xmm2
paddd  %xmm4,%xmm2
paddd  %xmm4,%xmm2
movdqa %xmm7,%xmm3
paddd  %xmm7,%xmm3
paddd  %xmm7,%xmm3
paddd  %xmm9,%xmm2
paddd  %xmm8,%xmm2
movdqa %xmm15,%xmm1
paddd  %xmm15,%xmm1
paddd  %xmm15,%xmm1
paddd  %xmm9,%xmm3
paddd  %xmm0,%xmm3
movdqa %xmm14,%xmm0
paddd  %xmm14,%xmm0
paddd  %xmm14,%xmm0
paddd  %xmm9,%xmm1
paddd  %xmm6,%xmm1
paddd  %xmm9,%xmm0
paddd  %xmm5,%xmm0
movdqa %xmm0,%xmm5
pmuludq %xmm13,%xmm5
pshufd $0xed,%xmm5,%xmm5
pshufd $0xf5,%xmm0,%xmm6
pmuludq %xmm13,%xmm6
pshufd $0xed,%xmm6,%xmm6
punpckldq %xmm6,%xmm5
pxor   %xmm6,%xmm6
pcmpgtd %xmm0,%xmm6
pand   %xmm13,%xmm6
paddd  %xmm0,%xmm6
psubd  %xmm6,%xmm5
paddd  %xmm0,%xmm5
movdqa %xmm5,%xmm6
psrld  $0x1f,%xmm6
psrld  $0x6,%xmm5
paddd  %xmm6,%xmm5
pshufd $0xf5,%xmm5,%xmm6
pmuludq %xmm12,%xmm5
pshufd $0xe8,%xmm5,%xmm5
pmuludq %xmm12,%xmm6
pshufd $0xe8,%xmm6,%xmm6
punpckldq %xmm6,%xmm5
psubd  %xmm5,%xmm0
movdqa %xmm1,%xmm5
pmuludq %xmm13,%xmm5
pshufd $0xed,%xmm5,%xmm5
pshufd $0xf5,%xmm1,%xmm6
pmuludq %xmm13,%xmm6
pshufd $0xed,%xmm6,%xmm6
punpckldq %xmm6,%xmm5
pxor   %xmm6,%xmm6
pcmpgtd %xmm1,%xmm6
pand   %xmm13,%xmm6
paddd  %xmm1,%xmm6
psubd  %xmm6,%xmm5
paddd  %xmm1,%xmm5
movdqa %xmm5,%xmm6
psrld  $0x1f,%xmm6
psrld  $0x6,%xmm5
paddd  %xmm6,%xmm5
pshufd $0xf5,%xmm5,%xmm6
pmuludq %xmm12,%xmm5
pshufd $0xe8,%xmm5,%xmm5
pmuludq %xmm12,%xmm6
pshufd $0xe8,%xmm6,%xmm6
punpckldq %xmm6,%xmm5
psubd  %xmm5,%xmm1
movdqa %xmm3,%xmm5
pmuludq %xmm13,%xmm5
pshufd $0xed,%xmm5,%xmm5
pshufd $0xf5,%xmm3,%xmm6
pmuludq %xmm13,%xmm6
pshufd $0xed,%xmm6,%xmm6
punpckldq %xmm6,%xmm5
pxor   %xmm6,%xmm6
pcmpgtd %xmm3,%xmm6
pand   %xmm13,%xmm6
paddd  %xmm3,%xmm6
psubd  %xmm6,%xmm5
paddd  %xmm3,%xmm5
movdqa %xmm5,%xmm6
psrld  $0x1f,%xmm6
psrld  $0x6,%xmm5
paddd  %xmm6,%xmm5
pshufd $0xf5,%xmm5,%xmm6
pmuludq %xmm12,%xmm5
pshufd $0xe8,%xmm5,%xmm5
pmuludq %xmm12,%xmm6
pshufd $0xe8,%xmm6,%xmm6
punpckldq %xmm6,%xmm5
psubd  %xmm5,%xmm3
movdqa %xmm2,%xmm5
pmuludq %xmm13,%xmm5
pshufd $0xed,%xmm5,%xmm5
pshufd $0xf5,%xmm2,%xmm6
pmuludq %xmm13,%xmm6
pshufd $0xed,%xmm6,%xmm6
punpckldq %xmm6,%xmm5
pxor   %xmm6,%xmm6
pcmpgtd %xmm2,%xmm6
pand   %xmm13,%xmm6
paddd  %xmm2,%xmm6
psubd  %xmm6,%xmm5
paddd  %xmm2,%xmm5
movdqa %xmm5,%xmm6
psrld  $0x1f,%xmm6
psrld  $0x6,%xmm5
paddd  %xmm6,%xmm5
pshufd $0xf5,%xmm5,%xmm6
pmuludq %xmm12,%xmm5
pshufd $0xe8,%xmm5,%xmm5
pmuludq %xmm12,%xmm6
pshufd $0xe8,%xmm6,%xmm6
punpckldq %xmm6,%xmm5
psubd  %xmm5,%xmm2
pand   %xmm10,%xmm2
pand   %xmm10,%xmm3
packuswb %xmm2,%xmm3
pand   %xmm10,%xmm1
pand   %xmm10,%xmm0
packuswb %xmm0,%xmm1
packuswb %xmm1,%xmm3
paddb  0xb96(%rip),%xmm3
movdqa %xmm3,(%rsp,%rdi,1)
add    $0x10,%rdi
paddd  %xmm11,%xmm7
paddd  %xmm11,%xmm4
paddd  %xmm11,%xmm15
paddd  %xmm11,%xmm14
cmp    %rdi,%rdx
jne    2280 <main+0x1150>
cmp    %r8,%rdx
je     2557 <main+0x1427>
lea    (%rsi,%rsi,2),%esi
add    $0xffffffe0,%esi
nopl   0x0(%rax,%rax,1)
movsbl (%rsp,%rdx,1),%ecx
add    %esi,%ecx
movslq %ecx,%rcx
imul   $0xffffffffae4c415d,%rcx,%rdi
shr    $0x20,%rdi
add    %ecx,%edi
mov    %edi,%ebx
shr    $0x1f,%ebx
shr    $0x6,%edi
add    %ebx,%edi
imul   $0x5e,%edi,%edi
sub    %edi,%ecx
add    $0x20,%cl
mov    %cl,(%rsp,%rdx,1)
add    $0x1,%rdx
add    $0x3,%esi
cmp    %rdx,%r8
jne    2520 <main+0x13f0>
test   %eax,%eax
jle    256c <main+0x143c>
cmp    $0x10,%eax
jae    258e <main+0x145e>
mov    $0x6,%edx
xor    %eax,%eax
jmp    2889 <main+0x1759>
xor    %r8d,%r8d
movb   $0x0,(%rsp,%r8,1)
lea    0xbf5(%rip),%rdi
mov    %rsp,%rsi
call   1040 <printf@plt>
xor    %eax,%eax
add    $0x3f0,%rsp
pop    %rbx
ret
mov    %r8d,%eax
and    $0xfffffff0,%eax
lea    0x6(%rax),%edx
movdqa 0xb40(%rip),%xmm14
movdqa 0xb47(%rip),%xmm15
movdqa 0xb4f(%rip),%xmm4
movdqa 0xb57(%rip),%xmm7
xor    %esi,%esi
movdqa 0xa7c(%rip),%xmm9
movdqa 0xa83(%rip),%xmm13
movdqa 0xa8a(%rip),%xmm12
movdqa 0xa91(%rip),%xmm10
movdqa 0xaa8(%rip),%xmm11
nopl   0x0(%rax,%rax,1)
movdqa (%rsp,%rsi,1),%xmm1
punpcklbw %xmm1,%xmm0
punpckhwd %xmm0,%xmm8
psrad  $0x18,%xmm8
punpcklwd %xmm0,%xmm0
psrad  $0x18,%xmm0
punpckhbw %xmm1,%xmm1
punpcklwd %xmm1,%xmm6
psrad  $0x18,%xmm6
punpckhwd %xmm1,%xmm5
psrad  $0x18,%xmm5
movdqa %xmm4,%xmm2
paddd  %xmm4,%xmm2
paddd  %xmm4,%xmm2
movdqa %xmm7,%xmm3
paddd  %xmm7,%xmm3
paddd  %xmm7,%xmm3
paddd  %xmm9,%xmm2
paddd  %xmm8,%xmm2
movdqa %xmm15,%xmm1
paddd  %xmm15,%xmm1
paddd  %xmm15,%xmm1
paddd  %xmm9,%xmm3
paddd  %xmm0,%xmm3
movdqa %xmm14,%xmm0
paddd  %xmm14,%xmm0
paddd  %xmm14,%xmm0
paddd  %xmm9,%xmm1
paddd  %xmm6,%xmm1
paddd  %xmm9,%xmm0
paddd  %xmm5,%xmm0
movdqa %xmm0,%xmm5
pmuludq %xmm13,%xmm5
pshufd $0xed,%xmm5,%xmm5
pshufd $0xf5,%xmm0,%xmm6
pmuludq %xmm13,%xmm6
pshufd $0xed,%xmm6,%xmm6
punpckldq %xmm6,%xmm5
pxor   %xmm6,%xmm6
pcmpgtd %xmm0,%xmm6
pand   %xmm13,%xmm6
paddd  %xmm0,%xmm6
psubd  %xmm6,%xmm5
paddd  %xmm0,%xmm5
movdqa %xmm5,%xmm6
psrld  $0x1f,%xmm6
psrld  $0x6,%xmm5
paddd  %xmm6,%xmm5
pshufd $0xf5,%xmm5,%xmm6
pmuludq %xmm12,%xmm5
pshufd $0xe8,%xmm5,%xmm5
pmuludq %xmm12,%xmm6
pshufd $0xe8,%xmm6,%xmm6
punpckldq %xmm6,%xmm5
psubd  %xmm5,%xmm0
movdqa %xmm1,%xmm5
pmuludq %xmm13,%xmm5
pshufd $0xed,%xmm5,%xmm5
pshufd $0xf5,%xmm1,%xmm6
pmuludq %xmm13,%xmm6
pshufd $0xed,%xmm6,%xmm6
punpckldq %xmm6,%xmm5
pxor   %xmm6,%xmm6
pcmpgtd %xmm1,%xmm6
pand   %xmm13,%xmm6
paddd  %xmm1,%xmm6
psubd  %xmm6,%xmm5
paddd  %xmm1,%xmm5
movdqa %xmm5,%xmm6
psrld  $0x1f,%xmm6
psrld  $0x6,%xmm5
paddd  %xmm6,%xmm5
pshufd $0xf5,%xmm5,%xmm6
pmuludq %xmm12,%xmm5
pshufd $0xe8,%xmm5,%xmm5
pmuludq %xmm12,%xmm6
pshufd $0xe8,%xmm6,%xmm6
punpckldq %xmm6,%xmm5
psubd  %xmm5,%xmm1
movdqa %xmm3,%xmm5
pmuludq %xmm13,%xmm5
pshufd $0xed,%xmm5,%xmm5
pshufd $0xf5,%xmm3,%xmm6
pmuludq %xmm13,%xmm6
pshufd $0xed,%xmm6,%xmm6
punpckldq %xmm6,%xmm5
pxor   %xmm6,%xmm6
pcmpgtd %xmm3,%xmm6
pand   %xmm13,%xmm6
paddd  %xmm3,%xmm6
psubd  %xmm6,%xmm5
paddd  %xmm3,%xmm5
movdqa %xmm5,%xmm6
psrld  $0x1f,%xmm6
psrld  $0x6,%xmm5
paddd  %xmm6,%xmm5
pshufd $0xf5,%xmm5,%xmm6
pmuludq %xmm12,%xmm5
pshufd $0xe8,%xmm5,%xmm5
pmuludq %xmm12,%xmm6
pshufd $0xe8,%xmm6,%xmm6
punpckldq %xmm6,%xmm5
psubd  %xmm5,%xmm3
movdqa %xmm2,%xmm5
pmuludq %xmm13,%xmm5
pshufd $0xed,%xmm5,%xmm5
pshufd $0xf5,%xmm2,%xmm6
pmuludq %xmm13,%xmm6
pshufd $0xed,%xmm6,%xmm6
punpckldq %xmm6,%xmm5
pxor   %xmm6,%xmm6
pcmpgtd %xmm2,%xmm6
pand   %xmm13,%xmm6
paddd  %xmm2,%xmm6
psubd  %xmm6,%xmm5
paddd  %xmm2,%xmm5
movdqa %xmm5,%xmm6
psrld  $0x1f,%xmm6
psrld  $0x6,%xmm5
paddd  %xmm6,%xmm5
pshufd $0xf5,%xmm5,%xmm6
pmuludq %xmm12,%xmm5
pshufd $0xe8,%xmm5,%xmm5
pmuludq %xmm12,%xmm6
pshufd $0xe8,%xmm6,%xmm6
punpckldq %xmm6,%xmm5
psubd  %xmm5,%xmm2
pand   %xmm10,%xmm2
pand   %xmm10,%xmm3
packuswb %xmm2,%xmm3
pand   %xmm10,%xmm1
pand   %xmm10,%xmm0
packuswb %xmm0,%xmm1
packuswb %xmm1,%xmm3
paddb  0x826(%rip),%xmm3
movdqa %xmm3,(%rsp,%rsi,1)
add    $0x10,%rsi
paddd  %xmm11,%xmm7
paddd  %xmm11,%xmm4
paddd  %xmm11,%xmm15
paddd  %xmm11,%xmm14
cmp    %rsi,%rax
jne    25f0 <main+0x14c0>
cmp    %r8,%rax
je     256f <main+0x143f>
lea    (%rdx,%rdx,2),%edx
add    $0xffffffe0,%edx
nop
movsbl (%rsp,%rax,1),%ecx
add    %edx,%ecx
movslq %ecx,%rcx
imul   $0xffffffffae4c415d,%rcx,%rsi
shr    $0x20,%rsi
add    %ecx,%esi
mov    %esi,%edi
shr    $0x1f,%edi
shr    $0x6,%esi
add    %edi,%esi
imul   $0x5e,%esi,%esi
sub    %esi,%ecx
add    $0x20,%cl
mov    %cl,(%rsp,%rax,1)
add    $0x1,%rax
add    $0x3,%edx
cmp    %rax,%r8
jne    2890 <main+0x1760>
jmp    256f <main+0x143f>

LLVM IR (-O0):
@__const.main.key = [7 x i32] [i32 1, i32 8, i32 6, i32 1, i32 3, i32 5, i32 6]
@.str = [4 x i8] c"%s\0A\00"
define i32 @main() {
%1 = alloca i32
%2 = alloca [1000 x i8]
%3 = alloca i32
%4 = alloca i32
%5 = alloca i32
%6 = alloca i32
%7 = alloca [7 x i32]
%8 = alloca i64
%9 = alloca [1000 x i8]
%10 = alloca i32
store i32 0, i32* %1
store i32 0, i32* %4
store i32 0, i32* %3
br label %11
11: ; preds = %14, %0
%12 = call i32 (...) @getch()
store i32 %12, i32* %3
%13 = icmp ne i32 %12, 10
br i1 %13, label %14, label %21
14: ; preds = %11
%15 = load i32, i32* %3
%16 = trunc i32 %15 to i8
%17 = load i32, i32* %4
%18 = add nsw i32 %17, 1
store i32 %18, i32* %4
%19 = sext i32 %17 to i64
%20 = getelementptr inbounds [1000 x i8], [1000 x i8]* %2, i64 0, i64 %19
store i8 %16, i8* %20
br label %11
21: ; preds = %11
%22 = load i32, i32* %4
%23 = sext i32 %22 to i64
%24 = getelementptr inbounds [1000 x i8], [1000 x i8]* %2, i64 0, i64 %23
store i8 0, i8* %24
%25 = getelementptr inbounds [1000 x i8], [1000 x i8]* %2, i64 0, i64 0
%26 = call i32 @strlen(i8* %25)
store i32 %26, i32* %5
store i32 0, i32* %6
%27 = bitcast [7 x i32]* %7 to i8*
store i64 7, i64* %8
store i32 0, i32* %10
store i32 0, i32* %6
br label %28
28: ; preds = %63, %21
%29 = load i32, i32* %6
%30 = sext i32 %29 to i64
%31 = load i64, i64* %8
%32 = icmp ult i64 %30, %31
br i1 %32, label %33, label %66
33: ; preds = %28
%34 = load i32, i32* %6
%35 = sext i32 %34 to i64
%36 = getelementptr inbounds [7 x i32], [7 x i32]* %7, i64 0, i64 %35
%37 = load i32, i32* %36
store i32 %37, i32* %10
store i32 0, i32* %4
br label %38
38: ; preds = %59, %33
%39 = load i32, i32* %4
%40 = load i32, i32* %5
%41 = icmp slt i32 %39, %40
br i1 %41, label %42, label %62
42: ; preds = %38
%43 = load i32, i32* %4
%44 = sext i32 %43 to i64
%45 = getelementptr inbounds [1000 x i8], [1000 x i8]* %2, i64 0, i64 %44
%46 = load i8, i8* %45
%47 = sext i8 %46 to i32
%48 = sub nsw i32 %47, 32
%49 = load i32, i32* %10
%50 = add nsw i32 %49, 1
store i32 %50, i32* %10
%51 = mul nsw i32 3, %49
%52 = add nsw i32 %48, %51
%53 = srem i32 %52, 94
%54 = add nsw i32 %53, 32
%55 = trunc i32 %54 to i8
%56 = load i32, i32* %4
%57 = sext i32 %56 to i64
%58 = getelementptr inbounds [1000 x i8], [1000 x i8]* %2, i64 0, i64 %57
store i8 %55, i8* %58
br label %59
59: ; preds = %42
%60 = load i32, i32* %4
%61 = add nsw i32 %60, 1
store i32 %61, i32* %4
br label %38
62: ; preds = %38
br label %63
63: ; preds = %62
%64 = load i32, i32* %6
%65 = add nsw i32 %64, 1
store i32 %65, i32* %6
br label %28
66: ; preds = %28
%67 = load i32, i32* %4
%68 = sext i32 %67 to i64
%69 = getelementptr inbounds [1000 x i8], [1000 x i8]* %2, i64 0, i64 %68
store i8 0, i8* %69
%70 = getelementptr inbounds [1000 x i8], [1000 x i8]* %2, i64 0, i64 0
%71 = call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i8* %70)
ret i32 0
}

LLVM IR (-O2):
@.str = [4 x i8] c"%s\0A\00"
define i32 @main() {
%1 = alloca [1000 x i8]
%2 = getelementptr inbounds [1000 x i8], [1000 x i8]* %1, i64 0, i64 0
%3 = tail call i32 (...) @getch()
%4 = icmp eq i32 %3, 10
br i1 %4, label %15, label %5
5: ; preds = %0, %5
%6 = phi i64 [ %9, %5 ], [ 0, %0 ]
%7 = phi i32 [ %11, %5 ], [ %3, %0 ]
%8 = trunc i32 %7 to i8
%9 = add nuw i64 %6, 1
%10 = getelementptr inbounds [1000 x i8], [1000 x i8]* %1, i64 0, i64 %6
store i8 %8, i8* %10
%11 = tail call i32 (...) @getch()
%12 = icmp eq i32 %11, 10
br i1 %12, label %13, label %5
13: ; preds = %5
%14 = and i64 %9, 4294967295
br label %15
15: ; preds = %13, %0
%16 = phi i64 [ 0, %0 ], [ %14, %13 ]
%17 = getelementptr inbounds [1000 x i8], [1000 x i8]* %1, i64 0, i64 %16
store i8 0, i8* %17
%18 = call i32 @strlen(i8* %2)
%19 = icmp sgt i32 %18, 0
br i1 %19, label %20, label %336
20: ; preds = %15
%21 = zext i32 %18 to i64
%22 = icmp ult i32 %18, 16
br i1 %22, label %46, label %23
23: ; preds = %20
%24 = and i64 %21, 4294967280
%25 = trunc i64 %24 to i32
%26 = or i32 %25, 1
br label %27
27: ; preds = %27, %23
%28 = phi i64 [ 0, %23 ], [ %41, %27 ]
%29 = phi <16 x i32> [ <i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 16>, %23 ], [ %42, %27 ]
%30 = getelementptr inbounds [1000 x i8], [1000 x i8]* %1, i64 0, i64 %28
%31 = bitcast i8* %30 to <16 x i8>*
%32 = load <16 x i8>, <16 x i8>* %31
%33 = sext <16 x i8> %32 to <16 x i32>
%34 = mul nsw <16 x i32> %29, <i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3>
%35 = add nsw <16 x i32> %34, <i32 -32, i32 -32, i32 -32, i32 -32, i32 -32, i32 -32, i32 -32, i32 -32, i32 -32, i32 -32, i32 -32, i32 -32, i32 -32, i32 -32, i32 -32, i32 -32>
%36 = add <16 x i32> %35, %33
%37 = srem <16 x i32> %36, <i32 94, i32 94, i32 94, i32 94, i32 94, i32 94, i32 94, i32 94, i32 94, i32 94, i32 94, i32 94, i32 94, i32 94, i32 94, i32 94>
%38 = trunc <16 x i32> %37 to <16 x i8>
%39 = add nsw <16 x i8> %38, <i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32>
%40 = bitcast i8* %30 to <16 x i8>*
store <16 x i8> %39, <16 x i8>* %40
%41 = add nuw i64 %28, 16
%42 = add <16 x i32> %29, <i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16>
%43 = icmp eq i64 %41, %24
br i1 %43, label %44, label %27
44: ; preds = %27
%45 = icmp eq i64 %24, %21
br i1 %45, label %64, label %46
46: ; preds = %20, %44
%47 = phi i64 [ 0, %20 ], [ %24, %44 ]
%48 = phi i32 [ 1, %20 ], [ %26, %44 ]
br label %49
49: ; preds = %46, %49
%50 = phi i64 [ %62, %49 ], [ %47, %46 ]
%51 = phi i32 [ %55, %49 ], [ %48, %46 ]
%52 = getelementptr inbounds [1000 x i8], [1000 x i8]* %1, i64 0, i64 %50
%53 = load i8, i8* %52
%54 = sext i8 %53 to i32
%55 = add nuw nsw i32 %51, 1
%56 = mul nsw i32 %51, 3
%57 = add nsw i32 %56, -32
%58 = add i32 %57, %54
%59 = srem i32 %58, 94
%60 = trunc i32 %59 to i8
%61 = add nsw i8 %60, 32
store i8 %61, i8* %52
%62 = add nuw nsw i64 %50, 1
%63 = icmp eq i64 %62, %21
br i1 %63, label %64, label %49
64: ; preds = %49, %44
br i1 %19, label %65, label %336
65: ; preds = %64
%66 = zext i32 %18 to i64
%67 = icmp ult i32 %18, 16
br i1 %67, label %91, label %68
68: ; preds = %65
%69 = and i64 %21, 4294967280
%70 = trunc i64 %69 to i32
%71 = or i32 %70, 8
br label %72
72: ; preds = %72, %68
%73 = phi i64 [ 0, %68 ], [ %86, %72 ]
%74 = phi <16 x i32> [ <i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 16, i32 17, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23>, %68 ], [ %87, %72 ]
%75 = getelementptr inbounds [1000 x i8], [1000 x i8]* %1, i64 0, i64 %73
%76 = bitcast i8* %75 to <16 x i8>*
%77 = load <16 x i8>, <16 x i8>* %76
%78 = sext <16 x i8> %77 to <16 x i32>
%79 = mul nsw <16 x i32> %74, <i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3>
%80 = add nsw <16 x i32> %79, <i32 -32, i32 -32, i32 -32, i32 -32, i32 -32, i32 -32, i32 -32, i32 -32, i32 -32, i32 -32, i32 -32, i32 -32, i32 -32, i32 -32, i32 -32, i32 -32>
%81 = add <16 x i32> %80, %78
%82 = srem <16 x i32> %81, <i32 94, i32 94, i32 94, i32 94, i32 94, i32 94, i32 94, i32 94, i32 94, i32 94, i32 94, i32 94, i32 94, i32 94, i32 94, i32 94>
%83 = trunc <16 x i32> %82 to <16 x i8>
%84 = add nsw <16 x i8> %83, <i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32>
%85 = bitcast i8* %75 to <16 x i8>*
store <16 x i8> %84, <16 x i8>* %85
%86 = add nuw i64 %73, 16
%87 = add <16 x i32> %74, <i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16>
%88 = icmp eq i64 %86, %69
br i1 %88, label %89, label %72
89: ; preds = %72
%90 = icmp eq i64 %69, %21
br i1 %90, label %109, label %91
91: ; preds = %65, %89
%92 = phi i64 [ 0, %65 ], [ %69, %89 ]
%93 = phi i32 [ 8, %65 ], [ %71, %89 ]
br label %94
94: ; preds = %91, %94
%95 = phi i64 [ %107, %94 ], [ %92, %91 ]
%96 = phi i32 [ %100, %94 ], [ %93, %91 ]
%97 = getelementptr inbounds [1000 x i8], [1000 x i8]* %1, i64 0, i64 %95
%98 = load i8, i8* %97
%99 = sext i8 %98 to i32
%100 = add nuw nsw i32 %96, 1
%101 = mul nsw i32 %96, 3
%102 = add nsw i32 %101, -32
%103 = add i32 %102, %99
%104 = srem i32 %103, 94
%105 = trunc i32 %104 to i8
%106 = add nsw i8 %105, 32
store i8 %106, i8* %97
%107 = add nuw nsw i64 %95, 1
%108 = icmp eq i64 %107, %66
br i1 %108, label %109, label %94
109: ; preds = %94, %89
br i1 %19, label %110, label %336
110: ; preds = %109
%111 = zext i32 %18 to i64
%112 = icmp ult i32 %18, 16
br i1 %112, label %136, label %113
113: ; preds = %110
%114 = and i64 %21, 4294967280
%115 = trunc i64 %114 to i32
%116 = or i32 %115, 6
br label %117
117: ; preds = %117, %113
%118 = phi i64 [ 0, %113 ], [ %131, %117 ]
%119 = phi <16 x i32> [ <i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 16, i32 17, i32 18, i32 19, i32 20, i32 21>, %113 ], [ %132, %117 ]
%120 = getelementptr inbounds [1000 x i8], [1000 x i8]* %1, i64 0, i64 %118
%121 = bitcast i8* %120 to <16 x i8>*
%122 = load <16 x i8>, <16 x i8>* %121
%123 = sext <16 x i8> %122 to <16 x i32>
%124 = mul nsw <16 x i32> %119, <i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3>
%125 = add nsw <16 x i32> %124, <i32 -32, i32 -32, i32 -32, i32 -32, i32 -32, i32 -32, i32 -32, i32 -32, i32 -32, i32 -32, i32 -32, i32 -32, i32 -32, i32 -32, i32 -32, i32 -32>
%126 = add <16 x i32> %125, %123
%127 = srem <16 x i32> %126, <i32 94, i32 94, i32 94, i32 94, i32 94, i32 94, i32 94, i32 94, i32 94, i32 94, i32 94, i32 94, i32 94, i32 94, i32 94, i32 94>
%128 = trunc <16 x i32> %127 to <16 x i8>
%129 = add nsw <16 x i8> %128, <i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32>
%130 = bitcast i8* %120 to <16 x i8>*
store <16 x i8> %129, <16 x i8>* %130
%131 = add nuw i64 %118, 16
%132 = add <16 x i32> %119, <i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16>
%133 = icmp eq i64 %131, %114
br i1 %133, label %134, label %117
134: ; preds = %117
%135 = icmp eq i64 %114, %21
br i1 %135, label %154, label %136
136: ; preds = %110, %134
%137 = phi i64 [ 0, %110 ], [ %114, %134 ]
%138 = phi i32 [ 6, %110 ], [ %116, %134 ]
br label %139
139: ; preds = %136, %139
%140 = phi i64 [ %152, %139 ], [ %137, %136 ]
%141 = phi i32 [ %145, %139 ], [ %138, %136 ]
%142 = getelementptr inbounds [1000 x i8], [1000 x i8]* %1, i64 0, i64 %140
%143 = load i8, i8* %142
%144 = sext i8 %143 to i32
%145 = add nuw nsw i32 %141, 1
%146 = mul nsw i32 %141, 3
%147 = add nsw i32 %146, -32
%148 = add i32 %147, %144
%149 = srem i32 %148, 94
%150 = trunc i32 %149 to i8
%151 = add nsw i8 %150, 32
store i8 %151, i8* %142
%152 = add nuw nsw i64 %140, 1
%153 = icmp eq i64 %152, %111
br i1 %153, label %154, label %139
154: ; preds = %139, %134
br i1 %19, label %155, label %336
155: ; preds = %154
%156 = zext i32 %18 to i64
%157 = icmp ult i32 %18, 16
br i1 %157, label %181, label %158
158: ; preds = %155
%159 = and i64 %21, 4294967280
%160 = trunc i64 %159 to i32
%161 = or i32 %160, 1
br label %162
162: ; preds = %162, %158
%163 = phi i64 [ 0, %158 ], [ %176, %162 ]
%164 = phi <16 x i32> [ <i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 16>, %158 ], [ %177, %162 ]
%165 = getelementptr inbounds [1000 x i8], [1000 x i8]* %1, i64 0, i64 %163
%166 = bitcast i8* %165 to <16 x i8>*
%167 = load <16 x i8>, <16 x i8>* %166
%168 = sext <16 x i8> %167 to <16 x i32>
%169 = mul nsw <16 x i32> %164, <i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3>
%170 = add nsw <16 x i32> %169, <i32 -32, i32 -32, i32 -32, i32 -32, i32 -32, i32 -32, i32 -32, i32 -32, i32 -32, i32 -32, i32 -32, i32 -32, i32 -32, i32 -32, i32 -32, i32 -32>
%171 = add <16 x i32> %170, %168
%172 = srem <16 x i32> %171, <i32 94, i32 94, i32 94, i32 94, i32 94, i32 94, i32 94, i32 94, i32 94, i32 94, i32 94, i32 94, i32 94, i32 94, i32 94, i32 94>
%173 = trunc <16 x i32> %172 to <16 x i8>
%174 = add nsw <16 x i8> %173, <i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32>
%175 = bitcast i8* %165 to <16 x i8>*
store <16 x i8> %174, <16 x i8>* %175
%176 = add nuw i64 %163, 16
%177 = add <16 x i32> %164, <i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16>
%178 = icmp eq i64 %176, %159
br i1 %178, label %179, label %162
179: ; preds = %162
%180 = icmp eq i64 %159, %21
br i1 %180, label %199, label %181
181: ; preds = %155, %179
%182 = phi i64 [ 0, %155 ], [ %159, %179 ]
%183 = phi i32 [ 1, %155 ], [ %161, %179 ]
br label %184
184: ; preds = %181, %184
%185 = phi i64 [ %197, %184 ], [ %182, %181 ]
%186 = phi i32 [ %190, %184 ], [ %183, %181 ]
%187 = getelementptr inbounds [1000 x i8], [1000 x i8]* %1, i64 0, i64 %185
%188 = load i8, i8* %187
%189 = sext i8 %188 to i32
%190 = add nuw nsw i32 %186, 1
%191 = mul nsw i32 %186, 3
%192 = add nsw i32 %191, -32
%193 = add i32 %192, %189
%194 = srem i32 %193, 94
%195 = trunc i32 %194 to i8
%196 = add nsw i8 %195, 32
store i8 %196, i8* %187
%197 = add nuw nsw i64 %185, 1
%198 = icmp eq i64 %197, %156
br i1 %198, label %199, label %184
199: ; preds = %184, %179
br i1 %19, label %200, label %336
200: ; preds = %199
%201 = zext i32 %18 to i64
%202 = icmp ult i32 %18, 16
br i1 %202, label %226, label %203
203: ; preds = %200
%204 = and i64 %21, 4294967280
%205 = trunc i64 %204 to i32
%206 = or i32 %205, 3
br label %207
207: ; preds = %207, %203
%208 = phi i64 [ 0, %203 ], [ %221, %207 ]
%209 = phi <16 x i32> [ <i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 16, i32 17, i32 18>, %203 ], [ %222, %207 ]
%210 = getelementptr inbounds [1000 x i8], [1000 x i8]* %1, i64 0, i64 %208
%211 = bitcast i8* %210 to <16 x i8>*
%212 = load <16 x i8>, <16 x i8>* %211
%213 = sext <16 x i8> %212 to <16 x i32>
%214 = mul nsw <16 x i32> %209, <i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3>
%215 = add nsw <16 x i32> %214, <i32 -32, i32 -32, i32 -32, i32 -32, i32 -32, i32 -32, i32 -32, i32 -32, i32 -32, i32 -32, i32 -32, i32 -32, i32 -32, i32 -32, i32 -32, i32 -32>
%216 = add <16 x i32> %215, %213
%217 = srem <16 x i32> %216, <i32 94, i32 94, i32 94, i32 94, i32 94, i32 94, i32 94, i32 94, i32 94, i32 94, i32 94, i32 94, i32 94, i32 94, i32 94, i32 94>
%218 = trunc <16 x i32> %217 to <16 x i8>
%219 = add nsw <16 x i8> %218, <i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32>
%220 = bitcast i8* %210 to <16 x i8>*
store <16 x i8> %219, <16 x i8>* %220
%221 = add nuw i64 %208, 16
%222 = add <16 x i32> %209, <i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16>
%223 = icmp eq i64 %221, %204
br i1 %223, label %224, label %207
224: ; preds = %207
%225 = icmp eq i64 %204, %21
br i1 %225, label %244, label %226
226: ; preds = %200, %224
%227 = phi i64 [ 0, %200 ], [ %204, %224 ]
%228 = phi i32 [ 3, %200 ], [ %206, %224 ]
br label %229
229: ; preds = %226, %229
%230 = phi i64 [ %242, %229 ], [ %227, %226 ]
%231 = phi i32 [ %235, %229 ], [ %228, %226 ]
%232 = getelementptr inbounds [1000 x i8], [1000 x i8]* %1, i64 0, i64 %230
%233 = load i8, i8* %232
%234 = sext i8 %233 to i32
%235 = add nuw nsw i32 %231, 1
%236 = mul nsw i32 %231, 3
%237 = add nsw i32 %236, -32
%238 = add i32 %237, %234
%239 = srem i32 %238, 94
%240 = trunc i32 %239 to i8
%241 = add nsw i8 %240, 32
store i8 %241, i8* %232
%242 = add nuw nsw i64 %230, 1
%243 = icmp eq i64 %242, %201
br i1 %243, label %244, label %229
244: ; preds = %229, %224
br i1 %19, label %245, label %336
245: ; preds = %244
%246 = zext i32 %18 to i64
%247 = icmp ult i32 %18, 16
br i1 %247, label %271, label %248
248: ; preds = %245
%249 = and i64 %21, 4294967280
%250 = trunc i64 %249 to i32
%251 = or i32 %250, 5
br label %252
252: ; preds = %252, %248
%253 = phi i64 [ 0, %248 ], [ %266, %252 ]
%254 = phi <16 x i32> [ <i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 16, i32 17, i32 18, i32 19, i32 20>, %248 ], [ %267, %252 ]
%255 = getelementptr inbounds [1000 x i8], [1000 x i8]* %1, i64 0, i64 %253
%256 = bitcast i8* %255 to <16 x i8>*
%257 = load <16 x i8>, <16 x i8>* %256
%258 = sext <16 x i8> %257 to <16 x i32>
%259 = mul nsw <16 x i32> %254, <i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3>
%260 = add nsw <16 x i32> %259, <i32 -32, i32 -32, i32 -32, i32 -32, i32 -32, i32 -32, i32 -32, i32 -32, i32 -32, i32 -32, i32 -32, i32 -32, i32 -32, i32 -32, i32 -32, i32 -32>
%261 = add <16 x i32> %260, %258
%262 = srem <16 x i32> %261, <i32 94, i32 94, i32 94, i32 94, i32 94, i32 94, i32 94, i32 94, i32 94, i32 94, i32 94, i32 94, i32 94, i32 94, i32 94, i32 94>
%263 = trunc <16 x i32> %262 to <16 x i8>
%264 = add nsw <16 x i8> %263, <i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32>
%265 = bitcast i8* %255 to <16 x i8>*
store <16 x i8> %264, <16 x i8>* %265
%266 = add nuw i64 %253, 16
%267 = add <16 x i32> %254, <i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16>
%268 = icmp eq i64 %266, %249
br i1 %268, label %269, label %252
269: ; preds = %252
%270 = icmp eq i64 %249, %21
br i1 %270, label %289, label %271
271: ; preds = %245, %269
%272 = phi i64 [ 0, %245 ], [ %249, %269 ]
%273 = phi i32 [ 5, %245 ], [ %251, %269 ]
br label %274
274: ; preds = %271, %274
%275 = phi i64 [ %287, %274 ], [ %272, %271 ]
%276 = phi i32 [ %280, %274 ], [ %273, %271 ]
%277 = getelementptr inbounds [1000 x i8], [1000 x i8]* %1, i64 0, i64 %275
%278 = load i8, i8* %277
%279 = sext i8 %278 to i32
%280 = add nuw nsw i32 %276, 1
%281 = mul nsw i32 %276, 3
%282 = add nsw i32 %281, -32
%283 = add i32 %282, %279
%284 = srem i32 %283, 94
%285 = trunc i32 %284 to i8
%286 = add nsw i8 %285, 32
store i8 %286, i8* %277
%287 = add nuw nsw i64 %275, 1
%288 = icmp eq i64 %287, %246
br i1 %288, label %289, label %274
289: ; preds = %274, %269
br i1 %19, label %290, label %336
290: ; preds = %289
%291 = zext i32 %18 to i64
%292 = icmp ult i32 %18, 16
br i1 %292, label %316, label %293
293: ; preds = %290
%294 = and i64 %21, 4294967280
%295 = trunc i64 %294 to i32
%296 = or i32 %295, 6
br label %297
297: ; preds = %297, %293
%298 = phi i64 [ 0, %293 ], [ %311, %297 ]
%299 = phi <16 x i32> [ <i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 16, i32 17, i32 18, i32 19, i32 20, i32 21>, %293 ], [ %312, %297 ]
%300 = getelementptr inbounds [1000 x i8], [1000 x i8]* %1, i64 0, i64 %298
%301 = bitcast i8* %300 to <16 x i8>*
%302 = load <16 x i8>, <16 x i8>* %301
%303 = sext <16 x i8> %302 to <16 x i32>
%304 = mul nsw <16 x i32> %299, <i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3>
%305 = add nsw <16 x i32> %304, <i32 -32, i32 -32, i32 -32, i32 -32, i32 -32, i32 -32, i32 -32, i32 -32, i32 -32, i32 -32, i32 -32, i32 -32, i32 -32, i32 -32, i32 -32, i32 -32>
%306 = add <16 x i32> %305, %303
%307 = srem <16 x i32> %306, <i32 94, i32 94, i32 94, i32 94, i32 94, i32 94, i32 94, i32 94, i32 94, i32 94, i32 94, i32 94, i32 94, i32 94, i32 94, i32 94>
%308 = trunc <16 x i32> %307 to <16 x i8>
%309 = add nsw <16 x i8> %308, <i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32>
%310 = bitcast i8* %300 to <16 x i8>*
store <16 x i8> %309, <16 x i8>* %310
%311 = add nuw i64 %298, 16
%312 = add <16 x i32> %299, <i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16>
%313 = icmp eq i64 %311, %294
br i1 %313, label %314, label %297
314: ; preds = %297
%315 = icmp eq i64 %294, %21
br i1 %315, label %334, label %316
316: ; preds = %290, %314
%317 = phi i64 [ 0, %290 ], [ %294, %314 ]
%318 = phi i32 [ 6, %290 ], [ %296, %314 ]
br label %319
319: ; preds = %316, %319
%320 = phi i64 [ %332, %319 ], [ %317, %316 ]
%321 = phi i32 [ %325, %319 ], [ %318, %316 ]
%322 = getelementptr inbounds [1000 x i8], [1000 x i8]* %1, i64 0, i64 %320
%323 = load i8, i8* %322
%324 = sext i8 %323 to i32
%325 = add nuw nsw i32 %321, 1
%326 = mul nsw i32 %321, 3
%327 = add nsw i32 %326, -32
%328 = add i32 %327, %324
%329 = srem i32 %328, 94
%330 = trunc i32 %329 to i8
%331 = add nsw i8 %330, 32
store i8 %331, i8* %322
%332 = add nuw nsw i64 %320, 1
%333 = icmp eq i64 %332, %291
br i1 %333, label %334, label %319
334: ; preds = %319, %314
%335 = zext i32 %18 to i64
br label %336
336: ; preds = %15, %64, %109, %154, %199, %244, %289, %334
%337 = phi i64 [ %335, %334 ], [ 0, %289 ], [ 0, %244 ], [ 0, %199 ], [ 0, %154 ], [ 0, %109 ], [ 0, %64 ], [ 0, %15 ]
%338 = getelementptr inbounds [1000 x i8], [1000 x i8]* %1, i64 0, i64 %337
store i8 0, i8* %338
%339 = call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i8* %2)
ret i32 0
}