#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 *, ...);
void print_usage(char *command) {
  printf("%s - Parse OPAL plaform error logs\n\n", command);
  printf("Usage: %s { -d  <logid> | -e <logid> | -a | -l | -s | -h }"
         " [ -p dir | -f file]\n\n"
         "\t-a       - Display all error log entry details\n"
         "\t-d logid - Display error log entry details\n"
         "\t-e logid - Erase error log entry details (cannot be combined with "
         "-f)\n"
         "\t-l       - List all error logs\n"
         "\t-s       - List all service action logs\n"
         "\t-p dir   - Use dir as elog directory (default %s)\n"
         "\t-f file  - Specify elog by filename\n"
         "\t-h       - Print this message and exit\n",
         command, "/var/log/opal-elog");
}


x86 assembly (clang, -O0):
<print_usage>:
push   %rbp
mov    %rsp,%rbp
sub    $0x10,%rsp
mov    %rdi,-0x8(%rbp)
mov    -0x8(%rbp),%rsi
lea    0xed9(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x8(%rbp),%rsi
lea    0xeec(%rip),%rdi
lea    0x10a2(%rip),%rdx
mov    $0x0,%al
call   1030 <printf@plt>
add    $0x10,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<print_usage>:
push   %rbx
mov    %rdi,%rbx
lea    0xee5(%rip),%rdi
mov    %rbx,%rsi
xor    %eax,%eax
call   1030 <printf@plt>
lea    0xef9(%rip),%rdi
lea    0x10af(%rip),%rdx
mov    %rbx,%rsi
xor    %eax,%eax
pop    %rbx
jmp    1030 <printf@plt>

LLVM IR (-O0):
@.str = [37 x i8] c"%s - Parse OPAL plaform error logs\0A\0A\00"
@.str.1 = [445 x i8] c"Usage: %s { -d <logid> | -e <logid> | -a | -l | -s | -h } [ -p dir | -f file]\0A\0A\09-a - Display all error log entry details\0A\09-d logid - Display error log entry details\0A\09-e logid - Erase error log entry details (cannot be combined with -f)\0A\09-l - List all error logs\0A\09-s - List all service action logs\0A\09-p dir - Use dir as elog directory (default %s)\0A\09-f file - Specify elog by filename\0A\09-h - Print this message and exit\0A\00"
@.str.2 = [19 x i8] c"/var/log/opal-elog\00"
define void @print_usage(i8* %0) {
%2 = alloca i8*
store i8* %0, i8** %2
%3 = load i8*, i8** %2
%4 = call i32 (i8*, i8*, ...) @printf(i8* getelementptr inbounds ([37 x i8], [37 x i8]* @.str, i64 0, i64 0), i8* %3)
%5 = load i8*, i8** %2
%6 = call i32 (i8*, i8*, ...) @printf(i8* getelementptr inbounds ([445 x i8], [445 x i8]* @.str.1, i64 0, i64 0), i8* %5, i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.2, i64 0, i64 0))
ret void
}

LLVM IR (-O2):
@.str = [37 x i8] c"%s - Parse OPAL plaform error logs\0A\0A\00"
@.str.1 = [445 x i8] c"Usage: %s { -d <logid> | -e <logid> | -a | -l | -s | -h } [ -p dir | -f file]\0A\0A\09-a - Display all error log entry details\0A\09-d logid - Display error log entry details\0A\09-e logid - Erase error log entry details (cannot be combined with -f)\0A\09-l - List all error logs\0A\09-s - List all service action logs\0A\09-p dir - Use dir as elog directory (default %s)\0A\09-f file - Specify elog by filename\0A\09-h - Print this message and exit\0A\00"
@.str.2 = [19 x i8] c"/var/log/opal-elog\00"
define void @print_usage(i8* %0) {
%2 = tail call i32 (i8*, i8*, ...) @printf(i8* getelementptr inbounds ([37 x i8], [37 x i8]* @.str, i64 0, i64 0), i8* %0)
%3 = tail call i32 (i8*, i8*, ...) @printf(i8* getelementptr inbounds ([445 x i8], [445 x i8]* @.str.1, i64 0, i64 0), i8* %0, i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.2, i64 0, i64 0))
ret void
}