#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*/ cub(int);
int /*<<< orphan*/ cup(int, int);
int /*<<< orphan*/ dch(int);
int /*<<< orphan*/ decdwl();
int /*<<< orphan*/ decstbm(int, int);
int /*<<< orphan*/ dl(int);
int /*<<< orphan*/ ed(int);
int /*<<< orphan*/ el(int);
int /*<<< orphan*/ holdit();
int /*<<< orphan*/ ich(int);
int /*<<< orphan*/ il(int);
int /*<<< orphan*/ printf(char *, ...);
int /*<<< orphan*/ println(char *);
int /*<<< orphan*/ ri();
int /*<<< orphan*/ rm(char *);
int /*<<< orphan*/ sm(char *);
tst_insdel() {
  int i, row, col, sw, dblchr, scr132;
  for (scr132 = 0; scr132 <= 1; scr132++) {
    if (scr132) {
      sm("?3");
      sw = 132;
    } else {
      rm("?3");
      sw = 80;
    }
    ed(2);
    cup(1, 1);
    for (row = 1; row <= 24; row++) {
      cup(row, 1);
      for (col = 1; col <= sw; col++)
        printf("%c", 'A' - 1 + row);
    }
    cup(4, 1);
    printf("Screen accordion test (Insert & Delete Line). ");
    holdit();
    ri();
    el(2);
    decstbm(2, 23);
    sm("?6");
    cup(1, 1);
    for (row = 1; row <= 24; row++) {
      il(row);
      dl(row);
    }
    rm("?6");
    decstbm(0, 0);
    cup(2, 1);
    printf("Top line: A's, bottom line: X's, this line, nothing more. ");
    holdit();
    cup(2, 1);
    ed(0);
    cup(1, 2);
    printf("B");
    cub(1);
    sm("4");
    for (col = 2; col <= sw - 1; col++)
      printf("*");
    rm("4");
    cup(4, 1);
    printf("Test of 'Insert Mode'. The top line should be 'A*** ... ***B'. ");
    holdit();
    ri();
    el(2);
    cup(1, 2);
    dch(sw - 2);
    cup(4, 1);
    printf("Test of 'Delete Character'. The top line should be 'AB'. ");
    holdit();
    for (dblchr = 1; dblchr <= 2; dblchr++) {
      ed(2);
      for (row = 1; row <= 24; row++) {
        cup(row, 1);
        if (dblchr == 2)
          decdwl();
        for (col = 1; col <= sw / dblchr; col++)
          printf("%c", 'A' - 1 + row);
        cup(row, sw / dblchr - row);
        dch(row);
      }
      cup(4, 1);
      println("The right column should be staggered ");
      printf("by one.  ");
      holdit();
    }
    ed(2);
    cup(1, 1);
    println("If your terminal has the ANSI 'Insert Character' function");
    println("(the VT102 does not), then you should see a line like this");
    println("  A B C D E F G H I J K L M N O P Q R S T U V W X Y Z");
    println("below:");
    println("");
    for (i = 'Z'; i >= 'A'; i--) {
      printf("%c\010", i);
      ich(2);
    }
    cup(10, 1);
    holdit();
    if (sw == 132)
      rm("?3");
  }
}


