#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*/ fputs(char const *, int /*<<< orphan*/);
int /*<<< orphan*/ stderr;
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"
      "	-x <opt>:<val>	Add option opt (with value val) in sent packets "
      "(cumulative)\n"
      "			Examples of IPv6 address, string and base-16 encoded "
      "options:\n"
      "			-x dns:2001:2001::1,2001:2001::2 - option 23\n"
      "			-x 15:office - option 15 (userclass)\n"
      "			-x 0x1f4:ABBA - option 500\n"
      "			-x 202:'\"file\"' - option 202\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 (120)\n"
      "	-m <seconds>	Minimum time between accepting RA updates (3)\n"
      "	-L		Ignore default lifetime for RDNSS records\n"
      "	-U		Ignore Server Unicast option\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";
  fputs(buf, stderr);
  return 1;
}


x86 assembly (clang, -O0):
<usage>:
push   %rbp
mov    %rsp,%rbp
sub    $0x5a0,%rsp
lea    -0x5a0(%rbp),%rdi
lea    0xec7(%rip),%rsi
mov    $0x598,%edx
call   1040 <memcpy@plt>
lea    -0x5a0(%rbp),%rdi
mov    0x2e8f(%rip),%rax
mov    (%rax),%esi
call   1030 <fputs@plt>
mov    $0x1,%eax
add    $0x5a0,%rsp
pop    %rbp
ret

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

LLVM IR (-O0):
@__const.usage.buf = [1432 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-x <opt>:<val>\09Add option opt (with value val) in sent packets (cumulative)\0A\09\09\09Examples of IPv6 address, string and base-16 encoded options:\0A\09\09\09-x dns:2001:2001::1,2001:2001::2 - option 23\0A\09\09\09-x 15:office - option 15 (userclass)\0A\09\09\09-x 0x1f4:ABBA - option 500\0A\09\09\09-x 202:'\22file\22' - option 202\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 (120)\0A\09-m <seconds>\09Minimum time between accepting RA updates (3)\0A\09-L\09\09Ignore default lifetime for RDNSS records\0A\09-U\09\09Ignore Server Unicast option\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 = global i32 0
define i32 @usage() {
%1 = alloca [1432 x i8]
%2 = bitcast [1432 x i8]* %1 to i8*
%3 = getelementptr inbounds [1432 x i8], [1432 x i8]* %1, i64 0, i64 0
%4 = load i32, i32* @stderr
%5 = call i32 @fputs(i8* %3, i32 %4)
ret i32 1
}

LLVM IR (-O2):
@__const.usage.buf = [1432 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-x <opt>:<val>\09Add option opt (with value val) in sent packets (cumulative)\0A\09\09\09Examples of IPv6 address, string and base-16 encoded options:\0A\09\09\09-x dns:2001:2001::1,2001:2001::2 - option 23\0A\09\09\09-x 15:office - option 15 (userclass)\0A\09\09\09-x 0x1f4:ABBA - option 500\0A\09\09\09-x 202:'\22file\22' - option 202\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 (120)\0A\09-m <seconds>\09Minimum time between accepting RA updates (3)\0A\09-L\09\09Ignore default lifetime for RDNSS records\0A\09-U\09\09Ignore Server Unicast option\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 = global i32 0
define i32 @usage() {
%1 = alloca [1432 x i8]
%2 = getelementptr inbounds [1432 x i8], [1432 x i8]* %1, i64 0, i64 0
%3 = load i32, i32* @stderr
%4 = call i32 @fputs(i8* %2, i32 %3)
ret i32 1
}