#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 *);
int usage(void) {
  printf(
      "Usage:\n"
      "   par c(heck)   [options] <par file>         : Check parity archive\n"
      "   par r(ecover) [options] <par file>         : Restore missing "
      "volumes\n"
      "   par a(dd)     [options] <par file> [files] : Add files to parity "
      "archive\n"
      " Advanced:\n"
      "   par m(ix)     [options] : Try to restore from all parity files at "
      "once\n"
      "   par i(nteractive) [<par files>] : Interactive mode (very "
      "bare-bones)\n"
      "\n"
      "Options: (Can be turned off with '+')\n"
      "    -m   : Move existing files out of the way\n"
      "    -f   : Fix faulty filenames\n"
      "    -p<n>: Number of files per parity volume\n"
      " or -n<n>: Number of parity volumes to create\n"
      "    -d   : Search for duplicate files\n"
      "    -k   : Keep broken files\n"
      "    -s   : Be smart if filenames are consistently different.\n"
      "    +i   : Do not add following files to parity volumes\n"
      "    +c   : Do not create parity volumes\n"
      "    +C   : Ignore case in filename comparisons\n"
      "    +H   : Do not check control hashes\n"
      "    -v,+v: Increase or decrease verbosity\n"
      "    -h,-?: Display this help\n"
      "    --   : Always treat following arguments as files\n"
      "\n");
  return 0;
}


x86 assembly (clang, -O0):
<usage>:
push   %rbp
mov    %rsp,%rbp
lea    0xee5(%rip),%rdi
call   1030 <printf@plt>
xor    %eax,%eax
pop    %rbp
ret

x86 assembly (clang, -O2):
<usage>:
push   %rax
lea    0xee8(%rip),%rdi
call   1030 <puts@plt>
xor    %eax,%eax
pop    %rcx
ret

LLVM IR (-O0):
@.str = [1025 x i8] c"Usage:\0A par c(heck) [options] <par file> : Check parity archive\0A par r(ecover) [options] <par file> : Restore missing volumes\0A par a(dd) [options] <par file> [files] : Add files to parity archive\0A Advanced:\0A par m(ix) [options] : Try to restore from all parity files at once\0A par i(nteractive) [<par files>] : Interactive mode (very bare-bones)\0A\0AOptions: (Can be turned off with '+')\0A -m : Move existing files out of the way\0A -f : Fix faulty filenames\0A -p<n>: Number of files per parity volume\0A or -n<n>: Number of parity volumes to create\0A -d : Search for duplicate files\0A -k : Keep broken files\0A -s : Be smart if filenames are consistently different.\0A +i : Do not add following files to parity volumes\0A +c : Do not create parity volumes\0A +C : Ignore case in filename comparisons\0A +H : Do not check control hashes\0A -v,+v: Increase or decrease verbosity\0A -h,-?: Display this help\0A -- : Always treat following arguments as files\0A\0A\00"
define i32 @usage() {
%1 = call i32 @printf(i8* getelementptr inbounds ([1025 x i8], [1025 x i8]* @.str, i64 0, i64 0))
ret i32 0
}

LLVM IR (-O2):
@str = [1024 x i8] c"Usage:\0A par c(heck) [options] <par file> : Check parity archive\0A par r(ecover) [options] <par file> : Restore missing volumes\0A par a(dd) [options] <par file> [files] : Add files to parity archive\0A Advanced:\0A par m(ix) [options] : Try to restore from all parity files at once\0A par i(nteractive) [<par files>] : Interactive mode (very bare-bones)\0A\0AOptions: (Can be turned off with '+')\0A -m : Move existing files out of the way\0A -f : Fix faulty filenames\0A -p<n>: Number of files per parity volume\0A or -n<n>: Number of parity volumes to create\0A -d : Search for duplicate files\0A -k : Keep broken files\0A -s : Be smart if filenames are consistently different.\0A +i : Do not add following files to parity volumes\0A +c : Do not create parity volumes\0A +C : Ignore case in filename comparisons\0A +H : Do not check control hashes\0A -v,+v: Increase or decrease verbosity\0A -h,-?: Display this help\0A -- : Always treat following arguments as files\0A\00"
define i32 @usage() {
%1 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([1024 x i8], [1024 x i8]* @str, i64 0, i64 0))
ret i32 0
}