#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 */
typedef int /*<<< orphan*/ WINDOW;

/* Variables and functions */
char A_BOLD;
char A_NORMAL;
int /*<<< orphan*/ COLOR_BLUE;
int /*<<< orphan*/ COLOR_CYAN;
int /*<<< orphan*/ COLOR_GREEN;
int /*<<< orphan*/ COLOR_MAGENTA;
char COLOR_PAIR(int /*<<< orphan*/);
int /*<<< orphan*/ COLOR_RED;
int /*<<< orphan*/ COLOR_WHITE;
int /*<<< orphan*/ COLOR_YELLOW;
int /*<<< orphan*/ erase_window(int /*<<< orphan*/ *, int, int);
int /*<<< orphan*/ getch();
int /*<<< orphan*/ mvwaddch(int /*<<< orphan*/ *, int, int, char);
int /*<<< orphan*/ mvwaddstr(int /*<<< orphan*/ *, int, int /*<<< orphan*/,
                             char *);
int /*<<< orphan*/ *newwin(int, int, int, int);
int /*<<< orphan*/ pressed(int, char);
char tolower(int /*<<< orphan*/);
int /*<<< orphan*/ wrefresh(int /*<<< orphan*/ *);
void draw_help() {
  char input = ' ';
  WINDOW *win = newwin(15, 37, 5, 43);
  mvwaddstr(win, 1, 0, "You are  , trapped within the horrid ");
  mvwaddstr(win, 2, 0, "walls   of the Cavez of Phear. Dig   ");
  mvwaddstr(win, 3, 0, "through dirt   & avoid deadly rocks  ");
  mvwaddstr(win, 4, 0, "to collect diamonds  . Money   isn't");
  mvwaddstr(win, 5, 0, "neccesary. Run from monsters  . Bombs");
  mvwaddstr(win, 6, 0, "  come in packs  .                   ");
  mvwaddstr(win, 7, 0, "Press ESC to return to the main menu.");
  mvwaddstr(win, 8, 0, "For current controls check settings. ");
  mvwaddch(win, 1, 8, 'Z' | COLOR_PAIR(COLOR_WHITE) | A_BOLD);
  mvwaddch(win, 2, 6, ':' | COLOR_PAIR(COLOR_CYAN) | A_NORMAL);
  mvwaddch(win, 3, 13, '#' | COLOR_PAIR(COLOR_RED) | A_NORMAL);
  mvwaddch(win, 3, 36, 'O' | COLOR_PAIR(COLOR_WHITE) | A_NORMAL);
  mvwaddch(win, 4, 20, '*' | COLOR_PAIR(COLOR_YELLOW) | A_BOLD);
  mvwaddch(win, 4, 29, '$' | COLOR_PAIR(COLOR_GREEN) | A_NORMAL);
  mvwaddch(win, 5, 29, 'M' | COLOR_PAIR(COLOR_MAGENTA) | A_BOLD);
  mvwaddch(win, 6, 0, '@' | COLOR_PAIR(COLOR_BLUE) | A_BOLD);
  mvwaddch(win, 6, 16, '%' | COLOR_PAIR(COLOR_BLUE) | A_BOLD);
  wrefresh(win);
  do {
    input = tolower(getch());
  } while (!pressed(10, input) && input != 27);
  erase_window(win, 15, 37);
}


