#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 */
char *strcopy(char *, char *);
char *init(char *op, int flags) {
  if (flags & (1L << 9))
    op = strcopy(
        op,
        "\n#if !defined(__PROTO__)\n#if defined(__STDC__) || "
        "defined(__cplusplus) || defined(_proto) || defined(c_plusplus)\n#if "
        "defined(__cplusplus)\n#define __MANGLE__	\"C\"\n#else\n#define "
        "__MANGLE__\n#endif\n#define __STDARG__\n#define __PROTO__(x)	"
        "x\n#define __OTORP__(x)\n#define __PARAM__(n,o)	n\n#if "
        "!defined(__STDC__) && !defined(__cplusplus)\n#if "
        "!defined(c_plusplus)\n#define const\n#endif\n#define signed\n#define "
        "void		int\n#define volatile\n#define __V_		"
        "char\n#else\n#define __V_		void\n#endif\n#else\n#define "
        "__PROTO__(x)	()\n#define __OTORP__(x)	x\n#define "
        "__PARAM__(n,o)	o\n#define __MANGLE__\n#define __V_		"
        "char\n#define const\n#define signed\n#define void		"
        "int\n#define volatile\n#endif\n#if defined(__cplusplus) || "
        "defined(c_plusplus)\n#define __VARARG__	...\n#else\n#define "
        "__VARARG__\n#endif\n#if defined(__STDARG__)\n#define "
        "__VA_START__(p,a)	va_start(p,a)\n#else\n#define "
        "__VA_START__(p,a)	va_start(p)\n#endif\n#endif\n");
  else
    op = strcopy(
        op, "\n#if !defined(__PROTO__)\n#include <prototyped.h>\n#endif\n");
  return (op);
}


x86 assembly (clang, -O0):
<init>:
push   %rbp
mov    %rsp,%rbp
sub    $0x10,%rsp
mov    %rdi,-0x8(%rbp)
mov    %esi,-0xc(%rbp)
movslq -0xc(%rbp),%rax
and    $0x200,%rax
cmp    $0x0,%rax
je     114c <init+0x3c>
mov    -0x8(%rbp),%rdi
lea    0xec2(%rip),%rsi
call   1030 <strcopy@plt>
mov    %rax,-0x8(%rbp)
jmp    1160 <init+0x50>
mov    -0x8(%rbp),%rdi
lea    0x1222(%rip),%rsi
call   1030 <strcopy@plt>
mov    %rax,-0x8(%rbp)
mov    -0x8(%rbp),%rax
add    $0x10,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<init>:
test   $0x200,%esi
lea    0x125c(%rip),%rax
lea    0xedc(%rip),%rsi
cmove  %rax,%rsi
jmp    1030 <strcopy@plt>

LLVM IR (-O0):
@.str = [889 x i8] c"\0A#if !defined(__PROTO__)\0A#if defined(__STDC__) || defined(__cplusplus) || defined(_proto) || defined(c_plusplus)\0A#if defined(__cplusplus)\0A#define __MANGLE__\09\22C\22\0A#else\0A#define __MANGLE__\0A#endif\0A#define __STDARG__\0A#define __PROTO__(x)\09x\0A#define __OTORP__(x)\0A#define __PARAM__(n,o)\09n\0A#if !defined(__STDC__) && !defined(__cplusplus)\0A#if !defined(c_plusplus)\0A#define const\0A#endif\0A#define signed\0A#define void\09\09int\0A#define volatile\0A#define __V_\09\09char\0A#else\0A#define __V_\09\09void\0A#endif\0A#else\0A#define __PROTO__(x)\09()\0A#define __OTORP__(x)\09x\0A#define __PARAM__(n,o)\09o\0A#define __MANGLE__\0A#define __V_\09\09char\0A#define const\0A#define signed\0A#define void\09\09int\0A#define volatile\0A#endif\0A#if defined(__cplusplus) || defined(c_plusplus)\0A#define __VARARG__\09...\0A#else\0A#define __VARARG__\0A#endif\0A#if defined(__STDARG__)\0A#define __VA_START__(p,a)\09va_start(p,a)\0A#else\0A#define __VA_START__(p,a)\09va_start(p)\0A#endif\0A#endif\0A\00"
@.str.1 = [57 x i8] c"\0A#if !defined(__PROTO__)\0A#include <prototyped.h>\0A#endif\0A\00"
define i8* @init(i8* %0, i32 %1) {
%3 = alloca i8*
%4 = alloca i32
store i8* %0, i8** %3
store i32 %1, i32* %4
%5 = load i32, i32* %4
%6 = sext i32 %5 to i64
%7 = and i64 %6, 512
%8 = icmp ne i64 %7, 0
br i1 %8, label %9, label %12
9: ; preds = %2
%10 = load i8*, i8** %3
%11 = call i8* @strcopy(i8* %10, i8* getelementptr inbounds ([889 x i8], [889 x i8]* @.str, i64 0, i64 0))
store i8* %11, i8** %3
br label %15
12: ; preds = %2
%13 = load i8*, i8** %3
%14 = call i8* @strcopy(i8* %13, i8* getelementptr inbounds ([57 x i8], [57 x i8]* @.str.1, i64 0, i64 0))
store i8* %14, i8** %3
br label %15
15: ; preds = %12, %9
%16 = load i8*, i8** %3
ret i8* %16
}

LLVM IR (-O2):
@.str = [889 x i8] c"\0A#if !defined(__PROTO__)\0A#if defined(__STDC__) || defined(__cplusplus) || defined(_proto) || defined(c_plusplus)\0A#if defined(__cplusplus)\0A#define __MANGLE__\09\22C\22\0A#else\0A#define __MANGLE__\0A#endif\0A#define __STDARG__\0A#define __PROTO__(x)\09x\0A#define __OTORP__(x)\0A#define __PARAM__(n,o)\09n\0A#if !defined(__STDC__) && !defined(__cplusplus)\0A#if !defined(c_plusplus)\0A#define const\0A#endif\0A#define signed\0A#define void\09\09int\0A#define volatile\0A#define __V_\09\09char\0A#else\0A#define __V_\09\09void\0A#endif\0A#else\0A#define __PROTO__(x)\09()\0A#define __OTORP__(x)\09x\0A#define __PARAM__(n,o)\09o\0A#define __MANGLE__\0A#define __V_\09\09char\0A#define const\0A#define signed\0A#define void\09\09int\0A#define volatile\0A#endif\0A#if defined(__cplusplus) || defined(c_plusplus)\0A#define __VARARG__\09...\0A#else\0A#define __VARARG__\0A#endif\0A#if defined(__STDARG__)\0A#define __VA_START__(p,a)\09va_start(p,a)\0A#else\0A#define __VA_START__(p,a)\09va_start(p)\0A#endif\0A#endif\0A\00"
@.str.1 = [57 x i8] c"\0A#if !defined(__PROTO__)\0A#include <prototyped.h>\0A#endif\0A\00"
define i8* @init(i8* %0, i32 %1) {
%3 = and i32 %1, 512
%4 = icmp eq i32 %3, 0
%5 = select i1 %4, i8* getelementptr inbounds ([57 x i8], [57 x i8]* @.str.1, i64 0, i64 0), i8* getelementptr inbounds ([889 x i8], [889 x i8]* @.str, i64 0, i64 0)
%6 = tail call i8* @strcopy(i8* %0, i8* %5)
ret i8* %6
}