#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 SHRT_MAX;
int execl(char *, char *, int /*<<< orphan*/ *);
int /*<<< orphan*/ exit(int /*<<< orphan*/);
int /*<<< orphan*/ fflush(int /*<<< orphan*/);
int /*<<< orphan*/ fprintf(int /*<<< orphan*/, char *, char *, ...);
char getchar();
int /*<<< orphan*/ printf(char *, ...);
int /*<<< orphan*/ stdout;
int strlen(char *);
int /*<<< orphan*/ system(char *);
void main() {
  char c;
  char input[SHRT_MAX], prompt[SHRT_MAX];
  int lock, sprompt, i;
  prompt[0] = '>';
  while (1) {
    printf("%s ", prompt);
    for (i = 0; i < SHRT_MAX; i++) {
      input[i] = '\0';
    }
    i = 0;
    do {
      c = getchar();
      input[i++] = c;
    } while (c != '\n');
    if (input[0] == '\n') {
      system("clear");
    }
    if ((input[0] == 'Q' || input[0] == 'q') && (input[1] == '\n')) {
      exit(0);
    } else if ((input[0] == 'Q' || input[0] == 'q') &&
               (input[1] == 'U' || input[1] == 'u') &&
               (input[2] == 'I' || input[2] == 'i') &&
               (input[3] == 'T' || input[3] == 't') && (input[4] == '\n')) {
      exit(0);
    }
    if ((input[0] == 't') && (input[1] == 'l') && (input[2] == 'o') &&
        (input[3] == 'c') && (input[4] == 'k') && (input[5] == '\n')) {
      while (1) {
        for (i = 0; i < SHRT_MAX; i++) {
          input[i] = '\0';
        }
        lock = 0;
        printf("unlock: ");
        i = 0;
        do {
          c = getchar();
          input[i++] = c;
        } while (c != '\n');
        if ((input[0] == "NOTSOSECRET"[0]) && (input[1] == "NOTSOSECRET"[1]) &&
            (input[2] == "NOTSOSECRET"[2]) && (input[3] == "NOTSOSECRET"[3]) &&
            (input[4] == "NOTSOSECRET"[4]) && (input[5] == "NOTSOSECRET"[5]) &&
            (input[6] == "NOTSOSECRET"[6]) && (input[7] == "NOTSOSECRET"[7]) &&
            (input[8] == "NOTSOSECRET"[8]) && (input[9] == "NOTSOSECRET"[9]) &&
            (input[10] == "NOTSOSECRET"[10]) && (input[11] == '\n')) {
          lock = 1;
        }
        if (lock == 1) {
          break;
        }
      }
    }
    if ((input[0] == 'c') && (input[1] == 'p') && (input[2] == 'r') &&
        (input[3] == 'o') && (input[4] == 'm') && (input[5] == 'p') &&
        (input[6] == 't')) {
      int j = 0;
      if (input[7] == ' ') {
        i = 8;
      } else {
        i = 7;
      }
      for (i; i < SHRT_MAX; i++) {
        prompt[j] = input[i];
        if (prompt[j] == '\n') {
          prompt[j] = '\0';
        }
        j++;
      }
      sprompt = 1;
    } else if ((input[0] == 'd') && (input[1] == 'p') && (input[2] == 'r') &&
               (input[3] == 'o') && (input[4] == 'm') && (input[5] == 'p') &&
               (input[6] == 't')) {
      prompt[0] = '>';
      for (i = 1; i < SHRT_MAX; i++) {
        prompt[i] = '\0';
      }
      sprompt = 1;
    }
    int len, check;
    if (lock == 0 && sprompt == 0) {
      len = strlen(input);
      input[len - 1] = '\0';
      fprintf(stdout, "%s %s\n", "about to run:", input);
      check = execl(input, input, NULL);
      if (check == -1) {
        printf("failed command\n");
      }
      fprintf(stdout, "%s\n", "Hello world?");
      fflush(stdout);
    }
    lock = 0;
    sprompt = 0;
  }
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0x50,%rsp
mov    0x2e51(%rip),%rax
mov    (%rax),%ecx
mov    %rsp,%rdx
mov    %rdx,-0x10(%rbp)
mov    %rcx,%rsi
add    $0xf,%rsi
and    $0xfffffffffffffff0,%rsi
mov    %rsp,%rdx
sub    %rsi,%rdx
mov    %rdx,-0x48(%rbp)
mov    %rdx,%rsp
mov    %rcx,-0x18(%rbp)
mov    (%rax),%eax
mov    %eax,%ecx
mov    %rcx,%rdx
add    $0xf,%rdx
and    $0xfffffffffffffff0,%rdx
mov    %rsp,%rax
sub    %rdx,%rax
mov    %rax,-0x40(%rbp)
mov    %rax,%rsp
mov    %rcx,-0x20(%rbp)
movb   $0x3e,(%rax)
jmp    11dc <main+0x5c>
mov    -0x40(%rbp),%rsi
lea    0xe19(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
movl   $0x0,-0x2c(%rbp)
mov    -0x2c(%rbp),%eax
mov    0x2de1(%rip),%rcx
cmp    (%rcx),%eax
jge    1221 <main+0xa1>
mov    -0x48(%rbp),%rax
movslq -0x2c(%rbp),%rcx
movb   $0x0,(%rax,%rcx,1)
mov    -0x2c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x2c(%rbp)
jmp    11f5 <main+0x75>
movl   $0x0,-0x2c(%rbp)
mov    $0x0,%al
call   1060 <getchar@plt>
mov    %al,%cl
mov    -0x48(%rbp),%rax
mov    %cl,-0x1(%rbp)
mov    -0x1(%rbp),%dl
mov    -0x2c(%rbp),%ecx
mov    %ecx,%esi
add    $0x1,%esi
mov    %esi,-0x2c(%rbp)
movslq %ecx,%rcx
mov    %dl,(%rax,%rcx,1)
movsbl -0x1(%rbp),%eax
cmp    $0xa,%eax
jne    1228 <main+0xa8>
mov    -0x48(%rbp),%rax
movsbl (%rax),%eax
cmp    $0xa,%eax
jne    1275 <main+0xf5>
lea    0xd94(%rip),%rdi
call   1040 <system@plt>
mov    -0x48(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x51,%eax
je     1295 <main+0x115>
mov    -0x48(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x71,%eax
jne    12ad <main+0x12d>
mov    -0x48(%rbp),%rax
movsbl 0x1(%rax),%eax
cmp    $0xa,%eax
jne    12ad <main+0x12d>
xor    %edi,%edi
call   1090 <exit@plt>
mov    -0x48(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x51,%eax
je     12cd <main+0x14d>
mov    -0x48(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x71,%eax
jne    134b <main+0x1cb>
mov    -0x48(%rbp),%rax
movsbl 0x1(%rax),%eax
cmp    $0x55,%eax
je     12ef <main+0x16f>
mov    -0x48(%rbp),%rax
movsbl 0x1(%rax),%eax
cmp    $0x75,%eax
jne    134b <main+0x1cb>
mov    -0x48(%rbp),%rax
movsbl 0x2(%rax),%eax
cmp    $0x49,%eax
je     1311 <main+0x191>
mov    -0x48(%rbp),%rax
movsbl 0x2(%rax),%eax
cmp    $0x69,%eax
jne    134b <main+0x1cb>
mov    -0x48(%rbp),%rax
movsbl 0x3(%rax),%eax
cmp    $0x54,%eax
je     1333 <main+0x1b3>
mov    -0x48(%rbp),%rax
movsbl 0x3(%rax),%eax
cmp    $0x74,%eax
jne    134b <main+0x1cb>
mov    -0x48(%rbp),%rax
movsbl 0x4(%rax),%eax
cmp    $0xa,%eax
jne    134b <main+0x1cb>
xor    %edi,%edi
call   1090 <exit@plt>
jmp    1350 <main+0x1d0>
mov    -0x48(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x74,%eax
jne    156c <main+0x3ec>
mov    -0x48(%rbp),%rax
movsbl 0x1(%rax),%eax
cmp    $0x6c,%eax
jne    156c <main+0x3ec>
mov    -0x48(%rbp),%rax
movsbl 0x2(%rax),%eax
cmp    $0x6f,%eax
jne    156c <main+0x3ec>
mov    -0x48(%rbp),%rax
movsbl 0x3(%rax),%eax
cmp    $0x63,%eax
jne    156c <main+0x3ec>
mov    -0x48(%rbp),%rax
movsbl 0x4(%rax),%eax
cmp    $0x6b,%eax
jne    156c <main+0x3ec>
mov    -0x48(%rbp),%rax
movsbl 0x5(%rax),%eax
cmp    $0xa,%eax
jne    156c <main+0x3ec>
jmp    13ba <main+0x23a>
jmp    13bf <main+0x23f>
movl   $0x0,-0x2c(%rbp)
mov    -0x2c(%rbp),%eax
mov    0x2c10(%rip),%rcx
cmp    (%rcx),%eax
jge    13f2 <main+0x272>
mov    -0x48(%rbp),%rax
movslq -0x2c(%rbp),%rcx
movb   $0x0,(%rax,%rcx,1)
mov    -0x2c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x2c(%rbp)
jmp    13c6 <main+0x246>
movl   $0x0,-0x24(%rbp)
lea    0xc0a(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
movl   $0x0,-0x2c(%rbp)
mov    $0x0,%al
call   1060 <getchar@plt>
mov    %al,%cl
mov    -0x48(%rbp),%rax
mov    %cl,-0x1(%rbp)
mov    -0x1(%rbp),%dl
mov    -0x2c(%rbp),%ecx
mov    %ecx,%esi
add    $0x1,%esi
mov    %esi,-0x2c(%rbp)
movslq %ecx,%rcx
mov    %dl,(%rax,%rcx,1)
movsbl -0x1(%rbp),%eax
cmp    $0xa,%eax
jne    140e <main+0x28e>
mov    -0x48(%rbp),%rax
movsbl (%rax),%eax
movsbl 0xbc6(%rip),%ecx
cmp    %ecx,%eax
jne    1553 <main+0x3d3>
mov    -0x48(%rbp),%rax
movsbl 0x1(%rax),%eax
movsbl 0xbb0(%rip),%ecx
cmp    %ecx,%eax
jne    1553 <main+0x3d3>
mov    -0x48(%rbp),%rax
movsbl 0x2(%rax),%eax
movsbl 0xb9a(%rip),%ecx
cmp    %ecx,%eax
jne    1553 <main+0x3d3>
mov    -0x48(%rbp),%rax
movsbl 0x3(%rax),%eax
movsbl 0xb84(%rip),%ecx
cmp    %ecx,%eax
jne    1553 <main+0x3d3>
mov    -0x48(%rbp),%rax
movsbl 0x4(%rax),%eax
movsbl 0xb6e(%rip),%ecx
cmp    %ecx,%eax
jne    1553 <main+0x3d3>
mov    -0x48(%rbp),%rax
movsbl 0x5(%rax),%eax
movsbl 0xb58(%rip),%ecx
cmp    %ecx,%eax
jne    1553 <main+0x3d3>
mov    -0x48(%rbp),%rax
movsbl 0x6(%rax),%eax
movsbl 0xb42(%rip),%ecx
cmp    %ecx,%eax
jne    1553 <main+0x3d3>
mov    -0x48(%rbp),%rax
movsbl 0x7(%rax),%eax
movsbl 0xb2c(%rip),%ecx
cmp    %ecx,%eax
jne    1553 <main+0x3d3>
mov    -0x48(%rbp),%rax
movsbl 0x8(%rax),%eax
movsbl 0xb16(%rip),%ecx
cmp    %ecx,%eax
jne    1553 <main+0x3d3>
mov    -0x48(%rbp),%rax
movsbl 0x9(%rax),%eax
movsbl 0xb00(%rip),%ecx
cmp    %ecx,%eax
jne    1553 <main+0x3d3>
mov    -0x48(%rbp),%rax
movsbl 0xa(%rax),%eax
movsbl 0xaea(%rip),%ecx
cmp    %ecx,%eax
jne    1553 <main+0x3d3>
mov    -0x48(%rbp),%rax
movsbl 0xb(%rax),%eax
cmp    $0xa,%eax
jne    1553 <main+0x3d3>
movl   $0x1,-0x24(%rbp)
cmpl   $0x1,-0x24(%rbp)
jne    1562 <main+0x3e2>
jmp    1567 <main+0x3e7>
jmp    13ba <main+0x23a>
jmp    156c <main+0x3ec>
mov    -0x48(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x63,%eax
jne    1675 <main+0x4f5>
mov    -0x48(%rbp),%rax
movsbl 0x1(%rax),%eax
cmp    $0x70,%eax
jne    1675 <main+0x4f5>
mov    -0x48(%rbp),%rax
movsbl 0x2(%rax),%eax
cmp    $0x72,%eax
jne    1675 <main+0x4f5>
mov    -0x48(%rbp),%rax
movsbl 0x3(%rax),%eax
cmp    $0x6f,%eax
jne    1675 <main+0x4f5>
mov    -0x48(%rbp),%rax
movsbl 0x4(%rax),%eax
cmp    $0x6d,%eax
jne    1675 <main+0x4f5>
mov    -0x48(%rbp),%rax
movsbl 0x5(%rax),%eax
cmp    $0x70,%eax
jne    1675 <main+0x4f5>
mov    -0x48(%rbp),%rax
movsbl 0x6(%rax),%eax
cmp    $0x74,%eax
jne    1675 <main+0x4f5>
mov    -0x48(%rbp),%rax
movl   $0x0,-0x30(%rbp)
movsbl 0x7(%rax),%eax
cmp    $0x20,%eax
jne    1606 <main+0x486>
movl   $0x8,-0x2c(%rbp)
jmp    160d <main+0x48d>
movl   $0x7,-0x2c(%rbp)
mov    -0x2c(%rbp),%eax
mov    0x29c9(%rip),%rcx
cmp    (%rcx),%eax
jge    1669 <main+0x4e9>
mov    -0x40(%rbp),%rax
mov    -0x48(%rbp),%rcx
movslq -0x2c(%rbp),%rdx
mov    (%rcx,%rdx,1),%dl
movslq -0x30(%rbp),%rcx
mov    %dl,(%rax,%rcx,1)
movslq -0x30(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0xa,%eax
jne    1652 <main+0x4d2>
mov    -0x40(%rbp),%rax
movslq -0x30(%rbp),%rcx
movb   $0x0,(%rax,%rcx,1)
mov    -0x30(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x30(%rbp)
mov    -0x2c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x2c(%rbp)
jmp    160d <main+0x48d>
movl   $0x1,-0x28(%rbp)
jmp    1731 <main+0x5b1>
mov    -0x48(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x64,%eax
jne    172c <main+0x5ac>
mov    -0x48(%rbp),%rax
movsbl 0x1(%rax),%eax
cmp    $0x70,%eax
jne    172c <main+0x5ac>
mov    -0x48(%rbp),%rax
movsbl 0x2(%rax),%eax
cmp    $0x72,%eax
jne    172c <main+0x5ac>
mov    -0x48(%rbp),%rax
movsbl 0x3(%rax),%eax
cmp    $0x6f,%eax
jne    172c <main+0x5ac>
mov    -0x48(%rbp),%rax
movsbl 0x4(%rax),%eax
cmp    $0x6d,%eax
jne    172c <main+0x5ac>
mov    -0x48(%rbp),%rax
movsbl 0x5(%rax),%eax
cmp    $0x70,%eax
jne    172c <main+0x5ac>
mov    -0x48(%rbp),%rax
movsbl 0x6(%rax),%eax
cmp    $0x74,%eax
jne    172c <main+0x5ac>
mov    -0x40(%rbp),%rax
movb   $0x3e,(%rax)
movl   $0x1,-0x2c(%rbp)
mov    -0x2c(%rbp),%eax
mov    0x28dd(%rip),%rcx
cmp    (%rcx),%eax
jge    1725 <main+0x5a5>
mov    -0x40(%rbp),%rax
movslq -0x2c(%rbp),%rcx
movb   $0x0,(%rax,%rcx,1)
mov    -0x2c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x2c(%rbp)
jmp    16f9 <main+0x579>
movl   $0x1,-0x28(%rbp)
jmp    1731 <main+0x5b1>
cmpl   $0x0,-0x24(%rbp)
jne    17d6 <main+0x656>
cmpl   $0x0,-0x28(%rbp)
jne    17d6 <main+0x656>
mov    -0x48(%rbp),%rdi
call   1030 <strlen@plt>
mov    -0x48(%rbp),%rcx
mov    %eax,-0x34(%rbp)
mov    -0x34(%rbp),%eax
sub    $0x1,%eax
cltq
movb   $0x0,(%rcx,%rax,1)
mov    0x2870(%rip),%rax
mov    (%rax),%edi
lea    0x8ae(%rip),%rsi
lea    0x8ae(%rip),%rdx
mov    $0x0,%al
call   1070 <fprintf@plt>
mov    -0x48(%rbp),%rsi
xor    %eax,%eax
mov    %eax,%edx
mov    %rsi,%rdi
call   10a0 <execl@plt>
mov    %eax,-0x38(%rbp)
cmpl   $0xffffffff,-0x38(%rbp)
jne    17aa <main+0x62a>
lea    0x891(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
mov    0x2827(%rip),%rax
mov    (%rax),%edi
lea    0x868(%rip),%rsi
lea    0x883(%rip),%rdx
mov    $0x0,%al
call   1070 <fprintf@plt>
mov    0x2809(%rip),%rax
mov    (%rax),%edi
call   1080 <fflush@plt>
movl   $0x0,-0x24(%rbp)
movl   $0x0,-0x28(%rbp)
jmp    11d7 <main+0x57>

x86 assembly (clang, -O2):
<main>:
push   %rbp
mov    %rsp,%rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x18,%rsp
mov    0x2e28(%rip),%r13
mov    0x0(%r13),%eax
mov    %rsp,%r14
add    $0xf,%rax
and    $0xfffffffffffffff0,%rax
sub    %rax,%r14
mov    %r14,%rsp
mov    %rsp,%rcx
sub    %rax,%rcx
mov    %rcx,%rsp
movb   $0x3e,(%rcx)
mov    %rcx,-0x30(%rbp)
lea    0x1(%rcx),%rax
mov    %rax,-0x38(%rbp)
lea    0x1(%r14),%rax
mov    %rax,-0x40(%rbp)
mov    0x2de4(%rip),%r12
lea    0xf43(%rip),%r15
jmp    1264 <main+0xc4>
nopl   (%rax)
mov    %r14,%rdi
call   1040 <strlen@plt>
cltq
movb   $0x0,-0x1(%rax,%r14,1)
mov    (%r12),%edi
lea    0xf2c(%rip),%rsi
lea    0xf2c(%rip),%rdx
mov    %r14,%rcx
xor    %eax,%eax
call   1090 <fprintf@plt>
mov    %r14,%rdi
mov    %r14,%rsi
xor    %edx,%edx
call   10c0 <execl@plt>
cmp    $0xffffffff,%eax
je     13c0 <main+0x220>
mov    (%r12),%edi
lea    0xefd(%rip),%rsi
lea    0xf08(%rip),%rdx
xor    %eax,%eax
call   1090 <fprintf@plt>
mov    (%r12),%edi
call   10a0 <fflush@plt>
lea    0xec9(%rip),%rdi
mov    -0x30(%rbp),%rsi
xor    %eax,%eax
call   1060 <printf@plt>
mov    0x0(%r13),%edx
test   %edx,%edx
jle    1288 <main+0xe8>
mov    %r14,%rdi
xor    %esi,%esi
call   1070 <memset@plt>
mov    %r14,%rbx
nopl   0x0(%rax,%rax,1)
xor    %eax,%eax
call   1080 <getchar@plt>
mov    %al,(%rbx)
add    $0x1,%rbx
cmp    $0xa,%al
jne    1290 <main+0xf0>
mov    (%r14),%sil
cmp    $0xa,%sil
jne    12b9 <main+0x119>
lea    0xe87(%rip),%rdi
call   1050 <system@plt>
mov    (%r14),%sil
lea    -0x51(%rsi),%ecx
cmp    $0x23,%cl
ja     1200 <main+0x60>
movzbl %cl,%edx
lea    0xd51(%rip),%rdi
movslq (%rdi,%rdx,4),%rax
add    %rdi,%rax
jmp    *%rax
mov    0x1(%r14),%al
cmp    $0xa,%al
je     16f1 <main+0x551>
cmp    $0x20,%cl
ja     1200 <main+0x60>
lea    0xdbc(%rip),%rdi
movslq (%rdi,%rdx,4),%rcx
add    %rdi,%rcx
jmp    *%rcx
or     $0x20,%al
cmp    $0x75,%al
jne    1322 <main+0x182>
mov    0x2(%r14),%al
or     $0x20,%al
cmp    $0x69,%al
jne    1322 <main+0x182>
mov    0x3(%r14),%al
or     $0x20,%al
cmp    $0x74,%al
jne    1322 <main+0x182>
cmpb   $0xa,0x4(%r14)
je     16f1 <main+0x551>
cmp    $0x64,%sil
je     13e0 <main+0x240>
cmp    $0x63,%sil
jne    1200 <main+0x60>
cs nopw 0x0(%rax,%rax,1)
cmpb   $0x70,0x1(%r14)
jne    1200 <main+0x60>
cmpb   $0x72,0x2(%r14)
jne    1200 <main+0x60>
cmpb   $0x6f,0x3(%r14)
jne    1200 <main+0x60>
cmpb   $0x6d,0x4(%r14)
jne    1200 <main+0x60>
cmpb   $0x70,0x5(%r14)
jne    1200 <main+0x60>
cmpb   $0x74,0x6(%r14)
jne    1200 <main+0x60>
xor    %ecx,%ecx
cmpb   $0x20,0x7(%r14)
sete   %cl
add    $0x7,%ecx
mov    0x0(%r13),%r9d
sub    %ecx,%r9d
jle    1264 <main+0xc4>
mov    %ecx,%edx
cmp    $0x8,%r9d
jae    150d <main+0x36d>
mov    %rdx,%rsi
xor    %ecx,%ecx
test   $0x1,%r9b
je     165e <main+0x4be>
jmp    1685 <main+0x4e5>
nopl   0x0(%rax)
lea    0xda2(%rip),%rdi
call   1030 <puts@plt>
jmp    1242 <main+0xa2>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
cmpb   $0x70,0x1(%r14)
jne    1200 <main+0x60>
cmpb   $0x72,0x2(%r14)
jne    1200 <main+0x60>
cmpb   $0x6f,0x3(%r14)
jne    1200 <main+0x60>
cmpb   $0x6d,0x4(%r14)
jne    1200 <main+0x60>
cmpb   $0x70,0x5(%r14)
jne    1200 <main+0x60>
cmpb   $0x74,0x6(%r14)
jne    1200 <main+0x60>
mov    -0x30(%rbp),%rax
movb   $0x3e,(%rax)
mov    0x0(%r13),%edx
cmp    $0x2,%edx
jl     1264 <main+0xc4>
add    $0xffffffff,%edx
mov    -0x38(%rbp),%rdi
xor    %esi,%esi
call   1070 <memset@plt>
jmp    1264 <main+0xc4>
cmpb   $0x6c,0x1(%r14)
jne    1200 <main+0x60>
cmpb   $0x6f,0x2(%r14)
jne    1200 <main+0x60>
cmpb   $0x63,0x3(%r14)
jne    1200 <main+0x60>
cmpb   $0x6b,0x4(%r14)
jne    1200 <main+0x60>
cmpb   $0xa,0x5(%r14)
jne    1200 <main+0x60>
mov    0x0(%r13),%edx
test   %edx,%edx
jle    1492 <main+0x2f2>
mov    %r14,%rdi
xor    %esi,%esi
call   1070 <memset@plt>
mov    %r15,%rdi
xor    %eax,%eax
call   1060 <printf@plt>
mov    %r14,%rbx
nop
xor    %eax,%eax
call   1080 <getchar@plt>
mov    %al,(%rbx)
add    $0x1,%rbx
cmp    $0xa,%al
jne    14a0 <main+0x300>
cmpb   $0x4e,(%r14)
jne    1480 <main+0x2e0>
cmpb   $0x4f,0x1(%r14)
jne    1480 <main+0x2e0>
cmpb   $0x54,0x2(%r14)
jne    1480 <main+0x2e0>
cmpb   $0x53,0x3(%r14)
jne    1480 <main+0x2e0>
cmpb   $0x4f,0x4(%r14)
jne    1480 <main+0x2e0>
cmpb   $0x53,0x5(%r14)
jne    1480 <main+0x2e0>
cmpb   $0x45,0x6(%r14)
jne    1480 <main+0x2e0>
cmpb   $0x43,0x7(%r14)
jne    1480 <main+0x2e0>
cmpb   $0x52,0x8(%r14)
jne    1480 <main+0x2e0>
cmpb   $0x45,0x9(%r14)
jne    1480 <main+0x2e0>
cmpb   $0x54,0xa(%r14)
jne    1480 <main+0x2e0>
cmpb   $0xa,0xb(%r14)
jne    1480 <main+0x2e0>
jmp    1264 <main+0xc4>
cmp    $0x20,%r9d
jae    151a <main+0x37a>
xor    %ecx,%ecx
jmp    1613 <main+0x473>
mov    %r9d,%ecx
and    $0xffffffe0,%ecx
lea    -0x20(%rcx),%rsi
mov    %rsi,%r8
shr    $0x5,%r8
add    $0x1,%r8
test   %rsi,%rsi
mov    -0x30(%rbp),%rax
je     1663 <main+0x4c3>
mov    %r8,%rdi
and    $0xfffffffffffffffe,%rdi
xor    %ebx,%ebx
movdqa 0xab3(%rip),%xmm3
nopl   (%rax)
mov    %rbx,%rsi
or     %rdx,%rsi
movdqu (%r14,%rsi,1),%xmm0
movdqu 0x10(%r14,%rsi,1),%xmm1
movdqa %xmm0,%xmm2
pcmpeqb %xmm3,%xmm2
pandn  %xmm0,%xmm2
movdqa %xmm1,%xmm0
pcmpeqb %xmm3,%xmm0
pandn  %xmm1,%xmm0
movdqa %xmm2,(%rax,%rbx,1)
movdqa %xmm0,0x10(%rax,%rbx,1)
lea    0x20(%rbx),%rsi
or     %rdx,%rsi
movdqu (%r14,%rsi,1),%xmm0
movdqu 0x10(%r14,%rsi,1),%xmm1
movdqa %xmm0,%xmm2
pcmpeqb %xmm3,%xmm2
pandn  %xmm0,%xmm2
movdqa %xmm1,%xmm0
pcmpeqb %xmm3,%xmm0
pandn  %xmm1,%xmm0
movdqa %xmm2,0x20(%rax,%rbx,1)
movdqa %xmm0,0x30(%rax,%rbx,1)
add    $0x40,%rbx
add    $0xfffffffffffffffe,%rdi
jne    1550 <main+0x3b0>
test   $0x1,%r8b
je     1604 <main+0x464>
mov    %rbx,%rsi
or     %rdx,%rsi
movdqu (%r14,%rsi,1),%xmm0
movdqu 0x10(%r14,%rsi,1),%xmm1
movdqa %xmm0,%xmm2
pcmpeqb %xmm3,%xmm2
pandn  %xmm0,%xmm2
movdqa %xmm1,%xmm0
pcmpeqb %xmm3,%xmm0
pandn  %xmm1,%xmm0
movdqa %xmm2,(%rax,%rbx,1)
movdqa %xmm0,0x10(%rax,%rbx,1)
cmp    %r9,%rcx
je     1264 <main+0xc4>
test   $0x18,%r9b
je     1679 <main+0x4d9>
mov    -0x30(%rbp),%rax
movdqa 0x9f1(%rip),%xmm2
mov    %rcx,%rdi
mov    %r9d,%ecx
and    $0xfffffff8,%ecx
lea    (%rcx,%rdx,1),%rsi
add    %r14,%rdx
nop
movq   (%rdx,%rdi,1),%xmm0
movdqa %xmm0,%xmm1
pcmpeqb %xmm2,%xmm1
pandn  %xmm0,%xmm1
movq   %xmm1,(%rax,%rdi,1)
add    $0x8,%rdi
cmp    %rdi,%rcx
jne    1630 <main+0x490>
cmp    %r9,%rcx
je     1264 <main+0xc4>
test   $0x1,%r9b
jne    1685 <main+0x4e5>
mov    %rcx,%rdx
jmp    16a7 <main+0x507>
xor    %ebx,%ebx
movdqa 0x993(%rip),%xmm3
test   $0x1,%r8b
jne    15ce <main+0x42e>
jmp    1604 <main+0x464>
or     %rcx,%rdx
mov    %rdx,%rsi
test   $0x1,%r9b
je     165e <main+0x4be>
movzbl (%r14,%rsi,1),%edx
cmp    $0xa,%dl
mov    $0x0,%eax
cmove  %eax,%edx
mov    -0x30(%rbp),%rax
mov    %dl,(%rax,%rcx,1)
mov    %rcx,%rdx
or     $0x1,%rdx
add    $0x1,%rsi
not    %rcx
add    %r9,%rcx
je     1264 <main+0xc4>
add    -0x40(%rbp),%rsi
sub    %rdx,%r9
add    -0x38(%rbp),%rdx
xor    %ecx,%ecx
movzbl -0x1(%rsi,%rcx,1),%edi
cmp    $0xa,%dil
mov    $0x0,%eax
cmove  %eax,%edi
movzbl (%rsi,%rcx,1),%ebx
cmp    $0xa,%bl
cmove  %eax,%ebx
mov    %dil,-0x1(%rdx,%rcx,1)
mov    %bl,(%rdx,%rcx,1)
add    $0x2,%rcx
cmp    %rcx,%r9
jne    16c0 <main+0x520>
jmp    1264 <main+0xc4>
xor    %edi,%edi
call   10b0 <exit@plt>

LLVM IR (-O0):
@SHRT_MAX = global i32 0
@.str = [4 x i8] c"%s \00"
@.str.1 = [6 x i8] c"clear\00"
@.str.2 = [9 x i8] c"unlock: \00"
@.str.3 = [12 x i8] c"NOTSOSECRET\00"
@stdout = global i32 0
@.str.4 = [7 x i8] c"%s %s\0A\00"
@.str.5 = [14 x i8] c"about to run:\00"
@.str.6 = [16 x i8] c"failed command\0A\00"
@.str.7 = [4 x i8] c"%s\0A\00"
@.str.8 = [13 x i8] c"Hello world?\00"
define void @main() {
%1 = alloca i8
%2 = alloca i8*
%3 = alloca i64
%4 = alloca i64
%5 = alloca i32
%6 = alloca i32
%7 = alloca i32
%8 = alloca i32
%9 = alloca i32
%10 = alloca i32
%11 = load i32, i32* @SHRT_MAX
%12 = zext i32 %11 to i64
%13 = call i8* @llvm.stacksave()
store i8* %13, i8** %2
%14 = alloca i8, i64 %12
store i64 %12, i64* %3
%15 = load i32, i32* @SHRT_MAX
%16 = zext i32 %15 to i64
%17 = alloca i8, i64 %16
store i64 %16, i64* %4
%18 = getelementptr inbounds i8, i8* %17, i64 0
store i8 62, i8* %18
br label %19
19: ; preds = %410, %0
br label %20
20: ; preds = %19
%21 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i8* %17)
store i32 0, i32* %7
br label %22
22: ; preds = %30, %20
%23 = load i32, i32* %7
%24 = load i32, i32* @SHRT_MAX
%25 = icmp slt i32 %23, %24
br i1 %25, label %26, label %33
26: ; preds = %22
%27 = load i32, i32* %7
%28 = sext i32 %27 to i64
%29 = getelementptr inbounds i8, i8* %14, i64 %28
store i8 0, i8* %29
br label %30
30: ; preds = %26
%31 = load i32, i32* %7
%32 = add nsw i32 %31, 1
store i32 %32, i32* %7
br label %22
33: ; preds = %22
store i32 0, i32* %7
br label %34
34: ; preds = %41, %33
%35 = call signext i8 (...) @getchar()
store i8 %35, i8* %1
%36 = load i8, i8* %1
%37 = load i32, i32* %7
%38 = add nsw i32 %37, 1
store i32 %38, i32* %7
%39 = sext i32 %37 to i64
%40 = getelementptr inbounds i8, i8* %14, i64 %39
store i8 %36, i8* %40
br label %41
41: ; preds = %34
%42 = load i8, i8* %1
%43 = sext i8 %42 to i32
%44 = icmp ne i32 %43, 10
br i1 %44, label %34, label %45
45: ; preds = %41
%46 = getelementptr inbounds i8, i8* %14, i64 0
%47 = load i8, i8* %46
%48 = sext i8 %47 to i32
%49 = icmp eq i32 %48, 10
br i1 %49, label %50, label %52
50: ; preds = %45
%51 = call i32 @system(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.1, i64 0, i64 0))
br label %52
52: ; preds = %50, %45
%53 = getelementptr inbounds i8, i8* %14, i64 0
%54 = load i8, i8* %53
%55 = sext i8 %54 to i32
%56 = icmp eq i32 %55, 81
br i1 %56, label %62, label %57
57: ; preds = %52
%58 = getelementptr inbounds i8, i8* %14, i64 0
%59 = load i8, i8* %58
%60 = sext i8 %59 to i32
%61 = icmp eq i32 %60, 113
br i1 %61, label %62, label %69
62: ; preds = %57, %52
%63 = getelementptr inbounds i8, i8* %14, i64 1
%64 = load i8, i8* %63
%65 = sext i8 %64 to i32
%66 = icmp eq i32 %65, 10
br i1 %66, label %67, label %69
67: ; preds = %62
%68 = call i32 @exit(i32 0)
unreachable
69: ; preds = %62, %57
%70 = getelementptr inbounds i8, i8* %14, i64 0
%71 = load i8, i8* %70
%72 = sext i8 %71 to i32
%73 = icmp eq i32 %72, 81
br i1 %73, label %79, label %74
74: ; preds = %69
%75 = getelementptr inbounds i8, i8* %14, i64 0
%76 = load i8, i8* %75
%77 = sext i8 %76 to i32
%78 = icmp eq i32 %77, 113
br i1 %78, label %79, label %116
79: ; preds = %74, %69
%80 = getelementptr inbounds i8, i8* %14, i64 1
%81 = load i8, i8* %80
%82 = sext i8 %81 to i32
%83 = icmp eq i32 %82, 85
br i1 %83, label %89, label %84
84: ; preds = %79
%85 = getelementptr inbounds i8, i8* %14, i64 1
%86 = load i8, i8* %85
%87 = sext i8 %86 to i32
%88 = icmp eq i32 %87, 117
br i1 %88, label %89, label %116
89: ; preds = %84, %79
%90 = getelementptr inbounds i8, i8* %14, i64 2
%91 = load i8, i8* %90
%92 = sext i8 %91 to i32
%93 = icmp eq i32 %92, 73
br i1 %93, label %99, label %94
94: ; preds = %89
%95 = getelementptr inbounds i8, i8* %14, i64 2
%96 = load i8, i8* %95
%97 = sext i8 %96 to i32
%98 = icmp eq i32 %97, 105
br i1 %98, label %99, label %116
99: ; preds = %94, %89
%100 = getelementptr inbounds i8, i8* %14, i64 3
%101 = load i8, i8* %100
%102 = sext i8 %101 to i32
%103 = icmp eq i32 %102, 84
br i1 %103, label %109, label %104
104: ; preds = %99
%105 = getelementptr inbounds i8, i8* %14, i64 3
%106 = load i8, i8* %105
%107 = sext i8 %106 to i32
%108 = icmp eq i32 %107, 116
br i1 %108, label %109, label %116
109: ; preds = %104, %99
%110 = getelementptr inbounds i8, i8* %14, i64 4
%111 = load i8, i8* %110
%112 = sext i8 %111 to i32
%113 = icmp eq i32 %112, 10
br i1 %113, label %114, label %116
114: ; preds = %109
%115 = call i32 @exit(i32 0)
unreachable
116: ; preds = %109, %104, %94, %84, %74
br label %117
117: ; preds = %116
%118 = getelementptr inbounds i8, i8* %14, i64 0
%119 = load i8, i8* %118
%120 = sext i8 %119 to i32
%121 = icmp eq i32 %120, 116
br i1 %121, label %122, label %263
122: ; preds = %117
%123 = getelementptr inbounds i8, i8* %14, i64 1
%124 = load i8, i8* %123
%125 = sext i8 %124 to i32
%126 = icmp eq i32 %125, 108
br i1 %126, label %127, label %263
127: ; preds = %122
%128 = getelementptr inbounds i8, i8* %14, i64 2
%129 = load i8, i8* %128
%130 = sext i8 %129 to i32
%131 = icmp eq i32 %130, 111
br i1 %131, label %132, label %263
132: ; preds = %127
%133 = getelementptr inbounds i8, i8* %14, i64 3
%134 = load i8, i8* %133
%135 = sext i8 %134 to i32
%136 = icmp eq i32 %135, 99
br i1 %136, label %137, label %263
137: ; preds = %132
%138 = getelementptr inbounds i8, i8* %14, i64 4
%139 = load i8, i8* %138
%140 = sext i8 %139 to i32
%141 = icmp eq i32 %140, 107
br i1 %141, label %142, label %263
142: ; preds = %137
%143 = getelementptr inbounds i8, i8* %14, i64 5
%144 = load i8, i8* %143
%145 = sext i8 %144 to i32
%146 = icmp eq i32 %145, 10
br i1 %146, label %147, label %263
147: ; preds = %142
br label %148
148: ; preds = %261, %147
br label %149
149: ; preds = %148
store i32 0, i32* %7
br label %150
150: ; preds = %158, %149
%151 = load i32, i32* %7
%152 = load i32, i32* @SHRT_MAX
%153 = icmp slt i32 %151, %152
br i1 %153, label %154, label %161
154: ; preds = %150
%155 = load i32, i32* %7
%156 = sext i32 %155 to i64
%157 = getelementptr inbounds i8, i8* %14, i64 %156
store i8 0, i8* %157
br label %158
158: ; preds = %154
%159 = load i32, i32* %7
%160 = add nsw i32 %159, 1
store i32 %160, i32* %7
br label %150
161: ; preds = %150
store i32 0, i32* %5
%162 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.2, i64 0, i64 0))
store i32 0, i32* %7
br label %163
163: ; preds = %170, %161
%164 = call signext i8 (...) @getchar()
store i8 %164, i8* %1
%165 = load i8, i8* %1
%166 = load i32, i32* %7
%167 = add nsw i32 %166, 1
store i32 %167, i32* %7
%168 = sext i32 %166 to i64
%169 = getelementptr inbounds i8, i8* %14, i64 %168
store i8 %165, i8* %169
br label %170
170: ; preds = %163
%171 = load i8, i8* %1
%172 = sext i8 %171 to i32
%173 = icmp ne i32 %172, 10
br i1 %173, label %163, label %174
174: ; preds = %170
%175 = getelementptr inbounds i8, i8* %14, i64 0
%176 = load i8, i8* %175
%177 = sext i8 %176 to i32
%178 = load i8, i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.3, i64 0, i64 0)
%179 = sext i8 %178 to i32
%180 = icmp eq i32 %177, %179
br i1 %180, label %181, label %257
181: ; preds = %174
%182 = getelementptr inbounds i8, i8* %14, i64 1
%183 = load i8, i8* %182
%184 = sext i8 %183 to i32
%185 = load i8, i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.3, i64 0, i64 1)
%186 = sext i8 %185 to i32
%187 = icmp eq i32 %184, %186
br i1 %187, label %188, label %257
188: ; preds = %181
%189 = getelementptr inbounds i8, i8* %14, i64 2
%190 = load i8, i8* %189
%191 = sext i8 %190 to i32
%192 = load i8, i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.3, i64 0, i64 2)
%193 = sext i8 %192 to i32
%194 = icmp eq i32 %191, %193
br i1 %194, label %195, label %257
195: ; preds = %188
%196 = getelementptr inbounds i8, i8* %14, i64 3
%197 = load i8, i8* %196
%198 = sext i8 %197 to i32
%199 = load i8, i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.3, i64 0, i64 3)
%200 = sext i8 %199 to i32
%201 = icmp eq i32 %198, %200
br i1 %201, label %202, label %257
202: ; preds = %195
%203 = getelementptr inbounds i8, i8* %14, i64 4
%204 = load i8, i8* %203
%205 = sext i8 %204 to i32
%206 = load i8, i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.3, i64 0, i64 4)
%207 = sext i8 %206 to i32
%208 = icmp eq i32 %205, %207
br i1 %208, label %209, label %257
209: ; preds = %202
%210 = getelementptr inbounds i8, i8* %14, i64 5
%211 = load i8, i8* %210
%212 = sext i8 %211 to i32
%213 = load i8, i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.3, i64 0, i64 5)
%214 = sext i8 %213 to i32
%215 = icmp eq i32 %212, %214
br i1 %215, label %216, label %257
216: ; preds = %209
%217 = getelementptr inbounds i8, i8* %14, i64 6
%218 = load i8, i8* %217
%219 = sext i8 %218 to i32
%220 = load i8, i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.3, i64 0, i64 6)
%221 = sext i8 %220 to i32
%222 = icmp eq i32 %219, %221
br i1 %222, label %223, label %257
223: ; preds = %216
%224 = getelementptr inbounds i8, i8* %14, i64 7
%225 = load i8, i8* %224
%226 = sext i8 %225 to i32
%227 = load i8, i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.3, i64 0, i64 7)
%228 = sext i8 %227 to i32
%229 = icmp eq i32 %226, %228
br i1 %229, label %230, label %257
230: ; preds = %223
%231 = getelementptr inbounds i8, i8* %14, i64 8
%232 = load i8, i8* %231
%233 = sext i8 %232 to i32
%234 = load i8, i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.3, i64 0, i64 8)
%235 = sext i8 %234 to i32
%236 = icmp eq i32 %233, %235
br i1 %236, label %237, label %257
237: ; preds = %230
%238 = getelementptr inbounds i8, i8* %14, i64 9
%239 = load i8, i8* %238
%240 = sext i8 %239 to i32
%241 = load i8, i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.3, i64 0, i64 9)
%242 = sext i8 %241 to i32
%243 = icmp eq i32 %240, %242
br i1 %243, label %244, label %257
244: ; preds = %237
%245 = getelementptr inbounds i8, i8* %14, i64 10
%246 = load i8, i8* %245
%247 = sext i8 %246 to i32
%248 = load i8, i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.3, i64 0, i64 10)
%249 = sext i8 %248 to i32
%250 = icmp eq i32 %247, %249
br i1 %250, label %251, label %257
251: ; preds = %244
%252 = getelementptr inbounds i8, i8* %14, i64 11
%253 = load i8, i8* %252
%254 = sext i8 %253 to i32
%255 = icmp eq i32 %254, 10
br i1 %255, label %256, label %257
256: ; preds = %251
store i32 1, i32* %5
br label %257
257: ; preds = %256, %251, %244, %237, %230, %223, %216, %209, %202, %195, %188, %181, %174
%258 = load i32, i32* %5
%259 = icmp eq i32 %258, 1
br i1 %259, label %260, label %261
260: ; preds = %257
br label %262
261: ; preds = %257
br label %148
262: ; preds = %260
br label %263
263: ; preds = %262, %142, %137, %132, %127, %122, %117
%264 = getelementptr inbounds i8, i8* %14, i64 0
%265 = load i8, i8* %264
%266 = sext i8 %265 to i32
%267 = icmp eq i32 %266, 99
br i1 %267, label %268, label %336
268: ; preds = %263
%269 = getelementptr inbounds i8, i8* %14, i64 1
%270 = load i8, i8* %269
%271 = sext i8 %270 to i32
%272 = icmp eq i32 %271, 112
br i1 %272, label %273, label %336
273: ; preds = %268
%274 = getelementptr inbounds i8, i8* %14, i64 2
%275 = load i8, i8* %274
%276 = sext i8 %275 to i32
%277 = icmp eq i32 %276, 114
br i1 %277, label %278, label %336
278: ; preds = %273
%279 = getelementptr inbounds i8, i8* %14, i64 3
%280 = load i8, i8* %279
%281 = sext i8 %280 to i32
%282 = icmp eq i32 %281, 111
br i1 %282, label %283, label %336
283: ; preds = %278
%284 = getelementptr inbounds i8, i8* %14, i64 4
%285 = load i8, i8* %284
%286 = sext i8 %285 to i32
%287 = icmp eq i32 %286, 109
br i1 %287, label %288, label %336
288: ; preds = %283
%289 = getelementptr inbounds i8, i8* %14, i64 5
%290 = load i8, i8* %289
%291 = sext i8 %290 to i32
%292 = icmp eq i32 %291, 112
br i1 %292, label %293, label %336
293: ; preds = %288
%294 = getelementptr inbounds i8, i8* %14, i64 6
%295 = load i8, i8* %294
%296 = sext i8 %295 to i32
%297 = icmp eq i32 %296, 116
br i1 %297, label %298, label %336
298: ; preds = %293
store i32 0, i32* %8
%299 = getelementptr inbounds i8, i8* %14, i64 7
%300 = load i8, i8* %299
%301 = sext i8 %300 to i32
%302 = icmp eq i32 %301, 32
br i1 %302, label %303, label %304
303: ; preds = %298
store i32 8, i32* %7
br label %305
304: ; preds = %298
store i32 7, i32* %7
br label %305
305: ; preds = %304, %303
%306 = load i32, i32* %7
br label %307
307: ; preds = %332, %305
%308 = load i32, i32* %7
%309 = load i32, i32* @SHRT_MAX
%310 = icmp slt i32 %308, %309
br i1 %310, label %311, label %335
311: ; preds = %307
%312 = load i32, i32* %7
%313 = sext i32 %312 to i64
%314 = getelementptr inbounds i8, i8* %14, i64 %313
%315 = load i8, i8* %314
%316 = load i32, i32* %8
%317 = sext i32 %316 to i64
%318 = getelementptr inbounds i8, i8* %17, i64 %317
store i8 %315, i8* %318
%319 = load i32, i32* %8
%320 = sext i32 %319 to i64
%321 = getelementptr inbounds i8, i8* %17, i64 %320
%322 = load i8, i8* %321
%323 = sext i8 %322 to i32
%324 = icmp eq i32 %323, 10
br i1 %324, label %325, label %329
325: ; preds = %311
%326 = load i32, i32* %8
%327 = sext i32 %326 to i64
%328 = getelementptr inbounds i8, i8* %17, i64 %327
store i8 0, i8* %328
br label %329
329: ; preds = %325, %311
%330 = load i32, i32* %8
%331 = add nsw i32 %330, 1
store i32 %331, i32* %8
br label %332
332: ; preds = %329
%333 = load i32, i32* %7
%334 = add nsw i32 %333, 1
store i32 %334, i32* %7
br label %307
335: ; preds = %307
store i32 1, i32* %6
br label %386
336: ; preds = %293, %288, %283, %278, %273, %268, %263
%337 = getelementptr inbounds i8, i8* %14, i64 0
%338 = load i8, i8* %337
%339 = sext i8 %338 to i32
%340 = icmp eq i32 %339, 100
br i1 %340, label %341, label %385
341: ; preds = %336
%342 = getelementptr inbounds i8, i8* %14, i64 1
%343 = load i8, i8* %342
%344 = sext i8 %343 to i32
%345 = icmp eq i32 %344, 112
br i1 %345, label %346, label %385
346: ; preds = %341
%347 = getelementptr inbounds i8, i8* %14, i64 2
%348 = load i8, i8* %347
%349 = sext i8 %348 to i32
%350 = icmp eq i32 %349, 114
br i1 %350, label %351, label %385
351: ; preds = %346
%352 = getelementptr inbounds i8, i8* %14, i64 3
%353 = load i8, i8* %352
%354 = sext i8 %353 to i32
%355 = icmp eq i32 %354, 111
br i1 %355, label %356, label %385
356: ; preds = %351
%357 = getelementptr inbounds i8, i8* %14, i64 4
%358 = load i8, i8* %357
%359 = sext i8 %358 to i32
%360 = icmp eq i32 %359, 109
br i1 %360, label %361, label %385
361: ; preds = %356
%362 = getelementptr inbounds i8, i8* %14, i64 5
%363 = load i8, i8* %362
%364 = sext i8 %363 to i32
%365 = icmp eq i32 %364, 112
br i1 %365, label %366, label %385
366: ; preds = %361
%367 = getelementptr inbounds i8, i8* %14, i64 6
%368 = load i8, i8* %367
%369 = sext i8 %368 to i32
%370 = icmp eq i32 %369, 116
br i1 %370, label %371, label %385
371: ; preds = %366
%372 = getelementptr inbounds i8, i8* %17, i64 0
store i8 62, i8* %372
store i32 1, i32* %7
br label %373
373: ; preds = %381, %371
%374 = load i32, i32* %7
%375 = load i32, i32* @SHRT_MAX
%376 = icmp slt i32 %374, %375
br i1 %376, label %377, label %384
377: ; preds = %373
%378 = load i32, i32* %7
%379 = sext i32 %378 to i64
%380 = getelementptr inbounds i8, i8* %17, i64 %379
store i8 0, i8* %380
br label %381
381: ; preds = %377
%382 = load i32, i32* %7
%383 = add nsw i32 %382, 1
store i32 %383, i32* %7
br label %373
384: ; preds = %373
store i32 1, i32* %6
br label %385
385: ; preds = %384, %366, %361, %356, %351, %346, %341, %336
br label %386
386: ; preds = %385, %335
%387 = load i32, i32* %5
%388 = icmp eq i32 %387, 0
br i1 %388, label %389, label %410
389: ; preds = %386
%390 = load i32, i32* %6
%391 = icmp eq i32 %390, 0
br i1 %391, label %392, label %410
392: ; preds = %389
%393 = call i32 @strlen(i8* %14)
store i32 %393, i32* %9
%394 = load i32, i32* %9
%395 = sub nsw i32 %394, 1
%396 = sext i32 %395 to i64
%397 = getelementptr inbounds i8, i8* %14, i64 %396
store i8 0, i8* %397
%398 = load i32, i32* @stdout
%399 = call i32 (i32, i8*, i8*, ...) @fprintf(i32 %398, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.4, i64 0, i64 0), i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.5, i64 0, i64 0), i8* %14)
%400 = call i32 @execl(i8* %14, i8* %14, i32* null)
store i32 %400, i32* %10
%401 = load i32, i32* %10
%402 = icmp eq i32 %401, -1
br i1 %402, label %403, label %405
403: ; preds = %392
%404 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.6, i64 0, i64 0))
br label %405
405: ; preds = %403, %392
%406 = load i32, i32* @stdout
%407 = call i32 (i32, i8*, i8*, ...) @fprintf(i32 %406, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.7, i64 0, i64 0), i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.8, i64 0, i64 0))
%408 = load i32, i32* @stdout
%409 = call i32 @fflush(i32 %408)
br label %410
410: ; preds = %405, %389, %386
store i32 0, i32* %5
store i32 0, i32* %6
br label %19
}

