#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*/ VDP_FillVRAM(int, int, int);
int /*<<< orphan*/ color(int, int, int);
unsigned char inkey();
int /*<<< orphan*/ screen(int);
int /*<<< orphan*/ vpoke_block(int, unsigned char *, int);
int /*<<< orphan*/ vprint(int, int, char *, int);
void mainWindow() {
  int size, address, i;
  unsigned char value;
  unsigned char font[] = {
      0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF3, 0xF3, 0xF3,
      0xFF, 0xF3, 0xF3, 0xFF, 0xFF, 0xEB, 0xEB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
      0xFF, 0xC9, 0x80, 0x80, 0xC1, 0xE3, 0xF7, 0xFF, 0xF7, 0xC1, 0x97, 0xC1,
      0xF4, 0xC1, 0xF7, 0xFF, 0xFF, 0xCC, 0xC9, 0xF3, 0xE4, 0xCC, 0xFF, 0xFF,
      0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
      0xFF, 0xFF, 0xFF, 0xFF, 0xF9, 0xF3, 0xF3, 0xF3, 0xF3, 0xF3, 0xF9, 0xFF,
      0xCF, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xCF, 0xFF, 0xFF, 0xA5, 0xC3, 0x81,
      0xC3, 0xA5, 0xFF, 0xFF, 0xFF, 0xE7, 0xE7, 0x81, 0xE7, 0xE7, 0xFF, 0xFF,
      0xFF, 0xFF, 0xFF, 0xFF, 0xE7, 0xE7, 0xEF, 0xFF, 0xFF, 0xFF, 0xFF, 0x81,
      0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE7, 0xE7, 0xFF, 0xFF,
      0xFF, 0xF9, 0xF3, 0xE7, 0xCF, 0x9F, 0xFF, 0xFF, 0xFF, 0xC1, 0x9C, 0x9C,
      0x9C, 0xC1, 0xFF, 0xFF, 0xFF, 0xE7, 0xC7, 0xE7, 0xE7, 0xC3, 0xFF, 0xFF,
      0xFF, 0x81, 0xFC, 0xC1, 0x9F, 0x80, 0xFF, 0xFF, 0xFF, 0x81, 0xFC, 0xE1,
      0xFC, 0x81, 0xFF, 0xFF, 0xFF, 0x9C, 0x9C, 0x80, 0xFC, 0xFC, 0xFF, 0xFF,
      0xFF, 0x80, 0x9F, 0x81, 0xFC, 0x81, 0xFF, 0xFF, 0xFF, 0xC1, 0x9F, 0x81,
      0x9C, 0xC1, 0xFF, 0xFF, 0xFF, 0x80, 0xFC, 0xF9, 0xF3, 0xF3, 0xFF, 0xFF,
      0xFF, 0xC1, 0x9C, 0xC1, 0x9C, 0xC1, 0xFF, 0xFF, 0xFF, 0xC1, 0x9C, 0xC0,
      0xFC, 0xC1, 0xFF, 0xFF, 0xFF, 0xE7, 0xE7, 0xFF, 0xE7, 0xE7, 0xFF, 0xFF,
      0xFF, 0xE7, 0xE7, 0xFF, 0xE7, 0xE7, 0xEF, 0xFF, 0xFF, 0xF3, 0xE7, 0xCF,
      0xE7, 0xF3, 0xFF, 0xFF, 0xFF, 0xFF, 0xC3, 0xFF, 0xC3, 0xFF, 0xFF, 0xFF,
      0xFF, 0xCF, 0xE7, 0xF3, 0xE7, 0xCF, 0xFF, 0xFF, 0xFF, 0xE1, 0xCC, 0xF9,
      0xF3, 0xFF, 0xF3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
      0xFF, 0xC1, 0x9C, 0x80, 0x9C, 0x9C, 0xFF, 0xFF, 0xFF, 0x81, 0x9C, 0x81,
      0x9C, 0x81, 0xFF, 0xFF, 0xFF, 0xC0, 0x9F, 0x9F, 0x9F, 0xC0, 0xFF, 0xFF,
      0xFF, 0x81, 0x9C, 0x9C, 0x9C, 0x81, 0xFF, 0xFF, 0xFF, 0x80, 0x9F, 0x83,
      0x9F, 0x80, 0xFF, 0xFF, 0xFF, 0x80, 0x9F, 0x83, 0x9F, 0x9F, 0xFF, 0xFF,
      0xFF, 0xC0, 0x9F, 0x98, 0x9C, 0xC0, 0xFF, 0xFF, 0xFF, 0x9C, 0x9C, 0x80,
      0x9C, 0x9C, 0xFF, 0xFF, 0xFF, 0xE1, 0xF3, 0xF3, 0xF3, 0xE1, 0xFF, 0xFF,
      0xFF, 0xE1, 0xF3, 0xF3, 0x93, 0xC7, 0xFF, 0xFF, 0xFF, 0x9C, 0x99, 0x83,
      0x99, 0x9C, 0xFF, 0xFF, 0xFF, 0x9F, 0x9F, 0x9F, 0x9F, 0x80, 0xFF, 0xFF,
      0xFF, 0x9C, 0x88, 0x80, 0x94, 0x9C, 0xFF, 0xFF, 0xFF, 0x9C, 0x8C, 0x84,
      0x90, 0x98, 0xFF, 0xFF, 0xFF, 0xC1, 0x9C, 0x9C, 0x9C, 0xC1, 0xFF, 0xFF,
      0xFF, 0x81, 0x9C, 0x9C, 0x81, 0x9F, 0xFF, 0xFF, 0xFF, 0xC1, 0x9C, 0x94,
      0x99, 0xC2, 0xFF, 0xFF, 0xFF, 0x81, 0x9C, 0x9C, 0x81, 0x9C, 0xFF, 0xFF,
      0xFF, 0xC0, 0x9F, 0xC1, 0xFC, 0x81, 0xFF, 0xFF, 0xFF, 0x81, 0xE7, 0xE7,
      0xE7, 0xE7, 0xFF, 0xFF, 0xFF, 0x9C, 0x9C, 0x9C, 0x9C, 0xC1, 0xFF, 0xFF,
      0xFF, 0x9C, 0x9C, 0x9C, 0xC9, 0xE3, 0xFF, 0xFF, 0xFF, 0x9C, 0x94, 0x80,
      0x88, 0x9C, 0xFF, 0xFF, 0xFF, 0x9C, 0xC9, 0xE3, 0xC9, 0x9C, 0xFF, 0xFF,
      0xFF, 0x99, 0x99, 0xC3, 0xE7, 0xE7, 0xFF, 0xFF, 0xFF, 0x81, 0xF3, 0xE7,
      0xCF, 0x81, 0xFF, 0xFF};
  color(15, 4, 1);
  screen(2);
  VDP_FillVRAM(6144, 768, 32);
  VDP_FillVRAM(8448, 4568, 0x4F);
  vpoke_block(256, font, 465);
  vpoke_block(2304, font, 465);
  vpoke_block(4352, font, 465);
  vprint(9, 7, "HELLO WORLD!", 13);
  vprint(10, 11, "HOLA MUNDO!", 12);
  value = inkey();
  return;
}


