#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_SUCCESS;
int /*<<< orphan*/ exit(int /*<<< orphan*/);
int /*<<< orphan*/ printf(char *);
void print_help(void) {
  printf("Usage: fspy [options] [file/dir]\n"
         "\n"
         "Options:\n"
         "  -F, --filter STRING/REGEX\ta string or regular expression which "
         "will be used to filter the output.\n"
         "                           \t(the regex will be matched against the "
         "whole path e.g. [/etc/passwd])\n"
         "  -I, --inverted STRING/REGEX\tits the same like -F/--filter but "
         "inverted. you can combine both.\n"
         "                           \te.g. -F '.conf' -I 'wvdial.conf' will "
         "filter for files with \".conf\"\n"
         "                           \tin its name but without \"wvdial.conf\" "
         "in it.\n"
         "  -R, --recursive NUMBER\tenables the recursive engine to look at a "
         "depth of NUMBER.\n"
         "  -A, --adaptive  \t\t(HIGHLY-EXPERIMENTAL) enables the adaptive "
         "mode. e.g. if new items will be added\n"
         "                  \t\twithin the path fspy will automatically add "
         "those items to the watch list.\n"
         "  -D, --diff VALUE\t\t(EXPERIMENTAL) enables the diffing feature.\n"
         "                  \t\tVALUE may be a comma separated list of:\n"
         "                  \t\ts - element size (byte)\n"
         "                  \t\tA - last access time (e.g. Mon Jul 21 21:32:31 "
         "2008)\n"
         "                  \t\tM - last modification time (e.g. Mon Jul 21 "
         "21:32:31 2008)\n"
         "                  \t\tS - last status change time (e.g. Mon Jul 21 "
         "21:32:31 2008)\n"
         "                  \t\tO - permissions (octal)\n"
         "                  \t\tU - owner (uid)\n"
         "                  \t\tG - group (gid)\n"
         "                  \t\tI - inode number\n"
         "                  \t\tD - device id\n"
         "  -T, --type VALUE\t\tspecifies the type of objects to look for.\n"
         "                  \t\tVALUE may be a comma separated list of:\n"
         "                  \t\tf - regular file\n"
         "                  \t\td - directory\n"
         "                  \t\ts - symlink\n"
         "                  \t\tp - FIFO/pipe\n"
         "                  \t\tc - character device\n"
         "                  \t\tb - block device\n"
         "                  \t\to - socket\n"
         "                  \t\tdefault is any.\n"
         "  -O, --output VALUE\t\tspecifies output format.\n"
         "                  \t\tVALUE may be a comma separated list of:\n"
         "                  \t\tf - filename\n"
         "                  \t\tp - path\n"
         "                  \t\td - access description\n"
         "                  \t\tt - element type\n"
         "                  \t\ts - element size (byte)\n"
         "                  \t\tw - watch descriptor (inotify manpage)\n"
         "                  \t\tc - cookie (inotify manpage)\n"
         "                  \t\tm - access mask (inotify manpage | "
         "src/fsevents.h)\n"
         "                  \t\tl - len (inotify manpage)\n"
         "                  \t\tA - last access time (e.g. Mon Jul 21 21:32:31 "
         "2008)\n"
         "                  \t\tM - last modification time (e.g. Mon Jul 21 "
         "21:32:31 2008)\n"
         "                  \t\tS - last status change time (e.g. Mon Jul 21 "
         "21:32:31 2008)\n"
         "                  \t\tO - permissions (octal)\n"
         "                  \t\tU - owner (uid)\n"
         "                  \t\tG - group (gid)\n"
         "                  \t\tI - inode number\n"
         "                  \t\tD - device id\n"
         "                  \t\tT - date and time (for this event) (e.g. Tue "
         "Mar 25 09:23:16 CET 2008)\n"
         "                  \t\te.g.: '[,T,], ,d,:,p,f' would result in:\n"
         "                  \t\t'[Mon Sep  1 12:31:25 2008] file was "
         "opened:/etc/passwd'\n"
         "                  \t\t(take a look at the README).\n"
         "  -h, --help\t\t\tthis short help.\n"
         "      --version\t\t\tversion information.\n"
         "\n");
  exit(EXIT_SUCCESS);
}


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

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

