#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*/ fprintf(int /*<<< orphan*/, char *);
int /*<<< orphan*/ stderr;
void usage(void) {
  fprintf(
      stderr,
      " Usage: ioping [-ABCDRLWkq] [-c count] [-i interval] [-s size] [-S "
      "wsize]\n"
      "               [-o offset] [-w deadline] [-pP period] "
      "directory|file|device\n"
      "        ioping -h | -v\n"
      "\n"
      "      -c <count>      stop after <count> requests\n"
      "      -i <interval>   interval between requests (1s)\n"
      "      -t <time>       minimal valid request time (0us)\n"
      "      -s <size>       request size (4k)\n"
      "      -S <wsize>      working set size (1m)\n"
      "      -o <offset>     working set offset (0)\n"
      "      -w <deadline>   stop after <deadline> time passed\n"
      "      -p <period>     print raw statistics for every <period> requests\n"
      "      -P <period>     print raw statistics for every <period> in time\n"
      "      -A              use asynchronous I/O\n"
      "      -C              use cached I/O\n"
      "      -B              print final statistics in raw format\n"
      "      -D              use direct I/O\n"
      "      -R              seek rate test\n"
      "      -L              use sequential operations\n"
      "      -W              use write I/O (please read manpage)\n"
      "      -k              keep and reuse temporary file (ioping.tmp)\n"
      "      -q              suppress human-readable output\n"
      "      -h              display this message and exit\n"
      "      -v              display version and exit\n"
      "\n");
}


x86 assembly (clang, -O0):
<usage>:
push   %rbp
mov    %rsp,%rbp
mov    0x2ec5(%rip),%rax
mov    (%rax),%edi
lea    0xedc(%rip),%rsi
call   1030 <fprintf@plt>
pop    %rbp
ret

x86 assembly (clang, -O2):
<usage>:
mov    0x2ec9(%rip),%rax
mov    (%rax),%edi
lea    0xee0(%rip),%rsi
jmp    1030 <fprintf@plt>

LLVM IR (-O0):
@stderr = global i32 0
@.str = [1196 x i8] c" Usage: ioping [-ABCDRLWkq] [-c count] [-i interval] [-s size] [-S wsize]\0A [-o offset] [-w deadline] [-pP period] directory|file|device\0A ioping -h | -v\0A\0A -c <count> stop after <count> requests\0A -i <interval> interval between requests (1s)\0A -t <time> minimal valid request time (0us)\0A -s <size> request size (4k)\0A -S <wsize> working set size (1m)\0A -o <offset> working set offset (0)\0A -w <deadline> stop after <deadline> time passed\0A -p <period> print raw statistics for every <period> requests\0A -P <period> print raw statistics for every <period> in time\0A -A use asynchronous I/O\0A -C use cached I/O\0A -B print final statistics in raw format\0A -D use direct I/O\0A -R seek rate test\0A -L use sequential operations\0A -W use write I/O (please read manpage)\0A -k keep and reuse temporary file (ioping.tmp)\0A -q suppress human-readable output\0A -h display this message and exit\0A -v display version and exit\0A\0A\00"
define void @usage() {
%1 = load i32, i32* @stderr
%2 = call i32 @fprintf(i32 %1, i8* getelementptr inbounds ([1196 x i8], [1196 x i8]* @.str, i64 0, i64 0))
ret void
}

LLVM IR (-O2):
@stderr = global i32 0
@.str = [1196 x i8] c" Usage: ioping [-ABCDRLWkq] [-c count] [-i interval] [-s size] [-S wsize]\0A [-o offset] [-w deadline] [-pP period] directory|file|device\0A ioping -h | -v\0A\0A -c <count> stop after <count> requests\0A -i <interval> interval between requests (1s)\0A -t <time> minimal valid request time (0us)\0A -s <size> request size (4k)\0A -S <wsize> working set size (1m)\0A -o <offset> working set offset (0)\0A -w <deadline> stop after <deadline> time passed\0A -p <period> print raw statistics for every <period> requests\0A -P <period> print raw statistics for every <period> in time\0A -A use asynchronous I/O\0A -C use cached I/O\0A -B print final statistics in raw format\0A -D use direct I/O\0A -R seek rate test\0A -L use sequential operations\0A -W use write I/O (please read manpage)\0A -k keep and reuse temporary file (ioping.tmp)\0A -q suppress human-readable output\0A -h display this message and exit\0A -v display version and exit\0A\0A\00"
define void @usage() {
%1 = load i32, i32* @stderr
%2 = tail call i32 @fprintf(i32 %1, i8* getelementptr inbounds ([1196 x i8], [1196 x i8]* @.str, i64 0, i64 0))
ret void
}