int main(void) {
  char mem[30000];
  register char *mem_ptr = mem;
  register char *end = mem + 30000;
  mem_ptr += 1;
  if (mem_ptr >= end)
    mem_ptr = mem + (end - mem_ptr);
  *mem_ptr += 8;
  while (*mem_ptr) {
    mem_ptr -= 1;
    if (mem_ptr < mem)
      mem_ptr = end - (mem - mem_ptr);
    *mem_ptr += 9;
    mem_ptr += 1;
    if (mem_ptr >= end)
      mem_ptr = mem + (end - mem_ptr);
    *mem_ptr -= 1;
  }
  mem_ptr -= 1;
  if (mem_ptr < mem)
    mem_ptr = end - (mem - mem_ptr);
  putchar(*mem_ptr);
  mem_ptr += 2;
  if (mem_ptr >= end)
    mem_ptr = mem + (end - mem_ptr);
  *mem_ptr += 1;
  mem_ptr += 1;
  if (mem_ptr >= end)
    mem_ptr = mem + (end - mem_ptr);
  *mem_ptr += 1;
  mem_ptr += 1;
  if (mem_ptr >= end)
    mem_ptr = mem + (end - mem_ptr);
  *mem_ptr += 2;
  mem_ptr += 1;
  if (mem_ptr >= end)
    mem_ptr = mem + (end - mem_ptr);
  while (*mem_ptr) {
    *mem_ptr -= 1;
  }
  *mem_ptr += 1;
  mem_ptr -= 1;
  if (mem_ptr < mem)
    mem_ptr = end - (mem - mem_ptr);
  while (*mem_ptr) {
    mem_ptr += 1;
    if (mem_ptr >= end)
      mem_ptr = mem + (end - mem_ptr);
    while (*mem_ptr) {
      *mem_ptr -= 1;
      mem_ptr += 1;
      if (mem_ptr >= end)
        mem_ptr = mem + (end - mem_ptr);
      *mem_ptr += 1;
      mem_ptr -= 2;
      if (mem_ptr < mem)
        mem_ptr = end - (mem - mem_ptr);
      *mem_ptr += 4;
      mem_ptr += 1;
      if (mem_ptr >= end)
        mem_ptr = mem + (end - mem_ptr);
    }
    mem_ptr -= 2;
    if (mem_ptr < mem)
      mem_ptr = end - (mem - mem_ptr);
  }
  mem_ptr += 1;
  if (mem_ptr >= end)
    mem_ptr = mem + (end - mem_ptr);
  putchar(*mem_ptr);
  *mem_ptr += 7;
  putchar(*mem_ptr);
  putchar(*mem_ptr);
  *mem_ptr += 3;
  putchar(*mem_ptr);
  mem_ptr += 2;
  if (mem_ptr >= end)
    mem_ptr = mem + (end - mem_ptr);
  *mem_ptr += 7;
  putchar(*mem_ptr);
  mem_ptr -= 3;
  if (mem_ptr < mem)
    mem_ptr = end - (mem - mem_ptr);
  while (*mem_ptr) {
    while (*mem_ptr) {
      *mem_ptr -= 1;
    }
    mem_ptr -= 1;
    if (mem_ptr < mem)
      mem_ptr = end - (mem - mem_ptr);
    while (*mem_ptr) {
      *mem_ptr -= 1;
    }
    mem_ptr += 1;
    if (mem_ptr >= end)
      mem_ptr = mem + (end - mem_ptr);
  }
  mem_ptr -= 1;
  if (mem_ptr < mem)
    mem_ptr = end - (mem - mem_ptr);
  *mem_ptr += 15;
  putchar(*mem_ptr);
  mem_ptr += 2;
  if (mem_ptr >= end)
    mem_ptr = mem + (end - mem_ptr);
  putchar(*mem_ptr);
  *mem_ptr += 3;
  putchar(*mem_ptr);
  *mem_ptr -= 6;
  putchar(*mem_ptr);
  *mem_ptr -= 8;
  putchar(*mem_ptr);
  mem_ptr += 2;
  if (mem_ptr >= end)
    mem_ptr = mem + (end - mem_ptr);
  *mem_ptr += 1;
  putchar(*mem_ptr);
  mem_ptr += 1;
  if (mem_ptr >= end)
    mem_ptr = mem + (end - mem_ptr);
  *mem_ptr += 4;
  putchar(*mem_ptr);
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0x7550,%rsp
movl   $0x0,-0x4(%rbp)
lea    -0x7540(%rbp),%rax
mov    %rax,-0x7548(%rbp)
lea    -0x7540(%rbp),%rax
add    $0x7530,%rax
mov    %rax,-0x7550(%rbp)
mov    -0x7548(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x7548(%rbp)
mov    -0x7548(%rbp),%rax
cmp    -0x7550(%rbp),%rax
jb     118c <main+0x7c>
lea    -0x7540(%rbp),%rax
mov    -0x7550(%rbp),%rcx
mov    -0x7548(%rbp),%rdx
sub    %rdx,%rcx
add    %rcx,%rax
mov    %rax,-0x7548(%rbp)
mov    -0x7548(%rbp),%rax
movsbl (%rax),%ecx
add    $0x8,%ecx
mov    %cl,(%rax)
mov    -0x7548(%rbp),%rax
cmpb   $0x0,(%rax)
je     1266 <main+0x156>
mov    -0x7548(%rbp),%rax
add    $0xffffffffffffffff,%rax
mov    %rax,-0x7548(%rbp)
mov    -0x7548(%rbp),%rax
lea    -0x7540(%rbp),%rcx
cmp    %rcx,%rax
jae    11fb <main+0xeb>
mov    -0x7550(%rbp),%rax
lea    -0x7540(%rbp),%rdx
mov    -0x7548(%rbp),%rcx
sub    %rcx,%rdx
xor    %ecx,%ecx
sub    %rdx,%rcx
add    %rcx,%rax
mov    %rax,-0x7548(%rbp)
mov    -0x7548(%rbp),%rax
movsbl (%rax),%ecx
add    $0x9,%ecx
mov    %cl,(%rax)
mov    -0x7548(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x7548(%rbp)
mov    -0x7548(%rbp),%rax
cmp    -0x7550(%rbp),%rax
jb     1252 <main+0x142>
lea    -0x7540(%rbp),%rax
mov    -0x7550(%rbp),%rcx
mov    -0x7548(%rbp),%rdx
sub    %rdx,%rcx
add    %rcx,%rax
mov    %rax,-0x7548(%rbp)
mov    -0x7548(%rbp),%rax
movsbl (%rax),%ecx
sub    $0x1,%ecx
mov    %cl,(%rax)
jmp    119b <main+0x8b>
mov    -0x7548(%rbp),%rax
add    $0xffffffffffffffff,%rax
mov    %rax,-0x7548(%rbp)
mov    -0x7548(%rbp),%rax
lea    -0x7540(%rbp),%rcx
cmp    %rcx,%rax
jae    12b6 <main+0x1a6>
mov    -0x7550(%rbp),%rax
lea    -0x7540(%rbp),%rdx
mov    -0x7548(%rbp),%rcx
sub    %rcx,%rdx
xor    %ecx,%ecx
sub    %rdx,%rcx
add    %rcx,%rax
mov    %rax,-0x7548(%rbp)
mov    -0x7548(%rbp),%rax
movsbl (%rax),%edi
mov    $0x0,%al
call   1030 <putchar@plt>
mov    -0x7548(%rbp),%rax
add    $0x2,%rax
mov    %rax,-0x7548(%rbp)
mov    -0x7548(%rbp),%rax
cmp    -0x7550(%rbp),%rax
jb     130f <main+0x1ff>
lea    -0x7540(%rbp),%rax
mov    -0x7550(%rbp),%rcx
mov    -0x7548(%rbp),%rdx
sub    %rdx,%rcx
add    %rcx,%rax
mov    %rax,-0x7548(%rbp)
mov    -0x7548(%rbp),%rax
movsbl (%rax),%ecx
add    $0x1,%ecx
mov    %cl,(%rax)
mov    -0x7548(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x7548(%rbp)
mov    -0x7548(%rbp),%rax
cmp    -0x7550(%rbp),%rax
jb     1366 <main+0x256>
lea    -0x7540(%rbp),%rax
mov    -0x7550(%rbp),%rcx
mov    -0x7548(%rbp),%rdx
sub    %rdx,%rcx
add    %rcx,%rax
mov    %rax,-0x7548(%rbp)
mov    -0x7548(%rbp),%rax
movsbl (%rax),%ecx
add    $0x1,%ecx
mov    %cl,(%rax)
mov    -0x7548(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x7548(%rbp)
mov    -0x7548(%rbp),%rax
cmp    -0x7550(%rbp),%rax
jb     13bd <main+0x2ad>
lea    -0x7540(%rbp),%rax
mov    -0x7550(%rbp),%rcx
mov    -0x7548(%rbp),%rdx
sub    %rdx,%rcx
add    %rcx,%rax
mov    %rax,-0x7548(%rbp)
mov    -0x7548(%rbp),%rax
movsbl (%rax),%ecx
add    $0x2,%ecx
mov    %cl,(%rax)
mov    -0x7548(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x7548(%rbp)
mov    -0x7548(%rbp),%rax
cmp    -0x7550(%rbp),%rax
jb     1414 <main+0x304>
lea    -0x7540(%rbp),%rax
mov    -0x7550(%rbp),%rcx
mov    -0x7548(%rbp),%rdx
sub    %rdx,%rcx
add    %rcx,%rax
mov    %rax,-0x7548(%rbp)
jmp    1419 <main+0x309>
mov    -0x7548(%rbp),%rax
cmpb   $0x0,(%rax)
je     143d <main+0x32d>
mov    -0x7548(%rbp),%rax
movsbl (%rax),%ecx
sub    $0x1,%ecx
mov    %cl,(%rax)
jmp    1419 <main+0x309>
mov    -0x7548(%rbp),%rax
movsbl (%rax),%ecx
add    $0x1,%ecx
mov    %cl,(%rax)
mov    -0x7548(%rbp),%rax
add    $0xffffffffffffffff,%rax
mov    %rax,-0x7548(%rbp)
mov    -0x7548(%rbp),%rax
lea    -0x7540(%rbp),%rcx
cmp    %rcx,%rax
jae    149c <main+0x38c>
mov    -0x7550(%rbp),%rax
lea    -0x7540(%rbp),%rdx
mov    -0x7548(%rbp),%rcx
sub    %rcx,%rdx
xor    %ecx,%ecx
sub    %rdx,%rcx
add    %rcx,%rax
mov    %rax,-0x7548(%rbp)
jmp    14a1 <main+0x391>
mov    -0x7548(%rbp),%rax
cmpb   $0x0,(%rax)
je     1675 <main+0x565>
mov    -0x7548(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x7548(%rbp)
mov    -0x7548(%rbp),%rax
cmp    -0x7550(%rbp),%rax
jb     14f9 <main+0x3e9>
lea    -0x7540(%rbp),%rax
mov    -0x7550(%rbp),%rcx
mov    -0x7548(%rbp),%rdx
sub    %rdx,%rcx
add    %rcx,%rax
mov    %rax,-0x7548(%rbp)
jmp    14fe <main+0x3ee>
mov    -0x7548(%rbp),%rax
cmpb   $0x0,(%rax)
je     1620 <main+0x510>
mov    -0x7548(%rbp),%rax
movsbl (%rax),%ecx
sub    $0x1,%ecx
mov    %cl,(%rax)
mov    -0x7548(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x7548(%rbp)
mov    -0x7548(%rbp),%rax
cmp    -0x7550(%rbp),%rax
jb     1565 <main+0x455>
lea    -0x7540(%rbp),%rax
mov    -0x7550(%rbp),%rcx
mov    -0x7548(%rbp),%rdx
sub    %rdx,%rcx
add    %rcx,%rax
mov    %rax,-0x7548(%rbp)
mov    -0x7548(%rbp),%rax
movsbl (%rax),%ecx
add    $0x1,%ecx
mov    %cl,(%rax)
mov    -0x7548(%rbp),%rax
add    $0xfffffffffffffffe,%rax
mov    %rax,-0x7548(%rbp)
mov    -0x7548(%rbp),%rax
lea    -0x7540(%rbp),%rcx
cmp    %rcx,%rax
jae    15c4 <main+0x4b4>
mov    -0x7550(%rbp),%rax
lea    -0x7540(%rbp),%rdx
mov    -0x7548(%rbp),%rcx
sub    %rcx,%rdx
xor    %ecx,%ecx
sub    %rdx,%rcx
add    %rcx,%rax
mov    %rax,-0x7548(%rbp)
mov    -0x7548(%rbp),%rax
movsbl (%rax),%ecx
add    $0x4,%ecx
mov    %cl,(%rax)
mov    -0x7548(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x7548(%rbp)
mov    -0x7548(%rbp),%rax
cmp    -0x7550(%rbp),%rax
jb     161b <main+0x50b>
lea    -0x7540(%rbp),%rax
mov    -0x7550(%rbp),%rcx
mov    -0x7548(%rbp),%rdx
sub    %rdx,%rcx
add    %rcx,%rax
mov    %rax,-0x7548(%rbp)
jmp    14fe <main+0x3ee>
mov    -0x7548(%rbp),%rax
add    $0xfffffffffffffffe,%rax
mov    %rax,-0x7548(%rbp)
mov    -0x7548(%rbp),%rax
lea    -0x7540(%rbp),%rcx
cmp    %rcx,%rax
jae    1670 <main+0x560>
mov    -0x7550(%rbp),%rax
lea    -0x7540(%rbp),%rdx
mov    -0x7548(%rbp),%rcx
sub    %rcx,%rdx
xor    %ecx,%ecx
sub    %rdx,%rcx
add    %rcx,%rax
mov    %rax,-0x7548(%rbp)
jmp    14a1 <main+0x391>
mov    -0x7548(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x7548(%rbp)
mov    -0x7548(%rbp),%rax
cmp    -0x7550(%rbp),%rax
jb     16bd <main+0x5ad>
lea    -0x7540(%rbp),%rax
mov    -0x7550(%rbp),%rcx
mov    -0x7548(%rbp),%rdx
sub    %rdx,%rcx
add    %rcx,%rax
mov    %rax,-0x7548(%rbp)
mov    -0x7548(%rbp),%rax
movsbl (%rax),%edi
mov    $0x0,%al
call   1030 <putchar@plt>
mov    -0x7548(%rbp),%rax
movsbl (%rax),%ecx
add    $0x7,%ecx
mov    %cl,(%rax)
mov    -0x7548(%rbp),%rax
movsbl (%rax),%edi
mov    $0x0,%al
call   1030 <putchar@plt>
mov    -0x7548(%rbp),%rax
movsbl (%rax),%edi
mov    $0x0,%al
call   1030 <putchar@plt>
mov    -0x7548(%rbp),%rax
movsbl (%rax),%ecx
add    $0x3,%ecx
mov    %cl,(%rax)
mov    -0x7548(%rbp),%rax
movsbl (%rax),%edi
mov    $0x0,%al
call   1030 <putchar@plt>
mov    -0x7548(%rbp),%rax
add    $0x2,%rax
mov    %rax,-0x7548(%rbp)
mov    -0x7548(%rbp),%rax
cmp    -0x7550(%rbp),%rax
jb     1767 <main+0x657>
lea    -0x7540(%rbp),%rax
mov    -0x7550(%rbp),%rcx
mov    -0x7548(%rbp),%rdx
sub    %rdx,%rcx
add    %rcx,%rax
mov    %rax,-0x7548(%rbp)
mov    -0x7548(%rbp),%rax
movsbl (%rax),%ecx
add    $0x7,%ecx
mov    %cl,(%rax)
mov    -0x7548(%rbp),%rax
movsbl (%rax),%edi
mov    $0x0,%al
call   1030 <putchar@plt>
mov    -0x7548(%rbp),%rax
add    $0xfffffffffffffffd,%rax
mov    %rax,-0x7548(%rbp)
mov    -0x7548(%rbp),%rax
lea    -0x7540(%rbp),%rcx
cmp    %rcx,%rax
jae    17d7 <main+0x6c7>
mov    -0x7550(%rbp),%rax
lea    -0x7540(%rbp),%rdx
mov    -0x7548(%rbp),%rcx
sub    %rcx,%rdx
xor    %ecx,%ecx
sub    %rdx,%rcx
add    %rcx,%rax
mov    %rax,-0x7548(%rbp)
jmp    17dc <main+0x6cc>
mov    -0x7548(%rbp),%rax
cmpb   $0x0,(%rax)
je     18db <main+0x7cb>
jmp    17f1 <main+0x6e1>
mov    -0x7548(%rbp),%rax
cmpb   $0x0,(%rax)
je     1815 <main+0x705>
mov    -0x7548(%rbp),%rax
movsbl (%rax),%ecx
sub    $0x1,%ecx
mov    %cl,(%rax)
jmp    17f1 <main+0x6e1>
mov    -0x7548(%rbp),%rax
add    $0xffffffffffffffff,%rax
mov    %rax,-0x7548(%rbp)
mov    -0x7548(%rbp),%rax
lea    -0x7540(%rbp),%rcx
cmp    %rcx,%rax
jae    1865 <main+0x755>
mov    -0x7550(%rbp),%rax
lea    -0x7540(%rbp),%rdx
mov    -0x7548(%rbp),%rcx
sub    %rcx,%rdx
xor    %ecx,%ecx
sub    %rdx,%rcx
add    %rcx,%rax
mov    %rax,-0x7548(%rbp)
jmp    186a <main+0x75a>
mov    -0x7548(%rbp),%rax
cmpb   $0x0,(%rax)
je     188e <main+0x77e>
mov    -0x7548(%rbp),%rax
movsbl (%rax),%ecx
sub    $0x1,%ecx
mov    %cl,(%rax)
jmp    186a <main+0x75a>
mov    -0x7548(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x7548(%rbp)
mov    -0x7548(%rbp),%rax
cmp    -0x7550(%rbp),%rax
jb     18d6 <main+0x7c6>
lea    -0x7540(%rbp),%rax
mov    -0x7550(%rbp),%rcx
mov    -0x7548(%rbp),%rdx
sub    %rdx,%rcx
add    %rcx,%rax
mov    %rax,-0x7548(%rbp)
jmp    17dc <main+0x6cc>
mov    -0x7548(%rbp),%rax
add    $0xffffffffffffffff,%rax
mov    %rax,-0x7548(%rbp)
mov    -0x7548(%rbp),%rax
lea    -0x7540(%rbp),%rcx
cmp    %rcx,%rax
jae    192b <main+0x81b>
mov    -0x7550(%rbp),%rax
lea    -0x7540(%rbp),%rdx
mov    -0x7548(%rbp),%rcx
sub    %rcx,%rdx
xor    %ecx,%ecx
sub    %rdx,%rcx
add    %rcx,%rax
mov    %rax,-0x7548(%rbp)
mov    -0x7548(%rbp),%rax
movsbl (%rax),%ecx
add    $0xf,%ecx
mov    %cl,(%rax)
mov    -0x7548(%rbp),%rax
movsbl (%rax),%edi
mov    $0x0,%al
call   1030 <putchar@plt>
mov    -0x7548(%rbp),%rax
add    $0x2,%rax
mov    %rax,-0x7548(%rbp)
mov    -0x7548(%rbp),%rax
cmp    -0x7550(%rbp),%rax
jb     1993 <main+0x883>
lea    -0x7540(%rbp),%rax
mov    -0x7550(%rbp),%rcx
mov    -0x7548(%rbp),%rdx
sub    %rdx,%rcx
add    %rcx,%rax
mov    %rax,-0x7548(%rbp)
mov    -0x7548(%rbp),%rax
movsbl (%rax),%edi
mov    $0x0,%al
call   1030 <putchar@plt>
mov    -0x7548(%rbp),%rax
movsbl (%rax),%ecx
add    $0x3,%ecx
mov    %cl,(%rax)
mov    -0x7548(%rbp),%rax
movsbl (%rax),%edi
mov    $0x0,%al
call   1030 <putchar@plt>
mov    -0x7548(%rbp),%rax
movsbl (%rax),%ecx
sub    $0x6,%ecx
mov    %cl,(%rax)
mov    -0x7548(%rbp),%rax
movsbl (%rax),%edi
mov    $0x0,%al
call   1030 <putchar@plt>
mov    -0x7548(%rbp),%rax
movsbl (%rax),%ecx
sub    $0x8,%ecx
mov    %cl,(%rax)
mov    -0x7548(%rbp),%rax
movsbl (%rax),%edi
mov    $0x0,%al
call   1030 <putchar@plt>
mov    -0x7548(%rbp),%rax
add    $0x2,%rax
mov    %rax,-0x7548(%rbp)
mov    -0x7548(%rbp),%rax
cmp    -0x7550(%rbp),%rax
jb     1a4c <main+0x93c>
lea    -0x7540(%rbp),%rax
mov    -0x7550(%rbp),%rcx
mov    -0x7548(%rbp),%rdx
sub    %rdx,%rcx
add    %rcx,%rax
mov    %rax,-0x7548(%rbp)
mov    -0x7548(%rbp),%rax
movsbl (%rax),%ecx
add    $0x1,%ecx
mov    %cl,(%rax)
mov    -0x7548(%rbp),%rax
movsbl (%rax),%edi
mov    $0x0,%al
call   1030 <putchar@plt>
mov    -0x7548(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x7548(%rbp)
mov    -0x7548(%rbp),%rax
cmp    -0x7550(%rbp),%rax
jb     1ab4 <main+0x9a4>
lea    -0x7540(%rbp),%rax
mov    -0x7550(%rbp),%rcx
mov    -0x7548(%rbp),%rdx
sub    %rdx,%rcx
add    %rcx,%rax
mov    %rax,-0x7548(%rbp)
mov    -0x7548(%rbp),%rax
movsbl (%rax),%ecx
add    $0x4,%ecx
mov    %cl,(%rax)
mov    -0x7548(%rbp),%rax
movsbl (%rax),%edi
mov    $0x0,%al
call   1030 <putchar@plt>
mov    -0x4(%rbp),%eax
add    $0x7550,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x7538,%rsp
lea    0x7530(%rsp),%rbp
lea    0x1(%rsp),%rax
mov    %rsp,%r14
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
lea    -0x1(%rax),%rcx
mov    %rcx,%rdx
sub    %r14,%rdx
lea    0x1(%rbp,%rdx,1),%rsi
cmovae %rax,%rsi
add    %rbp,%rdx
cmp    %r14,%rcx
cmovae %rcx,%rdx
addb   $0x9,(%rdx)
mov    %rbp,%rax
sub    %rsi,%rax
lea    (%rsp,%rax,1),%rax
cmova  %rsi,%rax
addb   $0xff,(%rax)
jne    1140 <main+0x30>
lea    -0x1(%rax),%rcx
add    $0x1,%rax
mov    %rcx,%rdx
sub    %r14,%rdx
lea    0x2(%rbp,%rdx,1),%r15
cmovae %rax,%r15
add    %rbp,%rdx
cmp    %r14,%rcx
cmovae %rcx,%rdx
movsbl (%rdx),%edi
xor    %eax,%eax
call   1030 <putchar@plt>
mov    %rbp,%rax
sub    %r15,%rax
lea    (%rsp,%rax,1),%rax
cmova  %r15,%rax
addb   $0x1,(%rax)
lea    0x1(%rax),%rcx
add    $0x2,%rax
mov    %rbp,%rdx
sub    %rcx,%rdx
lea    (%rsp,%rdx,1),%rsi
cmova  %rcx,%rsi
lea    0x1(%rsp,%rdx,1),%rdx
cmova  %rax,%rdx
addb   $0x1,(%rsi)
mov    %rbp,%rax
sub    %rdx,%rax
lea    (%rsp,%rax,1),%rcx
cmova  %rdx,%rcx
addb   $0x2,(%rcx)
lea    0x1(%rcx),%rsi
mov    %rbp,%rax
sub    %rsi,%rax
lea    (%rsp,%rax,1),%rax
mov    %rax,%rdx
cmova  %rsi,%rdx
cmpb   $0x0,(%rdx)
je     11ff <main+0xef>
movb   $0x0,(%rdx)
add    $0xffffffffffffffff,%rax
cmp    %rbp,%rsi
cmovb  %rcx,%rax
mov    %rax,%rcx
sub    %r14,%rcx
add    %rbp,%rcx
cmp    %r14,%rax
movb   $0x1,(%rdx)
cmovae %rax,%rcx
cmpb   $0x0,(%rcx)
je     12cd <main+0x1bd>
add    $0x1,%rcx
mov    %rcx,%rdx
jmp    1256 <main+0x146>
nop
lea    -0x2(%rax),%rsi
add    $0xffffffffffffffff,%rax
mov    %rsi,%rcx
sub    %r14,%rcx
lea    0x1(%rbp,%rcx,1),%rdx
cmovae %rax,%rdx
add    %rbp,%rcx
cmp    %r14,%rsi
cmovae %rsi,%rcx
cmpb   $0x0,(%rcx)
je     12cd <main+0x1bd>
mov    %rbp,%rax
sub    %rdx,%rax
lea    (%rsp,%rax,1),%rax
cmova  %rdx,%rax
mov    (%rax),%cl
test   %cl,%cl
je     1230 <main+0x120>
lea    -0x1(%rax),%rdx
xchg   %ax,%ax
lea    0x1(%rax),%rsi
mov    %rbp,%rdi
sub    %rsi,%rdi
lea    (%rsp,%rdi,1),%rbx
cmova  %rsi,%rbx
lea    -0x2(%rsp,%rdi,1),%rsi
cmova  %rdx,%rsi
mov    %rsi,%rdi
sub    %r14,%rdi
add    %rbp,%rdi
cmp    %r14,%rsi
cmovae %rsi,%rdi
add    $0xff,%cl
mov    %cl,(%rax)
addb   $0x1,(%rbx)
addb   $0x4,(%rdi)
lea    0x1(%rdi),%rcx
mov    %rbp,%rdx
sub    %rcx,%rdx
lea    (%rsp,%rdx,1),%rax
cmova  %rcx,%rax
lea    -0x1(%rsp,%rdx,1),%rdx
cmova  %rdi,%rdx
movzbl (%rax),%ecx
test   %cl,%cl
jne    1270 <main+0x160>
jmp    1230 <main+0x120>
lea    0x1(%rcx),%rax
add    $0x3,%rcx
mov    %rbp,%rdx
sub    %rax,%rdx
lea    (%rsp,%rdx,1),%r13
cmova  %rax,%r13
lea    0x2(%rsp,%rdx,1),%rax
cmova  %rcx,%rax
mov    %rbp,%rcx
sub    %rax,%rcx
lea    (%rsp,%rcx,1),%r12
cmova  %rax,%r12
lea    -0x3(%r12),%rax
mov    %rax,%r15
sub    %r14,%r15
add    %rbp,%r15
cmp    %r14,%rax
movsbl 0x0(%r13),%edi
cmovae %rax,%r15
xor    %eax,%eax
call   1030 <putchar@plt>
mov    0x0(%r13),%al
add    $0x7,%al
mov    %al,0x0(%r13)
movsbl %al,%edi
xor    %eax,%eax
call   1030 <putchar@plt>
movsbl 0x0(%r13),%edi
xor    %eax,%eax
call   1030 <putchar@plt>
mov    0x0(%r13),%al
add    $0x3,%al
mov    %al,0x0(%r13)
movsbl %al,%edi
xor    %eax,%eax
call   1030 <putchar@plt>
mov    (%r12),%al
add    $0x7,%al
mov    %al,(%r12)
movsbl %al,%edi
xor    %eax,%eax
call   1030 <putchar@plt>
jmp    1389 <main+0x279>
cs nopw 0x0(%rax,%rax,1)
nop
add    $0x1,%rax
cmp    %r14,%rcx
cmovb  %rax,%r15
mov    %rbp,%rax
sub    %r15,%rax
lea    (%rsp,%rax,1),%rax
cmovbe %rax,%r15
cmpb   $0x0,(%r15)
je     13b4 <main+0x2a4>
lea    -0x1(%r15),%rcx
mov    %rcx,%rax
sub    %r14,%rax
add    %rbp,%rax
cmp    %r14,%rcx
movb   $0x0,(%r15)
mov    %rcx,%rdx
cmovb  %rax,%rdx
cmpb   $0x0,(%rdx)
je     1370 <main+0x260>
movb   $0x0,(%rdx)
jmp    1370 <main+0x260>
lea    -0x1(%r15),%rax
add    $0x1,%r15
mov    %rax,%rcx
sub    %r14,%rcx
lea    0x2(%rbp,%rcx,1),%rbx
cmovae %r15,%rbx
add    %rbp,%rcx
cmp    %r14,%rax
cmovae %rax,%rcx
mov    (%rcx),%al
add    $0xf,%al
mov    %al,(%rcx)
movsbl %al,%edi
xor    %eax,%eax
call   1030 <putchar@plt>
mov    %rbp,%rax
sub    %rbx,%rax
lea    (%rsp,%rax,1),%r14
cmova  %rbx,%r14
movsbl (%r14),%edi
xor    %eax,%eax
call   1030 <putchar@plt>
mov    (%r14),%al
add    $0x3,%al
mov    %al,(%r14)
movsbl %al,%edi
xor    %eax,%eax
call   1030 <putchar@plt>
mov    (%r14),%al
add    $0xfa,%al
mov    %al,(%r14)
movsbl %al,%edi
xor    %eax,%eax
call   1030 <putchar@plt>
mov    (%r14),%al
add    $0xf8,%al
mov    %al,(%r14)
movsbl %al,%edi
xor    %eax,%eax
call   1030 <putchar@plt>
lea    0x2(%r14),%rax
add    $0x3,%r14
mov    %rbp,%rcx
sub    %rax,%rcx
lea    (%rsp,%rcx,1),%rdx
cmova  %rax,%rdx
lea    0x1(%rsp,%rcx,1),%rbx
cmova  %r14,%rbx
mov    (%rdx),%al
add    $0x1,%al
mov    %al,(%rdx)
movsbl %al,%edi
xor    %eax,%eax
call   1030 <putchar@plt>
sub    %rbx,%rbp
lea    (%rsp,%rbp,1),%rax
cmova  %rbx,%rax
mov    (%rax),%cl
add    $0x4,%cl
mov    %cl,(%rax)
movsbl %cl,%edi
xor    %eax,%eax
call   1030 <putchar@plt>
xor    %eax,%eax
add    $0x7538,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

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

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