#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: sg_start [--eject] [--fl=FL] [--help] "
                  "[--immed] [--load] [--loej]\n"
                  "                [--mod=PC_MOD] [--noflush] [--pc=PC] "
                  "[--start] [--stop]\n"
                  "                [--verbose] [--version] DEVICE\n"
                  "  where:\n"
                  "    --eject|-e      stop unit then eject the medium\n"
                  "    --fl=FL|-f FL    format layer number (mmc5)\n"
                  "    --help|-h       print usage message then exit\n"
                  "    --immed|-i      device should return control after "
                  "receiving cdb,\n"
                  "                    default action is to wait until action "
                  "is complete\n"
                  "    --load|-l       load medium then start the unit\n"
                  "    --loej|-L       load or eject, corresponds to LOEJ bit "
                  "in cdb;\n"
                  "                    load when START bit also set, else "
                  "eject\n"
                  "    --mod=PC_MOD|-m PC_MOD    power condition modifier "
                  "(def: 0) (sbc)\n"
                  "    --noflush|-n    no flush prior to operation that limits "
                  "access (sbc)\n"
                  "    --load|-l       load medium then start the unit\n"
                  "    --pc=PC|-p PC    power condition: 0 (default) -> no "
                  "power condition,\n"
                  "                    1 -> active, 2 -> idle, 3 -> standby, "
                  "5 -> sleep (mmc)\n"
                  "    --start|-s      start unit, corresponds to START bit "
                  "in cdb,\n"
                  "                    default (START=1) if no other options "
                  "given\n"
                  "    --stop|-S       stop unit (e.g. spin down disk)\n"
                  "    --verbose|-v    increase verbosity\n"
                  "    --version|-V    print version string then exit\n\n"
                  "    Example: 'sg_start --stop /dev/sdb'    stops unit\n"
                  "             'sg_start --eject /dev/scd0'  stops unit and "
                  "ejects medium\n\n"
                  "Performs a SCSI START STOP UNIT command\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 = [1455 x i8] c"Usage: sg_start [--eject] [--fl=FL] [--help] [--immed] [--load] [--loej]\0A [--mod=PC_MOD] [--noflush] [--pc=PC] [--start] [--stop]\0A [--verbose] [--version] DEVICE\0A where:\0A --eject|-e stop unit then eject the medium\0A --fl=FL|-f FL format layer number (mmc5)\0A --help|-h print usage message then exit\0A --immed|-i device should return control after receiving cdb,\0A default action is to wait until action is complete\0A --load|-l load medium then start the unit\0A --loej|-L load or eject, corresponds to LOEJ bit in cdb;\0A load when START bit also set, else eject\0A --mod=PC_MOD|-m PC_MOD power condition modifier (def: 0) (sbc)\0A --noflush|-n no flush prior to operation that limits access (sbc)\0A --load|-l load medium then start the unit\0A --pc=PC|-p PC power condition: 0 (default) -> no power condition,\0A 1 -> active, 2 -> idle, 3 -> standby, 5 -> sleep (mmc)\0A --start|-s start unit, corresponds to START bit in cdb,\0A default (START=1) if no other options given\0A --stop|-S stop unit (e.g. spin down disk)\0A --verbose|-v increase verbosity\0A --version|-V print version string then exit\0A\0A Example: 'sg_start --stop /dev/sdb' stops unit\0A 'sg_start --eject /dev/scd0' stops unit and ejects medium\0A\0APerforms a SCSI START STOP UNIT command\0A\00"
define void @usage() {
%1 = load i32, i32* @stderr
%2 = call i32 @fprintf(i32 %1, i8* getelementptr inbounds ([1455 x i8], [1455 x i8]* @.str, i64 0, i64 0))
ret void
}

LLVM IR (-O2):
@stderr = global i32 0
@.str = [1455 x i8] c"Usage: sg_start [--eject] [--fl=FL] [--help] [--immed] [--load] [--loej]\0A [--mod=PC_MOD] [--noflush] [--pc=PC] [--start] [--stop]\0A [--verbose] [--version] DEVICE\0A where:\0A --eject|-e stop unit then eject the medium\0A --fl=FL|-f FL format layer number (mmc5)\0A --help|-h print usage message then exit\0A --immed|-i device should return control after receiving cdb,\0A default action is to wait until action is complete\0A --load|-l load medium then start the unit\0A --loej|-L load or eject, corresponds to LOEJ bit in cdb;\0A load when START bit also set, else eject\0A --mod=PC_MOD|-m PC_MOD power condition modifier (def: 0) (sbc)\0A --noflush|-n no flush prior to operation that limits access (sbc)\0A --load|-l load medium then start the unit\0A --pc=PC|-p PC power condition: 0 (default) -> no power condition,\0A 1 -> active, 2 -> idle, 3 -> standby, 5 -> sleep (mmc)\0A --start|-s start unit, corresponds to START bit in cdb,\0A default (START=1) if no other options given\0A --stop|-S stop unit (e.g. spin down disk)\0A --verbose|-v increase verbosity\0A --version|-V print version string then exit\0A\0A Example: 'sg_start --stop /dev/sdb' stops unit\0A 'sg_start --eject /dev/scd0' stops unit and ejects medium\0A\0APerforms a SCSI START STOP UNIT command\0A\00"
define void @usage() {
%1 = load i32, i32* @stderr
%2 = tail call i32 @fprintf(i32 %1, i8* getelementptr inbounds ([1455 x i8], [1455 x i8]* @.str, i64 0, i64 0))
ret void
}