#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 *);
void usage() {
  printf(
      "Usage: ipod_fw [-h]\n"
      "       ipod_fw [-v] -o outfile -e img_no fw_file\n"
      "       ipod_fw [-v] -g gen [-r rev] -o outfile [-i img_from_-e]* [-l "
      "raw_img]* ldr_img\n\n"
      "  -g:    set target ipod generation, valid options are: 1g, 2g, 3g\n"
      "         4g, 5g, scroll, touch, dock, mini, photo, color, nano and "
      "video\n"
      "  -e:    extract the image at img_no in boot table to outfile\n"
      "         fw_file is an original firmware image\n"
      "         the original firmware has the sw at 0, and a flash updater at "
      "1\n"
      "  -i|-l: create new image to outfile\n"
      "         up to 5 images, any of -i or -l allowed\n"
      "         -i: image extracted with -e, load and entry address preserved\n"
      "         -l: raw image, loaded to 0x28000000, entry at 0x00000000\n"
      "	     -r: set master revision to rev (for example 210 for 2.10)\n"
      "             may be needed if newest -e img is not the same as the "
      "flash rev\n"
      "         ldr_img is the iPodLinux loader binary.\n"
      "         first image is loaded by default, 2., 3., 4. or 5. loaded if\n"
      "         rew, menu, play or ff is hold while booting\n\n"
      "  -v: verbose\n\n"
      " This program is used to create a bootable ipod image.\n\n");
}


x86 assembly (clang, -O0):
<usage>:
push   %rbp
mov    %rsp,%rbp
lea    0xee5(%rip),%rdi
call   1030 <printf@plt>
pop    %rbp
ret

x86 assembly (clang, -O2):
<usage>:
lea    0xee9(%rip),%rdi
jmp    1030 <puts@plt>

LLVM IR (-O0):
@.str = [1088 x i8] c"Usage: ipod_fw [-h]\0A ipod_fw [-v] -o outfile -e img_no fw_file\0A ipod_fw [-v] -g gen [-r rev] -o outfile [-i img_from_-e]* [-l raw_img]* ldr_img\0A\0A -g: set target ipod generation, valid options are: 1g, 2g, 3g\0A 4g, 5g, scroll, touch, dock, mini, photo, color, nano and video\0A -e: extract the image at img_no in boot table to outfile\0A fw_file is an original firmware image\0A the original firmware has the sw at 0, and a flash updater at 1\0A -i|-l: create new image to outfile\0A up to 5 images, any of -i or -l allowed\0A -i: image extracted with -e, load and entry address preserved\0A -l: raw image, loaded to 0x28000000, entry at 0x00000000\0A\09 -r: set master revision to rev (for example 210 for 2.10)\0A may be needed if newest -e img is not the same as the flash rev\0A ldr_img is the iPodLinux loader binary.\0A first image is loaded by default, 2., 3., 4. or 5. loaded if\0A rew, menu, play or ff is hold while booting\0A\0A -v: verbose\0A\0A This program is used to create a bootable ipod image.\0A\0A\00"
define void @usage() {
%1 = call i32 @printf(i8* getelementptr inbounds ([1088 x i8], [1088 x i8]* @.str, i64 0, i64 0))
ret void
}

LLVM IR (-O2):
@str = [1087 x i8] c"Usage: ipod_fw [-h]\0A ipod_fw [-v] -o outfile -e img_no fw_file\0A ipod_fw [-v] -g gen [-r rev] -o outfile [-i img_from_-e]* [-l raw_img]* ldr_img\0A\0A -g: set target ipod generation, valid options are: 1g, 2g, 3g\0A 4g, 5g, scroll, touch, dock, mini, photo, color, nano and video\0A -e: extract the image at img_no in boot table to outfile\0A fw_file is an original firmware image\0A the original firmware has the sw at 0, and a flash updater at 1\0A -i|-l: create new image to outfile\0A up to 5 images, any of -i or -l allowed\0A -i: image extracted with -e, load and entry address preserved\0A -l: raw image, loaded to 0x28000000, entry at 0x00000000\0A\09 -r: set master revision to rev (for example 210 for 2.10)\0A may be needed if newest -e img is not the same as the flash rev\0A ldr_img is the iPodLinux loader binary.\0A first image is loaded by default, 2., 3., 4. or 5. loaded if\0A rew, menu, play or ff is hold while booting\0A\0A -v: verbose\0A\0A This program is used to create a bootable ipod image.\0A\00"
define void @usage() {
%1 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([1087 x i8], [1087 x i8]* @str, i64 0, i64 0))
ret void
}