#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 *);
void print_message() {
  printf("  minimal script service\n");
  printf("  this is not well-made script, so its function is limited\n");
  printf("  declaration : \n");
  printf("\n");
  printf("    INTCONST   : 64bit signed integer\n");
  printf("    STRINGCONST: any printable characters\n");
  printf("    SYMCONST   : alphanumeric characters(max 32 characters)\n");
  printf("    INT : (add INT INT)\n");
  printf("          (sub INT INT)\n");
  printf("          (mul INT INT)\n");
  printf("          (and INT INT)\n");
  printf("          (or INT INT)\n");
  printf("          (int INTCONST)\n");
  printf("    STR : (concat STR STR)\n");
  printf("          (subst STR INT INT)\n");
  printf("          (string \"STRINGCONST\")\n");
  printf("    SYM : (sym SYMCONST)\n");
  printf("    LIST: (con ANY ANY)\n");
  printf("    FUNC: (fun SYM ANY)\n");
  printf("    BOOL: (lt INT INT)\n");
  printf("          (gt INT INT)\n");
  printf("          (eq INT INT)\n");
  printf("          (eq STR STR)\n");
  printf("          (eq BOOL BOOL)\n");
  printf("          (or BOOL BOOL)\n");
  printf("          (and BOOL BOOL)\n");
  printf("          (not BOOL)\n");
  printf("     ANY: (car LIST)\n");
  printf("          (cdr LIST)\n");
  printf("          (ite BOOL ANY ANY)\n");
  printf("          (let SYM ANY ANY)\n");
  printf("          (FUNC ANY)\n");
  printf("  example : \n");
  printf("    (add (int 1) (int 2))\n");
  printf("     - it computes 1 + 2.\n");
  printf("    (concat (string \"hello \") (string \"world!\"))\n");
  printf("     - it concatenate two strings.\n");
  printf("    (let (sym odd) (fun (sym x) (sub (mul (sym x) (int 2)) (int 1))) "
         " ((sym odd) (int 6)))\n");
  printf("     - it computes 6th odd number.\n");
  printf("    (let (sym fib) (fun (sym x) (cdr (let (sym fibr) (fun (sym c) "
         "(ite (eq (cdr (sym c)) (int 0)) (con (car (sym c)) (int 0)) (ite (eq "
         "(cdr (sym c)) (int 1)) (con (car (sym c)) (int 1)) (con (car (sym "
         "c)) (add (cdr ((car (sym c)) (con (car (sym c)) (sub (cdr (sym c)) "
         "(int 1))))) (cdr ((car (sym c)) (con (car (sym c)) (sub (cdr (sym "
         "c)) (int 2)))))))))) ((sym fibr) (con (sym fibr) (sym x)))))) ((sym "
         "fib) (int 13)))\n");
  printf("     - it computes 13th fibonacci number.\n");
}


