#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 help(const char *prog) {
  printf("Call: %s (OPTION)* PROGRAM (PROGRAM_OPTION)*\n"
         "\n"
         "Prints the high-water mark of resident set size (RSS)\n"
         "and CACHE memory usage of PROGRAM and all its descendants.\n"
         "\n"
         "That means that memory usage is measured recursively and "
         "accumulatively.\n"
         "\n"
         "Options:\n"
         "\t-h, --help\tthis screen\n"
         "\t-o, STR   \twrite output to a file\n"
         "\t-t, --tabular\tmachine readable output\n"
         "\t--base STR\tbase of cgroup fs (default: /sys/fs/cgroup)\n"
         "\t--root STR\troot of the configured hierachy (default: "
         "memory/cgmemtime)\n"
         "\t\ti.e. BASE/ROOT has to be writable\n"
         "\t\te.g. /sys/fs/cgroup/memory/cgmemtime has to be writable\n"
         "\t--force-empty\t'call' force-empty before rmdir\n"
         "\t\t (e.g. forces cleanup of cached pages)\n"
         "\n"
         "\t--setup\tsetup mode (create sysfs hierachy under BASE)\n"
         "\t-u, --user STR\tuser name (default: root)\n"
         "\t-g, --group  STR\tgroup name (default: root)\n"
         "\t--perm OCTAL\tpermissions of the cgroup directory (default: 755)\n"
         "\n",
         prog);
}


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

x86 assembly (clang, -O2):
<help>:
mov    %rdi,%rsi
lea    0xee6(%rip),%rdi
jmp    1030 <printf@plt>

LLVM IR (-O0):
@.str = [861 x i8] c"Call: %s (OPTION)* PROGRAM (PROGRAM_OPTION)*\0A\0APrints the high-water mark of resident set size (RSS)\0Aand CACHE memory usage of PROGRAM and all its descendants.\0A\0AThat means that memory usage is measured recursively and accumulatively.\0A\0AOptions:\0A\09-h, --help\09this screen\0A\09-o, STR \09write output to a file\0A\09-t, --tabular\09machine readable output\0A\09--base STR\09base of cgroup fs (default: /sys/fs/cgroup)\0A\09--root STR\09root of the configured hierachy (default: memory/cgmemtime)\0A\09\09i.e. BASE/ROOT has to be writable\0A\09\09e.g. /sys/fs/cgroup/memory/cgmemtime has to be writable\0A\09--force-empty\09'call' force-empty before rmdir\0A\09\09 (e.g. forces cleanup of cached pages)\0A\0A\09--setup\09setup mode (create sysfs hierachy under BASE)\0A\09-u, --user STR\09user name (default: root)\0A\09-g, --group STR\09group name (default: root)\0A\09--perm OCTAL\09permissions of the cgroup directory (default: 755)\0A\0A\00"
define void @help(i8* %0) {
%2 = alloca i8*
store i8* %0, i8** %2
%3 = load i8*, i8** %2
%4 = call i32 @printf(i8* getelementptr inbounds ([861 x i8], [861 x i8]* @.str, i64 0, i64 0), i8* %3)
ret void
}

LLVM IR (-O2):
@.str = [861 x i8] c"Call: %s (OPTION)* PROGRAM (PROGRAM_OPTION)*\0A\0APrints the high-water mark of resident set size (RSS)\0Aand CACHE memory usage of PROGRAM and all its descendants.\0A\0AThat means that memory usage is measured recursively and accumulatively.\0A\0AOptions:\0A\09-h, --help\09this screen\0A\09-o, STR \09write output to a file\0A\09-t, --tabular\09machine readable output\0A\09--base STR\09base of cgroup fs (default: /sys/fs/cgroup)\0A\09--root STR\09root of the configured hierachy (default: memory/cgmemtime)\0A\09\09i.e. BASE/ROOT has to be writable\0A\09\09e.g. /sys/fs/cgroup/memory/cgmemtime has to be writable\0A\09--force-empty\09'call' force-empty before rmdir\0A\09\09 (e.g. forces cleanup of cached pages)\0A\0A\09--setup\09setup mode (create sysfs hierachy under BASE)\0A\09-u, --user STR\09user name (default: root)\0A\09-g, --group STR\09group name (default: root)\0A\09--perm OCTAL\09permissions of the cgroup directory (default: 755)\0A\0A\00"
define void @help(i8* %0) {
%2 = tail call i32 @printf(i8* getelementptr inbounds ([861 x i8], [861 x i8]* @.str, i64 0, i64 0), i8* %0)
ret void
}