#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 */
unsigned short guess(int, int /*<<< orphan*/);
int /*<<< orphan*/ printf(char *, ...);
int /*<<< orphan*/ puts(char *);
int /*<<< orphan*/ system(char *);
extern void lesson_list(void) {
  unsigned short n = guess(22, 0);
  system("clear");
  puts("LESSONS, use command <select 'lesson number' to make a choice: "
       "\n1:  Beginner lessons"
       "\n2:  Shell programming"
       "\n3:  Linux commands"
       "\n4:  Cmd commands"
       "\n5:  Learning numbers"
       "\n6:  Noslac's notes in computing"
       "\n7:  History of Cameroon"
       "\n8:  Getting acquanted to symbols"
       "\n9:  Coding in c"
       "\n10: Coding in java"
       "\n11: Coding in python"
       "\n12: Coding in c++"
       "\n13: Random word typing"
       "\n14: Capital letter training"
       "\n15: Mixed lessons");
  printf(""
         "\x1B[35m"
         "");
  switch (n) {
  case 1:
    printf("%s", ":: Go over your session speed analysis, \'time starts ONLY "
                 "when you start\'\n");
    break;
  case 2:
    printf("%s", ":: All the lessons in this program are informative, type and "
                 "learn!!!\n");
    break;
  case 3:
    printf("%s", ":: When a line in session turns blue, that's last line for "
                 "that session\n");
    break;
  case 4:
    printf("%s", ":: Consult the user_speed.info file to get your saved speed "
                 "details\n");
    break;
  case 5:
    printf("%s", ":: Use the \"help 'command'\" to get details of any command "
                 "when in doubt\n");
    break;
  case 6:
    printf("%s\n", ":: Use tab key during lesson session to exit and get your "
                   "instant speed");
    break;
  case 7:
    printf("%s\n", ":: Focus much more on your accuracy, you'll get better");
    break;
  case 8:
    printf("%s\n", ":: If a novice typist, say the letters as you type. Will "
                   "help you memorise faster");
    break;
  case 9:
    printf("%s\n",
           ":: Writing manually to the user info file distorts display!!!");
    break;
  case 10:
    printf("%s\n", ":: Use ENTER at the end of a line to move to next line");
    break;
  case 11:
    printf("%s\n",
           ":: Feel free to use backspace key to erase wrongly typed letters");
    break;
  case 12:
    printf(
        "%s\n",
        ":: Paste your own lesosn in myown.txt in program directory and type");
    break;
  case 13:
    printf("%s", ":: You will only get better if you type more\n");
    break;
  case 14:
    printf("%s", ":: Love cmdtypist? give me a * on github "
                 "www.github.com/cmd_typist \n");
    break;
  case 15:
    printf("%s",
           ":: You will get to master symbols mostly used by programmers \n");
    break;
  case 16:
    printf("%s", ":: You will progress only if you type more often \n");
    break;
  case 17:
    printf("%s",
           ":: With random mode the lessons might no longer make sense ): \n");
    break;
  case 18:
    printf("%s",
           ":: standard mode: lessons appear as they are in lesson file. "
           "random mode: cmdtypist makes a guess and reads anywhere :) \n");
    break;
  case 19:
    printf("%s",
           ":: 365+ days from now, you can wonder at how slow you were when "
           "you started. Analysis store in speed/user_speed.info file\n");
    break;
  case 20:
    printf("%s",
           ":: Found a bug? you can help fix it or lemme know on github\n");
    break;
  case 21:
    printf("%s", ":: Enjoy cmdtypist? Why not share with your friends\n");
    break;
  default:
    printf("%s", ":: You will only get better if you type more\n");
    break;
  }
  printf(""
         "\x1B[0m"
         "");
}