x86 assembly (clang, -O0):
<tst_insdel>:
push   %rbp
mov    %rsp,%rbp
sub    $0x20,%rsp
movl   $0x0,-0x1c(%rbp)
cmpl   $0x1,-0x1c(%rbp)
jg     164d <tst_insdel+0x44d>
cmpl   $0x0,-0x1c(%rbp)
je     123b <tst_insdel+0x3b>
lea    0xdd6(%rip),%rdi
call   10e0 <sm@plt>
movl   $0x84,-0x14(%rbp)
jmp    124e <tst_insdel+0x4e>
lea    0xdbe(%rip),%rdi
call   1030 <rm@plt>
movl   $0x50,-0x14(%rbp)
mov    $0x2,%edi
call   10b0 <ed@plt>
mov    $0x1,%esi
mov    %esi,%edi
call   1080 <cup@plt>
movl   $0x1,-0xc(%rbp)
cmpl   $0x18,-0xc(%rbp)
jg     12ca <tst_insdel+0xca>
mov    -0xc(%rbp),%edi
mov    $0x1,%esi
call   1080 <cup@plt>
movl   $0x1,-0x10(%rbp)
mov    -0x10(%rbp),%eax
cmp    -0x14(%rbp),%eax
jg     12b7 <tst_insdel+0xb7>
mov    -0xc(%rbp),%esi
add    $0x40,%esi
lea    0xd61(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
mov    -0x10(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x10(%rbp)
jmp    1289 <tst_insdel+0x89>
jmp    12bc <tst_insdel+0xbc>
mov    -0xc(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xc(%rbp)
jmp    126b <tst_insdel+0x6b>
mov    $0x4,%edi
mov    $0x1,%esi
call   1080 <cup@plt>
lea    0xd26(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
mov    $0x0,%al
call   10f0 <holdit@plt>
mov    $0x0,%al
call   1040 <ri@plt>
mov    $0x2,%edi
call   10a0 <el@plt>
mov    $0x2,%edi
mov    $0x17,%esi
call   10d0 <decstbm@plt>
lea    0xd20(%rip),%rdi
call   10e0 <sm@plt>
mov    $0x1,%esi
mov    %esi,%edi
call   1080 <cup@plt>
movl   $0x1,-0xc(%rbp)
cmpl   $0x18,-0xc(%rbp)
jg     1355 <tst_insdel+0x155>
mov    -0xc(%rbp),%edi
call   1120 <il@plt>
mov    -0xc(%rbp),%edi
call   1100 <dl@plt>
mov    -0xc(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xc(%rbp)
jmp    132d <tst_insdel+0x12d>
lea    0xcd9(%rip),%rdi
call   1030 <rm@plt>
xor    %esi,%esi
mov    %esi,%edi
call   10d0 <decstbm@plt>
mov    $0x2,%edi
mov    $0x1,%esi
call   1080 <cup@plt>
lea    0xcb8(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
mov    $0x0,%al
call   10f0 <holdit@plt>
mov    $0x2,%edi
mov    $0x1,%esi
call   1080 <cup@plt>
xor    %edi,%edi
call   10b0 <ed@plt>
mov    $0x1,%edi
mov    $0x2,%esi
call   1080 <cup@plt>
lea    0xcb9(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
mov    $0x1,%edi
call   1090 <cub@plt>
lea    0xca3(%rip),%rdi
call   10e0 <sm@plt>
movl   $0x2,-0x10(%rbp)
mov    -0x10(%rbp),%eax
mov    -0x14(%rbp),%ecx
sub    $0x1,%ecx
cmp    %ecx,%eax
jg     140b <tst_insdel+0x20b>
lea    0xc81(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
mov    -0x10(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x10(%rbp)
jmp    13de <tst_insdel+0x1de>
lea    0xc63(%rip),%rdi
call   1030 <rm@plt>
mov    $0x4,%edi
mov    $0x1,%esi
call   1080 <cup@plt>
lea    0xc4c(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
mov    $0x0,%al
call   10f0 <holdit@plt>
mov    $0x0,%al
call   1040 <ri@plt>
mov    $0x2,%edi
call   10a0 <el@plt>
mov    $0x1,%edi
mov    $0x2,%esi
call   1080 <cup@plt>
mov    -0x14(%rbp),%edi
sub    $0x2,%edi
call   10c0 <dch@plt>
mov    $0x4,%edi
mov    $0x1,%esi
call   1080 <cup@plt>
lea    0xc3d(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
mov    $0x0,%al
call   10f0 <holdit@plt>
movl   $0x1,-0x18(%rbp)
cmpl   $0x2,-0x18(%rbp)
jg     157f <tst_insdel+0x37f>
mov    $0x2,%edi
call   10b0 <ed@plt>
movl   $0x1,-0xc(%rbp)
cmpl   $0x18,-0xc(%rbp)
jg     1541 <tst_insdel+0x341>
mov    -0xc(%rbp),%edi
mov    $0x1,%esi
call   1080 <cup@plt>
cmpl   $0x2,-0x18(%rbp)
jne    14d4 <tst_insdel+0x2d4>
mov    $0x0,%al
call   1060 <decdwl@plt>
movl   $0x1,-0x10(%rbp)
mov    -0x10(%rbp),%eax
mov    %eax,-0x20(%rbp)
mov    -0x14(%rbp),%eax
cltd
idivl  -0x18(%rbp)
mov    %eax,%ecx
mov    -0x20(%rbp),%eax
cmp    %ecx,%eax
jg     1517 <tst_insdel+0x317>
mov    -0xc(%rbp),%esi
add    $0x40,%esi
lea    0xb01(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
mov    -0x10(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x10(%rbp)
jmp    14db <tst_insdel+0x2db>
mov    -0xc(%rbp),%edi
mov    -0x14(%rbp),%eax
cltd
idivl  -0x18(%rbp)
mov    %eax,%esi
sub    -0xc(%rbp),%esi
call   1080 <cup@plt>
mov    -0xc(%rbp),%edi
call   10c0 <dch@plt>
mov    -0xc(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xc(%rbp)
jmp    14ac <tst_insdel+0x2ac>
mov    $0x4,%edi
mov    $0x1,%esi
call   1080 <cup@plt>
lea    0xb9c(%rip),%rdi
call   1070 <println@plt>
lea    0xbb6(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
mov    $0x0,%al
call   10f0 <holdit@plt>
mov    -0x18(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x18(%rbp)
jmp    1491 <tst_insdel+0x291>
mov    $0x2,%edi
call   10b0 <ed@plt>
mov    $0x1,%esi
mov    %esi,%edi
call   1080 <cup@plt>
lea    0xb87(%rip),%rdi
call   1070 <println@plt>
lea    0xbb5(%rip),%rdi
call   1070 <println@plt>
lea    0xbe4(%rip),%rdi
call   1070 <println@plt>
lea    0xc0e(%rip),%rdi
call   1070 <println@plt>
lea    0xc0c(%rip),%rdi
call   1070 <println@plt>
movl   $0x5a,-0x8(%rbp)
cmpl   $0x41,-0x8(%rbp)
jl     160b <tst_insdel+0x40b>
mov    -0x8(%rbp),%esi
lea    0xbe9(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
mov    $0x2,%edi
call   1110 <ich@plt>
mov    -0x8(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x8(%rbp)
jmp    15d8 <tst_insdel+0x3d8>
mov    $0xa,%edi
mov    $0x1,%esi
call   1080 <cup@plt>
mov    $0x0,%al
call   10f0 <holdit@plt>
cmpl   $0x84,-0x14(%rbp)
jne    163a <tst_insdel+0x43a>
lea    0x9cb(%rip),%rdi
call   1030 <rm@plt>
jmp    163f <tst_insdel+0x43f>
mov    -0x1c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1c(%rbp)
jmp    120f <tst_insdel+0xf>
mov    -0x4(%rbp),%eax
add    $0x20,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<tst_insdel>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
push   %rax
mov    $0x1,%al
lea    0xe4c(%rip),%r15
lea    0xfa3(%rip),%r14
nopl   0x0(%rax,%rax,1)
test   $0x1,%al
mov    %eax,0x4(%rsp)
lea    0xdc3(%rip),%rdi
je     1250 <tst_insdel+0x40>
call   1040 <rm@plt>
mov    $0x50,%r12d
jmp    125b <tst_insdel+0x4b>
nopl   0x0(%rax)
call   10f0 <sm@plt>
mov    $0x84,%r12d
mov    $0x2,%edi
call   10c0 <ed@plt>
mov    $0x1,%ebp
mov    $0x1,%edi
mov    $0x1,%esi
call   1090 <cup@plt>
nopl   0x0(%rax)
mov    %ebp,%edi
mov    $0x1,%esi
call   1090 <cup@plt>
lea    0x40(%rbp),%r13d
mov    %r12d,%ebx
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
mov    %r13d,%edi
call   1030 <putchar@plt>
add    $0xffffffff,%ebx
jne    12a0 <tst_insdel+0x90>
add    $0x1,%ebp
cmp    $0x19,%ebp
jne    1280 <tst_insdel+0x70>
mov    $0x4,%edi
mov    $0x1,%esi
call   1090 <cup@plt>
lea    0xd38(%rip),%rdi
xor    %eax,%eax
call   1060 <printf@plt>
xor    %eax,%eax
call   1100 <holdit@plt>
xor    %eax,%eax
call   1050 <ri@plt>
mov    $0x2,%edi
call   10b0 <el@plt>
mov    $0x2,%edi
mov    $0x17,%esi
call   10e0 <decstbm@plt>
lea    0xd32(%rip),%rbx
mov    %rbx,%rdi
call   10f0 <sm@plt>
mov    $0x1,%edi
mov    $0x1,%esi
call   1090 <cup@plt>
mov    $0x1,%edi
call   1130 <il@plt>
mov    $0x1,%edi
call   1110 <dl@plt>
mov    $0x2,%edi
call   1130 <il@plt>
mov    $0x2,%edi
call   1110 <dl@plt>
mov    $0x3,%edi
call   1130 <il@plt>
mov    $0x3,%edi
call   1110 <dl@plt>
mov    $0x4,%edi
call   1130 <il@plt>
mov    $0x4,%edi
call   1110 <dl@plt>
mov    $0x5,%edi
call   1130 <il@plt>
mov    $0x5,%edi
call   1110 <dl@plt>
mov    $0x6,%edi
call   1130 <il@plt>
mov    $0x6,%edi
call   1110 <dl@plt>
mov    $0x7,%edi
call   1130 <il@plt>
mov    $0x7,%edi
call   1110 <dl@plt>
mov    $0x8,%edi
call   1130 <il@plt>
mov    $0x8,%edi
call   1110 <dl@plt>
mov    $0x9,%edi
call   1130 <il@plt>
mov    $0x9,%edi
call   1110 <dl@plt>
mov    $0xa,%edi
call   1130 <il@plt>
mov    $0xa,%edi
call   1110 <dl@plt>
mov    $0xb,%edi
call   1130 <il@plt>
mov    $0xb,%edi
call   1110 <dl@plt>
mov    $0xc,%edi
call   1130 <il@plt>
mov    $0xc,%edi
call   1110 <dl@plt>
mov    $0xd,%edi
call   1130 <il@plt>
mov    $0xd,%edi
call   1110 <dl@plt>
mov    $0xe,%edi
call   1130 <il@plt>
mov    $0xe,%edi
call   1110 <dl@plt>
mov    $0xf,%edi
call   1130 <il@plt>
mov    $0xf,%edi
call   1110 <dl@plt>
mov    $0x10,%edi
call   1130 <il@plt>
mov    $0x10,%edi
call   1110 <dl@plt>
mov    $0x11,%edi
call   1130 <il@plt>
mov    $0x11,%edi
call   1110 <dl@plt>
mov    $0x12,%edi
call   1130 <il@plt>
mov    $0x12,%edi
call   1110 <dl@plt>
mov    $0x13,%edi
call   1130 <il@plt>
mov    $0x13,%edi
call   1110 <dl@plt>
mov    $0x14,%edi
call   1130 <il@plt>
mov    $0x14,%edi
call   1110 <dl@plt>
mov    $0x15,%edi
call   1130 <il@plt>
mov    $0x15,%edi
call   1110 <dl@plt>
mov    $0x16,%edi
call   1130 <il@plt>
mov    $0x16,%edi
call   1110 <dl@plt>
mov    $0x17,%edi
call   1130 <il@plt>
mov    $0x17,%edi
call   1110 <dl@plt>
mov    $0x18,%edi
call   1130 <il@plt>
mov    $0x18,%edi
call   1110 <dl@plt>
mov    %rbx,%rdi
call   1040 <rm@plt>
xor    %edi,%edi
xor    %esi,%esi
call   10e0 <decstbm@plt>
mov    $0x2,%edi
mov    $0x1,%esi
call   1090 <cup@plt>
lea    0xb17(%rip),%rdi
xor    %eax,%eax
call   1060 <printf@plt>
xor    %eax,%eax
call   1100 <holdit@plt>
mov    $0x2,%edi
mov    $0x1,%esi
call   1090 <cup@plt>
xor    %edi,%edi
call   10c0 <ed@plt>
mov    $0x1,%edi
mov    $0x2,%esi
call   1090 <cup@plt>
mov    $0x42,%edi
call   1030 <putchar@plt>
mov    $0x1,%edi
call   10a0 <cub@plt>
mov    %r15,%rdi
call   10f0 <sm@plt>
lea    -0x2(%r12),%ebx
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
mov    $0x2a,%edi
call   1030 <putchar@plt>
add    $0xffffffff,%ebx
jne    1580 <tst_insdel+0x370>
mov    %r15,%rdi
call   1040 <rm@plt>
mov    $0x1,%r13d
mov    $0x4,%edi
mov    $0x1,%esi
call   1090 <cup@plt>
lea    0xabf(%rip),%rdi
xor    %eax,%eax
call   1060 <printf@plt>
xor    %eax,%eax
call   1100 <holdit@plt>
xor    %eax,%eax
call   1050 <ri@plt>
mov    $0x2,%edi
call   10b0 <el@plt>
mov    $0x1,%edi
mov    $0x2,%esi
call   1090 <cup@plt>
lea    -0x2(%r12),%edi
call   10d0 <dch@plt>
mov    $0x4,%edi
mov    $0x1,%esi
call   1090 <cup@plt>
lea    0xab1(%rip),%rdi
xor    %eax,%eax
call   1060 <printf@plt>
xor    %eax,%eax
call   1100 <holdit@plt>
mov    $0x2,%edi
call   10c0 <ed@plt>
nopl   0x0(%rax)
mov    %r13d,%edi
mov    $0x1,%esi
call   1090 <cup@plt>
lea    0x40(%r13),%ebx
mov    %r12d,%ebp
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
mov    %ebx,%edi
call   1030 <putchar@plt>
add    $0xffffffff,%ebp
jne    1640 <tst_insdel+0x430>
mov    %r12d,%esi
sub    %r13d,%esi
mov    %r13d,%edi
call   1090 <cup@plt>
mov    %r13d,%edi
call   10d0 <dch@plt>
add    $0x1,%r13d
cmp    $0x19,%r13d
jne    1620 <tst_insdel+0x410>
mov    $0x1,%ebp
mov    $0x4,%edi
mov    $0x1,%esi
call   1090 <cup@plt>
lea    0xa65(%rip),%rdi
call   1080 <println@plt>
lea    0xa7f(%rip),%rdi
xor    %eax,%eax
call   1060 <printf@plt>
xor    %eax,%eax
call   1100 <holdit@plt>
mov    $0x2,%edi
call   10c0 <ed@plt>
shr    %r12d
mov    %r12d,%r15d
or     $0x1,%r15d
add    $0xffffffff,%r15d
nopl   0x0(%rax)
mov    %ebp,%edi
mov    $0x1,%esi
call   1090 <cup@plt>
xor    %eax,%eax
call   1070 <decdwl@plt>
lea    0x40(%rbp),%ebx
mov    %r15d,%r13d
nopl   0x0(%rax)
mov    %ebx,%edi
call   1030 <putchar@plt>
add    $0xffffffff,%r13d
jne    16e0 <tst_insdel+0x4d0>
mov    %r12d,%esi
sub    %ebp,%esi
mov    %ebp,%edi
call   1090 <cup@plt>
mov    %ebp,%edi
call   10d0 <dch@plt>
add    $0x1,%ebp
cmp    $0x19,%ebp
jne    16c0 <tst_insdel+0x4b0>
mov    $0x4,%edi
mov    $0x1,%esi
call   1090 <cup@plt>
lea    0x9ce(%rip),%rdi
call   1080 <println@plt>
lea    0x9e8(%rip),%rdi
xor    %eax,%eax
call   1060 <printf@plt>
xor    %eax,%eax
call   1100 <holdit@plt>
mov    $0x2,%edi
call   10c0 <ed@plt>
mov    $0x1,%edi
mov    $0x1,%esi
call   1090 <cup@plt>
lea    0x9c4(%rip),%rdi
call   1080 <println@plt>
lea    0x9f2(%rip),%rdi
call   1080 <println@plt>
lea    0xa21(%rip),%rdi
call   1080 <println@plt>
lea    0xa4b(%rip),%rdi
call   1080 <println@plt>
lea    0xa49(%rip),%rdi
call   1080 <println@plt>
mov    %r14,%rdi
mov    $0x5a,%esi
xor    %eax,%eax
call   1060 <printf@plt>
mov    $0x2,%edi
call   1120 <ich@plt>
mov    %r14,%rdi
mov    $0x59,%esi
xor    %eax,%eax
call   1060 <printf@plt>
mov    $0x2,%edi
call   1120 <ich@plt>
mov    %r14,%rdi
mov    $0x58,%esi
xor    %eax,%eax
call   1060 <printf@plt>
mov    $0x2,%edi
call   1120 <ich@plt>
mov    %r14,%rdi
mov    $0x57,%esi
xor    %eax,%eax
call   1060 <printf@plt>
mov    $0x2,%edi
call   1120 <ich@plt>
mov    %r14,%rdi
mov    $0x56,%esi
xor    %eax,%eax
call   1060 <printf@plt>
mov    $0x2,%edi
call   1120 <ich@plt>
mov    %r14,%rdi
mov    $0x55,%esi
xor    %eax,%eax
call   1060 <printf@plt>
mov    $0x2,%edi
call   1120 <ich@plt>
mov    %r14,%rdi
mov    $0x54,%esi
xor    %eax,%eax
call   1060 <printf@plt>
mov    $0x2,%edi
call   1120 <ich@plt>
mov    %r14,%rdi
mov    $0x53,%esi
xor    %eax,%eax
call   1060 <printf@plt>
mov    $0x2,%edi
call   1120 <ich@plt>
mov    %r14,%rdi
mov    $0x52,%esi
xor    %eax,%eax
call   1060 <printf@plt>
mov    $0x2,%edi
call   1120 <ich@plt>
mov    %r14,%rdi
mov    $0x51,%esi
xor    %eax,%eax
call   1060 <printf@plt>
mov    $0x2,%edi
call   1120 <ich@plt>
mov    %r14,%rdi
mov    $0x50,%esi
xor    %eax,%eax
call   1060 <printf@plt>
mov    $0x2,%edi
call   1120 <ich@plt>
mov    %r14,%rdi
mov    $0x4f,%esi
xor    %eax,%eax
call   1060 <printf@plt>
mov    $0x2,%edi
call   1120 <ich@plt>
mov    %r14,%rdi
mov    $0x4e,%esi
xor    %eax,%eax
call   1060 <printf@plt>
mov    $0x2,%edi
call   1120 <ich@plt>
mov    %r14,%rdi
mov    $0x4d,%esi
xor    %eax,%eax
call   1060 <printf@plt>
mov    $0x2,%edi
call   1120 <ich@plt>
mov    %r14,%rdi
mov    $0x4c,%esi
xor    %eax,%eax
call   1060 <printf@plt>
mov    $0x2,%edi
call   1120 <ich@plt>
mov    %r14,%rdi
mov    $0x4b,%esi
xor    %eax,%eax
call   1060 <printf@plt>
mov    $0x2,%edi
call   1120 <ich@plt>
mov    %r14,%rdi
mov    $0x4a,%esi
xor    %eax,%eax
call   1060 <printf@plt>
mov    $0x2,%edi
call   1120 <ich@plt>
mov    %r14,%rdi
mov    $0x49,%esi
xor    %eax,%eax
call   1060 <printf@plt>
mov    $0x2,%edi
call   1120 <ich@plt>
mov    %r14,%rdi
mov    $0x48,%esi
xor    %eax,%eax
call   1060 <printf@plt>
mov    $0x2,%edi
call   1120 <ich@plt>
mov    %r14,%rdi
mov    $0x47,%esi
xor    %eax,%eax
call   1060 <printf@plt>
mov    $0x2,%edi
call   1120 <ich@plt>
mov    %r14,%rdi
mov    $0x46,%esi
xor    %eax,%eax
call   1060 <printf@plt>
mov    $0x2,%edi
call   1120 <ich@plt>
mov    %r14,%rdi
mov    $0x45,%esi
xor    %eax,%eax
call   1060 <printf@plt>
mov    $0x2,%edi
call   1120 <ich@plt>
mov    %r14,%rdi
mov    $0x44,%esi
xor    %eax,%eax
call   1060 <printf@plt>
mov    $0x2,%edi
call   1120 <ich@plt>
mov    %r14,%rdi
mov    $0x43,%esi
xor    %eax,%eax
call   1060 <printf@plt>
mov    $0x2,%edi
call   1120 <ich@plt>
mov    %r14,%rdi
mov    $0x42,%esi
xor    %eax,%eax
call   1060 <printf@plt>
mov    $0x2,%edi
call   1120 <ich@plt>
mov    %r14,%rdi
mov    $0x41,%esi
xor    %eax,%eax
call   1060 <printf@plt>
mov    $0x2,%edi
call   1120 <ich@plt>
mov    $0xa,%edi
mov    $0x1,%esi
call   1090 <cup@plt>
xor    %eax,%eax
call   1100 <holdit@plt>
testb  $0x1,0x4(%rsp)
mov    $0x0,%eax
lea    0x632(%rip),%r15
jne    1230 <tst_insdel+0x20>
lea    0x5b5(%rip),%rdi
add    $0x8,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
jmp    1040 <rm@plt>

LLVM IR (-O0):
@.str = [3 x i8] c"?3\00"
@.str.1 = [3 x i8] c"%c\00"
@.str.2 = [47 x i8] c"Screen accordion test (Insert & Delete Line). \00"
@.str.3 = [3 x i8] c"?6\00"
@.str.4 = [59 x i8] c"Top line: A's, bottom line: X's, this line, nothing more. \00"
@.str.5 = [2 x i8] c"B\00"
@.str.6 = [2 x i8] c"4\00"
@.str.7 = [2 x i8] c"*\00"
@.str.8 = [64 x i8] c"Test of 'Insert Mode'. The top line should be 'A*** ... ***B'. \00"
@.str.9 = [58 x i8] c"Test of 'Delete Character'. The top line should be 'AB'. \00"
@.str.10 = [38 x i8] c"The right column should be staggered \00"
@.str.11 = [10 x i8] c"by one. \00"
@.str.12 = [58 x i8] c"If your terminal has the ANSI 'Insert Character' function\00"
@.str.13 = [59 x i8] c"(the VT102 does not), then you should see a line like this\00"
@.str.14 = [54 x i8] c" A B C D E F G H I J K L M N O P Q R S T U V W X Y Z\00"
@.str.15 = [7 x i8] c"below:\00"
@.str.16 = [1 x i8] zeroinitializer
@.str.17 = [4 x i8] c"%c\08\00"
define i32 @tst_insdel() {
%1 = alloca i32
%2 = alloca i32
%3 = alloca i32
%4 = alloca i32
%5 = alloca i32
%6 = alloca i32
%7 = alloca i32
store i32 0, i32* %7
br label %8
8: ; preds = %174, %0
%9 = load i32, i32* %7
%10 = icmp sle i32 %9, 1
br i1 %10, label %11, label %177
11: ; preds = %8
%12 = load i32, i32* %7
%13 = icmp ne i32 %12, 0
br i1 %13, label %14, label %16
14: ; preds = %11
%15 = call i32 @sm(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i64 0, i64 0))
store i32 132, i32* %5
br label %18
16: ; preds = %11
%17 = call i32 @rm(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i64 0, i64 0))
store i32 80, i32* %5
br label %18
18: ; preds = %16, %14
%19 = call i32 @ed(i32 2)
%20 = call i32 @cup(i32 1, i32 1)
store i32 1, i32* %3
br label %21
21: ; preds = %39, %18
%22 = load i32, i32* %3
%23 = icmp sle i32 %22, 24
br i1 %23, label %24, label %42
24: ; preds = %21
%25 = load i32, i32* %3
%26 = call i32 @cup(i32 %25, i32 1)
store i32 1, i32* %4
br label %27
27: ; preds = %35, %24
%28 = load i32, i32* %4
%29 = load i32, i32* %5
%30 = icmp sle i32 %28, %29
br i1 %30, label %31, label %38
31: ; preds = %27
%32 = load i32, i32* %3
%33 = add nsw i32 64, %32
%34 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.1, i64 0, i64 0), i32 %33)
br label %35
35: ; preds = %31
%36 = load i32, i32* %4
%37 = add nsw i32 %36, 1
store i32 %37, i32* %4
br label %27
38: ; preds = %27
br label %39
39: ; preds = %38
%40 = load i32, i32* %3
%41 = add nsw i32 %40, 1
store i32 %41, i32* %3
br label %21
42: ; preds = %21
%43 = call i32 @cup(i32 4, i32 1)
%44 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([47 x i8], [47 x i8]* @.str.2, i64 0, i64 0))
%45 = call i32 (...) @holdit()
%46 = call i32 (...) @ri()
%47 = call i32 @el(i32 2)
%48 = call i32 @decstbm(i32 2, i32 23)
%49 = call i32 @sm(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.3, i64 0, i64 0))
%50 = call i32 @cup(i32 1, i32 1)
store i32 1, i32* %3
br label %51
51: ; preds = %59, %42
%52 = load i32, i32* %3
%53 = icmp sle i32 %52, 24
br i1 %53, label %54, label %62
54: ; preds = %51
%55 = load i32, i32* %3
%56 = call i32 @il(i32 %55)
%57 = load i32, i32* %3
%58 = call i32 @dl(i32 %57)
br label %59
59: ; preds = %54
%60 = load i32, i32* %3
%61 = add nsw i32 %60, 1
store i32 %61, i32* %3
br label %51
62: ; preds = %51
%63 = call i32 @rm(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.3, i64 0, i64 0))
%64 = call i32 @decstbm(i32 0, i32 0)
%65 = call i32 @cup(i32 2, i32 1)
%66 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([59 x i8], [59 x i8]* @.str.4, i64 0, i64 0))
%67 = call i32 (...) @holdit()
%68 = call i32 @cup(i32 2, i32 1)
%69 = call i32 @ed(i32 0)
%70 = call i32 @cup(i32 1, i32 2)
%71 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.5, i64 0, i64 0))
%72 = call i32 @cub(i32 1)
%73 = call i32 @sm(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.6, i64 0, i64 0))
store i32 2, i32* %4
br label %74
74: ; preds = %81, %62
%75 = load i32, i32* %4
%76 = load i32, i32* %5
%77 = sub nsw i32 %76, 1
%78 = icmp sle i32 %75, %77
br i1 %78, label %79, label %84
79: ; preds = %74
%80 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.7, i64 0, i64 0))
br label %81
81: ; preds = %79
%82 = load i32, i32* %4
%83 = add nsw i32 %82, 1
store i32 %83, i32* %4
br label %74
84: ; preds = %74
%85 = call i32 @rm(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.6, i64 0, i64 0))
%86 = call i32 @cup(i32 4, i32 1)
%87 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([64 x i8], [64 x i8]* @.str.8, i64 0, i64 0))
%88 = call i32 (...) @holdit()
%89 = call i32 (...) @ri()
%90 = call i32 @el(i32 2)
%91 = call i32 @cup(i32 1, i32 2)
%92 = load i32, i32* %5
%93 = sub nsw i32 %92, 2
%94 = call i32 @dch(i32 %93)
%95 = call i32 @cup(i32 4, i32 1)
%96 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([58 x i8], [58 x i8]* @.str.9, i64 0, i64 0))
%97 = call i32 (...) @holdit()
store i32 1, i32* %6
br label %98
98: ; preds = %145, %84
%99 = load i32, i32* %6
%100 = icmp sle i32 %99, 2
br i1 %100, label %101, label %148
101: ; preds = %98
%102 = call i32 @ed(i32 2)
store i32 1, i32* %3
br label %103
103: ; preds = %137, %101
%104 = load i32, i32* %3
%105 = icmp sle i32 %104, 24
br i1 %105, label %106, label %140
106: ; preds = %103
%107 = load i32, i32* %3
%108 = call i32 @cup(i32 %107, i32 1)
%109 = load i32, i32* %6
%110 = icmp eq i32 %109, 2
br i1 %110, label %111, label %113
111: ; preds = %106
%112 = call i32 (...) @decdwl()
br label %113
113: ; preds = %111, %106
store i32 1, i32* %4
br label %114
114: ; preds = %124, %113
%115 = load i32, i32* %4
%116 = load i32, i32* %5
%117 = load i32, i32* %6
%118 = sdiv i32 %116, %117
%119 = icmp sle i32 %115, %118
br i1 %119, label %120, label %127
120: ; preds = %114
%121 = load i32, i32* %3
%122 = add nsw i32 64, %121
%123 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.1, i64 0, i64 0), i32 %122)
br label %124
124: ; preds = %120
%125 = load i32, i32* %4
%126 = add nsw i32 %125, 1
store i32 %126, i32* %4
br label %114
127: ; preds = %114
%128 = load i32, i32* %3
%129 = load i32, i32* %5
%130 = load i32, i32* %6
%131 = sdiv i32 %129, %130
%132 = load i32, i32* %3
%133 = sub nsw i32 %131, %132
%134 = call i32 @cup(i32 %128, i32 %133)
%135 = load i32, i32* %3
%136 = call i32 @dch(i32 %135)
br label %137
137: ; preds = %127
%138 = load i32, i32* %3
%139 = add nsw i32 %138, 1
store i32 %139, i32* %3
br label %103
140: ; preds = %103
%141 = call i32 @cup(i32 4, i32 1)
%142 = call i32 @println(i8* getelementptr inbounds ([38 x i8], [38 x i8]* @.str.10, i64 0, i64 0))
%143 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.11, i64 0, i64 0))
%144 = call i32 (...) @holdit()
br label %145
145: ; preds = %140
%146 = load i32, i32* %6
%147 = add nsw i32 %146, 1
store i32 %147, i32* %6
br label %98
148: ; preds = %98
%149 = call i32 @ed(i32 2)
%150 = call i32 @cup(i32 1, i32 1)
%151 = call i32 @println(i8* getelementptr inbounds ([58 x i8], [58 x i8]* @.str.12, i64 0, i64 0))
%152 = call i32 @println(i8* getelementptr inbounds ([59 x i8], [59 x i8]* @.str.13, i64 0, i64 0))
%153 = call i32 @println(i8* getelementptr inbounds ([54 x i8], [54 x i8]* @.str.14, i64 0, i64 0))
%154 = call i32 @println(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.15, i64 0, i64 0))
%155 = call i32 @println(i8* getelementptr inbounds ([1 x i8], [1 x i8]* @.str.16, i64 0, i64 0))
store i32 90, i32* %2
br label %156
156: ; preds = %163, %148
%157 = load i32, i32* %2
%158 = icmp sge i32 %157, 65
br i1 %158, label %159, label %166
159: ; preds = %156
%160 = load i32, i32* %2
%161 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.17, i64 0, i64 0), i32 %160)
%162 = call i32 @ich(i32 2)
br label %163
163: ; preds = %159
%164 = load i32, i32* %2
%165 = add nsw i32 %164, -1
store i32 %165, i32* %2
br label %156
166: ; preds = %156
%167 = call i32 @cup(i32 10, i32 1)
%168 = call i32 (...) @holdit()
%169 = load i32, i32* %5
%170 = icmp eq i32 %169, 132
br i1 %170, label %171, label %173
171: ; preds = %166
%172 = call i32 @rm(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i64 0, i64 0))
br label %173
173: ; preds = %171, %166
br label %174
174: ; preds = %173
%175 = load i32, i32* %7
%176 = add nsw i32 %175, 1
store i32 %176, i32* %7
br label %8
177: ; preds = %8
%178 = load i32, i32* %1
ret i32 %178
}

