#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*/ printf(char *);
int /*<<< orphan*/ write_port(char *, int);
int main() {
  unsigned char *vga_mem = (unsigned char *)(0xb0000);
  int i;
  write_port((char *)0x03c8, 0);
  write_port((char *)0x03c9, 0x00);
  write_port((char *)0x03c9, 0x00);
  write_port((char *)0x03c9, 0x00);
  write_port((char *)0x03c9, 0x33);
  write_port((char *)0x03c9, 0xff);
  write_port((char *)0x03c9, 0x22);
  write_port((char *)0x03c9, 0x00);
  write_port((char *)0x03c9, 0xff);
  write_port((char *)0x03c9, 0x00);
  write_port((char *)0x03c9, 0x00);
  write_port((char *)0x03c9, 0x00);
  write_port((char *)0x03c9, 0xff);
  write_port((char *)0x03c9, 0x33);
  write_port((char *)0x03c9, 0xff);
  write_port((char *)0x03c9, 0x00);
  printf("Drawing (0x33, 0xff, 0x22) a's...\n");
  for (i = 0; i < 80 * 25 * 2; i += 2) {
    vga_mem[i] = 'a';
    vga_mem[i + 1] = 1;
  }
  printf("Pausing...\n");
  for (i = 0; i < 50000; i++)
    ;
  printf("Drawing Blue z's...\n");
  for (i = 0; i < 80 * 25 * 2; i += 2) {
    vga_mem[i] = 'z';
    vga_mem[i + 1] = 3;
  }
  printf("Pausing...\n");
  for (i = 0; i < 50000; i++)
    ;
  printf("Drawing Green H's...\n");
  for (i = 0; i < 80 * 25 * 2; i += 2) {
    vga_mem[i] = 'H';
    vga_mem[i + 1] = 2;
  }
  printf("Pausing...\n");
  for (i = 0; i < 50000; i++)
    ;
  printf("Drawing (0x88, 0xff, 0x88) g's...\n");
  for (i = 0; i < 80 * 25 * 2; i += 2) {
    vga_mem[i] = 'g';
    vga_mem[i + 1] = 4;
  }
  while (1)
    ;
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0x20,%rsp
movl   $0x0,-0x4(%rbp)
mov    $0xb0000,%eax
mov    %rax,-0x10(%rbp)
mov    $0x3c8,%edi
xor    %esi,%esi
call   1040 <write_port@plt>
mov    $0x3c9,%edi
xor    %esi,%esi
call   1040 <write_port@plt>
mov    $0x3c9,%edi
xor    %esi,%esi
call   1040 <write_port@plt>
mov    $0x3c9,%edi
xor    %esi,%esi
call   1040 <write_port@plt>
mov    $0x3c9,%edi
mov    $0x33,%esi
call   1040 <write_port@plt>
mov    $0x3c9,%edi
mov    $0xff,%esi
call   1040 <write_port@plt>
mov    $0x3c9,%edi
mov    $0x22,%esi
call   1040 <write_port@plt>
mov    $0x3c9,%edi
xor    %esi,%esi
call   1040 <write_port@plt>
mov    $0x3c9,%edi
mov    $0xff,%esi
call   1040 <write_port@plt>
mov    $0x3c9,%edi
xor    %esi,%esi
call   1040 <write_port@plt>
mov    $0x3c9,%edi
xor    %esi,%esi
call   1040 <write_port@plt>
mov    $0x3c9,%edi
xor    %esi,%esi
call   1040 <write_port@plt>
mov    $0x3c9,%edi
mov    $0xff,%esi
call   1040 <write_port@plt>
mov    $0x3c9,%edi
mov    $0x33,%esi
call   1040 <write_port@plt>
mov    $0x3c9,%edi
mov    $0xff,%esi
call   1040 <write_port@plt>
mov    $0x3c9,%edi
xor    %esi,%esi
call   1040 <write_port@plt>
lea    0xdec(%rip),%rdi
call   1030 <printf@plt>
movl   $0x0,-0x14(%rbp)
cmpl   $0xfa0,-0x14(%rbp)
jge    1258 <main+0x138>
mov    -0x10(%rbp),%rax
movslq -0x14(%rbp),%rcx
movb   $0x61,(%rax,%rcx,1)
mov    -0x10(%rbp),%rax
mov    -0x14(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movb   $0x1,(%rax,%rcx,1)
mov    -0x14(%rbp),%eax
add    $0x2,%eax
mov    %eax,-0x14(%rbp)
jmp    1220 <main+0x100>
lea    0xdc4(%rip),%rdi
call   1030 <printf@plt>
movl   $0x0,-0x14(%rbp)
cmpl   $0xc350,-0x14(%rbp)
jge    128b <main+0x16b>
jmp    127d <main+0x15d>
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14(%rbp)
jmp    126b <main+0x14b>
lea    0xd9d(%rip),%rdi
call   1030 <printf@plt>
movl   $0x0,-0x14(%rbp)
cmpl   $0xfa0,-0x14(%rbp)
jge    12d6 <main+0x1b6>
mov    -0x10(%rbp),%rax
movslq -0x14(%rbp),%rcx
movb   $0x7a,(%rax,%rcx,1)
mov    -0x10(%rbp),%rax
mov    -0x14(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movb   $0x3,(%rax,%rcx,1)
mov    -0x14(%rbp),%eax
add    $0x2,%eax
mov    %eax,-0x14(%rbp)
jmp    129e <main+0x17e>
lea    0xd46(%rip),%rdi
call   1030 <printf@plt>
movl   $0x0,-0x14(%rbp)
cmpl   $0xc350,-0x14(%rbp)
jge    1309 <main+0x1e9>
jmp    12fb <main+0x1db>
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14(%rbp)
jmp    12e9 <main+0x1c9>
lea    0xd34(%rip),%rdi
call   1030 <printf@plt>
movl   $0x0,-0x14(%rbp)
cmpl   $0xfa0,-0x14(%rbp)
jge    1354 <main+0x234>
mov    -0x10(%rbp),%rax
movslq -0x14(%rbp),%rcx
movb   $0x48,(%rax,%rcx,1)
mov    -0x10(%rbp),%rax
mov    -0x14(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movb   $0x2,(%rax,%rcx,1)
mov    -0x14(%rbp),%eax
add    $0x2,%eax
mov    %eax,-0x14(%rbp)
jmp    131c <main+0x1fc>
lea    0xcc8(%rip),%rdi
call   1030 <printf@plt>
movl   $0x0,-0x14(%rbp)
cmpl   $0xc350,-0x14(%rbp)
jge    1387 <main+0x267>
jmp    1379 <main+0x259>
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14(%rbp)
jmp    1367 <main+0x247>
lea    0xccc(%rip),%rdi
call   1030 <printf@plt>
movl   $0x0,-0x14(%rbp)
cmpl   $0xfa0,-0x14(%rbp)
jge    13d2 <main+0x2b2>
mov    -0x10(%rbp),%rax
movslq -0x14(%rbp),%rcx
movb   $0x67,(%rax,%rcx,1)
mov    -0x10(%rbp),%rax
mov    -0x14(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movb   $0x4,(%rax,%rcx,1)
mov    -0x14(%rbp),%eax
add    $0x2,%eax
mov    %eax,-0x14(%rbp)
jmp    139a <main+0x27a>
jmp    13d7 <main+0x2b7>
jmp    13d7 <main+0x2b7>

x86 assembly (clang, -O2):
<main>:
push   %r14
push   %rbx
push   %rax
mov    $0xb0070,%r14d
xor    %ebx,%ebx
mov    $0x3c8,%edi
xor    %esi,%esi
call   1040 <write_port@plt>
mov    $0x3c9,%edi
xor    %esi,%esi
call   1040 <write_port@plt>
mov    $0x3c9,%edi
xor    %esi,%esi
call   1040 <write_port@plt>
mov    $0x3c9,%edi
xor    %esi,%esi
call   1040 <write_port@plt>
mov    $0x3c9,%edi
mov    $0x33,%esi
call   1040 <write_port@plt>
mov    $0x3c9,%edi
mov    $0xff,%esi
call   1040 <write_port@plt>
mov    $0x3c9,%edi
mov    $0x22,%esi
call   1040 <write_port@plt>
mov    $0x3c9,%edi
xor    %esi,%esi
call   1040 <write_port@plt>
mov    $0x3c9,%edi
mov    $0xff,%esi
call   1040 <write_port@plt>
mov    $0x3c9,%edi
xor    %esi,%esi
call   1040 <write_port@plt>
mov    $0x3c9,%edi
xor    %esi,%esi
call   1040 <write_port@plt>
mov    $0x3c9,%edi
xor    %esi,%esi
call   1040 <write_port@plt>
mov    $0x3c9,%edi
mov    $0xff,%esi
call   1040 <write_port@plt>
mov    $0x3c9,%edi
mov    $0x33,%esi
call   1040 <write_port@plt>
mov    $0x3c9,%edi
mov    $0xff,%esi
call   1040 <write_port@plt>
mov    $0x3c9,%edi
xor    %esi,%esi
call   1040 <write_port@plt>
lea    0xe38(%rip),%rdi
call   1030 <puts@plt>
movaps 0xdec(%rip),%xmm0
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
movaps %xmm0,-0x70(%r14,%rbx,2)
movaps %xmm0,-0x60(%r14,%rbx,2)
cmp    $0x7c0,%rbx
je     125e <main+0x13e>
movaps %xmm0,-0x50(%r14,%rbx,2)
movaps %xmm0,-0x40(%r14,%rbx,2)
movaps %xmm0,-0x30(%r14,%rbx,2)
movaps %xmm0,-0x20(%r14,%rbx,2)
movaps %xmm0,-0x10(%r14,%rbx,2)
movaps %xmm0,(%r14,%rbx,2)
add    $0x40,%rbx
jmp    1220 <main+0x100>
lea    0xe26(%rip),%rdi
call   1030 <puts@plt>
lea    0xdf1(%rip),%rdi
call   1030 <puts@plt>
xor    %eax,%eax
movaps 0xd91(%rip),%xmm0
nop
movaps %xmm0,-0x70(%r14,%rax,2)
movaps %xmm0,-0x60(%r14,%rax,2)
cmp    $0x7c0,%rax
je     12bd <main+0x19d>
movaps %xmm0,-0x50(%r14,%rax,2)
movaps %xmm0,-0x40(%r14,%rax,2)
movaps %xmm0,-0x30(%r14,%rax,2)
movaps %xmm0,-0x20(%r14,%rax,2)
movaps %xmm0,-0x10(%r14,%rax,2)
movaps %xmm0,(%r14,%rax,2)
add    $0x40,%rax
jmp    1280 <main+0x160>
lea    0xdc7(%rip),%rdi
call   1030 <puts@plt>
lea    0xda6(%rip),%rdi
call   1030 <puts@plt>
xor    %eax,%eax
movaps 0xd42(%rip),%xmm0
xchg   %ax,%ax
movaps %xmm0,-0x70(%r14,%rax,2)
movaps %xmm0,-0x60(%r14,%rax,2)
cmp    $0x7c0,%rax
je     131d <main+0x1fd>
movaps %xmm0,-0x50(%r14,%rax,2)
movaps %xmm0,-0x40(%r14,%rax,2)
movaps %xmm0,-0x30(%r14,%rax,2)
movaps %xmm0,-0x20(%r14,%rax,2)
movaps %xmm0,-0x10(%r14,%rax,2)
movaps %xmm0,(%r14,%rax,2)
add    $0x40,%rax
jmp    12e0 <main+0x1c0>
lea    0xd67(%rip),%rdi
call   1030 <puts@plt>
lea    0xd66(%rip),%rdi
call   1030 <puts@plt>
xor    %eax,%eax
movaps 0xcf2(%rip),%xmm0
xchg   %ax,%ax
movaps %xmm0,-0x70(%r14,%rax,2)
movaps %xmm0,-0x60(%r14,%rax,2)
cmp    $0x7c0,%rax
je     1380 <main+0x260>
movaps %xmm0,-0x50(%r14,%rax,2)
movaps %xmm0,-0x40(%r14,%rax,2)
movaps %xmm0,-0x30(%r14,%rax,2)
movaps %xmm0,-0x20(%r14,%rax,2)
movaps %xmm0,-0x10(%r14,%rax,2)
movaps %xmm0,(%r14,%rax,2)
add    $0x40,%rax
jmp    1340 <main+0x220>
nopl   (%rax)
jmp    1380 <main+0x260>

LLVM IR (-O0):
@.str = [35 x i8] c"Drawing (0x33, 0xff, 0x22) a's...\0A\00"
@.str.1 = [12 x i8] c"Pausing...\0A\00"
@.str.2 = [21 x i8] c"Drawing Blue z's...\0A\00"
@.str.3 = [22 x i8] c"Drawing Green H's...\0A\00"
@.str.4 = [35 x i8] c"Drawing (0x88, 0xff, 0x88) g's...\0A\00"
define i32 @main() {
%1 = alloca i32
%2 = alloca i8*
%3 = alloca i32
store i32 0, i32* %1
store i8* inttoptr (i64 720896 to i8*), i8** %2
%4 = call i32 @write_port(i8* inttoptr (i64 968 to i8*), i32 0)
%5 = call i32 @write_port(i8* inttoptr (i64 969 to i8*), i32 0)
%6 = call i32 @write_port(i8* inttoptr (i64 969 to i8*), i32 0)
%7 = call i32 @write_port(i8* inttoptr (i64 969 to i8*), i32 0)
%8 = call i32 @write_port(i8* inttoptr (i64 969 to i8*), i32 51)
%9 = call i32 @write_port(i8* inttoptr (i64 969 to i8*), i32 255)
%10 = call i32 @write_port(i8* inttoptr (i64 969 to i8*), i32 34)
%11 = call i32 @write_port(i8* inttoptr (i64 969 to i8*), i32 0)
%12 = call i32 @write_port(i8* inttoptr (i64 969 to i8*), i32 255)
%13 = call i32 @write_port(i8* inttoptr (i64 969 to i8*), i32 0)
%14 = call i32 @write_port(i8* inttoptr (i64 969 to i8*), i32 0)
%15 = call i32 @write_port(i8* inttoptr (i64 969 to i8*), i32 0)
%16 = call i32 @write_port(i8* inttoptr (i64 969 to i8*), i32 255)
%17 = call i32 @write_port(i8* inttoptr (i64 969 to i8*), i32 51)
%18 = call i32 @write_port(i8* inttoptr (i64 969 to i8*), i32 255)
%19 = call i32 @write_port(i8* inttoptr (i64 969 to i8*), i32 0)
%20 = call i32 @printf(i8* getelementptr inbounds ([35 x i8], [35 x i8]* @.str, i64 0, i64 0))
store i32 0, i32* %3
br label %21
21: ; preds = %34, %0
%22 = load i32, i32* %3
%23 = icmp slt i32 %22, 4000
br i1 %23, label %24, label %37
24: ; preds = %21
%25 = load i8*, i8** %2
%26 = load i32, i32* %3
%27 = sext i32 %26 to i64
%28 = getelementptr inbounds i8, i8* %25, i64 %27
store i8 97, i8* %28
%29 = load i8*, i8** %2
%30 = load i32, i32* %3
%31 = add nsw i32 %30, 1
%32 = sext i32 %31 to i64
%33 = getelementptr inbounds i8, i8* %29, i64 %32
store i8 1, i8* %33
br label %34
34: ; preds = %24
%35 = load i32, i32* %3
%36 = add nsw i32 %35, 2
store i32 %36, i32* %3
br label %21
37: ; preds = %21
%38 = call i32 @printf(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0))
store i32 0, i32* %3
br label %39
39: ; preds = %43, %37
%40 = load i32, i32* %3
%41 = icmp slt i32 %40, 50000
br i1 %41, label %42, label %46
42: ; preds = %39
br label %43
43: ; preds = %42
%44 = load i32, i32* %3
%45 = add nsw i32 %44, 1
store i32 %45, i32* %3
br label %39
46: ; preds = %39
%47 = call i32 @printf(i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.2, i64 0, i64 0))
store i32 0, i32* %3
br label %48
48: ; preds = %61, %46
%49 = load i32, i32* %3
%50 = icmp slt i32 %49, 4000
br i1 %50, label %51, label %64
51: ; preds = %48
%52 = load i8*, i8** %2
%53 = load i32, i32* %3
%54 = sext i32 %53 to i64
%55 = getelementptr inbounds i8, i8* %52, i64 %54
store i8 122, i8* %55
%56 = load i8*, i8** %2
%57 = load i32, i32* %3
%58 = add nsw i32 %57, 1
%59 = sext i32 %58 to i64
%60 = getelementptr inbounds i8, i8* %56, i64 %59
store i8 3, i8* %60
br label %61
61: ; preds = %51
%62 = load i32, i32* %3
%63 = add nsw i32 %62, 2
store i32 %63, i32* %3
br label %48
64: ; preds = %48
%65 = call i32 @printf(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0))
store i32 0, i32* %3
br label %66
66: ; preds = %70, %64
%67 = load i32, i32* %3
%68 = icmp slt i32 %67, 50000
br i1 %68, label %69, label %73
69: ; preds = %66
br label %70
70: ; preds = %69
%71 = load i32, i32* %3
%72 = add nsw i32 %71, 1
store i32 %72, i32* %3
br label %66
73: ; preds = %66
%74 = call i32 @printf(i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str.3, i64 0, i64 0))
store i32 0, i32* %3
br label %75
75: ; preds = %88, %73
%76 = load i32, i32* %3
%77 = icmp slt i32 %76, 4000
br i1 %77, label %78, label %91
78: ; preds = %75
%79 = load i8*, i8** %2
%80 = load i32, i32* %3
%81 = sext i32 %80 to i64
%82 = getelementptr inbounds i8, i8* %79, i64 %81
store i8 72, i8* %82
%83 = load i8*, i8** %2
%84 = load i32, i32* %3
%85 = add nsw i32 %84, 1
%86 = sext i32 %85 to i64
%87 = getelementptr inbounds i8, i8* %83, i64 %86
store i8 2, i8* %87
br label %88
88: ; preds = %78
%89 = load i32, i32* %3
%90 = add nsw i32 %89, 2
store i32 %90, i32* %3
br label %75
91: ; preds = %75
%92 = call i32 @printf(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0))
store i32 0, i32* %3
br label %93
93: ; preds = %97, %91
%94 = load i32, i32* %3
%95 = icmp slt i32 %94, 50000
br i1 %95, label %96, label %100
96: ; preds = %93
br label %97
97: ; preds = %96
%98 = load i32, i32* %3
%99 = add nsw i32 %98, 1
store i32 %99, i32* %3
br label %93
100: ; preds = %93
%101 = call i32 @printf(i8* getelementptr inbounds ([35 x i8], [35 x i8]* @.str.4, i64 0, i64 0))
store i32 0, i32* %3
br label %102
102: ; preds = %115, %100
%103 = load i32, i32* %3
%104 = icmp slt i32 %103, 4000
br i1 %104, label %105, label %118
105: ; preds = %102
%106 = load i8*, i8** %2
%107 = load i32, i32* %3
%108 = sext i32 %107 to i64
%109 = getelementptr inbounds i8, i8* %106, i64 %108
store i8 103, i8* %109
%110 = load i8*, i8** %2
%111 = load i32, i32* %3
%112 = add nsw i32 %111, 1
%113 = sext i32 %112 to i64
%114 = getelementptr inbounds i8, i8* %110, i64 %113
store i8 4, i8* %114
br label %115
115: ; preds = %105
%116 = load i32, i32* %3
%117 = add nsw i32 %116, 2
store i32 %117, i32* %3
br label %102
118: ; preds = %102
br label %119
119: ; preds = %118, %119
br label %119
}

