#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_FAILURE;
int /*<<< orphan*/ exit(int /*<<< orphan*/);
int /*<<< orphan*/ fwprintf(int /*<<< orphan*/, char *, ...);
int /*<<< orphan*/ stderr;
void syntax_lecture(char *name) {
  fwprintf(stderr,
           L"Syntax: %s [-d dbfile] [-p port] [-f infile] [-l locale] action\n",
           name);
  fwprintf(stderr, L"action: one of the following:\n");
  fwprintf(stderr, L"\tinput: input new sentences from terminal\n");
  fwprintf(stderr, L"\tgen: generate a sentence\n");
  fwprintf(
      stderr,
      L"\tinfile: load sentences from infile.txt or file specified by -f\n");
  fwprintf(stderr,
           L"\tnet: test networking on port 7070 or port specified by -p\n");
  fwprintf(stderr, L"\tflood: data dump a bunch of incoherent sentences into "
                   L"the database\n");
  fwprintf(stderr, L"-d DBFILE: adjust database file\n");
  fwprintf(stderr, L"-l LOCALE: adjust locale used for character encoding\n");
  exit(EXIT_FAILURE);
}


x86 assembly (clang, -O0):
<syntax_lecture>:
push   %rbp
mov    %rsp,%rbp
sub    $0x10,%rsp
mov    %rdi,-0x8(%rbp)
mov    0x2ead(%rip),%rax
mov    (%rax),%edi
mov    -0x8(%rbp),%rdx
lea    0xec0(%rip),%rsi
mov    $0x0,%al
call   1030 <fwprintf@plt>
mov    0x2e92(%rip),%rax
mov    (%rax),%edi
lea    0xfad(%rip),%rsi
mov    $0x0,%al
call   1030 <fwprintf@plt>
mov    0x2e7b(%rip),%rax
mov    (%rax),%edi
lea    0x1012(%rip),%rsi
mov    $0x0,%al
call   1030 <fwprintf@plt>
mov    0x2e64(%rip),%rax
mov    (%rax),%edi
lea    0x10a7(%rip),%rsi
mov    $0x0,%al
call   1030 <fwprintf@plt>
mov    0x2e4d(%rip),%rax
mov    (%rax),%edi
lea    0x10fc(%rip),%rsi
mov    $0x0,%al
call   1030 <fwprintf@plt>
mov    0x2e36(%rip),%rax
mov    (%rax),%edi
lea    0x11e9(%rip),%rsi
mov    $0x0,%al
call   1030 <fwprintf@plt>
mov    0x2e1f(%rip),%rax
mov    (%rax),%edi
lea    0x12c2(%rip),%rsi
mov    $0x0,%al
call   1030 <fwprintf@plt>
mov    0x2e08(%rip),%rax
mov    (%rax),%edi
lea    0x13bf(%rip),%rsi
mov    $0x0,%al
call   1030 <fwprintf@plt>
mov    0x2df1(%rip),%rax
mov    (%rax),%edi
lea    0x142c(%rip),%rsi
mov    $0x0,%al
call   1030 <fwprintf@plt>
mov    0x2dd2(%rip),%rax
mov    (%rax),%edi
call   1040 <exit@plt>

x86 assembly (clang, -O2):
<syntax_lecture>:
push   %rbx
mov    %rdi,%rdx
mov    0x2eb5(%rip),%rbx
mov    (%rbx),%edi
lea    0xecc(%rip),%rsi
xor    %eax,%eax
call   1030 <fwprintf@plt>
mov    (%rbx),%edi
lea    0xfc0(%rip),%rsi
xor    %eax,%eax
call   1030 <fwprintf@plt>
mov    (%rbx),%edi
lea    0x102c(%rip),%rsi
xor    %eax,%eax
call   1030 <fwprintf@plt>
mov    (%rbx),%edi
lea    0x10c8(%rip),%rsi
xor    %eax,%eax
call   1030 <fwprintf@plt>
mov    (%rbx),%edi
lea    0x1124(%rip),%rsi
xor    %eax,%eax
call   1030 <fwprintf@plt>
mov    (%rbx),%edi
lea    0x1218(%rip),%rsi
xor    %eax,%eax
call   1030 <fwprintf@plt>
mov    (%rbx),%edi
lea    0x12f8(%rip),%rsi
xor    %eax,%eax
call   1030 <fwprintf@plt>
mov    (%rbx),%edi
lea    0x13fc(%rip),%rsi
xor    %eax,%eax
call   1030 <fwprintf@plt>
mov    (%rbx),%edi
lea    0x1470(%rip),%rsi
xor    %eax,%eax
call   1030 <fwprintf@plt>
mov    0x2e16(%rip),%rax
mov    (%rax),%edi
call   1040 <exit@plt>

