#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_code(int /*<<< orphan*/);
int /*<<< orphan*/ print_version();
int /*<<< orphan*/ printf(char *);
void print_help() {
  print_version();
  printf("  -h                displays this help message\n"
         "  -V                prints version string only\n"
         "  -f FILE           the file which contains the SIP message to send\n"
         "                      use - for standard input\n"
         "  -L                de-activate CR (\\r) insertion in files\n"
         "  -s SIPURI         the destination server uri in form\n"
         "                      sip:[user@]servername[:port]\n"
         "  -T                activates the traceroute mode\n"
         "  -U                activates the usrloc mode\n"
         "  -I                simulates a successful calls with itself\n"
         "  -M                sends messages to itself\n");
  printf(
      "  -C SIPURI         use the given uri as Contact in REGISTER\n"
      "  -b NUMBER         the starting number appendix to the user name "
      "(default: 0)\n"
      "  -e NUMBER         the ending numer of the appendix to the user name\n"
      "  -o NUMBER         sleep number ms before sending next request\n"
      "  -x NUMBER         the expires header field value (default: 15)\n"
      "  -z NUMBER         activates randomly removing of user bindings\n"
      "  -F                activates the flood mode\n");
  printf("  -R                activates the random modues (dangerous)\n"
         "  -t NUMBER         the maximum number of trashed character in "
         "random mode\n"
         "                      (default: request length)\n"
         "  -l PORT           the local port to use (default: any)\n"
         "  -r PORT           the remote port to use (default: 5060)\n"
         "  -p HOSTNAME       request target (outbound proxy)\n");
  printf("  -H HOSTNAME       overwrites the local hostname in all headers\n"
         "  -m NUMBER         the value for the max-forwards header field\n"
         "  -n                use FQDN instead of IPs in the Via-Line\n"
         "  -i                deactivate the insertion of a Via-Line\n"
         "  -a PASSWORD       password for authentication\n"
         "                      (if omitted password=\"\")\n"
         "  -u STRING         Authentication username\n");
  printf("  -d                ignore redirects\n"
         "  -v                each v produces more verbosity (max. 3)\n"
         "  -w                extract IP from the warning in reply\n"
         "  -g STRING         replacement for a special mark in the message\n"
         "  -G                activates replacement of variables\n"
         "  -N                returns exit codes Nagios compliant\n"
         "  -q STRING         search for a RegExp in replies and return error\n"
         "                    on failure\n");
  printf("  -W NUMBER         return Nagios warning if retrans > number\n"
         "  -B STRING         send a message with string as body\n"
         "  -O STRING         Content-Disposition value\n"
         "  -P NUMBER         Number of processes to start\n"
         "  -A NUMBER         number of test runs and print just timings\n"
         "  -S                use same port for receiving and sending\n"
         "  -c SIPURI         use the given uri as From in MESSAGE\n"
         "  -D NUMBER         timeout multiplier for INVITE transactions\n"
         "                    and reliable transports (default: 64)\n"
         "  -E STRING         specify transport to be used\n"
         "  -j STRING         adds additional headers to the request\n");
  exit_code(0);
}


x86 assembly (clang, -O0):
<print_help>:
push   %rbp
mov    %rsp,%rbp
mov    $0x0,%al
call   1030 <print_version@plt>
lea    0xebe(%rip),%rdi
call   1040 <printf@plt>
lea    0x10f3(%rip),%rdi
call   1040 <printf@plt>
lea    0x12a9(%rip),%rdi
call   1040 <printf@plt>
lea    0x13fd(%rip),%rdi
call   1040 <printf@plt>
lea    0x1575(%rip),%rdi
call   1040 <printf@plt>
lea    0x1718(%rip),%rdi
call   1040 <printf@plt>
xor    %edi,%edi
call   1050 <exit_code@plt>
pop    %rbp
ret

x86 assembly (clang, -O2):
<print_help>:
push   %rax
xor    %eax,%eax
call   1040 <print_version@plt>
lea    0xec1(%rip),%rdi
call   1030 <puts@plt>
lea    0x10f5(%rip),%rdi
call   1030 <puts@plt>
lea    0x12aa(%rip),%rdi
call   1030 <puts@plt>
lea    0x13fd(%rip),%rdi
call   1030 <puts@plt>
lea    0x1574(%rip),%rdi
call   1030 <puts@plt>
lea    0x1716(%rip),%rdi
call   1030 <puts@plt>
xor    %edi,%edi
pop    %rax
jmp    1050 <exit_code@plt>

