#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 */
struct token_stream {
  int dummy;
};
struct row_list {
  int dummy;
};
struct row {
  int dummy;
};
typedef int /*<<< orphan*/ FILE;

/* Variables and functions */
int /*<<< orphan*/ checkoptions(char *, int *, int *, int *);
int /*<<< orphan*/ fclose(int /*<<< orphan*/ *);
int /*<<< orphan*/ *fgets(char *, int, int /*<<< orphan*/ *);
int /*<<< orphan*/ *fopen(char *, char *);
int interpretrc(int /*<<< orphan*/);
int /*<<< orphan*/ line_is0rows(char *);
int /*<<< orphan*/ line_isblank(char *);
int /*<<< orphan*/ line_iserror(char *);
int /*<<< orphan*/ line_isgetheadingorfooting(char *);
int /*<<< orphan*/ line_isheading(char *);
int /*<<< orphan*/ line_isignore(char *);
int /*<<< orphan*/ line_isnnrows(char *);
int /*<<< orphan*/ line_isoptstats(char *);
int /*<<< orphan*/ line_issqloperationcomplete(char *);
int /*<<< orphan*/ line_isstmt(char *);
int /*<<< orphan*/ line_isunderline(char *);
int /*<<< orphan*/ line_iswarning(char *);
int /*<<< orphan*/ line_strip(char *);
int /*<<< orphan*/ mightbestats(int);
int /*<<< orphan*/ myFputs(char *, int /*<<< orphan*/ *, int,
                           int /*<<< orphan*/);