LLVM IR (-O0):
@stderr = global i32 0
@.str = [65 x i32] [i32 83, i32 121, i32 110, i32 116, i32 97, i32 120, i32 58, i32 32, i32 37, i32 115, i32 32, i32 91, i32 45, i32 100, i32 32, i32 100, i32 98, i32 102, i32 105, i32 108, i32 101, i32 93, i32 32, i32 91, i32 45, i32 112, i32 32, i32 112, i32 111, i32 114, i32 116, i32 93, i32 32, i32 91, i32 45, i32 102, i32 32, i32 105, i32 110, i32 102, i32 105, i32 108, i32 101, i32 93, i32 32, i32 91, i32 45, i32 108, i32 32, i32 108, i32 111, i32 99, i32 97, i32 108, i32 101, i32 93, i32 32, i32 97, i32 99, i32 116, i32 105, i32 111, i32 110, i32 10, i32 0]
@.str.1 = [31 x i32] [i32 97, i32 99, i32 116, i32 105, i32 111, i32 110, i32 58, i32 32, i32 111, i32 110, i32 101, i32 32, i32 111, i32 102, i32 32, i32 116, i32 104, i32 101, i32 32, i32 102, i32 111, i32 108, i32 108, i32 111, i32 119, i32 105, i32 110, i32 103, i32 58, i32 10, i32 0]
@.str.2 = [43 x i32] [i32 9, i32 105, i32 110, i32 112, i32 117, i32 116, i32 58, i32 32, i32 105, i32 110, i32 112, i32 117, i32 116, i32 32, i32 110, i32 101, i32 119, i32 32, i32 115, i32 101, i32 110, i32 116, i32 101, i32 110, i32 99, i32 101, i32 115, i32 32, i32 102, i32 114, i32 111, i32 109, i32 32, i32 116, i32 101, i32 114, i32 109, i32 105, i32 110, i32 97, i32 108, i32 10, i32 0]
@.str.3 = [27 x i32] [i32 9, i32 103, i32 101, i32 110, i32 58, i32 32, i32 103, i32 101, i32 110, i32 101, i32 114, i32 97, i32 116, i32 101, i32 32, i32 97, i32 32, i32 115, i32 101, i32 110, i32 116, i32 101, i32 110, i32 99, i32 101, i32 10, i32 0]
@.str.4 = [65 x i32] [i32 9, i32 105, i32 110, i32 102, i32 105, i32 108, i32 101, i32 58, i32 32, i32 108, i32 111, i32 97, i32 100, i32 32, i32 115, i32 101, i32 110, i32 116, i32 101, i32 110, i32 99, i32 101, i32 115, i32 32, i32 102, i32 114, i32 111, i32 109, i32 32, i32 105, i32 110, i32 102, i32 105, i32 108, i32 101, i32 46, i32 116, i32 120, i32 116, i32 32, i32 111, i32 114, i32 32, i32 102, i32 105, i32 108, i32 101, i32 32, i32 115, i32 112, i32 101, i32 99, i32 105, i32 102, i32 105, i32 101, i32 100, i32 32, i32 98, i32 121, i32 32, i32 45, i32 102, i32 10, i32 0]
@.str.5 = [60 x i32] [i32 9, i32 110, i32 101, i32 116, i32 58, i32 32, i32 116, i32 101, i32 115, i32 116, i32 32, i32 110, i32 101, i32 116, i32 119, i32 111, i32 114, i32 107, i32 105, i32 110, i32 103, i32 32, i32 111, i32 110, i32 32, i32 112, i32 111, i32 114, i32 116, i32 32, i32 55, i32 48, i32 55, i32 48, i32 32, i32 111, i32 114, i32 32, i32 112, i32 111, i32 114, i32 116, i32 32, i32 115, i32 112, i32 101, i32 99, i32 105, i32 102, i32 105, i32 101, i32 100, i32 32, i32 98, i32 121, i32 32, i32 45, i32 112, i32 10, i32 0]
@.str.6 = [69 x i32] [i32 9, i32 102, i32 108, i32 111, i32 111, i32 100, i32 58, i32 32, i32 100, i32 97, i32 116, i32 97, i32 32, i32 100, i32 117, i32 109, i32 112, i32 32, i32 97, i32 32, i32 98, i32 117, i32 110, i32 99, i32 104, i32 32, i32 111, i32 102, i32 32, i32 105, i32 110, i32 99, i32 111, i32 104, i32 101, i32 114, i32 101, i32 110, i32 116, i32 32, i32 115, i32 101, i32 110, i32 116, i32 101, i32 110, i32 99, i32 101, i32 115, i32 32, i32 105, i32 110, i32 116, i32 111, i32 32, i32 116, i32 104, i32 101, i32 32, i32 100, i32 97, i32 116, i32 97, i32 98, i32 97, i32 115, i32 101, i32 10, i32 0]
@.str.7 = [33 x i32] [i32 45, i32 100, i32 32, i32 68, i32 66, i32 70, i32 73, i32 76, i32 69, i32 58, i32 32, i32 97, i32 100, i32 106, i32 117, i32 115, i32 116, i32 32, i32 100, i32 97, i32 116, i32 97, i32 98, i32 97, i32 115, i32 101, i32 32, i32 102, i32 105, i32 108, i32 101, i32 10, i32 0]
@.str.8 = [54 x i32] [i32 45, i32 108, i32 32, i32 76, i32 79, i32 67, i32 65, i32 76, i32 69, i32 58, i32 32, i32 97, i32 100, i32 106, i32 117, i32 115, i32 116, i32 32, i32 108, i32 111, i32 99, i32 97, i32 108, i32 101, i32 32, i32 117, i32 115, i32 101, i32 100, i32 32, i32 102, i32 111, i32 114, i32 32, i32 99, i32 104, i32 97, i32 114, i32 97, i32 99, i32 116, i32 101, i32 114, i32 32, i32 101, i32 110, i32 99, i32 111, i32 100, i32 105, i32 110, i32 103, i32 10, i32 0]
@EXIT_FAILURE = global i32 0
define void @syntax_lecture(i8* %0) {
%2 = alloca i8*
store i8* %0, i8** %2
%3 = load i32, i32* @stderr
%4 = load i8*, i8** %2
%5 = call i32 (i32, i8*, ...) @fwprintf(i32 %3, i8* bitcast ([65 x i32]* @.str to i8*), i8* %4)
%6 = load i32, i32* @stderr
%7 = call i32 (i32, i8*, ...) @fwprintf(i32 %6, i8* bitcast ([31 x i32]* @.str.1 to i8*))
%8 = load i32, i32* @stderr
%9 = call i32 (i32, i8*, ...) @fwprintf(i32 %8, i8* bitcast ([43 x i32]* @.str.2 to i8*))
%10 = load i32, i32* @stderr
%11 = call i32 (i32, i8*, ...) @fwprintf(i32 %10, i8* bitcast ([27 x i32]* @.str.3 to i8*))
%12 = load i32, i32* @stderr
%13 = call i32 (i32, i8*, ...) @fwprintf(i32 %12, i8* bitcast ([65 x i32]* @.str.4 to i8*))
%14 = load i32, i32* @stderr
%15 = call i32 (i32, i8*, ...) @fwprintf(i32 %14, i8* bitcast ([60 x i32]* @.str.5 to i8*))
%16 = load i32, i32* @stderr
%17 = call i32 (i32, i8*, ...) @fwprintf(i32 %16, i8* bitcast ([69 x i32]* @.str.6 to i8*))
%18 = load i32, i32* @stderr
%19 = call i32 (i32, i8*, ...) @fwprintf(i32 %18, i8* bitcast ([33 x i32]* @.str.7 to i8*))
%20 = load i32, i32* @stderr
%21 = call i32 (i32, i8*, ...) @fwprintf(i32 %20, i8* bitcast ([54 x i32]* @.str.8 to i8*))
%22 = load i32, i32* @EXIT_FAILURE
%23 = call i32 @exit(i32 %22)
unreachable
}

