#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 EXIT_SUCCESS;
int /*<<< orphan*/ printf(char *);
int /*<<< orphan*/ wprintf(char *);
int main(void) {
  (void)wprintf(L"English:  Hello, world!\n");
  (void)printf(L"English:  Hello, world!\n");
  (void)wprintf("English:  Hello, world!\n");
  (void)wprintf(
      L"Russian:  Ð^×Ð°Ñ^ÀÐµÐ³Ð¸Ñ^ÁÑ^ÂÑ^ÀÐ¸Ñ^ÀÑ^ÃÐ¹Ñ^ÂÐµÑ^ÁÑ^Ì Ñ^ÁÐµÐ¹Ñ^ÇÐ°Ñ^Á "
      L"Ð½Ð° Ð^ÔÐµÑ^ÁÑ^ÏÑ^ÂÑ^ÃÑ^Î Ð^ÜÐµÐ¶Ð´Ñ^ÃÐ½Ð°Ñ^ÀÐ¾Ð´Ð½Ñ^ÃÑ^Î "
      L"Ð^ÚÐ¾Ð½Ñ^ÄÐµÑ^ÀÐµÐ½Ñ^ÆÐ¸Ñ^Î...\n");
  (void)wprintf(L"Greek:    Î£á½² Î³Î½Ï^ÉÏ^Áá½·Î¶Ï^É á¼^ÀÏ^Àá½¸ Ï^Äá½´Î½ "
                L"Îºá½¹Ï^ÈÎ·...\n");
  (void)wprintf(
      L"Georgian: á^Ã^Òá^Ã^×á^Ã®á^Ã^Ýá^Ã^Õá^Ã^× á^Ã^Ðá^Ã®á^Ã^Úá^Ã^Ðá^Ã^Õá^Ã^Ô "
      L"á^Ã^Òá^Ã^Ðá^Ã^Øá^Ã^Ðá^Ã á^Ã^Ýá^Ã^× "
      L"á^Ã á^Ã^Ôá^Ã^Òá^Ã^Øá^Ã¡á^Ã¢á^Ã á^Ã^Ðá^Ãªá^Ã^Øá^Ã^Ð Unicode-á^Ã^Øá^Ã¡ "
      L"á^Ã^Ûá^Ã^Ôá^Ã^Ðá^Ã^×á^Ã^Ô "
      L"á^Ã¡á^Ã^Ðá^Ã^Ôá^Ã á^Ã^×á^Ã^Ðá^Ã¨á^Ã^Ýá^Ã á^Ã^Øá^Ã¡á^Ã^Ý\n");
  return (EXIT_SUCCESS);
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0x10,%rsp
movl   $0x0,-0x4(%rbp)
lea    0xeca(%rip),%rdi
call   1040 <wprintf@plt>
lea    0xebe(%rip),%rdi
call   1030 <printf@plt>
lea    0x16b6(%rip),%rdi
call   1040 <wprintf@plt>
lea    0xf0a(%rip),%rdi
call   1040 <wprintf@plt>
lea    0x1182(%rip),%rdi
call   1040 <wprintf@plt>
lea    0x128e(%rip),%rdi
call   1040 <wprintf@plt>
mov    0x2e62(%rip),%rax
mov    (%rax),%eax
add    $0x10,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
push   %rbx
lea    0xed8(%rip),%rbx
mov    %rbx,%rdi
call   1040 <wprintf@plt>
mov    %rbx,%rdi
call   1030 <printf@plt>
lea    0x16c5(%rip),%rdi
call   1040 <wprintf@plt>
lea    0xf19(%rip),%rdi
call   1040 <wprintf@plt>
lea    0x1191(%rip),%rdi
call   1040 <wprintf@plt>
lea    0x129d(%rip),%rdi
call   1040 <wprintf@plt>
mov    0x2e71(%rip),%rax
mov    (%rax),%eax
pop    %rbx
ret

LLVM IR (-O0):
@.str = [25 x i32] [i32 69, i32 110, i32 103, i32 108, i32 105, i32 115, i32 104, i32 58, i32 32, i32 32, i32 72, i32 101, i32 108, i32 108, i32 111, i32 44, i32 32, i32 119, i32 111, i32 114, i32 108, i32 100, i32 33, i32 10, i32 0]
@.str.1 = [25 x i8] c"English: Hello, world!\0A\00"
@.str.2 = [161 x i32] [i32 82, i32 117, i32 115, i32 115, i32 105, i32 97, i32 110, i32 58, i32 32, i32 32, i32 208, i32 94, i32 215, i32 208, i32 176, i32 209, i32 94, i32 192, i32 208, i32 181, i32 208, i32 179, i32 208, i32 184, i32 209, i32 94, i32 193, i32 209, i32 94, i32 194, i32 209, i32 94, i32 192, i32 208, i32 184, i32 209, i32 94, i32 192, i32 209, i32 94, i32 195, i32 208, i32 185, i32 209, i32 94, i32 194, i32 208, i32 181, i32 209, i32 94, i32 193, i32 209, i32 94, i32 204, i32 32, i32 209, i32 94, i32 193, i32 208, i32 181, i32 208, i32 185, i32 209, i32 94, i32 199, i32 208, i32 176, i32 209, i32 94, i32 193, i32 32, i32 208, i32 189, i32 208, i32 176, i32 32, i32 208, i32 94, i32 212, i32 208, i32 181, i32 209, i32 94, i32 193, i32 209, i32 94, i32 207, i32 209, i32 94, i32 194, i32 209, i32 94, i32 195, i32 209, i32 94, i32 206, i32 32, i32 208, i32 94, i32 220, i32 208, i32 181, i32 208, i32 182, i32 208, i32 180, i32 209, i32 94, i32 195, i32 208, i32 189, i32 208, i32 176, i32 209, i32 94, i32 192, i32 208, i32 190, i32 208, i32 180, i32 208, i32 189, i32 209, i32 94, i32 195, i32 209, i32 94, i32 206, i32 32, i32 208, i32 94, i32 218, i32 208, i32 190, i32 208, i32 189, i32 209, i32 94, i32 196, i32 208, i32 181, i32 209, i32 94, i32 192, i32 208, i32 181, i32 208, i32 189, i32 209, i32 94, i32 198, i32 208, i32 184, i32 209, i32 94, i32 206, i32 46, i32 46, i32 46, i32 10, i32 0]
@.str.3 = [70 x i32] [i32 71, i32 114, i32 101, i32 101, i32 107, i32 58, i32 32, i32 32, i32 32, i32 32, i32 206, i32 163, i32 225, i32 189, i32 178, i32 32, i32 206, i32 179, i32 206, i32 189, i32 207, i32 94, i32 201, i32 207, i32 94, i32 193, i32 225, i32 189, i32 183, i32 206, i32 182, i32 207, i32 94, i32 201, i32 32, i32 225, i32 188, i32 94, i32 192, i32 207, i32 94, i32 192, i32 225, i32 189, i32 184, i32 32, i32 207, i32 94, i32 196, i32 225, i32 189, i32 180, i32 206, i32 189, i32 32, i32 206, i32 186, i32 225, i32 189, i32 185, i32 207, i32 94, i32 200, i32 206, i32 183, i32 46, i32 46, i32 46, i32 10, i32 0]
@.str.4 = [257 x i32] [i32 71, i32 101, i32 111, i32 114, i32 103, i32 105, i32 97, i32 110, i32 58, i32 32, i32 225, i32 94, i32 195, i32 94, i32 210, i32 225, i32 94, i32 195, i32 94, i32 215, i32 225, i32 94, i32 195, i32 174, i32 225, i32 94, i32 195, i32 94, i32 221, i32 225, i32 94, i32 195, i32 94, i32 213, i32 225, i32 94, i32 195, i32 94, i32 215, i32 32, i32 225, i32 94, i32 195, i32 94, i32 208, i32 225, i32 94, i32 195, i32 174, i32 225, i32 94, i32 195, i32 94, i32 218, i32 225, i32 94, i32 195, i32 94, i32 208, i32 225, i32 94, i32 195, i32 94, i32 213, i32 225, i32 94, i32 195, i32 94, i32 212, i32 32, i32 225, i32 94, i32 195, i32 94, i32 210, i32 225, i32 94, i32 195, i32 94, i32 208, i32 225, i32 94, i32 195, i32 94, i32 216, i32 225, i32 94, i32 195, i32 94, i32 208, i32 225, i32 94, i32 195, i32 160, i32 225, i32 94, i32 195, i32 94, i32 221, i32 225, i32 94, i32 195, i32 94, i32 215, i32 32, i32 225, i32 94, i32 195, i32 160, i32 225, i32 94, i32 195, i32 94, i32 212, i32 225, i32 94, i32 195, i32 94, i32 210, i32 225, i32 94, i32 195, i32 94, i32 216, i32 225, i32 94, i32 195, i32 161, i32 225, i32 94, i32 195, i32 162, i32 225, i32 94, i32 195, i32 160, i32 225, i32 94, i32 195, i32 94, i32 208, i32 225, i32 94, i32 195, i32 170, i32 225, i32 94, i32 195, i32 94, i32 216, i32 225, i32 94, i32 195, i32 94, i32 208, i32 32, i32 85, i32 110, i32 105, i32 99, i32 111, i32 100, i32 101, i32 45, i32 225, i32 94, i32 195, i32 94, i32 216, i32 225, i32 94, i32 195, i32 161, i32 32, i32 225, i32 94, i32 195, i32 94, i32 219, i32 225, i32 94, i32 195, i32 94, i32 212, i32 225, i32 94, i32 195, i32 94, i32 208, i32 225, i32 94, i32 195, i32 94, i32 215, i32 225, i32 94, i32 195, i32 94, i32 212, i32 32, i32 225, i32 94, i32 195, i32 161, i32 225, i32 94, i32 195, i32 94, i32 208, i32 225, i32 94, i32 195, i32 94, i32 212, i32 225, i32 94, i32 195, i32 160, i32 225, i32 94, i32 195, i32 94, i32 215, i32 225, i32 94, i32 195, i32 94, i32 208, i32 225, i32 94, i32 195, i32 168, i32 225, i32 94, i32 195, i32 94, i32 221, i32 225, i32 94, i32 195, i32 160, i32 225, i32 94, i32 195, i32 94, i32 216, i32 225, i32 94, i32 195, i32 161, i32 225, i32 94, i32 195, i32 94, i32 221, i32 10, i32 0]
@EXIT_SUCCESS = global i32 0
define i32 @main() {
%1 = alloca i32
store i32 0, i32* %1
%2 = call i32 @wprintf(i8* bitcast ([25 x i32]* @.str to i8*))
%3 = call i32 @printf(i8* bitcast ([25 x i32]* @.str to i8*))
%4 = call i32 @wprintf(i8* getelementptr inbounds ([25 x i8], [25 x i8]* @.str.1, i64 0, i64 0))
%5 = call i32 @wprintf(i8* bitcast ([161 x i32]* @.str.2 to i8*))
%6 = call i32 @wprintf(i8* bitcast ([70 x i32]* @.str.3 to i8*))
%7 = call i32 @wprintf(i8* bitcast ([257 x i32]* @.str.4 to i8*))
%8 = load i32, i32* @EXIT_SUCCESS
ret i32 %8
}

LLVM IR (-O2):
@.str = [25 x i32] [i32 69, i32 110, i32 103, i32 108, i32 105, i32 115, i32 104, i32 58, i32 32, i32 32, i32 72, i32 101, i32 108, i32 108, i32 111, i32 44, i32 32, i32 119, i32 111, i32 114, i32 108, i32 100, i32 33, i32 10, i32 0]
@.str.1 = [25 x i8] c"English: Hello, world!\0A\00"
@.str.2 = [161 x i32] [i32 82, i32 117, i32 115, i32 115, i32 105, i32 97, i32 110, i32 58, i32 32, i32 32, i32 208, i32 94, i32 215, i32 208, i32 176, i32 209, i32 94, i32 192, i32 208, i32 181, i32 208, i32 179, i32 208, i32 184, i32 209, i32 94, i32 193, i32 209, i32 94, i32 194, i32 209, i32 94, i32 192, i32 208, i32 184, i32 209, i32 94, i32 192, i32 209, i32 94, i32 195, i32 208, i32 185, i32 209, i32 94, i32 194, i32 208, i32 181, i32 209, i32 94, i32 193, i32 209, i32 94, i32 204, i32 32, i32 209, i32 94, i32 193, i32 208, i32 181, i32 208, i32 185, i32 209, i32 94, i32 199, i32 208, i32 176, i32 209, i32 94, i32 193, i32 32, i32 208, i32 189, i32 208, i32 176, i32 32, i32 208, i32 94, i32 212, i32 208, i32 181, i32 209, i32 94, i32 193, i32 209, i32 94, i32 207, i32 209, i32 94, i32 194, i32 209, i32 94, i32 195, i32 209, i32 94, i32 206, i32 32, i32 208, i32 94, i32 220, i32 208, i32 181, i32 208, i32 182, i32 208, i32 180, i32 209, i32 94, i32 195, i32 208, i32 189, i32 208, i32 176, i32 209, i32 94, i32 192, i32 208, i32 190, i32 208, i32 180, i32 208, i32 189, i32 209, i32 94, i32 195, i32 209, i32 94, i32 206, i32 32, i32 208, i32 94, i32 218, i32 208, i32 190, i32 208, i32 189, i32 209, i32 94, i32 196, i32 208, i32 181, i32 209, i32 94, i32 192, i32 208, i32 181, i32 208, i32 189, i32 209, i32 94, i32 198, i32 208, i32 184, i32 209, i32 94, i32 206, i32 46, i32 46, i32 46, i32 10, i32 0]
@.str.3 = [70 x i32] [i32 71, i32 114, i32 101, i32 101, i32 107, i32 58, i32 32, i32 32, i32 32, i32 32, i32 206, i32 163, i32 225, i32 189, i32 178, i32 32, i32 206, i32 179, i32 206, i32 189, i32 207, i32 94, i32 201, i32 207, i32 94, i32 193, i32 225, i32 189, i32 183, i32 206, i32 182, i32 207, i32 94, i32 201, i32 32, i32 225, i32 188, i32 94, i32 192, i32 207, i32 94, i32 192, i32 225, i32 189, i32 184, i32 32, i32 207, i32 94, i32 196, i32 225, i32 189, i32 180, i32 206, i32 189, i32 32, i32 206, i32 186, i32 225, i32 189, i32 185, i32 207, i32 94, i32 200, i32 206, i32 183, i32 46, i32 46, i32 46, i32 10, i32 0]
@.str.4 = [257 x i32] [i32 71, i32 101, i32 111, i32 114, i32 103, i32 105, i32 97, i32 110, i32 58, i32 32, i32 225, i32 94, i32 195, i32 94, i32 210, i32 225, i32 94, i32 195, i32 94, i32 215, i32 225, i32 94, i32 195, i32 174, i32 225, i32 94, i32 195, i32 94, i32 221, i32 225, i32 94, i32 195, i32 94, i32 213, i32 225, i32 94, i32 195, i32 94, i32 215, i32 32, i32 225, i32 94, i32 195, i32 94, i32 208, i32 225, i32 94, i32 195, i32 174, i32 225, i32 94, i32 195, i32 94, i32 218, i32 225, i32 94, i32 195, i32 94, i32 208, i32 225, i32 94, i32 195, i32 94, i32 213, i32 225, i32 94, i32 195, i32 94, i32 212, i32 32, i32 225, i32 94, i32 195, i32 94, i32 210, i32 225, i32 94, i32 195, i32 94, i32 208, i32 225, i32 94, i32 195, i32 94, i32 216, i32 225, i32 94, i32 195, i32 94, i32 208, i32 225, i32 94, i32 195, i32 160, i32 225, i32 94, i32 195, i32 94, i32 221, i32 225, i32 94, i32 195, i32 94, i32 215, i32 32, i32 225, i32 94, i32 195, i32 160, i32 225, i32 94, i32 195, i32 94, i32 212, i32 225, i32 94, i32 195, i32 94, i32 210, i32 225, i32 94, i32 195, i32 94, i32 216, i32 225, i32 94, i32 195, i32 161, i32 225, i32 94, i32 195, i32 162, i32 225, i32 94, i32 195, i32 160, i32 225, i32 94, i32 195, i32 94, i32 208, i32 225, i32 94, i32 195, i32 170, i32 225, i32 94, i32 195, i32 94, i32 216, i32 225, i32 94, i32 195, i32 94, i32 208, i32 32, i32 85, i32 110, i32 105, i32 99, i32 111, i32 100, i32 101, i32 45, i32 225, i32 94, i32 195, i32 94, i32 216, i32 225, i32 94, i32 195, i32 161, i32 32, i32 225, i32 94, i32 195, i32 94, i32 219, i32 225, i32 94, i32 195, i32 94, i32 212, i32 225, i32 94, i32 195, i32 94, i32 208, i32 225, i32 94, i32 195, i32 94, i32 215, i32 225, i32 94, i32 195, i32 94, i32 212, i32 32, i32 225, i32 94, i32 195, i32 161, i32 225, i32 94, i32 195, i32 94, i32 208, i32 225, i32 94, i32 195, i32 94, i32 212, i32 225, i32 94, i32 195, i32 160, i32 225, i32 94, i32 195, i32 94, i32 215, i32 225, i32 94, i32 195, i32 94, i32 208, i32 225, i32 94, i32 195, i32 168, i32 225, i32 94, i32 195, i32 94, i32 221, i32 225, i32 94, i32 195, i32 160, i32 225, i32 94, i32 195, i32 94, i32 216, i32 225, i32 94, i32 195, i32 161, i32 225, i32 94, i32 195, i32 94, i32 221, i32 10, i32 0]
@EXIT_SUCCESS = global i32 0
define i32 @main() {
%1 = tail call i32 @wprintf(i8* bitcast ([25 x i32]* @.str to i8*))
%2 = tail call i32 @printf(i8* dereferenceable(1) bitcast ([25 x i32]* @.str to i8*))
%3 = tail call i32 @wprintf(i8* getelementptr inbounds ([25 x i8], [25 x i8]* @.str.1, i64 0, i64 0))
%4 = tail call i32 @wprintf(i8* bitcast ([161 x i32]* @.str.2 to i8*))
%5 = tail call i32 @wprintf(i8* bitcast ([70 x i32]* @.str.3 to i8*))
%6 = tail call i32 @wprintf(i8* bitcast ([257 x i32]* @.str.4 to i8*))
%7 = load i32, i32* @EXIT_SUCCESS
ret i32 %7
}