#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*/ read_port(char *, char *);
int /*<<< orphan*/ write_port(char *, char);
int main() {
  unsigned char *vga_mem_mode_3 = (unsigned char *)(0xb8000);
  unsigned char *vga_mem_mode_2 = (unsigned char *)(0xb0000);
  char old_overflow_reg;
  char old_vde_reg;
  char old_msl_reg;
  char old_misc_reg;
  int i;
  char memory_mapping = 3;
  char msl;
  char vde;
  char overflow_reg;
  printf("Changing Video Mode\n");
  write_port((char *)0x03ce, 6);
  read_port((char *)0x03cf, &old_misc_reg);
  write_port((char *)0x03cf, (old_misc_reg & ~0x0c) | (memory_mapping << 2));
  write_port((char *)0x03d4, 9);
  read_port((char *)0x03d5, &old_msl_reg);
  msl = old_msl_reg & 0x1f;
  vde = (37 * (msl + 1)) - 1;
  write_port((char *)0x03d4, 18);
  read_port((char *)0x03d5, &old_vde_reg);
  write_port((char *)0x03d5, vde & 0xff);
  write_port((char *)0x03d4, 7);
  read_port((char *)0x03d5, &old_overflow_reg);
  write_port((char *)0x03d5, (old_overflow_reg & ~0x42) |
                                 (((vde & 0x100) >> 7) | ((vde & 0x200) >> 3)));
  printf("Drawing a's...\n");
  for (i = 0; i < 80 * 37 * 2; i += 2) {
    vga_mem_mode_3[i] = 'a';
    vga_mem_mode_3[i + 1] = 15;
  }
  printf("Restoring Video Mode\n");
  write_port((char *)0x03d5, old_overflow_reg);
  write_port((char *)0x03d4, 18);
  write_port((char *)0x03d5, old_vde_reg);
  write_port((char *)0x03ce, 6);
  write_port((char *)0x03cf, old_misc_reg);
  printf("Drawing z's...\n");
  for (i = 0; i < 80 * 25 * 2; i += 2) {
    vga_mem_mode_2[i] = 'z';
    vga_mem_mode_2[i + 1] = 15;
  }
  while (1)
    ;
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0x30,%rsp
movl   $0x0,-0x4(%rbp)
mov    $0xb8000,%eax
mov    %rax,-0x10(%rbp)
mov    $0xb0000,%eax
mov    %rax,-0x18(%rbp)
movb   $0x3,-0x21(%rbp)
lea    0xea4(%rip),%rdi
call   1040 <printf@plt>
mov    $0x3ce,%edi
mov    $0x6,%esi
call   1050 <write_port@plt>
mov    $0x3cf,%edi
lea    -0x1c(%rbp),%rsi
call   1030 <read_port@plt>
movsbl -0x1c(%rbp),%eax
and    $0xfffffff3,%eax
movsbl -0x21(%rbp),%ecx
shl    $0x2,%ecx
or     %ecx,%eax
mov    $0x3cf,%edi
movsbl %al,%esi
call   1050 <write_port@plt>
mov    $0x3d4,%edi
mov    $0x9,%esi
call   1050 <write_port@plt>
mov    $0x3d5,%edi
lea    -0x1b(%rbp),%rsi
call   1030 <read_port@plt>
movsbl -0x1b(%rbp),%eax
and    $0x1f,%eax
mov    %al,-0x22(%rbp)
movsbl -0x22(%rbp),%eax
add    $0x1,%eax
imul   $0x25,%eax,%eax
sub    $0x1,%eax
mov    %al,-0x23(%rbp)
mov    $0x3d4,%edi
mov    $0x12,%esi
call   1050 <write_port@plt>
mov    $0x3d5,%edi
lea    -0x1a(%rbp),%rsi
call   1030 <read_port@plt>
movsbl -0x23(%rbp),%eax
and    $0xff,%eax
mov    $0x3d5,%edi
movsbl %al,%esi
call   1050 <write_port@plt>
mov    $0x3d4,%edi
mov    $0x7,%esi
call   1050 <write_port@plt>
mov    $0x3d5,%edi
lea    -0x19(%rbp),%rsi
call   1030 <read_port@plt>
movsbl -0x19(%rbp),%eax
and    $0xffffffbd,%eax
movsbl -0x23(%rbp),%ecx
and    $0x100,%ecx
sar    $0x7,%ecx
movsbl -0x23(%rbp),%edx
and    $0x200,%edx
sar    $0x3,%edx
or     %edx,%ecx
or     %ecx,%eax
mov    $0x3d5,%edi
movsbl %al,%esi
call   1050 <write_port@plt>
lea    0xdba(%rip),%rdi
call   1040 <printf@plt>
movl   $0x0,-0x20(%rbp)
cmpl   $0x1720,-0x20(%rbp)
jge    129f <main+0x16f>
mov    -0x10(%rbp),%rax
movslq -0x20(%rbp),%rcx
movb   $0x61,(%rax,%rcx,1)
mov    -0x10(%rbp),%rax
mov    -0x20(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movb   $0xf,(%rax,%rcx,1)
mov    -0x20(%rbp),%eax
add    $0x2,%eax
mov    %eax,-0x20(%rbp)
jmp    1267 <main+0x137>
lea    0xd7f(%rip),%rdi
call   1040 <printf@plt>
mov    $0x3d5,%edi
movsbl -0x19(%rbp),%esi
call   1050 <write_port@plt>
mov    $0x3d4,%edi
mov    $0x12,%esi
call   1050 <write_port@plt>
mov    $0x3d5,%edi
movsbl -0x1a(%rbp),%esi
call   1050 <write_port@plt>
mov    $0x3ce,%edi
mov    $0x6,%esi
call   1050 <write_port@plt>
mov    $0x3cf,%edi
movsbl -0x1c(%rbp),%esi
call   1050 <write_port@plt>
lea    0xd41(%rip),%rdi
call   1040 <printf@plt>
movl   $0x0,-0x20(%rbp)
cmpl   $0xfa0,-0x20(%rbp)
jge    133e <main+0x20e>
mov    -0x18(%rbp),%rax
movslq -0x20(%rbp),%rcx
movb   $0x7a,(%rax,%rcx,1)
mov    -0x18(%rbp),%rax
mov    -0x20(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movb   $0xf,(%rax,%rcx,1)
mov    -0x20(%rbp),%eax
add    $0x2,%eax
mov    %eax,-0x20(%rbp)
jmp    1306 <main+0x1d6>
jmp    1343 <main+0x213>
jmp    1343 <main+0x213>

x86 assembly (clang, -O2):
<main>:
push   %rbp
push   %rbx
push   %rax
mov    $0xb0070,%ebx
lea    0xee1(%rip),%rdi
call   1030 <puts@plt>
mov    $0x3ce,%edi
mov    $0x6,%esi
call   1050 <write_port@plt>
lea    0x4(%rsp),%rsi
mov    $0x3cf,%edi
call   1040 <read_port@plt>
movsbl 0x4(%rsp),%esi
or     $0xc,%esi
mov    $0x3cf,%edi
call   1050 <write_port@plt>
mov    $0x3d4,%edi
mov    $0x9,%esi
call   1050 <write_port@plt>
lea    0x6(%rsp),%rsi
mov    $0x3d5,%edi
call   1040 <read_port@plt>
mov    0x6(%rsp),%al
and    $0x1f,%al
movzbl %al,%eax
lea    (%rax,%rax,8),%ecx
lea    (%rax,%rcx,4),%ebp
add    $0x24,%bpl
mov    $0x3d4,%edi
mov    $0x12,%esi
call   1050 <write_port@plt>
lea    0x7(%rsp),%rsi
mov    $0x3d5,%edi
call   1040 <read_port@plt>
movsbl %bpl,%ebp
mov    $0x3d5,%edi
mov    %ebp,%esi
call   1050 <write_port@plt>
mov    $0x3d4,%edi
mov    $0x7,%esi
call   1050 <write_port@plt>
lea    0x5(%rsp),%rsi
mov    $0x3d5,%edi
call   1040 <read_port@plt>
mov    0x5(%rsp),%al
and    $0xbd,%al
mov    %ebp,%ecx
shr    $0x7,%ecx
and    $0x2,%ecx
shr    $0x3,%ebp
and    $0x40,%ebp
or     %ecx,%ebp
or     %al,%bpl
movsbl %bpl,%esi
mov    $0x3d5,%edi
call   1050 <write_port@plt>
lea    0xe15(%rip),%rdi
call   1030 <puts@plt>
xor    %eax,%eax
movaps 0xdd3(%rip),%xmm0
nopl   (%rax)
movaps %xmm0,0x7f90(%rbx,%rax,2)
movaps %xmm0,0x7fa0(%rbx,%rax,2)
cmp    $0xb80,%rax
je     127e <main+0x14e>
movaps %xmm0,0x7fb0(%rbx,%rax,2)
movaps %xmm0,0x7fc0(%rbx,%rax,2)
movaps %xmm0,0x7fd0(%rbx,%rax,2)
movaps %xmm0,0x7fe0(%rbx,%rax,2)
movaps %xmm0,0x7ff0(%rbx,%rax,2)
movaps %xmm0,0x8000(%rbx,%rax,2)
add    $0x40,%rax
jmp    1230 <main+0x100>
lea    0xdbe(%rip),%rdi
call   1030 <puts@plt>
movsbl 0x5(%rsp),%esi
mov    $0x3d5,%edi
call   1050 <write_port@plt>
mov    $0x3d4,%edi
mov    $0x12,%esi
call   1050 <write_port@plt>
movsbl 0x7(%rsp),%esi
mov    $0x3d5,%edi
call   1050 <write_port@plt>
mov    $0x3ce,%edi
mov    $0x6,%esi
call   1050 <write_port@plt>
movsbl 0x4(%rsp),%esi
mov    $0x3cf,%edi
call   1050 <write_port@plt>
lea    0xd7c(%rip),%rdi
call   1030 <puts@plt>
xor    %eax,%eax
movaps 0xd26(%rip),%xmm0
nopw   0x0(%rax,%rax,1)
movaps %xmm0,-0x70(%rbx,%rax,2)
movaps %xmm0,-0x60(%rbx,%rax,2)
cmp    $0x7c0,%rax
je     1330 <main+0x200>
movaps %xmm0,-0x50(%rbx,%rax,2)
movaps %xmm0,-0x40(%rbx,%rax,2)
movaps %xmm0,-0x30(%rbx,%rax,2)
movaps %xmm0,-0x20(%rbx,%rax,2)
movaps %xmm0,-0x10(%rbx,%rax,2)
movaps %xmm0,(%rbx,%rax,2)
add    $0x40,%rax
jmp    12f0 <main+0x1c0>
cs nopw 0x0(%rax,%rax,1)
nop
jmp    1330 <main+0x200>

LLVM IR (-O0):
@.str = [21 x i8] c"Changing Video Mode\0A\00"
@.str.1 = [16 x i8] c"Drawing a's...\0A\00"
@.str.2 = [22 x i8] c"Restoring Video Mode\0A\00"
@.str.3 = [16 x i8] c"Drawing z's...\0A\00"
define i32 @main() {
%1 = alloca i32
%2 = alloca i8*
%3 = alloca i8*
%4 = alloca i8
%5 = alloca i8
%6 = alloca i8
%7 = alloca i8
%8 = alloca i32
%9 = alloca i8
%10 = alloca i8
%11 = alloca i8
%12 = alloca i8
store i32 0, i32* %1
store i8* inttoptr (i64 753664 to i8*), i8** %2
store i8* inttoptr (i64 720896 to i8*), i8** %3
store i8 3, i8* %9
%13 = call i32 @printf(i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str, i64 0, i64 0))
%14 = call i32 @write_port(i8* inttoptr (i64 974 to i8*), i8 signext 6)
%15 = call i32 @read_port(i8* inttoptr (i64 975 to i8*), i8* %7)
%16 = load i8, i8* %7
%17 = sext i8 %16 to i32
%18 = and i32 %17, -13
%19 = load i8, i8* %9
%20 = sext i8 %19 to i32
%21 = shl i32 %20, 2
%22 = or i32 %18, %21
%23 = trunc i32 %22 to i8
%24 = call i32 @write_port(i8* inttoptr (i64 975 to i8*), i8 signext %23)
%25 = call i32 @write_port(i8* inttoptr (i64 980 to i8*), i8 signext 9)
%26 = call i32 @read_port(i8* inttoptr (i64 981 to i8*), i8* %6)
%27 = load i8, i8* %6
%28 = sext i8 %27 to i32
%29 = and i32 %28, 31
%30 = trunc i32 %29 to i8
store i8 %30, i8* %10
%31 = load i8, i8* %10
%32 = sext i8 %31 to i32
%33 = add nsw i32 %32, 1
%34 = mul nsw i32 37, %33
%35 = sub nsw i32 %34, 1
%36 = trunc i32 %35 to i8
store i8 %36, i8* %11
%37 = call i32 @write_port(i8* inttoptr (i64 980 to i8*), i8 signext 18)
%38 = call i32 @read_port(i8* inttoptr (i64 981 to i8*), i8* %5)
%39 = load i8, i8* %11
%40 = sext i8 %39 to i32
%41 = and i32 %40, 255
%42 = trunc i32 %41 to i8
%43 = call i32 @write_port(i8* inttoptr (i64 981 to i8*), i8 signext %42)
%44 = call i32 @write_port(i8* inttoptr (i64 980 to i8*), i8 signext 7)
%45 = call i32 @read_port(i8* inttoptr (i64 981 to i8*), i8* %4)
%46 = load i8, i8* %4
%47 = sext i8 %46 to i32
%48 = and i32 %47, -67
%49 = load i8, i8* %11
%50 = sext i8 %49 to i32
%51 = and i32 %50, 256
%52 = ashr i32 %51, 7
%53 = load i8, i8* %11
%54 = sext i8 %53 to i32
%55 = and i32 %54, 512
%56 = ashr i32 %55, 3
%57 = or i32 %52, %56
%58 = or i32 %48, %57
%59 = trunc i32 %58 to i8
%60 = call i32 @write_port(i8* inttoptr (i64 981 to i8*), i8 signext %59)
%61 = call i32 @printf(i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.1, i64 0, i64 0))
store i32 0, i32* %8
br label %62
62: ; preds = %75, %0
%63 = load i32, i32* %8
%64 = icmp slt i32 %63, 5920
br i1 %64, label %65, label %78
65: ; preds = %62
%66 = load i8*, i8** %2
%67 = load i32, i32* %8
%68 = sext i32 %67 to i64
%69 = getelementptr inbounds i8, i8* %66, i64 %68
store i8 97, i8* %69
%70 = load i8*, i8** %2
%71 = load i32, i32* %8
%72 = add nsw i32 %71, 1
%73 = sext i32 %72 to i64
%74 = getelementptr inbounds i8, i8* %70, i64 %73
store i8 15, i8* %74
br label %75
75: ; preds = %65
%76 = load i32, i32* %8
%77 = add nsw i32 %76, 2
store i32 %77, i32* %8
br label %62
78: ; preds = %62
%79 = call i32 @printf(i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str.2, i64 0, i64 0))
%80 = load i8, i8* %4
%81 = call i32 @write_port(i8* inttoptr (i64 981 to i8*), i8 signext %80)
%82 = call i32 @write_port(i8* inttoptr (i64 980 to i8*), i8 signext 18)
%83 = load i8, i8* %5
%84 = call i32 @write_port(i8* inttoptr (i64 981 to i8*), i8 signext %83)
%85 = call i32 @write_port(i8* inttoptr (i64 974 to i8*), i8 signext 6)
%86 = load i8, i8* %7
%87 = call i32 @write_port(i8* inttoptr (i64 975 to i8*), i8 signext %86)
%88 = call i32 @printf(i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.3, i64 0, i64 0))
store i32 0, i32* %8
br label %89
89: ; preds = %102, %78
%90 = load i32, i32* %8
%91 = icmp slt i32 %90, 4000
br i1 %91, label %92, label %105
92: ; preds = %89
%93 = load i8*, i8** %3
%94 = load i32, i32* %8
%95 = sext i32 %94 to i64
%96 = getelementptr inbounds i8, i8* %93, i64 %95
store i8 122, i8* %96
%97 = load i8*, i8** %3
%98 = load i32, i32* %8
%99 = add nsw i32 %98, 1
%100 = sext i32 %99 to i64
%101 = getelementptr inbounds i8, i8* %97, i64 %100
store i8 15, i8* %101
br label %102
102: ; preds = %92
%103 = load i32, i32* %8
%104 = add nsw i32 %103, 2
store i32 %104, i32* %8
br label %89
105: ; preds = %89
br label %106
106: ; preds = %105, %106
br label %106
}

