#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*/ printf(char *, char *);
int usage() {
  printf("%s",
         "awesomedump"
         " v"
         "1.0"
         "\n"
         "Read data from stdin and print it out as hexchars\n"
         "\n"
         "Usage:\n"
         "\t"
         "awesomedump"
         " [OPTIONS]\n"
         "\tPossible [OPTIONS] are:\n"
         "\t-l <linesize>\t\tSet amount of hexnumbers printed per line\n"
         "\t-b <beginning>\t\tAdd <beginning> in front of the whole block\n"
         "\t-e <ending>\t\tAdd <ending> in front of the whole block\n"
         "\t-p <prefix>\t\tAdd <prefix> in front of every line\n"
         "\t-s <sufffix>\t\tAdd <suffix> at the end of evey line\n"
         "\t-d <delimiter>\t\tAdd <delimiter> between hexnumbers\n"
         "\t-x\t\t\tAdd '0x' before hexnumbers\n"
         "\t-c\t\t\tAdd '\\x' before hexnumbers\n"
         "\t-0\t\t\tPrint dezimal instead of hex\n"
         "\t-h\t\t\tPrint this help\n");
  return 0;
}


x86 assembly (clang, -O0):
<usage>:
push   %rbp
mov    %rsp,%rbp
lea    0xee5(%rip),%rdi
lea    0xee1(%rip),%rsi
call   1030 <printf@plt>
xor    %eax,%eax
pop    %rbp
ret

x86 assembly (clang, -O2):
<usage>:
push   %rax
lea    0xee8(%rip),%rdi
lea    0xee4(%rip),%rsi
call   1030 <printf@plt>
xor    %eax,%eax
pop    %rcx
ret

LLVM IR (-O0):
@.str = [3 x i8] c"%s\00"
@.str.1 = [575 x i8] c"awesomedump v1.0\0ARead data from stdin and print it out as hexchars\0A\0AUsage:\0A\09awesomedump [OPTIONS]\0A\09Possible [OPTIONS] are:\0A\09-l <linesize>\09\09Set amount of hexnumbers printed per line\0A\09-b <beginning>\09\09Add <beginning> in front of the whole block\0A\09-e <ending>\09\09Add <ending> in front of the whole block\0A\09-p <prefix>\09\09Add <prefix> in front of every line\0A\09-s <sufffix>\09\09Add <suffix> at the end of evey line\0A\09-d <delimiter>\09\09Add <delimiter> between hexnumbers\0A\09-x\09\09\09Add '0x' before hexnumbers\0A\09-c\09\09\09Add '\\x' before hexnumbers\0A\09-0\09\09\09Print dezimal instead of hex\0A\09-h\09\09\09Print this help\0A\00"
define i32 @usage() {
%1 = call i32 @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([575 x i8], [575 x i8]* @.str.1, i64 0, i64 0))
ret i32 0
}

LLVM IR (-O2):
@.str = [3 x i8] c"%s\00"
@.str.1 = [575 x i8] c"awesomedump v1.0\0ARead data from stdin and print it out as hexchars\0A\0AUsage:\0A\09awesomedump [OPTIONS]\0A\09Possible [OPTIONS] are:\0A\09-l <linesize>\09\09Set amount of hexnumbers printed per line\0A\09-b <beginning>\09\09Add <beginning> in front of the whole block\0A\09-e <ending>\09\09Add <ending> in front of the whole block\0A\09-p <prefix>\09\09Add <prefix> in front of every line\0A\09-s <sufffix>\09\09Add <suffix> at the end of evey line\0A\09-d <delimiter>\09\09Add <delimiter> between hexnumbers\0A\09-x\09\09\09Add '0x' before hexnumbers\0A\09-c\09\09\09Add '\\x' before hexnumbers\0A\09-0\09\09\09Print dezimal instead of hex\0A\09-h\09\09\09Print this help\0A\00"
define i32 @usage() {
%1 = tail call i32 @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([575 x i8], [575 x i8]* @.str.1, i64 0, i64 0))
ret i32 0
}