x86 assembly (clang, -O0):
<draw_help>:
push   %rbp
mov    %rsp,%rbp
sub    $0x60,%rsp
movb   $0x20,-0x1(%rbp)
mov    $0xf,%edi
mov    $0x25,%esi
mov    $0x5,%edx
mov    $0x2b,%ecx
call   1040 <newwin@plt>
mov    %rax,-0x10(%rbp)
mov    -0x10(%rbp),%rdi
mov    $0x1,%esi
xor    %edx,%edx
lea    0xe35(%rip),%rcx
call   10a0 <mvwaddstr@plt>
mov    -0x10(%rbp),%rdi
mov    $0x2,%esi
xor    %edx,%edx
lea    0xe44(%rip),%rcx
call   10a0 <mvwaddstr@plt>
mov    -0x10(%rbp),%rdi
mov    $0x3,%esi
xor    %edx,%edx
lea    0xe53(%rip),%rcx
call   10a0 <mvwaddstr@plt>
mov    -0x10(%rbp),%rdi
mov    $0x4,%esi
xor    %edx,%edx
lea    0xe62(%rip),%rcx
call   10a0 <mvwaddstr@plt>
mov    -0x10(%rbp),%rdi
mov    $0x5,%esi
xor    %edx,%edx
lea    0xe70(%rip),%rcx
call   10a0 <mvwaddstr@plt>
mov    -0x10(%rbp),%rdi
mov    $0x6,%esi
xor    %edx,%edx
lea    0xe7f(%rip),%rcx
call   10a0 <mvwaddstr@plt>
mov    -0x10(%rbp),%rdi
mov    $0x7,%esi
xor    %edx,%edx
lea    0xe8e(%rip),%rcx
call   10a0 <mvwaddstr@plt>
mov    -0x10(%rbp),%rdi
mov    $0x8,%esi
xor    %edx,%edx
lea    0xe9d(%rip),%rcx
call   10a0 <mvwaddstr@plt>
mov    -0x10(%rbp),%rax
mov    %rax,-0x58(%rbp)
mov    0x2d40(%rip),%rax
mov    (%rax),%edi
call   1050 <COLOR_PAIR@plt>
mov    -0x58(%rbp),%rdi
movsbl %al,%eax
or     $0x5a,%eax
mov    0x2d10(%rip),%rcx
movsbl (%rcx),%ecx
or     %ecx,%eax
mov    $0x1,%esi
mov    $0x8,%edx
movsbl %al,%ecx
call   1090 <mvwaddch@plt>
mov    -0x10(%rbp),%rax
mov    %rax,-0x50(%rbp)
mov    0x2d22(%rip),%rax
mov    (%rax),%edi
call   1050 <COLOR_PAIR@plt>
mov    -0x50(%rbp),%rdi
movsbl %al,%eax
or     $0x3a,%eax
mov    0x2d12(%rip),%rcx
movsbl (%rcx),%ecx
or     %ecx,%eax
mov    $0x2,%esi
mov    $0x6,%edx
movsbl %al,%ecx
call   1090 <mvwaddch@plt>
mov    -0x10(%rbp),%rax
mov    %rax,-0x48(%rbp)
mov    0x2ca4(%rip),%rax
mov    (%rax),%edi
call   1050 <COLOR_PAIR@plt>
mov    -0x48(%rbp),%rdi
movsbl %al,%eax
or     $0x23,%eax
mov    0x2cd4(%rip),%rcx
movsbl (%rcx),%ecx
or     %ecx,%eax
mov    $0x3,%esi
mov    $0xd,%edx
movsbl %al,%ecx
call   1090 <mvwaddch@plt>
mov    -0x10(%rbp),%rax
mov    %rax,-0x40(%rbp)
mov    0x2c86(%rip),%rax
mov    (%rax),%edi
call   1050 <COLOR_PAIR@plt>
mov    -0x40(%rbp),%rdi
movsbl %al,%eax
or     $0x4f,%eax
mov    0x2c96(%rip),%rcx
movsbl (%rcx),%ecx
or     %ecx,%eax
mov    $0x3,%esi
mov    $0x24,%edx
movsbl %al,%ecx
call   1090 <mvwaddch@plt>
mov    -0x10(%rbp),%rax
mov    %rax,-0x38(%rbp)
mov    0x2c40(%rip),%rax
mov    (%rax),%edi
call   1050 <COLOR_PAIR@plt>
mov    -0x38(%rbp),%rdi
movsbl %al,%eax
or     $0x2a,%eax
mov    0x2c18(%rip),%rcx
movsbl (%rcx),%ecx
or     %ecx,%eax
mov    $0x4,%esi
mov    $0x14,%edx
movsbl %al,%ecx
call   1090 <mvwaddch@plt>
mov    -0x10(%rbp),%rax
mov    %rax,-0x30(%rbp)
mov    0x2c22(%rip),%rax
mov    (%rax),%edi
call   1050 <COLOR_PAIR@plt>
mov    -0x30(%rbp),%rdi
movsbl %al,%eax
or     $0x24,%eax
mov    0x2c1a(%rip),%rcx
movsbl (%rcx),%ecx
or     %ecx,%eax
mov    $0x4,%esi
mov    $0x1d,%edx
movsbl %al,%ecx
call   1090 <mvwaddch@plt>
mov    -0x10(%rbp),%rax
mov    %rax,-0x28(%rbp)
mov    0x2bd4(%rip),%rax
mov    (%rax),%edi
call   1050 <COLOR_PAIR@plt>
mov    -0x28(%rbp),%rdi
movsbl %al,%eax
or     $0x4d,%eax
mov    0x2b9c(%rip),%rcx
movsbl (%rcx),%ecx
or     %ecx,%eax
mov    $0x5,%esi
mov    $0x1d,%edx
movsbl %al,%ecx
call   1090 <mvwaddch@plt>
mov    -0x10(%rbp),%rax
mov    %rax,-0x20(%rbp)
mov    0x2b7e(%rip),%rax
mov    (%rax),%edi
call   1050 <COLOR_PAIR@plt>
mov    -0x20(%rbp),%rdi
movsbl %al,%eax
or     $0x40,%eax
mov    0x2b5e(%rip),%rcx
movsbl (%rcx),%ecx
or     %ecx,%eax
mov    $0x6,%esi
xor    %edx,%edx
movsbl %al,%ecx
call   1090 <mvwaddch@plt>
mov    -0x10(%rbp),%rax
mov    %rax,-0x18(%rbp)
mov    0x2b43(%rip),%rax
mov    (%rax),%edi
call   1050 <COLOR_PAIR@plt>
mov    -0x18(%rbp),%rdi
movsbl %al,%eax
or     $0x25,%eax
mov    0x2b23(%rip),%rcx
movsbl (%rcx),%ecx
or     %ecx,%eax
mov    $0x6,%esi
mov    $0x10,%edx
movsbl %al,%ecx
call   1090 <mvwaddch@plt>
mov    -0x10(%rbp),%rdi
call   1030 <wrefresh@plt>
mov    $0x0,%al
call   1070 <getch@plt>
mov    %eax,%edi
call   1060 <tolower@plt>
mov    %al,-0x1(%rbp)
mov    $0xa,%edi
movsbl -0x1(%rbp),%esi
call   10b0 <pressed@plt>
mov    %eax,%ecx
xor    %eax,%eax
cmp    $0x0,%ecx
mov    %al,-0x59(%rbp)
jne    14e1 <draw_help+0x351>
movsbl -0x1(%rbp),%eax
cmp    $0x1b,%eax
setne  %al
mov    %al,-0x59(%rbp)
mov    -0x59(%rbp),%al
test   $0x1,%al
jne    14a5 <draw_help+0x315>
mov    -0x10(%rbp),%rdi
mov    $0xf,%esi
mov    $0x25,%edx
call   1080 <erase_window@plt>
add    $0x60,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<draw_help>:
push   %rbp
push   %r15
push   %r14
push   %rbx
push   %rax
mov    $0xf,%edi
mov    $0x25,%esi
mov    $0x5,%edx
mov    $0x2b,%ecx
call   1040 <newwin@plt>
mov    %rax,%rbx
lea    0xe46(%rip),%rcx
mov    %rax,%rdi
mov    $0x1,%esi
xor    %edx,%edx
call   10a0 <mvwaddstr@plt>
lea    0xe56(%rip),%rcx
mov    %rbx,%rdi
mov    $0x2,%esi
xor    %edx,%edx
call   10a0 <mvwaddstr@plt>
lea    0xe66(%rip),%rcx
mov    %rbx,%rdi
mov    $0x3,%esi
xor    %edx,%edx
call   10a0 <mvwaddstr@plt>
lea    0xe76(%rip),%rcx
mov    %rbx,%rdi
mov    $0x4,%esi
xor    %edx,%edx
call   10a0 <mvwaddstr@plt>
lea    0xe85(%rip),%rcx
mov    %rbx,%rdi
mov    $0x5,%esi
xor    %edx,%edx
call   10a0 <mvwaddstr@plt>
lea    0xe95(%rip),%rcx
mov    %rbx,%rdi
mov    $0x6,%esi
xor    %edx,%edx
call   10a0 <mvwaddstr@plt>
lea    0xea5(%rip),%rcx
mov    %rbx,%rdi
mov    $0x7,%esi
xor    %edx,%edx
call   10a0 <mvwaddstr@plt>
lea    0xeb5(%rip),%rcx
mov    %rbx,%rdi
mov    $0x8,%esi
xor    %edx,%edx
call   10a0 <mvwaddstr@plt>
mov    0x2d56(%rip),%r15
mov    (%r15),%edi
call   1050 <COLOR_PAIR@plt>
mov    0x2d2f(%rip),%r14
or     (%r14),%al
or     $0x5a,%al
movsbl %al,%ecx
mov    %rbx,%rdi
mov    $0x1,%esi
mov    $0x8,%edx
call   1090 <mvwaddch@plt>
mov    0x2d46(%rip),%rax
mov    (%rax),%edi
call   1050 <COLOR_PAIR@plt>
mov    0x2d40(%rip),%rbp
or     0x0(%rbp),%al
or     $0x3a,%al
movsbl %al,%ecx
mov    %rbx,%rdi
mov    $0x2,%esi
mov    $0x6,%edx
call   1090 <mvwaddch@plt>
mov    0x2cd7(%rip),%rax
mov    (%rax),%edi
call   1050 <COLOR_PAIR@plt>
or     0x0(%rbp),%al
or     $0x23,%al
movsbl %al,%ecx
mov    %rbx,%rdi
mov    $0x3,%esi
mov    $0xd,%edx
call   1090 <mvwaddch@plt>
mov    (%r15),%edi
call   1050 <COLOR_PAIR@plt>
or     0x0(%rbp),%al
or     $0x4f,%al
movsbl %al,%ecx
mov    %rbx,%rdi
mov    $0x3,%esi
mov    $0x24,%edx
call   1090 <mvwaddch@plt>
mov    0x2ca5(%rip),%rax
mov    (%rax),%edi
call   1050 <COLOR_PAIR@plt>
or     (%r14),%al
or     $0x2a,%al
movsbl %al,%ecx
mov    %rbx,%rdi
mov    $0x4,%esi
mov    $0x14,%edx
call   1090 <mvwaddch@plt>
mov    0x2c9d(%rip),%rax
mov    (%rax),%edi
call   1050 <COLOR_PAIR@plt>
or     0x0(%rbp),%al
or     $0x24,%al
movsbl %al,%ecx
mov    %rbx,%rdi
mov    $0x4,%esi
mov    $0x1d,%edx
call   1090 <mvwaddch@plt>
mov    0x2c65(%rip),%rax
mov    (%rax),%edi
call   1050 <COLOR_PAIR@plt>
or     (%r14),%al
or     $0x4d,%al
movsbl %al,%ecx
mov    %rbx,%rdi
mov    $0x5,%esi
mov    $0x1d,%edx
call   1090 <mvwaddch@plt>
mov    0x2c25(%rip),%rbp
mov    0x0(%rbp),%edi
call   1050 <COLOR_PAIR@plt>
or     (%r14),%al
or     $0x40,%al
movsbl %al,%ecx
mov    %rbx,%rdi
mov    $0x6,%esi
xor    %edx,%edx
call   1090 <mvwaddch@plt>
mov    0x0(%rbp),%edi
call   1050 <COLOR_PAIR@plt>
or     (%r14),%al
or     $0x25,%al
movsbl %al,%ecx
mov    %rbx,%rdi
mov    $0x6,%esi
mov    $0x10,%edx
call   1090 <mvwaddch@plt>
mov    %rbx,%rdi
call   1030 <wrefresh@plt>
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
xor    %eax,%eax
call   1070 <getch@plt>
mov    %eax,%edi
call   1060 <tolower@plt>
movsbl %al,%ebp
mov    $0xa,%edi
mov    %ebp,%esi
call   10b0 <pressed@plt>
cmp    $0x1b,%bpl
je     1407 <draw_help+0x277>
test   %eax,%eax
je     13e0 <draw_help+0x250>
mov    %rbx,%rdi
mov    $0xf,%esi
mov    $0x25,%edx
add    $0x8,%rsp
pop    %rbx
pop    %r14
pop    %r15
pop    %rbp
jmp    1080 <erase_window@plt>