x86 assembly (clang, -O0):
<print_message>:
push   %rbp
mov    %rsp,%rbp
lea    0xee5(%rip),%rdi
call   1030 <printf@plt>
lea    0xef3(%rip),%rdi
call   1030 <printf@plt>
lea    0xf23(%rip),%rdi
call   1030 <printf@plt>
lea    0x1245(%rip),%rdi
call   1030 <printf@plt>
lea    0xf1d(%rip),%rdi
call   1030 <printf@plt>
lea    0xf38(%rip),%rdi
call   1030 <printf@plt>
lea    0xf57(%rip),%rdi
call   1030 <printf@plt>
lea    0xf88(%rip),%rdi
call   1030 <printf@plt>
lea    0xf95(%rip),%rdi
call   1030 <printf@plt>
lea    0xfa2(%rip),%rdi
call   1030 <printf@plt>
lea    0xfaf(%rip),%rdi
call   1030 <printf@plt>
lea    0xfbc(%rip),%rdi
call   1030 <printf@plt>
lea    0xfc8(%rip),%rdi
call   1030 <printf@plt>
lea    0xfd6(%rip),%rdi
call   1030 <printf@plt>
lea    0xfe6(%rip),%rdi
call   1030 <printf@plt>
lea    0xff9(%rip),%rdi
call   1030 <printf@plt>
lea    0x100f(%rip),%rdi
call   1030 <printf@plt>
lea    0x101d(%rip),%rdi
call   1030 <printf@plt>
lea    0x102a(%rip),%rdi
call   1030 <printf@plt>
lea    0x1037(%rip),%rdi
call   1030 <printf@plt>
lea    0x1043(%rip),%rdi
call   1030 <printf@plt>
lea    0x104f(%rip),%rdi
call   1030 <printf@plt>
lea    0x105b(%rip),%rdi
call   1030 <printf@plt>
lea    0x1067(%rip),%rdi
call   1030 <printf@plt>
lea    0x1075(%rip),%rdi
call   1030 <printf@plt>
lea    0x1083(%rip),%rdi
call   1030 <printf@plt>
lea    0x1092(%rip),%rdi
call   1030 <printf@plt>
lea    0x109c(%rip),%rdi
call   1030 <printf@plt>
lea    0x10a6(%rip),%rdi
call   1030 <printf@plt>
lea    0x10b0(%rip),%rdi
call   1030 <printf@plt>
lea    0x10c2(%rip),%rdi
call   1030 <printf@plt>
lea    0x10d3(%rip),%rdi
call   1030 <printf@plt>
lea    0x10dd(%rip),%rdi
call   1030 <printf@plt>
lea    0x10df(%rip),%rdi
call   1030 <printf@plt>
lea    0x10ee(%rip),%rdi
call   1030 <printf@plt>
lea    0x10fd(%rip),%rdi
call   1030 <printf@plt>
lea    0x1123(%rip),%rdi
call   1030 <printf@plt>
lea    0x113b(%rip),%rdi
call   1030 <printf@plt>
lea    0x118b(%rip),%rdi
call   1030 <printf@plt>
lea    0x11a3(%rip),%rdi
call   1030 <printf@plt>
lea    0x133a(%rip),%rdi
call   1030 <printf@plt>
pop    %rbp
ret

x86 assembly (clang, -O2):
<print_message>:
push   %rax
lea    0xed8(%rip),%rdi
call   1040 <puts@plt>
lea    0xee5(%rip),%rdi
call   1040 <puts@plt>
lea    0xf14(%rip),%rdi
call   1040 <puts@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
lea    0xf0f(%rip),%rdi
call   1040 <puts@plt>
lea    0xf29(%rip),%rdi
call   1040 <puts@plt>
lea    0xf47(%rip),%rdi
call   1040 <puts@plt>
lea    0xf77(%rip),%rdi
call   1040 <puts@plt>
lea    0xf83(%rip),%rdi
call   1040 <puts@plt>
lea    0xf8f(%rip),%rdi
call   1040 <puts@plt>
lea    0xf9b(%rip),%rdi
call   1040 <puts@plt>
lea    0xfa7(%rip),%rdi
call   1040 <puts@plt>
lea    0xfb2(%rip),%rdi
call   1040 <puts@plt>
lea    0xfbf(%rip),%rdi
call   1040 <puts@plt>
lea    0xfce(%rip),%rdi
call   1040 <puts@plt>
lea    0xfe0(%rip),%rdi
call   1040 <puts@plt>
lea    0xff5(%rip),%rdi
call   1040 <puts@plt>
lea    0x1002(%rip),%rdi
call   1040 <puts@plt>
lea    0x100e(%rip),%rdi
call   1040 <puts@plt>
lea    0x101a(%rip),%rdi
call   1040 <puts@plt>
lea    0x1025(%rip),%rdi
call   1040 <puts@plt>
lea    0x1030(%rip),%rdi
call   1040 <puts@plt>
lea    0x103b(%rip),%rdi
call   1040 <puts@plt>
lea    0x1046(%rip),%rdi
call   1040 <puts@plt>
lea    0x1053(%rip),%rdi
call   1040 <puts@plt>
lea    0x1060(%rip),%rdi
call   1040 <puts@plt>
lea    0x106e(%rip),%rdi
call   1040 <puts@plt>
lea    0x1077(%rip),%rdi
call   1040 <puts@plt>
lea    0x1080(%rip),%rdi
call   1040 <puts@plt>
lea    0x1089(%rip),%rdi
call   1040 <puts@plt>
lea    0x109a(%rip),%rdi
call   1040 <puts@plt>
lea    0x10aa(%rip),%rdi
call   1040 <puts@plt>
lea    0x10b3(%rip),%rdi
call   1040 <puts@plt>
lea    0x10b4(%rip),%rdi
call   1040 <puts@plt>
lea    0x10c2(%rip),%rdi
call   1040 <puts@plt>
lea    0x10d0(%rip),%rdi
call   1040 <puts@plt>
lea    0x10f5(%rip),%rdi
call   1040 <puts@plt>
lea    0x110c(%rip),%rdi
call   1040 <puts@plt>
lea    0x115b(%rip),%rdi
call   1040 <puts@plt>
lea    0x1172(%rip),%rdi
call   1040 <puts@plt>
lea    0x1308(%rip),%rdi
pop    %rax
jmp    1040 <puts@plt>

