#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*/ fprintf(int /*<<< orphan*/, char *);
scalar_t__ letmesee(int);
int /*<<< orphan*/ pause();
int /*<<< orphan*/ stdout;
int /*<<< orphan*/ system(char *);
void info_wl() {
  system("CLS");
  fprintf(stdout, "[1] Generate a wordlist with whole alphabet [1]\n\n");
  fprintf(stdout,
          "Generate a wordlist composed by the entire alphabet.\n"
          "Each line of the created file will have a provisions repeated\n"
          "of alphabet letters of user-defined size.\n\n");
  if ((letmesee(3 + 3 + 3 + 3 + 3)) == 0)
    return;
  fprintf(stdout, "[2] Generate a wordlist with only numbers [2]\n\n");
  fprintf(stdout,
          "Generate a wordlist composed by numbers.\n"
          "Each line of the created file will have a provisions repeated\n"
          "of numbers of user-defined size.\n\n");
  if ((letmesee(3 + 3 + 3 + 3)) == 0)
    return;
  fprintf(stdout, "[3] Generate a customized wordlist [3]\n\n");
  fprintf(stdout,
          "Generate a wordlist composed by characters that you choose.\n"
          "Each line of the created file will have a provisions repeated\n"
          "of these characters of user-defined size.\n\n");
  if ((letmesee(3 + 3 + 3)) == 0)
    return;
  fprintf(
      stdout,
      "[4] Generate a wordlist with strings, character and numbers [4]\n\n");
  fprintf(stdout,
          "Generate a wordlist composed by provisions of string,\n"
          "character and numbers. Each line of the created file will have a\n"
          "provisions of these strings, character and numbers.\n\n");
  if ((letmesee(3 + 3)) == 0)
    return;
  fprintf(stdout, "[5] Guided wordlist [5]\n\n");
  fprintf(
      stdout,
      "Generate a wordlist composed by alphabet letters,\n"
      "numbers and special characters. Each line of the created file will "
      "have\n"
      "a provisions repeated of these characters of user-defined size.\n\n");
  if ((letmesee(3)) == 0)
    return;
  fprintf(stdout, "[6] Generate a wordlist from data file [6]\n\n");
  fprintf(stdout,
          "Generate a wordlist composed by provisions of file strings.\n"
          "Each line of the created file will have a provisions of\n"
          "these strings of user-defined size.\n\n");
  pause();
  system("CLS");
}


x86 assembly (clang, -O0):
<info_wl>:
push   %rbp
mov    %rsp,%rbp
lea    0xeb5(%rip),%rdi
call   1030 <system@plt>
mov    0x2e89(%rip),%rax
mov    (%rax),%edi
lea    0xea4(%rip),%rsi
call   1050 <fprintf@plt>
mov    0x2e74(%rip),%rax
mov    (%rax),%edi
lea    0xec1(%rip),%rsi
call   1050 <fprintf@plt>
mov    $0xf,%edi
call   1040 <letmesee@plt>
cmp    $0x0,%rax
jne    1193 <info_wl+0x53>
jmp    12dc <info_wl+0x19c>
mov    0x2e46(%rip),%rax
mov    (%rax),%edi
lea    0xf32(%rip),%rsi
call   1050 <fprintf@plt>
mov    0x2e31(%rip),%rax
mov    (%rax),%edi
lea    0xf4d(%rip),%rsi
call   1050 <fprintf@plt>
mov    $0xc,%edi
call   1040 <letmesee@plt>
cmp    $0x0,%rax
jne    11d6 <info_wl+0x96>
jmp    12dc <info_wl+0x19c>
mov    0x2e03(%rip),%rax
mov    (%rax),%edi
lea    0xfa9(%rip),%rsi
call   1050 <fprintf@plt>
mov    0x2dee(%rip),%rax
mov    (%rax),%edi
lea    0xfbd(%rip),%rsi
call   1050 <fprintf@plt>
mov    $0x9,%edi
call   1040 <letmesee@plt>
cmp    $0x0,%rax
jne    1219 <info_wl+0xd9>
jmp    12dc <info_wl+0x19c>
mov    0x2dc0(%rip),%rax
mov    (%rax),%edi
lea    0x1035(%rip),%rsi
call   1050 <fprintf@plt>
mov    0x2dab(%rip),%rax
mov    (%rax),%edi
lea    0x1062(%rip),%rsi
call   1050 <fprintf@plt>
mov    $0x6,%edi
call   1040 <letmesee@plt>
cmp    $0x0,%rax
jne    125c <info_wl+0x11c>
jmp    12dc <info_wl+0x19c>
mov    0x2d7d(%rip),%rax
mov    (%rax),%edi
lea    0x10e1(%rip),%rsi
call   1050 <fprintf@plt>
mov    0x2d68(%rip),%rax
mov    (%rax),%edi
lea    0x10e6(%rip),%rsi
call   1050 <fprintf@plt>
mov    $0x3,%edi
call   1040 <letmesee@plt>
cmp    $0x0,%rax
jne    129f <info_wl+0x15f>
jmp    12dc <info_wl+0x19c>
mov    0x2d3a(%rip),%rax
mov    (%rax),%edi
lea    0x1174(%rip),%rsi
call   1050 <fprintf@plt>
mov    0x2d25(%rip),%rax
mov    (%rax),%edi
lea    0x118c(%rip),%rsi
call   1050 <fprintf@plt>
mov    $0x0,%al
call   1060 <pause@plt>
lea    0xd29(%rip),%rdi
call   1030 <system@plt>
pop    %rbp
ret

