#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*/ puts(char *);
void help(void) {
  puts(
      "Usage: fatrace [options...] \n"
      "\n"
      "Options:\n"
      "  -c, --current-mount\t\tOnly record events on partition/mount of "
      "current directory.\n"
      "  -o FILE, --output=FILE\tWrite events to a file instead of standard "
      "output.\n"
      "  -s SECONDS, --seconds=SECONDS\tStop after the given number of "
      "seconds.\n"
      "  -t, --timestamp\t\tAdd timestamp to events. Give twice for seconds "
      "since the epoch.\n"
      "  -p PID, --ignore-pid PID\tIgnore events for this process ID. Can be "
      "specified multiple times.\n"
      "  -f TYPES, --filter=TYPES\tShow only the given event types; choose "
      "from A, D, C, R, O, or W, e. g. --filter=OC.\n"
      "  -C COMM, --command=COMM\tShow only events for this command.\n"
      "  -0, --null-terminate\t\tTerminate lines with '\\0' instead of '\\n'.\n"
      "  -h, --help\t\t\tShow help.");
}


x86 assembly (clang, -O0):
<help>:
push   %rbp
mov    %rsp,%rbp
lea    0xee5(%rip),%rdi
call   1030 <puts@plt>
pop    %rbp
ret

x86 assembly (clang, -O2):
<help>:
lea    0xee9(%rip),%rdi
jmp    1030 <puts@plt>

LLVM IR (-O0):
@.str = [715 x i8] c"Usage: fatrace [options...] \0A\0AOptions:\0A -c, --current-mount\09\09Only record events on partition/mount of current directory.\0A -o FILE, --output=FILE\09Write events to a file instead of standard output.\0A -s SECONDS, --seconds=SECONDS\09Stop after the given number of seconds.\0A -t, --timestamp\09\09Add timestamp to events. Give twice for seconds since the epoch.\0A -p PID, --ignore-pid PID\09Ignore events for this process ID. Can be specified multiple times.\0A -f TYPES, --filter=TYPES\09Show only the given event types; choose from A, D, C, R, O, or W, e. g. --filter=OC.\0A -C COMM, --command=COMM\09Show only events for this command.\0A -0, --null-terminate\09\09Terminate lines with '\\0' instead of '\\n'.\0A -h, --help\09\09\09Show help.\00"
define void @help() {
%1 = call i32 @puts(i8* getelementptr inbounds ([715 x i8], [715 x i8]* @.str, i64 0, i64 0))
ret void
}

LLVM IR (-O2):
@.str = [715 x i8] c"Usage: fatrace [options...] \0A\0AOptions:\0A -c, --current-mount\09\09Only record events on partition/mount of current directory.\0A -o FILE, --output=FILE\09Write events to a file instead of standard output.\0A -s SECONDS, --seconds=SECONDS\09Stop after the given number of seconds.\0A -t, --timestamp\09\09Add timestamp to events. Give twice for seconds since the epoch.\0A -p PID, --ignore-pid PID\09Ignore events for this process ID. Can be specified multiple times.\0A -f TYPES, --filter=TYPES\09Show only the given event types; choose from A, D, C, R, O, or W, e. g. --filter=OC.\0A -C COMM, --command=COMM\09Show only events for this command.\0A -0, --null-terminate\09\09Terminate lines with '\\0' instead of '\\n'.\0A -h, --help\09\09\09Show help.\00"
define void @help() {
%1 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([715 x i8], [715 x i8]* @.str, i64 0, i64 0))
ret void
}