LLVM IR (-O0):
@.str = [26 x i8] c" minimal script service\0A\00"
@.str.1 = [60 x i8] c" this is not well-made script, so its function is limited\0A\00"
@.str.2 = [18 x i8] c" declaration : \0A\00"
@.str.3 = [2 x i8] c"\0A\00"
@.str.4 = [39 x i8] c" INTCONST : 64bit signed integer\0A\00"
@.str.5 = [43 x i8] c" STRINGCONST: any printable characters\0A\00"
@.str.6 = [61 x i8] c" SYMCONST : alphanumeric characters(max 32 characters)\0A\00"
@.str.7 = [25 x i8] c" INT : (add INT INT)\0A\00"
@.str.8 = [25 x i8] c" (sub INT INT)\0A\00"
@.str.9 = [25 x i8] c" (mul INT INT)\0A\00"
@.str.10 = [25 x i8] c" (and INT INT)\0A\00"
@.str.11 = [24 x i8] c" (or INT INT)\0A\00"
@.str.12 = [26 x i8] c" (int INTCONST)\0A\00"
@.str.13 = [28 x i8] c" STR : (concat STR STR)\0A\00"
@.str.14 = [31 x i8] c" (subst STR INT INT)\0A\00"
@.str.15 = [34 x i8] c" (string \22STRINGCONST\22)\0A\00"
@.str.16 = [26 x i8] c" SYM : (sym SYMCONST)\0A\00"
@.str.17 = [25 x i8] c" LIST: (con ANY ANY)\0A\00"
@.str.18 = [25 x i8] c" FUNC: (fun SYM ANY)\0A\00"
@.str.19 = [24 x i8] c" BOOL: (lt INT INT)\0A\00"
@.str.20 = [24 x i8] c" (gt INT INT)\0A\00"
@.str.21 = [24 x i8] c" (eq INT INT)\0A\00"
@.str.22 = [24 x i8] c" (eq STR STR)\0A\00"
@.str.23 = [26 x i8] c" (eq BOOL BOOL)\0A\00"
@.str.24 = [26 x i8] c" (or BOOL BOOL)\0A\00"
@.str.25 = [27 x i8] c" (and BOOL BOOL)\0A\00"
@.str.26 = [22 x i8] c" (not BOOL)\0A\00"
@.str.27 = [22 x i8] c" ANY: (car LIST)\0A\00"
@.str.28 = [22 x i8] c" (cdr LIST)\0A\00"
@.str.29 = [30 x i8] c" (ite BOOL ANY ANY)\0A\00"
@.str.30 = [29 x i8] c" (let SYM ANY ANY)\0A\00"
@.str.31 = [22 x i8] c" (FUNC ANY)\0A\00"
@.str.32 = [14 x i8] c" example : \0A\00"
@.str.33 = [27 x i8] c" (add (int 1) (int 2))\0A\00"
@.str.34 = [27 x i8] c" - it computes 1 + 2.\0A\00"
@.str.35 = [50 x i8] c" (concat (string \22hello \22) (string \22world!\22))\0A\00"
@.str.36 = [36 x i8] c" - it concatenate two strings.\0A\00"
@.str.37 = [92 x i8] c" (let (sym odd) (fun (sym x) (sub (mul (sym x) (int 2)) (int 1))) ((sym odd) (int 6)))\0A\00"
@.str.38 = [36 x i8] c" - it computes 6th odd number.\0A\00"
@.str.39 = [419 x i8] c" (let (sym fib) (fun (sym x) (cdr (let (sym fibr) (fun (sym c) (ite (eq (cdr (sym c)) (int 0)) (con (car (sym c)) (int 0)) (ite (eq (cdr (sym c)) (int 1)) (con (car (sym c)) (int 1)) (con (car (sym c)) (add (cdr ((car (sym c)) (con (car (sym c)) (sub (cdr (sym c)) (int 1))))) (cdr ((car (sym c)) (con (car (sym c)) (sub (cdr (sym c)) (int 2)))))))))) ((sym fibr) (con (sym fibr) (sym x)))))) ((sym fib) (int 13)))\0A\00"
@.str.40 = [43 x i8] c" - it computes 13th fibonacci number.\0A\00"
define void @print_message() {
%1 = call i32 @printf(i8* getelementptr inbounds ([26 x i8], [26 x i8]* @.str, i64 0, i64 0))
%2 = call i32 @printf(i8* getelementptr inbounds ([60 x i8], [60 x i8]* @.str.1, i64 0, i64 0))
%3 = call i32 @printf(i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.2, i64 0, i64 0))
%4 = call i32 @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.3, i64 0, i64 0))
%5 = call i32 @printf(i8* getelementptr inbounds ([39 x i8], [39 x i8]* @.str.4, i64 0, i64 0))
%6 = call i32 @printf(i8* getelementptr inbounds ([43 x i8], [43 x i8]* @.str.5, i64 0, i64 0))
%7 = call i32 @printf(i8* getelementptr inbounds ([61 x i8], [61 x i8]* @.str.6, i64 0, i64 0))
%8 = call i32 @printf(i8* getelementptr inbounds ([25 x i8], [25 x i8]* @.str.7, i64 0, i64 0))
%9 = call i32 @printf(i8* getelementptr inbounds ([25 x i8], [25 x i8]* @.str.8, i64 0, i64 0))
%10 = call i32 @printf(i8* getelementptr inbounds ([25 x i8], [25 x i8]* @.str.9, i64 0, i64 0))
%11 = call i32 @printf(i8* getelementptr inbounds ([25 x i8], [25 x i8]* @.str.10, i64 0, i64 0))
%12 = call i32 @printf(i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str.11, i64 0, i64 0))
%13 = call i32 @printf(i8* getelementptr inbounds ([26 x i8], [26 x i8]* @.str.12, i64 0, i64 0))
%14 = call i32 @printf(i8* getelementptr inbounds ([28 x i8], [28 x i8]* @.str.13, i64 0, i64 0))
%15 = call i32 @printf(i8* getelementptr inbounds ([31 x i8], [31 x i8]* @.str.14, i64 0, i64 0))
%16 = call i32 @printf(i8* getelementptr inbounds ([34 x i8], [34 x i8]* @.str.15, i64 0, i64 0))
%17 = call i32 @printf(i8* getelementptr inbounds ([26 x i8], [26 x i8]* @.str.16, i64 0, i64 0))
%18 = call i32 @printf(i8* getelementptr inbounds ([25 x i8], [25 x i8]* @.str.17, i64 0, i64 0))
%19 = call i32 @printf(i8* getelementptr inbounds ([25 x i8], [25 x i8]* @.str.18, i64 0, i64 0))
%20 = call i32 @printf(i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str.19, i64 0, i64 0))
%21 = call i32 @printf(i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str.20, i64 0, i64 0))
%22 = call i32 @printf(i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str.21, i64 0, i64 0))
%23 = call i32 @printf(i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str.22, i64 0, i64 0))
%24 = call i32 @printf(i8* getelementptr inbounds ([26 x i8], [26 x i8]* @.str.23, i64 0, i64 0))
%25 = call i32 @printf(i8* getelementptr inbounds ([26 x i8], [26 x i8]* @.str.24, i64 0, i64 0))
%26 = call i32 @printf(i8* getelementptr inbounds ([27 x i8], [27 x i8]* @.str.25, i64 0, i64 0))
%27 = call i32 @printf(i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str.26, i64 0, i64 0))
%28 = call i32 @printf(i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str.27, i64 0, i64 0))
%29 = call i32 @printf(i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str.28, i64 0, i64 0))
%30 = call i32 @printf(i8* getelementptr inbounds ([30 x i8], [30 x i8]* @.str.29, i64 0, i64 0))
%31 = call i32 @printf(i8* getelementptr inbounds ([29 x i8], [29 x i8]* @.str.30, i64 0, i64 0))
%32 = call i32 @printf(i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str.31, i64 0, i64 0))
%33 = call i32 @printf(i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.32, i64 0, i64 0))
%34 = call i32 @printf(i8* getelementptr inbounds ([27 x i8], [27 x i8]* @.str.33, i64 0, i64 0))
%35 = call i32 @printf(i8* getelementptr inbounds ([27 x i8], [27 x i8]* @.str.34, i64 0, i64 0))
%36 = call i32 @printf(i8* getelementptr inbounds ([50 x i8], [50 x i8]* @.str.35, i64 0, i64 0))
%37 = call i32 @printf(i8* getelementptr inbounds ([36 x i8], [36 x i8]* @.str.36, i64 0, i64 0))
%38 = call i32 @printf(i8* getelementptr inbounds ([92 x i8], [92 x i8]* @.str.37, i64 0, i64 0))
%39 = call i32 @printf(i8* getelementptr inbounds ([36 x i8], [36 x i8]* @.str.38, i64 0, i64 0))
%40 = call i32 @printf(i8* getelementptr inbounds ([419 x i8], [419 x i8]* @.str.39, i64 0, i64 0))
%41 = call i32 @printf(i8* getelementptr inbounds ([43 x i8], [43 x i8]* @.str.40, i64 0, i64 0))
ret void
}