LLVM IR (-O2):
@SHRT_MAX = global i32 0
@.str = [4 x i8] c"%s \00"
@.str.1 = [6 x i8] c"clear\00"
@.str.2 = [9 x i8] c"unlock: \00"
@stdout = global i32 0
@.str.4 = [7 x i8] c"%s %s\0A\00"
@.str.5 = [14 x i8] c"about to run:\00"
@.str.7 = [4 x i8] c"%s\0A\00"
@.str.8 = [13 x i8] c"Hello world?\00"
@str = [15 x i8] c"failed command\00"
define void @main() {
%1 = load i32, i32* @SHRT_MAX
%2 = zext i32 %1 to i64
%3 = alloca i8, i64 %2
%4 = alloca i8, i64 %2
store i8 62, i8* %4
%5 = getelementptr inbounds i8, i8* %3, i64 1
%6 = getelementptr inbounds i8, i8* %3, i64 2
%7 = getelementptr inbounds i8, i8* %3, i64 3
%8 = getelementptr inbounds i8, i8* %3, i64 4
%9 = getelementptr inbounds i8, i8* %3, i64 5
%10 = getelementptr inbounds i8, i8* %3, i64 11
%11 = getelementptr inbounds i8, i8* %3, i64 6
%12 = getelementptr inbounds i8, i8* %3, i64 7
%13 = getelementptr inbounds i8, i8* %3, i64 8
%14 = getelementptr inbounds i8, i8* %3, i64 9
%15 = getelementptr inbounds i8, i8* %3, i64 10
%16 = getelementptr inbounds i8, i8* %4, i64 1
br label %17
17: ; preds = %218, %0
%18 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i8* %4)
%19 = load i32, i32* @SHRT_MAX
%20 = icmp sgt i32 %19, 0
br i1 %20, label %21, label %23
21: ; preds = %17
%22 = zext i32 %19 to i64
br label %23
23: ; preds = %21, %17
br label %24
24: ; preds = %23, %24
%25 = phi i64 [ %27, %24 ], [ 0, %23 ]
%26 = call signext i8 (...) @getchar()
%27 = add nuw i64 %25, 1
%28 = getelementptr inbounds i8, i8* %3, i64 %25
store i8 %26, i8* %28
%29 = icmp eq i8 %26, 10
br i1 %29, label %30, label %24
30: ; preds = %24
%31 = load i8, i8* %3
%32 = icmp eq i8 %31, 10
br i1 %32, label %33, label %36
33: ; preds = %30
%34 = call i32 @system(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.1, i64 0, i64 0))
%35 = load i8, i8* %3
br label %36
36: ; preds = %33, %30
%37 = phi i8 [ %35, %33 ], [ %31, %30 ]
switch i8 %37, label %302 [
i8 81, label %41
i8 113, label %41
i8 116, label %38
i8 99, label %120
i8 100, label %278
]
38: ; preds = %36
%39 = load i8, i8* %5
%40 = icmp eq i8 %39, 108
br i1 %40, label %57, label %302
41: ; preds = %36, %36
%42 = load i8, i8* %5
%43 = icmp eq i8 %42, 10
br i1 %43, label %44, label %46
44: ; preds = %41
%45 = call i32 @exit(i32 0)
unreachable
46: ; preds = %41
switch i8 %37, label %302 [
i8 81, label %47
i8 113, label %47
i8 99, label %120
i8 100, label %278
]
47: ; preds = %46, %46
switch i8 %42, label %119 [
i8 85, label %48
i8 117, label %48
]
48: ; preds = %47, %47
%49 = load i8, i8* %6
switch i8 %49, label %119 [
i8 73, label %50
i8 105, label %50
]
50: ; preds = %48, %48
%51 = load i8, i8* %7
switch i8 %51, label %119 [
i8 84, label %52
i8 116, label %52
]
52: ; preds = %50, %50
%53 = load i8, i8* %8
%54 = icmp eq i8 %53, 10
br i1 %54, label %55, label %119
55: ; preds = %52
%56 = call i32 @exit(i32 0)
unreachable
57: ; preds = %38
%58 = load i8, i8* %6
%59 = icmp eq i8 %58, 111
br i1 %59, label %60, label %302
60: ; preds = %57
%61 = load i8, i8* %7
%62 = icmp eq i8 %61, 99
br i1 %62, label %63, label %302
63: ; preds = %60
%64 = load i8, i8* %8
%65 = icmp eq i8 %64, 107
br i1 %65, label %66, label %302
66: ; preds = %63
%67 = load i8, i8* %9
%68 = icmp eq i8 %67, 10
br i1 %68, label %69, label %302
69: ; preds = %66, %118
%70 = load i32, i32* @SHRT_MAX
%71 = icmp sgt i32 %70, 0
br i1 %71, label %72, label %74
72: ; preds = %69
%73 = zext i32 %70 to i64
br label %74
74: ; preds = %72, %69
%75 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([9 x i8], [9 x i8]* @.str.2, i64 0, i64 0))
br label %76
76: ; preds = %76, %74
%77 = phi i64 [ %79, %76 ], [ 0, %74 ]
%78 = call signext i8 (...) @getchar()
%79 = add nuw i64 %77, 1
%80 = getelementptr inbounds i8, i8* %3, i64 %77
store i8 %78, i8* %80
%81 = icmp eq i8 %78, 10
br i1 %81, label %82, label %76
82: ; preds = %76
%83 = load i8, i8* %3
%84 = icmp eq i8 %83, 78
br i1 %84, label %85, label %118
85: ; preds = %82
%86 = load i8, i8* %5
%87 = icmp eq i8 %86, 79
br i1 %87, label %88, label %118
88: ; preds = %85
%89 = load i8, i8* %6
%90 = icmp eq i8 %89, 84
br i1 %90, label %91, label %118
91: ; preds = %88
%92 = load i8, i8* %7
%93 = icmp eq i8 %92, 83
br i1 %93, label %94, label %118
94: ; preds = %91
%95 = load i8, i8* %8
%96 = icmp eq i8 %95, 79
br i1 %96, label %97, label %118
97: ; preds = %94
%98 = load i8, i8* %9
%99 = icmp eq i8 %98, 83
br i1 %99, label %100, label %118
100: ; preds = %97
%101 = load i8, i8* %11
%102 = icmp eq i8 %101, 69
br i1 %102, label %103, label %118
103: ; preds = %100
%104 = load i8, i8* %12
%105 = icmp eq i8 %104, 67
br i1 %105, label %106, label %118
106: ; preds = %103
%107 = load i8, i8* %13
%108 = icmp eq i8 %107, 82
br i1 %108, label %109, label %118
109: ; preds = %106
%110 = load i8, i8* %14
%111 = icmp eq i8 %110, 69
br i1 %111, label %112, label %118
112: ; preds = %109
%113 = load i8, i8* %15
%114 = icmp eq i8 %113, 84
br i1 %114, label %115, label %118
115: ; preds = %112
%116 = load i8, i8* %10
%117 = icmp eq i8 %116, 10
br i1 %117, label %218, label %118
118: ; preds = %115, %112, %109, %106, %103, %100, %97, %94, %91, %88, %85, %82
br label %69
119: ; preds = %52, %47, %48, %50
switch i8 %37, label %302 [
i8 99, label %120
i8 100, label %278
]
120: ; preds = %36, %46, %119
%121 = load i8, i8* %5
%122 = icmp eq i8 %121, 112
br i1 %122, label %123, label %302
123: ; preds = %120
%124 = load i8, i8* %6
%125 = icmp eq i8 %124, 114
br i1 %125, label %126, label %302
126: ; preds = %123
%127 = load i8, i8* %7
%128 = icmp eq i8 %127, 111
br i1 %128, label %129, label %302
129: ; preds = %126
%130 = load i8, i8* %8
%131 = icmp eq i8 %130, 109
br i1 %131, label %132, label %302
132: ; preds = %129
%133 = load i8, i8* %9
%134 = icmp eq i8 %133, 112
br i1 %134, label %135, label %302
135: ; preds = %132
%136 = load i8, i8* %11
%137 = icmp eq i8 %136, 116
br i1 %137, label %138, label %302
138: ; preds = %135
%139 = load i8, i8* %12
%140 = icmp eq i8 %139, 32
%141 = select i1 %140, i32 8, i32 7
%142 = load i32, i32* @SHRT_MAX
%143 = icmp sgt i32 %142, %141
br i1 %143, label %144, label %218
144: ; preds = %138
%145 = zext i32 %141 to i64
%146 = sub i32 %142, %141
%147 = zext i32 %146 to i64
%148 = icmp ult i32 %146, 8
br i1 %148, label %241, label %149
149: ; preds = %144
%150 = icmp ult i32 %146, 32
br i1 %150, label %223, label %151
151: ; preds = %149
%152 = and i64 %147, 4294967264
%153 = add nsw i64 %152, -32
%154 = lshr exact i64 %153, 5
%155 = add nuw nsw i64 %154, 1
%156 = and i64 %155, 1
%157 = icmp eq i64 %153, 0
br i1 %157, label %197, label %158
158: ; preds = %151
%159 = and i64 %155, 1152921504606846974
br label %160
160: ; preds = %160, %158
%161 = phi i64 [ 0, %158 ], [ %194, %160 ]
%162 = phi i64 [ 0, %158 ], [ %195, %160 ]
%163 = or i64 %161, %145
%164 = getelementptr inbounds i8, i8* %3, i64 %163
%165 = bitcast i8* %164 to <16 x i8>*
%166 = load <16 x i8>, <16 x i8>* %165
%167 = getelementptr inbounds i8, i8* %164, i64 16
%168 = bitcast i8* %167 to <16 x i8>*
%169 = load <16 x i8>, <16 x i8>* %168
%170 = getelementptr inbounds i8, i8* %4, i64 %161
%171 = icmp eq <16 x i8> %166, <i8 10, i8 10, i8 10, i8 10, i8 10, i8 10, i8 10, i8 10, i8 10, i8 10, i8 10, i8 10, i8 10, i8 10, i8 10, i8 10>
%172 = icmp eq <16 x i8> %169, <i8 10, i8 10, i8 10, i8 10, i8 10, i8 10, i8 10, i8 10, i8 10, i8 10, i8 10, i8 10, i8 10, i8 10, i8 10, i8 10>
%173 = select <16 x i1> %171, <16 x i8> zeroinitializer, <16 x i8> %166
%174 = select <16 x i1> %172, <16 x i8> zeroinitializer, <16 x i8> %169
%175 = bitcast i8* %170 to <16 x i8>*
store <16 x i8> %173, <16 x i8>* %175
%176 = getelementptr inbounds i8, i8* %170, i64 16
%177 = bitcast i8* %176 to <16 x i8>*
store <16 x i8> %174, <16 x i8>* %177
%178 = or i64 %161, 32
%179 = or i64 %178, %145
%180 = getelementptr inbounds i8, i8* %3, i64 %179
%181 = bitcast i8* %180 to <16 x i8>*
%182 = load <16 x i8>, <16 x i8>* %181
%183 = getelementptr inbounds i8, i8* %180, i64 16
%184 = bitcast i8* %183 to <16 x i8>*
%185 = load <16 x i8>, <16 x i8>* %184
%186 = getelementptr inbounds i8, i8* %4, i64 %178
%187 = icmp eq <16 x i8> %182, <i8 10, i8 10, i8 10, i8 10, i8 10, i8 10, i8 10, i8 10, i8 10, i8 10, i8 10, i8 10, i8 10, i8 10, i8 10, i8 10>
%188 = icmp eq <16 x i8> %185, <i8 10, i8 10, i8 10, i8 10, i8 10, i8 10, i8 10, i8 10, i8 10, i8 10, i8 10, i8 10, i8 10, i8 10, i8 10, i8 10>
%189 = select <16 x i1> %187, <16 x i8> zeroinitializer, <16 x i8> %182
%190 = select <16 x i1> %188, <16 x i8> zeroinitializer, <16 x i8> %185
%191 = bitcast i8* %186 to <16 x i8>*
store <16 x i8> %189, <16 x i8>* %191
%192 = getelementptr inbounds i8, i8* %186, i64 16
%193 = bitcast i8* %192 to <16 x i8>*
store <16 x i8> %190, <16 x i8>* %193
%194 = add nuw i64 %161, 64
%195 = add i64 %162, 2
%196 = icmp eq i64 %195, %159
br i1 %196, label %197, label %160
197: ; preds = %160, %151
%198 = phi i64 [ 0, %151 ], [ %194, %160 ]
%199 = icmp eq i64 %156, 0
br i1 %199, label %216, label %200
200: ; preds = %197
%201 = or i64 %198, %145
%202 = getelementptr inbounds i8, i8* %3, i64 %201
%203 = bitcast i8* %202 to <16 x i8>*
%204 = load <16 x i8>, <16 x i8>* %203
%205 = getelementptr inbounds i8, i8* %202, i64 16
%206 = bitcast i8* %205 to <16 x i8>*
%207 = load <16 x i8>, <16 x i8>* %206
%208 = getelementptr inbounds i8, i8* %4, i64 %198
%209 = icmp eq <16 x i8> %204, <i8 10, i8 10, i8 10, i8 10, i8 10, i8 10, i8 10, i8 10, i8 10, i8 10, i8 10, i8 10, i8 10, i8 10, i8 10, i8 10>
%210 = icmp eq <16 x i8> %207, <i8 10, i8 10, i8 10, i8 10, i8 10, i8 10, i8 10, i8 10, i8 10, i8 10, i8 10, i8 10, i8 10, i8 10, i8 10, i8 10>
%211 = select <16 x i1> %209, <16 x i8> zeroinitializer, <16 x i8> %204
%212 = select <16 x i1> %210, <16 x i8> zeroinitializer, <16 x i8> %207
%213 = bitcast i8* %208 to <16 x i8>*
store <16 x i8> %211, <16 x i8>* %213
%214 = getelementptr inbounds i8, i8* %208, i64 16
%215 = bitcast i8* %214 to <16 x i8>*
store <16 x i8> %212, <16 x i8>* %215
br label %216
216: ; preds = %197, %200
%217 = icmp eq i64 %152, %147
br i1 %217, label %218, label %219
218: ; preds = %115, %255, %260, %216, %239, %299, %296, %138, %313
br label %17
219: ; preds = %216
%220 = or i64 %152, %145
%221 = and i64 %147, 24
%222 = icmp eq i64 %221, 0
br i1 %222, label %241, label %223
223: ; preds = %149, %219
%224 = phi i64 [ %152, %219 ], [ 0, %149 ]
%225 = and i64 %147, 4294967288
%226 = add nuw nsw i64 %225, %145
br label %227
227: ; preds = %227, %223
%228 = phi i64 [ %224, %223 ], [ %237, %227 ]
%229 = add i64 %228, %145
%230 = getelementptr inbounds i8, i8* %3, i64 %229
%231 = bitcast i8* %230 to <8 x i8>*
%232 = load <8 x i8>, <8 x i8>* %231
%233 = getelementptr inbounds i8, i8* %4, i64 %228
%234 = icmp eq <8 x i8> %232, <i8 10, i8 10, i8 10, i8 10, i8 10, i8 10, i8 10, i8 10>
%235 = select <8 x i1> %234, <8 x i8> zeroinitializer, <8 x i8> %232
%236 = bitcast i8* %233 to <8 x i8>*
store <8 x i8> %235, <8 x i8>* %236
%237 = add nuw i64 %228, 8
%238 = icmp eq i64 %237, %225
br i1 %238, label %239, label %227
239: ; preds = %227
%240 = icmp eq i64 %225, %147
br i1 %240, label %218, label %241
241: ; preds = %144, %219, %239
%242 = phi i64 [ %145, %144 ], [ %220, %219 ], [ %226, %239 ]
%243 = phi i64 [ 0, %144 ], [ %152, %219 ], [ %225, %239 ]
%244 = xor i64 %243, -1
%245 = and i64 %147, 1
%246 = icmp eq i64 %245, 0
br i1 %246, label %255, label %247
247: ; preds = %241
%248 = getelementptr inbounds i8, i8* %3, i64 %242
%249 = load i8, i8* %248
%250 = getelementptr inbounds i8, i8* %4, i64 %243
%251 = icmp eq i8 %249, 10
%252 = select i1 %251, i8 0, i8 %249
store i8 %252, i8* %250
%253 = or i64 %243, 1
%254 = add nuw nsw i64 %242, 1
br label %255
255: ; preds = %247, %241
%256 = phi i64 [ %242, %241 ], [ %254, %247 ]
%257 = phi i64 [ %243, %241 ], [ %253, %247 ]
%258 = sub nsw i64 0, %147
%259 = icmp eq i64 %244, %258
br i1 %259, label %218, label %260
260: ; preds = %255, %260
%261 = phi i64 [ %276, %260 ], [ %256, %255 ]
%262 = phi i64 [ %275, %260 ], [ %257, %255 ]
%263 = getelementptr inbounds i8, i8* %3, i64 %261
%264 = load i8, i8* %263
%265 = getelementptr inbounds i8, i8* %4, i64 %262
%266 = icmp eq i8 %264, 10
%267 = select i1 %266, i8 0, i8 %264
store i8 %267, i8* %265
%268 = add nuw nsw i64 %262, 1
%269 = add nuw nsw i64 %261, 1
%270 = getelementptr inbounds i8, i8* %3, i64 %269
%271 = load i8, i8* %270
%272 = getelementptr inbounds i8, i8* %4, i64 %268
%273 = icmp eq i8 %271, 10
%274 = select i1 %273, i8 0, i8 %271
store i8 %274, i8* %272
%275 = add nuw nsw i64 %262, 2
%276 = add nuw nsw i64 %261, 2
%277 = icmp eq i64 %275, %147
br i1 %277, label %218, label %260
278: ; preds = %36, %46, %119
%279 = load i8, i8* %5
%280 = icmp eq i8 %279, 112
br i1 %280, label %281, label %302
281: ; preds = %278
%282 = load i8, i8* %6
%283 = icmp eq i8 %282, 114
br i1 %283, label %284, label %302
284: ; preds = %281
%285 = load i8, i8* %7
%286 = icmp eq i8 %285, 111
br i1 %286, label %287, label %302
287: ; preds = %284
%288 = load i8, i8* %8
%289 = icmp eq i8 %288, 109
br i1 %289, label %290, label %302
290: ; preds = %287
%291 = load i8, i8* %9
%292 = icmp eq i8 %291, 112
br i1 %292, label %293, label %302
293: ; preds = %290
%294 = load i8, i8* %11
%295 = icmp eq i8 %294, 116
br i1 %295, label %296, label %302
296: ; preds = %293
store i8 62, i8* %4
%297 = load i32, i32* @SHRT_MAX
%298 = icmp sgt i32 %297, 1
br i1 %298, label %299, label %218
299: ; preds = %296
%300 = add nsw i32 %297, -1
%301 = zext i32 %300 to i64
br label %218
302: ; preds = %36, %46, %66, %63, %60, %57, %38, %293, %290, %287, %284, %281, %278, %135, %132, %129, %126, %123, %120, %119
%303 = call i32 @strlen(i8* %3)
%304 = add nsw i32 %303, -1
%305 = sext i32 %304 to i64
%306 = getelementptr inbounds i8, i8* %3, i64 %305
store i8 0, i8* %306
%307 = load i32, i32* @stdout
%308 = call i32 (i32, i8*, i8*, ...) @fprintf(i32 %307, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.4, i64 0, i64 0), i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.5, i64 0, i64 0), i8* %3)
%309 = call i32 @execl(i8* %3, i8* %3, i32* null)
%310 = icmp eq i32 %309, -1
br i1 %310, label %311, label %313
311: ; preds = %302
%312 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([15 x i8], [15 x i8]* @str, i64 0, i64 0))
br label %313
313: ; preds = %311, %302
%314 = load i32, i32* @stdout
%315 = call i32 (i32, i8*, i8*, ...) @fprintf(i32 %314, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.7, i64 0, i64 0), i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.8, i64 0, i64 0))
%316 = load i32, i32* @stdout
%317 = call i32 @fflush(i32 %316)
br label %218
}