#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 *, char *, char *, char *, char *);
void write_help(char *appname) {
  printf("\n"
         "Usage: %s [-q] [-a <bind_address>] [-p <bind_port>]\n"
         "          [-d <remote_address>] [-r <remote_port>]\n"
         "\n"
         "-q\n"
         "\t Quiet mode (no errors will be written)\n"
         "\n"
         "-a <bind_address>\n"
         "\t The address the relay should listen on. \n"
         "\t (Default: %s)\n"
         "\n"
         "-p <bind_port>\n"
         "\t The port the relay should listen on.\n"
         "\t (Default: %s)\n"
         "\n"
         "-d <remote_address>\n"
         "\t The Address of the destination-Mailserver\n"
         "\t (Default: %s)\n"
         "\n"
         "-s \n"
         "\t Switches zo SMTP mode instead ob user friendly Prompt\n"
         "\n"
         "-r <remote_port>\n"
         "\t The Port of the destination Mailserver\n"
         "\t (Default: %s)\n"
         "\n"
         "Thats all, have fun\n",
         appname, "0.0.0.0", "2345", "141.30.228.39", "25");
}


x86 assembly (clang, -O0):
<write_help>:
push   %rbp
mov    %rsp,%rbp
sub    $0x10,%rsp
mov    %rdi,-0x8(%rbp)
mov    -0x8(%rbp),%rsi
lea    0xed9(%rip),%rdi
lea    0x10eb(%rip),%rdx
lea    0x10ec(%rip),%rcx
lea    0x10ea(%rip),%r8
lea    0x10f1(%rip),%r9
call   1030 <printf@plt>
add    $0x10,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<write_help>:
mov    %rdi,%rsi
lea    0xee6(%rip),%rdi
lea    0x10f8(%rip),%rdx
lea    0x10f9(%rip),%rcx
lea    0x10f7(%rip),%r8
lea    0x10fe(%rip),%r9
jmp    1030 <printf@plt>

LLVM IR (-O0):
@.str = [537 x i8] c"\0AUsage: %s [-q] [-a <bind_address>] [-p <bind_port>]\0A [-d <remote_address>] [-r <remote_port>]\0A\0A-q\0A\09 Quiet mode (no errors will be written)\0A\0A-a <bind_address>\0A\09 The address the relay should listen on. \0A\09 (Default: %s)\0A\0A-p <bind_port>\0A\09 The port the relay should listen on.\0A\09 (Default: %s)\0A\0A-d <remote_address>\0A\09 The Address of the destination-Mailserver\0A\09 (Default: %s)\0A\0A-s \0A\09 Switches zo SMTP mode instead ob user friendly Prompt\0A\0A-r <remote_port>\0A\09 The Port of the destination Mailserver\0A\09 (Default: %s)\0A\0AThats all, have fun\0A\00"
@.str.1 = [8 x i8] c"0.0.0.0\00"
@.str.2 = [5 x i8] c"2345\00"
@.str.3 = [14 x i8] c"141.30.228.39\00"
@.str.4 = [3 x i8] c"25\00"
define void @write_help(i8* %0) {
%2 = alloca i8*
store i8* %0, i8** %2
%3 = load i8*, i8** %2
%4 = call i32 @printf(i8* getelementptr inbounds ([537 x i8], [537 x i8]* @.str, i64 0, i64 0), i8* %3, i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.1, i64 0, i64 0), i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.3, i64 0, i64 0), i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.4, i64 0, i64 0))
ret void
}

LLVM IR (-O2):
@.str = [537 x i8] c"\0AUsage: %s [-q] [-a <bind_address>] [-p <bind_port>]\0A [-d <remote_address>] [-r <remote_port>]\0A\0A-q\0A\09 Quiet mode (no errors will be written)\0A\0A-a <bind_address>\0A\09 The address the relay should listen on. \0A\09 (Default: %s)\0A\0A-p <bind_port>\0A\09 The port the relay should listen on.\0A\09 (Default: %s)\0A\0A-d <remote_address>\0A\09 The Address of the destination-Mailserver\0A\09 (Default: %s)\0A\0A-s \0A\09 Switches zo SMTP mode instead ob user friendly Prompt\0A\0A-r <remote_port>\0A\09 The Port of the destination Mailserver\0A\09 (Default: %s)\0A\0AThats all, have fun\0A\00"
@.str.1 = [8 x i8] c"0.0.0.0\00"
@.str.2 = [5 x i8] c"2345\00"
@.str.3 = [14 x i8] c"141.30.228.39\00"
@.str.4 = [3 x i8] c"25\00"
define void @write_help(i8* %0) {
%2 = tail call i32 @printf(i8* getelementptr inbounds ([537 x i8], [537 x i8]* @.str, i64 0, i64 0), i8* %0, i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.1, i64 0, i64 0), i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.3, i64 0, i64 0), i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.4, i64 0, i64 0))
ret void
}