#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*/ list_programmers_linebreak(int, int, int /*<<< orphan*/);
int /*<<< orphan*/ printf(char *, ...);
void cli_classic_usage(const char *name) {
  printf("Please note that the command line interface for flashrom has changed "
         "between\n"
         "0.9.5 and 0.9.6 and will change again before flashrom 1.0.\n\n");
  printf("Usage: %s [-h|-R|-L|"
         "-p <programmername>[:<parameters>] [-c <chipname>]\n"
         "[-E|(-r|-w|-v) <file>] [-l <layoutfile> [-i <imagename>]...] [-n] "
         "[-f]]\n"
         "[-V[V[V]]] [-o <logfile>]\n\n",
         name);
  printf(
      " -h | --help                        print this help text\n"
      " -R | --version                     print version (release)\n"
      " -r | --read <file>                 read flash and save to <file>\n"
      " -w | --write <file>                write <file> to flash\n"
      " -v | --verify <file>               verify flash against <file>\n"
      " -E | --erase                       erase flash memory\n"
      " -V | --verbose                     more verbose output\n"
      " -c | --chip <chipname>             probe only for specified flash "
      "chip\n"
      " -f | --force                       force specific operations (see man "
      "page)\n"
      " -n | --noverify                    don't auto-verify\n"
      " -l | --layout <layoutfile>         read ROM layout from <layoutfile>\n"
      " -i | --image <name>                only flash image <name> from flash "
      "layout\n"
      " -o | --output <logfile>            log output to <logfile>\n"
      " -L | --list-supported              print supported devices\n"
      " -p | --programmer <name>[:<param>] specify the programmer device. One "
      "of\n");
  list_programmers_linebreak(4, 80, 0);
  printf(".\n\nYou can specify one of -h, -R, -L, "
         "-E, -r, -w, -v or no operation.\n"
         "If no operation is specified, flashrom will only probe for flash "
         "chips.\n");
}


x86 assembly (clang, -O0):
<cli_classic_usage>:
push   %rbp
mov    %rsp,%rbp
sub    $0x10,%rsp
mov    %rdi,-0x8(%rbp)
lea    0xecd(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x8(%rbp),%rsi
lea    0xf45(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xfe2(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    $0x4,%edi
mov    $0x50,%esi
xor    %edx,%edx
call   1040 <list_programmers_linebreak@plt>
lea    0x1385(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
add    $0x10,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<cli_classic_usage>:
push   %rbx
mov    %rdi,%rbx
lea    0xf70(%rip),%rdi
call   1030 <puts@plt>
lea    0xeb9(%rip),%rdi
mov    %rbx,%rsi
xor    %eax,%eax
call   1040 <printf@plt>
lea    0xfdc(%rip),%rdi
call   1030 <puts@plt>
mov    $0x4,%edi
mov    $0x50,%esi
xor    %edx,%edx
call   1050 <list_programmers_linebreak@plt>
lea    0x1380(%rip),%rdi
pop    %rbx
jmp    1030 <puts@plt>

LLVM IR (-O0):
@.str = [138 x i8] c"Please note that the command line interface for flashrom has changed between\0A0.9.5 and 0.9.6 and will change again before flashrom 1.0.\0A\0A\00"
@.str.1 = [171 x i8] c"Usage: %s [-h|-R|-L|-p <programmername>[:<parameters>] [-c <chipname>]\0A[-E|(-r|-w|-v) <file>] [-l <layoutfile> [-i <imagename>]...] [-n] [-f]]\0A[-V[V[V]]] [-o <logfile>]\0A\0A\00"
@.str.2 = [962 x i8] c" -h | --help print this help text\0A -R | --version print version (release)\0A -r | --read <file> read flash and save to <file>\0A -w | --write <file> write <file> to flash\0A -v | --verify <file> verify flash against <file>\0A -E | --erase erase flash memory\0A -V | --verbose more verbose output\0A -c | --chip <chipname> probe only for specified flash chip\0A -f | --force force specific operations (see man page)\0A -n | --noverify don't auto-verify\0A -l | --layout <layoutfile> read ROM layout from <layoutfile>\0A -i | --image <name> only flash image <name> from flash layout\0A -o | --output <logfile> log output to <logfile>\0A -L | --list-supported print supported devices\0A -p | --programmer <name>[:<param>] specify the programmer device. One of\0A\00"
@.str.3 = [143 x i8] c".\0A\0AYou can specify one of -h, -R, -L, -E, -r, -w, -v or no operation.\0AIf no operation is specified, flashrom will only probe for flash chips.\0A\00"
define void @cli_classic_usage(i8* %0) {
%2 = alloca i8*
store i8* %0, i8** %2
%3 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([138 x i8], [138 x i8]* @.str, i64 0, i64 0))
%4 = load i8*, i8** %2
%5 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([171 x i8], [171 x i8]* @.str.1, i64 0, i64 0), i8* %4)
%6 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([962 x i8], [962 x i8]* @.str.2, i64 0, i64 0))
%7 = call i32 @list_programmers_linebreak(i32 4, i32 80, i32 0)
%8 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([143 x i8], [143 x i8]* @.str.3, i64 0, i64 0))
ret void
}

LLVM IR (-O2):
@.str.1 = [171 x i8] c"Usage: %s [-h|-R|-L|-p <programmername>[:<parameters>] [-c <chipname>]\0A[-E|(-r|-w|-v) <file>] [-l <layoutfile> [-i <imagename>]...] [-n] [-f]]\0A[-V[V[V]]] [-o <logfile>]\0A\0A\00"
@str = [137 x i8] c"Please note that the command line interface for flashrom has changed between\0A0.9.5 and 0.9.6 and will change again before flashrom 1.0.\0A\00"
@str.4 = [961 x i8] c" -h | --help print this help text\0A -R | --version print version (release)\0A -r | --read <file> read flash and save to <file>\0A -w | --write <file> write <file> to flash\0A -v | --verify <file> verify flash against <file>\0A -E | --erase erase flash memory\0A -V | --verbose more verbose output\0A -c | --chip <chipname> probe only for specified flash chip\0A -f | --force force specific operations (see man page)\0A -n | --noverify don't auto-verify\0A -l | --layout <layoutfile> read ROM layout from <layoutfile>\0A -i | --image <name> only flash image <name> from flash layout\0A -o | --output <logfile> log output to <logfile>\0A -L | --list-supported print supported devices\0A -p | --programmer <name>[:<param>] specify the programmer device. One of\00"
@str.5 = [142 x i8] c".\0A\0AYou can specify one of -h, -R, -L, -E, -r, -w, -v or no operation.\0AIf no operation is specified, flashrom will only probe for flash chips.\00"
define void @cli_classic_usage(i8* %0) {
%2 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([137 x i8], [137 x i8]* @str, i64 0, i64 0))
%3 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([171 x i8], [171 x i8]* @.str.1, i64 0, i64 0), i8* %0)
%4 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([961 x i8], [961 x i8]* @str.4, i64 0, i64 0))
%5 = tail call i32 @list_programmers_linebreak(i32 4, i32 80, i32 0)
%6 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([142 x i8], [142 x i8]* @str.5, i64 0, i64 0))
ret void
}