LLVM IR (-O2):
@stderr = global i32 0
@.str = [65 x i32] [i32 83, i32 121, i32 110, i32 116, i32 97, i32 120, i32 58, i32 32, i32 37, i32 115, i32 32, i32 91, i32 45, i32 100, i32 32, i32 100, i32 98, i32 102, i32 105, i32 108, i32 101, i32 93, i32 32, i32 91, i32 45, i32 112, i32 32, i32 112, i32 111, i32 114, i32 116, i32 93, i32 32, i32 91, i32 45, i32 102, i32 32, i32 105, i32 110, i32 102, i32 105, i32 108, i32 101, i32 93, i32 32, i32 91, i32 45, i32 108, i32 32, i32 108, i32 111, i32 99, i32 97, i32 108, i32 101, i32 93, i32 32, i32 97, i32 99, i32 116, i32 105, i32 111, i32 110, i32 10, i32 0]
@.str.1 = [31 x i32] [i32 97, i32 99, i32 116, i32 105, i32 111, i32 110, i32 58, i32 32, i32 111, i32 110, i32 101, i32 32, i32 111, i32 102, i32 32, i32 116, i32 104, i32 101, i32 32, i32 102, i32 111, i32 108, i32 108, i32 111, i32 119, i32 105, i32 110, i32 103, i32 58, i32 10, i32 0]
@.str.2 = [43 x i32] [i32 9, i32 105, i32 110, i32 112, i32 117, i32 116, i32 58, i32 32, i32 105, i32 110, i32 112, i32 117, i32 116, i32 32, i32 110, i32 101, i32 119, i32 32, i32 115, i32 101, i32 110, i32 116, i32 101, i32 110, i32 99, i32 101, i32 115, i32 32, i32 102, i32 114, i32 111, i32 109, i32 32, i32 116, i32 101, i32 114, i32 109, i32 105, i32 110, i32 97, i32 108, i32 10, i32 0]
@.str.3 = [27 x i32] [i32 9, i32 103, i32 101, i32 110, i32 58, i32 32, i32 103, i32 101, i32 110, i32 101, i32 114, i32 97, i32 116, i32 101, i32 32, i32 97, i32 32, i32 115, i32 101, i32 110, i32 116, i32 101, i32 110, i32 99, i32 101, i32 10, i32 0]
@.str.4 = [65 x i32] [i32 9, i32 105, i32 110, i32 102, i32 105, i32 108, i32 101, i32 58, i32 32, i32 108, i32 111, i32 97, i32 100, i32 32, i32 115, i32 101, i32 110, i32 116, i32 101, i32 110, i32 99, i32 101, i32 115, i32 32, i32 102, i32 114, i32 111, i32 109, i32 32, i32 105, i32 110, i32 102, i32 105, i32 108, i32 101, i32 46, i32 116, i32 120, i32 116, i32 32, i32 111, i32 114, i32 32, i32 102, i32 105, i32 108, i32 101, i32 32, i32 115, i32 112, i32 101, i32 99, i32 105, i32 102, i32 105, i32 101, i32 100, i32 32, i32 98, i32 121, i32 32, i32 45, i32 102, i32 10, i32 0]
@.str.5 = [60 x i32] [i32 9, i32 110, i32 101, i32 116, i32 58, i32 32, i32 116, i32 101, i32 115, i32 116, i32 32, i32 110, i32 101, i32 116, i32 119, i32 111, i32 114, i32 107, i32 105, i32 110, i32 103, i32 32, i32 111, i32 110, i32 32, i32 112, i32 111, i32 114, i32 116, i32 32, i32 55, i32 48, i32 55, i32 48, i32 32, i32 111, i32 114, i32 32, i32 112, i32 111, i32 114, i32 116, i32 32, i32 115, i32 112, i32 101, i32 99, i32 105, i32 102, i32 105, i32 101, i32 100, i32 32, i32 98, i32 121, i32 32, i32 45, i32 112, i32 10, i32 0]
@.str.6 = [69 x i32] [i32 9, i32 102, i32 108, i32 111, i32 111, i32 100, i32 58, i32 32, i32 100, i32 97, i32 116, i32 97, i32 32, i32 100, i32 117, i32 109, i32 112, i32 32, i32 97, i32 32, i32 98, i32 117, i32 110, i32 99, i32 104, i32 32, i32 111, i32 102, i32 32, i32 105, i32 110, i32 99, i32 111, i32 104, i32 101, i32 114, i32 101, i32 110, i32 116, i32 32, i32 115, i32 101, i32 110, i32 116, i32 101, i32 110, i32 99, i32 101, i32 115, i32 32, i32 105, i32 110, i32 116, i32 111, i32 32, i32 116, i32 104, i32 101, i32 32, i32 100, i32 97, i32 116, i32 97, i32 98, i32 97, i32 115, i32 101, i32 10, i32 0]
@.str.7 = [33 x i32] [i32 45, i32 100, i32 32, i32 68, i32 66, i32 70, i32 73, i32 76, i32 69, i32 58, i32 32, i32 97, i32 100, i32 106, i32 117, i32 115, i32 116, i32 32, i32 100, i32 97, i32 116, i32 97, i32 98, i32 97, i32 115, i32 101, i32 32, i32 102, i32 105, i32 108, i32 101, i32 10, i32 0]
@.str.8 = [54 x i32] [i32 45, i32 108, i32 32, i32 76, i32 79, i32 67, i32 65, i32 76, i32 69, i32 58, i32 32, i32 97, i32 100, i32 106, i32 117, i32 115, i32 116, i32 32, i32 108, i32 111, i32 99, i32 97, i32 108, i32 101, i32 32, i32 117, i32 115, i32 101, i32 100, i32 32, i32 102, i32 111, i32 114, i32 32, i32 99, i32 104, i32 97, i32 114, i32 97, i32 99, i32 116, i32 101, i32 114, i32 32, i32 101, i32 110, i32 99, i32 111, i32 100, i32 105, i32 110, i32 103, i32 10, i32 0]
@EXIT_FAILURE = global i32 0
define void @syntax_lecture(i8* %0) {
%2 = load i32, i32* @stderr
%3 = tail call i32 (i32, i8*, ...) @fwprintf(i32 %2, i8* bitcast ([65 x i32]* @.str to i8*), i8* %0)
%4 = load i32, i32* @stderr
%5 = tail call i32 (i32, i8*, ...) @fwprintf(i32 %4, i8* bitcast ([31 x i32]* @.str.1 to i8*))
%6 = load i32, i32* @stderr
%7 = tail call i32 (i32, i8*, ...) @fwprintf(i32 %6, i8* bitcast ([43 x i32]* @.str.2 to i8*))
%8 = load i32, i32* @stderr
%9 = tail call i32 (i32, i8*, ...) @fwprintf(i32 %8, i8* bitcast ([27 x i32]* @.str.3 to i8*))
%10 = load i32, i32* @stderr
%11 = tail call i32 (i32, i8*, ...) @fwprintf(i32 %10, i8* bitcast ([65 x i32]* @.str.4 to i8*))
%12 = load i32, i32* @stderr
%13 = tail call i32 (i32, i8*, ...) @fwprintf(i32 %12, i8* bitcast ([60 x i32]* @.str.5 to i8*))
%14 = load i32, i32* @stderr
%15 = tail call i32 (i32, i8*, ...) @fwprintf(i32 %14, i8* bitcast ([69 x i32]* @.str.6 to i8*))
%16 = load i32, i32* @stderr
%17 = tail call i32 (i32, i8*, ...) @fwprintf(i32 %16, i8* bitcast ([33 x i32]* @.str.7 to i8*))
%18 = load i32, i32* @stderr
%19 = tail call i32 (i32, i8*, ...) @fwprintf(i32 %18, i8* bitcast ([54 x i32]* @.str.8 to i8*))
%20 = load i32, i32* @EXIT_FAILURE
%21 = tail call i32 @exit(i32 %20)
unreachable
}