#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_long_help() {
  print_version();
  printf("  --help                     displays this help message\n"
         "  --version                  prints version string only\n"
         "  --filename=FILE            the file which contains the SIP message "
         "to send\n"
         "                               use - for standard input\n"
         "  --no-crlf                  de-activate CR (\\r) insertion\n"
         "  --sip-uri=SIPURI           the destination server uri in form\n"
         "                               sip:[user@]servername[:port]\n"
         "  --traceroute               activates the traceroute mode\n");
  printf(
      "  --usrloc-mode              activates the usrloc mode\n"
      "  --invite-mode              simulates a successful calls with itself\n"
      "  --message-mode             sends messages to itself\n"
      "  --contact=SIPURI           use the given uri as Contact in REGISTER\n"
      "  --appendix-begin=NUMBER    the starting number appendix to the user "
      "name (default: 0)\n"
      "  --appendix-end=NUMBER      the ending numer of the appendix to the "
      "user name\n"
      "  --sleep=NUMBER             sleep number ms before sending next "
      "request\n");
  printf(
      "  --expires=NUMBER           the expires header field value (default: "
      "15)\n"
      "  --remove-bindings=NUMBER   activates randomly removing of user "
      "bindings\n"
      "  --flood-mode               activates the flood mode\n"
      "  --random-mode              activates the random modues (dangerous)\n"
      "  --trash-chars=NUMBER       the maximum number of trashed character in "
      "random mode\n"
      "                               (default: request length)\n");
  printf(
      "  --local-port=PORT          the local port to use (default: any)\n"
      "  --remote-port=PORT         the remote port to use (default: 5060)\n"
      "  --outbound-proxy=HOSTNAME  request target (outbound proxy)\n"
      "  --hostname=HOSTNAME        overwrites the local hostname in all "
      "headers\n"
      "  --max-forwards=NUMBER      the value for the max-forwards header "
      "field\n"
      "  --numeric                  use FQDN instead of IPs in the Via-Line\n");
  printf("  --processes=NUMBER         Divide the workflow among the number of "
         "processes\n"
         "  --auth-username=STRING     username for authentication\n");
  printf(
      "  --no-via                   deactivate the insertion of a Via-Line\n"
      "  --password=PASSWORD        password for authentication\n"
      "                               (if omitted password=username)\n"
      "  --ignore-redirects         ignore redirects\n"
      "  --verbose                  each v produces more verbosity (max. 3)\n"
      "  --extract-ip               extract IP from the warning in reply\n"
      "  --replace-string=STRING    replacement for a special mark in the "
      "message\n"
      "  --replace                  activates replacement of variables\n");
  printf(
      "  --nagios-code              returns exit codes Nagios compliant\n"
      "  --nagios-warn=NUMBER       return Nagios warning if retrans > number\n"
      "  --message-body=STRING      send a message with string as body\n"
      "  --disposition=STRING       Content-Disposition value\n"
      "  --search=REGEXP            search for a RegExp in replies and return "
      "error\n"
      "                             on failfure\n"
      "  --timing=NUMBER            number of test runs and print just the "
      "timings\n"
      "  --symmetric                send and received on the same port\n"
      "  --from=SIPURI              use the given uri as From in MESSAGE\n"
      "  --timeout-factor=NUMBER    timeout multiplier for INVITE "
      "transactions\n"
      "                             and reliable transports (default: 64)\n"
      "  --transport=STRING         specify transport to be used\n"
      "  --headers=STRING           adds additional headers to the request\n");
  exit_code(0);
}


x86 assembly (clang, -O0):
<print_long_help>:
push   %rbp
mov    %rsp,%rbp
mov    $0x0,%al
call   1030 <print_version@plt>
lea    0xebe(%rip),%rdi
call   1040 <printf@plt>
lea    0x109a(%rip),%rdi
call   1040 <printf@plt>
lea    0x1278(%rip),%rdi
call   1040 <printf@plt>
lea    0x1409(%rip),%rdi
call   1040 <printf@plt>
lea    0x1599(%rip),%rdi
call   1040 <printf@plt>
lea    0x1616(%rip),%rdi
call   1040 <printf@plt>
lea    0x1806(%rip),%rdi
call   1040 <printf@plt>
xor    %edi,%edi
call   1050 <exit_code@plt>
pop    %rbp
ret

