#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*/ printf(char *, char *, char *, char *);
void help(char *argv0, char *reason) {
  printf(""
         "!! ERROR: %s !!\n"
         "\n"
         "Usage: %s [options] outputfile "
         "address={filename[,offset[,limit]]|hex:[hex:[...]]} ...\n"
         "\n"
         "address:    address (must be heximal) to store the corresponding "
         "image file.\n"
         "filename:   file to be packed.\n"
         "hex:        hex data to be packed.\n"
         "\n"
         "Options:\n"
         "        -2  2-byte byte-swap\n"
         "        -e  edit mode (do not replace the existing file)\n"
         "\n"
         "Example:\n"
         "        %s -2 images/mp.rom \\\n"
         "              0x00000=loader_srcroot/ldr.bin,0x0,0x4000 \\\n"
         "              0x04000=00:00:10:11:12:00 \\\n"
         "              0x06000=CCFG \\\n"
         "              0x08000=loader_srcroot/ldr.bin,0x4000,0x18000 \\\n"
         "              0x20000=images/run.bix\n"
         "\n",
         reason, argv0, argv0);
}


x86 assembly (clang, -O0):
<help>:
push   %rbp
mov    %rsp,%rbp
sub    $0x10,%rsp
mov    %rdi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
mov    -0x10(%rbp),%rsi
mov    -0x8(%rbp),%rdx
mov    -0x8(%rbp),%rcx
lea    0xecd(%rip),%rdi
call   1030 <printf@plt>
add    $0x10,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<help>:
mov    %rdi,%rcx
lea    0xee6(%rip),%rdi
mov    %rcx,%rdx
jmp    1030 <printf@plt>

LLVM IR (-O0):
@.str = [614 x i8] c"!! ERROR: %s !!\0A\0AUsage: %s [options] outputfile address={filename[,offset[,limit]]|hex:[hex:[...]]} ...\0A\0Aaddress: address (must be heximal) to store the corresponding image file.\0Afilename: file to be packed.\0Ahex: hex data to be packed.\0A\0AOptions:\0A -2 2-byte byte-swap\0A -e edit mode (do not replace the existing file)\0A\0AExample:\0A %s -2 images/mp.rom \\\0A 0x00000=loader_srcroot/ldr.bin,0x0,0x4000 \\\0A 0x04000=00:00:10:11:12:00 \\\0A 0x06000=CCFG \\\0A 0x08000=loader_srcroot/ldr.bin,0x4000,0x18000 \\\0A 0x20000=images/run.bix\0A\0A\00"
define void @help(i8* %0, i8* %1) {
%3 = alloca i8*
%4 = alloca i8*
store i8* %0, i8** %3
store i8* %1, i8** %4
%5 = load i8*, i8** %4
%6 = load i8*, i8** %3
%7 = load i8*, i8** %3
%8 = call i32 @printf(i8* getelementptr inbounds ([614 x i8], [614 x i8]* @.str, i64 0, i64 0), i8* %5, i8* %6, i8* %7)
ret void
}

LLVM IR (-O2):
@.str = [614 x i8] c"!! ERROR: %s !!\0A\0AUsage: %s [options] outputfile address={filename[,offset[,limit]]|hex:[hex:[...]]} ...\0A\0Aaddress: address (must be heximal) to store the corresponding image file.\0Afilename: file to be packed.\0Ahex: hex data to be packed.\0A\0AOptions:\0A -2 2-byte byte-swap\0A -e edit mode (do not replace the existing file)\0A\0AExample:\0A %s -2 images/mp.rom \\\0A 0x00000=loader_srcroot/ldr.bin,0x0,0x4000 \\\0A 0x04000=00:00:10:11:12:00 \\\0A 0x06000=CCFG \\\0A 0x08000=loader_srcroot/ldr.bin,0x4000,0x18000 \\\0A 0x20000=images/run.bix\0A\0A\00"
define void @help(i8* %0, i8* %1) {
%3 = tail call i32 @printf(i8* getelementptr inbounds ([614 x i8], [614 x i8]* @.str, i64 0, i64 0), i8* %1, i8* %0, i8* %0)
ret void
}