#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: "
      "sg_scrubber [--count=COUNT] [--dpo] [--help] [--lba=LBA] "
      "[--region=SIZE]\n"
      "            [--segment=SIZE] [--technique=TECH] [--debug] [--verbose]\n"
      "            [--version] [--vrprotect=VRP] DEVICE\n"
      "  where:\n"
      "  -c  --count COUNT     Count of blocks to verify (def 0, which scrubs\n"
      "                        the whole device)\n"
      "  -d  --dpo             Disable page out (cache retention priority)\n"
      "  -l  --lba LBA         Logical block address to start verify (def 0)\n"
      "  -h  --help            Display this usage information.\n"
      "  -r  --region SIZE     Region size (in KB) used by stag. technique "
      "(def 128MB)\n"
      "  -s  --segment SIZE    Segment size (in KB) used by the scrubber (def "
      "1MB)\n"
      "  -t  --technique TECH  Scrubbing technique to be used (def BOTH):\n"
      "                        o SEQL or 0: Sequential scrubbing\n"
      "                        o STAG or 1: Staggered  scrubbing\n"
      "                        o BOTH or 2: Sequential & Staggered\n"
      "  -D  --debug           Print debugging-related messages.\n"
      "  -v  --verbose         Increase verbosity\n"
      "  -V  --version         Print version string and exit\n"
      "  -P  --vrprotect VRP   Set vrprotect field to VRP (def 0)\n"
      "Scrubs the SCSI device using the SCSI VERIFY(10) command and one of "
      "the\n"
      "       available scrubbing techniques.\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 = [1240 x i8] c"Usage: sg_scrubber [--count=COUNT] [--dpo] [--help] [--lba=LBA] [--region=SIZE]\0A [--segment=SIZE] [--technique=TECH] [--debug] [--verbose]\0A [--version] [--vrprotect=VRP] DEVICE\0A where:\0A -c --count COUNT Count of blocks to verify (def 0, which scrubs\0A the whole device)\0A -d --dpo Disable page out (cache retention priority)\0A -l --lba LBA Logical block address to start verify (def 0)\0A -h --help Display this usage information.\0A -r --region SIZE Region size (in KB) used by stag. technique (def 128MB)\0A -s --segment SIZE Segment size (in KB) used by the scrubber (def 1MB)\0A -t --technique TECH Scrubbing technique to be used (def BOTH):\0A o SEQL or 0: Sequential scrubbing\0A o STAG or 1: Staggered scrubbing\0A o BOTH or 2: Sequential & Staggered\0A -D --debug Print debugging-related messages.\0A -v --verbose Increase verbosity\0A -V --version Print version string and exit\0A -P --vrprotect VRP Set vrprotect field to VRP (def 0)\0AScrubs the SCSI device using the SCSI VERIFY(10) command and one of the\0A available scrubbing techniques.\0A\00"
define void @usage() {
%1 = load i32, i32* @stderr
%2 = call i32 @fprintf(i32 %1, i8* getelementptr inbounds ([1240 x i8], [1240 x i8]* @.str, i64 0, i64 0))
ret void
}

LLVM IR (-O2):
@stderr = global i32 0
@.str = [1240 x i8] c"Usage: sg_scrubber [--count=COUNT] [--dpo] [--help] [--lba=LBA] [--region=SIZE]\0A [--segment=SIZE] [--technique=TECH] [--debug] [--verbose]\0A [--version] [--vrprotect=VRP] DEVICE\0A where:\0A -c --count COUNT Count of blocks to verify (def 0, which scrubs\0A the whole device)\0A -d --dpo Disable page out (cache retention priority)\0A -l --lba LBA Logical block address to start verify (def 0)\0A -h --help Display this usage information.\0A -r --region SIZE Region size (in KB) used by stag. technique (def 128MB)\0A -s --segment SIZE Segment size (in KB) used by the scrubber (def 1MB)\0A -t --technique TECH Scrubbing technique to be used (def BOTH):\0A o SEQL or 0: Sequential scrubbing\0A o STAG or 1: Staggered scrubbing\0A o BOTH or 2: Sequential & Staggered\0A -D --debug Print debugging-related messages.\0A -v --verbose Increase verbosity\0A -V --version Print version string and exit\0A -P --vrprotect VRP Set vrprotect field to VRP (def 0)\0AScrubs the SCSI device using the SCSI VERIFY(10) command and one of the\0A available scrubbing techniques.\0A\00"
define void @usage() {
%1 = load i32, i32* @stderr
%2 = tail call i32 @fprintf(i32 %1, i8* getelementptr inbounds ([1240 x i8], [1240 x i8]* @.str, i64 0, i64 0))
ret void
}