x86 assembly (clang, -O0):
<lesson_list>:
push   %rbp
mov    %rsp,%rbp
sub    $0x20,%rsp
mov    $0x16,%edi
xor    %esi,%esi
mov    %esi,-0x14(%rbp)
call   1060 <guess@plt>
mov    %ax,-0x2(%rbp)
lea    0xef2(%rip),%rdi
call   1040 <system@plt>
lea    0xeec(%rip),%rdi
call   1030 <puts@plt>
mov    -0x14(%rbp),%eax
lea    0x1069(%rip),%rdi
call   1050 <printf@plt>
movzwl -0x2(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,%ecx
mov    %rcx,-0x10(%rbp)
sub    $0x14,%eax
ja     13ce <lesson_list+0x28e>
mov    -0x10(%rbp),%rax
lea    0xe5d(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
lea    0x1039(%rip),%rdi
lea    0x1035(%rip),%rsi
mov    $0x0,%al
call   1050 <printf@plt>
jmp    13e3 <lesson_list+0x2a3>
lea    0x101f(%rip),%rdi
lea    0x1066(%rip),%rsi
mov    $0x0,%al
call   1050 <printf@plt>
jmp    13e3 <lesson_list+0x2a3>
lea    0x1005(%rip),%rdi
lea    0x1093(%rip),%rsi
mov    $0x0,%al
call   1050 <printf@plt>
jmp    13e3 <lesson_list+0x2a3>
lea    0xfeb(%rip),%rdi
lea    0x10c2(%rip),%rsi
mov    $0x0,%al
call   1050 <printf@plt>
jmp    13e3 <lesson_list+0x2a3>
lea    0xfd1(%rip),%rdi
lea    0x10ed(%rip),%rsi
mov    $0x0,%al
call   1050 <printf@plt>
jmp    13e3 <lesson_list+0x2a3>
lea    0x1123(%rip),%rdi
lea    0x1120(%rip),%rsi
mov    $0x0,%al
call   1050 <printf@plt>
jmp    13e3 <lesson_list+0x2a3>
lea    0x1109(%rip),%rdi
lea    0x114e(%rip),%rsi
mov    $0x0,%al
call   1050 <printf@plt>
jmp    13e3 <lesson_list+0x2a3>
lea    0x10ef(%rip),%rdi
lea    0x116b(%rip),%rsi
mov    $0x0,%al
call   1050 <printf@plt>
jmp    13e3 <lesson_list+0x2a3>
lea    0x10d5(%rip),%rdi
lea    0x11a3(%rip),%rsi
mov    $0x0,%al
call   1050 <printf@plt>
jmp    13e3 <lesson_list+0x2a3>
lea    0x10bb(%rip),%rdi
lea    0x11c7(%rip),%rsi
mov    $0x0,%al
call   1050 <printf@plt>
jmp    13e3 <lesson_list+0x2a3>
lea    0x10a1(%rip),%rdi
lea    0x11e4(%rip),%rsi
mov    $0x0,%al
call   1050 <printf@plt>
jmp    13e3 <lesson_list+0x2a3>
lea    0x1087(%rip),%rdi
lea    0x120b(%rip),%rsi
mov    $0x0,%al
call   1050 <printf@plt>
jmp    13e3 <lesson_list+0x2a3>
lea    0xf01(%rip),%rdi
lea    0x1235(%rip),%rsi
mov    $0x0,%al
call   1050 <printf@plt>
jmp    13e3 <lesson_list+0x2a3>
lea    0xee7(%rip),%rdi
lea    0x1249(%rip),%rsi
mov    $0x0,%al
call   1050 <printf@plt>
jmp    13e3 <lesson_list+0x2a3>
lea    0xecd(%rip),%rdi
lea    0x1274(%rip),%rsi
mov    $0x0,%al
call   1050 <printf@plt>
jmp    13e3 <lesson_list+0x2a3>
lea    0xeb3(%rip),%rdi
lea    0x1299(%rip),%rsi
mov    $0x0,%al
call   1050 <printf@plt>
jmp    13e3 <lesson_list+0x2a3>
lea    0xe99(%rip),%rdi
lea    0x12b2(%rip),%rsi
mov    $0x0,%al
call   1050 <printf@plt>
jmp    13e3 <lesson_list+0x2a3>
lea    0xe7f(%rip),%rdi
lea    0x12d8(%rip),%rsi
mov    $0x0,%al
call   1050 <printf@plt>
jmp    13e3 <lesson_list+0x2a3>
lea    0xe65(%rip),%rdi
lea    0x1338(%rip),%rsi
mov    $0x0,%al
call   1050 <printf@plt>
jmp    13e3 <lesson_list+0x2a3>
lea    0xe4b(%rip),%rdi
lea    0x1399(%rip),%rsi
mov    $0x0,%al
call   1050 <printf@plt>
jmp    13e3 <lesson_list+0x2a3>
lea    0xe31(%rip),%rdi
lea    0x13bc(%rip),%rsi
mov    $0x0,%al
call   1050 <printf@plt>
jmp    13e3 <lesson_list+0x2a3>
lea    0xe17(%rip),%rdi
lea    0x114b(%rip),%rsi
mov    $0x0,%al
call   1050 <printf@plt>
lea    0x13c9(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
add    $0x20,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<lesson_list>:
push   %rbx
mov    $0x16,%edi
xor    %esi,%esi
call   1060 <guess@plt>
mov    %eax,%ebx
lea    0xeaa(%rip),%rdi
call   1040 <system@plt>
lea    0xea4(%rip),%rdi
call   1030 <puts@plt>
lea    0x1024(%rip),%rdi
xor    %eax,%eax
call   1050 <printf@plt>
add    $0xffffffff,%ebx
cmp    $0x14,%bx
ja     1192 <lesson_list+0x52>
movswq %bx,%rax
lea    0x15c7(%rip),%rcx
movslq (%rcx,%rax,4),%rdi
add    %rcx,%rdi
jmp    1199 <lesson_list+0x59>
lea    0x1589(%rip),%rdi
call   1030 <puts@plt>
lea    0x11be(%rip),%rdi
xor    %eax,%eax
pop    %rbx
jmp    1050 <printf@plt>

LLVM IR (-O0):
@.str = [6 x i8] c"clear\00"
@.str.1 = [396 x i8] c"LESSONS, use command <select 'lesson number' to make a choice: \0A1: Beginner lessons\0A2: Shell programming\0A3: Linux commands\0A4: Cmd commands\0A5: Learning numbers\0A6: Noslac's notes in computing\0A7: History of Cameroon\0A8: Getting acquanted to symbols\0A9: Coding in c\0A10: Coding in java\0A11: Coding in python\0A12: Coding in c++\0A13: Random word typing\0A14: Capital letter training\0A15: Mixed lessons\00"
@.str.2 = [6 x i8] c"\1B[35m\00"
@.str.3 = [3 x i8] c"%s\00"
@.str.4 = [75 x i8] c":: Go over your session speed analysis, 'time starts ONLY when you start'\0A\00"
@.str.5 = [71 x i8] c":: All the lessons in this program are informative, type and learn!!!\0A\00"
@.str.6 = [73 x i8] c":: When a line in session turns blue, that's last line for that session\0A\00"
@.str.7 = [69 x i8] c":: Consult the user_speed.info file to get your saved speed details\0A\00"
@.str.8 = [73 x i8] c":: Use the \22help 'command'\22 to get details of any command when in doubt\0A\00"
@.str.9 = [4 x i8] c"%s\0A\00"
@.str.10 = [72 x i8] c":: Use tab key during lesson session to exit and get your instant speed\00"
@.str.11 = [55 x i8] c":: Focus much more on your accuracy, you'll get better\00"
@.str.12 = [82 x i8] c":: If a novice typist, say the letters as you type. Will help you memorise faster\00"
@.str.13 = [62 x i8] c":: Writing manually to the user info file distorts display!!!\00"
@.str.14 = [55 x i8] c":: Use ENTER at the end of a line to move to next line\00"
@.str.15 = [65 x i8] c":: Feel free to use backspace key to erase wrongly typed letters\00"
@.str.16 = [68 x i8] c":: Paste your own lesosn in myown.txt in program directory and type\00"
@.str.17 = [46 x i8] c":: You will only get better if you type more\0A\00"
@.str.18 = [69 x i8] c":: Love cmdtypist? give me a * on github www.github.com/cmd_typist \0A\00"
@.str.19 = [63 x i8] c":: You will get to master symbols mostly used by programmers \0A\00"
@.str.20 = [51 x i8] c":: You will progress only if you type more often \0A\00"
@.str.21 = [64 x i8] c":: With random mode the lessons might no longer make sense ): \0A\00"
@.str.22 = [122 x i8] c":: standard mode: lessons appear as they are in lesson file. random mode: cmdtypist makes a guess and reads anywhere :) \0A\00"
@.str.23 = [123 x i8] c":: 365+ days from now, you can wonder at how slow you were when you started. Analysis store in speed/user_speed.info file\0A\00"
@.str.24 = [61 x i8] c":: Found a bug? you can help fix it or lemme know on github\0A\00"
@.str.25 = [53 x i8] c":: Enjoy cmdtypist? Why not share with your friends\0A\00"
@.str.26 = [5 x i8] c"\1B[0m\00"
define void @lesson_list() {
%1 = alloca i16
%2 = call zeroext i16 @guess(i32 22, i32 0)
store i16 %2, i16* %1
%3 = call i32 @system(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str, i64 0, i64 0))
%4 = call i32 @puts(i8* getelementptr inbounds ([396 x i8], [396 x i8]* @.str.1, i64 0, i64 0))
%5 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.2, i64 0, i64 0))
%6 = load i16, i16* %1
%7 = zext i16 %6 to i32
switch i32 %7, label %50 [
i32 1, label %8
i32 2, label %10
i32 3, label %12
i32 4, label %14
i32 5, label %16
i32 6, label %18
i32 7, label %20
i32 8, label %22
i32 9, label %24
i32 10, label %26
i32 11, label %28
i32 12, label %30
i32 13, label %32
i32 14, label %34
i32 15, label %36
i32 16, label %38
i32 17, label %40
i32 18, label %42
i32 19, label %44
i32 20, label %46
i32 21, label %48
]
8: ; preds = %0
%9 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.3, i64 0, i64 0), i8* getelementptr inbounds ([75 x i8], [75 x i8]* @.str.4, i64 0, i64 0))
br label %52
10: ; preds = %0
%11 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.3, i64 0, i64 0), i8* getelementptr inbounds ([71 x i8], [71 x i8]* @.str.5, i64 0, i64 0))
br label %52
12: ; preds = %0
%13 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.3, i64 0, i64 0), i8* getelementptr inbounds ([73 x i8], [73 x i8]* @.str.6, i64 0, i64 0))
br label %52
14: ; preds = %0
%15 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.3, i64 0, i64 0), i8* getelementptr inbounds ([69 x i8], [69 x i8]* @.str.7, i64 0, i64 0))
br label %52
16: ; preds = %0
%17 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.3, i64 0, i64 0), i8* getelementptr inbounds ([73 x i8], [73 x i8]* @.str.8, i64 0, i64 0))
br label %52
18: ; preds = %0
%19 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.9, i64 0, i64 0), i8* getelementptr inbounds ([72 x i8], [72 x i8]* @.str.10, i64 0, i64 0))
br label %52
20: ; preds = %0
%21 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.9, i64 0, i64 0), i8* getelementptr inbounds ([55 x i8], [55 x i8]* @.str.11, i64 0, i64 0))
br label %52
22: ; preds = %0
%23 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.9, i64 0, i64 0), i8* getelementptr inbounds ([82 x i8], [82 x i8]* @.str.12, i64 0, i64 0))
br label %52
24: ; preds = %0
%25 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.9, i64 0, i64 0), i8* getelementptr inbounds ([62 x i8], [62 x i8]* @.str.13, i64 0, i64 0))
br label %52
26: ; preds = %0
%27 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.9, i64 0, i64 0), i8* getelementptr inbounds ([55 x i8], [55 x i8]* @.str.14, i64 0, i64 0))
br label %52
28: ; preds = %0
%29 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.9, i64 0, i64 0), i8* getelementptr inbounds ([65 x i8], [65 x i8]* @.str.15, i64 0, i64 0))
br label %52
30: ; preds = %0
%31 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.9, i64 0, i64 0), i8* getelementptr inbounds ([68 x i8], [68 x i8]* @.str.16, i64 0, i64 0))
br label %52
32: ; preds = %0
%33 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.3, i64 0, i64 0), i8* getelementptr inbounds ([46 x i8], [46 x i8]* @.str.17, i64 0, i64 0))
br label %52
34: ; preds = %0
%35 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.3, i64 0, i64 0), i8* getelementptr inbounds ([69 x i8], [69 x i8]* @.str.18, i64 0, i64 0))
br label %52
36: ; preds = %0
%37 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.3, i64 0, i64 0), i8* getelementptr inbounds ([63 x i8], [63 x i8]* @.str.19, i64 0, i64 0))
br label %52
38: ; preds = %0
%39 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.3, i64 0, i64 0), i8* getelementptr inbounds ([51 x i8], [51 x i8]* @.str.20, i64 0, i64 0))
br label %52
40: ; preds = %0
%41 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.3, i64 0, i64 0), i8* getelementptr inbounds ([64 x i8], [64 x i8]* @.str.21, i64 0, i64 0))
br label %52
42: ; preds = %0
%43 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.3, i64 0, i64 0), i8* getelementptr inbounds ([122 x i8], [122 x i8]* @.str.22, i64 0, i64 0))
br label %52
44: ; preds = %0
%45 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.3, i64 0, i64 0), i8* getelementptr inbounds ([123 x i8], [123 x i8]* @.str.23, i64 0, i64 0))
br label %52
46: ; preds = %0
%47 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.3, i64 0, i64 0), i8* getelementptr inbounds ([61 x i8], [61 x i8]* @.str.24, i64 0, i64 0))
br label %52
48: ; preds = %0
%49 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.3, i64 0, i64 0), i8* getelementptr inbounds ([53 x i8], [53 x i8]* @.str.25, i64 0, i64 0))
br label %52
50: ; preds = %0
%51 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.3, i64 0, i64 0), i8* getelementptr inbounds ([46 x i8], [46 x i8]* @.str.17, i64 0, i64 0))
br label %52
52: ; preds = %50, %48, %46, %44, %42, %40, %38, %36, %34, %32, %30, %28, %26, %24, %22, %20, %18, %16, %14, %12, %10, %8
%53 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.26, i64 0, i64 0))
ret void
}

