#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(int);
int /*<<< orphan*/ fputs(char *, int /*<<< orphan*/);
int /*<<< orphan*/ stderr;
int /*<<< orphan*/ stdout;
void usage(int status) {
  if (status != 0)
    (void)fputs("Try dfc -h for more information\n", stderr);
  else {
    (void)fputs("Usage:  dfc [OPTION(S)] [-c WHEN] [-e FORMAT] "
                "[-p FSNAME] [-q SORTBY] [-t FSTYPE] "
                "[-u UNIT]\n"
                "Available options:\n"
                "\t-a\tprint all mounted filesystem\n"
                "\t-b\tdo not show the graph bar\n"
                "\t-c\tchoose color mode. Read the manpage for "
                "details\n"
                "\t-d\tshow used size\n"
                "\t-e\texport to specified format. Read the manpage "
                "for details\n"
                "\t-f\tdisable auto-adjust mode (force display)\n"
                "\t-h\tprint this message\n"
                "\t-i\tinfo about inodes\n"
                "\t-l\tonly show information about locally mounted "
                "file systems\n",
                stdout);
    (void)fputs("\t-m\tuse metric (SI unit)\n"
                "\t-M\tdo not print \"mounted on\"\n"
                "\t-n\tdo not print header\n"
                "\t-o\tshow mount flags\n"
                "\t-p\tfilter by file system name. Read the manpage "
                "for details\n"
                "\t-q\tsort the output. Read the manpage for "
                "details\n"
                "\t-s\tsum the total usage\n"
                "\t-t\tfilter by file system type. Read the manpage "
                "for details\n"
                "\t-T\tshow filesystem type\n"
                "\t-u\tchoose the unit in which to show the values. "
                "Read the manpage for details\n"
                "\t-v\tprint program version\n"
                "\t-w\tuse a wider bar\n"
                "\t-W\twide filename (un truncate)\n",
                stdout);
  }
  exit(status);
}


x86 assembly (clang, -O0):
<usage>:
push   %rbp
mov    %rsp,%rbp
sub    $0x10,%rsp
mov    %edi,-0x4(%rbp)
cmpl   $0x0,-0x4(%rbp)
je     114f <usage+0x2f>
mov    0x2ea4(%rip),%rax
mov    (%rax),%esi
lea    0xebb(%rip),%rdi
call   1030 <fputs@plt>
jmp    1179 <usage+0x59>
mov    0x2e82(%rip),%rax
mov    (%rax),%esi
lea    0xec2(%rip),%rdi
call   1030 <fputs@plt>
mov    0x2e6d(%rip),%rax
mov    (%rax),%esi
lea    0x1077(%rip),%rdi
call   1030 <fputs@plt>
mov    -0x4(%rbp),%edi
call   1040 <exit@plt>

x86 assembly (clang, -O2):
<usage>:
push   %rbp
push   %rbx
push   %rax
mov    %edi,%ebp
test   %edi,%edi
jne    1147 <usage+0x27>
mov    0x2ea8(%rip),%rbx
mov    (%rbx),%esi
lea    0xee8(%rip),%rdi
call   1030 <fputs@plt>
lea    0x10a6(%rip),%rdi
jmp    1155 <usage+0x35>
lea    0xeb2(%rip),%rdi
mov    0x2e8b(%rip),%rbx
mov    (%rbx),%esi
call   1030 <fputs@plt>
mov    %ebp,%edi
call   1040 <exit@plt>

