#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*/ printf(char *);
int main() {
  printf(" 00 $00 nul ^@   01 $01 soh ^A   02 $02 stx ^B   03 $03 etx ^C   04 "
         "$04 eot ^D\n");
  printf(" 05 $05 enq ^E   06 $06 ack ^F   07 $07 bel ^G   08 $08 bs  ^H   09 "
         "$09 tab ^I\n");
  printf(" 10 $0a nl  ^J   11 $0b vt  ^K   12 $0c np  ^L   13 $0d cr  ^M   14 "
         "$0e so  ^N\n");
  printf(" 15 $0f si  ^O   16 $10 dle ^P   17 $11 dc1 ^Q   18 $12 dc2 ^R   19 "
         "$13 dc3 ^S\n");
  printf(" 20 $14 dc4 ^T   21 $15 nak ^U   22 $16 syn ^V   23 $17 etb ^W   24 "
         "$18 can ^X\n");
  printf(" 25 $19 em  ^Y   26 $1a sub ^Z   27 $1b esc ^[   28 $1c fs  ^\\   29 "
         "$1d gs  ^]\n");
  printf(" 30 $1e rs  ^^   31 $1f us  ^_   32 $20 sp      127 $7f del\n");
  printf("\n");
  printf(" 32 $20       33 $21  !    34 $22  \"    35 $23  #    36 $24  $    "
         "37 $25  %%\n");
  printf(" 38 $26  &    39 $27  '    40 $28  (    41 $29  )    42 $2a  *    43 "
         "$2b  +\n");
  printf(" 44 $2c  ,    45 $2d  -    46 $2e  .    47 $2f  /    48 $30  0    49 "
         "$31  1\n");
  printf(" 50 $32  2    51 $33  3    52 $34  4    53 $35  5    54 $36  6    55 "
         "$37  7\n");
  printf(" 56 $38  8    57 $39  9    58 $3a  :    59 $3b  ;    60 $3c  <    61 "
         "$3d  =\n");
  printf(" 62 $3e  >    63 $3f  ?    64 $40  @    65 $41  A    66 $42  B    67 "
         "$43  C\n");
  printf(" 68 $44  D    69 $45  E    70 $46  F    71 $47  G    72 $48  H    73 "
         "$49  I\n");
  printf(" 74 $4a  J    75 $4b  K    76 $4c  L    77 $4d  M    78 $4e  N    79 "
         "$4f  O\n");
  printf(" 80 $50  P    81 $51  Q    82 $52  R    83 $53  S    84 $54  T    85 "
         "$55  U\n");
  printf(" 86 $56  V    87 $57  W    88 $58  X    89 $59  Y    90 $5a  Z    91 "
         "$5b  [\n");
  printf(" 92 $5c  \\    93 $5d  ]    94 $5e  ^    95 $5f  _    96 $60  `    "
         "97 $61  a\n");
  printf(" 98 $62  b    99 $63  c   100 $64  d   101 $65  e   102 $66  f   103 "
         "$67  g\n");
  printf("104 $68  h   105 $69  i   106 $6a  j   107 $6b  k   108 $6c  l   109 "
         "$6d  m\n");
  printf("110 $6e  n   111 $6f  o   112 $70  p   113 $71  q   114 $72  r   115 "
         "$73  s\n");
  printf("116 $74  t   117 $75  u   118 $76  v   119 $77  w   120 $78  x   121 "
         "$79  y\n");
  printf("122 $7a  z   123 $7b  {   124 $7c  |   125 $7d  }   126 $7e  ~   127 "
         "$7f  del\n");
  return 0;
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0x10,%rsp
movl   $0x0,-0x4(%rbp)
lea    0xeda(%rip),%rdi
call   1030 <printf@plt>
lea    0xf1e(%rip),%rdi
call   1030 <printf@plt>
lea    0xf62(%rip),%rdi
call   1030 <printf@plt>
lea    0xfa6(%rip),%rdi
call   1030 <printf@plt>
lea    0xfea(%rip),%rdi
call   1030 <printf@plt>
lea    0x102e(%rip),%rdi
call   1030 <printf@plt>
lea    0x1072(%rip),%rdi
call   1030 <printf@plt>
lea    0x10ef(%rip),%rdi
call   1030 <printf@plt>
lea    0x1097(%rip),%rdi
call   1030 <printf@plt>
lea    0x10d9(%rip),%rdi
call   1030 <printf@plt>
lea    0x111a(%rip),%rdi
call   1030 <printf@plt>
lea    0x115b(%rip),%rdi
call   1030 <printf@plt>
lea    0x119c(%rip),%rdi
call   1030 <printf@plt>
lea    0x11dd(%rip),%rdi
call   1030 <printf@plt>
lea    0x121e(%rip),%rdi
call   1030 <printf@plt>
lea    0x125f(%rip),%rdi
call   1030 <printf@plt>
lea    0x12a0(%rip),%rdi
call   1030 <printf@plt>
lea    0x12e1(%rip),%rdi
call   1030 <printf@plt>
lea    0x1322(%rip),%rdi
call   1030 <printf@plt>
lea    0x1363(%rip),%rdi
call   1030 <printf@plt>
lea    0x13a4(%rip),%rdi
call   1030 <printf@plt>
lea    0x13e5(%rip),%rdi
call   1030 <printf@plt>
lea    0x1426(%rip),%rdi
call   1030 <printf@plt>
lea    0x1467(%rip),%rdi
call   1030 <printf@plt>
xor    %eax,%eax
add    $0x10,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
push   %rax
lea    0xf16(%rip),%rdi
call   1040 <puts@plt>
lea    0xf59(%rip),%rdi
call   1040 <puts@plt>
lea    0xf9c(%rip),%rdi
call   1040 <puts@plt>
lea    0xfdf(%rip),%rdi
call   1040 <puts@plt>
lea    0x1022(%rip),%rdi
call   1040 <puts@plt>
lea    0x1065(%rip),%rdi
call   1040 <puts@plt>
lea    0x10a8(%rip),%rdi
call   1040 <puts@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
lea    0xe6a(%rip),%rdi
call   1050 <printf@plt>
lea    0x10c2(%rip),%rdi
call   1040 <puts@plt>
lea    0x1102(%rip),%rdi
call   1040 <puts@plt>
lea    0x1142(%rip),%rdi
call   1040 <puts@plt>
lea    0x1182(%rip),%rdi
call   1040 <puts@plt>
lea    0x11c2(%rip),%rdi
call   1040 <puts@plt>
lea    0x1202(%rip),%rdi
call   1040 <puts@plt>
lea    0x1242(%rip),%rdi
call   1040 <puts@plt>
lea    0x1282(%rip),%rdi
call   1040 <puts@plt>
lea    0x12c2(%rip),%rdi
call   1040 <puts@plt>
lea    0x1302(%rip),%rdi
call   1040 <puts@plt>
lea    0x1342(%rip),%rdi
call   1040 <puts@plt>
lea    0x1382(%rip),%rdi
call   1040 <puts@plt>
lea    0x13c2(%rip),%rdi
call   1040 <puts@plt>
lea    0x1402(%rip),%rdi
call   1040 <puts@plt>
lea    0x1442(%rip),%rdi
call   1040 <puts@plt>
xor    %eax,%eax
pop    %rcx
ret

LLVM IR (-O0):
@.str = [80 x i8] c" 00 $00 nul ^@ 01 $01 soh ^A 02 $02 stx ^B 03 $03 etx ^C 04 $04 eot ^D\0A\00"
@.str.1 = [80 x i8] c" 05 $05 enq ^E 06 $06 ack ^F 07 $07 bel ^G 08 $08 bs ^H 09 $09 tab ^I\0A\00"
@.str.2 = [80 x i8] c" 10 $0a nl ^J 11 $0b vt ^K 12 $0c np ^L 13 $0d cr ^M 14 $0e so ^N\0A\00"
@.str.3 = [80 x i8] c" 15 $0f si ^O 16 $10 dle ^P 17 $11 dc1 ^Q 18 $12 dc2 ^R 19 $13 dc3 ^S\0A\00"
@.str.4 = [80 x i8] c" 20 $14 dc4 ^T 21 $15 nak ^U 22 $16 syn ^V 23 $17 etb ^W 24 $18 can ^X\0A\00"
@.str.5 = [80 x i8] c" 25 $19 em ^Y 26 $1a sub ^Z 27 $1b esc ^[ 28 $1c fs ^\\ 29 $1d gs ^]\0A\00"
@.str.6 = [61 x i8] c" 30 $1e rs ^^ 31 $1f us ^_ 32 $20 sp 127 $7f del\0A\00"
@.str.7 = [2 x i8] c"\0A\00"
@.str.8 = [78 x i8] c" 32 $20 33 $21 ! 34 $22 \22 35 $23 # 36 $24 $ 37 $25 %%\0A\00"
@.str.9 = [77 x i8] c" 38 $26 & 39 $27 ' 40 $28 ( 41 $29 ) 42 $2a * 43 $2b +\0A\00"
@.str.10 = [77 x i8] c" 44 $2c , 45 $2d - 46 $2e . 47 $2f / 48 $30 0 49 $31 1\0A\00"
@.str.11 = [77 x i8] c" 50 $32 2 51 $33 3 52 $34 4 53 $35 5 54 $36 6 55 $37 7\0A\00"
@.str.12 = [77 x i8] c" 56 $38 8 57 $39 9 58 $3a : 59 $3b ; 60 $3c < 61 $3d =\0A\00"
@.str.13 = [77 x i8] c" 62 $3e > 63 $3f ? 64 $40 @ 65 $41 A 66 $42 B 67 $43 C\0A\00"
@.str.14 = [77 x i8] c" 68 $44 D 69 $45 E 70 $46 F 71 $47 G 72 $48 H 73 $49 I\0A\00"
@.str.15 = [77 x i8] c" 74 $4a J 75 $4b K 76 $4c L 77 $4d M 78 $4e N 79 $4f O\0A\00"
@.str.16 = [77 x i8] c" 80 $50 P 81 $51 Q 82 $52 R 83 $53 S 84 $54 T 85 $55 U\0A\00"
@.str.17 = [77 x i8] c" 86 $56 V 87 $57 W 88 $58 X 89 $59 Y 90 $5a Z 91 $5b [\0A\00"
@.str.18 = [77 x i8] c" 92 $5c \\ 93 $5d ] 94 $5e ^ 95 $5f _ 96 $60 ` 97 $61 a\0A\00"
@.str.19 = [77 x i8] c" 98 $62 b 99 $63 c 100 $64 d 101 $65 e 102 $66 f 103 $67 g\0A\00"
@.str.20 = [77 x i8] c"104 $68 h 105 $69 i 106 $6a j 107 $6b k 108 $6c l 109 $6d m\0A\00"
@.str.21 = [77 x i8] c"110 $6e n 111 $6f o 112 $70 p 113 $71 q 114 $72 r 115 $73 s\0A\00"
@.str.22 = [77 x i8] c"116 $74 t 117 $75 u 118 $76 v 119 $77 w 120 $78 x 121 $79 y\0A\00"
@.str.23 = [79 x i8] c"122 $7a z 123 $7b { 124 $7c | 125 $7d } 126 $7e ~ 127 $7f del\0A\00"
define i32 @main() {
%1 = alloca i32
store i32 0, i32* %1
%2 = call i32 @printf(i8* getelementptr inbounds ([80 x i8], [80 x i8]* @.str, i64 0, i64 0))
%3 = call i32 @printf(i8* getelementptr inbounds ([80 x i8], [80 x i8]* @.str.1, i64 0, i64 0))
%4 = call i32 @printf(i8* getelementptr inbounds ([80 x i8], [80 x i8]* @.str.2, i64 0, i64 0))
%5 = call i32 @printf(i8* getelementptr inbounds ([80 x i8], [80 x i8]* @.str.3, i64 0, i64 0))
%6 = call i32 @printf(i8* getelementptr inbounds ([80 x i8], [80 x i8]* @.str.4, i64 0, i64 0))
%7 = call i32 @printf(i8* getelementptr inbounds ([80 x i8], [80 x i8]* @.str.5, i64 0, i64 0))
%8 = call i32 @printf(i8* getelementptr inbounds ([61 x i8], [61 x i8]* @.str.6, i64 0, i64 0))
%9 = call i32 @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.7, i64 0, i64 0))
%10 = call i32 @printf(i8* getelementptr inbounds ([78 x i8], [78 x i8]* @.str.8, i64 0, i64 0))
%11 = call i32 @printf(i8* getelementptr inbounds ([77 x i8], [77 x i8]* @.str.9, i64 0, i64 0))
%12 = call i32 @printf(i8* getelementptr inbounds ([77 x i8], [77 x i8]* @.str.10, i64 0, i64 0))
%13 = call i32 @printf(i8* getelementptr inbounds ([77 x i8], [77 x i8]* @.str.11, i64 0, i64 0))
%14 = call i32 @printf(i8* getelementptr inbounds ([77 x i8], [77 x i8]* @.str.12, i64 0, i64 0))
%15 = call i32 @printf(i8* getelementptr inbounds ([77 x i8], [77 x i8]* @.str.13, i64 0, i64 0))
%16 = call i32 @printf(i8* getelementptr inbounds ([77 x i8], [77 x i8]* @.str.14, i64 0, i64 0))
%17 = call i32 @printf(i8* getelementptr inbounds ([77 x i8], [77 x i8]* @.str.15, i64 0, i64 0))
%18 = call i32 @printf(i8* getelementptr inbounds ([77 x i8], [77 x i8]* @.str.16, i64 0, i64 0))
%19 = call i32 @printf(i8* getelementptr inbounds ([77 x i8], [77 x i8]* @.str.17, i64 0, i64 0))
%20 = call i32 @printf(i8* getelementptr inbounds ([77 x i8], [77 x i8]* @.str.18, i64 0, i64 0))
%21 = call i32 @printf(i8* getelementptr inbounds ([77 x i8], [77 x i8]* @.str.19, i64 0, i64 0))
%22 = call i32 @printf(i8* getelementptr inbounds ([77 x i8], [77 x i8]* @.str.20, i64 0, i64 0))
%23 = call i32 @printf(i8* getelementptr inbounds ([77 x i8], [77 x i8]* @.str.21, i64 0, i64 0))
%24 = call i32 @printf(i8* getelementptr inbounds ([77 x i8], [77 x i8]* @.str.22, i64 0, i64 0))
%25 = call i32 @printf(i8* getelementptr inbounds ([79 x i8], [79 x i8]* @.str.23, i64 0, i64 0))
ret i32 0
}