LLVM IR (-O2):
@str = [34 x i8] c"Drawing (0x33, 0xff, 0x22) a's...\00"
@str.6 = [20 x i8] c"Drawing Blue z's...\00"
@str.8 = [21 x i8] c"Drawing Green H's...\00"
@str.9 = [11 x i8] c"Pausing...\00"
@str.10 = [34 x i8] c"Drawing (0x88, 0xff, 0x88) g's...\00"
define i32 @main() {
%1 = tail call i32 @write_port(i8* inttoptr (i64 968 to i8*), i32 0)
%2 = tail call i32 @write_port(i8* inttoptr (i64 969 to i8*), i32 0)
%3 = tail call i32 @write_port(i8* inttoptr (i64 969 to i8*), i32 0)
%4 = tail call i32 @write_port(i8* inttoptr (i64 969 to i8*), i32 0)
%5 = tail call i32 @write_port(i8* inttoptr (i64 969 to i8*), i32 51)
%6 = tail call i32 @write_port(i8* inttoptr (i64 969 to i8*), i32 255)
%7 = tail call i32 @write_port(i8* inttoptr (i64 969 to i8*), i32 34)
%8 = tail call i32 @write_port(i8* inttoptr (i64 969 to i8*), i32 0)
%9 = tail call i32 @write_port(i8* inttoptr (i64 969 to i8*), i32 255)
%10 = tail call i32 @write_port(i8* inttoptr (i64 969 to i8*), i32 0)
%11 = tail call i32 @write_port(i8* inttoptr (i64 969 to i8*), i32 0)
%12 = tail call i32 @write_port(i8* inttoptr (i64 969 to i8*), i32 0)
%13 = tail call i32 @write_port(i8* inttoptr (i64 969 to i8*), i32 255)
%14 = tail call i32 @write_port(i8* inttoptr (i64 969 to i8*), i32 51)
%15 = tail call i32 @write_port(i8* inttoptr (i64 969 to i8*), i32 255)
%16 = tail call i32 @write_port(i8* inttoptr (i64 969 to i8*), i32 0)
%17 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([34 x i8], [34 x i8]* @str, i64 0, i64 0))
br label %18
18: ; preds = %29, %0
%19 = phi i64 [ 0, %0 ], [ %51, %29 ]
%20 = shl nuw i64 %19, 1
%21 = or i64 %20, 1
%22 = or i64 %20, 17
%23 = getelementptr inbounds i8, i8* inttoptr (i64 720895 to i8*), i64 %21
%24 = bitcast i8* %23 to <16 x i8>*
%25 = getelementptr inbounds i8, i8* inttoptr (i64 720895 to i8*), i64 %22
%26 = bitcast i8* %25 to <16 x i8>*
store <16 x i8> <i8 97, i8 1, i8 97, i8 1, i8 97, i8 1, i8 97, i8 1, i8 97, i8 1, i8 97, i8 1, i8 97, i8 1, i8 97, i8 1>, <16 x i8>* %24
store <16 x i8> <i8 97, i8 1, i8 97, i8 1, i8 97, i8 1, i8 97, i8 1, i8 97, i8 1, i8 97, i8 1, i8 97, i8 1, i8 97, i8 1>, <16 x i8>* %26
%27 = or i64 %19, 16
%28 = icmp eq i64 %27, 2000
br i1 %28, label %52, label %29
29: ; preds = %18
%30 = shl nuw i64 %27, 1
%31 = or i64 %30, 1
%32 = or i64 %30, 17
%33 = getelementptr inbounds i8, i8* inttoptr (i64 720895 to i8*), i64 %31
%34 = bitcast i8* %33 to <16 x i8>*
%35 = getelementptr inbounds i8, i8* inttoptr (i64 720895 to i8*), i64 %32
%36 = bitcast i8* %35 to <16 x i8>*
store <16 x i8> <i8 97, i8 1, i8 97, i8 1, i8 97, i8 1, i8 97, i8 1, i8 97, i8 1, i8 97, i8 1, i8 97, i8 1, i8 97, i8 1>, <16 x i8>* %34
store <16 x i8> <i8 97, i8 1, i8 97, i8 1, i8 97, i8 1, i8 97, i8 1, i8 97, i8 1, i8 97, i8 1, i8 97, i8 1, i8 97, i8 1>, <16 x i8>* %36
%37 = shl nuw i64 %19, 1
%38 = or i64 %37, 65
%39 = or i64 %37, 81
%40 = getelementptr inbounds i8, i8* inttoptr (i64 720895 to i8*), i64 %38
%41 = bitcast i8* %40 to <16 x i8>*
%42 = getelementptr inbounds i8, i8* inttoptr (i64 720895 to i8*), i64 %39
%43 = bitcast i8* %42 to <16 x i8>*
store <16 x i8> <i8 97, i8 1, i8 97, i8 1, i8 97, i8 1, i8 97, i8 1, i8 97, i8 1, i8 97, i8 1, i8 97, i8 1, i8 97, i8 1>, <16 x i8>* %41
store <16 x i8> <i8 97, i8 1, i8 97, i8 1, i8 97, i8 1, i8 97, i8 1, i8 97, i8 1, i8 97, i8 1, i8 97, i8 1, i8 97, i8 1>, <16 x i8>* %43
%44 = shl nuw i64 %19, 1
%45 = or i64 %44, 97
%46 = or i64 %44, 113
%47 = getelementptr inbounds i8, i8* inttoptr (i64 720895 to i8*), i64 %45
%48 = bitcast i8* %47 to <16 x i8>*
%49 = getelementptr inbounds i8, i8* inttoptr (i64 720895 to i8*), i64 %46
%50 = bitcast i8* %49 to <16 x i8>*
store <16 x i8> <i8 97, i8 1, i8 97, i8 1, i8 97, i8 1, i8 97, i8 1, i8 97, i8 1, i8 97, i8 1, i8 97, i8 1, i8 97, i8 1>, <16 x i8>* %48
store <16 x i8> <i8 97, i8 1, i8 97, i8 1, i8 97, i8 1, i8 97, i8 1, i8 97, i8 1, i8 97, i8 1, i8 97, i8 1, i8 97, i8 1>, <16 x i8>* %50
%51 = add nuw nsw i64 %19, 64
br label %18
52: ; preds = %18
%53 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([11 x i8], [11 x i8]* @str.9, i64 0, i64 0))
%54 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([20 x i8], [20 x i8]* @str.6, i64 0, i64 0))
br label %55
55: ; preds = %66, %52
%56 = phi i64 [ 0, %52 ], [ %88, %66 ]
%57 = shl nuw i64 %56, 1
%58 = or i64 %57, 1
%59 = or i64 %57, 17
%60 = getelementptr inbounds i8, i8* inttoptr (i64 720895 to i8*), i64 %58
%61 = bitcast i8* %60 to <16 x i8>*
%62 = getelementptr inbounds i8, i8* inttoptr (i64 720895 to i8*), i64 %59
%63 = bitcast i8* %62 to <16 x i8>*
store <16 x i8> <i8 122, i8 3, i8 122, i8 3, i8 122, i8 3, i8 122, i8 3, i8 122, i8 3, i8 122, i8 3, i8 122, i8 3, i8 122, i8 3>, <16 x i8>* %61
store <16 x i8> <i8 122, i8 3, i8 122, i8 3, i8 122, i8 3, i8 122, i8 3, i8 122, i8 3, i8 122, i8 3, i8 122, i8 3, i8 122, i8 3>, <16 x i8>* %63
%64 = or i64 %56, 16
%65 = icmp eq i64 %64, 2000
br i1 %65, label %89, label %66
66: ; preds = %55
%67 = shl nuw i64 %64, 1
%68 = or i64 %67, 1
%69 = or i64 %67, 17
%70 = getelementptr inbounds i8, i8* inttoptr (i64 720895 to i8*), i64 %68
%71 = bitcast i8* %70 to <16 x i8>*
%72 = getelementptr inbounds i8, i8* inttoptr (i64 720895 to i8*), i64 %69
%73 = bitcast i8* %72 to <16 x i8>*
store <16 x i8> <i8 122, i8 3, i8 122, i8 3, i8 122, i8 3, i8 122, i8 3, i8 122, i8 3, i8 122, i8 3, i8 122, i8 3, i8 122, i8 3>, <16 x i8>* %71
store <16 x i8> <i8 122, i8 3, i8 122, i8 3, i8 122, i8 3, i8 122, i8 3, i8 122, i8 3, i8 122, i8 3, i8 122, i8 3, i8 122, i8 3>, <16 x i8>* %73
%74 = shl nuw i64 %56, 1
%75 = or i64 %74, 65
%76 = or i64 %74, 81
%77 = getelementptr inbounds i8, i8* inttoptr (i64 720895 to i8*), i64 %75
%78 = bitcast i8* %77 to <16 x i8>*
%79 = getelementptr inbounds i8, i8* inttoptr (i64 720895 to i8*), i64 %76
%80 = bitcast i8* %79 to <16 x i8>*
store <16 x i8> <i8 122, i8 3, i8 122, i8 3, i8 122, i8 3, i8 122, i8 3, i8 122, i8 3, i8 122, i8 3, i8 122, i8 3, i8 122, i8 3>, <16 x i8>* %78
store <16 x i8> <i8 122, i8 3, i8 122, i8 3, i8 122, i8 3, i8 122, i8 3, i8 122, i8 3, i8 122, i8 3, i8 122, i8 3, i8 122, i8 3>, <16 x i8>* %80
%81 = shl nuw i64 %56, 1
%82 = or i64 %81, 97
%83 = or i64 %81, 113
%84 = getelementptr inbounds i8, i8* inttoptr (i64 720895 to i8*), i64 %82
%85 = bitcast i8* %84 to <16 x i8>*
%86 = getelementptr inbounds i8, i8* inttoptr (i64 720895 to i8*), i64 %83
%87 = bitcast i8* %86 to <16 x i8>*
store <16 x i8> <i8 122, i8 3, i8 122, i8 3, i8 122, i8 3, i8 122, i8 3, i8 122, i8 3, i8 122, i8 3, i8 122, i8 3, i8 122, i8 3>, <16 x i8>* %85
store <16 x i8> <i8 122, i8 3, i8 122, i8 3, i8 122, i8 3, i8 122, i8 3, i8 122, i8 3, i8 122, i8 3, i8 122, i8 3, i8 122, i8 3>, <16 x i8>* %87
%88 = add nuw nsw i64 %56, 64
br label %55
89: ; preds = %55
%90 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([11 x i8], [11 x i8]* @str.9, i64 0, i64 0))
%91 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([21 x i8], [21 x i8]* @str.8, i64 0, i64 0))
br label %92
92: ; preds = %103, %89
%93 = phi i64 [ 0, %89 ], [ %125, %103 ]
%94 = shl nuw i64 %93, 1
%95 = or i64 %94, 1
%96 = or i64 %94, 17
%97 = getelementptr inbounds i8, i8* inttoptr (i64 720895 to i8*), i64 %95
%98 = bitcast i8* %97 to <16 x i8>*
%99 = getelementptr inbounds i8, i8* inttoptr (i64 720895 to i8*), i64 %96
%100 = bitcast i8* %99 to <16 x i8>*
store <16 x i8> <i8 72, i8 2, i8 72, i8 2, i8 72, i8 2, i8 72, i8 2, i8 72, i8 2, i8 72, i8 2, i8 72, i8 2, i8 72, i8 2>, <16 x i8>* %98
store <16 x i8> <i8 72, i8 2, i8 72, i8 2, i8 72, i8 2, i8 72, i8 2, i8 72, i8 2, i8 72, i8 2, i8 72, i8 2, i8 72, i8 2>, <16 x i8>* %100
%101 = or i64 %93, 16
%102 = icmp eq i64 %101, 2000
br i1 %102, label %126, label %103
103: ; preds = %92
%104 = shl nuw i64 %101, 1
%105 = or i64 %104, 1
%106 = or i64 %104, 17
%107 = getelementptr inbounds i8, i8* inttoptr (i64 720895 to i8*), i64 %105
%108 = bitcast i8* %107 to <16 x i8>*
%109 = getelementptr inbounds i8, i8* inttoptr (i64 720895 to i8*), i64 %106
%110 = bitcast i8* %109 to <16 x i8>*
store <16 x i8> <i8 72, i8 2, i8 72, i8 2, i8 72, i8 2, i8 72, i8 2, i8 72, i8 2, i8 72, i8 2, i8 72, i8 2, i8 72, i8 2>, <16 x i8>* %108
store <16 x i8> <i8 72, i8 2, i8 72, i8 2, i8 72, i8 2, i8 72, i8 2, i8 72, i8 2, i8 72, i8 2, i8 72, i8 2, i8 72, i8 2>, <16 x i8>* %110
%111 = shl nuw i64 %93, 1
%112 = or i64 %111, 65
%113 = or i64 %111, 81
%114 = getelementptr inbounds i8, i8* inttoptr (i64 720895 to i8*), i64 %112
%115 = bitcast i8* %114 to <16 x i8>*
%116 = getelementptr inbounds i8, i8* inttoptr (i64 720895 to i8*), i64 %113
%117 = bitcast i8* %116 to <16 x i8>*
store <16 x i8> <i8 72, i8 2, i8 72, i8 2, i8 72, i8 2, i8 72, i8 2, i8 72, i8 2, i8 72, i8 2, i8 72, i8 2, i8 72, i8 2>, <16 x i8>* %115
store <16 x i8> <i8 72, i8 2, i8 72, i8 2, i8 72, i8 2, i8 72, i8 2, i8 72, i8 2, i8 72, i8 2, i8 72, i8 2, i8 72, i8 2>, <16 x i8>* %117
%118 = shl nuw i64 %93, 1
%119 = or i64 %118, 97
%120 = or i64 %118, 113
%121 = getelementptr inbounds i8, i8* inttoptr (i64 720895 to i8*), i64 %119
%122 = bitcast i8* %121 to <16 x i8>*
%123 = getelementptr inbounds i8, i8* inttoptr (i64 720895 to i8*), i64 %120
%124 = bitcast i8* %123 to <16 x i8>*
store <16 x i8> <i8 72, i8 2, i8 72, i8 2, i8 72, i8 2, i8 72, i8 2, i8 72, i8 2, i8 72, i8 2, i8 72, i8 2, i8 72, i8 2>, <16 x i8>* %122
store <16 x i8> <i8 72, i8 2, i8 72, i8 2, i8 72, i8 2, i8 72, i8 2, i8 72, i8 2, i8 72, i8 2, i8 72, i8 2, i8 72, i8 2>, <16 x i8>* %124
%125 = add nuw nsw i64 %93, 64
br label %92
126: ; preds = %92
%127 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([11 x i8], [11 x i8]* @str.9, i64 0, i64 0))
%128 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([34 x i8], [34 x i8]* @str.10, i64 0, i64 0))
br label %129
129: ; preds = %140, %126
%130 = phi i64 [ 0, %126 ], [ %162, %140 ]
%131 = shl nuw i64 %130, 1
%132 = or i64 %131, 1
%133 = or i64 %131, 17
%134 = getelementptr inbounds i8, i8* inttoptr (i64 720895 to i8*), i64 %132
%135 = bitcast i8* %134 to <16 x i8>*
%136 = getelementptr inbounds i8, i8* inttoptr (i64 720895 to i8*), i64 %133
%137 = bitcast i8* %136 to <16 x i8>*
store <16 x i8> <i8 103, i8 4, i8 103, i8 4, i8 103, i8 4, i8 103, i8 4, i8 103, i8 4, i8 103, i8 4, i8 103, i8 4, i8 103, i8 4>, <16 x i8>* %135
store <16 x i8> <i8 103, i8 4, i8 103, i8 4, i8 103, i8 4, i8 103, i8 4, i8 103, i8 4, i8 103, i8 4, i8 103, i8 4, i8 103, i8 4>, <16 x i8>* %137
%138 = or i64 %130, 16
%139 = icmp eq i64 %138, 2000
br i1 %139, label %163, label %140
140: ; preds = %129
%141 = shl nuw i64 %138, 1
%142 = or i64 %141, 1
%143 = or i64 %141, 17
%144 = getelementptr inbounds i8, i8* inttoptr (i64 720895 to i8*), i64 %142
%145 = bitcast i8* %144 to <16 x i8>*
%146 = getelementptr inbounds i8, i8* inttoptr (i64 720895 to i8*), i64 %143
%147 = bitcast i8* %146 to <16 x i8>*
store <16 x i8> <i8 103, i8 4, i8 103, i8 4, i8 103, i8 4, i8 103, i8 4, i8 103, i8 4, i8 103, i8 4, i8 103, i8 4, i8 103, i8 4>, <16 x i8>* %145
store <16 x i8> <i8 103, i8 4, i8 103, i8 4, i8 103, i8 4, i8 103, i8 4, i8 103, i8 4, i8 103, i8 4, i8 103, i8 4, i8 103, i8 4>, <16 x i8>* %147
%148 = shl nuw i64 %130, 1
%149 = or i64 %148, 65
%150 = or i64 %148, 81
%151 = getelementptr inbounds i8, i8* inttoptr (i64 720895 to i8*), i64 %149
%152 = bitcast i8* %151 to <16 x i8>*
%153 = getelementptr inbounds i8, i8* inttoptr (i64 720895 to i8*), i64 %150
%154 = bitcast i8* %153 to <16 x i8>*
store <16 x i8> <i8 103, i8 4, i8 103, i8 4, i8 103, i8 4, i8 103, i8 4, i8 103, i8 4, i8 103, i8 4, i8 103, i8 4, i8 103, i8 4>, <16 x i8>* %152
store <16 x i8> <i8 103, i8 4, i8 103, i8 4, i8 103, i8 4, i8 103, i8 4, i8 103, i8 4, i8 103, i8 4, i8 103, i8 4, i8 103, i8 4>, <16 x i8>* %154
%155 = shl nuw i64 %130, 1
%156 = or i64 %155, 97
%157 = or i64 %155, 113
%158 = getelementptr inbounds i8, i8* inttoptr (i64 720895 to i8*), i64 %156
%159 = bitcast i8* %158 to <16 x i8>*
%160 = getelementptr inbounds i8, i8* inttoptr (i64 720895 to i8*), i64 %157
%161 = bitcast i8* %160 to <16 x i8>*
store <16 x i8> <i8 103, i8 4, i8 103, i8 4, i8 103, i8 4, i8 103, i8 4, i8 103, i8 4, i8 103, i8 4, i8 103, i8 4, i8 103, i8 4>, <16 x i8>* %159
store <16 x i8> <i8 103, i8 4, i8 103, i8 4, i8 103, i8 4, i8 103, i8 4, i8 103, i8 4, i8 103, i8 4, i8 103, i8 4, i8 103, i8 4>, <16 x i8>* %161
%162 = add nuw nsw i64 %130, 64
br label %129
163: ; preds = %129, %163
br label %163
}