#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*/ fprintf(int /*<<< orphan*/, char *, ...);
int /*<<< orphan*/ stderr;
int check_it(int val, char *arg1, char **arg2) {
  if (val >= 0) {
    if (*arg2 == NULL) {
      *arg2 = arg1;
      return (val);
    } else
      fprintf(stderr,
              "*ERROR* Conflicting command line keywords '%s' and '%s'!\n",
              *arg2, arg1);
  } else if (val == -2)
    fprintf(stderr, "*ERROR* Bad command line argument '%s'!\n", arg1);
  fprintf(stderr, "\nUsage: acdc [options] [(path)name]\n");
  fprintf(stderr, "\nWhere allowed options are:\n");
  fprintf(stderr, "   -plain (abbreviable to -p)\n");
  fprintf(stderr, "       Do not encrypt game text.\n");
  fprintf(stderr, "   -outdir <dir> (abbreviable to -o)\n");
  fprintf(stderr, "       Place derived C sources in <dir>.\n");
  fprintf(stderr, "   -preload (abbreviable to -pr; default keyword)\n");
  fprintf(stderr, "       Do not create a separate text file.\n");
  fprintf(stderr, "   -file-page [<npage>] (abbrviable to -fp)\n");
  fprintf(stderr, "       Create a separate .dat file of text messages and\n");
  fprintf(stderr, "       use an internal paging mechanism. The optional\n");
  fprintf(stderr, "       <npage> argument defaults to 32 and specifies the\n");
  fprintf(stderr, "       number of 1KB buffers to use for paging.\n");
  fprintf(stderr, "   -file-memory (abbreviable to -fm)\n");
  fprintf(stderr, "       Read all of the text file into memory on startup.\n");
  fprintf(stderr, "   -file-read (abbreviable to -fr)\n");
  fprintf(stderr, "       Read all text as required from the text file.\n");
  fprintf(stderr, "   -xref (abbreviable to -x)\n");
  fprintf(stderr, "       Generate the .xrf cross-reference listing.\n");
  fprintf(stderr, "   -no-warnings (abbreviable to -nw)\n");
  fprintf(stderr, "       Suppress warnings about unused symbols.\n");
  fprintf(stderr, "   -quiet (abbreviable to -q)\n");
  fprintf(stderr, "       Suppress most of the standard info messages.\n");
  fprintf(stderr, "   -debug (abbreviable to -d)\n");
  fprintf(stderr, "       Add A-code source as comments in C source and\n");
  fprintf(stderr, "       announce entry to distinct A-code chunks.\n");
  fprintf(stderr, "   -help (abbreviable to -h)\n");
  fprintf(stderr, "       Print this message.\n\n");
  fprintf(stderr, "   -version (abbreviable to -v)\n");
  fprintf(stderr, "       Show version number and exit\n");
  exit(val >= 0 ? 1 : 0);
}


