#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 [-h host] [-p port] [-l locale]\n", name);
  fwprintf(stderr, L"-h HOST: (default localhost) adjust host\n");
  fwprintf(stderr, L"-p PORT: (default 7070) adjust port\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    0xf59(%rip),%rsi
mov    $0x0,%al
call   1030 <fwprintf@plt>
mov    0x2e7b(%rip),%rax
mov    (%rax),%edi
lea    0xfea(%rip),%rsi
mov    $0x0,%al
call   1030 <fwprintf@plt>
mov    0x2e64(%rip),%rax
mov    (%rax),%edi
lea    0x1067(%rip),%rsi
mov    $0x0,%al
call   1030 <fwprintf@plt>
mov    0x2e45(%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    0xf6c(%rip),%rsi
xor    %eax,%eax
call   1030 <fwprintf@plt>
mov    (%rbx),%edi
lea    0x1004(%rip),%rsi
xor    %eax,%eax
call   1030 <fwprintf@plt>
mov    (%rbx),%edi
lea    0x1088(%rip),%rsi
xor    %eax,%eax
call   1030 <fwprintf@plt>
mov    0x2e66(%rip),%rax
mov    (%rax),%edi
call   1040 <exit@plt>

LLVM IR (-O0):
@stderr = global i32 0
@.str = [44 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 104, i32 32, i32 104, i32 111, i32 115, i32 116, 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 108, i32 32, i32 108, i32 111, i32 99, i32 97, i32 108, i32 101, i32 93, i32 10, i32 0]
@.str.1 = [42 x i32] [i32 45, i32 104, i32 32, i32 72, i32 79, i32 83, i32 84, i32 58, i32 32, i32 40, i32 100, i32 101, i32 102, i32 97, i32 117, i32 108, i32 116, i32 32, i32 108, i32 111, i32 99, i32 97, i32 108, i32 104, i32 111, i32 115, i32 116, i32 41, i32 32, i32 97, i32 100, i32 106, i32 117, i32 115, i32 116, i32 32, i32 104, i32 111, i32 115, i32 116, i32 10, i32 0]
@.str.2 = [37 x i32] [i32 45, i32 112, i32 32, i32 80, i32 79, i32 82, i32 84, i32 58, i32 32, i32 40, i32 100, i32 101, i32 102, i32 97, i32 117, i32 108, i32 116, i32 32, i32 55, i32 48, i32 55, i32 48, i32 41, i32 32, i32 97, i32 100, i32 106, i32 117, i32 115, i32 116, i32 32, i32 112, i32 111, i32 114, i32 116, i32 10, i32 0]
@.str.3 = [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 ([44 x i32]* @.str to i8*), i8* %4)
%6 = load i32, i32* @stderr
%7 = call i32 (i32, i8*, ...) @fwprintf(i32 %6, i8* bitcast ([42 x i32]* @.str.1 to i8*))
%8 = load i32, i32* @stderr
%9 = call i32 (i32, i8*, ...) @fwprintf(i32 %8, i8* bitcast ([37 x i32]* @.str.2 to i8*))
%10 = load i32, i32* @stderr
%11 = call i32 (i32, i8*, ...) @fwprintf(i32 %10, i8* bitcast ([54 x i32]* @.str.3 to i8*))
%12 = load i32, i32* @EXIT_FAILURE
%13 = call i32 @exit(i32 %12)
unreachable
}

LLVM IR (-O2):
@stderr = global i32 0
@.str = [44 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 104, i32 32, i32 104, i32 111, i32 115, i32 116, 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 108, i32 32, i32 108, i32 111, i32 99, i32 97, i32 108, i32 101, i32 93, i32 10, i32 0]
@.str.1 = [42 x i32] [i32 45, i32 104, i32 32, i32 72, i32 79, i32 83, i32 84, i32 58, i32 32, i32 40, i32 100, i32 101, i32 102, i32 97, i32 117, i32 108, i32 116, i32 32, i32 108, i32 111, i32 99, i32 97, i32 108, i32 104, i32 111, i32 115, i32 116, i32 41, i32 32, i32 97, i32 100, i32 106, i32 117, i32 115, i32 116, i32 32, i32 104, i32 111, i32 115, i32 116, i32 10, i32 0]
@.str.2 = [37 x i32] [i32 45, i32 112, i32 32, i32 80, i32 79, i32 82, i32 84, i32 58, i32 32, i32 40, i32 100, i32 101, i32 102, i32 97, i32 117, i32 108, i32 116, i32 32, i32 55, i32 48, i32 55, i32 48, i32 41, i32 32, i32 97, i32 100, i32 106, i32 117, i32 115, i32 116, i32 32, i32 112, i32 111, i32 114, i32 116, i32 10, i32 0]
@.str.3 = [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 ([44 x i32]* @.str to i8*), i8* %0)
%4 = load i32, i32* @stderr
%5 = tail call i32 (i32, i8*, ...) @fwprintf(i32 %4, i8* bitcast ([42 x i32]* @.str.1 to i8*))
%6 = load i32, i32* @stderr
%7 = tail call i32 (i32, i8*, ...) @fwprintf(i32 %6, i8* bitcast ([37 x i32]* @.str.2 to i8*))
%8 = load i32, i32* @stderr
%9 = tail call i32 (i32, i8*, ...) @fwprintf(i32 %8, i8* bitcast ([54 x i32]* @.str.3 to i8*))
%10 = load i32, i32* @EXIT_FAILURE
%11 = tail call i32 @exit(i32 %10)
unreachable
}