#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*/ print_search_paths(int /*<<< orphan*/, char *);
int /*<<< orphan*/ printf(char *, ...);
int /*<<< orphan*/ stdout;
void cmd_usage(const char *program) {
  printf(
      "Usage: %s [ up | down ] [ CONFIG_FILE | INTERFACE ]\n"
      "\n"
      "  CONFIG_FILE is a configuration file, whose filename is the interface "
      "name\n"
      "  followed by `.conf'. Otherwise, INTERFACE is an interface name, with\n"
      "  configuration found at:\n\n",
      program);
  print_search_paths(stdout, "  - ");
  printf("\n  It is to be readable by wg(8)'s `setconf' sub-command, with the "
         "exception\n"
         "  of the following additions to the [Interface] section, which are "
         "handled by\n"
         "  this program:\n\n"
         "  - Address: may be specified one or more times and contains one or "
         "more\n"
         "    IP addresses (with an optional CIDR mask) to be set for the "
         "interface.\n"
         "  - MTU: an optional MTU for the interface; if unspecified, "
         "auto-calculated.\n"
         "  - DNS: an optional DNS server to use while the device is up.\n"
         "  - ExcludedApplications: optional applications to exclude from the "
         "tunnel.\n\n"
         "  See wg-quick(8) for more info and examples.\n");
}


x86 assembly (clang, -O0):
<cmd_usage>:
push   %rbp
mov    %rsp,%rbp
sub    $0x10,%rsp
mov    %rdi,-0x8(%rbp)
mov    -0x8(%rbp),%rsi
lea    0xec9(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    0x2e9b(%rip),%rax
mov    (%rax),%edi
lea    0xf96(%rip),%rsi
call   1040 <print_search_paths@plt>
lea    0xf8f(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
add    $0x10,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<cmd_usage>:
push   %rax
mov    %rdi,%rsi
lea    0xec5(%rip),%rdi
xor    %eax,%eax
call   1040 <printf@plt>
mov    0x2e97(%rip),%rax
mov    (%rax),%edi
lea    0xf92(%rip),%rsi
call   1050 <print_search_paths@plt>
lea    0xf8b(%rip),%rdi
pop    %rax
jmp    1030 <puts@plt>

LLVM IR (-O0):
@.str = [228 x i8] c"Usage: %s [ up | down ] [ CONFIG_FILE | INTERFACE ]\0A\0A CONFIG_FILE is a configuration file, whose filename is the interface name\0A followed by `.conf'. Otherwise, INTERFACE is an interface name, with\0A configuration found at:\0A\0A\00"
@stdout = global i32 0
@.str.1 = [5 x i8] c" - \00"
@.str.2 = [584 x i8] c"\0A It is to be readable by wg(8)'s `setconf' sub-command, with the exception\0A of the following additions to the [Interface] section, which are handled by\0A this program:\0A\0A - Address: may be specified one or more times and contains one or more\0A IP addresses (with an optional CIDR mask) to be set for the interface.\0A - MTU: an optional MTU for the interface; if unspecified, auto-calculated.\0A - DNS: an optional DNS server to use while the device is up.\0A - ExcludedApplications: optional applications to exclude from the tunnel.\0A\0A See wg-quick(8) for more info and examples.\0A\00"
define void @cmd_usage(i8* %0) {
%2 = alloca i8*
store i8* %0, i8** %2
%3 = load i8*, i8** %2
%4 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([228 x i8], [228 x i8]* @.str, i64 0, i64 0), i8* %3)
%5 = load i32, i32* @stdout
%6 = call i32 @print_search_paths(i32 %5, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.1, i64 0, i64 0))
%7 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([584 x i8], [584 x i8]* @.str.2, i64 0, i64 0))
ret void
}

LLVM IR (-O2):
@.str = [228 x i8] c"Usage: %s [ up | down ] [ CONFIG_FILE | INTERFACE ]\0A\0A CONFIG_FILE is a configuration file, whose filename is the interface name\0A followed by `.conf'. Otherwise, INTERFACE is an interface name, with\0A configuration found at:\0A\0A\00"
@stdout = global i32 0
@.str.1 = [5 x i8] c" - \00"
@str = [583 x i8] c"\0A It is to be readable by wg(8)'s `setconf' sub-command, with the exception\0A of the following additions to the [Interface] section, which are handled by\0A this program:\0A\0A - Address: may be specified one or more times and contains one or more\0A IP addresses (with an optional CIDR mask) to be set for the interface.\0A - MTU: an optional MTU for the interface; if unspecified, auto-calculated.\0A - DNS: an optional DNS server to use while the device is up.\0A - ExcludedApplications: optional applications to exclude from the tunnel.\0A\0A See wg-quick(8) for more info and examples.\00"
define void @cmd_usage(i8* %0) {
%2 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([228 x i8], [228 x i8]* @.str, i64 0, i64 0), i8* %0)
%3 = load i32, i32* @stdout
%4 = tail call i32 @print_search_paths(i32 %3, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.1, i64 0, i64 0))
%5 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([583 x i8], [583 x i8]* @str, i64 0, i64 0))
ret void
}