#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 printInstruction() {
  printf("The scenario is you are the guard of planet Alderaan.\n"
         "Now your home planet is underattack.\n"
         "A large number of saucers are dispatching from Death Star"
         " to Alderaan.\n"
         "Take action and protect your home planet!\n");
  printf("=============================================================\n"
         "|Quit(Q), Pause(P), Resume(R), Left(,), Right(.),Fire(SPACE)|\n"
         "+-----------------------------------------------------------+\n"
         "| A rockest is deconstructed as soon as it hits a saucer or |\n"
         "| more rockets in the same attacking range. Thus it cannot  |\n"
         "| proceed to hit other saucers.                             |\n"
         "+-----------------------------------------------------------+\n"
         "| This game has multiple levels for you to discover!        |\n"
         "| Each level, the score and rewards will vary as well as the|\n"
         "| speed of a saucer and the interval between saucers.       |\n"
         "+-----------------------------------------------------------+\n"
         "| As soon as you level up, you could choose to buy extra    |\n"
         "| rockets by trading some scores in the game store.         |\n"
         "+-----------------------------------------------------------+\n"
         "| * For best performance, please use 80*20 screen           |\n"
         "+-----------------------------------------------------------+\n");
  return;
}


x86 assembly (clang, -O0):
<printInstruction>:
push   %rbp
mov    %rsp,%rbp
lea    0xee5(%rip),%rdi
call   1030 <printf@plt>
lea    0xfa6(%rip),%rdi
call   1030 <printf@plt>
pop    %rbp
ret

x86 assembly (clang, -O2):
<printInstruction>:
push   %rax
lea    0xee8(%rip),%rdi
call   1030 <puts@plt>
lea    0xfa8(%rip),%rdi
pop    %rax
jmp    1030 <puts@plt>

LLVM IR (-O0):
@.str = [205 x i8] c"The scenario is you are the guard of planet Alderaan.\0ANow your home planet is underattack.\0AA large number of saucers are dispatching from Death Star to Alderaan.\0ATake action and protect your home planet!\0A\00"
@.str.1 = [993 x i8] c"=============================================================\0A|Quit(Q), Pause(P), Resume(R), Left(,), Right(.),Fire(SPACE)|\0A+-----------------------------------------------------------+\0A| A rockest is deconstructed as soon as it hits a saucer or |\0A| more rockets in the same attacking range. Thus it cannot |\0A| proceed to hit other saucers. |\0A+-----------------------------------------------------------+\0A| This game has multiple levels for you to discover! |\0A| Each level, the score and rewards will vary as well as the|\0A| speed of a saucer and the interval between saucers. |\0A+-----------------------------------------------------------+\0A| As soon as you level up, you could choose to buy extra |\0A| rockets by trading some scores in the game store. |\0A+-----------------------------------------------------------+\0A| * For best performance, please use 80*20 screen |\0A+-----------------------------------------------------------+\0A\00"
define void @printInstruction() {
%1 = call i32 @printf(i8* getelementptr inbounds ([205 x i8], [205 x i8]* @.str, i64 0, i64 0))
%2 = call i32 @printf(i8* getelementptr inbounds ([993 x i8], [993 x i8]* @.str.1, i64 0, i64 0))
ret void
}

LLVM IR (-O2):
@str = [204 x i8] c"The scenario is you are the guard of planet Alderaan.\0ANow your home planet is underattack.\0AA large number of saucers are dispatching from Death Star to Alderaan.\0ATake action and protect your home planet!\00"
@str.2 = [992 x i8] c"=============================================================\0A|Quit(Q), Pause(P), Resume(R), Left(,), Right(.),Fire(SPACE)|\0A+-----------------------------------------------------------+\0A| A rockest is deconstructed as soon as it hits a saucer or |\0A| more rockets in the same attacking range. Thus it cannot |\0A| proceed to hit other saucers. |\0A+-----------------------------------------------------------+\0A| This game has multiple levels for you to discover! |\0A| Each level, the score and rewards will vary as well as the|\0A| speed of a saucer and the interval between saucers. |\0A+-----------------------------------------------------------+\0A| As soon as you level up, you could choose to buy extra |\0A| rockets by trading some scores in the game store. |\0A+-----------------------------------------------------------+\0A| * For best performance, please use 80*20 screen |\0A+-----------------------------------------------------------+\00"
define void @printInstruction() {
%1 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([204 x i8], [204 x i8]* @str, i64 0, i64 0))
%2 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([992 x i8], [992 x i8]* @str.2, i64 0, i64 0))
ret void
}