#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 help(void) {
  printf("To start, do \"rps {name}\" to login as that user, and do \"rpc\" to "
         "login as guest user.\nEach new user will create a new save file in "
         "running directory containing all rounds play'd by that user, time "
         "since last round, and when he started or quit.\nUsername of "
         "\"guest\" will login as a guest.\nAfter that command, you can type "
         "in any word starting with \'r\' or \'R\' to play as rock, \'p\' or "
         "\'P\' to play as paper, and 's' or 'S' to play as scissors.\nAny "
         "command starting with \'e\', \'E\', \'q\', or \'Q\' will act as exit "
         "command quitting the game.\nIf login was \"help\", \"-help\", "
         "\"--help\" or command started with \'h\' or \'H\', it will print out "
         "the help message\nCommand starting with \'c\' or \'C\' will count "
         "the win, tie and loss of the current login.\n");
}


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

x86 assembly (clang, -O2):
<help>:
lea    0xee9(%rip),%rdi
jmp    1030 <puts@plt>

LLVM IR (-O0):
@.str = [730 x i8] c"To start, do \22rps {name}\22 to login as that user, and do \22rpc\22 to login as guest user.\0AEach new user will create a new save file in running directory containing all rounds play'd by that user, time since last round, and when he started or quit.\0AUsername of \22guest\22 will login as a guest.\0AAfter that command, you can type in any word starting with 'r' or 'R' to play as rock, 'p' or 'P' to play as paper, and 's' or 'S' to play as scissors.\0AAny command starting with 'e', 'E', 'q', or 'Q' will act as exit command quitting the game.\0AIf login was \22help\22, \22-help\22, \22--help\22 or command started with 'h' or 'H', it will print out the help message\0ACommand starting with 'c' or 'C' will count the win, tie and loss of the current login.\0A\00"
define void @help() {
%1 = call i32 @printf(i8* getelementptr inbounds ([730 x i8], [730 x i8]* @.str, i64 0, i64 0))
ret void
}

LLVM IR (-O2):
@str = [729 x i8] c"To start, do \22rps {name}\22 to login as that user, and do \22rpc\22 to login as guest user.\0AEach new user will create a new save file in running directory containing all rounds play'd by that user, time since last round, and when he started or quit.\0AUsername of \22guest\22 will login as a guest.\0AAfter that command, you can type in any word starting with 'r' or 'R' to play as rock, 'p' or 'P' to play as paper, and 's' or 'S' to play as scissors.\0AAny command starting with 'e', 'E', 'q', or 'Q' will act as exit command quitting the game.\0AIf login was \22help\22, \22-help\22, \22--help\22 or command started with 'h' or 'H', it will print out the help message\0ACommand starting with 'c' or 'C' will count the win, tie and loss of the current login.\00"
define void @help() {
%1 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([729 x i8], [729 x i8]* @str, i64 0, i64 0))
ret void
}