x86 assembly (clang, -O0):
<mainWindow>:
push   %rbp
mov    %rsp,%rbp
sub    $0x1f0,%rsp
lea    -0x1f0(%rbp),%rdi
lea    0xe77(%rip),%rsi
mov    $0x1d8,%edx
call   1060 <memcpy@plt>
mov    $0xf,%edi
mov    $0x4,%esi
mov    $0x1,%edx
call   1070 <color@plt>
mov    $0x2,%edi
call   1030 <screen@plt>
mov    $0x1800,%edi
mov    $0x300,%esi
mov    $0x20,%edx
call   1040 <VDP_FillVRAM@plt>
mov    $0x2100,%edi
mov    $0x11d8,%esi
mov    $0x4f,%edx
call   1040 <VDP_FillVRAM@plt>
lea    -0x1f0(%rbp),%rsi
mov    $0x100,%edi
mov    $0x1d1,%edx
call   1090 <vpoke_block@plt>
lea    -0x1f0(%rbp),%rsi
mov    $0x900,%edi
mov    $0x1d1,%edx
call   1090 <vpoke_block@plt>
lea    -0x1f0(%rbp),%rsi
mov    $0x1100,%edi
mov    $0x1d1,%edx
call   1090 <vpoke_block@plt>
mov    $0x9,%edi
mov    $0x7,%esi
lea    0xfac(%rip),%rdx
mov    $0xd,%ecx
call   1050 <vprint@plt>
mov    $0xa,%edi
mov    $0xb,%esi
lea    0xf9e(%rip),%rdx
mov    $0xc,%ecx
call   1050 <vprint@plt>
mov    $0x0,%al
call   1080 <inkey@plt>
mov    %al,-0xd(%rbp)
add    $0x1f0,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<mainWindow>:
push   %rbx
sub    $0x1e0,%rsp
lea    0xe81(%rip),%rsi
mov    %rsp,%rbx
mov    $0x1d8,%edx
mov    %rbx,%rdi
call   1060 <memcpy@plt>
mov    $0xf,%edi
mov    $0x4,%esi
mov    $0x1,%edx
call   1070 <color@plt>
mov    $0x2,%edi
call   1030 <screen@plt>
mov    $0x1800,%edi
mov    $0x300,%esi
mov    $0x20,%edx
call   1040 <VDP_FillVRAM@plt>
mov    $0x2100,%edi
mov    $0x11d8,%esi
mov    $0x4f,%edx
call   1040 <VDP_FillVRAM@plt>
mov    $0x100,%edi
mov    %rbx,%rsi
mov    $0x1d1,%edx
call   1090 <vpoke_block@plt>
mov    $0x900,%edi
mov    %rbx,%rsi
mov    $0x1d1,%edx
call   1090 <vpoke_block@plt>
mov    $0x1100,%edi
mov    %rbx,%rsi
mov    $0x1d1,%edx
call   1090 <vpoke_block@plt>
lea    0xfc6(%rip),%rdx
mov    $0x9,%edi
mov    $0x7,%esi
mov    $0xd,%ecx
call   1050 <vprint@plt>
lea    0xfb8(%rip),%rdx
mov    $0xa,%edi
mov    $0xb,%esi
mov    $0xc,%ecx
call   1050 <vprint@plt>
xor    %eax,%eax
call   1080 <inkey@plt>
add    $0x1e0,%rsp
pop    %rbx
ret