x86 assembly (clang, -O0):
<check_it>:
push   %rbp
mov    %rsp,%rbp
sub    $0x20,%rsp
mov    %edi,-0x4(%rbp)
mov    %rsi,-0x10(%rbp)
mov    %rdx,-0x18(%rbp)
cmpl   $0x0,-0x4(%rbp)
jl     1186 <check_it+0x66>
mov    -0x18(%rbp),%rax
cmpq   $0x0,(%rax)
jne    115f <check_it+0x3f>
mov    -0x10(%rbp),%rcx
mov    -0x18(%rbp),%rax
mov    %rcx,(%rax)
mov    -0x4(%rbp),%eax
add    $0x20,%rsp
pop    %rbp
ret
mov    0x2e7a(%rip),%rax
mov    (%rax),%edi
mov    -0x18(%rbp),%rax
mov    (%rax),%rdx
mov    -0x10(%rbp),%rcx
lea    0xe86(%rip),%rsi
mov    $0x0,%al
call   1030 <fprintf@plt>
jmp    11b0 <check_it+0x90>
cmpl   $0xfffffffe,-0x4(%rbp)
jne    11ab <check_it+0x8b>
mov    0x2e49(%rip),%rax
mov    (%rax),%edi
mov    -0x10(%rbp),%rdx
lea    0xe96(%rip),%rsi
mov    $0x0,%al
call   1030 <fprintf@plt>
jmp    11b0 <check_it+0x90>
mov    0x2e29(%rip),%rax
mov    (%rax),%edi
lea    0xea3(%rip),%rsi
mov    $0x0,%al
call   1030 <fprintf@plt>
mov    0x2e12(%rip),%rax
mov    (%rax),%edi
lea    0xeb1(%rip),%rsi
mov    $0x0,%al
call   1030 <fprintf@plt>
mov    0x2dfb(%rip),%rax
mov    (%rax),%edi
lea    0xeb7(%rip),%rsi
mov    $0x0,%al
call   1030 <fprintf@plt>
mov    0x2de4(%rip),%rax
mov    (%rax),%edi
lea    0xebf(%rip),%rsi
mov    $0x0,%al
call   1030 <fprintf@plt>
mov    0x2dcd(%rip),%rax
mov    (%rax),%edi
lea    0xeca(%rip),%rsi
mov    $0x0,%al
call   1030 <fprintf@plt>
mov    0x2db6(%rip),%rax
mov    (%rax),%edi
lea    0xed9(%rip),%rsi
mov    $0x0,%al
call   1030 <fprintf@plt>
mov    0x2d9f(%rip),%rax
mov    (%rax),%edi
lea    0xeec(%rip),%rsi
mov    $0x0,%al
call   1030 <fprintf@plt>
mov    0x2d88(%rip),%rax
mov    (%rax),%edi
lea    0xf08(%rip),%rsi
mov    $0x0,%al
call   1030 <fprintf@plt>
mov    0x2d71(%rip),%rax
mov    (%rax),%edi
lea    0xf1d(%rip),%rsi
mov    $0x0,%al
call   1030 <fprintf@plt>
mov    0x2d5a(%rip),%rax
mov    (%rax),%edi
lea    0xf33(%rip),%rsi
mov    $0x0,%al
call   1030 <fprintf@plt>
mov    0x2d43(%rip),%rax
mov    (%rax),%edi
lea    0xf55(%rip),%rsi
mov    $0x0,%al
call   1030 <fprintf@plt>
mov    0x2d2c(%rip),%rax
mov    (%rax),%edi
lea    0xf75(%rip),%rsi
mov    $0x0,%al
call   1030 <fprintf@plt>
mov    0x2d15(%rip),%rax
mov    (%rax),%edi
lea    0xf98(%rip),%rsi
mov    $0x0,%al
call   1030 <fprintf@plt>
mov    0x2cfe(%rip),%rax
mov    (%rax),%edi
lea    0xfb2(%rip),%rsi
mov    $0x0,%al
call   1030 <fprintf@plt>
mov    0x2ce7(%rip),%rax
mov    (%rax),%edi
lea    0xfc1(%rip),%rsi
mov    $0x0,%al
call   1030 <fprintf@plt>
mov    0x2cd0(%rip),%rax
mov    (%rax),%edi
lea    0xfe4(%rip),%rsi
mov    $0x0,%al
call   1030 <fprintf@plt>
mov    0x2cb9(%rip),%rax
mov    (%rax),%edi
lea    0xff1(%rip),%rsi
mov    $0x0,%al
call   1030 <fprintf@plt>
mov    0x2ca2(%rip),%rax
mov    (%rax),%edi
lea    0x1010(%rip),%rsi
mov    $0x0,%al
call   1030 <fprintf@plt>
mov    0x2c8b(%rip),%rax
mov    (%rax),%edi
lea    0x1017(%rip),%rsi
mov    $0x0,%al
call   1030 <fprintf@plt>
mov    0x2c74(%rip),%rax
mov    (%rax),%edi
lea    0x1033(%rip),%rsi
mov    $0x0,%al
call   1030 <fprintf@plt>
mov    0x2c5d(%rip),%rax
mov    (%rax),%edi
lea    0x1042(%rip),%rsi
mov    $0x0,%al
call   1030 <fprintf@plt>
mov    0x2c46(%rip),%rax
mov    (%rax),%edi
lea    0x105b(%rip),%rsi
mov    $0x0,%al
call   1030 <fprintf@plt>
mov    0x2c2f(%rip),%rax
mov    (%rax),%edi
lea    0x1063(%rip),%rsi
mov    $0x0,%al
call   1030 <fprintf@plt>
mov    0x2c18(%rip),%rax
mov    (%rax),%edi
lea    0x1081(%rip),%rsi
mov    $0x0,%al
call   1030 <fprintf@plt>
mov    0x2c01(%rip),%rax
mov    (%rax),%edi
lea    0x1089(%rip),%rsi
mov    $0x0,%al
call   1030 <fprintf@plt>
mov    0x2bea(%rip),%rax
mov    (%rax),%edi
lea    0x10a8(%rip),%rsi
mov    $0x0,%al
call   1030 <fprintf@plt>
mov    0x2bd3(%rip),%rax
mov    (%rax),%edi
lea    0x10c3(%rip),%rsi
mov    $0x0,%al
call   1030 <fprintf@plt>
mov    0x2bbc(%rip),%rax
mov    (%rax),%edi
lea    0x10ca(%rip),%rsi
mov    $0x0,%al
call   1030 <fprintf@plt>
mov    0x2ba5(%rip),%rax
mov    (%rax),%edi
lea    0x10d0(%rip),%rsi
mov    $0x0,%al
call   1030 <fprintf@plt>
mov    0x2b8e(%rip),%rax
mov    (%rax),%edi
lea    0x10da(%rip),%rsi
mov    $0x0,%al
call   1030 <fprintf@plt>
mov    -0x4(%rbp),%ecx
xor    %edi,%edi
mov    $0x1,%eax
cmp    $0x0,%ecx
cmovge %eax,%edi
call   1040 <exit@plt>

