int main(int argc, char **argv) {
  int fail, i;
  char buf[200], dest[200], c;
  puts("ok puts");
  printf("o%c pr%cntf", 'k', 'i');
  printf("\n");
  puts_nonl("ok puts_nonl\n");
  putchar('o');
  putchar('k');
  putchar(' ');
  putchar('p');
  putchar('u');
  putchar('t');
  putchar('c');
  putchar('h');
  putchar('a');
  putchar('r');
  putchar('\n');
  fail = 0;
  set_echo(0);
  if (getchar() != 'x') {
    puts("[lost x]");
    fail++;
  }
  if (getchar() != '\n') {
    puts("[lost newline]");
    fail++;
  }
  if (fail) {
    puts("fail getchar");
  } else {
    puts("ok getchar");
  }
  fail = 0;
  if (strlen("") != 0) {
    puts("[empty]");
    fail++;
  }
  if (strlen("abcdef") != 6) {
    puts("[non-empty]");
    fail++;
  }
  if (fail) {
    puts("fail strlen");
  } else {
    puts("ok strlen");
  }
  fail = 0;
  if (strcmp("less", "lesser") >= 0) {
    puts("[len=4 vs len=6]");
    fail++;
  }
  if (strcmp("lesseq", "lesser") >= 0) {
    puts("[q vs r]");
    fail++;
  }
  if (strcmp("lesser", "lesser") != 0) {
    puts("[r vs r]");
    fail++;
  }
  if (strcmp("lesser", "lesseq") <= 0) {
    puts("[r vs q]");
    fail++;
  }
  if (strcmp("lesser", "less") <= 0) {
    puts("[len=6 vs len=4]");
    fail++;
  }
  if (fail) {
    puts("fail strcmp");
  } else {
    puts("ok strcmp");
  }
  fail = 0;
  gets(buf);
  if (strcmp(buf, "This is a test of the emergency broadcasting system.") !=
      0) {
    puts("[comparison fails]");
    fail++;
  }
  if (fail) {
    puts("fail gets");
  } else {
    puts("ok gets");
  }
  fail = 0;
  if (!isspace(' ')) {
    puts("[whitespace]");
    fail++;
  }
  if (isspace('a')) {
    puts("[non-whitespace]");
    fail++;
  }
  if (fail) {
    puts("fail isspace");
  } else {
    puts("ok isspace");
  }
  fail = 0;
  if (!isdigit('0')) {
    puts("[0]");
    fail++;
  }
  if (!isdigit('1')) {
    puts("[1]");
    fail++;
  }
  if (!isdigit('2')) {
    puts("[2]");
    fail++;
  }
  if (!isdigit('3')) {
    puts("[3]");
    fail++;
  }
  if (!isdigit('4')) {
    puts("[4]");
    fail++;
  }
  if (!isdigit('5')) {
    puts("[5]");
    fail++;
  }
  if (!isdigit('6')) {
    puts("[6]");
    fail++;
  }
  if (!isdigit('7')) {
    puts("[7]");
    fail++;
  }
  if (!isdigit('8')) {
    puts("[8]");
    fail++;
  }
  if (!isdigit('9')) {
    puts("[9]");
    fail++;
  }
  if (isdigit(' ')) {
    puts("[space]");
    fail++;
  }
  if (isdigit('a')) {
    puts("[alpha]");
    fail++;
  }
  if (fail) {
    puts("fail isdigit");
  } else {
    puts("ok isdigit");
  }
  fail = 0;
  if (strtol("0x1234", ((void *)0L), 0) != 0x1234) {
    puts("[0x1234 base=0]");
    fail++;
  }
  if (strtol("1234", ((void *)0L), 16) != 0x1234) {
    puts("[1234 base=16]");
    fail++;
  }
  if (strtol("01234", ((void *)0L), 0) != 01234) {
    puts("[01234 base=0]");
    fail++;
  }
  if (strtol("1234", ((void *)0L), 8) != 01234) {
    puts("[1234 base=8]");
    fail++;
  }
  if (strtol("1234", ((void *)0L), 0) != 1234) {
    puts("[1234 base=0]");
    fail++;
  }
  if (strtol("1234", ((void *)0L), 10) != 1234) {
    puts("[1234 base=10]");
    fail++;
  }
  if (strtol("-1234", ((void *)0L), 0) != -1234) {
    puts("[-1234 base=0]");
    fail++;
  }
  if (strtol("-1234", ((void *)0L), 10) != -1234) {
    puts("[-1234 base=10]");
    fail++;
  }
  if (fail) {
    puts("fail strtol");
  } else {
    puts("ok strtol");
  }
  fail = 0;
  strcpy(buf, "ab");
  if (!((buf[0] == 'a') && (buf[1] == 'b') && (buf[2] == '\0')))
    fail++;
  strcpy(&buf[3], buf);
  if (!((buf[0] == 'a') && (buf[1] == 'b') && (buf[2] == '\0') &&
        (buf[3] == 'a') && (buf[4] == 'b') && (buf[5] == '\0')))
    fail++;
  if (fail) {
    puts("fail strcpy");
  } else {
    puts("ok strcpy");
  }
  fail = 0;
  strcpy(buf, "xxxabcyyy");
  memmove(&buf[5], &buf[3], 3);
  if (!((buf[5] == 'a') && (buf[6] == 'b') && (buf[7] == 'c')))
    fail++;
  memmove(&buf[4], &buf[5], 3);
  if (!((buf[4] == 'a') && (buf[5] == 'b') && (buf[6] == 'c')))
    fail++;
  if (fail) {
    puts("fail memmove");
  } else {
    puts("ok memmove");
  }
  fail = 0;
  buf[0] = 'b';
  buf[1] = 'a';
  buf[2] = 'r';
  buf[3] = '\0';
  dest[0] = 'f';
  dest[1] = 'o';
  dest[2] = 'o';
  dest[3] = '\0';
  if (strcat(dest, buf) != dest) {
    puts("[strcat retval]");
    fail++;
  }
  if (strcmp(dest, "foobar") != 0) {
    puts("[strcat foobar]");
    fail++;
  }
  buf[0] = '\0';
  dest[0] = 'f';
  dest[1] = 'o';
  dest[2] = 'o';
  dest[3] = '\0';
  strcat(dest, buf);
  if (strcmp(dest, "foo") != 0) {
    puts("[strcat foo]");
    fail++;
  }
  dest[0] = '\0';
  buf[0] = 'f';
  buf[1] = 'o';
  buf[2] = 'o';
  buf[3] = '2';
  buf[4] = '\0';
  strcat(dest, buf);
  if (strcmp(dest, "foo2") != 0) {
    puts("[strcat foo2]");
    fail++;
  }
  if (fail) {
    puts("fail strcat");
  } else {
    puts("ok strcat");
  }
  fail = 0;
  c = 'a';
  if (toupper(c) != 'A') {
    fail++;
  }
  c = 'z';
  if (toupper(c) != 'Z') {
    fail++;
  }
  if (fail) {
    puts("fail toupper");
  } else {
    puts("ok toupper");
  }
  fail = 0;
  c = 'A';
  if (tolower(c) != 'a') {
    fail++;
  }
  c = 'Z';
  if (tolower(c) != 'z') {
    fail++;
  }
  if (fail) {
    puts("fail tolower");
  } else {
    puts("ok tolower");
  }
  fail = 0;
  if (isprint('')) {
    fail++;
  }
  if (!isprint('G')) {
    fail++;
  }
  if (fail) {
    puts("fail isprint");
  } else {
    puts("ok isprint");
  }
  fail = 0;
  buf[0] = 0;
  buf[1] = 1;
  buf[2] = 2;
  dest[0] = 0;
  dest[1] = 0;
  dest[2] = 0;
  memcpy(dest, buf, 3);
  if (!(dest[0] == 0 && dest[1] == 1 && dest[2] == 2)) {
    fail++;
  }
  if (fail) {
    puts("fail memcpy");
  } else {
    puts("ok memcpy");
  }
  memset(buf, '4', 50);
  for (i = 0; i < 50; ++i) {
    if (buf[i] != '4') {
      fail++;
    }
  }
  if (fail) {
    puts("fail memset");
  } else {
    puts("ok memset");
  }
  fail = 0;
  if (atoi("2134") != 2134) {
    fail++;
  }
  if (atoi("0") != 0) {
    fail++;
  }
  if (atoi("-30000") != -30000) {
    fail++;
  }
  if (fail) {
    puts("fail atoi");
  } else {
    puts("ok atoi");
  }
  return 0;
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0x1c0,%rsp
movl   $0x0,-0x4(%rbp)
mov    %edi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
lea    0xdc0(%rip),%rdi
mov    $0x0,%al
call   1070 <puts@plt>
lea    0xdba(%rip),%rdi
mov    $0x6b,%esi
mov    $0x69,%edx
mov    $0x0,%al
call   10a0 <printf@plt>
lea    0xdba(%rip),%rdi
mov    $0x0,%al
call   10a0 <printf@plt>
lea    0xda0(%rip),%rdi
mov    $0x0,%al
call   1090 <puts_nonl@plt>
mov    $0x6f,%edi
mov    $0x0,%al
call   1030 <putchar@plt>
mov    $0x6b,%edi
mov    $0x0,%al
call   1030 <putchar@plt>
mov    $0x20,%edi
mov    $0x0,%al
call   1030 <putchar@plt>
mov    $0x70,%edi
mov    $0x0,%al
call   1030 <putchar@plt>
mov    $0x75,%edi
mov    $0x0,%al
call   1030 <putchar@plt>
mov    $0x74,%edi
mov    $0x0,%al
call   1030 <putchar@plt>
mov    $0x63,%edi
mov    $0x0,%al
call   1030 <putchar@plt>
mov    $0x68,%edi
mov    $0x0,%al
call   1030 <putchar@plt>
mov    $0x61,%edi
mov    $0x0,%al
call   1030 <putchar@plt>
mov    $0x72,%edi
mov    $0x0,%al
call   1030 <putchar@plt>
mov    $0xa,%edi
mov    $0x0,%al
call   1030 <putchar@plt>
movl   $0x0,-0x14(%rbp)
xor    %edi,%edi
mov    $0x0,%al
call   1080 <set_echo@plt>
mov    $0x0,%al
call   10e0 <getchar@plt>
cmp    $0x78,%eax
je     1336 <main+0x116>
lea    0xcfc(%rip),%rdi
mov    $0x0,%al
call   1070 <puts@plt>
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14(%rbp)
mov    $0x0,%al
call   10e0 <getchar@plt>
cmp    $0xa,%eax
je     135d <main+0x13d>
lea    0xcde(%rip),%rdi
mov    $0x0,%al
call   1070 <puts@plt>
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14(%rbp)
cmpl   $0x0,-0x14(%rbp)
je     137a <main+0x15a>
lea    0xccc(%rip),%rdi
mov    $0x0,%al
call   1070 <puts@plt>
jmp    1388 <main+0x168>
lea    0xcc6(%rip),%rdi
mov    $0x0,%al
call   1070 <puts@plt>
movl   $0x0,-0x14(%rbp)
cmpl   $0x0,-0x14(%rbp)
je     13ac <main+0x18c>
lea    0xcb2(%rip),%rdi
mov    $0x0,%al
call   1070 <puts@plt>
jmp    13ba <main+0x19a>
lea    0xcab(%rip),%rdi
mov    $0x0,%al
call   1070 <puts@plt>
movl   $0x0,-0x14(%rbp)
cmpl   $0x0,-0x14(%rbp)
je     13de <main+0x1be>
lea    0xc96(%rip),%rdi
mov    $0x0,%al
call   1070 <puts@plt>
jmp    13ec <main+0x1cc>
lea    0xc8f(%rip),%rdi
mov    $0x0,%al
call   1070 <puts@plt>
movl   $0x0,-0x14(%rbp)
lea    -0xe0(%rbp),%rdi
mov    $0x0,%al
call   1100 <gets@plt>
lea    -0xe0(%rbp),%rdi
lea    0xc6f(%rip),%rsi
call   10d0 <strcmp@plt>
cmp    $0x0,%eax
je     1434 <main+0x214>
lea    0xc8f(%rip),%rdi
mov    $0x0,%al
call   1070 <puts@plt>
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14(%rbp)
cmpl   $0x0,-0x14(%rbp)
je     1451 <main+0x231>
lea    0xc81(%rip),%rdi
mov    $0x0,%al
call   1070 <puts@plt>
jmp    145f <main+0x23f>
lea    0xc78(%rip),%rdi
mov    $0x0,%al
call   1070 <puts@plt>
movl   $0x0,-0x14(%rbp)
mov    $0x20,%edi
call   10c0 <isspace@plt>
cmp    $0x0,%eax
jne    1490 <main+0x270>
lea    0xc58(%rip),%rdi
mov    $0x0,%al
call   1070 <puts@plt>
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14(%rbp)
mov    $0x61,%edi
call   10c0 <isspace@plt>
cmp    $0x0,%eax
je     14ba <main+0x29a>
lea    0xc3b(%rip),%rdi
mov    $0x0,%al
call   1070 <puts@plt>
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14(%rbp)
cmpl   $0x0,-0x14(%rbp)
je     14d7 <main+0x2b7>
lea    0xc2b(%rip),%rdi
mov    $0x0,%al
call   1070 <puts@plt>
jmp    14e5 <main+0x2c5>
lea    0xc25(%rip),%rdi
mov    $0x0,%al
call   1070 <puts@plt>
movl   $0x0,-0x14(%rbp)
mov    $0x30,%edi
call   1040 <isdigit@plt>
cmp    $0x0,%eax
jne    1516 <main+0x2f6>
lea    0xc08(%rip),%rdi
mov    $0x0,%al
call   1070 <puts@plt>
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14(%rbp)
mov    $0x31,%edi
call   1040 <isdigit@plt>
cmp    $0x0,%eax
jne    1540 <main+0x320>
lea    0xbe2(%rip),%rdi
mov    $0x0,%al
call   1070 <puts@plt>
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14(%rbp)
mov    $0x32,%edi
call   1040 <isdigit@plt>
cmp    $0x0,%eax
jne    156a <main+0x34a>
lea    0xbbc(%rip),%rdi
mov    $0x0,%al
call   1070 <puts@plt>
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14(%rbp)
mov    $0x33,%edi
call   1040 <isdigit@plt>
cmp    $0x0,%eax
jne    1594 <main+0x374>
lea    0xb96(%rip),%rdi
mov    $0x0,%al
call   1070 <puts@plt>
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14(%rbp)
mov    $0x34,%edi
call   1040 <isdigit@plt>
cmp    $0x0,%eax
jne    15be <main+0x39e>
lea    0xb70(%rip),%rdi
mov    $0x0,%al
call   1070 <puts@plt>
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14(%rbp)
mov    $0x35,%edi
call   1040 <isdigit@plt>
cmp    $0x0,%eax
jne    15e8 <main+0x3c8>
lea    0xb4a(%rip),%rdi
mov    $0x0,%al
call   1070 <puts@plt>
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14(%rbp)
mov    $0x36,%edi
call   1040 <isdigit@plt>
cmp    $0x0,%eax
jne    1612 <main+0x3f2>
lea    0xb24(%rip),%rdi
mov    $0x0,%al
call   1070 <puts@plt>
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14(%rbp)
mov    $0x37,%edi
call   1040 <isdigit@plt>
cmp    $0x0,%eax
jne    163c <main+0x41c>
lea    0xafe(%rip),%rdi
mov    $0x0,%al
call   1070 <puts@plt>
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14(%rbp)
mov    $0x38,%edi
call   1040 <isdigit@plt>
cmp    $0x0,%eax
jne    1666 <main+0x446>
lea    0xad8(%rip),%rdi
mov    $0x0,%al
call   1070 <puts@plt>
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14(%rbp)
mov    $0x39,%edi
call   1040 <isdigit@plt>
cmp    $0x0,%eax
jne    1690 <main+0x470>
lea    0xab2(%rip),%rdi
mov    $0x0,%al
call   1070 <puts@plt>
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14(%rbp)
mov    $0x20,%edi
call   1040 <isdigit@plt>
cmp    $0x0,%eax
je     16ba <main+0x49a>
lea    0xa8c(%rip),%rdi
mov    $0x0,%al
call   1070 <puts@plt>
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14(%rbp)
mov    $0x61,%edi
call   1040 <isdigit@plt>
cmp    $0x0,%eax
je     16e4 <main+0x4c4>
lea    0xa6a(%rip),%rdi
mov    $0x0,%al
call   1070 <puts@plt>
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14(%rbp)
cmpl   $0x0,-0x14(%rbp)
je     1701 <main+0x4e1>
lea    0xa51(%rip),%rdi
mov    $0x0,%al
call   1070 <puts@plt>
jmp    170f <main+0x4ef>
lea    0xa4b(%rip),%rdi
mov    $0x0,%al
call   1070 <puts@plt>
movl   $0x0,-0x14(%rbp)
lea    0xa41(%rip),%rdi
xor    %eax,%eax
mov    %eax,%esi
xor    %edx,%edx
call   10f0 <strtol@plt>
cmp    $0x1234,%rax
je     174b <main+0x52b>
lea    0xa2a(%rip),%rdi
mov    $0x0,%al
call   1070 <puts@plt>
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14(%rbp)
lea    0xa73(%rip),%rdi
xor    %eax,%eax
mov    %eax,%esi
mov    $0x10,%edx
call   10f0 <strtol@plt>
cmp    $0x1234,%rax
je     1783 <main+0x563>
lea    0xa02(%rip),%rdi
mov    $0x0,%al
call   1070 <puts@plt>
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14(%rbp)
lea    0x9fa(%rip),%rdi
xor    %eax,%eax
mov    %eax,%esi
xor    %edx,%edx
call   10f0 <strtol@plt>
cmp    $0x29c,%rax
je     17b8 <main+0x598>
lea    0x9e2(%rip),%rdi
mov    $0x0,%al
call   1070 <puts@plt>
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14(%rbp)
lea    0xa06(%rip),%rdi
xor    %eax,%eax
mov    %eax,%esi
mov    $0x8,%edx
call   10f0 <strtol@plt>
cmp    $0x29c,%rax
je     17f0 <main+0x5d0>
lea    0x9b9(%rip),%rdi
mov    $0x0,%al
call   1070 <puts@plt>
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14(%rbp)
lea    0x9ce(%rip),%rdi
xor    %eax,%eax
mov    %eax,%esi
xor    %edx,%edx
call   10f0 <strtol@plt>
cmp    $0x4d2,%rax
je     1825 <main+0x605>
lea    0x992(%rip),%rdi
mov    $0x0,%al
call   1070 <puts@plt>
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14(%rbp)
lea    0x999(%rip),%rdi
xor    %eax,%eax
mov    %eax,%esi
mov    $0xa,%edx
call   10f0 <strtol@plt>
cmp    $0x4d2,%rax
je     185d <main+0x63d>
lea    0x968(%rip),%rdi
mov    $0x0,%al
call   1070 <puts@plt>
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14(%rbp)
lea    0x960(%rip),%rdi
xor    %eax,%eax
mov    %eax,%esi
xor    %edx,%edx
call   10f0 <strtol@plt>
cmp    $0xfffffffffffffb2e,%rax
je     1892 <main+0x672>
lea    0x948(%rip),%rdi
mov    $0x0,%al
call   1070 <puts@plt>
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14(%rbp)
lea    0x92b(%rip),%rdi
xor    %eax,%eax
mov    %eax,%esi
mov    $0xa,%edx
call   10f0 <strtol@plt>
cmp    $0xfffffffffffffb2e,%rax
je     18ca <main+0x6aa>
lea    0x91f(%rip),%rdi
mov    $0x0,%al
call   1070 <puts@plt>
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14(%rbp)
cmpl   $0x0,-0x14(%rbp)
je     18e7 <main+0x6c7>
lea    0x90e(%rip),%rdi
mov    $0x0,%al
call   1070 <puts@plt>
jmp    18f5 <main+0x6d5>
lea    0x907(%rip),%rdi
mov    $0x0,%al
call   1070 <puts@plt>
movl   $0x0,-0x14(%rbp)
lea    -0xe0(%rbp),%rdi
lea    0x8f5(%rip),%rsi
call   1050 <strcpy@plt>
movsbl -0xe0(%rbp),%eax
cmp    $0x61,%eax
jne    193f <main+0x71f>
movsbl -0xdf(%rbp),%eax
cmp    $0x62,%eax
jne    193f <main+0x71f>
movsbl -0xde(%rbp),%eax
cmp    $0x0,%eax
je     1948 <main+0x728>
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14(%rbp)
lea    -0xe0(%rbp),%rdi
add    $0x3,%rdi
lea    -0xe0(%rbp),%rsi
call   1050 <strcpy@plt>
movsbl -0xe0(%rbp),%eax
cmp    $0x61,%eax
jne    19bf <main+0x79f>
movsbl -0xdf(%rbp),%eax
cmp    $0x62,%eax
jne    19bf <main+0x79f>
movsbl -0xde(%rbp),%eax
cmp    $0x0,%eax
jne    19bf <main+0x79f>
movsbl -0xdd(%rbp),%eax
cmp    $0x61,%eax
jne    19bf <main+0x79f>
movsbl -0xdc(%rbp),%eax
cmp    $0x62,%eax
jne    19bf <main+0x79f>
movsbl -0xdb(%rbp),%eax
cmp    $0x0,%eax
je     19c8 <main+0x7a8>
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14(%rbp)
cmpl   $0x0,-0x14(%rbp)
je     19e5 <main+0x7c5>
lea    0x829(%rip),%rdi
mov    $0x0,%al
call   1070 <puts@plt>
jmp    19f3 <main+0x7d3>
lea    0x822(%rip),%rdi
mov    $0x0,%al
call   1070 <puts@plt>
movl   $0x0,-0x14(%rbp)
lea    -0xe0(%rbp),%rdi
lea    0x810(%rip),%rsi
call   1050 <strcpy@plt>
lea    -0xe0(%rbp),%rax
add    $0x5,%rax
lea    -0xe0(%rbp),%rdx
add    $0x3,%rdx
mov    (%rdx),%cx
mov    0x2(%rdx),%dl
mov    %dl,0x2(%rax)
mov    %cx,(%rax)
movsbl -0xdb(%rbp),%eax
cmp    $0x61,%eax
jne    1a5f <main+0x83f>
movsbl -0xda(%rbp),%eax
cmp    $0x62,%eax
jne    1a5f <main+0x83f>
movsbl -0xd9(%rbp),%eax
cmp    $0x63,%eax
je     1a68 <main+0x848>
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14(%rbp)
lea    -0xe0(%rbp),%rax
add    $0x4,%rax
lea    -0xe0(%rbp),%rdx
add    $0x5,%rdx
mov    (%rdx),%cx
mov    0x2(%rdx),%dl
mov    %dl,0x2(%rax)
mov    %cx,(%rax)
movsbl -0xdc(%rbp),%eax
cmp    $0x61,%eax
jne    1aba <main+0x89a>
movsbl -0xdb(%rbp),%eax
cmp    $0x62,%eax
jne    1aba <main+0x89a>
movsbl -0xda(%rbp),%eax
cmp    $0x63,%eax
je     1ac3 <main+0x8a3>
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14(%rbp)
cmpl   $0x0,-0x14(%rbp)
je     1ae0 <main+0x8c0>
lea    0x74e(%rip),%rdi
mov    $0x0,%al
call   1070 <puts@plt>
jmp    1aee <main+0x8ce>
lea    0x748(%rip),%rdi
mov    $0x0,%al
call   1070 <puts@plt>
movl   $0x0,-0x14(%rbp)
movb   $0x62,-0xe0(%rbp)
movb   $0x61,-0xdf(%rbp)
movb   $0x72,-0xde(%rbp)
movb   $0x0,-0xdd(%rbp)
movb   $0x66,-0x1b0(%rbp)
movb   $0x6f,-0x1af(%rbp)
movb   $0x6f,-0x1ae(%rbp)
movb   $0x0,-0x1ad(%rbp)
lea    -0x1b0(%rbp),%rdi
lea    -0xe0(%rbp),%rsi
call   1140 <strcat@plt>
lea    -0x1b0(%rbp),%rcx
cmp    %rcx,%rax
je     1b67 <main+0x947>
lea    0x6e3(%rip),%rdi
mov    $0x0,%al
call   1070 <puts@plt>
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14(%rbp)
lea    -0x1b0(%rbp),%rdi
lea    0x6d5(%rip),%rsi
call   10d0 <strcmp@plt>
cmp    $0x0,%eax
je     1b9a <main+0x97a>
lea    0x6c7(%rip),%rdi
mov    $0x0,%al
call   1070 <puts@plt>
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14(%rbp)
movb   $0x0,-0xe0(%rbp)
movb   $0x66,-0x1b0(%rbp)
movb   $0x6f,-0x1af(%rbp)
movb   $0x6f,-0x1ae(%rbp)
movb   $0x0,-0x1ad(%rbp)
lea    -0x1b0(%rbp),%rdi
lea    -0xe0(%rbp),%rsi
call   1140 <strcat@plt>
lea    -0x1b0(%rbp),%rdi
lea    0x683(%rip),%rsi
call   10d0 <strcmp@plt>
cmp    $0x0,%eax
je     1c03 <main+0x9e3>
lea    0x672(%rip),%rdi
mov    $0x0,%al
call   1070 <puts@plt>
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14(%rbp)
movb   $0x0,-0x1b0(%rbp)
movb   $0x66,-0xe0(%rbp)
movb   $0x6f,-0xdf(%rbp)
movb   $0x6f,-0xde(%rbp)
movb   $0x32,-0xdd(%rbp)
movb   $0x0,-0xdc(%rbp)
lea    -0x1b0(%rbp),%rdi
lea    -0xe0(%rbp),%rsi
call   1140 <strcat@plt>
lea    -0x1b0(%rbp),%rdi
lea    0x624(%rip),%rsi
call   10d0 <strcmp@plt>
cmp    $0x0,%eax
je     1c73 <main+0xa53>
lea    0x614(%rip),%rdi
mov    $0x0,%al
call   1070 <puts@plt>
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14(%rbp)
cmpl   $0x0,-0x14(%rbp)
je     1c90 <main+0xa70>
lea    0x601(%rip),%rdi
mov    $0x0,%al
call   1070 <puts@plt>
jmp    1c9e <main+0xa7e>
lea    0x5fa(%rip),%rdi
mov    $0x0,%al
call   1070 <puts@plt>
movl   $0x0,-0x14(%rbp)
movb   $0x61,-0x1b1(%rbp)
movsbl -0x1b1(%rbp),%edi
call   1060 <toupper@plt>
cmp    $0x41,%eax
je     1cca <main+0xaaa>
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14(%rbp)
movb   $0x7a,-0x1b1(%rbp)
movsbl -0x1b1(%rbp),%edi
call   1060 <toupper@plt>
cmp    $0x5a,%eax
je     1cef <main+0xacf>
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14(%rbp)
cmpl   $0x0,-0x14(%rbp)
je     1d0c <main+0xaec>
lea    0x59b(%rip),%rdi
mov    $0x0,%al
call   1070 <puts@plt>
jmp    1d1a <main+0xafa>
lea    0x595(%rip),%rdi
mov    $0x0,%al
call   1070 <puts@plt>
movl   $0x0,-0x14(%rbp)
movb   $0x41,-0x1b1(%rbp)
movsbl -0x1b1(%rbp),%edi
call   1110 <tolower@plt>
cmp    $0x61,%eax
je     1d46 <main+0xb26>
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14(%rbp)
movb   $0x5a,-0x1b1(%rbp)
movsbl -0x1b1(%rbp),%edi
call   1110 <tolower@plt>
cmp    $0x7a,%eax
je     1d6b <main+0xb4b>
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14(%rbp)
cmpl   $0x0,-0x14(%rbp)
je     1d88 <main+0xb68>
lea    0x537(%rip),%rdi
mov    $0x0,%al
call   1070 <puts@plt>
jmp    1d96 <main+0xb76>
lea    0x531(%rip),%rdi
mov    $0x0,%al
call   1070 <puts@plt>
movl   $0x0,-0x14(%rbp)
mov    $0x7,%edi
call   1120 <isprint@plt>
cmp    $0x0,%eax
je     1db9 <main+0xb99>
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14(%rbp)
mov    $0x47,%edi
call   1120 <isprint@plt>
cmp    $0x0,%eax
jne    1dd5 <main+0xbb5>
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14(%rbp)
cmpl   $0x0,-0x14(%rbp)
je     1df2 <main+0xbd2>
lea    0x4e5(%rip),%rdi
mov    $0x0,%al
call   1070 <puts@plt>
jmp    1e00 <main+0xbe0>
lea    0x4df(%rip),%rdi
mov    $0x0,%al
call   1070 <puts@plt>
movl   $0x0,-0x14(%rbp)
movb   $0x0,-0xe0(%rbp)
movb   $0x1,-0xdf(%rbp)
movb   $0x2,-0xde(%rbp)
movb   $0x0,-0x1b0(%rbp)
movb   $0x0,-0x1af(%rbp)
movb   $0x0,-0x1ae(%rbp)
mov    -0xe0(%rbp),%ax
mov    %ax,-0x1b0(%rbp)
mov    -0xde(%rbp),%al
mov    %al,-0x1ae(%rbp)
movsbl -0x1b0(%rbp),%eax
cmp    $0x0,%eax
jne    1e7b <main+0xc5b>
movsbl -0x1af(%rbp),%eax
cmp    $0x1,%eax
jne    1e7b <main+0xc5b>
movsbl -0x1ae(%rbp),%eax
cmp    $0x2,%eax
je     1e84 <main+0xc64>
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14(%rbp)
cmpl   $0x0,-0x14(%rbp)
je     1ea1 <main+0xc81>
lea    0x44e(%rip),%rdi
mov    $0x0,%al
call   1070 <puts@plt>
jmp    1eaf <main+0xc8f>
lea    0x447(%rip),%rdi
mov    $0x0,%al
call   1070 <puts@plt>
lea    -0xe0(%rbp),%rdi
mov    $0x34,%esi
mov    $0x32,%edx
call   10b0 <memset@plt>
movl   $0x0,-0x18(%rbp)
cmpl   $0x32,-0x18(%rbp)
jge    1f07 <main+0xce7>
movslq -0x18(%rbp),%rax
movsbl -0xe0(%rbp,%rax,1),%eax
ff
cmp    $0x34,%eax
je     1ef4 <main+0xcd4>
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14(%rbp)
jmp    1ef9 <main+0xcd9>
mov    -0x18(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x18(%rbp)
jmp    1ecc <main+0xcac>
cmpl   $0x0,-0x14(%rbp)
je     1f24 <main+0xd04>
lea    0x3e1(%rip),%rdi
mov    $0x0,%al
call   1070 <puts@plt>
jmp    1f32 <main+0xd12>
lea    0x3da(%rip),%rdi
mov    $0x0,%al
call   1070 <puts@plt>
movl   $0x0,-0x14(%rbp)
lea    0x3cf(%rip),%rdi
mov    $0x0,%al
call   1130 <atoi@plt>
cmp    $0x856,%eax
je     1f5b <main+0xd3b>
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14(%rbp)
lea    0x3b7(%rip),%rdi
mov    $0x0,%al
call   1130 <atoi@plt>
cmp    $0x0,%eax
je     1f7b <main+0xd5b>
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14(%rbp)
lea    0x392(%rip),%rdi
mov    $0x0,%al
call   1130 <atoi@plt>
cmp    $0xffff8ad0,%eax
je     1f9d <main+0xd7d>
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14(%rbp)
cmpl   $0x0,-0x14(%rbp)
je     1fba <main+0xd9a>
lea    0x36d(%rip),%rdi
mov    $0x0,%al
call   1070 <puts@plt>
jmp    1fc8 <main+0xda8>
lea    0x364(%rip),%rdi
mov    $0x0,%al
call   1070 <puts@plt>
xor    %eax,%eax
add    $0x1c0,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
push   %rbp
push   %r14
push   %rbx
sub    $0x1a0,%rsp
lea    0xe2e(%rip),%rdi
xor    %eax,%eax
call   1060 <puts@plt>
lea    0xe28(%rip),%rdi
mov    $0x6b,%esi
mov    $0x69,%edx
xor    %eax,%eax
call   1090 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
lea    0xe12(%rip),%rdi
xor    %eax,%eax
call   1080 <puts_nonl@plt>
mov    $0x6f,%edi
xor    %eax,%eax
call   1030 <putchar@plt>
mov    $0x6b,%edi
xor    %eax,%eax
call   1030 <putchar@plt>
mov    $0x20,%edi
xor    %eax,%eax
call   1030 <putchar@plt>
mov    $0x70,%edi
xor    %eax,%eax
call   1030 <putchar@plt>
mov    $0x75,%edi
xor    %eax,%eax
call   1030 <putchar@plt>
mov    $0x74,%edi
xor    %eax,%eax
call   1030 <putchar@plt>
mov    $0x63,%edi
xor    %eax,%eax
call   1030 <putchar@plt>
mov    $0x68,%edi
xor    %eax,%eax
call   1030 <putchar@plt>
mov    $0x61,%edi
xor    %eax,%eax
call   1030 <putchar@plt>
mov    $0x72,%edi
xor    %eax,%eax
call   1030 <putchar@plt>
mov    $0xa,%edi
xor    %eax,%eax
call   1030 <putchar@plt>
xor    %edi,%edi
xor    %eax,%eax
call   1070 <set_echo@plt>
xor    %eax,%eax
call   10b0 <getchar@plt>
cmp    $0x78,%eax
jne    12e7 <main+0xf7>
xor    %eax,%eax
call   10b0 <getchar@plt>
cmp    $0xa,%eax
jne    1301 <main+0x111>
lea    0xd92(%rip),%rdi
jmp    1316 <main+0x126>
lea    0xd64(%rip),%rdi
xor    %eax,%eax
call   1060 <puts@plt>
xor    %eax,%eax
call   10b0 <getchar@plt>
cmp    $0xa,%eax
je     130f <main+0x11f>
lea    0xd53(%rip),%rdi
xor    %eax,%eax
call   1060 <puts@plt>
lea    0xd54(%rip),%rdi
xor    %eax,%eax
call   1060 <puts@plt>
lea    0xd5e(%rip),%rdi
xor    %eax,%eax
call   1060 <puts@plt>
lea    0xd5a(%rip),%rdi
xor    %eax,%eax
call   1060 <puts@plt>
mov    %rsp,%rbx
mov    %rbx,%rdi
xor    %eax,%eax
call   10c0 <gets@plt>
lea    0xd49(%rip),%rsi
mov    $0x35,%edx
mov    %rbx,%rdi
call   10e0 <bcmp@plt>
test   %eax,%eax
je     1375 <main+0x185>
lea    0xd66(%rip),%rdi
xor    %eax,%eax
call   1060 <puts@plt>
lea    0xd6b(%rip),%rdi
jmp    137c <main+0x18c>
lea    0xd6c(%rip),%rdi
xor    %eax,%eax
call   1060 <puts@plt>
mov    $0x20,%edi
call   10a0 <isspace@plt>
test   %eax,%eax
je     13a8 <main+0x1b8>
mov    $0x61,%edi
call   10a0 <isspace@plt>
test   %eax,%eax
jne    13c4 <main+0x1d4>
lea    0xd75(%rip),%rdi
jmp    13d9 <main+0x1e9>
lea    0xd41(%rip),%rdi
xor    %eax,%eax
call   1060 <puts@plt>
mov    $0x61,%edi
call   10a0 <isspace@plt>
test   %eax,%eax
je     13d2 <main+0x1e2>
lea    0xd32(%rip),%rdi
xor    %eax,%eax
call   1060 <puts@plt>
lea    0xd35(%rip),%rdi
xor    %r14d,%r14d
xor    %eax,%eax
call   1060 <puts@plt>
lea    0xd3c(%rip),%rdi
xor    %eax,%eax
call   1060 <puts@plt>
lea    0xd39(%rip),%rdi
xor    %eax,%eax
call   1060 <puts@plt>
movw   $0x6261,(%rsp)
movb   $0x0,0x2(%rsp)
lea    0x3(%rsp),%rdi
mov    %rsp,%rbp
mov    %rbp,%rsi
call   1040 <strcpy@plt>
mov    0x3(%rsp),%al
mov    0x4(%rsp),%cl
xor    $0x61,%al
xor    $0x62,%cl
or     %al,%cl
lea    0xd1a(%rip),%rax
lea    0xd07(%rip),%rdi
or     0x5(%rsp),%cl
cmove  %rax,%rdi
xor    %eax,%eax
call   1060 <puts@plt>
movabs $0x7979636261787878,%rax
63 79 79
mov    %rax,(%rsp)
movw   $0x79,0x8(%rsp)
mov    0x5(%rsp),%al
movzwl 0x3(%rsp),%ecx
mov    %cx,0x5(%rsp)
mov    %al,0x7(%rsp)
mov    0x6(%rsp),%dl
mov    %cx,0x4(%rsp)
mov    %ecx,%esi
xor    $0x61,%sil
xor    $0x62,%dl
mov    %al,0x6(%rsp)
xor    $0x63,%al
mov    0x4(%rsp),%bl
mov    0x5(%rsp),%cl
xor    $0x61,%bl
xor    $0x62,%cl
or     %bl,%cl
or     %al,%dl
or     %sil,%al
or     %dl,%al
lea    0xcc8(%rip),%rdx
lea    0xcb4(%rip),%rdi
or     %cl,%al
cmove  %rdx,%rdi
xor    %eax,%eax
call   1060 <puts@plt>
movl   $0x726162,(%rsp)
movl   $0x6f6f66,0xd0(%rsp)
lea    0xd0(%rsp),%rdi
mov    %rbp,%rsi
call   1110 <strcat@plt>
mov    $0x626f6f66,%eax
xor    0xd0(%rsp),%eax
mov    $0x726162,%ecx
xor    0xd3(%rsp),%ecx
or     %eax,%ecx
je     1509 <main+0x319>
lea    0xc81(%rip),%rdi
xor    %eax,%eax
call   1060 <puts@plt>
mov    $0x1,%r14d
movb   $0x0,(%rsp)
movl   $0x6f6f66,0xd0(%rsp)
lea    0xd0(%rsp),%rdi
mov    %rsp,%rsi
call   1110 <strcat@plt>
cmpl   $0x6f6f66,0xd0(%rsp)
je     1549 <main+0x359>
lea    0xc51(%rip),%rdi
xor    %eax,%eax
call   1060 <puts@plt>
mov    $0x1,%r14d
movb   $0x0,0xd0(%rsp)
movl   $0x326f6f66,(%rsp)
movb   $0x0,0x4(%rsp)
lea    0xd0(%rsp),%rdi
mov    %rsp,%rsi
call   1110 <strcat@plt>
mov    $0x326f6f66,%eax
xor    0xd0(%rsp),%eax
movzbl 0xd4(%rsp),%ecx
or     %eax,%ecx
je     159c <main+0x3ac>
lea    0xc13(%rip),%rdi
xor    %eax,%eax
call   1060 <puts@plt>
lea    0xc13(%rip),%rdi
jmp    15b1 <main+0x3c1>
test   %r14d,%r14d
lea    0xc13(%rip),%rax
lea    0xc00(%rip),%rdi
cmove  %rax,%rdi
xor    %eax,%eax
call   1060 <puts@plt>
mov    $0x61,%edi
call   1050 <toupper@plt>
mov    %eax,%ebx
xor    $0x41,%ebx
mov    $0x7a,%edi
call   1050 <toupper@plt>
xor    $0x5a,%eax
lea    0xbf5(%rip),%rcx
lea    0xbe1(%rip),%rdi
or     %ebx,%eax
cmove  %rcx,%rdi
xor    %eax,%eax
call   1060 <puts@plt>
mov    $0x41,%edi
call   10d0 <tolower@plt>
mov    %eax,%ebx
xor    $0x61,%ebx
mov    $0x5a,%edi
call   10d0 <tolower@plt>
xor    $0x7a,%eax
lea    0xbd6(%rip),%rcx
lea    0xbc2(%rip),%rdi
or     %ebx,%eax
cmove  %rcx,%rdi
xor    %eax,%eax
call   1060 <puts@plt>
mov    $0x7,%edi
call   10f0 <isprint@plt>
mov    %eax,%ebx
mov    $0x47,%edi
call   10f0 <isprint@plt>
test   %ebx,%ebx
lea    0xbbb(%rip),%rdi
lea    0xba7(%rip),%rcx
cmovne %rcx,%rdi
test   %eax,%eax
cmove  %rcx,%rdi
xor    %eax,%eax
call   1060 <puts@plt>
movw   $0x100,(%rsp)
movb   $0x2,0x2(%rsp)
movw   $0x100,0xd0(%rsp)
movb   $0x2,0xd2(%rsp)
02
mov    0xd1(%rsp),%al
xor    %ebx,%ebx
xor    $0x1,%al
setne  %bl
lea    0xb88(%rip),%rax
lea    0xb75(%rip),%rdi
cmove  %rax,%rdi
xor    %eax,%eax
call   1060 <puts@plt>
movaps 0x958(%rip),%xmm0
movaps %xmm0,(%rsp)
movaps %xmm0,0x10(%rsp)
movaps %xmm0,0x20(%rsp)
movw   $0x3434,0x30(%rsp)
movd   %ebx,%xmm4
movd   0x1(%rsp),%xmm3
movdqa 0x941(%rip),%xmm0
pcmpeqb %xmm0,%xmm3
pcmpeqd %xmm1,%xmm1
pxor   %xmm1,%xmm3
punpcklbw %xmm3,%xmm3
punpcklwd %xmm3,%xmm3
movdqa 0x935(%rip),%xmm2
pand   %xmm2,%xmm3
paddd  %xmm4,%xmm3
movd   0x5(%rsp),%xmm5
pcmpeqb %xmm0,%xmm5
pxor   %xmm1,%xmm5
punpcklbw %xmm5,%xmm5
punpcklwd %xmm5,%xmm5
pand   %xmm2,%xmm5
movd   0x9(%rsp),%xmm4
pcmpeqb %xmm0,%xmm4
pxor   %xmm1,%xmm4
punpcklbw %xmm4,%xmm4
punpcklwd %xmm4,%xmm4
pand   %xmm2,%xmm4
paddd  %xmm5,%xmm4
paddd  %xmm3,%xmm4
movd   0xd(%rsp),%xmm3
pcmpeqb %xmm0,%xmm3
pxor   %xmm1,%xmm3
punpcklbw %xmm3,%xmm3
punpcklwd %xmm3,%xmm3
pand   %xmm2,%xmm3
movd   0x11(%rsp),%xmm5
pcmpeqb %xmm0,%xmm5
pxor   %xmm1,%xmm5
punpcklbw %xmm5,%xmm5
punpcklwd %xmm5,%xmm5
pand   %xmm2,%xmm5
paddd  %xmm3,%xmm5
movd   0x15(%rsp),%xmm3
pcmpeqb %xmm0,%xmm3
pxor   %xmm1,%xmm3
punpcklbw %xmm3,%xmm3
punpcklwd %xmm3,%xmm3
pand   %xmm2,%xmm3
paddd  %xmm5,%xmm3
paddd  %xmm4,%xmm3
movd   0x19(%rsp),%xmm4
pcmpeqb %xmm0,%xmm4
pxor   %xmm1,%xmm4
punpcklbw %xmm4,%xmm4
punpcklwd %xmm4,%xmm4
pand   %xmm2,%xmm4
movd   0x1d(%rsp),%xmm5
pcmpeqb %xmm0,%xmm5
pxor   %xmm1,%xmm5
punpcklbw %xmm5,%xmm5
punpcklwd %xmm5,%xmm5
pand   %xmm2,%xmm5
paddd  %xmm4,%xmm5
movd   0x21(%rsp),%xmm6
pcmpeqb %xmm0,%xmm6
pxor   %xmm1,%xmm6
punpcklbw %xmm6,%xmm6
punpcklwd %xmm6,%xmm6
pand   %xmm2,%xmm6
paddd  %xmm5,%xmm6
movd   0x25(%rsp),%xmm4
pcmpeqb %xmm0,%xmm4
pxor   %xmm1,%xmm4
punpcklbw %xmm4,%xmm4
punpcklwd %xmm4,%xmm4
pand   %xmm2,%xmm4
paddd  %xmm6,%xmm4
paddd  %xmm3,%xmm4
movd   0x29(%rsp),%xmm3
pcmpeqb %xmm0,%xmm3
pxor   %xmm1,%xmm3
punpcklbw %xmm3,%xmm3
punpcklwd %xmm3,%xmm3
pand   %xmm2,%xmm3
movd   0x2d(%rsp),%xmm5
pcmpeqb %xmm0,%xmm5
pxor   %xmm1,%xmm5
punpcklbw %xmm5,%xmm5
punpcklwd %xmm5,%xmm5
pand   %xmm2,%xmm5
paddd  %xmm3,%xmm5
paddd  %xmm4,%xmm5
pshufd $0xee,%xmm5,%xmm0
paddd  %xmm5,%xmm0
pshufd $0x55,%xmm0,%xmm1
paddd  %xmm0,%xmm1
xor    %eax,%eax
cmpb   $0x34,0x31(%rsp)
movd   %xmm1,%ecx
setne  %al
neg    %eax
cmp    %eax,%ecx
lea    0x9c5(%rip),%rax
lea    0x9b2(%rip),%rdi
cmove  %rax,%rdi
xor    %eax,%eax
call   1060 <puts@plt>
lea    0x9b6(%rip),%rdi
xor    %eax,%eax
call   1100 <atoi@plt>
xor    %ebx,%ebx
cmp    $0x856,%eax
setne  %bl
lea    0x9a8(%rip),%rdi
xor    %eax,%eax
call   1100 <atoi@plt>
lea    0x1(%rbx),%ebp
test   %eax,%eax
cmove  %ebx,%ebp
lea    0x98d(%rip),%rdi
xor    %eax,%eax
call   1100 <atoi@plt>
xor    %ecx,%ecx
cmp    $0xffff8ad0,%eax
setne  %cl
neg    %ecx
cmp    %ecx,%ebp
lea    0x982(%rip),%rax
lea    0x971(%rip),%rdi
cmove  %rax,%rdi
xor    %eax,%eax
call   1060 <puts@plt>
xor    %eax,%eax
add    $0x1a0,%rsp
pop    %rbx
pop    %r14
pop    %rbp
ret

LLVM IR (-O0):
@.str = [8 x i8] c"ok puts\00"
@.str.1 = [12 x i8] c"o%c pr%cntf\00"
@.str.2 = [2 x i8] c"\0A\00"
@.str.3 = [14 x i8] c"ok puts_nonl\0A\00"
@.str.4 = [9 x i8] c"[lost x]\00"
@.str.5 = [15 x i8] c"[lost newline]\00"
@.str.6 = [13 x i8] c"fail getchar\00"
@.str.7 = [11 x i8] c"ok getchar\00"
@.str.8 = [12 x i8] c"fail strlen\00"
@.str.9 = [10 x i8] c"ok strlen\00"
@.str.10 = [12 x i8] c"fail strcmp\00"
@.str.11 = [10 x i8] c"ok strcmp\00"
@.str.12 = [53 x i8] c"This is a test of the emergency broadcasting system.\00"
@.str.13 = [19 x i8] c"[comparison fails]\00"
@.str.14 = [10 x i8] c"fail gets\00"
@.str.15 = [8 x i8] c"ok gets\00"
@.str.16 = [13 x i8] c"[whitespace]\00"
@.str.17 = [17 x i8] c"[non-whitespace]\00"
@.str.18 = [13 x i8] c"fail isspace\00"
@.str.19 = [11 x i8] c"ok isspace\00"
@.str.20 = [4 x i8] c"[0]\00"
@.str.21 = [4 x i8] c"[1]\00"
@.str.22 = [4 x i8] c"[2]\00"
@.str.23 = [4 x i8] c"[3]\00"
@.str.24 = [4 x i8] c"[4]\00"
@.str.25 = [4 x i8] c"[5]\00"
@.str.26 = [4 x i8] c"[6]\00"
@.str.27 = [4 x i8] c"[7]\00"
@.str.28 = [4 x i8] c"[8]\00"
@.str.29 = [4 x i8] c"[9]\00"
@.str.30 = [8 x i8] c"[space]\00"
@.str.31 = [8 x i8] c"[alpha]\00"
@.str.32 = [13 x i8] c"fail isdigit\00"
@.str.33 = [11 x i8] c"ok isdigit\00"
@.str.34 = [7 x i8] c"0x1234\00"
@.str.35 = [16 x i8] c"[0x1234 base=0]\00"
@.str.36 = [5 x i8] c"1234\00"
@.str.37 = [15 x i8] c"[1234 base=16]\00"
@.str.38 = [6 x i8] c"01234\00"
@.str.39 = [15 x i8] c"[01234 base=0]\00"
@.str.40 = [14 x i8] c"[1234 base=8]\00"
@.str.41 = [14 x i8] c"[1234 base=0]\00"
@.str.42 = [15 x i8] c"[1234 base=10]\00"
@.str.43 = [6 x i8] c"-1234\00"
@.str.44 = [15 x i8] c"[-1234 base=0]\00"
@.str.45 = [16 x i8] c"[-1234 base=10]\00"
@.str.46 = [12 x i8] c"fail strtol\00"
@.str.47 = [10 x i8] c"ok strtol\00"
@.str.48 = [3 x i8] c"ab\00"
@.str.49 = [12 x i8] c"fail strcpy\00"
@.str.50 = [10 x i8] c"ok strcpy\00"
@.str.51 = [10 x i8] c"xxxabcyyy\00"
@.str.52 = [13 x i8] c"fail memmove\00"
@.str.53 = [11 x i8] c"ok memmove\00"
@.str.54 = [16 x i8] c"[strcat retval]\00"
@.str.55 = [7 x i8] c"foobar\00"
@.str.56 = [16 x i8] c"[strcat foobar]\00"
@.str.57 = [4 x i8] c"foo\00"
@.str.58 = [13 x i8] c"[strcat foo]\00"
@.str.59 = [5 x i8] c"foo2\00"
@.str.60 = [14 x i8] c"[strcat foo2]\00"
@.str.61 = [12 x i8] c"fail strcat\00"
@.str.62 = [10 x i8] c"ok strcat\00"
@.str.63 = [13 x i8] c"fail toupper\00"
@.str.64 = [11 x i8] c"ok toupper\00"
@.str.65 = [13 x i8] c"fail tolower\00"
@.str.66 = [11 x i8] c"ok tolower\00"
@.str.67 = [13 x i8] c"fail isprint\00"
@.str.68 = [11 x i8] c"ok isprint\00"
@.str.69 = [12 x i8] c"fail memcpy\00"
@.str.70 = [10 x i8] c"ok memcpy\00"
@.str.71 = [12 x i8] c"fail memset\00"
@.str.72 = [10 x i8] c"ok memset\00"
@.str.73 = [5 x i8] c"2134\00"
@.str.74 = [2 x i8] c"0\00"
@.str.75 = [7 x i8] c"-30000\00"
@.str.76 = [10 x i8] c"fail atoi\00"
@.str.77 = [8 x i8] c"ok atoi\00"
define i32 @main(i32 %0, i8** %1) {
%3 = alloca i32
%4 = alloca i32
%5 = alloca i8**
%6 = alloca i32
%7 = alloca i32
%8 = alloca [200 x i8]
%9 = alloca [200 x i8]
%10 = alloca i8
store i32 0, i32* %3
store i32 %0, i32* %4
store i8** %1, i8*** %5
%11 = call i32 (i8*, ...) bitcast (i32 (...)* @puts to i32 (i8*, ...)*)(i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str, i64 0, i64 0))
%12 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0), i32 107, i32 105)
%13 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.2, i64 0, i64 0))
%14 = call i32 (i8*, ...) bitcast (i32 (...)* @puts_nonl to i32 (i8*, ...)*)(i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.3, i64 0, i64 0))
%15 = call i32 (i32, ...) bitcast (i32 (...)* @putchar to i32 (i32, ...)*)(i32 111)
%16 = call i32 (i32, ...) bitcast (i32 (...)* @putchar to i32 (i32, ...)*)(i32 107)
%17 = call i32 (i32, ...) bitcast (i32 (...)* @putchar to i32 (i32, ...)*)(i32 32)
%18 = call i32 (i32, ...) bitcast (i32 (...)* @putchar to i32 (i32, ...)*)(i32 112)
%19 = call i32 (i32, ...) bitcast (i32 (...)* @putchar to i32 (i32, ...)*)(i32 117)
%20 = call i32 (i32, ...) bitcast (i32 (...)* @putchar to i32 (i32, ...)*)(i32 116)
%21 = call i32 (i32, ...) bitcast (i32 (...)* @putchar to i32 (i32, ...)*)(i32 99)
%22 = call i32 (i32, ...) bitcast (i32 (...)* @putchar to i32 (i32, ...)*)(i32 104)
%23 = call i32 (i32, ...) bitcast (i32 (...)* @putchar to i32 (i32, ...)*)(i32 97)
%24 = call i32 (i32, ...) bitcast (i32 (...)* @putchar to i32 (i32, ...)*)(i32 114)
%25 = call i32 (i32, ...) bitcast (i32 (...)* @putchar to i32 (i32, ...)*)(i32 10)
store i32 0, i32* %6
%26 = call i32 (i32, ...) bitcast (i32 (...)* @set_echo to i32 (i32, ...)*)(i32 0)
%27 = call i32 (...) @getchar()
%28 = icmp ne i32 %27, 120
br i1 %28, label %29, label %33
29: ; preds = %2
%30 = call i32 (i8*, ...) bitcast (i32 (...)* @puts to i32 (i8*, ...)*)(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.4, i64 0, i64 0))
%31 = load i32, i32* %6
%32 = add nsw i32 %31, 1
store i32 %32, i32* %6
br label %33
33: ; preds = %29, %2
%34 = call i32 (...) @getchar()
%35 = icmp ne i32 %34, 10
br i1 %35, label %36, label %40
36: ; preds = %33
%37 = call i32 (i8*, ...) bitcast (i32 (...)* @puts to i32 (i8*, ...)*)(i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.5, i64 0, i64 0))
%38 = load i32, i32* %6
%39 = add nsw i32 %38, 1
store i32 %39, i32* %6
br label %40
40: ; preds = %36, %33
%41 = load i32, i32* %6
%42 = icmp ne i32 %41, 0
br i1 %42, label %43, label %45
43: ; preds = %40
%44 = call i32 (i8*, ...) bitcast (i32 (...)* @puts to i32 (i8*, ...)*)(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.6, i64 0, i64 0))
br label %47
45: ; preds = %40
%46 = call i32 (i8*, ...) bitcast (i32 (...)* @puts to i32 (i8*, ...)*)(i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.7, i64 0, i64 0))
br label %47
47: ; preds = %45, %43
store i32 0, i32* %6
%48 = load i32, i32* %6
%49 = icmp ne i32 %48, 0
br i1 %49, label %50, label %52
50: ; preds = %47
%51 = call i32 (i8*, ...) bitcast (i32 (...)* @puts to i32 (i8*, ...)*)(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.8, i64 0, i64 0))
br label %54
52: ; preds = %47
%53 = call i32 (i8*, ...) bitcast (i32 (...)* @puts to i32 (i8*, ...)*)(i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.9, i64 0, i64 0))
br label %54
54: ; preds = %52, %50
store i32 0, i32* %6
%55 = load i32, i32* %6
%56 = icmp ne i32 %55, 0
br i1 %56, label %57, label %59
57: ; preds = %54
%58 = call i32 (i8*, ...) bitcast (i32 (...)* @puts to i32 (i8*, ...)*)(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.10, i64 0, i64 0))
br label %61
59: ; preds = %54
%60 = call i32 (i8*, ...) bitcast (i32 (...)* @puts to i32 (i8*, ...)*)(i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.11, i64 0, i64 0))
br label %61
61: ; preds = %59, %57
store i32 0, i32* %6
%62 = getelementptr inbounds [200 x i8], [200 x i8]* %8, i64 0, i64 0
%63 = call i32 (i8*, ...) bitcast (i32 (...)* @gets to i32 (i8*, ...)*)(i8* %62)
%64 = getelementptr inbounds [200 x i8], [200 x i8]* %8, i64 0, i64 0
%65 = call i32 @strcmp(i8* %64, i8* getelementptr inbounds ([53 x i8], [53 x i8]* @.str.12, i64 0, i64 0))
%66 = icmp ne i32 %65, 0
br i1 %66, label %67, label %71
67: ; preds = %61
%68 = call i32 (i8*, ...) bitcast (i32 (...)* @puts to i32 (i8*, ...)*)(i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.13, i64 0, i64 0))
%69 = load i32, i32* %6
%70 = add nsw i32 %69, 1
store i32 %70, i32* %6
br label %71
71: ; preds = %67, %61
%72 = load i32, i32* %6
%73 = icmp ne i32 %72, 0
br i1 %73, label %74, label %76
74: ; preds = %71
%75 = call i32 (i8*, ...) bitcast (i32 (...)* @puts to i32 (i8*, ...)*)(i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.14, i64 0, i64 0))
br label %78
76: ; preds = %71
%77 = call i32 (i8*, ...) bitcast (i32 (...)* @puts to i32 (i8*, ...)*)(i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.15, i64 0, i64 0))
br label %78
78: ; preds = %76, %74
store i32 0, i32* %6
%79 = call i32 @isspace(i32 32)
%80 = icmp ne i32 %79, 0
br i1 %80, label %85, label %81
81: ; preds = %78
%82 = call i32 (i8*, ...) bitcast (i32 (...)* @puts to i32 (i8*, ...)*)(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.16, i64 0, i64 0))
%83 = load i32, i32* %6
%84 = add nsw i32 %83, 1
store i32 %84, i32* %6
br label %85
85: ; preds = %81, %78
%86 = call i32 @isspace(i32 97)
%87 = icmp ne i32 %86, 0
br i1 %87, label %88, label %92
88: ; preds = %85
%89 = call i32 (i8*, ...) bitcast (i32 (...)* @puts to i32 (i8*, ...)*)(i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.17, i64 0, i64 0))
%90 = load i32, i32* %6
%91 = add nsw i32 %90, 1
store i32 %91, i32* %6
br label %92
92: ; preds = %88, %85
%93 = load i32, i32* %6
%94 = icmp ne i32 %93, 0
br i1 %94, label %95, label %97
95: ; preds = %92
%96 = call i32 (i8*, ...) bitcast (i32 (...)* @puts to i32 (i8*, ...)*)(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.18, i64 0, i64 0))
br label %99
97: ; preds = %92
%98 = call i32 (i8*, ...) bitcast (i32 (...)* @puts to i32 (i8*, ...)*)(i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.19, i64 0, i64 0))
br label %99
99: ; preds = %97, %95
store i32 0, i32* %6
%100 = call i32 @isdigit(i32 48)
%101 = icmp ne i32 %100, 0
br i1 %101, label %106, label %102
102: ; preds = %99
%103 = call i32 (i8*, ...) bitcast (i32 (...)* @puts to i32 (i8*, ...)*)(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.20, i64 0, i64 0))
%104 = load i32, i32* %6
%105 = add nsw i32 %104, 1
store i32 %105, i32* %6
br label %106
106: ; preds = %102, %99
%107 = call i32 @isdigit(i32 49)
%108 = icmp ne i32 %107, 0
br i1 %108, label %113, label %109
109: ; preds = %106
%110 = call i32 (i8*, ...) bitcast (i32 (...)* @puts to i32 (i8*, ...)*)(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.21, i64 0, i64 0))
%111 = load i32, i32* %6
%112 = add nsw i32 %111, 1
store i32 %112, i32* %6
br label %113
113: ; preds = %109, %106
%114 = call i32 @isdigit(i32 50)
%115 = icmp ne i32 %114, 0
br i1 %115, label %120, label %116
116: ; preds = %113
%117 = call i32 (i8*, ...) bitcast (i32 (...)* @puts to i32 (i8*, ...)*)(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.22, i64 0, i64 0))
%118 = load i32, i32* %6
%119 = add nsw i32 %118, 1
store i32 %119, i32* %6
br label %120
120: ; preds = %116, %113
%121 = call i32 @isdigit(i32 51)
%122 = icmp ne i32 %121, 0
br i1 %122, label %127, label %123
123: ; preds = %120
%124 = call i32 (i8*, ...) bitcast (i32 (...)* @puts to i32 (i8*, ...)*)(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.23, i64 0, i64 0))
%125 = load i32, i32* %6
%126 = add nsw i32 %125, 1
store i32 %126, i32* %6
br label %127
127: ; preds = %123, %120
%128 = call i32 @isdigit(i32 52)
%129 = icmp ne i32 %128, 0
br i1 %129, label %134, label %130
130: ; preds = %127
%131 = call i32 (i8*, ...) bitcast (i32 (...)* @puts to i32 (i8*, ...)*)(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.24, i64 0, i64 0))
%132 = load i32, i32* %6
%133 = add nsw i32 %132, 1
store i32 %133, i32* %6
br label %134
134: ; preds = %130, %127
%135 = call i32 @isdigit(i32 53)
%136 = icmp ne i32 %135, 0
br i1 %136, label %141, label %137
137: ; preds = %134
%138 = call i32 (i8*, ...) bitcast (i32 (...)* @puts to i32 (i8*, ...)*)(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.25, i64 0, i64 0))
%139 = load i32, i32* %6
%140 = add nsw i32 %139, 1
store i32 %140, i32* %6
br label %141
141: ; preds = %137, %134
%142 = call i32 @isdigit(i32 54)
%143 = icmp ne i32 %142, 0
br i1 %143, label %148, label %144
144: ; preds = %141
%145 = call i32 (i8*, ...) bitcast (i32 (...)* @puts to i32 (i8*, ...)*)(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.26, i64 0, i64 0))
%146 = load i32, i32* %6
%147 = add nsw i32 %146, 1
store i32 %147, i32* %6
br label %148
148: ; preds = %144, %141
%149 = call i32 @isdigit(i32 55)
%150 = icmp ne i32 %149, 0
br i1 %150, label %155, label %151
151: ; preds = %148
%152 = call i32 (i8*, ...) bitcast (i32 (...)* @puts to i32 (i8*, ...)*)(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.27, i64 0, i64 0))
%153 = load i32, i32* %6
%154 = add nsw i32 %153, 1
store i32 %154, i32* %6
br label %155
155: ; preds = %151, %148
%156 = call i32 @isdigit(i32 56)
%157 = icmp ne i32 %156, 0
br i1 %157, label %162, label %158
158: ; preds = %155
%159 = call i32 (i8*, ...) bitcast (i32 (...)* @puts to i32 (i8*, ...)*)(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.28, i64 0, i64 0))
%160 = load i32, i32* %6
%161 = add nsw i32 %160, 1
store i32 %161, i32* %6
br label %162
162: ; preds = %158, %155
%163 = call i32 @isdigit(i32 57)
%164 = icmp ne i32 %163, 0
br i1 %164, label %169, label %165
165: ; preds = %162
%166 = call i32 (i8*, ...) bitcast (i32 (...)* @puts to i32 (i8*, ...)*)(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.29, i64 0, i64 0))
%167 = load i32, i32* %6
%168 = add nsw i32 %167, 1
store i32 %168, i32* %6
br label %169
169: ; preds = %165, %162
%170 = call i32 @isdigit(i32 32)
%171 = icmp ne i32 %170, 0
br i1 %171, label %172, label %176
172: ; preds = %169
%173 = call i32 (i8*, ...) bitcast (i32 (...)* @puts to i32 (i8*, ...)*)(i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.30, i64 0, i64 0))
%174 = load i32, i32* %6
%175 = add nsw i32 %174, 1
store i32 %175, i32* %6
br label %176
176: ; preds = %172, %169
%177 = call i32 @isdigit(i32 97)
%178 = icmp ne i32 %177, 0
br i1 %178, label %179, label %183
179: ; preds = %176
%180 = call i32 (i8*, ...) bitcast (i32 (...)* @puts to i32 (i8*, ...)*)(i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.31, i64 0, i64 0))
%181 = load i32, i32* %6
%182 = add nsw i32 %181, 1
store i32 %182, i32* %6
br label %183
183: ; preds = %179, %176
%184 = load i32, i32* %6
%185 = icmp ne i32 %184, 0
br i1 %185, label %186, label %188
186: ; preds = %183
%187 = call i32 (i8*, ...) bitcast (i32 (...)* @puts to i32 (i8*, ...)*)(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.32, i64 0, i64 0))
br label %190
188: ; preds = %183
%189 = call i32 (i8*, ...) bitcast (i32 (...)* @puts to i32 (i8*, ...)*)(i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.33, i64 0, i64 0))
br label %190
190: ; preds = %188, %186
store i32 0, i32* %6
%191 = call i64 @strtol(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.34, i64 0, i64 0), i8** null, i32 0)
%192 = icmp ne i64 %191, 4660
br i1 %192, label %193, label %197
193: ; preds = %190
%194 = call i32 (i8*, ...) bitcast (i32 (...)* @puts to i32 (i8*, ...)*)(i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.35, i64 0, i64 0))
%195 = load i32, i32* %6
%196 = add nsw i32 %195, 1
store i32 %196, i32* %6
br label %197
197: ; preds = %193, %190
%198 = call i64 @strtol(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.36, i64 0, i64 0), i8** null, i32 16)
%199 = icmp ne i64 %198, 4660
br i1 %199, label %200, label %204
200: ; preds = %197
%201 = call i32 (i8*, ...) bitcast (i32 (...)* @puts to i32 (i8*, ...)*)(i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.37, i64 0, i64 0))
%202 = load i32, i32* %6
%203 = add nsw i32 %202, 1
store i32 %203, i32* %6
br label %204
204: ; preds = %200, %197
%205 = call i64 @strtol(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.38, i64 0, i64 0), i8** null, i32 0)
%206 = icmp ne i64 %205, 668
br i1 %206, label %207, label %211
207: ; preds = %204
%208 = call i32 (i8*, ...) bitcast (i32 (...)* @puts to i32 (i8*, ...)*)(i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.39, i64 0, i64 0))
%209 = load i32, i32* %6
%210 = add nsw i32 %209, 1
store i32 %210, i32* %6
br label %211
211: ; preds = %207, %204
%212 = call i64 @strtol(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.36, i64 0, i64 0), i8** null, i32 8)
%213 = icmp ne i64 %212, 668
br i1 %213, label %214, label %218
214: ; preds = %211
%215 = call i32 (i8*, ...) bitcast (i32 (...)* @puts to i32 (i8*, ...)*)(i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.40, i64 0, i64 0))
%216 = load i32, i32* %6
%217 = add nsw i32 %216, 1
store i32 %217, i32* %6
br label %218
218: ; preds = %214, %211
%219 = call i64 @strtol(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.36, i64 0, i64 0), i8** null, i32 0)
%220 = icmp ne i64 %219, 1234
br i1 %220, label %221, label %225
221: ; preds = %218
%222 = call i32 (i8*, ...) bitcast (i32 (...)* @puts to i32 (i8*, ...)*)(i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.41, i64 0, i64 0))
%223 = load i32, i32* %6
%224 = add nsw i32 %223, 1
store i32 %224, i32* %6
br label %225
225: ; preds = %221, %218
%226 = call i64 @strtol(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.36, i64 0, i64 0), i8** null, i32 10)
%227 = icmp ne i64 %226, 1234
br i1 %227, label %228, label %232
228: ; preds = %225
%229 = call i32 (i8*, ...) bitcast (i32 (...)* @puts to i32 (i8*, ...)*)(i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.42, i64 0, i64 0))
%230 = load i32, i32* %6
%231 = add nsw i32 %230, 1
store i32 %231, i32* %6
br label %232
232: ; preds = %228, %225
%233 = call i64 @strtol(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.43, i64 0, i64 0), i8** null, i32 0)
%234 = icmp ne i64 %233, -1234
br i1 %234, label %235, label %239
235: ; preds = %232
%236 = call i32 (i8*, ...) bitcast (i32 (...)* @puts to i32 (i8*, ...)*)(i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.44, i64 0, i64 0))
%237 = load i32, i32* %6
%238 = add nsw i32 %237, 1
store i32 %238, i32* %6
br label %239
239: ; preds = %235, %232
%240 = call i64 @strtol(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.43, i64 0, i64 0), i8** null, i32 10)
%241 = icmp ne i64 %240, -1234
br i1 %241, label %242, label %246
242: ; preds = %239
%243 = call i32 (i8*, ...) bitcast (i32 (...)* @puts to i32 (i8*, ...)*)(i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.45, i64 0, i64 0))
%244 = load i32, i32* %6
%245 = add nsw i32 %244, 1
store i32 %245, i32* %6
br label %246
246: ; preds = %242, %239
%247 = load i32, i32* %6
%248 = icmp ne i32 %247, 0
br i1 %248, label %249, label %251
249: ; preds = %246
%250 = call i32 (i8*, ...) bitcast (i32 (...)* @puts to i32 (i8*, ...)*)(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.46, i64 0, i64 0))
br label %253
251: ; preds = %246
%252 = call i32 (i8*, ...) bitcast (i32 (...)* @puts to i32 (i8*, ...)*)(i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.47, i64 0, i64 0))
br label %253
253: ; preds = %251, %249
store i32 0, i32* %6
%254 = getelementptr inbounds [200 x i8], [200 x i8]* %8, i64 0, i64 0
%255 = call i8* @strcpy(i8* %254, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.48, i64 0, i64 0))
%256 = getelementptr inbounds [200 x i8], [200 x i8]* %8, i64 0, i64 0
%257 = load i8, i8* %256
%258 = sext i8 %257 to i32
%259 = icmp eq i32 %258, 97
br i1 %259, label %260, label %270
260: ; preds = %253
%261 = getelementptr inbounds [200 x i8], [200 x i8]* %8, i64 0, i64 1
%262 = load i8, i8* %261
%263 = sext i8 %262 to i32
%264 = icmp eq i32 %263, 98
br i1 %264, label %265, label %270
265: ; preds = %260
%266 = getelementptr inbounds [200 x i8], [200 x i8]* %8, i64 0, i64 2
%267 = load i8, i8* %266
%268 = sext i8 %267 to i32
%269 = icmp eq i32 %268, 0
br i1 %269, label %273, label %270
270: ; preds = %265, %260, %253
%271 = load i32, i32* %6
%272 = add nsw i32 %271, 1
store i32 %272, i32* %6
br label %273
273: ; preds = %270, %265
%274 = getelementptr inbounds [200 x i8], [200 x i8]* %8, i64 0, i64 3
%275 = getelementptr inbounds [200 x i8], [200 x i8]* %8, i64 0, i64 0
%276 = call i8* @strcpy(i8* %274, i8* %275)
%277 = getelementptr inbounds [200 x i8], [200 x i8]* %8, i64 0, i64 0
%278 = load i8, i8* %277
%279 = sext i8 %278 to i32
%280 = icmp eq i32 %279, 97
br i1 %280, label %281, label %306
281: ; preds = %273
%282 = getelementptr inbounds [200 x i8], [200 x i8]* %8, i64 0, i64 1
%283 = load i8, i8* %282
%284 = sext i8 %283 to i32
%285 = icmp eq i32 %284, 98
br i1 %285, label %286, label %306
286: ; preds = %281
%287 = getelementptr inbounds [200 x i8], [200 x i8]* %8, i64 0, i64 2
%288 = load i8, i8* %287
%289 = sext i8 %288 to i32
%290 = icmp eq i32 %289, 0
br i1 %290, label %291, label %306
291: ; preds = %286
%292 = getelementptr inbounds [200 x i8], [200 x i8]* %8, i64 0, i64 3
%293 = load i8, i8* %292
%294 = sext i8 %293 to i32
%295 = icmp eq i32 %294, 97
br i1 %295, label %296, label %306
296: ; preds = %291
%297 = getelementptr inbounds [200 x i8], [200 x i8]* %8, i64 0, i64 4
%298 = load i8, i8* %297
%299 = sext i8 %298 to i32
%300 = icmp eq i32 %299, 98
br i1 %300, label %301, label %306
301: ; preds = %296
%302 = getelementptr inbounds [200 x i8], [200 x i8]* %8, i64 0, i64 5
%303 = load i8, i8* %302
%304 = sext i8 %303 to i32
%305 = icmp eq i32 %304, 0
br i1 %305, label %309, label %306
306: ; preds = %301, %296, %291, %286, %281, %273
%307 = load i32, i32* %6
%308 = add nsw i32 %307, 1
store i32 %308, i32* %6
br label %309
309: ; preds = %306, %301
%310 = load i32, i32* %6
%311 = icmp ne i32 %310, 0
br i1 %311, label %312, label %314
312: ; preds = %309
%313 = call i32 (i8*, ...) bitcast (i32 (...)* @puts to i32 (i8*, ...)*)(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.49, i64 0, i64 0))
br label %316
314: ; preds = %309
%315 = call i32 (i8*, ...) bitcast (i32 (...)* @puts to i32 (i8*, ...)*)(i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.50, i64 0, i64 0))
br label %316
316: ; preds = %314, %312
store i32 0, i32* %6
%317 = getelementptr inbounds [200 x i8], [200 x i8]* %8, i64 0, i64 0
%318 = call i8* @strcpy(i8* %317, i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.51, i64 0, i64 0))
%319 = getelementptr inbounds [200 x i8], [200 x i8]* %8, i64 0, i64 5
%320 = getelementptr inbounds [200 x i8], [200 x i8]* %8, i64 0, i64 3
%321 = getelementptr inbounds [200 x i8], [200 x i8]* %8, i64 0, i64 5
%322 = load i8, i8* %321
%323 = sext i8 %322 to i32
%324 = icmp eq i32 %323, 97
br i1 %324, label %325, label %335
325: ; preds = %316
%326 = getelementptr inbounds [200 x i8], [200 x i8]* %8, i64 0, i64 6
%327 = load i8, i8* %326
%328 = sext i8 %327 to i32
%329 = icmp eq i32 %328, 98
br i1 %329, label %330, label %335
330: ; preds = %325
%331 = getelementptr inbounds [200 x i8], [200 x i8]* %8, i64 0, i64 7
%332 = load i8, i8* %331
%333 = sext i8 %332 to i32
%334 = icmp eq i32 %333, 99
br i1 %334, label %338, label %335
335: ; preds = %330, %325, %316
%336 = load i32, i32* %6
%337 = add nsw i32 %336, 1
store i32 %337, i32* %6
br label %338
338: ; preds = %335, %330
%339 = getelementptr inbounds [200 x i8], [200 x i8]* %8, i64 0, i64 4
%340 = getelementptr inbounds [200 x i8], [200 x i8]* %8, i64 0, i64 5
%341 = getelementptr inbounds [200 x i8], [200 x i8]* %8, i64 0, i64 4
%342 = load i8, i8* %341
%343 = sext i8 %342 to i32
%344 = icmp eq i32 %343, 97
br i1 %344, label %345, label %355
345: ; preds = %338
%346 = getelementptr inbounds [200 x i8], [200 x i8]* %8, i64 0, i64 5
%347 = load i8, i8* %346
%348 = sext i8 %347 to i32
%349 = icmp eq i32 %348, 98
br i1 %349, label %350, label %355
350: ; preds = %345
%351 = getelementptr inbounds [200 x i8], [200 x i8]* %8, i64 0, i64 6
%352 = load i8, i8* %351
%353 = sext i8 %352 to i32
%354 = icmp eq i32 %353, 99
br i1 %354, label %358, label %355
355: ; preds = %350, %345, %338
%356 = load i32, i32* %6
%357 = add nsw i32 %356, 1
store i32 %357, i32* %6
br label %358
358: ; preds = %355, %350
%359 = load i32, i32* %6
%360 = icmp ne i32 %359, 0
br i1 %360, label %361, label %363
361: ; preds = %358
%362 = call i32 (i8*, ...) bitcast (i32 (...)* @puts to i32 (i8*, ...)*)(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.52, i64 0, i64 0))
br label %365
363: ; preds = %358
%364 = call i32 (i8*, ...) bitcast (i32 (...)* @puts to i32 (i8*, ...)*)(i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.53, i64 0, i64 0))
br label %365
365: ; preds = %363, %361
store i32 0, i32* %6
%366 = getelementptr inbounds [200 x i8], [200 x i8]* %8, i64 0, i64 0
store i8 98, i8* %366
%367 = getelementptr inbounds [200 x i8], [200 x i8]* %8, i64 0, i64 1
store i8 97, i8* %367
%368 = getelementptr inbounds [200 x i8], [200 x i8]* %8, i64 0, i64 2
store i8 114, i8* %368
%369 = getelementptr inbounds [200 x i8], [200 x i8]* %8, i64 0, i64 3
store i8 0, i8* %369
%370 = getelementptr inbounds [200 x i8], [200 x i8]* %9, i64 0, i64 0
store i8 102, i8* %370
%371 = getelementptr inbounds [200 x i8], [200 x i8]* %9, i64 0, i64 1
store i8 111, i8* %371
%372 = getelementptr inbounds [200 x i8], [200 x i8]* %9, i64 0, i64 2
store i8 111, i8* %372
%373 = getelementptr inbounds [200 x i8], [200 x i8]* %9, i64 0, i64 3
store i8 0, i8* %373
%374 = getelementptr inbounds [200 x i8], [200 x i8]* %9, i64 0, i64 0
%375 = getelementptr inbounds [200 x i8], [200 x i8]* %8, i64 0, i64 0
%376 = call i8* @strcat(i8* %374, i8* %375)
%377 = getelementptr inbounds [200 x i8], [200 x i8]* %9, i64 0, i64 0
%378 = icmp ne i8* %376, %377
br i1 %378, label %379, label %383
379: ; preds = %365
%380 = call i32 (i8*, ...) bitcast (i32 (...)* @puts to i32 (i8*, ...)*)(i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.54, i64 0, i64 0))
%381 = load i32, i32* %6
%382 = add nsw i32 %381, 1
store i32 %382, i32* %6
br label %383
383: ; preds = %379, %365
%384 = getelementptr inbounds [200 x i8], [200 x i8]* %9, i64 0, i64 0
%385 = call i32 @strcmp(i8* %384, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.55, i64 0, i64 0))
%386 = icmp ne i32 %385, 0
br i1 %386, label %387, label %391
387: ; preds = %383
%388 = call i32 (i8*, ...) bitcast (i32 (...)* @puts to i32 (i8*, ...)*)(i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.56, i64 0, i64 0))
%389 = load i32, i32* %6
%390 = add nsw i32 %389, 1
store i32 %390, i32* %6
br label %391
391: ; preds = %387, %383
%392 = getelementptr inbounds [200 x i8], [200 x i8]* %8, i64 0, i64 0
store i8 0, i8* %392
%393 = getelementptr inbounds [200 x i8], [200 x i8]* %9, i64 0, i64 0
store i8 102, i8* %393
%394 = getelementptr inbounds [200 x i8], [200 x i8]* %9, i64 0, i64 1
store i8 111, i8* %394
%395 = getelementptr inbounds [200 x i8], [200 x i8]* %9, i64 0, i64 2
store i8 111, i8* %395
%396 = getelementptr inbounds [200 x i8], [200 x i8]* %9, i64 0, i64 3
store i8 0, i8* %396
%397 = getelementptr inbounds [200 x i8], [200 x i8]* %9, i64 0, i64 0
%398 = getelementptr inbounds [200 x i8], [200 x i8]* %8, i64 0, i64 0
%399 = call i8* @strcat(i8* %397, i8* %398)
%400 = getelementptr inbounds [200 x i8], [200 x i8]* %9, i64 0, i64 0
%401 = call i32 @strcmp(i8* %400, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.57, i64 0, i64 0))
%402 = icmp ne i32 %401, 0
br i1 %402, label %403, label %407
403: ; preds = %391
%404 = call i32 (i8*, ...) bitcast (i32 (...)* @puts to i32 (i8*, ...)*)(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.58, i64 0, i64 0))
%405 = load i32, i32* %6
%406 = add nsw i32 %405, 1
store i32 %406, i32* %6
br label %407
407: ; preds = %403, %391
%408 = getelementptr inbounds [200 x i8], [200 x i8]* %9, i64 0, i64 0
store i8 0, i8* %408
%409 = getelementptr inbounds [200 x i8], [200 x i8]* %8, i64 0, i64 0
store i8 102, i8* %409
%410 = getelementptr inbounds [200 x i8], [200 x i8]* %8, i64 0, i64 1
store i8 111, i8* %410
%411 = getelementptr inbounds [200 x i8], [200 x i8]* %8, i64 0, i64 2
store i8 111, i8* %411
%412 = getelementptr inbounds [200 x i8], [200 x i8]* %8, i64 0, i64 3
store i8 50, i8* %412
%413 = getelementptr inbounds [200 x i8], [200 x i8]* %8, i64 0, i64 4
store i8 0, i8* %413
%414 = getelementptr inbounds [200 x i8], [200 x i8]* %9, i64 0, i64 0
%415 = getelementptr inbounds [200 x i8], [200 x i8]* %8, i64 0, i64 0
%416 = call i8* @strcat(i8* %414, i8* %415)
%417 = getelementptr inbounds [200 x i8], [200 x i8]* %9, i64 0, i64 0
%418 = call i32 @strcmp(i8* %417, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.59, i64 0, i64 0))
%419 = icmp ne i32 %418, 0
br i1 %419, label %420, label %424
420: ; preds = %407
%421 = call i32 (i8*, ...) bitcast (i32 (...)* @puts to i32 (i8*, ...)*)(i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.60, i64 0, i64 0))
%422 = load i32, i32* %6
%423 = add nsw i32 %422, 1
store i32 %423, i32* %6
br label %424
424: ; preds = %420, %407
%425 = load i32, i32* %6
%426 = icmp ne i32 %425, 0
br i1 %426, label %427, label %429
427: ; preds = %424
%428 = call i32 (i8*, ...) bitcast (i32 (...)* @puts to i32 (i8*, ...)*)(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.61, i64 0, i64 0))
br label %431
429: ; preds = %424
%430 = call i32 (i8*, ...) bitcast (i32 (...)* @puts to i32 (i8*, ...)*)(i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.62, i64 0, i64 0))
br label %431
431: ; preds = %429, %427
store i32 0, i32* %6
store i8 97, i8* %10
%432 = load i8, i8* %10
%433 = sext i8 %432 to i32
%434 = call i32 @toupper(i32 %433)
%435 = icmp ne i32 %434, 65
br i1 %435, label %436, label %439
436: ; preds = %431
%437 = load i32, i32* %6
%438 = add nsw i32 %437, 1
store i32 %438, i32* %6
br label %439
439: ; preds = %436, %431
store i8 122, i8* %10
%440 = load i8, i8* %10
%441 = sext i8 %440 to i32
%442 = call i32 @toupper(i32 %441)
%443 = icmp ne i32 %442, 90
br i1 %443, label %444, label %447
444: ; preds = %439
%445 = load i32, i32* %6
%446 = add nsw i32 %445, 1
store i32 %446, i32* %6
br label %447
447: ; preds = %444, %439
%448 = load i32, i32* %6
%449 = icmp ne i32 %448, 0
br i1 %449, label %450, label %452
450: ; preds = %447
%451 = call i32 (i8*, ...) bitcast (i32 (...)* @puts to i32 (i8*, ...)*)(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.63, i64 0, i64 0))
br label %454
452: ; preds = %447
%453 = call i32 (i8*, ...) bitcast (i32 (...)* @puts to i32 (i8*, ...)*)(i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.64, i64 0, i64 0))
br label %454
454: ; preds = %452, %450
store i32 0, i32* %6
store i8 65, i8* %10
%455 = load i8, i8* %10
%456 = sext i8 %455 to i32
%457 = call i32 @tolower(i32 %456)
%458 = icmp ne i32 %457, 97
br i1 %458, label %459, label %462
459: ; preds = %454
%460 = load i32, i32* %6
%461 = add nsw i32 %460, 1
store i32 %461, i32* %6
br label %462
462: ; preds = %459, %454
store i8 90, i8* %10
%463 = load i8, i8* %10
%464 = sext i8 %463 to i32
%465 = call i32 @tolower(i32 %464)
%466 = icmp ne i32 %465, 122
br i1 %466, label %467, label %470
467: ; preds = %462
%468 = load i32, i32* %6
%469 = add nsw i32 %468, 1
store i32 %469, i32* %6
br label %470
470: ; preds = %467, %462
%471 = load i32, i32* %6
%472 = icmp ne i32 %471, 0
br i1 %472, label %473, label %475
473: ; preds = %470
%474 = call i32 (i8*, ...) bitcast (i32 (...)* @puts to i32 (i8*, ...)*)(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.65, i64 0, i64 0))
br label %477
475: ; preds = %470
%476 = call i32 (i8*, ...) bitcast (i32 (...)* @puts to i32 (i8*, ...)*)(i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.66, i64 0, i64 0))
br label %477
477: ; preds = %475, %473
store i32 0, i32* %6
%478 = call i32 @isprint(i32 7)
%479 = icmp ne i32 %478, 0
br i1 %479, label %480, label %483
480: ; preds = %477
%481 = load i32, i32* %6
%482 = add nsw i32 %481, 1
store i32 %482, i32* %6
br label %483
483: ; preds = %480, %477
%484 = call i32 @isprint(i32 71)
%485 = icmp ne i32 %484, 0
br i1 %485, label %489, label %486
486: ; preds = %483
%487 = load i32, i32* %6
%488 = add nsw i32 %487, 1
store i32 %488, i32* %6
br label %489
489: ; preds = %486, %483
%490 = load i32, i32* %6
%491 = icmp ne i32 %490, 0
br i1 %491, label %492, label %494
492: ; preds = %489
%493 = call i32 (i8*, ...) bitcast (i32 (...)* @puts to i32 (i8*, ...)*)(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.67, i64 0, i64 0))
br label %496
494: ; preds = %489
%495 = call i32 (i8*, ...) bitcast (i32 (...)* @puts to i32 (i8*, ...)*)(i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.68, i64 0, i64 0))
br label %496
496: ; preds = %494, %492
store i32 0, i32* %6
%497 = getelementptr inbounds [200 x i8], [200 x i8]* %8, i64 0, i64 0
store i8 0, i8* %497
%498 = getelementptr inbounds [200 x i8], [200 x i8]* %8, i64 0, i64 1
store i8 1, i8* %498
%499 = getelementptr inbounds [200 x i8], [200 x i8]* %8, i64 0, i64 2
store i8 2, i8* %499
%500 = getelementptr inbounds [200 x i8], [200 x i8]* %9, i64 0, i64 0
store i8 0, i8* %500
%501 = getelementptr inbounds [200 x i8], [200 x i8]* %9, i64 0, i64 1
store i8 0, i8* %501
%502 = getelementptr inbounds [200 x i8], [200 x i8]* %9, i64 0, i64 2
store i8 0, i8* %502
%503 = getelementptr inbounds [200 x i8], [200 x i8]* %9, i64 0, i64 0
%504 = getelementptr inbounds [200 x i8], [200 x i8]* %8, i64 0, i64 0
%505 = getelementptr inbounds [200 x i8], [200 x i8]* %9, i64 0, i64 0
%506 = load i8, i8* %505
%507 = sext i8 %506 to i32
%508 = icmp eq i32 %507, 0
br i1 %508, label %509, label %519
509: ; preds = %496
%510 = getelementptr inbounds [200 x i8], [200 x i8]* %9, i64 0, i64 1
%511 = load i8, i8* %510
%512 = sext i8 %511 to i32
%513 = icmp eq i32 %512, 1
br i1 %513, label %514, label %519
514: ; preds = %509
%515 = getelementptr inbounds [200 x i8], [200 x i8]* %9, i64 0, i64 2
%516 = load i8, i8* %515
%517 = sext i8 %516 to i32
%518 = icmp eq i32 %517, 2
br i1 %518, label %522, label %519
519: ; preds = %514, %509, %496
%520 = load i32, i32* %6
%521 = add nsw i32 %520, 1
store i32 %521, i32* %6
br label %522
522: ; preds = %519, %514
%523 = load i32, i32* %6
%524 = icmp ne i32 %523, 0
br i1 %524, label %525, label %527
525: ; preds = %522
%526 = call i32 (i8*, ...) bitcast (i32 (...)* @puts to i32 (i8*, ...)*)(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.69, i64 0, i64 0))
br label %529
527: ; preds = %522
%528 = call i32 (i8*, ...) bitcast (i32 (...)* @puts to i32 (i8*, ...)*)(i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.70, i64 0, i64 0))
br label %529
529: ; preds = %527, %525
%530 = getelementptr inbounds [200 x i8], [200 x i8]* %8, i64 0, i64 0
store i32 0, i32* %7
br label %531
531: ; preds = %545, %529
%532 = load i32, i32* %7
%533 = icmp slt i32 %532, 50
br i1 %533, label %534, label %548
534: ; preds = %531
%535 = load i32, i32* %7
%536 = sext i32 %535 to i64
%537 = getelementptr inbounds [200 x i8], [200 x i8]* %8, i64 0, i64 %536
%538 = load i8, i8* %537
%539 = sext i8 %538 to i32
%540 = icmp ne i32 %539, 52
br i1 %540, label %541, label %544
541: ; preds = %534
%542 = load i32, i32* %6
%543 = add nsw i32 %542, 1
store i32 %543, i32* %6
br label %544
544: ; preds = %541, %534
br label %545
545: ; preds = %544
%546 = load i32, i32* %7
%547 = add nsw i32 %546, 1
store i32 %547, i32* %7
br label %531
548: ; preds = %531
%549 = load i32, i32* %6
%550 = icmp ne i32 %549, 0
br i1 %550, label %551, label %553
551: ; preds = %548
%552 = call i32 (i8*, ...) bitcast (i32 (...)* @puts to i32 (i8*, ...)*)(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.71, i64 0, i64 0))
br label %555
553: ; preds = %548
%554 = call i32 (i8*, ...) bitcast (i32 (...)* @puts to i32 (i8*, ...)*)(i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.72, i64 0, i64 0))
br label %555
555: ; preds = %553, %551
store i32 0, i32* %6
%556 = call i32 (i8*, ...) bitcast (i32 (...)* @atoi to i32 (i8*, ...)*)(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.73, i64 0, i64 0))
%557 = icmp ne i32 %556, 2134
br i1 %557, label %558, label %561
558: ; preds = %555
%559 = load i32, i32* %6
%560 = add nsw i32 %559, 1
store i32 %560, i32* %6
br label %561
561: ; preds = %558, %555
%562 = call i32 (i8*, ...) bitcast (i32 (...)* @atoi to i32 (i8*, ...)*)(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.74, i64 0, i64 0))
%563 = icmp ne i32 %562, 0
br i1 %563, label %564, label %567
564: ; preds = %561
%565 = load i32, i32* %6
%566 = add nsw i32 %565, 1
store i32 %566, i32* %6
br label %567
567: ; preds = %564, %561
%568 = call i32 (i8*, ...) bitcast (i32 (...)* @atoi to i32 (i8*, ...)*)(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.75, i64 0, i64 0))
%569 = icmp ne i32 %568, -30000
br i1 %569, label %570, label %573
570: ; preds = %567
%571 = load i32, i32* %6
%572 = add nsw i32 %571, 1
store i32 %572, i32* %6
br label %573
573: ; preds = %570, %567
%574 = load i32, i32* %6
%575 = icmp ne i32 %574, 0
br i1 %575, label %576, label %578
576: ; preds = %573
%577 = call i32 (i8*, ...) bitcast (i32 (...)* @puts to i32 (i8*, ...)*)(i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.76, i64 0, i64 0))
br label %580
578: ; preds = %573
%579 = call i32 (i8*, ...) bitcast (i32 (...)* @puts to i32 (i8*, ...)*)(i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.77, i64 0, i64 0))
br label %580
580: ; preds = %578, %576
ret i32 0
}