x86 assembly (clang, -O2):
<info_wl>:
push   %rbx
lea    0xeb8(%rip),%rdi
call   1030 <system@plt>
mov    0x2e8c(%rip),%rbx
mov    (%rbx),%edi
lea    0xea7(%rip),%rsi
call   1050 <fprintf@plt>
mov    (%rbx),%edi
lea    0xecb(%rip),%rsi
call   1050 <fprintf@plt>
mov    $0xf,%edi
call   1040 <letmesee@plt>
test   %rax,%rax
je     1267 <info_wl+0x127>
mov    (%rbx),%edi
lea    0xf49(%rip),%rsi
call   1050 <fprintf@plt>
mov    (%rbx),%edi
lea    0xf6b(%rip),%rsi
call   1050 <fprintf@plt>
mov    $0xc,%edi
call   1040 <letmesee@plt>
test   %rax,%rax
je     1267 <info_wl+0x127>
mov    (%rbx),%edi
lea    0xfd4(%rip),%rsi
call   1050 <fprintf@plt>
mov    (%rbx),%edi
lea    0xfef(%rip),%rsi
call   1050 <fprintf@plt>
mov    $0x9,%edi
call   1040 <letmesee@plt>
test   %rax,%rax
je     1267 <info_wl+0x127>
mov    (%rbx),%edi
lea    0x1074(%rip),%rsi
call   1050 <fprintf@plt>
mov    (%rbx),%edi
lea    0x10a8(%rip),%rsi
call   1050 <fprintf@plt>
mov    $0x6,%edi
call   1040 <letmesee@plt>
test   %rax,%rax
je     1267 <info_wl+0x127>
mov    (%rbx),%edi
lea    0x1138(%rip),%rsi
call   1050 <fprintf@plt>
mov    (%rbx),%edi
lea    0x1144(%rip),%rsi
call   1050 <fprintf@plt>
mov    $0x3,%edi
call   1040 <letmesee@plt>
test   %rax,%rax
je     1267 <info_wl+0x127>
mov    (%rbx),%edi
lea    0x11e3(%rip),%rsi
call   1050 <fprintf@plt>
mov    (%rbx),%edi
lea    0x1202(%rip),%rsi
call   1050 <fprintf@plt>
xor    %eax,%eax
call   1060 <pause@plt>
lea    0xd9f(%rip),%rdi
pop    %rbx
jmp    1030 <system@plt>
pop    %rbx
ret