x86 assembly (clang, -O2):
<check_it>:
push   %r14
push   %rbx
push   %rax
mov    %rsi,%rcx
mov    %edi,%ebx
test   %edi,%edi
js     1145 <check_it+0x25>
mov    %rdx,%rax
mov    (%rdx),%rdx
test   %rdx,%rdx
jne    1166 <check_it+0x46>
mov    %rcx,(%rax)
mov    %ebx,%eax
add    $0x8,%rsp
pop    %rbx
pop    %r14
ret
cmp    $0xfffffffe,%ebx
jne    117d <check_it+0x5d>
mov    0x2e8f(%rip),%rax
mov    (%rax),%edi
lea    0xee0(%rip),%rsi
mov    %rcx,%rdx
xor    %eax,%eax
call   1030 <fprintf@plt>
jmp    117d <check_it+0x5d>
mov    0x2e73(%rip),%rax
mov    (%rax),%edi
lea    0xe8a(%rip),%rsi
xor    %eax,%eax
call   1030 <fprintf@plt>
mov    0x2e5c(%rip),%r14
mov    (%r14),%edi
lea    0xed5(%rip),%rsi
xor    %eax,%eax
call   1030 <fprintf@plt>
mov    (%r14),%edi
lea    0xee9(%rip),%rsi
xor    %eax,%eax
call   1030 <fprintf@plt>
mov    (%r14),%edi
lea    0xef5(%rip),%rsi
xor    %eax,%eax
call   1030 <fprintf@plt>
mov    (%r14),%edi
lea    0xf03(%rip),%rsi
xor    %eax,%eax
call   1030 <fprintf@plt>
mov    (%r14),%edi
lea    0xf14(%rip),%rsi
xor    %eax,%eax
call   1030 <fprintf@plt>
mov    (%r14),%edi
lea    0xf29(%rip),%rsi
xor    %eax,%eax
call   1030 <fprintf@plt>
mov    (%r14),%edi
lea    0xf42(%rip),%rsi
xor    %eax,%eax
call   1030 <fprintf@plt>
mov    (%r14),%edi
lea    0xf64(%rip),%rsi
xor    %eax,%eax
call   1030 <fprintf@plt>
mov    (%r14),%edi
lea    0xf7f(%rip),%rsi
xor    %eax,%eax
call   1030 <fprintf@plt>
mov    (%r14),%edi
lea    0xf9b(%rip),%rsi
xor    %eax,%eax
call   1030 <fprintf@plt>
mov    (%r14),%edi
lea    0xfc3(%rip),%rsi
xor    %eax,%eax
call   1030 <fprintf@plt>
mov    (%r14),%edi
lea    0xfe9(%rip),%rsi
xor    %eax,%eax
call   1030 <fprintf@plt>
mov    (%r14),%edi
lea    0x1012(%rip),%rsi
xor    %eax,%eax
call   1030 <fprintf@plt>
mov    (%r14),%edi
lea    0x1032(%rip),%rsi
xor    %eax,%eax
call   1030 <fprintf@plt>
mov    (%r14),%edi
lea    0x1047(%rip),%rsi
xor    %eax,%eax
call   1030 <fprintf@plt>
mov    (%r14),%edi
lea    0x1070(%rip),%rsi
xor    %eax,%eax
call   1030 <fprintf@plt>
mov    (%r14),%edi
lea    0x1083(%rip),%rsi
xor    %eax,%eax
call   1030 <fprintf@plt>
mov    (%r14),%edi
lea    0x10a8(%rip),%rsi
xor    %eax,%eax
call   1030 <fprintf@plt>
mov    (%r14),%edi
lea    0x10b5(%rip),%rsi
xor    %eax,%eax
call   1030 <fprintf@plt>
mov    (%r14),%edi
lea    0x10d7(%rip),%rsi
xor    %eax,%eax
call   1030 <fprintf@plt>
mov    (%r14),%edi
lea    0x10ec(%rip),%rsi
xor    %eax,%eax
call   1030 <fprintf@plt>
mov    (%r14),%edi
lea    0x110b(%rip),%rsi
xor    %eax,%eax
call   1030 <fprintf@plt>
mov    (%r14),%edi
lea    0x1119(%rip),%rsi
xor    %eax,%eax
call   1030 <fprintf@plt>
mov    (%r14),%edi
lea    0x113d(%rip),%rsi
xor    %eax,%eax
call   1030 <fprintf@plt>
mov    (%r14),%edi
lea    0x114b(%rip),%rsi
xor    %eax,%eax
call   1030 <fprintf@plt>
mov    (%r14),%edi
lea    0x1170(%rip),%rsi
xor    %eax,%eax
call   1030 <fprintf@plt>
mov    (%r14),%edi
lea    0x1191(%rip),%rsi
xor    %eax,%eax
call   1030 <fprintf@plt>
mov    (%r14),%edi
lea    0x119e(%rip),%rsi
xor    %eax,%eax
call   1030 <fprintf@plt>
mov    (%r14),%edi
lea    0x11aa(%rip),%rsi
xor    %eax,%eax
call   1030 <fprintf@plt>
mov    (%r14),%edi
lea    0x11ba(%rip),%rsi
xor    %eax,%eax
call   1030 <fprintf@plt>
not    %ebx
shr    $0x1f,%ebx
mov    %ebx,%edi
call   1040 <exit@plt>

