#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*/ brcstr(char *, char);
int /*<<< orphan*/ cub(int);
int /*<<< orphan*/ cud(int);
int /*<<< orphan*/ cuf(int);
int /*<<< orphan*/ cup(int, int);
int /*<<< orphan*/ cuu(int);
int /*<<< orphan*/ decaln();
int /*<<< orphan*/ ed(int);
int /*<<< orphan*/ el(int);
int /*<<< orphan*/ holdit();
int /*<<< orphan*/ hvp(int, int);
int /*<<< orphan*/ ind();
int /*<<< orphan*/ nel();
int /*<<< orphan*/ printf(char *, ...);
int /*<<< orphan*/ println(char *);
int /*<<< orphan*/ ri();
int /*<<< orphan*/ rm(char *);
int /*<<< orphan*/ sm(char *);
tst_movements() {
  int i, row, col, pass, width, hlfxtra;
  char c, *ctext = "This is a correct sentence";
  for (pass = 0; pass <= 1; pass++) {
    if (pass == 0) {
      rm("?3");
      width = 80;
      hlfxtra = 0;
    } else {
      sm("?3");
      width = 132;
      hlfxtra = 26;
    }
    decaln();
    cup(9, 10 + hlfxtra);
    ed(1);
    cup(18, 60 + hlfxtra);
    ed(0);
    el(1);
    cup(9, 71 + hlfxtra);
    el(0);
    for (row = 10; row <= 16; row++) {
      cup(row, 10 + hlfxtra);
      el(1);
      cup(row, 71 + hlfxtra);
      el(0);
    }
    cup(17, 30);
    el(2);
    for (col = 1; col <= width; col++) {
      hvp(24, col);
      printf("*");
      hvp(1, col);
      printf("*");
    }
    cup(2, 2);
    for (row = 2; row <= 23; row++) {
      printf("+");
      cub(1);
      ind();
    }
    cup(23, width - 1);
    for (row = 23; row >= 2; row--) {
      printf("+");
      cub(1);
      ri();
    }
    cup(2, 1);
    for (row = 2; row <= 23; row++) {
      printf("*");
      cup(row, width);
      printf("*");
      cub(10);
      if (row < 10)
        nel();
      else
        printf("\n");
    }
    cup(2, 10);
    cub(42 + hlfxtra);
    cuf(2);
    for (col = 3; col <= width - 2; col++) {
      printf("+");
      cuf(0);
      cub(2);
      cuf(1);
    }
    cup(23, 70 + hlfxtra);
    cuf(42 + hlfxtra);
    cub(2);
    for (col = width - 2; col >= 3; col--) {
      printf("+");
      cub(1);
      cuf(1);
      cub(0);
      printf("%c", 8);
    }
    cup(1, 1);
    cuu(10);
    cuu(1);
    cuu(0);
    cup(24, width);
    cud(10);
    cud(1);
    cud(0);
    cup(10, 12 + hlfxtra);
    for (row = 10; row <= 15; row++) {
      for (col = 12 + hlfxtra; col <= 69 + hlfxtra; col++)
        printf(" ");
      cud(1);
      cub(58);
    }
    cuu(5);
    cuf(1);
    printf("The screen should be cleared,  and have an unbroken bor-");
    cup(12, 13 + hlfxtra);
    printf("der of *'s and +'s around the edge,   and exactly in the");
    cup(13, 13 + hlfxtra);
    printf("middle  there should be a frame of E's around this  text");
    cup(14, 13 + hlfxtra);
    printf("with  one (1) free position around it.    ");
    holdit();
  }
  rm("?3");
  ed(2);
  cup(1, 1);
  println("Test of cursor-control characters inside ESC sequences.");
  println("Below should be two identical lines:");
  println("");
  println("A B C D E F G H I J K L M N O P Q R S");
  for (i = 1; i < 20; i++) {
    printf("%c", 64 + i);
    brcstr("2\010", 'C');
  }
  println("");
  println("");
  holdit();
  ed(2);
  cup(1, 1);
  println("Test of leading zeros in ESC sequences.");
  printf("Two lines below you should see the sentence \"%s\".", ctext);
  for (col = 1; *ctext; col++)
    printf("\033[00000000004;00000000%dH%c", col, *ctext++);
  cup(20, 1);
  holdit();
}