LLVM IR (-O2):
@.str = [3 x i8] c"?3\00"
@.str.2 = [47 x i8] c"Screen accordion test (Insert & Delete Line). \00"
@.str.3 = [3 x i8] c"?6\00"
@.str.4 = [59 x i8] c"Top line: A's, bottom line: X's, this line, nothing more. \00"
@.str.6 = [2 x i8] c"4\00"
@.str.8 = [64 x i8] c"Test of 'Insert Mode'. The top line should be 'A*** ... ***B'. \00"
@.str.9 = [58 x i8] c"Test of 'Delete Character'. The top line should be 'AB'. \00"
@.str.10 = [38 x i8] c"The right column should be staggered \00"
@.str.11 = [10 x i8] c"by one. \00"
@.str.12 = [58 x i8] c"If your terminal has the ANSI 'Insert Character' function\00"
@.str.13 = [59 x i8] c"(the VT102 does not), then you should see a line like this\00"
@.str.14 = [54 x i8] c" A B C D E F G H I J K L M N O P Q R S T U V W X Y Z\00"
@.str.15 = [7 x i8] c"below:\00"
@.str.16 = [1 x i8] zeroinitializer
@.str.17 = [4 x i8] c"%c\08\00"
define i32 @tst_insdel() {
br label %1
1: ; preds = %150, %0
%2 = phi i1 [ false, %150 ], [ true, %0 ]
br i1 %2, label %5, label %3
3: ; preds = %1
%4 = tail call i32 @sm(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i64 0, i64 0))
br label %7
5: ; preds = %1
%6 = tail call i32 @rm(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i64 0, i64 0))
br label %7
7: ; preds = %5, %3
%8 = phi i32 [ 132, %3 ], [ 80, %5 ]
%9 = tail call i32 @ed(i32 2)
%10 = tail call i32 @cup(i32 1, i32 1)
%11 = or i32 %8, 1
br label %12
12: ; preds = %7, %21
%13 = phi i32 [ 1, %7 ], [ %22, %21 ]
%14 = tail call i32 @cup(i32 %13, i32 1)
%15 = add nuw nsw i32 %13, 64
br label %16
16: ; preds = %12, %16
%17 = phi i32 [ 1, %12 ], [ %19, %16 ]
%18 = tail call i32 @putchar(i32 %15)
%19 = add nuw nsw i32 %17, 1
%20 = icmp eq i32 %19, %11
br i1 %20, label %21, label %16
21: ; preds = %16
%22 = add nuw nsw i32 %13, 1
%23 = icmp eq i32 %22, 25
br i1 %23, label %24, label %12
24: ; preds = %21
%25 = tail call i32 @cup(i32 4, i32 1)
%26 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([47 x i8], [47 x i8]* @.str.2, i64 0, i64 0))
%27 = tail call i32 (...) @holdit()
%28 = tail call i32 (...) @ri()
%29 = tail call i32 @el(i32 2)
%30 = tail call i32 @decstbm(i32 2, i32 23)
%31 = tail call i32 @sm(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.3, i64 0, i64 0))
%32 = tail call i32 @cup(i32 1, i32 1)
%33 = tail call i32 @il(i32 1)
%34 = tail call i32 @dl(i32 1)
%35 = tail call i32 @il(i32 2)
%36 = tail call i32 @dl(i32 2)
%37 = tail call i32 @il(i32 3)
%38 = tail call i32 @dl(i32 3)
%39 = tail call i32 @il(i32 4)
%40 = tail call i32 @dl(i32 4)
%41 = tail call i32 @il(i32 5)
%42 = tail call i32 @dl(i32 5)
%43 = tail call i32 @il(i32 6)
%44 = tail call i32 @dl(i32 6)
%45 = tail call i32 @il(i32 7)
%46 = tail call i32 @dl(i32 7)
%47 = tail call i32 @il(i32 8)
%48 = tail call i32 @dl(i32 8)
%49 = tail call i32 @il(i32 9)
%50 = tail call i32 @dl(i32 9)
%51 = tail call i32 @il(i32 10)
%52 = tail call i32 @dl(i32 10)
%53 = tail call i32 @il(i32 11)
%54 = tail call i32 @dl(i32 11)
%55 = tail call i32 @il(i32 12)
%56 = tail call i32 @dl(i32 12)
%57 = tail call i32 @il(i32 13)
%58 = tail call i32 @dl(i32 13)
%59 = tail call i32 @il(i32 14)
%60 = tail call i32 @dl(i32 14)
%61 = tail call i32 @il(i32 15)
%62 = tail call i32 @dl(i32 15)
%63 = tail call i32 @il(i32 16)
%64 = tail call i32 @dl(i32 16)
%65 = tail call i32 @il(i32 17)
%66 = tail call i32 @dl(i32 17)
%67 = tail call i32 @il(i32 18)
%68 = tail call i32 @dl(i32 18)
%69 = tail call i32 @il(i32 19)
%70 = tail call i32 @dl(i32 19)
%71 = tail call i32 @il(i32 20)
%72 = tail call i32 @dl(i32 20)
%73 = tail call i32 @il(i32 21)
%74 = tail call i32 @dl(i32 21)
%75 = tail call i32 @il(i32 22)
%76 = tail call i32 @dl(i32 22)
%77 = tail call i32 @il(i32 23)
%78 = tail call i32 @dl(i32 23)
%79 = tail call i32 @il(i32 24)
%80 = tail call i32 @dl(i32 24)
%81 = tail call i32 @rm(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.3, i64 0, i64 0))
%82 = tail call i32 @decstbm(i32 0, i32 0)
%83 = tail call i32 @cup(i32 2, i32 1)
%84 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([59 x i8], [59 x i8]* @.str.4, i64 0, i64 0))
%85 = tail call i32 (...) @holdit()
%86 = tail call i32 @cup(i32 2, i32 1)
%87 = tail call i32 @ed(i32 0)
%88 = tail call i32 @cup(i32 1, i32 2)
%89 = tail call i32 @putchar(i32 66)
%90 = tail call i32 @cub(i32 1)
%91 = tail call i32 @sm(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.6, i64 0, i64 0))
br label %92
92: ; preds = %24, %92
%93 = phi i32 [ 2, %24 ], [ %95, %92 ]
%94 = tail call i32 @putchar(i32 42)
%95 = add nuw nsw i32 %93, 1
%96 = icmp eq i32 %95, %8
br i1 %96, label %97, label %92
97: ; preds = %92
%98 = tail call i32 @rm(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.6, i64 0, i64 0))
%99 = tail call i32 @cup(i32 4, i32 1)
%100 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([64 x i8], [64 x i8]* @.str.8, i64 0, i64 0))
%101 = tail call i32 (...) @holdit()
%102 = tail call i32 (...) @ri()
%103 = tail call i32 @el(i32 2)
%104 = tail call i32 @cup(i32 1, i32 2)
%105 = add nsw i32 %8, -2
%106 = tail call i32 @dch(i32 %105)
%107 = tail call i32 @cup(i32 4, i32 1)
%108 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([58 x i8], [58 x i8]* @.str.9, i64 0, i64 0))
%109 = tail call i32 (...) @holdit()
%110 = tail call i32 @ed(i32 2)
br label %111
111: ; preds = %97, %120
%112 = phi i32 [ 1, %97 ], [ %124, %120 ]
%113 = tail call i32 @cup(i32 %112, i32 1)
%114 = add nuw nsw i32 %112, 64
br label %115
115: ; preds = %111, %115
%116 = phi i32 [ 1, %111 ], [ %118, %115 ]
%117 = tail call i32 @putchar(i32 %114)
%118 = add nuw nsw i32 %116, 1
%119 = icmp eq i32 %118, %11
br i1 %119, label %120, label %115
120: ; preds = %115
%121 = sub nsw i32 %8, %112
%122 = tail call i32 @cup(i32 %112, i32 %121)
%123 = tail call i32 @dch(i32 %112)
%124 = add nuw nsw i32 %112, 1
%125 = icmp eq i32 %124, 25
br i1 %125, label %126, label %111
126: ; preds = %120
%127 = tail call i32 @cup(i32 4, i32 1)
%128 = tail call i32 @println(i8* getelementptr inbounds ([38 x i8], [38 x i8]* @.str.10, i64 0, i64 0))
%129 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([10 x i8], [10 x i8]* @.str.11, i64 0, i64 0))
%130 = tail call i32 (...) @holdit()
%131 = tail call i32 @ed(i32 2)
%132 = lshr exact i32 %8, 1
%133 = or i32 %132, 1
br label %134
134: ; preds = %126, %144
%135 = phi i32 [ 1, %126 ], [ %148, %144 ]
%136 = tail call i32 @cup(i32 %135, i32 1)
%137 = tail call i32 (...) @decdwl()
%138 = add nuw nsw i32 %135, 64
br label %139
139: ; preds = %139, %134
%140 = phi i32 [ 1, %134 ], [ %142, %139 ]
%141 = tail call i32 @putchar(i32 %138)
%142 = add nuw nsw i32 %140, 1
%143 = icmp eq i32 %142, %133
br i1 %143, label %144, label %139
144: ; preds = %139
%145 = sub nsw i32 %132, %135
%146 = tail call i32 @cup(i32 %135, i32 %145)
%147 = tail call i32 @dch(i32 %135)
%148 = add nuw nsw i32 %135, 1
%149 = icmp eq i32 %148, 25
br i1 %149, label %150, label %134
150: ; preds = %144
%151 = tail call i32 @cup(i32 4, i32 1)
%152 = tail call i32 @println(i8* getelementptr inbounds ([38 x i8], [38 x i8]* @.str.10, i64 0, i64 0))
%153 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([10 x i8], [10 x i8]* @.str.11, i64 0, i64 0))
%154 = tail call i32 (...) @holdit()
%155 = tail call i32 @ed(i32 2)
%156 = tail call i32 @cup(i32 1, i32 1)
%157 = tail call i32 @println(i8* getelementptr inbounds ([58 x i8], [58 x i8]* @.str.12, i64 0, i64 0))
%158 = tail call i32 @println(i8* getelementptr inbounds ([59 x i8], [59 x i8]* @.str.13, i64 0, i64 0))
%159 = tail call i32 @println(i8* getelementptr inbounds ([54 x i8], [54 x i8]* @.str.14, i64 0, i64 0))
%160 = tail call i32 @println(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.15, i64 0, i64 0))
%161 = tail call i32 @println(i8* getelementptr inbounds ([1 x i8], [1 x i8]* @.str.16, i64 0, i64 0))
%162 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.17, i64 0, i64 0), i32 90)
%163 = tail call i32 @ich(i32 2)
%164 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.17, i64 0, i64 0), i32 89)
%165 = tail call i32 @ich(i32 2)
%166 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.17, i64 0, i64 0), i32 88)
%167 = tail call i32 @ich(i32 2)
%168 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.17, i64 0, i64 0), i32 87)
%169 = tail call i32 @ich(i32 2)
%170 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.17, i64 0, i64 0), i32 86)
%171 = tail call i32 @ich(i32 2)
%172 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.17, i64 0, i64 0), i32 85)
%173 = tail call i32 @ich(i32 2)
%174 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.17, i64 0, i64 0), i32 84)
%175 = tail call i32 @ich(i32 2)
%176 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.17, i64 0, i64 0), i32 83)
%177 = tail call i32 @ich(i32 2)
%178 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.17, i64 0, i64 0), i32 82)
%179 = tail call i32 @ich(i32 2)
%180 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.17, i64 0, i64 0), i32 81)
%181 = tail call i32 @ich(i32 2)
%182 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.17, i64 0, i64 0), i32 80)
%183 = tail call i32 @ich(i32 2)
%184 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.17, i64 0, i64 0), i32 79)
%185 = tail call i32 @ich(i32 2)
%186 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.17, i64 0, i64 0), i32 78)
%187 = tail call i32 @ich(i32 2)
%188 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.17, i64 0, i64 0), i32 77)
%189 = tail call i32 @ich(i32 2)
%190 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.17, i64 0, i64 0), i32 76)
%191 = tail call i32 @ich(i32 2)
%192 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.17, i64 0, i64 0), i32 75)
%193 = tail call i32 @ich(i32 2)
%194 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.17, i64 0, i64 0), i32 74)
%195 = tail call i32 @ich(i32 2)
%196 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.17, i64 0, i64 0), i32 73)
%197 = tail call i32 @ich(i32 2)
%198 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.17, i64 0, i64 0), i32 72)
%199 = tail call i32 @ich(i32 2)
%200 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.17, i64 0, i64 0), i32 71)
%201 = tail call i32 @ich(i32 2)
%202 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.17, i64 0, i64 0), i32 70)
%203 = tail call i32 @ich(i32 2)
%204 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.17, i64 0, i64 0), i32 69)
%205 = tail call i32 @ich(i32 2)
%206 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.17, i64 0, i64 0), i32 68)
%207 = tail call i32 @ich(i32 2)
%208 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.17, i64 0, i64 0), i32 67)
%209 = tail call i32 @ich(i32 2)
%210 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.17, i64 0, i64 0), i32 66)
%211 = tail call i32 @ich(i32 2)
%212 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.17, i64 0, i64 0), i32 65)
%213 = tail call i32 @ich(i32 2)
%214 = tail call i32 @cup(i32 10, i32 1)
%215 = tail call i32 (...) @holdit()
br i1 %2, label %1, label %216
216: ; preds = %150
%217 = tail call i32 @rm(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i64 0, i64 0))
ret i32 undef
}