LLVM IR (-O0):
@.str = [577 x i8] c" -h displays this help message\0A -V prints version string only\0A -f FILE the file which contains the SIP message to send\0A use - for standard input\0A -L de-activate CR (\\r) insertion in files\0A -s SIPURI the destination server uri in form\0A sip:[user@]servername[:port]\0A -T activates the traceroute mode\0A -U activates the usrloc mode\0A -I simulates a successful calls with itself\0A -M sends messages to itself\0A\00"
@.str.1 = [450 x i8] c" -C SIPURI use the given uri as Contact in REGISTER\0A -b NUMBER the starting number appendix to the user name (default: 0)\0A -e NUMBER the ending numer of the appendix to the user name\0A -o NUMBER sleep number ms before sending next request\0A -x NUMBER the expires header field value (default: 15)\0A -z NUMBER activates randomly removing of user bindings\0A -F activates the flood mode\0A\00"
@.str.2 = [352 x i8] c" -R activates the random modues (dangerous)\0A -t NUMBER the maximum number of trashed character in random mode\0A (default: request length)\0A -l PORT the local port to use (default: any)\0A -r PORT the remote port to use (default: 5060)\0A -p HOSTNAME request target (outbound proxy)\0A\00"
@.str.3 = [388 x i8] c" -H HOSTNAME overwrites the local hostname in all headers\0A -m NUMBER the value for the max-forwards header field\0A -n use FQDN instead of IPs in the Via-Line\0A -i deactivate the insertion of a Via-Line\0A -a PASSWORD password for authentication\0A (if omitted password=\22\22)\0A -u STRING Authentication username\0A\00"
@.str.4 = [431 x i8] c" -d ignore redirects\0A -v each v produces more verbosity (max. 3)\0A -w extract IP from the warning in reply\0A -g STRING replacement for a special mark in the message\0A -G activates replacement of variables\0A -N returns exit codes Nagios compliant\0A -q STRING search for a RegExp in replies and return error\0A on failure\0A\00"
@.str.5 = [622 x i8] c" -W NUMBER return Nagios warning if retrans > number\0A -B STRING send a message with string as body\0A -O STRING Content-Disposition value\0A -P NUMBER Number of processes to start\0A -A NUMBER number of test runs and print just timings\0A -S use same port for receiving and sending\0A -c SIPURI use the given uri as From in MESSAGE\0A -D NUMBER timeout multiplier for INVITE transactions\0A and reliable transports (default: 64)\0A -E STRING specify transport to be used\0A -j STRING adds additional headers to the request\0A\00"
define void @print_help() {
%1 = call i32 (...) @print_version()
%2 = call i32 @printf(i8* getelementptr inbounds ([577 x i8], [577 x i8]* @.str, i64 0, i64 0))
%3 = call i32 @printf(i8* getelementptr inbounds ([450 x i8], [450 x i8]* @.str.1, i64 0, i64 0))
%4 = call i32 @printf(i8* getelementptr inbounds ([352 x i8], [352 x i8]* @.str.2, i64 0, i64 0))
%5 = call i32 @printf(i8* getelementptr inbounds ([388 x i8], [388 x i8]* @.str.3, i64 0, i64 0))
%6 = call i32 @printf(i8* getelementptr inbounds ([431 x i8], [431 x i8]* @.str.4, i64 0, i64 0))
%7 = call i32 @printf(i8* getelementptr inbounds ([622 x i8], [622 x i8]* @.str.5, i64 0, i64 0))
%8 = call i32 @exit_code(i32 0)
ret void
}

LLVM IR (-O2):
@str = [576 x i8] c" -h displays this help message\0A -V prints version string only\0A -f FILE the file which contains the SIP message to send\0A use - for standard input\0A -L de-activate CR (\\r) insertion in files\0A -s SIPURI the destination server uri in form\0A sip:[user@]servername[:port]\0A -T activates the traceroute mode\0A -U activates the usrloc mode\0A -I simulates a successful calls with itself\0A -M sends messages to itself\00"
@str.6 = [449 x i8] c" -C SIPURI use the given uri as Contact in REGISTER\0A -b NUMBER the starting number appendix to the user name (default: 0)\0A -e NUMBER the ending numer of the appendix to the user name\0A -o NUMBER sleep number ms before sending next request\0A -x NUMBER the expires header field value (default: 15)\0A -z NUMBER activates randomly removing of user bindings\0A -F activates the flood mode\00"
@str.7 = [351 x i8] c" -R activates the random modues (dangerous)\0A -t NUMBER the maximum number of trashed character in random mode\0A (default: request length)\0A -l PORT the local port to use (default: any)\0A -r PORT the remote port to use (default: 5060)\0A -p HOSTNAME request target (outbound proxy)\00"
@str.8 = [387 x i8] c" -H HOSTNAME overwrites the local hostname in all headers\0A -m NUMBER the value for the max-forwards header field\0A -n use FQDN instead of IPs in the Via-Line\0A -i deactivate the insertion of a Via-Line\0A -a PASSWORD password for authentication\0A (if omitted password=\22\22)\0A -u STRING Authentication username\00"
@str.9 = [430 x i8] c" -d ignore redirects\0A -v each v produces more verbosity (max. 3)\0A -w extract IP from the warning in reply\0A -g STRING replacement for a special mark in the message\0A -G activates replacement of variables\0A -N returns exit codes Nagios compliant\0A -q STRING search for a RegExp in replies and return error\0A on failure\00"
@str.10 = [621 x i8] c" -W NUMBER return Nagios warning if retrans > number\0A -B STRING send a message with string as body\0A -O STRING Content-Disposition value\0A -P NUMBER Number of processes to start\0A -A NUMBER number of test runs and print just timings\0A -S use same port for receiving and sending\0A -c SIPURI use the given uri as From in MESSAGE\0A -D NUMBER timeout multiplier for INVITE transactions\0A and reliable transports (default: 64)\0A -E STRING specify transport to be used\0A -j STRING adds additional headers to the request\00"
define void @print_help() {
%1 = tail call i32 (...) @print_version()
%2 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([576 x i8], [576 x i8]* @str, i64 0, i64 0))
%3 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([449 x i8], [449 x i8]* @str.6, i64 0, i64 0))
%4 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([351 x i8], [351 x i8]* @str.7, i64 0, i64 0))
%5 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([387 x i8], [387 x i8]* @str.8, i64 0, i64 0))
%6 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([430 x i8], [430 x i8]* @str.9, i64 0, i64 0))
%7 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([621 x i8], [621 x i8]* @str.10, i64 0, i64 0))
%8 = tail call i32 @exit_code(i32 0)
ret void
}