LLVM IR (-O2):
@.str = [6 x i8] c"clear\00"
@.str.1 = [396 x i8] c"LESSONS, use command <select 'lesson number' to make a choice: \0A1: Beginner lessons\0A2: Shell programming\0A3: Linux commands\0A4: Cmd commands\0A5: Learning numbers\0A6: Noslac's notes in computing\0A7: History of Cameroon\0A8: Getting acquanted to symbols\0A9: Coding in c\0A10: Coding in java\0A11: Coding in python\0A12: Coding in c++\0A13: Random word typing\0A14: Capital letter training\0A15: Mixed lessons\00"
@.str.2 = [6 x i8] c"\1B[35m\00"
@.str.10 = [72 x i8] c":: Use tab key during lesson session to exit and get your instant speed\00"
@.str.11 = [55 x i8] c":: Focus much more on your accuracy, you'll get better\00"
@.str.12 = [82 x i8] c":: If a novice typist, say the letters as you type. Will help you memorise faster\00"
@.str.13 = [62 x i8] c":: Writing manually to the user info file distorts display!!!\00"
@.str.14 = [55 x i8] c":: Use ENTER at the end of a line to move to next line\00"
@.str.15 = [65 x i8] c":: Feel free to use backspace key to erase wrongly typed letters\00"
@.str.16 = [68 x i8] c":: Paste your own lesosn in myown.txt in program directory and type\00"
@.str.26 = [5 x i8] c"\1B[0m\00"
@str = [52 x i8] c":: Enjoy cmdtypist? Why not share with your friends\00"
@str.27 = [60 x i8] c":: Found a bug? you can help fix it or lemme know on github\00"
@str.28 = [122 x i8] c":: 365+ days from now, you can wonder at how slow you were when you started. Analysis store in speed/user_speed.info file\00"
@str.29 = [121 x i8] c":: standard mode: lessons appear as they are in lesson file. random mode: cmdtypist makes a guess and reads anywhere :) \00"
@str.30 = [63 x i8] c":: With random mode the lessons might no longer make sense ): \00"
@str.31 = [50 x i8] c":: You will progress only if you type more often \00"
@str.32 = [62 x i8] c":: You will get to master symbols mostly used by programmers \00"
@str.33 = [68 x i8] c":: Love cmdtypist? give me a * on github www.github.com/cmd_typist \00"
@str.35 = [72 x i8] c":: Use the \22help 'command'\22 to get details of any command when in doubt\00"
@str.36 = [68 x i8] c":: Consult the user_speed.info file to get your saved speed details\00"
@str.37 = [72 x i8] c":: When a line in session turns blue, that's last line for that session\00"
@str.38 = [70 x i8] c":: All the lessons in this program are informative, type and learn!!!\00"
@str.39 = [74 x i8] c":: Go over your session speed analysis, 'time starts ONLY when you start'\00"
@str.40 = [45 x i8] c":: You will only get better if you type more\00"
@reltable.lesson_list = [21 x i32] [i32 trunc (i64 sub (i64 ptrtoint ([74 x i8]* @str.39 to i64), i64 ptrtoint ([21 x i32]* @reltable.lesson_list to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([70 x i8]* @str.38 to i64), i64 ptrtoint ([21 x i32]* @reltable.lesson_list to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([72 x i8]* @str.37 to i64), i64 ptrtoint ([21 x i32]* @reltable.lesson_list to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([68 x i8]* @str.36 to i64), i64 ptrtoint ([21 x i32]* @reltable.lesson_list to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([72 x i8]* @str.35 to i64), i64 ptrtoint ([21 x i32]* @reltable.lesson_list to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([72 x i8]* @.str.10 to i64), i64 ptrtoint ([21 x i32]* @reltable.lesson_list to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([55 x i8]* @.str.11 to i64), i64 ptrtoint ([21 x i32]* @reltable.lesson_list to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([82 x i8]* @.str.12 to i64), i64 ptrtoint ([21 x i32]* @reltable.lesson_list to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([62 x i8]* @.str.13 to i64), i64 ptrtoint ([21 x i32]* @reltable.lesson_list to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([55 x i8]* @.str.14 to i64), i64 ptrtoint ([21 x i32]* @reltable.lesson_list to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([65 x i8]* @.str.15 to i64), i64 ptrtoint ([21 x i32]* @reltable.lesson_list to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([68 x i8]* @.str.16 to i64), i64 ptrtoint ([21 x i32]* @reltable.lesson_list to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([45 x i8]* @str.40 to i64), i64 ptrtoint ([21 x i32]* @reltable.lesson_list to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([68 x i8]* @str.33 to i64), i64 ptrtoint ([21 x i32]* @reltable.lesson_list to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([62 x i8]* @str.32 to i64), i64 ptrtoint ([21 x i32]* @reltable.lesson_list to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([50 x i8]* @str.31 to i64), i64 ptrtoint ([21 x i32]* @reltable.lesson_list to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([63 x i8]* @str.30 to i64), i64 ptrtoint ([21 x i32]* @reltable.lesson_list to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([121 x i8]* @str.29 to i64), i64 ptrtoint ([21 x i32]* @reltable.lesson_list to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([122 x i8]* @str.28 to i64), i64 ptrtoint ([21 x i32]* @reltable.lesson_list to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([60 x i8]* @str.27 to i64), i64 ptrtoint ([21 x i32]* @reltable.lesson_list to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([52 x i8]* @str to i64), i64 ptrtoint ([21 x i32]* @reltable.lesson_list to i64)) to i32)]
define void @lesson_list() {
%1 = tail call zeroext i16 @guess(i32 22, i32 0)
%2 = tail call i32 @system(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str, i64 0, i64 0))
%3 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([396 x i8], [396 x i8]* @.str.1, i64 0, i64 0))
%4 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([6 x i8], [6 x i8]* @.str.2, i64 0, i64 0))
%5 = add i16 %1, -1
%6 = icmp ult i16 %5, 21
br i1 %6, label %7, label %11
7: ; preds = %0
%8 = sext i16 %5 to i64
%9 = shl i64 %8, 2
%10 = call i8* @llvm.load.relative.i64(i8* bitcast ([21 x i32]* @reltable.lesson_list to i8*), i64 %9)
br label %11
11: ; preds = %0, %7
%12 = phi i8* [ %10, %7 ], [ getelementptr inbounds ([45 x i8], [45 x i8]* @str.40, i64 0, i64 0), %0 ]
%13 = tail call i32 @puts(i8* dereferenceable(1) %12)
%14 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([5 x i8], [5 x i8]* @.str.26, i64 0, i64 0))
ret void
}