#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 const *, char const *, char const *);
void usage(const char *prog) {
  printf("Usage: %s [-h, --help] [-v,--verbose] [-C,--card <cardno>]\n"
         "\t[-V, --version]\n"
         "\t[-v, --verbose]\n"
         "\t[-f, --file <image.rbf>]\n"
         "\t[-p, --partition <partition>] Default: 1\n"
         "\t[-x, --verify <0:no|1:yes>]\n"
         "\n"
         "This utility updates the Genwqes FLASH with an new image\n"
         "from an *.rbf file. Do not disconnect the card from power\n"
         "while updating. Ensure you have the correct update\n"
         "image. Use of incorrect images or interrupting the update\n"
         "will make the card unusable."
         "\nExample flashing a Genwqe default Partition (Partition 1):\n"
         "  %s -C0 -f chip_a5_latest.rbf\n"
         "\nExample flashing a Genwqe backup Partition (Partition 0):\n"
         "  %s -C0 -p 0 -f chip_a5_latest.rbf\n"
         "\n"
         "Please note that updating the card can take some time.\n"
         "So please be patient and do not try to abort this process,\n"
         "because this might corrupt the card image, and the card\n"
         "won't work as expected afterwards.\n"
         "\n",
         prog, prog, prog);
}


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

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

LLVM IR (-O0):
@.str = [837 x i8] c"Usage: %s [-h, --help] [-v,--verbose] [-C,--card <cardno>]\0A\09[-V, --version]\0A\09[-v, --verbose]\0A\09[-f, --file <image.rbf>]\0A\09[-p, --partition <partition>] Default: 1\0A\09[-x, --verify <0:no|1:yes>]\0A\0AThis utility updates the Genwqes FLASH with an new image\0Afrom an *.rbf file. Do not disconnect the card from power\0Awhile updating. Ensure you have the correct update\0Aimage. Use of incorrect images or interrupting the update\0Awill make the card unusable.\0AExample flashing a Genwqe default Partition (Partition 1):\0A %s -C0 -f chip_a5_latest.rbf\0A\0AExample flashing a Genwqe backup Partition (Partition 0):\0A %s -C0 -p 0 -f chip_a5_latest.rbf\0A\0APlease note that updating the card can take some time.\0ASo please be patient and do not try to abort this process,\0Abecause this might corrupt the card image, and the card\0Awon't work as expected afterwards.\0A\0A\00"
define void @usage(i8* %0) {
%2 = alloca i8*
store i8* %0, i8** %2
%3 = load i8*, i8** %2
%4 = load i8*, i8** %2
%5 = load i8*, i8** %2
%6 = call i32 @printf(i8* getelementptr inbounds ([837 x i8], [837 x i8]* @.str, i64 0, i64 0), i8* %3, i8* %4, i8* %5)
ret void
}

LLVM IR (-O2):
@.str = [837 x i8] c"Usage: %s [-h, --help] [-v,--verbose] [-C,--card <cardno>]\0A\09[-V, --version]\0A\09[-v, --verbose]\0A\09[-f, --file <image.rbf>]\0A\09[-p, --partition <partition>] Default: 1\0A\09[-x, --verify <0:no|1:yes>]\0A\0AThis utility updates the Genwqes FLASH with an new image\0Afrom an *.rbf file. Do not disconnect the card from power\0Awhile updating. Ensure you have the correct update\0Aimage. Use of incorrect images or interrupting the update\0Awill make the card unusable.\0AExample flashing a Genwqe default Partition (Partition 1):\0A %s -C0 -f chip_a5_latest.rbf\0A\0AExample flashing a Genwqe backup Partition (Partition 0):\0A %s -C0 -p 0 -f chip_a5_latest.rbf\0A\0APlease note that updating the card can take some time.\0ASo please be patient and do not try to abort this process,\0Abecause this might corrupt the card image, and the card\0Awon't work as expected afterwards.\0A\0A\00"
define void @usage(i8* %0) {
%2 = tail call i32 @printf(i8* getelementptr inbounds ([837 x i8], [837 x i8]* @.str, i64 0, i64 0), i8* %0, i8* %0, i8* %0)
ret void
}