int /*<<< orphan*/ printf(char *, ...);
int /*<<< orphan*/ row_add(struct row *, char *);
struct row *row_create(int);
int /*<<< orphan*/ row_destroy(struct row *);
int /*<<< orphan*/ row_list_add(struct row_list *, struct row *);
struct row_list *row_list_create();
struct row *row_list_remove_min(struct row_list *);
char *row_remove(struct row *);
scalar_t__ strcmp(char *, char *);
scalar_t__ strncmp(char *, char *, int);
int /*<<< orphan*/ token_stream_add(struct token_stream *, int /*<<< orphan*/);
int /*<<< orphan*/ token_stream_advance(struct token_stream *, int);
int /*<<< orphan*/ token_stream_clear(struct token_stream *);
struct token_stream *token_stream_create(int);
int /*<<< orphan*/ token_stream_interesting(struct token_stream *);
int /*<<< orphan*/ token_stream_is_get(struct token_stream *);
main(int argc, char *argv[]) {
  FILE *in;
  FILE *out;
  int ignore_order_by_option = 0;
  int debug_option = 0;
  int strip_stats_option = 0;
  if ((argc < 3) || (argc > 4) ||
      ((argc == 4) &&
       (!checkoptions(argv[3], &debug_option, &ignore_order_by_option,
                      &strip_stats_option)))) {
    printf("\nUsage:   %s  <in-file> <out-file> [-[d][i][s]] \n", argv[0]);
    printf("\nwhere <in-file> is a SQLCI actual results file to be ");
    printf("transformed.  The\ntransformed results will be written to ");
    printf("<out-file>.\n\n");
    printf("The -i option tells %s to sort output from *all*\nselects, ",
           argv[0]);
    printf("not just those without order by clauses.  This should be used ");
    printf("with\ncare, since the correctness of the results could be ");
    printf("compromised.\n\n");
    printf("The -d option is a debug option:  If specified, internal parse ");
    printf("states are\ndisplayed.\n\n");
    printf("The -s option tells logsort to strip out statistics generated ");
    printf("by DISPLAY\nSTATISTICS and by the Trafodion optimizer.\n\n");
  } else if ((in = fopen(argv[1], "r")) == NULL) {
    printf("\n*** Could not open input file %s.\n", argv[1]);
  } else if ((out = fopen(argv[2], "w")) == NULL) {
    printf("\n*** Could not open output file %s.\n", argv[2]);
    fclose(in);
  } else {
    struct token_stream *t;
    struct row_list *r;
    struct row *rw;
    int state;
    int saved_state;
    int line_within_row;
    int might_be_end;
    char linebuf[5000 + 1];
    int headingcount;
    headingcount = 0;
    rw = NULL;
    t = token_stream_create(ignore_order_by_option);
    r = row_list_create();
    state = 0;
    while ((fgets(linebuf, 5000, in)) != NULL) {
      if (debug_option) {
        printf("State %d\n", state);
        printf("%s", linebuf);
      }
      if (((strncmp(linebuf,
                    "  ATTRIBUTES EXTENT (51200, 102400), MAXEXTENTS 768",
                    51)) == 0) ||
          ((strncmp(linebuf, "  ATTRIBUTES BLOCKSIZE 32768", 28)) == 0) ||
          ((strncmp(linebuf, "--  ATTRIBUTES BLOCKSIZE 32768", 30)) == 0)) {
        continue;
      }
      if ((strncmp(linebuf, "  HASH2 PARTITION", 17) == 0) ||
          (strncmp(linebuf, "  HASH PARTITION", 16) == 0) ||
          (strncmp(linebuf, "--  HASH2 PARTITION", 19) == 0)) {
        while ((fgets(linebuf, 5000, in)) != NULL) {
          if (debug_option) {
            printf("State %d\n", state);
            printf("%s", linebuf);
          }
          if ((strncmp(linebuf, "  STORE BY", 10) == 0) ||
              (strncmp(linebuf, "  ;", 3) == 0) ||
              (strncmp(linebuf, "--  ;", 5) == 0)) {
            break;
          }
          continue;
        }
      }
      if ((strncmp(linebuf, "DISK-", 5) == 0) ||
          (strncmp(linebuf, "Partition[", 10) == 0)) {
        while ((fgets(linebuf, 5000, in)) != NULL) {
          if (debug_option) {
            printf("State %d\n", state);
            printf("%s", linebuf);
          }
          if (strcmp(linebuf, "\n") == 0) {
            break;
          }
          continue;
        }
      }
      switch (state) {
      case 0: {
        if (line_isignore(linebuf)) {
          saved_state = state;
          state = 7;
        } else if (line_isstmt(linebuf)) {
          state = interpretrc(token_stream_add(t, line_strip(linebuf)));
        }
        myFputs(linebuf, out, strip_stats_option, mightbestats(state));
        break;
      }
      case 1: {
        if (line_isignore(linebuf)) {
          saved_state = state;
          state = 7;
        } else if (line_isstmt(linebuf)) {
          state = interpretrc(token_stream_add(t, line_strip(linebuf)));
        } else {
          token_stream_clear(t);
          state = 0;
        }
        myFputs(linebuf, out, strip_stats_option, mightbestats(state));
        break;
      }
      case 2: {
        if (token_stream_interesting(t)) {
          headingcount = 0;
          if (line_isblank(linebuf))
            state = 3;
          else if (line_is0rows(linebuf))
            state = 0;
          else if (line_iserror(linebuf))
            state = 0;
          else {
            printf("Unexpected line after a SELECT statement:\n");
            printf("%s", linebuf);
            state = 0;
          }
          token_stream_advance(t, 1);
        } else if (token_stream_is_get(t)) {
          headingcount = 0;
          if (line_isblank(linebuf))
            state = 10;
          else if (line_is0rows(linebuf))
            state = 0;
          else if (line_iserror(linebuf))
            state = 0;
          else {
            printf("Unexpected line after a GET statement:\n");
            printf("%s", linebuf);
            state = 0;
          }
          token_stream_advance(t, 1);
        } else {
          if (line_isstmt(linebuf)) {
            token_stream_advance(t, -1);
            state = interpretrc(token_stream_add(t, line_strip(linebuf)));
          } else {
            state = 0;
            token_stream_advance(t, 1);
          }
        }
        myFputs(linebuf, out, strip_stats_option, mightbestats(state));
        break;
      }
      case 3: {
        if (line_isheading(linebuf))
          state = 4;
        else if (line_isblank(linebuf)) {
          if (headingcount == 0) {
            printf("Heading missing after SELECT.\n");
            state = 0;
          } else {
            state = 5;
          }
        } else if (line_is0rows(linebuf))
          state = 0;
        else if (line_iserror(linebuf))
          state = 0;
        else if (line_iswarning(linebuf))
          state = 9;
        else if (line_isoptstats(linebuf))
          state = 8;
        else {
          printf("Unexpected line after a SELECT statement:\n");
          printf("%s", linebuf);
          state = 0;
        }
        myFputs(linebuf, out, strip_stats_option, mightbestats(state));
        break;
      }
      case 4: {
        if (line_isunderline(linebuf)) {
          headingcount++;
          state = 3;
        } else {
          printf("Unexpected line after heading line:\n");
          printf("%s", linebuf);
          state = 0;
        }
        myFputs(linebuf, out, strip_stats_option, mightbestats(state));
        break;
      }
      case 5: {
        if (line_isunderline(linebuf)) {
          headingcount++;
          state = 3;
        } else {
          line_within_row = 0;
          might_be_end = 0;
          state = 6;
          goto case6;
        }
        myFputs(linebuf, out, strip_stats_option, mightbestats(state));
        break;
      }
      case 6: {
      case6:
        if ((line_within_row == 1) && might_be_end && line_isnnrows(linebuf)) {
          struct row *rw1;
          char *returned_line;
          while ((rw1 = row_list_remove_min(r)) != NULL) {
            while ((returned_line = row_remove(rw1)) != NULL) {
              myFputs(returned_line, out, strip_stats_option,
                      mightbestats(state));
            }
            row_destroy(rw1);
          }
          returned_line = row_remove(rw);
          myFputs(returned_line, out, strip_stats_option, mightbestats(state));
          row_destroy(rw);
          rw = NULL;
          might_be_end = 0;
          myFputs(linebuf, out, strip_stats_option, mightbestats(state));
          if (token_stream_interesting(t))
            state = 2;
          else
            state = 0;
        } else {
          if (line_within_row == headingcount) {
            row_list_add(r, rw);
            rw = NULL;
            line_within_row = 0;
          }
          if (line_within_row == 0) {
            if (line_isblank(linebuf))
              might_be_end = 1;
            else
              might_be_end = 0;
            rw = row_create(headingcount);
          }
          row_add(rw, linebuf);
          line_within_row++;
        }
        break;
      }
      case 7: {
        if (line_isignore(linebuf)) {
          state = saved_state;
        }
        myFputs(linebuf, out, strip_stats_option, mightbestats(state));
        break;
      }
      case 8: {
        if (line_isblank(linebuf))
          state = 3;
        else if (!line_isoptstats(linebuf)) {
          printf("Unexpected line after Trafodion Optimizer stats:");
          printf("%s", linebuf);
          state = 0;
        }
        myFputs(linebuf, out, strip_stats_option, mightbestats(state));
        break;
      }
      case 9: {
        if (line_isblank(linebuf))
          state = 3;
        else if (!line_iswarning(linebuf))
          state = 0;
        myFputs(linebuf, out, strip_stats_option, mightbestats(state));
        break;
      }
      case 10: {
        if (line_isheading(linebuf))
          state = 11;
        else if (line_issqloperationcomplete(linebuf))
          state = 0;
        else if (line_iserror(linebuf))
          state = 0;
        else if (line_iswarning(linebuf))
          state = 9;
        else {
          printf("Unexpected line after a GET statement:\n");
          printf("%s", linebuf);
          state = 0;
        }
        myFputs(linebuf, out, strip_stats_option, mightbestats(state));
        break;
      }
      case 11: {
        if (line_isgetheadingorfooting(linebuf)) {
          headingcount++;
          state = 12;
        } else if (line_is0rows(linebuf))
          state = 0;
        else if (line_iserror(linebuf))
          state = 0;
        else if (line_iswarning(linebuf))
          state = 9;
        else {
          printf("Unexpected line after a GET statement:\n");
          printf("%s", linebuf);
          state = 0;
        }
        myFputs(linebuf, out, strip_stats_option, mightbestats(state));
        break;
      }
      case 12: {
        if (line_isblank(linebuf)) {
          state = 13;
          line_within_row = 0;
        } else {
          printf("Unexpected line after a GET header:\n");
          printf("%s", linebuf);
          state = 0;
        }
        myFputs(linebuf, out, strip_stats_option, mightbestats(state));
        break;
      }
      case 13: {
        if (line_isblank(linebuf)) {
          if (rw) {
            row_list_add(r, rw);
            rw = NULL;
          }
          struct row *rw1;
          char *returned_line;
          while ((rw1 = row_list_remove_min(r)) != NULL) {
            while ((returned_line = row_remove(rw1)) != NULL) {
              myFputs(returned_line, out, strip_stats_option,
                      mightbestats(state));
            }
            row_destroy(rw1);
          }
          myFputs(linebuf, out, strip_stats_option, mightbestats(state));
          if (token_stream_interesting(t))
            state = 2;
          else if (token_stream_is_get(t))
            state = 2;
          else
            state = 0;
        } else {
          if (line_within_row == headingcount) {
            row_list_add(r, rw);
            rw = NULL;
            line_within_row = 0;
          }
          if (line_within_row == 0) {
            rw = row_create(headingcount);
          }
          row_add(rw, linebuf);
          line_within_row++;
        }
        break;
      }
      default: {
        printf("Error:  got bad state %d.\n", state);
        break;
      }
      }
    }
    fclose(in);
    fclose(out);
  }
  return 0;
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0x15d0,%rsp
movl   $0x0,-0x4(%rbp)
mov    %edi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
movl   $0x0,-0x24(%rbp)
movl   $0x0,-0x28(%rbp)
movl   $0x0,-0x2c(%rbp)
cmpl   $0x3,-0x8(%rbp)
jl     13ae <main+0x6e>
cmpl   $0x4,-0x8(%rbp)
jg     13ae <main+0x6e>
cmpl   $0x4,-0x8(%rbp)
jne    1469 <main+0x129>
mov    -0x10(%rbp),%rax
mov    0x18(%rax),%rdi
lea    -0x28(%rbp),%rsi
lea    -0x24(%rbp),%rdx
lea    -0x2c(%rbp),%rcx
call   1150 <checkoptions@plt>
cmp    $0x0,%eax
jne    1469 <main+0x129>
mov    -0x10(%rbp),%rax
mov    (%rax),%rsi
lea    0x1c7c(%rip),%rdi
mov    $0x0,%al
call   10c0 <printf@plt>
lea    0x1ca0(%rip),%rdi
mov    $0x0,%al
call   10c0 <printf@plt>
lea    0x1cc9(%rip),%rdi
mov    $0x0,%al
call   10c0 <printf@plt>
lea    0x1cf5(%rip),%rdi
mov    $0x0,%al
call   10c0 <printf@plt>
mov    -0x10(%rbp),%rax
mov    (%rax),%rsi
lea    0x1cee(%rip),%rdi
mov    $0x0,%al
call   10c0 <printf@plt>
lea    0x1d1b(%rip),%rdi
mov    $0x0,%al
call   10c0 <printf@plt>
lea    0x1d4c(%rip),%rdi
mov    $0x0,%al
call   10c0 <printf@plt>
lea    0x1d78(%rip),%rdi
mov    $0x0,%al
call   10c0 <printf@plt>
lea    0x1d79(%rip),%rdi
mov    $0x0,%al
call   10c0 <printf@plt>
lea    0x1dab(%rip),%rdi
mov    $0x0,%al
call   10c0 <printf@plt>
lea    0x1db5(%rip),%rdi
mov    $0x0,%al
call   10c0 <printf@plt>
lea    0x1de6(%rip),%rdi
mov    $0x0,%al
call   10c0 <printf@plt>
jmp    26fb <main+0x13bb>
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%rdi
lea    0x1e03(%rip),%rsi
call   1190 <fopen@plt>
mov    %rax,-0x18(%rbp)
cmp    $0x0,%rax
jne    14a6 <main+0x166>
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%rsi
lea    0x1de3(%rip),%rdi
mov    $0x0,%al
call   10c0 <printf@plt>
jmp    26f6 <main+0x13b6>
mov    -0x10(%rbp),%rax
mov    0x10(%rax),%rdi
lea    0x1dec(%rip),%rsi
call   1190 <fopen@plt>
mov    %rax,-0x20(%rbp)
cmp    $0x0,%rax
jne    14ec <main+0x1ac>
mov    -0x10(%rbp),%rax
mov    0x10(%rax),%rsi
lea    0x1dcc(%rip),%rdi
mov    $0x0,%al
call   10c0 <printf@plt>
mov    -0x18(%rbp),%rdi
call   10a0 <fclose@plt>
jmp    26f1 <main+0x13b1>
movl   $0x0,-0x13f4(%rbp)
movq   $0x0,-0x48(%rbp)
mov    -0x24(%rbp),%edi
call   1250 <token_stream_create@plt>
mov    %rax,-0x38(%rbp)
mov    $0x0,%al
call   11f0 <row_list_create@plt>
mov    %rax,-0x40(%rbp)
movl   $0x0,-0x4c(%rbp)
lea    -0x13f0(%rbp),%rdi
mov    -0x18(%rbp),%rdx
mov    $0x1388,%esi
call   10f0 <fgets@plt>
cmp    $0x0,%rax
je     26df <main+0x139f>
cmpl   $0x0,-0x28(%rbp)
je     156b <main+0x22b>
mov    -0x4c(%rbp),%esi
lea    0x1d79(%rip),%rdi
mov    $0x0,%al
call   10c0 <printf@plt>
lea    -0x13f0(%rbp),%rsi
lea    0x1d6e(%rip),%rdi
mov    $0x0,%al
call   10c0 <printf@plt>
lea    -0x13f0(%rbp),%rdi
lea    0x1d5c(%rip),%rsi
mov    $0x33,%edx
call   1050 <strncmp@plt>
cmp    $0x0,%rax
je     15d1 <main+0x291>
lea    -0x13f0(%rbp),%rdi
lea    0x1d70(%rip),%rsi
mov    $0x1c,%edx
call   1050 <strncmp@plt>
cmp    $0x0,%rax
je     15d1 <main+0x291>
lea    -0x13f0(%rbp),%rdi
lea    0x1d4c(%rip),%rsi
mov    $0x1e,%edx
call   1050 <strncmp@plt>
cmp    $0x0,%rax
jne    15d6 <main+0x296>
jmp    151c <main+0x1dc>
lea    -0x13f0(%rbp),%rdi
lea    0x1d57(%rip),%rsi
mov    $0x11,%edx
call   1050 <strncmp@plt>
cmp    $0x0,%rax
je     163c <main+0x2fc>
lea    -0x13f0(%rbp),%rdi
lea    0x1d22(%rip),%rsi
mov    $0x10,%edx
call   1050 <strncmp@plt>
cmp    $0x0,%rax
je     163c <main+0x2fc>
lea    -0x13f0(%rbp),%rdi
lea    0x1d11(%rip),%rsi
mov    $0x13,%edx
call   1050 <strncmp@plt>
cmp    $0x0,%rax
jne    1705 <main+0x3c5>
jmp    1641 <main+0x301>
lea    -0x13f0(%rbp),%rdi
mov    -0x18(%rbp),%rdx
mov    $0x1388,%esi
call   10f0 <fgets@plt>
cmp    $0x0,%rax
je     1700 <main+0x3c0>
cmpl   $0x0,-0x28(%rbp)
je     1690 <main+0x350>
mov    -0x4c(%rbp),%esi
lea    0x1c54(%rip),%rdi
mov    $0x0,%al
call   10c0 <printf@plt>
lea    -0x13f0(%rbp),%rsi
lea    0x1c49(%rip),%rdi
mov    $0x0,%al
call   10c0 <printf@plt>
lea    -0x13f0(%rbp),%rdi
lea    0x1caf(%rip),%rsi
mov    $0xa,%edx
call   1050 <strncmp@plt>
cmp    $0x0,%rax
je     16f6 <main+0x3b6>
lea    -0x13f0(%rbp),%rdi
lea    0x1c9a(%rip),%rsi
mov    $0x3,%edx
call   1050 <strncmp@plt>
cmp    $0x0,%rax
je     16f6 <main+0x3b6>
lea    -0x13f0(%rbp),%rdi
lea    0x1c76(%rip),%rsi
mov    $0x5,%edx
call   1050 <strncmp@plt>
cmp    $0x0,%rax
jne    16fb <main+0x3bb>
jmp    1700 <main+0x3c0>
jmp    1641 <main+0x301>
jmp    1705 <main+0x3c5>
lea    -0x13f0(%rbp),%rdi
lea    0x1c4b(%rip),%rsi
mov    $0x5,%edx
call   1050 <strncmp@plt>
cmp    $0x0,%rax
je     1749 <main+0x409>
lea    -0x13f0(%rbp),%rdi
lea    0x1c2f(%rip),%rsi
mov    $0xa,%edx
call   1050 <strncmp@plt>
cmp    $0x0,%rax
jne    17c9 <main+0x489>
jmp    174e <main+0x40e>
lea    -0x13f0(%rbp),%rdi
mov    -0x18(%rbp),%rdx
mov    $0x1388,%esi
call   10f0 <fgets@plt>
cmp    $0x0,%rax
je     17c4 <main+0x484>
cmpl   $0x0,-0x28(%rbp)
je     179d <main+0x45d>
mov    -0x4c(%rbp),%esi
lea    0x1b47(%rip),%rdi
mov    $0x0,%al
call   10c0 <printf@plt>
lea    -0x13f0(%rbp),%rsi
lea    0x1b3c(%rip),%rdi
mov    $0x0,%al
call   10c0 <printf@plt>
lea    -0x13f0(%rbp),%rdi
lea    0x193c(%rip),%rsi
call   1100 <strcmp@plt>
cmp    $0x0,%rax
jne    17bf <main+0x47f>
jmp    17c4 <main+0x484>
jmp    174e <main+0x40e>
jmp    17c9 <main+0x489>
mov    -0x4c(%rbp),%eax
mov    %rax,-0x1420(%rbp)
sub    $0xd,%rax
ja     26c9 <main+0x1389>
mov    -0x1420(%rbp),%rax
lea    0x1815(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
lea    -0x13f0(%rbp),%rdi
call   10d0 <line_isignore@plt>
cmp    $0x0,%eax
je     181b <main+0x4db>
mov    -0x4c(%rbp),%eax
mov    %eax,-0x50(%rbp)
movl   $0x7,-0x4c(%rbp)
jmp    1864 <main+0x524>
lea    -0x13f0(%rbp),%rdi
call   11c0 <line_isstmt@plt>
cmp    $0x0,%eax
je     185f <main+0x51f>
mov    -0x38(%rbp),%rax
mov    %rax,-0x1428(%rbp)
lea    -0x13f0(%rbp),%rdi
call   1180 <line_strip@plt>
mov    -0x1428(%rbp),%rdi
mov    %eax,%esi
call   1060 <token_stream_add@plt>
mov    %eax,%edi
call   11b0 <interpretrc@plt>
mov    %eax,-0x4c(%rbp)
jmp    1864 <main+0x524>
lea    -0x13f0(%rbp),%rax
mov    %rax,-0x1440(%rbp)
mov    -0x20(%rbp),%rax
mov    %rax,-0x1438(%rbp)
mov    -0x2c(%rbp),%eax
mov    %eax,-0x142c(%rbp)
mov    -0x4c(%rbp),%edi
call   1110 <mightbestats@plt>
mov    -0x1440(%rbp),%rdi
mov    -0x1438(%rbp),%rsi
mov    -0x142c(%rbp),%edx
mov    %eax,%ecx
call   1240 <myFputs@plt>
jmp    26da <main+0x139a>
lea    -0x13f0(%rbp),%rdi
call   10d0 <line_isignore@plt>
cmp    $0x0,%eax
je     18d5 <main+0x595>
mov    -0x4c(%rbp),%eax
mov    %eax,-0x50(%rbp)
movl   $0x7,-0x4c(%rbp)
jmp    1933 <main+0x5f3>
lea    -0x13f0(%rbp),%rdi
call   11c0 <line_isstmt@plt>
cmp    $0x0,%eax
je     191e <main+0x5de>
mov    -0x38(%rbp),%rax
mov    %rax,-0x1448(%rbp)
lea    -0x13f0(%rbp),%rdi
call   1180 <line_strip@plt>
mov    -0x1448(%rbp),%rdi
mov    %eax,%esi
call   1060 <token_stream_add@plt>
mov    %eax,%edi
call   11b0 <interpretrc@plt>
mov    %eax,-0x4c(%rbp)
jmp    192e <main+0x5ee>
mov    -0x38(%rbp),%rdi
call   1260 <token_stream_clear@plt>
movl   $0x0,-0x4c(%rbp)
jmp    1933 <main+0x5f3>
lea    -0x13f0(%rbp),%rax
mov    %rax,-0x1460(%rbp)
mov    -0x20(%rbp),%rax
mov    %rax,-0x1458(%rbp)
mov    -0x2c(%rbp),%eax
mov    %eax,-0x144c(%rbp)
mov    -0x4c(%rbp),%edi
call   1110 <mightbestats@plt>
mov    -0x1460(%rbp),%rdi
mov    -0x1458(%rbp),%rsi
mov    -0x144c(%rbp),%edx
mov    %eax,%ecx
call   1240 <myFputs@plt>
jmp    26da <main+0x139a>
mov    -0x38(%rbp),%rdi
call   11a0 <token_stream_interesting@plt>
cmp    $0x0,%eax
je     1a43 <main+0x703>
movl   $0x0,-0x13f4(%rbp)
lea    -0x13f0(%rbp),%rdi
call   10e0 <line_isblank@plt>
cmp    $0x0,%eax
je     19ba <main+0x67a>
movl   $0x3,-0x4c(%rbp)
jmp    1a30 <main+0x6f0>
lea    -0x13f0(%rbp),%rdi
call   1040 <line_is0rows@plt>
cmp    $0x0,%eax
je     19db <main+0x69b>
movl   $0x0,-0x4c(%rbp)
jmp    1a2b <main+0x6eb>
lea    -0x13f0(%rbp),%rdi
call   11d0 <line_iserror@plt>
cmp    $0x0,%eax
je     19fc <main+0x6bc>
movl   $0x0,-0x4c(%rbp)
jmp    1a26 <main+0x6e6>
lea    0x196c(%rip),%rdi
mov    $0x0,%al
call   10c0 <printf@plt>
lea    -0x13f0(%rbp),%rsi
lea    0x18ba(%rip),%rdi
mov    $0x0,%al
call   10c0 <printf@plt>
movl   $0x0,-0x4c(%rbp)
jmp    1a2b <main+0x6eb>
jmp    1a30 <main+0x6f0>
mov    -0x38(%rbp),%rdi
mov    $0x1,%esi
call   1220 <token_stream_advance@plt>
jmp    1b7f <main+0x83f>
mov    -0x38(%rbp),%rdi
call   10b0 <token_stream_is_get@plt>
cmp    $0x0,%eax
je     1b09 <main+0x7c9>
movl   $0x0,-0x13f4(%rbp)
lea    -0x13f0(%rbp),%rdi
call   10e0 <line_isblank@plt>
cmp    $0x0,%eax
je     1a80 <main+0x740>
movl   $0xa,-0x4c(%rbp)
jmp    1af6 <main+0x7b6>
lea    -0x13f0(%rbp),%rdi
call   1040 <line_is0rows@plt>
cmp    $0x0,%eax
je     1aa1 <main+0x761>
movl   $0x0,-0x4c(%rbp)
jmp    1af1 <main+0x7b1>
lea    -0x13f0(%rbp),%rdi
call   11d0 <line_iserror@plt>
cmp    $0x0,%eax
je     1ac2 <main+0x782>
movl   $0x0,-0x4c(%rbp)
jmp    1aec <main+0x7ac>
lea    0x18d1(%rip),%rdi
mov    $0x0,%al
call   10c0 <printf@plt>
lea    -0x13f0(%rbp),%rsi
lea    0x17f4(%rip),%rdi
mov    $0x0,%al
call   10c0 <printf@plt>
movl   $0x0,-0x4c(%rbp)
jmp    1af1 <main+0x7b1>
jmp    1af6 <main+0x7b6>
mov    -0x38(%rbp),%rdi
mov    $0x1,%esi
call   1220 <token_stream_advance@plt>
jmp    1b7a <main+0x83a>
lea    -0x13f0(%rbp),%rdi
call   11c0 <line_isstmt@plt>
cmp    $0x0,%eax
je     1b60 <main+0x820>
mov    -0x38(%rbp),%rdi
mov    $0xffffffff,%esi
call   1220 <token_stream_advance@plt>
mov    -0x38(%rbp),%rax
mov    %rax,-0x1468(%rbp)
lea    -0x13f0(%rbp),%rdi
call   1180 <line_strip@plt>
mov    -0x1468(%rbp),%rdi
mov    %eax,%esi
call   1060 <token_stream_add@plt>
mov    %eax,%edi
call   11b0 <interpretrc@plt>
mov    %eax,-0x4c(%rbp)
jmp    1b75 <main+0x835>
movl   $0x0,-0x4c(%rbp)
mov    -0x38(%rbp),%rdi
mov    $0x1,%esi
call   1220 <token_stream_advance@plt>
jmp    1b7a <main+0x83a>
jmp    1b7f <main+0x83f>
lea    -0x13f0(%rbp),%rax
mov    %rax,-0x1480(%rbp)
mov    -0x20(%rbp),%rax
mov    %rax,-0x1478(%rbp)
mov    -0x2c(%rbp),%eax
mov    %eax,-0x146c(%rbp)
mov    -0x4c(%rbp),%edi
call   1110 <mightbestats@plt>
mov    -0x1480(%rbp),%rdi
mov    -0x1478(%rbp),%rsi
mov    -0x146c(%rbp),%edx
mov    %eax,%ecx
call   1240 <myFputs@plt>
jmp    26da <main+0x139a>
lea    -0x13f0(%rbp),%rdi
call   1200 <line_isheading@plt>
cmp    $0x0,%eax
je     1bea <main+0x8aa>
movl   $0x4,-0x4c(%rbp)
jmp    1cf9 <main+0x9b9>
lea    -0x13f0(%rbp),%rdi
call   10e0 <line_isblank@plt>
cmp    $0x0,%eax
je     1c32 <main+0x8f2>
cmpl   $0x0,-0x13f4(%rbp)
jne    1c26 <main+0x8e6>
lea    0x17af(%rip),%rdi
mov    $0x0,%al
call   10c0 <printf@plt>
movl   $0x0,-0x4c(%rbp)
jmp    1c2d <main+0x8ed>
movl   $0x5,-0x4c(%rbp)
jmp    1cf4 <main+0x9b4>
lea    -0x13f0(%rbp),%rdi
call   1040 <line_is0rows@plt>
cmp    $0x0,%eax
je     1c53 <main+0x913>
movl   $0x0,-0x4c(%rbp)
jmp    1cef <main+0x9af>
lea    -0x13f0(%rbp),%rdi
call   11d0 <line_iserror@plt>
cmp    $0x0,%eax
je     1c74 <main+0x934>
movl   $0x0,-0x4c(%rbp)
jmp    1cea <main+0x9aa>
lea    -0x13f0(%rbp),%rdi
call   1070 <line_iswarning@plt>
cmp    $0x0,%eax
je     1c95 <main+0x955>
movl   $0x9,-0x4c(%rbp)
jmp    1ce5 <main+0x9a5>
lea    -0x13f0(%rbp),%rdi
call   1160 <line_isoptstats@plt>
cmp    $0x0,%eax
je     1cb6 <main+0x976>
movl   $0x8,-0x4c(%rbp)
jmp    1ce0 <main+0x9a0>
lea    0x16b2(%rip),%rdi
mov    $0x0,%al
call   10c0 <printf@plt>
lea    -0x13f0(%rbp),%rsi
lea    0x1600(%rip),%rdi
mov    $0x0,%al
call   10c0 <printf@plt>
movl   $0x0,-0x4c(%rbp)
jmp    1ce5 <main+0x9a5>
jmp    1cea <main+0x9aa>
jmp    1cef <main+0x9af>
jmp    1cf4 <main+0x9b4>
jmp    1cf9 <main+0x9b9>
lea    -0x13f0(%rbp),%rax
mov    %rax,-0x1498(%rbp)
mov    -0x20(%rbp),%rax
mov    %rax,-0x1490(%rbp)
mov    -0x2c(%rbp),%eax
mov    %eax,-0x1484(%rbp)
mov    -0x4c(%rbp),%edi
call   1110 <mightbestats@plt>
mov    -0x1498(%rbp),%rdi
mov    -0x1490(%rbp),%rsi
mov    -0x1484(%rbp),%edx
mov    %eax,%ecx
call   1240 <myFputs@plt>
jmp    26da <main+0x139a>
lea    -0x13f0(%rbp),%rdi
call   1120 <line_isunderline@plt>
cmp    $0x0,%eax
je     1d73 <main+0xa33>
mov    -0x13f4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x13f4(%rbp)
movl   $0x3,-0x4c(%rbp)
jmp    1d9d <main+0xa5d>
lea    0x1667(%rip),%rdi
mov    $0x0,%al
call   10c0 <printf@plt>
lea    -0x13f0(%rbp),%rsi
lea    0x1543(%rip),%rdi
mov    $0x0,%al
call   10c0 <printf@plt>
movl   $0x0,-0x4c(%rbp)
lea    -0x13f0(%rbp),%rax
mov    %rax,-0x14b0(%rbp)
mov    -0x20(%rbp),%rax
mov    %rax,-0x14a8(%rbp)
mov    -0x2c(%rbp),%eax
mov    %eax,-0x149c(%rbp)
mov    -0x4c(%rbp),%edi
call   1110 <mightbestats@plt>
mov    -0x14b0(%rbp),%rdi
mov    -0x14a8(%rbp),%rsi
mov    -0x149c(%rbp),%edx
mov    %eax,%ecx
call   1240 <myFputs@plt>
jmp    26da <main+0x139a>
lea    -0x13f0(%rbp),%rdi
call   1120 <line_isunderline@plt>
cmp    $0x0,%eax
je     1e17 <main+0xad7>
mov    -0x13f4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x13f4(%rbp)
movl   $0x3,-0x4c(%rbp)
jmp    1e31 <main+0xaf1>
movl   $0x0,-0x54(%rbp)
movl   $0x0,-0x58(%rbp)
movl   $0x6,-0x4c(%rbp)
jmp    1e80 <main+0xb40>
lea    -0x13f0(%rbp),%rax
mov    %rax,-0x14c8(%rbp)
mov    -0x20(%rbp),%rax
mov    %rax,-0x14c0(%rbp)
mov    -0x2c(%rbp),%eax
mov    %eax,-0x14b4(%rbp)
mov    -0x4c(%rbp),%edi
call   1110 <mightbestats@plt>
mov    -0x14c8(%rbp),%rdi
mov    -0x14c0(%rbp),%rsi
mov    -0x14b4(%rbp),%edx
mov    %eax,%ecx
call   1240 <myFputs@plt>
jmp    26da <main+0x139a>
jmp    1e80 <main+0xb40>
cmpl   $0x1,-0x54(%rbp)
jne    2021 <main+0xce1>
cmpl   $0x0,-0x58(%rbp)
je     2021 <main+0xce1>
lea    -0x13f0(%rbp),%rdi
call   1090 <line_isnnrows@plt>
cmp    $0x0,%eax
je     2021 <main+0xce1>
jmp    1eae <main+0xb6e>
mov    -0x40(%rbp),%rdi
call   11e0 <row_list_remove_min@plt>
mov    %rax,-0x1400(%rbp)
cmp    $0x0,%rax
je     1f45 <main+0xc05>
jmp    1ecd <main+0xb8d>
mov    -0x1400(%rbp),%rdi
call   1130 <row_remove@plt>
mov    %rax,-0x1408(%rbp)
cmp    $0x0,%rax
je     1f34 <main+0xbf4>
mov    -0x1408(%rbp),%rax
mov    %rax,-0x14e0(%rbp)
mov    -0x20(%rbp),%rax
mov    %rax,-0x14d8(%rbp)
mov    -0x2c(%rbp),%eax
mov    %eax,-0x14cc(%rbp)
mov    -0x4c(%rbp),%edi
call   1110 <mightbestats@plt>
mov    -0x14e0(%rbp),%rdi
mov    -0x14d8(%rbp),%rsi
mov    -0x14cc(%rbp),%edx
mov    %eax,%ecx
call   1240 <myFputs@plt>
jmp    1ecd <main+0xb8d>
mov    -0x1400(%rbp),%rdi
call   1140 <row_destroy@plt>
jmp    1eae <main+0xb6e>
mov    -0x48(%rbp),%rdi
call   1130 <row_remove@plt>
mov    %rax,-0x1408(%rbp)
mov    -0x1408(%rbp),%rax
mov    %rax,-0x1510(%rbp)
mov    -0x20(%rbp),%rax
mov    %rax,-0x1508(%rbp)
mov    -0x2c(%rbp),%eax
mov    %eax,-0x14fc(%rbp)
mov    -0x4c(%rbp),%edi
call   1110 <mightbestats@plt>
mov    -0x1510(%rbp),%rdi
mov    -0x1508(%rbp),%rsi
mov    -0x14fc(%rbp),%edx
mov    %eax,%ecx
call   1240 <myFputs@plt>
mov    -0x48(%rbp),%rdi
call   1140 <row_destroy@plt>
movq   $0x0,-0x48(%rbp)
movl   $0x0,-0x58(%rbp)
lea    -0x13f0(%rbp),%rax
mov    %rax,-0x14f8(%rbp)
mov    -0x20(%rbp),%rax
mov    %rax,-0x14f0(%rbp)
mov    -0x2c(%rbp),%eax
mov    %eax,-0x14e4(%rbp)
mov    -0x4c(%rbp),%edi
call   1110 <mightbestats@plt>
mov    -0x14f8(%rbp),%rdi
mov    -0x14f0(%rbp),%rsi
mov    -0x14e4(%rbp),%edx
mov    %eax,%ecx
call   1240 <myFputs@plt>
mov    -0x38(%rbp),%rdi
call   11a0 <token_stream_interesting@plt>
cmp    $0x0,%eax
je     2015 <main+0xcd5>
movl   $0x2,-0x4c(%rbp)
jmp    201c <main+0xcdc>
movl   $0x0,-0x4c(%rbp)
jmp    20a6 <main+0xd66>
mov    -0x54(%rbp),%eax
cmp    -0x13f4(%rbp),%eax
jne    204c <main+0xd0c>
mov    -0x40(%rbp),%rdi
mov    -0x48(%rbp),%rsi
call   1210 <row_list_add@plt>
movq   $0x0,-0x48(%rbp)
movl   $0x0,-0x54(%rbp)
cmpl   $0x0,-0x54(%rbp)
jne    208d <main+0xd4d>
lea    -0x13f0(%rbp),%rdi
call   10e0 <line_isblank@plt>
cmp    $0x0,%eax
je     2077 <main+0xd37>
movl   $0x1,-0x58(%rbp)
jmp    207e <main+0xd3e>
movl   $0x0,-0x58(%rbp)
mov    -0x13f4(%rbp),%edi
call   1030 <row_create@plt>
mov    %rax,-0x48(%rbp)
mov    -0x48(%rbp),%rdi
lea    -0x13f0(%rbp),%rsi
call   1080 <row_add@plt>
mov    -0x54(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x54(%rbp)
jmp    26da <main+0x139a>
lea    -0x13f0(%rbp),%rdi
call   10d0 <line_isignore@plt>
cmp    $0x0,%eax
je     20c6 <main+0xd86>
mov    -0x50(%rbp),%eax
mov    %eax,-0x4c(%rbp)
lea    -0x13f0(%rbp),%rax
mov    %rax,-0x1528(%rbp)
mov    -0x20(%rbp),%rax
mov    %rax,-0x1520(%rbp)
mov    -0x2c(%rbp),%eax
mov    %eax,-0x1514(%rbp)
mov    -0x4c(%rbp),%edi
call   1110 <mightbestats@plt>
mov    -0x1528(%rbp),%rdi
mov    -0x1520(%rbp),%rsi
mov    -0x1514(%rbp),%edx
mov    %eax,%ecx
call   1240 <myFputs@plt>
jmp    26da <main+0x139a>
lea    -0x13f0(%rbp),%rdi
call   10e0 <line_isblank@plt>
cmp    $0x0,%eax
je     2131 <main+0xdf1>
movl   $0x3,-0x4c(%rbp)
jmp    2175 <main+0xe35>
lea    -0x13f0(%rbp),%rdi
call   1160 <line_isoptstats@plt>
cmp    $0x0,%eax
jne    2170 <main+0xe30>
lea    0x12b9(%rip),%rdi
mov    $0x0,%al
call   10c0 <printf@plt>
lea    -0x13f0(%rbp),%rsi
lea    0x1170(%rip),%rdi
mov    $0x0,%al
call   10c0 <printf@plt>
movl   $0x0,-0x4c(%rbp)
jmp    2175 <main+0xe35>
lea    -0x13f0(%rbp),%rax
mov    %rax,-0x1540(%rbp)
mov    -0x20(%rbp),%rax
mov    %rax,-0x1538(%rbp)
mov    -0x2c(%rbp),%eax
mov    %eax,-0x152c(%rbp)
mov    -0x4c(%rbp),%edi
call   1110 <mightbestats@plt>
mov    -0x1540(%rbp),%rdi
mov    -0x1538(%rbp),%rsi
mov    -0x152c(%rbp),%edx
mov    %eax,%ecx
call   1240 <myFputs@plt>
jmp    26da <main+0x139a>
lea    -0x13f0(%rbp),%rdi
call   10e0 <line_isblank@plt>
cmp    $0x0,%eax
je     21e0 <main+0xea0>
movl   $0x3,-0x4c(%rbp)
jmp    2201 <main+0xec1>
lea    -0x13f0(%rbp),%rdi
call   1070 <line_iswarning@plt>
cmp    $0x0,%eax
jne    21fc <main+0xebc>
movl   $0x0,-0x4c(%rbp)
jmp    2201 <main+0xec1>
lea    -0x13f0(%rbp),%rax
mov    %rax,-0x1558(%rbp)
mov    -0x20(%rbp),%rax
mov    %rax,-0x1550(%rbp)
mov    -0x2c(%rbp),%eax
mov    %eax,-0x1544(%rbp)
mov    -0x4c(%rbp),%edi
call   1110 <mightbestats@plt>
mov    -0x1558(%rbp),%rdi
mov    -0x1550(%rbp),%rsi
mov    -0x1544(%rbp),%edx
mov    %eax,%ecx
call   1240 <myFputs@plt>
jmp    26da <main+0x139a>
lea    -0x13f0(%rbp),%rdi
call   1200 <line_isheading@plt>
cmp    $0x0,%eax
je     226c <main+0xf2c>
movl   $0xb,-0x4c(%rbp)
jmp    2308 <main+0xfc8>
lea    -0x13f0(%rbp),%rdi
call   1230 <line_issqloperationcomplete@plt>
cmp    $0x0,%eax
je     228d <main+0xf4d>
movl   $0x0,-0x4c(%rbp)
jmp    2303 <main+0xfc3>
lea    -0x13f0(%rbp),%rdi
call   11d0 <line_iserror@plt>
cmp    $0x0,%eax
je     22ae <main+0xf6e>
movl   $0x0,-0x4c(%rbp)
jmp    22fe <main+0xfbe>
lea    -0x13f0(%rbp),%rdi
call   1070 <line_iswarning@plt>
cmp    $0x0,%eax
je     22cf <main+0xf8f>
movl   $0x9,-0x4c(%rbp)
jmp    22f9 <main+0xfb9>
lea    0x10c4(%rip),%rdi
mov    $0x0,%al
call   10c0 <printf@plt>
lea    -0x13f0(%rbp),%rsi
lea    0xfe7(%rip),%rdi
mov    $0x0,%al
call   10c0 <printf@plt>
movl   $0x0,-0x4c(%rbp)
jmp    22fe <main+0xfbe>
jmp    2303 <main+0xfc3>
jmp    2308 <main+0xfc8>
lea    -0x13f0(%rbp),%rax
mov    %rax,-0x1570(%rbp)
mov    -0x20(%rbp),%rax
mov    %rax,-0x1568(%rbp)
mov    -0x2c(%rbp),%eax
mov    %eax,-0x155c(%rbp)
mov    -0x4c(%rbp),%edi
call   1110 <mightbestats@plt>
mov    -0x1570(%rbp),%rdi
mov    -0x1568(%rbp),%rsi
mov    -0x155c(%rbp),%edx
mov    %eax,%ecx
call   1240 <myFputs@plt>
jmp    26da <main+0x139a>
lea    -0x13f0(%rbp),%rdi
call   1170 <line_isgetheadingorfooting@plt>
cmp    $0x0,%eax
je     2382 <main+0x1042>
mov    -0x13f4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x13f4(%rbp)
movl   $0xc,-0x4c(%rbp)
jmp    241e <main+0x10de>
lea    -0x13f0(%rbp),%rdi
call   1040 <line_is0rows@plt>
cmp    $0x0,%eax
je     23a3 <main+0x1063>
movl   $0x0,-0x4c(%rbp)
jmp    2419 <main+0x10d9>
lea    -0x13f0(%rbp),%rdi
call   11d0 <line_iserror@plt>
cmp    $0x0,%eax
je     23c4 <main+0x1084>
movl   $0x0,-0x4c(%rbp)
jmp    2414 <main+0x10d4>
lea    -0x13f0(%rbp),%rdi
call   1070 <line_iswarning@plt>
cmp    $0x0,%eax
je     23e5 <main+0x10a5>
movl   $0x9,-0x4c(%rbp)
jmp    240f <main+0x10cf>
lea    0xfae(%rip),%rdi
mov    $0x0,%al
call   10c0 <printf@plt>
lea    -0x13f0(%rbp),%rsi
lea    0xed1(%rip),%rdi
mov    $0x0,%al
call   10c0 <printf@plt>
movl   $0x0,-0x4c(%rbp)
jmp    2414 <main+0x10d4>
jmp    2419 <main+0x10d9>
jmp    241e <main+0x10de>
lea    -0x13f0(%rbp),%rax
mov    %rax,-0x1588(%rbp)
mov    -0x20(%rbp),%rax
mov    %rax,-0x1580(%rbp)
mov    -0x2c(%rbp),%eax
mov    %eax,-0x1574(%rbp)
mov    -0x4c(%rbp),%edi
call   1110 <mightbestats@plt>
mov    -0x1588(%rbp),%rdi
mov    -0x1580(%rbp),%rsi
mov    -0x1574(%rbp),%edx
mov    %eax,%ecx
call   1240 <myFputs@plt>
jmp    26da <main+0x139a>
lea    -0x13f0(%rbp),%rdi
call   10e0 <line_isblank@plt>
cmp    $0x0,%eax
je     2490 <main+0x1150>
movl   $0xd,-0x4c(%rbp)
movl   $0x0,-0x54(%rbp)
jmp    24ba <main+0x117a>
lea    0xfa0(%rip),%rdi
mov    $0x0,%al
call   10c0 <printf@plt>
lea    -0x13f0(%rbp),%rsi
lea    0xe26(%rip),%rdi
mov    $0x0,%al
call   10c0 <printf@plt>
movl   $0x0,-0x4c(%rbp)
lea    -0x13f0(%rbp),%rax
mov    %rax,-0x15a0(%rbp)
mov    -0x20(%rbp),%rax
mov    %rax,-0x1598(%rbp)
mov    -0x2c(%rbp),%eax
mov    %eax,-0x158c(%rbp)
mov    -0x4c(%rbp),%edi
call   1110 <mightbestats@plt>
mov    -0x15a0(%rbp),%rdi
mov    -0x1598(%rbp),%rsi
mov    -0x158c(%rbp),%edx
mov    %eax,%ecx
call   1240 <myFputs@plt>
jmp    26da <main+0x139a>
lea    -0x13f0(%rbp),%rdi
call   10e0 <line_isblank@plt>
cmp    $0x0,%eax
je     2667 <main+0x1327>
cmpq   $0x0,-0x48(%rbp)
je     2539 <main+0x11f9>
mov    -0x40(%rbp),%rdi
mov    -0x48(%rbp),%rsi
call   1210 <row_list_add@plt>
movq   $0x0,-0x48(%rbp)
jmp    253e <main+0x11fe>
mov    -0x40(%rbp),%rdi
call   11e0 <row_list_remove_min@plt>
mov    %rax,-0x1410(%rbp)
cmp    $0x0,%rax
je     25d5 <main+0x1295>
jmp    255d <main+0x121d>
mov    -0x1410(%rbp),%rdi
call   1130 <row_remove@plt>
mov    %rax,-0x1418(%rbp)
cmp    $0x0,%rax
je     25c4 <main+0x1284>
mov    -0x1418(%rbp),%rax
mov    %rax,-0x15b8(%rbp)
mov    -0x20(%rbp),%rax
mov    %rax,-0x15b0(%rbp)
mov    -0x2c(%rbp),%eax
mov    %eax,-0x15a4(%rbp)
mov    -0x4c(%rbp),%edi
call   1110 <mightbestats@plt>
mov    -0x15b8(%rbp),%rdi
mov    -0x15b0(%rbp),%rsi
mov    -0x15a4(%rbp),%edx
mov    %eax,%ecx
call   1240 <myFputs@plt>
jmp    255d <main+0x121d>
mov    -0x1410(%rbp),%rdi
call   1140 <row_destroy@plt>
jmp    253e <main+0x11fe>
lea    -0x13f0(%rbp),%rax
mov    %rax,-0x15d0(%rbp)
mov    -0x20(%rbp),%rax
mov    %rax,-0x15c8(%rbp)
mov    -0x2c(%rbp),%eax
mov    %eax,-0x15bc(%rbp)
mov    -0x4c(%rbp),%edi
call   1110 <mightbestats@plt>
mov    -0x15d0(%rbp),%rdi
mov    -0x15c8(%rbp),%rsi
mov    -0x15bc(%rbp),%edx
mov    %eax,%ecx
call   1240 <myFputs@plt>
mov    -0x38(%rbp),%rdi
call   11a0 <token_stream_interesting@plt>
cmp    $0x0,%eax
je     2638 <main+0x12f8>
movl   $0x2,-0x4c(%rbp)
jmp    2662 <main+0x1322>
mov    -0x38(%rbp),%rdi
call   10b0 <token_stream_is_get@plt>
cmp    $0x0,%eax
je     2656 <main+0x1316>
movl   $0x2,-0x4c(%rbp)
jmp    265d <main+0x131d>
movl   $0x0,-0x4c(%rbp)
jmp    2662 <main+0x1322>
jmp    26c4 <main+0x1384>
mov    -0x54(%rbp),%eax
cmp    -0x13f4(%rbp),%eax
jne    2692 <main+0x1352>
mov    -0x40(%rbp),%rdi
mov    -0x48(%rbp),%rsi
call   1210 <row_list_add@plt>
movq   $0x0,-0x48(%rbp)
movl   $0x0,-0x54(%rbp)
cmpl   $0x0,-0x54(%rbp)
jne    26ab <main+0x136b>
mov    -0x13f4(%rbp),%edi
call   1030 <row_create@plt>
mov    %rax,-0x48(%rbp)
mov    -0x48(%rbp),%rdi
lea    -0x13f0(%rbp),%rsi
call   1080 <row_add@plt>
mov    -0x54(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x54(%rbp)
jmp    26da <main+0x139a>
mov    -0x4c(%rbp),%esi
lea    0xd89(%rip),%rdi
mov    $0x0,%al
call   10c0 <printf@plt>
jmp    151c <main+0x1dc>
mov    -0x18(%rbp),%rdi
call   10a0 <fclose@plt>
mov    -0x20(%rbp),%rdi
call   10a0 <fclose@plt>
jmp    26f6 <main+0x13b6>
jmp    26fb <main+0x13bb>
xor    %eax,%eax
add    $0x15d0,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x13e8,%rsp
mov    %rsi,%rbp
movl   $0x0,0x44(%rsp)
movl   $0x0,0x2c(%rsp)
movl   $0x0,0xc(%rsp)
lea    -0x5(%rdi),%eax
cmp    $0xfffffffe,%eax
jae    1435 <main+0xe5>
mov    0x0(%rbp),%rsi
lea    0xca5(%rip),%rdi
xor    %eax,%eax
call   10d0 <printf@plt>
lea    0xcc9(%rip),%rdi
xor    %eax,%eax
call   10d0 <printf@plt>
lea    0xcf2(%rip),%rdi
xor    %eax,%eax
call   10d0 <printf@plt>
lea    0x1048(%rip),%rdi
call   1070 <puts@plt>
mov    0x0(%rbp),%rsi
lea    0xd0e(%rip),%rdi
xor    %eax,%eax
call   10d0 <printf@plt>
lea    0xd3b(%rip),%rdi
xor    %eax,%eax
call   10d0 <printf@plt>
lea    0xd6c(%rip),%rdi
xor    %eax,%eax
call   10d0 <printf@plt>
lea    0x101b(%rip),%rdi
call   1070 <puts@plt>
lea    0xd8c(%rip),%rdi
xor    %eax,%eax
call   10d0 <printf@plt>
lea    0x100f(%rip),%rdi
call   1070 <puts@plt>
lea    0xdb2(%rip),%rdi
xor    %eax,%eax
call   10d0 <printf@plt>
lea    0x100c(%rip),%rdi
call   1070 <puts@plt>
jmp    1f88 <main+0xc38>
cmp    $0x4,%edi
jne    145a <main+0x10a>
mov    0x18(%rbp),%rdi
lea    0x2c(%rsp),%rsi
lea    0x44(%rsp),%rdx
lea    0xc(%rsp),%rcx
call   1160 <checkoptions@plt>
test   %eax,%eax
je     1388 <main+0x38>
mov    0x8(%rbp),%rdi
lea    0xda9(%rip),%rsi
call   11a0 <fopen@plt>
test   %rax,%rax
je     14e5 <main+0x195>
mov    %rax,%r15
mov    0x10(%rbp),%rdi
lea    0xdb7(%rip),%rsi
call   11a0 <fopen@plt>
test   %rax,%rax
je     14fc <main+0x1ac>
mov    %rax,%rbx
mov    0x44(%rsp),%edi
call   1260 <token_stream_create@plt>
mov    %rax,0x30(%rsp)
xor    %eax,%eax
call   1200 <row_list_create@plt>
mov    %rax,%rbp
lea    0x50(%rsp),%rdi
mov    $0x1388,%esi
mov    %r15,%rdx
call   1100 <fgets@plt>
test   %rax,%rax
je     1f78 <main+0xc28>
lea    0xda4(%rip),%r13
lea    0x50(%rsp),%r14
xor    %eax,%eax
mov    %rax,0x20(%rsp)
xor    %r12d,%r12d
movl   $0x0,0x18(%rsp)
mov    %rax,0x48(%rsp)
jmp    1589 <main+0x239>
mov    0x8(%rbp),%rsi
lea    0xd20(%rip),%rdi
xor    %eax,%eax
call   10d0 <printf@plt>
jmp    1f88 <main+0xc38>
mov    0x10(%rbp),%rsi
lea    0xd2f(%rip),%rdi
xor    %eax,%eax
call   10d0 <printf@plt>
mov    %r15,%rdi
jmp    1f83 <main+0xc33>
call   1070 <puts@plt>
xor    %r12d,%r12d
lea    0xd40(%rip),%rdi
mov    %r14,%rsi
xor    %eax,%eax
call   10d0 <printf@plt>
mov    %rbx,%rbp
mov    0x30(%rsp),%rdi
mov    $0x1,%esi
call   1230 <token_stream_advance@plt>
movl   $0x0,0x18(%rsp)
mov    0xc(%rsp),%ebx
mov    %r12d,%edi
call   1120 <mightbestats@plt>
mov    %r14,%rdi
mov    %rbp,%rsi
mov    %ebx,%edx
mov    %rbp,%rbx
mov    %eax,%ecx
call   1250 <myFputs@plt>
mov    0x10(%rsp),%rbp
nopl   0x0(%rax)
mov    %r14,%rdi
mov    $0x1388,%esi
mov    %r15,%rdx
call   1100 <fgets@plt>
test   %rax,%rax
je     1f78 <main+0xc28>
cmpl   $0x0,0x2c(%rsp)
je     15b2 <main+0x262>
lea    0xcc4(%rip),%rdi
mov    %r12d,%esi
xor    %eax,%eax
call   10d0 <printf@plt>
lea    0xcbd(%rip),%rdi
mov    %r14,%rsi
xor    %eax,%eax
call   10d0 <printf@plt>
mov    %r14,%rdi
mov    %r13,%rsi
mov    $0x33,%edx
call   1050 <strncmp@plt>
test   %rax,%rax
je     1570 <main+0x220>
mov    %r14,%rdi
lea    0xccd(%rip),%rsi
mov    $0x1c,%edx
call   1050 <strncmp@plt>
test   %rax,%rax
je     1570 <main+0x220>
mov    %r14,%rdi
lea    0xcb2(%rip),%rsi
mov    $0x1e,%edx
call   1050 <strncmp@plt>
test   %rax,%rax
je     1570 <main+0x220>
mov    %r14,%rdi
lea    0xcc7(%rip),%rsi
mov    $0x11,%edx
call   1050 <strncmp@plt>
test   %rax,%rax
je     1650 <main+0x300>
mov    %r14,%rdi
lea    0xc9b(%rip),%rsi
mov    $0x10,%edx
call   1050 <strncmp@plt>
test   %rax,%rax
je     1650 <main+0x300>
mov    %r14,%rdi
lea    0xc93(%rip),%rsi
mov    $0x13,%edx
call   1050 <strncmp@plt>
test   %rax,%rax
jne    16dd <main+0x38d>
nopl   0x0(%rax)
mov    %r14,%rdi
mov    $0x1388,%esi
mov    %r15,%rdx
call   1100 <fgets@plt>
test   %rax,%rax
je     16dd <main+0x38d>
cmpl   $0x0,0x2c(%rsp)
je     168e <main+0x33e>
lea    0xbe8(%rip),%rdi
mov    %r12d,%esi
xor    %eax,%eax
call   10d0 <printf@plt>
lea    0xbe1(%rip),%rdi
mov    %r14,%rsi
xor    %eax,%eax
call   10d0 <printf@plt>
mov    %r14,%rdi
lea    0xc48(%rip),%rsi
mov    $0xa,%edx
call   1050 <strncmp@plt>
test   %rax,%rax
je     16dd <main+0x38d>
mov    %r14,%rdi
lea    0xc3c(%rip),%rsi
mov    $0x3,%edx
call   1050 <strncmp@plt>
test   %rax,%rax
je     16dd <main+0x38d>
mov    %r14,%rdi
lea    0xc21(%rip),%rsi
mov    $0x5,%edx
call   1050 <strncmp@plt>
test   %rax,%rax
jne    1650 <main+0x300>
mov    %r14,%rdi
lea    0xc0a(%rip),%rsi
mov    $0x5,%edx
call   1050 <strncmp@plt>
test   %rax,%rax
je     1774 <main+0x424>
mov    %r14,%rdi
lea    0xbf7(%rip),%rsi
mov    $0xa,%edx
call   1050 <strncmp@plt>
test   %rax,%rax
je     1774 <main+0x424>
cmp    $0xd,%r12d
ja     17b4 <main+0x464>
mov    %r12d,%eax
lea    0x8dd(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
mov    %r14,%rdi
call   10e0 <line_isignore@plt>
test   %eax,%eax
mov    %rbp,0x10(%rsp)
je     1c0e <main+0x8be>
mov    %rbx,%rbp
mov    $0x7,%r12d
movl   $0x0,0x40(%rsp)
jmp    1549 <main+0x1f9>
nopw   0x0(%rax,%rax,1)
mov    %r14,%rdi
lea    0x8fe(%rip),%rsi
call   1110 <strcmp@plt>
test   %rax,%rax
je     170f <main+0x3bf>
mov    %r14,%rdi
mov    $0x1388,%esi
mov    %r15,%rdx
call   1100 <fgets@plt>
test   %rax,%rax
je     170f <main+0x3bf>
cmpl   $0x0,0x2c(%rsp)
je     1760 <main+0x410>
lea    0xac4(%rip),%rdi
mov    %r12d,%esi
xor    %eax,%eax
call   10d0 <printf@plt>
lea    0xabd(%rip),%rdi
mov    %r14,%rsi
xor    %eax,%eax
call   10d0 <printf@plt>
jmp    1760 <main+0x410>
lea    0xb78(%rip),%rdi
mov    %r12d,%esi
xor    %eax,%eax
call   10d0 <printf@plt>
jmp    1570 <main+0x220>
mov    %r14,%rdi
call   10e0 <line_isignore@plt>
test   %eax,%eax
mov    %rbp,0x10(%rsp)
je     1c25 <main+0x8d5>
mov    %rbx,%rbp
mov    $0x7,%r12d
movl   $0x1,0x40(%rsp)
jmp    1549 <main+0x1f9>
mov    0x30(%rsp),%r12
mov    %r12,%rdi
call   11b0 <token_stream_interesting@plt>
test   %eax,%eax
mov    %rbp,0x10(%rsp)
je     1c5b <main+0x90b>
mov    %r14,%rdi
call   10f0 <line_isblank@plt>
mov    $0x3,%r12d
test   %eax,%eax
jne    152f <main+0x1df>
mov    %r14,%rdi
call   1040 <line_is0rows@plt>
xor    %r12d,%r12d
test   %eax,%eax
jne    152f <main+0x1df>
mov    %r14,%rdi
call   11e0 <line_iserror@plt>
test   %eax,%eax
jne    152f <main+0x1df>
lea    0xb8c(%rip),%rdi
jmp    1516 <main+0x1c6>
mov    %rbp,0x10(%rsp)
mov    %rbx,%rbp
mov    %r14,%rdi
call   1210 <line_isheading@plt>
mov    $0x4,%r12d
test   %eax,%eax
jne    1549 <main+0x1f9>
mov    %r14,%rdi
call   10f0 <line_isblank@plt>
test   %eax,%eax
je     1ea8 <main+0xb58>
mov    $0x5,%r12d
cmpl   $0x0,0x18(%rsp)
jne    1549 <main+0x1f9>
lea    0xafc(%rip),%rdi
call   1070 <puts@plt>
xor    %r12d,%r12d
jmp    1549 <main+0x1f9>
mov    %rbp,0x10(%rsp)
mov    %r14,%rdi
call   1130 <line_isunderline@plt>
mov    %rbx,%rbp
test   %eax,%eax
je     1cb0 <main+0x960>
addl   $0x1,0x18(%rsp)
mov    $0x3,%r12d
jmp    1549 <main+0x1f9>
mov    %r14,%rdi
call   1130 <line_isunderline@plt>
test   %eax,%eax
je     1cbc <main+0x96c>
addl   $0x1,0x18(%rsp)
mov    %rbp,0x10(%rsp)
mov    0xc(%rsp),%ebp
mov    $0x3,%r12d
mov    $0x3,%edi
call   1120 <mightbestats@plt>
mov    %r14,%rdi
mov    %rbx,%rsi
mov    %ebp,%edx
mov    0x10(%rsp),%rbp
jmp    19f8 <main+0x6a8>
mov    0x1c(%rsp),%ecx
cmp    $0x1,%ecx
mov    0x48(%rsp),%rax
jne    1cc0 <main+0x970>
test   %eax,%eax
je     1cc0 <main+0x970>
mov    %r14,%rdi
call   10a0 <line_isnnrows@plt>
test   %eax,%eax
je     1e55 <main+0xb05>
mov    %rbx,0x38(%rsp)
mov    %rbp,0x10(%rsp)
mov    %rbp,%rdi
call   11f0 <row_list_remove_min@plt>
test   %rax,%rax
je     1d93 <main+0xa43>
mov    %rax,%r12
jmp    1977 <main+0x627>
mov    %r12,%rdi
call   1150 <row_destroy@plt>
mov    0x10(%rsp),%rdi
call   11f0 <row_list_remove_min@plt>
mov    %rax,%r12
test   %rax,%rax
je     1d93 <main+0xa43>
mov    %r12,%rdi
call   1140 <row_remove@plt>
test   %rax,%rax
mov    0x38(%rsp),%r13
je     1959 <main+0x609>
mov    %rax,%rbp
nopl   0x0(%rax)
mov    0xc(%rsp),%ebx
mov    $0x6,%edi
call   1120 <mightbestats@plt>
mov    %rbp,%rdi
mov    %r13,%rsi
mov    %ebx,%edx
mov    %eax,%ecx
call   1250 <myFputs@plt>
mov    %r12,%rdi
call   1140 <row_remove@plt>
mov    %rax,%rbp
test   %rax,%rax
jne    1990 <main+0x640>
jmp    1959 <main+0x609>
mov    %r14,%rdi
call   10e0 <line_isignore@plt>
test   %eax,%eax
mov    0x40(%rsp),%r12d
mov    $0x7,%eax
cmove  %eax,%r12d
mov    %rbp,%r13
mov    0xc(%rsp),%ebp
mov    %r12d,%edi
call   1120 <mightbestats@plt>
mov    %r14,%rdi
mov    %rbx,%rsi
mov    %ebp,%edx
mov    %r13,%rbp
lea    0x870(%rip),%r13
mov    %eax,%ecx
call   1250 <myFputs@plt>
jmp    1570 <main+0x220>
mov    %rbp,0x10(%rsp)
mov    %rbx,%rbp
mov    %r14,%rdi
call   10f0 <line_isblank@plt>
mov    $0x3,%r12d
test   %eax,%eax
jne    1549 <main+0x1f9>
mov    %r14,%rdi
call   1170 <line_isoptstats@plt>
mov    $0x8,%r12d
test   %eax,%eax
jne    1549 <main+0x1f9>
xor    %r12d,%r12d
lea    0x8c0(%rip),%rdi
xor    %eax,%eax
call   10d0 <printf@plt>
jmp    1d5d <main+0xa0d>
mov    %rbp,0x10(%rsp)
mov    %rbx,%rbp
mov    %r14,%rdi
call   10f0 <line_isblank@plt>
mov    $0x3,%r12d
test   %eax,%eax
jne    1549 <main+0x1f9>
mov    %r14,%rdi
call   1080 <line_iswarning@plt>
xor    %ecx,%ecx
test   %eax,%eax
setne  %cl
lea    (%rcx,%rcx,8),%r12d
jmp    1549 <main+0x1f9>
mov    %rbp,0x10(%rsp)
mov    %rbx,%rbp
mov    %r14,%rdi
call   1210 <line_isheading@plt>
mov    $0xb,%r12d
test   %eax,%eax
jne    1549 <main+0x1f9>
mov    %r14,%rdi
call   1240 <line_issqloperationcomplete@plt>
xor    %r12d,%r12d
test   %eax,%eax
jne    1549 <main+0x1f9>
mov    %r14,%rdi
call   11e0 <line_iserror@plt>
test   %eax,%eax
jne    1549 <main+0x1f9>
mov    %r14,%rdi
call   1080 <line_iswarning@plt>
mov    $0x9,%r12d
jmp    1f4f <main+0xbff>
mov    %r14,%rdi
call   1180 <line_isgetheadingorfooting@plt>
test   %eax,%eax
mov    %rbp,0x10(%rsp)
je     1d27 <main+0x9d7>
mov    %rbx,%rbp
addl   $0x1,0x18(%rsp)
mov    $0xc,%r12d
jmp    1549 <main+0x1f9>
mov    %rbp,0x10(%rsp)
mov    %r14,%rdi
call   10f0 <line_isblank@plt>
mov    %rbx,%rbp
test   %eax,%eax
je     1d4e <main+0x9fe>
mov    $0xd,%r12d
movl   $0x0,0x1c(%rsp)
jmp    1549 <main+0x1f9>
mov    %r14,%rdi
call   10f0 <line_isblank@plt>
test   %eax,%eax
je     1d73 <main+0xa23>
mov    0x20(%rsp),%rsi
test   %rsi,%rsi
je     1b4d <main+0x7fd>
mov    %rbp,%rdi
call   1220 <row_list_add@plt>
mov    %rbx,0x38(%rsp)
mov    %rbp,%rdi
call   11f0 <row_list_remove_min@plt>
test   %rax,%rax
je     1bcf <main+0x87f>
mov    %rax,%r12
mov    %rbp,0x10(%rsp)
jmp    1b86 <main+0x836>
mov    %r12,%rdi
call   1150 <row_destroy@plt>
mov    0x10(%rsp),%rbp
mov    %rbp,%rdi
call   11f0 <row_list_remove_min@plt>
mov    %rax,%r12
test   %rax,%rax
je     1bcf <main+0x87f>
mov    %r12,%rdi
call   1140 <row_remove@plt>
test   %rax,%rax
mov    0x38(%rsp),%r13
je     1b69 <main+0x819>
mov    %rax,%rbp
nopl   0x0(%rax,%rax,1)
mov    0xc(%rsp),%ebx
mov    $0xd,%edi
call   1120 <mightbestats@plt>
mov    %rbp,%rdi
mov    %r13,%rsi
mov    %ebx,%edx
mov    %eax,%ecx
call   1250 <myFputs@plt>
mov    %r12,%rdi
call   1140 <row_remove@plt>
mov    %rax,%rbp
test   %rax,%rax
jne    1ba0 <main+0x850>
jmp    1b69 <main+0x819>
mov    0xc(%rsp),%ebx
mov    $0xd,%edi
call   1120 <mightbestats@plt>
mov    %r14,%rdi
mov    0x38(%rsp),%rsi
mov    %ebx,%edx
mov    %eax,%ecx
call   1250 <myFputs@plt>
mov    0x30(%rsp),%rbx
mov    %rbx,%rdi
call   11b0 <token_stream_interesting@plt>
test   %eax,%eax
je     1e29 <main+0xad9>
mov    $0x2,%r12d
jmp    1e3d <main+0xaed>
mov    %r14,%rdi
call   11d0 <line_isstmt@plt>
mov    %rbx,%rbp
test   %eax,%eax
jne    1c38 <main+0x8e8>
xor    %r12d,%r12d
jmp    1549 <main+0x1f9>
mov    %r14,%rdi
call   11d0 <line_isstmt@plt>
mov    %rbx,%rbp
test   %eax,%eax
je     1f03 <main+0xbb3>
mov    %r14,%rdi
call   1190 <line_strip@plt>
mov    0x30(%rsp),%rdi
mov    %eax,%esi
call   1060 <token_stream_add@plt>
mov    %eax,%edi
call   11c0 <interpretrc@plt>
mov    %eax,%r12d
jmp    1549 <main+0x1f9>
mov    %r12,%rdi
call   10c0 <token_stream_is_get@plt>
mov    %r14,%rdi
test   %eax,%eax
je     1f15 <main+0xbc5>
call   10f0 <line_isblank@plt>
mov    $0xa,%r12d
test   %eax,%eax
jne    152f <main+0x1df>
mov    %r14,%rdi
call   1040 <line_is0rows@plt>
xor    %r12d,%r12d
test   %eax,%eax
jne    152f <main+0x1df>
mov    %r14,%rdi
call   11e0 <line_iserror@plt>
test   %eax,%eax
jne    152f <main+0x1df>
lea    0x709(%rip),%rdi
jmp    1516 <main+0x1c6>
lea    0x6bb(%rip),%rdi
jmp    1d55 <main+0xa05>
xor    %eax,%eax
xor    %ecx,%ecx
cmp    0x18(%rsp),%ecx
mov    0x20(%rsp),%rsi
jne    1cd5 <main+0x985>
mov    %rbp,%rdi
call   1220 <row_list_add@plt>
jmp    1cde <main+0x98e>
mov    %rax,0x48(%rsp)
test   %ecx,%ecx
jne    1d00 <main+0x9b0>
mov    %r14,%rdi
call   10f0 <line_isblank@plt>
xor    %ecx,%ecx
test   %eax,%eax
setne  %cl
mov    %rcx,0x48(%rsp)
mov    0x18(%rsp),%edi
call   1030 <row_create@plt>
mov    %rax,%rsi
xor    %ecx,%ecx
mov    %rsi,0x20(%rsp)
mov    %rsi,%rdi
mov    %r14,%rsi
mov    %ecx,%r12d
call   1090 <row_add@plt>
add    $0x1,%r12d
mov    %r12d,0x1c(%rsp)
mov    $0x6,%r12d
jmp    1570 <main+0x220>
mov    %r14,%rdi
call   1040 <line_is0rows@plt>
xor    %r12d,%r12d
test   %eax,%eax
jne    1d46 <main+0x9f6>
mov    %r14,%rdi
call   11e0 <line_iserror@plt>
test   %eax,%eax
je     1f3e <main+0xbee>
mov    %rbx,%rbp
jmp    1549 <main+0x1f9>
lea    0x5f9(%rip),%rdi
call   1070 <puts@plt>
xor    %r12d,%r12d
lea    0x501(%rip),%rdi
mov    %r14,%rsi
xor    %eax,%eax
call   10d0 <printf@plt>
jmp    1549 <main+0x1f9>
mov    0x1c(%rsp),%eax
cmp    0x18(%rsp),%eax
mov    0x20(%rsp),%rsi
jne    1e6f <main+0xb1f>
mov    %rbp,%rdi
call   1220 <row_list_add@plt>
jmp    1e73 <main+0xb23>
mov    0x20(%rsp),%rbp
mov    %rbp,%rdi
call   1140 <row_remove@plt>
mov    %rax,%rbx
mov    0xc(%rsp),%r12d
mov    $0x6,%edi
call   1120 <mightbestats@plt>
mov    %rbx,%rdi
mov    0x38(%rsp),%rbx
mov    %rbx,%rsi
mov    %r12d,%edx
mov    %eax,%ecx
call   1250 <myFputs@plt>
mov    %rbp,%rdi
call   1150 <row_destroy@plt>
mov    0xc(%rsp),%ebp
mov    $0x6,%edi
call   1120 <mightbestats@plt>
mov    %r14,%rdi
mov    %rbx,%rsi
mov    %ebp,%edx
mov    %eax,%ecx
call   1250 <myFputs@plt>
mov    0x30(%rsp),%rdi
call   11b0 <token_stream_interesting@plt>
xor    %r12d,%r12d
test   %eax,%eax
setne  %r12b
add    %r12d,%r12d
xor    %eax,%eax
mov    %rax,0x48(%rsp)
movl   $0x1,0x1c(%rsp)
xor    %eax,%eax
mov    %rax,0x20(%rsp)
mov    0x10(%rsp),%rbp
lea    0x444(%rip),%r13
jmp    1570 <main+0x220>
mov    %rbx,%rdi
call   10c0 <token_stream_is_get@plt>
xor    %r12d,%r12d
test   %eax,%eax
setne  %r12b
add    %r12d,%r12d
xor    %eax,%eax
mov    %rax,0x20(%rsp)
mov    0x38(%rsp),%rbx
lea    0x418(%rip),%r13
jmp    1570 <main+0x220>
mov    $0x1,%ecx
cmpl   $0x1,0x18(%rsp)
mov    0x20(%rsp),%rsi
je     1ccb <main+0x97b>
jmp    1d00 <main+0x9b0>
test   %eax,%eax
jne    1e81 <main+0xb31>
mov    0x18(%rsp),%edi
call   1030 <row_create@plt>
mov    %rax,%rsi
xor    %eax,%eax
mov    %rsi,0x20(%rsp)
mov    %rsi,%rdi
mov    %r14,%rsi
mov    %eax,%r12d
call   1090 <row_add@plt>
add    $0x1,%r12d
mov    %r12d,0x1c(%rsp)
mov    $0xd,%r12d
jmp    1570 <main+0x220>
mov    %r14,%rdi
call   1040 <line_is0rows@plt>
xor    %r12d,%r12d
test   %eax,%eax
jne    1549 <main+0x1f9>
mov    %r14,%rdi
call   11e0 <line_iserror@plt>
test   %eax,%eax
jne    1549 <main+0x1f9>
mov    %r14,%rdi
call   1080 <line_iswarning@plt>
mov    $0x9,%r12d
test   %eax,%eax
jne    1549 <main+0x1f9>
mov    %r14,%rdi
call   1170 <line_isoptstats@plt>
mov    $0x8,%r12d
test   %eax,%eax
jne    1549 <main+0x1f9>
lea    0x4dd(%rip),%rdi
jmp    1d55 <main+0xa05>
mov    0x30(%rsp),%rdi
call   1270 <token_stream_clear@plt>
xor    %r12d,%r12d
jmp    1549 <main+0x1f9>
call   11d0 <line_isstmt@plt>
mov    %rbx,%rbp
test   %eax,%eax
je     1f63 <main+0xc13>
mov    %r12,%rdi
mov    $0xffffffff,%esi
call   1230 <token_stream_advance@plt>
mov    %r14,%rdi
call   1190 <line_strip@plt>
mov    %r12,%rdi
jmp    1c45 <main+0x8f5>
mov    %r14,%rdi
call   1080 <line_iswarning@plt>
mov    $0x9,%r12d
mov    %rbx,%rbp
test   %eax,%eax
jne    1549 <main+0x1f9>
lea    0x456(%rip),%rdi
jmp    1d55 <main+0xa05>
mov    %r12,%rdi
mov    $0x1,%esi
call   1230 <token_stream_advance@plt>
xor    %r12d,%r12d
jmp    1549 <main+0x1f9>
mov    %r15,%rdi
call   10b0 <fclose@plt>
mov    %rbx,%rdi
call   10b0 <fclose@plt>
xor    %eax,%eax
add    $0x13e8,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

LLVM IR (-O0):
%struct.token_stream = type { i32 }
%struct.row_list = type { i32 }
%struct.row = type { i32 }
@.str = [50 x i8] c"\0AUsage: %s <in-file> <out-file> [-[d][i][s]] \0A\00"
@.str.1 = [55 x i8] c"\0Awhere <in-file> is a SQLCI actual results file to be \00"
@.str.2 = [58 x i8] c"transformed. The\0Atransformed results will be written to \00"
@.str.3 = [14 x i8] c"<out-file>.\0A\0A\00"
@.str.4 = [59 x i8] c"The -i option tells %s to sort output from *all*\0Aselects, \00"
@.str.5 = [63 x i8] c"not just those without order by clauses. This should be used \00"
@.str.6 = [58 x i8] c"with\0Acare, since the correctness of the results could be \00"
@.str.7 = [15 x i8] c"compromised.\0A\0A\00"
@.str.8 = [64 x i8] c"The -d option is a debug option: If specified, internal parse \00"
@.str.9 = [24 x i8] c"states are\0Adisplayed.\0A\0A\00"
@.str.10 = [63 x i8] c"The -s option tells logsort to strip out statistics generated \00"
@.str.11 = [56 x i8] c"by DISPLAY\0ASTATISTICS and by the Trafodion optimizer.\0A\0A\00"
@.str.12 = [2 x i8] c"r\00"
@.str.13 = [36 x i8] c"\0A*** Could not open input file %s.\0A\00"
@.str.14 = [2 x i8] c"w\00"
@.str.15 = [37 x i8] c"\0A*** Could not open output file %s.\0A\00"
@.str.16 = [10 x i8] c"State %d\0A\00"
@.str.17 = [3 x i8] c"%s\00"
@.str.18 = [52 x i8] c" ATTRIBUTES EXTENT (51200, 102400), MAXEXTENTS 768\00"
@.str.19 = [29 x i8] c" ATTRIBUTES BLOCKSIZE 32768\00"
@.str.20 = [31 x i8] c"-- ATTRIBUTES BLOCKSIZE 32768\00"
@.str.21 = [18 x i8] c" HASH2 PARTITION\00"
@.str.22 = [17 x i8] c" HASH PARTITION\00"
@.str.23 = [20 x i8] c"-- HASH2 PARTITION\00"
@.str.24 = [11 x i8] c" STORE BY\00"
@.str.25 = [4 x i8] c" ;\00"
@.str.26 = [6 x i8] c"-- ;\00"
@.str.27 = [6 x i8] c"DISK-\00"
@.str.28 = [11 x i8] c"Partition[\00"
@.str.29 = [2 x i8] c"\0A\00"
@.str.30 = [43 x i8] c"Unexpected line after a SELECT statement:\0A\00"
@.str.31 = [40 x i8] c"Unexpected line after a GET statement:\0A\00"
@.str.32 = [31 x i8] c"Heading missing after SELECT.\0A\00"
@.str.33 = [37 x i8] c"Unexpected line after heading line:\0A\00"
@.str.34 = [49 x i8] c"Unexpected line after Trafodion Optimizer stats:\00"
@.str.35 = [37 x i8] c"Unexpected line after a GET header:\0A\00"
@.str.36 = [27 x i8] c"Error: got bad state %d.\0A\00"
define i32 @main(i32 %0, i8** %1) {
%3 = alloca i32
%4 = alloca i32
%5 = alloca i8**
%6 = alloca i32*
%7 = alloca i32*
%8 = alloca i32
%9 = alloca i32
%10 = alloca i32
%11 = alloca %struct.token_stream*
%12 = alloca %struct.row_list*
%13 = alloca %struct.row*
%14 = alloca i32
%15 = alloca i32
%16 = alloca i32
%17 = alloca i32
%18 = alloca [5001 x i8]
%19 = alloca i32
%20 = alloca %struct.row*
%21 = alloca i8*
%22 = alloca %struct.row*
%23 = alloca i8*
store i32 0, i32* %3
store i32 %0, i32* %4
store i8** %1, i8*** %5
store i32 0, i32* %8
store i32 0, i32* %9
store i32 0, i32* %10
%24 = load i32, i32* %4
%25 = icmp slt i32 %24, 3
br i1 %25, label %38, label %26
26: ; preds = %2
%27 = load i32, i32* %4
%28 = icmp sgt i32 %27, 4
br i1 %28, label %38, label %29
29: ; preds = %26
%30 = load i32, i32* %4
%31 = icmp eq i32 %30, 4
br i1 %31, label %32, label %57
32: ; preds = %29
%33 = load i8**, i8*** %5
%34 = getelementptr inbounds i8*, i8** %33, i64 3
%35 = load i8*, i8** %34
%36 = call i32 @checkoptions(i8* %35, i32* %9, i32* %8, i32* %10)
%37 = icmp ne i32 %36, 0
br i1 %37, label %57, label %38
38: ; preds = %32, %26, %2
%39 = load i8**, i8*** %5
%40 = getelementptr inbounds i8*, i8** %39, i64 0
%41 = load i8*, i8** %40
%42 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([50 x i8], [50 x i8]* @.str, i64 0, i64 0), i8* %41)
%43 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([55 x i8], [55 x i8]* @.str.1, i64 0, i64 0))
%44 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([58 x i8], [58 x i8]* @.str.2, i64 0, i64 0))
%45 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.3, i64 0, i64 0))
%46 = load i8**, i8*** %5
%47 = getelementptr inbounds i8*, i8** %46, i64 0
%48 = load i8*, i8** %47
%49 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([59 x i8], [59 x i8]* @.str.4, i64 0, i64 0), i8* %48)
%50 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([63 x i8], [63 x i8]* @.str.5, i64 0, i64 0))
%51 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([58 x i8], [58 x i8]* @.str.6, i64 0, i64 0))
%52 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.7, i64 0, i64 0))
%53 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([64 x i8], [64 x i8]* @.str.8, i64 0, i64 0))
%54 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str.9, i64 0, i64 0))
%55 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([63 x i8], [63 x i8]* @.str.10, i64 0, i64 0))
%56 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([56 x i8], [56 x i8]* @.str.11, i64 0, i64 0))
br label %700
57: ; preds = %32, %29
%58 = load i8**, i8*** %5
%59 = getelementptr inbounds i8*, i8** %58, i64 1
%60 = load i8*, i8** %59
%61 = call i32* @fopen(i8* %60, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.12, i64 0, i64 0))
store i32* %61, i32** %6
%62 = icmp eq i32* %61, null
br i1 %62, label %63, label %68
63: ; preds = %57
%64 = load i8**, i8*** %5
%65 = getelementptr inbounds i8*, i8** %64, i64 1
%66 = load i8*, i8** %65
%67 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([36 x i8], [36 x i8]* @.str.13, i64 0, i64 0), i8* %66)
br label %699
68: ; preds = %57
%69 = load i8**, i8*** %5
%70 = getelementptr inbounds i8*, i8** %69, i64 2
%71 = load i8*, i8** %70
%72 = call i32* @fopen(i8* %71, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.14, i64 0, i64 0))
store i32* %72, i32** %7
%73 = icmp eq i32* %72, null
br i1 %73, label %74, label %81
74: ; preds = %68
%75 = load i8**, i8*** %5
%76 = getelementptr inbounds i8*, i8** %75, i64 2
%77 = load i8*, i8** %76
%78 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([37 x i8], [37 x i8]* @.str.15, i64 0, i64 0), i8* %77)
%79 = load i32*, i32** %6
%80 = call i32 @fclose(i32* %79)
br label %698
81: ; preds = %68
store i32 0, i32* %19
store %struct.row* null, %struct.row** %13
%82 = load i32, i32* %8
%83 = call %struct.token_stream* @token_stream_create(i32 %82)
store %struct.token_stream* %83, %struct.token_stream** %11
%84 = call %struct.row_list* (...) @row_list_create()
store %struct.row_list* %84, %struct.row_list** %12
store i32 0, i32* %14
br label %85
85: ; preds = %692, %110, %81
%86 = getelementptr inbounds [5001 x i8], [5001 x i8]* %18, i64 0, i64 0
%87 = load i32*, i32** %6
%88 = call i32* @fgets(i8* %86, i32 5000, i32* %87)
%89 = icmp ne i32* %88, null
br i1 %89, label %90, label %693
90: ; preds = %85
%91 = load i32, i32* %9
%92 = icmp ne i32 %91, 0
br i1 %92, label %93, label %98
93: ; preds = %90
%94 = load i32, i32* %14
%95 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.16, i64 0, i64 0), i32 %94)
%96 = getelementptr inbounds [5001 x i8], [5001 x i8]* %18, i64 0, i64 0
%97 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.17, i64 0, i64 0), i8* %96)
br label %98
98: ; preds = %93, %90
%99 = getelementptr inbounds [5001 x i8], [5001 x i8]* %18, i64 0, i64 0
%100 = call i64 @strncmp(i8* %99, i8* getelementptr inbounds ([52 x i8], [52 x i8]* @.str.18, i64 0, i64 0), i32 51)
%101 = icmp eq i64 %100, 0
br i1 %101, label %110, label %102
102: ; preds = %98
%103 = getelementptr inbounds [5001 x i8], [5001 x i8]* %18, i64 0, i64 0
%104 = call i64 @strncmp(i8* %103, i8* getelementptr inbounds ([29 x i8], [29 x i8]* @.str.19, i64 0, i64 0), i32 28)
%105 = icmp eq i64 %104, 0
br i1 %105, label %110, label %106
106: ; preds = %102
%107 = getelementptr inbounds [5001 x i8], [5001 x i8]* %18, i64 0, i64 0
%108 = call i64 @strncmp(i8* %107, i8* getelementptr inbounds ([31 x i8], [31 x i8]* @.str.20, i64 0, i64 0), i32 30)
%109 = icmp eq i64 %108, 0
br i1 %109, label %110, label %111
110: ; preds = %106, %102, %98
br label %85
111: ; preds = %106
%112 = getelementptr inbounds [5001 x i8], [5001 x i8]* %18, i64 0, i64 0
%113 = call i64 @strncmp(i8* %112, i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.21, i64 0, i64 0), i32 17)
%114 = icmp eq i64 %113, 0
br i1 %114, label %123, label %115
115: ; preds = %111
%116 = getelementptr inbounds [5001 x i8], [5001 x i8]* %18, i64 0, i64 0
%117 = call i64 @strncmp(i8* %116, i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.22, i64 0, i64 0), i32 16)
%118 = icmp eq i64 %117, 0
br i1 %118, label %123, label %119
119: ; preds = %115
%120 = getelementptr inbounds [5001 x i8], [5001 x i8]* %18, i64 0, i64 0
%121 = call i64 @strncmp(i8* %120, i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str.23, i64 0, i64 0), i32 19)
%122 = icmp eq i64 %121, 0
br i1 %122, label %123, label %152
123: ; preds = %119, %115, %111
br label %124
124: ; preds = %150, %123
%125 = getelementptr inbounds [5001 x i8], [5001 x i8]* %18, i64 0, i64 0
%126 = load i32*, i32** %6
%127 = call i32* @fgets(i8* %125, i32 5000, i32* %126)
%128 = icmp ne i32* %127, null
br i1 %128, label %129, label %151
129: ; preds = %124
%130 = load i32, i32* %9
%131 = icmp ne i32 %130, 0
br i1 %131, label %132, label %137
132: ; preds = %129
%133 = load i32, i32* %14
%134 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.16, i64 0, i64 0), i32 %133)
%135 = getelementptr inbounds [5001 x i8], [5001 x i8]* %18, i64 0, i64 0
%136 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.17, i64 0, i64 0), i8* %135)
br label %137
137: ; preds = %132, %129
%138 = getelementptr inbounds [5001 x i8], [5001 x i8]* %18, i64 0, i64 0
%139 = call i64 @strncmp(i8* %138, i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.24, i64 0, i64 0), i32 10)
%140 = icmp eq i64 %139, 0
br i1 %140, label %149, label %141
141: ; preds = %137
%142 = getelementptr inbounds [5001 x i8], [5001 x i8]* %18, i64 0, i64 0
%143 = call i64 @strncmp(i8* %142, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.25, i64 0, i64 0), i32 3)
%144 = icmp eq i64 %143, 0
br i1 %144, label %149, label %145
145: ; preds = %141
%146 = getelementptr inbounds [5001 x i8], [5001 x i8]* %18, i64 0, i64 0
%147 = call i64 @strncmp(i8* %146, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.26, i64 0, i64 0), i32 5)
%148 = icmp eq i64 %147, 0
br i1 %148, label %149, label %150
149: ; preds = %145, %141, %137
br label %151
150: ; preds = %145
br label %124
151: ; preds = %149, %124
br label %152
152: ; preds = %151, %119
%153 = getelementptr inbounds [5001 x i8], [5001 x i8]* %18, i64 0, i64 0
%154 = call i64 @strncmp(i8* %153, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.27, i64 0, i64 0), i32 5)
%155 = icmp eq i64 %154, 0
br i1 %155, label %160, label %156
156: ; preds = %152
%157 = getelementptr inbounds [5001 x i8], [5001 x i8]* %18, i64 0, i64 0
%158 = call i64 @strncmp(i8* %157, i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.28, i64 0, i64 0), i32 10)
%159 = icmp eq i64 %158, 0
br i1 %159, label %160, label %181
160: ; preds = %156, %152
br label %161
161: ; preds = %179, %160
%162 = getelementptr inbounds [5001 x i8], [5001 x i8]* %18, i64 0, i64 0
%163 = load i32*, i32** %6
%164 = call i32* @fgets(i8* %162, i32 5000, i32* %163)
%165 = icmp ne i32* %164, null
br i1 %165, label %166, label %180
166: ; preds = %161
%167 = load i32, i32* %9
%168 = icmp ne i32 %167, 0
br i1 %168, label %169, label %174
169: ; preds = %166
%170 = load i32, i32* %14
%171 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.16, i64 0, i64 0), i32 %170)
%172 = getelementptr inbounds [5001 x i8], [5001 x i8]* %18, i64 0, i64 0
%173 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.17, i64 0, i64 0), i8* %172)
br label %174
174: ; preds = %169, %166
%175 = getelementptr inbounds [5001 x i8], [5001 x i8]* %18, i64 0, i64 0
%176 = call i64 @strcmp(i8* %175, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.29, i64 0, i64 0))
%177 = icmp eq i64 %176, 0
br i1 %177, label %178, label %179
178: ; preds = %174
br label %180
179: ; preds = %174
br label %161
180: ; preds = %178, %161
br label %181
181: ; preds = %180, %156
%182 = load i32, i32* %14
switch i32 %182, label %689 [
i32 0, label %183
i32 1, label %207
i32 2, label %234
i32 3, label %314
i32 4, label %366
i32 5, label %384
i32 6, label %399
i32 7, label %480
i32 8, label %493
i32 9, label %514
i32 10, label %532
i32 11, label %566
i32 12, label %602
i32 13, label %618
]
183: ; preds = %181
%184 = getelementptr inbounds [5001 x i8], [5001 x i8]* %18, i64 0, i64 0
%185 = call i32 @line_isignore(i8* %184)
%186 = icmp ne i32 %185, 0
br i1 %186, label %187, label %189
187: ; preds = %183
%188 = load i32, i32* %14
store i32 %188, i32* %15
store i32 7, i32* %14
br label %200
189: ; preds = %183
%190 = getelementptr inbounds [5001 x i8], [5001 x i8]* %18, i64 0, i64 0
%191 = call i32 @line_isstmt(i8* %190)
%192 = icmp ne i32 %191, 0
br i1 %192, label %193, label %199
193: ; preds = %189
%194 = load %struct.token_stream*, %struct.token_stream** %11
%195 = getelementptr inbounds [5001 x i8], [5001 x i8]* %18, i64 0, i64 0
%196 = call i32 @line_strip(i8* %195)
%197 = call i32 @token_stream_add(%struct.token_stream* %194, i32 %196)
%198 = call i32 @interpretrc(i32 %197)
store i32 %198, i32* %14
br label %199
199: ; preds = %193, %189
br label %200
200: ; preds = %199, %187
%201 = getelementptr inbounds [5001 x i8], [5001 x i8]* %18, i64 0, i64 0
%202 = load i32*, i32** %7
%203 = load i32, i32* %10
%204 = load i32, i32* %14
%205 = call i32 @mightbestats(i32 %204)
%206 = call i32 @myFputs(i8* %201, i32* %202, i32 %203, i32 %205)
br label %692
207: ; preds = %181
%208 = getelementptr inbounds [5001 x i8], [5001 x i8]* %18, i64 0, i64 0
%209 = call i32 @line_isignore(i8* %208)
%210 = icmp ne i32 %209, 0
br i1 %210, label %211, label %213
211: ; preds = %207
%212 = load i32, i32* %14
store i32 %212, i32* %15
store i32 7, i32* %14
br label %227
213: ; preds = %207
%214 = getelementptr inbounds [5001 x i8], [5001 x i8]* %18, i64 0, i64 0
%215 = call i32 @line_isstmt(i8* %214)
%216 = icmp ne i32 %215, 0
br i1 %216, label %217, label %223
217: ; preds = %213
%218 = load %struct.token_stream*, %struct.token_stream** %11
%219 = getelementptr inbounds [5001 x i8], [5001 x i8]* %18, i64 0, i64 0
%220 = call i32 @line_strip(i8* %219)
%221 = call i32 @token_stream_add(%struct.token_stream* %218, i32 %220)
%222 = call i32 @interpretrc(i32 %221)
store i32 %222, i32* %14
br label %226
223: ; preds = %213
%224 = load %struct.token_stream*, %struct.token_stream** %11
%225 = call i32 @token_stream_clear(%struct.token_stream* %224)
store i32 0, i32* %14
br label %226
226: ; preds = %223, %217
br label %227
227: ; preds = %226, %211
%228 = getelementptr inbounds [5001 x i8], [5001 x i8]* %18, i64 0, i64 0
%229 = load i32*, i32** %7
%230 = load i32, i32* %10
%231 = load i32, i32* %14
%232 = call i32 @mightbestats(i32 %231)
%233 = call i32 @myFputs(i8* %228, i32* %229, i32 %230, i32 %232)
br label %692
234: ; preds = %181
%235 = load %struct.token_stream*, %struct.token_stream** %11
%236 = call i32 @token_stream_interesting(%struct.token_stream* %235)
%237 = icmp ne i32 %236, 0
br i1 %237, label %238, label %262
238: ; preds = %234
store i32 0, i32* %19
%239 = getelementptr inbounds [5001 x i8], [5001 x i8]* %18, i64 0, i64 0
%240 = call i32 @line_isblank(i8* %239)
%241 = icmp ne i32 %240, 0
br i1 %241, label %242, label %243
242: ; preds = %238
store i32 3, i32* %14
br label %259
243: ; preds = %238
%244 = getelementptr inbounds [5001 x i8], [5001 x i8]* %18, i64 0, i64 0
%245 = call i32 @line_is0rows(i8* %244)
%246 = icmp ne i32 %245, 0
br i1 %246, label %247, label %248
247: ; preds = %243
store i32 0, i32* %14
br label %258
248: ; preds = %243
%249 = getelementptr inbounds [5001 x i8], [5001 x i8]* %18, i64 0, i64 0
%250 = call i32 @line_iserror(i8* %249)
%251 = icmp ne i32 %250, 0
br i1 %251, label %252, label %253
252: ; preds = %248
store i32 0, i32* %14
br label %257
253: ; preds = %248
%254 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([43 x i8], [43 x i8]* @.str.30, i64 0, i64 0))
%255 = getelementptr inbounds [5001 x i8], [5001 x i8]* %18, i64 0, i64 0
%256 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.17, i64 0, i64 0), i8* %255)
store i32 0, i32* %14
br label %257
257: ; preds = %253, %252
br label %258
258: ; preds = %257, %247
br label %259
259: ; preds = %258, %242
%260 = load %struct.token_stream*, %struct.token_stream** %11
%261 = call i32 @token_stream_advance(%struct.token_stream* %260, i32 1)
br label %307
262: ; preds = %234
%263 = load %struct.token_stream*, %struct.token_stream** %11
%264 = call i32 @token_stream_is_get(%struct.token_stream* %263)
%265 = icmp ne i32 %264, 0
br i1 %265, label %266, label %290
266: ; preds = %262
store i32 0, i32* %19
%267 = getelementptr inbounds [5001 x i8], [5001 x i8]* %18, i64 0, i64 0
%268 = call i32 @line_isblank(i8* %267)
%269 = icmp ne i32 %268, 0
br i1 %269, label %270, label %271
270: ; preds = %266
store i32 10, i32* %14
br label %287
271: ; preds = %266
%272 = getelementptr inbounds [5001 x i8], [5001 x i8]* %18, i64 0, i64 0
%273 = call i32 @line_is0rows(i8* %272)
%274 = icmp ne i32 %273, 0
br i1 %274, label %275, label %276
275: ; preds = %271
store i32 0, i32* %14
br label %286
276: ; preds = %271
%277 = getelementptr inbounds [5001 x i8], [5001 x i8]* %18, i64 0, i64 0
%278 = call i32 @line_iserror(i8* %277)
%279 = icmp ne i32 %278, 0
br i1 %279, label %280, label %281
280: ; preds = %276
store i32 0, i32* %14
br label %285
281: ; preds = %276
%282 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([40 x i8], [40 x i8]* @.str.31, i64 0, i64 0))
%283 = getelementptr inbounds [5001 x i8], [5001 x i8]* %18, i64 0, i64 0
%284 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.17, i64 0, i64 0), i8* %283)
store i32 0, i32* %14
br label %285
285: ; preds = %281, %280
br label %286
286: ; preds = %285, %275
br label %287
287: ; preds = %286, %270
%288 = load %struct.token_stream*, %struct.token_stream** %11
%289 = call i32 @token_stream_advance(%struct.token_stream* %288, i32 1)
br label %306
290: ; preds = %262
%291 = getelementptr inbounds [5001 x i8], [5001 x i8]* %18, i64 0, i64 0
%292 = call i32 @line_isstmt(i8* %291)
%293 = icmp ne i32 %292, 0
br i1 %293, label %294, label %302
294: ; preds = %290
%295 = load %struct.token_stream*, %struct.token_stream** %11
%296 = call i32 @token_stream_advance(%struct.token_stream* %295, i32 -1)
%297 = load %struct.token_stream*, %struct.token_stream** %11
%298 = getelementptr inbounds [5001 x i8], [5001 x i8]* %18, i64 0, i64 0
%299 = call i32 @line_strip(i8* %298)
%300 = call i32 @token_stream_add(%struct.token_stream* %297, i32 %299)
%301 = call i32 @interpretrc(i32 %300)
store i32 %301, i32* %14
br label %305
302: ; preds = %290
store i32 0, i32* %14
%303 = load %struct.token_stream*, %struct.token_stream** %11
%304 = call i32 @token_stream_advance(%struct.token_stream* %303, i32 1)
br label %305
305: ; preds = %302, %294
br label %306
306: ; preds = %305, %287
br label %307
307: ; preds = %306, %259
%308 = getelementptr inbounds [5001 x i8], [5001 x i8]* %18, i64 0, i64 0
%309 = load i32*, i32** %7
%310 = load i32, i32* %10
%311 = load i32, i32* %14
%312 = call i32 @mightbestats(i32 %311)
%313 = call i32 @myFputs(i8* %308, i32* %309, i32 %310, i32 %312)
br label %692
314: ; preds = %181
%315 = getelementptr inbounds [5001 x i8], [5001 x i8]* %18, i64 0, i64 0
%316 = call i32 @line_isheading(i8* %315)
%317 = icmp ne i32 %316, 0
br i1 %317, label %318, label %319
318: ; preds = %314
store i32 4, i32* %14
br label %359
319: ; preds = %314
%320 = getelementptr inbounds [5001 x i8], [5001 x i8]* %18, i64 0, i64 0
%321 = call i32 @line_isblank(i8* %320)
%322 = icmp ne i32 %321, 0
br i1 %322, label %323, label %330
323: ; preds = %319
%324 = load i32, i32* %19
%325 = icmp eq i32 %324, 0
br i1 %325, label %326, label %328
326: ; preds = %323
%327 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([31 x i8], [31 x i8]* @.str.32, i64 0, i64 0))
store i32 0, i32* %14
br label %329
328: ; preds = %323
store i32 5, i32* %14
br label %329
329: ; preds = %328, %326
br label %358
330: ; preds = %319
%331 = getelementptr inbounds [5001 x i8], [5001 x i8]* %18, i64 0, i64 0
%332 = call i32 @line_is0rows(i8* %331)
%333 = icmp ne i32 %332, 0
br i1 %333, label %334, label %335
334: ; preds = %330
store i32 0, i32* %14
br label %357
335: ; preds = %330
%336 = getelementptr inbounds [5001 x i8], [5001 x i8]* %18, i64 0, i64 0
%337 = call i32 @line_iserror(i8* %336)
%338 = icmp ne i32 %337, 0
br i1 %338, label %339, label %340
339: ; preds = %335
store i32 0, i32* %14
br label %356
340: ; preds = %335
%341 = getelementptr inbounds [5001 x i8], [5001 x i8]* %18, i64 0, i64 0
%342 = call i32 @line_iswarning(i8* %341)
%343 = icmp ne i32 %342, 0
br i1 %343, label %344, label %345
344: ; preds = %340
store i32 9, i32* %14
br label %355
345: ; preds = %340
%346 = getelementptr inbounds [5001 x i8], [5001 x i8]* %18, i64 0, i64 0
%347 = call i32 @line_isoptstats(i8* %346)
%348 = icmp ne i32 %347, 0
br i1 %348, label %349, label %350
349: ; preds = %345
store i32 8, i32* %14
br label %354
350: ; preds = %345
%351 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([43 x i8], [43 x i8]* @.str.30, i64 0, i64 0))
%352 = getelementptr inbounds [5001 x i8], [5001 x i8]* %18, i64 0, i64 0
%353 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.17, i64 0, i64 0), i8* %352)
store i32 0, i32* %14
br label %354
354: ; preds = %350, %349
br label %355
355: ; preds = %354, %344
br label %356
356: ; preds = %355, %339
br label %357
357: ; preds = %356, %334
br label %358
358: ; preds = %357, %329
br label %359
359: ; preds = %358, %318
%360 = getelementptr inbounds [5001 x i8], [5001 x i8]* %18, i64 0, i64 0
%361 = load i32*, i32** %7
%362 = load i32, i32* %10
%363 = load i32, i32* %14
%364 = call i32 @mightbestats(i32 %363)
%365 = call i32 @myFputs(i8* %360, i32* %361, i32 %362, i32 %364)
br label %692
366: ; preds = %181
%367 = getelementptr inbounds [5001 x i8], [5001 x i8]* %18, i64 0, i64 0
%368 = call i32 @line_isunderline(i8* %367)
%369 = icmp ne i32 %368, 0
br i1 %369, label %370, label %373
370: ; preds = %366
%371 = load i32, i32* %19
%372 = add nsw i32 %371, 1
store i32 %372, i32* %19
store i32 3, i32* %14
br label %377
373: ; preds = %366
%374 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([37 x i8], [37 x i8]* @.str.33, i64 0, i64 0))
%375 = getelementptr inbounds [5001 x i8], [5001 x i8]* %18, i64 0, i64 0
%376 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.17, i64 0, i64 0), i8* %375)
store i32 0, i32* %14
br label %377
377: ; preds = %373, %370
%378 = getelementptr inbounds [5001 x i8], [5001 x i8]* %18, i64 0, i64 0
%379 = load i32*, i32** %7
%380 = load i32, i32* %10
%381 = load i32, i32* %14
%382 = call i32 @mightbestats(i32 %381)
%383 = call i32 @myFputs(i8* %378, i32* %379, i32 %380, i32 %382)
br label %692
384: ; preds = %181
%385 = getelementptr inbounds [5001 x i8], [5001 x i8]* %18, i64 0, i64 0
%386 = call i32 @line_isunderline(i8* %385)
%387 = icmp ne i32 %386, 0
br i1 %387, label %388, label %391
388: ; preds = %384
%389 = load i32, i32* %19
%390 = add nsw i32 %389, 1
store i32 %390, i32* %19
store i32 3, i32* %14
br label %392
391: ; preds = %384
store i32 0, i32* %16
store i32 0, i32* %17
store i32 6, i32* %14
br label %400
392: ; preds = %388
%393 = getelementptr inbounds [5001 x i8], [5001 x i8]* %18, i64 0, i64 0
%394 = load i32*, i32** %7
%395 = load i32, i32* %10
%396 = load i32, i32* %14
%397 = call i32 @mightbestats(i32 %396)
%398 = call i32 @myFputs(i8* %393, i32* %394, i32 %395, i32 %397)
br label %692
399: ; preds = %181
br label %400
400: ; preds = %399, %391
%401 = load i32, i32* %16
%402 = icmp eq i32 %401, 1
br i1 %402, label %403, label %453
403: ; preds = %400
%404 = load i32, i32* %17
%405 = icmp ne i32 %404, 0
br i1 %405, label %406, label %453
406: ; preds = %403
%407 = getelementptr inbounds [5001 x i8], [5001 x i8]* %18, i64 0, i64 0
%408 = call i32 @line_isnnrows(i8* %407)
%409 = icmp ne i32 %408, 0
br i1 %409, label %410, label %453
410: ; preds = %406
br label %411
411: ; preds = %427, %410
%412 = load %struct.row_list*, %struct.row_list** %12
%413 = call %struct.row* @row_list_remove_min(%struct.row_list* %412)
store %struct.row* %413, %struct.row** %20
%414 = icmp ne %struct.row* %413, null
br i1 %414, label %415, label %430
415: ; preds = %411
br label %416
416: ; preds = %420, %415
%417 = load %struct.row*, %struct.row** %20
%418 = call i8* @row_remove(%struct.row* %417)
store i8* %418, i8** %21
%419 = icmp ne i8* %418, null
br i1 %419, label %420, label %427
420: ; preds = %416
%421 = load i8*, i8** %21
%422 = load i32*, i32** %7
%423 = load i32, i32* %10
%424 = load i32, i32* %14
%425 = call i32 @mightbestats(i32 %424)
%426 = call i32 @myFputs(i8* %421, i32* %422, i32 %423, i32 %425)
br label %416
427: ; preds = %416
%428 = load %struct.row*, %struct.row** %20
%429 = call i32 @row_destroy(%struct.row* %428)
br label %411
430: ; preds = %411
%431 = load %struct.row*, %struct.row** %13
%432 = call i8* @row_remove(%struct.row* %431)
store i8* %432, i8** %21
%433 = load i8*, i8** %21
%434 = load i32*, i32** %7
%435 = load i32, i32* %10
%436 = load i32, i32* %14
%437 = call i32 @mightbestats(i32 %436)
%438 = call i32 @myFputs(i8* %433, i32* %434, i32 %435, i32 %437)
%439 = load %struct.row*, %struct.row** %13
%440 = call i32 @row_destroy(%struct.row* %439)
store %struct.row* null, %struct.row** %13
store i32 0, i32* %17
%441 = getelementptr inbounds [5001 x i8], [5001 x i8]* %18, i64 0, i64 0
%442 = load i32*, i32** %7
%443 = load i32, i32* %10
%444 = load i32, i32* %14
%445 = call i32 @mightbestats(i32 %444)
%446 = call i32 @myFputs(i8* %441, i32* %442, i32 %443, i32 %445)
%447 = load %struct.token_stream*, %struct.token_stream** %11
%448 = call i32 @token_stream_interesting(%struct.token_stream* %447)
%449 = icmp ne i32 %448, 0
br i1 %449, label %450, label %451
450: ; preds = %430
store i32 2, i32* %14
br label %452
451: ; preds = %430
store i32 0, i32* %14
br label %452
452: ; preds = %451, %450
br label %479
453: ; preds = %406, %403, %400
%454 = load i32, i32* %16
%455 = load i32, i32* %19
%456 = icmp eq i32 %454, %455
br i1 %456, label %457, label %461
457: ; preds = %453
%458 = load %struct.row_list*, %struct.row_list** %12
%459 = load %struct.row*, %struct.row** %13
%460 = call i32 @row_list_add(%struct.row_list* %458, %struct.row* %459)
store %struct.row* null, %struct.row** %13
store i32 0, i32* %16
br label %461
461: ; preds = %457, %453
%462 = load i32, i32* %16
%463 = icmp eq i32 %462, 0
br i1 %463, label %464, label %473
464: ; preds = %461
%465 = getelementptr inbounds [5001 x i8], [5001 x i8]* %18, i64 0, i64 0
%466 = call i32 @line_isblank(i8* %465)
%467 = icmp ne i32 %466, 0
br i1 %467, label %468, label %469
468: ; preds = %464
store i32 1, i32* %17
br label %470
469: ; preds = %464
store i32 0, i32* %17
br label %470
470: ; preds = %469, %468
%471 = load i32, i32* %19
%472 = call %struct.row* @row_create(i32 %471)
store %struct.row* %472, %struct.row** %13
br label %473
473: ; preds = %470, %461
%474 = load %struct.row*, %struct.row** %13
%475 = getelementptr inbounds [5001 x i8], [5001 x i8]* %18, i64 0, i64 0
%476 = call i32 @row_add(%struct.row* %474, i8* %475)
%477 = load i32, i32* %16
%478 = add nsw i32 %477, 1
store i32 %478, i32* %16
br label %479
479: ; preds = %473, %452
br label %692
480: ; preds = %181
%481 = getelementptr inbounds [5001 x i8], [5001 x i8]* %18, i64 0, i64 0
%482 = call i32 @line_isignore(i8* %481)
%483 = icmp ne i32 %482, 0
br i1 %483, label %484, label %486
484: ; preds = %480
%485 = load i32, i32* %15
store i32 %485, i32* %14
br label %486
486: ; preds = %484, %480
%487 = getelementptr inbounds [5001 x i8], [5001 x i8]* %18, i64 0, i64 0
%488 = load i32*, i32** %7
%489 = load i32, i32* %10
%490 = load i32, i32* %14
%491 = call i32 @mightbestats(i32 %490)
%492 = call i32 @myFputs(i8* %487, i32* %488, i32 %489, i32 %491)
br label %692
493: ; preds = %181
%494 = getelementptr inbounds [5001 x i8], [5001 x i8]* %18, i64 0, i64 0
%495 = call i32 @line_isblank(i8* %494)
%496 = icmp ne i32 %495, 0
br i1 %496, label %497, label %498
497: ; preds = %493
store i32 3, i32* %14
br label %507
498: ; preds = %493
%499 = getelementptr inbounds [5001 x i8], [5001 x i8]* %18, i64 0, i64 0
%500 = call i32 @line_isoptstats(i8* %499)
%501 = icmp ne i32 %500, 0
br i1 %501, label %506, label %502
502: ; preds = %498
%503 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([49 x i8], [49 x i8]* @.str.34, i64 0, i64 0))
%504 = getelementptr inbounds [5001 x i8], [5001 x i8]* %18, i64 0, i64 0
%505 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.17, i64 0, i64 0), i8* %504)
store i32 0, i32* %14
br label %506
506: ; preds = %502, %498
br label %507
507: ; preds = %506, %497
%508 = getelementptr inbounds [5001 x i8], [5001 x i8]* %18, i64 0, i64 0
%509 = load i32*, i32** %7
%510 = load i32, i32* %10
%511 = load i32, i32* %14
%512 = call i32 @mightbestats(i32 %511)
%513 = call i32 @myFputs(i8* %508, i32* %509, i32 %510, i32 %512)
br label %692
514: ; preds = %181
%515 = getelementptr inbounds [5001 x i8], [5001 x i8]* %18, i64 0, i64 0
%516 = call i32 @line_isblank(i8* %515)
%517 = icmp ne i32 %516, 0
br i1 %517, label %518, label %519
518: ; preds = %514
store i32 3, i32* %14
br label %525
519: ; preds = %514
%520 = getelementptr inbounds [5001 x i8], [5001 x i8]* %18, i64 0, i64 0
%521 = call i32 @line_iswarning(i8* %520)
%522 = icmp ne i32 %521, 0
br i1 %522, label %524, label %523
523: ; preds = %519
store i32 0, i32* %14
br label %524
524: ; preds = %523, %519
br label %525
525: ; preds = %524, %518
%526 = getelementptr inbounds [5001 x i8], [5001 x i8]* %18, i64 0, i64 0
%527 = load i32*, i32** %7
%528 = load i32, i32* %10
%529 = load i32, i32* %14
%530 = call i32 @mightbestats(i32 %529)
%531 = call i32 @myFputs(i8* %526, i32* %527, i32 %528, i32 %530)
br label %692
532: ; preds = %181
%533 = getelementptr inbounds [5001 x i8], [5001 x i8]* %18, i64 0, i64 0
%534 = call i32 @line_isheading(i8* %533)
%535 = icmp ne i32 %534, 0
br i1 %535, label %536, label %537
536: ; preds = %532
store i32 11, i32* %14
br label %559
537: ; preds = %532
%538 = getelementptr inbounds [5001 x i8], [5001 x i8]* %18, i64 0, i64 0
%539 = call i32 @line_issqloperationcomplete(i8* %538)
%540 = icmp ne i32 %539, 0
br i1 %540, label %541, label %542
541: ; preds = %537
store i32 0, i32* %14
br label %558
542: ; preds = %537
%543 = getelementptr inbounds [5001 x i8], [5001 x i8]* %18, i64 0, i64 0
%544 = call i32 @line_iserror(i8* %543)
%545 = icmp ne i32 %544, 0
br i1 %545, label %546, label %547
546: ; preds = %542
store i32 0, i32* %14
br label %557
547: ; preds = %542
%548 = getelementptr inbounds [5001 x i8], [5001 x i8]* %18, i64 0, i64 0
%549 = call i32 @line_iswarning(i8* %548)
%550 = icmp ne i32 %549, 0
br i1 %550, label %551, label %552
551: ; preds = %547
store i32 9, i32* %14
br label %556
552: ; preds = %547
%553 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([40 x i8], [40 x i8]* @.str.31, i64 0, i64 0))
%554 = getelementptr inbounds [5001 x i8], [5001 x i8]* %18, i64 0, i64 0
%555 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.17, i64 0, i64 0), i8* %554)
store i32 0, i32* %14
br label %556
556: ; preds = %552, %551
br label %557
557: ; preds = %556, %546
br label %558
558: ; preds = %557, %541
br label %559
559: ; preds = %558, %536
%560 = getelementptr inbounds [5001 x i8], [5001 x i8]* %18, i64 0, i64 0
%561 = load i32*, i32** %7
%562 = load i32, i32* %10
%563 = load i32, i32* %14
%564 = call i32 @mightbestats(i32 %563)
%565 = call i32 @myFputs(i8* %560, i32* %561, i32 %562, i32 %564)
br label %692
566: ; preds = %181
%567 = getelementptr inbounds [5001 x i8], [5001 x i8]* %18, i64 0, i64 0
%568 = call i32 @line_isgetheadingorfooting(i8* %567)
%569 = icmp ne i32 %568, 0
br i1 %569, label %570, label %573
570: ; preds = %566
%571 = load i32, i32* %19
%572 = add nsw i32 %571, 1
store i32 %572, i32* %19
store i32 12, i32* %14
br label %595
573: ; preds = %566
%574 = getelementptr inbounds [5001 x i8], [5001 x i8]* %18, i64 0, i64 0
%575 = call i32 @line_is0rows(i8* %574)
%576 = icmp ne i32 %575, 0
br i1 %576, label %577, label %578
577: ; preds = %573
store i32 0, i32* %14
br label %594
578: ; preds = %573
%579 = getelementptr inbounds [5001 x i8], [5001 x i8]* %18, i64 0, i64 0
%580 = call i32 @line_iserror(i8* %579)
%581 = icmp ne i32 %580, 0
br i1 %581, label %582, label %583
582: ; preds = %578
store i32 0, i32* %14
br label %593
583: ; preds = %578
%584 = getelementptr inbounds [5001 x i8], [5001 x i8]* %18, i64 0, i64 0
%585 = call i32 @line_iswarning(i8* %584)
%586 = icmp ne i32 %585, 0
br i1 %586, label %587, label %588
587: ; preds = %583
store i32 9, i32* %14
br label %592
588: ; preds = %583
%589 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([40 x i8], [40 x i8]* @.str.31, i64 0, i64 0))
%590 = getelementptr inbounds [5001 x i8], [5001 x i8]* %18, i64 0, i64 0
%591 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.17, i64 0, i64 0), i8* %590)
store i32 0, i32* %14
br label %592
592: ; preds = %588, %587
br label %593
593: ; preds = %592, %582
br label %594
594: ; preds = %593, %577
br label %595
595: ; preds = %594, %570
%596 = getelementptr inbounds [5001 x i8], [5001 x i8]* %18, i64 0, i64 0
%597 = load i32*, i32** %7
%598 = load i32, i32* %10
%599 = load i32, i32* %14
%600 = call i32 @mightbestats(i32 %599)
%601 = call i32 @myFputs(i8* %596, i32* %597, i32 %598, i32 %600)
br label %692
602: ; preds = %181
%603 = getelementptr inbounds [5001 x i8], [5001 x i8]* %18, i64 0, i64 0
%604 = call i32 @line_isblank(i8* %603)
%605 = icmp ne i32 %604, 0
br i1 %605, label %606, label %607
606: ; preds = %602
store i32 13, i32* %14
store i32 0, i32* %16
br label %611
607: ; preds = %602
%608 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([37 x i8], [37 x i8]* @.str.35, i64 0, i64 0))
%609 = getelementptr inbounds [5001 x i8], [5001 x i8]* %18, i64 0, i64 0
%610 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.17, i64 0, i64 0), i8* %609)
store i32 0, i32* %14
br label %611
611: ; preds = %607, %606
%612 = getelementptr inbounds [5001 x i8], [5001 x i8]* %18, i64 0, i64 0
%613 = load i32*, i32** %7
%614 = load i32, i32* %10
%615 = load i32, i32* %14
%616 = call i32 @mightbestats(i32 %615)
%617 = call i32 @myFputs(i8* %612, i32* %613, i32 %614, i32 %616)
br label %692
618: ; preds = %181
%619 = getelementptr inbounds [5001 x i8], [5001 x i8]* %18, i64 0, i64 0
%620 = call i32 @line_isblank(i8* %619)
%621 = icmp ne i32 %620, 0
br i1 %621, label %622, label %668
622: ; preds = %618
%623 = load %struct.row*, %struct.row** %13
%624 = icmp ne %struct.row* %623, null
br i1 %624, label %625, label %629
625: ; preds = %622
%626 = load %struct.row_list*, %struct.row_list** %12
%627 = load %struct.row*, %struct.row** %13
%628 = call i32 @row_list_add(%struct.row_list* %626, %struct.row* %627)
store %struct.row* null, %struct.row** %13
br label %629
629: ; preds = %625, %622
br label %630
630: ; preds = %646, %629
%631 = load %struct.row_list*, %struct.row_list** %12
%632 = call %struct.row* @row_list_remove_min(%struct.row_list* %631)
store %struct.row* %632, %struct.row** %22
%633 = icmp ne %struct.row* %632, null
br i1 %633, label %634, label %649
634: ; preds = %630
br label %635
635: ; preds = %639, %634
%636 = load %struct.row*, %struct.row** %22
%637 = call i8* @row_remove(%struct.row* %636)
store i8* %637, i8** %23
%638 = icmp ne i8* %637, null
br i1 %638, label %639, label %646
639: ; preds = %635
%640 = load i8*, i8** %23
%641 = load i32*, i32** %7
%642 = load i32, i32* %10
%643 = load i32, i32* %14
%644 = call i32 @mightbestats(i32 %643)
%645 = call i32 @myFputs(i8* %640, i32* %641, i32 %642, i32 %644)
br label %635
646: ; preds = %635
%647 = load %struct.row*, %struct.row** %22
%648 = call i32 @row_destroy(%struct.row* %647)
br label %630
649: ; preds = %630
%650 = getelementptr inbounds [5001 x i8], [5001 x i8]* %18, i64 0, i64 0
%651 = load i32*, i32** %7
%652 = load i32, i32* %10
%653 = load i32, i32* %14
%654 = call i32 @mightbestats(i32 %653)
%655 = call i32 @myFputs(i8* %650, i32* %651, i32 %652, i32 %654)
%656 = load %struct.token_stream*, %struct.token_stream** %11
%657 = call i32 @token_stream_interesting(%struct.token_stream* %656)
%658 = icmp ne i32 %657, 0
br i1 %658, label %659, label %660
659: ; preds = %649
store i32 2, i32* %14
br label %667
660: ; preds = %649
%661 = load %struct.token_stream*, %struct.token_stream** %11
%662 = call i32 @token_stream_is_get(%struct.token_stream* %661)
%663 = icmp ne i32 %662, 0
br i1 %663, label %664, label %665
664: ; preds = %660
store i32 2, i32* %14
br label %666
665: ; preds = %660
store i32 0, i32* %14
br label %666
666: ; preds = %665, %664
br label %667
667: ; preds = %666, %659
br label %688
668: ; preds = %618
%669 = load i32, i32* %16
%670 = load i32, i32* %19
%671 = icmp eq i32 %669, %670
br i1 %671, label %672, label %676
672: ; preds = %668
%673 = load %struct.row_list*, %struct.row_list** %12
%674 = load %struct.row*, %struct.row** %13
%675 = call i32 @row_list_add(%struct.row_list* %673, %struct.row* %674)
store %struct.row* null, %struct.row** %13
store i32 0, i32* %16
br label %676
676: ; preds = %672, %668
%677 = load i32, i32* %16
%678 = icmp eq i32 %677, 0
br i1 %678, label %679, label %682
679: ; preds = %676
%680 = load i32, i32* %19
%681 = call %struct.row* @row_create(i32 %680)
store %struct.row* %681, %struct.row** %13
br label %682
682: ; preds = %679, %676
%683 = load %struct.row*, %struct.row** %13
%684 = getelementptr inbounds [5001 x i8], [5001 x i8]* %18, i64 0, i64 0
%685 = call i32 @row_add(%struct.row* %683, i8* %684)
%686 = load i32, i32* %16
%687 = add nsw i32 %686, 1
store i32 %687, i32* %16
br label %688
688: ; preds = %682, %667
br label %692
689: ; preds = %181
%690 = load i32, i32* %14
%691 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([27 x i8], [27 x i8]* @.str.36, i64 0, i64 0), i32 %690)
br label %692
692: ; preds = %689, %688, %611, %595, %559, %525, %507, %486, %479, %392, %377, %359, %307, %227, %200
br label %85
693: ; preds = %85
%694 = load i32*, i32** %6
%695 = call i32 @fclose(i32* %694)
%696 = load i32*, i32** %7
%697 = call i32 @fclose(i32* %696)
br label %698
698: ; preds = %693, %74
br label %699
699: ; preds = %698, %63
br label %700
700: ; preds = %699, %38
ret i32 0
}