x86 assembly (clang, -O2):
<print_long_help>:
push   %rax
xor    %eax,%eax
call   1040 <print_version@plt>
lea    0xec1(%rip),%rdi
call   1030 <puts@plt>
lea    0x109c(%rip),%rdi
call   1030 <puts@plt>
lea    0x1279(%rip),%rdi
call   1030 <puts@plt>
lea    0x1409(%rip),%rdi
call   1030 <puts@plt>
lea    0x1598(%rip),%rdi
call   1030 <puts@plt>
lea    0x1614(%rip),%rdi
call   1030 <puts@plt>
lea    0x1803(%rip),%rdi
call   1030 <puts@plt>
xor    %edi,%edi
pop    %rax
jmp    1050 <exit_code@plt>

LLVM IR (-O0):
@.str = [488 x i8] c" --help displays this help message\0A --version prints version string only\0A --filename=FILE the file which contains the SIP message to send\0A use - for standard input\0A --no-crlf de-activate CR (\\r) insertion\0A --sip-uri=SIPURI the destination server uri in form\0A sip:[user@]servername[:port]\0A --traceroute activates the traceroute mode\0A\00"
@.str.1 = [490 x i8] c" --usrloc-mode activates the usrloc mode\0A --invite-mode simulates a successful calls with itself\0A --message-mode sends messages to itself\0A --contact=SIPURI use the given uri as Contact in REGISTER\0A --appendix-begin=NUMBER the starting number appendix to the user name (default: 0)\0A --appendix-end=NUMBER the ending numer of the appendix to the user name\0A --sleep=NUMBER sleep number ms before sending next request\0A\00"
@.str.2 = [413 x i8] c" --expires=NUMBER the expires header field value (default: 15)\0A --remove-bindings=NUMBER activates randomly removing of user bindings\0A --flood-mode activates the flood mode\0A --random-mode activates the random modues (dangerous)\0A --trash-chars=NUMBER the maximum number of trashed character in random mode\0A (default: request length)\0A\00"
@.str.3 = [412 x i8] c" --local-port=PORT the local port to use (default: any)\0A --remote-port=PORT the remote port to use (default: 5060)\0A --outbound-proxy=HOSTNAME request target (outbound proxy)\0A --hostname=HOSTNAME overwrites the local hostname in all headers\0A --max-forwards=NUMBER the value for the max-forwards header field\0A --numeric use FQDN instead of IPs in the Via-Line\0A\00"
@.str.4 = [137 x i8] c" --processes=NUMBER Divide the workflow among the number of processes\0A --auth-username=STRING username for authentication\0A\00"
@.str.5 = [508 x i8] c" --no-via deactivate the insertion of a Via-Line\0A --password=PASSWORD password for authentication\0A (if omitted password=username)\0A --ignore-redirects ignore redirects\0A --verbose each v produces more verbosity (max. 3)\0A --extract-ip extract IP from the warning in reply\0A --replace-string=STRING replacement for a special mark in the message\0A --replace activates replacement of variables\0A\00"
@.str.6 = [845 x i8] c" --nagios-code returns exit codes Nagios compliant\0A --nagios-warn=NUMBER return Nagios warning if retrans > number\0A --message-body=STRING send a message with string as body\0A --disposition=STRING Content-Disposition value\0A --search=REGEXP search for a RegExp in replies and return error\0A on failfure\0A --timing=NUMBER number of test runs and print just the timings\0A --symmetric send and received on the same port\0A --from=SIPURI use the given uri as From in MESSAGE\0A --timeout-factor=NUMBER timeout multiplier for INVITE transactions\0A and reliable transports (default: 64)\0A --transport=STRING specify transport to be used\0A --headers=STRING adds additional headers to the request\0A\00"
define void @print_long_help() {
%1 = call i32 (...) @print_version()
%2 = call i32 @printf(i8* getelementptr inbounds ([488 x i8], [488 x i8]* @.str, i64 0, i64 0))
%3 = call i32 @printf(i8* getelementptr inbounds ([490 x i8], [490 x i8]* @.str.1, i64 0, i64 0))
%4 = call i32 @printf(i8* getelementptr inbounds ([413 x i8], [413 x i8]* @.str.2, i64 0, i64 0))
%5 = call i32 @printf(i8* getelementptr inbounds ([412 x i8], [412 x i8]* @.str.3, i64 0, i64 0))
%6 = call i32 @printf(i8* getelementptr inbounds ([137 x i8], [137 x i8]* @.str.4, i64 0, i64 0))
%7 = call i32 @printf(i8* getelementptr inbounds ([508 x i8], [508 x i8]* @.str.5, i64 0, i64 0))
%8 = call i32 @printf(i8* getelementptr inbounds ([845 x i8], [845 x i8]* @.str.6, i64 0, i64 0))
%9 = call i32 @exit_code(i32 0)
ret void
}

