#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*/ printf(char *, char *);
void print_error(char *msg) {
  printf("Vary: Accept\n"
         "Content-Type: text/html; charset=utf-8\n"
         "Cache-Control: no-cache\n"
         "Expires: 0\n\n"
         "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n\n"
         "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" "
         "\"http://www.w3.org/TR/xhtml1/DTD/Strict.dtd\">\n"
         "<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"auto\" "
         "lang=\"auto\">\n"
         "<head>\n"
         "<meta http-equiv=\"Content-Type\" content=\"text/html; "
         "charset=utf-8\" />\n"
         "<title>Error</title>\n"
         "</head>\n"
         "<body>\n"
         "%s\n"
         "</body>\n"
         "</html>\n",
         msg);
  exit(EXIT_FAILURE);
}


x86 assembly (clang, -O0):
<print_error>:
push   %rbp
mov    %rsp,%rbp
sub    $0x10,%rsp
mov    %rdi,-0x8(%rbp)
mov    -0x8(%rbp),%rsi
lea    0xec9(%rip),%rdi
call   1030 <printf@plt>
mov    0x2e9d(%rip),%rax
mov    (%rax),%edi
call   1040 <exit@plt>

x86 assembly (clang, -O2):
<print_error>:
push   %rax
mov    %rdi,%rsi
lea    0xed5(%rip),%rdi
call   1030 <printf@plt>
mov    0x2ea9(%rip),%rax
mov    (%rax),%edi
call   1040 <exit@plt>

LLVM IR (-O0):
@.str = [436 x i8] c"Vary: Accept\0AContent-Type: text/html; charset=utf-8\0ACache-Control: no-cache\0AExpires: 0\0A\0A<?xml version=\221.0\22 encoding=\22utf-8\22?>\0A\0A<!DOCTYPE html PUBLIC \22-//W3C//DTD XHTML 1.0 Strict//EN\22 \22http://www.w3.org/TR/xhtml1/DTD/Strict.dtd\22>\0A<html xmlns=\22http://www.w3.org/1999/xhtml\22 xml:lang=\22auto\22 lang=\22auto\22>\0A<head>\0A<meta http-equiv=\22Content-Type\22 content=\22text/html; charset=utf-8\22 />\0A<title>Error</title>\0A</head>\0A<body>\0A%s\0A</body>\0A</html>\0A\00"
@EXIT_FAILURE = global i32 0
define void @print_error(i8* %0) {
%2 = alloca i8*
store i8* %0, i8** %2
%3 = load i8*, i8** %2
%4 = call i32 @printf(i8* getelementptr inbounds ([436 x i8], [436 x i8]* @.str, i64 0, i64 0), i8* %3)
%5 = load i32, i32* @EXIT_FAILURE
%6 = call i32 @exit(i32 %5)
unreachable
}

LLVM IR (-O2):
@.str = [436 x i8] c"Vary: Accept\0AContent-Type: text/html; charset=utf-8\0ACache-Control: no-cache\0AExpires: 0\0A\0A<?xml version=\221.0\22 encoding=\22utf-8\22?>\0A\0A<!DOCTYPE html PUBLIC \22-//W3C//DTD XHTML 1.0 Strict//EN\22 \22http://www.w3.org/TR/xhtml1/DTD/Strict.dtd\22>\0A<html xmlns=\22http://www.w3.org/1999/xhtml\22 xml:lang=\22auto\22 lang=\22auto\22>\0A<head>\0A<meta http-equiv=\22Content-Type\22 content=\22text/html; charset=utf-8\22 />\0A<title>Error</title>\0A</head>\0A<body>\0A%s\0A</body>\0A</html>\0A\00"
@EXIT_FAILURE = global i32 0
define void @print_error(i8* %0) {
%2 = tail call i32 @printf(i8* getelementptr inbounds ([436 x i8], [436 x i8]* @.str, i64 0, i64 0), i8* %0)
%3 = load i32, i32* @EXIT_FAILURE
%4 = tail call i32 @exit(i32 %3)
unreachable
}