LLVM IR (-O2):
%struct.row = type { i32 }
%struct.token_stream = type { i32 }
%struct.row_list = type { i32 }
@.str = [50 x i8] c"\0AUsage: %s <in-file> <out-file> [-[d][i][s]] \0A\00"
@.str.1 = [55 x i8] c"\0Awhere <in-file> is a SQLCI actual results file to be \00"
@.str.2 = [58 x i8] c"transformed. The\0Atransformed results will be written to \00"
@.str.4 = [59 x i8] c"The -i option tells %s to sort output from *all*\0Aselects, \00"
@.str.5 = [63 x i8] c"not just those without order by clauses. This should be used \00"
@.str.6 = [58 x i8] c"with\0Acare, since the correctness of the results could be \00"
@.str.8 = [64 x i8] c"The -d option is a debug option: If specified, internal parse \00"
@.str.10 = [63 x i8] c"The -s option tells logsort to strip out statistics generated \00"
@.str.12 = [2 x i8] c"r\00"
@.str.13 = [36 x i8] c"\0A*** Could not open input file %s.\0A\00"
@.str.14 = [2 x i8] c"w\00"
@.str.15 = [37 x i8] c"\0A*** Could not open output file %s.\0A\00"
@.str.16 = [10 x i8] c"State %d\0A\00"
@.str.17 = [3 x i8] c"%s\00"
@.str.18 = [52 x i8] c" ATTRIBUTES EXTENT (51200, 102400), MAXEXTENTS 768\00"
@.str.19 = [29 x i8] c" ATTRIBUTES BLOCKSIZE 32768\00"
@.str.20 = [31 x i8] c"-- ATTRIBUTES BLOCKSIZE 32768\00"
@.str.21 = [18 x i8] c" HASH2 PARTITION\00"
@.str.22 = [17 x i8] c" HASH PARTITION\00"
@.str.23 = [20 x i8] c"-- HASH2 PARTITION\00"
@.str.24 = [11 x i8] c" STORE BY\00"
@.str.25 = [4 x i8] c" ;\00"
@.str.26 = [6 x i8] c"-- ;\00"
@.str.27 = [6 x i8] c"DISK-\00"
@.str.28 = [11 x i8] c"Partition[\00"
@.str.29 = [2 x i8] c"\0A\00"
@.str.34 = [49 x i8] c"Unexpected line after Trafodion Optimizer stats:\00"
@.str.36 = [27 x i8] c"Error: got bad state %d.\0A\00"
@str = [36 x i8] c"Unexpected line after a GET header:\00"
@str.39 = [36 x i8] c"Unexpected line after heading line:\00"
@str.41 = [30 x i8] c"Heading missing after SELECT.\00"
@str.42 = [39 x i8] c"Unexpected line after a GET statement:\00"
@str.43 = [42 x i8] c"Unexpected line after a SELECT statement:\00"
@str.44 = [13 x i8] c"<out-file>.\0A\00"
@str.45 = [14 x i8] c"compromised.\0A\00"
@str.46 = [23 x i8] c"states are\0Adisplayed.\0A\00"
@str.47 = [55 x i8] c"by DISPLAY\0ASTATISTICS and by the Trafodion optimizer.\0A\00"
define i32 @main(i32 %0, i8** nocapture %1) {
%3 = alloca i32
%4 = alloca i32
%5 = alloca i32
%6 = alloca [5001 x i8]
%7 = bitcast i32* %3 to i8*
store i32 0, i32* %3
%8 = bitcast i32* %4 to i8*
store i32 0, i32* %4
%9 = bitcast i32* %5 to i8*
store i32 0, i32* %5
%10 = add i32 %0, -5
%11 = icmp ult i32 %10, -2
br i1 %11, label %19, label %12
12: ; preds = %2
%13 = icmp eq i32 %0, 4
br i1 %13, label %14, label %34
14: ; preds = %12
%15 = getelementptr inbounds i8*, i8** %1, i64 3
%16 = load i8*, i8** %15
%17 = call i32 @checkoptions(i8* %16, i32* %4, i32* %3, i32* %5)
%18 = icmp eq i32 %17, 0
br i1 %18, label %19, label %34
19: ; preds = %14, %2
%20 = load i8*, i8** %1
%21 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([50 x i8], [50 x i8]* @.str, i64 0, i64 0), i8* %20)
%22 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([55 x i8], [55 x i8]* @.str.1, i64 0, i64 0))
%23 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([58 x i8], [58 x i8]* @.str.2, i64 0, i64 0))
%24 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([13 x i8], [13 x i8]* @str.44, i64 0, i64 0))
%25 = load i8*, i8** %1
%26 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([59 x i8], [59 x i8]* @.str.4, i64 0, i64 0), i8* %25)
%27 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([63 x i8], [63 x i8]* @.str.5, i64 0, i64 0))
%28 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([58 x i8], [58 x i8]* @.str.6, i64 0, i64 0))
%29 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([14 x i8], [14 x i8]* @str.45, i64 0, i64 0))
%30 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([64 x i8], [64 x i8]* @.str.8, i64 0, i64 0))
%31 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([23 x i8], [23 x i8]* @str.46, i64 0, i64 0))
%32 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([63 x i8], [63 x i8]* @.str.10, i64 0, i64 0))
%33 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([55 x i8], [55 x i8]* @str.47, i64 0, i64 0))
br label %477
34: ; preds = %14, %12
%35 = getelementptr inbounds i8*, i8** %1, i64 1
%36 = load i8*, i8** %35
%37 = call i32* @fopen(i8* %36, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.12, i64 0, i64 0))
%38 = icmp eq i32* %37, null
br i1 %38, label %39, label %42
39: ; preds = %34
%40 = load i8*, i8** %35
%41 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([36 x i8], [36 x i8]* @.str.13, i64 0, i64 0), i8* %40)
br label %477
42: ; preds = %34
%43 = getelementptr inbounds i8*, i8** %1, i64 2
%44 = load i8*, i8** %43
%45 = call i32* @fopen(i8* %44, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.14, i64 0, i64 0))
%46 = icmp eq i32* %45, null
br i1 %46, label %47, label %51
47: ; preds = %42
%48 = load i8*, i8** %43
%49 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([37 x i8], [37 x i8]* @.str.15, i64 0, i64 0), i8* %48)
%50 = call i32 @fclose(i32* %37)
br label %477
51: ; preds = %42
%52 = getelementptr inbounds [5001 x i8], [5001 x i8]* %6, i64 0, i64 0
%53 = load i32, i32* %3
%54 = call %struct.token_stream* @token_stream_create(i32 %53)
%55 = call %struct.row_list* (...) @row_list_create()
%56 = call i32* @fgets(i8* %52, i32 5000, i32* %37)
%57 = icmp eq i32* %56, null
br i1 %57, label %474, label %58
58: ; preds = %51, %465
%59 = phi %struct.row* [ %471, %465 ], [ null, %51 ]
%60 = phi i32 [ %470, %465 ], [ 0, %51 ]
%61 = phi i32 [ %469, %465 ], [ undef, %51 ]
%62 = phi i32 [ %468, %465 ], [ 0, %51 ]
%63 = phi i32 [ %467, %465 ], [ undef, %51 ]
%64 = phi i32 [ %466, %465 ], [ undef, %51 ]
br label %65
65: ; preds = %58, %80
%66 = load i32, i32* %4
%67 = icmp eq i32 %66, 0
br i1 %67, label %71, label %68
68: ; preds = %65
%69 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([10 x i8], [10 x i8]* @.str.16, i64 0, i64 0), i32 %60)
%70 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([3 x i8], [3 x i8]* @.str.17, i64 0, i64 0), i8* %52)
br label %71
71: ; preds = %68, %65
%72 = call i64 @strncmp(i8* %52, i8* getelementptr inbounds ([52 x i8], [52 x i8]* @.str.18, i64 0, i64 0), i32 51)
%73 = icmp eq i64 %72, 0
br i1 %73, label %80, label %74
74: ; preds = %71
%75 = call i64 @strncmp(i8* %52, i8* getelementptr inbounds ([29 x i8], [29 x i8]* @.str.19, i64 0, i64 0), i32 28)
%76 = icmp eq i64 %75, 0
br i1 %76, label %80, label %77
77: ; preds = %74
%78 = call i64 @strncmp(i8* %52, i8* getelementptr inbounds ([31 x i8], [31 x i8]* @.str.20, i64 0, i64 0), i32 30)
%79 = icmp eq i64 %78, 0
br i1 %79, label %80, label %83
80: ; preds = %77, %74, %71
%81 = call i32* @fgets(i8* %52, i32 5000, i32* %37)
%82 = icmp eq i32* %81, null
br i1 %82, label %474, label %65
83: ; preds = %77
%84 = call i64 @strncmp(i8* %52, i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.21, i64 0, i64 0), i32 17)
%85 = icmp eq i64 %84, 0
br i1 %85, label %92, label %86
86: ; preds = %83
%87 = call i64 @strncmp(i8* %52, i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.22, i64 0, i64 0), i32 16)
%88 = icmp eq i64 %87, 0
br i1 %88, label %92, label %89
89: ; preds = %86
%90 = call i64 @strncmp(i8* %52, i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str.23, i64 0, i64 0), i32 19)
%91 = icmp eq i64 %90, 0
br i1 %91, label %92, label %111
92: ; preds = %89, %86, %83
br label %93
93: ; preds = %92, %108
%94 = call i32* @fgets(i8* %52, i32 5000, i32* %37)
%95 = icmp eq i32* %94, null
br i1 %95, label %111, label %96
96: ; preds = %93
%97 = load i32, i32* %4
%98 = icmp eq i32 %97, 0
br i1 %98, label %102, label %99
99: ; preds = %96
%100 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([10 x i8], [10 x i8]* @.str.16, i64 0, i64 0), i32 %60)
%101 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([3 x i8], [3 x i8]* @.str.17, i64 0, i64 0), i8* %52)
br label %102
102: ; preds = %99, %96
%103 = call i64 @strncmp(i8* %52, i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.24, i64 0, i64 0), i32 10)
%104 = icmp eq i64 %103, 0
br i1 %104, label %111, label %105
105: ; preds = %102
%106 = call i64 @strncmp(i8* %52, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.25, i64 0, i64 0), i32 3)
%107 = icmp eq i64 %106, 0
br i1 %107, label %111, label %108
108: ; preds = %105
%109 = call i64 @strncmp(i8* %52, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.26, i64 0, i64 0), i32 5)
%110 = icmp eq i64 %109, 0
br i1 %110, label %111, label %93
111: ; preds = %93, %108, %105, %102, %89
%112 = call i64 @strncmp(i8* %52, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.27, i64 0, i64 0), i32 5)
%113 = icmp eq i64 %112, 0
br i1 %113, label %117, label %114
114: ; preds = %111
%115 = call i64 @strncmp(i8* %52, i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.28, i64 0, i64 0), i32 10)
%116 = icmp eq i64 %115, 0
br i1 %116, label %117, label %130
117: ; preds = %114, %111
br label %118
118: ; preds = %117, %127
%119 = call i32* @fgets(i8* %52, i32 5000, i32* %37)
%120 = icmp eq i32* %119, null
br i1 %120, label %130, label %121
121: ; preds = %118
%122 = load i32, i32* %4
%123 = icmp eq i32 %122, 0
br i1 %123, label %127, label %124
124: ; preds = %121
%125 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([10 x i8], [10 x i8]* @.str.16, i64 0, i64 0), i32 %60)
%126 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([3 x i8], [3 x i8]* @.str.17, i64 0, i64 0), i8* %52)
br label %127
127: ; preds = %124, %121
%128 = call i64 @strcmp(i8* %52, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.29, i64 0, i64 0))
%129 = icmp eq i64 %128, 0
br i1 %129, label %130, label %118
130: ; preds = %118, %127, %114
switch i32 %60, label %463 [
i32 0, label %131
i32 1, label %147
i32 2, label %165
i32 3, label %217
i32 4, label %247
i32 5, label %261
i32 6, label %269
i32 7, label %327
i32 8, label %334
i32 9, label %348
i32 10, label %360
i32 11, label %380
i32 12, label %403
i32 13, label %415
]
131: ; preds = %130
%132 = call i32 @line_isignore(i8* %52)
%133 = icmp eq i32 %132, 0
br i1 %133, label %134, label %141
134: ; preds = %131
%135 = call i32 @line_isstmt(i8* %52)
%136 = icmp eq i32 %135, 0
br i1 %136, label %141, label %137
137: ; preds = %134
%138 = call i32 @line_strip(i8* %52)
%139 = call i32 @token_stream_add(%struct.token_stream* %54, i32 %138)
%140 = call i32 @interpretrc(i32 %139)
br label %141
141: ; preds = %131, %134, %137
%142 = phi i32 [ %61, %137 ], [ %61, %134 ], [ 0, %131 ]
%143 = phi i32 [ %140, %137 ], [ 0, %134 ], [ 7, %131 ]
%144 = load i32, i32* %5
%145 = call i32 @mightbestats(i32 %143)
%146 = call i32 @myFputs(i8* %52, i32* %45, i32 %144, i32 %145)
br label %465
147: ; preds = %130
%148 = call i32 @line_isignore(i8* %52)
%149 = icmp eq i32 %148, 0
br i1 %149, label %150, label %159
150: ; preds = %147
%151 = call i32 @line_isstmt(i8* %52)
%152 = icmp eq i32 %151, 0
br i1 %152, label %157, label %153
153: ; preds = %150
%154 = call i32 @line_strip(i8* %52)
%155 = call i32 @token_stream_add(%struct.token_stream* %54, i32 %154)
%156 = call i32 @interpretrc(i32 %155)
br label %159
157: ; preds = %150
%158 = call i32 @token_stream_clear(%struct.token_stream* %54)
br label %159
159: ; preds = %147, %153, %157
%160 = phi i32 [ %61, %153 ], [ %61, %157 ], [ 1, %147 ]
%161 = phi i32 [ %156, %153 ], [ 0, %157 ], [ 7, %147 ]
%162 = load i32, i32* %5
%163 = call i32 @mightbestats(i32 %161)
%164 = call i32 @myFputs(i8* %52, i32* %45, i32 %162, i32 %163)
br label %465
165: ; preds = %130
%166 = call i32 @token_stream_interesting(%struct.token_stream* %54)
%167 = icmp eq i32 %166, 0
br i1 %167, label %183, label %168
168: ; preds = %165
%169 = call i32 @line_isblank(i8* %52)
%170 = icmp eq i32 %169, 0
br i1 %170, label %171, label %180
171: ; preds = %168
%172 = call i32 @line_is0rows(i8* %52)
%173 = icmp eq i32 %172, 0
br i1 %173, label %174, label %180
174: ; preds = %171
%175 = call i32 @line_iserror(i8* %52)
%176 = icmp eq i32 %175, 0
br i1 %176, label %177, label %180
177: ; preds = %174
%178 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([42 x i8], [42 x i8]* @str.43, i64 0, i64 0))
%179 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([3 x i8], [3 x i8]* @.str.17, i64 0, i64 0), i8* %52)
br label %180
180: ; preds = %174, %171, %168, %177
%181 = phi i32 [ 0, %177 ], [ 3, %168 ], [ 0, %171 ], [ 0, %174 ]
%182 = call i32 @token_stream_advance(%struct.token_stream* %54, i32 1)
br label %211
183: ; preds = %165
%184 = call i32 @token_stream_is_get(%struct.token_stream* %54)
%185 = icmp eq i32 %184, 0
br i1 %185, label %201, label %186
186: ; preds = %183
%187 = call i32 @line_isblank(i8* %52)
%188 = icmp eq i32 %187, 0
br i1 %188, label %189, label %198
189: ; preds = %186
%190 = call i32 @line_is0rows(i8* %52)
%191 = icmp eq i32 %190, 0
br i1 %191, label %192, label %198
192: ; preds = %189
%193 = call i32 @line_iserror(i8* %52)
%194 = icmp eq i32 %193, 0
br i1 %194, label %195, label %198
195: ; preds = %192
%196 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([39 x i8], [39 x i8]* @str.42, i64 0, i64 0))
%197 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([3 x i8], [3 x i8]* @.str.17, i64 0, i64 0), i8* %52)
br label %198
198: ; preds = %192, %189, %186, %195
%199 = phi i32 [ 0, %195 ], [ 10, %186 ], [ 0, %189 ], [ 0, %192 ]
%200 = call i32 @token_stream_advance(%struct.token_stream* %54, i32 1)
br label %211
201: ; preds = %183
%202 = call i32 @line_isstmt(i8* %52)
%203 = icmp eq i32 %202, 0
br i1 %203, label %209, label %204
204: ; preds = %201
%205 = call i32 @token_stream_advance(%struct.token_stream* %54, i32 -1)
%206 = call i32 @line_strip(i8* %52)
%207 = call i32 @token_stream_add(%struct.token_stream* %54, i32 %206)
%208 = call i32 @interpretrc(i32 %207)
br label %211
209: ; preds = %201
%210 = call i32 @token_stream_advance(%struct.token_stream* %54, i32 1)
br label %211
211: ; preds = %198, %209, %204, %180
%212 = phi i32 [ 0, %180 ], [ 0, %198 ], [ %62, %204 ], [ %62, %209 ]
%213 = phi i32 [ %181, %180 ], [ %199, %198 ], [ %208, %204 ], [ 0, %209 ]
%214 = load i32, i32* %5
%215 = call i32 @mightbestats(i32 %213)
%216 = call i32 @myFputs(i8* %52, i32* %45, i32 %214, i32 %215)
br label %465
217: ; preds = %130
%218 = call i32 @line_isheading(i8* %52)
%219 = icmp eq i32 %218, 0
br i1 %219, label %220, label %242
220: ; preds = %217
%221 = call i32 @line_isblank(i8* %52)
%222 = icmp eq i32 %221, 0
br i1 %222, label %227, label %223
223: ; preds = %220
%224 = icmp eq i32 %62, 0
br i1 %224, label %225, label %242
225: ; preds = %223
%226 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([30 x i8], [30 x i8]* @str.41, i64 0, i64 0))
br label %242
227: ; preds = %220
%228 = call i32 @line_is0rows(i8* %52)
%229 = icmp eq i32 %228, 0
br i1 %229, label %230, label %242
230: ; preds = %227
%231 = call i32 @line_iserror(i8* %52)
%232 = icmp eq i32 %231, 0
br i1 %232, label %233, label %242
233: ; preds = %230
%234 = call i32 @line_iswarning(i8* %52)
%235 = icmp eq i32 %234, 0
br i1 %235, label %236, label %242
236: ; preds = %233
%237 = call i32 @line_isoptstats(i8* %52)
%238 = icmp eq i32 %237, 0
br i1 %238, label %239, label %242
239: ; preds = %236
%240 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([42 x i8], [42 x i8]* @str.43, i64 0, i64 0))
%241 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([3 x i8], [3 x i8]* @.str.17, i64 0, i64 0), i8* %52)
br label %242
242: ; preds = %236, %233, %230, %227, %223, %217, %225, %239
%243 = phi i32 [ 0, %225 ], [ 0, %239 ], [ 4, %217 ], [ 5, %223 ], [ 0, %227 ], [ 0, %230 ], [ 9, %233 ], [ 8, %236 ]
%244 = load i32, i32* %5
%245 = call i32 @mightbestats(i32 %243)
%246 = call i32 @myFputs(i8* %52, i32* %45, i32 %244, i32 %245)
br label %465
247: ; preds = %130
%248 = call i32 @line_isunderline(i8* %52)
%249 = icmp eq i32 %248, 0
br i1 %249, label %252, label %250
250: ; preds = %247
%251 = add nsw i32 %62, 1
br label %255
252: ; preds = %247
%253 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([36 x i8], [36 x i8]* @str.39, i64 0, i64 0))
%254 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([3 x i8], [3 x i8]* @.str.17, i64 0, i64 0), i8* %52)
br label %255
255: ; preds = %252, %250
%256 = phi i32 [ %251, %250 ], [ %62, %252 ]
%257 = phi i32 [ 3, %250 ], [ 0, %252 ]
%258 = load i32, i32* %5
%259 = call i32 @mightbestats(i32 %257)
%260 = call i32 @myFputs(i8* %52, i32* %45, i32 %258, i32 %259)
br label %465
261: ; preds = %130
%262 = call i32 @line_isunderline(i8* %52)
%263 = icmp eq i32 %262, 0
br i1 %263, label %306, label %264
264: ; preds = %261
%265 = add nsw i32 %62, 1
%266 = load i32, i32* %5
%267 = call i32 @mightbestats(i32 3)
%268 = call i32 @myFputs(i8* %52, i32* %45, i32 %266, i32 %267)
br label %465
269: ; preds = %130
%270 = icmp eq i32 %64, 1
%271 = icmp ne i32 %63, 0
%272 = select i1 %270, i1 %271, i1 false
br i1 %272, label %273, label %306
273: ; preds = %269
%274 = call i32 @line_isnnrows(i8* %52)
%275 = icmp eq i32 %274, 0
br i1 %275, label %310, label %276
276: ; preds = %273
%277 = call %struct.row* @row_list_remove_min(%struct.row_list* %55)
%278 = icmp eq %struct.row* %277, null
br i1 %278, label %294, label %279
279: ; preds = %276, %290
%280 = phi %struct.row* [ %292, %290 ], [ %277, %276 ]
%281 = call i8* @row_remove(%struct.row* %280)
%282 = icmp eq i8* %281, null
br i1 %282, label %290, label %283
283: ; preds = %279, %283
%284 = phi i8* [ %288, %283 ], [ %281, %279 ]
%285 = load i32, i32* %5
%286 = call i32 @mightbestats(i32 6)
%287 = call i32 @myFputs(i8* %284, i32* %45, i32 %285, i32 %286)
%288 = call i8* @row_remove(%struct.row* %280)
%289 = icmp eq i8* %288, null
br i1 %289, label %290, label %283
290: ; preds = %283, %279
%291 = call i32 @row_destroy(%struct.row* %280)
%292 = call %struct.row* @row_list_remove_min(%struct.row_list* %55)
%293 = icmp eq %struct.row* %292, null
br i1 %293, label %294, label %279
294: ; preds = %290, %276
%295 = call i8* @row_remove(%struct.row* %59)
%296 = load i32, i32* %5
%297 = call i32 @mightbestats(i32 6)
%298 = call i32 @myFputs(i8* %295, i32* %45, i32 %296, i32 %297)
%299 = call i32 @row_destroy(%struct.row* %59)
%300 = load i32, i32* %5
%301 = call i32 @mightbestats(i32 6)
%302 = call i32 @myFputs(i8* %52, i32* %45, i32 %300, i32 %301)
%303 = call i32 @token_stream_interesting(%struct.token_stream* %54)
%304 = icmp eq i32 %303, 0
%305 = select i1 %304, i32 0, i32 2
br label %465
306: ; preds = %261, %269
%307 = phi i32 [ %63, %269 ], [ 0, %261 ]
%308 = phi i32 [ %64, %269 ], [ 0, %261 ]
%309 = icmp eq i32 %308, %62
br i1 %309, label %312, label %314
310: ; preds = %273
%311 = icmp eq i32 %62, 1
br i1 %311, label %312, label %321
312: ; preds = %310, %306
%313 = call i32 @row_list_add(%struct.row_list* %55, %struct.row* %59)
br label %316
314: ; preds = %306
%315 = icmp eq i32 %308, 0
br i1 %315, label %316, label %321
316: ; preds = %312, %314
%317 = call i32 @line_isblank(i8* %52)
%318 = icmp ne i32 %317, 0
%319 = zext i1 %318 to i32
%320 = call %struct.row* @row_create(i32 %62)
br label %321
321: ; preds = %310, %316, %314
%322 = phi i32 [ 0, %316 ], [ %308, %314 ], [ 1, %310 ]
%323 = phi i32 [ %319, %316 ], [ %307, %314 ], [ %63, %310 ]
%324 = phi %struct.row* [ %320, %316 ], [ %59, %314 ], [ %59, %310 ]
%325 = call i32 @row_add(%struct.row* %324, i8* %52)
%326 = add nsw i32 %322, 1
br label %465
327: ; preds = %130
%328 = call i32 @line_isignore(i8* %52)
%329 = icmp eq i32 %328, 0
%330 = select i1 %329, i32 7, i32 %61
%331 = load i32, i32* %5
%332 = call i32 @mightbestats(i32 %330)
%333 = call i32 @myFputs(i8* %52, i32* %45, i32 %331, i32 %332)
br label %465
334: ; preds = %130
%335 = call i32 @line_isblank(i8* %52)
%336 = icmp eq i32 %335, 0
br i1 %336, label %337, label %343
337: ; preds = %334
%338 = call i32 @line_isoptstats(i8* %52)
%339 = icmp eq i32 %338, 0
br i1 %339, label %340, label %343
340: ; preds = %337
%341 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([49 x i8], [49 x i8]* @.str.34, i64 0, i64 0))
%342 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([3 x i8], [3 x i8]* @.str.17, i64 0, i64 0), i8* %52)
br label %343
343: ; preds = %334, %337, %340
%344 = phi i32 [ 8, %337 ], [ 0, %340 ], [ 3, %334 ]
%345 = load i32, i32* %5
%346 = call i32 @mightbestats(i32 %344)
%347 = call i32 @myFputs(i8* %52, i32* %45, i32 %345, i32 %346)
br label %465
348: ; preds = %130
%349 = call i32 @line_isblank(i8* %52)
%350 = icmp eq i32 %349, 0
br i1 %350, label %351, label %355
351: ; preds = %348
%352 = call i32 @line_iswarning(i8* %52)
%353 = icmp eq i32 %352, 0
%354 = select i1 %353, i32 0, i32 9
br label %355
355: ; preds = %351, %348
%356 = phi i32 [ 3, %348 ], [ %354, %351 ]
%357 = load i32, i32* %5
%358 = call i32 @mightbestats(i32 %356)
%359 = call i32 @myFputs(i8* %52, i32* %45, i32 %357, i32 %358)
br label %465
360: ; preds = %130
%361 = call i32 @line_isheading(i8* %52)
%362 = icmp eq i32 %361, 0
br i1 %362, label %363, label %375
363: ; preds = %360
%364 = call i32 @line_issqloperationcomplete(i8* %52)
%365 = icmp eq i32 %364, 0
br i1 %365, label %366, label %375
366: ; preds = %363
%367 = call i32 @line_iserror(i8* %52)
%368 = icmp eq i32 %367, 0
br i1 %368, label %369, label %375
369: ; preds = %366
%370 = call i32 @line_iswarning(i8* %52)
%371 = icmp eq i32 %370, 0
br i1 %371, label %372, label %375
372: ; preds = %369
%373 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([39 x i8], [39 x i8]* @str.42, i64 0, i64 0))
%374 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([3 x i8], [3 x i8]* @.str.17, i64 0, i64 0), i8* %52)
br label %375
375: ; preds = %369, %366, %363, %360, %372
%376 = phi i32 [ 0, %372 ], [ 11, %360 ], [ 0, %363 ], [ 0, %366 ], [ 9, %369 ]
%377 = load i32, i32* %5
%378 = call i32 @mightbestats(i32 %376)
%379 = call i32 @myFputs(i8* %52, i32* %45, i32 %377, i32 %378)
br label %465
380: ; preds = %130
%381 = call i32 @line_isgetheadingorfooting(i8* %52)
%382 = icmp eq i32 %381, 0
br i1 %382, label %385, label %383
383: ; preds = %380
%384 = add nsw i32 %62, 1
br label %397
385: ; preds = %380
%386 = call i32 @line_is0rows(i8* %52)
%387 = icmp eq i32 %386, 0
br i1 %387, label %388, label %397
388: ; preds = %385
%389 = call i32 @line_iserror(i8* %52)
%390 = icmp eq i32 %389, 0
br i1 %390, label %391, label %397
391: ; preds = %388
%392 = call i32 @line_iswarning(i8* %52)
%393 = icmp eq i32 %392, 0
br i1 %393, label %394, label %397
394: ; preds = %391
%395 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([39 x i8], [39 x i8]* @str.42, i64 0, i64 0))
%396 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([3 x i8], [3 x i8]* @.str.17, i64 0, i64 0), i8* %52)
br label %397
397: ; preds = %391, %388, %385, %394, %383
%398 = phi i32 [ %384, %383 ], [ %62, %394 ], [ %62, %385 ], [ %62, %388 ], [ %62, %391 ]
%399 = phi i32 [ 12, %383 ], [ 0, %394 ], [ 0, %385 ], [ 0, %388 ], [ 9, %391 ]
%400 = load i32, i32* %5
%401 = call i32 @mightbestats(i32 %399)
%402 = call i32 @myFputs(i8* %52, i32* %45, i32 %400, i32 %401)
br label %465
403: ; preds = %130
%404 = call i32 @line_isblank(i8* %52)
%405 = icmp eq i32 %404, 0
br i1 %405, label %406, label %409
406: ; preds = %403
%407 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([36 x i8], [36 x i8]* @str, i64 0, i64 0))
%408 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([3 x i8], [3 x i8]* @.str.17, i64 0, i64 0), i8* %52)
br label %409
409: ; preds = %403, %406
%410 = phi i32 [ %64, %406 ], [ 0, %403 ]
%411 = phi i32 [ 0, %406 ], [ 13, %403 ]
%412 = load i32, i32* %5
%413 = call i32 @mightbestats(i32 %411)
%414 = call i32 @myFputs(i8* %52, i32* %45, i32 %412, i32 %413)
br label %465
415: ; preds = %130
%416 = call i32 @line_isblank(i8* %52)
%417 = icmp eq i32 %416, 0
br i1 %417, label %450, label %418
418: ; preds = %415
%419 = icmp eq %struct.row* %59, null
br i1 %419, label %422, label %420
420: ; preds = %418
%421 = call i32 @row_list_add(%struct.row_list* %55, %struct.row* %59)
br label %422
422: ; preds = %420, %418
%423 = call %struct.row* @row_list_remove_min(%struct.row_list* %55)
%424 = icmp eq %struct.row* %423, null
br i1 %424, label %440, label %425
425: ; preds = %422, %436
%426 = phi %struct.row* [ %438, %436 ], [ %423, %422 ]
%427 = call i8* @row_remove(%struct.row* %426)
%428 = icmp eq i8* %427, null
br i1 %428, label %436, label %429
429: ; preds = %425, %429
%430 = phi i8* [ %434, %429 ], [ %427, %425 ]
%431 = load i32, i32* %5
%432 = call i32 @mightbestats(i32 13)
%433 = call i32 @myFputs(i8* %430, i32* %45, i32 %431, i32 %432)
%434 = call i8* @row_remove(%struct.row* %426)
%435 = icmp eq i8* %434, null
br i1 %435, label %436, label %429
436: ; preds = %429, %425
%437 = call i32 @row_destroy(%struct.row* %426)
%438 = call %struct.row* @row_list_remove_min(%struct.row_list* %55)
%439 = icmp eq %struct.row* %438, null
br i1 %439, label %440, label %425
440: ; preds = %436, %422
%441 = load i32, i32* %5
%442 = call i32 @mightbestats(i32 13)
%443 = call i32 @myFputs(i8* %52, i32* %45, i32 %441, i32 %442)
%444 = call i32 @token_stream_interesting(%struct.token_stream* %54)
%445 = icmp eq i32 %444, 0
br i1 %445, label %446, label %465
446: ; preds = %440
%447 = call i32 @token_stream_is_get(%struct.token_stream* %54)
%448 = icmp eq i32 %447, 0
%449 = select i1 %448, i32 0, i32 2
br label %465
450: ; preds = %415
%451 = icmp eq i32 %64, %62
br i1 %451, label %452, label %454
452: ; preds = %450
%453 = call i32 @row_list_add(%struct.row_list* %55, %struct.row* %59)
br label %456
454: ; preds = %450
%455 = icmp eq i32 %64, 0
br i1 %455, label %456, label %458
456: ; preds = %452, %454
%457 = call %struct.row* @row_create(i32 %62)
br label %458
458: ; preds = %456, %454
%459 = phi i32 [ 0, %456 ], [ %64, %454 ]
%460 = phi %struct.row* [ %457, %456 ], [ %59, %454 ]
%461 = call i32 @row_add(%struct.row* %460, i8* %52)
%462 = add nsw i32 %459, 1
br label %465
463: ; preds = %130
%464 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([27 x i8], [27 x i8]* @.str.36, i64 0, i64 0), i32 %60)
br label %465
465: ; preds = %440, %446, %458, %294, %321, %463, %409, %397, %375, %355, %343, %327, %264, %255, %242, %211, %159, %141
%466 = phi i32 [ %64, %463 ], [ %462, %458 ], [ %410, %409 ], [ %64, %397 ], [ %64, %375 ], [ %64, %355 ], [ %64, %343 ], [ %64, %327 ], [ 1, %294 ], [ %326, %321 ], [ %64, %264 ], [ %64, %255 ], [ %64, %242 ], [ %64, %211 ], [ %64, %159 ], [ %64, %141 ], [ %64, %446 ], [ %64, %440 ]
%467 = phi i32 [ %63, %463 ], [ %63, %458 ], [ %63, %409 ], [ %63, %397 ], [ %63, %375 ], [ %63, %355 ], [ %63, %343 ], [ %63, %327 ], [ 0, %294 ], [ %323, %321 ], [ %63, %264 ], [ %63, %255 ], [ %63, %242 ], [ %63, %211 ], [ %63, %159 ], [ %63, %141 ], [ %63, %446 ], [ %63, %440 ]
%468 = phi i32 [ %62, %463 ], [ %62, %458 ], [ %62, %409 ], [ %398, %397 ], [ %62, %375 ], [ %62, %355 ], [ %62, %343 ], [ %62, %327 ], [ %62, %294 ], [ %62, %321 ], [ %265, %264 ], [ %256, %255 ], [ %62, %242 ], [ %212, %211 ], [ %62, %159 ], [ %62, %141 ], [ %62, %446 ], [ %62, %440 ]
%469 = phi i32 [ %61, %463 ], [ %61, %458 ], [ %61, %409 ], [ %61, %397 ], [ %61, %375 ], [ %61, %355 ], [ %61, %343 ], [ %61, %327 ], [ %61, %294 ], [ %61, %321 ], [ %61, %264 ], [ %61, %255 ], [ %61, %242 ], [ %61, %211 ], [ %160, %159 ], [ %142, %141 ], [ %61, %446 ], [ %61, %440 ]
%470 = phi i32 [ %60, %463 ], [ 13, %458 ], [ %411, %409 ], [ %399, %397 ], [ %376, %375 ], [ %356, %355 ], [ %344, %343 ], [ %330, %327 ], [ %305, %294 ], [ 6, %321 ], [ 3, %264 ], [ %257, %255 ], [ %243, %242 ], [ %213, %211 ], [ %161, %159 ], [ %143, %141 ], [ %449, %446 ], [ 2, %440 ]
%471 = phi %struct.row* [ %59, %463 ], [ %460, %458 ], [ %59, %409 ], [ %59, %397 ], [ %59, %375 ], [ %59, %355 ], [ %59, %343 ], [ %59, %327 ], [ null, %294 ], [ %324, %321 ], [ %59, %264 ], [ %59, %255 ], [ %59, %242 ], [ %59, %211 ], [ %59, %159 ], [ %59, %141 ], [ null, %446 ], [ null, %440 ]
%472 = call i32* @fgets(i8* %52, i32 5000, i32* %37)
%473 = icmp eq i32* %472, null
br i1 %473, label %474, label %58
474: ; preds = %465, %80, %51
%475 = call i32 @fclose(i32* %37)
%476 = call i32 @fclose(i32* %45)
br label %477
477: ; preds = %39, %474, %47, %19
ret i32 0
}