LLVM IR (-O2):
@str = [25 x i8] c" minimal script service\00"
@str.41 = [59 x i8] c" this is not well-made script, so its function is limited\00"
@str.42 = [17 x i8] c" declaration : \00"
@str.43 = [38 x i8] c" INTCONST : 64bit signed integer\00"
@str.44 = [42 x i8] c" STRINGCONST: any printable characters\00"
@str.45 = [60 x i8] c" SYMCONST : alphanumeric characters(max 32 characters)\00"
@str.46 = [24 x i8] c" INT : (add INT INT)\00"
@str.47 = [24 x i8] c" (sub INT INT)\00"
@str.48 = [24 x i8] c" (mul INT INT)\00"
@str.49 = [24 x i8] c" (and INT INT)\00"
@str.50 = [23 x i8] c" (or INT INT)\00"
@str.51 = [25 x i8] c" (int INTCONST)\00"
@str.52 = [27 x i8] c" STR : (concat STR STR)\00"
@str.53 = [30 x i8] c" (subst STR INT INT)\00"
@str.54 = [33 x i8] c" (string \22STRINGCONST\22)\00"
@str.55 = [25 x i8] c" SYM : (sym SYMCONST)\00"
@str.56 = [24 x i8] c" LIST: (con ANY ANY)\00"
@str.57 = [24 x i8] c" FUNC: (fun SYM ANY)\00"
@str.58 = [23 x i8] c" BOOL: (lt INT INT)\00"
@str.59 = [23 x i8] c" (gt INT INT)\00"
@str.60 = [23 x i8] c" (eq INT INT)\00"
@str.61 = [23 x i8] c" (eq STR STR)\00"
@str.62 = [25 x i8] c" (eq BOOL BOOL)\00"
@str.63 = [25 x i8] c" (or BOOL BOOL)\00"
@str.64 = [26 x i8] c" (and BOOL BOOL)\00"
@str.65 = [21 x i8] c" (not BOOL)\00"
@str.66 = [21 x i8] c" ANY: (car LIST)\00"
@str.67 = [21 x i8] c" (cdr LIST)\00"
@str.68 = [29 x i8] c" (ite BOOL ANY ANY)\00"
@str.69 = [28 x i8] c" (let SYM ANY ANY)\00"
@str.70 = [21 x i8] c" (FUNC ANY)\00"
@str.71 = [13 x i8] c" example : \00"
@str.72 = [26 x i8] c" (add (int 1) (int 2))\00"
@str.73 = [26 x i8] c" - it computes 1 + 2.\00"
@str.74 = [49 x i8] c" (concat (string \22hello \22) (string \22world!\22))\00"
@str.75 = [35 x i8] c" - it concatenate two strings.\00"
@str.76 = [91 x i8] c" (let (sym odd) (fun (sym x) (sub (mul (sym x) (int 2)) (int 1))) ((sym odd) (int 6)))\00"
@str.77 = [35 x i8] c" - it computes 6th odd number.\00"
@str.78 = [418 x i8] c" (let (sym fib) (fun (sym x) (cdr (let (sym fibr) (fun (sym c) (ite (eq (cdr (sym c)) (int 0)) (con (car (sym c)) (int 0)) (ite (eq (cdr (sym c)) (int 1)) (con (car (sym c)) (int 1)) (con (car (sym c)) (add (cdr ((car (sym c)) (con (car (sym c)) (sub (cdr (sym c)) (int 1))))) (cdr ((car (sym c)) (con (car (sym c)) (sub (cdr (sym c)) (int 2)))))))))) ((sym fibr) (con (sym fibr) (sym x)))))) ((sym fib) (int 13)))\00"
@str.79 = [42 x i8] c" - it computes 13th fibonacci number.\00"
define void @print_message() {
%1 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([25 x i8], [25 x i8]* @str, i64 0, i64 0))
%2 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([59 x i8], [59 x i8]* @str.41, i64 0, i64 0))
%3 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([17 x i8], [17 x i8]* @str.42, i64 0, i64 0))
%4 = tail call i32 @putchar(i32 10)
%5 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([38 x i8], [38 x i8]* @str.43, i64 0, i64 0))
%6 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([42 x i8], [42 x i8]* @str.44, i64 0, i64 0))
%7 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([60 x i8], [60 x i8]* @str.45, i64 0, i64 0))
%8 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([24 x i8], [24 x i8]* @str.46, i64 0, i64 0))
%9 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([24 x i8], [24 x i8]* @str.47, i64 0, i64 0))
%10 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([24 x i8], [24 x i8]* @str.48, i64 0, i64 0))
%11 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([24 x i8], [24 x i8]* @str.49, i64 0, i64 0))
%12 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([23 x i8], [23 x i8]* @str.50, i64 0, i64 0))
%13 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([25 x i8], [25 x i8]* @str.51, i64 0, i64 0))
%14 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([27 x i8], [27 x i8]* @str.52, i64 0, i64 0))
%15 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([30 x i8], [30 x i8]* @str.53, i64 0, i64 0))
%16 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([33 x i8], [33 x i8]* @str.54, i64 0, i64 0))
%17 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([25 x i8], [25 x i8]* @str.55, i64 0, i64 0))
%18 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([24 x i8], [24 x i8]* @str.56, i64 0, i64 0))
%19 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([24 x i8], [24 x i8]* @str.57, i64 0, i64 0))
%20 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([23 x i8], [23 x i8]* @str.58, i64 0, i64 0))
%21 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([23 x i8], [23 x i8]* @str.59, i64 0, i64 0))
%22 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([23 x i8], [23 x i8]* @str.60, i64 0, i64 0))
%23 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([23 x i8], [23 x i8]* @str.61, i64 0, i64 0))
%24 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([25 x i8], [25 x i8]* @str.62, i64 0, i64 0))
%25 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([25 x i8], [25 x i8]* @str.63, i64 0, i64 0))
%26 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([26 x i8], [26 x i8]* @str.64, i64 0, i64 0))
%27 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([21 x i8], [21 x i8]* @str.65, i64 0, i64 0))
%28 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([21 x i8], [21 x i8]* @str.66, i64 0, i64 0))
%29 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([21 x i8], [21 x i8]* @str.67, i64 0, i64 0))
%30 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([29 x i8], [29 x i8]* @str.68, i64 0, i64 0))
%31 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([28 x i8], [28 x i8]* @str.69, i64 0, i64 0))
%32 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([21 x i8], [21 x i8]* @str.70, i64 0, i64 0))
%33 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([13 x i8], [13 x i8]* @str.71, i64 0, i64 0))
%34 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([26 x i8], [26 x i8]* @str.72, i64 0, i64 0))
%35 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([26 x i8], [26 x i8]* @str.73, i64 0, i64 0))
%36 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([49 x i8], [49 x i8]* @str.74, i64 0, i64 0))
%37 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([35 x i8], [35 x i8]* @str.75, i64 0, i64 0))
%38 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([91 x i8], [91 x i8]* @str.76, i64 0, i64 0))
%39 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([35 x i8], [35 x i8]* @str.77, i64 0, i64 0))
%40 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([418 x i8], [418 x i8]* @str.78, i64 0, i64 0))
%41 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([42 x i8], [42 x i8]* @str.79, i64 0, i64 0))
ret void
}