#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 B19200;
int /*<<< orphan*/ fprintf(int /*<<< orphan*/, char *, char *, char *, char *,
                           char *, char *, int, int);
int /*<<< orphan*/ stderr;
void usage(void) {
  extern char *__progname;
  fprintf(
      stderr,
      "%s - %s, %s\n"
      "Usage: %s [-pbVhtsv] file.hex\n"
      "Options:\n"
      "  -p       Device port for communication (default: %s)\n"
      "  -b       Baud rate (default: %d)\n"
      "  -V       Print verbose progress reports\n"
      "  -h       Display this help\n"
      "  -t       How long to wait before giving up (default: %i seconds)\n"
      "  -s       Hex2char string (without 0x) to send to invoke bootloader\n"
      "  -v       Print version info and exit\n",
      __progname, "MegaLoad firmware flasher", "1.1.0", __progname,
      "/dev/ttyUSB0", B19200, 20);
}


x86 assembly (clang, -O0):
<usage>:
push   %rbp
mov    %rsp,%rbp
sub    $0x20,%rsp
mov    0x2eb9(%rip),%rax
mov    (%rax),%edi
mov    0x2ea0(%rip),%rax
mov    (%rax),%rdx
mov    0x2e96(%rip),%rax
mov    (%rax),%r9
mov    0x2eb4(%rip),%rax
mov    (%rax),%eax
lea    0xebb(%rip),%rsi
lea    0x1038(%rip),%rcx
lea    0x104b(%rip),%r8
lea    0x104a(%rip),%r10
mov    %r10,(%rsp)
mov    %eax,0x8(%rsp)
movl   $0x14,0x10(%rsp)
call   1030 <fprintf@plt>
add    $0x20,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<usage>:
push   %rax
mov    0x2ec0(%rip),%rax
mov    (%rax),%edi
mov    0x2ea7(%rip),%rax
mov    (%rax),%rdx
mov    0x2ec5(%rip),%rax
mov    (%rax),%eax
sub    $0x8,%rsp
lea    0x106c(%rip),%r10
lea    0xec1(%rip),%rsi
lea    0x103e(%rip),%rcx
lea    0x1051(%rip),%r8
mov    %rdx,%r9
push   $0x14
push   %rax
push   %r10
call   1030 <fprintf@plt>
add    $0x20,%rsp
pop    %rax
ret

LLVM IR (-O0):
@stderr = global i32 0
@.str = [388 x i8] c"%s - %s, %s\0AUsage: %s [-pbVhtsv] file.hex\0AOptions:\0A -p Device port for communication (default: %s)\0A -b Baud rate (default: %d)\0A -V Print verbose progress reports\0A -h Display this help\0A -t How long to wait before giving up (default: %i seconds)\0A -s Hex2char string (without 0x) to send to invoke bootloader\0A -v Print version info and exit\0A\00"
@__progname = external global i8*
@.str.1 = [26 x i8] c"MegaLoad firmware flasher\00"
@.str.2 = [6 x i8] c"1.1.0\00"
@.str.3 = [13 x i8] c"/dev/ttyUSB0\00"
@B19200 = global i32 0
define void @usage() {
%1 = load i32, i32* @stderr
%2 = load i8*, i8** @__progname
%3 = load i8*, i8** @__progname
%4 = load i32, i32* @B19200
%5 = call i32 @fprintf(i32 %1, i8* getelementptr inbounds ([388 x i8], [388 x i8]* @.str, i64 0, i64 0), i8* %2, i8* getelementptr inbounds ([26 x i8], [26 x i8]* @.str.1, i64 0, i64 0), i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.2, i64 0, i64 0), i8* %3, i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.3, i64 0, i64 0), i32 %4, i32 20)
ret void
}

LLVM IR (-O2):
@stderr = global i32 0
@.str = [388 x i8] c"%s - %s, %s\0AUsage: %s [-pbVhtsv] file.hex\0AOptions:\0A -p Device port for communication (default: %s)\0A -b Baud rate (default: %d)\0A -V Print verbose progress reports\0A -h Display this help\0A -t How long to wait before giving up (default: %i seconds)\0A -s Hex2char string (without 0x) to send to invoke bootloader\0A -v Print version info and exit\0A\00"
@__progname = external global i8*
@.str.1 = [26 x i8] c"MegaLoad firmware flasher\00"
@.str.2 = [6 x i8] c"1.1.0\00"
@.str.3 = [13 x i8] c"/dev/ttyUSB0\00"
@B19200 = global i32 0
define void @usage() {
%1 = load i32, i32* @stderr
%2 = load i8*, i8** @__progname
%3 = load i32, i32* @B19200
%4 = tail call i32 @fprintf(i32 %1, i8* getelementptr inbounds ([388 x i8], [388 x i8]* @.str, i64 0, i64 0), i8* %2, i8* getelementptr inbounds ([26 x i8], [26 x i8]* @.str.1, i64 0, i64 0), i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.2, i64 0, i64 0), i8* %2, i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.3, i64 0, i64 0), i32 %3, i32 20)
ret void
}