LLVM IR (-O0):
@.str = [4 x i8] c"CLS\00"
@stdout = global i32 0
@.str.1 = [50 x i8] c"[1] Generate a wordlist with whole alphabet [1]\0A\0A\00"
@.str.2 = [159 x i8] c"Generate a wordlist composed by the entire alphabet.\0AEach line of the created file will have a provisions repeated\0Aof alphabet letters of user-defined size.\0A\0A\00"
@.str.3 = [48 x i8] c"[2] Generate a wordlist with only numbers [2]\0A\0A\00"
@.str.4 = [138 x i8] c"Generate a wordlist composed by numbers.\0AEach line of the created file will have a provisions repeated\0Aof numbers of user-defined size.\0A\0A\00"
@.str.5 = [41 x i8] c"[3] Generate a customized wordlist [3]\0A\0A\00"
@.str.6 = [166 x i8] c"Generate a wordlist composed by characters that you choose.\0AEach line of the created file will have a provisions repeated\0Aof these characters of user-defined size.\0A\0A\00"
@.str.7 = [66 x i8] c"[4] Generate a wordlist with strings, character and numbers [4]\0A\0A\00"
@.str.8 = [173 x i8] c"Generate a wordlist composed by provisions of string,\0Acharacter and numbers. Each line of the created file will have a\0Aprovisions of these strings, character and numbers.\0A\0A\00"
@.str.9 = [26 x i8] c"[5] Guided wordlist [5]\0A\0A\00"
@.str.10 = [188 x i8] c"Generate a wordlist composed by alphabet letters,\0Anumbers and special characters. Each line of the created file will have\0Aa provisions repeated of these characters of user-defined size.\0A\0A\00"
@.str.11 = [45 x i8] c"[6] Generate a wordlist from data file [6]\0A\0A\00"
@.str.12 = [154 x i8] c"Generate a wordlist composed by provisions of file strings.\0AEach line of the created file will have a provisions of\0Athese strings of user-defined size.\0A\0A\00"
define void @info_wl() {
%1 = call i32 @system(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0))
%2 = load i32, i32* @stdout
%3 = call i32 @fprintf(i32 %2, i8* getelementptr inbounds ([50 x i8], [50 x i8]* @.str.1, i64 0, i64 0))
%4 = load i32, i32* @stdout
%5 = call i32 @fprintf(i32 %4, i8* getelementptr inbounds ([159 x i8], [159 x i8]* @.str.2, i64 0, i64 0))
%6 = call i64 @letmesee(i32 15)
%7 = icmp eq i64 %6, 0
br i1 %7, label %8, label %9
8: ; preds = %0
br label %48
9: ; preds = %0
%10 = load i32, i32* @stdout
%11 = call i32 @fprintf(i32 %10, i8* getelementptr inbounds ([48 x i8], [48 x i8]* @.str.3, i64 0, i64 0))
%12 = load i32, i32* @stdout
%13 = call i32 @fprintf(i32 %12, i8* getelementptr inbounds ([138 x i8], [138 x i8]* @.str.4, i64 0, i64 0))
%14 = call i64 @letmesee(i32 12)
%15 = icmp eq i64 %14, 0
br i1 %15, label %16, label %17
16: ; preds = %9
br label %48
17: ; preds = %9
%18 = load i32, i32* @stdout
%19 = call i32 @fprintf(i32 %18, i8* getelementptr inbounds ([41 x i8], [41 x i8]* @.str.5, i64 0, i64 0))
%20 = load i32, i32* @stdout
%21 = call i32 @fprintf(i32 %20, i8* getelementptr inbounds ([166 x i8], [166 x i8]* @.str.6, i64 0, i64 0))
%22 = call i64 @letmesee(i32 9)
%23 = icmp eq i64 %22, 0
br i1 %23, label %24, label %25
24: ; preds = %17
br label %48
25: ; preds = %17
%26 = load i32, i32* @stdout
%27 = call i32 @fprintf(i32 %26, i8* getelementptr inbounds ([66 x i8], [66 x i8]* @.str.7, i64 0, i64 0))
%28 = load i32, i32* @stdout
%29 = call i32 @fprintf(i32 %28, i8* getelementptr inbounds ([173 x i8], [173 x i8]* @.str.8, i64 0, i64 0))
%30 = call i64 @letmesee(i32 6)
%31 = icmp eq i64 %30, 0
br i1 %31, label %32, label %33
32: ; preds = %25
br label %48
33: ; preds = %25
%34 = load i32, i32* @stdout
%35 = call i32 @fprintf(i32 %34, i8* getelementptr inbounds ([26 x i8], [26 x i8]* @.str.9, i64 0, i64 0))
%36 = load i32, i32* @stdout
%37 = call i32 @fprintf(i32 %36, i8* getelementptr inbounds ([188 x i8], [188 x i8]* @.str.10, i64 0, i64 0))
%38 = call i64 @letmesee(i32 3)
%39 = icmp eq i64 %38, 0
br i1 %39, label %40, label %41
40: ; preds = %33
br label %48
41: ; preds = %33
%42 = load i32, i32* @stdout
%43 = call i32 @fprintf(i32 %42, i8* getelementptr inbounds ([45 x i8], [45 x i8]* @.str.11, i64 0, i64 0))
%44 = load i32, i32* @stdout
%45 = call i32 @fprintf(i32 %44, i8* getelementptr inbounds ([154 x i8], [154 x i8]* @.str.12, i64 0, i64 0))
%46 = call i32 (...) @pause()
%47 = call i32 @system(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0))
br label %48
48: ; preds = %41, %40, %32, %24, %16, %8
ret void
}

