#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*/ printf(char *, ...);
void print_usage(void) {
  printf("Usage: %s [options]\n\n", "image3maker");
  printf(
      "Generate an Image3 file.\n"
      "\n"
      "  -c, --certificateBlob [file]        Use file as a certificate to add "
      "to the image.\n"
      "  -f, --dataFile [file]               Use file as an input. (required)\n"
      "  -t, --imageTag [tag]                4-byte ASCII tag for image "
      "(required)\n"
      "  -s, --imageSecurityEpoch [epoch]    Set epoch\n"
      "                                      Valid epochs are: s5l8920x, "
      "s5l8922x, s5l8930x\n"
      "                                                        s5l8940x, "
      "s5l8942x, s5l8947x\n"
      "                                                        s5l8950x, "
      "s5l8955x, s5l8747x\n"
      "  -v, --imageVersion [version]        Set version string\n"
      "  -d, --imageDomain [securityDomain]  Set specified security domain "
      "(manufacturer/Darwin)\n"
      "  -p, --imageProduction [prodValue]   Mark image production value "
      "(production/development)\n"
      "  -h, --hardwareEpoch [epoch]         Set chip epoch\n"
      "  -y, --chipType [chipType]           Set chip type\n"
      "  -b, --boardType [boardType]         Set board type\n"
      "  -e, --uniqueIdentifier [uniqueID]   Set ECID for image\n"
      "  -a, --aesKey [aesKey]               Set AES key for image encryption "
      "(implies -i/--aesIv)\n"
      "  -i, --aesIv [aesIv]                 Set AES IV for image encryption "
      "(implies -a/--aesKey)\n"
      "  -o, --outputFile [file]             Output image3 file\n"
      "\n"
      "Only AES256 keybags are supported by this program right now.\n"
      "Have fun using this thingy. (ALL VALUES FOR THINGS SHOULD BE IN "
      "HEX!!!)\n");
  exit(-1);
  return;
}


x86 assembly (clang, -O0):
<print_usage>:
push   %rbp
mov    %rsp,%rbp
lea    0xed5(%rip),%rdi
lea    0xee4(%rip),%rsi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xee2(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    $0xffffffff,%edi
call   1040 <exit@plt>

x86 assembly (clang, -O2):
<print_usage>:
push   %rax
lea    0xec8(%rip),%rdi
lea    0xed7(%rip),%rsi
xor    %eax,%eax
call   1040 <printf@plt>
lea    0xed5(%rip),%rdi
call   1030 <puts@plt>
mov    $0xffffffff,%edi
call   1050 <exit@plt>

LLVM IR (-O0):
@.str = [22 x i8] c"Usage: %s [options]\0A\0A\00"
@.str.1 = [12 x i8] c"image3maker\00"
@.str.2 = [1390 x i8] c"Generate an Image3 file.\0A\0A -c, --certificateBlob [file] Use file as a certificate to add to the image.\0A -f, --dataFile [file] Use file as an input. (required)\0A -t, --imageTag [tag] 4-byte ASCII tag for image (required)\0A -s, --imageSecurityEpoch [epoch] Set epoch\0A Valid epochs are: s5l8920x, s5l8922x, s5l8930x\0A s5l8940x, s5l8942x, s5l8947x\0A s5l8950x, s5l8955x, s5l8747x\0A -v, --imageVersion [version] Set version string\0A -d, --imageDomain [securityDomain] Set specified security domain (manufacturer/Darwin)\0A -p, --imageProduction [prodValue] Mark image production value (production/development)\0A -h, --hardwareEpoch [epoch] Set chip epoch\0A -y, --chipType [chipType] Set chip type\0A -b, --boardType [boardType] Set board type\0A -e, --uniqueIdentifier [uniqueID] Set ECID for image\0A -a, --aesKey [aesKey] Set AES key for image encryption (implies -i/--aesIv)\0A -i, --aesIv [aesIv] Set AES IV for image encryption (implies -a/--aesKey)\0A -o, --outputFile [file] Output image3 file\0A\0AOnly AES256 keybags are supported by this program right now.\0AHave fun using this thingy. (ALL VALUES FOR THINGS SHOULD BE IN HEX!!!)\0A\00"
define void @print_usage() {
%1 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0))
%2 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([1390 x i8], [1390 x i8]* @.str.2, i64 0, i64 0))
%3 = call i32 @exit(i32 -1)
unreachable
}

LLVM IR (-O2):
@.str = [22 x i8] c"Usage: %s [options]\0A\0A\00"
@.str.1 = [12 x i8] c"image3maker\00"
@str = [1389 x i8] c"Generate an Image3 file.\0A\0A -c, --certificateBlob [file] Use file as a certificate to add to the image.\0A -f, --dataFile [file] Use file as an input. (required)\0A -t, --imageTag [tag] 4-byte ASCII tag for image (required)\0A -s, --imageSecurityEpoch [epoch] Set epoch\0A Valid epochs are: s5l8920x, s5l8922x, s5l8930x\0A s5l8940x, s5l8942x, s5l8947x\0A s5l8950x, s5l8955x, s5l8747x\0A -v, --imageVersion [version] Set version string\0A -d, --imageDomain [securityDomain] Set specified security domain (manufacturer/Darwin)\0A -p, --imageProduction [prodValue] Mark image production value (production/development)\0A -h, --hardwareEpoch [epoch] Set chip epoch\0A -y, --chipType [chipType] Set chip type\0A -b, --boardType [boardType] Set board type\0A -e, --uniqueIdentifier [uniqueID] Set ECID for image\0A -a, --aesKey [aesKey] Set AES key for image encryption (implies -i/--aesIv)\0A -i, --aesIv [aesIv] Set AES IV for image encryption (implies -a/--aesKey)\0A -o, --outputFile [file] Output image3 file\0A\0AOnly AES256 keybags are supported by this program right now.\0AHave fun using this thingy. (ALL VALUES FOR THINGS SHOULD BE IN HEX!!!)\00"
define void @print_usage() {
%1 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([22 x i8], [22 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0))
%2 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([1389 x i8], [1389 x i8]* @str, i64 0, i64 0))
%3 = tail call i32 @exit(i32 -1)
unreachable
}