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

/* Forward declarations */

/* Type definitions */

/* Variables and functions */
int /*<<< orphan*/ free(unsigned char *);
int /*<<< orphan*/ putchar(unsigned char);
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]++;
  _stack[_stack_pointer]++;
  _stack[_stack_pointer]++;
  _stack[_stack_pointer]++;
  _stack[_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_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++;
    _stack[_stack_pointer]++;
    _stack[_stack_pointer]++;
    _stack[_stack_pointer]++;
    _stack_pointer++;
    _stack[_stack_pointer]++;
    _stack_pointer--;
    _stack_pointer--;
    _stack_pointer--;
    _stack_pointer--;
    _stack[_stack_pointer]--;
  }
  _stack_pointer++;
  _stack[_stack_pointer]++;
  _stack[_stack_pointer]++;
  putchar(_stack[_stack_pointer]);
  _stack_pointer++;
  _stack[_stack_pointer]++;
  putchar(_stack[_stack_pointer]);
  _stack[_stack_pointer]++;
  _stack[_stack_pointer]++;
  _stack[_stack_pointer]++;
  _stack[_stack_pointer]++;
  _stack[_stack_pointer]++;
  _stack[_stack_pointer]++;
  _stack[_stack_pointer]++;
  putchar(_stack[_stack_pointer]);
  putchar(_stack[_stack_pointer]);
  _stack[_stack_pointer]++;
  _stack[_stack_pointer]++;
  _stack[_stack_pointer]++;
  putchar(_stack[_stack_pointer]);
  _stack_pointer++;
  _stack[_stack_pointer]++;
  _stack[_stack_pointer]++;
  putchar(_stack[_stack_pointer]);
  _stack_pointer--;
  _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[_stack_pointer]++;
  _stack[_stack_pointer]++;
  _stack[_stack_pointer]++;
  _stack[_stack_pointer]++;
  putchar(_stack[_stack_pointer]);
  _stack_pointer++;
  putchar(_stack[_stack_pointer]);
  _stack[_stack_pointer]++;
  _stack[_stack_pointer]++;
  _stack[_stack_pointer]++;
  putchar(_stack[_stack_pointer]);
  _stack[_stack_pointer]--;
  _stack[_stack_pointer]--;
  _stack[_stack_pointer]--;
  _stack[_stack_pointer]--;
  _stack[_stack_pointer]--;
  _stack[_stack_pointer]--;
  putchar(_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]--;
  putchar(_stack[_stack_pointer]);
  _stack_pointer++;
  _stack[_stack_pointer]++;
  putchar(_stack[_stack_pointer]);
  _stack_pointer++;
  putchar(_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     1183 <main+0x63>
movslq -0x1014(%rbp),%rax
movb   $0x0,-0x1010(%rbp,%rax,1)
mov    -0x1018(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1018(%rbp)
jmp    1150 <main+0x30>
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
movzbl -0x1010(%rbp,%rax,1),%eax
ff
cmp    $0x0,%eax
je     1518 <main+0x3f8>
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)
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)
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    $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)
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)
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    1273 <main+0x153>
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
movzbl -0x1010(%rbp,%rax,1),%edi
ff
call   1040 <putchar@plt>
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
movzbl -0x1010(%rbp,%rax,1),%edi
ff
call   1040 <putchar@plt>
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
movzbl -0x1010(%rbp,%rax,1),%edi
ff
call   1040 <putchar@plt>
movslq -0x1014(%rbp),%rax
movzbl -0x1010(%rbp,%rax,1),%edi
ff
call   1040 <putchar@plt>
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),%edi
ff
call   1040 <putchar@plt>
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
movzbl -0x1010(%rbp,%rax,1),%edi
ff
call   1040 <putchar@plt>
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)
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)
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),%edi
ff
call   1040 <putchar@plt>
mov    -0x1014(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1014(%rbp)
movslq -0x1014(%rbp),%rax
movzbl -0x1010(%rbp,%rax,1),%edi
ff
call   1040 <putchar@plt>
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),%edi
ff
call   1040 <putchar@plt>
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
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
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),%edi
ff
call   1040 <putchar@plt>
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
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
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
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),%edi
ff
call   1040 <putchar@plt>
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
movzbl -0x1010(%rbp,%rax,1),%edi
ff
call   1040 <putchar@plt>
mov    -0x1014(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1014(%rbp)
movslq -0x1014(%rbp),%rax
movzbl -0x1010(%rbp,%rax,1),%edi
ff
call   1040 <putchar@plt>
lea    -0x1010(%rbp),%rdi
call   1030 <free@plt>
xor    %eax,%eax
add    $0x1020,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
sub    $0x1008,%rsp
movb   $0x0,(%rsp)
xor    %edi,%edi
call   1040 <putchar@plt>
xor    %edi,%edi
call   1040 <putchar@plt>
xor    %edi,%edi
call   1040 <putchar@plt>
xor    %edi,%edi
call   1040 <putchar@plt>
xor    %edi,%edi
call   1040 <putchar@plt>
xor    %edi,%edi
call   1040 <putchar@plt>
xor    %edi,%edi
call   1040 <putchar@plt>
xor    %edi,%edi
call   1040 <putchar@plt>
xor    %edi,%edi
call   1040 <putchar@plt>
xor    %edi,%edi
call   1040 <putchar@plt>
xor    %edi,%edi
call   1040 <putchar@plt>
xor    %edi,%edi
call   1040 <putchar@plt>
xor    %edi,%edi
call   1040 <putchar@plt>
mov    %rsp,%rdi
call   1030 <free@plt>
xor    %eax,%eax
add    $0x1008,%rsp
ret

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 = load i32, i32* %3
%22 = sext i32 %21 to i64
%23 = getelementptr inbounds [4095 x i8], [4095 x i8]* %2, i64 0, i64 %22
%24 = load i8, i8* %23
%25 = add i8 %24, 1
store i8 %25, i8* %23
%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
%31 = load i32, i32* %3
%32 = sext i32 %31 to i64
%33 = getelementptr inbounds [4095 x i8], [4095 x i8]* %2, i64 0, i64 %32
%34 = load i8, i8* %33
%35 = add i8 %34, 1
store i8 %35, i8* %33
%36 = load i32, i32* %3
%37 = sext i32 %36 to i64
%38 = getelementptr inbounds [4095 x i8], [4095 x i8]* %2, i64 0, i64 %37
%39 = load i8, i8* %38
%40 = add i8 %39, 1
store i8 %40, i8* %38
%41 = load i32, i32* %3
%42 = sext i32 %41 to i64
%43 = getelementptr inbounds [4095 x i8], [4095 x i8]* %2, i64 0, i64 %42
%44 = load i8, i8* %43
%45 = add i8 %44, 1
store i8 %45, i8* %43
%46 = load i32, i32* %3
%47 = sext i32 %46 to i64
%48 = getelementptr inbounds [4095 x i8], [4095 x i8]* %2, i64 0, i64 %47
%49 = load i8, i8* %48
%50 = add i8 %49, 1
store i8 %50, i8* %48
%51 = load i32, i32* %3
%52 = sext i32 %51 to i64
%53 = getelementptr inbounds [4095 x i8], [4095 x i8]* %2, i64 0, i64 %52
%54 = load i8, i8* %53
%55 = add i8 %54, 1
store i8 %55, i8* %53
%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
br label %66
66: ; preds = %73, %15
%67 = load i32, i32* %3
%68 = sext i32 %67 to i64
%69 = getelementptr inbounds [4095 x i8], [4095 x i8]* %2, i64 0, i64 %68
%70 = load i8, i8* %69
%71 = zext i8 %70 to i32
%72 = icmp ne i32 %71, 0
br i1 %72, label %73, label %200
73: ; preds = %66
%74 = load i32, i32* %3
%75 = add nsw i32 %74, 1
store i32 %75, i32* %3
%76 = load i32, i32* %3
%77 = sext i32 %76 to i64
%78 = getelementptr inbounds [4095 x i8], [4095 x i8]* %2, i64 0, i64 %77
%79 = load i8, i8* %78
%80 = add i8 %79, 1
store i8 %80, i8* %78
%81 = load i32, i32* %3
%82 = sext i32 %81 to i64
%83 = getelementptr inbounds [4095 x i8], [4095 x i8]* %2, i64 0, i64 %82
%84 = load i8, i8* %83
%85 = add i8 %84, 1
store i8 %85, i8* %83
%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 = add nsw i32 %111, 1
store i32 %112, i32* %3
%113 = load i32, i32* %3
%114 = sext i32 %113 to i64
%115 = getelementptr inbounds [4095 x i8], [4095 x i8]* %2, i64 0, i64 %114
%116 = load i8, i8* %115
%117 = add i8 %116, 1
store i8 %117, i8* %115
%118 = load i32, i32* %3
%119 = sext i32 %118 to i64
%120 = getelementptr inbounds [4095 x i8], [4095 x i8]* %2, i64 0, i64 %119
%121 = load i8, i8* %120
%122 = add i8 %121, 1
store i8 %122, i8* %120
%123 = load i32, i32* %3
%124 = sext i32 %123 to i64
%125 = getelementptr inbounds [4095 x i8], [4095 x i8]* %2, i64 0, i64 %124
%126 = load i8, i8* %125
%127 = add i8 %126, 1
store i8 %127, i8* %125
%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
%133 = load i32, i32* %3
%134 = sext i32 %133 to i64
%135 = getelementptr inbounds [4095 x i8], [4095 x i8]* %2, i64 0, i64 %134
%136 = load i8, i8* %135
%137 = add i8 %136, 1
store i8 %137, i8* %135
%138 = load i32, i32* %3
%139 = sext i32 %138 to i64
%140 = getelementptr inbounds [4095 x i8], [4095 x i8]* %2, i64 0, i64 %139
%141 = load i8, i8* %140
%142 = add i8 %141, 1
store i8 %142, i8* %140
%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
%148 = load i32, i32* %3
%149 = sext i32 %148 to i64
%150 = getelementptr inbounds [4095 x i8], [4095 x i8]* %2, i64 0, i64 %149
%151 = load i8, i8* %150
%152 = add i8 %151, 1
store i8 %152, i8* %150
%153 = load i32, i32* %3
%154 = sext i32 %153 to i64
%155 = getelementptr inbounds [4095 x i8], [4095 x i8]* %2, i64 0, i64 %154
%156 = load i8, i8* %155
%157 = add i8 %156, 1
store i8 %157, i8* %155
%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 = sext i32 %170 to i64
%172 = getelementptr inbounds [4095 x i8], [4095 x i8]* %2, i64 0, i64 %171
%173 = load i8, i8* %172
%174 = add i8 %173, 1
store i8 %174, i8* %172
%175 = load i32, i32* %3
%176 = sext i32 %175 to i64
%177 = getelementptr inbounds [4095 x i8], [4095 x i8]* %2, i64 0, i64 %176
%178 = load i8, i8* %177
%179 = add i8 %178, 1
store i8 %179, i8* %177
%180 = load i32, i32* %3
%181 = add nsw i32 %180, 1
store i32 %181, i32* %3
%182 = load i32, i32* %3
%183 = sext i32 %182 to i64
%184 = getelementptr inbounds [4095 x i8], [4095 x i8]* %2, i64 0, i64 %183
%185 = load i8, i8* %184
%186 = add i8 %185, 1
store i8 %186, i8* %184
%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
%191 = load i32, i32* %3
%192 = add nsw i32 %191, -1
store i32 %192, i32* %3
%193 = load i32, i32* %3
%194 = add nsw i32 %193, -1
store i32 %194, i32* %3
%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 = add i8 %198, -1
store i8 %199, i8* %197
br label %66
200: ; preds = %66
%201 = load i32, i32* %3
%202 = add nsw i32 %201, 1
store i32 %202, i32* %3
%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 = add i8 %206, 1
store i8 %207, i8* %205
%208 = load i32, i32* %3
%209 = sext i32 %208 to i64
%210 = getelementptr inbounds [4095 x i8], [4095 x i8]* %2, i64 0, i64 %209
%211 = load i8, i8* %210
%212 = add i8 %211, 1
store i8 %212, i8* %210
%213 = load i32, i32* %3
%214 = sext i32 %213 to i64
%215 = getelementptr inbounds [4095 x i8], [4095 x i8]* %2, i64 0, i64 %214
%216 = load i8, i8* %215
%217 = call i32 @putchar(i8 zeroext %216)
%218 = load i32, i32* %3
%219 = add nsw i32 %218, 1
store i32 %219, i32* %3
%220 = load i32, i32* %3
%221 = sext i32 %220 to i64
%222 = getelementptr inbounds [4095 x i8], [4095 x i8]* %2, i64 0, i64 %221
%223 = load i8, i8* %222
%224 = add i8 %223, 1
store i8 %224, i8* %222
%225 = load i32, i32* %3
%226 = sext i32 %225 to i64
%227 = getelementptr inbounds [4095 x i8], [4095 x i8]* %2, i64 0, i64 %226
%228 = load i8, i8* %227
%229 = call i32 @putchar(i8 zeroext %228)
%230 = load i32, i32* %3
%231 = sext i32 %230 to i64
%232 = getelementptr inbounds [4095 x i8], [4095 x i8]* %2, i64 0, i64 %231
%233 = load i8, i8* %232
%234 = add i8 %233, 1
store i8 %234, i8* %232
%235 = load i32, i32* %3
%236 = sext i32 %235 to i64
%237 = getelementptr inbounds [4095 x i8], [4095 x i8]* %2, i64 0, i64 %236
%238 = load i8, i8* %237
%239 = add i8 %238, 1
store i8 %239, i8* %237
%240 = load i32, i32* %3
%241 = sext i32 %240 to i64
%242 = getelementptr inbounds [4095 x i8], [4095 x i8]* %2, i64 0, i64 %241
%243 = load i8, i8* %242
%244 = add i8 %243, 1
store i8 %244, i8* %242
%245 = load i32, i32* %3
%246 = sext i32 %245 to i64
%247 = getelementptr inbounds [4095 x i8], [4095 x i8]* %2, i64 0, i64 %246
%248 = load i8, i8* %247
%249 = add i8 %248, 1
store i8 %249, i8* %247
%250 = load i32, i32* %3
%251 = sext i32 %250 to i64
%252 = getelementptr inbounds [4095 x i8], [4095 x i8]* %2, i64 0, i64 %251
%253 = load i8, i8* %252
%254 = add i8 %253, 1
store i8 %254, i8* %252
%255 = load i32, i32* %3
%256 = sext i32 %255 to i64
%257 = getelementptr inbounds [4095 x i8], [4095 x i8]* %2, i64 0, i64 %256
%258 = load i8, i8* %257
%259 = add i8 %258, 1
store i8 %259, i8* %257
%260 = load i32, i32* %3
%261 = sext i32 %260 to i64
%262 = getelementptr inbounds [4095 x i8], [4095 x i8]* %2, i64 0, i64 %261
%263 = load i8, i8* %262
%264 = add i8 %263, 1
store i8 %264, i8* %262
%265 = load i32, i32* %3
%266 = sext i32 %265 to i64
%267 = getelementptr inbounds [4095 x i8], [4095 x i8]* %2, i64 0, i64 %266
%268 = load i8, i8* %267
%269 = call i32 @putchar(i8 zeroext %268)
%270 = load i32, i32* %3
%271 = sext i32 %270 to i64
%272 = getelementptr inbounds [4095 x i8], [4095 x i8]* %2, i64 0, i64 %271
%273 = load i8, i8* %272
%274 = call i32 @putchar(i8 zeroext %273)
%275 = load i32, i32* %3
%276 = sext i32 %275 to i64
%277 = getelementptr inbounds [4095 x i8], [4095 x i8]* %2, i64 0, i64 %276
%278 = load i8, i8* %277
%279 = add i8 %278, 1
store i8 %279, i8* %277
%280 = load i32, i32* %3
%281 = sext i32 %280 to i64
%282 = getelementptr inbounds [4095 x i8], [4095 x i8]* %2, i64 0, i64 %281
%283 = load i8, i8* %282
%284 = add i8 %283, 1
store i8 %284, i8* %282
%285 = load i32, i32* %3
%286 = sext i32 %285 to i64
%287 = getelementptr inbounds [4095 x i8], [4095 x i8]* %2, i64 0, i64 %286
%288 = load i8, i8* %287
%289 = add i8 %288, 1
store i8 %289, i8* %287
%290 = load i32, i32* %3
%291 = sext i32 %290 to i64
%292 = getelementptr inbounds [4095 x i8], [4095 x i8]* %2, i64 0, i64 %291
%293 = load i8, i8* %292
%294 = call i32 @putchar(i8 zeroext %293)
%295 = load i32, i32* %3
%296 = add nsw i32 %295, 1
store i32 %296, i32* %3
%297 = load i32, i32* %3
%298 = sext i32 %297 to i64
%299 = getelementptr inbounds [4095 x i8], [4095 x i8]* %2, i64 0, i64 %298
%300 = load i8, i8* %299
%301 = add i8 %300, 1
store i8 %301, i8* %299
%302 = load i32, i32* %3
%303 = sext i32 %302 to i64
%304 = getelementptr inbounds [4095 x i8], [4095 x i8]* %2, i64 0, i64 %303
%305 = load i8, i8* %304
%306 = add i8 %305, 1
store i8 %306, i8* %304
%307 = load i32, i32* %3
%308 = sext i32 %307 to i64
%309 = getelementptr inbounds [4095 x i8], [4095 x i8]* %2, i64 0, i64 %308
%310 = load i8, i8* %309
%311 = call i32 @putchar(i8 zeroext %310)
%312 = load i32, i32* %3
%313 = add nsw i32 %312, -1
store i32 %313, i32* %3
%314 = load i32, i32* %3
%315 = add nsw i32 %314, -1
store i32 %315, i32* %3
%316 = load i32, i32* %3
%317 = sext i32 %316 to i64
%318 = getelementptr inbounds [4095 x i8], [4095 x i8]* %2, i64 0, i64 %317
%319 = load i8, i8* %318
%320 = add i8 %319, 1
store i8 %320, i8* %318
%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
%336 = load i32, i32* %3
%337 = sext i32 %336 to i64
%338 = getelementptr inbounds [4095 x i8], [4095 x i8]* %2, i64 0, i64 %337
%339 = load i8, i8* %338
%340 = add i8 %339, 1
store i8 %340, i8* %338
%341 = load i32, i32* %3
%342 = sext i32 %341 to i64
%343 = getelementptr inbounds [4095 x i8], [4095 x i8]* %2, i64 0, i64 %342
%344 = load i8, i8* %343
%345 = add i8 %344, 1
store i8 %345, i8* %343
%346 = load i32, i32* %3
%347 = sext i32 %346 to i64
%348 = getelementptr inbounds [4095 x i8], [4095 x i8]* %2, i64 0, i64 %347
%349 = load i8, i8* %348
%350 = add i8 %349, 1
store i8 %350, i8* %348
%351 = load i32, i32* %3
%352 = sext i32 %351 to i64
%353 = getelementptr inbounds [4095 x i8], [4095 x i8]* %2, i64 0, i64 %352
%354 = load i8, i8* %353
%355 = add i8 %354, 1
store i8 %355, i8* %353
%356 = load i32, i32* %3
%357 = sext i32 %356 to i64
%358 = getelementptr inbounds [4095 x i8], [4095 x i8]* %2, i64 0, i64 %357
%359 = load i8, i8* %358
%360 = add i8 %359, 1
store i8 %360, i8* %358
%361 = load i32, i32* %3
%362 = sext i32 %361 to i64
%363 = getelementptr inbounds [4095 x i8], [4095 x i8]* %2, i64 0, i64 %362
%364 = load i8, i8* %363
%365 = add i8 %364, 1
store i8 %365, i8* %363
%366 = load i32, i32* %3
%367 = sext i32 %366 to i64
%368 = getelementptr inbounds [4095 x i8], [4095 x i8]* %2, i64 0, i64 %367
%369 = load i8, i8* %368
%370 = add i8 %369, 1
store i8 %370, i8* %368
%371 = load i32, i32* %3
%372 = sext i32 %371 to i64
%373 = getelementptr inbounds [4095 x i8], [4095 x i8]* %2, i64 0, i64 %372
%374 = load i8, i8* %373
%375 = add i8 %374, 1
store i8 %375, i8* %373
%376 = load i32, i32* %3
%377 = sext i32 %376 to i64
%378 = getelementptr inbounds [4095 x i8], [4095 x i8]* %2, i64 0, i64 %377
%379 = load i8, i8* %378
%380 = add i8 %379, 1
store i8 %380, i8* %378
%381 = load i32, i32* %3
%382 = sext i32 %381 to i64
%383 = getelementptr inbounds [4095 x i8], [4095 x i8]* %2, i64 0, i64 %382
%384 = load i8, i8* %383
%385 = add i8 %384, 1
store i8 %385, i8* %383
%386 = load i32, i32* %3
%387 = sext i32 %386 to i64
%388 = getelementptr inbounds [4095 x i8], [4095 x i8]* %2, i64 0, i64 %387
%389 = load i8, i8* %388
%390 = add i8 %389, 1
store i8 %390, i8* %388
%391 = load i32, i32* %3
%392 = sext i32 %391 to i64
%393 = getelementptr inbounds [4095 x i8], [4095 x i8]* %2, i64 0, i64 %392
%394 = load i8, i8* %393
%395 = call i32 @putchar(i8 zeroext %394)
%396 = load i32, i32* %3
%397 = add nsw i32 %396, 1
store i32 %397, i32* %3
%398 = load i32, i32* %3
%399 = sext i32 %398 to i64
%400 = getelementptr inbounds [4095 x i8], [4095 x i8]* %2, i64 0, i64 %399
%401 = load i8, i8* %400
%402 = call i32 @putchar(i8 zeroext %401)
%403 = load i32, i32* %3
%404 = sext i32 %403 to i64
%405 = getelementptr inbounds [4095 x i8], [4095 x i8]* %2, i64 0, i64 %404
%406 = load i8, i8* %405
%407 = add i8 %406, 1
store i8 %407, i8* %405
%408 = load i32, i32* %3
%409 = sext i32 %408 to i64
%410 = getelementptr inbounds [4095 x i8], [4095 x i8]* %2, i64 0, i64 %409
%411 = load i8, i8* %410
%412 = add i8 %411, 1
store i8 %412, i8* %410
%413 = load i32, i32* %3
%414 = sext i32 %413 to i64
%415 = getelementptr inbounds [4095 x i8], [4095 x i8]* %2, i64 0, i64 %414
%416 = load i8, i8* %415
%417 = add i8 %416, 1
store i8 %417, i8* %415
%418 = load i32, i32* %3
%419 = sext i32 %418 to i64
%420 = getelementptr inbounds [4095 x i8], [4095 x i8]* %2, i64 0, i64 %419
%421 = load i8, i8* %420
%422 = call i32 @putchar(i8 zeroext %421)
%423 = load i32, i32* %3
%424 = sext i32 %423 to i64
%425 = getelementptr inbounds [4095 x i8], [4095 x i8]* %2, i64 0, i64 %424
%426 = load i8, i8* %425
%427 = add i8 %426, -1
store i8 %427, i8* %425
%428 = load i32, i32* %3
%429 = sext i32 %428 to i64
%430 = getelementptr inbounds [4095 x i8], [4095 x i8]* %2, i64 0, i64 %429
%431 = load i8, i8* %430
%432 = add i8 %431, -1
store i8 %432, i8* %430
%433 = load i32, i32* %3
%434 = sext i32 %433 to i64
%435 = getelementptr inbounds [4095 x i8], [4095 x i8]* %2, i64 0, i64 %434
%436 = load i8, i8* %435
%437 = add i8 %436, -1
store i8 %437, i8* %435
%438 = load i32, i32* %3
%439 = sext i32 %438 to i64
%440 = getelementptr inbounds [4095 x i8], [4095 x i8]* %2, i64 0, i64 %439
%441 = load i8, i8* %440
%442 = add i8 %441, -1
store i8 %442, i8* %440
%443 = load i32, i32* %3
%444 = sext i32 %443 to i64
%445 = getelementptr inbounds [4095 x i8], [4095 x i8]* %2, i64 0, i64 %444
%446 = load i8, i8* %445
%447 = add i8 %446, -1
store i8 %447, i8* %445
%448 = load i32, i32* %3
%449 = sext i32 %448 to i64
%450 = getelementptr inbounds [4095 x i8], [4095 x i8]* %2, i64 0, i64 %449
%451 = load i8, i8* %450
%452 = add i8 %451, -1
store i8 %452, i8* %450
%453 = load i32, i32* %3
%454 = sext i32 %453 to i64
%455 = getelementptr inbounds [4095 x i8], [4095 x i8]* %2, i64 0, i64 %454
%456 = load i8, i8* %455
%457 = call i32 @putchar(i8 zeroext %456)
%458 = load i32, i32* %3
%459 = sext i32 %458 to i64
%460 = getelementptr inbounds [4095 x i8], [4095 x i8]* %2, i64 0, i64 %459
%461 = load i8, i8* %460
%462 = add i8 %461, -1
store i8 %462, i8* %460
%463 = load i32, i32* %3
%464 = sext i32 %463 to i64
%465 = getelementptr inbounds [4095 x i8], [4095 x i8]* %2, i64 0, i64 %464
%466 = load i8, i8* %465
%467 = add i8 %466, -1
store i8 %467, i8* %465
%468 = load i32, i32* %3
%469 = sext i32 %468 to i64
%470 = getelementptr inbounds [4095 x i8], [4095 x i8]* %2, i64 0, i64 %469
%471 = load i8, i8* %470
%472 = add i8 %471, -1
store i8 %472, i8* %470
%473 = load i32, i32* %3
%474 = sext i32 %473 to i64
%475 = getelementptr inbounds [4095 x i8], [4095 x i8]* %2, i64 0, i64 %474
%476 = load i8, i8* %475
%477 = add i8 %476, -1
store i8 %477, i8* %475
%478 = load i32, i32* %3
%479 = sext i32 %478 to i64
%480 = getelementptr inbounds [4095 x i8], [4095 x i8]* %2, i64 0, i64 %479
%481 = load i8, i8* %480
%482 = add i8 %481, -1
store i8 %482, i8* %480
%483 = load i32, i32* %3
%484 = sext i32 %483 to i64
%485 = getelementptr inbounds [4095 x i8], [4095 x i8]* %2, i64 0, i64 %484
%486 = load i8, i8* %485
%487 = add i8 %486, -1
store i8 %487, i8* %485
%488 = load i32, i32* %3
%489 = sext i32 %488 to i64
%490 = getelementptr inbounds [4095 x i8], [4095 x i8]* %2, i64 0, i64 %489
%491 = load i8, i8* %490
%492 = add i8 %491, -1
store i8 %492, i8* %490
%493 = load i32, i32* %3
%494 = sext i32 %493 to i64
%495 = getelementptr inbounds [4095 x i8], [4095 x i8]* %2, i64 0, i64 %494
%496 = load i8, i8* %495
%497 = add i8 %496, -1
store i8 %497, i8* %495
%498 = load i32, i32* %3
%499 = sext i32 %498 to i64
%500 = getelementptr inbounds [4095 x i8], [4095 x i8]* %2, i64 0, i64 %499
%501 = load i8, i8* %500
%502 = call i32 @putchar(i8 zeroext %501)
%503 = load i32, i32* %3
%504 = add nsw i32 %503, 1
store i32 %504, i32* %3
%505 = load i32, i32* %3
%506 = sext i32 %505 to i64
%507 = getelementptr inbounds [4095 x i8], [4095 x i8]* %2, i64 0, i64 %506
%508 = load i8, i8* %507
%509 = add i8 %508, 1
store i8 %509, i8* %507
%510 = load i32, i32* %3
%511 = sext i32 %510 to i64
%512 = getelementptr inbounds [4095 x i8], [4095 x i8]* %2, i64 0, i64 %511
%513 = load i8, i8* %512
%514 = call i32 @putchar(i8 zeroext %513)
%515 = load i32, i32* %3
%516 = add nsw i32 %515, 1
store i32 %516, i32* %3
%517 = load i32, i32* %3
%518 = sext i32 %517 to i64
%519 = getelementptr inbounds [4095 x i8], [4095 x i8]* %2, i64 0, i64 %518
%520 = load i8, i8* %519
%521 = call i32 @putchar(i8 zeroext %520)
%522 = getelementptr inbounds [4095 x i8], [4095 x i8]* %2, i64 0, i64 0
%523 = call i32 @free(i8* %522)
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
store i8 0, i8* %2
%3 = tail call i32 @putchar(i8 zeroext undef)
%4 = tail call i32 @putchar(i8 zeroext undef)
%5 = tail call i32 @putchar(i8 zeroext undef)
%6 = tail call i32 @putchar(i8 zeroext undef)
%7 = tail call i32 @putchar(i8 zeroext undef)
%8 = tail call i32 @putchar(i8 zeroext undef)
%9 = tail call i32 @putchar(i8 zeroext undef)
%10 = tail call i32 @putchar(i8 zeroext undef)
%11 = tail call i32 @putchar(i8 zeroext undef)
%12 = tail call i32 @putchar(i8 zeroext undef)
%13 = tail call i32 @putchar(i8 zeroext undef)
%14 = tail call i32 @putchar(i8 zeroext undef)
%15 = tail call i32 @putchar(i8 zeroext undef)
%16 = call i32 @free(i8* %2)
ret i32 0
}