#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(int /*<<< orphan*/);
int /*<<< orphan*/ printf(char *);
void show_usage(void) {
  printf(
      "Usage: udhcpc [OPTIONS]\n\n"
      "  -c, --clientid=CLIENTID         Client identifier\n"
      "  -H, --hostname=HOSTNAME         Client hostname\n"
      "  -h                              Alias for -H\n"
      "  -f, --foreground                Do not fork after getting lease\n"
      "  -b, --background                Fork to background if lease cannot "
      "be\n"
      "                                  immediately negotiated.\n"
      "  -i, --interface=INTERFACE       Interface to use (default: eth0)\n"
      "  -n, --now                       Exit with failure if lease cannot be\n"
      "                                  immediately negotiated.\n"
      "  -p, --pidfile=file              Store process ID of daemon in file\n"
      "  -q, --quit                      Quit after obtaining lease\n"
      "  -r, --request=IP                IP address to request (default: "
      "none)\n"
      "  -s, --script=file               Run file at dhcp events (default:\n"
      "                                  "
      "/usr/share/udhcpc/default.script"
      ")\n"
      "  -v, --version                   Display version\n");
  exit(0);
}


x86 assembly (clang, -O0):
<show_usage>:
push   %rbp
mov    %rsp,%rbp
lea    0xed5(%rip),%rdi
call   1030 <printf@plt>
xor    %edi,%edi
call   1040 <exit@plt>

x86 assembly (clang, -O2):
<show_usage>:
push   %rax
lea    0xed8(%rip),%rdi
call   1030 <puts@plt>
xor    %edi,%edi
call   1040 <exit@plt>

LLVM IR (-O0):
@.str = [955 x i8] c"Usage: udhcpc [OPTIONS]\0A\0A -c, --clientid=CLIENTID Client identifier\0A -H, --hostname=HOSTNAME Client hostname\0A -h Alias for -H\0A -f, --foreground Do not fork after getting lease\0A -b, --background Fork to background if lease cannot be\0A immediately negotiated.\0A -i, --interface=INTERFACE Interface to use (default: eth0)\0A -n, --now Exit with failure if lease cannot be\0A immediately negotiated.\0A -p, --pidfile=file Store process ID of daemon in file\0A -q, --quit Quit after obtaining lease\0A -r, --request=IP IP address to request (default: none)\0A -s, --script=file Run file at dhcp events (default:\0A /usr/share/udhcpc/default.script)\0A -v, --version Display version\0A\00"
define void @show_usage() {
%1 = call i32 @printf(i8* getelementptr inbounds ([955 x i8], [955 x i8]* @.str, i64 0, i64 0))
%2 = call i32 @exit(i32 0)
unreachable
}

LLVM IR (-O2):
@str = [954 x i8] c"Usage: udhcpc [OPTIONS]\0A\0A -c, --clientid=CLIENTID Client identifier\0A -H, --hostname=HOSTNAME Client hostname\0A -h Alias for -H\0A -f, --foreground Do not fork after getting lease\0A -b, --background Fork to background if lease cannot be\0A immediately negotiated.\0A -i, --interface=INTERFACE Interface to use (default: eth0)\0A -n, --now Exit with failure if lease cannot be\0A immediately negotiated.\0A -p, --pidfile=file Store process ID of daemon in file\0A -q, --quit Quit after obtaining lease\0A -r, --request=IP IP address to request (default: none)\0A -s, --script=file Run file at dhcp events (default:\0A /usr/share/udhcpc/default.script)\0A -v, --version Display version\00"
define void @show_usage() {
%1 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([954 x i8], [954 x i8]* @str, i64 0, i64 0))
%2 = tail call i32 @exit(i32 0)
unreachable
}