#define NULL ((void *)0)
typedef unsigned long size_t; // Customize by platform.
typedef long intptr_t;
typedef unsigned long uintptr_t;
typedef long scalar_t__; // Either arithmetic or pointer type.
/* By default, we understand bool (as a convenience). */
typedef int bool;
#define false 0
#define true 1

/* Forward declarations */

/* Type definitions */

/* Variables and functions */
int /*<<< orphan*/ cleanFilename(char *);
size_t indexOf(char *, char);
int /*<<< orphan*/ interrupt(int, int, char *, ...);
int strlen(char *);
scalar_t__ strncmp(char *, char *, int);
int main() {
  char buffer[80];
  char *filename1, *filename2, *filename3, *filename4;
  char fileContentBuffer[13312];
  char prompt[8], type[6], execute[9], exit[6], delete[8], copy[6], dir[4],
      create[8], errorMsg[15], newline[3];
  unsigned int i;
  int numSectors;
  prompt[0] = 'S';
  prompt[1] = 'H';
  prompt[2] = 'E';
  prompt[3] = 'L';
  prompt[4] = 'L';
  prompt[5] = '>';
  prompt[6] = ' ';
  prompt[7] = '\0';
  type[0] = 't';
  type[1] = 'y';
  type[2] = 'p';
  type[3] = 'e';
  type[4] = ' ';
  type[5] = '\0';
  execute[0] = 'e';
  execute[1] = 'x';
  execute[2] = 'e';
  execute[3] = 'c';
  execute[4] = 'u';
  execute[5] = 't';
  execute[6] = 'e';
  execute[7] = ' ';
  execute[8] = '\0';
  exit[0] = 'e';
  exit[1] = 'x';
  exit[2] = 'i';
  exit[3] = 't';
  exit[4] = '\r';
  exit[5] = '\0';
  delete[0] = 'd';
  delete[1] = 'e';
  delete[2] = 'l';
  delete[3] = 'e';
  delete[4] = 't';
  delete[5] = 'e';
  delete[6] = ' ';
  delete[7] = '\0';
  copy[0] = 'c';
  copy[1] = 'o';
  copy[2] = 'p';
  copy[3] = 'y';
  copy[4] = ' ';
  copy[5] = '\0';
  dir[0] = 'd';
  dir[1] = 'i';
  dir[2] = 'r';
  dir[3] = '\r';
  create[0] = 'c';
  create[1] = 'r';
  create[2] = 'e';
  create[3] = 'a';
  create[4] = 't';
  create[5] = 'e';
  create[6] = ' ';
  create[7] = '\0';
  errorMsg[0] = 'B';
  errorMsg[1] = 'a';
  errorMsg[2] = 'd';
  errorMsg[3] = ' ';
  errorMsg[4] = 'C';
  errorMsg[5] = 'o';
  errorMsg[6] = 'm';
  errorMsg[7] = 'm';
  errorMsg[8] = 'a';
  errorMsg[9] = 'n';
  errorMsg[10] = 'd';
  errorMsg[11] = '!';
  errorMsg[12] = '\r';
  errorMsg[13] = '\n';
  errorMsg[14] = '\0';
  newline[0] = '\r';
  newline[1] = '\n';
  newline[2] = '\0';
  while (1) {
    buffer[0] = '\0';
    filename1 = 0;
    fileContentBuffer[0] = '\0';
    interrupt(0x21, 0, prompt, 0, 0);
    interrupt(0x21, 1, buffer, 0, 0);
    if (strncmp(buffer, type, 5)) {
      filename1 = buffer + 5;
      cleanFilename(filename1);
      interrupt(0x21, 3, filename1, fileContentBuffer, 0);
      interrupt(0x21, 0, fileContentBuffer, 0, 0);
    } else if (strncmp(buffer, execute, 8)) {
      filename1 = buffer + 8;
      cleanFilename(filename1);
      interrupt(0x21, 4, filename1, 0x2000, 0);
    } else if (strncmp(buffer, exit, 5)) {
      return 0;
    } else if (strncmp(buffer, delete, 7)) {
      filename1 = buffer + 7;
      cleanFilename(filename1);
      interrupt(0x21, 7, filename1, 0, 0);
    } else if (strncmp(buffer, copy, 5)) {
      filename1 = buffer + 5;
      filename2 = filename1 + indexOf(filename1, ' ') + 1;
      filename1[indexOf(filename1, ' ')] = '\0';
      cleanFilename(filename1);
      cleanFilename(filename2);
      interrupt(0x21, 3, filename1, fileContentBuffer, 0);
      interrupt(0x21, 99, filename1, &numSectors, 0);
      interrupt(0x21, 8, filename2, fileContentBuffer, numSectors);
    } else if (strncmp(buffer, dir, 4)) {
      interrupt(0x21, 9, 0, 0, 0);
    } else if (strncmp(buffer, create, 7)) {
      filename1 = buffer + 7;
      cleanFilename(filename1);
      i = 0;
      while (1) {
        interrupt(0x21, 1, fileContentBuffer + i, 0, 0);
        if (strncmp(fileContentBuffer + i, newline, 3)) {
          fileContentBuffer[i] = '\0';
          break;
        } else {
          i += strlen(fileContentBuffer + i);
        }
      }
      interrupt(0x21, 8, filename1, fileContentBuffer,
                strlen(fileContentBuffer) / 512 + 1);
    } else {
      interrupt(0x21, 0, errorMsg, 0, 0);
    }
  }
  return 0;
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0x3500,%rsp
movl   $0x0,-0x4(%rbp)
movb   $0x53,-0x3488(%rbp)
movb   $0x48,-0x3487(%rbp)
movb   $0x45,-0x3486(%rbp)
movb   $0x4c,-0x3485(%rbp)
movb   $0x4c,-0x3484(%rbp)
movb   $0x3e,-0x3483(%rbp)
movb   $0x20,-0x3482(%rbp)
movb   $0x0,-0x3481(%rbp)
movb   $0x74,-0x348e(%rbp)
movb   $0x79,-0x348d(%rbp)
movb   $0x70,-0x348c(%rbp)
movb   $0x65,-0x348b(%rbp)
movb   $0x20,-0x348a(%rbp)
movb   $0x0,-0x3489(%rbp)
movb   $0x65,-0x3497(%rbp)
movb   $0x78,-0x3496(%rbp)
movb   $0x65,-0x3495(%rbp)
movb   $0x63,-0x3494(%rbp)
movb   $0x75,-0x3493(%rbp)
movb   $0x74,-0x3492(%rbp)
movb   $0x65,-0x3491(%rbp)
movb   $0x20,-0x3490(%rbp)
movb   $0x0,-0x348f(%rbp)
movb   $0x65,-0x349d(%rbp)
movb   $0x78,-0x349c(%rbp)
movb   $0x69,-0x349b(%rbp)
movb   $0x74,-0x349a(%rbp)
movb   $0xd,-0x3499(%rbp)
movb   $0x0,-0x3498(%rbp)
movb   $0x64,-0x34a5(%rbp)
movb   $0x65,-0x34a4(%rbp)
movb   $0x6c,-0x34a3(%rbp)
movb   $0x65,-0x34a2(%rbp)
movb   $0x74,-0x34a1(%rbp)
movb   $0x65,-0x34a0(%rbp)
movb   $0x20,-0x349f(%rbp)
movb   $0x0,-0x349e(%rbp)
movb   $0x63,-0x34ab(%rbp)
movb   $0x6f,-0x34aa(%rbp)
movb   $0x70,-0x34a9(%rbp)
movb   $0x79,-0x34a8(%rbp)
movb   $0x20,-0x34a7(%rbp)
movb   $0x0,-0x34a6(%rbp)
movb   $0x64,-0x34af(%rbp)
movb   $0x69,-0x34ae(%rbp)
movb   $0x72,-0x34ad(%rbp)
movb   $0xd,-0x34ac(%rbp)
movb   $0x63,-0x34b7(%rbp)
movb   $0x72,-0x34b6(%rbp)
movb   $0x65,-0x34b5(%rbp)
movb   $0x61,-0x34b4(%rbp)
movb   $0x74,-0x34b3(%rbp)
movb   $0x65,-0x34b2(%rbp)
movb   $0x20,-0x34b1(%rbp)
movb   $0x0,-0x34b0(%rbp)
movb   $0x42,-0x34c6(%rbp)
movb   $0x61,-0x34c5(%rbp)
movb   $0x64,-0x34c4(%rbp)
movb   $0x20,-0x34c3(%rbp)
movb   $0x43,-0x34c2(%rbp)
movb   $0x6f,-0x34c1(%rbp)
movb   $0x6d,-0x34c0(%rbp)
movb   $0x6d,-0x34bf(%rbp)
movb   $0x61,-0x34be(%rbp)
movb   $0x6e,-0x34bd(%rbp)
movb   $0x64,-0x34bc(%rbp)
movb   $0x21,-0x34bb(%rbp)
movb   $0xd,-0x34ba(%rbp)
movb   $0xa,-0x34b9(%rbp)
movb   $0x0,-0x34b8(%rbp)
movb   $0xd,-0x34c9(%rbp)
movb   $0xa,-0x34c8(%rbp)
movb   $0x0,-0x34c7(%rbp)
movb   $0x0,-0x60(%rbp)
movq   $0x0,-0x68(%rbp)
movb   $0x0,-0x3480(%rbp)
lea    -0x3488(%rbp),%rdx
mov    $0x21,%edi
xor    %r8d,%r8d
mov    %r8d,%esi
mov    %r8d,%ecx
mov    $0x0,%al
call   1060 <interrupt@plt>
lea    -0x60(%rbp),%rdx
mov    $0x21,%edi
mov    $0x1,%esi
xor    %r8d,%r8d
mov    %r8d,%ecx
mov    $0x0,%al
call   1060 <interrupt@plt>
lea    -0x60(%rbp),%rdi
lea    -0x348e(%rbp),%rsi
mov    $0x5,%edx
call   1040 <strncmp@plt>
cmp    $0x0,%rax
je     141f <main+0x2cf>
lea    -0x60(%rbp),%rax
add    $0x5,%rax
mov    %rax,-0x68(%rbp)
mov    -0x68(%rbp),%rdi
call   1030 <cleanFilename@plt>
mov    -0x68(%rbp),%rdx
lea    -0x3480(%rbp),%rcx
mov    $0x21,%edi
mov    $0x3,%esi
xor    %r8d,%r8d
mov    $0x0,%al
call   1060 <interrupt@plt>
lea    -0x3480(%rbp),%rdx
mov    $0x21,%edi
xor    %r8d,%r8d
mov    %r8d,%esi
mov    %r8d,%ecx
mov    $0x0,%al
call   1060 <interrupt@plt>
jmp    1785 <main+0x635>
lea    -0x60(%rbp),%rdi
lea    -0x3497(%rbp),%rsi
mov    $0x8,%edx
call   1040 <strncmp@plt>
cmp    $0x0,%rax
je     1475 <main+0x325>
lea    -0x60(%rbp),%rax
add    $0x8,%rax
mov    %rax,-0x68(%rbp)
mov    -0x68(%rbp),%rdi
call   1030 <cleanFilename@plt>
mov    -0x68(%rbp),%rdx
mov    $0x21,%edi
mov    $0x4,%esi
mov    $0x2000,%ecx
xor    %r8d,%r8d
mov    $0x0,%al
call   1060 <interrupt@plt>
jmp    1780 <main+0x630>
lea    -0x60(%rbp),%rdi
lea    -0x349d(%rbp),%rsi
mov    $0x5,%edx
call   1040 <strncmp@plt>
cmp    $0x0,%rax
je     149f <main+0x34f>
xor    %eax,%eax
add    $0x3500,%rsp
pop    %rbp
ret
lea    -0x60(%rbp),%rdi
lea    -0x34a5(%rbp),%rsi
mov    $0x7,%edx
call   1040 <strncmp@plt>
cmp    $0x0,%rax
je     14f3 <main+0x3a3>
lea    -0x60(%rbp),%rax
add    $0x7,%rax
mov    %rax,-0x68(%rbp)
mov    -0x68(%rbp),%rdi
call   1030 <cleanFilename@plt>
mov    -0x68(%rbp),%rdx
mov    $0x21,%edi
mov    $0x7,%esi
xor    %r8d,%r8d
mov    %r8d,%ecx
mov    $0x0,%al
call   1060 <interrupt@plt>
jmp    1776 <main+0x626>
lea    -0x60(%rbp),%rdi
lea    -0x34ab(%rbp),%rsi
mov    $0x5,%edx
call   1040 <strncmp@plt>
cmp    $0x0,%rax
je     15eb <main+0x49b>
lea    -0x60(%rbp),%rax
add    $0x5,%rax
mov    %rax,-0x68(%rbp)
mov    -0x68(%rbp),%rax
mov    %rax,-0x34e8(%rbp)
mov    -0x68(%rbp),%rdi
mov    $0x20,%esi
call   1070 <indexOf@plt>
mov    %rax,%rcx
mov    -0x34e8(%rbp),%rax
add    %rcx,%rax
add    $0x1,%rax
mov    %rax,-0x70(%rbp)
mov    -0x68(%rbp),%rax
mov    %rax,-0x34e0(%rbp)
mov    -0x68(%rbp),%rdi
mov    $0x20,%esi
call   1070 <indexOf@plt>
mov    %rax,%rcx
mov    -0x34e0(%rbp),%rax
movb   $0x0,(%rax,%rcx,1)
mov    -0x68(%rbp),%rdi
call   1030 <cleanFilename@plt>
mov    -0x70(%rbp),%rdi
call   1030 <cleanFilename@plt>
mov    -0x68(%rbp),%rdx
lea    -0x3480(%rbp),%rcx
mov    $0x21,%edi
mov    $0x3,%esi
xor    %r8d,%r8d
mov    $0x0,%al
call   1060 <interrupt@plt>
mov    -0x68(%rbp),%rdx
mov    $0x21,%edi
mov    $0x63,%esi
lea    -0x34d4(%rbp),%rcx
xor    %r8d,%r8d
mov    $0x0,%al
call   1060 <interrupt@plt>
mov    -0x70(%rbp),%rdx
lea    -0x3480(%rbp),%rcx
mov    -0x34d4(%rbp),%r8d
mov    $0x21,%edi
mov    $0x8,%esi
mov    $0x0,%al
call   1060 <interrupt@plt>
jmp    1771 <main+0x621>
lea    -0x60(%rbp),%rdi
lea    -0x34af(%rbp),%rsi
mov    $0x4,%edx
call   1040 <strncmp@plt>
cmp    $0x0,%rax
je     162a <main+0x4da>
mov    $0x21,%edi
mov    $0x9,%esi
xor    %eax,%eax
mov    %eax,%edx
xor    %r8d,%r8d
mov    %r8d,%ecx
mov    $0x0,%al
call   1060 <interrupt@plt>
jmp    176c <main+0x61c>
lea    -0x60(%rbp),%rdi
lea    -0x34b7(%rbp),%rsi
mov    $0x7,%edx
call   1040 <strncmp@plt>
cmp    $0x0,%rax
je     174b <main+0x5fb>
lea    -0x60(%rbp),%rax
add    $0x7,%rax
mov    %rax,-0x68(%rbp)
mov    -0x68(%rbp),%rdi
call   1030 <cleanFilename@plt>
movl   $0x0,-0x34d0(%rbp)
lea    -0x3480(%rbp),%rdx
mov    -0x34d0(%rbp),%eax
add    %rax,%rdx
mov    $0x21,%edi
mov    $0x1,%esi
xor    %r8d,%r8d
mov    %r8d,%ecx
mov    $0x0,%al
call   1060 <interrupt@plt>
lea    -0x3480(%rbp),%rdi
mov    -0x34d0(%rbp),%eax
add    %rax,%rdi
lea    -0x34c9(%rbp),%rsi
mov    $0x3,%edx
call   1040 <strncmp@plt>
cmp    $0x0,%rax
je     16cd <main+0x57d>
mov    -0x34d0(%rbp),%eax
movb   $0x0,-0x3480(%rbp,%rax,1)
jmp    16f3 <main+0x5a3>
lea    -0x3480(%rbp),%rdi
mov    -0x34d0(%rbp),%eax
add    %rax,%rdi
call   1050 <strlen@plt>
add    -0x34d0(%rbp),%eax
mov    %eax,-0x34d0(%rbp)
jmp    1668 <main+0x518>
mov    -0x68(%rbp),%rax
mov    %rax,-0x34f0(%rbp)
lea    -0x3480(%rbp),%rax
mov    %rax,-0x34f8(%rbp)
lea    -0x3480(%rbp),%rdi
call   1050 <strlen@plt>
mov    -0x34f8(%rbp),%rcx
mov    $0x200,%esi
cltd
idiv   %esi
mov    -0x34f0(%rbp),%rdx
mov    %eax,%r8d
add    $0x1,%r8d
mov    $0x21,%edi
mov    $0x8,%esi
mov    $0x0,%al
call   1060 <interrupt@plt>
jmp    1767 <main+0x617>
lea    -0x34c6(%rbp),%rdx
mov    $0x21,%edi
xor    %r8d,%r8d
mov    %r8d,%esi
mov    %r8d,%ecx
mov    $0x0,%al
call   1060 <interrupt@plt>
jmp    176c <main+0x61c>
jmp    1771 <main+0x621>
jmp    1776 <main+0x626>
jmp    177b <main+0x62b>
jmp    1780 <main+0x630>
jmp    1785 <main+0x635>
jmp    1361 <main+0x211>

x86 assembly (clang, -O2):
<main>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x34a8,%rsp
movabs $0x203e4c4c454853,%rax
mov    %rax,0x20(%rsp)
movl   $0x65707974,0x6(%rsp)
65
movw   $0x20,0xa(%rsp)
movabs $0x2065747563657865,%rax
74 65 20
mov    %rax,0x37(%rsp)
movb   $0x0,0x3f(%rsp)
movl   $0x74697865,0x1a(%rsp)
74
movw   $0xd,0x1e(%rsp)
movabs $0x206574656c6564,%rax
mov    %rax,0x48(%rsp)
movl   $0x79706f63,0x14(%rsp)
79
movw   $0x20,0x18(%rsp)
movl   $0xd726964,0x10(%rsp)
0d
movabs $0x20657461657263,%rax
mov    %rax,0x40(%rsp)
movabs $0x6d6d6f4320646142,%rax
6f 6d 6d
mov    %rax,0x28(%rsp)
movl   $0x21646e61,0x30(%rsp)
21
movw   $0xa0d,0x34(%rsp)
movb   $0x0,0x36(%rsp)
movw   $0xa0d,0x3(%rsp)
movb   $0x0,0x5(%rsp)
lea    0x55(%rsp),%r13
lea    0x58(%rsp),%r14
lea    0x20(%rsp),%rbp
lea    0x50(%rsp),%r12
lea    0x6(%rsp),%rbx
lea    0xa0(%rsp),%r15
jmp    126f <main+0x11f>
nopl   0x0(%rax)
mov    %r12,%rdi
lea    0x37(%rsp),%rsi
mov    $0x8,%edx
call   1040 <strncmp@plt>
test   %rax,%rax
je     12f7 <main+0x1a7>
mov    %r14,%rdi
call   1030 <cleanFilename@plt>
mov    $0x21,%edi
mov    $0x4,%esi
mov    %r14,%rdx
mov    $0x2000,%ecx
xor    %r8d,%r8d
xor    %eax,%eax
call   1060 <interrupt@plt>
movb   $0x0,0x50(%rsp)
movb   $0x0,0xa0(%rsp)
mov    $0x21,%edi
xor    %esi,%esi
mov    %rbp,%rdx
xor    %ecx,%ecx
xor    %r8d,%r8d
xor    %eax,%eax
call   1060 <interrupt@plt>
mov    $0x21,%edi
mov    $0x1,%esi
mov    %r12,%rdx
xor    %ecx,%ecx
xor    %r8d,%r8d
xor    %eax,%eax
call   1060 <interrupt@plt>
mov    %r12,%rdi
mov    %rbx,%rsi
mov    $0x5,%edx
call   1040 <strncmp@plt>
test   %rax,%rax
je     1230 <main+0xe0>
mov    %r13,%rdi
call   1030 <cleanFilename@plt>
mov    $0x21,%edi
mov    $0x3,%esi
mov    %r13,%rdx
mov    %r15,%rcx
xor    %r8d,%r8d
xor    %eax,%eax
call   1060 <interrupt@plt>
mov    $0x21,%edi
xor    %esi,%esi
mov    %r15,%rdx
xor    %ecx,%ecx
jmp    1265 <main+0x115>
mov    %r12,%rdi
lea    0x1a(%rsp),%rsi
mov    $0x5,%edx
call   1040 <strncmp@plt>
test   %rax,%rax
jne    1552 <main+0x402>
mov    %r12,%rdi
lea    0x48(%rsp),%rsi
mov    $0x7,%edx
call   1040 <strncmp@plt>
test   %rax,%rax
je     1368 <main+0x218>
mov    %rbp,%rbx
mov    %r12,%rbp
mov    %r15,%r12
mov    %r13,%r15
mov    %r14,%r13
lea    0x57(%rsp),%r14
mov    %r14,%rdi
call   1030 <cleanFilename@plt>
mov    $0x21,%edi
mov    $0x7,%esi
mov    %r14,%rdx
mov    %r13,%r14
mov    %r15,%r13
mov    %r12,%r15
mov    %rbp,%r12
mov    %rbx,%rbp
lea    0x6(%rsp),%rbx
jmp    12f0 <main+0x1a0>
mov    %r12,%rdi
lea    0x14(%rsp),%rsi
mov    $0x5,%edx
call   1040 <strncmp@plt>
test   %rax,%rax
je     141c <main+0x2cc>
mov    %r13,%rdi
mov    $0x20,%esi
call   1070 <indexOf@plt>
lea    0x56(%rsp),%rcx
lea    (%rax,%rcx,1),%rbx
mov    %r13,%rdi
mov    $0x20,%esi
call   1070 <indexOf@plt>
movb   $0x0,0x55(%rsp,%rax,1)
mov    %r13,%rdi
call   1030 <cleanFilename@plt>
mov    %rbx,%rdi
call   1030 <cleanFilename@plt>
mov    $0x21,%edi
mov    $0x3,%esi
mov    %r13,%rdx
mov    %r15,%rcx
xor    %r8d,%r8d
xor    %eax,%eax
call   1060 <interrupt@plt>
mov    $0x21,%edi
mov    $0x63,%esi
mov    %r13,%rdx
lea    0xc(%rsp),%rcx
xor    %r8d,%r8d
xor    %eax,%eax
call   1060 <interrupt@plt>
mov    0xc(%rsp),%r8d
mov    $0x21,%edi
mov    $0x8,%esi
mov    %rbx,%rdx
lea    0x6(%rsp),%rbx
lea    0x20(%rsp),%rbp
mov    %r15,%rcx
xor    %eax,%eax
call   1060 <interrupt@plt>
jmp    126f <main+0x11f>
mov    %r12,%rdi
lea    0x10(%rsp),%rsi
mov    $0x4,%edx
call   1040 <strncmp@plt>
test   %rax,%rax
je     1444 <main+0x2f4>
mov    $0x21,%edi
mov    $0x9,%esi
xor    %edx,%edx
jmp    12f0 <main+0x1a0>
mov    %r12,%rdi
lea    0x40(%rsp),%rsi
mov    $0x7,%edx
call   1040 <strncmp@plt>
test   %rax,%rax
je     1541 <main+0x3f1>
lea    0x57(%rsp),%rdi
call   1030 <cleanFilename@plt>
mov    $0x21,%edi
mov    $0x1,%esi
mov    %r15,%rdx
xor    %ecx,%ecx
xor    %r8d,%r8d
xor    %eax,%eax
call   1060 <interrupt@plt>
mov    %r15,%rdi
lea    0x3(%rsp),%r14
mov    %r14,%rsi
mov    $0x3,%edx
call   1040 <strncmp@plt>
mov    %r15,%rbp
test   %rax,%rax
jne    14f3 <main+0x3a3>
xor    %ebx,%ebx
mov    %r15,%rbp
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
mov    %rbp,%rdi
call   1050 <strlen@plt>
add    %eax,%ebx
lea    (%rsp,%rbx,1),%rbp
add    $0xa0,%rbp
mov    $0x21,%edi
mov    $0x1,%esi
mov    %rbp,%rdx
xor    %ecx,%ecx
xor    %r8d,%r8d
xor    %eax,%eax
call   1060 <interrupt@plt>
mov    %rbp,%rdi
mov    %r14,%rsi
mov    $0x3,%edx
call   1040 <strncmp@plt>
test   %rax,%rax
je     14b0 <main+0x360>
movb   $0x0,0x0(%rbp)
mov    %r15,%rdi
call   1050 <strlen@plt>
lea    0x1ff(%rax),%r8d
test   %eax,%eax
cmovns %eax,%r8d
sar    $0x9,%r8d
add    $0x1,%r8d
mov    $0x21,%edi
mov    $0x8,%esi
lea    0x57(%rsp),%rdx
mov    %r15,%rcx
xor    %eax,%eax
call   1060 <interrupt@plt>
lea    0x58(%rsp),%r14
lea    0x20(%rsp),%rbp
lea    0x6(%rsp),%rbx
jmp    126f <main+0x11f>
mov    $0x21,%edi
xor    %esi,%esi
lea    0x28(%rsp),%rdx
jmp    12f0 <main+0x1a0>
xor    %eax,%eax
add    $0x34a8,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

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

LLVM IR (-O2):
define i32 @main() {
%1 = alloca [80 x i8]
%2 = alloca [13312 x i8]
%3 = alloca [8 x i8]
%4 = alloca [6 x i8]
%5 = alloca [9 x i8]
%6 = alloca [6 x i8]
%7 = alloca [8 x i8]
%8 = alloca [6 x i8]
%9 = alloca [4 x i8]
%10 = alloca [8 x i8]
%11 = alloca [15 x i8]
%12 = alloca [3 x i8]
%13 = alloca i32
%14 = getelementptr inbounds [80 x i8], [80 x i8]* %1, i64 0, i64 0
%15 = getelementptr inbounds [13312 x i8], [13312 x i8]* %2, i64 0, i64 0
%16 = getelementptr inbounds [8 x i8], [8 x i8]* %3, i64 0, i64 0
%17 = getelementptr inbounds [6 x i8], [6 x i8]* %4, i64 0, i64 0
%18 = getelementptr inbounds [9 x i8], [9 x i8]* %5, i64 0, i64 0
%19 = getelementptr inbounds [6 x i8], [6 x i8]* %6, i64 0, i64 0
%20 = getelementptr inbounds [8 x i8], [8 x i8]* %7, i64 0, i64 0
%21 = getelementptr inbounds [6 x i8], [6 x i8]* %8, i64 0, i64 0
%22 = getelementptr inbounds [4 x i8], [4 x i8]* %9, i64 0, i64 0
%23 = getelementptr inbounds [8 x i8], [8 x i8]* %10, i64 0, i64 0
%24 = getelementptr inbounds [15 x i8], [15 x i8]* %11, i64 0, i64 0
%25 = getelementptr inbounds [3 x i8], [3 x i8]* %12, i64 0, i64 0
%26 = bitcast i32* %13 to i8*
store i8 83, i8* %16
%27 = getelementptr inbounds [8 x i8], [8 x i8]* %3, i64 0, i64 1
store i8 72, i8* %27
%28 = getelementptr inbounds [8 x i8], [8 x i8]* %3, i64 0, i64 2
store i8 69, i8* %28
%29 = getelementptr inbounds [8 x i8], [8 x i8]* %3, i64 0, i64 3
store i8 76, i8* %29
%30 = getelementptr inbounds [8 x i8], [8 x i8]* %3, i64 0, i64 4
store i8 76, i8* %30
%31 = getelementptr inbounds [8 x i8], [8 x i8]* %3, i64 0, i64 5
store i8 62, i8* %31
%32 = getelementptr inbounds [8 x i8], [8 x i8]* %3, i64 0, i64 6
store i8 32, i8* %32
%33 = getelementptr inbounds [8 x i8], [8 x i8]* %3, i64 0, i64 7
store i8 0, i8* %33
store i8 116, i8* %17
%34 = getelementptr inbounds [6 x i8], [6 x i8]* %4, i64 0, i64 1
store i8 121, i8* %34
%35 = getelementptr inbounds [6 x i8], [6 x i8]* %4, i64 0, i64 2
store i8 112, i8* %35
%36 = getelementptr inbounds [6 x i8], [6 x i8]* %4, i64 0, i64 3
store i8 101, i8* %36
%37 = getelementptr inbounds [6 x i8], [6 x i8]* %4, i64 0, i64 4
store i8 32, i8* %37
%38 = getelementptr inbounds [6 x i8], [6 x i8]* %4, i64 0, i64 5
store i8 0, i8* %38
store i8 101, i8* %18
%39 = getelementptr inbounds [9 x i8], [9 x i8]* %5, i64 0, i64 1
store i8 120, i8* %39
%40 = getelementptr inbounds [9 x i8], [9 x i8]* %5, i64 0, i64 2
store i8 101, i8* %40
%41 = getelementptr inbounds [9 x i8], [9 x i8]* %5, i64 0, i64 3
store i8 99, i8* %41
%42 = getelementptr inbounds [9 x i8], [9 x i8]* %5, i64 0, i64 4
store i8 117, i8* %42
%43 = getelementptr inbounds [9 x i8], [9 x i8]* %5, i64 0, i64 5
store i8 116, i8* %43
%44 = getelementptr inbounds [9 x i8], [9 x i8]* %5, i64 0, i64 6
store i8 101, i8* %44
%45 = getelementptr inbounds [9 x i8], [9 x i8]* %5, i64 0, i64 7
store i8 32, i8* %45
%46 = getelementptr inbounds [9 x i8], [9 x i8]* %5, i64 0, i64 8
store i8 0, i8* %46
store i8 101, i8* %19
%47 = getelementptr inbounds [6 x i8], [6 x i8]* %6, i64 0, i64 1
store i8 120, i8* %47
%48 = getelementptr inbounds [6 x i8], [6 x i8]* %6, i64 0, i64 2
store i8 105, i8* %48
%49 = getelementptr inbounds [6 x i8], [6 x i8]* %6, i64 0, i64 3
store i8 116, i8* %49
%50 = getelementptr inbounds [6 x i8], [6 x i8]* %6, i64 0, i64 4
store i8 13, i8* %50
%51 = getelementptr inbounds [6 x i8], [6 x i8]* %6, i64 0, i64 5
store i8 0, i8* %51
store i8 100, i8* %20
%52 = getelementptr inbounds [8 x i8], [8 x i8]* %7, i64 0, i64 1
store i8 101, i8* %52
%53 = getelementptr inbounds [8 x i8], [8 x i8]* %7, i64 0, i64 2
store i8 108, i8* %53
%54 = getelementptr inbounds [8 x i8], [8 x i8]* %7, i64 0, i64 3
store i8 101, i8* %54
%55 = getelementptr inbounds [8 x i8], [8 x i8]* %7, i64 0, i64 4
store i8 116, i8* %55
%56 = getelementptr inbounds [8 x i8], [8 x i8]* %7, i64 0, i64 5
store i8 101, i8* %56
%57 = getelementptr inbounds [8 x i8], [8 x i8]* %7, i64 0, i64 6
store i8 32, i8* %57
%58 = getelementptr inbounds [8 x i8], [8 x i8]* %7, i64 0, i64 7
store i8 0, i8* %58
store i8 99, i8* %21
%59 = getelementptr inbounds [6 x i8], [6 x i8]* %8, i64 0, i64 1
store i8 111, i8* %59
%60 = getelementptr inbounds [6 x i8], [6 x i8]* %8, i64 0, i64 2
store i8 112, i8* %60
%61 = getelementptr inbounds [6 x i8], [6 x i8]* %8, i64 0, i64 3
store i8 121, i8* %61
%62 = getelementptr inbounds [6 x i8], [6 x i8]* %8, i64 0, i64 4
store i8 32, i8* %62
%63 = getelementptr inbounds [6 x i8], [6 x i8]* %8, i64 0, i64 5
store i8 0, i8* %63
store i8 100, i8* %22
%64 = getelementptr inbounds [4 x i8], [4 x i8]* %9, i64 0, i64 1
store i8 105, i8* %64
%65 = getelementptr inbounds [4 x i8], [4 x i8]* %9, i64 0, i64 2
store i8 114, i8* %65
%66 = getelementptr inbounds [4 x i8], [4 x i8]* %9, i64 0, i64 3
store i8 13, i8* %66
store i8 99, i8* %23
%67 = getelementptr inbounds [8 x i8], [8 x i8]* %10, i64 0, i64 1
store i8 114, i8* %67
%68 = getelementptr inbounds [8 x i8], [8 x i8]* %10, i64 0, i64 2
store i8 101, i8* %68
%69 = getelementptr inbounds [8 x i8], [8 x i8]* %10, i64 0, i64 3
store i8 97, i8* %69
%70 = getelementptr inbounds [8 x i8], [8 x i8]* %10, i64 0, i64 4
store i8 116, i8* %70
%71 = getelementptr inbounds [8 x i8], [8 x i8]* %10, i64 0, i64 5
store i8 101, i8* %71
%72 = getelementptr inbounds [8 x i8], [8 x i8]* %10, i64 0, i64 6
store i8 32, i8* %72
%73 = getelementptr inbounds [8 x i8], [8 x i8]* %10, i64 0, i64 7
store i8 0, i8* %73
store i8 66, i8* %24
%74 = getelementptr inbounds [15 x i8], [15 x i8]* %11, i64 0, i64 1
store i8 97, i8* %74
%75 = getelementptr inbounds [15 x i8], [15 x i8]* %11, i64 0, i64 2
store i8 100, i8* %75
%76 = getelementptr inbounds [15 x i8], [15 x i8]* %11, i64 0, i64 3
store i8 32, i8* %76
%77 = getelementptr inbounds [15 x i8], [15 x i8]* %11, i64 0, i64 4
store i8 67, i8* %77
%78 = getelementptr inbounds [15 x i8], [15 x i8]* %11, i64 0, i64 5
store i8 111, i8* %78
%79 = getelementptr inbounds [15 x i8], [15 x i8]* %11, i64 0, i64 6
store i8 109, i8* %79
%80 = getelementptr inbounds [15 x i8], [15 x i8]* %11, i64 0, i64 7
store i8 109, i8* %80
%81 = getelementptr inbounds [15 x i8], [15 x i8]* %11, i64 0, i64 8
store i8 97, i8* %81
%82 = getelementptr inbounds [15 x i8], [15 x i8]* %11, i64 0, i64 9
store i8 110, i8* %82
%83 = getelementptr inbounds [15 x i8], [15 x i8]* %11, i64 0, i64 10
store i8 100, i8* %83
%84 = getelementptr inbounds [15 x i8], [15 x i8]* %11, i64 0, i64 11
store i8 33, i8* %84
%85 = getelementptr inbounds [15 x i8], [15 x i8]* %11, i64 0, i64 12
store i8 13, i8* %85
%86 = getelementptr inbounds [15 x i8], [15 x i8]* %11, i64 0, i64 13
store i8 10, i8* %86
%87 = getelementptr inbounds [15 x i8], [15 x i8]* %11, i64 0, i64 14
store i8 0, i8* %87
store i8 13, i8* %25
%88 = getelementptr inbounds [3 x i8], [3 x i8]* %12, i64 0, i64 1
store i8 10, i8* %88
%89 = getelementptr inbounds [3 x i8], [3 x i8]* %12, i64 0, i64 2
store i8 0, i8* %89
%90 = getelementptr inbounds [80 x i8], [80 x i8]* %1, i64 0, i64 5
%91 = getelementptr inbounds [80 x i8], [80 x i8]* %1, i64 0, i64 8
%92 = getelementptr inbounds [80 x i8], [80 x i8]* %1, i64 0, i64 7
%93 = getelementptr inbounds [80 x i8], [80 x i8]* %1, i64 0, i64 6
br label %94
94: ; preds = %109, %0
store i8 0, i8* %14
store i8 0, i8* %15
%95 = call i32 (i32, i32, i8*, ...) @interrupt(i32 33, i32 0, i8* %16, i32 0, i32 0)
%96 = call i32 (i32, i32, i8*, ...) @interrupt(i32 33, i32 1, i8* %14, i32 0, i32 0)
%97 = call i64 @strncmp(i8* %14, i8* %17, i32 5)
%98 = icmp eq i64 %97, 0
br i1 %98, label %103, label %99
99: ; preds = %94
%100 = call i32 @cleanFilename(i8* %90)
%101 = call i32 (i32, i32, i8*, ...) @interrupt(i32 33, i32 3, i8* %90, i8* %15, i32 0)
%102 = call i32 (i32, i32, i8*, ...) @interrupt(i32 33, i32 0, i8* %15, i32 0, i32 0)
br label %109
103: ; preds = %94
%104 = call i64 @strncmp(i8* %14, i8* %18, i32 8)
%105 = icmp eq i64 %104, 0
br i1 %105, label %110, label %106
106: ; preds = %103
%107 = call i32 @cleanFilename(i8* %91)
%108 = call i32 (i32, i32, i8*, ...) @interrupt(i32 33, i32 4, i8* %91, i32 8192, i32 0)
br label %109
109: ; preds = %106, %117, %137, %163, %147, %123, %99
br label %94
110: ; preds = %103
%111 = call i64 @strncmp(i8* %14, i8* %19, i32 5)
%112 = icmp eq i64 %111, 0
br i1 %112, label %114, label %113
113: ; preds = %110
ret i32 0
114: ; preds = %110
%115 = call i64 @strncmp(i8* %14, i8* %20, i32 7)
%116 = icmp eq i64 %115, 0
br i1 %116, label %120, label %117
117: ; preds = %114
%118 = call i32 @cleanFilename(i8* %92)
%119 = call i32 (i32, i32, i8*, ...) @interrupt(i32 33, i32 7, i8* %92, i32 0, i32 0)
br label %109
120: ; preds = %114
%121 = call i64 @strncmp(i8* %14, i8* %21, i32 5)
%122 = icmp eq i64 %121, 0
br i1 %122, label %134, label %123
123: ; preds = %120
%124 = call i64 @indexOf(i8* %90, i8 signext 32)
%125 = getelementptr inbounds i8, i8* %93, i64 %124
%126 = call i64 @indexOf(i8* %90, i8 signext 32)
%127 = getelementptr inbounds i8, i8* %90, i64 %126
store i8 0, i8* %127
%128 = call i32 @cleanFilename(i8* %90)
%129 = call i32 @cleanFilename(i8* %125)
%130 = call i32 (i32, i32, i8*, ...) @interrupt(i32 33, i32 3, i8* %90, i8* %15, i32 0)
%131 = call i32 (i32, i32, i8*, ...) @interrupt(i32 33, i32 99, i8* %90, i32* %13, i32 0)
%132 = load i32, i32* %13
%133 = call i32 (i32, i32, i8*, ...) @interrupt(i32 33, i32 8, i8* %125, i8* %15, i32 %132)
br label %109
134: ; preds = %120
%135 = call i64 @strncmp(i8* %14, i8* %22, i32 4)
%136 = icmp eq i64 %135, 0
br i1 %136, label %139, label %137
137: ; preds = %134
%138 = call i32 (i32, i32, i8*, ...) @interrupt(i32 33, i32 9, i8* null, i32 0, i32 0)
br label %109
139: ; preds = %134
%140 = call i64 @strncmp(i8* %14, i8* %23, i32 7)
%141 = icmp eq i64 %140, 0
br i1 %141, label %163, label %142
142: ; preds = %139
%143 = call i32 @cleanFilename(i8* %92)
%144 = call i32 (i32, i32, i8*, ...) @interrupt(i32 33, i32 1, i8* %15, i32 0, i32 0)
%145 = call i64 @strncmp(i8* %15, i8* %25, i32 3)
%146 = icmp eq i64 %145, 0
br i1 %146, label %153, label %147
147: ; preds = %153, %142
%148 = phi i8* [ %15, %142 ], [ %159, %153 ]
store i8 0, i8* %148
%149 = call i32 @strlen(i8* %15)
%150 = sdiv i32 %149, 512
%151 = add nsw i32 %150, 1
%152 = call i32 (i32, i32, i8*, ...) @interrupt(i32 33, i32 8, i8* %92, i8* %15, i32 %151)
br label %109
153: ; preds = %142, %153
%154 = phi i8* [ %159, %153 ], [ %15, %142 ]
%155 = phi i32 [ %157, %153 ], [ 0, %142 ]
%156 = call i32 @strlen(i8* %154)
%157 = add i32 %156, %155
%158 = zext i32 %157 to i64
%159 = getelementptr inbounds [13312 x i8], [13312 x i8]* %2, i64 0, i64 %158
%160 = call i32 (i32, i32, i8*, ...) @interrupt(i32 33, i32 1, i8* %159, i32 0, i32 0)
%161 = call i64 @strncmp(i8* %159, i8* %25, i32 3)
%162 = icmp eq i64 %161, 0
br i1 %162, label %153, label %147
163: ; preds = %139
%164 = call i32 (i32, i32, i8*, ...) @interrupt(i32 33, i32 0, i8* %24, i32 0, i32 0)
br label %109
}