#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 */
unsigned char *xodirectline(int);
int /*<<< orphan*/ xoinit(int);
int main() {
  int i, y;
  unsigned char *p;
  xoinit(4);
  for (y = 0; y < 200; y++) {
    p = xodirectline(y);
    if (y < 2 || y >= 198) {
      for (i = 0; i < 80; i++)
        p[i] = 0xFF;
      continue;
    }
    p[0] = 0xF0;
    for (i = 1; i < 5; i++)
      p[i] = 0x00;
    for (i = 5; i < 10; i++)
      p[i] = 0x11;
    for (i = 10; i < 15; i++)
      p[i] = 0x88;
    for (i = 15; i < 20; i++)
      if (y & 1)
        p[i] = 0x91;
      else
        p[i] = 0x19;
    for (i = 20; i < 25; i++)
      p[i] = 0x44;
    for (i = 25; i < 30; i++)
      p[i] = 0x22;
    for (i = 30; i < 35; i++)
      if (y & 1)
        p[i] = 0xC4;
      else
        p[i] = 0x4C;
    for (i = 35; i < 40; i++)
      if (y & 1)
        p[i] = 0xF5;
      else
        p[i] = 0x5F;
    for (i = 40; i < 45; i++)
      if (y & 1)
        p[i] = 0x50;
      else
        p[i] = 0x05;
    for (i = 45; i < 50; i++)
      p[i] = 0x33;
    for (i = 50; i < 55; i++)
      p[i] = 0xDD;
    for (i = 55; i < 60; i++)
      p[i] = 0xBB;
    for (i = 60; i < 65; i++)
      p[i] = 0x66;
    for (i = 65; i < 70; i++)
      p[i] = 0x77;
    for (i = 70; i < 75; i++)
      p[i] = 0xEE;
    for (i = 75; i < 80; i++)
      p[i] = 0xFF;
  }
  return 0;
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0x20,%rsp
movl   $0x0,-0x4(%rbp)
mov    $0x4,%edi
call   1040 <xoinit@plt>
movl   $0x0,-0xc(%rbp)
cmpl   $0xc8,-0xc(%rbp)
jge    14fe <main+0x3de>
mov    -0xc(%rbp),%edi
call   1030 <xodirectline@plt>
mov    %rax,-0x18(%rbp)
cmpl   $0x2,-0xc(%rbp)
jl     1170 <main+0x50>
cmpl   $0xc6,-0xc(%rbp)
jl     11a0 <main+0x80>
movl   $0x0,-0x8(%rbp)
cmpl   $0x50,-0x8(%rbp)
jge    119b <main+0x7b>
mov    -0x18(%rbp),%rax
movslq -0x8(%rbp),%rcx
movb   $0xff,(%rax,%rcx,1)
mov    -0x8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8(%rbp)
jmp    1177 <main+0x57>
jmp    14f0 <main+0x3d0>
mov    -0x18(%rbp),%rax
movb   $0xf0,(%rax)
movl   $0x1,-0x8(%rbp)
cmpl   $0x5,-0x8(%rbp)
jge    11d2 <main+0xb2>
mov    -0x18(%rbp),%rax
movslq -0x8(%rbp),%rcx
movb   $0x0,(%rax,%rcx,1)
mov    -0x8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8(%rbp)
jmp    11ae <main+0x8e>
movl   $0x5,-0x8(%rbp)
cmpl   $0xa,-0x8(%rbp)
jge    11fd <main+0xdd>
mov    -0x18(%rbp),%rax
movslq -0x8(%rbp),%rcx
movb   $0x11,(%rax,%rcx,1)
mov    -0x8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8(%rbp)
jmp    11d9 <main+0xb9>
movl   $0xa,-0x8(%rbp)
cmpl   $0xf,-0x8(%rbp)
jge    1228 <main+0x108>
mov    -0x18(%rbp),%rax
movslq -0x8(%rbp),%rcx
movb   $0x88,(%rax,%rcx,1)
mov    -0x8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8(%rbp)
jmp    1204 <main+0xe4>
movl   $0xf,-0x8(%rbp)
cmpl   $0x14,-0x8(%rbp)
jge    1278 <main+0x158>
mov    -0xc(%rbp),%eax
and    $0x1,%eax
cmp    $0x0,%eax
je     1259 <main+0x139>
mov    -0x18(%rbp),%rax
movslq -0x8(%rbp),%rcx
movb   $0x91,(%rax,%rcx,1)
jmp    1265 <main+0x145>
mov    -0x18(%rbp),%rax
movslq -0x8(%rbp),%rcx
movb   $0x19,(%rax,%rcx,1)
jmp    126a <main+0x14a>
mov    -0x8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8(%rbp)
jmp    122f <main+0x10f>
movl   $0x14,-0x8(%rbp)
cmpl   $0x19,-0x8(%rbp)
jge    12a3 <main+0x183>
mov    -0x18(%rbp),%rax
movslq -0x8(%rbp),%rcx
movb   $0x44,(%rax,%rcx,1)
mov    -0x8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8(%rbp)
jmp    127f <main+0x15f>
movl   $0x19,-0x8(%rbp)
cmpl   $0x1e,-0x8(%rbp)
jge    12ce <main+0x1ae>
mov    -0x18(%rbp),%rax
movslq -0x8(%rbp),%rcx
movb   $0x22,(%rax,%rcx,1)
mov    -0x8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8(%rbp)
jmp    12aa <main+0x18a>
movl   $0x1e,-0x8(%rbp)
cmpl   $0x23,-0x8(%rbp)
jge    131e <main+0x1fe>
mov    -0xc(%rbp),%eax
and    $0x1,%eax
cmp    $0x0,%eax
je     12ff <main+0x1df>
mov    -0x18(%rbp),%rax
movslq -0x8(%rbp),%rcx
movb   $0xc4,(%rax,%rcx,1)
jmp    130b <main+0x1eb>
mov    -0x18(%rbp),%rax
movslq -0x8(%rbp),%rcx
movb   $0x4c,(%rax,%rcx,1)
jmp    1310 <main+0x1f0>
mov    -0x8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8(%rbp)
jmp    12d5 <main+0x1b5>
movl   $0x23,-0x8(%rbp)
cmpl   $0x28,-0x8(%rbp)
jge    136e <main+0x24e>
mov    -0xc(%rbp),%eax
and    $0x1,%eax
cmp    $0x0,%eax
je     134f <main+0x22f>
mov    -0x18(%rbp),%rax
movslq -0x8(%rbp),%rcx
movb   $0xf5,(%rax,%rcx,1)
jmp    135b <main+0x23b>
mov    -0x18(%rbp),%rax
movslq -0x8(%rbp),%rcx
movb   $0x5f,(%rax,%rcx,1)
jmp    1360 <main+0x240>
mov    -0x8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8(%rbp)
jmp    1325 <main+0x205>
movl   $0x28,-0x8(%rbp)
cmpl   $0x2d,-0x8(%rbp)
jge    13be <main+0x29e>
mov    -0xc(%rbp),%eax
and    $0x1,%eax
cmp    $0x0,%eax
je     139f <main+0x27f>
mov    -0x18(%rbp),%rax
movslq -0x8(%rbp),%rcx
movb   $0x50,(%rax,%rcx,1)
jmp    13ab <main+0x28b>
mov    -0x18(%rbp),%rax
movslq -0x8(%rbp),%rcx
movb   $0x5,(%rax,%rcx,1)
jmp    13b0 <main+0x290>
mov    -0x8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8(%rbp)
jmp    1375 <main+0x255>
movl   $0x2d,-0x8(%rbp)
cmpl   $0x32,-0x8(%rbp)
jge    13e9 <main+0x2c9>
mov    -0x18(%rbp),%rax
movslq -0x8(%rbp),%rcx
movb   $0x33,(%rax,%rcx,1)
mov    -0x8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8(%rbp)
jmp    13c5 <main+0x2a5>
movl   $0x32,-0x8(%rbp)
cmpl   $0x37,-0x8(%rbp)
jge    1414 <main+0x2f4>
mov    -0x18(%rbp),%rax
movslq -0x8(%rbp),%rcx
movb   $0xdd,(%rax,%rcx,1)
mov    -0x8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8(%rbp)
jmp    13f0 <main+0x2d0>
movl   $0x37,-0x8(%rbp)
cmpl   $0x3c,-0x8(%rbp)
jge    143f <main+0x31f>
mov    -0x18(%rbp),%rax
movslq -0x8(%rbp),%rcx
movb   $0xbb,(%rax,%rcx,1)
mov    -0x8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8(%rbp)
jmp    141b <main+0x2fb>
movl   $0x3c,-0x8(%rbp)
cmpl   $0x41,-0x8(%rbp)
jge    146a <main+0x34a>
mov    -0x18(%rbp),%rax
movslq -0x8(%rbp),%rcx
movb   $0x66,(%rax,%rcx,1)
mov    -0x8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8(%rbp)
jmp    1446 <main+0x326>
movl   $0x41,-0x8(%rbp)
cmpl   $0x46,-0x8(%rbp)
jge    1495 <main+0x375>
mov    -0x18(%rbp),%rax
movslq -0x8(%rbp),%rcx
movb   $0x77,(%rax,%rcx,1)
mov    -0x8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8(%rbp)
jmp    1471 <main+0x351>
movl   $0x46,-0x8(%rbp)
cmpl   $0x4b,-0x8(%rbp)
jge    14c0 <main+0x3a0>
mov    -0x18(%rbp),%rax
movslq -0x8(%rbp),%rcx
movb   $0xee,(%rax,%rcx,1)
mov    -0x8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8(%rbp)
jmp    149c <main+0x37c>
movl   $0x4b,-0x8(%rbp)
cmpl   $0x50,-0x8(%rbp)
jge    14eb <main+0x3cb>
mov    -0x18(%rbp),%rax
movslq -0x8(%rbp),%rcx
movb   $0xff,(%rax,%rcx,1)
mov    -0x8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8(%rbp)
jmp    14c7 <main+0x3a7>
jmp    14f0 <main+0x3d0>
mov    -0xc(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xc(%rbp)
jmp    1140 <main+0x20>
xor    %eax,%eax
add    $0x20,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
push   %r14
push   %rbx
push   %rax
mov    $0x4,%edi
call   1040 <xoinit@plt>
xor    %ebx,%ebx
movabs $0x1111111100000000,%r14
11 11 11
jmp    1170 <main+0x50>
nopl   0x0(%rax)
pcmpeqd %xmm0,%xmm0
movdqu %xmm0,0x40(%rax)
movdqu %xmm0,0x30(%rax)
movdqu %xmm0,0x20(%rax)
movdqu %xmm0,0x10(%rax)
movdqu %xmm0,(%rax)
add    $0xc7,%ecx
mov    %ecx,%ebx
cmp    $0xc8,%ecx
je     1284 <main+0x164>
mov    %ebx,%edi
call   1030 <xodirectline@plt>
lea    -0xc6(%rbx),%ecx
cmp    $0xffffff3b,%ecx
jbe    1140 <main+0x20>
movb   $0xf0,(%rax)
mov    %r14,0x1(%rax)
movb   $0x11,0x9(%rax)
movl   $0x88888888,0xa(%rax)
movb   $0x88,0xe(%rax)
lea    0xf(%rax),%rsi
mov    %rax,%rdx
add    $0x14,%rdx
test   $0x1,%bl
jne    11f0 <main+0xd0>
movb   $0x19,0x4(%rsi)
movl   $0x19191919,(%rsi)
movb   $0x44,0x4(%rdx)
movl   $0x44444444,(%rdx)
movb   $0x22,0x1d(%rax)
movl   $0x22222222,0x19(%rax)
movl   $0x4c4c4c4c,0x1e(%rax)
movb   $0x4c,0x22(%rax)
movl   $0x5f5f5f5f,0x23(%rax)
movb   $0x5f,0x27(%rax)
mov    $0x5,%dl
mov    $0x5050505,%esi
jmp    122c <main+0x10c>
nopl   0x0(%rax)
movb   $0x91,0x4(%rsi)
movl   $0x91919191,(%rsi)
movb   $0x44,0x4(%rdx)
movl   $0x44444444,(%rdx)
movb   $0x22,0x1d(%rax)
movl   $0x22222222,0x19(%rax)
movl   $0xc4c4c4c4,0x1e(%rax)
movb   $0xc4,0x22(%rax)
movl   $0xf5f5f5f5,0x23(%rax)
movb   $0xf5,0x27(%rax)
mov    $0x50,%dl
mov    $0x50505050,%esi
mov    %esi,0x28(%rax)
mov    %dl,0x2c(%rax)
movl   $0x33333333,0x2d(%rax)
movb   $0x33,0x31(%rax)
movl   $0xdddddddd,0x32(%rax)
movb   $0xdd,0x36(%rax)
movl   $0xbbbbbbbb,0x37(%rax)
movb   $0xbb,0x3b(%rax)
movl   $0x66666666,0x3c(%rax)
movb   $0x66,0x40(%rax)
movl   $0x77777777,0x41(%rax)
movb   $0x77,0x45(%rax)
movl   $0xeeeeeeee,0x46(%rax)
movb   $0xee,0x4a(%rax)
movb   $0xff,0x4f(%rax)
movl   $0xffffffff,0x4b(%rax)
jmp    115c <main+0x3c>
xor    %eax,%eax
add    $0x8,%rsp
pop    %rbx
pop    %r14
ret

LLVM IR (-O0):
define i32 @main() {
%1 = alloca i32
%2 = alloca i32
%3 = alloca i32
%4 = alloca i8*
store i32 0, i32* %1
%5 = call i32 @xoinit(i32 4)
store i32 0, i32* %3
br label %6
6: ; preds = %265, %0
%7 = load i32, i32* %3
%8 = icmp slt i32 %7, 200
br i1 %8, label %9, label %268
9: ; preds = %6
%10 = load i32, i32* %3
%11 = call i8* @xodirectline(i32 %10)
store i8* %11, i8** %4
%12 = load i32, i32* %3
%13 = icmp slt i32 %12, 2
br i1 %13, label %17, label %14
14: ; preds = %9
%15 = load i32, i32* %3
%16 = icmp sge i32 %15, 198
br i1 %16, label %17, label %30
17: ; preds = %14, %9
store i32 0, i32* %2
br label %18
18: ; preds = %26, %17
%19 = load i32, i32* %2
%20 = icmp slt i32 %19, 80
br i1 %20, label %21, label %29
21: ; preds = %18
%22 = load i8*, i8** %4
%23 = load i32, i32* %2
%24 = sext i32 %23 to i64
%25 = getelementptr inbounds i8, i8* %22, i64 %24
store i8 -1, i8* %25
br label %26
26: ; preds = %21
%27 = load i32, i32* %2
%28 = add nsw i32 %27, 1
store i32 %28, i32* %2
br label %18
29: ; preds = %18
br label %265
30: ; preds = %14
%31 = load i8*, i8** %4
%32 = getelementptr inbounds i8, i8* %31, i64 0
store i8 -16, i8* %32
store i32 1, i32* %2
br label %33
33: ; preds = %41, %30
%34 = load i32, i32* %2
%35 = icmp slt i32 %34, 5
br i1 %35, label %36, label %44
36: ; preds = %33
%37 = load i8*, i8** %4
%38 = load i32, i32* %2
%39 = sext i32 %38 to i64
%40 = getelementptr inbounds i8, i8* %37, i64 %39
store i8 0, i8* %40
br label %41
41: ; preds = %36
%42 = load i32, i32* %2
%43 = add nsw i32 %42, 1
store i32 %43, i32* %2
br label %33
44: ; preds = %33
store i32 5, i32* %2
br label %45
45: ; preds = %53, %44
%46 = load i32, i32* %2
%47 = icmp slt i32 %46, 10
br i1 %47, label %48, label %56
48: ; preds = %45
%49 = load i8*, i8** %4
%50 = load i32, i32* %2
%51 = sext i32 %50 to i64
%52 = getelementptr inbounds i8, i8* %49, i64 %51
store i8 17, i8* %52
br label %53
53: ; preds = %48
%54 = load i32, i32* %2
%55 = add nsw i32 %54, 1
store i32 %55, i32* %2
br label %45
56: ; preds = %45
store i32 10, i32* %2
br label %57
57: ; preds = %65, %56
%58 = load i32, i32* %2
%59 = icmp slt i32 %58, 15
br i1 %59, label %60, label %68
60: ; preds = %57
%61 = load i8*, i8** %4
%62 = load i32, i32* %2
%63 = sext i32 %62 to i64
%64 = getelementptr inbounds i8, i8* %61, i64 %63
store i8 -120, i8* %64
br label %65
65: ; preds = %60
%66 = load i32, i32* %2
%67 = add nsw i32 %66, 1
store i32 %67, i32* %2
br label %57
68: ; preds = %57
store i32 15, i32* %2
br label %69
69: ; preds = %87, %68
%70 = load i32, i32* %2
%71 = icmp slt i32 %70, 20
br i1 %71, label %72, label %90
72: ; preds = %69
%73 = load i32, i32* %3
%74 = and i32 %73, 1
%75 = icmp ne i32 %74, 0
br i1 %75, label %76, label %81
76: ; preds = %72
%77 = load i8*, i8** %4
%78 = load i32, i32* %2
%79 = sext i32 %78 to i64
%80 = getelementptr inbounds i8, i8* %77, i64 %79
store i8 -111, i8* %80
br label %86
81: ; preds = %72
%82 = load i8*, i8** %4
%83 = load i32, i32* %2
%84 = sext i32 %83 to i64
%85 = getelementptr inbounds i8, i8* %82, i64 %84
store i8 25, i8* %85
br label %86
86: ; preds = %81, %76
br label %87
87: ; preds = %86
%88 = load i32, i32* %2
%89 = add nsw i32 %88, 1
store i32 %89, i32* %2
br label %69
90: ; preds = %69
store i32 20, i32* %2
br label %91
91: ; preds = %99, %90
%92 = load i32, i32* %2
%93 = icmp slt i32 %92, 25
br i1 %93, label %94, label %102
94: ; preds = %91
%95 = load i8*, i8** %4
%96 = load i32, i32* %2
%97 = sext i32 %96 to i64
%98 = getelementptr inbounds i8, i8* %95, i64 %97
store i8 68, i8* %98
br label %99
99: ; preds = %94
%100 = load i32, i32* %2
%101 = add nsw i32 %100, 1
store i32 %101, i32* %2
br label %91
102: ; preds = %91
store i32 25, i32* %2
br label %103
103: ; preds = %111, %102
%104 = load i32, i32* %2
%105 = icmp slt i32 %104, 30
br i1 %105, label %106, label %114
106: ; preds = %103
%107 = load i8*, i8** %4
%108 = load i32, i32* %2
%109 = sext i32 %108 to i64
%110 = getelementptr inbounds i8, i8* %107, i64 %109
store i8 34, i8* %110
br label %111
111: ; preds = %106
%112 = load i32, i32* %2
%113 = add nsw i32 %112, 1
store i32 %113, i32* %2
br label %103
114: ; preds = %103
store i32 30, i32* %2
br label %115
115: ; preds = %133, %114
%116 = load i32, i32* %2
%117 = icmp slt i32 %116, 35
br i1 %117, label %118, label %136
118: ; preds = %115
%119 = load i32, i32* %3
%120 = and i32 %119, 1
%121 = icmp ne i32 %120, 0
br i1 %121, label %122, label %127
122: ; preds = %118
%123 = load i8*, i8** %4
%124 = load i32, i32* %2
%125 = sext i32 %124 to i64
%126 = getelementptr inbounds i8, i8* %123, i64 %125
store i8 -60, i8* %126
br label %132
127: ; preds = %118
%128 = load i8*, i8** %4
%129 = load i32, i32* %2
%130 = sext i32 %129 to i64
%131 = getelementptr inbounds i8, i8* %128, i64 %130
store i8 76, i8* %131
br label %132
132: ; preds = %127, %122
br label %133
133: ; preds = %132
%134 = load i32, i32* %2
%135 = add nsw i32 %134, 1
store i32 %135, i32* %2
br label %115
136: ; preds = %115
store i32 35, i32* %2
br label %137
137: ; preds = %155, %136
%138 = load i32, i32* %2
%139 = icmp slt i32 %138, 40
br i1 %139, label %140, label %158
140: ; preds = %137
%141 = load i32, i32* %3
%142 = and i32 %141, 1
%143 = icmp ne i32 %142, 0
br i1 %143, label %144, label %149
144: ; preds = %140
%145 = load i8*, i8** %4
%146 = load i32, i32* %2
%147 = sext i32 %146 to i64
%148 = getelementptr inbounds i8, i8* %145, i64 %147
store i8 -11, i8* %148
br label %154
149: ; preds = %140
%150 = load i8*, i8** %4
%151 = load i32, i32* %2
%152 = sext i32 %151 to i64
%153 = getelementptr inbounds i8, i8* %150, i64 %152
store i8 95, i8* %153
br label %154
154: ; preds = %149, %144
br label %155
155: ; preds = %154
%156 = load i32, i32* %2
%157 = add nsw i32 %156, 1
store i32 %157, i32* %2
br label %137
158: ; preds = %137
store i32 40, i32* %2
br label %159
159: ; preds = %177, %158
%160 = load i32, i32* %2
%161 = icmp slt i32 %160, 45
br i1 %161, label %162, label %180
162: ; preds = %159
%163 = load i32, i32* %3
%164 = and i32 %163, 1
%165 = icmp ne i32 %164, 0
br i1 %165, label %166, label %171
166: ; preds = %162
%167 = load i8*, i8** %4
%168 = load i32, i32* %2
%169 = sext i32 %168 to i64
%170 = getelementptr inbounds i8, i8* %167, i64 %169
store i8 80, i8* %170
br label %176
171: ; preds = %162
%172 = load i8*, i8** %4
%173 = load i32, i32* %2
%174 = sext i32 %173 to i64
%175 = getelementptr inbounds i8, i8* %172, i64 %174
store i8 5, i8* %175
br label %176
176: ; preds = %171, %166
br label %177
177: ; preds = %176
%178 = load i32, i32* %2
%179 = add nsw i32 %178, 1
store i32 %179, i32* %2
br label %159
180: ; preds = %159
store i32 45, i32* %2
br label %181
181: ; preds = %189, %180
%182 = load i32, i32* %2
%183 = icmp slt i32 %182, 50
br i1 %183, label %184, label %192
184: ; preds = %181
%185 = load i8*, i8** %4
%186 = load i32, i32* %2
%187 = sext i32 %186 to i64
%188 = getelementptr inbounds i8, i8* %185, i64 %187
store i8 51, i8* %188
br label %189
189: ; preds = %184
%190 = load i32, i32* %2
%191 = add nsw i32 %190, 1
store i32 %191, i32* %2
br label %181
192: ; preds = %181
store i32 50, i32* %2
br label %193
193: ; preds = %201, %192
%194 = load i32, i32* %2
%195 = icmp slt i32 %194, 55
br i1 %195, label %196, label %204
196: ; preds = %193
%197 = load i8*, i8** %4
%198 = load i32, i32* %2
%199 = sext i32 %198 to i64
%200 = getelementptr inbounds i8, i8* %197, i64 %199
store i8 -35, i8* %200
br label %201
201: ; preds = %196
%202 = load i32, i32* %2
%203 = add nsw i32 %202, 1
store i32 %203, i32* %2
br label %193
204: ; preds = %193
store i32 55, i32* %2
br label %205
205: ; preds = %213, %204
%206 = load i32, i32* %2
%207 = icmp slt i32 %206, 60
br i1 %207, label %208, label %216
208: ; preds = %205
%209 = load i8*, i8** %4
%210 = load i32, i32* %2
%211 = sext i32 %210 to i64
%212 = getelementptr inbounds i8, i8* %209, i64 %211
store i8 -69, i8* %212
br label %213
213: ; preds = %208
%214 = load i32, i32* %2
%215 = add nsw i32 %214, 1
store i32 %215, i32* %2
br label %205
216: ; preds = %205
store i32 60, i32* %2
br label %217
217: ; preds = %225, %216
%218 = load i32, i32* %2
%219 = icmp slt i32 %218, 65
br i1 %219, label %220, label %228
220: ; preds = %217
%221 = load i8*, i8** %4
%222 = load i32, i32* %2
%223 = sext i32 %222 to i64
%224 = getelementptr inbounds i8, i8* %221, i64 %223
store i8 102, i8* %224
br label %225
225: ; preds = %220
%226 = load i32, i32* %2
%227 = add nsw i32 %226, 1
store i32 %227, i32* %2
br label %217
228: ; preds = %217
store i32 65, i32* %2
br label %229
229: ; preds = %237, %228
%230 = load i32, i32* %2
%231 = icmp slt i32 %230, 70
br i1 %231, label %232, label %240
232: ; preds = %229
%233 = load i8*, i8** %4
%234 = load i32, i32* %2
%235 = sext i32 %234 to i64
%236 = getelementptr inbounds i8, i8* %233, i64 %235
store i8 119, i8* %236
br label %237
237: ; preds = %232
%238 = load i32, i32* %2
%239 = add nsw i32 %238, 1
store i32 %239, i32* %2
br label %229
240: ; preds = %229
store i32 70, i32* %2
br label %241
241: ; preds = %249, %240
%242 = load i32, i32* %2
%243 = icmp slt i32 %242, 75
br i1 %243, label %244, label %252
244: ; preds = %241
%245 = load i8*, i8** %4
%246 = load i32, i32* %2
%247 = sext i32 %246 to i64
%248 = getelementptr inbounds i8, i8* %245, i64 %247
store i8 -18, i8* %248
br label %249
249: ; preds = %244
%250 = load i32, i32* %2
%251 = add nsw i32 %250, 1
store i32 %251, i32* %2
br label %241
252: ; preds = %241
store i32 75, i32* %2
br label %253
253: ; preds = %261, %252
%254 = load i32, i32* %2
%255 = icmp slt i32 %254, 80
br i1 %255, label %256, label %264
256: ; preds = %253
%257 = load i8*, i8** %4
%258 = load i32, i32* %2
%259 = sext i32 %258 to i64
%260 = getelementptr inbounds i8, i8* %257, i64 %259
store i8 -1, i8* %260
br label %261
261: ; preds = %256
%262 = load i32, i32* %2
%263 = add nsw i32 %262, 1
store i32 %263, i32* %2
br label %253
264: ; preds = %253
br label %265
265: ; preds = %264, %29
%266 = load i32, i32* %3
%267 = add nsw i32 %266, 1
store i32 %267, i32* %3
br label %6
268: ; preds = %6
ret i32 0
}

LLVM IR (-O2):
define i32 @main() {
%1 = tail call i32 @xoinit(i32 4)
br label %2
2: ; preds = %0, %38
%3 = phi i32 [ 0, %0 ], [ %39, %38 ]
%4 = tail call i8* @xodirectline(i32 %3)
%5 = add nsw i32 %3, -198
%6 = icmp ult i32 %5, -196
br i1 %6, label %7, label %8
7: ; preds = %2
br label %38
8: ; preds = %2
store i8 -16, i8* %4
%9 = getelementptr i8, i8* %4, i64 1
%10 = bitcast i8* %9 to i32*
store i32 0, i32* %10
%11 = getelementptr i8, i8* %4, i64 5
%12 = getelementptr i8, i8* %4, i64 10
%13 = and i32 %3, 1
%14 = icmp eq i32 %13, 0
%15 = getelementptr inbounds i8, i8* %4, i64 15
%16 = getelementptr i8, i8* %4, i64 20
br i1 %14, label %21, label %17
17: ; preds = %8
%18 = getelementptr i8, i8* %4, i64 25
%19 = getelementptr inbounds i8, i8* %4, i64 30
%20 = getelementptr inbounds i8, i8* %4, i64 35
br label %25
21: ; preds = %8
%22 = getelementptr i8, i8* %4, i64 25
%23 = getelementptr inbounds i8, i8* %4, i64 30
%24 = getelementptr inbounds i8, i8* %4, i64 35
br label %25
25: ; preds = %21, %17
%26 = phi i32 [ 84215045, %21 ], [ 1347440720, %17 ]
%27 = phi i8 [ 5, %21 ], [ 80, %17 ]
%28 = getelementptr inbounds i8, i8* %4, i64 40
%29 = bitcast i8* %28 to i32*
store i32 %26, i32* %29
%30 = getelementptr inbounds i8, i8* %4, i64 44
store i8 %27, i8* %30
%31 = getelementptr i8, i8* %4, i64 45
%32 = getelementptr i8, i8* %4, i64 50
%33 = getelementptr i8, i8* %4, i64 55
%34 = getelementptr i8, i8* %4, i64 60
%35 = getelementptr i8, i8* %4, i64 65
%36 = getelementptr i8, i8* %4, i64 70
%37 = getelementptr i8, i8* %4, i64 75
br label %38
38: ; preds = %25, %7
%39 = add nuw nsw i32 %3, 1
%40 = icmp eq i32 %39, 200
br i1 %40, label %41, label %2
41: ; preds = %38
ret i32 0
}