#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*/ Term_clear();
int /*<<< orphan*/ c_prt(int, char *, int, int);
void show_levels(void) {
  Term_clear();
  c_prt(1, "[a] Stats, sustains, luck, speed, vision, etc.          ", 3, 10);
  c_prt(1, "[b] Misc. (Auras, light, see invis, etc)                ", 4, 10);
  c_prt(1, "[c] Weapon Branding                                     ", 5, 10);
  c_prt(1, "[d] Resistances and Immunities                          ", 6, 10);
  c_prt(1, "[e] ESP and Curses                                      ", 7, 10);
  c_prt(1, "[f] Activation                                          ", 8, 10);
  c_prt(0, "[g] Abilities Gained                                    ", 9, 10);
  c_prt(1, "[h] Display Required Essences and items                 ", 10, 10);
  c_prt(1, "[i] Done! Finalize and commit changes.                  ", 11, 10);
}


x86 assembly (clang, -O0):
<show_levels>:
push   %rbp
mov    %rsp,%rbp
mov    $0x0,%al
call   1040 <Term_clear@plt>
mov    $0x1,%edi
lea    0xec9(%rip),%rsi
mov    $0x3,%edx
mov    $0xa,%ecx
call   1030 <c_prt@plt>
mov    $0x1,%edi
lea    0xee7(%rip),%rsi
mov    $0x4,%edx
mov    $0xa,%ecx
call   1030 <c_prt@plt>
mov    $0x1,%edi
lea    0xf05(%rip),%rsi
mov    $0x5,%edx
mov    $0xa,%ecx
call   1030 <c_prt@plt>
mov    $0x1,%edi
lea    0xf23(%rip),%rsi
mov    $0x6,%edx
mov    $0xa,%ecx
call   1030 <c_prt@plt>
mov    $0x1,%edi
lea    0xf41(%rip),%rsi
mov    $0x7,%edx
mov    $0xa,%ecx
call   1030 <c_prt@plt>
mov    $0x1,%edi
lea    0xf5f(%rip),%rsi
mov    $0x8,%edx
mov    $0xa,%ecx
call   1030 <c_prt@plt>
xor    %edi,%edi
lea    0xf80(%rip),%rsi
mov    $0x9,%edx
mov    $0xa,%ecx
call   1030 <c_prt@plt>
mov    $0x1,%edi
lea    0xf9e(%rip),%rsi
mov    $0xa,%ecx
mov    %ecx,%edx
call   1030 <c_prt@plt>
mov    $0x1,%edi
lea    0xfbf(%rip),%rsi
mov    $0xb,%edx
mov    $0xa,%ecx
call   1030 <c_prt@plt>
pop    %rbp
ret

x86 assembly (clang, -O2):
<show_levels>:
push   %rax
xor    %eax,%eax
call   1040 <Term_clear@plt>
lea    0xed1(%rip),%rsi
mov    $0x1,%edi
mov    $0x3,%edx
mov    $0xa,%ecx
call   1030 <c_prt@plt>
lea    0xeef(%rip),%rsi
mov    $0x1,%edi
mov    $0x4,%edx
mov    $0xa,%ecx
call   1030 <c_prt@plt>
lea    0xf0d(%rip),%rsi
mov    $0x1,%edi
mov    $0x5,%edx
mov    $0xa,%ecx
call   1030 <c_prt@plt>
lea    0xf2b(%rip),%rsi
mov    $0x1,%edi
mov    $0x6,%edx
mov    $0xa,%ecx
call   1030 <c_prt@plt>
lea    0xf49(%rip),%rsi
mov    $0x1,%edi
mov    $0x7,%edx
mov    $0xa,%ecx
call   1030 <c_prt@plt>
lea    0xf67(%rip),%rsi
mov    $0x1,%edi
mov    $0x8,%edx
mov    $0xa,%ecx
call   1030 <c_prt@plt>
lea    0xf85(%rip),%rsi
xor    %edi,%edi
mov    $0x9,%edx
mov    $0xa,%ecx
call   1030 <c_prt@plt>
lea    0xfa6(%rip),%rsi
mov    $0x1,%edi
mov    $0xa,%edx
mov    $0xa,%ecx
call   1030 <c_prt@plt>
lea    0xfc4(%rip),%rsi
mov    $0x1,%edi
mov    $0xb,%edx
mov    $0xa,%ecx
pop    %rax
jmp    1030 <c_prt@plt>