x86 assembly (clang, -O0):
<tst_movements>:
push   %rbp
mov    %rsp,%rbp
sub    $0x30,%rsp
lea    0xdd1(%rip),%rax
mov    %rax,-0x28(%rbp)
movl   $0x0,-0x14(%rbp)
cmpl   $0x1,-0x14(%rbp)
jg     170a <tst_movements+0x4ea>
cmpl   $0x0,-0x14(%rbp)
jne    126d <tst_movements+0x4d>
lea    0xdc6(%rip),%rdi
call   1030 <rm@plt>
movl   $0x50,-0x18(%rbp)
movl   $0x0,-0x1c(%rbp)
jmp    1287 <tst_movements+0x67>
lea    0xda7(%rip),%rdi
call   1110 <sm@plt>
movl   $0x84,-0x18(%rbp)
movl   $0x1a,-0x1c(%rbp)
mov    $0x0,%al
call   1070 <decaln@plt>
mov    -0x1c(%rbp),%esi
add    $0xa,%esi
mov    $0x9,%edi
call   10a0 <cup@plt>
mov    $0x1,%edi
call   10e0 <ed@plt>
mov    -0x1c(%rbp),%esi
add    $0x3c,%esi
mov    $0x12,%edi
call   10a0 <cup@plt>
xor    %edi,%edi
call   10e0 <ed@plt>
mov    $0x1,%edi
call   10c0 <el@plt>
mov    -0x1c(%rbp),%esi
add    $0x47,%esi
mov    $0x9,%edi
call   10a0 <cup@plt>
xor    %edi,%edi
call   10c0 <el@plt>
movl   $0xa,-0xc(%rbp)
cmpl   $0x10,-0xc(%rbp)
jg     132c <tst_movements+0x10c>
mov    -0xc(%rbp),%edi
mov    -0x1c(%rbp),%esi
add    $0xa,%esi
call   10a0 <cup@plt>
mov    $0x1,%edi
call   10c0 <el@plt>
mov    -0xc(%rbp),%edi
mov    -0x1c(%rbp),%esi
add    $0x47,%esi
call   10a0 <cup@plt>
xor    %edi,%edi
call   10c0 <el@plt>
mov    -0xc(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xc(%rbp)
jmp    12e7 <tst_movements+0xc7>
mov    $0x11,%edi
mov    $0x1e,%esi
call   10a0 <cup@plt>
mov    $0x2,%edi
call   10c0 <el@plt>
movl   $0x1,-0x10(%rbp)
mov    -0x10(%rbp),%eax
cmp    -0x18(%rbp),%eax
jg     139c <tst_movements+0x17c>
mov    -0x10(%rbp),%esi
mov    $0x18,%edi
call   10f0 <hvp@plt>
lea    0xcb2(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
mov    -0x10(%rbp),%esi
mov    $0x1,%edi
call   10f0 <hvp@plt>
lea    0xc97(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
mov    -0x10(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x10(%rbp)
jmp    134c <tst_movements+0x12c>
mov    $0x2,%esi
mov    %esi,%edi
call   10a0 <cup@plt>
movl   $0x2,-0xc(%rbp)
cmpl   $0x17,-0xc(%rbp)
jg     13e6 <tst_movements+0x1c6>
lea    0xc60(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
mov    $0x1,%edi
call   10b0 <cub@plt>
mov    $0x0,%al
call   10d0 <ind@plt>
mov    -0xc(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xc(%rbp)
jmp    13af <tst_movements+0x18f>
mov    -0x18(%rbp),%esi
sub    $0x1,%esi
mov    $0x17,%edi
call   10a0 <cup@plt>
movl   $0x17,-0xc(%rbp)
cmpl   $0x2,-0xc(%rbp)
jl     1434 <tst_movements+0x214>
lea    0xc12(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
mov    $0x1,%edi
call   10b0 <cub@plt>
mov    $0x0,%al
call   1040 <ri@plt>
mov    -0xc(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0xc(%rbp)
jmp    13fd <tst_movements+0x1dd>
mov    $0x2,%edi
mov    $0x1,%esi
call   10a0 <cup@plt>
movl   $0x2,-0xc(%rbp)
cmpl   $0x17,-0xc(%rbp)
jg     14bc <tst_movements+0x29c>
lea    0xbc3(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
mov    -0xc(%rbp),%edi
mov    -0x18(%rbp),%esi
call   10a0 <cup@plt>
lea    0xbaa(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
mov    $0xa,%edi
call   10b0 <cub@plt>
cmpl   $0xa,-0xc(%rbp)
jge    149b <tst_movements+0x27b>
mov    $0x0,%al
call   1100 <nel@plt>
jmp    14a9 <tst_movements+0x289>
lea    0xb80(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
jmp    14ae <tst_movements+0x28e>
mov    -0xc(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xc(%rbp)
jmp    144a <tst_movements+0x22a>
mov    $0x2,%edi
mov    $0xa,%esi
call   10a0 <cup@plt>
mov    -0x1c(%rbp),%edi
add    $0x2a,%edi
call   10b0 <cub@plt>
mov    $0x2,%edi
call   1120 <cuf@plt>
movl   $0x3,-0x10(%rbp)
mov    -0x10(%rbp),%eax
mov    -0x18(%rbp),%ecx
sub    $0x2,%ecx
cmp    %ecx,%eax
jg     152f <tst_movements+0x30f>
lea    0xb21(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
xor    %edi,%edi
call   1120 <cuf@plt>
mov    $0x2,%edi
call   10b0 <cub@plt>
mov    $0x1,%edi
call   1120 <cuf@plt>
mov    -0x10(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x10(%rbp)
jmp    14e7 <tst_movements+0x2c7>
mov    -0x1c(%rbp),%esi
add    $0x46,%esi
mov    $0x17,%edi
call   10a0 <cup@plt>
mov    -0x1c(%rbp),%edi
add    $0x2a,%edi
call   1120 <cuf@plt>
mov    $0x2,%edi
call   10b0 <cub@plt>
mov    -0x18(%rbp),%eax
sub    $0x2,%eax
mov    %eax,-0x10(%rbp)
cmpl   $0x3,-0x10(%rbp)
jl     15b1 <tst_movements+0x391>
lea    0xab2(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
mov    $0x1,%edi
call   10b0 <cub@plt>
mov    $0x1,%edi
call   1120 <cuf@plt>
xor    %edi,%edi
call   10b0 <cub@plt>
lea    0xc5c(%rip),%rdi
mov    $0x8,%esi
mov    $0x0,%al
call   1060 <printf@plt>
mov    -0x10(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x10(%rbp)
jmp    155d <tst_movements+0x33d>
mov    $0x1,%esi
mov    %esi,%edi
call   10a0 <cup@plt>
mov    $0xa,%edi
call   1140 <cuu@plt>
mov    $0x1,%edi
call   1140 <cuu@plt>
xor    %edi,%edi
call   1140 <cuu@plt>
mov    -0x18(%rbp),%esi
mov    $0x18,%edi
call   10a0 <cup@plt>
mov    $0xa,%edi
call   1090 <cud@plt>
mov    $0x1,%edi
call   1090 <cud@plt>
xor    %edi,%edi
call   1090 <cud@plt>
mov    -0x1c(%rbp),%esi
add    $0xc,%esi
mov    $0xa,%edi
call   10a0 <cup@plt>
movl   $0xa,-0xc(%rbp)
cmpl   $0xf,-0xc(%rbp)
jg     1679 <tst_movements+0x459>
mov    -0x1c(%rbp),%eax
add    $0xc,%eax
mov    %eax,-0x10(%rbp)
mov    -0x10(%rbp),%eax
mov    -0x1c(%rbp),%ecx
add    $0x45,%ecx
cmp    %ecx,%eax
jg     1657 <tst_movements+0x437>
lea    0xab6(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
mov    -0x10(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x10(%rbp)
jmp    162a <tst_movements+0x40a>
mov    $0x1,%edi
call   1090 <cud@plt>
mov    $0x3a,%edi
call   10b0 <cub@plt>
mov    -0xc(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xc(%rbp)
jmp    1617 <tst_movements+0x3f7>
mov    $0x5,%edi
call   1140 <cuu@plt>
mov    $0x1,%edi
call   1120 <cuf@plt>
lea    0x990(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
mov    -0x1c(%rbp),%esi
add    $0xd,%esi
mov    $0xc,%edi
call   10a0 <cup@plt>
lea    0x9ab(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
mov    -0x1c(%rbp),%esi
add    $0xd,%esi
mov    $0xd,%edi
call   10a0 <cup@plt>
lea    0x9c6(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
mov    -0x1c(%rbp),%esi
add    $0xd,%esi
mov    $0xe,%edi
call   10a0 <cup@plt>
lea    0x9e1(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
mov    $0x0,%al
call   1130 <holdit@plt>
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14(%rbp)
jmp    123a <tst_movements+0x1a>
lea    0x90a(%rip),%rdi
call   1030 <rm@plt>
mov    $0x2,%edi
call   10e0 <ed@plt>
mov    $0x1,%esi
mov    %esi,%edi
call   10a0 <cup@plt>
lea    0x9c7(%rip),%rdi
call   1080 <println@plt>
lea    0x9f3(%rip),%rdi
call   1080 <println@plt>
lea    0xa34(%rip),%rdi
call   1080 <println@plt>
lea    0xa00(%rip),%rdi
call   1080 <println@plt>
movl   $0x1,-0x8(%rbp)
cmpl   $0x14,-0x8(%rbp)
jge    17a0 <tst_movements+0x580>
mov    -0x8(%rbp),%esi
add    $0x40,%esi
lea    0xa79(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x9f5(%rip),%rdi
mov    $0x43,%esi
call   1050 <brcstr@plt>
mov    -0x8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8(%rbp)
jmp    1763 <tst_movements+0x543>
lea    0x9d8(%rip),%rdi
call   1080 <println@plt>
lea    0x9cc(%rip),%rdi
call   1080 <println@plt>
mov    $0x0,%al
call   1130 <holdit@plt>
mov    $0x2,%edi
call   10e0 <ed@plt>
mov    $0x1,%esi
mov    %esi,%edi
call   10a0 <cup@plt>
lea    0x9a4(%rip),%rdi
call   1080 <println@plt>
mov    -0x28(%rbp),%rsi
lea    0x9bc(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
movl   $0x1,-0x10(%rbp)
mov    -0x28(%rbp),%rax
cmpb   $0x0,(%rax)
je     1838 <tst_movements+0x618>
mov    -0x10(%rbp),%esi
mov    -0x28(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x28(%rbp)
movsbl (%rax),%edx
lea    0x9b7(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
mov    -0x10(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x10(%rbp)
jmp    17fa <tst_movements+0x5da>
mov    $0x14,%edi
mov    $0x1,%esi
call   10a0 <cup@plt>
mov    $0x0,%al
call   1130 <holdit@plt>
mov    -0x4(%rbp),%eax
add    $0x30,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<tst_movements>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
push   %rax
mov    $0x1,%al
nopl   (%rax)
test   $0x1,%al
mov    %eax,0x4(%rsp)
lea    0x1dce(%rip),%rdi
je     1260 <tst_movements+0x30>
call   1040 <rm@plt>
xor    %r13d,%r13d
mov    $0x50,%r14d
jmp    1271 <tst_movements+0x41>
nop
call   1120 <sm@plt>
mov    $0x1a,%r13d
mov    $0x84,%r14d
xor    %eax,%eax
call   1080 <decaln@plt>
lea    0xa(%r13),%r15d
mov    $0x9,%edi
mov    %r15d,%esi
call   10b0 <cup@plt>
mov    $0x1,%ebx
mov    $0x1,%edi
call   10f0 <ed@plt>
lea    0x3c(%r13),%esi
mov    $0x12,%edi
call   10b0 <cup@plt>
xor    %edi,%edi
call   10f0 <ed@plt>
mov    $0x1,%edi
call   10d0 <el@plt>
lea    0x47(%r13),%ebp
mov    $0x9,%edi
mov    %ebp,%esi
call   10b0 <cup@plt>
xor    %edi,%edi
call   10d0 <el@plt>
mov    $0xa,%edi
mov    %r15d,%esi
call   10b0 <cup@plt>
mov    $0x1,%edi
call   10d0 <el@plt>
mov    $0xa,%edi
mov    %ebp,%esi
call   10b0 <cup@plt>
xor    %edi,%edi
call   10d0 <el@plt>
mov    $0xb,%edi
mov    %r15d,%esi
call   10b0 <cup@plt>
mov    $0x1,%edi
call   10d0 <el@plt>
mov    $0xb,%edi
mov    %ebp,%esi
call   10b0 <cup@plt>
xor    %edi,%edi
call   10d0 <el@plt>
mov    $0xc,%edi
mov    %r15d,%esi
call   10b0 <cup@plt>
mov    $0x1,%edi
call   10d0 <el@plt>
mov    $0xc,%edi
mov    %ebp,%esi
call   10b0 <cup@plt>
xor    %edi,%edi
call   10d0 <el@plt>
mov    $0xd,%edi
mov    %r15d,%esi
call   10b0 <cup@plt>
mov    $0x1,%edi
call   10d0 <el@plt>
mov    $0xd,%edi
mov    %ebp,%esi
call   10b0 <cup@plt>
xor    %edi,%edi
call   10d0 <el@plt>
mov    $0xe,%edi
mov    %r15d,%esi
call   10b0 <cup@plt>
mov    $0x1,%edi
call   10d0 <el@plt>
mov    $0xe,%edi
mov    %ebp,%esi
call   10b0 <cup@plt>
xor    %edi,%edi
call   10d0 <el@plt>
mov    $0xf,%edi
mov    %r15d,%esi
call   10b0 <cup@plt>
mov    $0x1,%edi
call   10d0 <el@plt>
mov    $0xf,%edi
mov    %ebp,%esi
call   10b0 <cup@plt>
xor    %edi,%edi
call   10d0 <el@plt>
mov    $0x10,%edi
mov    %r15d,%esi
call   10b0 <cup@plt>
mov    $0x1,%edi
call   10d0 <el@plt>
mov    $0x10,%edi
mov    %ebp,%esi
call   10b0 <cup@plt>
xor    %edi,%edi
call   10d0 <el@plt>
mov    $0x11,%edi
mov    $0x1e,%esi
call   10b0 <cup@plt>
mov    $0x2,%edi
call   10d0 <el@plt>
mov    %r14d,%ebp
neg    %ebp
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
mov    $0x18,%edi
mov    %ebx,%esi
call   1100 <hvp@plt>
mov    $0x2a,%edi
call   1030 <putchar@plt>
mov    $0x1,%edi
mov    %ebx,%esi
call   1100 <hvp@plt>
mov    $0x2a,%edi
call   1030 <putchar@plt>
lea    (%rbx,%rbp,1),%eax
add    $0x1,%eax
mov    %ebx,%ecx
add    $0x1,%ecx
mov    %ecx,%ebx
cmp    $0x1,%eax
jne    1420 <tst_movements+0x1f0>
mov    $0x2,%r15d
mov    $0x2,%edi
mov    $0x2,%esi
call   10b0 <cup@plt>
mov    $0x2b,%edi
call   1030 <putchar@plt>
mov    $0x1,%edi
call   10c0 <cub@plt>
xor    %eax,%eax
call   10e0 <ind@plt>
mov    $0x2b,%edi
call   1030 <putchar@plt>
mov    $0x1,%edi
call   10c0 <cub@plt>
xor    %eax,%eax
call   10e0 <ind@plt>
mov    $0x2b,%edi
call   1030 <putchar@plt>
mov    $0x1,%edi
call   10c0 <cub@plt>
xor    %eax,%eax
call   10e0 <ind@plt>
mov    $0x2b,%edi
call   1030 <putchar@plt>
mov    $0x1,%edi
call   10c0 <cub@plt>
xor    %eax,%eax
call   10e0 <ind@plt>
mov    $0x2b,%edi
call   1030 <putchar@plt>
mov    $0x1,%edi
call   10c0 <cub@plt>
xor    %eax,%eax
call   10e0 <ind@plt>
mov    $0x2b,%edi
call   1030 <putchar@plt>
mov    $0x1,%edi
call   10c0 <cub@plt>
xor    %eax,%eax
call   10e0 <ind@plt>
mov    $0x2b,%edi
call   1030 <putchar@plt>
mov    $0x1,%edi
call   10c0 <cub@plt>
xor    %eax,%eax
call   10e0 <ind@plt>
mov    $0x2b,%edi
call   1030 <putchar@plt>
mov    $0x1,%edi
call   10c0 <cub@plt>
xor    %eax,%eax
call   10e0 <ind@plt>
mov    $0x2b,%edi
call   1030 <putchar@plt>
mov    $0x1,%edi
call   10c0 <cub@plt>
xor    %eax,%eax
call   10e0 <ind@plt>
mov    $0x2b,%edi
call   1030 <putchar@plt>
mov    $0x1,%edi
call   10c0 <cub@plt>
xor    %eax,%eax
call   10e0 <ind@plt>
mov    $0x2b,%edi
call   1030 <putchar@plt>
mov    $0x1,%edi
call   10c0 <cub@plt>
xor    %eax,%eax
call   10e0 <ind@plt>
mov    $0x2b,%edi
call   1030 <putchar@plt>
mov    $0x1,%edi
call   10c0 <cub@plt>
xor    %eax,%eax
call   10e0 <ind@plt>
mov    $0x2b,%edi
call   1030 <putchar@plt>
mov    $0x1,%edi
call   10c0 <cub@plt>
xor    %eax,%eax
call   10e0 <ind@plt>
mov    $0x2b,%edi
call   1030 <putchar@plt>
mov    $0x1,%edi
call   10c0 <cub@plt>
xor    %eax,%eax
call   10e0 <ind@plt>
mov    $0x2b,%edi
call   1030 <putchar@plt>
mov    $0x1,%edi
call   10c0 <cub@plt>
xor    %eax,%eax
call   10e0 <ind@plt>
mov    $0x2b,%edi
call   1030 <putchar@plt>
mov    $0x1,%edi
call   10c0 <cub@plt>
xor    %eax,%eax
call   10e0 <ind@plt>
mov    $0x2b,%edi
call   1030 <putchar@plt>
mov    $0x1,%edi
call   10c0 <cub@plt>
xor    %eax,%eax
call   10e0 <ind@plt>
mov    $0x2b,%edi
call   1030 <putchar@plt>
mov    $0x1,%edi
call   10c0 <cub@plt>
xor    %eax,%eax
call   10e0 <ind@plt>
mov    $0x2b,%edi
call   1030 <putchar@plt>
mov    $0x1,%edi
call   10c0 <cub@plt>
xor    %eax,%eax
call   10e0 <ind@plt>
mov    $0x2b,%edi
call   1030 <putchar@plt>
mov    $0x1,%edi
call   10c0 <cub@plt>
xor    %eax,%eax
call   10e0 <ind@plt>
mov    $0x2b,%edi
call   1030 <putchar@plt>
mov    $0x1,%edi
call   10c0 <cub@plt>
xor    %eax,%eax
call   10e0 <ind@plt>
mov    $0x2b,%edi
call   1030 <putchar@plt>
mov    $0x1,%edi
call   10c0 <cub@plt>
xor    %eax,%eax
call   10e0 <ind@plt>
lea    -0x1(%r14),%r12d
mov    $0x17,%edi
mov    %r12d,%esi
call   10b0 <cup@plt>
mov    $0x2b,%edi
call   1030 <putchar@plt>
mov    $0x1,%edi
call   10c0 <cub@plt>
xor    %eax,%eax
call   1050 <ri@plt>
mov    $0x2b,%edi
call   1030 <putchar@plt>
mov    $0x1,%edi
call   10c0 <cub@plt>
xor    %eax,%eax
call   1050 <ri@plt>
mov    $0x2b,%edi
call   1030 <putchar@plt>
mov    $0x1,%edi
call   10c0 <cub@plt>
xor    %eax,%eax
call   1050 <ri@plt>
mov    $0x2b,%edi
call   1030 <putchar@plt>
mov    $0x1,%edi
call   10c0 <cub@plt>
xor    %eax,%eax
call   1050 <ri@plt>
mov    $0x2b,%edi
call   1030 <putchar@plt>
mov    $0x1,%edi
call   10c0 <cub@plt>
xor    %eax,%eax
call   1050 <ri@plt>
mov    $0x2b,%edi
call   1030 <putchar@plt>
mov    $0x1,%edi
call   10c0 <cub@plt>
xor    %eax,%eax
call   1050 <ri@plt>
mov    $0x2b,%edi
call   1030 <putchar@plt>
mov    $0x1,%edi
call   10c0 <cub@plt>
xor    %eax,%eax
call   1050 <ri@plt>
mov    $0x2b,%edi
call   1030 <putchar@plt>
mov    $0x1,%edi
call   10c0 <cub@plt>
xor    %eax,%eax
call   1050 <ri@plt>
mov    $0x2b,%edi
call   1030 <putchar@plt>
mov    $0x1,%edi
call   10c0 <cub@plt>
xor    %eax,%eax
call   1050 <ri@plt>
mov    $0x2b,%edi
call   1030 <putchar@plt>
mov    $0x1,%edi
call   10c0 <cub@plt>
xor    %eax,%eax
call   1050 <ri@plt>
mov    $0x2b,%edi
call   1030 <putchar@plt>
mov    $0x1,%edi
call   10c0 <cub@plt>
xor    %eax,%eax
call   1050 <ri@plt>
mov    $0x2b,%edi
call   1030 <putchar@plt>
mov    $0x1,%edi
call   10c0 <cub@plt>
xor    %eax,%eax
call   1050 <ri@plt>
mov    $0x2b,%edi
call   1030 <putchar@plt>
mov    $0x1,%edi
call   10c0 <cub@plt>
xor    %eax,%eax
call   1050 <ri@plt>
mov    $0x2b,%edi
call   1030 <putchar@plt>
mov    $0x1,%edi
call   10c0 <cub@plt>
xor    %eax,%eax
call   1050 <ri@plt>
mov    $0x2b,%edi
call   1030 <putchar@plt>
mov    $0x1,%edi
call   10c0 <cub@plt>
xor    %eax,%eax
call   1050 <ri@plt>
mov    $0x2b,%edi
call   1030 <putchar@plt>
mov    $0x1,%edi
call   10c0 <cub@plt>
xor    %eax,%eax
call   1050 <ri@plt>
mov    $0x2b,%edi
call   1030 <putchar@plt>
mov    $0x1,%edi
call   10c0 <cub@plt>
xor    %eax,%eax
call   1050 <ri@plt>
mov    $0x2b,%edi
call   1030 <putchar@plt>
mov    $0x1,%edi
call   10c0 <cub@plt>
xor    %eax,%eax
call   1050 <ri@plt>
mov    $0x2b,%edi
call   1030 <putchar@plt>
mov    $0x1,%edi
call   10c0 <cub@plt>
xor    %eax,%eax
call   1050 <ri@plt>
mov    $0x2b,%edi
call   1030 <putchar@plt>
mov    $0x1,%edi
call   10c0 <cub@plt>
xor    %eax,%eax
call   1050 <ri@plt>
mov    $0x2b,%edi
call   1030 <putchar@plt>
mov    $0x1,%edi
call   10c0 <cub@plt>
xor    %eax,%eax
call   1050 <ri@plt>
mov    $0x2b,%edi
call   1030 <putchar@plt>
mov    $0x1,%edi
call   10c0 <cub@plt>
xor    %eax,%eax
call   1050 <ri@plt>
mov    $0x2,%edi
mov    $0x1,%esi
call   10b0 <cup@plt>
jmp    1954 <tst_movements+0x724>
nopl   0x0(%rax)
mov    $0xa,%edi
call   1030 <putchar@plt>
add    $0x1,%r15d
cmp    $0x18,%r15d
je     1990 <tst_movements+0x760>
mov    $0x2a,%edi
call   1030 <putchar@plt>
mov    %r15d,%edi
mov    %r14d,%esi
call   10b0 <cup@plt>
mov    $0x2a,%edi
call   1030 <putchar@plt>
mov    $0xa,%edi
call   10c0 <cub@plt>
cmp    $0x9,%r15d
ja     1940 <tst_movements+0x710>
xor    %eax,%eax
call   1110 <nel@plt>
jmp    194a <tst_movements+0x71a>
nopl   0x0(%rax)
mov    $0x2,%edi
mov    $0xa,%esi
call   10b0 <cup@plt>
lea    0x2a(%r13),%ebx
mov    %ebx,%edi
call   10c0 <cub@plt>
mov    $0x2,%edi
call   1130 <cuf@plt>
mov    $0x4,%ebp
nopl   0x0(%rax)
mov    $0x2b,%edi
call   1030 <putchar@plt>
xor    %edi,%edi
call   1130 <cuf@plt>
mov    $0x2,%edi
call   10c0 <cub@plt>
mov    $0x1,%edi
call   1130 <cuf@plt>
add    $0x1,%ebp
cmp    %ebp,%r14d
jne    19c0 <tst_movements+0x790>
lea    0x46(%r13),%esi
mov    $0x17,%edi
call   10b0 <cup@plt>
mov    %ebx,%edi
call   1130 <cuf@plt>
mov    $0x2,%edi
call   10c0 <cub@plt>
nopl   0x0(%rax)
mov    $0x2b,%edi
call   1030 <putchar@plt>
mov    $0x1,%edi
call   10c0 <cub@plt>
mov    $0x1,%edi
call   1130 <cuf@plt>
xor    %edi,%edi
call   10c0 <cub@plt>
mov    $0x8,%edi
call   1030 <putchar@plt>
add    $0xffffffff,%r12d
cmp    $0x3,%r12d
jg     1a10 <tst_movements+0x7e0>
mov    $0x1,%edi
mov    $0x1,%esi
call   10b0 <cup@plt>
mov    $0xa,%edi
call   1150 <cuu@plt>
mov    $0x1,%edi
call   1150 <cuu@plt>
xor    %edi,%edi
call   1150 <cuu@plt>
mov    $0x18,%edi
mov    %r14d,%esi
call   10b0 <cup@plt>
mov    $0xa,%edi
call   10a0 <cud@plt>
mov    $0x1,%edi
call   10a0 <cud@plt>
xor    %edi,%edi
call   10a0 <cud@plt>
lea    0xc(%r13),%esi
mov    $0xa,%edi
call   10b0 <cup@plt>
mov    $0x3a,%ebx
xchg   %ax,%ax
mov    $0x20,%edi
call   1030 <putchar@plt>
add    $0xffffffff,%ebx
jne    1ab0 <tst_movements+0x880>
mov    $0x1,%edi
call   10a0 <cud@plt>
mov    $0x3a,%ebx
mov    $0x3a,%edi
call   10c0 <cub@plt>
nopl   0x0(%rax,%rax,1)
mov    $0x20,%edi
call   1030 <putchar@plt>
add    $0xffffffff,%ebx
jne    1ae0 <tst_movements+0x8b0>
mov    $0x1,%edi
call   10a0 <cud@plt>
mov    $0x3a,%ebx
mov    $0x3a,%edi
call   10c0 <cub@plt>
nopl   0x0(%rax,%rax,1)
mov    $0x20,%edi
call   1030 <putchar@plt>
add    $0xffffffff,%ebx
jne    1b10 <tst_movements+0x8e0>
mov    $0x1,%edi
call   10a0 <cud@plt>
mov    $0x3a,%ebx
mov    $0x3a,%edi
call   10c0 <cub@plt>
nopl   0x0(%rax,%rax,1)
mov    $0x20,%edi
call   1030 <putchar@plt>
add    $0xffffffff,%ebx
jne    1b40 <tst_movements+0x910>
mov    $0x1,%edi
call   10a0 <cud@plt>
mov    $0x3a,%ebx
mov    $0x3a,%edi
call   10c0 <cub@plt>
nopl   0x0(%rax,%rax,1)
mov    $0x20,%edi
call   1030 <putchar@plt>
add    $0xffffffff,%ebx
jne    1b70 <tst_movements+0x940>
mov    $0x1,%edi
call   10a0 <cud@plt>
mov    $0x3a,%ebx
mov    $0x3a,%edi
call   10c0 <cub@plt>
nopl   0x0(%rax,%rax,1)
mov    $0x20,%edi
call   1030 <putchar@plt>
add    $0xffffffff,%ebx
jne    1ba0 <tst_movements+0x970>
mov    $0x1,%edi
call   10a0 <cud@plt>
mov    $0x3a,%edi
call   10c0 <cub@plt>
mov    $0x5,%edi
call   1150 <cuu@plt>
mov    $0x1,%edi
call   1130 <cuf@plt>
lea    0x1440(%rip),%rdi
xor    %eax,%eax
call   1070 <printf@plt>
add    $0xd,%r13d
mov    $0xc,%edi
mov    %r13d,%esi
call   10b0 <cup@plt>
lea    0x145a(%rip),%rdi
xor    %eax,%eax
call   1070 <printf@plt>
mov    $0xd,%edi
mov    %r13d,%esi
call   10b0 <cup@plt>
lea    0x1478(%rip),%rdi
xor    %eax,%eax
call   1070 <printf@plt>
mov    $0xe,%edi
mov    %r13d,%esi
call   10b0 <cup@plt>
lea    0x1496(%rip),%rdi
xor    %eax,%eax
call   1070 <printf@plt>
xor    %eax,%eax
call   1140 <holdit@plt>
testb  $0x1,0x4(%rsp)
mov    $0x0,%eax
jne    1240 <tst_movements+0x10>
lea    0x13c3(%rip),%rdi
call   1040 <rm@plt>
mov    $0x2,%edi
call   10f0 <ed@plt>
mov    $0x1,%edi
mov    $0x1,%esi
call   10b0 <cup@plt>
lea    0x1477(%rip),%rdi
call   1090 <println@plt>
lea    0x14a3(%rip),%rdi
call   1090 <println@plt>
lea    0x14e4(%rip),%rbx
mov    %rbx,%rdi
call   1090 <println@plt>
lea    0x14ad(%rip),%rdi
call   1090 <println@plt>
mov    $0x41,%edi
call   1030 <putchar@plt>
lea    0x14bd(%rip),%rbp
mov    %rbp,%rdi
mov    $0x43,%esi
call   1060 <brcstr@plt>
mov    $0x42,%edi
call   1030 <putchar@plt>
mov    %rbp,%rdi
mov    $0x43,%esi
call   1060 <brcstr@plt>
mov    $0x43,%edi
call   1030 <putchar@plt>
mov    %rbp,%rdi
mov    $0x43,%esi
call   1060 <brcstr@plt>
mov    $0x44,%edi
call   1030 <putchar@plt>
mov    %rbp,%rdi
mov    $0x43,%esi
call   1060 <brcstr@plt>
mov    $0x45,%edi
call   1030 <putchar@plt>
mov    %rbp,%rdi
mov    $0x43,%esi
call   1060 <brcstr@plt>
mov    $0x46,%edi
call   1030 <putchar@plt>
mov    %rbp,%rdi
mov    $0x43,%esi
call   1060 <brcstr@plt>
mov    $0x47,%edi
call   1030 <putchar@plt>
mov    %rbp,%rdi
mov    $0x43,%esi
call   1060 <brcstr@plt>
mov    $0x48,%edi
call   1030 <putchar@plt>
mov    %rbp,%rdi
mov    $0x43,%esi
call   1060 <brcstr@plt>
mov    $0x49,%edi
call   1030 <putchar@plt>
mov    %rbp,%rdi
mov    $0x43,%esi
call   1060 <brcstr@plt>
mov    $0x4a,%edi
call   1030 <putchar@plt>
mov    %rbp,%rdi
mov    $0x43,%esi
call   1060 <brcstr@plt>
mov    $0x4b,%edi
call   1030 <putchar@plt>
mov    %rbp,%rdi
mov    $0x43,%esi
call   1060 <brcstr@plt>
mov    $0x4c,%edi
call   1030 <putchar@plt>
mov    %rbp,%rdi
mov    $0x43,%esi
call   1060 <brcstr@plt>
mov    $0x4d,%edi
call   1030 <putchar@plt>
mov    %rbp,%rdi
mov    $0x43,%esi
call   1060 <brcstr@plt>
mov    $0x4e,%edi
call   1030 <putchar@plt>
mov    %rbp,%rdi
mov    $0x43,%esi
call   1060 <brcstr@plt>
mov    $0x4f,%edi
call   1030 <putchar@plt>
mov    %rbp,%rdi
mov    $0x43,%esi
call   1060 <brcstr@plt>
mov    $0x50,%edi
call   1030 <putchar@plt>
mov    %rbp,%rdi
mov    $0x43,%esi
call   1060 <brcstr@plt>
mov    $0x51,%edi
call   1030 <putchar@plt>
mov    %rbp,%rdi
mov    $0x43,%esi
call   1060 <brcstr@plt>
mov    $0x52,%edi
call   1030 <putchar@plt>
mov    %rbp,%rdi
mov    $0x43,%esi
call   1060 <brcstr@plt>
mov    $0x53,%edi
call   1030 <putchar@plt>
mov    %rbp,%rdi
mov    $0x43,%esi
call   1060 <brcstr@plt>
mov    %rbx,%rdi
call   1090 <println@plt>
mov    %rbx,%rdi
call   1090 <println@plt>
xor    %eax,%eax
call   1140 <holdit@plt>
mov    $0x2,%edi
call   10f0 <ed@plt>
mov    $0x1,%edi
mov    $0x1,%esi
call   10b0 <cup@plt>
lea    0x12de(%rip),%rdi
call   1090 <println@plt>
lea    0x12fa(%rip),%rdi
lea    0x1151(%rip),%rsi
xor    %eax,%eax
call   1070 <printf@plt>
lea    0x1317(%rip),%rbx
mov    %rbx,%rdi
mov    $0x1,%esi
mov    $0x54,%edx
xor    %eax,%eax
call   1070 <printf@plt>
mov    %rbx,%rdi
mov    $0x2,%esi
mov    $0x68,%edx
xor    %eax,%eax
call   1070 <printf@plt>
mov    %rbx,%rdi
mov    $0x3,%esi
mov    $0x69,%edx
xor    %eax,%eax
call   1070 <printf@plt>
mov    %rbx,%rdi
mov    $0x4,%esi
mov    $0x73,%edx
xor    %eax,%eax
call   1070 <printf@plt>
mov    %rbx,%rdi
mov    $0x5,%esi
mov    $0x20,%edx
xor    %eax,%eax
call   1070 <printf@plt>
mov    %rbx,%rdi
mov    $0x6,%esi
mov    $0x69,%edx
xor    %eax,%eax
call   1070 <printf@plt>
mov    %rbx,%rdi
mov    $0x7,%esi
mov    $0x73,%edx
xor    %eax,%eax
call   1070 <printf@plt>
mov    %rbx,%rdi
mov    $0x8,%esi
mov    $0x20,%edx
xor    %eax,%eax
call   1070 <printf@plt>
mov    %rbx,%rdi
mov    $0x9,%esi
mov    $0x61,%edx
xor    %eax,%eax
call   1070 <printf@plt>
mov    %rbx,%rdi
mov    $0xa,%esi
mov    $0x20,%edx
xor    %eax,%eax
call   1070 <printf@plt>
mov    %rbx,%rdi
mov    $0xb,%esi
mov    $0x63,%edx
xor    %eax,%eax
call   1070 <printf@plt>
mov    %rbx,%rdi
mov    $0xc,%esi
mov    $0x6f,%edx
xor    %eax,%eax
call   1070 <printf@plt>
mov    %rbx,%rdi
mov    $0xd,%esi
mov    $0x72,%edx
xor    %eax,%eax
call   1070 <printf@plt>
mov    %rbx,%rdi
mov    $0xe,%esi
mov    $0x72,%edx
xor    %eax,%eax
call   1070 <printf@plt>
mov    %rbx,%rdi
mov    $0xf,%esi
mov    $0x65,%edx
xor    %eax,%eax
call   1070 <printf@plt>
mov    %rbx,%rdi
mov    $0x10,%esi
mov    $0x63,%edx
xor    %eax,%eax
call   1070 <printf@plt>
mov    %rbx,%rdi
mov    $0x11,%esi
mov    $0x74,%edx
xor    %eax,%eax
call   1070 <printf@plt>
mov    %rbx,%rdi
mov    $0x12,%esi
mov    $0x20,%edx
xor    %eax,%eax
call   1070 <printf@plt>
mov    %rbx,%rdi
mov    $0x13,%esi
mov    $0x73,%edx
xor    %eax,%eax
call   1070 <printf@plt>
mov    %rbx,%rdi
mov    $0x14,%esi
mov    $0x65,%edx
xor    %eax,%eax
call   1070 <printf@plt>
mov    %rbx,%rdi
mov    $0x15,%esi
mov    $0x6e,%edx
xor    %eax,%eax
call   1070 <printf@plt>
mov    %rbx,%rdi
mov    $0x16,%esi
mov    $0x74,%edx
xor    %eax,%eax
call   1070 <printf@plt>
mov    %rbx,%rdi
mov    $0x17,%esi
mov    $0x65,%edx
xor    %eax,%eax
call   1070 <printf@plt>
mov    %rbx,%rdi
mov    $0x18,%esi
mov    $0x6e,%edx
xor    %eax,%eax
call   1070 <printf@plt>
mov    %rbx,%rdi
mov    $0x19,%esi
mov    $0x63,%edx
xor    %eax,%eax
call   1070 <printf@plt>
mov    %rbx,%rdi
mov    $0x1a,%esi
mov    $0x65,%edx
xor    %eax,%eax
call   1070 <printf@plt>
mov    $0x14,%edi
mov    $0x1,%esi
call   10b0 <cup@plt>
xor    %eax,%eax
add    $0x8,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
jmp    1140 <holdit@plt>

LLVM IR (-O0):
@.str = [27 x i8] c"This is a correct sentence\00"
@.str.1 = [3 x i8] c"?3\00"
@.str.2 = [2 x i8] c"*\00"
@.str.3 = [2 x i8] c"+\00"
@.str.4 = [2 x i8] c"\0A\00"
@.str.5 = [3 x i8] c"%c\00"
@.str.6 = [2 x i8] c" \00"
@.str.7 = [57 x i8] c"The screen should be cleared, and have an unbroken bor-\00"
@.str.8 = [57 x i8] c"der of *'s and +'s around the edge, and exactly in the\00"
@.str.9 = [57 x i8] c"middle there should be a frame of E's around this text\00"
@.str.10 = [43 x i8] c"with one (1) free position around it. \00"
@.str.11 = [56 x i8] c"Test of cursor-control characters inside ESC sequences.\00"
@.str.12 = [37 x i8] c"Below should be two identical lines:\00"
@.str.13 = [1 x i8] zeroinitializer
@.str.14 = [38 x i8] c"A B C D E F G H I J K L M N O P Q R S\00"
@.str.15 = [3 x i8] c"2\08\00"
@.str.16 = [40 x i8] c"Test of leading zeros in ESC sequences.\00"
@.str.17 = [50 x i8] c"Two lines below you should see the sentence \22%s\22.\00"
@.str.18 = [28 x i8] c"\1B[00000000004;00000000%dH%c\00"
define i32 @tst_movements() {
%1 = alloca i32
%2 = alloca i32
%3 = alloca i32
%4 = alloca i32
%5 = alloca i32
%6 = alloca i32
%7 = alloca i32
%8 = alloca i8
%9 = alloca i8*
store i8* getelementptr inbounds ([27 x i8], [27 x i8]* @.str, i64 0, i64 0), i8** %9
store i32 0, i32* %5
br label %10
10: ; preds = %210, %0
%11 = load i32, i32* %5
%12 = icmp sle i32 %11, 1
br i1 %12, label %13, label %213
13: ; preds = %10
%14 = load i32, i32* %5
%15 = icmp eq i32 %14, 0
br i1 %15, label %16, label %18
16: ; preds = %13
%17 = call i32 @rm(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.1, i64 0, i64 0))
store i32 80, i32* %6
store i32 0, i32* %7
br label %20
18: ; preds = %13
%19 = call i32 @sm(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.1, i64 0, i64 0))
store i32 132, i32* %6
store i32 26, i32* %7
br label %20
20: ; preds = %18, %16
%21 = call i32 (...) @decaln()
%22 = load i32, i32* %7
%23 = add nsw i32 10, %22
%24 = call i32 @cup(i32 9, i32 %23)
%25 = call i32 @ed(i32 1)
%26 = load i32, i32* %7
%27 = add nsw i32 60, %26
%28 = call i32 @cup(i32 18, i32 %27)
%29 = call i32 @ed(i32 0)
%30 = call i32 @el(i32 1)
%31 = load i32, i32* %7
%32 = add nsw i32 71, %31
%33 = call i32 @cup(i32 9, i32 %32)
%34 = call i32 @el(i32 0)
store i32 10, i32* %3
br label %35
35: ; preds = %49, %20
%36 = load i32, i32* %3
%37 = icmp sle i32 %36, 16
br i1 %37, label %38, label %52
38: ; preds = %35
%39 = load i32, i32* %3
%40 = load i32, i32* %7
%41 = add nsw i32 10, %40
%42 = call i32 @cup(i32 %39, i32 %41)
%43 = call i32 @el(i32 1)
%44 = load i32, i32* %3
%45 = load i32, i32* %7
%46 = add nsw i32 71, %45
%47 = call i32 @cup(i32 %44, i32 %46)
%48 = call i32 @el(i32 0)
br label %49
49: ; preds = %38
%50 = load i32, i32* %3
%51 = add nsw i32 %50, 1
store i32 %51, i32* %3
br label %35
52: ; preds = %35
%53 = call i32 @cup(i32 17, i32 30)
%54 = call i32 @el(i32 2)
store i32 1, i32* %4
br label %55
55: ; preds = %66, %52
%56 = load i32, i32* %4
%57 = load i32, i32* %6
%58 = icmp sle i32 %56, %57
br i1 %58, label %59, label %69
59: ; preds = %55
%60 = load i32, i32* %4
%61 = call i32 @hvp(i32 24, i32 %60)
%62 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.2, i64 0, i64 0))
%63 = load i32, i32* %4
%64 = call i32 @hvp(i32 1, i32 %63)
%65 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.2, i64 0, i64 0))
br label %66
66: ; preds = %59
%67 = load i32, i32* %4
%68 = add nsw i32 %67, 1
store i32 %68, i32* %4
br label %55
69: ; preds = %55
%70 = call i32 @cup(i32 2, i32 2)
store i32 2, i32* %3
br label %71
71: ; preds = %78, %69
%72 = load i32, i32* %3
%73 = icmp sle i32 %72, 23
br i1 %73, label %74, label %81
74: ; preds = %71
%75 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.3, i64 0, i64 0))
%76 = call i32 @cub(i32 1)
%77 = call i32 (...) @ind()
br label %78
78: ; preds = %74
%79 = load i32, i32* %3
%80 = add nsw i32 %79, 1
store i32 %80, i32* %3
br label %71
81: ; preds = %71
%82 = load i32, i32* %6
%83 = sub nsw i32 %82, 1
%84 = call i32 @cup(i32 23, i32 %83)
store i32 23, i32* %3
br label %85
85: ; preds = %92, %81
%86 = load i32, i32* %3
%87 = icmp sge i32 %86, 2
br i1 %87, label %88, label %95
88: ; preds = %85
%89 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.3, i64 0, i64 0))
%90 = call i32 @cub(i32 1)
%91 = call i32 (...) @ri()
br label %92
92: ; preds = %88
%93 = load i32, i32* %3
%94 = add nsw i32 %93, -1
store i32 %94, i32* %3
br label %85
95: ; preds = %85
%96 = call i32 @cup(i32 2, i32 1)
store i32 2, i32* %3
br label %97
97: ; preds = %114, %95
%98 = load i32, i32* %3
%99 = icmp sle i32 %98, 23
br i1 %99, label %100, label %117
100: ; preds = %97
%101 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.2, i64 0, i64 0))
%102 = load i32, i32* %3
%103 = load i32, i32* %6
%104 = call i32 @cup(i32 %102, i32 %103)
%105 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.2, i64 0, i64 0))
%106 = call i32 @cub(i32 10)
%107 = load i32, i32* %3
%108 = icmp slt i32 %107, 10
br i1 %108, label %109, label %111
109: ; preds = %100
%110 = call i32 (...) @nel()
br label %113
111: ; preds = %100
%112 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.4, i64 0, i64 0))
br label %113
113: ; preds = %111, %109
br label %114
114: ; preds = %113
%115 = load i32, i32* %3
%116 = add nsw i32 %115, 1
store i32 %116, i32* %3
br label %97
117: ; preds = %97
%118 = call i32 @cup(i32 2, i32 10)
%119 = load i32, i32* %7
%120 = add nsw i32 42, %119
%121 = call i32 @cub(i32 %120)
%122 = call i32 @cuf(i32 2)
store i32 3, i32* %4
br label %123
123: ; preds = %133, %117
%124 = load i32, i32* %4
%125 = load i32, i32* %6
%126 = sub nsw i32 %125, 2
%127 = icmp sle i32 %124, %126
br i1 %127, label %128, label %136
128: ; preds = %123
%129 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.3, i64 0, i64 0))
%130 = call i32 @cuf(i32 0)
%131 = call i32 @cub(i32 2)
%132 = call i32 @cuf(i32 1)
br label %133
133: ; preds = %128
%134 = load i32, i32* %4
%135 = add nsw i32 %134, 1
store i32 %135, i32* %4
br label %123
136: ; preds = %123
%137 = load i32, i32* %7
%138 = add nsw i32 70, %137
%139 = call i32 @cup(i32 23, i32 %138)
%140 = load i32, i32* %7
%141 = add nsw i32 42, %140
%142 = call i32 @cuf(i32 %141)
%143 = call i32 @cub(i32 2)
%144 = load i32, i32* %6
%145 = sub nsw i32 %144, 2
store i32 %145, i32* %4
br label %146
146: ; preds = %155, %136
%147 = load i32, i32* %4
%148 = icmp sge i32 %147, 3
br i1 %148, label %149, label %158
149: ; preds = %146
%150 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.3, i64 0, i64 0))
%151 = call i32 @cub(i32 1)
%152 = call i32 @cuf(i32 1)
%153 = call i32 @cub(i32 0)
%154 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.5, i64 0, i64 0), i32 8)
br label %155
155: ; preds = %149
%156 = load i32, i32* %4
%157 = add nsw i32 %156, -1
store i32 %157, i32* %4
br label %146
158: ; preds = %146
%159 = call i32 @cup(i32 1, i32 1)
%160 = call i32 @cuu(i32 10)
%161 = call i32 @cuu(i32 1)
%162 = call i32 @cuu(i32 0)
%163 = load i32, i32* %6
%164 = call i32 @cup(i32 24, i32 %163)
%165 = call i32 @cud(i32 10)
%166 = call i32 @cud(i32 1)
%167 = call i32 @cud(i32 0)
%168 = load i32, i32* %7
%169 = add nsw i32 12, %168
%170 = call i32 @cup(i32 10, i32 %169)
store i32 10, i32* %3
br label %171
171: ; preds = %190, %158
%172 = load i32, i32* %3
%173 = icmp sle i32 %172, 15
br i1 %173, label %174, label %193
174: ; preds = %171
%175 = load i32, i32* %7
%176 = add nsw i32 12, %175
store i32 %176, i32* %4
br label %177
177: ; preds = %184, %174
%178 = load i32, i32* %4
%179 = load i32, i32* %7
%180 = add nsw i32 69, %179
%181 = icmp sle i32 %178, %180
br i1 %181, label %182, label %187
182: ; preds = %177
%183 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.6, i64 0, i64 0))
br label %184
184: ; preds = %182
%185 = load i32, i32* %4
%186 = add nsw i32 %185, 1
store i32 %186, i32* %4
br label %177
187: ; preds = %177
%188 = call i32 @cud(i32 1)
%189 = call i32 @cub(i32 58)
br label %190
190: ; preds = %187
%191 = load i32, i32* %3
%192 = add nsw i32 %191, 1
store i32 %192, i32* %3
br label %171
193: ; preds = %171
%194 = call i32 @cuu(i32 5)
%195 = call i32 @cuf(i32 1)
%196 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([57 x i8], [57 x i8]* @.str.7, i64 0, i64 0))
%197 = load i32, i32* %7
%198 = add nsw i32 13, %197
%199 = call i32 @cup(i32 12, i32 %198)
%200 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([57 x i8], [57 x i8]* @.str.8, i64 0, i64 0))
%201 = load i32, i32* %7
%202 = add nsw i32 13, %201
%203 = call i32 @cup(i32 13, i32 %202)
%204 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([57 x i8], [57 x i8]* @.str.9, i64 0, i64 0))
%205 = load i32, i32* %7
%206 = add nsw i32 13, %205
%207 = call i32 @cup(i32 14, i32 %206)
%208 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([43 x i8], [43 x i8]* @.str.10, i64 0, i64 0))
%209 = call i32 (...) @holdit()
br label %210
210: ; preds = %193
%211 = load i32, i32* %5
%212 = add nsw i32 %211, 1
store i32 %212, i32* %5
br label %10
213: ; preds = %10
%214 = call i32 @rm(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.1, i64 0, i64 0))
%215 = call i32 @ed(i32 2)
%216 = call i32 @cup(i32 1, i32 1)
%217 = call i32 @println(i8* getelementptr inbounds ([56 x i8], [56 x i8]* @.str.11, i64 0, i64 0))
%218 = call i32 @println(i8* getelementptr inbounds ([37 x i8], [37 x i8]* @.str.12, i64 0, i64 0))
%219 = call i32 @println(i8* getelementptr inbounds ([1 x i8], [1 x i8]* @.str.13, i64 0, i64 0))
%220 = call i32 @println(i8* getelementptr inbounds ([38 x i8], [38 x i8]* @.str.14, i64 0, i64 0))
store i32 1, i32* %2
br label %221
221: ; preds = %229, %213
%222 = load i32, i32* %2
%223 = icmp slt i32 %222, 20
br i1 %223, label %224, label %232
224: ; preds = %221
%225 = load i32, i32* %2
%226 = add nsw i32 64, %225
%227 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.5, i64 0, i64 0), i32 %226)
%228 = call i32 @brcstr(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.15, i64 0, i64 0), i8 signext 67)
br label %229
229: ; preds = %224
%230 = load i32, i32* %2
%231 = add nsw i32 %230, 1
store i32 %231, i32* %2
br label %221
232: ; preds = %221
%233 = call i32 @println(i8* getelementptr inbounds ([1 x i8], [1 x i8]* @.str.13, i64 0, i64 0))
%234 = call i32 @println(i8* getelementptr inbounds ([1 x i8], [1 x i8]* @.str.13, i64 0, i64 0))
%235 = call i32 (...) @holdit()
%236 = call i32 @ed(i32 2)
%237 = call i32 @cup(i32 1, i32 1)
%238 = call i32 @println(i8* getelementptr inbounds ([40 x i8], [40 x i8]* @.str.16, i64 0, i64 0))
%239 = load i8*, i8** %9
%240 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([50 x i8], [50 x i8]* @.str.17, i64 0, i64 0), i8* %239)
store i32 1, i32* %4
br label %241
241: ; preds = %252, %232
%242 = load i8*, i8** %9
%243 = load i8, i8* %242
%244 = icmp ne i8 %243, 0
br i1 %244, label %245, label %255
245: ; preds = %241
%246 = load i32, i32* %4
%247 = load i8*, i8** %9
%248 = getelementptr inbounds i8, i8* %247, i32 1
store i8* %248, i8** %9
%249 = load i8, i8* %247
%250 = sext i8 %249 to i32
%251 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([28 x i8], [28 x i8]* @.str.18, i64 0, i64 0), i32 %246, i32 %250)
br label %252
252: ; preds = %245
%253 = load i32, i32* %4
%254 = add nsw i32 %253, 1
store i32 %254, i32* %4
br label %241
255: ; preds = %241
%256 = call i32 @cup(i32 20, i32 1)
%257 = call i32 (...) @holdit()
%258 = load i32, i32* %1
ret i32 %258
}

