#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 *);
void usage() {
  printf("usage: udptunnel -s [host:]port [-a acl]|[-d acl] ...\n");
  printf("   or: udptunnel -c [host:]port -p host:port -t host:port\n");
  printf("\n"
         "  Server options:\n"
         "  -s    server mode. server host and port\n"
         "  -a    allowed source and dest\n"
         "        src_ip,dest_ip,dest_port,allow|deny\n"
         "        any ip is 0.0.0.0, any port is 0"
         "\n"
         "  Client options:\n"
         "  -c    client mode. local TCP server host and port\n"
         "  -t    tunnel server host and port\n"
         "  -r    remote host and port\n"
         "\n"
         "  Common options:\n"
         "  -v    verbose level, 0-3, default is 1\n"
         "        0 - Error, 1 - Warning, 2 - Info, 3 - Debug\n"
         "  -h    show this help and exit\n"
         "\n");
}


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

x86 assembly (clang, -O2):
<usage>:
push   %rax
lea    0xee8(%rip),%rdi
call   1030 <puts@plt>
lea    0xf12(%rip),%rdi
call   1030 <puts@plt>
lea    0xf40(%rip),%rdi
pop    %rax
jmp    1030 <puts@plt>

LLVM IR (-O0):
@.str = [55 x i8] c"usage: udptunnel -s [host:]port [-a acl]|[-d acl] ...\0A\00"
@.str.1 = [59 x i8] c" or: udptunnel -c [host:]port -p host:port -t host:port\0A\00"
@.str.2 = [459 x i8] c"\0A Server options:\0A -s server mode. server host and port\0A -a allowed source and dest\0A src_ip,dest_ip,dest_port,allow|deny\0A any ip is 0.0.0.0, any port is 0\0A Client options:\0A -c client mode. local TCP server host and port\0A -t tunnel server host and port\0A -r remote host and port\0A\0A Common options:\0A -v verbose level, 0-3, default is 1\0A 0 - Error, 1 - Warning, 2 - Info, 3 - Debug\0A -h show this help and exit\0A\0A\00"
define void @usage() {
%1 = call i32 @printf(i8* getelementptr inbounds ([55 x i8], [55 x i8]* @.str, i64 0, i64 0))
%2 = call i32 @printf(i8* getelementptr inbounds ([59 x i8], [59 x i8]* @.str.1, i64 0, i64 0))
%3 = call i32 @printf(i8* getelementptr inbounds ([459 x i8], [459 x i8]* @.str.2, i64 0, i64 0))
ret void
}

LLVM IR (-O2):
@str = [54 x i8] c"usage: udptunnel -s [host:]port [-a acl]|[-d acl] ...\00"
@str.3 = [58 x i8] c" or: udptunnel -c [host:]port -p host:port -t host:port\00"
@str.4 = [458 x i8] c"\0A Server options:\0A -s server mode. server host and port\0A -a allowed source and dest\0A src_ip,dest_ip,dest_port,allow|deny\0A any ip is 0.0.0.0, any port is 0\0A Client options:\0A -c client mode. local TCP server host and port\0A -t tunnel server host and port\0A -r remote host and port\0A\0A Common options:\0A -v verbose level, 0-3, default is 1\0A 0 - Error, 1 - Warning, 2 - Info, 3 - Debug\0A -h show this help and exit\0A\00"
define void @usage() {
%1 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([54 x i8], [54 x i8]* @str, i64 0, i64 0))
%2 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([58 x i8], [58 x i8]* @str.3, i64 0, i64 0))
%3 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([458 x i8], [458 x i8]* @str.4, i64 0, i64 0))
ret void
}