LLVM IR (-O0):
@.str = [3066 x i8] c"Usage: fspy [options] [file/dir]\0A\0AOptions:\0A -F, --filter STRING/REGEX\09a string or regular expression which will be used to filter the output.\0A \09(the regex will be matched against the whole path e.g. [/etc/passwd])\0A -I, --inverted STRING/REGEX\09its the same like -F/--filter but inverted. you can combine both.\0A \09e.g. -F '.conf' -I 'wvdial.conf' will filter for files with \22.conf\22\0A \09in its name but without \22wvdial.conf\22 in it.\0A -R, --recursive NUMBER\09enables the recursive engine to look at a depth of NUMBER.\0A -A, --adaptive \09\09(HIGHLY-EXPERIMENTAL) enables the adaptive mode. e.g. if new items will be added\0A \09\09within the path fspy will automatically add those items to the watch list.\0A -D, --diff VALUE\09\09(EXPERIMENTAL) enables the diffing feature.\0A \09\09VALUE may be a comma separated list of:\0A \09\09s - element size (byte)\0A \09\09A - last access time (e.g. Mon Jul 21 21:32:31 2008)\0A \09\09M - last modification time (e.g. Mon Jul 21 21:32:31 2008)\0A \09\09S - last status change time (e.g. Mon Jul 21 21:32:31 2008)\0A \09\09O - permissions (octal)\0A \09\09U - owner (uid)\0A \09\09G - group (gid)\0A \09\09I - inode number\0A \09\09D - device id\0A -T, --type VALUE\09\09specifies the type of objects to look for.\0A \09\09VALUE may be a comma separated list of:\0A \09\09f - regular file\0A \09\09d - directory\0A \09\09s - symlink\0A \09\09p - FIFO/pipe\0A \09\09c - character device\0A \09\09b - block device\0A \09\09o - socket\0A \09\09default is any.\0A -O, --output VALUE\09\09specifies output format.\0A \09\09VALUE may be a comma separated list of:\0A \09\09f - filename\0A \09\09p - path\0A \09\09d - access description\0A \09\09t - element type\0A \09\09s - element size (byte)\0A \09\09w - watch descriptor (inotify manpage)\0A \09\09c - cookie (inotify manpage)\0A \09\09m - access mask (inotify manpage | src/fsevents.h)\0A \09\09l - len (inotify manpage)\0A \09\09A - last access time (e.g. Mon Jul 21 21:32:31 2008)\0A \09\09M - last modification time (e.g. Mon Jul 21 21:32:31 2008)\0A \09\09S - last status change time (e.g. Mon Jul 21 21:32:31 2008)\0A \09\09O - permissions (octal)\0A \09\09U - owner (uid)\0A \09\09G - group (gid)\0A \09\09I - inode number\0A \09\09D - device id\0A \09\09T - date and time (for this event) (e.g. Tue Mar 25 09:23:16 CET 2008)\0A \09\09e.g.: '[,T,], ,d,:,p,f' would result in:\0A \09\09'[Mon Sep 1 12:31:25 2008] file was opened:/etc/passwd'\0A \09\09(take a look at the README).\0A -h, --help\09\09\09this short help.\0A --version\09\09\09version information.\0A\0A\00"
@EXIT_SUCCESS = global i32 0
define void @print_help() {
%1 = call i32 @printf(i8* getelementptr inbounds ([3066 x i8], [3066 x i8]* @.str, i64 0, i64 0))
%2 = load i32, i32* @EXIT_SUCCESS
%3 = call i32 @exit(i32 %2)
unreachable
}

LLVM IR (-O2):
@EXIT_SUCCESS = global i32 0
@str = [3065 x i8] c"Usage: fspy [options] [file/dir]\0A\0AOptions:\0A -F, --filter STRING/REGEX\09a string or regular expression which will be used to filter the output.\0A \09(the regex will be matched against the whole path e.g. [/etc/passwd])\0A -I, --inverted STRING/REGEX\09its the same like -F/--filter but inverted. you can combine both.\0A \09e.g. -F '.conf' -I 'wvdial.conf' will filter for files with \22.conf\22\0A \09in its name but without \22wvdial.conf\22 in it.\0A -R, --recursive NUMBER\09enables the recursive engine to look at a depth of NUMBER.\0A -A, --adaptive \09\09(HIGHLY-EXPERIMENTAL) enables the adaptive mode. e.g. if new items will be added\0A \09\09within the path fspy will automatically add those items to the watch list.\0A -D, --diff VALUE\09\09(EXPERIMENTAL) enables the diffing feature.\0A \09\09VALUE may be a comma separated list of:\0A \09\09s - element size (byte)\0A \09\09A - last access time (e.g. Mon Jul 21 21:32:31 2008)\0A \09\09M - last modification time (e.g. Mon Jul 21 21:32:31 2008)\0A \09\09S - last status change time (e.g. Mon Jul 21 21:32:31 2008)\0A \09\09O - permissions (octal)\0A \09\09U - owner (uid)\0A \09\09G - group (gid)\0A \09\09I - inode number\0A \09\09D - device id\0A -T, --type VALUE\09\09specifies the type of objects to look for.\0A \09\09VALUE may be a comma separated list of:\0A \09\09f - regular file\0A \09\09d - directory\0A \09\09s - symlink\0A \09\09p - FIFO/pipe\0A \09\09c - character device\0A \09\09b - block device\0A \09\09o - socket\0A \09\09default is any.\0A -O, --output VALUE\09\09specifies output format.\0A \09\09VALUE may be a comma separated list of:\0A \09\09f - filename\0A \09\09p - path\0A \09\09d - access description\0A \09\09t - element type\0A \09\09s - element size (byte)\0A \09\09w - watch descriptor (inotify manpage)\0A \09\09c - cookie (inotify manpage)\0A \09\09m - access mask (inotify manpage | src/fsevents.h)\0A \09\09l - len (inotify manpage)\0A \09\09A - last access time (e.g. Mon Jul 21 21:32:31 2008)\0A \09\09M - last modification time (e.g. Mon Jul 21 21:32:31 2008)\0A \09\09S - last status change time (e.g. Mon Jul 21 21:32:31 2008)\0A \09\09O - permissions (octal)\0A \09\09U - owner (uid)\0A \09\09G - group (gid)\0A \09\09I - inode number\0A \09\09D - device id\0A \09\09T - date and time (for this event) (e.g. Tue Mar 25 09:23:16 CET 2008)\0A \09\09e.g.: '[,T,], ,d,:,p,f' would result in:\0A \09\09'[Mon Sep 1 12:31:25 2008] file was opened:/etc/passwd'\0A \09\09(take a look at the README).\0A -h, --help\09\09\09this short help.\0A --version\09\09\09version information.\0A\00"
define void @print_help() {
%1 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([3065 x i8], [3065 x i8]* @str, i64 0, i64 0))
%2 = load i32, i32* @EXIT_SUCCESS
%3 = tail call i32 @exit(i32 %2)
unreachable
}