#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 help(void) {
  fprintf(stderr, "fpkg - Package a firmware\n"
                  "Copyright (C) 2007 Jonathan Zarate\n"
                  "\n"
                  "Usage: [-v <trx version>] -i <input> [-a <align>] [-i "
                  "<input>] [-a <align>] {output}\n"
                  "Output:\n"
                  " TRX:            -t <output file>\n"
                  " Linksys/Cisco:  -l <id>,<output file>\n"
                  "   W54G WRT54G / WRT54GL\n"
                  "   W54U WRTSL54GS\n"
                  "   W54S WRTS54GS\n"
                  "   W54s WRT54GS v4\n"
                  "   N160 WRT160N v3\n"
                  "   EWCB WRT300N v1\n"
                  "   310N WRT310N v1/v2\n"
                  "   320N WRT320N\n"
                  "   610N WRT610N v2\n"
                  "   32XN E2000\n"
                  "   61XN E3000\n"
                  " Motorola:       -m <id>,<output file>\n"
                  "   0x10577000 WE800\n"
                  "   0x10577040 WA840\n"
                  "   0x10577050 WR850\n"
                  " ASUS: 	  -r <id>,<v1>,<v2>,<v3>,<v4>,<output file>\n"
                  "\n");
  exit(1);
}


x86 assembly (clang, -O0):
<help>:
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):
<help>:
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 = [583 x i8] c"fpkg - Package a firmware\0ACopyright (C) 2007 Jonathan Zarate\0A\0AUsage: [-v <trx version>] -i <input> [-a <align>] [-i <input>] [-a <align>] {output}\0AOutput:\0A TRX: -t <output file>\0A Linksys/Cisco: -l <id>,<output file>\0A W54G WRT54G / WRT54GL\0A W54U WRTSL54GS\0A W54S WRTS54GS\0A W54s WRT54GS v4\0A N160 WRT160N v3\0A EWCB WRT300N v1\0A 310N WRT310N v1/v2\0A 320N WRT320N\0A 610N WRT610N v2\0A 32XN E2000\0A 61XN E3000\0A Motorola: -m <id>,<output file>\0A 0x10577000 WE800\0A 0x10577040 WA840\0A 0x10577050 WR850\0A ASUS: \09 -r <id>,<v1>,<v2>,<v3>,<v4>,<output file>\0A\0A\00"
define void @help() {
%1 = load i32, i32* @stderr
%2 = call i32 @fprintf(i32 %1, i8* getelementptr inbounds ([583 x i8], [583 x i8]* @.str, i64 0, i64 0))
%3 = call i32 @exit(i32 1)
unreachable
}

LLVM IR (-O2):
@stderr = global i32 0
@.str = [583 x i8] c"fpkg - Package a firmware\0ACopyright (C) 2007 Jonathan Zarate\0A\0AUsage: [-v <trx version>] -i <input> [-a <align>] [-i <input>] [-a <align>] {output}\0AOutput:\0A TRX: -t <output file>\0A Linksys/Cisco: -l <id>,<output file>\0A W54G WRT54G / WRT54GL\0A W54U WRTSL54GS\0A W54S WRTS54GS\0A W54s WRT54GS v4\0A N160 WRT160N v3\0A EWCB WRT300N v1\0A 310N WRT310N v1/v2\0A 320N WRT320N\0A 610N WRT610N v2\0A 32XN E2000\0A 61XN E3000\0A Motorola: -m <id>,<output file>\0A 0x10577000 WE800\0A 0x10577040 WA840\0A 0x10577050 WR850\0A ASUS: \09 -r <id>,<v1>,<v2>,<v3>,<v4>,<output file>\0A\0A\00"
define void @help() {
%1 = load i32, i32* @stderr
%2 = tail call i32 @fprintf(i32 %1, i8* getelementptr inbounds ([583 x i8], [583 x i8]* @.str, i64 0, i64 0))
%3 = tail call i32 @exit(i32 1)
unreachable
}