LLVM IR (-O0):
@stderr = global i32 0
@.str = [58 x i8] c"*ERROR* Conflicting command line keywords '%s' and '%s'!\0A\00"
@.str.1 = [41 x i8] c"*ERROR* Bad command line argument '%s'!\0A\00"
@.str.2 = [37 x i8] c"\0AUsage: acdc [options] [(path)name]\0A\00"
@.str.3 = [29 x i8] c"\0AWhere allowed options are:\0A\00"
@.str.4 = [31 x i8] c" -plain (abbreviable to -p)\0A\00"
@.str.5 = [34 x i8] c" Do not encrypt game text.\0A\00"
@.str.6 = [38 x i8] c" -outdir <dir> (abbreviable to -o)\0A\00"
@.str.7 = [42 x i8] c" Place derived C sources in <dir>.\0A\00"
@.str.8 = [51 x i8] c" -preload (abbreviable to -pr; default keyword)\0A\00"
@.str.9 = [44 x i8] c" Do not create a separate text file.\0A\00"
@.str.10 = [45 x i8] c" -file-page [<npage>] (abbrviable to -fp)\0A\00"
@.str.11 = [57 x i8] c" Create a separate .dat file of text messages and\0A\00"
@.str.12 = [55 x i8] c" use an internal paging mechanism. The optional\0A\00"
@.str.13 = [58 x i8] c" <npage> argument defaults to 32 and specifies the\0A\00"
@.str.14 = [49 x i8] c" number of 1KB buffers to use for paging.\0A\00"
@.str.15 = [38 x i8] c" -file-memory (abbreviable to -fm)\0A\00"
@.str.16 = [58 x i8] c" Read all of the text file into memory on startup.\0A\00"
@.str.17 = [36 x i8] c" -file-read (abbreviable to -fr)\0A\00"
@.str.18 = [54 x i8] c" Read all text as required from the text file.\0A\00"
@.str.19 = [30 x i8] c" -xref (abbreviable to -x)\0A\00"
@.str.20 = [51 x i8] c" Generate the .xrf cross-reference listing.\0A\00"
@.str.21 = [38 x i8] c" -no-warnings (abbreviable to -nw)\0A\00"
@.str.22 = [48 x i8] c" Suppress warnings about unused symbols.\0A\00"
@.str.23 = [31 x i8] c" -quiet (abbreviable to -q)\0A\00"
@.str.24 = [53 x i8] c" Suppress most of the standard info messages.\0A\00"
@.str.25 = [31 x i8] c" -debug (abbreviable to -d)\0A\00"
@.str.26 = [54 x i8] c" Add A-code source as comments in C source and\0A\00"
@.str.27 = [50 x i8] c" announce entry to distinct A-code chunks.\0A\00"
@.str.28 = [30 x i8] c" -help (abbreviable to -h)\0A\00"
@.str.29 = [29 x i8] c" Print this message.\0A\0A\00"
@.str.30 = [33 x i8] c" -version (abbreviable to -v)\0A\00"
@.str.31 = [37 x i8] c" Show version number and exit\0A\00"
define i32 @check_it(i32 %0, i8* %1, i8** %2) {
%4 = alloca i32
%5 = alloca i8*
%6 = alloca i8**
store i32 %0, i32* %4
store i8* %1, i8** %5
store i8** %2, i8*** %6
%7 = load i32, i32* %4
%8 = icmp sge i32 %7, 0
br i1 %8, label %9, label %24
9: ; preds = %3
%10 = load i8**, i8*** %6
%11 = load i8*, i8** %10
%12 = icmp eq i8* %11, null
br i1 %12, label %13, label %17
13: ; preds = %9
%14 = load i8*, i8** %5
%15 = load i8**, i8*** %6
store i8* %14, i8** %15
%16 = load i32, i32* %4
ret i32 %16
17: ; preds = %9
%18 = load i32, i32* @stderr
%19 = load i8**, i8*** %6
%20 = load i8*, i8** %19
%21 = load i8*, i8** %5
%22 = call i32 (i32, i8*, ...) @fprintf(i32 %18, i8* getelementptr inbounds ([58 x i8], [58 x i8]* @.str, i64 0, i64 0), i8* %20, i8* %21)
br label %23
23: ; preds = %17
br label %32
24: ; preds = %3
%25 = load i32, i32* %4
%26 = icmp eq i32 %25, -2
br i1 %26, label %27, label %31
27: ; preds = %24
%28 = load i32, i32* @stderr
%29 = load i8*, i8** %5
%30 = call i32 (i32, i8*, ...) @fprintf(i32 %28, i8* getelementptr inbounds ([41 x i8], [41 x i8]* @.str.1, i64 0, i64 0), i8* %29)
br label %31
31: ; preds = %27, %24
br label %32
32: ; preds = %31, %23
%33 = load i32, i32* @stderr
%34 = call i32 (i32, i8*, ...) @fprintf(i32 %33, i8* getelementptr inbounds ([37 x i8], [37 x i8]* @.str.2, i64 0, i64 0))
%35 = load i32, i32* @stderr
%36 = call i32 (i32, i8*, ...) @fprintf(i32 %35, i8* getelementptr inbounds ([29 x i8], [29 x i8]* @.str.3, i64 0, i64 0))
%37 = load i32, i32* @stderr
%38 = call i32 (i32, i8*, ...) @fprintf(i32 %37, i8* getelementptr inbounds ([31 x i8], [31 x i8]* @.str.4, i64 0, i64 0))
%39 = load i32, i32* @stderr
%40 = call i32 (i32, i8*, ...) @fprintf(i32 %39, i8* getelementptr inbounds ([34 x i8], [34 x i8]* @.str.5, i64 0, i64 0))
%41 = load i32, i32* @stderr
%42 = call i32 (i32, i8*, ...) @fprintf(i32 %41, i8* getelementptr inbounds ([38 x i8], [38 x i8]* @.str.6, i64 0, i64 0))
%43 = load i32, i32* @stderr
%44 = call i32 (i32, i8*, ...) @fprintf(i32 %43, i8* getelementptr inbounds ([42 x i8], [42 x i8]* @.str.7, i64 0, i64 0))
%45 = load i32, i32* @stderr
%46 = call i32 (i32, i8*, ...) @fprintf(i32 %45, i8* getelementptr inbounds ([51 x i8], [51 x i8]* @.str.8, i64 0, i64 0))
%47 = load i32, i32* @stderr
%48 = call i32 (i32, i8*, ...) @fprintf(i32 %47, i8* getelementptr inbounds ([44 x i8], [44 x i8]* @.str.9, i64 0, i64 0))
%49 = load i32, i32* @stderr
%50 = call i32 (i32, i8*, ...) @fprintf(i32 %49, i8* getelementptr inbounds ([45 x i8], [45 x i8]* @.str.10, i64 0, i64 0))
%51 = load i32, i32* @stderr
%52 = call i32 (i32, i8*, ...) @fprintf(i32 %51, i8* getelementptr inbounds ([57 x i8], [57 x i8]* @.str.11, i64 0, i64 0))
%53 = load i32, i32* @stderr
%54 = call i32 (i32, i8*, ...) @fprintf(i32 %53, i8* getelementptr inbounds ([55 x i8], [55 x i8]* @.str.12, i64 0, i64 0))
%55 = load i32, i32* @stderr
%56 = call i32 (i32, i8*, ...) @fprintf(i32 %55, i8* getelementptr inbounds ([58 x i8], [58 x i8]* @.str.13, i64 0, i64 0))
%57 = load i32, i32* @stderr
%58 = call i32 (i32, i8*, ...) @fprintf(i32 %57, i8* getelementptr inbounds ([49 x i8], [49 x i8]* @.str.14, i64 0, i64 0))
%59 = load i32, i32* @stderr
%60 = call i32 (i32, i8*, ...) @fprintf(i32 %59, i8* getelementptr inbounds ([38 x i8], [38 x i8]* @.str.15, i64 0, i64 0))
%61 = load i32, i32* @stderr
%62 = call i32 (i32, i8*, ...) @fprintf(i32 %61, i8* getelementptr inbounds ([58 x i8], [58 x i8]* @.str.16, i64 0, i64 0))
%63 = load i32, i32* @stderr
%64 = call i32 (i32, i8*, ...) @fprintf(i32 %63, i8* getelementptr inbounds ([36 x i8], [36 x i8]* @.str.17, i64 0, i64 0))
%65 = load i32, i32* @stderr
%66 = call i32 (i32, i8*, ...) @fprintf(i32 %65, i8* getelementptr inbounds ([54 x i8], [54 x i8]* @.str.18, i64 0, i64 0))
%67 = load i32, i32* @stderr
%68 = call i32 (i32, i8*, ...) @fprintf(i32 %67, i8* getelementptr inbounds ([30 x i8], [30 x i8]* @.str.19, i64 0, i64 0))
%69 = load i32, i32* @stderr
%70 = call i32 (i32, i8*, ...) @fprintf(i32 %69, i8* getelementptr inbounds ([51 x i8], [51 x i8]* @.str.20, i64 0, i64 0))
%71 = load i32, i32* @stderr
%72 = call i32 (i32, i8*, ...) @fprintf(i32 %71, i8* getelementptr inbounds ([38 x i8], [38 x i8]* @.str.21, i64 0, i64 0))
%73 = load i32, i32* @stderr
%74 = call i32 (i32, i8*, ...) @fprintf(i32 %73, i8* getelementptr inbounds ([48 x i8], [48 x i8]* @.str.22, i64 0, i64 0))
%75 = load i32, i32* @stderr
%76 = call i32 (i32, i8*, ...) @fprintf(i32 %75, i8* getelementptr inbounds ([31 x i8], [31 x i8]* @.str.23, i64 0, i64 0))
%77 = load i32, i32* @stderr
%78 = call i32 (i32, i8*, ...) @fprintf(i32 %77, i8* getelementptr inbounds ([53 x i8], [53 x i8]* @.str.24, i64 0, i64 0))
%79 = load i32, i32* @stderr
%80 = call i32 (i32, i8*, ...) @fprintf(i32 %79, i8* getelementptr inbounds ([31 x i8], [31 x i8]* @.str.25, i64 0, i64 0))
%81 = load i32, i32* @stderr
%82 = call i32 (i32, i8*, ...) @fprintf(i32 %81, i8* getelementptr inbounds ([54 x i8], [54 x i8]* @.str.26, i64 0, i64 0))
%83 = load i32, i32* @stderr
%84 = call i32 (i32, i8*, ...) @fprintf(i32 %83, i8* getelementptr inbounds ([50 x i8], [50 x i8]* @.str.27, i64 0, i64 0))
%85 = load i32, i32* @stderr
%86 = call i32 (i32, i8*, ...) @fprintf(i32 %85, i8* getelementptr inbounds ([30 x i8], [30 x i8]* @.str.28, i64 0, i64 0))
%87 = load i32, i32* @stderr
%88 = call i32 (i32, i8*, ...) @fprintf(i32 %87, i8* getelementptr inbounds ([29 x i8], [29 x i8]* @.str.29, i64 0, i64 0))
%89 = load i32, i32* @stderr
%90 = call i32 (i32, i8*, ...) @fprintf(i32 %89, i8* getelementptr inbounds ([33 x i8], [33 x i8]* @.str.30, i64 0, i64 0))
%91 = load i32, i32* @stderr
%92 = call i32 (i32, i8*, ...) @fprintf(i32 %91, i8* getelementptr inbounds ([37 x i8], [37 x i8]* @.str.31, i64 0, i64 0))
%93 = load i32, i32* %4
%94 = icmp sge i32 %93, 0
%95 = zext i1 %94 to i64
%96 = select i1 %94, i32 1, i32 0
%97 = call i32 @exit(i32 %96)
unreachable
}

