#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(const char *name) {
  printf(
      "Usage : %s [options] catalogfile entities...\n\tParse the catalog file "
      "and query it for the entities\n\t--sgml : handle SGML Super catalogs "
      "for --add and --del\n\t--shell : run a shell allowing interactive "
      "queries\n\t--create : create a new catalog\n\t--add 'type' 'orig' "
      "'replace' : add an XML entry\n\t--add 'entry' : add an SGML entry\n",
      name);
  printf("\t--del 'values' : remove values\n\t--noout: avoid dumping the "
         "result on stdout\n\t         used with --add or --del, it saves the "
         "catalog changes\n\t         and with --sgml it automatically updates "
         "the super catalog\n\t--no-super-update: do not update the SGML super "
         "catalog\n\t-v --verbose : provide debug informations\n");
}


x86 assembly (clang, -O0):
<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>
lea    0x1012(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
add    $0x10,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<usage>:
push   %rax
mov    %rdi,%rsi
lea    0xed5(%rip),%rdi
xor    %eax,%eax
call   1040 <printf@plt>
lea    0x100e(%rip),%rdi
pop    %rax
jmp    1030 <puts@plt>

LLVM IR (-O0):
@.str = [327 x i8] c"Usage : %s [options] catalogfile entities...\0A\09Parse the catalog file and query it for the entities\0A\09--sgml : handle SGML Super catalogs for --add and --del\0A\09--shell : run a shell allowing interactive queries\0A\09--create : create a new catalog\0A\09--add 'type' 'orig' 'replace' : add an XML entry\0A\09--add 'entry' : add an SGML entry\0A\00"
@.str.1 = [312 x i8] c"\09--del 'values' : remove values\0A\09--noout: avoid dumping the result on stdout\0A\09 used with --add or --del, it saves the catalog changes\0A\09 and with --sgml it automatically updates the super catalog\0A\09--no-super-update: do not update the SGML super catalog\0A\09-v --verbose : provide debug informations\0A\00"
define void @usage(i8* %0) {
%2 = alloca i8*
store i8* %0, i8** %2
%3 = load i8*, i8** %2
%4 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([327 x i8], [327 x i8]* @.str, i64 0, i64 0), i8* %3)
%5 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([312 x i8], [312 x i8]* @.str.1, i64 0, i64 0))
ret void
}

LLVM IR (-O2):
@.str = [327 x i8] c"Usage : %s [options] catalogfile entities...\0A\09Parse the catalog file and query it for the entities\0A\09--sgml : handle SGML Super catalogs for --add and --del\0A\09--shell : run a shell allowing interactive queries\0A\09--create : create a new catalog\0A\09--add 'type' 'orig' 'replace' : add an XML entry\0A\09--add 'entry' : add an SGML entry\0A\00"
@str = [311 x i8] c"\09--del 'values' : remove values\0A\09--noout: avoid dumping the result on stdout\0A\09 used with --add or --del, it saves the catalog changes\0A\09 and with --sgml it automatically updates the super catalog\0A\09--no-super-update: do not update the SGML super catalog\0A\09-v --verbose : provide debug informations\00"
define void @usage(i8* %0) {
%2 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([327 x i8], [327 x i8]* @.str, i64 0, i64 0), i8* %0)
%3 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([311 x i8], [311 x i8]* @str, i64 0, i64 0))
ret void
}