LLVM IR (-O0):
@__const.mainWindow.font = [472 x i8] c"\FF\FF\FF\FF\FF\FF\FF\FF\FF\F3\F3\F3\FF\F3\F3\FF\FF\EB\EB\FF\FF\FF\FF\FF\FF\C9\80\80\C1\E3\F7\FF\F7\C1\97\C1\F4\C1\F7\FF\FF\CC\C9\F3\E4\CC\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\F9\F3\F3\F3\F3\F3\F9\FF\CF\E7\E7\E7\E7\E7\CF\FF\FF\A5\C3\81\C3\A5\FF\FF\FF\E7\E7\81\E7\E7\FF\FF\FF\FF\FF\FF\E7\E7\EF\FF\FF\FF\FF\81\FF\FF\FF\FF\FF\FF\FF\FF\E7\E7\FF\FF\FF\F9\F3\E7\CF\9F\FF\FF\FF\C1\9C\9C\9C\C1\FF\FF\FF\E7\C7\E7\E7\C3\FF\FF\FF\81\FC\C1\9F\80\FF\FF\FF\81\FC\E1\FC\81\FF\FF\FF\9C\9C\80\FC\FC\FF\FF\FF\80\9F\81\FC\81\FF\FF\FF\C1\9F\81\9C\C1\FF\FF\FF\80\FC\F9\F3\F3\FF\FF\FF\C1\9C\C1\9C\C1\FF\FF\FF\C1\9C\C0\FC\C1\FF\FF\FF\E7\E7\FF\E7\E7\FF\FF\FF\E7\E7\FF\E7\E7\EF\FF\FF\F3\E7\CF\E7\F3\FF\FF\FF\FF\C3\FF\C3\FF\FF\FF\FF\CF\E7\F3\E7\CF\FF\FF\FF\E1\CC\F9\F3\FF\F3\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\C1\9C\80\9C\9C\FF\FF\FF\81\9C\81\9C\81\FF\FF\FF\C0\9F\9F\9F\C0\FF\FF\FF\81\9C\9C\9C\81\FF\FF\FF\80\9F\83\9F\80\FF\FF\FF\80\9F\83\9F\9F\FF\FF\FF\C0\9F\98\9C\C0\FF\FF\FF\9C\9C\80\9C\9C\FF\FF\FF\E1\F3\F3\F3\E1\FF\FF\FF\E1\F3\F3\93\C7\FF\FF\FF\9C\99\83\99\9C\FF\FF\FF\9F\9F\9F\9F\80\FF\FF\FF\9C\88\80\94\9C\FF\FF\FF\9C\8C\84\90\98\FF\FF\FF\C1\9C\9C\9C\C1\FF\FF\FF\81\9C\9C\81\9F\FF\FF\FF\C1\9C\94\99\C2\FF\FF\FF\81\9C\9C\81\9C\FF\FF\FF\C0\9F\C1\FC\81\FF\FF\FF\81\E7\E7\E7\E7\FF\FF\FF\9C\9C\9C\9C\C1\FF\FF\FF\9C\9C\9C\C9\E3\FF\FF\FF\9C\94\80\88\9C\FF\FF\FF\9C\C9\E3\C9\9C\FF\FF\FF\99\99\C3\E7\E7\FF\FF\FF\81\F3\E7\CF\81\FF\FF"
@.str = [13 x i8] c"HELLO WORLD!\00"
@.str.1 = [12 x i8] c"HOLA MUNDO!\00"
define void @mainWindow() {
%1 = alloca i32
%2 = alloca i32
%3 = alloca i32
%4 = alloca i8
%5 = alloca [472 x i8]
%6 = bitcast [472 x i8]* %5 to i8*
%7 = call i32 @color(i32 15, i32 4, i32 1)
%8 = call i32 @screen(i32 2)
%9 = call i32 @VDP_FillVRAM(i32 6144, i32 768, i32 32)
%10 = call i32 @VDP_FillVRAM(i32 8448, i32 4568, i32 79)
%11 = getelementptr inbounds [472 x i8], [472 x i8]* %5, i64 0, i64 0
%12 = call i32 @vpoke_block(i32 256, i8* %11, i32 465)
%13 = getelementptr inbounds [472 x i8], [472 x i8]* %5, i64 0, i64 0
%14 = call i32 @vpoke_block(i32 2304, i8* %13, i32 465)
%15 = getelementptr inbounds [472 x i8], [472 x i8]* %5, i64 0, i64 0
%16 = call i32 @vpoke_block(i32 4352, i8* %15, i32 465)
%17 = call i32 @vprint(i32 9, i32 7, i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str, i64 0, i64 0), i32 13)
%18 = call i32 @vprint(i32 10, i32 11, i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0), i32 12)
%19 = call zeroext i8 (...) @inkey()
store i8 %19, i8* %4
ret void
}