LLVM IR (-O2):
@str = [20 x i8] c"Changing Video Mode\00"
@str.4 = [15 x i8] c"Drawing a's...\00"
@str.5 = [21 x i8] c"Restoring Video Mode\00"
@str.6 = [15 x i8] c"Drawing z's...\00"
define i32 @main() {
%1 = alloca i8
%2 = alloca i8
%3 = alloca i8
%4 = alloca i8
%5 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([20 x i8], [20 x i8]* @str, i64 0, i64 0))
%6 = tail call i32 @write_port(i8* inttoptr (i64 974 to i8*), i8 signext 6)
%7 = call i32 @read_port(i8* inttoptr (i64 975 to i8*), i8* %4)
%8 = load i8, i8* %4
%9 = or i8 %8, 12
%10 = call i32 @write_port(i8* inttoptr (i64 975 to i8*), i8 signext %9)
%11 = call i32 @write_port(i8* inttoptr (i64 980 to i8*), i8 signext 9)
%12 = call i32 @read_port(i8* inttoptr (i64 981 to i8*), i8* %3)
%13 = load i8, i8* %3
%14 = and i8 %13, 31
%15 = mul i8 %14, 37
%16 = add i8 %15, 36
%17 = call i32 @write_port(i8* inttoptr (i64 980 to i8*), i8 signext 18)
%18 = call i32 @read_port(i8* inttoptr (i64 981 to i8*), i8* %2)
%19 = sext i8 %16 to i32
%20 = call i32 @write_port(i8* inttoptr (i64 981 to i8*), i8 signext %16)
%21 = call i32 @write_port(i8* inttoptr (i64 980 to i8*), i8 signext 7)
%22 = call i32 @read_port(i8* inttoptr (i64 981 to i8*), i8* %1)
%23 = load i8, i8* %1
%24 = and i8 %23, -67
%25 = lshr i32 %19, 7
%26 = and i32 %25, 2
%27 = lshr i32 %19, 3
%28 = and i32 %27, 64
%29 = or i32 %26, %28
%30 = trunc i32 %29 to i8
%31 = or i8 %24, %30
%32 = call i32 @write_port(i8* inttoptr (i64 981 to i8*), i8 signext %31)
%33 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([15 x i8], [15 x i8]* @str.4, i64 0, i64 0))
br label %34
34: ; preds = %45, %0
%35 = phi i64 [ 0, %0 ], [ %67, %45 ]
%36 = shl nuw i64 %35, 1
%37 = or i64 %36, 1
%38 = or i64 %36, 17
%39 = getelementptr inbounds i8, i8* inttoptr (i64 753663 to i8*), i64 %37
%40 = bitcast i8* %39 to <16 x i8>*
%41 = getelementptr inbounds i8, i8* inttoptr (i64 753663 to i8*), i64 %38
%42 = bitcast i8* %41 to <16 x i8>*
store <16 x i8> <i8 97, i8 15, i8 97, i8 15, i8 97, i8 15, i8 97, i8 15, i8 97, i8 15, i8 97, i8 15, i8 97, i8 15, i8 97, i8 15>, <16 x i8>* %40
store <16 x i8> <i8 97, i8 15, i8 97, i8 15, i8 97, i8 15, i8 97, i8 15, i8 97, i8 15, i8 97, i8 15, i8 97, i8 15, i8 97, i8 15>, <16 x i8>* %42
%43 = or i64 %35, 16
%44 = icmp eq i64 %43, 2960
br i1 %44, label %68, label %45
45: ; preds = %34
%46 = shl nuw i64 %43, 1
%47 = or i64 %46, 1
%48 = or i64 %46, 17
%49 = getelementptr inbounds i8, i8* inttoptr (i64 753663 to i8*), i64 %47
%50 = bitcast i8* %49 to <16 x i8>*
%51 = getelementptr inbounds i8, i8* inttoptr (i64 753663 to i8*), i64 %48
%52 = bitcast i8* %51 to <16 x i8>*
store <16 x i8> <i8 97, i8 15, i8 97, i8 15, i8 97, i8 15, i8 97, i8 15, i8 97, i8 15, i8 97, i8 15, i8 97, i8 15, i8 97, i8 15>, <16 x i8>* %50
store <16 x i8> <i8 97, i8 15, i8 97, i8 15, i8 97, i8 15, i8 97, i8 15, i8 97, i8 15, i8 97, i8 15, i8 97, i8 15, i8 97, i8 15>, <16 x i8>* %52
%53 = shl nuw i64 %35, 1
%54 = or i64 %53, 65
%55 = or i64 %53, 81
%56 = getelementptr inbounds i8, i8* inttoptr (i64 753663 to i8*), i64 %54
%57 = bitcast i8* %56 to <16 x i8>*
%58 = getelementptr inbounds i8, i8* inttoptr (i64 753663 to i8*), i64 %55
%59 = bitcast i8* %58 to <16 x i8>*
store <16 x i8> <i8 97, i8 15, i8 97, i8 15, i8 97, i8 15, i8 97, i8 15, i8 97, i8 15, i8 97, i8 15, i8 97, i8 15, i8 97, i8 15>, <16 x i8>* %57
store <16 x i8> <i8 97, i8 15, i8 97, i8 15, i8 97, i8 15, i8 97, i8 15, i8 97, i8 15, i8 97, i8 15, i8 97, i8 15, i8 97, i8 15>, <16 x i8>* %59
%60 = shl nuw i64 %35, 1
%61 = or i64 %60, 97
%62 = or i64 %60, 113
%63 = getelementptr inbounds i8, i8* inttoptr (i64 753663 to i8*), i64 %61
%64 = bitcast i8* %63 to <16 x i8>*
%65 = getelementptr inbounds i8, i8* inttoptr (i64 753663 to i8*), i64 %62
%66 = bitcast i8* %65 to <16 x i8>*
store <16 x i8> <i8 97, i8 15, i8 97, i8 15, i8 97, i8 15, i8 97, i8 15, i8 97, i8 15, i8 97, i8 15, i8 97, i8 15, i8 97, i8 15>, <16 x i8>* %64
store <16 x i8> <i8 97, i8 15, i8 97, i8 15, i8 97, i8 15, i8 97, i8 15, i8 97, i8 15, i8 97, i8 15, i8 97, i8 15, i8 97, i8 15>, <16 x i8>* %66
%67 = add nuw nsw i64 %35, 64
br label %34
68: ; preds = %34
%69 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([21 x i8], [21 x i8]* @str.5, i64 0, i64 0))
%70 = load i8, i8* %1
%71 = call i32 @write_port(i8* inttoptr (i64 981 to i8*), i8 signext %70)
%72 = call i32 @write_port(i8* inttoptr (i64 980 to i8*), i8 signext 18)
%73 = load i8, i8* %2
%74 = call i32 @write_port(i8* inttoptr (i64 981 to i8*), i8 signext %73)
%75 = call i32 @write_port(i8* inttoptr (i64 974 to i8*), i8 signext 6)
%76 = load i8, i8* %4
%77 = call i32 @write_port(i8* inttoptr (i64 975 to i8*), i8 signext %76)
%78 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([15 x i8], [15 x i8]* @str.6, i64 0, i64 0))
br label %79
79: ; preds = %90, %68
%80 = phi i64 [ 0, %68 ], [ %112, %90 ]
%81 = shl nuw i64 %80, 1
%82 = or i64 %81, 1
%83 = or i64 %81, 17
%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 15, i8 122, i8 15, i8 122, i8 15, i8 122, i8 15, i8 122, i8 15, i8 122, i8 15, i8 122, i8 15, i8 122, i8 15>, <16 x i8>* %85
store <16 x i8> <i8 122, i8 15, i8 122, i8 15, i8 122, i8 15, i8 122, i8 15, i8 122, i8 15, i8 122, i8 15, i8 122, i8 15, i8 122, i8 15>, <16 x i8>* %87
%88 = or i64 %80, 16
%89 = icmp eq i64 %88, 2000
br i1 %89, label %113, label %90
90: ; preds = %79
%91 = shl nuw i64 %88, 1
%92 = or i64 %91, 1
%93 = or i64 %91, 17
%94 = getelementptr inbounds i8, i8* inttoptr (i64 720895 to i8*), i64 %92
%95 = bitcast i8* %94 to <16 x i8>*
%96 = getelementptr inbounds i8, i8* inttoptr (i64 720895 to i8*), i64 %93
%97 = bitcast i8* %96 to <16 x i8>*
store <16 x i8> <i8 122, i8 15, i8 122, i8 15, i8 122, i8 15, i8 122, i8 15, i8 122, i8 15, i8 122, i8 15, i8 122, i8 15, i8 122, i8 15>, <16 x i8>* %95
store <16 x i8> <i8 122, i8 15, i8 122, i8 15, i8 122, i8 15, i8 122, i8 15, i8 122, i8 15, i8 122, i8 15, i8 122, i8 15, i8 122, i8 15>, <16 x i8>* %97
%98 = shl nuw i64 %80, 1
%99 = or i64 %98, 65
%100 = or i64 %98, 81
%101 = getelementptr inbounds i8, i8* inttoptr (i64 720895 to i8*), i64 %99
%102 = bitcast i8* %101 to <16 x i8>*
%103 = getelementptr inbounds i8, i8* inttoptr (i64 720895 to i8*), i64 %100
%104 = bitcast i8* %103 to <16 x i8>*
store <16 x i8> <i8 122, i8 15, i8 122, i8 15, i8 122, i8 15, i8 122, i8 15, i8 122, i8 15, i8 122, i8 15, i8 122, i8 15, i8 122, i8 15>, <16 x i8>* %102
store <16 x i8> <i8 122, i8 15, i8 122, i8 15, i8 122, i8 15, i8 122, i8 15, i8 122, i8 15, i8 122, i8 15, i8 122, i8 15, i8 122, i8 15>, <16 x i8>* %104
%105 = shl nuw i64 %80, 1
%106 = or i64 %105, 97
%107 = or i64 %105, 113
%108 = getelementptr inbounds i8, i8* inttoptr (i64 720895 to i8*), i64 %106
%109 = bitcast i8* %108 to <16 x i8>*
%110 = getelementptr inbounds i8, i8* inttoptr (i64 720895 to i8*), i64 %107
%111 = bitcast i8* %110 to <16 x i8>*
store <16 x i8> <i8 122, i8 15, i8 122, i8 15, i8 122, i8 15, i8 122, i8 15, i8 122, i8 15, i8 122, i8 15, i8 122, i8 15, i8 122, i8 15>, <16 x i8>* %109
store <16 x i8> <i8 122, i8 15, i8 122, i8 15, i8 122, i8 15, i8 122, i8 15, i8 122, i8 15, i8 122, i8 15, i8 122, i8 15, i8 122, i8 15>, <16 x i8>* %111
%112 = add nuw nsw i64 %80, 64
br label %79
113: ; preds = %79, %113
br label %113
}