#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 const *);
int /*<<< orphan*/ stderr;
void version(void) {
  const char v[] =
      "egg version 3\nCopyright (c) 2014 Brian Callahan "
      "<bcallah@openbsd.org>\n\nPermission to use, copy, modify, and "
      "distribute this software for any\npurpose with or without fee is hereby "
      "granted, provided that the above\ncopyright notice and this permission "
      "notice appear in all copies.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND "
      "THE AUTHOR DISCLAIMS ALL WARRANTIES\nWITH REGARD TO THIS SOFTWARE "
      "INCLUDING ALL IMPLIED WARRANTIES OF\nMERCHANTABILITY AND FITNESS. IN NO "
      "EVENT SHALL THE AUTHOR BE LIABLE FOR\nANY SPECIAL, DIRECT, INDIRECT, OR "
      "CONSEQUENTIAL DAMAGES OR ANY DAMAGES\nWHATSOEVER RESULTING FROM LOSS OF "
      "USE, DATA OR PROFITS, WHETHER IN AN\nACTION OF CONTRACT, NEGLIGENCE OR "
      "OTHER TORTIOUS ACTION, ARISING OUT OF\nOR IN CONNECTION WITH THE USE OR "
      "PERFORMANCE OF THIS SOFTWARE.\n";
  (void)fprintf(stderr, v);
  exit(1);
}


x86 assembly (clang, -O0):
<version>:
push   %rbp
mov    %rsp,%rbp
sub    $0x300,%rsp
lea    -0x300(%rbp),%rdi
lea    0xeb7(%rip),%rsi
mov    $0x2fe,%edx
call   1040 <memcpy@plt>
mov    0x2e86(%rip),%rax
mov    (%rax),%edi
lea    -0x300(%rbp),%rsi
call   1030 <fprintf@plt>
mov    $0x1,%edi
call   1050 <exit@plt>

x86 assembly (clang, -O2):
<version>:
push   %rbx
sub    $0x300,%rsp
lea    0xec1(%rip),%rsi
mov    %rsp,%rbx
mov    $0x2fe,%edx
mov    %rbx,%rdi
call   1040 <memcpy@plt>
mov    0x2e8a(%rip),%rax
mov    (%rax),%edi
mov    %rbx,%rsi
call   1030 <fprintf@plt>
mov    $0x1,%edi
call   1050 <exit@plt>

LLVM IR (-O0):
@__const.version.v = [766 x i8] c"egg version 3\0ACopyright (c) 2014 Brian Callahan <bcallah@openbsd.org>\0A\0APermission to use, copy, modify, and distribute this software for any\0Apurpose with or without fee is hereby granted, provided that the above\0Acopyright notice and this permission notice appear in all copies.\0A\0ATHE SOFTWARE IS PROVIDED \22AS IS\22 AND THE AUTHOR DISCLAIMS ALL WARRANTIES\0AWITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF\0AMERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR\0AANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES\0AWHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN\0AACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF\0AOR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\0A\00"
@stderr = global i32 0
define void @version() {
%1 = alloca [766 x i8]
%2 = bitcast [766 x i8]* %1 to i8*
%3 = load i32, i32* @stderr
%4 = getelementptr inbounds [766 x i8], [766 x i8]* %1, i64 0, i64 0
%5 = call i32 @fprintf(i32 %3, i8* %4)
%6 = call i32 @exit(i32 1)
unreachable
}

LLVM IR (-O2):
@__const.version.v = [766 x i8] c"egg version 3\0ACopyright (c) 2014 Brian Callahan <bcallah@openbsd.org>\0A\0APermission to use, copy, modify, and distribute this software for any\0Apurpose with or without fee is hereby granted, provided that the above\0Acopyright notice and this permission notice appear in all copies.\0A\0ATHE SOFTWARE IS PROVIDED \22AS IS\22 AND THE AUTHOR DISCLAIMS ALL WARRANTIES\0AWITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF\0AMERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR\0AANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES\0AWHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN\0AACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF\0AOR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\0A\00"
@stderr = global i32 0
define void @version() {
%1 = alloca [766 x i8]
%2 = getelementptr inbounds [766 x i8], [766 x i8]* %1, i64 0, i64 0
%3 = load i32, i32* @stderr
%4 = call i32 @fprintf(i32 %3, i8* %2)
%5 = call i32 @exit(i32 1)
unreachable
}