int main() {
  unsigned char _stack[0xFFF];
  int _stack_pointer = 0;
  int i = 0;
  for (i = 0; i <= 0xFFF; i++)
    _stack[_stack_pointer] = 0;
  _stack[_stack_pointer]--;
  (_stack[_stack_pointer]) = getchar();
  _stack[_stack_pointer]++;
  while (_stack[_stack_pointer] != 0) {
    _stack[_stack_pointer]--;
    while (_stack[_stack_pointer] != 0) {
      _stack_pointer++;
      _stack_pointer++;
      _stack[_stack_pointer]++;
      _stack[_stack_pointer]++;
      _stack[_stack_pointer]++;
      _stack[_stack_pointer]++;
      while (_stack[_stack_pointer] != 0) {
        _stack_pointer++;
        _stack[_stack_pointer]++;
        _stack[_stack_pointer]++;
        _stack[_stack_pointer]++;
        _stack[_stack_pointer]++;
        _stack[_stack_pointer]++;
        _stack[_stack_pointer]++;
        _stack[_stack_pointer]++;
        _stack[_stack_pointer]++;
        _stack_pointer--;
        _stack[_stack_pointer]--;
      }
      _stack_pointer--;
      _stack[_stack_pointer]++;
      _stack_pointer--;
      _stack[_stack_pointer]--;
      while (_stack[_stack_pointer] != 0) {
        _stack_pointer++;
        _stack[_stack_pointer]++;
        _stack_pointer++;
        _stack[_stack_pointer]++;
        _stack_pointer++;
        _stack[_stack_pointer]--;
        while (_stack[_stack_pointer] != 0) {
          _stack_pointer++;
          _stack_pointer++;
          _stack_pointer++;
        }
        _stack_pointer--;
        while (_stack[_stack_pointer] != 0) {
          while (_stack[_stack_pointer] != 0) {
            _stack_pointer++;
            _stack[_stack_pointer]++;
            _stack_pointer--;
            _stack[_stack_pointer]--;
          }
          _stack_pointer++;
          _stack_pointer++;
          _stack[_stack_pointer]++;
          _stack_pointer++;
        }
        _stack_pointer--;
        _stack_pointer--;
        _stack_pointer--;
        _stack_pointer--;
        _stack_pointer--;
        _stack[_stack_pointer]--;
      }
    }
    _stack_pointer++;
    _stack_pointer++;
    _stack_pointer++;
    while (_stack[_stack_pointer] != 0) {
      _stack[_stack_pointer]--;
    }
    _stack[_stack_pointer]++;
    _stack_pointer++;
    _stack[_stack_pointer]--;
    _stack[_stack_pointer]--;
    while (_stack[_stack_pointer] != 0) {
      _stack[_stack_pointer]--;
      while (_stack[_stack_pointer] != 0) {
        _stack_pointer--;
        _stack[_stack_pointer]--;
        _stack_pointer++;
        _stack[_stack_pointer]++;
        _stack[_stack_pointer]++;
        _stack[_stack_pointer]++;
        while (_stack[_stack_pointer] != 0) {
          _stack[_stack_pointer]--;
        }
      }
    }
    _stack_pointer--;
    while (_stack[_stack_pointer] != 0) {
      _stack[_stack_pointer]++;
      _stack[_stack_pointer]++;
      _stack[_stack_pointer]++;
      _stack[_stack_pointer]++;
      _stack[_stack_pointer]++;
      _stack[_stack_pointer]++;
      _stack[_stack_pointer]++;
      _stack[_stack_pointer]++;
      _stack[_stack_pointer]++;
      _stack[_stack_pointer]++;
      _stack[_stack_pointer]++;
      _stack[_stack_pointer]++;
      _stack_pointer--;
      while (_stack[_stack_pointer] != 0) {
        _stack_pointer++;
        _stack[_stack_pointer]--;
        while (_stack[_stack_pointer] != 0) {
          _stack_pointer++;
          _stack[_stack_pointer]++;
          _stack_pointer++;
          _stack_pointer++;
        }
        _stack_pointer++;
        while (_stack[_stack_pointer] != 0) {
          _stack[_stack_pointer]++;
          while (_stack[_stack_pointer] != 0) {
            _stack_pointer--;
            _stack[_stack_pointer]++;
            _stack_pointer++;
            _stack[_stack_pointer]--;
          }
          _stack_pointer++;
          _stack[_stack_pointer]++;
          _stack_pointer++;
          _stack_pointer++;
        }
        _stack_pointer--;
        _stack_pointer--;
        _stack_pointer--;
        _stack_pointer--;
        _stack_pointer--;
        _stack[_stack_pointer]--;
      }
      _stack_pointer++;
      _stack_pointer++;
      while (_stack[_stack_pointer] != 0) {
        _stack_pointer--;
        _stack[_stack_pointer]++;
        _stack_pointer++;
        _stack[_stack_pointer]--;
      }
      _stack_pointer++;
      while (_stack[_stack_pointer] != 0) {
        _stack[_stack_pointer]--;
        while (_stack[_stack_pointer] != 0) {
          _stack[_stack_pointer]--;
          _stack_pointer--;
          _stack_pointer--;
          while (_stack[_stack_pointer] != 0) {
            _stack[_stack_pointer]--;
          }
          _stack_pointer++;
          _stack_pointer++;
        }
        _stack_pointer--;
        _stack_pointer--;
        while (_stack[_stack_pointer] != 0) {
          _stack_pointer--;
          _stack_pointer--;
          _stack[_stack_pointer]--;
          _stack_pointer++;
          _stack_pointer++;
          _stack[_stack_pointer]--;
        }
        _stack_pointer++;
        _stack_pointer++;
      }
      _stack_pointer--;
      _stack_pointer--;
      while (_stack[_stack_pointer] != 0) {
        _stack_pointer--;
        _stack_pointer--;
        _stack[_stack_pointer]++;
        _stack_pointer++;
        _stack_pointer++;
        _stack[_stack_pointer]--;
      }
    }
    _stack_pointer--;
    while (_stack[_stack_pointer] != 0) {
      _stack[_stack_pointer]--;
    }
    _stack_pointer--;
    putchar(_stack[_stack_pointer]);
    while (_stack[_stack_pointer] != 0) {
      _stack[_stack_pointer]--;
    }
    _stack_pointer--;
    _stack[_stack_pointer]--;
    (_stack[_stack_pointer]) = getchar();
    _stack[_stack_pointer]++;
  }
  free(_stack);
  return 0;
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0x1020,%rsp
movl   $0x0,-0x4(%rbp)
movl   $0x0,-0x1014(%rbp)
movl   $0x0,-0x1018(%rbp)
movl   $0x0,-0x1018(%rbp)
cmpl   $0xfff,-0x1018(%rbp)
jg     1193 <main+0x63>
movslq -0x1014(%rbp),%rax
movb   $0x0,-0x1010(%rbp,%rax,1)
mov    -0x1018(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1018(%rbp)
jmp    1160 <main+0x30>
movslq -0x1014(%rbp),%rax
mov    -0x1010(%rbp,%rax,1),%cl
add    $0xff,%cl
mov    %cl,-0x1010(%rbp,%rax,1)
mov    $0x0,%al
call   1050 <getchar@plt>
mov    %al,%cl
movslq -0x1014(%rbp),%rax
mov    %cl,-0x1010(%rbp,%rax,1)
movslq -0x1014(%rbp),%rax
mov    -0x1010(%rbp,%rax,1),%cl
add    $0x1,%cl
mov    %cl,-0x1010(%rbp,%rax,1)
movslq -0x1014(%rbp),%rax
movzbl -0x1010(%rbp,%rax,1),%eax
ff
cmp    $0x0,%eax
je     1f14 <main+0xde4>
movslq -0x1014(%rbp),%rax
mov    -0x1010(%rbp,%rax,1),%cl
add    $0xff,%cl
mov    %cl,-0x1010(%rbp,%rax,1)
movslq -0x1014(%rbp),%rax
movzbl -0x1010(%rbp,%rax,1),%eax
ff
cmp    $0x0,%eax
je     1626 <main+0x4f6>
mov    -0x1014(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1014(%rbp)
mov    -0x1014(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1014(%rbp)
movslq -0x1014(%rbp),%rax
mov    -0x1010(%rbp,%rax,1),%cl
add    $0x1,%cl
mov    %cl,-0x1010(%rbp,%rax,1)
movslq -0x1014(%rbp),%rax
mov    -0x1010(%rbp,%rax,1),%cl
add    $0x1,%cl
mov    %cl,-0x1010(%rbp,%rax,1)
movslq -0x1014(%rbp),%rax
mov    -0x1010(%rbp,%rax,1),%cl
add    $0x1,%cl
mov    %cl,-0x1010(%rbp,%rax,1)
movslq -0x1014(%rbp),%rax
mov    -0x1010(%rbp,%rax,1),%cl
add    $0x1,%cl
mov    %cl,-0x1010(%rbp,%rax,1)
movslq -0x1014(%rbp),%rax
movzbl -0x1010(%rbp,%rax,1),%eax
ff
cmp    $0x0,%eax
je     13b3 <main+0x283>
mov    -0x1014(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1014(%rbp)
movslq -0x1014(%rbp),%rax
mov    -0x1010(%rbp,%rax,1),%cl
add    $0x1,%cl
mov    %cl,-0x1010(%rbp,%rax,1)
movslq -0x1014(%rbp),%rax
mov    -0x1010(%rbp,%rax,1),%cl
add    $0x1,%cl
mov    %cl,-0x1010(%rbp,%rax,1)
movslq -0x1014(%rbp),%rax
mov    -0x1010(%rbp,%rax,1),%cl
add    $0x1,%cl
mov    %cl,-0x1010(%rbp,%rax,1)
movslq -0x1014(%rbp),%rax
mov    -0x1010(%rbp,%rax,1),%cl
add    $0x1,%cl
mov    %cl,-0x1010(%rbp,%rax,1)
movslq -0x1014(%rbp),%rax
mov    -0x1010(%rbp,%rax,1),%cl
add    $0x1,%cl
mov    %cl,-0x1010(%rbp,%rax,1)
movslq -0x1014(%rbp),%rax
mov    -0x1010(%rbp,%rax,1),%cl
add    $0x1,%cl
mov    %cl,-0x1010(%rbp,%rax,1)
movslq -0x1014(%rbp),%rax
mov    -0x1010(%rbp,%rax,1),%cl
add    $0x1,%cl
mov    %cl,-0x1010(%rbp,%rax,1)
movslq -0x1014(%rbp),%rax
mov    -0x1010(%rbp,%rax,1),%cl
add    $0x1,%cl
mov    %cl,-0x1010(%rbp,%rax,1)
mov    -0x1014(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x1014(%rbp)
movslq -0x1014(%rbp),%rax
mov    -0x1010(%rbp,%rax,1),%cl
add    $0xff,%cl
mov    %cl,-0x1010(%rbp,%rax,1)
jmp    12a0 <main+0x170>
mov    -0x1014(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x1014(%rbp)
movslq -0x1014(%rbp),%rax
mov    -0x1010(%rbp,%rax,1),%cl
add    $0x1,%cl
mov    %cl,-0x1010(%rbp,%rax,1)
mov    -0x1014(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x1014(%rbp)
movslq -0x1014(%rbp),%rax
mov    -0x1010(%rbp,%rax,1),%cl
add    $0xff,%cl
mov    %cl,-0x1010(%rbp,%rax,1)
movslq -0x1014(%rbp),%rax
movzbl -0x1010(%rbp,%rax,1),%eax
ff
cmp    $0x0,%eax
je     1621 <main+0x4f1>
mov    -0x1014(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1014(%rbp)
movslq -0x1014(%rbp),%rax
mov    -0x1010(%rbp,%rax,1),%cl
add    $0x1,%cl
mov    %cl,-0x1010(%rbp,%rax,1)
mov    -0x1014(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1014(%rbp)
movslq -0x1014(%rbp),%rax
mov    -0x1010(%rbp,%rax,1),%cl
add    $0x1,%cl
mov    %cl,-0x1010(%rbp,%rax,1)
mov    -0x1014(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1014(%rbp)
movslq -0x1014(%rbp),%rax
mov    -0x1010(%rbp,%rax,1),%cl
add    $0xff,%cl
mov    %cl,-0x1010(%rbp,%rax,1)
movslq -0x1014(%rbp),%rax
movzbl -0x1010(%rbp,%rax,1),%eax
ff
cmp    $0x0,%eax
je     14d8 <main+0x3a8>
mov    -0x1014(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1014(%rbp)
mov    -0x1014(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1014(%rbp)
mov    -0x1014(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1014(%rbp)
jmp    148e <main+0x35e>
mov    -0x1014(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x1014(%rbp)
movslq -0x1014(%rbp),%rax
movzbl -0x1010(%rbp,%rax,1),%eax
ff
cmp    $0x0,%eax
je     15b9 <main+0x489>
jmp    1504 <main+0x3d4>
movslq -0x1014(%rbp),%rax
movzbl -0x1010(%rbp,%rax,1),%eax
ff
cmp    $0x0,%eax
je     156f <main+0x43f>
mov    -0x1014(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1014(%rbp)
movslq -0x1014(%rbp),%rax
mov    -0x1010(%rbp,%rax,1),%cl
add    $0x1,%cl
mov    %cl,-0x1010(%rbp,%rax,1)
mov    -0x1014(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x1014(%rbp)
movslq -0x1014(%rbp),%rax
mov    -0x1010(%rbp,%rax,1),%cl
add    $0xff,%cl
mov    %cl,-0x1010(%rbp,%rax,1)
jmp    1504 <main+0x3d4>
mov    -0x1014(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1014(%rbp)
mov    -0x1014(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1014(%rbp)
movslq -0x1014(%rbp),%rax
mov    -0x1010(%rbp,%rax,1),%cl
add    $0x1,%cl
mov    %cl,-0x1010(%rbp,%rax,1)
mov    -0x1014(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1014(%rbp)
jmp    14e7 <main+0x3b7>
mov    -0x1014(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x1014(%rbp)
mov    -0x1014(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x1014(%rbp)
mov    -0x1014(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x1014(%rbp)
mov    -0x1014(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x1014(%rbp)
mov    -0x1014(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x1014(%rbp)
movslq -0x1014(%rbp),%rax
mov    -0x1010(%rbp,%rax,1),%cl
add    $0xff,%cl
mov    %cl,-0x1010(%rbp,%rax,1)
jmp    1401 <main+0x2d1>
jmp    120a <main+0xda>
mov    -0x1014(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1014(%rbp)
mov    -0x1014(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1014(%rbp)
mov    -0x1014(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1014(%rbp)
movslq -0x1014(%rbp),%rax
movzbl -0x1010(%rbp,%rax,1),%eax
ff
cmp    $0x0,%eax
je     1688 <main+0x558>
movslq -0x1014(%rbp),%rax
mov    -0x1010(%rbp,%rax,1),%cl
add    $0xff,%cl
mov    %cl,-0x1010(%rbp,%rax,1)
jmp    1653 <main+0x523>
movslq -0x1014(%rbp),%rax
mov    -0x1010(%rbp,%rax,1),%cl
add    $0x1,%cl
mov    %cl,-0x1010(%rbp,%rax,1)
mov    -0x1014(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1014(%rbp)
movslq -0x1014(%rbp),%rax
mov    -0x1010(%rbp,%rax,1),%cl
add    $0xff,%cl
mov    %cl,-0x1010(%rbp,%rax,1)
movslq -0x1014(%rbp),%rax
mov    -0x1010(%rbp,%rax,1),%cl
add    $0xff,%cl
mov    %cl,-0x1010(%rbp,%rax,1)
movslq -0x1014(%rbp),%rax
movzbl -0x1010(%rbp,%rax,1),%eax
ff
cmp    $0x0,%eax
je     17e4 <main+0x6b4>
movslq -0x1014(%rbp),%rax
mov    -0x1010(%rbp,%rax,1),%cl
add    $0xff,%cl
mov    %cl,-0x1010(%rbp,%rax,1)
movslq -0x1014(%rbp),%rax
movzbl -0x1010(%rbp,%rax,1),%eax
ff
cmp    $0x0,%eax
je     17df <main+0x6af>
mov    -0x1014(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x1014(%rbp)
movslq -0x1014(%rbp),%rax
mov    -0x1010(%rbp,%rax,1),%cl
add    $0xff,%cl
mov    %cl,-0x1010(%rbp,%rax,1)
mov    -0x1014(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1014(%rbp)
movslq -0x1014(%rbp),%rax
mov    -0x1010(%rbp,%rax,1),%cl
add    $0x1,%cl
mov    %cl,-0x1010(%rbp,%rax,1)
movslq -0x1014(%rbp),%rax
mov    -0x1010(%rbp,%rax,1),%cl
add    $0x1,%cl
mov    %cl,-0x1010(%rbp,%rax,1)
movslq -0x1014(%rbp),%rax
mov    -0x1010(%rbp,%rax,1),%cl
add    $0x1,%cl
mov    %cl,-0x1010(%rbp,%rax,1)
movslq -0x1014(%rbp),%rax
movzbl -0x1010(%rbp,%rax,1),%eax
ff
cmp    $0x0,%eax
je     17da <main+0x6aa>
movslq -0x1014(%rbp),%rax
mov    -0x1010(%rbp,%rax,1),%cl
add    $0xff,%cl
mov    %cl,-0x1010(%rbp,%rax,1)
jmp    17a5 <main+0x675>
jmp    170f <main+0x5df>
jmp    16df <main+0x5af>
mov    -0x1014(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x1014(%rbp)
movslq -0x1014(%rbp),%rax
movzbl -0x1010(%rbp,%rax,1),%eax
ff
cmp    $0x0,%eax
je     1e1b <main+0xceb>
movslq -0x1014(%rbp),%rax
mov    -0x1010(%rbp,%rax,1),%cl
add    $0x1,%cl
mov    %cl,-0x1010(%rbp,%rax,1)
movslq -0x1014(%rbp),%rax
mov    -0x1010(%rbp,%rax,1),%cl
add    $0x1,%cl
mov    %cl,-0x1010(%rbp,%rax,1)
movslq -0x1014(%rbp),%rax
mov    -0x1010(%rbp,%rax,1),%cl
add    $0x1,%cl
mov    %cl,-0x1010(%rbp,%rax,1)
movslq -0x1014(%rbp),%rax
mov    -0x1010(%rbp,%rax,1),%cl
add    $0x1,%cl
mov    %cl,-0x1010(%rbp,%rax,1)
movslq -0x1014(%rbp),%rax
mov    -0x1010(%rbp,%rax,1),%cl
add    $0x1,%cl
mov    %cl,-0x1010(%rbp,%rax,1)
movslq -0x1014(%rbp),%rax
mov    -0x1010(%rbp,%rax,1),%cl
add    $0x1,%cl
mov    %cl,-0x1010(%rbp,%rax,1)
movslq -0x1014(%rbp),%rax
mov    -0x1010(%rbp,%rax,1),%cl
add    $0x1,%cl
mov    %cl,-0x1010(%rbp,%rax,1)
movslq -0x1014(%rbp),%rax
mov    -0x1010(%rbp,%rax,1),%cl
add    $0x1,%cl
mov    %cl,-0x1010(%rbp,%rax,1)
movslq -0x1014(%rbp),%rax
mov    -0x1010(%rbp,%rax,1),%cl
add    $0x1,%cl
mov    %cl,-0x1010(%rbp,%rax,1)
movslq -0x1014(%rbp),%rax
mov    -0x1010(%rbp,%rax,1),%cl
add    $0x1,%cl
mov    %cl,-0x1010(%rbp,%rax,1)
movslq -0x1014(%rbp),%rax
mov    -0x1010(%rbp,%rax,1),%cl
add    $0x1,%cl
mov    %cl,-0x1010(%rbp,%rax,1)
movslq -0x1014(%rbp),%rax
mov    -0x1010(%rbp,%rax,1),%cl
add    $0x1,%cl
mov    %cl,-0x1010(%rbp,%rax,1)
mov    -0x1014(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x1014(%rbp)
movslq -0x1014(%rbp),%rax
movzbl -0x1010(%rbp,%rax,1),%eax
ff
cmp    $0x0,%eax
je     1b37 <main+0xa07>
mov    -0x1014(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1014(%rbp)
movslq -0x1014(%rbp),%rax
mov    -0x1010(%rbp,%rax,1),%cl
add    $0xff,%cl
mov    %cl,-0x1010(%rbp,%rax,1)
movslq -0x1014(%rbp),%rax
movzbl -0x1010(%rbp,%rax,1),%eax
ff
cmp    $0x0,%eax
je     19db <main+0x8ab>
mov    -0x1014(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1014(%rbp)
movslq -0x1014(%rbp),%rax
mov    -0x1010(%rbp,%rax,1),%cl
add    $0x1,%cl
mov    %cl,-0x1010(%rbp,%rax,1)
mov    -0x1014(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1014(%rbp)
mov    -0x1014(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1014(%rbp)
jmp    1979 <main+0x849>
mov    -0x1014(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1014(%rbp)
movslq -0x1014(%rbp),%rax
movzbl -0x1010(%rbp,%rax,1),%eax
ff
cmp    $0x0,%eax
je     1acf <main+0x99f>
movslq -0x1014(%rbp),%rax
mov    -0x1010(%rbp,%rax,1),%cl
add    $0x1,%cl
mov    %cl,-0x1010(%rbp,%rax,1)
movslq -0x1014(%rbp),%rax
movzbl -0x1010(%rbp,%rax,1),%eax
ff
cmp    $0x0,%eax
je     1a85 <main+0x955>
mov    -0x1014(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x1014(%rbp)
movslq -0x1014(%rbp),%rax
mov    -0x1010(%rbp,%rax,1),%cl
add    $0x1,%cl
mov    %cl,-0x1010(%rbp,%rax,1)
mov    -0x1014(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1014(%rbp)
movslq -0x1014(%rbp),%rax
mov    -0x1010(%rbp,%rax,1),%cl
add    $0xff,%cl
mov    %cl,-0x1010(%rbp,%rax,1)
jmp    1a1a <main+0x8ea>
mov    -0x1014(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1014(%rbp)
movslq -0x1014(%rbp),%rax
mov    -0x1010(%rbp,%rax,1),%cl
add    $0x1,%cl
mov    %cl,-0x1010(%rbp,%rax,1)
mov    -0x1014(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1014(%rbp)
mov    -0x1014(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1014(%rbp)
jmp    19ea <main+0x8ba>
mov    -0x1014(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x1014(%rbp)
mov    -0x1014(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x1014(%rbp)
mov    -0x1014(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x1014(%rbp)
mov    -0x1014(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x1014(%rbp)
mov    -0x1014(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x1014(%rbp)
movslq -0x1014(%rbp),%rax
mov    -0x1010(%rbp,%rax,1),%cl
add    $0xff,%cl
mov    %cl,-0x1010(%rbp,%rax,1)
jmp    193a <main+0x80a>
mov    -0x1014(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1014(%rbp)
mov    -0x1014(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1014(%rbp)
movslq -0x1014(%rbp),%rax
movzbl -0x1010(%rbp,%rax,1),%eax
ff
cmp    $0x0,%eax
je     1bc0 <main+0xa90>
mov    -0x1014(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x1014(%rbp)
movslq -0x1014(%rbp),%rax
mov    -0x1010(%rbp,%rax,1),%cl
add    $0x1,%cl
mov    %cl,-0x1010(%rbp,%rax,1)
mov    -0x1014(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1014(%rbp)
movslq -0x1014(%rbp),%rax
mov    -0x1010(%rbp,%rax,1),%cl
add    $0xff,%cl
mov    %cl,-0x1010(%rbp,%rax,1)
jmp    1b55 <main+0xa25>
mov    -0x1014(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1014(%rbp)
movslq -0x1014(%rbp),%rax
movzbl -0x1010(%rbp,%rax,1),%eax
ff
cmp    $0x0,%eax
je     1d6f <main+0xc3f>
movslq -0x1014(%rbp),%rax
mov    -0x1010(%rbp,%rax,1),%cl
add    $0xff,%cl
mov    %cl,-0x1010(%rbp,%rax,1)
movslq -0x1014(%rbp),%rax
movzbl -0x1010(%rbp,%rax,1),%eax
ff
cmp    $0x0,%eax
je     1ca5 <main+0xb75>
movslq -0x1014(%rbp),%rax
mov    -0x1010(%rbp,%rax,1),%cl
add    $0xff,%cl
mov    %cl,-0x1010(%rbp,%rax,1)
mov    -0x1014(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x1014(%rbp)
mov    -0x1014(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x1014(%rbp)
movslq -0x1014(%rbp),%rax
movzbl -0x1010(%rbp,%rax,1),%eax
ff
cmp    $0x0,%eax
je     1c82 <main+0xb52>
movslq -0x1014(%rbp),%rax
mov    -0x1010(%rbp,%rax,1),%cl
add    $0xff,%cl
mov    %cl,-0x1010(%rbp,%rax,1)
jmp    1c4d <main+0xb1d>
mov    -0x1014(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1014(%rbp)
mov    -0x1014(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1014(%rbp)
jmp    1bff <main+0xacf>
mov    -0x1014(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x1014(%rbp)
mov    -0x1014(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x1014(%rbp)
movslq -0x1014(%rbp),%rax
movzbl -0x1010(%rbp,%rax,1),%eax
ff
cmp    $0x0,%eax
je     1d4c <main+0xc1c>
mov    -0x1014(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x1014(%rbp)
mov    -0x1014(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x1014(%rbp)
movslq -0x1014(%rbp),%rax
mov    -0x1010(%rbp,%rax,1),%cl
add    $0xff,%cl
mov    %cl,-0x1010(%rbp,%rax,1)
mov    -0x1014(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1014(%rbp)
mov    -0x1014(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1014(%rbp)
movslq -0x1014(%rbp),%rax
mov    -0x1010(%rbp,%rax,1),%cl
add    $0xff,%cl
mov    %cl,-0x1010(%rbp,%rax,1)
jmp    1cc3 <main+0xb93>
mov    -0x1014(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1014(%rbp)
mov    -0x1014(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1014(%rbp)
jmp    1bcf <main+0xa9f>
mov    -0x1014(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x1014(%rbp)
mov    -0x1014(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x1014(%rbp)
movslq -0x1014(%rbp),%rax
movzbl -0x1010(%rbp,%rax,1),%eax
ff
cmp    $0x0,%eax
je     1e16 <main+0xce6>
mov    -0x1014(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x1014(%rbp)
mov    -0x1014(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x1014(%rbp)
movslq -0x1014(%rbp),%rax
mov    -0x1010(%rbp,%rax,1),%cl
add    $0x1,%cl
mov    %cl,-0x1010(%rbp,%rax,1)
mov    -0x1014(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1014(%rbp)
mov    -0x1014(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1014(%rbp)
movslq -0x1014(%rbp),%rax
mov    -0x1010(%rbp,%rax,1),%cl
add    $0xff,%cl
mov    %cl,-0x1010(%rbp,%rax,1)
jmp    1d8d <main+0xc5d>
jmp    17f3 <main+0x6c3>
mov    -0x1014(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x1014(%rbp)
movslq -0x1014(%rbp),%rax
movzbl -0x1010(%rbp,%rax,1),%eax
ff
cmp    $0x0,%eax
je     1e5f <main+0xd2f>
movslq -0x1014(%rbp),%rax
mov    -0x1010(%rbp,%rax,1),%cl
add    $0xff,%cl
mov    %cl,-0x1010(%rbp,%rax,1)
jmp    1e2a <main+0xcfa>
mov    -0x1014(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x1014(%rbp)
movslq -0x1014(%rbp),%rax
movzbl -0x1010(%rbp,%rax,1),%edi
ff
mov    $0x0,%al
call   1040 <putchar@plt>
movslq -0x1014(%rbp),%rax
movzbl -0x1010(%rbp,%rax,1),%eax
ff
cmp    $0x0,%eax
je     1eb9 <main+0xd89>
movslq -0x1014(%rbp),%rax
mov    -0x1010(%rbp,%rax,1),%cl
add    $0xff,%cl
mov    %cl,-0x1010(%rbp,%rax,1)
jmp    1e84 <main+0xd54>
mov    -0x1014(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x1014(%rbp)
movslq -0x1014(%rbp),%rax
mov    -0x1010(%rbp,%rax,1),%cl
add    $0xff,%cl
mov    %cl,-0x1010(%rbp,%rax,1)
mov    $0x0,%al
call   1050 <getchar@plt>
mov    %al,%cl
movslq -0x1014(%rbp),%rax
mov    %cl,-0x1010(%rbp,%rax,1)
movslq -0x1014(%rbp),%rax
mov    -0x1010(%rbp,%rax,1),%cl
add    $0x1,%cl
mov    %cl,-0x1010(%rbp,%rax,1)
jmp    11da <main+0xaa>
lea    -0x1010(%rbp),%rdi
call   1030 <free@plt>
xor    %eax,%eax
add    $0x1020,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x1008,%rsp
xor    %eax,%eax
call   1050 <getchar@plt>
inc    %al
mov    %al,(%rsp)
jne    116b <main+0x3b>
mov    %rsp,%rdi
call   1030 <free@plt>
xor    %eax,%eax
add    $0x1008,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret
mov    %rsp,%r15
lea    0x3(%rsp),%r8
lea    0x2(%rsp),%r9
movabs $0x300000000,%r12
mov    %r15,%r14
xor    %ebp,%ebp
jmp    11b4 <main+0x84>
nopl   0x0(%rax)
lea    -0x3(%r13),%rbp
lea    (%rsp,%r13,1),%r14
add    $0xfffffffffffffffd,%r14
xor    %eax,%eax
call   1050 <getchar@plt>
inc    %al
mov    %al,-0x3(%rsp,%r13,1)
mov    %rbx,%r8
lea    0x2(%rsp),%r9
je     114f <main+0x1f>
add    $0xff,%al
mov    %al,(%r14)
movslq %ebp,%rax
cmpb   $0x0,(%rsp,%rax,1)
je     11ed <main+0xbd>
mov    0x2(%rax,%r15,1),%cl
cmp    $0xfc,%cl
je     11dc <main+0xac>
shl    $0x3,%cl
add    0x3(%rax,%r15,1),%cl
add    $0x20,%cl
mov    %cl,0x3(%rax,%r15,1)
movb   $0x0,0x2(%rsp,%rax,1)
addb   $0x1,0x1(%rax,%r15,1)
addb   $0xff,(%rsp,%rax,1)
jne    123d <main+0x10d>
movslq %ebp,%rcx
lea    0x3(%rcx),%rax
mov    0x4(%rcx,%r15,1),%bl
mov    %ebx,%edx
add    $0xfe,%dl
mov    %dl,0x4(%rcx,%r15,1)
je     12c0 <main+0x190>
lea    (%rcx,%r15,1),%rdx
add    $0x4,%rdx
add    $0xfd,%bl
mov    %bl,(%rdx)
je     12c0 <main+0x190>
movb   $0x0,(%rsp,%rax,1)
jmp    1348 <main+0x218>
cs nopw 0x0(%rax,%rax,1)
nop
cltq
lea    -0x5(%rax),%rbp
addb   $0xff,-0x5(%rsp,%rax,1)
je     11ed <main+0xbd>
movslq %ebp,%rsi
addb   $0x1,0x1(%rsi,%r15,1)
addb   $0x1,0x2(%rsi,%r15,1)
addb   $0xff,0x3(%rsi,%r15,1)
lea    -0x1(%rsi),%eax
mov    %rsi,%rcx
lea    0x3(%rsi),%edx
lea    0x2(%rsi),%edi
shl    $0x20,%rsi
add    %r8,%rcx
cs nopw 0x0(%rax,%rax,1)
nop
add    %r12,%rsi
add    $0x3,%eax
cmpb   $0x0,(%rcx)
mov    %edx,%ebx
mov    %edi,%ebp
lea    0x3(%rcx),%rcx
lea    0x3(%rbx),%edx
lea    0x3(%rbp),%edi
jne    1270 <main+0x140>
movslq %eax,%rdx
mov    (%rsp,%rdx,1),%cl
test   %cl,%cl
je     1230 <main+0x100>
lea    (%rsp,%rdx,1),%rsi
movslq %ebx,%rdx
add    %r9,%rdx
mov    %ebp,%eax
nop
add    %cl,-0x2(%rdx)
movb   $0x0,(%rsi)
mov    %rdx,%rsi
addb   $0x1,-0x1(%rdx)
movzbl (%rdx),%ecx
add    $0x3,%rdx
add    $0x3,%eax
test   %cl,%cl
jne    12a0 <main+0x170>
jmp    1230 <main+0x100>
movb   $0xd,(%rsp,%rax,1)
lea    0x2(%rcx),%rax
cmpb   $0x0,0x2(%rsp,%rcx,1)
jne    13a2 <main+0x272>
movslq %eax,%rcx
mov    0x2(%rcx,%r15,1),%al
test   %al,%al
je     12ea <main+0x1ba>
add    %al,0x1(%rcx,%r15,1)
movb   $0x0,0x2(%rcx,%r15,1)
mov    0x3(%rcx,%r15,1),%dl
lea    0x1(%rcx),%rax
test   %dl,%dl
je     1338 <main+0x208>
mov    (%rsp,%rax,1),%sil
cmp    $0x1,%dl
je     1325 <main+0x1f5>
add    $0xfe,%dl
test   %sil,%sil
je     130e <main+0x1de>
movb   $0x0,(%rsp,%rax,1)
xor    %esi,%esi
test   %dl,%dl
je     1325 <main+0x1f5>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
add    $0xff,%dl
jne    1320 <main+0x1f0>
test   %sil,%sil
je     1333 <main+0x203>
sub    %sil,-0x1(%rsp,%rcx,1)
movb   $0x0,(%rsp,%rax,1)
movb   $0x0,0x3(%rsp,%rcx,1)
mov    (%rsp,%rax,1),%bl
test   %bl,%bl
je     134b <main+0x21b>
lea    (%rsp,%rax,1),%rdx
add    %bl,-0x1(%rcx,%r15,1)
movb   $0x0,(%rdx)
mov    %r8,%rbx
movslq %eax,%r13
cmpb   $0x0,-0x1(%r13,%r15,1)
je     135f <main+0x22f>
movb   $0x0,-0x1(%rsp,%r13,1)
movzbl -0x2(%r13,%r15,1),%ebp
mov    %ebp,%edi
xor    %eax,%eax
call   1040 <putchar@plt>
test   %ebp,%ebp
je     1190 <main+0x60>
movb   $0x0,-0x2(%rsp,%r13,1)
jmp    1190 <main+0x60>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
movslq %eax,%rcx
lea    -0x4(%rcx),%rax
addb   $0xff,-0x4(%rsp,%rcx,1)
je     12d3 <main+0x1a3>
movslq %eax,%rcx
lea    0x1(%rcx),%rax
addb   $0xff,0x1(%rsp,%rcx,1)
je     13d0 <main+0x2a0>
add    %r9,%rcx
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
addb   $0x1,(%rcx)
add    $0x3,%eax
cmpb   $0x0,0x2(%rcx)
lea    0x3(%rcx),%rcx
jne    13c0 <main+0x290>
movslq %eax,%rcx
mov    0x1(%rcx,%r15,1),%dl
test   %dl,%dl
je     1390 <main+0x260>
add    %rsp,%rcx
jmp    1407 <main+0x2d7>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
movb   $0x0,0x1(%rcx)
addb   $0x1,0x2(%rcx)
movzbl 0x4(%rcx),%edx
add    $0x3,%rcx
add    $0x3,%eax
test   %dl,%dl
je     1390 <main+0x260>
inc    %dl
je     13f0 <main+0x2c0>
add    %dl,(%rcx)
jmp    13f0 <main+0x2c0>

LLVM IR (-O0):
define i32 @main() {
%1 = alloca i32
%2 = alloca [4095 x i8]
%3 = alloca i32
%4 = alloca i32
store i32 0, i32* %1
store i32 0, i32* %3
store i32 0, i32* %4
store i32 0, i32* %4
br label %5
5: ; preds = %12, %0
%6 = load i32, i32* %4
%7 = icmp sle i32 %6, 4095
br i1 %7, label %8, label %15
8: ; preds = %5
%9 = load i32, i32* %3
%10 = sext i32 %9 to i64
%11 = getelementptr inbounds [4095 x i8], [4095 x i8]* %2, i64 0, i64 %10
store i8 0, i8* %11
br label %12
12: ; preds = %8
%13 = load i32, i32* %4
%14 = add nsw i32 %13, 1
store i32 %14, i32* %4
br label %5
15: ; preds = %5
%16 = load i32, i32* %3
%17 = sext i32 %16 to i64
%18 = getelementptr inbounds [4095 x i8], [4095 x i8]* %2, i64 0, i64 %17
%19 = load i8, i8* %18
%20 = add i8 %19, -1
store i8 %20, i8* %18
%21 = call i32 (...) @getchar()
%22 = trunc i32 %21 to i8
%23 = load i32, i32* %3
%24 = sext i32 %23 to i64
%25 = getelementptr inbounds [4095 x i8], [4095 x i8]* %2, i64 0, i64 %24
store i8 %22, i8* %25
%26 = load i32, i32* %3
%27 = sext i32 %26 to i64
%28 = getelementptr inbounds [4095 x i8], [4095 x i8]* %2, i64 0, i64 %27
%29 = load i8, i8* %28
%30 = add i8 %29, 1
store i8 %30, i8* %28
br label %31
31: ; preds = %708, %15
%32 = load i32, i32* %3
%33 = sext i32 %32 to i64
%34 = getelementptr inbounds [4095 x i8], [4095 x i8]* %2, i64 0, i64 %33
%35 = load i8, i8* %34
%36 = zext i8 %35 to i32
%37 = icmp ne i32 %36, 0
br i1 %37, label %38, label %726
38: ; preds = %31
%39 = load i32, i32* %3
%40 = sext i32 %39 to i64
%41 = getelementptr inbounds [4095 x i8], [4095 x i8]* %2, i64 0, i64 %40
%42 = load i8, i8* %41
%43 = add i8 %42, -1
store i8 %43, i8* %41
br label %44
44: ; preds = %252, %38
%45 = load i32, i32* %3
%46 = sext i32 %45 to i64
%47 = getelementptr inbounds [4095 x i8], [4095 x i8]* %2, i64 0, i64 %46
%48 = load i8, i8* %47
%49 = zext i8 %48 to i32
%50 = icmp ne i32 %49, 0
br i1 %50, label %51, label %253
51: ; preds = %44
%52 = load i32, i32* %3
%53 = add nsw i32 %52, 1
store i32 %53, i32* %3
%54 = load i32, i32* %3
%55 = add nsw i32 %54, 1
store i32 %55, i32* %3
%56 = load i32, i32* %3
%57 = sext i32 %56 to i64
%58 = getelementptr inbounds [4095 x i8], [4095 x i8]* %2, i64 0, i64 %57
%59 = load i8, i8* %58
%60 = add i8 %59, 1
store i8 %60, i8* %58
%61 = load i32, i32* %3
%62 = sext i32 %61 to i64
%63 = getelementptr inbounds [4095 x i8], [4095 x i8]* %2, i64 0, i64 %62
%64 = load i8, i8* %63
%65 = add i8 %64, 1
store i8 %65, i8* %63
%66 = load i32, i32* %3
%67 = sext i32 %66 to i64
%68 = getelementptr inbounds [4095 x i8], [4095 x i8]* %2, i64 0, i64 %67
%69 = load i8, i8* %68
%70 = add i8 %69, 1
store i8 %70, i8* %68
%71 = load i32, i32* %3
%72 = sext i32 %71 to i64
%73 = getelementptr inbounds [4095 x i8], [4095 x i8]* %2, i64 0, i64 %72
%74 = load i8, i8* %73
%75 = add i8 %74, 1
store i8 %75, i8* %73
br label %76
76: ; preds = %83, %51
%77 = load i32, i32* %3
%78 = sext i32 %77 to i64
%79 = getelementptr inbounds [4095 x i8], [4095 x i8]* %2, i64 0, i64 %78
%80 = load i8, i8* %79
%81 = zext i8 %80 to i32
%82 = icmp ne i32 %81, 0
br i1 %82, label %83, label %133
83: ; preds = %76
%84 = load i32, i32* %3
%85 = add nsw i32 %84, 1
store i32 %85, i32* %3
%86 = load i32, i32* %3
%87 = sext i32 %86 to i64
%88 = getelementptr inbounds [4095 x i8], [4095 x i8]* %2, i64 0, i64 %87
%89 = load i8, i8* %88
%90 = add i8 %89, 1
store i8 %90, i8* %88
%91 = load i32, i32* %3
%92 = sext i32 %91 to i64
%93 = getelementptr inbounds [4095 x i8], [4095 x i8]* %2, i64 0, i64 %92
%94 = load i8, i8* %93
%95 = add i8 %94, 1
store i8 %95, i8* %93
%96 = load i32, i32* %3
%97 = sext i32 %96 to i64
%98 = getelementptr inbounds [4095 x i8], [4095 x i8]* %2, i64 0, i64 %97
%99 = load i8, i8* %98
%100 = add i8 %99, 1
store i8 %100, i8* %98
%101 = load i32, i32* %3
%102 = sext i32 %101 to i64
%103 = getelementptr inbounds [4095 x i8], [4095 x i8]* %2, i64 0, i64 %102
%104 = load i8, i8* %103
%105 = add i8 %104, 1
store i8 %105, i8* %103
%106 = load i32, i32* %3
%107 = sext i32 %106 to i64
%108 = getelementptr inbounds [4095 x i8], [4095 x i8]* %2, i64 0, i64 %107
%109 = load i8, i8* %108
%110 = add i8 %109, 1
store i8 %110, i8* %108
%111 = load i32, i32* %3
%112 = sext i32 %111 to i64
%113 = getelementptr inbounds [4095 x i8], [4095 x i8]* %2, i64 0, i64 %112
%114 = load i8, i8* %113
%115 = add i8 %114, 1
store i8 %115, i8* %113
%116 = load i32, i32* %3
%117 = sext i32 %116 to i64
%118 = getelementptr inbounds [4095 x i8], [4095 x i8]* %2, i64 0, i64 %117
%119 = load i8, i8* %118
%120 = add i8 %119, 1
store i8 %120, i8* %118
%121 = load i32, i32* %3
%122 = sext i32 %121 to i64
%123 = getelementptr inbounds [4095 x i8], [4095 x i8]* %2, i64 0, i64 %122
%124 = load i8, i8* %123
%125 = add i8 %124, 1
store i8 %125, i8* %123
%126 = load i32, i32* %3
%127 = add nsw i32 %126, -1
store i32 %127, i32* %3
%128 = load i32, i32* %3
%129 = sext i32 %128 to i64
%130 = getelementptr inbounds [4095 x i8], [4095 x i8]* %2, i64 0, i64 %129
%131 = load i8, i8* %130
%132 = add i8 %131, -1
store i8 %132, i8* %130
br label %76
133: ; preds = %76
%134 = load i32, i32* %3
%135 = add nsw i32 %134, -1
store i32 %135, i32* %3
%136 = load i32, i32* %3
%137 = sext i32 %136 to i64
%138 = getelementptr inbounds [4095 x i8], [4095 x i8]* %2, i64 0, i64 %137
%139 = load i8, i8* %138
%140 = add i8 %139, 1
store i8 %140, i8* %138
%141 = load i32, i32* %3
%142 = add nsw i32 %141, -1
store i32 %142, i32* %3
%143 = load i32, i32* %3
%144 = sext i32 %143 to i64
%145 = getelementptr inbounds [4095 x i8], [4095 x i8]* %2, i64 0, i64 %144
%146 = load i8, i8* %145
%147 = add i8 %146, -1
store i8 %147, i8* %145
br label %148
148: ; preds = %236, %133
%149 = load i32, i32* %3
%150 = sext i32 %149 to i64
%151 = getelementptr inbounds [4095 x i8], [4095 x i8]* %2, i64 0, i64 %150
%152 = load i8, i8* %151
%153 = zext i8 %152 to i32
%154 = icmp ne i32 %153, 0
br i1 %154, label %155, label %252
155: ; preds = %148
%156 = load i32, i32* %3
%157 = add nsw i32 %156, 1
store i32 %157, i32* %3
%158 = load i32, i32* %3
%159 = sext i32 %158 to i64
%160 = getelementptr inbounds [4095 x i8], [4095 x i8]* %2, i64 0, i64 %159
%161 = load i8, i8* %160
%162 = add i8 %161, 1
store i8 %162, i8* %160
%163 = load i32, i32* %3
%164 = add nsw i32 %163, 1
store i32 %164, i32* %3
%165 = load i32, i32* %3
%166 = sext i32 %165 to i64
%167 = getelementptr inbounds [4095 x i8], [4095 x i8]* %2, i64 0, i64 %166
%168 = load i8, i8* %167
%169 = add i8 %168, 1
store i8 %169, i8* %167
%170 = load i32, i32* %3
%171 = add nsw i32 %170, 1
store i32 %171, i32* %3
%172 = load i32, i32* %3
%173 = sext i32 %172 to i64
%174 = getelementptr inbounds [4095 x i8], [4095 x i8]* %2, i64 0, i64 %173
%175 = load i8, i8* %174
%176 = add i8 %175, -1
store i8 %176, i8* %174
br label %177
177: ; preds = %184, %155
%178 = load i32, i32* %3
%179 = sext i32 %178 to i64
%180 = getelementptr inbounds [4095 x i8], [4095 x i8]* %2, i64 0, i64 %179
%181 = load i8, i8* %180
%182 = zext i8 %181 to i32
%183 = icmp ne i32 %182, 0
br i1 %183, label %184, label %191
184: ; preds = %177
%185 = load i32, i32* %3
%186 = add nsw i32 %185, 1
store i32 %186, i32* %3
%187 = load i32, i32* %3
%188 = add nsw i32 %187, 1
store i32 %188, i32* %3
%189 = load i32, i32* %3
%190 = add nsw i32 %189, 1
store i32 %190, i32* %3
br label %177
191: ; preds = %177
%192 = load i32, i32* %3
%193 = add nsw i32 %192, -1
store i32 %193, i32* %3
br label %194
194: ; preds = %224, %191
%195 = load i32, i32* %3
%196 = sext i32 %195 to i64
%197 = getelementptr inbounds [4095 x i8], [4095 x i8]* %2, i64 0, i64 %196
%198 = load i8, i8* %197
%199 = zext i8 %198 to i32
%200 = icmp ne i32 %199, 0
br i1 %200, label %201, label %236
201: ; preds = %194
br label %202
202: ; preds = %209, %201
%203 = load i32, i32* %3
%204 = sext i32 %203 to i64
%205 = getelementptr inbounds [4095 x i8], [4095 x i8]* %2, i64 0, i64 %204
%206 = load i8, i8* %205
%207 = zext i8 %206 to i32
%208 = icmp ne i32 %207, 0
br i1 %208, label %209, label %224
209: ; preds = %202
%210 = load i32, i32* %3
%211 = add nsw i32 %210, 1
store i32 %211, i32* %3
%212 = load i32, i32* %3
%213 = sext i32 %212 to i64
%214 = getelementptr inbounds [4095 x i8], [4095 x i8]* %2, i64 0, i64 %213
%215 = load i8, i8* %214
%216 = add i8 %215, 1
store i8 %216, i8* %214
%217 = load i32, i32* %3
%218 = add nsw i32 %217, -1
store i32 %218, i32* %3
%219 = load i32, i32* %3
%220 = sext i32 %219 to i64
%221 = getelementptr inbounds [4095 x i8], [4095 x i8]* %2, i64 0, i64 %220
%222 = load i8, i8* %221
%223 = add i8 %222, -1
store i8 %223, i8* %221
br label %202
224: ; preds = %202
%225 = load i32, i32* %3
%226 = add nsw i32 %225, 1
store i32 %226, i32* %3
%227 = load i32, i32* %3
%228 = add nsw i32 %227, 1
store i32 %228, i32* %3
%229 = load i32, i32* %3
%230 = sext i32 %229 to i64
%231 = getelementptr inbounds [4095 x i8], [4095 x i8]* %2, i64 0, i64 %230
%232 = load i8, i8* %231
%233 = add i8 %232, 1
store i8 %233, i8* %231
%234 = load i32, i32* %3
%235 = add nsw i32 %234, 1
store i32 %235, i32* %3
br label %194
236: ; preds = %194
%237 = load i32, i32* %3
%238 = add nsw i32 %237, -1
store i32 %238, i32* %3
%239 = load i32, i32* %3
%240 = add nsw i32 %239, -1
store i32 %240, i32* %3
%241 = load i32, i32* %3
%242 = add nsw i32 %241, -1
store i32 %242, i32* %3
%243 = load i32, i32* %3
%244 = add nsw i32 %243, -1
store i32 %244, i32* %3
%245 = load i32, i32* %3
%246 = add nsw i32 %245, -1
store i32 %246, i32* %3
%247 = load i32, i32* %3
%248 = sext i32 %247 to i64
%249 = getelementptr inbounds [4095 x i8], [4095 x i8]* %2, i64 0, i64 %248
%250 = load i8, i8* %249
%251 = add i8 %250, -1
store i8 %251, i8* %249
br label %148
252: ; preds = %148
br label %44
253: ; preds = %44
%254 = load i32, i32* %3
%255 = add nsw i32 %254, 1
store i32 %255, i32* %3
%256 = load i32, i32* %3
%257 = add nsw i32 %256, 1
store i32 %257, i32* %3
%258 = load i32, i32* %3
%259 = add nsw i32 %258, 1
store i32 %259, i32* %3
br label %260
260: ; preds = %267, %253
%261 = load i32, i32* %3
%262 = sext i32 %261 to i64
%263 = getelementptr inbounds [4095 x i8], [4095 x i8]* %2, i64 0, i64 %262
%264 = load i8, i8* %263
%265 = zext i8 %264 to i32
%266 = icmp ne i32 %265, 0
br i1 %266, label %267, label %273
267: ; preds = %260
%268 = load i32, i32* %3
%269 = sext i32 %268 to i64
%270 = getelementptr inbounds [4095 x i8], [4095 x i8]* %2, i64 0, i64 %269
%271 = load i8, i8* %270
%272 = add i8 %271, -1
store i8 %272, i8* %270
br label %260
273: ; preds = %260
%274 = load i32, i32* %3
%275 = sext i32 %274 to i64
%276 = getelementptr inbounds [4095 x i8], [4095 x i8]* %2, i64 0, i64 %275
%277 = load i8, i8* %276
%278 = add i8 %277, 1
store i8 %278, i8* %276
%279 = load i32, i32* %3
%280 = add nsw i32 %279, 1
store i32 %280, i32* %3
%281 = load i32, i32* %3
%282 = sext i32 %281 to i64
%283 = getelementptr inbounds [4095 x i8], [4095 x i8]* %2, i64 0, i64 %282
%284 = load i8, i8* %283
%285 = add i8 %284, -1
store i8 %285, i8* %283
%286 = load i32, i32* %3
%287 = sext i32 %286 to i64
%288 = getelementptr inbounds [4095 x i8], [4095 x i8]* %2, i64 0, i64 %287
%289 = load i8, i8* %288
%290 = add i8 %289, -1
store i8 %290, i8* %288
br label %291
291: ; preds = %350, %273
%292 = load i32, i32* %3
%293 = sext i32 %292 to i64
%294 = getelementptr inbounds [4095 x i8], [4095 x i8]* %2, i64 0, i64 %293
%295 = load i8, i8* %294
%296 = zext i8 %295 to i32
%297 = icmp ne i32 %296, 0
br i1 %297, label %298, label %351
298: ; preds = %291
%299 = load i32, i32* %3
%300 = sext i32 %299 to i64
%301 = getelementptr inbounds [4095 x i8], [4095 x i8]* %2, i64 0, i64 %300
%302 = load i8, i8* %301
%303 = add i8 %302, -1
store i8 %303, i8* %301
br label %304
304: ; preds = %349, %298
%305 = load i32, i32* %3
%306 = sext i32 %305 to i64
%307 = getelementptr inbounds [4095 x i8], [4095 x i8]* %2, i64 0, i64 %306
%308 = load i8, i8* %307
%309 = zext i8 %308 to i32
%310 = icmp ne i32 %309, 0
br i1 %310, label %311, label %350
311: ; preds = %304
%312 = load i32, i32* %3
%313 = add nsw i32 %312, -1
store i32 %313, i32* %3
%314 = load i32, i32* %3
%315 = sext i32 %314 to i64
%316 = getelementptr inbounds [4095 x i8], [4095 x i8]* %2, i64 0, i64 %315
%317 = load i8, i8* %316
%318 = add i8 %317, -1
store i8 %318, i8* %316
%319 = load i32, i32* %3
%320 = add nsw i32 %319, 1
store i32 %320, i32* %3
%321 = load i32, i32* %3
%322 = sext i32 %321 to i64
%323 = getelementptr inbounds [4095 x i8], [4095 x i8]* %2, i64 0, i64 %322
%324 = load i8, i8* %323
%325 = add i8 %324, 1
store i8 %325, i8* %323
%326 = load i32, i32* %3
%327 = sext i32 %326 to i64
%328 = getelementptr inbounds [4095 x i8], [4095 x i8]* %2, i64 0, i64 %327
%329 = load i8, i8* %328
%330 = add i8 %329, 1
store i8 %330, i8* %328
%331 = load i32, i32* %3
%332 = sext i32 %331 to i64
%333 = getelementptr inbounds [4095 x i8], [4095 x i8]* %2, i64 0, i64 %332
%334 = load i8, i8* %333
%335 = add i8 %334, 1
store i8 %335, i8* %333
br label %336
336: ; preds = %343, %311
%337 = load i32, i32* %3
%338 = sext i32 %337 to i64
%339 = getelementptr inbounds [4095 x i8], [4095 x i8]* %2, i64 0, i64 %338
%340 = load i8, i8* %339
%341 = zext i8 %340 to i32
%342 = icmp ne i32 %341, 0
br i1 %342, label %343, label %349
343: ; preds = %336
%344 = load i32, i32* %3
%345 = sext i32 %344 to i64
%346 = getelementptr inbounds [4095 x i8], [4095 x i8]* %2, i64 0, i64 %345
%347 = load i8, i8* %346
%348 = add i8 %347, -1
store i8 %348, i8* %346
br label %336
349: ; preds = %336
br label %304
350: ; preds = %304
br label %291
351: ; preds = %291
%352 = load i32, i32* %3
%353 = add nsw i32 %352, -1
store i32 %353, i32* %3
br label %354
354: ; preds = %669, %351
%355 = load i32, i32* %3
%356 = sext i32 %355 to i64
%357 = getelementptr inbounds [4095 x i8], [4095 x i8]* %2, i64 0, i64 %356
%358 = load i8, i8* %357
%359 = zext i8 %358 to i32
%360 = icmp ne i32 %359, 0
br i1 %360, label %361, label %670
361: ; preds = %354
%362 = load i32, i32* %3
%363 = sext i32 %362 to i64
%364 = getelementptr inbounds [4095 x i8], [4095 x i8]* %2, i64 0, i64 %363
%365 = load i8, i8* %364
%366 = add i8 %365, 1
store i8 %366, i8* %364
%367 = load i32, i32* %3
%368 = sext i32 %367 to i64
%369 = getelementptr inbounds [4095 x i8], [4095 x i8]* %2, i64 0, i64 %368
%370 = load i8, i8* %369
%371 = add i8 %370, 1
store i8 %371, i8* %369
%372 = load i32, i32* %3
%373 = sext i32 %372 to i64
%374 = getelementptr inbounds [4095 x i8], [4095 x i8]* %2, i64 0, i64 %373
%375 = load i8, i8* %374
%376 = add i8 %375, 1
store i8 %376, i8* %374
%377 = load i32, i32* %3
%378 = sext i32 %377 to i64
%379 = getelementptr inbounds [4095 x i8], [4095 x i8]* %2, i64 0, i64 %378
%380 = load i8, i8* %379
%381 = add i8 %380, 1
store i8 %381, i8* %379
%382 = load i32, i32* %3
%383 = sext i32 %382 to i64
%384 = getelementptr inbounds [4095 x i8], [4095 x i8]* %2, i64 0, i64 %383
%385 = load i8, i8* %384
%386 = add i8 %385, 1
store i8 %386, i8* %384
%387 = load i32, i32* %3
%388 = sext i32 %387 to i64
%389 = getelementptr inbounds [4095 x i8], [4095 x i8]* %2, i64 0, i64 %388
%390 = load i8, i8* %389
%391 = add i8 %390, 1
store i8 %391, i8* %389
%392 = load i32, i32* %3
%393 = sext i32 %392 to i64
%394 = getelementptr inbounds [4095 x i8], [4095 x i8]* %2, i64 0, i64 %393
%395 = load i8, i8* %394
%396 = add i8 %395, 1
store i8 %396, i8* %394
%397 = load i32, i32* %3
%398 = sext i32 %397 to i64
%399 = getelementptr inbounds [4095 x i8], [4095 x i8]* %2, i64 0, i64 %398
%400 = load i8, i8* %399
%401 = add i8 %400, 1
store i8 %401, i8* %399
%402 = load i32, i32* %3
%403 = sext i32 %402 to i64
%404 = getelementptr inbounds [4095 x i8], [4095 x i8]* %2, i64 0, i64 %403
%405 = load i8, i8* %404
%406 = add i8 %405, 1
store i8 %406, i8* %404
%407 = load i32, i32* %3
%408 = sext i32 %407 to i64
%409 = getelementptr inbounds [4095 x i8], [4095 x i8]* %2, i64 0, i64 %408
%410 = load i8, i8* %409
%411 = add i8 %410, 1
store i8 %411, i8* %409
%412 = load i32, i32* %3
%413 = sext i32 %412 to i64
%414 = getelementptr inbounds [4095 x i8], [4095 x i8]* %2, i64 0, i64 %413
%415 = load i8, i8* %414
%416 = add i8 %415, 1
store i8 %416, i8* %414
%417 = load i32, i32* %3
%418 = sext i32 %417 to i64
%419 = getelementptr inbounds [4095 x i8], [4095 x i8]* %2, i64 0, i64 %418
%420 = load i8, i8* %419
%421 = add i8 %420, 1
store i8 %421, i8* %419
%422 = load i32, i32* %3
%423 = add nsw i32 %422, -1
store i32 %423, i32* %3
br label %424
424: ; preds = %508, %361
%425 = load i32, i32* %3
%426 = sext i32 %425 to i64
%427 = getelementptr inbounds [4095 x i8], [4095 x i8]* %2, i64 0, i64 %426
%428 = load i8, i8* %427
%429 = zext i8 %428 to i32
%430 = icmp ne i32 %429, 0
br i1 %430, label %431, label %524
431: ; preds = %424
%432 = load i32, i32* %3
%433 = add nsw i32 %432, 1
store i32 %433, i32* %3
%434 = load i32, i32* %3
%435 = sext i32 %434 to i64
%436 = getelementptr inbounds [4095 x i8], [4095 x i8]* %2, i64 0, i64 %435
%437 = load i8, i8* %436
%438 = add i8 %437, -1
store i8 %438, i8* %436
br label %439
439: ; preds = %446, %431
%440 = load i32, i32* %3
%441 = sext i32 %440 to i64
%442 = getelementptr inbounds [4095 x i8], [4095 x i8]* %2, i64 0, i64 %441
%443 = load i8, i8* %442
%444 = zext i8 %443 to i32
%445 = icmp ne i32 %444, 0
br i1 %445, label %446, label %458
446: ; preds = %439
%447 = load i32, i32* %3
%448 = add nsw i32 %447, 1
store i32 %448, i32* %3
%449 = load i32, i32* %3
%450 = sext i32 %449 to i64
%451 = getelementptr inbounds [4095 x i8], [4095 x i8]* %2, i64 0, i64 %450
%452 = load i8, i8* %451
%453 = add i8 %452, 1
store i8 %453, i8* %451
%454 = load i32, i32* %3
%455 = add nsw i32 %454, 1
store i32 %455, i32* %3
%456 = load i32, i32* %3
%457 = add nsw i32 %456, 1
store i32 %457, i32* %3
br label %439
458: ; preds = %439
%459 = load i32, i32* %3
%460 = add nsw i32 %459, 1
store i32 %460, i32* %3
br label %461
461: ; preds = %496, %458
%462 = load i32, i32* %3
%463 = sext i32 %462 to i64
%464 = getelementptr inbounds [4095 x i8], [4095 x i8]* %2, i64 0, i64 %463
%465 = load i8, i8* %464
%466 = zext i8 %465 to i32
%467 = icmp ne i32 %466, 0
br i1 %467, label %468, label %508
468: ; preds = %461
%469 = load i32, i32* %3
%470 = sext i32 %469 to i64
%471 = getelementptr inbounds [4095 x i8], [4095 x i8]* %2, i64 0, i64 %470
%472 = load i8, i8* %471
%473 = add i8 %472, 1
store i8 %473, i8* %471
br label %474
474: ; preds = %481, %468
%475 = load i32, i32* %3
%476 = sext i32 %475 to i64
%477 = getelementptr inbounds [4095 x i8], [4095 x i8]* %2, i64 0, i64 %476
%478 = load i8, i8* %477
%479 = zext i8 %478 to i32
%480 = icmp ne i32 %479, 0
br i1 %480, label %481, label %496
481: ; preds = %474
%482 = load i32, i32* %3
%483 = add nsw i32 %482, -1
store i32 %483, i32* %3
%484 = load i32, i32* %3
%485 = sext i32 %484 to i64
%486 = getelementptr inbounds [4095 x i8], [4095 x i8]* %2, i64 0, i64 %485
%487 = load i8, i8* %486
%488 = add i8 %487, 1
store i8 %488, i8* %486
%489 = load i32, i32* %3
%490 = add nsw i32 %489, 1
store i32 %490, i32* %3
%491 = load i32, i32* %3
%492 = sext i32 %491 to i64
%493 = getelementptr inbounds [4095 x i8], [4095 x i8]* %2, i64 0, i64 %492
%494 = load i8, i8* %493
%495 = add i8 %494, -1
store i8 %495, i8* %493
br label %474
496: ; preds = %474
%497 = load i32, i32* %3
%498 = add nsw i32 %497, 1
store i32 %498, i32* %3
%499 = load i32, i32* %3
%500 = sext i32 %499 to i64
%501 = getelementptr inbounds [4095 x i8], [4095 x i8]* %2, i64 0, i64 %500
%502 = load i8, i8* %501
%503 = add i8 %502, 1
store i8 %503, i8* %501
%504 = load i32, i32* %3
%505 = add nsw i32 %504, 1
store i32 %505, i32* %3
%506 = load i32, i32* %3
%507 = add nsw i32 %506, 1
store i32 %507, i32* %3
br label %461
508: ; preds = %461
%509 = load i32, i32* %3
%510 = add nsw i32 %509, -1
store i32 %510, i32* %3
%511 = load i32, i32* %3
%512 = add nsw i32 %511, -1
store i32 %512, i32* %3
%513 = load i32, i32* %3
%514 = add nsw i32 %513, -1
store i32 %514, i32* %3
%515 = load i32, i32* %3
%516 = add nsw i32 %515, -1
store i32 %516, i32* %3
%517 = load i32, i32* %3
%518 = add nsw i32 %517, -1
store i32 %518, i32* %3
%519 = load i32, i32* %3
%520 = sext i32 %519 to i64
%521 = getelementptr inbounds [4095 x i8], [4095 x i8]* %2, i64 0, i64 %520
%522 = load i8, i8* %521
%523 = add i8 %522, -1
store i8 %523, i8* %521
br label %424
524: ; preds = %424
%525 = load i32, i32* %3
%526 = add nsw i32 %525, 1
store i32 %526, i32* %3
%527 = load i32, i32* %3
%528 = add nsw i32 %527, 1
store i32 %528, i32* %3
br label %529
529: ; preds = %536, %524
%530 = load i32, i32* %3
%531 = sext i32 %530 to i64
%532 = getelementptr inbounds [4095 x i8], [4095 x i8]* %2, i64 0, i64 %531
%533 = load i8, i8* %532
%534 = zext i8 %533 to i32
%535 = icmp ne i32 %534, 0
br i1 %535, label %536, label %551
536: ; preds = %529
%537 = load i32, i32* %3
%538 = add nsw i32 %537, -1
store i32 %538, i32* %3
%539 = load i32, i32* %3
%540 = sext i32 %539 to i64
%541 = getelementptr inbounds [4095 x i8], [4095 x i8]* %2, i64 0, i64 %540
%542 = load i8, i8* %541
%543 = add i8 %542, 1
store i8 %543, i8* %541
%544 = load i32, i32* %3
%545 = add nsw i32 %544, 1
store i32 %545, i32* %3
%546 = load i32, i32* %3
%547 = sext i32 %546 to i64
%548 = getelementptr inbounds [4095 x i8], [4095 x i8]* %2, i64 0, i64 %547
%549 = load i8, i8* %548
%550 = add i8 %549, -1
store i8 %550, i8* %548
br label %529
551: ; preds = %529
%552 = load i32, i32* %3
%553 = add nsw i32 %552, 1
store i32 %553, i32* %3
br label %554
554: ; preds = %633, %551
%555 = load i32, i32* %3
%556 = sext i32 %555 to i64
%557 = getelementptr inbounds [4095 x i8], [4095 x i8]* %2, i64 0, i64 %556
%558 = load i8, i8* %557
%559 = zext i8 %558 to i32
%560 = icmp ne i32 %559, 0
br i1 %560, label %561, label %638
561: ; preds = %554
%562 = load i32, i32* %3
%563 = sext i32 %562 to i64
%564 = getelementptr inbounds [4095 x i8], [4095 x i8]* %2, i64 0, i64 %563
%565 = load i8, i8* %564
%566 = add i8 %565, -1
store i8 %566, i8* %564
br label %567
567: ; preds = %597, %561
%568 = load i32, i32* %3
%569 = sext i32 %568 to i64
%570 = getelementptr inbounds [4095 x i8], [4095 x i8]* %2, i64 0, i64 %569
%571 = load i8, i8* %570
%572 = zext i8 %571 to i32
%573 = icmp ne i32 %572, 0
br i1 %573, label %574, label %602
574: ; preds = %567
%575 = load i32, i32* %3
%576 = sext i32 %575 to i64
%577 = getelementptr inbounds [4095 x i8], [4095 x i8]* %2, i64 0, i64 %576
%578 = load i8, i8* %577
%579 = add i8 %578, -1
store i8 %579, i8* %577
%580 = load i32, i32* %3
%581 = add nsw i32 %580, -1
store i32 %581, i32* %3
%582 = load i32, i32* %3
%583 = add nsw i32 %582, -1
store i32 %583, i32* %3
br label %584
584: ; preds = %591, %574
%585 = load i32, i32* %3
%586 = sext i32 %585 to i64
%587 = getelementptr inbounds [4095 x i8], [4095 x i8]* %2, i64 0, i64 %586
%588 = load i8, i8* %587
%589 = zext i8 %588 to i32
%590 = icmp ne i32 %589, 0
br i1 %590, label %591, label %597
591: ; preds = %584
%592 = load i32, i32* %3
%593 = sext i32 %592 to i64
%594 = getelementptr inbounds [4095 x i8], [4095 x i8]* %2, i64 0, i64 %593
%595 = load i8, i8* %594
%596 = add i8 %595, -1
store i8 %596, i8* %594
br label %584
597: ; preds = %584
%598 = load i32, i32* %3
%599 = add nsw i32 %598, 1
store i32 %599, i32* %3
%600 = load i32, i32* %3
%601 = add nsw i32 %600, 1
store i32 %601, i32* %3
br label %567
602: ; preds = %567
%603 = load i32, i32* %3
%604 = add nsw i32 %603, -1
store i32 %604, i32* %3
%605 = load i32, i32* %3
%606 = add nsw i32 %605, -1
store i32 %606, i32* %3
br label %607
607: ; preds = %614, %602
%608 = load i32, i32* %3
%609 = sext i32 %608 to i64
%610 = getelementptr inbounds [4095 x i8], [4095 x i8]* %2, i64 0, i64 %609
%611 = load i8, i8* %610
%612 = zext i8 %611 to i32
%613 = icmp ne i32 %612, 0
br i1 %613, label %614, label %633
614: ; preds = %607
%615 = load i32, i32* %3
%616 = add nsw i32 %615, -1
store i32 %616, i32* %3
%617 = load i32, i32* %3
%618 = add nsw i32 %617, -1
store i32 %618, i32* %3
%619 = load i32, i32* %3
%620 = sext i32 %619 to i64
%621 = getelementptr inbounds [4095 x i8], [4095 x i8]* %2, i64 0, i64 %620
%622 = load i8, i8* %621
%623 = add i8 %622, -1
store i8 %623, i8* %621
%624 = load i32, i32* %3
%625 = add nsw i32 %624, 1
store i32 %625, i32* %3
%626 = load i32, i32* %3
%627 = add nsw i32 %626, 1
store i32 %627, i32* %3
%628 = load i32, i32* %3
%629 = sext i32 %628 to i64
%630 = getelementptr inbounds [4095 x i8], [4095 x i8]* %2, i64 0, i64 %629
%631 = load i8, i8* %630
%632 = add i8 %631, -1
store i8 %632, i8* %630
br label %607
633: ; preds = %607
%634 = load i32, i32* %3
%635 = add nsw i32 %634, 1
store i32 %635, i32* %3
%636 = load i32, i32* %3
%637 = add nsw i32 %636, 1
store i32 %637, i32* %3
br label %554
638: ; preds = %554
%639 = load i32, i32* %3
%640 = add nsw i32 %639, -1
store i32 %640, i32* %3
%641 = load i32, i32* %3
%642 = add nsw i32 %641, -1
store i32 %642, i32* %3
br label %643
643: ; preds = %650, %638
%644 = load i32, i32* %3
%645 = sext i32 %644 to i64
%646 = getelementptr inbounds [4095 x i8], [4095 x i8]* %2, i64 0, i64 %645
%647 = load i8, i8* %646
%648 = zext i8 %647 to i32
%649 = icmp ne i32 %648, 0
br i1 %649, label %650, label %669
650: ; preds = %643
%651 = load i32, i32* %3
%652 = add nsw i32 %651, -1
store i32 %652, i32* %3
%653 = load i32, i32* %3
%654 = add nsw i32 %653, -1
store i32 %654, i32* %3
%655 = load i32, i32* %3
%656 = sext i32 %655 to i64
%657 = getelementptr inbounds [4095 x i8], [4095 x i8]* %2, i64 0, i64 %656
%658 = load i8, i8* %657
%659 = add i8 %658, 1
store i8 %659, i8* %657
%660 = load i32, i32* %3
%661 = add nsw i32 %660, 1
store i32 %661, i32* %3
%662 = load i32, i32* %3
%663 = add nsw i32 %662, 1
store i32 %663, i32* %3
%664 = load i32, i32* %3
%665 = sext i32 %664 to i64
%666 = getelementptr inbounds [4095 x i8], [4095 x i8]* %2, i64 0, i64 %665
%667 = load i8, i8* %666
%668 = add i8 %667, -1
store i8 %668, i8* %666
br label %643
669: ; preds = %643
br label %354
670: ; preds = %354
%671 = load i32, i32* %3
%672 = add nsw i32 %671, -1
store i32 %672, i32* %3
br label %673
673: ; preds = %680, %670
%674 = load i32, i32* %3
%675 = sext i32 %674 to i64
%676 = getelementptr inbounds [4095 x i8], [4095 x i8]* %2, i64 0, i64 %675
%677 = load i8, i8* %676
%678 = zext i8 %677 to i32
%679 = icmp ne i32 %678, 0
br i1 %679, label %680, label %686
680: ; preds = %673
%681 = load i32, i32* %3
%682 = sext i32 %681 to i64
%683 = getelementptr inbounds [4095 x i8], [4095 x i8]* %2, i64 0, i64 %682
%684 = load i8, i8* %683
%685 = add i8 %684, -1
store i8 %685, i8* %683
br label %673
686: ; preds = %673
%687 = load i32, i32* %3
%688 = add nsw i32 %687, -1
store i32 %688, i32* %3
%689 = load i32, i32* %3
%690 = sext i32 %689 to i64
%691 = getelementptr inbounds [4095 x i8], [4095 x i8]* %2, i64 0, i64 %690
%692 = load i8, i8* %691
%693 = zext i8 %692 to i32
%694 = call i32 (i32, ...) bitcast (i32 (...)* @putchar to i32 (i32, ...)*)(i32 %693)
br label %695
695: ; preds = %702, %686
%696 = load i32, i32* %3
%697 = sext i32 %696 to i64
%698 = getelementptr inbounds [4095 x i8], [4095 x i8]* %2, i64 0, i64 %697
%699 = load i8, i8* %698
%700 = zext i8 %699 to i32
%701 = icmp ne i32 %700, 0
br i1 %701, label %702, label %708
702: ; preds = %695
%703 = load i32, i32* %3
%704 = sext i32 %703 to i64
%705 = getelementptr inbounds [4095 x i8], [4095 x i8]* %2, i64 0, i64 %704
%706 = load i8, i8* %705
%707 = add i8 %706, -1
store i8 %707, i8* %705
br label %695
708: ; preds = %695
%709 = load i32, i32* %3
%710 = add nsw i32 %709, -1
store i32 %710, i32* %3
%711 = load i32, i32* %3
%712 = sext i32 %711 to i64
%713 = getelementptr inbounds [4095 x i8], [4095 x i8]* %2, i64 0, i64 %712
%714 = load i8, i8* %713
%715 = add i8 %714, -1
store i8 %715, i8* %713
%716 = call i32 (...) @getchar()
%717 = trunc i32 %716 to i8
%718 = load i32, i32* %3
%719 = sext i32 %718 to i64
%720 = getelementptr inbounds [4095 x i8], [4095 x i8]* %2, i64 0, i64 %719
store i8 %717, i8* %720
%721 = load i32, i32* %3
%722 = sext i32 %721 to i64
%723 = getelementptr inbounds [4095 x i8], [4095 x i8]* %2, i64 0, i64 %722
%724 = load i8, i8* %723
%725 = add i8 %724, 1
store i8 %725, i8* %723
br label %31
726: ; preds = %31
%727 = getelementptr inbounds [4095 x i8], [4095 x i8]* %2, i64 0, i64 0
ret i32 0
}

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