#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_old() {
  fprintf(stderr, "Usage:  sg_start [0] [1] [--eject] [--fl=FL] "
                  "[-i] [--imm=0|1]\n"
                  "                 [--load] [--loej] [--mod=PC_MOD] "
                  "[--noflush] [--pc=PC]\n"
                  "                 [--start] [--stop] [-v] [-V]\n"
                  "                 DEVICE\n"
                  "  where:\n"
                  "    0          stop unit (e.g. spin down a disk or a "
                  "cd/dvd)\n"
                  "    1          start unit (e.g. spin up a disk or a "
                  "cd/dvd)\n"
                  "    --eject    stop then eject the medium\n"
                  "    --fl=FL    format layer number (mmc5)\n"
                  "    -i         return immediately (same as '--imm=1')\n"
                  "    --imm=0|1  0->await completion(def), 1->return "
                  "immediately\n"
                  "    --load     load then start the medium\n"
                  "    --loej     load the medium if '-start' option is "
                  "also given\n"
                  "               or stop unit and eject\n"
                  "    --mod=PC_MOD    power condition modifier "
                  "(def: 0) (sbc)\n"
                  "    --noflush    no flush prior to operation that limits "
                  "access (sbc)\n"
                  "    --pc=PC    power condition (in hex, default 0 -> no "
                  "power condition)\n"
                  "               1 -> active, 2 -> idle, 3 -> standby, "
                  "5 -> sleep (mmc)\n"
                  "    --start    start unit (same as '1'), default "
                  "action\n"
                  "    --stop     stop unit (same as '0')\n"
                  "    -v         verbose (print out SCSI commands)\n"
                  "    -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_old>:
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_old>:
mov    0x2ec9(%rip),%rax
mov    (%rax),%edi
lea    0xee0(%rip),%rsi
jmp    1030 <fprintf@plt>

LLVM IR (-O0):
@stderr = global i32 0
@.str = [1311 x i8] c"Usage: sg_start [0] [1] [--eject] [--fl=FL] [-i] [--imm=0|1]\0A [--load] [--loej] [--mod=PC_MOD] [--noflush] [--pc=PC]\0A [--start] [--stop] [-v] [-V]\0A DEVICE\0A where:\0A 0 stop unit (e.g. spin down a disk or a cd/dvd)\0A 1 start unit (e.g. spin up a disk or a cd/dvd)\0A --eject stop then eject the medium\0A --fl=FL format layer number (mmc5)\0A -i return immediately (same as '--imm=1')\0A --imm=0|1 0->await completion(def), 1->return immediately\0A --load load then start the medium\0A --loej load the medium if '-start' option is also given\0A or stop unit and eject\0A --mod=PC_MOD power condition modifier (def: 0) (sbc)\0A --noflush no flush prior to operation that limits access (sbc)\0A --pc=PC power condition (in hex, default 0 -> no power condition)\0A 1 -> active, 2 -> idle, 3 -> standby, 5 -> sleep (mmc)\0A --start start unit (same as '1'), default action\0A --stop stop unit (same as '0')\0A -v verbose (print out SCSI commands)\0A -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_old() {
%1 = load i32, i32* @stderr
%2 = call i32 @fprintf(i32 %1, i8* getelementptr inbounds ([1311 x i8], [1311 x i8]* @.str, i64 0, i64 0))
ret void
}

LLVM IR (-O2):
@stderr = global i32 0
@.str = [1311 x i8] c"Usage: sg_start [0] [1] [--eject] [--fl=FL] [-i] [--imm=0|1]\0A [--load] [--loej] [--mod=PC_MOD] [--noflush] [--pc=PC]\0A [--start] [--stop] [-v] [-V]\0A DEVICE\0A where:\0A 0 stop unit (e.g. spin down a disk or a cd/dvd)\0A 1 start unit (e.g. spin up a disk or a cd/dvd)\0A --eject stop then eject the medium\0A --fl=FL format layer number (mmc5)\0A -i return immediately (same as '--imm=1')\0A --imm=0|1 0->await completion(def), 1->return immediately\0A --load load then start the medium\0A --loej load the medium if '-start' option is also given\0A or stop unit and eject\0A --mod=PC_MOD power condition modifier (def: 0) (sbc)\0A --noflush no flush prior to operation that limits access (sbc)\0A --pc=PC power condition (in hex, default 0 -> no power condition)\0A 1 -> active, 2 -> idle, 3 -> standby, 5 -> sleep (mmc)\0A --start start unit (same as '1'), default action\0A --stop stop unit (same as '0')\0A -v verbose (print out SCSI commands)\0A -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_old() {
%1 = load i32, i32* @stderr
%2 = tail call i32 @fprintf(i32 %1, i8* getelementptr inbounds ([1311 x i8], [1311 x i8]* @.str, i64 0, i64 0))
ret void
}