#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 /*<<< orphan*/);
int /*<<< orphan*/ printf(char *);
void display_help(void) {
  printf("Usage: nandwrite [OPTION] MTD_DEVICE INPUTFILE\n"
         "Writes to the specified MTD device.\n"
         "\n"
         "  -a, --autoplace	Use auto oob layout\n"
         "  -j, --jffs2		force jffs2 oob layout (legacy support)\n"
         "  -y, --yaffs		force yaffs oob layout (legacy support)\n"
         "  -f, --forcelegacy	force legacy support on autoplacement enabled "
         "mtd device\n"
         "  -m, --markbad		mark blocks bad if write fails\n"
         "  -n, --noecc		write without ecc\n"
         "  -o, --oob		image contains oob data\n"
         "  -s addr, --start=addr set start address (default is 0)\n"
         "  -p, --pad             pad to page size\n"
         "  -b, --blockalign=1|2|4 set multiple of eraseblocks to align to\n"
         "  -q, --quiet		don't display progress messages\n"
         "      --help		display this help and exit\n"
         "      --version		output version information and exit\n");
  exit(0);
}


x86 assembly (clang, -O0):
<display_help>:
push   %rbp
mov    %rsp,%rbp
lea    0xed5(%rip),%rdi
call   1030 <printf@plt>
xor    %edi,%edi
call   1040 <exit@plt>

x86 assembly (clang, -O2):
<display_help>:
push   %rax
lea    0xed8(%rip),%rdi
call   1030 <puts@plt>
xor    %edi,%edi
call   1040 <exit@plt>

LLVM IR (-O0):
@.str = [732 x i8] c"Usage: nandwrite [OPTION] MTD_DEVICE INPUTFILE\0AWrites to the specified MTD device.\0A\0A -a, --autoplace\09Use auto oob layout\0A -j, --jffs2\09\09force jffs2 oob layout (legacy support)\0A -y, --yaffs\09\09force yaffs oob layout (legacy support)\0A -f, --forcelegacy\09force legacy support on autoplacement enabled mtd device\0A -m, --markbad\09\09mark blocks bad if write fails\0A -n, --noecc\09\09write without ecc\0A -o, --oob\09\09image contains oob data\0A -s addr, --start=addr set start address (default is 0)\0A -p, --pad pad to page size\0A -b, --blockalign=1|2|4 set multiple of eraseblocks to align to\0A -q, --quiet\09\09don't display progress messages\0A --help\09\09display this help and exit\0A --version\09\09output version information and exit\0A\00"
define void @display_help() {
%1 = call i32 @printf(i8* getelementptr inbounds ([732 x i8], [732 x i8]* @.str, i64 0, i64 0))
%2 = call i32 @exit(i32 0)
unreachable
}

LLVM IR (-O2):
@str = [731 x i8] c"Usage: nandwrite [OPTION] MTD_DEVICE INPUTFILE\0AWrites to the specified MTD device.\0A\0A -a, --autoplace\09Use auto oob layout\0A -j, --jffs2\09\09force jffs2 oob layout (legacy support)\0A -y, --yaffs\09\09force yaffs oob layout (legacy support)\0A -f, --forcelegacy\09force legacy support on autoplacement enabled mtd device\0A -m, --markbad\09\09mark blocks bad if write fails\0A -n, --noecc\09\09write without ecc\0A -o, --oob\09\09image contains oob data\0A -s addr, --start=addr set start address (default is 0)\0A -p, --pad pad to page size\0A -b, --blockalign=1|2|4 set multiple of eraseblocks to align to\0A -q, --quiet\09\09don't display progress messages\0A --help\09\09display this help and exit\0A --version\09\09output version information and exit\00"
define void @display_help() {
%1 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([731 x i8], [731 x i8]* @str, i64 0, i64 0))
%2 = tail call i32 @exit(i32 0)
unreachable
}