LLVM IR (-O2):
@stderr = global i32 0
@.str = [58 x i8] c"*ERROR* Conflicting command line keywords '%s' and '%s'!\0A\00"
@.str.1 = [41 x i8] c"*ERROR* Bad command line argument '%s'!\0A\00"
@.str.2 = [37 x i8] c"\0AUsage: acdc [options] [(path)name]\0A\00"
@.str.3 = [29 x i8] c"\0AWhere allowed options are:\0A\00"
@.str.4 = [31 x i8] c" -plain (abbreviable to -p)\0A\00"
@.str.5 = [34 x i8] c" Do not encrypt game text.\0A\00"
@.str.6 = [38 x i8] c" -outdir <dir> (abbreviable to -o)\0A\00"
@.str.7 = [42 x i8] c" Place derived C sources in <dir>.\0A\00"
@.str.8 = [51 x i8] c" -preload (abbreviable to -pr; default keyword)\0A\00"
@.str.9 = [44 x i8] c" Do not create a separate text file.\0A\00"
@.str.10 = [45 x i8] c" -file-page [<npage>] (abbrviable to -fp)\0A\00"
@.str.11 = [57 x i8] c" Create a separate .dat file of text messages and\0A\00"
@.str.12 = [55 x i8] c" use an internal paging mechanism. The optional\0A\00"
@.str.13 = [58 x i8] c" <npage> argument defaults to 32 and specifies the\0A\00"
@.str.14 = [49 x i8] c" number of 1KB buffers to use for paging.\0A\00"
@.str.15 = [38 x i8] c" -file-memory (abbreviable to -fm)\0A\00"
@.str.16 = [58 x i8] c" Read all of the text file into memory on startup.\0A\00"
@.str.17 = [36 x i8] c" -file-read (abbreviable to -fr)\0A\00"
@.str.18 = [54 x i8] c" Read all text as required from the text file.\0A\00"
@.str.19 = [30 x i8] c" -xref (abbreviable to -x)\0A\00"
@.str.20 = [51 x i8] c" Generate the .xrf cross-reference listing.\0A\00"
@.str.21 = [38 x i8] c" -no-warnings (abbreviable to -nw)\0A\00"
@.str.22 = [48 x i8] c" Suppress warnings about unused symbols.\0A\00"
@.str.23 = [31 x i8] c" -quiet (abbreviable to -q)\0A\00"
@.str.24 = [53 x i8] c" Suppress most of the standard info messages.\0A\00"
@.str.25 = [31 x i8] c" -debug (abbreviable to -d)\0A\00"
@.str.26 = [54 x i8] c" Add A-code source as comments in C source and\0A\00"
@.str.27 = [50 x i8] c" announce entry to distinct A-code chunks.\0A\00"
@.str.28 = [30 x i8] c" -help (abbreviable to -h)\0A\00"
@.str.29 = [29 x i8] c" Print this message.\0A\0A\00"
@.str.30 = [33 x i8] c" -version (abbreviable to -v)\0A\00"
@.str.31 = [37 x i8] c" Show version number and exit\0A\00"
define i32 @check_it(i32 returned %0, i8* %1, i8** nocapture %2) {
%4 = icmp sgt i32 %0, -1
br i1 %4, label %5, label %12
5: ; preds = %3
%6 = load i8*, i8** %2
%7 = icmp eq i8* %6, null
br i1 %7, label %8, label %9
8: ; preds = %5
store i8* %1, i8** %2
ret i32 %0
9: ; preds = %5
%10 = load i32, i32* @stderr
%11 = tail call i32 (i32, i8*, ...) @fprintf(i32 %10, i8* getelementptr inbounds ([58 x i8], [58 x i8]* @.str, i64 0, i64 0), i8* %6, i8* %1)
br label %17
12: ; preds = %3
%13 = icmp eq i32 %0, -2
br i1 %13, label %14, label %17
14: ; preds = %12
%15 = load i32, i32* @stderr
%16 = tail call i32 (i32, i8*, ...) @fprintf(i32 %15, i8* getelementptr inbounds ([41 x i8], [41 x i8]* @.str.1, i64 0, i64 0), i8* %1)
br label %17
17: ; preds = %12, %14, %9
%18 = load i32, i32* @stderr
%19 = tail call i32 (i32, i8*, ...) @fprintf(i32 %18, i8* getelementptr inbounds ([37 x i8], [37 x i8]* @.str.2, i64 0, i64 0))
%20 = load i32, i32* @stderr
%21 = tail call i32 (i32, i8*, ...) @fprintf(i32 %20, i8* getelementptr inbounds ([29 x i8], [29 x i8]* @.str.3, i64 0, i64 0))
%22 = load i32, i32* @stderr
%23 = tail call i32 (i32, i8*, ...) @fprintf(i32 %22, i8* getelementptr inbounds ([31 x i8], [31 x i8]* @.str.4, i64 0, i64 0))
%24 = load i32, i32* @stderr
%25 = tail call i32 (i32, i8*, ...) @fprintf(i32 %24, i8* getelementptr inbounds ([34 x i8], [34 x i8]* @.str.5, i64 0, i64 0))
%26 = load i32, i32* @stderr
%27 = tail call i32 (i32, i8*, ...) @fprintf(i32 %26, i8* getelementptr inbounds ([38 x i8], [38 x i8]* @.str.6, i64 0, i64 0))
%28 = load i32, i32* @stderr
%29 = tail call i32 (i32, i8*, ...) @fprintf(i32 %28, i8* getelementptr inbounds ([42 x i8], [42 x i8]* @.str.7, i64 0, i64 0))
%30 = load i32, i32* @stderr
%31 = tail call i32 (i32, i8*, ...) @fprintf(i32 %30, i8* getelementptr inbounds ([51 x i8], [51 x i8]* @.str.8, i64 0, i64 0))
%32 = load i32, i32* @stderr
%33 = tail call i32 (i32, i8*, ...) @fprintf(i32 %32, i8* getelementptr inbounds ([44 x i8], [44 x i8]* @.str.9, i64 0, i64 0))
%34 = load i32, i32* @stderr
%35 = tail call i32 (i32, i8*, ...) @fprintf(i32 %34, i8* getelementptr inbounds ([45 x i8], [45 x i8]* @.str.10, i64 0, i64 0))
%36 = load i32, i32* @stderr
%37 = tail call i32 (i32, i8*, ...) @fprintf(i32 %36, i8* getelementptr inbounds ([57 x i8], [57 x i8]* @.str.11, i64 0, i64 0))
%38 = load i32, i32* @stderr
%39 = tail call i32 (i32, i8*, ...) @fprintf(i32 %38, i8* getelementptr inbounds ([55 x i8], [55 x i8]* @.str.12, i64 0, i64 0))
%40 = load i32, i32* @stderr
%41 = tail call i32 (i32, i8*, ...) @fprintf(i32 %40, i8* getelementptr inbounds ([58 x i8], [58 x i8]* @.str.13, i64 0, i64 0))
%42 = load i32, i32* @stderr
%43 = tail call i32 (i32, i8*, ...) @fprintf(i32 %42, i8* getelementptr inbounds ([49 x i8], [49 x i8]* @.str.14, i64 0, i64 0))
%44 = load i32, i32* @stderr
%45 = tail call i32 (i32, i8*, ...) @fprintf(i32 %44, i8* getelementptr inbounds ([38 x i8], [38 x i8]* @.str.15, i64 0, i64 0))
%46 = load i32, i32* @stderr
%47 = tail call i32 (i32, i8*, ...) @fprintf(i32 %46, i8* getelementptr inbounds ([58 x i8], [58 x i8]* @.str.16, i64 0, i64 0))
%48 = load i32, i32* @stderr
%49 = tail call i32 (i32, i8*, ...) @fprintf(i32 %48, i8* getelementptr inbounds ([36 x i8], [36 x i8]* @.str.17, i64 0, i64 0))
%50 = load i32, i32* @stderr
%51 = tail call i32 (i32, i8*, ...) @fprintf(i32 %50, i8* getelementptr inbounds ([54 x i8], [54 x i8]* @.str.18, i64 0, i64 0))
%52 = load i32, i32* @stderr
%53 = tail call i32 (i32, i8*, ...) @fprintf(i32 %52, i8* getelementptr inbounds ([30 x i8], [30 x i8]* @.str.19, i64 0, i64 0))
%54 = load i32, i32* @stderr
%55 = tail call i32 (i32, i8*, ...) @fprintf(i32 %54, i8* getelementptr inbounds ([51 x i8], [51 x i8]* @.str.20, i64 0, i64 0))
%56 = load i32, i32* @stderr
%57 = tail call i32 (i32, i8*, ...) @fprintf(i32 %56, i8* getelementptr inbounds ([38 x i8], [38 x i8]* @.str.21, i64 0, i64 0))
%58 = load i32, i32* @stderr
%59 = tail call i32 (i32, i8*, ...) @fprintf(i32 %58, i8* getelementptr inbounds ([48 x i8], [48 x i8]* @.str.22, i64 0, i64 0))
%60 = load i32, i32* @stderr
%61 = tail call i32 (i32, i8*, ...) @fprintf(i32 %60, i8* getelementptr inbounds ([31 x i8], [31 x i8]* @.str.23, i64 0, i64 0))
%62 = load i32, i32* @stderr
%63 = tail call i32 (i32, i8*, ...) @fprintf(i32 %62, i8* getelementptr inbounds ([53 x i8], [53 x i8]* @.str.24, i64 0, i64 0))
%64 = load i32, i32* @stderr
%65 = tail call i32 (i32, i8*, ...) @fprintf(i32 %64, i8* getelementptr inbounds ([31 x i8], [31 x i8]* @.str.25, i64 0, i64 0))
%66 = load i32, i32* @stderr
%67 = tail call i32 (i32, i8*, ...) @fprintf(i32 %66, i8* getelementptr inbounds ([54 x i8], [54 x i8]* @.str.26, i64 0, i64 0))
%68 = load i32, i32* @stderr
%69 = tail call i32 (i32, i8*, ...) @fprintf(i32 %68, i8* getelementptr inbounds ([50 x i8], [50 x i8]* @.str.27, i64 0, i64 0))
%70 = load i32, i32* @stderr
%71 = tail call i32 (i32, i8*, ...) @fprintf(i32 %70, i8* getelementptr inbounds ([30 x i8], [30 x i8]* @.str.28, i64 0, i64 0))
%72 = load i32, i32* @stderr
%73 = tail call i32 (i32, i8*, ...) @fprintf(i32 %72, i8* getelementptr inbounds ([29 x i8], [29 x i8]* @.str.29, i64 0, i64 0))
%74 = load i32, i32* @stderr
%75 = tail call i32 (i32, i8*, ...) @fprintf(i32 %74, i8* getelementptr inbounds ([33 x i8], [33 x i8]* @.str.30, i64 0, i64 0))
%76 = load i32, i32* @stderr
%77 = tail call i32 (i32, i8*, ...) @fprintf(i32 %76, i8* getelementptr inbounds ([37 x i8], [37 x i8]* @.str.31, i64 0, i64 0))
%78 = xor i32 %0, -1
%79 = lshr i32 %78, 31
%80 = tail call i32 @exit(i32 %79)
unreachable
}