LLVM IR (-O2):
@.str = [27 x i8] c"This is a correct sentence\00"
@.str.1 = [3 x i8] c"?3\00"
@.str.7 = [57 x i8] c"The screen should be cleared, and have an unbroken bor-\00"
@.str.8 = [57 x i8] c"der of *'s and +'s around the edge, and exactly in the\00"
@.str.9 = [57 x i8] c"middle there should be a frame of E's around this text\00"
@.str.10 = [43 x i8] c"with one (1) free position around it. \00"
@.str.11 = [56 x i8] c"Test of cursor-control characters inside ESC sequences.\00"
@.str.12 = [37 x i8] c"Below should be two identical lines:\00"
@.str.13 = [1 x i8] zeroinitializer
@.str.14 = [38 x i8] c"A B C D E F G H I J K L M N O P Q R S\00"
@.str.15 = [3 x i8] c"2\08\00"
@.str.16 = [40 x i8] c"Test of leading zeros in ESC sequences.\00"
@.str.17 = [50 x i8] c"Two lines below you should see the sentence \22%s\22.\00"
@.str.18 = [28 x i8] c"\1B[00000000004;00000000%dH%c\00"
define i32 @tst_movements() {
br label %1
1: ; preds = %0, %296
%2 = phi i1 [ true, %0 ], [ false, %296 ]
br i1 %2, label %3, label %5
3: ; preds = %1
%4 = tail call i32 @rm(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.1, i64 0, i64 0))
br label %7
5: ; preds = %1
%6 = tail call i32 @sm(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.1, i64 0, i64 0))
br label %7
7: ; preds = %5, %3
%8 = phi i32 [ 80, %3 ], [ 132, %5 ]
%9 = phi i32 [ 0, %3 ], [ 26, %5 ]
%10 = tail call i32 (...) @decaln()
%11 = add nuw nsw i32 %9, 10
%12 = tail call i32 @cup(i32 9, i32 %11)
%13 = tail call i32 @ed(i32 1)
%14 = add nuw nsw i32 %9, 60
%15 = tail call i32 @cup(i32 18, i32 %14)
%16 = tail call i32 @ed(i32 0)
%17 = tail call i32 @el(i32 1)
%18 = add nuw nsw i32 %9, 71
%19 = tail call i32 @cup(i32 9, i32 %18)
%20 = tail call i32 @el(i32 0)
%21 = tail call i32 @cup(i32 10, i32 %11)
%22 = tail call i32 @el(i32 1)
%23 = tail call i32 @cup(i32 10, i32 %18)
%24 = tail call i32 @el(i32 0)
%25 = tail call i32 @cup(i32 11, i32 %11)
%26 = tail call i32 @el(i32 1)
%27 = tail call i32 @cup(i32 11, i32 %18)
%28 = tail call i32 @el(i32 0)
%29 = tail call i32 @cup(i32 12, i32 %11)
%30 = tail call i32 @el(i32 1)
%31 = tail call i32 @cup(i32 12, i32 %18)
%32 = tail call i32 @el(i32 0)
%33 = tail call i32 @cup(i32 13, i32 %11)
%34 = tail call i32 @el(i32 1)
%35 = tail call i32 @cup(i32 13, i32 %18)
%36 = tail call i32 @el(i32 0)
%37 = tail call i32 @cup(i32 14, i32 %11)
%38 = tail call i32 @el(i32 1)
%39 = tail call i32 @cup(i32 14, i32 %18)
%40 = tail call i32 @el(i32 0)
%41 = tail call i32 @cup(i32 15, i32 %11)
%42 = tail call i32 @el(i32 1)
%43 = tail call i32 @cup(i32 15, i32 %18)
%44 = tail call i32 @el(i32 0)
%45 = tail call i32 @cup(i32 16, i32 %11)
%46 = tail call i32 @el(i32 1)
%47 = tail call i32 @cup(i32 16, i32 %18)
%48 = tail call i32 @el(i32 0)
%49 = tail call i32 @cup(i32 17, i32 30)
%50 = tail call i32 @el(i32 2)
%51 = or i32 %8, 1
br label %52
52: ; preds = %7, %52
%53 = phi i32 [ 1, %7 ], [ %58, %52 ]
%54 = tail call i32 @hvp(i32 24, i32 %53)
%55 = tail call i32 @putchar(i32 42)
%56 = tail call i32 @hvp(i32 1, i32 %53)
%57 = tail call i32 @putchar(i32 42)
%58 = add nuw nsw i32 %53, 1
%59 = icmp eq i32 %58, %51
br i1 %59, label %60, label %52
60: ; preds = %52
%61 = tail call i32 @cup(i32 2, i32 2)
%62 = tail call i32 @putchar(i32 43)
%63 = tail call i32 @cub(i32 1)
%64 = tail call i32 (...) @ind()
%65 = tail call i32 @putchar(i32 43)
%66 = tail call i32 @cub(i32 1)
%67 = tail call i32 (...) @ind()
%68 = tail call i32 @putchar(i32 43)
%69 = tail call i32 @cub(i32 1)
%70 = tail call i32 (...) @ind()
%71 = tail call i32 @putchar(i32 43)
%72 = tail call i32 @cub(i32 1)
%73 = tail call i32 (...) @ind()
%74 = tail call i32 @putchar(i32 43)
%75 = tail call i32 @cub(i32 1)
%76 = tail call i32 (...) @ind()
%77 = tail call i32 @putchar(i32 43)
%78 = tail call i32 @cub(i32 1)
%79 = tail call i32 (...) @ind()
%80 = tail call i32 @putchar(i32 43)
%81 = tail call i32 @cub(i32 1)
%82 = tail call i32 (...) @ind()
%83 = tail call i32 @putchar(i32 43)
%84 = tail call i32 @cub(i32 1)
%85 = tail call i32 (...) @ind()
%86 = tail call i32 @putchar(i32 43)
%87 = tail call i32 @cub(i32 1)
%88 = tail call i32 (...) @ind()
%89 = tail call i32 @putchar(i32 43)
%90 = tail call i32 @cub(i32 1)
%91 = tail call i32 (...) @ind()
%92 = tail call i32 @putchar(i32 43)
%93 = tail call i32 @cub(i32 1)
%94 = tail call i32 (...) @ind()
%95 = tail call i32 @putchar(i32 43)
%96 = tail call i32 @cub(i32 1)
%97 = tail call i32 (...) @ind()
%98 = tail call i32 @putchar(i32 43)
%99 = tail call i32 @cub(i32 1)
%100 = tail call i32 (...) @ind()
%101 = tail call i32 @putchar(i32 43)
%102 = tail call i32 @cub(i32 1)
%103 = tail call i32 (...) @ind()
%104 = tail call i32 @putchar(i32 43)
%105 = tail call i32 @cub(i32 1)
%106 = tail call i32 (...) @ind()
%107 = tail call i32 @putchar(i32 43)
%108 = tail call i32 @cub(i32 1)
%109 = tail call i32 (...) @ind()
%110 = tail call i32 @putchar(i32 43)
%111 = tail call i32 @cub(i32 1)
%112 = tail call i32 (...) @ind()
%113 = tail call i32 @putchar(i32 43)
%114 = tail call i32 @cub(i32 1)
%115 = tail call i32 (...) @ind()
%116 = tail call i32 @putchar(i32 43)
%117 = tail call i32 @cub(i32 1)
%118 = tail call i32 (...) @ind()
%119 = tail call i32 @putchar(i32 43)
%120 = tail call i32 @cub(i32 1)
%121 = tail call i32 (...) @ind()
%122 = tail call i32 @putchar(i32 43)
%123 = tail call i32 @cub(i32 1)
%124 = tail call i32 (...) @ind()
%125 = tail call i32 @putchar(i32 43)
%126 = tail call i32 @cub(i32 1)
%127 = tail call i32 (...) @ind()
%128 = add nsw i32 %8, -1
%129 = tail call i32 @cup(i32 23, i32 %128)
%130 = tail call i32 @putchar(i32 43)
%131 = tail call i32 @cub(i32 1)
%132 = tail call i32 (...) @ri()
%133 = tail call i32 @putchar(i32 43)
%134 = tail call i32 @cub(i32 1)
%135 = tail call i32 (...) @ri()
%136 = tail call i32 @putchar(i32 43)
%137 = tail call i32 @cub(i32 1)
%138 = tail call i32 (...) @ri()
%139 = tail call i32 @putchar(i32 43)
%140 = tail call i32 @cub(i32 1)
%141 = tail call i32 (...) @ri()
%142 = tail call i32 @putchar(i32 43)
%143 = tail call i32 @cub(i32 1)
%144 = tail call i32 (...) @ri()
%145 = tail call i32 @putchar(i32 43)
%146 = tail call i32 @cub(i32 1)
%147 = tail call i32 (...) @ri()
%148 = tail call i32 @putchar(i32 43)
%149 = tail call i32 @cub(i32 1)
%150 = tail call i32 (...) @ri()
%151 = tail call i32 @putchar(i32 43)
%152 = tail call i32 @cub(i32 1)
%153 = tail call i32 (...) @ri()
%154 = tail call i32 @putchar(i32 43)
%155 = tail call i32 @cub(i32 1)
%156 = tail call i32 (...) @ri()
%157 = tail call i32 @putchar(i32 43)
%158 = tail call i32 @cub(i32 1)
%159 = tail call i32 (...) @ri()
%160 = tail call i32 @putchar(i32 43)
%161 = tail call i32 @cub(i32 1)
%162 = tail call i32 (...) @ri()
%163 = tail call i32 @putchar(i32 43)
%164 = tail call i32 @cub(i32 1)
%165 = tail call i32 (...) @ri()
%166 = tail call i32 @putchar(i32 43)
%167 = tail call i32 @cub(i32 1)
%168 = tail call i32 (...) @ri()
%169 = tail call i32 @putchar(i32 43)
%170 = tail call i32 @cub(i32 1)
%171 = tail call i32 (...) @ri()
%172 = tail call i32 @putchar(i32 43)
%173 = tail call i32 @cub(i32 1)
%174 = tail call i32 (...) @ri()
%175 = tail call i32 @putchar(i32 43)
%176 = tail call i32 @cub(i32 1)
%177 = tail call i32 (...) @ri()
%178 = tail call i32 @putchar(i32 43)
%179 = tail call i32 @cub(i32 1)
%180 = tail call i32 (...) @ri()
%181 = tail call i32 @putchar(i32 43)
%182 = tail call i32 @cub(i32 1)
%183 = tail call i32 (...) @ri()
%184 = tail call i32 @putchar(i32 43)
%185 = tail call i32 @cub(i32 1)
%186 = tail call i32 (...) @ri()
%187 = tail call i32 @putchar(i32 43)
%188 = tail call i32 @cub(i32 1)
%189 = tail call i32 (...) @ri()
%190 = tail call i32 @putchar(i32 43)
%191 = tail call i32 @cub(i32 1)
%192 = tail call i32 (...) @ri()
%193 = tail call i32 @putchar(i32 43)
%194 = tail call i32 @cub(i32 1)
%195 = tail call i32 (...) @ri()
%196 = tail call i32 @cup(i32 2, i32 1)
br label %197
197: ; preds = %60, %208
%198 = phi i32 [ 2, %60 ], [ %209, %208 ]
%199 = tail call i32 @putchar(i32 42)
%200 = tail call i32 @cup(i32 %198, i32 %8)
%201 = tail call i32 @putchar(i32 42)
%202 = tail call i32 @cub(i32 10)
%203 = icmp ult i32 %198, 10
br i1 %203, label %204, label %206
204: ; preds = %197
%205 = tail call i32 (...) @nel()
br label %208
206: ; preds = %197
%207 = tail call i32 @putchar(i32 10)
br label %208
208: ; preds = %204, %206
%209 = add nuw nsw i32 %198, 1
%210 = icmp eq i32 %209, 24
br i1 %210, label %211, label %197
211: ; preds = %208
%212 = tail call i32 @cup(i32 2, i32 10)
%213 = add nuw nsw i32 %9, 42
%214 = tail call i32 @cub(i32 %213)
%215 = tail call i32 @cuf(i32 2)
%216 = add nsw i32 %8, -2
br label %217
217: ; preds = %211, %217
%218 = phi i32 [ %223, %217 ], [ 3, %211 ]
%219 = tail call i32 @putchar(i32 43)
%220 = tail call i32 @cuf(i32 0)
%221 = tail call i32 @cub(i32 2)
%222 = tail call i32 @cuf(i32 1)
%223 = add nuw nsw i32 %218, 1
%224 = icmp eq i32 %223, %128
br i1 %224, label %225, label %217
225: ; preds = %217
%226 = add nuw nsw i32 %9, 70
%227 = tail call i32 @cup(i32 23, i32 %226)
%228 = tail call i32 @cuf(i32 %213)
%229 = tail call i32 @cub(i32 2)
br label %230
230: ; preds = %225, %230
%231 = phi i32 [ %237, %230 ], [ %216, %225 ]
%232 = tail call i32 @putchar(i32 43)
%233 = tail call i32 @cub(i32 1)
%234 = tail call i32 @cuf(i32 1)
%235 = tail call i32 @cub(i32 0)
%236 = tail call i32 @putchar(i32 8)
%237 = add nsw i32 %231, -1
%238 = icmp sgt i32 %231, 3
br i1 %238, label %230, label %239
239: ; preds = %230
%240 = tail call i32 @cup(i32 1, i32 1)
%241 = tail call i32 @cuu(i32 10)
%242 = tail call i32 @cuu(i32 1)
%243 = tail call i32 @cuu(i32 0)
%244 = tail call i32 @cup(i32 24, i32 %8)
%245 = tail call i32 @cud(i32 10)
%246 = tail call i32 @cud(i32 1)
%247 = tail call i32 @cud(i32 0)
%248 = add nuw nsw i32 %9, 12
%249 = tail call i32 @cup(i32 10, i32 %248)
%250 = add nuw nsw i32 %9, 70
br label %251
251: ; preds = %239, %251
%252 = phi i32 [ %254, %251 ], [ %248, %239 ]
%253 = tail call i32 @putchar(i32 32)
%254 = add nuw nsw i32 %252, 1
%255 = icmp eq i32 %254, %250
br i1 %255, label %256, label %251
256: ; preds = %251
%257 = tail call i32 @cud(i32 1)
%258 = tail call i32 @cub(i32 58)
br label %259
259: ; preds = %259, %256
%260 = phi i32 [ %262, %259 ], [ %248, %256 ]
%261 = tail call i32 @putchar(i32 32)
%262 = add nuw nsw i32 %260, 1
%263 = icmp eq i32 %262, %250
br i1 %263, label %264, label %259
264: ; preds = %259
%265 = tail call i32 @cud(i32 1)
%266 = tail call i32 @cub(i32 58)
br label %267
267: ; preds = %267, %264
%268 = phi i32 [ %270, %267 ], [ %248, %264 ]
%269 = tail call i32 @putchar(i32 32)
%270 = add nuw nsw i32 %268, 1
%271 = icmp eq i32 %270, %250
br i1 %271, label %272, label %267
272: ; preds = %267
%273 = tail call i32 @cud(i32 1)
%274 = tail call i32 @cub(i32 58)
br label %275
275: ; preds = %275, %272
%276 = phi i32 [ %278, %275 ], [ %248, %272 ]
%277 = tail call i32 @putchar(i32 32)
%278 = add nuw nsw i32 %276, 1
%279 = icmp eq i32 %278, %250
br i1 %279, label %280, label %275
280: ; preds = %275
%281 = tail call i32 @cud(i32 1)
%282 = tail call i32 @cub(i32 58)
br label %283
283: ; preds = %283, %280
%284 = phi i32 [ %286, %283 ], [ %248, %280 ]
%285 = tail call i32 @putchar(i32 32)
%286 = add nuw nsw i32 %284, 1
%287 = icmp eq i32 %286, %250
br i1 %287, label %288, label %283
288: ; preds = %283
%289 = tail call i32 @cud(i32 1)
%290 = tail call i32 @cub(i32 58)
br label %291
291: ; preds = %291, %288
%292 = phi i32 [ %294, %291 ], [ %248, %288 ]
%293 = tail call i32 @putchar(i32 32)
%294 = add nuw nsw i32 %292, 1
%295 = icmp eq i32 %294, %250
br i1 %295, label %296, label %291
296: ; preds = %291
%297 = tail call i32 @cud(i32 1)
%298 = tail call i32 @cub(i32 58)
%299 = tail call i32 @cuu(i32 5)
%300 = tail call i32 @cuf(i32 1)
%301 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([57 x i8], [57 x i8]* @.str.7, i64 0, i64 0))
%302 = add nuw nsw i32 %9, 13
%303 = tail call i32 @cup(i32 12, i32 %302)
%304 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([57 x i8], [57 x i8]* @.str.8, i64 0, i64 0))
%305 = tail call i32 @cup(i32 13, i32 %302)
%306 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([57 x i8], [57 x i8]* @.str.9, i64 0, i64 0))
%307 = tail call i32 @cup(i32 14, i32 %302)
%308 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([43 x i8], [43 x i8]* @.str.10, i64 0, i64 0))
%309 = tail call i32 (...) @holdit()
br i1 %2, label %1, label %310
310: ; preds = %296
%311 = tail call i32 @rm(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.1, i64 0, i64 0))
%312 = tail call i32 @ed(i32 2)
%313 = tail call i32 @cup(i32 1, i32 1)
%314 = tail call i32 @println(i8* getelementptr inbounds ([56 x i8], [56 x i8]* @.str.11, i64 0, i64 0))
%315 = tail call i32 @println(i8* getelementptr inbounds ([37 x i8], [37 x i8]* @.str.12, i64 0, i64 0))
%316 = tail call i32 @println(i8* getelementptr inbounds ([1 x i8], [1 x i8]* @.str.13, i64 0, i64 0))
%317 = tail call i32 @println(i8* getelementptr inbounds ([38 x i8], [38 x i8]* @.str.14, i64 0, i64 0))
%318 = tail call i32 @putchar(i32 65)
%319 = tail call i32 @brcstr(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.15, i64 0, i64 0), i8 signext 67)
%320 = tail call i32 @putchar(i32 66)
%321 = tail call i32 @brcstr(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.15, i64 0, i64 0), i8 signext 67)
%322 = tail call i32 @putchar(i32 67)
%323 = tail call i32 @brcstr(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.15, i64 0, i64 0), i8 signext 67)
%324 = tail call i32 @putchar(i32 68)
%325 = tail call i32 @brcstr(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.15, i64 0, i64 0), i8 signext 67)
%326 = tail call i32 @putchar(i32 69)
%327 = tail call i32 @brcstr(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.15, i64 0, i64 0), i8 signext 67)
%328 = tail call i32 @putchar(i32 70)
%329 = tail call i32 @brcstr(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.15, i64 0, i64 0), i8 signext 67)
%330 = tail call i32 @putchar(i32 71)
%331 = tail call i32 @brcstr(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.15, i64 0, i64 0), i8 signext 67)
%332 = tail call i32 @putchar(i32 72)
%333 = tail call i32 @brcstr(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.15, i64 0, i64 0), i8 signext 67)
%334 = tail call i32 @putchar(i32 73)
%335 = tail call i32 @brcstr(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.15, i64 0, i64 0), i8 signext 67)
%336 = tail call i32 @putchar(i32 74)
%337 = tail call i32 @brcstr(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.15, i64 0, i64 0), i8 signext 67)
%338 = tail call i32 @putchar(i32 75)
%339 = tail call i32 @brcstr(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.15, i64 0, i64 0), i8 signext 67)
%340 = tail call i32 @putchar(i32 76)
%341 = tail call i32 @brcstr(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.15, i64 0, i64 0), i8 signext 67)
%342 = tail call i32 @putchar(i32 77)
%343 = tail call i32 @brcstr(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.15, i64 0, i64 0), i8 signext 67)
%344 = tail call i32 @putchar(i32 78)
%345 = tail call i32 @brcstr(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.15, i64 0, i64 0), i8 signext 67)
%346 = tail call i32 @putchar(i32 79)
%347 = tail call i32 @brcstr(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.15, i64 0, i64 0), i8 signext 67)
%348 = tail call i32 @putchar(i32 80)
%349 = tail call i32 @brcstr(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.15, i64 0, i64 0), i8 signext 67)
%350 = tail call i32 @putchar(i32 81)
%351 = tail call i32 @brcstr(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.15, i64 0, i64 0), i8 signext 67)
%352 = tail call i32 @putchar(i32 82)
%353 = tail call i32 @brcstr(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.15, i64 0, i64 0), i8 signext 67)
%354 = tail call i32 @putchar(i32 83)
%355 = tail call i32 @brcstr(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.15, i64 0, i64 0), i8 signext 67)
%356 = tail call i32 @println(i8* getelementptr inbounds ([1 x i8], [1 x i8]* @.str.13, i64 0, i64 0))
%357 = tail call i32 @println(i8* getelementptr inbounds ([1 x i8], [1 x i8]* @.str.13, i64 0, i64 0))
%358 = tail call i32 (...) @holdit()
%359 = tail call i32 @ed(i32 2)
%360 = tail call i32 @cup(i32 1, i32 1)
%361 = tail call i32 @println(i8* getelementptr inbounds ([40 x i8], [40 x i8]* @.str.16, i64 0, i64 0))
%362 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([50 x i8], [50 x i8]* @.str.17, i64 0, i64 0), i8* getelementptr inbounds ([27 x i8], [27 x i8]* @.str, i64 0, i64 0))
%363 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([28 x i8], [28 x i8]* @.str.18, i64 0, i64 0), i32 1, i32 84)
%364 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([28 x i8], [28 x i8]* @.str.18, i64 0, i64 0), i32 2, i32 104)
%365 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([28 x i8], [28 x i8]* @.str.18, i64 0, i64 0), i32 3, i32 105)
%366 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([28 x i8], [28 x i8]* @.str.18, i64 0, i64 0), i32 4, i32 115)
%367 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([28 x i8], [28 x i8]* @.str.18, i64 0, i64 0), i32 5, i32 32)
%368 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([28 x i8], [28 x i8]* @.str.18, i64 0, i64 0), i32 6, i32 105)
%369 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([28 x i8], [28 x i8]* @.str.18, i64 0, i64 0), i32 7, i32 115)
%370 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([28 x i8], [28 x i8]* @.str.18, i64 0, i64 0), i32 8, i32 32)
%371 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([28 x i8], [28 x i8]* @.str.18, i64 0, i64 0), i32 9, i32 97)
%372 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([28 x i8], [28 x i8]* @.str.18, i64 0, i64 0), i32 10, i32 32)
%373 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([28 x i8], [28 x i8]* @.str.18, i64 0, i64 0), i32 11, i32 99)
%374 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([28 x i8], [28 x i8]* @.str.18, i64 0, i64 0), i32 12, i32 111)
%375 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([28 x i8], [28 x i8]* @.str.18, i64 0, i64 0), i32 13, i32 114)
%376 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([28 x i8], [28 x i8]* @.str.18, i64 0, i64 0), i32 14, i32 114)
%377 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([28 x i8], [28 x i8]* @.str.18, i64 0, i64 0), i32 15, i32 101)
%378 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([28 x i8], [28 x i8]* @.str.18, i64 0, i64 0), i32 16, i32 99)
%379 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([28 x i8], [28 x i8]* @.str.18, i64 0, i64 0), i32 17, i32 116)
%380 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([28 x i8], [28 x i8]* @.str.18, i64 0, i64 0), i32 18, i32 32)
%381 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([28 x i8], [28 x i8]* @.str.18, i64 0, i64 0), i32 19, i32 115)
%382 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([28 x i8], [28 x i8]* @.str.18, i64 0, i64 0), i32 20, i32 101)
%383 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([28 x i8], [28 x i8]* @.str.18, i64 0, i64 0), i32 21, i32 110)
%384 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([28 x i8], [28 x i8]* @.str.18, i64 0, i64 0), i32 22, i32 116)
%385 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([28 x i8], [28 x i8]* @.str.18, i64 0, i64 0), i32 23, i32 101)
%386 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([28 x i8], [28 x i8]* @.str.18, i64 0, i64 0), i32 24, i32 110)
%387 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([28 x i8], [28 x i8]* @.str.18, i64 0, i64 0), i32 25, i32 99)
%388 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([28 x i8], [28 x i8]* @.str.18, i64 0, i64 0), i32 26, i32 101)
%389 = tail call i32 @cup(i32 20, i32 1)
%390 = tail call i32 (...) @holdit()
ret i32 undef
}