LLVM IR (-O2):
@.str = [4 x i8] c"CLS\00"
@stdout = global i32 0
@.str.1 = [50 x i8] c"[1] Generate a wordlist with whole alphabet [1]\0A\0A\00"
@.str.2 = [159 x i8] c"Generate a wordlist composed by the entire alphabet.\0AEach line of the created file will have a provisions repeated\0Aof alphabet letters of user-defined size.\0A\0A\00"
@.str.3 = [48 x i8] c"[2] Generate a wordlist with only numbers [2]\0A\0A\00"
@.str.4 = [138 x i8] c"Generate a wordlist composed by numbers.\0AEach line of the created file will have a provisions repeated\0Aof numbers of user-defined size.\0A\0A\00"
@.str.5 = [41 x i8] c"[3] Generate a customized wordlist [3]\0A\0A\00"
@.str.6 = [166 x i8] c"Generate a wordlist composed by characters that you choose.\0AEach line of the created file will have a provisions repeated\0Aof these characters of user-defined size.\0A\0A\00"
@.str.7 = [66 x i8] c"[4] Generate a wordlist with strings, character and numbers [4]\0A\0A\00"
@.str.8 = [173 x i8] c"Generate a wordlist composed by provisions of string,\0Acharacter and numbers. Each line of the created file will have a\0Aprovisions of these strings, character and numbers.\0A\0A\00"
@.str.9 = [26 x i8] c"[5] Guided wordlist [5]\0A\0A\00"
@.str.10 = [188 x i8] c"Generate a wordlist composed by alphabet letters,\0Anumbers and special characters. Each line of the created file will have\0Aa provisions repeated of these characters of user-defined size.\0A\0A\00"
@.str.11 = [45 x i8] c"[6] Generate a wordlist from data file [6]\0A\0A\00"
@.str.12 = [154 x i8] c"Generate a wordlist composed by provisions of file strings.\0AEach line of the created file will have a provisions of\0Athese strings of user-defined size.\0A\0A\00"
define void @info_wl() {
%1 = tail call i32 @system(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0))
%2 = load i32, i32* @stdout
%3 = tail call i32 @fprintf(i32 %2, i8* getelementptr inbounds ([50 x i8], [50 x i8]* @.str.1, i64 0, i64 0))
%4 = load i32, i32* @stdout
%5 = tail call i32 @fprintf(i32 %4, i8* getelementptr inbounds ([159 x i8], [159 x i8]* @.str.2, i64 0, i64 0))
%6 = tail call i64 @letmesee(i32 15)
%7 = icmp eq i64 %6, 0
br i1 %7, label %43, label %8
8: ; preds = %0
%9 = load i32, i32* @stdout
%10 = tail call i32 @fprintf(i32 %9, i8* getelementptr inbounds ([48 x i8], [48 x i8]* @.str.3, i64 0, i64 0))
%11 = load i32, i32* @stdout
%12 = tail call i32 @fprintf(i32 %11, i8* getelementptr inbounds ([138 x i8], [138 x i8]* @.str.4, i64 0, i64 0))
%13 = tail call i64 @letmesee(i32 12)
%14 = icmp eq i64 %13, 0
br i1 %14, label %43, label %15
15: ; preds = %8
%16 = load i32, i32* @stdout
%17 = tail call i32 @fprintf(i32 %16, i8* getelementptr inbounds ([41 x i8], [41 x i8]* @.str.5, i64 0, i64 0))
%18 = load i32, i32* @stdout
%19 = tail call i32 @fprintf(i32 %18, i8* getelementptr inbounds ([166 x i8], [166 x i8]* @.str.6, i64 0, i64 0))
%20 = tail call i64 @letmesee(i32 9)
%21 = icmp eq i64 %20, 0
br i1 %21, label %43, label %22
22: ; preds = %15
%23 = load i32, i32* @stdout
%24 = tail call i32 @fprintf(i32 %23, i8* getelementptr inbounds ([66 x i8], [66 x i8]* @.str.7, i64 0, i64 0))
%25 = load i32, i32* @stdout
%26 = tail call i32 @fprintf(i32 %25, i8* getelementptr inbounds ([173 x i8], [173 x i8]* @.str.8, i64 0, i64 0))
%27 = tail call i64 @letmesee(i32 6)
%28 = icmp eq i64 %27, 0
br i1 %28, label %43, label %29
29: ; preds = %22
%30 = load i32, i32* @stdout
%31 = tail call i32 @fprintf(i32 %30, i8* getelementptr inbounds ([26 x i8], [26 x i8]* @.str.9, i64 0, i64 0))
%32 = load i32, i32* @stdout
%33 = tail call i32 @fprintf(i32 %32, i8* getelementptr inbounds ([188 x i8], [188 x i8]* @.str.10, i64 0, i64 0))
%34 = tail call i64 @letmesee(i32 3)
%35 = icmp eq i64 %34, 0
br i1 %35, label %43, label %36
36: ; preds = %29
%37 = load i32, i32* @stdout
%38 = tail call i32 @fprintf(i32 %37, i8* getelementptr inbounds ([45 x i8], [45 x i8]* @.str.11, i64 0, i64 0))
%39 = load i32, i32* @stdout
%40 = tail call i32 @fprintf(i32 %39, i8* getelementptr inbounds ([154 x i8], [154 x i8]* @.str.12, i64 0, i64 0))
%41 = tail call i32 (...) @pause()
%42 = tail call i32 @system(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0))
br label %43
43: ; preds = %29, %22, %15, %8, %0, %36
ret void
}