#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*/ exit(int);
int /*<<< orphan*/ printf(char *);
void help_bfg() {
  printf("Hydra bruteforce password generation option usage:\n\n"
         "  -x MIN:MAX:CHARSET\n\n"
         "     MIN     is the minimum number of characters in the password\n"
         "     MAX     is the maximum number of characters in the password\n"
         "     CHARSET is a specification of the characters to use in the "
         "generation\n"
         "             valid CHARSET values are: 'a' for lowercase letters,\n"
         "             'A' for uppercase letters, '1' for numbers, and for all "
         "others,\n"
         "             just add their real representation.\n\n"
         "Examples:\n"
         "   -x 3:5:a  generate passwords from length 3 to 5 with all "
         "lowercase letters\n"
         "   -x 5:8:A1 generate passwords from length 5 to 8 with uppercase "
         "and numbers\n"
         "   -x 1:3:/  generate passwords from length 1 to 3 containing only "
         "slashes\n"
         "   -x 5:5:/%%,.-  generate passwords with length 5 which consists "
         "only of /%%,.-\n");
  printf("\nThe bruteforce mode was made by Jan Dlabal, "
         "http://houbysoft.com/bfg/\n");
  exit(-1);
}


x86 assembly (clang, -O0):
<help_bfg>:
push   %rbp
mov    %rsp,%rbp
lea    0xed5(%rip),%rdi
call   1030 <printf@plt>
lea    0x11e4(%rip),%rdi
call   1030 <printf@plt>
mov    $0xffffffff,%edi
call   1040 <exit@plt>

x86 assembly (clang, -O2):
<help_bfg>:
push   %rax
lea    0xec8(%rip),%rdi
call   1040 <printf@plt>
lea    0x11d7(%rip),%rdi
call   1030 <puts@plt>
mov    $0xffffffff,%edi
call   1050 <exit@plt>

LLVM IR (-O0):
@.str = [795 x i8] c"Hydra bruteforce password generation option usage:\0A\0A -x MIN:MAX:CHARSET\0A\0A MIN is the minimum number of characters in the password\0A MAX is the maximum number of characters in the password\0A CHARSET is a specification of the characters to use in the generation\0A valid CHARSET values are: 'a' for lowercase letters,\0A 'A' for uppercase letters, '1' for numbers, and for all others,\0A just add their real representation.\0A\0AExamples:\0A -x 3:5:a generate passwords from length 3 to 5 with all lowercase letters\0A -x 5:8:A1 generate passwords from length 5 to 8 with uppercase and numbers\0A -x 1:3:/ generate passwords from length 1 to 3 containing only slashes\0A -x 5:5:/%%,.- generate passwords with length 5 which consists only of /%%,.-\0A\00"
@.str.1 = [72 x i8] c"\0AThe bruteforce mode was made by Jan Dlabal, http://houbysoft.com/bfg/\0A\00"
define void @help_bfg() {
%1 = call i32 @printf(i8* getelementptr inbounds ([795 x i8], [795 x i8]* @.str, i64 0, i64 0))
%2 = call i32 @printf(i8* getelementptr inbounds ([72 x i8], [72 x i8]* @.str.1, i64 0, i64 0))
%3 = call i32 @exit(i32 -1)
unreachable
}

LLVM IR (-O2):
@.str = [795 x i8] c"Hydra bruteforce password generation option usage:\0A\0A -x MIN:MAX:CHARSET\0A\0A MIN is the minimum number of characters in the password\0A MAX is the maximum number of characters in the password\0A CHARSET is a specification of the characters to use in the generation\0A valid CHARSET values are: 'a' for lowercase letters,\0A 'A' for uppercase letters, '1' for numbers, and for all others,\0A just add their real representation.\0A\0AExamples:\0A -x 3:5:a generate passwords from length 3 to 5 with all lowercase letters\0A -x 5:8:A1 generate passwords from length 5 to 8 with uppercase and numbers\0A -x 1:3:/ generate passwords from length 1 to 3 containing only slashes\0A -x 5:5:/%%,.- generate passwords with length 5 which consists only of /%%,.-\0A\00"
@str = [71 x i8] c"\0AThe bruteforce mode was made by Jan Dlabal, http://houbysoft.com/bfg/\00"
define void @help_bfg() {
%1 = tail call i32 @printf(i8* dereferenceable(1) getelementptr inbounds ([795 x i8], [795 x i8]* @.str, i64 0, i64 0))
%2 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([71 x i8], [71 x i8]* @str, i64 0, i64 0))
%3 = tail call i32 @exit(i32 -1)
unreachable
}