LLVM IR (-O0):
@.str = [33 x i8] c"Try dfc -h for more information\0A\00"
@stderr = global i32 0
@.str.1 = [458 x i8] c"Usage: dfc [OPTION(S)] [-c WHEN] [-e FORMAT] [-p FSNAME] [-q SORTBY] [-t FSTYPE] [-u UNIT]\0AAvailable options:\0A\09-a\09print all mounted filesystem\0A\09-b\09do not show the graph bar\0A\09-c\09choose color mode. Read the manpage for details\0A\09-d\09show used size\0A\09-e\09export to specified format. Read the manpage for details\0A\09-f\09disable auto-adjust mode (force display)\0A\09-h\09print this message\0A\09-i\09info about inodes\0A\09-l\09only show information about locally mounted file systems\0A\00"
@stdout = global i32 0
@.str.2 = [478 x i8] c"\09-m\09use metric (SI unit)\0A\09-M\09do not print \22mounted on\22\0A\09-n\09do not print header\0A\09-o\09show mount flags\0A\09-p\09filter by file system name. Read the manpage for details\0A\09-q\09sort the output. Read the manpage for details\0A\09-s\09sum the total usage\0A\09-t\09filter by file system type. Read the manpage for details\0A\09-T\09show filesystem type\0A\09-u\09choose the unit in which to show the values. Read the manpage for details\0A\09-v\09print program version\0A\09-w\09use a wider bar\0A\09-W\09wide filename (un truncate)\0A\00"
define void @usage(i32 %0) {
%2 = alloca i32
store i32 %0, i32* %2
%3 = load i32, i32* %2
%4 = icmp ne i32 %3, 0
br i1 %4, label %5, label %8
5: ; preds = %1
%6 = load i32, i32* @stderr
%7 = call i32 @fputs(i8* getelementptr inbounds ([33 x i8], [33 x i8]* @.str, i64 0, i64 0), i32 %6)
br label %13
8: ; preds = %1
%9 = load i32, i32* @stdout
%10 = call i32 @fputs(i8* getelementptr inbounds ([458 x i8], [458 x i8]* @.str.1, i64 0, i64 0), i32 %9)
%11 = load i32, i32* @stdout
%12 = call i32 @fputs(i8* getelementptr inbounds ([478 x i8], [478 x i8]* @.str.2, i64 0, i64 0), i32 %11)
br label %13
13: ; preds = %8, %5
%14 = load i32, i32* %2
%15 = call i32 @exit(i32 %14)
unreachable
}

LLVM IR (-O2):
@.str = [33 x i8] c"Try dfc -h for more information\0A\00"
@stderr = global i32 0
@.str.1 = [458 x i8] c"Usage: dfc [OPTION(S)] [-c WHEN] [-e FORMAT] [-p FSNAME] [-q SORTBY] [-t FSTYPE] [-u UNIT]\0AAvailable options:\0A\09-a\09print all mounted filesystem\0A\09-b\09do not show the graph bar\0A\09-c\09choose color mode. Read the manpage for details\0A\09-d\09show used size\0A\09-e\09export to specified format. Read the manpage for details\0A\09-f\09disable auto-adjust mode (force display)\0A\09-h\09print this message\0A\09-i\09info about inodes\0A\09-l\09only show information about locally mounted file systems\0A\00"
@stdout = global i32 0
@.str.2 = [478 x i8] c"\09-m\09use metric (SI unit)\0A\09-M\09do not print \22mounted on\22\0A\09-n\09do not print header\0A\09-o\09show mount flags\0A\09-p\09filter by file system name. Read the manpage for details\0A\09-q\09sort the output. Read the manpage for details\0A\09-s\09sum the total usage\0A\09-t\09filter by file system type. Read the manpage for details\0A\09-T\09show filesystem type\0A\09-u\09choose the unit in which to show the values. Read the manpage for details\0A\09-v\09print program version\0A\09-w\09use a wider bar\0A\09-W\09wide filename (un truncate)\0A\00"
define void @usage(i32 %0) {
%2 = icmp eq i32 %0, 0
br i1 %2, label %3, label %6
3: ; preds = %1
%4 = load i32, i32* @stdout
%5 = tail call i32 @fputs(i8* getelementptr inbounds ([458 x i8], [458 x i8]* @.str.1, i64 0, i64 0), i32 %4)
br label %6
6: ; preds = %1, %3
%7 = phi i32* [ @stdout, %3 ], [ @stderr, %1 ]
%8 = phi i8* [ getelementptr inbounds ([478 x i8], [478 x i8]* @.str.2, i64 0, i64 0), %3 ], [ getelementptr inbounds ([33 x i8], [33 x i8]* @.str, i64 0, i64 0), %1 ]
%9 = load i32, i32* %7
%10 = tail call i32 @fputs(i8* %8, i32 %9)
%11 = tail call i32 @exit(i32 %0)
unreachable
}