#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 help(int err) {
  printf(
      "                                readanykey\n"
      "                                **********\n"
      "readanykey is a command-line utility for reading KeyUp/KeyDown events\n"
      "in terminal software.  all keypress events are reported as newline "
      "delimited\n"
      "strings.  it allows for much more flexible keyboard input then terminfo "
      "or\n"
      "curses based software, but only works in software terminals running "
      "under\n"
      "X Windows (like xterm, konsole, etc).\n"
      "\n"
      "to test readanykey, type:\n"
      " $ readanykey\n"
      "this will print all KeyUp/KeyDown events to the screen.  pressing "
      "Escape will\n"
      "quit readanykey.\n"
      "\n"
      "to use a different key event to quit readanykey, type:\n"
      " $ readanykey -e 'KeyUp <different-key>'\n"
      "\n"
      "to run readanykey int the terminal without a quit-key, type:\n"
      " $ readanykey -e ''\n"
      "(but be warned, ctrl-z, ctrl-c, and ctrl-\\ will not work, so you will "
      "have to\n"
      " close your software terminal to exit).\n"
      "\n"
      "readanykey can be used in shell scripts, or via a popen() style "
      "function to\n"
      "give any program access to KeyUp/KeyDown events.  when run in this "
      "environment\n"
      "readanykey will default to the \"readanykey -e ''\" behaviour, and will "
      "only\n"
      "exit once its stdout pipe has been closed.\n");
  return err;
}


x86 assembly (clang, -O0):
<help>:
push   %rbp
mov    %rsp,%rbp
sub    $0x10,%rsp
mov    %edi,-0x4(%rbp)
lea    0xede(%rip),%rdi
call   1030 <printf@plt>
mov    -0x4(%rbp),%eax
add    $0x10,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<help>:
push   %rbx
mov    %edi,%ebx
lea    0xee6(%rip),%rdi
call   1030 <puts@plt>
mov    %ebx,%eax
pop    %rbx
ret

LLVM IR (-O0):
@.str = [1128 x i8] c" readanykey\0A **********\0Areadanykey is a command-line utility for reading KeyUp/KeyDown events\0Ain terminal software. all keypress events are reported as newline delimited\0Astrings. it allows for much more flexible keyboard input then terminfo or\0Acurses based software, but only works in software terminals running under\0AX Windows (like xterm, konsole, etc).\0A\0Ato test readanykey, type:\0A $ readanykey\0Athis will print all KeyUp/KeyDown events to the screen. pressing Escape will\0Aquit readanykey.\0A\0Ato use a different key event to quit readanykey, type:\0A $ readanykey -e 'KeyUp <different-key>'\0A\0Ato run readanykey int the terminal without a quit-key, type:\0A $ readanykey -e ''\0A(but be warned, ctrl-z, ctrl-c, and ctrl-\\ will not work, so you will have to\0A close your software terminal to exit).\0A\0Areadanykey can be used in shell scripts, or via a popen() style function to\0Agive any program access to KeyUp/KeyDown events. when run in this environment\0Areadanykey will default to the \22readanykey -e ''\22 behaviour, and will only\0Aexit once its stdout pipe has been closed.\0A\00"
define i32 @help(i32 %0) {
%2 = alloca i32
store i32 %0, i32* %2
%3 = call i32 @printf(i8* getelementptr inbounds ([1128 x i8], [1128 x i8]* @.str, i64 0, i64 0))
%4 = load i32, i32* %2
ret i32 %4
}

LLVM IR (-O2):
@str = [1127 x i8] c" readanykey\0A **********\0Areadanykey is a command-line utility for reading KeyUp/KeyDown events\0Ain terminal software. all keypress events are reported as newline delimited\0Astrings. it allows for much more flexible keyboard input then terminfo or\0Acurses based software, but only works in software terminals running under\0AX Windows (like xterm, konsole, etc).\0A\0Ato test readanykey, type:\0A $ readanykey\0Athis will print all KeyUp/KeyDown events to the screen. pressing Escape will\0Aquit readanykey.\0A\0Ato use a different key event to quit readanykey, type:\0A $ readanykey -e 'KeyUp <different-key>'\0A\0Ato run readanykey int the terminal without a quit-key, type:\0A $ readanykey -e ''\0A(but be warned, ctrl-z, ctrl-c, and ctrl-\\ will not work, so you will have to\0A close your software terminal to exit).\0A\0Areadanykey can be used in shell scripts, or via a popen() style function to\0Agive any program access to KeyUp/KeyDown events. when run in this environment\0Areadanykey will default to the \22readanykey -e ''\22 behaviour, and will only\0Aexit once its stdout pipe has been closed.\00"
define i32 @help(i32 returned %0) {
%2 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([1127 x i8], [1127 x i8]* @str, i64 0, i64 0))
ret i32 %0
}