#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*/ clearscreen();
int /*<<< orphan*/ colorize(char, int);
unsigned long game();
int /*<<< orphan*/ info();
int /*<<< orphan*/ printf(char *, ...);
int /*<<< orphan*/ scanf(char *, char *);
int main() {
  char prompt_resp;
  unsigned long int finalscore = 0;
  clearscreen();
  printf("\n\n\t");
  printf(" ");
  colorize('A', 1);
  printf(" ");
  colorize('S', 2);
  printf(" ");
  colorize('C', 3);
  printf(" ");
  colorize('I', 4);
  printf(" ");
  colorize('I', 1);
  printf("    ");
  colorize('M', 2);
  printf(" ");
  colorize('A', 3);
  printf(" ");
  colorize('T', 4);
  printf(" ");
  colorize('C', 1);
  printf(" ");
  colorize('H', 2);
  printf(" ");
  printf("\n\n");
  printf("\n\tPress 1 to PLAY");
  printf("\n\tPress 2 for HELP");
  printf("\n\tPress any other key to exit");
  printf("\n");
  scanf("%c", &prompt_resp);
  switch (prompt_resp) {
  case '1':
    finalscore = game();
    clearscreen();
    printf("\n\n\tGAME OVER!");
    printf("\n\tFINAL SCORE: %ld", finalscore);
    printf("\n\n\t");
    if (finalscore >= 11000) {
      printf("DUDE! Ran out of things to say here!");
      printf("\n\tRANK: Addicted Nerd");
    } else if (finalscore >= 10000) {
      printf("OH MY GLOB! You are Simply Trigonometric!");
      printf("\n\tRANK: Grandmaster Matchmaker");
    } else if (finalscore >= 9000) {
      printf("WOW! That was Analytic!");
      printf("\n\tRANK: El TILEbre");
    } else if (finalscore >= 8000) {
      printf("BOOM! Mathed that one!");
      printf("\n\tRANK: ASCII Enemy # 1");
    } else if (finalscore >= 7000) {
      printf("AMAZING! You pwned those tiles!");
      printf("\n\tRANK: MasterChief Tilebusting Officer");
    } else if (finalscore >= 6000) {
      printf("AWESOME! Like Vincent!");
      printf("\n\tRANK: ASCII Mage");
    } else if (finalscore >= 5000) {
      printf("ASTONISHING! That's you!");
      printf("\n\tRANK: Terminal Hotshot");
    } else if (finalscore >= 4000) {
      printf("TERRIFIC! Cartesian!");
      printf("\n\tRANK: Professional Hunter of Tiles");
    } else if (finalscore >= 3000) {
      printf("GREAT! That's Algebraic!");
      printf("\n\tRANK: Triple Threat Tile Destroyer");
    } else if (finalscore >= 2000) {
      printf("KEEP IT UP! I am speechless!");
      printf("\n\tRANK: Isko the Magnificent");
    } else if (finalscore >= 1000) {
      printf("YEY! Good job, buddy!");
      printf("\n\tRANK: Novice");
    } else if (finalscore >= 800) {
      printf("YOU CAN DO BETTER! Keep working on those ASCII muscles!");
      printf("\n\tRANK: Amateur");
    } else if (finalscore >= 400) {
      printf("AWE COME ON! Even Justin Beiber sings better than that!");
      printf("\n\tRANK: Guy-Who's-Not-Really-Into-It");
    } else if (finalscore >= 200) {
      printf("YOU'll GET THERE! With a little work, you can be Batman.");
      printf("\n\tRANK: Cinnamon Bun");
    } else {
      printf(
          "TOO BAD! You have potential, probably. I think. Most likely not.");
      printf("\n\tRANK: The guy who directed the Percy Jackson movies");
    }
    printf("\n\n\tThank you for playing.\n\n");
    break;
  case '2':
    info();
    printf("\n\n\tThis program will now exit.\n\n");
    break;
  default:
    return 0;
  }
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0x40,%rsp
movl   $0x0,-0x4(%rbp)
movq   $0x0,-0x10(%rbp)
xor    %eax,%eax
mov    %al,-0x15(%rbp)
call   1030 <clearscreen@plt>
mov    -0x15(%rbp),%al
lea    0xe75(%rip),%rdi
call   1040 <printf@plt>
mov    -0x15(%rbp),%al
lea    0xe6d(%rip),%rdi
mov    %rdi,-0x20(%rbp)
call   1040 <printf@plt>
mov    $0x41,%edi
mov    %edi,-0x38(%rbp)
mov    $0x1,%esi
mov    %esi,-0x28(%rbp)
call   1070 <colorize@plt>
mov    -0x20(%rbp),%rdi
mov    -0x15(%rbp),%al
call   1040 <printf@plt>
mov    $0x53,%edi
mov    $0x2,%esi
mov    %esi,-0x24(%rbp)
call   1070 <colorize@plt>
mov    -0x20(%rbp),%rdi
mov    -0x15(%rbp),%al
call   1040 <printf@plt>
mov    $0x43,%edi
mov    %edi,-0x2c(%rbp)
mov    $0x3,%esi
mov    %esi,-0x34(%rbp)
call   1070 <colorize@plt>
mov    -0x20(%rbp),%rdi
mov    -0x15(%rbp),%al
call   1040 <printf@plt>
mov    $0x49,%edi
mov    %edi,-0x3c(%rbp)
mov    $0x4,%esi
mov    %esi,-0x30(%rbp)
call   1070 <colorize@plt>
mov    -0x20(%rbp),%rdi
mov    -0x15(%rbp),%al
call   1040 <printf@plt>
mov    -0x3c(%rbp),%edi
mov    -0x28(%rbp),%esi
call   1070 <colorize@plt>
mov    -0x15(%rbp),%al
lea    0xdcb(%rip),%rdi
call   1040 <printf@plt>
mov    -0x24(%rbp),%esi
mov    $0x4d,%edi
call   1070 <colorize@plt>
mov    -0x20(%rbp),%rdi
mov    -0x15(%rbp),%al
call   1040 <printf@plt>
mov    -0x38(%rbp),%edi
mov    -0x34(%rbp),%esi
call   1070 <colorize@plt>
mov    -0x20(%rbp),%rdi
mov    -0x15(%rbp),%al
call   1040 <printf@plt>
mov    -0x30(%rbp),%esi
mov    $0x54,%edi
call   1070 <colorize@plt>
mov    -0x20(%rbp),%rdi
mov    -0x15(%rbp),%al
call   1040 <printf@plt>
mov    -0x2c(%rbp),%edi
mov    -0x28(%rbp),%esi
call   1070 <colorize@plt>
mov    -0x20(%rbp),%rdi
mov    -0x15(%rbp),%al
call   1040 <printf@plt>
mov    -0x24(%rbp),%esi
mov    $0x48,%edi
call   1070 <colorize@plt>
mov    -0x20(%rbp),%rdi
mov    -0x15(%rbp),%al
call   1040 <printf@plt>
mov    -0x15(%rbp),%al
lea    0x118b(%rip),%rdi
call   1040 <printf@plt>
mov    -0x15(%rbp),%al
lea    0xd39(%rip),%rdi
call   1040 <printf@plt>
mov    -0x15(%rbp),%al
lea    0xd3c(%rip),%rdi
call   1040 <printf@plt>
mov    -0x15(%rbp),%al
lea    0xd40(%rip),%rdi
call   1040 <printf@plt>
mov    -0x15(%rbp),%al
lea    0x1150(%rip),%rdi
call   1040 <printf@plt>
lea    0xd43(%rip),%rdi
lea    -0x5(%rbp),%rsi
call   1050 <scanf@plt>
movsbl -0x5(%rbp),%eax
mov    %eax,-0x14(%rbp)
sub    $0x31,%eax
je     1338 <main+0x1d8>
jmp    1327 <main+0x1c7>
mov    -0x14(%rbp),%eax
sub    $0x32,%eax
je     167a <main+0x51a>
jmp    1694 <main+0x534>
mov    $0x0,%al
call   1060 <game@plt>
mov    %rax,-0x10(%rbp)
mov    $0x0,%al
call   1030 <clearscreen@plt>
lea    0xcfe(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
mov    -0x10(%rbp),%rsi
lea    0xcfa(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
lea    0xc8f(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
cmpq   $0x2af8,-0x10(%rbp)
jb     13a7 <main+0x247>
lea    0xce3(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
lea    0xcfa(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
jmp    1667 <main+0x507>
cmpq   $0x2710,-0x10(%rbp)
jb     13d6 <main+0x276>
lea    0xcef(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
lea    0xd0b(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
jmp    1662 <main+0x502>
cmpq   $0x2328,-0x10(%rbp)
jb     1405 <main+0x2a5>
lea    0xd09(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
lea    0xd13(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
jmp    165d <main+0x4fd>
cmpq   $0x1f40,-0x10(%rbp)
jb     1434 <main+0x2d4>
lea    0xd05(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
lea    0xd0e(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
jmp    1658 <main+0x4f8>
cmpq   $0x1b58,-0x10(%rbp)
jb     1463 <main+0x303>
lea    0xd05(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
lea    0xd17(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
jmp    1653 <main+0x4f3>
cmpq   $0x1770,-0x10(%rbp)
jb     1492 <main+0x332>
lea    0xd1e(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
lea    0xd27(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
jmp    164e <main+0x4ee>
cmpq   $0x1388,-0x10(%rbp)
jb     14c1 <main+0x361>
lea    0xd19(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
lea    0xd24(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
jmp    1649 <main+0x4e9>
cmpq   $0xfa0,-0x10(%rbp)
jb     14f0 <main+0x390>
lea    0xd1c(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
lea    0xd23(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
jmp    1644 <main+0x4e4>
cmpq   $0xbb8,-0x10(%rbp)
jb     151f <main+0x3bf>
lea    0xd27(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
lea    0xd32(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
jmp    163f <main+0x4df>
cmpq   $0x7d0,-0x10(%rbp)
jb     154e <main+0x3ee>
lea    0xd36(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
lea    0xd45(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
jmp    163a <main+0x4da>
cmpq   $0x3e8,-0x10(%rbp)
jb     157d <main+0x41d>
lea    0xd41(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
lea    0xd49(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
jmp    1635 <main+0x4d5>
cmpq   $0x320,-0x10(%rbp)
jb     15ac <main+0x44c>
lea    0xd37(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
lea    0xd61(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
jmp    1630 <main+0x4d0>
cmpq   $0x190,-0x10(%rbp)
jb     15db <main+0x47b>
lea    0xd50(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
lea    0xd7a(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
jmp    162b <main+0x4cb>
cmpq   $0xc8,-0x10(%rbp)
jb     160a <main+0x4aa>
lea    0xd7e(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
lea    0xda9(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
jmp    1626 <main+0x4c6>
lea    0xdab(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
lea    0xdde(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
jmp    162b <main+0x4cb>
jmp    1630 <main+0x4d0>
jmp    1635 <main+0x4d5>
jmp    163a <main+0x4da>
jmp    163f <main+0x4df>
jmp    1644 <main+0x4e4>
jmp    1649 <main+0x4e9>
jmp    164e <main+0x4ee>
jmp    1653 <main+0x4f3>
jmp    1658 <main+0x4f8>
jmp    165d <main+0x4fd>
jmp    1662 <main+0x502>
jmp    1667 <main+0x507>
lea    0xdc5(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
jmp    169b <main+0x53b>
mov    $0x0,%al
call   1080 <info@plt>
lea    0xdc7(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
jmp    169b <main+0x53b>
movl   $0x0,-0x4(%rbp)
mov    -0x4(%rbp),%eax
add    $0x40,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
push   %rbx
sub    $0x10,%rsp
xor    %eax,%eax
call   1050 <clearscreen@plt>
lea    0xe6d(%rip),%rdi
xor    %eax,%eax
call   1060 <printf@plt>
mov    $0x20,%edi
call   1030 <putchar@plt>
mov    $0x41,%edi
mov    $0x1,%esi
call   1090 <colorize@plt>
mov    $0x20,%edi
call   1030 <putchar@plt>
mov    $0x53,%edi
mov    $0x2,%esi
call   1090 <colorize@plt>
mov    $0x20,%edi
call   1030 <putchar@plt>
mov    $0x43,%edi
mov    $0x3,%esi
call   1090 <colorize@plt>
mov    $0x20,%edi
call   1030 <putchar@plt>
mov    $0x49,%edi
mov    $0x4,%esi
call   1090 <colorize@plt>
mov    $0x20,%edi
call   1030 <putchar@plt>
mov    $0x49,%edi
mov    $0x1,%esi
call   1090 <colorize@plt>
lea    0xde6(%rip),%rdi
xor    %eax,%eax
call   1060 <printf@plt>
mov    $0x4d,%edi
mov    $0x2,%esi
call   1090 <colorize@plt>
mov    $0x20,%edi
call   1030 <putchar@plt>
mov    $0x41,%edi
mov    $0x3,%esi
call   1090 <colorize@plt>
mov    $0x20,%edi
call   1030 <putchar@plt>
mov    $0x54,%edi
mov    $0x4,%esi
call   1090 <colorize@plt>
mov    $0x20,%edi
call   1030 <putchar@plt>
mov    $0x43,%edi
mov    $0x1,%esi
call   1090 <colorize@plt>
mov    $0x20,%edi
call   1030 <putchar@plt>
mov    $0x48,%edi
mov    $0x2,%esi
call   1090 <colorize@plt>
mov    $0x20,%edi
call   1030 <putchar@plt>
lea    0x11c3(%rip),%rdi
call   1040 <puts@plt>
lea    0xd54(%rip),%rdi
xor    %eax,%eax
call   1060 <printf@plt>
lea    0xd58(%rip),%rdi
xor    %eax,%eax
call   1060 <printf@plt>
lea    0xd5d(%rip),%rdi
xor    %eax,%eax
call   1060 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
lea    0xd63(%rip),%rdi
lea    0xf(%rsp),%rsi
call   1070 <scanf@plt>
movsbl 0xf(%rsp),%eax
cmp    $0x32,%eax
je     1360 <main+0x1e0>
cmp    $0x31,%eax
jne    14ff <main+0x37f>
xor    %eax,%eax
call   1080 <game@plt>
mov    %rax,%rbx
xor    %eax,%eax
call   1050 <clearscreen@plt>
lea    0xd31(%rip),%rdi
xor    %eax,%eax
call   1060 <printf@plt>
lea    0xd31(%rip),%rdi
mov    %rbx,%rsi
xor    %eax,%eax
call   1060 <printf@plt>
lea    0xcc3(%rip),%rdi
xor    %eax,%eax
call   1060 <printf@plt>
cmp    $0x2af7,%rbx
jbe    1373 <main+0x1f3>
lea    0xd41(%rip),%rbx
lea    0xd15(%rip),%rdi
jmp    14e2 <main+0x362>
xor    %eax,%eax
call   10a0 <info@plt>
lea    0x10c5(%rip),%rdi
jmp    14fa <main+0x37a>
cmp    $0x270f,%rbx
jbe    138f <main+0x20f>
lea    0xd52(%rip),%rbx
lea    0xd21(%rip),%rdi
jmp    14e2 <main+0x362>
cmp    $0x2327,%rbx
jbe    13ab <main+0x22b>
lea    0xd6d(%rip),%rbx
lea    0xd4e(%rip),%rdi
jmp    14e2 <main+0x362>
cmp    $0x1f3f,%rbx
jbe    13c7 <main+0x247>
lea    0xd7b(%rip),%rbx
lea    0xd5d(%rip),%rdi
jmp    14e2 <main+0x362>
cmp    $0x1b57,%rbx
jbe    13e3 <main+0x263>
lea    0xd97(%rip),%rbx
lea    0xd70(%rip),%rdi
jmp    14e2 <main+0x362>
cmp    $0x176f,%rbx
jbe    13ff <main+0x27f>
lea    0xdba(%rip),%rbx
lea    0xd9c(%rip),%rdi
jmp    14e2 <main+0x362>
cmp    $0x1387,%rbx
jbe    141b <main+0x29b>
lea    0xdca(%rip),%rbx
lea    0xdaa(%rip),%rdi
jmp    14e2 <main+0x362>
cmp    $0xf9f,%rbx
jbe    1437 <main+0x2b7>
lea    0xddc(%rip),%rbx
lea    0xdc0(%rip),%rdi
jmp    14e2 <main+0x362>
cmp    $0xbb7,%rbx
jbe    1453 <main+0x2d3>
lea    0xdfe(%rip),%rbx
lea    0xdde(%rip),%rdi
jmp    14e2 <main+0x362>
cmp    $0x7cf,%rbx
jbe    146c <main+0x2ec>
lea    0xe24(%rip),%rbx
lea    0xe00(%rip),%rdi
jmp    14e2 <main+0x362>
cmp    $0x3e7,%rbx
jbe    1485 <main+0x305>
lea    0xe3e(%rip),%rbx
lea    0xe21(%rip),%rdi
jmp    14e2 <main+0x362>
cmp    $0x31f,%rbx
jbe    149e <main+0x31e>
lea    0xe6c(%rip),%rbx
lea    0xe2d(%rip),%rdi
jmp    14e2 <main+0x362>
cmp    $0x18f,%rbx
jbe    14b7 <main+0x337>
lea    0xe9b(%rip),%rbx
lea    0xe5c(%rip),%rdi
jmp    14e2 <main+0x362>
cmp    $0xc8,%rbx
lea    0xea9(%rip),%rax
lea    0xef0(%rip),%rdi
cmovae %rax,%rdi
lea    0xed0(%rip),%rax
lea    0xf1f(%rip),%rbx
cmovae %rax,%rbx
xor    %eax,%eax
call   1060 <printf@plt>
mov    %rbx,%rdi
xor    %eax,%eax
call   1060 <printf@plt>
lea    0xf59(%rip),%rdi
call   1040 <puts@plt>
xor    %eax,%eax
add    $0x10,%rsp
pop    %rbx
ret

LLVM IR (-O0):
@.str = [4 x i8] c"\0A\0A\09\00"
@.str.1 = [2 x i8] c" \00"
@.str.2 = [5 x i8] c" \00"
@.str.3 = [3 x i8] c"\0A\0A\00"
@.str.4 = [18 x i8] c"\0A\09Press 1 to PLAY\00"
@.str.5 = [19 x i8] c"\0A\09Press 2 for HELP\00"
@.str.6 = [30 x i8] c"\0A\09Press any other key to exit\00"
@.str.7 = [2 x i8] c"\0A\00"
@.str.8 = [3 x i8] c"%c\00"
@.str.9 = [14 x i8] c"\0A\0A\09GAME OVER!\00"
@.str.10 = [19 x i8] c"\0A\09FINAL SCORE: %ld\00"
@.str.11 = [37 x i8] c"DUDE! Ran out of things to say here!\00"
@.str.12 = [22 x i8] c"\0A\09RANK: Addicted Nerd\00"
@.str.13 = [42 x i8] c"OH MY GLOB! You are Simply Trigonometric!\00"
@.str.14 = [31 x i8] c"\0A\09RANK: Grandmaster Matchmaker\00"
@.str.15 = [24 x i8] c"WOW! That was Analytic!\00"
@.str.16 = [19 x i8] c"\0A\09RANK: El TILEbre\00"
@.str.17 = [23 x i8] c"BOOM! Mathed that one!\00"
@.str.18 = [24 x i8] c"\0A\09RANK: ASCII Enemy # 1\00"
@.str.19 = [32 x i8] c"AMAZING! You pwned those tiles!\00"
@.str.20 = [40 x i8] c"\0A\09RANK: MasterChief Tilebusting Officer\00"
@.str.21 = [23 x i8] c"AWESOME! Like Vincent!\00"
@.str.22 = [19 x i8] c"\0A\09RANK: ASCII Mage\00"
@.str.23 = [25 x i8] c"ASTONISHING! That's you!\00"
@.str.24 = [25 x i8] c"\0A\09RANK: Terminal Hotshot\00"
@.str.25 = [21 x i8] c"TERRIFIC! Cartesian!\00"
@.str.26 = [37 x i8] c"\0A\09RANK: Professional Hunter of Tiles\00"
@.str.27 = [25 x i8] c"GREAT! That's Algebraic!\00"
@.str.28 = [37 x i8] c"\0A\09RANK: Triple Threat Tile Destroyer\00"
@.str.29 = [29 x i8] c"KEEP IT UP! I am speechless!\00"
@.str.30 = [29 x i8] c"\0A\09RANK: Isko the Magnificent\00"
@.str.31 = [22 x i8] c"YEY! Good job, buddy!\00"
@.str.32 = [15 x i8] c"\0A\09RANK: Novice\00"
@.str.33 = [56 x i8] c"YOU CAN DO BETTER! Keep working on those ASCII muscles!\00"
@.str.34 = [16 x i8] c"\0A\09RANK: Amateur\00"
@.str.35 = [56 x i8] c"AWE COME ON! Even Justin Beiber sings better than that!\00"
@.str.36 = [37 x i8] c"\0A\09RANK: Guy-Who's-Not-Really-Into-It\00"
@.str.37 = [57 x i8] c"YOU'll GET THERE! With a little work, you can be Batman.\00"
@.str.38 = [21 x i8] c"\0A\09RANK: Cinnamon Bun\00"
@.str.39 = [65 x i8] c"TOO BAD! You have potential, probably. I think. Most likely not.\00"
@.str.40 = [54 x i8] c"\0A\09RANK: The guy who directed the Percy Jackson movies\00"
@.str.41 = [28 x i8] c"\0A\0A\09Thank you for playing.\0A\0A\00"
@.str.42 = [33 x i8] c"\0A\0A\09This program will now exit.\0A\0A\00"
define i32 @main() {
%1 = alloca i32
%2 = alloca i8
%3 = alloca i64
store i32 0, i32* %1
store i64 0, i64* %3
%4 = call i32 (...) @clearscreen()
%5 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0))
%6 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.1, i64 0, i64 0))
%7 = call i32 @colorize(i8 signext 65, i32 1)
%8 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.1, i64 0, i64 0))
%9 = call i32 @colorize(i8 signext 83, i32 2)
%10 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.1, i64 0, i64 0))
%11 = call i32 @colorize(i8 signext 67, i32 3)
%12 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.1, i64 0, i64 0))
%13 = call i32 @colorize(i8 signext 73, i32 4)
%14 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.1, i64 0, i64 0))
%15 = call i32 @colorize(i8 signext 73, i32 1)
%16 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.2, i64 0, i64 0))
%17 = call i32 @colorize(i8 signext 77, i32 2)
%18 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.1, i64 0, i64 0))
%19 = call i32 @colorize(i8 signext 65, i32 3)
%20 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.1, i64 0, i64 0))
%21 = call i32 @colorize(i8 signext 84, i32 4)
%22 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.1, i64 0, i64 0))
%23 = call i32 @colorize(i8 signext 67, i32 1)
%24 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.1, i64 0, i64 0))
%25 = call i32 @colorize(i8 signext 72, i32 2)
%26 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.1, i64 0, i64 0))
%27 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.3, i64 0, i64 0))
%28 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.4, i64 0, i64 0))
%29 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.5, i64 0, i64 0))
%30 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([30 x i8], [30 x i8]* @.str.6, i64 0, i64 0))
%31 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.7, i64 0, i64 0))
%32 = call i32 @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.8, i64 0, i64 0), i8* %2)
%33 = load i8, i8* %2
%34 = sext i8 %33 to i32
switch i32 %34, label %146 [
i32 49, label %35
i32 50, label %143
]
35: ; preds = %0
%36 = call i64 (...) @game()
store i64 %36, i64* %3
%37 = call i32 (...) @clearscreen()
%38 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.9, i64 0, i64 0))
%39 = load i64, i64* %3
%40 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.10, i64 0, i64 0), i64 %39)
%41 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0))
%42 = load i64, i64* %3
%43 = icmp uge i64 %42, 11000
br i1 %43, label %44, label %47
44: ; preds = %35
%45 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([37 x i8], [37 x i8]* @.str.11, i64 0, i64 0))
%46 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str.12, i64 0, i64 0))
br label %141
47: ; preds = %35
%48 = load i64, i64* %3
%49 = icmp uge i64 %48, 10000
br i1 %49, label %50, label %53
50: ; preds = %47
%51 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([42 x i8], [42 x i8]* @.str.13, i64 0, i64 0))
%52 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([31 x i8], [31 x i8]* @.str.14, i64 0, i64 0))
br label %140
53: ; preds = %47
%54 = load i64, i64* %3
%55 = icmp uge i64 %54, 9000
br i1 %55, label %56, label %59
56: ; preds = %53
%57 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str.15, i64 0, i64 0))
%58 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.16, i64 0, i64 0))
br label %139
59: ; preds = %53
%60 = load i64, i64* %3
%61 = icmp uge i64 %60, 8000
br i1 %61, label %62, label %65
62: ; preds = %59
%63 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([23 x i8], [23 x i8]* @.str.17, i64 0, i64 0))
%64 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str.18, i64 0, i64 0))
br label %138
65: ; preds = %59
%66 = load i64, i64* %3
%67 = icmp uge i64 %66, 7000
br i1 %67, label %68, label %71
68: ; preds = %65
%69 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([32 x i8], [32 x i8]* @.str.19, i64 0, i64 0))
%70 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([40 x i8], [40 x i8]* @.str.20, i64 0, i64 0))
br label %137
71: ; preds = %65
%72 = load i64, i64* %3
%73 = icmp uge i64 %72, 6000
br i1 %73, label %74, label %77
74: ; preds = %71
%75 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([23 x i8], [23 x i8]* @.str.21, i64 0, i64 0))
%76 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.22, i64 0, i64 0))
br label %136
77: ; preds = %71
%78 = load i64, i64* %3
%79 = icmp uge i64 %78, 5000
br i1 %79, label %80, label %83
80: ; preds = %77
%81 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([25 x i8], [25 x i8]* @.str.23, i64 0, i64 0))
%82 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([25 x i8], [25 x i8]* @.str.24, i64 0, i64 0))
br label %135
83: ; preds = %77
%84 = load i64, i64* %3
%85 = icmp uge i64 %84, 4000
br i1 %85, label %86, label %89
86: ; preds = %83
%87 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.25, i64 0, i64 0))
%88 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([37 x i8], [37 x i8]* @.str.26, i64 0, i64 0))
br label %134
89: ; preds = %83
%90 = load i64, i64* %3
%91 = icmp uge i64 %90, 3000
br i1 %91, label %92, label %95
92: ; preds = %89
%93 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([25 x i8], [25 x i8]* @.str.27, i64 0, i64 0))
%94 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([37 x i8], [37 x i8]* @.str.28, i64 0, i64 0))
br label %133
95: ; preds = %89
%96 = load i64, i64* %3
%97 = icmp uge i64 %96, 2000
br i1 %97, label %98, label %101
98: ; preds = %95
%99 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([29 x i8], [29 x i8]* @.str.29, i64 0, i64 0))
%100 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([29 x i8], [29 x i8]* @.str.30, i64 0, i64 0))
br label %132
101: ; preds = %95
%102 = load i64, i64* %3
%103 = icmp uge i64 %102, 1000
br i1 %103, label %104, label %107
104: ; preds = %101
%105 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str.31, i64 0, i64 0))
%106 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.32, i64 0, i64 0))
br label %131
107: ; preds = %101
%108 = load i64, i64* %3
%109 = icmp uge i64 %108, 800
br i1 %109, label %110, label %113
110: ; preds = %107
%111 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([56 x i8], [56 x i8]* @.str.33, i64 0, i64 0))
%112 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.34, i64 0, i64 0))
br label %130
113: ; preds = %107
%114 = load i64, i64* %3
%115 = icmp uge i64 %114, 400
br i1 %115, label %116, label %119
116: ; preds = %113
%117 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([56 x i8], [56 x i8]* @.str.35, i64 0, i64 0))
%118 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([37 x i8], [37 x i8]* @.str.36, i64 0, i64 0))
br label %129
119: ; preds = %113
%120 = load i64, i64* %3
%121 = icmp uge i64 %120, 200
br i1 %121, label %122, label %125
122: ; preds = %119
%123 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([57 x i8], [57 x i8]* @.str.37, i64 0, i64 0))
%124 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.38, i64 0, i64 0))
br label %128
125: ; preds = %119
%126 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([65 x i8], [65 x i8]* @.str.39, i64 0, i64 0))
%127 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([54 x i8], [54 x i8]* @.str.40, i64 0, i64 0))
br label %128
128: ; preds = %125, %122
br label %129
129: ; preds = %128, %116
br label %130
130: ; preds = %129, %110
br label %131
131: ; preds = %130, %104
br label %132
132: ; preds = %131, %98
br label %133
133: ; preds = %132, %92
br label %134
134: ; preds = %133, %86
br label %135
135: ; preds = %134, %80
br label %136
136: ; preds = %135, %74
br label %137
137: ; preds = %136, %68
br label %138
138: ; preds = %137, %62
br label %139
139: ; preds = %138, %56
br label %140
140: ; preds = %139, %50
br label %141
141: ; preds = %140, %44
%142 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([28 x i8], [28 x i8]* @.str.41, i64 0, i64 0))
br label %147
143: ; preds = %0
%144 = call i32 (...) @info()
%145 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([33 x i8], [33 x i8]* @.str.42, i64 0, i64 0))
br label %147
146: ; preds = %0
store i32 0, i32* %1
br label %147
147: ; preds = %146, %143, %141
%148 = load i32, i32* %1
ret i32 %148
}