LLVM IR (-O2):
@__const.mainWindow.font = [472 x i8] c"\FF\FF\FF\FF\FF\FF\FF\FF\FF\F3\F3\F3\FF\F3\F3\FF\FF\EB\EB\FF\FF\FF\FF\FF\FF\C9\80\80\C1\E3\F7\FF\F7\C1\97\C1\F4\C1\F7\FF\FF\CC\C9\F3\E4\CC\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\F9\F3\F3\F3\F3\F3\F9\FF\CF\E7\E7\E7\E7\E7\CF\FF\FF\A5\C3\81\C3\A5\FF\FF\FF\E7\E7\81\E7\E7\FF\FF\FF\FF\FF\FF\E7\E7\EF\FF\FF\FF\FF\81\FF\FF\FF\FF\FF\FF\FF\FF\E7\E7\FF\FF\FF\F9\F3\E7\CF\9F\FF\FF\FF\C1\9C\9C\9C\C1\FF\FF\FF\E7\C7\E7\E7\C3\FF\FF\FF\81\FC\C1\9F\80\FF\FF\FF\81\FC\E1\FC\81\FF\FF\FF\9C\9C\80\FC\FC\FF\FF\FF\80\9F\81\FC\81\FF\FF\FF\C1\9F\81\9C\C1\FF\FF\FF\80\FC\F9\F3\F3\FF\FF\FF\C1\9C\C1\9C\C1\FF\FF\FF\C1\9C\C0\FC\C1\FF\FF\FF\E7\E7\FF\E7\E7\FF\FF\FF\E7\E7\FF\E7\E7\EF\FF\FF\F3\E7\CF\E7\F3\FF\FF\FF\FF\C3\FF\C3\FF\FF\FF\FF\CF\E7\F3\E7\CF\FF\FF\FF\E1\CC\F9\F3\FF\F3\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\C1\9C\80\9C\9C\FF\FF\FF\81\9C\81\9C\81\FF\FF\FF\C0\9F\9F\9F\C0\FF\FF\FF\81\9C\9C\9C\81\FF\FF\FF\80\9F\83\9F\80\FF\FF\FF\80\9F\83\9F\9F\FF\FF\FF\C0\9F\98\9C\C0\FF\FF\FF\9C\9C\80\9C\9C\FF\FF\FF\E1\F3\F3\F3\E1\FF\FF\FF\E1\F3\F3\93\C7\FF\FF\FF\9C\99\83\99\9C\FF\FF\FF\9F\9F\9F\9F\80\FF\FF\FF\9C\88\80\94\9C\FF\FF\FF\9C\8C\84\90\98\FF\FF\FF\C1\9C\9C\9C\C1\FF\FF\FF\81\9C\9C\81\9F\FF\FF\FF\C1\9C\94\99\C2\FF\FF\FF\81\9C\9C\81\9C\FF\FF\FF\C0\9F\C1\FC\81\FF\FF\FF\81\E7\E7\E7\E7\FF\FF\FF\9C\9C\9C\9C\C1\FF\FF\FF\9C\9C\9C\C9\E3\FF\FF\FF\9C\94\80\88\9C\FF\FF\FF\9C\C9\E3\C9\9C\FF\FF\FF\99\99\C3\E7\E7\FF\FF\FF\81\F3\E7\CF\81\FF\FF"
@.str = [13 x i8] c"HELLO WORLD!\00"
@.str.1 = [12 x i8] c"HOLA MUNDO!\00"
define void @mainWindow() {
%1 = alloca [472 x i8]
%2 = getelementptr inbounds [472 x i8], [472 x i8]* %1, i64 0, i64 0
%3 = tail call i32 @color(i32 15, i32 4, i32 1)
%4 = tail call i32 @screen(i32 2)
%5 = tail call i32 @VDP_FillVRAM(i32 6144, i32 768, i32 32)
%6 = tail call i32 @VDP_FillVRAM(i32 8448, i32 4568, i32 79)
%7 = call i32 @vpoke_block(i32 256, i8* %2, i32 465)
%8 = call i32 @vpoke_block(i32 2304, i8* %2, i32 465)
%9 = call i32 @vpoke_block(i32 4352, i8* %2, i32 465)
%10 = call i32 @vprint(i32 9, i32 7, i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str, i64 0, i64 0), i32 13)
%11 = call i32 @vprint(i32 10, i32 11, i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0), i32 12)
%12 = call zeroext i8 (...) @inkey()
ret void
}