#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*/ fprintf(int /*<<< orphan*/, char *, char const *);
int /*<<< orphan*/ stderr;
void help(const char *progname) {
  fprintf(
      stderr,
      "Usage:\n"
      "\t%s -[aA] [options] [forced_version]\n"
      "\n"
      "If no arguments (except options) are given, \"depmod -a\" is assumed\n"
      "\n"
      "depmod will output a dependency list suitable for the modprobe "
      "utility.\n"
      "\n"
      "Options:\n"
      "\t-a, --all            Probe all modules\n"
      "\t-A, --quick          Only does the work if there's a new module\n"
      "\t-e, --errsyms        Report not supplied symbols\n"
      "\t-n, --show           Write the dependency file on stdout only\n"
      "\t-P, --symbol-prefix  Architecture symbol prefix\n"
      "\t-C, --config=PATH    Read configuration from PATH\n"
      "\t-v, --verbose        Enable verbose mode\n"
      "\t-w, --warn           Warn on duplicates\n"
      "\t-V, --version        show version\n"
      "\t-h, --help           show this help\n"
      "\n"
      "The following options are useful for people managing distributions:\n"
      "\t-b, --basedir=DIR    Use an image of a module tree.\n"
      "\t-F, --filesyms=FILE  Use the file instead of the\n"
      "\t                     current kernel symbols.\n"
      "\t-E, --symvers=FILE   Use Module.symvers file to check\n"
      "\t                     symbol versions.\n",
      progname);
}


x86 assembly (clang, -O0):
<help>:
push   %rbp
mov    %rsp,%rbp
sub    $0x10,%rsp
mov    %rdi,-0x8(%rbp)
mov    0x2ebd(%rip),%rax
mov    (%rax),%edi
mov    -0x8(%rbp),%rdx
lea    0xed0(%rip),%rsi
call   1030 <fprintf@plt>
add    $0x10,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<help>:
mov    %rdi,%rdx
mov    0x2ec6(%rip),%rax
mov    (%rax),%edi
lea    0xedd(%rip),%rsi
jmp    1030 <fprintf@plt>

LLVM IR (-O0):
@stderr = global i32 0
@.str = [981 x i8] c"Usage:\0A\09%s -[aA] [options] [forced_version]\0A\0AIf no arguments (except options) are given, \22depmod -a\22 is assumed\0A\0Adepmod will output a dependency list suitable for the modprobe utility.\0A\0AOptions:\0A\09-a, --all Probe all modules\0A\09-A, --quick Only does the work if there's a new module\0A\09-e, --errsyms Report not supplied symbols\0A\09-n, --show Write the dependency file on stdout only\0A\09-P, --symbol-prefix Architecture symbol prefix\0A\09-C, --config=PATH Read configuration from PATH\0A\09-v, --verbose Enable verbose mode\0A\09-w, --warn Warn on duplicates\0A\09-V, --version show version\0A\09-h, --help show this help\0A\0AThe following options are useful for people managing distributions:\0A\09-b, --basedir=DIR Use an image of a module tree.\0A\09-F, --filesyms=FILE Use the file instead of the\0A\09 current kernel symbols.\0A\09-E, --symvers=FILE Use Module.symvers file to check\0A\09 symbol versions.\0A\00"
define void @help(i8* %0) {
%2 = alloca i8*
store i8* %0, i8** %2
%3 = load i32, i32* @stderr
%4 = load i8*, i8** %2
%5 = call i32 @fprintf(i32 %3, i8* getelementptr inbounds ([981 x i8], [981 x i8]* @.str, i64 0, i64 0), i8* %4)
ret void
}

LLVM IR (-O2):
@stderr = global i32 0
@.str = [981 x i8] c"Usage:\0A\09%s -[aA] [options] [forced_version]\0A\0AIf no arguments (except options) are given, \22depmod -a\22 is assumed\0A\0Adepmod will output a dependency list suitable for the modprobe utility.\0A\0AOptions:\0A\09-a, --all Probe all modules\0A\09-A, --quick Only does the work if there's a new module\0A\09-e, --errsyms Report not supplied symbols\0A\09-n, --show Write the dependency file on stdout only\0A\09-P, --symbol-prefix Architecture symbol prefix\0A\09-C, --config=PATH Read configuration from PATH\0A\09-v, --verbose Enable verbose mode\0A\09-w, --warn Warn on duplicates\0A\09-V, --version show version\0A\09-h, --help show this help\0A\0AThe following options are useful for people managing distributions:\0A\09-b, --basedir=DIR Use an image of a module tree.\0A\09-F, --filesyms=FILE Use the file instead of the\0A\09 current kernel symbols.\0A\09-E, --symvers=FILE Use Module.symvers file to check\0A\09 symbol versions.\0A\00"
define void @help(i8* %0) {
%2 = load i32, i32* @stderr
%3 = tail call i32 @fprintf(i32 %2, i8* getelementptr inbounds ([981 x i8], [981 x i8]* @.str, i64 0, i64 0), i8* %0)
ret void
}