LLVM IR (-O2):
@.str = [4 x i8] c"\0A\0A\09\00"
@.str.2 = [5 x i8] c" \00"
@.str.4 = [18 x i8] c"\0A\09Press 1 to PLAY\00"
@.str.5 = [19 x i8] c"\0A\09Press 2 for HELP\00"
@.str.6 = [30 x i8] c"\0A\09Press any other key to exit\00"
@.str.8 = [3 x i8] c"%c\00"
@.str.9 = [14 x i8] c"\0A\0A\09GAME OVER!\00"
@.str.10 = [19 x i8] c"\0A\09FINAL SCORE: %ld\00"
@.str.11 = [37 x i8] c"DUDE! Ran out of things to say here!\00"
@.str.12 = [22 x i8] c"\0A\09RANK: Addicted Nerd\00"
@.str.13 = [42 x i8] c"OH MY GLOB! You are Simply Trigonometric!\00"
@.str.14 = [31 x i8] c"\0A\09RANK: Grandmaster Matchmaker\00"
@.str.15 = [24 x i8] c"WOW! That was Analytic!\00"
@.str.16 = [19 x i8] c"\0A\09RANK: El TILEbre\00"
@.str.17 = [23 x i8] c"BOOM! Mathed that one!\00"
@.str.18 = [24 x i8] c"\0A\09RANK: ASCII Enemy # 1\00"
@.str.19 = [32 x i8] c"AMAZING! You pwned those tiles!\00"
@.str.20 = [40 x i8] c"\0A\09RANK: MasterChief Tilebusting Officer\00"
@.str.21 = [23 x i8] c"AWESOME! Like Vincent!\00"
@.str.22 = [19 x i8] c"\0A\09RANK: ASCII Mage\00"
@.str.23 = [25 x i8] c"ASTONISHING! That's you!\00"
@.str.24 = [25 x i8] c"\0A\09RANK: Terminal Hotshot\00"
@.str.25 = [21 x i8] c"TERRIFIC! Cartesian!\00"
@.str.26 = [37 x i8] c"\0A\09RANK: Professional Hunter of Tiles\00"
@.str.27 = [25 x i8] c"GREAT! That's Algebraic!\00"
@.str.28 = [37 x i8] c"\0A\09RANK: Triple Threat Tile Destroyer\00"
@.str.29 = [29 x i8] c"KEEP IT UP! I am speechless!\00"
@.str.30 = [29 x i8] c"\0A\09RANK: Isko the Magnificent\00"
@.str.31 = [22 x i8] c"YEY! Good job, buddy!\00"
@.str.32 = [15 x i8] c"\0A\09RANK: Novice\00"
@.str.33 = [56 x i8] c"YOU CAN DO BETTER! Keep working on those ASCII muscles!\00"
@.str.34 = [16 x i8] c"\0A\09RANK: Amateur\00"
@.str.35 = [56 x i8] c"AWE COME ON! Even Justin Beiber sings better than that!\00"
@.str.36 = [37 x i8] c"\0A\09RANK: Guy-Who's-Not-Really-Into-It\00"
@.str.37 = [57 x i8] c"YOU'll GET THERE! With a little work, you can be Batman.\00"
@.str.38 = [21 x i8] c"\0A\09RANK: Cinnamon Bun\00"
@.str.39 = [65 x i8] c"TOO BAD! You have potential, probably. I think. Most likely not.\00"
@.str.40 = [54 x i8] c"\0A\09RANK: The guy who directed the Percy Jackson movies\00"
@str = [2 x i8] c"\0A\00"
@str.43 = [32 x i8] c"\0A\0A\09This program will now exit.\0A\00"
@str.44 = [27 x i8] c"\0A\0A\09Thank you for playing.\0A\00"
define i32 @main() {
%1 = alloca i8
%2 = tail call i32 (...) @clearscreen()
%3 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0))
%4 = tail call i32 @putchar(i32 32)
%5 = tail call i32 @colorize(i8 signext 65, i32 1)
%6 = tail call i32 @putchar(i32 32)
%7 = tail call i32 @colorize(i8 signext 83, i32 2)
%8 = tail call i32 @putchar(i32 32)
%9 = tail call i32 @colorize(i8 signext 67, i32 3)
%10 = tail call i32 @putchar(i32 32)
%11 = tail call i32 @colorize(i8 signext 73, i32 4)
%12 = tail call i32 @putchar(i32 32)
%13 = tail call i32 @colorize(i8 signext 73, i32 1)
%14 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([5 x i8], [5 x i8]* @.str.2, i64 0, i64 0))
%15 = tail call i32 @colorize(i8 signext 77, i32 2)
%16 = tail call i32 @putchar(i32 32)
%17 = tail call i32 @colorize(i8 signext 65, i32 3)
%18 = tail call i32 @putchar(i32 32)
%19 = tail call i32 @colorize(i8 signext 84, i32 4)
%20 = tail call i32 @putchar(i32 32)
%21 = tail call i32 @colorize(i8 signext 67, i32 1)
%22 = tail call i32 @putchar(i32 32)
%23 = tail call i32 @colorize(i8 signext 72, i32 2)
%24 = tail call i32 @putchar(i32 32)
%25 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([2 x i8], [2 x i8]* @str, i64 0, i64 0))
%26 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([18 x i8], [18 x i8]* @.str.4, i64 0, i64 0))
%27 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([19 x i8], [19 x i8]* @.str.5, i64 0, i64 0))
%28 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([30 x i8], [30 x i8]* @.str.6, i64 0, i64 0))
%29 = tail call i32 @putchar(i32 10)
%30 = call i32 @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.8, i64 0, i64 0), i8* %1)
%31 = load i8, i8* %1
%32 = sext i8 %31 to i32
switch i32 %32, label %78 [
i32 49, label %33
i32 50, label %73
]
33: ; preds = %0
%34 = call i64 (...) @game()
%35 = call i32 (...) @clearscreen()
%36 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([14 x i8], [14 x i8]* @.str.9, i64 0, i64 0))
%37 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([19 x i8], [19 x i8]* @.str.10, i64 0, i64 0), i64 %34)
%38 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0))
%39 = icmp ugt i64 %34, 10999
br i1 %39, label %68, label %40
40: ; preds = %33
%41 = icmp ugt i64 %34, 9999
br i1 %41, label %68, label %42
42: ; preds = %40
%43 = icmp ugt i64 %34, 8999
br i1 %43, label %68, label %44
44: ; preds = %42
%45 = icmp ugt i64 %34, 7999
br i1 %45, label %68, label %46
46: ; preds = %44
%47 = icmp ugt i64 %34, 6999
br i1 %47, label %68, label %48
48: ; preds = %46
%49 = icmp ugt i64 %34, 5999
br i1 %49, label %68, label %50
50: ; preds = %48
%51 = icmp ugt i64 %34, 4999
br i1 %51, label %68, label %52
52: ; preds = %50
%53 = icmp ugt i64 %34, 3999
br i1 %53, label %68, label %54
54: ; preds = %52
%55 = icmp ugt i64 %34, 2999
br i1 %55, label %68, label %56
56: ; preds = %54
%57 = icmp ugt i64 %34, 1999
br i1 %57, label %68, label %58
58: ; preds = %56
%59 = icmp ugt i64 %34, 999
br i1 %59, label %68, label %60
60: ; preds = %58
%61 = icmp ugt i64 %34, 799
br i1 %61, label %68, label %62
62: ; preds = %60
%63 = icmp ugt i64 %34, 399
br i1 %63, label %68, label %64
64: ; preds = %62
%65 = icmp ugt i64 %34, 199
%66 = select i1 %65, i8* getelementptr inbounds ([57 x i8], [57 x i8]* @.str.37, i64 0, i64 0), i8* getelementptr inbounds ([65 x i8], [65 x i8]* @.str.39, i64 0, i64 0)
%67 = select i1 %65, i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.38, i64 0, i64 0), i8* getelementptr inbounds ([54 x i8], [54 x i8]* @.str.40, i64 0, i64 0)
br label %68
68: ; preds = %64, %62, %60, %58, %56, %54, %52, %50, %48, %46, %44, %42, %40, %33
%69 = phi i8* [ getelementptr inbounds ([37 x i8], [37 x i8]* @.str.11, i64 0, i64 0), %33 ], [ getelementptr inbounds ([42 x i8], [42 x i8]* @.str.13, i64 0, i64 0), %40 ], [ getelementptr inbounds ([24 x i8], [24 x i8]* @.str.15, i64 0, i64 0), %42 ], [ getelementptr inbounds ([23 x i8], [23 x i8]* @.str.17, i64 0, i64 0), %44 ], [ getelementptr inbounds ([32 x i8], [32 x i8]* @.str.19, i64 0, i64 0), %46 ], [ getelementptr inbounds ([23 x i8], [23 x i8]* @.str.21, i64 0, i64 0), %48 ], [ getelementptr inbounds ([25 x i8], [25 x i8]* @.str.23, i64 0, i64 0), %50 ], [ getelementptr inbounds ([21 x i8], [21 x i8]* @.str.25, i64 0, i64 0), %52 ], [ getelementptr inbounds ([25 x i8], [25 x i8]* @.str.27, i64 0, i64 0), %54 ], [ getelementptr inbounds ([29 x i8], [29 x i8]* @.str.29, i64 0, i64 0), %56 ], [ getelementptr inbounds ([22 x i8], [22 x i8]* @.str.31, i64 0, i64 0), %58 ], [ getelementptr inbounds ([56 x i8], [56 x i8]* @.str.33, i64 0, i64 0), %60 ], [ getelementptr inbounds ([56 x i8], [56 x i8]* @.str.35, i64 0, i64 0), %62 ], [ %66, %64 ]
%70 = phi i8* [ getelementptr inbounds ([22 x i8], [22 x i8]* @.str.12, i64 0, i64 0), %33 ], [ getelementptr inbounds ([31 x i8], [31 x i8]* @.str.14, i64 0, i64 0), %40 ], [ getelementptr inbounds ([19 x i8], [19 x i8]* @.str.16, i64 0, i64 0), %42 ], [ getelementptr inbounds ([24 x i8], [24 x i8]* @.str.18, i64 0, i64 0), %44 ], [ getelementptr inbounds ([40 x i8], [40 x i8]* @.str.20, i64 0, i64 0), %46 ], [ getelementptr inbounds ([19 x i8], [19 x i8]* @.str.22, i64 0, i64 0), %48 ], [ getelementptr inbounds ([25 x i8], [25 x i8]* @.str.24, i64 0, i64 0), %50 ], [ getelementptr inbounds ([37 x i8], [37 x i8]* @.str.26, i64 0, i64 0), %52 ], [ getelementptr inbounds ([37 x i8], [37 x i8]* @.str.28, i64 0, i64 0), %54 ], [ getelementptr inbounds ([29 x i8], [29 x i8]* @.str.30, i64 0, i64 0), %56 ], [ getelementptr inbounds ([15 x i8], [15 x i8]* @.str.32, i64 0, i64 0), %58 ], [ getelementptr inbounds ([16 x i8], [16 x i8]* @.str.34, i64 0, i64 0), %60 ], [ getelementptr inbounds ([37 x i8], [37 x i8]* @.str.36, i64 0, i64 0), %62 ], [ %67, %64 ]
%71 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) %69)
%72 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) %70)
br label %75
73: ; preds = %0
%74 = call i32 (...) @info()
br label %75
75: ; preds = %73, %68
%76 = phi i8* [ getelementptr inbounds ([27 x i8], [27 x i8]* @str.44, i64 0, i64 0), %68 ], [ getelementptr inbounds ([32 x i8], [32 x i8]* @str.43, i64 0, i64 0), %73 ]
%77 = call i32 @puts(i8* dereferenceable(1) %76)
br label %78
78: ; preds = %75, %0
ret i32 0
}