#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 /*<<< orphan*/ system(char *);
void screen_how_to_play(void) {
  printf("How to Play\n\n");
  printf("Math Game is played by solving various mathematical equations that "
         "are generated. The difficulty of the game effects what type of "
         "equations are generated. Help to help solve a particular type of "
         "equation can be reached at any point. The game can also be saved at "
         "any point, as well as there being an autosave that fires after every "
         "question. To win, simply score as many points as possible with the "
         "10 given questions. When entering answers for questions, please "
         "round your answer to the nearest whole number.\n");
  system("pause");
  system("cls");
}


x86 assembly (clang, -O0):
<screen_how_to_play>:
push   %rbp
mov    %rsp,%rbp
lea    0xed5(%rip),%rdi
call   1040 <printf@plt>
lea    0xed7(%rip),%rdi
call   1040 <printf@plt>
lea    0x10ca(%rip),%rdi
call   1030 <system@plt>
lea    0x10c4(%rip),%rdi
call   1030 <system@plt>
pop    %rbp
ret

x86 assembly (clang, -O2):
<screen_how_to_play>:
push   %rax
lea    0xee2(%rip),%rdi
call   1030 <puts@plt>
lea    0xee3(%rip),%rdi
call   1030 <puts@plt>
lea    0xec0(%rip),%rdi
call   1040 <system@plt>
lea    0xeba(%rip),%rdi
pop    %rax
jmp    1040 <system@plt>

LLVM IR (-O0):
@.str = [14 x i8] c"How to Play\0A\0A\00"
@.str.1 = [511 x i8] c"Math Game is played by solving various mathematical equations that are generated. The difficulty of the game effects what type of equations are generated. Help to help solve a particular type of equation can be reached at any point. The game can also be saved at any point, as well as there being an autosave that fires after every question. To win, simply score as many points as possible with the 10 given questions. When entering answers for questions, please round your answer to the nearest whole number.\0A\00"
@.str.2 = [6 x i8] c"pause\00"
@.str.3 = [4 x i8] c"cls\00"
define void @screen_how_to_play() {
%1 = call i32 @printf(i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str, i64 0, i64 0))
%2 = call i32 @printf(i8* getelementptr inbounds ([511 x i8], [511 x i8]* @.str.1, i64 0, i64 0))
%3 = call i32 @system(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.2, i64 0, i64 0))
%4 = call i32 @system(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.3, i64 0, i64 0))
ret void
}

LLVM IR (-O2):
@.str.2 = [6 x i8] c"pause\00"
@.str.3 = [4 x i8] c"cls\00"
@str = [13 x i8] c"How to Play\0A\00"
@str.4 = [510 x i8] c"Math Game is played by solving various mathematical equations that are generated. The difficulty of the game effects what type of equations are generated. Help to help solve a particular type of equation can be reached at any point. The game can also be saved at any point, as well as there being an autosave that fires after every question. To win, simply score as many points as possible with the 10 given questions. When entering answers for questions, please round your answer to the nearest whole number.\00"
define void @screen_how_to_play() {
%1 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([13 x i8], [13 x i8]* @str, i64 0, i64 0))
%2 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([510 x i8], [510 x i8]* @str.4, i64 0, i64 0))
%3 = tail call i32 @system(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.2, i64 0, i64 0))
%4 = tail call i32 @system(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.3, i64 0, i64 0))
ret void
}