#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 *, char const *);
void print_help(void) {
  static const char *help =
      "Usage: dmidecode [OPTIONS]\n"
      "Options are:\n"
      " -d, --dev-mem FILE     Read memory from device FILE (default: "
      "/dev/mem"
      ")\n"
      " -h, --help             Display this help text and exit\n"
      " -q, --quiet            Less verbose output\n"
      " -s, --string KEYWORD   Only display the value of the given DMI string\n"
      " -t, --type TYPE        Only display the entries of given type\n"
      " -H, --handle HANDLE    Only display the entry of given handle\n"
      " -u, --dump             Do not decode the entries\n"
      "     --dump-bin FILE    Dump the DMI data to a binary file\n"
      "     --from-dump FILE   Read the DMI data from a binary file\n"
      "     --no-sysfs         Do not attempt to read DMI data from sysfs "
      "files\n"
      "     --oem-string N     Only display the value of the given OEM string\n"
      " -V, --version          Display the version and exit\n";
  printf("%s", help);
}


x86 assembly (clang, -O0):
<print_help>:
push   %rbp
mov    %rsp,%rbp
mov    0x2f0d(%rip),%rsi
lea    0x11e8(%rip),%rdi
call   1030 <printf@plt>
pop    %rbp
ret

x86 assembly (clang, -O2):
<print_help>:
lea    0x11f3(%rip),%rdi
lea    0xee2(%rip),%rsi
jmp    1030 <printf@plt>

LLVM IR (-O0):
@print_help.help = internal global i8* getelementptr inbounds ([778 x i8], [778 x i8]* @.str, i32 0, i32 0)
@.str = [778 x i8] c"Usage: dmidecode [OPTIONS]\0AOptions are:\0A -d, --dev-mem FILE Read memory from device FILE (default: /dev/mem)\0A -h, --help Display this help text and exit\0A -q, --quiet Less verbose output\0A -s, --string KEYWORD Only display the value of the given DMI string\0A -t, --type TYPE Only display the entries of given type\0A -H, --handle HANDLE Only display the entry of given handle\0A -u, --dump Do not decode the entries\0A --dump-bin FILE Dump the DMI data to a binary file\0A --from-dump FILE Read the DMI data from a binary file\0A --no-sysfs Do not attempt to read DMI data from sysfs files\0A --oem-string N Only display the value of the given OEM string\0A -V, --version Display the version and exit\0A\00"
@.str.1 = [3 x i8] c"%s\00"
define void @print_help() {
%1 = load i8*, i8** @print_help.help
%2 = call i32 @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.1, i64 0, i64 0), i8* %1)
ret void
}

LLVM IR (-O2):
@.str = [778 x i8] c"Usage: dmidecode [OPTIONS]\0AOptions are:\0A -d, --dev-mem FILE Read memory from device FILE (default: /dev/mem)\0A -h, --help Display this help text and exit\0A -q, --quiet Less verbose output\0A -s, --string KEYWORD Only display the value of the given DMI string\0A -t, --type TYPE Only display the entries of given type\0A -H, --handle HANDLE Only display the entry of given handle\0A -u, --dump Do not decode the entries\0A --dump-bin FILE Dump the DMI data to a binary file\0A --from-dump FILE Read the DMI data from a binary file\0A --no-sysfs Do not attempt to read DMI data from sysfs files\0A --oem-string N Only display the value of the given OEM string\0A -V, --version Display the version and exit\0A\00"
@.str.1 = [3 x i8] c"%s\00"
define void @print_help() {
%1 = tail call i32 @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.1, i64 0, i64 0), i8* getelementptr inbounds ([778 x i8], [778 x i8]* @.str, i64 0, i64 0))
ret void
}