LLVM IR (-O0):
@.str = [38 x i8] c"You are , trapped within the horrid \00"
@.str.1 = [38 x i8] c"walls of the Cavez of Phear. Dig \00"
@.str.2 = [38 x i8] c"through dirt & avoid deadly rocks \00"
@.str.3 = [37 x i8] c"to collect diamonds . Money isn't\00"
@.str.4 = [38 x i8] c"neccesary. Run from monsters . Bombs\00"
@.str.5 = [38 x i8] c" come in packs . \00"
@.str.6 = [38 x i8] c"Press ESC to return to the main menu.\00"
@.str.7 = [38 x i8] c"For current controls check settings. \00"
@COLOR_WHITE = global i32 0
@A_BOLD = global i8 0
@COLOR_CYAN = global i32 0
@A_NORMAL = global i8 0
@COLOR_RED = global i32 0
@COLOR_YELLOW = global i32 0
@COLOR_GREEN = global i32 0
@COLOR_MAGENTA = global i32 0
@COLOR_BLUE = global i32 0
define void @draw_help() {
%1 = alloca i8
%2 = alloca i32*
store i8 32, i8* %1
%3 = call i32* @newwin(i32 15, i32 37, i32 5, i32 43)
store i32* %3, i32** %2
%4 = load i32*, i32** %2
%5 = call i32 @mvwaddstr(i32* %4, i32 1, i32 0, i8* getelementptr inbounds ([38 x i8], [38 x i8]* @.str, i64 0, i64 0))
%6 = load i32*, i32** %2
%7 = call i32 @mvwaddstr(i32* %6, i32 2, i32 0, i8* getelementptr inbounds ([38 x i8], [38 x i8]* @.str.1, i64 0, i64 0))
%8 = load i32*, i32** %2
%9 = call i32 @mvwaddstr(i32* %8, i32 3, i32 0, i8* getelementptr inbounds ([38 x i8], [38 x i8]* @.str.2, i64 0, i64 0))
%10 = load i32*, i32** %2
%11 = call i32 @mvwaddstr(i32* %10, i32 4, i32 0, i8* getelementptr inbounds ([37 x i8], [37 x i8]* @.str.3, i64 0, i64 0))
%12 = load i32*, i32** %2
%13 = call i32 @mvwaddstr(i32* %12, i32 5, i32 0, i8* getelementptr inbounds ([38 x i8], [38 x i8]* @.str.4, i64 0, i64 0))
%14 = load i32*, i32** %2
%15 = call i32 @mvwaddstr(i32* %14, i32 6, i32 0, i8* getelementptr inbounds ([38 x i8], [38 x i8]* @.str.5, i64 0, i64 0))
%16 = load i32*, i32** %2
%17 = call i32 @mvwaddstr(i32* %16, i32 7, i32 0, i8* getelementptr inbounds ([38 x i8], [38 x i8]* @.str.6, i64 0, i64 0))
%18 = load i32*, i32** %2
%19 = call i32 @mvwaddstr(i32* %18, i32 8, i32 0, i8* getelementptr inbounds ([38 x i8], [38 x i8]* @.str.7, i64 0, i64 0))
%20 = load i32*, i32** %2
%21 = load i32, i32* @COLOR_WHITE
%22 = call signext i8 @COLOR_PAIR(i32 %21)
%23 = sext i8 %22 to i32
%24 = or i32 90, %23
%25 = load i8, i8* @A_BOLD
%26 = sext i8 %25 to i32
%27 = or i32 %24, %26
%28 = trunc i32 %27 to i8
%29 = call i32 @mvwaddch(i32* %20, i32 1, i32 8, i8 signext %28)
%30 = load i32*, i32** %2
%31 = load i32, i32* @COLOR_CYAN
%32 = call signext i8 @COLOR_PAIR(i32 %31)
%33 = sext i8 %32 to i32
%34 = or i32 58, %33
%35 = load i8, i8* @A_NORMAL
%36 = sext i8 %35 to i32
%37 = or i32 %34, %36
%38 = trunc i32 %37 to i8
%39 = call i32 @mvwaddch(i32* %30, i32 2, i32 6, i8 signext %38)
%40 = load i32*, i32** %2
%41 = load i32, i32* @COLOR_RED
%42 = call signext i8 @COLOR_PAIR(i32 %41)
%43 = sext i8 %42 to i32
%44 = or i32 35, %43
%45 = load i8, i8* @A_NORMAL
%46 = sext i8 %45 to i32
%47 = or i32 %44, %46
%48 = trunc i32 %47 to i8
%49 = call i32 @mvwaddch(i32* %40, i32 3, i32 13, i8 signext %48)
%50 = load i32*, i32** %2
%51 = load i32, i32* @COLOR_WHITE
%52 = call signext i8 @COLOR_PAIR(i32 %51)
%53 = sext i8 %52 to i32
%54 = or i32 79, %53
%55 = load i8, i8* @A_NORMAL
%56 = sext i8 %55 to i32
%57 = or i32 %54, %56
%58 = trunc i32 %57 to i8
%59 = call i32 @mvwaddch(i32* %50, i32 3, i32 36, i8 signext %58)
%60 = load i32*, i32** %2
%61 = load i32, i32* @COLOR_YELLOW
%62 = call signext i8 @COLOR_PAIR(i32 %61)
%63 = sext i8 %62 to i32
%64 = or i32 42, %63
%65 = load i8, i8* @A_BOLD
%66 = sext i8 %65 to i32
%67 = or i32 %64, %66
%68 = trunc i32 %67 to i8
%69 = call i32 @mvwaddch(i32* %60, i32 4, i32 20, i8 signext %68)
%70 = load i32*, i32** %2
%71 = load i32, i32* @COLOR_GREEN
%72 = call signext i8 @COLOR_PAIR(i32 %71)
%73 = sext i8 %72 to i32
%74 = or i32 36, %73
%75 = load i8, i8* @A_NORMAL
%76 = sext i8 %75 to i32
%77 = or i32 %74, %76
%78 = trunc i32 %77 to i8
%79 = call i32 @mvwaddch(i32* %70, i32 4, i32 29, i8 signext %78)
%80 = load i32*, i32** %2
%81 = load i32, i32* @COLOR_MAGENTA
%82 = call signext i8 @COLOR_PAIR(i32 %81)
%83 = sext i8 %82 to i32
%84 = or i32 77, %83
%85 = load i8, i8* @A_BOLD
%86 = sext i8 %85 to i32
%87 = or i32 %84, %86
%88 = trunc i32 %87 to i8
%89 = call i32 @mvwaddch(i32* %80, i32 5, i32 29, i8 signext %88)
%90 = load i32*, i32** %2
%91 = load i32, i32* @COLOR_BLUE
%92 = call signext i8 @COLOR_PAIR(i32 %91)
%93 = sext i8 %92 to i32
%94 = or i32 64, %93
%95 = load i8, i8* @A_BOLD
%96 = sext i8 %95 to i32
%97 = or i32 %94, %96
%98 = trunc i32 %97 to i8
%99 = call i32 @mvwaddch(i32* %90, i32 6, i32 0, i8 signext %98)
%100 = load i32*, i32** %2
%101 = load i32, i32* @COLOR_BLUE
%102 = call signext i8 @COLOR_PAIR(i32 %101)
%103 = sext i8 %102 to i32
%104 = or i32 37, %103
%105 = load i8, i8* @A_BOLD
%106 = sext i8 %105 to i32
%107 = or i32 %104, %106
%108 = trunc i32 %107 to i8
%109 = call i32 @mvwaddch(i32* %100, i32 6, i32 16, i8 signext %108)
%110 = load i32*, i32** %2
%111 = call i32 @wrefresh(i32* %110)
br label %112
112: ; preds = %123, %0
%113 = call i32 (...) @getch()
%114 = call signext i8 @tolower(i32 %113)
store i8 %114, i8* %1
br label %115
115: ; preds = %112
%116 = load i8, i8* %1
%117 = call i32 @pressed(i32 10, i8 signext %116)
%118 = icmp ne i32 %117, 0
br i1 %118, label %123, label %119
119: ; preds = %115
%120 = load i8, i8* %1
%121 = sext i8 %120 to i32
%122 = icmp ne i32 %121, 27
br label %123
123: ; preds = %119, %115
%124 = phi i1 [ false, %115 ], [ %122, %119 ]
br i1 %124, label %112, label %125
125: ; preds = %123
%126 = load i32*, i32** %2
%127 = call i32 @erase_window(i32* %126, i32 15, i32 37)
ret void
}