LLVM IR (-O2):
@.str.8 = [78 x i8] c" 32 $20 33 $21 ! 34 $22 \22 35 $23 # 36 $24 $ 37 $25 %%\0A\00"
@str = [79 x i8] c" 00 $00 nul ^@ 01 $01 soh ^A 02 $02 stx ^B 03 $03 etx ^C 04 $04 eot ^D\00"
@str.24 = [79 x i8] c" 05 $05 enq ^E 06 $06 ack ^F 07 $07 bel ^G 08 $08 bs ^H 09 $09 tab ^I\00"
@str.25 = [79 x i8] c" 10 $0a nl ^J 11 $0b vt ^K 12 $0c np ^L 13 $0d cr ^M 14 $0e so ^N\00"
@str.26 = [79 x i8] c" 15 $0f si ^O 16 $10 dle ^P 17 $11 dc1 ^Q 18 $12 dc2 ^R 19 $13 dc3 ^S\00"
@str.27 = [79 x i8] c" 20 $14 dc4 ^T 21 $15 nak ^U 22 $16 syn ^V 23 $17 etb ^W 24 $18 can ^X\00"
@str.28 = [79 x i8] c" 25 $19 em ^Y 26 $1a sub ^Z 27 $1b esc ^[ 28 $1c fs ^\\ 29 $1d gs ^]\00"
@str.29 = [60 x i8] c" 30 $1e rs ^^ 31 $1f us ^_ 32 $20 sp 127 $7f del\00"
@str.30 = [76 x i8] c" 38 $26 & 39 $27 ' 40 $28 ( 41 $29 ) 42 $2a * 43 $2b +\00"
@str.31 = [76 x i8] c" 44 $2c , 45 $2d - 46 $2e . 47 $2f / 48 $30 0 49 $31 1\00"
@str.32 = [76 x i8] c" 50 $32 2 51 $33 3 52 $34 4 53 $35 5 54 $36 6 55 $37 7\00"
@str.33 = [76 x i8] c" 56 $38 8 57 $39 9 58 $3a : 59 $3b ; 60 $3c < 61 $3d =\00"
@str.34 = [76 x i8] c" 62 $3e > 63 $3f ? 64 $40 @ 65 $41 A 66 $42 B 67 $43 C\00"
@str.35 = [76 x i8] c" 68 $44 D 69 $45 E 70 $46 F 71 $47 G 72 $48 H 73 $49 I\00"
@str.36 = [76 x i8] c" 74 $4a J 75 $4b K 76 $4c L 77 $4d M 78 $4e N 79 $4f O\00"
@str.37 = [76 x i8] c" 80 $50 P 81 $51 Q 82 $52 R 83 $53 S 84 $54 T 85 $55 U\00"
@str.38 = [76 x i8] c" 86 $56 V 87 $57 W 88 $58 X 89 $59 Y 90 $5a Z 91 $5b [\00"
@str.39 = [76 x i8] c" 92 $5c \\ 93 $5d ] 94 $5e ^ 95 $5f _ 96 $60 ` 97 $61 a\00"
@str.40 = [76 x i8] c" 98 $62 b 99 $63 c 100 $64 d 101 $65 e 102 $66 f 103 $67 g\00"
@str.41 = [76 x i8] c"104 $68 h 105 $69 i 106 $6a j 107 $6b k 108 $6c l 109 $6d m\00"
@str.42 = [76 x i8] c"110 $6e n 111 $6f o 112 $70 p 113 $71 q 114 $72 r 115 $73 s\00"
@str.43 = [76 x i8] c"116 $74 t 117 $75 u 118 $76 v 119 $77 w 120 $78 x 121 $79 y\00"
@str.44 = [78 x i8] c"122 $7a z 123 $7b { 124 $7c | 125 $7d } 126 $7e ~ 127 $7f del\00"
define i32 @main() {
%1 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([79 x i8], [79 x i8]* @str, i64 0, i64 0))
%2 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([79 x i8], [79 x i8]* @str.24, i64 0, i64 0))
%3 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([79 x i8], [79 x i8]* @str.25, i64 0, i64 0))
%4 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([79 x i8], [79 x i8]* @str.26, i64 0, i64 0))
%5 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([79 x i8], [79 x i8]* @str.27, i64 0, i64 0))
%6 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([79 x i8], [79 x i8]* @str.28, i64 0, i64 0))
%7 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([60 x i8], [60 x i8]* @str.29, i64 0, i64 0))
%8 = tail call i32 @putchar(i32 10)
%9 = tail call i32 @printf(i8* dereferenceable(1) getelementptr inbounds ([78 x i8], [78 x i8]* @.str.8, i64 0, i64 0))
%10 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([76 x i8], [76 x i8]* @str.30, i64 0, i64 0))
%11 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([76 x i8], [76 x i8]* @str.31, i64 0, i64 0))
%12 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([76 x i8], [76 x i8]* @str.32, i64 0, i64 0))
%13 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([76 x i8], [76 x i8]* @str.33, i64 0, i64 0))
%14 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([76 x i8], [76 x i8]* @str.34, i64 0, i64 0))
%15 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([76 x i8], [76 x i8]* @str.35, i64 0, i64 0))
%16 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([76 x i8], [76 x i8]* @str.36, i64 0, i64 0))
%17 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([76 x i8], [76 x i8]* @str.37, i64 0, i64 0))
%18 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([76 x i8], [76 x i8]* @str.38, i64 0, i64 0))
%19 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([76 x i8], [76 x i8]* @str.39, i64 0, i64 0))
%20 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([76 x i8], [76 x i8]* @str.40, i64 0, i64 0))
%21 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([76 x i8], [76 x i8]* @str.41, i64 0, i64 0))
%22 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([76 x i8], [76 x i8]* @str.42, i64 0, i64 0))
%23 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([76 x i8], [76 x i8]* @str.43, i64 0, i64 0))
%24 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([78 x i8], [78 x i8]* @str.44, i64 0, i64 0))
ret i32 0
}