#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*/ exit(int);
int /*<<< orphan*/ fprintf(int /*<<< orphan*/, char *);
int /*<<< orphan*/ stderr;
void usage(void) {
  fprintf(
      stderr,
      "Usage: mtd [<options> ...] <command> [<arguments> ...] <device>\n\n"
      "The device is in the format of mtdX (eg: mtd4) or its label.\n"
      "mtd recognizes these commands:\n"
      "        unlock                  unlock the device\n"
      "        erase                   erase all data on device\n"
      "        write <imagefile>|-     write <imagefile> (use - for stdin) to "
      "device\n"
      "Following options are available:\n"
      "        -q                      quiet mode (once: no [w] on writing,\n"
      "                                           twice: no status messages)\n"
      "        -r                      reboot after successful command\n"
      "        -f                      force write without [trx|bin] checks\n"
      "        -e <device>             erase <device> before executing the "
      "command\n\n"
      "Example: To write linux.trx to mtd4 labeled as linux and reboot "
      "afterwards\n"
      "         mtd -r write linux.trx linux\n\n");
  exit(1);
}


x86 assembly (clang, -O0):
<usage>:
push   %rbp
mov    %rsp,%rbp
mov    0x2eb5(%rip),%rax
mov    (%rax),%edi
lea    0xecc(%rip),%rsi
call   1030 <fprintf@plt>
mov    $0x1,%edi
call   1040 <exit@plt>

x86 assembly (clang, -O2):
<usage>:
push   %rax
mov    0x2eb8(%rip),%rax
mov    (%rax),%edi
lea    0xecf(%rip),%rsi
call   1030 <fprintf@plt>
mov    $0x1,%edi
call   1040 <exit@plt>

LLVM IR (-O0):
@stderr = global i32 0
@.str = [839 x i8] c"Usage: mtd [<options> ...] <command> [<arguments> ...] <device>\0A\0AThe device is in the format of mtdX (eg: mtd4) or its label.\0Amtd recognizes these commands:\0A unlock unlock the device\0A erase erase all data on device\0A write <imagefile>|- write <imagefile> (use - for stdin) to device\0AFollowing options are available:\0A -q quiet mode (once: no [w] on writing,\0A twice: no status messages)\0A -r reboot after successful command\0A -f force write without [trx|bin] checks\0A -e <device> erase <device> before executing the command\0A\0AExample: To write linux.trx to mtd4 labeled as linux and reboot afterwards\0A mtd -r write linux.trx linux\0A\0A\00"
define void @usage() {
%1 = load i32, i32* @stderr
%2 = call i32 @fprintf(i32 %1, i8* getelementptr inbounds ([839 x i8], [839 x i8]* @.str, i64 0, i64 0))
%3 = call i32 @exit(i32 1)
unreachable
}

LLVM IR (-O2):
@stderr = global i32 0
@.str = [839 x i8] c"Usage: mtd [<options> ...] <command> [<arguments> ...] <device>\0A\0AThe device is in the format of mtdX (eg: mtd4) or its label.\0Amtd recognizes these commands:\0A unlock unlock the device\0A erase erase all data on device\0A write <imagefile>|- write <imagefile> (use - for stdin) to device\0AFollowing options are available:\0A -q quiet mode (once: no [w] on writing,\0A twice: no status messages)\0A -r reboot after successful command\0A -f force write without [trx|bin] checks\0A -e <device> erase <device> before executing the command\0A\0AExample: To write linux.trx to mtd4 labeled as linux and reboot afterwards\0A mtd -r write linux.trx linux\0A\0A\00"
define void @usage() {
%1 = load i32, i32* @stderr
%2 = tail call i32 @fprintf(i32 %1, i8* getelementptr inbounds ([839 x i8], [839 x i8]* @.str, i64 0, i64 0))
%3 = tail call i32 @exit(i32 1)
unreachable
}