#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 */
typedef int /*<<< orphan*/ FILE;
typedef int /*<<< orphan*/ Buffer;

/* Variables and functions */
int CharWidth(char);
scalar_t__ Match(char *, char *);
int /*<<< orphan*/ RemoveLineEndings(char *);
int /*<<< orphan*/ fclose(int /*<<< orphan*/ *);
scalar_t__ fgets(char *, int, int /*<<< orphan*/ *);
int /*<<< orphan*/ *fopen(char *, char *);
int /*<<< orphan*/ fprintf(int /*<<< orphan*/ *, char *, ...);
int /*<<< orphan*/ printf(char *, ...);
int /*<<< orphan*/ putchar(char);
int /*<<< orphan*/ puts(char *);
char *strchr(char *, char);
int /*<<< orphan*/ strcmp(char *, char *);
int /*<<< orphan*/ strcpy(char *, char *);
int strlen(char *);
char *strrchr(char *, int /*<<< orphan*/);
int main(int argc, char *argv[]) {
  if (argc < 4) {
    puts("syntax: mkdialog dictionary.txt in.txt out.s");
    return 0;
  }
  char Buffer[700];
  char *Text;
  int Size = 0, Uncompressed = 0, CommandSize = 0;
  int i;
  char Dictionary[128][32];
  int DictionaryUse[128];
  int DictionaryLen = 0;
  int AutoWordWrap = 1;
  int MakeDictionaryTable = 1;
  FILE *InputFile = fopen(argv[1], "rb");
  if (!InputFile) {
    puts("dictionary not found");
    return 0;
  }
  while (fgets(Buffer, sizeof(Buffer), InputFile)) {
    RemoveLineEndings(Buffer);
    if (strlen(Buffer) > 31) {
      puts("Dictionary has a word that's too long");
      return -1;
    }
    DictionaryUse[DictionaryLen] = 0;
    strcpy(Dictionary[DictionaryLen], Buffer);
    DictionaryLen++;
  }
  InputFile = fopen(argv[2], "rb");
  if (!InputFile) {
    puts("input file not found");
    return 0;
  }
  FILE *OutputFile = fopen(argv[3], "wb");
  if (!OutputFile) {
    fclose(InputFile);
    puts("output file couldn't be opened");
    return 0;
  }
  while (fgets(Buffer, sizeof(Buffer), InputFile)) {
    RemoveLineEndings(Buffer);
    int AlreadyStarted = 0;
    if (!*Buffer)
      continue;
    if (Buffer[0] == ':')
      fprintf(OutputFile, "%s", Buffer + 1);
    else if (Buffer[0] == '`' || Buffer[0] == '?') {
      char *Arg = strchr(Buffer, ' ');
      if (Arg)
        *(Arg++) = 0;
      char *Command = Buffer + 1;
      if (!strcmp(Command, "nl"))
        fprintf(OutputFile, ".byt SCR::NEWLINE");
      else if (!strcmp(Command, "end"))
        fprintf(OutputFile, ".byt SCR::END_SCRIPT");
      else if (!strcmp(Command, "poke"))
        fprintf(OutputFile, ".byt SCR::POKE, <%s, >%s", Arg, Arg);
      else if (!strcmp(Command, "asm"))
        fprintf(OutputFile, ".byt SCR::RUN_ASM");
      else if (!strcmp(Command, "p"))
        fprintf(OutputFile, ".byt SCR::END_PAGE");
      else if (!strcmp(Command, "goto"))
        fprintf(OutputFile, ".byt SCR::GOTO, <%s, >%s", Arg, Arg);
      else if (!strcmp(Command, "call"))
        fprintf(OutputFile, ".byt SCR::CALL, <%s, >%s", Arg, Arg);
      else if (!strcmp(Command, "return"))
        fprintf(OutputFile, ".byt SCR::RETURN");
      else if (!strcmp(Command, "choose"))
        fprintf(OutputFile, ".byt SCR::CHOICES, CHOICELIST::%s", Arg);
      else if (!strcmp(Command, "scene"))
        fprintf(OutputFile, ".byt SCR::SCENE, SCENES::%s", Arg);
      else if (!strcmp(Command, "transition"))
        fprintf(OutputFile, ".byt SCR::TRANSITION");
      else if (!strcmp(Command, "noskip"))
        fprintf(OutputFile, ".byt SCR::NO_SKIP");
      else if (!strcmp(Command, "manualwrap"))
        AutoWordWrap = 0;
      else if (!strcmp(Command, "autowrap"))
        AutoWordWrap = 1;
      else if (!strcmp(Command, "nodictionarytable"))
        MakeDictionaryTable = 0;
      else if (!strcmp(Command, "monotext"))
        fprintf(OutputFile, ".byt SCR::MONO_TEXT, <%s, >%s", Arg, Arg);
      else if (!strcmp(Command, "clear"))
        fprintf(OutputFile, ".byt SCR::CLEAR_ALL");
      else if (!strcmp(Command, "upload"))
        fprintf(OutputFile, ".byt SCR::UPLOAD, %s", Arg);
      else if (!strcmp(Command, "image"))
        fprintf(OutputFile, ".byt SCR::IMAGE, %s", Arg);
      else if (!strcmp(Command, "ground"))
        fprintf(OutputFile, ".byt SCR::GROUND");
      if (Buffer[0] == '?') {
        if (!strcmp(Command, "on"))
          fprintf(OutputFile, ".byt SCR::IF_FLAG_ON, EventFlags::%s", Arg);
        if (!strcmp(Command, "off"))
          fprintf(OutputFile, ".byt SCR::IF_FLAG_OFF, EventFlags::%s", Arg);
        if (!strcmp(Command, "item"))
          fprintf(OutputFile, ".byt SCR::IF_ITEM, InventoryItem::%s", Arg);
        if (!strcmp(Command, "notitem"))
          fprintf(OutputFile, ".byt SCR::IF_NOT_ITEM, InventoryItem::%s", Arg);
      } else {
        if (!strcmp(Command, "on"))
          fprintf(OutputFile, ".byt SCR::FLAG_ON, EventFlags::%s", Arg);
        if (!strcmp(Command, "off"))
          fprintf(OutputFile, ".byt SCR::FLAG_OFF, EventFlags::%s", Arg);
        if (!strcmp(Command, "toggle"))
          fprintf(OutputFile, ".byt SCR::FLAG_TOGGLE, EventFlags::%s", Arg);
      }
    } else {
      Text = Buffer;
      fprintf(OutputFile, "; %s\r\n", Text);
      switch (Buffer[0]) {
      case '<':
        Text = strchr(Buffer, '>') + 1;
        Text[-1] = 0;
        fprintf(OutputFile, ".byt SCR::SAY, SCR::SPEAKER_%c|CHAR::%s",
                Buffer[1], Buffer + 3);
        CommandSize += 2;
        AlreadyStarted = 1;
        break;
      case '>':
        Text = strchr(Buffer, '<') + 1;
        Text[-1] = 0;
        fprintf(OutputFile, ".byt SCR::THINK, SCR::SPEAKER_%c|CHAR::%s",
                Buffer[1], Buffer + 3);
        CommandSize += 2;
        AlreadyStarted = 1;
        break;
      case '[':
        Text = strchr(Buffer, ']') + 1;
        Text[-1] = 0;
        fprintf(OutputFile, ".byt SCR::NARRATE, CHAR::%s",
                Buffer[1] ? (Buffer + 1) : "NONE");
        CommandSize += 2;
        AlreadyStarted = 1;
        break;
      }
      if (AutoWordWrap && Text == Buffer) {
        fprintf(OutputFile, ".byt SCR::NEWLINE");
        AlreadyStarted = 1;
      }
      if (!AlreadyStarted) {
        fprintf(OutputFile, ".byt ");
      }
      if (AutoWordWrap) {
        char *Peek;
        int CurXPos = 0;
        for (Peek = Text; *Peek; Peek++) {
          if (*Peek == ' ') {
            int WordLength = 0;
            char *Word = Peek + 1;
            for (; *Word != ' ' && *Word; Word++)
              WordLength += CharWidth(*Word);
            if (CurXPos + CharWidth(' ') + WordLength >= 128) {
              *Peek = '\n';
              CurXPos = 0;
            }
          }
          if (*Peek != '\n')
            CurXPos += CharWidth(*Peek);
        }
      }
      Uncompressed += strlen(Text);
      while (*Text) {
        for (i = 0; i < DictionaryLen; i++) {
          if (Match(Text, Dictionary[i])) {
            if (AlreadyStarted)
              fprintf(OutputFile, ", ");
            fprintf(OutputFile, "$%.2x", 0x80 + i);
            AlreadyStarted = 1;
            printf("[%s]", Dictionary[i]);
            Text += strlen(Dictionary[i]);
            DictionaryUse[i]++;
            Size++;
            break;
          }
        }
        if (i == DictionaryLen) {
          if (AlreadyStarted)
            fprintf(OutputFile, ", ");
          AlreadyStarted = 1;
          if (*Text == '"')
            fprintf(OutputFile, "'\"'", *Text);
          else if (*Text == '\n')
            fprintf(OutputFile, "SCR::NEWLINE");
          else
            fprintf(OutputFile, "\"%c\"", *Text);
          putchar(*Text);
          Text++;
        }
        Size++;
      }
      putchar('\n');
    }
    if (*Buffer)
      fprintf(OutputFile, "\r\n");
  }
  fclose(InputFile);
  int DictionarySize = 0, DictionarySavings = 0;
  fprintf(OutputFile, "\r\nCutsceneDictionary:\r\n");
  for (i = 0; i < DictionaryLen; i++) {
    DictionarySize += strlen(Dictionary[i]);
    DictionarySavings += strlen(Dictionary[i]) * (DictionaryUse[i] - 1) - 1;
    char *Last = strrchr(Dictionary[i], 0);
    char LastChar = Last[-1];
    Last[-1] = 0;
    if (MakeDictionaryTable)
      fprintf(OutputFile, "DictionaryWord%i: ", i);
    fprintf(OutputFile, ".byt \"%s\", '%c'|128\r\n", Dictionary[i], LastChar);
  }
  if (MakeDictionaryTable) {
    fprintf(OutputFile, "\r\nCutsceneDictionaryTable:\r\n");
    for (i = 0; i < DictionaryLen; i++) {
      fprintf(OutputFile, ".byt <DictionaryWord%i\r\n", i);
    }
    for (i = 0; i < DictionaryLen; i++) {
      fprintf(OutputFile, ".byt >DictionaryWord%i\r\n", i);
    }
  }
  fclose(OutputFile);
  float Saving = Uncompressed - DictionarySavings;
  Saving = Saving / Uncompressed * 100;
  printf("Dictionary entries: %i (size %i, %i saved by dictionary)\n",
         DictionaryLen, DictionarySize, DictionarySavings);
  printf("Script size: %i ---> %i (%.2f%%)\n", Uncompressed,
         Uncompressed - DictionarySavings, Saving);
  printf("Commands: %i\n", CommandSize);
  for (i = 0; i < DictionaryLen; i++)
    printf("%s%i,", Dictionary[i], DictionaryUse[i]);
  putchar('\n');
  return 0;
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0x1580,%rsp
movl   $0x0,-0x4(%rbp)
mov    %edi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
cmpl   $0x4,-0x8(%rbp)
jge    122b <main+0x3b>
lea    0x1dea(%rip),%rdi
call   1050 <puts@plt>
movl   $0x0,-0x4(%rbp)
jmp    24bd <main+0x12cd>
movl   $0x0,-0x2dc(%rbp)
movl   $0x0,-0x2e0(%rbp)
movl   $0x0,-0x2e4(%rbp)
movl   $0x0,-0x14f4(%rbp)
movl   $0x1,-0x14f8(%rbp)
movl   $0x1,-0x14fc(%rbp)
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%rdi
lea    0x1dbb(%rip),%rsi
call   1100 <fopen@plt>
mov    %rax,-0x1508(%rbp)
cmpq   $0x0,-0x1508(%rbp)
jne    12a8 <main+0xb8>
lea    0x1d9d(%rip),%rdi
call   1050 <puts@plt>
movl   $0x0,-0x4(%rbp)
jmp    24bd <main+0x12cd>
jmp    12ad <main+0xbd>
lea    -0x2d0(%rbp),%rdi
mov    -0x1508(%rbp),%rdx
mov    $0x2bc,%esi
call   10c0 <fgets@plt>
cmp    $0x0,%rax
je     134f <main+0x15f>
lea    -0x2d0(%rbp),%rdi
call   1110 <RemoveLineEndings@plt>
lea    -0x2d0(%rbp),%rdi
call   1070 <strlen@plt>
cmp    $0x1f,%eax
jle    1308 <main+0x118>
lea    0x1d52(%rip),%rdi
call   1050 <puts@plt>
movl   $0xffffffff,-0x4(%rbp)
jmp    24bd <main+0x12cd>
movslq -0x14f4(%rbp),%rax
movl   $0x0,-0x14f0(%rbp,%rax,4)
movslq -0x14f4(%rbp),%rax
lea    -0x12f0(%rbp),%rdi
shl    $0x5,%rax
add    %rax,%rdi
lea    -0x2d0(%rbp),%rsi
call   1040 <strcpy@plt>
mov    -0x14f4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14f4(%rbp)
jmp    12ad <main+0xbd>
mov    -0x10(%rbp),%rax
mov    0x10(%rax),%rdi
lea    0x1cd3(%rip),%rsi
call   1100 <fopen@plt>
mov    %rax,-0x1508(%rbp)
cmpq   $0x0,-0x1508(%rbp)
jne    1390 <main+0x1a0>
lea    0x1cf0(%rip),%rdi
call   1050 <puts@plt>
movl   $0x0,-0x4(%rbp)
jmp    24bd <main+0x12cd>
mov    -0x10(%rbp),%rax
mov    0x18(%rax),%rdi
lea    0x1ce5(%rip),%rsi
call   1100 <fopen@plt>
mov    %rax,-0x1510(%rbp)
cmpq   $0x0,-0x1510(%rbp)
jne    13dd <main+0x1ed>
mov    -0x1508(%rbp),%rdi
call   1060 <fclose@plt>
lea    0x1cbb(%rip),%rdi
call   1050 <puts@plt>
movl   $0x0,-0x4(%rbp)
jmp    24bd <main+0x12cd>
jmp    13e2 <main+0x1f2>
lea    -0x2d0(%rbp),%rdi
mov    -0x1508(%rbp),%rdx
mov    $0x2bc,%esi
call   10c0 <fgets@plt>
cmp    $0x0,%rax
je     2183 <main+0xf93>
lea    -0x2d0(%rbp),%rdi
call   1110 <RemoveLineEndings@plt>
movl   $0x0,-0x1514(%rbp)
cmpb   $0x0,-0x2d0(%rbp)
jne    142c <main+0x23c>
jmp    13e2 <main+0x1f2>
movsbl -0x2d0(%rbp),%eax
cmp    $0x3a,%eax
jne    1461 <main+0x271>
mov    -0x1510(%rbp),%rdi
lea    -0x2d0(%rbp),%rdx
add    $0x1,%rdx
lea    0x1e1e(%rip),%rsi
mov    $0x0,%al
call   10e0 <fprintf@plt>
jmp    215c <main+0xf6c>
movsbl -0x2d0(%rbp),%eax
cmp    $0x60,%eax
je     1481 <main+0x291>
movsbl -0x2d0(%rbp),%eax
cmp    $0x3f,%eax
jne    1b3d <main+0x94d>
lea    -0x2d0(%rbp),%rdi
mov    $0x20,%esi
call   1080 <strchr@plt>
mov    %rax,-0x1520(%rbp)
cmpq   $0x0,-0x1520(%rbp)
je     14bf <main+0x2cf>
mov    -0x1520(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x1520(%rbp)
movb   $0x0,(%rax)
lea    -0x2d0(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x1528(%rbp)
mov    -0x1528(%rbp),%rdi
lea    0x1bc7(%rip),%rsi
call   10d0 <strcmp@plt>
cmp    $0x0,%eax
jne    1507 <main+0x317>
mov    -0x1510(%rbp),%rdi
lea    0x1bae(%rip),%rsi
mov    $0x0,%al
call   10e0 <fprintf@plt>
jmp    1996 <main+0x7a6>
mov    -0x1528(%rbp),%rdi
lea    0x1ba6(%rip),%rsi
call   10d0 <strcmp@plt>
cmp    $0x0,%eax
jne    153d <main+0x34d>
mov    -0x1510(%rbp),%rdi
lea    0x1b8e(%rip),%rsi
mov    $0x0,%al
call   10e0 <fprintf@plt>
jmp    1991 <main+0x7a1>
mov    -0x1528(%rbp),%rdi
lea    0x1b89(%rip),%rsi
call   10d0 <strcmp@plt>
cmp    $0x0,%eax
jne    1581 <main+0x391>
mov    -0x1510(%rbp),%rdi
mov    -0x1520(%rbp),%rdx
mov    -0x1520(%rbp),%rcx
lea    0x1b64(%rip),%rsi
mov    $0x0,%al
call   10e0 <fprintf@plt>
jmp    198c <main+0x79c>
mov    -0x1528(%rbp),%rdi
lea    0x1b63(%rip),%rsi
call   10d0 <strcmp@plt>
cmp    $0x0,%eax
jne    15b7 <main+0x3c7>
mov    -0x1510(%rbp),%rdi
lea    0x1b4b(%rip),%rsi
mov    $0x0,%al
call   10e0 <fprintf@plt>
jmp    1987 <main+0x797>
mov    -0x1528(%rbp),%rdi
lea    0x1c37(%rip),%rsi
call   10d0 <strcmp@plt>
cmp    $0x0,%eax
jne    15ed <main+0x3fd>
mov    -0x1510(%rbp),%rdi
lea    0x1b27(%rip),%rsi
mov    $0x0,%al
call   10e0 <fprintf@plt>
jmp    1982 <main+0x792>
mov    -0x1528(%rbp),%rdi
lea    0x1b20(%rip),%rsi
call   10d0 <strcmp@plt>
cmp    $0x0,%eax
jne    1631 <main+0x441>
mov    -0x1510(%rbp),%rdi
mov    -0x1520(%rbp),%rdx
mov    -0x1520(%rbp),%rcx
lea    0x1afb(%rip),%rsi
mov    $0x0,%al
call   10e0 <fprintf@plt>
jmp    197d <main+0x78d>
mov    -0x1528(%rbp),%rdi
lea    0x1afa(%rip),%rsi
call   10d0 <strcmp@plt>
cmp    $0x0,%eax
jne    1675 <main+0x485>
mov    -0x1510(%rbp),%rdi
mov    -0x1520(%rbp),%rdx
mov    -0x1520(%rbp),%rcx
lea    0x1ad5(%rip),%rsi
mov    $0x0,%al
call   10e0 <fprintf@plt>
jmp    1978 <main+0x788>
mov    -0x1528(%rbp),%rdi
lea    0x1ad4(%rip),%rsi
call   10d0 <strcmp@plt>
cmp    $0x0,%eax
jne    16ab <main+0x4bb>
mov    -0x1510(%rbp),%rdi
lea    0x1abf(%rip),%rsi
mov    $0x0,%al
call   10e0 <fprintf@plt>
jmp    1973 <main+0x783>
mov    -0x1528(%rbp),%rdi
lea    0x1ab6(%rip),%rsi
call   10d0 <strcmp@plt>
cmp    $0x0,%eax
jne    16e8 <main+0x4f8>
mov    -0x1510(%rbp),%rdi
mov    -0x1520(%rbp),%rdx
lea    0x1a9a(%rip),%rsi
mov    $0x0,%al
call   10e0 <fprintf@plt>
jmp    196e <main+0x77e>
mov    -0x1528(%rbp),%rdi
lea    0x1aa2(%rip),%rsi
call   10d0 <strcmp@plt>
cmp    $0x0,%eax
jne    1725 <main+0x535>
mov    -0x1510(%rbp),%rdi
mov    -0x1520(%rbp),%rdx
lea    0x1a85(%rip),%rsi
mov    $0x0,%al
call   10e0 <fprintf@plt>
jmp    1969 <main+0x779>
mov    -0x1528(%rbp),%rdi
lea    0x1a87(%rip),%rsi
call   10d0 <strcmp@plt>
cmp    $0x0,%eax
jne    175b <main+0x56b>
mov    -0x1510(%rbp),%rdi
lea    0x1a76(%rip),%rsi
mov    $0x0,%al
call   10e0 <fprintf@plt>
jmp    1964 <main+0x774>
mov    -0x1528(%rbp),%rdi
lea    0x1a71(%rip),%rsi
call   10d0 <strcmp@plt>
cmp    $0x0,%eax
jne    1791 <main+0x5a1>
mov    -0x1510(%rbp),%rdi
lea    0x1a5c(%rip),%rsi
mov    $0x0,%al
call   10e0 <fprintf@plt>
jmp    195f <main+0x76f>
mov    -0x1528(%rbp),%rdi
lea    0x1a54(%rip),%rsi
call   10d0 <strcmp@plt>
cmp    $0x0,%eax
jne    17bc <main+0x5cc>
movl   $0x0,-0x14f8(%rbp)
jmp    195a <main+0x76a>
mov    -0x1528(%rbp),%rdi
lea    0x1a34(%rip),%rsi
call   10d0 <strcmp@plt>
cmp    $0x0,%eax
jne    17e7 <main+0x5f7>
movl   $0x1,-0x14f8(%rbp)
jmp    1955 <main+0x765>
mov    -0x1528(%rbp),%rdi
lea    0x1a12(%rip),%rsi
call   10d0 <strcmp@plt>
cmp    $0x0,%eax
jne    1812 <main+0x622>
movl   $0x0,-0x14fc(%rbp)
jmp    1950 <main+0x760>
mov    -0x1528(%rbp),%rdi
lea    0x19f9(%rip),%rsi
call   10d0 <strcmp@plt>
cmp    $0x0,%eax
jne    1856 <main+0x666>
mov    -0x1510(%rbp),%rdi
mov    -0x1520(%rbp),%rdx
mov    -0x1520(%rbp),%rcx
lea    0x19d8(%rip),%rsi
mov    $0x0,%al
call   10e0 <fprintf@plt>
jmp    194b <main+0x75b>
mov    -0x1528(%rbp),%rdi
lea    0x19dc(%rip),%rsi
call   10d0 <strcmp@plt>
cmp    $0x0,%eax
jne    188c <main+0x69c>
mov    -0x1510(%rbp),%rdi
lea    0x19c6(%rip),%rsi
mov    $0x0,%al
call   10e0 <fprintf@plt>
jmp    1946 <main+0x756>
mov    -0x1528(%rbp),%rdi
lea    0x19c0(%rip),%rsi
call   10d0 <strcmp@plt>
cmp    $0x0,%eax
jne    18c9 <main+0x6d9>
mov    -0x1510(%rbp),%rdi
mov    -0x1520(%rbp),%rdx
lea    0x19a4(%rip),%rsi
mov    $0x0,%al
call   10e0 <fprintf@plt>
jmp    1941 <main+0x751>
mov    -0x1528(%rbp),%rdi
lea    0x199f(%rip),%rsi
call   10d0 <strcmp@plt>
cmp    $0x0,%eax
jne    1906 <main+0x716>
mov    -0x1510(%rbp),%rdi
mov    -0x1520(%rbp),%rdx
lea    0x1982(%rip),%rsi
mov    $0x0,%al
call   10e0 <fprintf@plt>
jmp    193c <main+0x74c>
mov    -0x1528(%rbp),%rdi
lea    0x197c(%rip),%rsi
call   10d0 <strcmp@plt>
cmp    $0x0,%eax
jne    1937 <main+0x747>
mov    -0x1510(%rbp),%rdi
lea    0x1967(%rip),%rsi
mov    $0x0,%al
call   10e0 <fprintf@plt>
jmp    193c <main+0x74c>
jmp    1941 <main+0x751>
jmp    1946 <main+0x756>
jmp    194b <main+0x75b>
jmp    1950 <main+0x760>
jmp    1955 <main+0x765>
jmp    195a <main+0x76a>
jmp    195f <main+0x76f>
jmp    1964 <main+0x774>
jmp    1969 <main+0x779>
jmp    196e <main+0x77e>
jmp    1973 <main+0x783>
jmp    1978 <main+0x788>
jmp    197d <main+0x78d>
jmp    1982 <main+0x792>
jmp    1987 <main+0x797>
jmp    198c <main+0x79c>
jmp    1991 <main+0x7a1>
jmp    1996 <main+0x7a6>
movsbl -0x2d0(%rbp),%eax
cmp    $0x3f,%eax
jne    1a8b <main+0x89b>
mov    -0x1528(%rbp),%rdi
lea    0x180e(%rip),%rsi
call   10d0 <strcmp@plt>
cmp    $0x0,%eax
jne    19de <main+0x7ee>
mov    -0x1510(%rbp),%rdi
mov    -0x1520(%rbp),%rdx
lea    0x18d1(%rip),%rsi
mov    $0x0,%al
call   10e0 <fprintf@plt>
mov    -0x1528(%rbp),%rdi
lea    0x18e1(%rip),%rsi
call   10d0 <strcmp@plt>
cmp    $0x0,%eax
jne    1a16 <main+0x826>
mov    -0x1510(%rbp),%rdi
mov    -0x1520(%rbp),%rdx
lea    0x18c2(%rip),%rsi
mov    $0x0,%al
call   10e0 <fprintf@plt>
mov    -0x1528(%rbp),%rdi
lea    0x18fb(%rip),%rsi
call   10d0 <strcmp@plt>
cmp    $0x0,%eax
jne    1a4e <main+0x85e>
mov    -0x1510(%rbp),%rdi
mov    -0x1520(%rbp),%rdx
lea    0x18b0(%rip),%rsi
mov    $0x0,%al
call   10e0 <fprintf@plt>
mov    -0x1528(%rbp),%rdi
lea    0x18c0(%rip),%rsi
call   10d0 <strcmp@plt>
cmp    $0x0,%eax
jne    1a86 <main+0x896>
mov    -0x1510(%rbp),%rdi
mov    -0x1520(%rbp),%rdx
lea    0x18a5(%rip),%rsi
mov    $0x0,%al
call   10e0 <fprintf@plt>
jmp    1b38 <main+0x948>
mov    -0x1528(%rbp),%rdi
lea    0x1729(%rip),%rsi
call   10d0 <strcmp@plt>
cmp    $0x0,%eax
jne    1ac3 <main+0x8d3>
mov    -0x1510(%rbp),%rdi
mov    -0x1520(%rbp),%rdx
lea    0x1891(%rip),%rsi
mov    $0x0,%al
call   10e0 <fprintf@plt>
mov    -0x1528(%rbp),%rdi
lea    0x17fc(%rip),%rsi
call   10d0 <strcmp@plt>
cmp    $0x0,%eax
jne    1afb <main+0x90b>
mov    -0x1510(%rbp),%rdi
mov    -0x1520(%rbp),%rdx
lea    0x187b(%rip),%rsi
mov    $0x0,%al
call   10e0 <fprintf@plt>
mov    -0x1528(%rbp),%rdi
lea    0x1889(%rip),%rsi
call   10d0 <strcmp@plt>
cmp    $0x0,%eax
jne    1b33 <main+0x943>
mov    -0x1510(%rbp),%rdi
mov    -0x1520(%rbp),%rdx
lea    0x186d(%rip),%rsi
mov    $0x0,%al
call   10e0 <fprintf@plt>
jmp    1b38 <main+0x948>
jmp    2157 <main+0xf67>
lea    -0x2d0(%rbp),%rax
mov    %rax,-0x2d8(%rbp)
mov    -0x1510(%rbp),%rdi
mov    -0x2d8(%rbp),%rdx
lea    0x185f(%rip),%rsi
xor    %eax,%eax
call   10e0 <fprintf@plt>
movsbl -0x2d0(%rbp),%eax
mov    %eax,-0x155c(%rbp)
sub    $0x3c,%eax
je     1baa <main+0x9ba>
jmp    1b82 <main+0x992>
mov    -0x155c(%rbp),%eax
sub    $0x3e,%eax
je     1c16 <main+0xa26>
jmp    1b96 <main+0x9a6>
mov    -0x155c(%rbp),%eax
sub    $0x5b,%eax
je     1c82 <main+0xa92>
jmp    1d26 <main+0xb36>
lea    -0x2d0(%rbp),%rdi
mov    $0x3e,%esi
call   1080 <strchr@plt>
add    $0x1,%rax
mov    %rax,-0x2d8(%rbp)
mov    -0x2d8(%rbp),%rax
movb   $0x0,-0x1(%rax)
mov    -0x1510(%rbp),%rdi
movsbl -0x2cf(%rbp),%edx
lea    -0x2d0(%rbp),%rcx
add    $0x3,%rcx
lea    0x17d5(%rip),%rsi
mov    $0x0,%al
call   10e0 <fprintf@plt>
mov    -0x2e4(%rbp),%eax
add    $0x2,%eax
mov    %eax,-0x2e4(%rbp)
movl   $0x1,-0x1514(%rbp)
jmp    1d26 <main+0xb36>
lea    -0x2d0(%rbp),%rdi
mov    $0x3c,%esi
call   1080 <strchr@plt>
add    $0x1,%rax
mov    %rax,-0x2d8(%rbp)
mov    -0x2d8(%rbp),%rax
movb   $0x0,-0x1(%rax)
mov    -0x1510(%rbp),%rdi
movsbl -0x2cf(%rbp),%edx
lea    -0x2d0(%rbp),%rcx
add    $0x3,%rcx
lea    0x1791(%rip),%rsi
mov    $0x0,%al
call   10e0 <fprintf@plt>
mov    -0x2e4(%rbp),%eax
add    $0x2,%eax
mov    %eax,-0x2e4(%rbp)
movl   $0x1,-0x1514(%rbp)
jmp    1d26 <main+0xb36>
lea    -0x2d0(%rbp),%rdi
mov    $0x5d,%esi
call   1080 <strchr@plt>
add    $0x1,%rax
mov    %rax,-0x2d8(%rbp)
mov    -0x2d8(%rbp),%rax
movb   $0x0,-0x1(%rax)
mov    -0x1510(%rbp),%rax
mov    %rax,-0x1568(%rbp)
movsbl -0x2cf(%rbp),%eax
cmp    $0x0,%eax
je     1cde <main+0xaee>
lea    -0x2d0(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x1570(%rbp)
jmp    1cf1 <main+0xb01>
lea    0x174f(%rip),%rax
mov    %rax,-0x1570(%rbp)
jmp    1cf1 <main+0xb01>
mov    -0x1568(%rbp),%rdi
mov    -0x1570(%rbp),%rdx
lea    0x1712(%rip),%rsi
mov    $0x0,%al
call   10e0 <fprintf@plt>
mov    -0x2e4(%rbp),%eax
add    $0x2,%eax
mov    %eax,-0x2e4(%rbp)
movl   $0x1,-0x1514(%rbp)
cmpl   $0x0,-0x14f8(%rbp)
je     1d69 <main+0xb79>
mov    -0x2d8(%rbp),%rax
lea    -0x2d0(%rbp),%rcx
cmp    %rcx,%rax
jne    1d69 <main+0xb79>
mov    -0x1510(%rbp),%rdi
lea    0x1351(%rip),%rsi
mov    $0x0,%al
call   10e0 <fprintf@plt>
movl   $0x1,-0x1514(%rbp)
cmpl   $0x0,-0x1514(%rbp)
jne    1d8b <main+0xb9b>
mov    -0x1510(%rbp),%rdi
lea    0x16b5(%rip),%rsi
mov    $0x0,%al
call   10e0 <fprintf@plt>
cmpl   $0x0,-0x14f8(%rbp)
je     1efe <main+0xd0e>
movl   $0x0,-0x1534(%rbp)
mov    -0x2d8(%rbp),%rax
mov    %rax,-0x1530(%rbp)
mov    -0x1530(%rbp),%rax
cmpb   $0x0,(%rax)
je     1ef9 <main+0xd09>
mov    -0x1530(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x20,%eax
jne    1eaf <main+0xcbf>
movl   $0x0,-0x1538(%rbp)
mov    -0x1530(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x1540(%rbp)
mov    -0x1540(%rbp),%rax
movsbl (%rax),%ecx
xor    %eax,%eax
cmp    $0x20,%ecx
mov    %al,-0x1571(%rbp)
je     1e20 <main+0xc30>
mov    -0x1540(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x0,%eax
setne  %al
mov    %al,-0x1571(%rbp)
mov    -0x1571(%rbp),%al
test   $0x1,%al
jne    1e33 <main+0xc43>
jmp    1e65 <main+0xc75>
mov    -0x1540(%rbp),%rax
movsbl (%rax),%edi
call   10f0 <CharWidth@plt>
add    -0x1538(%rbp),%eax
mov    %eax,-0x1538(%rbp)
mov    -0x1540(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x1540(%rbp)
jmp    1def <main+0xbff>
mov    -0x1534(%rbp),%eax
mov    %eax,-0x1578(%rbp)
mov    $0x20,%edi
call   10f0 <CharWidth@plt>
mov    %eax,%ecx
mov    -0x1578(%rbp),%eax
add    %ecx,%eax
add    -0x1538(%rbp),%eax
cmp    $0x80,%eax
jl     1eaa <main+0xcba>
mov    -0x1530(%rbp),%rax
movb   $0xa,(%rax)
movl   $0x0,-0x1534(%rbp)
jmp    1eaf <main+0xcbf>
mov    -0x1530(%rbp),%rax
movsbl (%rax),%eax
cmp    $0xa,%eax
je     1edd <main+0xced>
mov    -0x1530(%rbp),%rax
movsbl (%rax),%edi
call   10f0 <CharWidth@plt>
add    -0x1534(%rbp),%eax
mov    %eax,-0x1534(%rbp)
jmp    1ee2 <main+0xcf2>
mov    -0x1530(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x1530(%rbp)
jmp    1db0 <main+0xbc0>
jmp    1efe <main+0xd0e>
mov    -0x2d8(%rbp),%rdi
call   1070 <strlen@plt>
add    -0x2e0(%rbp),%eax
mov    %eax,-0x2e0(%rbp)
mov    -0x2d8(%rbp),%rax
cmpb   $0x0,(%rax)
je     214d <main+0xf5d>
movl   $0x0,-0x2e8(%rbp)
mov    -0x2e8(%rbp),%eax
cmp    -0x14f4(%rbp),%eax
jge    2052 <main+0xe62>
mov    -0x2d8(%rbp),%rdi
movslq -0x2e8(%rbp),%rax
lea    -0x12f0(%rbp),%rsi
shl    $0x5,%rax
add    %rax,%rsi
call   10b0 <Match@plt>
cmp    $0x0,%rax
je     2039 <main+0xe49>
cmpl   $0x0,-0x1514(%rbp)
je     1f8f <main+0xd9f>
mov    -0x1510(%rbp),%rdi
lea    0x14b7(%rip),%rsi
mov    $0x0,%al
call   10e0 <fprintf@plt>
mov    -0x1510(%rbp),%rdi
mov    -0x2e8(%rbp),%edx
add    $0x80,%edx
lea    0x1499(%rip),%rsi
mov    $0x0,%al
call   10e0 <fprintf@plt>
movl   $0x1,-0x1514(%rbp)
movslq -0x2e8(%rbp),%rax
lea    -0x12f0(%rbp),%rsi
shl    $0x5,%rax
add    %rax,%rsi
lea    0x1472(%rip),%rdi
mov    $0x0,%al
call   1090 <printf@plt>
movslq -0x2e8(%rbp),%rax
lea    -0x12f0(%rbp),%rdi
shl    $0x5,%rax
add    %rax,%rdi
call   1070 <strlen@plt>
mov    %eax,%ecx
mov    -0x2d8(%rbp),%rax
movslq %ecx,%rcx
add    %rcx,%rax
mov    %rax,-0x2d8(%rbp)
movslq -0x2e8(%rbp),%rax
mov    -0x14f0(%rbp,%rax,4),%ecx
add    $0x1,%ecx
mov    %ecx,-0x14f0(%rbp,%rax,4)
mov    -0x2dc(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x2dc(%rbp)
jmp    2052 <main+0xe62>
jmp    203e <main+0xe4e>
mov    -0x2e8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x2e8(%rbp)
jmp    1f30 <main+0xd40>
mov    -0x2e8(%rbp),%eax
cmp    -0x14f4(%rbp),%eax
jne    2139 <main+0xf49>
cmpl   $0x0,-0x1514(%rbp)
je     2086 <main+0xe96>
mov    -0x1510(%rbp),%rdi
lea    0x13c0(%rip),%rsi
mov    $0x0,%al
call   10e0 <fprintf@plt>
movl   $0x1,-0x1514(%rbp)
mov    -0x2d8(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x22,%eax
jne    20c7 <main+0xed7>
mov    -0x1510(%rbp),%rdi
mov    -0x2d8(%rbp),%rax
movsbl (%rax),%edx
lea    0x1392(%rip),%rsi
mov    $0x0,%al
call   10e0 <fprintf@plt>
jmp    2118 <main+0xf28>
mov    -0x2d8(%rbp),%rax
movsbl (%rax),%eax
cmp    $0xa,%eax
jne    20f4 <main+0xf04>
mov    -0x1510(%rbp),%rdi
lea    0xfc6(%rip),%rsi
mov    $0x0,%al
call   10e0 <fprintf@plt>
jmp    2113 <main+0xf23>
mov    -0x1510(%rbp),%rdi
mov    -0x2d8(%rbp),%rax
movsbl (%rax),%edx
lea    0x1345(%rip),%rsi
mov    $0x0,%al
call   10e0 <fprintf@plt>
jmp    2118 <main+0xf28>
mov    -0x2d8(%rbp),%rax
movsbl (%rax),%edi
call   1030 <putchar@plt>
mov    -0x2d8(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x2d8(%rbp)
mov    -0x2dc(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x2dc(%rbp)
jmp    1f16 <main+0xd26>
mov    $0xa,%edi
call   1030 <putchar@plt>
jmp    215c <main+0xf6c>
cmpb   $0x0,-0x2d0(%rbp)
je     217e <main+0xf8e>
mov    -0x1510(%rbp),%rdi
lea    0x131d(%rip),%rsi
mov    $0x0,%al
call   10e0 <fprintf@plt>
jmp    13e2 <main+0x1f2>
mov    -0x1508(%rbp),%rdi
call   1060 <fclose@plt>
movl   $0x0,-0x1544(%rbp)
movl   $0x0,-0x1548(%rbp)
mov    -0x1510(%rbp),%rdi
lea    0x12a5(%rip),%rsi
mov    $0x0,%al
call   10e0 <fprintf@plt>
movl   $0x0,-0x2e8(%rbp)
mov    -0x2e8(%rbp),%eax
cmp    -0x14f4(%rbp),%eax
jge    22e2 <main+0x10f2>
movslq -0x2e8(%rbp),%rax
lea    -0x12f0(%rbp),%rdi
shl    $0x5,%rax
add    %rax,%rdi
call   1070 <strlen@plt>
add    -0x1544(%rbp),%eax
mov    %eax,-0x1544(%rbp)
movslq -0x2e8(%rbp),%rax
lea    -0x12f0(%rbp),%rdi
shl    $0x5,%rax
add    %rax,%rdi
call   1070 <strlen@plt>
movslq -0x2e8(%rbp),%rcx
mov    -0x14f0(%rbp,%rcx,4),%ecx
sub    $0x1,%ecx
imul   %ecx,%eax
sub    $0x1,%eax
add    -0x1548(%rbp),%eax
mov    %eax,-0x1548(%rbp)
movslq -0x2e8(%rbp),%rax
lea    -0x12f0(%rbp),%rdi
shl    $0x5,%rax
add    %rax,%rdi
xor    %esi,%esi
call   10a0 <strrchr@plt>
mov    %rax,-0x1550(%rbp)
mov    -0x1550(%rbp),%rax
mov    -0x1(%rax),%al
mov    %al,-0x1551(%rbp)
mov    -0x1550(%rbp),%rax
movb   $0x0,-0x1(%rax)
cmpl   $0x0,-0x14fc(%rbp)
je     229d <main+0x10ad>
mov    -0x1510(%rbp),%rdi
mov    -0x2e8(%rbp),%edx
lea    0x11d8(%rip),%rsi
mov    $0x0,%al
call   10e0 <fprintf@plt>
mov    -0x1510(%rbp),%rdi
movslq -0x2e8(%rbp),%rax
lea    -0x12f0(%rbp),%rdx
shl    $0x5,%rax
add    %rax,%rdx
movsbl -0x1551(%rbp),%ecx
lea    0x11ba(%rip),%rsi
mov    $0x0,%al
call   10e0 <fprintf@plt>
mov    -0x2e8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x2e8(%rbp)
jmp    21c2 <main+0xfd2>
cmpl   $0x0,-0x14fc(%rbp)
je     239f <main+0x11af>
mov    -0x1510(%rbp),%rdi
lea    0x119a(%rip),%rsi
mov    $0x0,%al
call   10e0 <fprintf@plt>
movl   $0x0,-0x2e8(%rbp)
mov    -0x2e8(%rbp),%eax
cmp    -0x14f4(%rbp),%eax
jge    234f <main+0x115f>
mov    -0x1510(%rbp),%rdi
mov    -0x2e8(%rbp),%edx
lea    0x1180(%rip),%rsi
mov    $0x0,%al
call   10e0 <fprintf@plt>
mov    -0x2e8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x2e8(%rbp)
jmp    230e <main+0x111e>
movl   $0x0,-0x2e8(%rbp)
mov    -0x2e8(%rbp),%eax
cmp    -0x14f4(%rbp),%eax
jge    239a <main+0x11aa>
mov    -0x1510(%rbp),%rdi
mov    -0x2e8(%rbp),%edx
lea    0x114e(%rip),%rsi
mov    $0x0,%al
call   10e0 <fprintf@plt>
mov    -0x2e8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x2e8(%rbp)
jmp    2359 <main+0x1169>
jmp    239f <main+0x11af>
mov    -0x1510(%rbp),%rdi
call   1060 <fclose@plt>
mov    -0x2e0(%rbp),%eax
sub    -0x1548(%rbp),%eax
cvtsi2ss %eax,%xmm0
movss  %xmm0,-0x1558(%rbp)
ff
movss  -0x1558(%rbp),%xmm0
ff
cvtsi2ssl -0x2e0(%rbp),%xmm1
ff
divss  %xmm1,%xmm0
movss  0xc21(%rip),%xmm1
mulss  %xmm1,%xmm0
movss  %xmm0,-0x1558(%rbp)
ff
mov    -0x14f4(%rbp),%esi
mov    -0x1544(%rbp),%edx
mov    -0x1548(%rbp),%ecx
lea    0x10e2(%rip),%rdi
mov    $0x0,%al
call   1090 <printf@plt>
mov    -0x2e0(%rbp),%esi
mov    -0x2e0(%rbp),%edx
sub    -0x1548(%rbp),%edx
movss  -0x1558(%rbp),%xmm0
ff
cvtss2sd %xmm0,%xmm0
lea    0x10f0(%rip),%rdi
mov    $0x1,%al
call   1090 <printf@plt>
mov    -0x2e4(%rbp),%esi
lea    0x10fe(%rip),%rdi
mov    $0x0,%al
call   1090 <printf@plt>
movl   $0x0,-0x2e8(%rbp)
mov    -0x2e8(%rbp),%eax
cmp    -0x14f4(%rbp),%eax
jge    24ac <main+0x12bc>
movslq -0x2e8(%rbp),%rax
lea    -0x12f0(%rbp),%rsi
shl    $0x5,%rax
add    %rax,%rsi
movslq -0x2e8(%rbp),%rax
mov    -0x14f0(%rbp,%rax,4),%edx
lea    0x10bf(%rip),%rdi
mov    $0x0,%al
call   1090 <printf@plt>
mov    -0x2e8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x2e8(%rbp)
jmp    2455 <main+0x1265>
mov    $0xa,%edi
call   1030 <putchar@plt>
movl   $0x0,-0x4(%rbp)
mov    -0x4(%rbp),%eax
add    $0x1580,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x14f8,%rsp
cmp    $0x3,%edi
jg     1217 <main+0x27>
lea    0xe17(%rip),%rdi
call   1050 <puts@plt>
jmp    1f9b <main+0xdab>
mov    %rsi,%r14
mov    0x8(%rsi),%rdi
lea    0xe2c(%rip),%rsi
call   10f0 <fopen@plt>
test   %rax,%rax
je     12b1 <main+0xc1>
mov    %rax,%r15
lea    0x30(%rsp),%rdi
mov    $0x2bc,%esi
mov    %rax,%rdx
call   10c0 <fgets@plt>
test   %rax,%rax
je     12c2 <main+0xd2>
lea    0x4f0(%rsp),%rbx
xor    %ebp,%ebp
lea    0x30(%rsp),%r12
nopl   0x0(%rax)
mov    %r12,%rdi
call   1100 <RemoveLineEndings@plt>
mov    %r12,%rdi
call   1070 <strlen@plt>
cmp    $0x20,%eax
jge    1c5f <main+0xa6f>
movl   $0x0,0x2f0(%rsp,%rbp,4)
mov    %rbx,%rdi
mov    %r12,%rsi
call   1040 <strcpy@plt>
add    $0x1,%rbp
mov    %r12,%rdi
mov    $0x2bc,%esi
mov    %r15,%rdx
call   10c0 <fgets@plt>
add    $0x20,%rbx
test   %rax,%rax
jne    1260 <main+0x70>
mov    %rbp,%r15
jmp    12c5 <main+0xd5>
lea    0xd9c(%rip),%rdi
call   1050 <puts@plt>
jmp    1f9b <main+0xdab>
xor    %r15d,%r15d
mov    0x10(%r14),%rdi
lea    0xd81(%rip),%rsi
call   10f0 <fopen@plt>
mov    %rax,0x18(%rsp)
test   %rax,%rax
je     1c75 <main+0xa85>
mov    0x18(%r14),%rdi
lea    0xdb6(%rip),%rsi
call   10f0 <fopen@plt>
test   %rax,%rax
je     1c86 <main+0xa96>
mov    %rax,%r12
lea    0x30(%rsp),%rbx
mov    %rbx,%rdi
mov    $0x2bc,%esi
mov    0x18(%rsp),%r14
mov    %r14,%rdx
call   10c0 <fgets@plt>
mov    %r15d,%ecx
mov    %rcx,0x20(%rsp)
test   %rax,%rax
mov    %r15,0x28(%rsp)
mov    %r12,0x10(%rsp)
je     1ca1 <main+0xab1>
movl   $0x1,0x4(%rsp)
xor    %r13d,%r13d
movl   $0x0,0x8(%rsp)
movl   $0x1,(%rsp)
jmp    1369 <main+0x179>
mov    %rbx,%rdi
mov    $0x2bc,%esi
mov    %r14,%rdx
call   10c0 <fgets@plt>
test   %rax,%rax
je     1cb4 <main+0xac4>
mov    %rbx,%rdi
call   1100 <RemoveLineEndings@plt>
mov    0x30(%rsp),%al
cmp    $0x3e,%al
jg     13a0 <main+0x1b0>
test   %al,%al
je     1350 <main+0x160>
cmp    $0x3a,%al
jne    13d0 <main+0x1e0>
lea    0x31(%rsp),%rdi
mov    %r12,%rsi
call   10a0 <fputs@plt>
jmp    1ab0 <main+0x8c0>
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
cmp    $0x3f,%al
je     13a8 <main+0x1b8>
cmp    $0x60,%al
jne    13d0 <main+0x1e0>
mov    %rbx,%rdi
mov    $0x20,%esi
call   1080 <strchr@plt>
test   %rax,%rax
je     1434 <main+0x244>
mov    %rax,%rbp
add    $0x1,%rbp
movb   $0x0,(%rax)
jmp    1436 <main+0x246>
cs nopw 0x0(%rax,%rax,1)
mov    %r12,%rdi
lea    0x1005(%rip),%rsi
mov    %rbx,%rdx
xor    %eax,%eax
call   10d0 <fprintf@plt>
movsbl 0x30(%rsp),%eax
cmp    $0x5b,%eax
mov    %r13d,0xc(%rsp)
je     16cf <main+0x4df>
cmp    $0x3e,%eax
je     170e <main+0x51e>
cmp    $0x3c,%eax
jne    1760 <main+0x570>
mov    %rbx,%rdi
mov    $0x3e,%esi
call   1080 <strchr@plt>
mov    %rax,%r13
movb   $0x0,(%rax)
add    $0x1,%r13
movsbl 0x31(%rsp),%edx
mov    %r12,%rdi
lea    0xfb7(%rip),%rsi
jmp    1734 <main+0x544>
xor    %ebp,%ebp
movzwl 0x31(%rsp),%eax
xor    $0x6c6e,%eax
movzbl 0x33(%rsp),%ecx
or     %ax,%cx
je     1687 <main+0x497>
cmpl   $0x646e65,0x31(%rsp)
je     169d <main+0x4ad>
mov    0x31(%rsp),%eax
mov    $0x656b6f70,%ecx
xor    %ecx,%eax
movzbl 0x35(%rsp),%ecx
or     %eax,%ecx
je     16b3 <main+0x4c3>
cmpl   $0x6d7361,0x31(%rsp)
je     19a1 <main+0x7b1>
cmpw   $0x70,0x31(%rsp)
je     19b4 <main+0x7c4>
mov    0x31(%rsp),%eax
mov    $0x6f746f67,%ecx
xor    %ecx,%eax
movzbl 0x35(%rsp),%ecx
or     %eax,%ecx
je     1b72 <main+0x982>
mov    0x31(%rsp),%eax
mov    $0x6c6c6163,%ecx
xor    %ecx,%eax
movzbl 0x35(%rsp),%ecx
or     %eax,%ecx
je     1b81 <main+0x991>
mov    0x31(%rsp),%eax
mov    $0x75746572,%ecx
xor    %ecx,%eax
mov    0x34(%rsp),%ecx
mov    $0x6e7275,%edx
xor    %edx,%ecx
or     %eax,%ecx
je     1b90 <main+0x9a0>
mov    0x31(%rsp),%eax
mov    $0x6f6f6863,%ecx
xor    %ecx,%eax
mov    0x34(%rsp),%ecx
mov    $0x65736f,%edx
xor    %edx,%ecx
or     %eax,%ecx
je     1ba6 <main+0x9b6>
mov    0x31(%rsp),%eax
mov    $0x6e656373,%ecx
xor    %ecx,%eax
movzwl 0x35(%rsp),%ecx
xor    $0x65,%ecx
or     %eax,%ecx
je     1bb2 <main+0x9c2>
mov    0x31(%rsp),%rax
movabs $0x697469736e617274,%rcx
69 74 69
xor    %rcx,%rax
mov    0x34(%rsp),%rcx
movabs $0x6e6f697469736e,%rdx
xor    %rdx,%rcx
or     %rax,%rcx
je     1bcb <main+0x9db>
mov    0x31(%rsp),%eax
mov    $0x6b736f6e,%ecx
xor    %ecx,%eax
mov    0x34(%rsp),%ecx
mov    $0x70696b,%edx
xor    %edx,%ecx
or     %eax,%ecx
je     1be1 <main+0x9f1>
mov    0x31(%rsp),%rax
movabs $0x72776c61756e616d,%rcx
6c 77 72
xor    %rcx,%rax
mov    0x34(%rsp),%rcx
movabs $0x706172776c6175,%rdx
xor    %rdx,%rcx
or     %rax,%rcx
je     1bf7 <main+0xa07>
mov    0x31(%rsp),%rax
movabs $0x706172776f747561,%rcx
72 61 70
xor    %rcx,%rax
movzbl 0x39(%rsp),%ecx
or     %rax,%rcx
je     1c03 <main+0xa13>
movdqu 0x31(%rsp),%xmm0
pcmpeqb 0xa45(%rip),%xmm0
movzwl 0x41(%rsp),%eax
movd   %eax,%xmm1
pcmpeqb 0xa44(%rip),%xmm1
pand   %xmm0,%xmm1
pmovmskb %xmm1,%eax
cmp    $0xffff,%eax
je     1c0f <main+0xa1f>
mov    0x31(%rsp),%rax
movabs $0x747865746f6e6f6d,%rcx
65 78 74
xor    %rcx,%rax
movzbl 0x39(%rsp),%ecx
or     %rax,%rcx
je     1c1c <main+0xa2c>
mov    0x31(%rsp),%eax
mov    $0x61656c63,%ecx
xor    %ecx,%eax
movzwl 0x35(%rsp),%ecx
xor    $0x72,%ecx
or     %eax,%ecx
je     1c2b <main+0xa3b>
mov    0x31(%rsp),%eax
mov    $0x6f6c7075,%ecx
xor    %ecx,%eax
mov    0x34(%rsp),%ecx
mov    $0x64616f,%edx
xor    %edx,%ecx
or     %eax,%ecx
je     1c41 <main+0xa51>
mov    0x31(%rsp),%eax
mov    $0x67616d69,%ecx
xor    %ecx,%eax
movzwl 0x35(%rsp),%ecx
xor    $0x65,%ecx
or     %eax,%ecx
je     1c50 <main+0xa60>
mov    0x31(%rsp),%eax
mov    $0x756f7267,%ecx
xor    %ecx,%eax
mov    0x34(%rsp),%ecx
mov    $0x646e75,%edx
xor    %edx,%ecx
or     %eax,%ecx
jne    19d8 <main+0x7e8>
mov    $0x10,%esi
mov    $0x1,%edx
lea    0xc35(%rip),%rdi
jmp    19d0 <main+0x7e0>
mov    $0x11,%esi
mov    $0x1,%edx
lea    0xa31(%rip),%rdi
jmp    19d0 <main+0x7e0>
mov    $0x14,%esi
mov    $0x1,%edx
lea    0xa31(%rip),%rdi
jmp    19d0 <main+0x7e0>
mov    %r12,%rdi
lea    0xa3c(%rip),%rsi
mov    %rbp,%rdx
mov    %rbp,%rcx
xor    %eax,%eax
call   10d0 <fprintf@plt>
jmp    19d8 <main+0x7e8>
mov    %rbx,%rdi
mov    $0x5d,%esi
call   1080 <strchr@plt>
mov    %rax,%r13
movb   $0x0,(%rax)
add    $0x1,%r13
cmpb   $0x0,0x31(%rsp)
lea    0x31(%rsp),%rdx
lea    0xd5d(%rip),%rax
cmove  %rax,%rdx
mov    %r12,%rdi
lea    0xd33(%rip),%rsi
xor    %eax,%eax
call   10d0 <fprintf@plt>
jmp    1740 <main+0x550>
mov    %rbx,%rdi
mov    $0x3c,%esi
call   1080 <strchr@plt>
mov    %rax,%r13
movb   $0x0,(%rax)
add    $0x1,%r13
movsbl 0x31(%rsp),%edx
mov    %r12,%rdi
lea    0xcda(%rip),%rsi
lea    0x33(%rsp),%rcx
xor    %eax,%eax
call   10d0 <fprintf@plt>
addl   $0x2,0x8(%rsp)
cmpl   $0x0,(%rsp)
je     1750 <main+0x560>
cmp    %rbx,%r13
je     176d <main+0x57d>
cmpl   $0x0,(%rsp)
jne    1786 <main+0x596>
mov    $0x1,%ebp
jmp    182a <main+0x63a>
cmpl   $0x0,(%rsp)
je     1b4f <main+0x95f>
mov    %rbx,%r13
mov    $0x11,%esi
mov    $0x1,%edx
lea    0x94b(%rip),%rdi
mov    %r12,%rcx
call   1110 <fwrite@plt>
lea    0x1(%r13),%r12
xor    %r14d,%r14d
mov    %r13,%r15
jmp    17af <main+0x5bf>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
movb   $0xa,(%r15)
xor    %r14d,%r14d
add    $0x1,%r15
add    $0x1,%r12
mov    (%r15),%al
cmp    $0x20,%al
je     17c0 <main+0x5d0>
test   %al,%al
je     181b <main+0x62b>
cmp    $0xa,%al
je     17a7 <main+0x5b7>
jmp    180e <main+0x61e>
xor    %ebx,%ebx
mov    %r12,%rbp
cs nopw 0x0(%rax,%rax,1)
nop
movzbl 0x0(%rbp),%eax
test   $0xdf,%al
je     17f0 <main+0x600>
movsbl %al,%edi
call   10e0 <CharWidth@plt>
add    %eax,%ebx
add    $0x1,%rbp
jmp    17d0 <main+0x5e0>
nopl   0x0(%rax,%rax,1)
mov    $0x20,%edi
call   10e0 <CharWidth@plt>
add    %r14d,%ebx
add    %eax,%ebx
cmp    $0x80,%ebx
jge    17a0 <main+0x5b0>
mov    (%r15),%al
cmp    $0xa,%al
je     17a7 <main+0x5b7>
movsbl %al,%edi
call   10e0 <CharWidth@plt>
add    %eax,%r14d
jmp    17a7 <main+0x5b7>
mov    $0x1,%ebp
mov    0x28(%rsp),%r15
mov    0x10(%rsp),%r12
mov    %r13,%rdi
call   1070 <strlen@plt>
mov    %eax,%r14d
jmp    1861 <main+0x671>
nopw   0x0(%rax,%rax,1)
lea    0xc2a(%rip),%rsi
xor    %eax,%eax
call   10d0 <fprintf@plt>
movsbl 0x0(%r13),%edi
call   1030 <putchar@plt>
add    $0x1,%r13
mov    $0x1,%ebp
cmpb   $0x0,0x0(%r13)
je     1980 <main+0x790>
test   %r15d,%r15d
je     189f <main+0x6af>
lea    0x4f0(%rsp),%rbx
xor    %r12d,%r12d
nopl   0x0(%rax)
mov    %r13,%rdi
mov    %rbx,%rsi
call   10b0 <Match@plt>
test   %rax,%rax
jne    18b0 <main+0x6c0>
add    $0x1,%r12
add    $0x20,%rbx
cmp    %r12,0x20(%rsp)
jne    1880 <main+0x690>
test   %ebp,%ebp
mov    0x10(%rsp),%r12
jne    191e <main+0x72e>
jmp    1937 <main+0x747>
nopl   (%rax)
test   %ebp,%ebp
mov    0x10(%rsp),%rbp
je     18d2 <main+0x6e2>
mov    $0x2,%esi
mov    $0x1,%edx
lea    0xb95(%rip),%rdi
mov    %rbp,%rcx
call   1110 <fwrite@plt>
lea    0x80(%r12),%edx
mov    %rbp,%rdi
lea    0xb7e(%rip),%rsi
xor    %eax,%eax
call   10d0 <fprintf@plt>
lea    0xb76(%rip),%rdi
mov    %rbx,%rsi
xor    %eax,%eax
call   1090 <printf@plt>
mov    %rbx,%rdi
call   1070 <strlen@plt>
cltq
add    %rax,%r13
addl   $0x1,0x2f0(%rsp,%r12,4)
cmp    %r12d,%r15d
mov    %rbp,%r12
jne    185c <main+0x66c>
mov    $0x2,%esi
mov    $0x1,%edx
lea    0xb30(%rip),%rdi
mov    %r12,%rcx
call   1110 <fwrite@plt>
movsbl 0x0(%r13),%edx
cmp    $0xa,%edx
je     1960 <main+0x770>
mov    %r12,%rdi
cmp    $0x22,%dl
jne    1840 <main+0x650>
lea    0xb19(%rip),%rsi
mov    $0x22,%edx
jmp    1847 <main+0x657>
xchg   %ax,%ax
mov    $0xc,%esi
mov    $0x1,%edx
lea    0x75d(%rip),%rdi
mov    %r12,%rcx
call   1110 <fwrite@plt>
jmp    184e <main+0x65e>
xchg   %ax,%ax
mov    0xc(%rsp),%r13d
add    %r14d,%r13d
mov    $0xa,%edi
call   1030 <putchar@plt>
mov    0x18(%rsp),%r14
lea    0x30(%rsp),%rbx
jmp    1ab0 <main+0x8c0>
mov    $0x11,%esi
mov    $0x1,%edx
lea    0x764(%rip),%rdi
jmp    19d0 <main+0x7e0>
mov    $0x12,%esi
mov    $0x1,%edx
lea    0x763(%rip),%rdi
cs nopw 0x0(%rax,%rax,1)
nop
mov    %r12,%rcx
call   1110 <fwrite@plt>
movzwl 0x31(%rsp),%ecx
xor    $0x6e6f,%ecx
movzbl 0x33(%rsp),%edx
xor    %eax,%eax
or     %cx,%dx
setne  %al
cmpb   $0x3f,0x30(%rsp)
jne    1a60 <main+0x870>
test   %eax,%eax
je     1ad9 <main+0x8e9>
cmpl   $0x66666f,0x31(%rsp)
je     1afb <main+0x90b>
mov    0x31(%rsp),%eax
mov    $0x6d657469,%ecx
xor    %ecx,%eax
movzbl 0x35(%rsp),%ecx
or     %eax,%ecx
jne    1a35 <main+0x845>
mov    %r12,%rdi
lea    0x8ec(%rip),%rsi
mov    %rbp,%rdx
xor    %eax,%eax
call   10d0 <fprintf@plt>
movabs $0x6d657469746f6e,%rax
cmp    %rax,0x31(%rsp)
jne    1ab0 <main+0x8c0>
mov    %r12,%rdi
lea    0x8f4(%rip),%rsi
jmp    1a9a <main+0x8aa>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
test   %eax,%eax
je     1b14 <main+0x924>
cmpl   $0x66666f,0x31(%rsp)
je     1b36 <main+0x946>
mov    0x31(%rsp),%eax
mov    $0x67676f74,%ecx
xor    %ecx,%eax
mov    0x34(%rsp),%ecx
mov    $0x656c67,%edx
xor    %edx,%ecx
or     %eax,%ecx
jne    1ab0 <main+0x8c0>
mov    %r12,%rdi
lea    0x91f(%rip),%rsi
mov    %rbp,%rdx
xor    %eax,%eax
call   10d0 <fprintf@plt>
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
cmpb   $0x0,0x30(%rsp)
je     1350 <main+0x160>
mov    $0x2,%esi
mov    $0x1,%edx
lea    0x9e8(%rip),%rdi
mov    %r12,%rcx
call   1110 <fwrite@plt>
jmp    1350 <main+0x160>
mov    %r12,%rdi
lea    0x7e5(%rip),%rsi
mov    %rbp,%rdx
xor    %eax,%eax
call   10d0 <fprintf@plt>
cmpl   $0x66666f,0x31(%rsp)
jne    1a0d <main+0x81d>
mov    %r12,%rdi
lea    0x7ec(%rip),%rsi
mov    %rbp,%rdx
xor    %eax,%eax
call   10d0 <fprintf@plt>
jmp    1a0d <main+0x81d>
mov    %r12,%rdi
lea    0x84f(%rip),%rsi
mov    %rbp,%rdx
xor    %eax,%eax
call   10d0 <fprintf@plt>
cmpl   $0x66666f,0x31(%rsp)
jne    1a76 <main+0x886>
mov    %r12,%rdi
lea    0x84f(%rip),%rsi
mov    %rbp,%rdx
xor    %eax,%eax
call   10d0 <fprintf@plt>
jmp    1a76 <main+0x886>
mov    $0x5,%esi
mov    $0x1,%edx
lea    0x8f9(%rip),%rdi
mov    %r12,%rcx
call   1110 <fwrite@plt>
xor    %ebp,%ebp
mov    %rbx,%r13
jmp    182a <main+0x63a>
mov    %r12,%rdi
lea    0x5c4(%rip),%rsi
jmp    16bd <main+0x4cd>
mov    %r12,%rdi
lea    0x5d3(%rip),%rsi
jmp    16bd <main+0x4cd>
mov    $0x10,%esi
mov    $0x1,%edx
lea    0x5dd(%rip),%rdi
jmp    19d0 <main+0x7e0>
mov    %r12,%rdi
lea    0x5e6(%rip),%rsi
jmp    1bbc <main+0x9cc>
mov    %r12,%rdi
lea    0x602(%rip),%rsi
mov    %rbp,%rdx
xor    %eax,%eax
call   10d0 <fprintf@plt>
jmp    19d8 <main+0x7e8>
mov    $0x14,%esi
mov    $0x1,%edx
lea    0x609(%rip),%rdi
jmp    19d0 <main+0x7e0>
mov    $0x11,%esi
mov    $0x1,%edx
lea    0x60f(%rip),%rdi
jmp    19d0 <main+0x7e0>
movl   $0x0,(%rsp)
jmp    19d8 <main+0x7e8>
movl   $0x1,(%rsp)
jmp    19d8 <main+0x7e8>
movl   $0x0,0x4(%rsp)
jmp    19d8 <main+0x7e8>
mov    %r12,%rdi
lea    0x61c(%rip),%rsi
jmp    16bd <main+0x4cd>
mov    $0x13,%esi
mov    $0x1,%edx
lea    0x62a(%rip),%rdi
jmp    19d0 <main+0x7e0>
mov    %r12,%rdi
lea    0x636(%rip),%rsi
jmp    1bbc <main+0x9cc>
mov    %r12,%rdi
lea    0x642(%rip),%rsi
jmp    1bbc <main+0x9cc>
lea    0x403(%rip),%rdi
call   1050 <puts@plt>
mov    $0xffffffff,%eax
jmp    1f9d <main+0xdad>
lea    0x413(%rip),%rdi
call   1050 <puts@plt>
jmp    1f9b <main+0xdab>
mov    0x18(%rsp),%rdi
call   1060 <fclose@plt>
lea    0x410(%rip),%rdi
call   1050 <puts@plt>
jmp    1f9b <main+0xdab>
movl   $0x0,0x8(%rsp)
movl   $0x1,0x4(%rsp)
xor    %r13d,%r13d
mov    %r14,%rdi
call   1060 <fclose@plt>
lea    0x7b3(%rip),%rdi
mov    $0x17,%esi
mov    $0x1,%edx
mov    %r12,%rcx
call   1110 <fwrite@plt>
test   %r15d,%r15d
je     1e2c <main+0xc3c>
mov    %r13d,0xc(%rsp)
lea    0x4f0(%rsp),%rbp
xor    %r12d,%r12d
xor    %ebx,%ebx
movl   $0x0,(%rsp)
mov    0x10(%rsp),%r14
jmp    1d34 <main+0xb44>
xchg   %ax,%ax
add    %ebx,(%rsp)
mov    0x18(%rsp),%rbx
add    %r15d,%ebx
add    $0xffffffff,%ebx
mov    %r14,%rdi
lea    0x789(%rip),%rsi
mov    %rbp,%rdx
mov    %r13d,%ecx
xor    %eax,%eax
call   10d0 <fprintf@plt>
add    $0x1,%r12
add    $0x20,%rbp
cmp    %r12,0x20(%rsp)
je     1d8e <main+0xb9e>
mov    %rbx,0x18(%rsp)
mov    %rbp,%rdi
call   1070 <strlen@plt>
mov    %eax,%ebx
mov    %rbp,%rdi
call   1070 <strlen@plt>
mov    0x2f0(%rsp,%r12,4),%r15d
add    $0xffffffff,%r15d
imul   %eax,%r15d
mov    %rbp,%rdi
xor    %esi,%esi
call   1080 <strchr@plt>
movsbl -0x1(%rax),%r13d
movb   $0x0,-0x1(%rax)
cmpl   $0x0,0x4(%rsp)
je     1d00 <main+0xb10>
mov    %r14,%rdi
lea    0x70f(%rip),%rsi
mov    %r12d,%edx
xor    %eax,%eax
call   10d0 <fprintf@plt>
jmp    1d00 <main+0xb10>
cmpl   $0x0,0x4(%rsp)
je     1ec8 <main+0xcd8>
lea    0x717(%rip),%rdi
mov    $0x1c,%esi
mov    $0x1,%edx
mov    0x10(%rsp),%r12
mov    %r12,%rcx
call   1110 <fwrite@plt>
mov    0x28(%rsp),%r15
test   %r15d,%r15d
mov    0xc(%rsp),%r13d
je     1e56 <main+0xc66>
lea    0x703(%rip),%r14
xor    %ebp,%ebp
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
mov    %r12,%rdi
mov    %r14,%rsi
mov    %ebp,%edx
xor    %eax,%eax
call   10d0 <fprintf@plt>
add    $0x1,%ebp
cmp    %ebp,%r15d
jne    1de0 <main+0xbf0>
test   %r15d,%r15d
je     1e56 <main+0xc66>
lea    0x6ea(%rip),%r14
xor    %ebp,%ebp
cs nopw 0x0(%rax,%rax,1)
nop
mov    %r12,%rdi
mov    %r14,%rsi
mov    %ebp,%edx
xor    %eax,%eax
call   10d0 <fprintf@plt>
add    $0x1,%ebp
cmp    %ebp,%r15d
jne    1e10 <main+0xc20>
jmp    1ed7 <main+0xce7>
xor    %ebx,%ebx
cmpl   $0x0,0x4(%rsp)
je     1e4e <main+0xc5e>
lea    0x67b(%rip),%rdi
mov    $0x1c,%esi
mov    $0x1,%edx
mov    %r12,%rcx
call   1110 <fwrite@plt>
xor    %r14d,%r14d
jmp    1edb <main+0xceb>
mov    %r12,%rdi
call   1060 <fclose@plt>
mov    %r13d,%ebp
sub    %ebx,%ebp
cvtsi2ss %ebp,%xmm1
cvtsi2ss %r13d,%xmm0
divss  %xmm0,%xmm1
mulss  0x1a8(%rip),%xmm1
movss  %xmm1,0x20(%rsp)
lea    0x681(%rip),%rdi
mov    %r15d,%esi
mov    (%rsp),%edx
mov    %ebx,%ecx
xor    %eax,%eax
call   1090 <printf@plt>
movss  0x20(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
lea    0x69b(%rip),%rdi
mov    %r13d,%esi
mov    %ebp,%edx
mov    $0x1,%al
call   1090 <printf@plt>
lea    0x6aa(%rip),%rdi
mov    0x8(%rsp),%esi
xor    %eax,%eax
call   1090 <printf@plt>
jmp    1f91 <main+0xda1>
mov    0x28(%rsp),%r15
mov    0x10(%rsp),%r12
mov    0xc(%rsp),%r13d
mov    (%rsp),%r14d
mov    %r12,%rdi
call   1060 <fclose@plt>
mov    %r13d,%ebp
sub    %ebx,%ebp
xorps  %xmm1,%xmm1
cvtsi2ss %ebp,%xmm1
xorps  %xmm0,%xmm0
cvtsi2ss %r13d,%xmm0
divss  %xmm0,%xmm1
mulss  0x11d(%rip),%xmm1
movss  %xmm1,0x10(%rsp)
lea    0x5f6(%rip),%rdi
mov    %r15d,%esi
mov    %r14d,%edx
mov    %ebx,%ecx
xor    %eax,%eax
call   1090 <printf@plt>
movss  0x10(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
lea    0x610(%rip),%rdi
mov    %r13d,%esi
mov    %ebp,%edx
mov    $0x1,%al
call   1090 <printf@plt>
lea    0x61f(%rip),%rdi
mov    0x8(%rsp),%esi
xor    %eax,%eax
call   1090 <printf@plt>
test   %r15d,%r15d
mov    0x20(%rsp),%r15
je     1f91 <main+0xda1>
lea    0x4f0(%rsp),%rbx
lea    0x609(%rip),%r14
xor    %ebp,%ebp
nopl   0x0(%rax)
mov    0x2f0(%rsp,%rbp,4),%edx
mov    %r14,%rdi
mov    %rbx,%rsi
xor    %eax,%eax
call   1090 <printf@plt>
add    $0x1,%rbp
add    $0x20,%rbx
cmp    %rbp,%r15
jne    1f70 <main+0xd80>
mov    $0xa,%edi
call   1030 <putchar@plt>
xor    %eax,%eax
add    $0x14f8,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

LLVM IR (-O0):
@.str = [45 x i8] c"syntax: mkdialog dictionary.txt in.txt out.s\00"
@.str.1 = [3 x i8] c"rb\00"
@.str.2 = [21 x i8] c"dictionary not found\00"
@.str.3 = [38 x i8] c"Dictionary has a word that's too long\00"
@.str.4 = [21 x i8] c"input file not found\00"
@.str.5 = [3 x i8] c"wb\00"
@.str.6 = [31 x i8] c"output file couldn't be opened\00"
@.str.7 = [3 x i8] c"%s\00"
@.str.8 = [3 x i8] c"nl\00"
@.str.9 = [18 x i8] c".byt SCR::NEWLINE\00"
@.str.10 = [4 x i8] c"end\00"
@.str.11 = [21 x i8] c".byt SCR::END_SCRIPT\00"
@.str.12 = [5 x i8] c"poke\00"
@.str.13 = [25 x i8] c".byt SCR::POKE, <%s, >%s\00"
@.str.14 = [4 x i8] c"asm\00"
@.str.15 = [18 x i8] c".byt SCR::RUN_ASM\00"
@.str.16 = [2 x i8] c"p\00"
@.str.17 = [19 x i8] c".byt SCR::END_PAGE\00"
@.str.18 = [5 x i8] c"goto\00"
@.str.19 = [25 x i8] c".byt SCR::GOTO, <%s, >%s\00"
@.str.20 = [5 x i8] c"call\00"
@.str.21 = [25 x i8] c".byt SCR::CALL, <%s, >%s\00"
@.str.22 = [7 x i8] c"return\00"
@.str.23 = [17 x i8] c".byt SCR::RETURN\00"
@.str.24 = [7 x i8] c"choose\00"
@.str.25 = [34 x i8] c".byt SCR::CHOICES, CHOICELIST::%s\00"
@.str.26 = [6 x i8] c"scene\00"
@.str.27 = [28 x i8] c".byt SCR::SCENE, SCENES::%s\00"
@.str.28 = [11 x i8] c"transition\00"
@.str.29 = [21 x i8] c".byt SCR::TRANSITION\00"
@.str.30 = [7 x i8] c"noskip\00"
@.str.31 = [18 x i8] c".byt SCR::NO_SKIP\00"
@.str.32 = [11 x i8] c"manualwrap\00"
@.str.33 = [9 x i8] c"autowrap\00"
@.str.34 = [18 x i8] c"nodictionarytable\00"
@.str.35 = [9 x i8] c"monotext\00"
@.str.36 = [30 x i8] c".byt SCR::MONO_TEXT, <%s, >%s\00"
@.str.37 = [6 x i8] c"clear\00"
@.str.38 = [20 x i8] c".byt SCR::CLEAR_ALL\00"
@.str.39 = [7 x i8] c"upload\00"
@.str.40 = [21 x i8] c".byt SCR::UPLOAD, %s\00"
@.str.41 = [6 x i8] c"image\00"
@.str.42 = [20 x i8] c".byt SCR::IMAGE, %s\00"
@.str.43 = [7 x i8] c"ground\00"
@.str.44 = [17 x i8] c".byt SCR::GROUND\00"
@.str.45 = [3 x i8] c"on\00"
@.str.46 = [37 x i8] c".byt SCR::IF_FLAG_ON, EventFlags::%s\00"
@.str.47 = [4 x i8] c"off\00"
@.str.48 = [38 x i8] c".byt SCR::IF_FLAG_OFF, EventFlags::%s\00"
@.str.49 = [5 x i8] c"item\00"
@.str.50 = [37 x i8] c".byt SCR::IF_ITEM, InventoryItem::%s\00"
@.str.51 = [8 x i8] c"notitem\00"
@.str.52 = [41 x i8] c".byt SCR::IF_NOT_ITEM, InventoryItem::%s\00"
@.str.53 = [34 x i8] c".byt SCR::FLAG_ON, EventFlags::%s\00"
@.str.54 = [35 x i8] c".byt SCR::FLAG_OFF, EventFlags::%s\00"
@.str.55 = [7 x i8] c"toggle\00"
@.str.56 = [38 x i8] c".byt SCR::FLAG_TOGGLE, EventFlags::%s\00"
@.str.57 = [7 x i8] c"; %s\0D\0A\00"
@.str.58 = [40 x i8] c".byt SCR::SAY, SCR::SPEAKER_%c|CHAR::%s\00"
@.str.59 = [42 x i8] c".byt SCR::THINK, SCR::SPEAKER_%c|CHAR::%s\00"
@.str.60 = [28 x i8] c".byt SCR::NARRATE, CHAR::%s\00"
@.str.61 = [5 x i8] c"NONE\00"
@.str.62 = [6 x i8] c".byt \00"
@.str.63 = [3 x i8] c", \00"
@.str.64 = [6 x i8] c"$%.2x\00"
@.str.65 = [5 x i8] c"[%s]\00"
@.str.66 = [4 x i8] c"'\22'\00"
@.str.67 = [13 x i8] c"SCR::NEWLINE\00"
@.str.68 = [5 x i8] c"\22%c\22\00"
@.str.69 = [3 x i8] c"\0D\0A\00"
@.str.70 = [24 x i8] c"\0D\0ACutsceneDictionary:\0D\0A\00"
@.str.71 = [19 x i8] c"DictionaryWord%i: \00"
@.str.72 = [22 x i8] c".byt \22%s\22, '%c'|128\0D\0A\00"
@.str.73 = [29 x i8] c"\0D\0ACutsceneDictionaryTable:\0D\0A\00"
@.str.74 = [25 x i8] c".byt <DictionaryWord%i\0D\0A\00"
@.str.75 = [25 x i8] c".byt >DictionaryWord%i\0D\0A\00"
@.str.76 = [58 x i8] c"Dictionary entries: %i (size %i, %i saved by dictionary)\0A\00"
@.str.77 = [34 x i8] c"Script size: %i ---> %i (%.2f%%)\0A\00"
@.str.78 = [14 x i8] c"Commands: %i\0A\00"
@.str.79 = [6 x i8] c"%s%i,\00"
define i32 @main(i32 %0, i8** %1) {
%3 = alloca i32
%4 = alloca i32
%5 = alloca i8**
%6 = alloca [700 x i8]
%7 = alloca i8*
%8 = alloca i32
%9 = alloca i32
%10 = alloca i32
%11 = alloca i32
%12 = alloca [128 x [32 x i8]]
%13 = alloca [128 x i32]
%14 = alloca i32
%15 = alloca i32
%16 = alloca i32
%17 = alloca i32*
%18 = alloca i32*
%19 = alloca i32
%20 = alloca i8*
%21 = alloca i8*
%22 = alloca i8*
%23 = alloca i32
%24 = alloca i32
%25 = alloca i8*
%26 = alloca i32
%27 = alloca i32
%28 = alloca i8*
%29 = alloca i8
%30 = alloca float
store i32 0, i32* %3
store i32 %0, i32* %4
store i8** %1, i8*** %5
%31 = load i32, i32* %4
%32 = icmp slt i32 %31, 4
br i1 %32, label %33, label %35
33: ; preds = %2
%34 = call i32 @puts(i8* getelementptr inbounds ([45 x i8], [45 x i8]* @.str, i64 0, i64 0))
store i32 0, i32* %3
br label %746
35: ; preds = %2
store i32 0, i32* %8
store i32 0, i32* %9
store i32 0, i32* %10
store i32 0, i32* %14
store i32 1, i32* %15
store i32 1, i32* %16
%36 = load i8**, i8*** %5
%37 = getelementptr inbounds i8*, i8** %36, i64 1
%38 = load i8*, i8** %37
%39 = call i32* @fopen(i8* %38, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.1, i64 0, i64 0))
store i32* %39, i32** %17
%40 = load i32*, i32** %17
%41 = icmp ne i32* %40, null
br i1 %41, label %44, label %42
42: ; preds = %35
%43 = call i32 @puts(i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.2, i64 0, i64 0))
store i32 0, i32* %3
br label %746
44: ; preds = %35
br label %45
45: ; preds = %58, %44
%46 = getelementptr inbounds [700 x i8], [700 x i8]* %6, i64 0, i64 0
%47 = load i32*, i32** %17
%48 = call i64 @fgets(i8* %46, i32 700, i32* %47)
%49 = icmp ne i64 %48, 0
br i1 %49, label %50, label %70
50: ; preds = %45
%51 = getelementptr inbounds [700 x i8], [700 x i8]* %6, i64 0, i64 0
%52 = call i32 @RemoveLineEndings(i8* %51)
%53 = getelementptr inbounds [700 x i8], [700 x i8]* %6, i64 0, i64 0
%54 = call i32 @strlen(i8* %53)
%55 = icmp sgt i32 %54, 31
br i1 %55, label %56, label %58
56: ; preds = %50
%57 = call i32 @puts(i8* getelementptr inbounds ([38 x i8], [38 x i8]* @.str.3, i64 0, i64 0))
store i32 -1, i32* %3
br label %746
58: ; preds = %50
%59 = load i32, i32* %14
%60 = sext i32 %59 to i64
%61 = getelementptr inbounds [128 x i32], [128 x i32]* %13, i64 0, i64 %60
store i32 0, i32* %61
%62 = load i32, i32* %14
%63 = sext i32 %62 to i64
%64 = getelementptr inbounds [128 x [32 x i8]], [128 x [32 x i8]]* %12, i64 0, i64 %63
%65 = getelementptr inbounds [32 x i8], [32 x i8]* %64, i64 0, i64 0
%66 = getelementptr inbounds [700 x i8], [700 x i8]* %6, i64 0, i64 0
%67 = call i32 @strcpy(i8* %65, i8* %66)
%68 = load i32, i32* %14
%69 = add nsw i32 %68, 1
store i32 %69, i32* %14
br label %45
70: ; preds = %45
%71 = load i8**, i8*** %5
%72 = getelementptr inbounds i8*, i8** %71, i64 2
%73 = load i8*, i8** %72
%74 = call i32* @fopen(i8* %73, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.1, i64 0, i64 0))
store i32* %74, i32** %17
%75 = load i32*, i32** %17
%76 = icmp ne i32* %75, null
br i1 %76, label %79, label %77
77: ; preds = %70
%78 = call i32 @puts(i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.4, i64 0, i64 0))
store i32 0, i32* %3
br label %746
79: ; preds = %70
%80 = load i8**, i8*** %5
%81 = getelementptr inbounds i8*, i8** %80, i64 3
%82 = load i8*, i8** %81
%83 = call i32* @fopen(i8* %82, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.5, i64 0, i64 0))
store i32* %83, i32** %18
%84 = load i32*, i32** %18
%85 = icmp ne i32* %84, null
br i1 %85, label %90, label %86
86: ; preds = %79
%87 = load i32*, i32** %17
%88 = call i32 @fclose(i32* %87)
%89 = call i32 @puts(i8* getelementptr inbounds ([31 x i8], [31 x i8]* @.str.6, i64 0, i64 0))
store i32 0, i32* %3
br label %746
90: ; preds = %79
br label %91
91: ; preds = %612, %102, %90
%92 = getelementptr inbounds [700 x i8], [700 x i8]* %6, i64 0, i64 0
%93 = load i32*, i32** %17
%94 = call i64 @fgets(i8* %92, i32 700, i32* %93)
%95 = icmp ne i64 %94, 0
br i1 %95, label %96, label %613
96: ; preds = %91
%97 = getelementptr inbounds [700 x i8], [700 x i8]* %6, i64 0, i64 0
%98 = call i32 @RemoveLineEndings(i8* %97)
store i32 0, i32* %19
%99 = getelementptr inbounds [700 x i8], [700 x i8]* %6, i64 0, i64 0
%100 = load i8, i8* %99
%101 = icmp ne i8 %100, 0
br i1 %101, label %103, label %102
102: ; preds = %96
br label %91
103: ; preds = %96
%104 = getelementptr inbounds [700 x i8], [700 x i8]* %6, i64 0, i64 0
%105 = load i8, i8* %104
%106 = sext i8 %105 to i32
%107 = icmp eq i32 %106, 58
br i1 %107, label %108, label %113
108: ; preds = %103
%109 = load i32*, i32** %18
%110 = getelementptr inbounds [700 x i8], [700 x i8]* %6, i64 0, i64 0
%111 = getelementptr inbounds i8, i8* %110, i64 1
%112 = call i32 (i32*, i8*, ...) @fprintf(i32* %109, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.7, i64 0, i64 0), i8* %111)
br label %605
113: ; preds = %103
%114 = getelementptr inbounds [700 x i8], [700 x i8]* %6, i64 0, i64 0
%115 = load i8, i8* %114
%116 = sext i8 %115 to i32
%117 = icmp eq i32 %116, 96
br i1 %117, label %123, label %118
118: ; preds = %113
%119 = getelementptr inbounds [700 x i8], [700 x i8]* %6, i64 0, i64 0
%120 = load i8, i8* %119
%121 = sext i8 %120 to i32
%122 = icmp eq i32 %121, 63
br i1 %122, label %123, label %362
123: ; preds = %118, %113
%124 = getelementptr inbounds [700 x i8], [700 x i8]* %6, i64 0, i64 0
%125 = call i8* @strchr(i8* %124, i8 signext 32)
store i8* %125, i8** %20
%126 = load i8*, i8** %20
%127 = icmp ne i8* %126, null
br i1 %127, label %128, label %131
128: ; preds = %123
%129 = load i8*, i8** %20
%130 = getelementptr inbounds i8, i8* %129, i32 1
store i8* %130, i8** %20
store i8 0, i8* %129
br label %131
131: ; preds = %128, %123
%132 = getelementptr inbounds [700 x i8], [700 x i8]* %6, i64 0, i64 0
%133 = getelementptr inbounds i8, i8* %132, i64 1
store i8* %133, i8** %21
%134 = load i8*, i8** %21
%135 = call i32 @strcmp(i8* %134, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.8, i64 0, i64 0))
%136 = icmp ne i32 %135, 0
br i1 %136, label %140, label %137
137: ; preds = %131
%138 = load i32*, i32** %18
%139 = call i32 (i32*, i8*, ...) @fprintf(i32* %138, i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.9, i64 0, i64 0))
br label %298
140: ; preds = %131
%141 = load i8*, i8** %21
%142 = call i32 @strcmp(i8* %141, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.10, i64 0, i64 0))
%143 = icmp ne i32 %142, 0
br i1 %143, label %147, label %144
144: ; preds = %140
%145 = load i32*, i32** %18
%146 = call i32 (i32*, i8*, ...) @fprintf(i32* %145, i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.11, i64 0, i64 0))
br label %297
147: ; preds = %140
%148 = load i8*, i8** %21
%149 = call i32 @strcmp(i8* %148, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.12, i64 0, i64 0))
%150 = icmp ne i32 %149, 0
br i1 %150, label %156, label %151
151: ; preds = %147
%152 = load i32*, i32** %18
%153 = load i8*, i8** %20
%154 = load i8*, i8** %20
%155 = call i32 (i32*, i8*, ...) @fprintf(i32* %152, i8* getelementptr inbounds ([25 x i8], [25 x i8]* @.str.13, i64 0, i64 0), i8* %153, i8* %154)
br label %296
156: ; preds = %147
%157 = load i8*, i8** %21
%158 = call i32 @strcmp(i8* %157, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.14, i64 0, i64 0))
%159 = icmp ne i32 %158, 0
br i1 %159, label %163, label %160
160: ; preds = %156
%161 = load i32*, i32** %18
%162 = call i32 (i32*, i8*, ...) @fprintf(i32* %161, i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.15, i64 0, i64 0))
br label %295
163: ; preds = %156
%164 = load i8*, i8** %21
%165 = call i32 @strcmp(i8* %164, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.16, i64 0, i64 0))
%166 = icmp ne i32 %165, 0
br i1 %166, label %170, label %167
167: ; preds = %163
%168 = load i32*, i32** %18
%169 = call i32 (i32*, i8*, ...) @fprintf(i32* %168, i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.17, i64 0, i64 0))
br label %294
170: ; preds = %163
%171 = load i8*, i8** %21
%172 = call i32 @strcmp(i8* %171, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.18, i64 0, i64 0))
%173 = icmp ne i32 %172, 0
br i1 %173, label %179, label %174
174: ; preds = %170
%175 = load i32*, i32** %18
%176 = load i8*, i8** %20
%177 = load i8*, i8** %20
%178 = call i32 (i32*, i8*, ...) @fprintf(i32* %175, i8* getelementptr inbounds ([25 x i8], [25 x i8]* @.str.19, i64 0, i64 0), i8* %176, i8* %177)
br label %293
179: ; preds = %170
%180 = load i8*, i8** %21
%181 = call i32 @strcmp(i8* %180, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.20, i64 0, i64 0))
%182 = icmp ne i32 %181, 0
br i1 %182, label %188, label %183
183: ; preds = %179
%184 = load i32*, i32** %18
%185 = load i8*, i8** %20
%186 = load i8*, i8** %20
%187 = call i32 (i32*, i8*, ...) @fprintf(i32* %184, i8* getelementptr inbounds ([25 x i8], [25 x i8]* @.str.21, i64 0, i64 0), i8* %185, i8* %186)
br label %292
188: ; preds = %179
%189 = load i8*, i8** %21
%190 = call i32 @strcmp(i8* %189, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.22, i64 0, i64 0))
%191 = icmp ne i32 %190, 0
br i1 %191, label %195, label %192
192: ; preds = %188
%193 = load i32*, i32** %18
%194 = call i32 (i32*, i8*, ...) @fprintf(i32* %193, i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.23, i64 0, i64 0))
br label %291
195: ; preds = %188
%196 = load i8*, i8** %21
%197 = call i32 @strcmp(i8* %196, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.24, i64 0, i64 0))
%198 = icmp ne i32 %197, 0
br i1 %198, label %203, label %199
199: ; preds = %195
%200 = load i32*, i32** %18
%201 = load i8*, i8** %20
%202 = call i32 (i32*, i8*, ...) @fprintf(i32* %200, i8* getelementptr inbounds ([34 x i8], [34 x i8]* @.str.25, i64 0, i64 0), i8* %201)
br label %290
203: ; preds = %195
%204 = load i8*, i8** %21
%205 = call i32 @strcmp(i8* %204, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.26, i64 0, i64 0))
%206 = icmp ne i32 %205, 0
br i1 %206, label %211, label %207
207: ; preds = %203
%208 = load i32*, i32** %18
%209 = load i8*, i8** %20
%210 = call i32 (i32*, i8*, ...) @fprintf(i32* %208, i8* getelementptr inbounds ([28 x i8], [28 x i8]* @.str.27, i64 0, i64 0), i8* %209)
br label %289
211: ; preds = %203
%212 = load i8*, i8** %21
%213 = call i32 @strcmp(i8* %212, i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.28, i64 0, i64 0))
%214 = icmp ne i32 %213, 0
br i1 %214, label %218, label %215
215: ; preds = %211
%216 = load i32*, i32** %18
%217 = call i32 (i32*, i8*, ...) @fprintf(i32* %216, i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.29, i64 0, i64 0))
br label %288
218: ; preds = %211
%219 = load i8*, i8** %21
%220 = call i32 @strcmp(i8* %219, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.30, i64 0, i64 0))
%221 = icmp ne i32 %220, 0
br i1 %221, label %225, label %222
222: ; preds = %218
%223 = load i32*, i32** %18
%224 = call i32 (i32*, i8*, ...) @fprintf(i32* %223, i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.31, i64 0, i64 0))
br label %287
225: ; preds = %218
%226 = load i8*, i8** %21
%227 = call i32 @strcmp(i8* %226, i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.32, i64 0, i64 0))
%228 = icmp ne i32 %227, 0
br i1 %228, label %230, label %229
229: ; preds = %225
store i32 0, i32* %15
br label %286
230: ; preds = %225
%231 = load i8*, i8** %21
%232 = call i32 @strcmp(i8* %231, i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.33, i64 0, i64 0))
%233 = icmp ne i32 %232, 0
br i1 %233, label %235, label %234
234: ; preds = %230
store i32 1, i32* %15
br label %285
235: ; preds = %230
%236 = load i8*, i8** %21
%237 = call i32 @strcmp(i8* %236, i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.34, i64 0, i64 0))
%238 = icmp ne i32 %237, 0
br i1 %238, label %240, label %239
239: ; preds = %235
store i32 0, i32* %16
br label %284
240: ; preds = %235
%241 = load i8*, i8** %21
%242 = call i32 @strcmp(i8* %241, i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.35, i64 0, i64 0))
%243 = icmp ne i32 %242, 0
br i1 %243, label %249, label %244
244: ; preds = %240
%245 = load i32*, i32** %18
%246 = load i8*, i8** %20
%247 = load i8*, i8** %20
%248 = call i32 (i32*, i8*, ...) @fprintf(i32* %245, i8* getelementptr inbounds ([30 x i8], [30 x i8]* @.str.36, i64 0, i64 0), i8* %246, i8* %247)
br label %283
249: ; preds = %240
%250 = load i8*, i8** %21
%251 = call i32 @strcmp(i8* %250, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.37, i64 0, i64 0))
%252 = icmp ne i32 %251, 0
br i1 %252, label %256, label %253
253: ; preds = %249
%254 = load i32*, i32** %18
%255 = call i32 (i32*, i8*, ...) @fprintf(i32* %254, i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str.38, i64 0, i64 0))
br label %282
256: ; preds = %249
%257 = load i8*, i8** %21
%258 = call i32 @strcmp(i8* %257, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.39, i64 0, i64 0))
%259 = icmp ne i32 %258, 0
br i1 %259, label %264, label %260
260: ; preds = %256
%261 = load i32*, i32** %18
%262 = load i8*, i8** %20
%263 = call i32 (i32*, i8*, ...) @fprintf(i32* %261, i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.40, i64 0, i64 0), i8* %262)
br label %281
264: ; preds = %256
%265 = load i8*, i8** %21
%266 = call i32 @strcmp(i8* %265, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.41, i64 0, i64 0))
%267 = icmp ne i32 %266, 0
br i1 %267, label %272, label %268
268: ; preds = %264
%269 = load i32*, i32** %18
%270 = load i8*, i8** %20
%271 = call i32 (i32*, i8*, ...) @fprintf(i32* %269, i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str.42, i64 0, i64 0), i8* %270)
br label %280
272: ; preds = %264
%273 = load i8*, i8** %21
%274 = call i32 @strcmp(i8* %273, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.43, i64 0, i64 0))
%275 = icmp ne i32 %274, 0
br i1 %275, label %279, label %276
276: ; preds = %272
%277 = load i32*, i32** %18
%278 = call i32 (i32*, i8*, ...) @fprintf(i32* %277, i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.44, i64 0, i64 0))
br label %279
279: ; preds = %276, %272
br label %280
280: ; preds = %279, %268
br label %281
281: ; preds = %280, %260
br label %282
282: ; preds = %281, %253
br label %283
283: ; preds = %282, %244
br label %284
284: ; preds = %283, %239
br label %285
285: ; preds = %284, %234
br label %286
286: ; preds = %285, %229
br label %287
287: ; preds = %286, %222
br label %288
288: ; preds = %287, %215
br label %289
289: ; preds = %288, %207
br label %290
290: ; preds = %289, %199
br label %291
291: ; preds = %290, %192
br label %292
292: ; preds = %291, %183
br label %293
293: ; preds = %292, %174
br label %294
294: ; preds = %293, %167
br label %295
295: ; preds = %294, %160
br label %296
296: ; preds = %295, %151
br label %297
297: ; preds = %296, %144
br label %298
298: ; preds = %297, %137
%299 = getelementptr inbounds [700 x i8], [700 x i8]* %6, i64 0, i64 0
%300 = load i8, i8* %299
%301 = sext i8 %300 to i32
%302 = icmp eq i32 %301, 63
br i1 %302, label %303, label %336
303: ; preds = %298
%304 = load i8*, i8** %21
%305 = call i32 @strcmp(i8* %304, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.45, i64 0, i64 0))
%306 = icmp ne i32 %305, 0
br i1 %306, label %311, label %307
307: ; preds = %303
%308 = load i32*, i32** %18
%309 = load i8*, i8** %20
%310 = call i32 (i32*, i8*, ...) @fprintf(i32* %308, i8* getelementptr inbounds ([37 x i8], [37 x i8]* @.str.46, i64 0, i64 0), i8* %309)
br label %311
311: ; preds = %307, %303
%312 = load i8*, i8** %21
%313 = call i32 @strcmp(i8* %312, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.47, i64 0, i64 0))
%314 = icmp ne i32 %313, 0
br i1 %314, label %319, label %315
315: ; preds = %311
%316 = load i32*, i32** %18
%317 = load i8*, i8** %20
%318 = call i32 (i32*, i8*, ...) @fprintf(i32* %316, i8* getelementptr inbounds ([38 x i8], [38 x i8]* @.str.48, i64 0, i64 0), i8* %317)
br label %319
319: ; preds = %315, %311
%320 = load i8*, i8** %21
%321 = call i32 @strcmp(i8* %320, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.49, i64 0, i64 0))
%322 = icmp ne i32 %321, 0
br i1 %322, label %327, label %323
323: ; preds = %319
%324 = load i32*, i32** %18
%325 = load i8*, i8** %20
%326 = call i32 (i32*, i8*, ...) @fprintf(i32* %324, i8* getelementptr inbounds ([37 x i8], [37 x i8]* @.str.50, i64 0, i64 0), i8* %325)
br label %327
327: ; preds = %323, %319
%328 = load i8*, i8** %21
%329 = call i32 @strcmp(i8* %328, i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.51, i64 0, i64 0))
%330 = icmp ne i32 %329, 0
br i1 %330, label %335, label %331
331: ; preds = %327
%332 = load i32*, i32** %18
%333 = load i8*, i8** %20
%334 = call i32 (i32*, i8*, ...) @fprintf(i32* %332, i8* getelementptr inbounds ([41 x i8], [41 x i8]* @.str.52, i64 0, i64 0), i8* %333)
br label %335
335: ; preds = %331, %327
br label %361
336: ; preds = %298
%337 = load i8*, i8** %21
%338 = call i32 @strcmp(i8* %337, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.45, i64 0, i64 0))
%339 = icmp ne i32 %338, 0
br i1 %339, label %344, label %340
340: ; preds = %336
%341 = load i32*, i32** %18
%342 = load i8*, i8** %20
%343 = call i32 (i32*, i8*, ...) @fprintf(i32* %341, i8* getelementptr inbounds ([34 x i8], [34 x i8]* @.str.53, i64 0, i64 0), i8* %342)
br label %344
344: ; preds = %340, %336
%345 = load i8*, i8** %21
%346 = call i32 @strcmp(i8* %345, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.47, i64 0, i64 0))
%347 = icmp ne i32 %346, 0
br i1 %347, label %352, label %348
348: ; preds = %344
%349 = load i32*, i32** %18
%350 = load i8*, i8** %20
%351 = call i32 (i32*, i8*, ...) @fprintf(i32* %349, i8* getelementptr inbounds ([35 x i8], [35 x i8]* @.str.54, i64 0, i64 0), i8* %350)
br label %352
352: ; preds = %348, %344
%353 = load i8*, i8** %21
%354 = call i32 @strcmp(i8* %353, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.55, i64 0, i64 0))
%355 = icmp ne i32 %354, 0
br i1 %355, label %360, label %356
356: ; preds = %352
%357 = load i32*, i32** %18
%358 = load i8*, i8** %20
%359 = call i32 (i32*, i8*, ...) @fprintf(i32* %357, i8* getelementptr inbounds ([38 x i8], [38 x i8]* @.str.56, i64 0, i64 0), i8* %358)
br label %360
360: ; preds = %356, %352
br label %361
361: ; preds = %360, %335
br label %604
362: ; preds = %118
%363 = getelementptr inbounds [700 x i8], [700 x i8]* %6, i64 0, i64 0
store i8* %363, i8** %7
%364 = load i32*, i32** %18
%365 = load i8*, i8** %7
%366 = call i32 (i32*, i8*, ...) @fprintf(i32* %364, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.57, i64 0, i64 0), i8* %365)
%367 = getelementptr inbounds [700 x i8], [700 x i8]* %6, i64 0, i64 0
%368 = load i8, i8* %367
%369 = sext i8 %368 to i32
switch i32 %369, label %420 [
i32 60, label %370
i32 62, label %385
i32 91, label %400
]
370: ; preds = %362
%371 = getelementptr inbounds [700 x i8], [700 x i8]* %6, i64 0, i64 0
%372 = call i8* @strchr(i8* %371, i8 signext 62)
%373 = getelementptr inbounds i8, i8* %372, i64 1
store i8* %373, i8** %7
%374 = load i8*, i8** %7
%375 = getelementptr inbounds i8, i8* %374, i64 -1
store i8 0, i8* %375
%376 = load i32*, i32** %18
%377 = getelementptr inbounds [700 x i8], [700 x i8]* %6, i64 0, i64 1
%378 = load i8, i8* %377
%379 = sext i8 %378 to i32
%380 = getelementptr inbounds [700 x i8], [700 x i8]* %6, i64 0, i64 0
%381 = getelementptr inbounds i8, i8* %380, i64 3
%382 = call i32 (i32*, i8*, ...) @fprintf(i32* %376, i8* getelementptr inbounds ([40 x i8], [40 x i8]* @.str.58, i64 0, i64 0), i32 %379, i8* %381)
%383 = load i32, i32* %10
%384 = add nsw i32 %383, 2
store i32 %384, i32* %10
store i32 1, i32* %19
br label %420
385: ; preds = %362
%386 = getelementptr inbounds [700 x i8], [700 x i8]* %6, i64 0, i64 0
%387 = call i8* @strchr(i8* %386, i8 signext 60)
%388 = getelementptr inbounds i8, i8* %387, i64 1
store i8* %388, i8** %7
%389 = load i8*, i8** %7
%390 = getelementptr inbounds i8, i8* %389, i64 -1
store i8 0, i8* %390
%391 = load i32*, i32** %18
%392 = getelementptr inbounds [700 x i8], [700 x i8]* %6, i64 0, i64 1
%393 = load i8, i8* %392
%394 = sext i8 %393 to i32
%395 = getelementptr inbounds [700 x i8], [700 x i8]* %6, i64 0, i64 0
%396 = getelementptr inbounds i8, i8* %395, i64 3
%397 = call i32 (i32*, i8*, ...) @fprintf(i32* %391, i8* getelementptr inbounds ([42 x i8], [42 x i8]* @.str.59, i64 0, i64 0), i32 %394, i8* %396)
%398 = load i32, i32* %10
%399 = add nsw i32 %398, 2
store i32 %399, i32* %10
store i32 1, i32* %19
br label %420
400: ; preds = %362
%401 = getelementptr inbounds [700 x i8], [700 x i8]* %6, i64 0, i64 0
%402 = call i8* @strchr(i8* %401, i8 signext 93)
%403 = getelementptr inbounds i8, i8* %402, i64 1
store i8* %403, i8** %7
%404 = load i8*, i8** %7
%405 = getelementptr inbounds i8, i8* %404, i64 -1
store i8 0, i8* %405
%406 = load i32*, i32** %18
%407 = getelementptr inbounds [700 x i8], [700 x i8]* %6, i64 0, i64 1
%408 = load i8, i8* %407
%409 = sext i8 %408 to i32
%410 = icmp ne i32 %409, 0
br i1 %410, label %411, label %414
411: ; preds = %400
%412 = getelementptr inbounds [700 x i8], [700 x i8]* %6, i64 0, i64 0
%413 = getelementptr inbounds i8, i8* %412, i64 1
br label %415
414: ; preds = %400
br label %415
415: ; preds = %414, %411
%416 = phi i8* [ %413, %411 ], [ getelementptr inbounds ([5 x i8], [5 x i8]* @.str.61, i64 0, i64 0), %414 ]
%417 = call i32 (i32*, i8*, ...) @fprintf(i32* %406, i8* getelementptr inbounds ([28 x i8], [28 x i8]* @.str.60, i64 0, i64 0), i8* %416)
%418 = load i32, i32* %10
%419 = add nsw i32 %418, 2
store i32 %419, i32* %10
store i32 1, i32* %19
br label %420
420: ; preds = %362, %415, %385, %370
%421 = load i32, i32* %15
%422 = icmp ne i32 %421, 0
br i1 %422, label %423, label %430
423: ; preds = %420
%424 = load i8*, i8** %7
%425 = getelementptr inbounds [700 x i8], [700 x i8]* %6, i64 0, i64 0
%426 = icmp eq i8* %424, %425
br i1 %426, label %427, label %430
427: ; preds = %423
%428 = load i32*, i32** %18
%429 = call i32 (i32*, i8*, ...) @fprintf(i32* %428, i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.9, i64 0, i64 0))
store i32 1, i32* %19
br label %430
430: ; preds = %427, %423, %420
%431 = load i32, i32* %19
%432 = icmp ne i32 %431, 0
br i1 %432, label %436, label %433
433: ; preds = %430
%434 = load i32*, i32** %18
%435 = call i32 (i32*, i8*, ...) @fprintf(i32* %434, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.62, i64 0, i64 0))
br label %436
436: ; preds = %433, %430
%437 = load i32, i32* %15
%438 = icmp ne i32 %437, 0
br i1 %438, label %439, label %500
439: ; preds = %436
store i32 0, i32* %23
%440 = load i8*, i8** %7
store i8* %440, i8** %22
br label %441
441: ; preds = %496, %439
%442 = load i8*, i8** %22
%443 = load i8, i8* %442
%444 = icmp ne i8 %443, 0
br i1 %444, label %445, label %499
445: ; preds = %441
%446 = load i8*, i8** %22
%447 = load i8, i8* %446
%448 = sext i8 %447 to i32
%449 = icmp eq i32 %448, 32
br i1 %449, label %450, label %484
450: ; preds = %445
store i32 0, i32* %24
%451 = load i8*, i8** %22
%452 = getelementptr inbounds i8, i8* %451, i64 1
store i8* %452, i8** %25
br label %453
453: ; preds = %471, %450
%454 = load i8*, i8** %25
%455 = load i8, i8* %454
%456 = sext i8 %455 to i32
%457 = icmp ne i32 %456, 32
br i1 %457, label %458, label %463
458: ; preds = %453
%459 = load i8*, i8** %25
%460 = load i8, i8* %459
%461 = sext i8 %460 to i32
%462 = icmp ne i32 %461, 0
br label %463
463: ; preds = %458, %453
%464 = phi i1 [ false, %453 ], [ %462, %458 ]
br i1 %464, label %465, label %474
465: ; preds = %463
%466 = load i8*, i8** %25
%467 = load i8, i8* %466
%468 = call i32 @CharWidth(i8 signext %467)
%469 = load i32, i32* %24
%470 = add nsw i32 %469, %468
store i32 %470, i32* %24
br label %471
471: ; preds = %465
%472 = load i8*, i8** %25
%473 = getelementptr inbounds i8, i8* %472, i32 1
store i8* %473, i8** %25
br label %453
474: ; preds = %463
%475 = load i32, i32* %23
%476 = call i32 @CharWidth(i8 signext 32)
%477 = add nsw i32 %475, %476
%478 = load i32, i32* %24
%479 = add nsw i32 %477, %478
%480 = icmp sge i32 %479, 128
br i1 %480, label %481, label %483
481: ; preds = %474
%482 = load i8*, i8** %22
store i8 10, i8* %482
store i32 0, i32* %23
br label %483
483: ; preds = %481, %474
br label %484
484: ; preds = %483, %445
%485 = load i8*, i8** %22
%486 = load i8, i8* %485
%487 = sext i8 %486 to i32
%488 = icmp ne i32 %487, 10
br i1 %488, label %489, label %495
489: ; preds = %484
%490 = load i8*, i8** %22
%491 = load i8, i8* %490
%492 = call i32 @CharWidth(i8 signext %491)
%493 = load i32, i32* %23
%494 = add nsw i32 %493, %492
store i32 %494, i32* %23
br label %495
495: ; preds = %489, %484
br label %496
496: ; preds = %495
%497 = load i8*, i8** %22
%498 = getelementptr inbounds i8, i8* %497, i32 1
store i8* %498, i8** %22
br label %441
499: ; preds = %441
br label %500
500: ; preds = %499, %436
%501 = load i8*, i8** %7
%502 = call i32 @strlen(i8* %501)
%503 = load i32, i32* %9
%504 = add nsw i32 %503, %502
store i32 %504, i32* %9
br label %505
505: ; preds = %599, %500
%506 = load i8*, i8** %7
%507 = load i8, i8* %506
%508 = icmp ne i8 %507, 0
br i1 %508, label %509, label %602
509: ; preds = %505
store i32 0, i32* %11
br label %510
510: ; preds = %554, %509
%511 = load i32, i32* %11
%512 = load i32, i32* %14
%513 = icmp slt i32 %511, %512
br i1 %513, label %514, label %557
514: ; preds = %510
%515 = load i8*, i8** %7
%516 = load i32, i32* %11
%517 = sext i32 %516 to i64
%518 = getelementptr inbounds [128 x [32 x i8]], [128 x [32 x i8]]* %12, i64 0, i64 %517
%519 = getelementptr inbounds [32 x i8], [32 x i8]* %518, i64 0, i64 0
%520 = call i64 @Match(i8* %515, i8* %519)
%521 = icmp ne i64 %520, 0
br i1 %521, label %522, label %553
522: ; preds = %514
%523 = load i32, i32* %19
%524 = icmp ne i32 %523, 0
br i1 %524, label %525, label %528
525: ; preds = %522
%526 = load i32*, i32** %18
%527 = call i32 (i32*, i8*, ...) @fprintf(i32* %526, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.63, i64 0, i64 0))
br label %528
528: ; preds = %525, %522
%529 = load i32*, i32** %18
%530 = load i32, i32* %11
%531 = add nsw i32 128, %530
%532 = call i32 (i32*, i8*, ...) @fprintf(i32* %529, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.64, i64 0, i64 0), i32 %531)
store i32 1, i32* %19
%533 = load i32, i32* %11
%534 = sext i32 %533 to i64
%535 = getelementptr inbounds [128 x [32 x i8]], [128 x [32 x i8]]* %12, i64 0, i64 %534
%536 = getelementptr inbounds [32 x i8], [32 x i8]* %535, i64 0, i64 0
%537 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.65, i64 0, i64 0), i8* %536)
%538 = load i32, i32* %11
%539 = sext i32 %538 to i64
%540 = getelementptr inbounds [128 x [32 x i8]], [128 x [32 x i8]]* %12, i64 0, i64 %539
%541 = getelementptr inbounds [32 x i8], [32 x i8]* %540, i64 0, i64 0
%542 = call i32 @strlen(i8* %541)
%543 = load i8*, i8** %7
%544 = sext i32 %542 to i64
%545 = getelementptr inbounds i8, i8* %543, i64 %544
store i8* %545, i8** %7
%546 = load i32, i32* %11
%547 = sext i32 %546 to i64
%548 = getelementptr inbounds [128 x i32], [128 x i32]* %13, i64 0, i64 %547
%549 = load i32, i32* %548
%550 = add nsw i32 %549, 1
store i32 %550, i32* %548
%551 = load i32, i32* %8
%552 = add nsw i32 %551, 1
store i32 %552, i32* %8
br label %557
553: ; preds = %514
br label %554
554: ; preds = %553
%555 = load i32, i32* %11
%556 = add nsw i32 %555, 1
store i32 %556, i32* %11
br label %510
557: ; preds = %528, %510
%558 = load i32, i32* %11
%559 = load i32, i32* %14
%560 = icmp eq i32 %558, %559
br i1 %560, label %561, label %599
561: ; preds = %557
%562 = load i32, i32* %19
%563 = icmp ne i32 %562, 0
br i1 %563, label %564, label %567
564: ; preds = %561
%565 = load i32*, i32** %18
%566 = call i32 (i32*, i8*, ...) @fprintf(i32* %565, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.63, i64 0, i64 0))
br label %567
567: ; preds = %564, %561
store i32 1, i32* %19
%568 = load i8*, i8** %7
%569 = load i8, i8* %568
%570 = sext i8 %569 to i32
%571 = icmp eq i32 %570, 34
br i1 %571, label %572, label %578
572: ; preds = %567
%573 = load i32*, i32** %18
%574 = load i8*, i8** %7
%575 = load i8, i8* %574
%576 = sext i8 %575 to i32
%577 = call i32 (i32*, i8*, ...) @fprintf(i32* %573, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.66, i64 0, i64 0), i32 %576)
br label %593
578: ; preds = %567
%579 = load i8*, i8** %7
%580 = load i8, i8* %579
%581 = sext i8 %580 to i32
%582 = icmp eq i32 %581, 10
br i1 %582, label %583, label %586
583: ; preds = %578
%584 = load i32*, i32** %18
%585 = call i32 (i32*, i8*, ...) @fprintf(i32* %584, i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.67, i64 0, i64 0))
br label %592
586: ; preds = %578
%587 = load i32*, i32** %18
%588 = load i8*, i8** %7
%589 = load i8, i8* %588
%590 = sext i8 %589 to i32
%591 = call i32 (i32*, i8*, ...) @fprintf(i32* %587, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.68, i64 0, i64 0), i32 %590)
br label %592
592: ; preds = %586, %583
br label %593
593: ; preds = %592, %572
%594 = load i8*, i8** %7
%595 = load i8, i8* %594
%596 = call i32 @putchar(i8 signext %595)
%597 = load i8*, i8** %7
%598 = getelementptr inbounds i8, i8* %597, i32 1
store i8* %598, i8** %7
br label %599
599: ; preds = %593, %557
%600 = load i32, i32* %8
%601 = add nsw i32 %600, 1
store i32 %601, i32* %8
br label %505
602: ; preds = %505
%603 = call i32 @putchar(i8 signext 10)
br label %604
604: ; preds = %602, %361
br label %605
605: ; preds = %604, %108
%606 = getelementptr inbounds [700 x i8], [700 x i8]* %6, i64 0, i64 0
%607 = load i8, i8* %606
%608 = icmp ne i8 %607, 0
br i1 %608, label %609, label %612
609: ; preds = %605
%610 = load i32*, i32** %18
%611 = call i32 (i32*, i8*, ...) @fprintf(i32* %610, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.69, i64 0, i64 0))
br label %612
612: ; preds = %609, %605
br label %91
613: ; preds = %91
%614 = load i32*, i32** %17
%615 = call i32 @fclose(i32* %614)
store i32 0, i32* %26
store i32 0, i32* %27
%616 = load i32*, i32** %18
%617 = call i32 (i32*, i8*, ...) @fprintf(i32* %616, i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str.70, i64 0, i64 0))
store i32 0, i32* %11
br label %618
618: ; preds = %669, %613
%619 = load i32, i32* %11
%620 = load i32, i32* %14
%621 = icmp slt i32 %619, %620
br i1 %621, label %622, label %672
622: ; preds = %618
%623 = load i32, i32* %11
%624 = sext i32 %623 to i64
%625 = getelementptr inbounds [128 x [32 x i8]], [128 x [32 x i8]]* %12, i64 0, i64 %624
%626 = getelementptr inbounds [32 x i8], [32 x i8]* %625, i64 0, i64 0
%627 = call i32 @strlen(i8* %626)
%628 = load i32, i32* %26
%629 = add nsw i32 %628, %627
store i32 %629, i32* %26
%630 = load i32, i32* %11
%631 = sext i32 %630 to i64
%632 = getelementptr inbounds [128 x [32 x i8]], [128 x [32 x i8]]* %12, i64 0, i64 %631
%633 = getelementptr inbounds [32 x i8], [32 x i8]* %632, i64 0, i64 0
%634 = call i32 @strlen(i8* %633)
%635 = load i32, i32* %11
%636 = sext i32 %635 to i64
%637 = getelementptr inbounds [128 x i32], [128 x i32]* %13, i64 0, i64 %636
%638 = load i32, i32* %637
%639 = sub nsw i32 %638, 1
%640 = mul nsw i32 %634, %639
%641 = sub nsw i32 %640, 1
%642 = load i32, i32* %27
%643 = add nsw i32 %642, %641
store i32 %643, i32* %27
%644 = load i32, i32* %11
%645 = sext i32 %644 to i64
%646 = getelementptr inbounds [128 x [32 x i8]], [128 x [32 x i8]]* %12, i64 0, i64 %645
%647 = getelementptr inbounds [32 x i8], [32 x i8]* %646, i64 0, i64 0
%648 = call i8* @strrchr(i8* %647, i32 0)
store i8* %648, i8** %28
%649 = load i8*, i8** %28
%650 = getelementptr inbounds i8, i8* %649, i64 -1
%651 = load i8, i8* %650
store i8 %651, i8* %29
%652 = load i8*, i8** %28
%653 = getelementptr inbounds i8, i8* %652, i64 -1
store i8 0, i8* %653
%654 = load i32, i32* %16
%655 = icmp ne i32 %654, 0
br i1 %655, label %656, label %660
656: ; preds = %622
%657 = load i32*, i32** %18
%658 = load i32, i32* %11
%659 = call i32 (i32*, i8*, ...) @fprintf(i32* %657, i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.71, i64 0, i64 0), i32 %658)
br label %660
660: ; preds = %656, %622
%661 = load i32*, i32** %18
%662 = load i32, i32* %11
%663 = sext i32 %662 to i64
%664 = getelementptr inbounds [128 x [32 x i8]], [128 x [32 x i8]]* %12, i64 0, i64 %663
%665 = getelementptr inbounds [32 x i8], [32 x i8]* %664, i64 0, i64 0
%666 = load i8, i8* %29
%667 = sext i8 %666 to i32
%668 = call i32 (i32*, i8*, ...) @fprintf(i32* %661, i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str.72, i64 0, i64 0), i8* %665, i32 %667)
br label %669
669: ; preds = %660
%670 = load i32, i32* %11
%671 = add nsw i32 %670, 1
store i32 %671, i32* %11
br label %618
672: ; preds = %618
%673 = load i32, i32* %16
%674 = icmp ne i32 %673, 0
br i1 %674, label %675, label %702
675: ; preds = %672
%676 = load i32*, i32** %18
%677 = call i32 (i32*, i8*, ...) @fprintf(i32* %676, i8* getelementptr inbounds ([29 x i8], [29 x i8]* @.str.73, i64 0, i64 0))
store i32 0, i32* %11
br label %678
678: ; preds = %686, %675
%679 = load i32, i32* %11
%680 = load i32, i32* %14
%681 = icmp slt i32 %679, %680
br i1 %681, label %682, label %689
682: ; preds = %678
%683 = load i32*, i32** %18
%684 = load i32, i32* %11
%685 = call i32 (i32*, i8*, ...) @fprintf(i32* %683, i8* getelementptr inbounds ([25 x i8], [25 x i8]* @.str.74, i64 0, i64 0), i32 %684)
br label %686
686: ; preds = %682
%687 = load i32, i32* %11
%688 = add nsw i32 %687, 1
store i32 %688, i32* %11
br label %678
689: ; preds = %678
store i32 0, i32* %11
br label %690
690: ; preds = %698, %689
%691 = load i32, i32* %11
%692 = load i32, i32* %14
%693 = icmp slt i32 %691, %692
br i1 %693, label %694, label %701
694: ; preds = %690
%695 = load i32*, i32** %18
%696 = load i32, i32* %11
%697 = call i32 (i32*, i8*, ...) @fprintf(i32* %695, i8* getelementptr inbounds ([25 x i8], [25 x i8]* @.str.75, i64 0, i64 0), i32 %696)
br label %698
698: ; preds = %694
%699 = load i32, i32* %11
%700 = add nsw i32 %699, 1
store i32 %700, i32* %11
br label %690
701: ; preds = %690
br label %702
702: ; preds = %701, %672
%703 = load i32*, i32** %18
%704 = call i32 @fclose(i32* %703)
%705 = load i32, i32* %9
%706 = load i32, i32* %27
%707 = sub nsw i32 %705, %706
%708 = sitofp i32 %707 to float
store float %708, float* %30
%709 = load float, float* %30
%710 = load i32, i32* %9
%711 = sitofp i32 %710 to float
%712 = fdiv float %709, %711
%713 = fmul float %712, 1.000000e+02
store float %713, float* %30
%714 = load i32, i32* %14
%715 = load i32, i32* %26
%716 = load i32, i32* %27
%717 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([58 x i8], [58 x i8]* @.str.76, i64 0, i64 0), i32 %714, i32 %715, i32 %716)
%718 = load i32, i32* %9
%719 = load i32, i32* %9
%720 = load i32, i32* %27
%721 = sub nsw i32 %719, %720
%722 = load float, float* %30
%723 = fpext float %722 to double
%724 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([34 x i8], [34 x i8]* @.str.77, i64 0, i64 0), i32 %718, i32 %721, double %723)
%725 = load i32, i32* %10
%726 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.78, i64 0, i64 0), i32 %725)
store i32 0, i32* %11
br label %727
727: ; preds = %741, %702
%728 = load i32, i32* %11
%729 = load i32, i32* %14
%730 = icmp slt i32 %728, %729
br i1 %730, label %731, label %744
731: ; preds = %727
%732 = load i32, i32* %11
%733 = sext i32 %732 to i64
%734 = getelementptr inbounds [128 x [32 x i8]], [128 x [32 x i8]]* %12, i64 0, i64 %733
%735 = getelementptr inbounds [32 x i8], [32 x i8]* %734, i64 0, i64 0
%736 = load i32, i32* %11
%737 = sext i32 %736 to i64
%738 = getelementptr inbounds [128 x i32], [128 x i32]* %13, i64 0, i64 %737
%739 = load i32, i32* %738
%740 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.79, i64 0, i64 0), i8* %735, i32 %739)
br label %741
741: ; preds = %731
%742 = load i32, i32* %11
%743 = add nsw i32 %742, 1
store i32 %743, i32* %11
br label %727
744: ; preds = %727
%745 = call i32 @putchar(i8 signext 10)
store i32 0, i32* %3
br label %746
746: ; preds = %744, %86, %77, %56, %42, %33
%747 = load i32, i32* %3
ret i32 %747
}