LLVM IR (-O0):
@.str = [57 x i8] c"[a] Stats, sustains, luck, speed, vision, etc. \00"
@.str.1 = [57 x i8] c"[b] Misc. (Auras, light, see invis, etc) \00"
@.str.2 = [57 x i8] c"[c] Weapon Branding \00"
@.str.3 = [57 x i8] c"[d] Resistances and Immunities \00"
@.str.4 = [57 x i8] c"[e] ESP and Curses \00"
@.str.5 = [57 x i8] c"[f] Activation \00"
@.str.6 = [57 x i8] c"[g] Abilities Gained \00"
@.str.7 = [57 x i8] c"[h] Display Required Essences and items \00"
@.str.8 = [57 x i8] c"[i] Done! Finalize and commit changes. \00"
define void @show_levels() {
%1 = call i32 (...) @Term_clear()
%2 = call i32 @c_prt(i32 1, i8* getelementptr inbounds ([57 x i8], [57 x i8]* @.str, i64 0, i64 0), i32 3, i32 10)
%3 = call i32 @c_prt(i32 1, i8* getelementptr inbounds ([57 x i8], [57 x i8]* @.str.1, i64 0, i64 0), i32 4, i32 10)
%4 = call i32 @c_prt(i32 1, i8* getelementptr inbounds ([57 x i8], [57 x i8]* @.str.2, i64 0, i64 0), i32 5, i32 10)
%5 = call i32 @c_prt(i32 1, i8* getelementptr inbounds ([57 x i8], [57 x i8]* @.str.3, i64 0, i64 0), i32 6, i32 10)
%6 = call i32 @c_prt(i32 1, i8* getelementptr inbounds ([57 x i8], [57 x i8]* @.str.4, i64 0, i64 0), i32 7, i32 10)
%7 = call i32 @c_prt(i32 1, i8* getelementptr inbounds ([57 x i8], [57 x i8]* @.str.5, i64 0, i64 0), i32 8, i32 10)
%8 = call i32 @c_prt(i32 0, i8* getelementptr inbounds ([57 x i8], [57 x i8]* @.str.6, i64 0, i64 0), i32 9, i32 10)
%9 = call i32 @c_prt(i32 1, i8* getelementptr inbounds ([57 x i8], [57 x i8]* @.str.7, i64 0, i64 0), i32 10, i32 10)
%10 = call i32 @c_prt(i32 1, i8* getelementptr inbounds ([57 x i8], [57 x i8]* @.str.8, i64 0, i64 0), i32 11, i32 10)
ret void
}

LLVM IR (-O2):
@.str = [57 x i8] c"[a] Stats, sustains, luck, speed, vision, etc. \00"
@.str.1 = [57 x i8] c"[b] Misc. (Auras, light, see invis, etc) \00"
@.str.2 = [57 x i8] c"[c] Weapon Branding \00"
@.str.3 = [57 x i8] c"[d] Resistances and Immunities \00"
@.str.4 = [57 x i8] c"[e] ESP and Curses \00"
@.str.5 = [57 x i8] c"[f] Activation \00"
@.str.6 = [57 x i8] c"[g] Abilities Gained \00"
@.str.7 = [57 x i8] c"[h] Display Required Essences and items \00"
@.str.8 = [57 x i8] c"[i] Done! Finalize and commit changes. \00"
define void @show_levels() {
%1 = tail call i32 (...) @Term_clear()
%2 = tail call i32 @c_prt(i32 1, i8* getelementptr inbounds ([57 x i8], [57 x i8]* @.str, i64 0, i64 0), i32 3, i32 10)
%3 = tail call i32 @c_prt(i32 1, i8* getelementptr inbounds ([57 x i8], [57 x i8]* @.str.1, i64 0, i64 0), i32 4, i32 10)
%4 = tail call i32 @c_prt(i32 1, i8* getelementptr inbounds ([57 x i8], [57 x i8]* @.str.2, i64 0, i64 0), i32 5, i32 10)
%5 = tail call i32 @c_prt(i32 1, i8* getelementptr inbounds ([57 x i8], [57 x i8]* @.str.3, i64 0, i64 0), i32 6, i32 10)
%6 = tail call i32 @c_prt(i32 1, i8* getelementptr inbounds ([57 x i8], [57 x i8]* @.str.4, i64 0, i64 0), i32 7, i32 10)
%7 = tail call i32 @c_prt(i32 1, i8* getelementptr inbounds ([57 x i8], [57 x i8]* @.str.5, i64 0, i64 0), i32 8, i32 10)
%8 = tail call i32 @c_prt(i32 0, i8* getelementptr inbounds ([57 x i8], [57 x i8]* @.str.6, i64 0, i64 0), i32 9, i32 10)
%9 = tail call i32 @c_prt(i32 1, i8* getelementptr inbounds ([57 x i8], [57 x i8]* @.str.7, i64 0, i64 0), i32 10, i32 10)
%10 = tail call i32 @c_prt(i32 1, i8* getelementptr inbounds ([57 x i8], [57 x i8]* @.str.8, i64 0, i64 0), i32 11, i32 10)
ret void
}