#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() {
  fprintf(
      stderr,
      "Usage: "
      "seeker [--count=COUNT] [--help] [--workload=WKLD] [--verbose] "
      "[--direct]\n"
      "       [--output=OUT] [--priority=PRIO] [--seed=SEED] DEVICE\n"
      "  where:\n"
      "  -c  --count COUNT     Count of requests to execute (def 0, infinite)\n"
      "  -t  --runtime TIME    Runtime of benchmarks in seconds (def 0, "
      "infinite)\n"
      "  -d  --direct          Enable O_DIRECT flag for each request\n"
      "  -h  --help            Display this usage information.\n"
      "  -w  --workload WKLD   Workload type used (def RAND):\n"
      "                        o RAND or 0: Random workload\n"
      "                        o SEQL or 1: Partially sequential random "
      "workload\n"
      "                        o SCRUB or 2: Beggining-to-end sequential "
      "workload\n"
      "                        o CACHE or 3: Cache-testing workload\n"
      "  -v  --verbose         Increase verbosity\n"
      "  -p  --priority        Set CFQ priority of seeker:\n"
      "                        o IDLE or 0: Idle priority\n"
      "                        o DEF or 1: Default priority\n"
      "                        o RT or 2: Realtime priority\n"
      "  -i  --input INP       Name a file where the exponential numbers will "
      "be\n"
      "                        fetched from\n"
      "  -o  --output OUT      Name a file where seeker's output will be "
      "dumped\n"
      "  -s  --seed SEED       Set seed for uniform random numbers\n"
      "  -S  --sectors SECTRS  Count of sectors to limit scanning to (def 0, "
      "infinite)\n"
      "  -P  --start START     Sector number where the scan should start from "
      "(def 0)\n"
      "  -T  --threads TNUM    Number of worker threads to be used (def 1)\n"
      "  -Z  --thinktime PROB  Thinking probability (def. 0)\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 = [1510 x i8] c"Usage: seeker [--count=COUNT] [--help] [--workload=WKLD] [--verbose] [--direct]\0A [--output=OUT] [--priority=PRIO] [--seed=SEED] DEVICE\0A where:\0A -c --count COUNT Count of requests to execute (def 0, infinite)\0A -t --runtime TIME Runtime of benchmarks in seconds (def 0, infinite)\0A -d --direct Enable O_DIRECT flag for each request\0A -h --help Display this usage information.\0A -w --workload WKLD Workload type used (def RAND):\0A o RAND or 0: Random workload\0A o SEQL or 1: Partially sequential random workload\0A o SCRUB or 2: Beggining-to-end sequential workload\0A o CACHE or 3: Cache-testing workload\0A -v --verbose Increase verbosity\0A -p --priority Set CFQ priority of seeker:\0A o IDLE or 0: Idle priority\0A o DEF or 1: Default priority\0A o RT or 2: Realtime priority\0A -i --input INP Name a file where the exponential numbers will be\0A fetched from\0A -o --output OUT Name a file where seeker's output will be dumped\0A -s --seed SEED Set seed for uniform random numbers\0A -S --sectors SECTRS Count of sectors to limit scanning to (def 0, infinite)\0A -P --start START Sector number where the scan should start from (def 0)\0A -T --threads TNUM Number of worker threads to be used (def 1)\0A -Z --thinktime PROB Thinking probability (def. 0)\0A\00"
define void @usage() {
%1 = load i32, i32* @stderr
%2 = call i32 @fprintf(i32 %1, i8* getelementptr inbounds ([1510 x i8], [1510 x i8]* @.str, i64 0, i64 0))
ret void
}

LLVM IR (-O2):
@stderr = global i32 0
@.str = [1510 x i8] c"Usage: seeker [--count=COUNT] [--help] [--workload=WKLD] [--verbose] [--direct]\0A [--output=OUT] [--priority=PRIO] [--seed=SEED] DEVICE\0A where:\0A -c --count COUNT Count of requests to execute (def 0, infinite)\0A -t --runtime TIME Runtime of benchmarks in seconds (def 0, infinite)\0A -d --direct Enable O_DIRECT flag for each request\0A -h --help Display this usage information.\0A -w --workload WKLD Workload type used (def RAND):\0A o RAND or 0: Random workload\0A o SEQL or 1: Partially sequential random workload\0A o SCRUB or 2: Beggining-to-end sequential workload\0A o CACHE or 3: Cache-testing workload\0A -v --verbose Increase verbosity\0A -p --priority Set CFQ priority of seeker:\0A o IDLE or 0: Idle priority\0A o DEF or 1: Default priority\0A o RT or 2: Realtime priority\0A -i --input INP Name a file where the exponential numbers will be\0A fetched from\0A -o --output OUT Name a file where seeker's output will be dumped\0A -s --seed SEED Set seed for uniform random numbers\0A -S --sectors SECTRS Count of sectors to limit scanning to (def 0, infinite)\0A -P --start START Sector number where the scan should start from (def 0)\0A -T --threads TNUM Number of worker threads to be used (def 1)\0A -Z --thinktime PROB Thinking probability (def. 0)\0A\00"
define void @usage() {
%1 = load i32, i32* @stderr
%2 = tail call i32 @fprintf(i32 %1, i8* getelementptr inbounds ([1510 x i8], [1510 x i8]* @.str, i64 0, i64 0))
ret void
}