#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 */
typedef int /*<<< orphan*/ buf;

/* Variables and functions */
int /*<<< orphan*/ STDERR_FILENO;
int /*<<< orphan*/ write(int /*<<< orphan*/, char const *, int);
int usage(void) {
  const char buf[] =
      "Usage: odhcp6c [options] <interface>\n"
      "\nFeature options:\n"
      "	-S <time>	Wait at least <time> sec for a DHCP-server (0)\n"
      "	-N <mode>	Mode for requesting addresses [try|force|none]\n"
      "	-P <length>	Request IPv6-Prefix (0 = auto)\n"
      "	-F		Force IPv6-Prefix\n"
      "	-V <class>	Set vendor-class option (base-16 encoded)\n"
      "	-u <user-class> Set user-class option string\n"
      "	-c <clientid>	Override client-ID (base-16 encoded 16-bit type + "
      "value)\n"
      "	-i <iface-id>	Use a custom interface identifier for RA handling\n"
      "	-r <options>	Options to be requested (comma-separated)\n"
      "	-R		Do not request any options except those specified with "
      "-r\n"
      "	-s <script>	Status update script (/usr/sbin/odhcp6c-update)\n"
      "	-a		Don't send Accept Reconfigure option\n"
      "	-f		Don't send Client FQDN option\n"
      "	-k		Don't send a RELEASE when stopping\n"
      "	-t <seconds>	Maximum timeout for DHCPv6-SOLICIT (3600)\n"
      "	-m <seconds>	Minimum time between accepting updates (30)\n"
      "\nInvocation options:\n"
      "	-p <pidfile>	Set pidfile (/var/run/odhcp6c.pid)\n"
      "	-d		Daemonize\n"
      "	-e		Write logmessages to stderr\n"
      "	-v		Increase logging verbosity\n"
      "	-h		Show this help\n\n";
  write(STDERR_FILENO, buf, sizeof(buf));
  return 1;
}


x86 assembly (clang, -O0):
<usage>:
push   %rbp
mov    %rsp,%rbp
sub    $0x430,%rsp
lea    -0x430(%rbp),%rdi
lea    0xec7(%rip),%rsi
mov    $0x422,%edx
call   1040 <memcpy@plt>
mov    0x2e96(%rip),%rax
mov    (%rax),%edi
lea    -0x430(%rbp),%rsi
mov    $0x422,%edx
call   1030 <write@plt>
mov    $0x1,%eax
add    $0x430,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<usage>:
push   %rbx
sub    $0x430,%rsp
lea    0xed1(%rip),%rsi
mov    %rsp,%rbx
mov    $0x422,%edx
mov    %rbx,%rdi
call   1040 <memcpy@plt>
mov    0x2e9a(%rip),%rax
mov    (%rax),%edi
mov    %rbx,%rsi
mov    $0x422,%edx
call   1030 <write@plt>
mov    $0x1,%eax
add    $0x430,%rsp
pop    %rbx
ret

LLVM IR (-O0):
@__const.usage.buf = [1058 x i8] c"Usage: odhcp6c [options] <interface>\0A\0AFeature options:\0A\09-S <time>\09Wait at least <time> sec for a DHCP-server (0)\0A\09-N <mode>\09Mode for requesting addresses [try|force|none]\0A\09-P <length>\09Request IPv6-Prefix (0 = auto)\0A\09-F\09\09Force IPv6-Prefix\0A\09-V <class>\09Set vendor-class option (base-16 encoded)\0A\09-u <user-class> Set user-class option string\0A\09-c <clientid>\09Override client-ID (base-16 encoded 16-bit type + value)\0A\09-i <iface-id>\09Use a custom interface identifier for RA handling\0A\09-r <options>\09Options to be requested (comma-separated)\0A\09-R\09\09Do not request any options except those specified with -r\0A\09-s <script>\09Status update script (/usr/sbin/odhcp6c-update)\0A\09-a\09\09Don't send Accept Reconfigure option\0A\09-f\09\09Don't send Client FQDN option\0A\09-k\09\09Don't send a RELEASE when stopping\0A\09-t <seconds>\09Maximum timeout for DHCPv6-SOLICIT (3600)\0A\09-m <seconds>\09Minimum time between accepting updates (30)\0A\0AInvocation options:\0A\09-p <pidfile>\09Set pidfile (/var/run/odhcp6c.pid)\0A\09-d\09\09Daemonize\0A\09-e\09\09Write logmessages to stderr\0A\09-v\09\09Increase logging verbosity\0A\09-h\09\09Show this help\0A\0A\00"
@STDERR_FILENO = global i32 0
define i32 @usage() {
%1 = alloca [1058 x i8]
%2 = bitcast [1058 x i8]* %1 to i8*
%3 = load i32, i32* @STDERR_FILENO
%4 = getelementptr inbounds [1058 x i8], [1058 x i8]* %1, i64 0, i64 0
%5 = call i32 @write(i32 %3, i8* %4, i32 1058)
ret i32 1
}

LLVM IR (-O2):
@__const.usage.buf = [1058 x i8] c"Usage: odhcp6c [options] <interface>\0A\0AFeature options:\0A\09-S <time>\09Wait at least <time> sec for a DHCP-server (0)\0A\09-N <mode>\09Mode for requesting addresses [try|force|none]\0A\09-P <length>\09Request IPv6-Prefix (0 = auto)\0A\09-F\09\09Force IPv6-Prefix\0A\09-V <class>\09Set vendor-class option (base-16 encoded)\0A\09-u <user-class> Set user-class option string\0A\09-c <clientid>\09Override client-ID (base-16 encoded 16-bit type + value)\0A\09-i <iface-id>\09Use a custom interface identifier for RA handling\0A\09-r <options>\09Options to be requested (comma-separated)\0A\09-R\09\09Do not request any options except those specified with -r\0A\09-s <script>\09Status update script (/usr/sbin/odhcp6c-update)\0A\09-a\09\09Don't send Accept Reconfigure option\0A\09-f\09\09Don't send Client FQDN option\0A\09-k\09\09Don't send a RELEASE when stopping\0A\09-t <seconds>\09Maximum timeout for DHCPv6-SOLICIT (3600)\0A\09-m <seconds>\09Minimum time between accepting updates (30)\0A\0AInvocation options:\0A\09-p <pidfile>\09Set pidfile (/var/run/odhcp6c.pid)\0A\09-d\09\09Daemonize\0A\09-e\09\09Write logmessages to stderr\0A\09-v\09\09Increase logging verbosity\0A\09-h\09\09Show this help\0A\0A\00"
@STDERR_FILENO = global i32 0
define i32 @usage() {
%1 = alloca [1058 x i8]
%2 = getelementptr inbounds [1058 x i8], [1058 x i8]* %1, i64 0, i64 0
%3 = load i32, i32* @STDERR_FILENO
%4 = call i32 @write(i32 %3, i8* %2, i32 1058)
ret i32 1
}