LLVM IR (-O2):
@.str = [8 x i8] c"ok puts\00"
@.str.1 = [12 x i8] c"o%c pr%cntf\00"
@.str.3 = [14 x i8] c"ok puts_nonl\0A\00"
@.str.4 = [9 x i8] c"[lost x]\00"
@.str.5 = [15 x i8] c"[lost newline]\00"
@.str.6 = [13 x i8] c"fail getchar\00"
@.str.7 = [11 x i8] c"ok getchar\00"
@.str.9 = [10 x i8] c"ok strlen\00"
@.str.11 = [10 x i8] c"ok strcmp\00"
@.str.12 = [53 x i8] c"This is a test of the emergency broadcasting system.\00"
@.str.13 = [19 x i8] c"[comparison fails]\00"
@.str.14 = [10 x i8] c"fail gets\00"
@.str.15 = [8 x i8] c"ok gets\00"
@.str.16 = [13 x i8] c"[whitespace]\00"
@.str.17 = [17 x i8] c"[non-whitespace]\00"
@.str.18 = [13 x i8] c"fail isspace\00"
@.str.19 = [11 x i8] c"ok isspace\00"
@.str.33 = [11 x i8] c"ok isdigit\00"
@.str.47 = [10 x i8] c"ok strtol\00"
@.str.48 = [3 x i8] c"ab\00"
@.str.49 = [12 x i8] c"fail strcpy\00"
@.str.50 = [10 x i8] c"ok strcpy\00"
@.str.51 = [10 x i8] c"xxxabcyyy\00"
@.str.52 = [13 x i8] c"fail memmove\00"
@.str.53 = [11 x i8] c"ok memmove\00"
@.str.55 = [7 x i8] c"foobar\00"
@.str.56 = [16 x i8] c"[strcat foobar]\00"
@.str.58 = [13 x i8] c"[strcat foo]\00"
@.str.59 = [5 x i8] c"foo2\00"
@.str.60 = [14 x i8] c"[strcat foo2]\00"
@.str.61 = [12 x i8] c"fail strcat\00"
@.str.62 = [10 x i8] c"ok strcat\00"
@.str.63 = [13 x i8] c"fail toupper\00"
@.str.64 = [11 x i8] c"ok toupper\00"
@.str.65 = [13 x i8] c"fail tolower\00"
@.str.66 = [11 x i8] c"ok tolower\00"
@.str.67 = [13 x i8] c"fail isprint\00"
@.str.68 = [11 x i8] c"ok isprint\00"
@.str.69 = [12 x i8] c"fail memcpy\00"
@.str.70 = [10 x i8] c"ok memcpy\00"
@.str.71 = [12 x i8] c"fail memset\00"
@.str.72 = [10 x i8] c"ok memset\00"
@.str.73 = [5 x i8] c"2134\00"
@.str.74 = [2 x i8] c"0\00"
@.str.75 = [7 x i8] c"-30000\00"
@.str.76 = [10 x i8] c"fail atoi\00"
@.str.77 = [8 x i8] c"ok atoi\00"
define i32 @main(i32 %0, i8** nocapture readnone %1) {
%3 = alloca [200 x i8]
%4 = alloca [200 x i8]
%5 = getelementptr inbounds [200 x i8], [200 x i8]* %3, i64 0, i64 0
%6 = getelementptr inbounds [200 x i8], [200 x i8]* %4, i64 0, i64 0
%7 = tail call i32 (i8*, ...) bitcast (i32 (...)* @puts to i32 (i8*, ...)*)(i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str, i64 0, i64 0))
%8 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0), i32 107, i32 105)
%9 = tail call i32 bitcast (i32 (...)* @putchar to i32 (i32)*)(i32 10)
%10 = tail call i32 (i8*, ...) bitcast (i32 (...)* @puts_nonl to i32 (i8*, ...)*)(i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.3, i64 0, i64 0))
%11 = tail call i32 (i32, ...) bitcast (i32 (...)* @putchar to i32 (i32, ...)*)(i32 111)
%12 = tail call i32 (i32, ...) bitcast (i32 (...)* @putchar to i32 (i32, ...)*)(i32 107)
%13 = tail call i32 (i32, ...) bitcast (i32 (...)* @putchar to i32 (i32, ...)*)(i32 32)
%14 = tail call i32 (i32, ...) bitcast (i32 (...)* @putchar to i32 (i32, ...)*)(i32 112)
%15 = tail call i32 (i32, ...) bitcast (i32 (...)* @putchar to i32 (i32, ...)*)(i32 117)
%16 = tail call i32 (i32, ...) bitcast (i32 (...)* @putchar to i32 (i32, ...)*)(i32 116)
%17 = tail call i32 (i32, ...) bitcast (i32 (...)* @putchar to i32 (i32, ...)*)(i32 99)
%18 = tail call i32 (i32, ...) bitcast (i32 (...)* @putchar to i32 (i32, ...)*)(i32 104)
%19 = tail call i32 (i32, ...) bitcast (i32 (...)* @putchar to i32 (i32, ...)*)(i32 97)
%20 = tail call i32 (i32, ...) bitcast (i32 (...)* @putchar to i32 (i32, ...)*)(i32 114)
%21 = tail call i32 (i32, ...) bitcast (i32 (...)* @putchar to i32 (i32, ...)*)(i32 10)
%22 = tail call i32 (i32, ...) bitcast (i32 (...)* @set_echo to i32 (i32, ...)*)(i32 0)
%23 = tail call i32 (...) @getchar()
%24 = icmp eq i32 %23, 120
br i1 %24, label %25, label %28
25: ; preds = %2
%26 = tail call i32 (...) @getchar()
%27 = icmp eq i32 %26, 10
br i1 %27, label %34, label %32
28: ; preds = %2
%29 = tail call i32 (i8*, ...) bitcast (i32 (...)* @puts to i32 (i8*, ...)*)(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.4, i64 0, i64 0))
%30 = tail call i32 (...) @getchar()
%31 = icmp eq i32 %30, 10
br i1 %31, label %34, label %32
32: ; preds = %28, %25
%33 = tail call i32 (i8*, ...) bitcast (i32 (...)* @puts to i32 (i8*, ...)*)(i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.5, i64 0, i64 0))
br label %34
34: ; preds = %25, %32, %28
%35 = phi i8* [ getelementptr inbounds ([13 x i8], [13 x i8]* @.str.6, i64 0, i64 0), %28 ], [ getelementptr inbounds ([13 x i8], [13 x i8]* @.str.6, i64 0, i64 0), %32 ], [ getelementptr inbounds ([11 x i8], [11 x i8]* @.str.7, i64 0, i64 0), %25 ]
%36 = tail call i32 (i8*, ...) bitcast (i32 (...)* @puts to i32 (i8*, ...)*)(i8* %35)
%37 = tail call i32 (i8*, ...) bitcast (i32 (...)* @puts to i32 (i8*, ...)*)(i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.9, i64 0, i64 0))
%38 = tail call i32 (i8*, ...) bitcast (i32 (...)* @puts to i32 (i8*, ...)*)(i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.11, i64 0, i64 0))
%39 = call i32 (i8*, ...) bitcast (i32 (...)* @gets to i32 (i8*, ...)*)(i8* %5)
%40 = call i32 @bcmp(i8* dereferenceable(53) %5, i8* dereferenceable(53) getelementptr inbounds ([53 x i8], [53 x i8]* @.str.12, i64 0, i64 0), i64 53)
%41 = icmp eq i32 %40, 0
br i1 %41, label %44, label %42
42: ; preds = %34
%43 = call i32 (i8*, ...) bitcast (i32 (...)* @puts to i32 (i8*, ...)*)(i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.13, i64 0, i64 0))
br label %44
44: ; preds = %34, %42
%45 = phi i8* [ getelementptr inbounds ([10 x i8], [10 x i8]* @.str.14, i64 0, i64 0), %42 ], [ getelementptr inbounds ([8 x i8], [8 x i8]* @.str.15, i64 0, i64 0), %34 ]
%46 = call i32 (i8*, ...) bitcast (i32 (...)* @puts to i32 (i8*, ...)*)(i8* %45)
%47 = call i32 @isspace(i32 32)
%48 = icmp eq i32 %47, 0
br i1 %48, label %49, label %53
49: ; preds = %44
%50 = call i32 (i8*, ...) bitcast (i32 (...)* @puts to i32 (i8*, ...)*)(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.16, i64 0, i64 0))
%51 = call i32 @isspace(i32 97)
%52 = icmp eq i32 %51, 0
br i1 %52, label %58, label %56
53: ; preds = %44
%54 = call i32 @isspace(i32 97)
%55 = icmp eq i32 %54, 0
br i1 %55, label %58, label %56
56: ; preds = %53, %49
%57 = call i32 (i8*, ...) bitcast (i32 (...)* @puts to i32 (i8*, ...)*)(i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.17, i64 0, i64 0))
br label %58
58: ; preds = %53, %56, %49
%59 = phi i8* [ getelementptr inbounds ([13 x i8], [13 x i8]* @.str.18, i64 0, i64 0), %49 ], [ getelementptr inbounds ([13 x i8], [13 x i8]* @.str.18, i64 0, i64 0), %56 ], [ getelementptr inbounds ([11 x i8], [11 x i8]* @.str.19, i64 0, i64 0), %53 ]
%60 = call i32 (i8*, ...) bitcast (i32 (...)* @puts to i32 (i8*, ...)*)(i8* %59)
%61 = call i32 (i8*, ...) bitcast (i32 (...)* @puts to i32 (i8*, ...)*)(i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.33, i64 0, i64 0))
%62 = call i32 (i8*, ...) bitcast (i32 (...)* @puts to i32 (i8*, ...)*)(i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.47, i64 0, i64 0))
%63 = getelementptr inbounds [200 x i8], [200 x i8]* %3, i64 0, i64 1
%64 = getelementptr inbounds [200 x i8], [200 x i8]* %3, i64 0, i64 2
%65 = getelementptr inbounds [200 x i8], [200 x i8]* %3, i64 0, i64 3
%66 = call i8* @strcpy(i8* %65, i8* %5)
%67 = load i8, i8* %65
%68 = icmp eq i8 %67, 97
%69 = getelementptr inbounds [200 x i8], [200 x i8]* %3, i64 0, i64 4
%70 = load i8, i8* %69
%71 = icmp eq i8 %70, 98
%72 = select i1 %68, i1 %71, i1 false
%73 = getelementptr inbounds [200 x i8], [200 x i8]* %3, i64 0, i64 5
%74 = load i8, i8* %73
%75 = icmp eq i8 %74, 0
%76 = select i1 %72, i1 %75, i1 false
%77 = select i1 %76, i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.50, i64 0, i64 0), i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.49, i64 0, i64 0)
%78 = call i32 (i8*, ...) bitcast (i32 (...)* @puts to i32 (i8*, ...)*)(i8* %77)
%79 = load i8, i8* %73
%80 = icmp eq i8 %79, 97
%81 = getelementptr inbounds [200 x i8], [200 x i8]* %3, i64 0, i64 6
%82 = load i8, i8* %81
%83 = icmp eq i8 %82, 98
%84 = getelementptr inbounds [200 x i8], [200 x i8]* %3, i64 0, i64 7
%85 = load i8, i8* %84
%86 = icmp eq i8 %85, 99
%87 = load i8, i8* %69
%88 = icmp eq i8 %87, 97
%89 = load i8, i8* %73
%90 = icmp eq i8 %89, 98
%91 = select i1 %88, i1 %90, i1 false
%92 = load i8, i8* %81
%93 = icmp eq i8 %92, 99
%94 = select i1 %91, i1 %93, i1 false
%95 = select i1 %94, i1 %80, i1 false
%96 = select i1 %95, i1 %83, i1 false
%97 = select i1 %96, i1 %86, i1 false
%98 = select i1 %97, i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.53, i64 0, i64 0), i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.52, i64 0, i64 0)
%99 = call i32 (i8*, ...) bitcast (i32 (...)* @puts to i32 (i8*, ...)*)(i8* %98)
store i8 98, i8* %5
store i8 97, i8* %63
store i8 114, i8* %64
store i8 0, i8* %65
store i8 102, i8* %6
%100 = getelementptr inbounds [200 x i8], [200 x i8]* %4, i64 0, i64 1
store i8 111, i8* %100
%101 = getelementptr inbounds [200 x i8], [200 x i8]* %4, i64 0, i64 2
store i8 111, i8* %101
%102 = getelementptr inbounds [200 x i8], [200 x i8]* %4, i64 0, i64 3
store i8 0, i8* %102
%103 = call i8* @strcat(i8* %6, i8* %5)
%104 = call i32 @bcmp(i8* dereferenceable(7) %6, i8* dereferenceable(7) getelementptr inbounds ([7 x i8], [7 x i8]* @.str.55, i64 0, i64 0), i64 7)
%105 = icmp eq i32 %104, 0
br i1 %105, label %108, label %106
106: ; preds = %58
%107 = call i32 (i8*, ...) bitcast (i32 (...)* @puts to i32 (i8*, ...)*)(i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.56, i64 0, i64 0))
br label %108
108: ; preds = %106, %58
%109 = phi i32 [ 1, %106 ], [ 0, %58 ]
store i8 0, i8* %5
store i8 102, i8* %6
store i8 111, i8* %100
store i8 111, i8* %101
store i8 0, i8* %102
%110 = call i8* @strcat(i8* %6, i8* %5)
%111 = bitcast [200 x i8]* %4 to i32*
%112 = load i32, i32* %111
%113 = icmp eq i32 %112, 7303014
br i1 %113, label %116, label %114
114: ; preds = %108
%115 = call i32 (i8*, ...) bitcast (i32 (...)* @puts to i32 (i8*, ...)*)(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.58, i64 0, i64 0))
br label %116
116: ; preds = %114, %108
%117 = phi i32 [ 1, %114 ], [ %109, %108 ]
store i8 0, i8* %6
store i8 102, i8* %5
store i8 111, i8* %63
store i8 111, i8* %64
store i8 50, i8* %65
store i8 0, i8* %69
%118 = call i8* @strcat(i8* %6, i8* %5)
%119 = call i32 @bcmp(i8* dereferenceable(5) %6, i8* dereferenceable(5) getelementptr inbounds ([5 x i8], [5 x i8]* @.str.59, i64 0, i64 0), i64 5)
%120 = icmp eq i32 %119, 0
br i1 %120, label %123, label %121
121: ; preds = %116
%122 = call i32 (i8*, ...) bitcast (i32 (...)* @puts to i32 (i8*, ...)*)(i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.60, i64 0, i64 0))
br label %126
123: ; preds = %116
%124 = icmp eq i32 %117, 0
%125 = select i1 %124, i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.62, i64 0, i64 0), i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.61, i64 0, i64 0)
br label %126
126: ; preds = %123, %121
%127 = phi i8* [ getelementptr inbounds ([12 x i8], [12 x i8]* @.str.61, i64 0, i64 0), %121 ], [ %125, %123 ]
%128 = call i32 (i8*, ...) bitcast (i32 (...)* @puts to i32 (i8*, ...)*)(i8* %127)
%129 = call i32 @toupper(i32 97)
%130 = icmp eq i32 %129, 65
%131 = call i32 @toupper(i32 122)
%132 = icmp eq i32 %131, 90
%133 = select i1 %132, i1 %130, i1 false
%134 = select i1 %133, i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.64, i64 0, i64 0), i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.63, i64 0, i64 0)
%135 = call i32 (i8*, ...) bitcast (i32 (...)* @puts to i32 (i8*, ...)*)(i8* %134)
%136 = call i32 @tolower(i32 65)
%137 = icmp eq i32 %136, 97
%138 = call i32 @tolower(i32 90)
%139 = icmp eq i32 %138, 122
%140 = select i1 %139, i1 %137, i1 false
%141 = select i1 %140, i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.66, i64 0, i64 0), i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.65, i64 0, i64 0)
%142 = call i32 (i8*, ...) bitcast (i32 (...)* @puts to i32 (i8*, ...)*)(i8* %141)
%143 = call i32 @isprint(i32 7)
%144 = icmp eq i32 %143, 0
%145 = call i32 @isprint(i32 71)
%146 = icmp ne i32 %145, 0
%147 = select i1 %146, i1 %144, i1 false
%148 = select i1 %147, i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.68, i64 0, i64 0), i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.67, i64 0, i64 0)
%149 = call i32 (i8*, ...) bitcast (i32 (...)* @puts to i32 (i8*, ...)*)(i8* %148)
store i8 0, i8* %5
store i8 1, i8* %63
store i8 2, i8* %64
%150 = load i8, i8* %6
%151 = icmp eq i8 %150, 0
%152 = load i8, i8* %100
%153 = icmp eq i8 %152, 1
%154 = select i1 %151, i1 %153, i1 false
%155 = load i8, i8* %101
%156 = icmp eq i8 %155, 2
%157 = select i1 %154, i1 %156, i1 false
%158 = select i1 %157, i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.70, i64 0, i64 0), i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.69, i64 0, i64 0)
%159 = call i32 (i8*, ...) bitcast (i32 (...)* @puts to i32 (i8*, ...)*)(i8* %158)
%160 = xor i1 %157, true
%161 = zext i1 %160 to i32
%162 = insertelement <4 x i32> <i32 poison, i32 0, i32 0, i32 0>, i32 %161, i64 0
%163 = getelementptr inbounds [200 x i8], [200 x i8]* %3, i64 0, i64 1
%164 = bitcast i8* %163 to <4 x i8>*
%165 = load <4 x i8>, <4 x i8>* %164
%166 = icmp ne <4 x i8> %165, <i8 52, i8 52, i8 52, i8 52>
%167 = zext <4 x i1> %166 to <4 x i32>
%168 = add nuw nsw <4 x i32> %162, %167
%169 = getelementptr inbounds [200 x i8], [200 x i8]* %3, i64 0, i64 5
%170 = bitcast i8* %169 to <4 x i8>*
%171 = load <4 x i8>, <4 x i8>* %170
%172 = icmp ne <4 x i8> %171, <i8 52, i8 52, i8 52, i8 52>
%173 = zext <4 x i1> %172 to <4 x i32>
%174 = add nuw nsw <4 x i32> %168, %173
%175 = getelementptr inbounds [200 x i8], [200 x i8]* %3, i64 0, i64 9
%176 = bitcast i8* %175 to <4 x i8>*
%177 = load <4 x i8>, <4 x i8>* %176
%178 = icmp ne <4 x i8> %177, <i8 52, i8 52, i8 52, i8 52>
%179 = zext <4 x i1> %178 to <4 x i32>
%180 = add nuw nsw <4 x i32> %174, %179
%181 = getelementptr inbounds [200 x i8], [200 x i8]* %3, i64 0, i64 13
%182 = bitcast i8* %181 to <4 x i8>*
%183 = load <4 x i8>, <4 x i8>* %182
%184 = icmp ne <4 x i8> %183, <i8 52, i8 52, i8 52, i8 52>
%185 = zext <4 x i1> %184 to <4 x i32>
%186 = add nuw nsw <4 x i32> %180, %185
%187 = getelementptr inbounds [200 x i8], [200 x i8]* %3, i64 0, i64 17
%188 = bitcast i8* %187 to <4 x i8>*
%189 = load <4 x i8>, <4 x i8>* %188
%190 = icmp ne <4 x i8> %189, <i8 52, i8 52, i8 52, i8 52>
%191 = zext <4 x i1> %190 to <4 x i32>
%192 = add nuw nsw <4 x i32> %186, %191
%193 = getelementptr inbounds [200 x i8], [200 x i8]* %3, i64 0, i64 21
%194 = bitcast i8* %193 to <4 x i8>*
%195 = load <4 x i8>, <4 x i8>* %194
%196 = icmp ne <4 x i8> %195, <i8 52, i8 52, i8 52, i8 52>
%197 = zext <4 x i1> %196 to <4 x i32>
%198 = add <4 x i32> %192, %197
%199 = getelementptr inbounds [200 x i8], [200 x i8]* %3, i64 0, i64 25
%200 = bitcast i8* %199 to <4 x i8>*
%201 = load <4 x i8>, <4 x i8>* %200
%202 = icmp ne <4 x i8> %201, <i8 52, i8 52, i8 52, i8 52>
%203 = zext <4 x i1> %202 to <4 x i32>
%204 = add <4 x i32> %198, %203
%205 = getelementptr inbounds [200 x i8], [200 x i8]* %3, i64 0, i64 29
%206 = bitcast i8* %205 to <4 x i8>*
%207 = load <4 x i8>, <4 x i8>* %206
%208 = icmp ne <4 x i8> %207, <i8 52, i8 52, i8 52, i8 52>
%209 = zext <4 x i1> %208 to <4 x i32>
%210 = add <4 x i32> %204, %209
%211 = getelementptr inbounds [200 x i8], [200 x i8]* %3, i64 0, i64 33
%212 = bitcast i8* %211 to <4 x i8>*
%213 = load <4 x i8>, <4 x i8>* %212
%214 = icmp ne <4 x i8> %213, <i8 52, i8 52, i8 52, i8 52>
%215 = zext <4 x i1> %214 to <4 x i32>
%216 = add <4 x i32> %210, %215
%217 = getelementptr inbounds [200 x i8], [200 x i8]* %3, i64 0, i64 37
%218 = bitcast i8* %217 to <4 x i8>*
%219 = load <4 x i8>, <4 x i8>* %218
%220 = icmp ne <4 x i8> %219, <i8 52, i8 52, i8 52, i8 52>
%221 = zext <4 x i1> %220 to <4 x i32>
%222 = add <4 x i32> %216, %221
%223 = getelementptr inbounds [200 x i8], [200 x i8]* %3, i64 0, i64 41
%224 = bitcast i8* %223 to <4 x i8>*
%225 = load <4 x i8>, <4 x i8>* %224
%226 = icmp ne <4 x i8> %225, <i8 52, i8 52, i8 52, i8 52>
%227 = zext <4 x i1> %226 to <4 x i32>
%228 = add <4 x i32> %222, %227
%229 = getelementptr inbounds [200 x i8], [200 x i8]* %3, i64 0, i64 45
%230 = bitcast i8* %229 to <4 x i8>*
%231 = load <4 x i8>, <4 x i8>* %230
%232 = icmp ne <4 x i8> %231, <i8 52, i8 52, i8 52, i8 52>
%233 = zext <4 x i1> %232 to <4 x i32>
%234 = add <4 x i32> %228, %233
%235 = call i32 @llvm.vector.reduce.add.v4i32(<4 x i32> %234)
%236 = getelementptr inbounds [200 x i8], [200 x i8]* %3, i64 0, i64 49
%237 = load i8, i8* %236
%238 = icmp ne i8 %237, 52
%239 = sext i1 %238 to i32
%240 = icmp eq i32 %235, %239
%241 = select i1 %240, i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.72, i64 0, i64 0), i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.71, i64 0, i64 0)
%242 = call i32 (i8*, ...) bitcast (i32 (...)* @puts to i32 (i8*, ...)*)(i8* %241)
%243 = call i32 (i8*, ...) bitcast (i32 (...)* @atoi to i32 (i8*, ...)*)(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.73, i64 0, i64 0))
%244 = icmp ne i32 %243, 2134
%245 = zext i1 %244 to i32
%246 = call i32 (i8*, ...) bitcast (i32 (...)* @atoi to i32 (i8*, ...)*)(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.74, i64 0, i64 0))
%247 = icmp eq i32 %246, 0
%248 = select i1 %244, i32 2, i32 1
%249 = select i1 %247, i32 %245, i32 %248
%250 = call i32 (i8*, ...) bitcast (i32 (...)* @atoi to i32 (i8*, ...)*)(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.75, i64 0, i64 0))
%251 = icmp ne i32 %250, -30000
%252 = sext i1 %251 to i32
%253 = icmp eq i32 %249, %252
%254 = select i1 %253, i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.77, i64 0, i64 0), i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.76, i64 0, i64 0)
%255 = call i32 (i8*, ...) bitcast (i32 (...)* @puts to i32 (i8*, ...)*)(i8* %254)
ret i32 0
}