#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*/ fprintf(int /*<<< orphan*/, char *, char *);
int /*<<< orphan*/ stdout;
void usage(void) {
  fprintf(
      stdout, "usage: %s",
      "fsx [-dnqLOW] [-b opnum] [-c Prob] [-l flen] [-m start:end] [-o oplen] "
      "[-p progressinterval] [-r readbdy] [-s style] [-t truncbdy] [-w "
      "writebdy] [-D startingop] [-N numops] [-P dirpath] [-S seed] "
      "fname\n	-b opnum: beginning operation number (default 1)\n	-c P: "
      "1 in P chance of file close+open at each op (default infinity)\n	-d: "
      "debug output for all operations\n	-l flen: the upper bound on "
      "file size (default 262144)\n	-m startop:endop: monitor (print debug "
      "output) specified byte range (default 0:infinity)\n	-n: no "
      "verifications of file size\n	-o oplen: the upper bound on operation "
      "size (default 65536)\n	-p progressinterval: debug output at specified "
      "operation interval\n	-q: quieter operation\n	-r readbdy: 4096 would "
      "make reads page aligned (default 1)\n	-s style: 1 gives smaller "
      "truncates (default 0)\n	-t truncbdy: 4096 would make truncates page "
      "aligned (default 1)\n	-w writebdy: 4096 would make writes page "
      "aligned (default 1)\n	-D startingop: debug output starting at "
      "specified operation\n	-L: fsxLite - no file creations & no file size "
      "changes\n	-N numops: total # operations to do (default "
      "infinity)\n	-O: use oplen (see -o flag) for every op (default "
      "random)\n	-P: save .fsxlog and .fsxgood files in dirpath "
      "(default ./)\n	-S seed: for random # generator (default 1) 0 gets "
      "timestamp\n	-W: mapped write operations DISabled\n        -R: "
      "read() system calls only (mapped reads disabled)\n	fname: this "
      "filename is REQUIRED (no default)\n");
  exit(90);
}


x86 assembly (clang, -O0):
<usage>:
push   %rbp
mov    %rsp,%rbp
mov    0x2eb5(%rip),%rax
mov    (%rax),%edi
lea    0xecc(%rip),%rsi
lea    0xecf(%rip),%rdx
call   1030 <fprintf@plt>
mov    $0x5a,%edi
call   1040 <exit@plt>

x86 assembly (clang, -O2):
<usage>:
push   %rax
mov    0x2eb8(%rip),%rax
mov    (%rax),%edi
lea    0xecf(%rip),%rsi
lea    0xed2(%rip),%rdx
call   1030 <fprintf@plt>
mov    $0x5a,%edi
call   1040 <exit@plt>

LLVM IR (-O0):
@stdout = global i32 0
@.str = [10 x i8] c"usage: %s\00"
@.str.1 = [1429 x i8] c"fsx [-dnqLOW] [-b opnum] [-c Prob] [-l flen] [-m start:end] [-o oplen] [-p progressinterval] [-r readbdy] [-s style] [-t truncbdy] [-w writebdy] [-D startingop] [-N numops] [-P dirpath] [-S seed] fname\0A\09-b opnum: beginning operation number (default 1)\0A\09-c P: 1 in P chance of file close+open at each op (default infinity)\0A\09-d: debug output for all operations\0A\09-l flen: the upper bound on file size (default 262144)\0A\09-m startop:endop: monitor (print debug output) specified byte range (default 0:infinity)\0A\09-n: no verifications of file size\0A\09-o oplen: the upper bound on operation size (default 65536)\0A\09-p progressinterval: debug output at specified operation interval\0A\09-q: quieter operation\0A\09-r readbdy: 4096 would make reads page aligned (default 1)\0A\09-s style: 1 gives smaller truncates (default 0)\0A\09-t truncbdy: 4096 would make truncates page aligned (default 1)\0A\09-w writebdy: 4096 would make writes page aligned (default 1)\0A\09-D startingop: debug output starting at specified operation\0A\09-L: fsxLite - no file creations & no file size changes\0A\09-N numops: total # operations to do (default infinity)\0A\09-O: use oplen (see -o flag) for every op (default random)\0A\09-P: save .fsxlog and .fsxgood files in dirpath (default ./)\0A\09-S seed: for random # generator (default 1) 0 gets timestamp\0A\09-W: mapped write operations DISabled\0A -R: read() system calls only (mapped reads disabled)\0A\09fname: this filename is REQUIRED (no default)\0A\00"
define void @usage() {
%1 = load i32, i32* @stdout
%2 = call i32 @fprintf(i32 %1, i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([1429 x i8], [1429 x i8]* @.str.1, i64 0, i64 0))
%3 = call i32 @exit(i32 90)
unreachable
}

LLVM IR (-O2):
@stdout = global i32 0
@.str = [10 x i8] c"usage: %s\00"
@.str.1 = [1429 x i8] c"fsx [-dnqLOW] [-b opnum] [-c Prob] [-l flen] [-m start:end] [-o oplen] [-p progressinterval] [-r readbdy] [-s style] [-t truncbdy] [-w writebdy] [-D startingop] [-N numops] [-P dirpath] [-S seed] fname\0A\09-b opnum: beginning operation number (default 1)\0A\09-c P: 1 in P chance of file close+open at each op (default infinity)\0A\09-d: debug output for all operations\0A\09-l flen: the upper bound on file size (default 262144)\0A\09-m startop:endop: monitor (print debug output) specified byte range (default 0:infinity)\0A\09-n: no verifications of file size\0A\09-o oplen: the upper bound on operation size (default 65536)\0A\09-p progressinterval: debug output at specified operation interval\0A\09-q: quieter operation\0A\09-r readbdy: 4096 would make reads page aligned (default 1)\0A\09-s style: 1 gives smaller truncates (default 0)\0A\09-t truncbdy: 4096 would make truncates page aligned (default 1)\0A\09-w writebdy: 4096 would make writes page aligned (default 1)\0A\09-D startingop: debug output starting at specified operation\0A\09-L: fsxLite - no file creations & no file size changes\0A\09-N numops: total # operations to do (default infinity)\0A\09-O: use oplen (see -o flag) for every op (default random)\0A\09-P: save .fsxlog and .fsxgood files in dirpath (default ./)\0A\09-S seed: for random # generator (default 1) 0 gets timestamp\0A\09-W: mapped write operations DISabled\0A -R: read() system calls only (mapped reads disabled)\0A\09fname: this filename is REQUIRED (no default)\0A\00"
define void @usage() {
%1 = load i32, i32* @stdout
%2 = tail call i32 @fprintf(i32 %1, i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([1429 x i8], [1429 x i8]* @.str.1, i64 0, i64 0))
%3 = tail call i32 @exit(i32 90)
unreachable
}