LLVM IR (-O2):
@str = [487 x i8] c" --help displays this help message\0A --version prints version string only\0A --filename=FILE the file which contains the SIP message to send\0A use - for standard input\0A --no-crlf de-activate CR (\\r) insertion\0A --sip-uri=SIPURI the destination server uri in form\0A sip:[user@]servername[:port]\0A --traceroute activates the traceroute mode\00"
@str.7 = [489 x i8] c" --usrloc-mode activates the usrloc mode\0A --invite-mode simulates a successful calls with itself\0A --message-mode sends messages to itself\0A --contact=SIPURI use the given uri as Contact in REGISTER\0A --appendix-begin=NUMBER the starting number appendix to the user name (default: 0)\0A --appendix-end=NUMBER the ending numer of the appendix to the user name\0A --sleep=NUMBER sleep number ms before sending next request\00"
@str.8 = [412 x i8] c" --expires=NUMBER the expires header field value (default: 15)\0A --remove-bindings=NUMBER activates randomly removing of user bindings\0A --flood-mode activates the flood mode\0A --random-mode activates the random modues (dangerous)\0A --trash-chars=NUMBER the maximum number of trashed character in random mode\0A (default: request length)\00"
@str.9 = [411 x i8] c" --local-port=PORT the local port to use (default: any)\0A --remote-port=PORT the remote port to use (default: 5060)\0A --outbound-proxy=HOSTNAME request target (outbound proxy)\0A --hostname=HOSTNAME overwrites the local hostname in all headers\0A --max-forwards=NUMBER the value for the max-forwards header field\0A --numeric use FQDN instead of IPs in the Via-Line\00"
@str.10 = [136 x i8] c" --processes=NUMBER Divide the workflow among the number of processes\0A --auth-username=STRING username for authentication\00"
@str.11 = [507 x i8] c" --no-via deactivate the insertion of a Via-Line\0A --password=PASSWORD password for authentication\0A (if omitted password=username)\0A --ignore-redirects ignore redirects\0A --verbose each v produces more verbosity (max. 3)\0A --extract-ip extract IP from the warning in reply\0A --replace-string=STRING replacement for a special mark in the message\0A --replace activates replacement of variables\00"
@str.12 = [844 x i8] c" --nagios-code returns exit codes Nagios compliant\0A --nagios-warn=NUMBER return Nagios warning if retrans > number\0A --message-body=STRING send a message with string as body\0A --disposition=STRING Content-Disposition value\0A --search=REGEXP search for a RegExp in replies and return error\0A on failfure\0A --timing=NUMBER number of test runs and print just the timings\0A --symmetric send and received on the same port\0A --from=SIPURI use the given uri as From in MESSAGE\0A --timeout-factor=NUMBER timeout multiplier for INVITE transactions\0A and reliable transports (default: 64)\0A --transport=STRING specify transport to be used\0A --headers=STRING adds additional headers to the request\00"
define void @print_long_help() {
%1 = tail call i32 (...) @print_version()
%2 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([487 x i8], [487 x i8]* @str, i64 0, i64 0))
%3 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([489 x i8], [489 x i8]* @str.7, i64 0, i64 0))
%4 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([412 x i8], [412 x i8]* @str.8, i64 0, i64 0))
%5 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([411 x i8], [411 x i8]* @str.9, i64 0, i64 0))
%6 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([136 x i8], [136 x i8]* @str.10, i64 0, i64 0))
%7 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([507 x i8], [507 x i8]* @str.11, i64 0, i64 0))
%8 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([844 x i8], [844 x i8]* @str.12, i64 0, i64 0))
%9 = tail call i32 @exit_code(i32 0)
ret void
}