LLVM IR (-O2):
@.str = [38 x i8] c"You are , trapped within the horrid \00"
@.str.1 = [38 x i8] c"walls of the Cavez of Phear. Dig \00"
@.str.2 = [38 x i8] c"through dirt & avoid deadly rocks \00"
@.str.3 = [37 x i8] c"to collect diamonds . Money isn't\00"
@.str.4 = [38 x i8] c"neccesary. Run from monsters . Bombs\00"
@.str.5 = [38 x i8] c" come in packs . \00"
@.str.6 = [38 x i8] c"Press ESC to return to the main menu.\00"
@.str.7 = [38 x i8] c"For current controls check settings. \00"
@COLOR_WHITE = global i32 0
@A_BOLD = global i8 0
@COLOR_CYAN = global i32 0
@A_NORMAL = global i8 0
@COLOR_RED = global i32 0
@COLOR_YELLOW = global i32 0
@COLOR_GREEN = global i32 0
@COLOR_MAGENTA = global i32 0
@COLOR_BLUE = global i32 0
define void @draw_help() {
%1 = tail call i32* @newwin(i32 15, i32 37, i32 5, i32 43)
%2 = tail call i32 @mvwaddstr(i32* %1, i32 1, i32 0, i8* getelementptr inbounds ([38 x i8], [38 x i8]* @.str, i64 0, i64 0))
%3 = tail call i32 @mvwaddstr(i32* %1, i32 2, i32 0, i8* getelementptr inbounds ([38 x i8], [38 x i8]* @.str.1, i64 0, i64 0))
%4 = tail call i32 @mvwaddstr(i32* %1, i32 3, i32 0, i8* getelementptr inbounds ([38 x i8], [38 x i8]* @.str.2, i64 0, i64 0))
%5 = tail call i32 @mvwaddstr(i32* %1, i32 4, i32 0, i8* getelementptr inbounds ([37 x i8], [37 x i8]* @.str.3, i64 0, i64 0))
%6 = tail call i32 @mvwaddstr(i32* %1, i32 5, i32 0, i8* getelementptr inbounds ([38 x i8], [38 x i8]* @.str.4, i64 0, i64 0))
%7 = tail call i32 @mvwaddstr(i32* %1, i32 6, i32 0, i8* getelementptr inbounds ([38 x i8], [38 x i8]* @.str.5, i64 0, i64 0))
%8 = tail call i32 @mvwaddstr(i32* %1, i32 7, i32 0, i8* getelementptr inbounds ([38 x i8], [38 x i8]* @.str.6, i64 0, i64 0))
%9 = tail call i32 @mvwaddstr(i32* %1, i32 8, i32 0, i8* getelementptr inbounds ([38 x i8], [38 x i8]* @.str.7, i64 0, i64 0))
%10 = load i32, i32* @COLOR_WHITE
%11 = tail call signext i8 @COLOR_PAIR(i32 %10)
%12 = load i8, i8* @A_BOLD
%13 = or i8 %11, %12
%14 = or i8 %13, 90
%15 = tail call i32 @mvwaddch(i32* %1, i32 1, i32 8, i8 signext %14)
%16 = load i32, i32* @COLOR_CYAN
%17 = tail call signext i8 @COLOR_PAIR(i32 %16)
%18 = load i8, i8* @A_NORMAL
%19 = or i8 %17, %18
%20 = or i8 %19, 58
%21 = tail call i32 @mvwaddch(i32* %1, i32 2, i32 6, i8 signext %20)
%22 = load i32, i32* @COLOR_RED
%23 = tail call signext i8 @COLOR_PAIR(i32 %22)
%24 = load i8, i8* @A_NORMAL
%25 = or i8 %23, %24
%26 = or i8 %25, 35
%27 = tail call i32 @mvwaddch(i32* %1, i32 3, i32 13, i8 signext %26)
%28 = load i32, i32* @COLOR_WHITE
%29 = tail call signext i8 @COLOR_PAIR(i32 %28)
%30 = load i8, i8* @A_NORMAL
%31 = or i8 %29, %30
%32 = or i8 %31, 79
%33 = tail call i32 @mvwaddch(i32* %1, i32 3, i32 36, i8 signext %32)
%34 = load i32, i32* @COLOR_YELLOW
%35 = tail call signext i8 @COLOR_PAIR(i32 %34)
%36 = load i8, i8* @A_BOLD
%37 = or i8 %35, %36
%38 = or i8 %37, 42
%39 = tail call i32 @mvwaddch(i32* %1, i32 4, i32 20, i8 signext %38)
%40 = load i32, i32* @COLOR_GREEN
%41 = tail call signext i8 @COLOR_PAIR(i32 %40)
%42 = load i8, i8* @A_NORMAL
%43 = or i8 %41, %42
%44 = or i8 %43, 36
%45 = tail call i32 @mvwaddch(i32* %1, i32 4, i32 29, i8 signext %44)
%46 = load i32, i32* @COLOR_MAGENTA
%47 = tail call signext i8 @COLOR_PAIR(i32 %46)
%48 = load i8, i8* @A_BOLD
%49 = or i8 %47, %48
%50 = or i8 %49, 77
%51 = tail call i32 @mvwaddch(i32* %1, i32 5, i32 29, i8 signext %50)
%52 = load i32, i32* @COLOR_BLUE
%53 = tail call signext i8 @COLOR_PAIR(i32 %52)
%54 = load i8, i8* @A_BOLD
%55 = or i8 %53, %54
%56 = or i8 %55, 64
%57 = tail call i32 @mvwaddch(i32* %1, i32 6, i32 0, i8 signext %56)
%58 = load i32, i32* @COLOR_BLUE
%59 = tail call signext i8 @COLOR_PAIR(i32 %58)
%60 = load i8, i8* @A_BOLD
%61 = or i8 %59, %60
%62 = or i8 %61, 37
%63 = tail call i32 @mvwaddch(i32* %1, i32 6, i32 16, i8 signext %62)
%64 = tail call i32 @wrefresh(i32* %1)
br label %65
65: ; preds = %65, %0
%66 = tail call i32 (...) @getch()
%67 = tail call signext i8 @tolower(i32 %66)
%68 = tail call i32 @pressed(i32 10, i8 signext %67)
%69 = icmp eq i32 %68, 0
%70 = icmp ne i8 %67, 27
%71 = and i1 %70, %69
br i1 %71, label %65, label %72
72: ; preds = %65
%73 = tail call i32 @erase_window(i32* %1, i32 15, i32 37)
ret void
}