LLVM IR (-O2):
@.str = [45 x i8] c"syntax: mkdialog dictionary.txt in.txt out.s\00"
@.str.1 = [3 x i8] c"rb\00"
@.str.2 = [21 x i8] c"dictionary not found\00"
@.str.3 = [38 x i8] c"Dictionary has a word that's too long\00"
@.str.4 = [21 x i8] c"input file not found\00"
@.str.5 = [3 x i8] c"wb\00"
@.str.6 = [31 x i8] c"output file couldn't be opened\00"
@.str.8 = [3 x i8] c"nl\00"
@.str.9 = [18 x i8] c".byt SCR::NEWLINE\00"
@.str.10 = [4 x i8] c"end\00"
@.str.11 = [21 x i8] c".byt SCR::END_SCRIPT\00"
@.str.12 = [5 x i8] c"poke\00"
@.str.13 = [25 x i8] c".byt SCR::POKE, <%s, >%s\00"
@.str.14 = [4 x i8] c"asm\00"
@.str.15 = [18 x i8] c".byt SCR::RUN_ASM\00"
@.str.16 = [2 x i8] c"p\00"
@.str.17 = [19 x i8] c".byt SCR::END_PAGE\00"
@.str.18 = [5 x i8] c"goto\00"
@.str.19 = [25 x i8] c".byt SCR::GOTO, <%s, >%s\00"
@.str.20 = [5 x i8] c"call\00"
@.str.21 = [25 x i8] c".byt SCR::CALL, <%s, >%s\00"
@.str.22 = [7 x i8] c"return\00"
@.str.23 = [17 x i8] c".byt SCR::RETURN\00"
@.str.24 = [7 x i8] c"choose\00"
@.str.25 = [34 x i8] c".byt SCR::CHOICES, CHOICELIST::%s\00"
@.str.26 = [6 x i8] c"scene\00"
@.str.27 = [28 x i8] c".byt SCR::SCENE, SCENES::%s\00"
@.str.28 = [11 x i8] c"transition\00"
@.str.29 = [21 x i8] c".byt SCR::TRANSITION\00"
@.str.30 = [7 x i8] c"noskip\00"
@.str.31 = [18 x i8] c".byt SCR::NO_SKIP\00"
@.str.32 = [11 x i8] c"manualwrap\00"
@.str.33 = [9 x i8] c"autowrap\00"
@.str.34 = [18 x i8] c"nodictionarytable\00"
@.str.35 = [9 x i8] c"monotext\00"
@.str.36 = [30 x i8] c".byt SCR::MONO_TEXT, <%s, >%s\00"
@.str.37 = [6 x i8] c"clear\00"
@.str.38 = [20 x i8] c".byt SCR::CLEAR_ALL\00"
@.str.39 = [7 x i8] c"upload\00"
@.str.40 = [21 x i8] c".byt SCR::UPLOAD, %s\00"
@.str.41 = [6 x i8] c"image\00"
@.str.42 = [20 x i8] c".byt SCR::IMAGE, %s\00"
@.str.43 = [7 x i8] c"ground\00"
@.str.44 = [17 x i8] c".byt SCR::GROUND\00"
@.str.45 = [3 x i8] c"on\00"
@.str.46 = [37 x i8] c".byt SCR::IF_FLAG_ON, EventFlags::%s\00"
@.str.47 = [4 x i8] c"off\00"
@.str.48 = [38 x i8] c".byt SCR::IF_FLAG_OFF, EventFlags::%s\00"
@.str.49 = [5 x i8] c"item\00"
@.str.50 = [37 x i8] c".byt SCR::IF_ITEM, InventoryItem::%s\00"
@.str.51 = [8 x i8] c"notitem\00"
@.str.52 = [41 x i8] c".byt SCR::IF_NOT_ITEM, InventoryItem::%s\00"
@.str.53 = [34 x i8] c".byt SCR::FLAG_ON, EventFlags::%s\00"
@.str.54 = [35 x i8] c".byt SCR::FLAG_OFF, EventFlags::%s\00"
@.str.55 = [7 x i8] c"toggle\00"
@.str.56 = [38 x i8] c".byt SCR::FLAG_TOGGLE, EventFlags::%s\00"
@.str.57 = [7 x i8] c"; %s\0D\0A\00"
@.str.58 = [40 x i8] c".byt SCR::SAY, SCR::SPEAKER_%c|CHAR::%s\00"
@.str.59 = [42 x i8] c".byt SCR::THINK, SCR::SPEAKER_%c|CHAR::%s\00"
@.str.60 = [28 x i8] c".byt SCR::NARRATE, CHAR::%s\00"
@.str.61 = [5 x i8] c"NONE\00"
@.str.62 = [6 x i8] c".byt \00"
@.str.63 = [3 x i8] c", \00"
@.str.64 = [6 x i8] c"$%.2x\00"
@.str.65 = [5 x i8] c"[%s]\00"
@.str.66 = [4 x i8] c"'\22'\00"
@.str.67 = [13 x i8] c"SCR::NEWLINE\00"
@.str.68 = [5 x i8] c"\22%c\22\00"
@.str.69 = [3 x i8] c"\0D\0A\00"
@.str.70 = [24 x i8] c"\0D\0ACutsceneDictionary:\0D\0A\00"
@.str.71 = [19 x i8] c"DictionaryWord%i: \00"
@.str.72 = [22 x i8] c".byt \22%s\22, '%c'|128\0D\0A\00"
@.str.73 = [29 x i8] c"\0D\0ACutsceneDictionaryTable:\0D\0A\00"
@.str.74 = [25 x i8] c".byt <DictionaryWord%i\0D\0A\00"
@.str.75 = [25 x i8] c".byt >DictionaryWord%i\0D\0A\00"
@.str.76 = [58 x i8] c"Dictionary entries: %i (size %i, %i saved by dictionary)\0A\00"
@.str.77 = [34 x i8] c"Script size: %i ---> %i (%.2f%%)\0A\00"
@.str.78 = [14 x i8] c"Commands: %i\0A\00"
@.str.79 = [6 x i8] c"%s%i,\00"
define i32 @main(i32 %0, i8** nocapture %1) {
%3 = alloca [700 x i8]
%4 = alloca [128 x [32 x i8]]
%5 = alloca [128 x i32]
%6 = icmp slt i32 %0, 4
br i1 %6, label %7, label %9
7: ; preds = %2
%8 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([45 x i8], [45 x i8]* @.str, i64 0, i64 0))
br label %447
9: ; preds = %2
%10 = getelementptr inbounds [700 x i8], [700 x i8]* %3, i64 0, i64 0
%11 = getelementptr inbounds [128 x [32 x i8]], [128 x [32 x i8]]* %4, i64 0, i64 0, i64 0
%12 = bitcast [128 x i32]* %5 to i8*
%13 = getelementptr inbounds i8*, i8** %1, i64 1
%14 = load i8*, i8** %13
%15 = tail call i32* @fopen(i8* %14, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.1, i64 0, i64 0))
%16 = icmp eq i32* %15, null
br i1 %16, label %20, label %17
17: ; preds = %9
%18 = call i64 @fgets(i8* %10, i32 700, i32* %15)
%19 = icmp eq i64 %18, 0
br i1 %19, label %38, label %22
20: ; preds = %9
%21 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([21 x i8], [21 x i8]* @.str.2, i64 0, i64 0))
br label %445
22: ; preds = %17, %29
%23 = phi i64 [ %33, %29 ], [ 0, %17 ]
%24 = call i32 @RemoveLineEndings(i8* %10)
%25 = call i32 @strlen(i8* %10)
%26 = icmp sgt i32 %25, 31
br i1 %26, label %27, label %29
27: ; preds = %22
%28 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([38 x i8], [38 x i8]* @.str.3, i64 0, i64 0))
br label %445
29: ; preds = %22
%30 = getelementptr inbounds [128 x i32], [128 x i32]* %5, i64 0, i64 %23
store i32 0, i32* %30
%31 = getelementptr inbounds [128 x [32 x i8]], [128 x [32 x i8]]* %4, i64 0, i64 %23, i64 0
%32 = call i32 @strcpy(i8* %31, i8* %10)
%33 = add nuw i64 %23, 1
%34 = call i64 @fgets(i8* %10, i32 700, i32* %15)
%35 = icmp eq i64 %34, 0
br i1 %35, label %36, label %22
36: ; preds = %29
%37 = trunc i64 %33 to i32
br label %38
38: ; preds = %36, %17
%39 = phi i32 [ 0, %17 ], [ %37, %36 ]
%40 = getelementptr inbounds i8*, i8** %1, i64 2
%41 = load i8*, i8** %40
%42 = call i32* @fopen(i8* %41, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.1, i64 0, i64 0))
%43 = icmp eq i32* %42, null
br i1 %43, label %44, label %46
44: ; preds = %38
%45 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([21 x i8], [21 x i8]* @.str.4, i64 0, i64 0))
br label %445
46: ; preds = %38
%47 = getelementptr inbounds i8*, i8** %1, i64 3
%48 = load i8*, i8** %47
%49 = call i32* @fopen(i8* %48, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.5, i64 0, i64 0))
%50 = icmp eq i32* %49, null
br i1 %50, label %59, label %51
51: ; preds = %46
%52 = call i64 @fgets(i8* %10, i32 700, i32* %42)
%53 = icmp eq i64 %52, 0
br i1 %53, label %356, label %54
54: ; preds = %51
%55 = getelementptr inbounds [700 x i8], [700 x i8]* %3, i64 0, i64 1
%56 = getelementptr inbounds [700 x i8], [700 x i8]* %3, i64 0, i64 3
%57 = icmp eq i32 %39, 0
%58 = zext i32 %39 to i64
br label %62
59: ; preds = %46
%60 = call i32 @fclose(i32* %42)
%61 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([31 x i8], [31 x i8]* @.str.6, i64 0, i64 0))
br label %445
62: ; preds = %54, %349
%63 = phi i32 [ 0, %54 ], [ %353, %349 ]
%64 = phi i32 [ 0, %54 ], [ %352, %349 ]
%65 = phi i32 [ 1, %54 ], [ %351, %349 ]
%66 = phi i32 [ 1, %54 ], [ %350, %349 ]
%67 = call i32 @RemoveLineEndings(i8* %10)
%68 = load i8, i8* %10
switch i8 %68, label %209 [
i8 0, label %349
i8 58, label %69
i8 96, label %71
i8 63, label %71
]
69: ; preds = %62
%70 = call i32 @fputs(i8* %55, i32* %49)
br label %340
71: ; preds = %62, %62
%72 = call i8* @strchr(i8* %10, i8 signext 32)
%73 = icmp eq i8* %72, null
br i1 %73, label %76, label %74
74: ; preds = %71
%75 = getelementptr inbounds i8, i8* %72, i64 1
store i8 0, i8* %72
br label %76
76: ; preds = %74, %71
%77 = phi i8* [ %75, %74 ], [ null, %71 ]
%78 = call i32 @bcmp(i8* dereferenceable(3) %55, i8* dereferenceable(3) getelementptr inbounds ([3 x i8], [3 x i8]* @.str.8, i64 0, i64 0), i64 3)
%79 = icmp eq i32 %78, 0
br i1 %79, label %80, label %82
80: ; preds = %76
%81 = call i64 @fwrite(i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.9, i64 0, i64 0), i64 17, i64 1, i32* %49)
br label %171
82: ; preds = %76
%83 = call i32 @bcmp(i8* dereferenceable(4) %55, i8* dereferenceable(4) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.10, i64 0, i64 0), i64 4)
%84 = icmp eq i32 %83, 0
br i1 %84, label %85, label %87
85: ; preds = %82
%86 = call i64 @fwrite(i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.11, i64 0, i64 0), i64 20, i64 1, i32* %49)
br label %171
87: ; preds = %82
%88 = call i32 @bcmp(i8* dereferenceable(5) %55, i8* dereferenceable(5) getelementptr inbounds ([5 x i8], [5 x i8]* @.str.12, i64 0, i64 0), i64 5)
%89 = icmp eq i32 %88, 0
br i1 %89, label %90, label %92
90: ; preds = %87
%91 = call i32 (i32*, i8*, ...) @fprintf(i32* %49, i8* getelementptr inbounds ([25 x i8], [25 x i8]* @.str.13, i64 0, i64 0), i8* %77, i8* %77)
br label %171
92: ; preds = %87
%93 = call i32 @bcmp(i8* dereferenceable(4) %55, i8* dereferenceable(4) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.14, i64 0, i64 0), i64 4)
%94 = icmp eq i32 %93, 0
br i1 %94, label %95, label %97
95: ; preds = %92
%96 = call i64 @fwrite(i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.15, i64 0, i64 0), i64 17, i64 1, i32* %49)
br label %171
97: ; preds = %92
%98 = call i32 @bcmp(i8* dereferenceable(2) %55, i8* dereferenceable(2) getelementptr inbounds ([2 x i8], [2 x i8]* @.str.16, i64 0, i64 0), i64 2)
%99 = icmp eq i32 %98, 0
br i1 %99, label %100, label %102
100: ; preds = %97
%101 = call i64 @fwrite(i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.17, i64 0, i64 0), i64 18, i64 1, i32* %49)
br label %171
102: ; preds = %97
%103 = call i32 @bcmp(i8* dereferenceable(5) %55, i8* dereferenceable(5) getelementptr inbounds ([5 x i8], [5 x i8]* @.str.18, i64 0, i64 0), i64 5)
%104 = icmp eq i32 %103, 0
br i1 %104, label %105, label %107
105: ; preds = %102
%106 = call i32 (i32*, i8*, ...) @fprintf(i32* %49, i8* getelementptr inbounds ([25 x i8], [25 x i8]* @.str.19, i64 0, i64 0), i8* %77, i8* %77)
br label %171
107: ; preds = %102
%108 = call i32 @bcmp(i8* dereferenceable(5) %55, i8* dereferenceable(5) getelementptr inbounds ([5 x i8], [5 x i8]* @.str.20, i64 0, i64 0), i64 5)
%109 = icmp eq i32 %108, 0
br i1 %109, label %110, label %112
110: ; preds = %107
%111 = call i32 (i32*, i8*, ...) @fprintf(i32* %49, i8* getelementptr inbounds ([25 x i8], [25 x i8]* @.str.21, i64 0, i64 0), i8* %77, i8* %77)
br label %171
112: ; preds = %107
%113 = call i32 @bcmp(i8* dereferenceable(7) %55, i8* dereferenceable(7) getelementptr inbounds ([7 x i8], [7 x i8]* @.str.22, i64 0, i64 0), i64 7)
%114 = icmp eq i32 %113, 0
br i1 %114, label %115, label %117
115: ; preds = %112
%116 = call i64 @fwrite(i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.23, i64 0, i64 0), i64 16, i64 1, i32* %49)
br label %171
117: ; preds = %112
%118 = call i32 @bcmp(i8* dereferenceable(7) %55, i8* dereferenceable(7) getelementptr inbounds ([7 x i8], [7 x i8]* @.str.24, i64 0, i64 0), i64 7)
%119 = icmp eq i32 %118, 0
br i1 %119, label %120, label %122
120: ; preds = %117
%121 = call i32 (i32*, i8*, ...) @fprintf(i32* %49, i8* getelementptr inbounds ([34 x i8], [34 x i8]* @.str.25, i64 0, i64 0), i8* %77)
br label %171
122: ; preds = %117
%123 = call i32 @bcmp(i8* dereferenceable(6) %55, i8* dereferenceable(6) getelementptr inbounds ([6 x i8], [6 x i8]* @.str.26, i64 0, i64 0), i64 6)
%124 = icmp eq i32 %123, 0
br i1 %124, label %125, label %127
125: ; preds = %122
%126 = call i32 (i32*, i8*, ...) @fprintf(i32* %49, i8* getelementptr inbounds ([28 x i8], [28 x i8]* @.str.27, i64 0, i64 0), i8* %77)
br label %171
127: ; preds = %122
%128 = call i32 @bcmp(i8* dereferenceable(11) %55, i8* dereferenceable(11) getelementptr inbounds ([11 x i8], [11 x i8]* @.str.28, i64 0, i64 0), i64 11)
%129 = icmp eq i32 %128, 0
br i1 %129, label %130, label %132
130: ; preds = %127
%131 = call i64 @fwrite(i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.29, i64 0, i64 0), i64 20, i64 1, i32* %49)
br label %171
132: ; preds = %127
%133 = call i32 @bcmp(i8* dereferenceable(7) %55, i8* dereferenceable(7) getelementptr inbounds ([7 x i8], [7 x i8]* @.str.30, i64 0, i64 0), i64 7)
%134 = icmp eq i32 %133, 0
br i1 %134, label %135, label %137
135: ; preds = %132
%136 = call i64 @fwrite(i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.31, i64 0, i64 0), i64 17, i64 1, i32* %49)
br label %171
137: ; preds = %132
%138 = call i32 @bcmp(i8* dereferenceable(11) %55, i8* dereferenceable(11) getelementptr inbounds ([11 x i8], [11 x i8]* @.str.32, i64 0, i64 0), i64 11)
%139 = icmp eq i32 %138, 0
br i1 %139, label %171, label %140
140: ; preds = %137
%141 = call i32 @bcmp(i8* dereferenceable(9) %55, i8* dereferenceable(9) getelementptr inbounds ([9 x i8], [9 x i8]* @.str.33, i64 0, i64 0), i64 9)
%142 = icmp eq i32 %141, 0
br i1 %142, label %171, label %143
143: ; preds = %140
%144 = call i32 @bcmp(i8* dereferenceable(18) %55, i8* dereferenceable(18) getelementptr inbounds ([18 x i8], [18 x i8]* @.str.34, i64 0, i64 0), i64 18)
%145 = icmp eq i32 %144, 0
br i1 %145, label %171, label %146
146: ; preds = %143
%147 = call i32 @bcmp(i8* dereferenceable(9) %55, i8* dereferenceable(9) getelementptr inbounds ([9 x i8], [9 x i8]* @.str.35, i64 0, i64 0), i64 9)
%148 = icmp eq i32 %147, 0
br i1 %148, label %149, label %151
149: ; preds = %146
%150 = call i32 (i32*, i8*, ...) @fprintf(i32* %49, i8* getelementptr inbounds ([30 x i8], [30 x i8]* @.str.36, i64 0, i64 0), i8* %77, i8* %77)
br label %171
151: ; preds = %146
%152 = call i32 @bcmp(i8* dereferenceable(6) %55, i8* dereferenceable(6) getelementptr inbounds ([6 x i8], [6 x i8]* @.str.37, i64 0, i64 0), i64 6)
%153 = icmp eq i32 %152, 0
br i1 %153, label %154, label %156
154: ; preds = %151
%155 = call i64 @fwrite(i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str.38, i64 0, i64 0), i64 19, i64 1, i32* %49)
br label %171
156: ; preds = %151
%157 = call i32 @bcmp(i8* dereferenceable(7) %55, i8* dereferenceable(7) getelementptr inbounds ([7 x i8], [7 x i8]* @.str.39, i64 0, i64 0), i64 7)
%158 = icmp eq i32 %157, 0
br i1 %158, label %159, label %161
159: ; preds = %156
%160 = call i32 (i32*, i8*, ...) @fprintf(i32* %49, i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.40, i64 0, i64 0), i8* %77)
br label %171
161: ; preds = %156
%162 = call i32 @bcmp(i8* dereferenceable(6) %55, i8* dereferenceable(6) getelementptr inbounds ([6 x i8], [6 x i8]* @.str.41, i64 0, i64 0), i64 6)
%163 = icmp eq i32 %162, 0
br i1 %163, label %164, label %166
164: ; preds = %161
%165 = call i32 (i32*, i8*, ...) @fprintf(i32* %49, i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str.42, i64 0, i64 0), i8* %77)
br label %171
166: ; preds = %161
%167 = call i32 @bcmp(i8* dereferenceable(7) %55, i8* dereferenceable(7) getelementptr inbounds ([7 x i8], [7 x i8]* @.str.43, i64 0, i64 0), i64 7)
%168 = icmp eq i32 %167, 0
br i1 %168, label %169, label %171
169: ; preds = %166
%170 = call i64 @fwrite(i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.44, i64 0, i64 0), i64 16, i64 1, i32* %49)
br label %171
171: ; preds = %143, %140, %137, %85, %95, %105, %115, %125, %135, %149, %159, %166, %169, %164, %154, %130, %120, %110, %100, %90, %80
%172 = phi i32 [ %66, %166 ], [ %66, %169 ], [ %66, %164 ], [ %66, %159 ], [ %66, %154 ], [ %66, %149 ], [ %66, %135 ], [ %66, %130 ], [ %66, %125 ], [ %66, %120 ], [ %66, %115 ], [ %66, %110 ], [ %66, %105 ], [ %66, %100 ], [ %66, %95 ], [ %66, %90 ], [ %66, %85 ], [ %66, %80 ], [ 0, %137 ], [ 1, %140 ], [ %66, %143 ]
%173 = phi i32 [ %65, %166 ], [ %65, %169 ], [ %65, %164 ], [ %65, %159 ], [ %65, %154 ], [ %65, %149 ], [ %65, %135 ], [ %65, %130 ], [ %65, %125 ], [ %65, %120 ], [ %65, %115 ], [ %65, %110 ], [ %65, %105 ], [ %65, %100 ], [ %65, %95 ], [ %65, %90 ], [ %65, %85 ], [ %65, %80 ], [ %65, %137 ], [ %65, %140 ], [ 0, %143 ]
%174 = load i8, i8* %10
%175 = icmp eq i8 %174, 63
%176 = call i32 @bcmp(i8* dereferenceable(3) %55, i8* dereferenceable(3) getelementptr inbounds ([3 x i8], [3 x i8]* @.str.45, i64 0, i64 0), i64 3)
%177 = icmp eq i32 %176, 0
br i1 %175, label %178, label %196
178: ; preds = %171
br i1 %177, label %179, label %181
179: ; preds = %178
%180 = call i32 (i32*, i8*, ...) @fprintf(i32* %49, i8* getelementptr inbounds ([37 x i8], [37 x i8]* @.str.46, i64 0, i64 0), i8* %77)
br label %181
181: ; preds = %179, %178
%182 = call i32 @bcmp(i8* dereferenceable(4) %55, i8* dereferenceable(4) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.47, i64 0, i64 0), i64 4)
%183 = icmp eq i32 %182, 0
br i1 %183, label %184, label %186
184: ; preds = %181
%185 = call i32 (i32*, i8*, ...) @fprintf(i32* %49, i8* getelementptr inbounds ([38 x i8], [38 x i8]* @.str.48, i64 0, i64 0), i8* %77)
br label %186
186: ; preds = %184, %181
%187 = call i32 @bcmp(i8* dereferenceable(5) %55, i8* dereferenceable(5) getelementptr inbounds ([5 x i8], [5 x i8]* @.str.49, i64 0, i64 0), i64 5)
%188 = icmp eq i32 %187, 0
br i1 %188, label %189, label %191
189: ; preds = %186
%190 = call i32 (i32*, i8*, ...) @fprintf(i32* %49, i8* getelementptr inbounds ([37 x i8], [37 x i8]* @.str.50, i64 0, i64 0), i8* %77)
br label %191
191: ; preds = %189, %186
%192 = call i32 @bcmp(i8* dereferenceable(8) %55, i8* dereferenceable(8) getelementptr inbounds ([8 x i8], [8 x i8]* @.str.51, i64 0, i64 0), i64 8)
%193 = icmp eq i32 %192, 0
br i1 %193, label %194, label %340
194: ; preds = %191
%195 = call i32 (i32*, i8*, ...) @fprintf(i32* %49, i8* getelementptr inbounds ([41 x i8], [41 x i8]* @.str.52, i64 0, i64 0), i8* %77)
br label %340
196: ; preds = %171
br i1 %177, label %197, label %199
197: ; preds = %196
%198 = call i32 (i32*, i8*, ...) @fprintf(i32* %49, i8* getelementptr inbounds ([34 x i8], [34 x i8]* @.str.53, i64 0, i64 0), i8* %77)
br label %199
199: ; preds = %197, %196
%200 = call i32 @bcmp(i8* dereferenceable(4) %55, i8* dereferenceable(4) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.47, i64 0, i64 0), i64 4)
%201 = icmp eq i32 %200, 0
br i1 %201, label %202, label %204
202: ; preds = %199
%203 = call i32 (i32*, i8*, ...) @fprintf(i32* %49, i8* getelementptr inbounds ([35 x i8], [35 x i8]* @.str.54, i64 0, i64 0), i8* %77)
br label %204
204: ; preds = %202, %199
%205 = call i32 @bcmp(i8* dereferenceable(7) %55, i8* dereferenceable(7) getelementptr inbounds ([7 x i8], [7 x i8]* @.str.55, i64 0, i64 0), i64 7)
%206 = icmp eq i32 %205, 0
br i1 %206, label %207, label %340
207: ; preds = %204
%208 = call i32 (i32*, i8*, ...) @fprintf(i32* %49, i8* getelementptr inbounds ([38 x i8], [38 x i8]* @.str.56, i64 0, i64 0), i8* %77)
br label %340
209: ; preds = %62
%210 = call i32 (i32*, i8*, ...) @fprintf(i32* %49, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.57, i64 0, i64 0), i8* %10)
%211 = load i8, i8* %10
%212 = sext i8 %211 to i32
switch i32 %212, label %238 [
i32 60, label %213
i32 62, label %219
i32 91, label %225
]
213: ; preds = %209
%214 = call i8* @strchr(i8* %10, i8 signext 62)
%215 = getelementptr inbounds i8, i8* %214, i64 1
store i8 0, i8* %214
%216 = load i8, i8* %55
%217 = sext i8 %216 to i32
%218 = call i32 (i32*, i8*, ...) @fprintf(i32* %49, i8* getelementptr inbounds ([40 x i8], [40 x i8]* @.str.58, i64 0, i64 0), i32 %217, i8* %56)
br label %232
219: ; preds = %209
%220 = call i8* @strchr(i8* %10, i8 signext 60)
%221 = getelementptr inbounds i8, i8* %220, i64 1
store i8 0, i8* %220
%222 = load i8, i8* %55
%223 = sext i8 %222 to i32
%224 = call i32 (i32*, i8*, ...) @fprintf(i32* %49, i8* getelementptr inbounds ([42 x i8], [42 x i8]* @.str.59, i64 0, i64 0), i32 %223, i8* %56)
br label %232
225: ; preds = %209
%226 = call i8* @strchr(i8* %10, i8 signext 93)
%227 = getelementptr inbounds i8, i8* %226, i64 1
store i8 0, i8* %226
%228 = load i8, i8* %55
%229 = icmp eq i8 %228, 0
%230 = select i1 %229, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.61, i64 0, i64 0), i8* %55
%231 = call i32 (i32*, i8*, ...) @fprintf(i32* %49, i8* getelementptr inbounds ([28 x i8], [28 x i8]* @.str.60, i64 0, i64 0), i8* %230)
br label %232
232: ; preds = %225, %219, %213
%233 = phi i8* [ %227, %225 ], [ %221, %219 ], [ %215, %213 ]
%234 = add nsw i32 %64, 2
%235 = icmp ne i32 %66, 0
%236 = icmp eq i8* %233, %10
%237 = select i1 %235, i1 %236, i1 false
br i1 %237, label %243, label %242
238: ; preds = %209
%239 = icmp eq i32 %66, 0
br i1 %239, label %240, label %243
240: ; preds = %238
%241 = call i64 @fwrite(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.62, i64 0, i64 0), i64 5, i64 1, i32* %49)
br label %279
242: ; preds = %232
br i1 %235, label %247, label %279
243: ; preds = %232, %238
%244 = phi i32 [ %64, %238 ], [ %234, %232 ]
%245 = phi i8* [ %10, %238 ], [ %233, %232 ]
%246 = call i64 @fwrite(i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.9, i64 0, i64 0), i64 17, i64 1, i32* %49)
br label %247
247: ; preds = %243, %242
%248 = phi i32 [ %234, %242 ], [ %244, %243 ]
%249 = phi i8* [ %233, %242 ], [ %245, %243 ]
br label %250
250: ; preds = %247, %276
%251 = phi i8* [ %278, %276 ], [ %249, %247 ]
%252 = phi i32 [ %277, %276 ], [ 0, %247 ]
%253 = load i8, i8* %251
switch i8 %253, label %270 [
i8 0, label %279
i8 32, label %254
]
254: ; preds = %250, %259
%255 = phi i32 [ %261, %259 ], [ 0, %250 ]
%256 = phi i8* [ %257, %259 ], [ %251, %250 ]
%257 = getelementptr inbounds i8, i8* %256, i64 1
%258 = load i8, i8* %257
switch i8 %258, label %259 [
i8 32, label %262
i8 0, label %262
]
259: ; preds = %254
%260 = call i32 @CharWidth(i8 signext %258)
%261 = add nsw i32 %260, %255
br label %254
262: ; preds = %254, %254
%263 = call i32 @CharWidth(i8 signext 32)
%264 = add i32 %255, %252
%265 = add i32 %264, %263
%266 = icmp sgt i32 %265, 127
br i1 %266, label %267, label %268
267: ; preds = %262
store i8 10, i8* %251
br label %276
268: ; preds = %262
%269 = load i8, i8* %251
br label %270
270: ; preds = %268, %250
%271 = phi i8 [ %269, %268 ], [ %253, %250 ]
%272 = icmp eq i8 %271, 10
br i1 %272, label %276, label %273
273: ; preds = %270
%274 = call i32 @CharWidth(i8 signext %271)
%275 = add nsw i32 %274, %252
br label %276
276: ; preds = %267, %270, %273
%277 = phi i32 [ %275, %273 ], [ %252, %270 ], [ 0, %267 ]
%278 = getelementptr inbounds i8, i8* %251, i64 1
br label %250
279: ; preds = %250, %240, %242
%280 = phi i32 [ 0, %240 ], [ 1, %242 ], [ 1, %250 ]
%281 = phi i32 [ %64, %240 ], [ %234, %242 ], [ %248, %250 ]
%282 = phi i8* [ %10, %240 ], [ %233, %242 ], [ %249, %250 ]
%283 = call i32 @strlen(i8* %282)
%284 = add nsw i32 %283, %63
%285 = load i8, i8* %282
%286 = icmp eq i8 %285, 0
br i1 %286, label %338, label %287
287: ; preds = %279, %334
%288 = phi i8* [ %335, %334 ], [ %282, %279 ]
%289 = phi i32 [ 1, %334 ], [ %280, %279 ]
br i1 %57, label %315, label %290
290: ; preds = %287, %301
%291 = phi i64 [ %302, %301 ], [ 0, %287 ]
%292 = getelementptr inbounds [128 x [32 x i8]], [128 x [32 x i8]]* %4, i64 0, i64 %291, i64 0
%293 = call i64 @Match(i8* %288, i8* %292)
%294 = icmp eq i64 %293, 0
br i1 %294, label %301, label %295
295: ; preds = %290
%296 = trunc i64 %291 to i32
%297 = and i64 %291, 4294967295
%298 = icmp eq i32 %289, 0
br i1 %298, label %304, label %299
299: ; preds = %295
%300 = call i64 @fwrite(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.63, i64 0, i64 0), i64 2, i64 1, i32* %49)
br label %304
301: ; preds = %290
%302 = add nuw nsw i64 %291, 1
%303 = icmp eq i64 %302, %58
br i1 %303, label %315, label %290
304: ; preds = %295, %299
%305 = add nuw nsw i32 %296, 128
%306 = call i32 (i32*, i8*, ...) @fprintf(i32* %49, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.64, i64 0, i64 0), i32 %305)
%307 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([5 x i8], [5 x i8]* @.str.65, i64 0, i64 0), i8* %292)
%308 = call i32 @strlen(i8* %292)
%309 = sext i32 %308 to i64
%310 = getelementptr inbounds i8, i8* %288, i64 %309
%311 = getelementptr inbounds [128 x i32], [128 x i32]* %5, i64 0, i64 %297
%312 = load i32, i32* %311
%313 = add nsw i32 %312, 1
store i32 %313, i32* %311
%314 = icmp eq i32 %39, %296
br i1 %314, label %317, label %334
315: ; preds = %301, %287
%316 = icmp eq i32 %289, 0
br i1 %316, label %320, label %317
317: ; preds = %304, %315
%318 = phi i8* [ %288, %315 ], [ %310, %304 ]
%319 = call i64 @fwrite(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.63, i64 0, i64 0), i64 2, i64 1, i32* %49)
br label %320
320: ; preds = %317, %315
%321 = phi i8* [ %318, %317 ], [ %288, %315 ]
%322 = load i8, i8* %321
switch i8 %322, label %327 [
i8 34, label %323
i8 10, label %325
]
323: ; preds = %320
%324 = call i32 (i32*, i8*, ...) @fprintf(i32* %49, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.66, i64 0, i64 0), i32 34)
br label %330
325: ; preds = %320
%326 = call i64 @fwrite(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.67, i64 0, i64 0), i64 12, i64 1, i32* %49)
br label %330
327: ; preds = %320
%328 = sext i8 %322 to i32
%329 = call i32 (i32*, i8*, ...) @fprintf(i32* %49, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.68, i64 0, i64 0), i32 %328)
br label %330
330: ; preds = %325, %327, %323
%331 = load i8, i8* %321
%332 = call i32 @putchar(i8 signext %331)
%333 = getelementptr inbounds i8, i8* %321, i64 1
br label %334
334: ; preds = %304, %330
%335 = phi i8* [ %333, %330 ], [ %310, %304 ]
%336 = load i8, i8* %335
%337 = icmp eq i8 %336, 0
br i1 %337, label %338, label %287
338: ; preds = %334, %279
%339 = call i32 @putchar(i8 signext 10)
br label %340
340: ; preds = %194, %191, %207, %204, %338, %69
%341 = phi i32 [ %66, %69 ], [ %66, %338 ], [ %172, %204 ], [ %172, %207 ], [ %172, %191 ], [ %172, %194 ]
%342 = phi i32 [ %65, %69 ], [ %65, %338 ], [ %173, %204 ], [ %173, %207 ], [ %173, %191 ], [ %173, %194 ]
%343 = phi i32 [ %64, %69 ], [ %281, %338 ], [ %64, %204 ], [ %64, %207 ], [ %64, %191 ], [ %64, %194 ]
%344 = phi i32 [ %63, %69 ], [ %284, %338 ], [ %63, %204 ], [ %63, %207 ], [ %63, %191 ], [ %63, %194 ]
%345 = load i8, i8* %10
%346 = icmp eq i8 %345, 0
br i1 %346, label %349, label %347
347: ; preds = %340
%348 = call i64 @fwrite(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.69, i64 0, i64 0), i64 2, i64 1, i32* %49)
br label %349
349: ; preds = %62, %340, %347
%350 = phi i32 [ %66, %62 ], [ %341, %347 ], [ %341, %340 ]
%351 = phi i32 [ %65, %62 ], [ %342, %347 ], [ %342, %340 ]
%352 = phi i32 [ %64, %62 ], [ %343, %347 ], [ %343, %340 ]
%353 = phi i32 [ %63, %62 ], [ %344, %347 ], [ %344, %340 ]
%354 = call i64 @fgets(i8* %10, i32 700, i32* %42)
%355 = icmp eq i64 %354, 0
br i1 %355, label %356, label %62
356: ; preds = %349, %51
%357 = phi i32 [ 1, %51 ], [ %351, %349 ]
%358 = phi i32 [ 0, %51 ], [ %352, %349 ]
%359 = phi i32 [ 0, %51 ], [ %353, %349 ]
%360 = call i32 @fclose(i32* %42)
%361 = call i64 @fwrite(i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str.70, i64 0, i64 0), i64 23, i64 1, i32* %49)
%362 = icmp eq i32 %39, 0
%363 = icmp eq i32 %357, 0
br i1 %362, label %393, label %364
364: ; preds = %356
%365 = zext i32 %39 to i64
br label %366
366: ; preds = %364, %386
%367 = phi i64 [ 0, %364 ], [ %389, %386 ]
%368 = phi i32 [ 0, %364 ], [ %379, %386 ]
%369 = phi i32 [ 0, %364 ], [ %372, %386 ]
%370 = getelementptr inbounds [128 x [32 x i8]], [128 x [32 x i8]]* %4, i64 0, i64 %367, i64 0
%371 = call i32 @strlen(i8* %370)
%372 = add nsw i32 %371, %369
%373 = call i32 @strlen(i8* %370)
%374 = getelementptr inbounds [128 x i32], [128 x i32]* %5, i64 0, i64 %367
%375 = load i32, i32* %374
%376 = add nsw i32 %375, -1
%377 = mul nsw i32 %376, %373
%378 = add i32 %368, -1
%379 = add i32 %378, %377
%380 = call i8* bitcast (i8* (i8*, i8)* @strchr to i8* (i8*, i32)*)(i8* %370, i32 0)
%381 = getelementptr inbounds i8, i8* %380, i64 -1
%382 = load i8, i8* %381
store i8 0, i8* %381
br i1 %363, label %386, label %383
383: ; preds = %366
%384 = trunc i64 %367 to i32
%385 = call i32 (i32*, i8*, ...) @fprintf(i32* %49, i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.71, i64 0, i64 0), i32 %384)
br label %386
386: ; preds = %383, %366
%387 = sext i8 %382 to i32
%388 = call i32 (i32*, i8*, ...) @fprintf(i32* %49, i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str.72, i64 0, i64 0), i8* %370, i32 %387)
%389 = add nuw nsw i64 %367, 1
%390 = icmp eq i64 %389, %365
br i1 %390, label %391, label %366
391: ; preds = %386
%392 = icmp eq i32 %357, 0
br i1 %392, label %409, label %396
393: ; preds = %356
br i1 %363, label %409, label %394
394: ; preds = %393
%395 = call i64 @fwrite(i8* getelementptr inbounds ([29 x i8], [29 x i8]* @.str.73, i64 0, i64 0), i64 28, i64 1, i32* %49)
br label %409
396: ; preds = %391
%397 = call i64 @fwrite(i8* getelementptr inbounds ([29 x i8], [29 x i8]* @.str.73, i64 0, i64 0), i64 28, i64 1, i32* %49)
br i1 %362, label %432, label %399
398: ; preds = %399
br i1 %362, label %432, label %404
399: ; preds = %396, %399
%400 = phi i32 [ %402, %399 ], [ 0, %396 ]
%401 = call i32 (i32*, i8*, ...) @fprintf(i32* %49, i8* getelementptr inbounds ([25 x i8], [25 x i8]* @.str.74, i64 0, i64 0), i32 %400)
%402 = add nuw i32 %400, 1
%403 = icmp eq i32 %402, %39
br i1 %403, label %398, label %399
404: ; preds = %398, %404
%405 = phi i32 [ %407, %404 ], [ 0, %398 ]
%406 = call i32 (i32*, i8*, ...) @fprintf(i32* %49, i8* getelementptr inbounds ([25 x i8], [25 x i8]* @.str.75, i64 0, i64 0), i32 %405)
%407 = add nuw i32 %405, 1
%408 = icmp eq i32 %407, %39
br i1 %408, label %409, label %404
409: ; preds = %404, %394, %393, %391
%410 = phi i32 [ 0, %393 ], [ %379, %391 ], [ 0, %394 ], [ %379, %404 ]
%411 = phi i32 [ 0, %393 ], [ %372, %391 ], [ 0, %394 ], [ %372, %404 ]
%412 = call i32 @fclose(i32* %49)
%413 = sub nsw i32 %359, %410
%414 = sitofp i32 %413 to float
%415 = sitofp i32 %359 to float
%416 = fdiv float %414, %415
%417 = fmul float %416, 1.000000e+02
%418 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([58 x i8], [58 x i8]* @.str.76, i64 0, i64 0), i32 %39, i32 %411, i32 %410)
%419 = fpext float %417 to double
%420 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([34 x i8], [34 x i8]* @.str.77, i64 0, i64 0), i32 %359, i32 %413, double %419)
%421 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([14 x i8], [14 x i8]* @.str.78, i64 0, i64 0), i32 %358)
br i1 %362, label %443, label %422
422: ; preds = %409
%423 = zext i32 %39 to i64
br label %424
424: ; preds = %422, %424
%425 = phi i64 [ 0, %422 ], [ %430, %424 ]
%426 = getelementptr inbounds [128 x [32 x i8]], [128 x [32 x i8]]* %4, i64 0, i64 %425, i64 0
%427 = getelementptr inbounds [128 x i32], [128 x i32]* %5, i64 0, i64 %425
%428 = load i32, i32* %427
%429 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([6 x i8], [6 x i8]* @.str.79, i64 0, i64 0), i8* %426, i32 %428)
%430 = add nuw nsw i64 %425, 1
%431 = icmp eq i64 %430, %423
br i1 %431, label %443, label %424
432: ; preds = %398, %396
%433 = call i32 @fclose(i32* %49)
%434 = sub nsw i32 %359, %379
%435 = sitofp i32 %434 to float
%436 = sitofp i32 %359 to float
%437 = fdiv float %435, %436
%438 = fmul float %437, 1.000000e+02
%439 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([58 x i8], [58 x i8]* @.str.76, i64 0, i64 0), i32 %39, i32 %372, i32 %379)
%440 = fpext float %438 to double
%441 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([34 x i8], [34 x i8]* @.str.77, i64 0, i64 0), i32 %359, i32 %434, double %440)
%442 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([14 x i8], [14 x i8]* @.str.78, i64 0, i64 0), i32 %358)
br label %443
443: ; preds = %424, %432, %409
%444 = call i32 @putchar(i8 signext 10)
br label %445
445: ; preds = %59, %443, %44, %27, %20
%446 = phi i32 [ -1, %27 ], [ 0, %44 ], [ 0, %20 ], [ 0, %443 ], [ 0, %59 ]
br label %447
447: ; preds = %445, %7
%448 = phi i32 [ 0, %7 ], [ %446, %445 ]
ret i32 %448
}