#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*/ exit(int);
int /*<<< orphan*/ printf(char *);
void usage(const char *path) {
  printf(
      "\nBSP v"
      "5.1"
      "\n"
      "\nSee the file AUTHORS for a complete list of credits and contributors\n"
      "\nUsage: bsp [options] input.wad [[-o] <output.wad>]\n"
      "       (If no output.wad is specified, tmp.wad is written)\n\n"
      "Options:\n\n"
      "  -factor <nnn>  Changes the cost assigned to SEG splits\n"
      "  -picknode {traditional|visplane}\n"
      "                 Selects either the traditional nodeline choosing "
      "algorithm\n"
      "                 (balance the tree and minimise splits) or Lee's "
      "algorithm\n"
      "                 to minimise visplanes (try to balance distinct sector "
      "refs)\n"
      "  -blockmap {old|comp}\n"
      "                 Selects either the old straightforward blockmap\n"
      "                 generation, or the new compressed blockmap code\n"
      "  -noreject      Does not clobber reject map\n"
      "  -q             Quiet mode (only errors are printed)\n");
  exit(1);
}


x86 assembly (clang, -O0):
<usage>:
push   %rbp
mov    %rsp,%rbp
sub    $0x10,%rsp
mov    %rdi,-0x8(%rbp)
lea    0xecd(%rip),%rdi
call   1030 <printf@plt>
mov    $0x1,%edi
call   1040 <exit@plt>

x86 assembly (clang, -O2):
<usage>:
push   %rax
lea    0xed8(%rip),%rdi
call   1030 <puts@plt>
mov    $0x1,%edi
call   1040 <exit@plt>

LLVM IR (-O0):
@.str = [775 x i8] c"\0ABSP v5.1\0A\0ASee the file AUTHORS for a complete list of credits and contributors\0A\0AUsage: bsp [options] input.wad [[-o] <output.wad>]\0A (If no output.wad is specified, tmp.wad is written)\0A\0AOptions:\0A\0A -factor <nnn> Changes the cost assigned to SEG splits\0A -picknode {traditional|visplane}\0A Selects either the traditional nodeline choosing algorithm\0A (balance the tree and minimise splits) or Lee's algorithm\0A to minimise visplanes (try to balance distinct sector refs)\0A -blockmap {old|comp}\0A Selects either the old straightforward blockmap\0A generation, or the new compressed blockmap code\0A -noreject Does not clobber reject map\0A -q Quiet mode (only errors are printed)\0A\00"
define void @usage(i8* %0) {
%2 = alloca i8*
store i8* %0, i8** %2
%3 = call i32 @printf(i8* getelementptr inbounds ([775 x i8], [775 x i8]* @.str, i64 0, i64 0))
%4 = call i32 @exit(i32 1)
unreachable
}

LLVM IR (-O2):
@str = [774 x i8] c"\0ABSP v5.1\0A\0ASee the file AUTHORS for a complete list of credits and contributors\0A\0AUsage: bsp [options] input.wad [[-o] <output.wad>]\0A (If no output.wad is specified, tmp.wad is written)\0A\0AOptions:\0A\0A -factor <nnn> Changes the cost assigned to SEG splits\0A -picknode {traditional|visplane}\0A Selects either the traditional nodeline choosing algorithm\0A (balance the tree and minimise splits) or Lee's algorithm\0A to minimise visplanes (try to balance distinct sector refs)\0A -blockmap {old|comp}\0A Selects either the old straightforward blockmap\0A generation, or the new compressed blockmap code\0A -noreject Does not clobber reject map\0A -q Quiet mode (only errors are printed)\00"
define void @usage(i8* nocapture readnone %0) {
%2 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([774 x i8], [774 x i8]* @str, i64 0, i64 0))
%3 = tail call i32 @exit(i32 1)
unreachable
}