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

/* Forward declarations */

/* Type definitions */
typedef int /*<<< orphan*/ FILE;

/* Variables and functions */
int EOF;
int /*<<< orphan*/ exit(int);
scalar_t__ fclose(int /*<<< orphan*/ *);
scalar_t__ ferror(int /*<<< orphan*/ *);
int /*<<< orphan*/ *fopen(char *, char *);
int /*<<< orphan*/ fprintf(int /*<<< orphan*/ *, char *, ...);
int getc(int /*<<< orphan*/);
char *malloc(int);
int scanf(char *, int *);
int /*<<< orphan*/ stderr;
int /*<<< orphan*/ stdin;
int /*<<< orphan*/ strcat(char *, char const *);
int /*<<< orphan*/ strcpy(char *, char const *);
char *strdup(char const *);
int strlen(char const *);
int /*<<< orphan*/ ungetc(int, int /*<<< orphan*/);
int main(int argc, char *argv[]) {
  const char *charsetname;
  const char *filename;
  const char *directory;
  char *c_charsetname;
  int charset2uni[0x100];
  if (argc != 3 && argc != 4)
    exit(1);
  charsetname = argv[1];
  filename = argv[2];
  directory = (argc > 3 ? argv[3] : "");
  fprintf(stderr, "Creating %s%s\n", directory, filename);
  {
    int i, c;
    for (i = 0; i < 0x100; i++)
      charset2uni[i] = 0xfffd;
    for (;;) {
      c = getc(stdin);
      if (c == EOF)
        break;
      if (c == '\n' || c == ' ' || c == '\t')
        continue;
      if (c == '#') {
        do {
          c = getc(stdin);
        } while (!(c == EOF || c == '\n'));
        continue;
      }
      ungetc(c, stdin);
      if (scanf("0x%x", &i) != 1 || !(i >= 0 && i < 0x100))
        exit(1);
      do {
        c = getc(stdin);
      } while (c == ' ' || c == '\t');
      if (c != EOF)
        ungetc(c, stdin);
      if (c == '\n' || c == '#')
        continue;
      if (scanf("0x%x", &charset2uni[i]) != 1)
        exit(1);
    }
  }
  {
    FILE *f;
    bool pages[0x100];
    int i, i1, i2, i3, j, j1, j2, p, p1, p2;
    {
      char *fname = malloc(strlen(directory) + strlen(filename) + 1);
      strcpy(fname, directory);
      strcat(fname, filename);
      f = fopen(fname, "w");
      if (f == NULL)
        exit(1);
    }
    c_charsetname = strdup(charsetname);
    for (i = 0; i < strlen(c_charsetname); i++)
      if (c_charsetname[i] == '-')
        c_charsetname[i] = '_';
    fprintf(f, "/*\n");
    fprintf(f, " * nls_%s.c\n", charsetname);
    fprintf(f, " *\n");
    fprintf(f, " * Charset %s translation tables.\n", charsetname);
    fprintf(f, " * Generated automatically by the nls_table utility.\n");
    fprintf(f, " */\n");
    fprintf(f, "\n");
    fprintf(f, "#define charset2uni %s_charset2uni\n", c_charsetname);
    fprintf(f, "\n");
    fprintf(f, "static const unsigned short charset2uni[256] = {\n");
    for (i1 = 0; i1 < 16; i1++) {
      fprintf(f, "  /* 0x%02x */\n", 16 * i1);
      for (i2 = 0; i2 < 2; i2++) {
        fprintf(f, "  ");
        for (i3 = 0; i3 < 8; i3++) {
          if (i3 > 0)
            fprintf(f, " ");
          i = 16 * i1 + 8 * i2 + i3;
          j = charset2uni[i];
          fprintf(f, "0x%04x%s", j, i < 255 ? "," : " ");
        }
        fprintf(f, "\n");
      }
    }
    fprintf(f, "};\n");
    fprintf(f, "\n");
    for (i = 0; i < 0x100; i++)
      pages[i] = false;
    for (i = 0; i < 0x100; i++)
      if (charset2uni[i] != 0xfffd)
        pages[charset2uni[i] >> 8] = true;
    fprintf(f, "#define uni2charset %s_uni2charset\n", c_charsetname);
    for (p = 0; p < 0x100; p++)
      if (pages[p])
        fprintf(f, "#define page%02x %s_page%02x\n", p, c_charsetname, p);
    fprintf(f, "\n");
    for (p = 0; p < 0x100; p++)
      if (pages[p]) {
        fprintf(f, "static const unsigned char page%02x[256] = {\n", p);
        for (j1 = 0; j1 < 32; j1++) {
          fprintf(f, "  ");
          for (j2 = 0; j2 < 8; j2++) {
            j = 256 * p + 8 * j1 + j2;
            if (j != 0xfffd) {
              for (i = 0; i < 256; i++)
                if (charset2uni[i] == j)
                  break;
              if (i == 256)
                i = 0;
            } else
              i = 0;
            fprintf(f, "0x%02x%s ", i, 8 * j1 + j2 < 255 ? "," : " ");
          }
          fprintf(f, "/* 0x%02x-0x%02x */\n", 8 * j1, 8 * j1 + 7);
        }
        fprintf(f, "};\n");
        fprintf(f, "\n");
      }
    fprintf(f, "static const unsigned char * const uni2charset[256] = {\n");
    for (p1 = 0; p1 < 32; p1++) {
      fprintf(f, "  ");
      for (p2 = 0; p2 < 8; p2++) {
        p = 8 * p1 + p2;
        if (pages[p])
          fprintf(f, "page%02x", p);
        else
          fprintf(f, "nopage");
        fprintf(f, "%s ", p < 255 ? "," : " ");
      }
      fprintf(f, "\n");
    }
    fprintf(f, "};\n");
    fprintf(f, "\n");
    for (p = 0x100 - 1; p >= 0; p--)
      if (pages[p])
        fprintf(f, "#undef page%02x\n", p);
    fprintf(f, "\n");
    fprintf(f, "struct nls_table_t nls_%s_table = {\n", c_charsetname);
    fprintf(f, "  \"%s\",\n", charsetname);
    fprintf(f, "  uni2charset,\n");
    fprintf(f, "  charset2uni,\n");
    {
      bool is_ascii_extension = true;
      for (i = 0; i < 128; i++)
        if (charset2uni[i] != i) {
          is_ascii_extension = false;
          break;
        }
      fprintf(f, "  %s\n", is_ascii_extension ? "1" : "0");
    }
    fprintf(f, "};\n");
    fprintf(f, "\n");
    fprintf(f, "#undef uni2charset\n");
    fprintf(f, "#undef charset2uni\n");
    fprintf(f, "\n");
    if (ferror(f) || fclose(f))
      exit(1);
  }
  exit(0);
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0x890,%rsp
movl   $0x0,-0x4(%rbp)
mov    %edi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
cmpl   $0x3,-0x8(%rbp)
je     1207 <main+0x37>
cmpl   $0x4,-0x8(%rbp)
je     1207 <main+0x37>
mov    $0x1,%edi
call   10d0 <exit@plt>
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%rax
mov    %rax,-0x18(%rbp)
mov    -0x10(%rbp),%rax
mov    0x10(%rax),%rax
mov    %rax,-0x20(%rbp)
cmpl   $0x3,-0x8(%rbp)
jle    123d <main+0x6d>
mov    -0x10(%rbp),%rax
mov    0x18(%rax),%rax
mov    %rax,-0x880(%rbp)
jmp    1250 <main+0x80>
lea    0xde6(%rip),%rax
mov    %rax,-0x880(%rbp)
jmp    1250 <main+0x80>
mov    -0x880(%rbp),%rax
mov    %rax,-0x28(%rbp)
mov    0x2d6e(%rip),%rax
movslq (%rax),%rdi
mov    -0x28(%rbp),%rdx
mov    -0x20(%rbp),%rcx
lea    0xd8c(%rip),%rsi
mov    $0x0,%al
call   1070 <fprintf@plt>
movl   $0x0,-0x434(%rbp)
cmpl   $0x100,-0x434(%rbp)
jge    12bb <main+0xeb>
movslq -0x434(%rbp),%rax
movl   $0xfffd,-0x430(%rbp,%rax,4)
mov    -0x434(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x434(%rbp)
jmp    1285 <main+0xb5>
jmp    12c0 <main+0xf0>
mov    0x2d21(%rip),%rax
mov    (%rax),%edi
call   10f0 <getc@plt>
mov    %eax,-0x438(%rbp)
mov    -0x438(%rbp),%eax
mov    0x2cff(%rip),%rcx
cmp    (%rcx),%eax
jne    12ee <main+0x11e>
jmp    14a6 <main+0x2d6>
cmpl   $0xa,-0x438(%rbp)
je     1315 <main+0x145>
cmpl   $0x20,-0x438(%rbp)
je     1315 <main+0x145>
cmpl   $0x9,-0x438(%rbp)
jne    131a <main+0x14a>
jmp    12c0 <main+0xf0>
cmpl   $0x23,-0x438(%rbp)
jne    1382 <main+0x1b2>
jmp    132c <main+0x15c>
mov    0x2cb5(%rip),%rax
mov    (%rax),%edi
call   10f0 <getc@plt>
mov    %eax,-0x438(%rbp)
mov    -0x438(%rbp),%ecx
mov    $0x1,%al
mov    0x2c91(%rip),%rdx
cmp    (%rdx),%ecx
mov    %al,-0x881(%rbp)
je     136d <main+0x19d>
cmpl   $0xa,-0x438(%rbp)
sete   %al
mov    %al,-0x881(%rbp)
mov    -0x881(%rbp),%al
xor    $0xff,%al
test   $0x1,%al
jne    132c <main+0x15c>
jmp    12c0 <main+0xf0>
mov    -0x438(%rbp),%edi
mov    0x2c59(%rip),%rax
mov    (%rax),%esi
call   1090 <ungetc@plt>
lea    0xc72(%rip),%rdi
lea    -0x434(%rbp),%rsi
call   10a0 <scanf@plt>
cmp    $0x1,%eax
jne    13cf <main+0x1ff>
cmpl   $0x0,-0x434(%rbp)
jl     13cf <main+0x1ff>
cmpl   $0x100,-0x434(%rbp)
jl     13d9 <main+0x209>
mov    $0x1,%edi
call   10d0 <exit@plt>
jmp    13de <main+0x20e>
mov    0x2c03(%rip),%rax
mov    (%rax),%edi
call   10f0 <getc@plt>
mov    %eax,-0x438(%rbp)
mov    $0x1,%al
cmpl   $0x20,-0x438(%rbp)
mov    %al,-0x882(%rbp)
je     1417 <main+0x247>
cmpl   $0x9,-0x438(%rbp)
sete   %al
mov    %al,-0x882(%rbp)
mov    -0x882(%rbp),%al
test   $0x1,%al
jne    13de <main+0x20e>
mov    -0x438(%rbp),%eax
mov    0x2bae(%rip),%rcx
cmp    (%rcx),%eax
je     144e <main+0x27e>
mov    -0x438(%rbp),%edi
mov    0x2ba1(%rip),%rax
mov    (%rax),%esi
call   1090 <ungetc@plt>
cmpl   $0xa,-0x438(%rbp)
je     1468 <main+0x298>
cmpl   $0x23,-0x438(%rbp)
jne    146d <main+0x29d>
jmp    12c0 <main+0xf0>
movslq -0x434(%rbp),%rax
lea    -0x430(%rbp),%rsi
shl    $0x2,%rax
add    %rax,%rsi
lea    0xb86(%rip),%rdi
call   10a0 <scanf@plt>
cmp    $0x1,%eax
je     14a1 <main+0x2d1>
mov    $0x1,%edi
call   10d0 <exit@plt>
jmp    12c0 <main+0xf0>
mov    -0x28(%rbp),%rdi
call   1060 <strlen@plt>
mov    %eax,-0x888(%rbp)
mov    -0x20(%rbp),%rdi
call   1060 <strlen@plt>
mov    -0x888(%rbp),%edi
add    %eax,%edi
add    $0x1,%edi
call   1080 <malloc@plt>
mov    %rax,-0x870(%rbp)
mov    -0x870(%rbp),%rdi
mov    -0x28(%rbp),%rsi
call   1030 <strcpy@plt>
mov    -0x870(%rbp),%rdi
mov    -0x20(%rbp),%rsi
call   10c0 <strcat@plt>
mov    -0x870(%rbp),%rdi
lea    0xb11(%rip),%rsi
call   10b0 <fopen@plt>
mov    %rax,-0x440(%rbp)
cmpq   $0x0,-0x440(%rbp)
jne    1527 <main+0x357>
mov    $0x1,%edi
call   10d0 <exit@plt>
mov    -0x18(%rbp),%rdi
call   10e0 <strdup@plt>
mov    %rax,-0x30(%rbp)
movl   $0x0,-0x844(%rbp)
mov    -0x844(%rbp),%eax
mov    %eax,-0x88c(%rbp)
mov    -0x30(%rbp),%rdi
call   1060 <strlen@plt>
mov    %eax,%ecx
mov    -0x88c(%rbp),%eax
cmp    %ecx,%eax
jge    15a3 <main+0x3d3>
mov    -0x30(%rbp),%rax
movslq -0x844(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x2d,%eax
jne    158a <main+0x3ba>
mov    -0x30(%rbp),%rax
movslq -0x844(%rbp),%rcx
movb   $0x5f,(%rax,%rcx,1)
jmp    158f <main+0x3bf>
mov    -0x844(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x844(%rbp)
jmp    153e <main+0x36e>
mov    -0x440(%rbp),%rdi
lea    0xa65(%rip),%rsi
mov    $0x0,%al
call   1070 <fprintf@plt>
mov    -0x440(%rbp),%rdi
mov    -0x18(%rbp),%rdx
lea    0xa50(%rip),%rsi
mov    $0x0,%al
call   1070 <fprintf@plt>
mov    -0x440(%rbp),%rdi
lea    0xa48(%rip),%rsi
mov    $0x0,%al
call   1070 <fprintf@plt>
mov    -0x440(%rbp),%rdi
mov    -0x18(%rbp),%rdx
lea    0xa33(%rip),%rsi
mov    $0x0,%al
call   1070 <fprintf@plt>
mov    -0x440(%rbp),%rdi
lea    0xa41(%rip),%rsi
mov    $0x0,%al
call   1070 <fprintf@plt>
mov    -0x440(%rbp),%rdi
lea    0xac3(%rip),%rsi
mov    $0x0,%al
call   1070 <fprintf@plt>
mov    -0x440(%rbp),%rdi
lea    0x9f2(%rip),%rsi
mov    $0x0,%al
call   1070 <fprintf@plt>
mov    -0x440(%rbp),%rdi
mov    -0x30(%rbp),%rdx
lea    0xa34(%rip),%rsi
mov    $0x0,%al
call   1070 <fprintf@plt>
mov    -0x440(%rbp),%rdi
lea    0x9c4(%rip),%rsi
mov    $0x0,%al
call   1070 <fprintf@plt>
mov    -0x440(%rbp),%rdi
lea    0xa2e(%rip),%rsi
mov    $0x0,%al
call   1070 <fprintf@plt>
movl   $0x0,-0x848(%rbp)
cmpl   $0x10,-0x848(%rbp)
jge    17de <main+0x60e>
mov    -0x440(%rbp),%rdi
mov    -0x848(%rbp),%edx
shl    $0x4,%edx
lea    0xa2b(%rip),%rsi
mov    $0x0,%al
call   1070 <fprintf@plt>
movl   $0x0,-0x84c(%rbp)
cmpl   $0x2,-0x84c(%rbp)
jge    17c5 <main+0x5f5>
mov    -0x440(%rbp),%rdi
lea    0xa0f(%rip),%rsi
mov    $0x0,%al
call   1070 <fprintf@plt>
movl   $0x0,-0x850(%rbp)
cmpl   $0x8,-0x850(%rbp)
jge    179c <main+0x5cc>
cmpl   $0x0,-0x850(%rbp)
jle    171b <main+0x54b>
mov    -0x440(%rbp),%rdi
lea    0x9d7(%rip),%rsi
mov    $0x0,%al
call   1070 <fprintf@plt>
mov    -0x848(%rbp),%eax
shl    $0x4,%eax
mov    -0x84c(%rbp),%ecx
shl    $0x3,%ecx
add    %ecx,%eax
add    -0x850(%rbp),%eax
mov    %eax,-0x844(%rbp)
movslq -0x844(%rbp),%rax
mov    -0x430(%rbp,%rax,4),%eax
mov    %eax,-0x854(%rbp)
mov    -0x440(%rbp),%rdi
mov    -0x854(%rbp),%edx
mov    -0x844(%rbp),%esi
lea    0x982(%rip),%rcx
lea    0x986(%rip),%rax
cmp    $0xff,%esi
cmovl  %rax,%rcx
lea    0x96c(%rip),%rsi
mov    $0x0,%al
call   1070 <fprintf@plt>
mov    -0x850(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x850(%rbp)
jmp    16ec <main+0x51c>
mov    -0x440(%rbp),%rdi
lea    0x87f(%rip),%rsi
mov    $0x0,%al
call   1070 <fprintf@plt>
mov    -0x84c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x84c(%rbp)
jmp    16c0 <main+0x4f0>
jmp    17ca <main+0x5fa>
mov    -0x848(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x848(%rbp)
jmp    168b <main+0x4bb>
mov    -0x440(%rbp),%rdi
lea    0x90c(%rip),%rsi
mov    $0x0,%al
call   1070 <fprintf@plt>
mov    -0x440(%rbp),%rdi
lea    0x828(%rip),%rsi
mov    $0x0,%al
call   1070 <fprintf@plt>
movl   $0x0,-0x844(%rbp)
cmpl   $0x100,-0x844(%rbp)
jge    1848 <main+0x678>
movslq -0x844(%rbp),%rax
movl   $0x0,-0x840(%rbp,%rax,4)
mov    -0x844(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x844(%rbp)
jmp    1812 <main+0x642>
movl   $0x0,-0x844(%rbp)
cmpl   $0x100,-0x844(%rbp)
jge    18b1 <main+0x6e1>
movslq -0x844(%rbp),%rax
cmpl   $0xfffd,-0x430(%rbp,%rax,4)
je     1898 <main+0x6c8>
movslq -0x844(%rbp),%rax
mov    -0x430(%rbp,%rax,4),%eax
sar    $0x8,%eax
cltq
movl   $0x1,-0x840(%rbp,%rax,4)
jmp    189d <main+0x6cd>
mov    -0x844(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x844(%rbp)
jmp    1852 <main+0x682>
mov    -0x440(%rbp),%rdi
mov    -0x30(%rbp),%rdx
lea    0x839(%rip),%rsi
mov    $0x0,%al
call   1070 <fprintf@plt>
movl   $0x0,-0x860(%rbp)
cmpl   $0x100,-0x860(%rbp)
jge    1938 <main+0x768>
movslq -0x860(%rbp),%rax
cmpl   $0x0,-0x840(%rbp,%rax,4)
je     191f <main+0x74f>
mov    -0x440(%rbp),%rdi
mov    -0x860(%rbp),%edx
mov    -0x30(%rbp),%rcx
mov    -0x860(%rbp),%r8d
lea    0x808(%rip),%rsi
mov    $0x0,%al
call   1070 <fprintf@plt>
jmp    1924 <main+0x754>
mov    -0x860(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x860(%rbp)
jmp    18d4 <main+0x704>
mov    -0x440(%rbp),%rdi
lea    0x6e3(%rip),%rsi
mov    $0x0,%al
call   1070 <fprintf@plt>
movl   $0x0,-0x860(%rbp)
cmpl   $0x100,-0x860(%rbp)
jge    1b5c <main+0x98c>
movslq -0x860(%rbp),%rax
cmpl   $0x0,-0x840(%rbp,%rax,4)
je     1b43 <main+0x973>
mov    -0x440(%rbp),%rdi
mov    -0x860(%rbp),%edx
lea    0x7ae(%rip),%rsi
mov    $0x0,%al
call   1070 <fprintf@plt>
movl   $0x0,-0x858(%rbp)
cmpl   $0x20,-0x858(%rbp)
jge    1b19 <main+0x949>
mov    -0x440(%rbp),%rdi
lea    0x72e(%rip),%rsi
mov    $0x0,%al
call   1070 <fprintf@plt>
movl   $0x0,-0x85c(%rbp)
cmpl   $0x8,-0x85c(%rbp)
jge    1adb <main+0x90b>
mov    -0x860(%rbp),%eax
shl    $0x8,%eax
mov    -0x858(%rbp),%ecx
shl    $0x3,%ecx
add    %ecx,%eax
add    -0x85c(%rbp),%eax
mov    %eax,-0x854(%rbp)
cmpl   $0xfffd,-0x854(%rbp)
je     1a7b <main+0x8ab>
movl   $0x0,-0x844(%rbp)
cmpl   $0x100,-0x844(%rbp)
jge    1a5c <main+0x88c>
movslq -0x844(%rbp),%rax
mov    -0x430(%rbp,%rax,4),%eax
cmp    -0x854(%rbp),%eax
jne    1a43 <main+0x873>
jmp    1a5c <main+0x88c>
jmp    1a48 <main+0x878>
mov    -0x844(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x844(%rbp)
jmp    1a14 <main+0x844>
cmpl   $0x100,-0x844(%rbp)
jne    1a76 <main+0x8a6>
movl   $0x0,-0x844(%rbp)
jmp    1a85 <main+0x8b5>
movl   $0x0,-0x844(%rbp)
mov    -0x440(%rbp),%rdi
mov    -0x844(%rbp),%edx
mov    -0x858(%rbp),%esi
shl    $0x3,%esi
add    -0x85c(%rbp),%esi
lea    0x643(%rip),%rcx
lea    0x647(%rip),%rax
cmp    $0xff,%esi
cmovl  %rax,%rcx
lea    0x6ac(%rip),%rsi
mov    $0x0,%al
call   1070 <fprintf@plt>
mov    -0x85c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x85c(%rbp)
jmp    19cd <main+0x7fd>
mov    -0x440(%rbp),%rdi
mov    -0x858(%rbp),%edx
shl    $0x3,%edx
mov    -0x858(%rbp),%ecx
shl    $0x3,%ecx
add    $0x7,%ecx
lea    0x678(%rip),%rsi
mov    $0x0,%al
call   1070 <fprintf@plt>
mov    -0x858(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x858(%rbp)
jmp    19a1 <main+0x7d1>
mov    -0x440(%rbp),%rdi
lea    0x5d1(%rip),%rsi
mov    $0x0,%al
call   1070 <fprintf@plt>
mov    -0x440(%rbp),%rdi
lea    0x4ed(%rip),%rsi
mov    $0x0,%al
call   1070 <fprintf@plt>
jmp    1b48 <main+0x978>
mov    -0x860(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x860(%rbp)
jmp    1957 <main+0x787>
mov    -0x440(%rbp),%rdi
lea    0x621(%rip),%rsi
mov    $0x0,%al
call   1070 <fprintf@plt>
movl   $0x0,-0x864(%rbp)
cmpl   $0x20,-0x864(%rbp)
jge    1c83 <main+0xab3>
mov    -0x440(%rbp),%rdi
lea    0x554(%rip),%rsi
mov    $0x0,%al
call   1070 <fprintf@plt>
movl   $0x0,-0x868(%rbp)
cmpl   $0x8,-0x868(%rbp)
jge    1c5a <main+0xa8a>
mov    -0x864(%rbp),%eax
shl    $0x3,%eax
add    -0x868(%rbp),%eax
mov    %eax,-0x860(%rbp)
movslq -0x860(%rbp),%rax
cmpl   $0x0,-0x840(%rbp,%rax,4)
je     1bfe <main+0xa2e>
mov    -0x440(%rbp),%rdi
mov    -0x860(%rbp),%edx
lea    0x5d2(%rip),%rsi
mov    $0x0,%al
call   1070 <fprintf@plt>
jmp    1c13 <main+0xa43>
mov    -0x440(%rbp),%rdi
lea    0x5c1(%rip),%rsi
mov    $0x0,%al
call   1070 <fprintf@plt>
mov    -0x440(%rbp),%rdi
mov    -0x860(%rbp),%ecx
lea    0x4c4(%rip),%rdx
lea    0x4c8(%rip),%rax
cmp    $0xff,%ecx
cmovl  %rax,%rdx
lea    0x533(%rip),%rsi
mov    $0x0,%al
call   1070 <fprintf@plt>
mov    -0x868(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x868(%rbp)
jmp    1ba7 <main+0x9d7>
mov    -0x440(%rbp),%rdi
lea    0x3c1(%rip),%rsi
mov    $0x0,%al
call   1070 <fprintf@plt>
mov    -0x864(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x864(%rbp)
jmp    1b7b <main+0x9ab>
mov    -0x440(%rbp),%rdi
lea    0x467(%rip),%rsi
mov    $0x0,%al
call   1070 <fprintf@plt>
mov    -0x440(%rbp),%rdi
lea    0x383(%rip),%rsi
mov    $0x0,%al
call   1070 <fprintf@plt>
movl   $0xff,-0x860(%rbp)
cmpl   $0x0,-0x860(%rbp)
jl     1d0d <main+0xb3d>
movslq -0x860(%rbp),%rax
cmpl   $0x0,-0x840(%rbp,%rax,4)
je     1cf4 <main+0xb24>
mov    -0x440(%rbp),%rdi
mov    -0x860(%rbp),%edx
lea    0x4e7(%rip),%rsi
mov    $0x0,%al
call   1070 <fprintf@plt>
jmp    1cf9 <main+0xb29>
mov    -0x860(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x860(%rbp)
jmp    1cb7 <main+0xae7>
mov    -0x440(%rbp),%rdi
lea    0x30e(%rip),%rsi
mov    $0x0,%al
call   1070 <fprintf@plt>
mov    -0x440(%rbp),%rdi
mov    -0x30(%rbp),%rdx
lea    0x4b1(%rip),%rsi
mov    $0x0,%al
call   1070 <fprintf@plt>
mov    -0x440(%rbp),%rdi
mov    -0x18(%rbp),%rdx
lea    0x4bd(%rip),%rsi
mov    $0x0,%al
call   1070 <fprintf@plt>
mov    -0x440(%rbp),%rdi
lea    0x4b1(%rip),%rsi
mov    $0x0,%al
call   1070 <fprintf@plt>
mov    -0x440(%rbp),%rdi
lea    0x4ac(%rip),%rsi
mov    $0x0,%al
call   1070 <fprintf@plt>
movl   $0x1,-0x874(%rbp)
movl   $0x0,-0x844(%rbp)
cmpl   $0x80,-0x844(%rbp)
jge    1de4 <main+0xc14>
movslq -0x844(%rbp),%rax
mov    -0x430(%rbp,%rax,4),%eax
cmp    -0x844(%rbp),%eax
je     1dcb <main+0xbfb>
movl   $0x0,-0x874(%rbp)
jmp    1de4 <main+0xc14>
jmp    1dd0 <main+0xc00>
mov    -0x844(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x844(%rbp)
jmp    1d92 <main+0xbc2>
mov    -0x440(%rbp),%rdi
mov    -0x874(%rbp),%ecx
lea    0x443(%rip),%rdx
lea    0x43a(%rip),%rax
cmp    $0x0,%ecx
cmovne %rax,%rdx
lea    0x426(%rip),%rsi
mov    $0x0,%al
call   1070 <fprintf@plt>
mov    -0x440(%rbp),%rdi
lea    0x2d6(%rip),%rsi
mov    $0x0,%al
call   1070 <fprintf@plt>
mov    -0x440(%rbp),%rdi
lea    0x1f2(%rip),%rsi
mov    $0x0,%al
call   1070 <fprintf@plt>
mov    -0x440(%rbp),%rdi
lea    0x3f1(%rip),%rsi
mov    $0x0,%al
call   1070 <fprintf@plt>
mov    -0x440(%rbp),%rdi
lea    0x3f0(%rip),%rsi
mov    $0x0,%al
call   1070 <fprintf@plt>
mov    -0x440(%rbp),%rdi
lea    0x1b3(%rip),%rsi
mov    $0x0,%al
call   1070 <fprintf@plt>
mov    -0x440(%rbp),%rdi
call   1040 <ferror@plt>
cmp    $0x0,%rax
jne    1ea9 <main+0xcd9>
mov    -0x440(%rbp),%rdi
call   1050 <fclose@plt>
cmp    $0x0,%rax
je     1eb3 <main+0xce3>
mov    $0x1,%edi
call   10d0 <exit@plt>
xor    %edi,%edi
call   10d0 <exit@plt>

x86 assembly (clang, -O2):
<main>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x838,%rsp
lea    -0x5(%rdi),%eax
cmp    $0xfffffffd,%eax
jbe    1efa <main+0xcfa>
mov    0x10(%rsi),%rcx
cmp    $0x4,%edi
jb     122c <main+0x2c>
mov    0x18(%rsi),%r15
jmp    1233 <main+0x33>
lea    0xe07(%rip),%r15
mov    0x8(%rsi),%rax
mov    %rax,0x10(%rsp)
mov    0x2d8d(%rip),%rax
movslq (%rax),%rdi
lea    0xdc3(%rip),%rsi
mov    %r15,%rdx
mov    %rcx,0x8(%rsp)
xor    %eax,%eax
call   1090 <fprintf@plt>
movaps 0xd9d(%rip),%xmm0
movaps %xmm0,0x30(%rsp)
movaps %xmm0,0x40(%rsp)
movaps %xmm0,0x50(%rsp)
movaps %xmm0,0x60(%rsp)
movaps %xmm0,0x70(%rsp)
movaps %xmm0,0x80(%rsp)
movaps %xmm0,0x90(%rsp)
movaps %xmm0,0xa0(%rsp)
movaps %xmm0,0xb0(%rsp)
movaps %xmm0,0xc0(%rsp)
movaps %xmm0,0xd0(%rsp)
movaps %xmm0,0xe0(%rsp)
movaps %xmm0,0xf0(%rsp)
movaps %xmm0,0x100(%rsp)
movaps %xmm0,0x110(%rsp)
movaps %xmm0,0x120(%rsp)
movaps %xmm0,0x130(%rsp)
movaps %xmm0,0x140(%rsp)
movaps %xmm0,0x150(%rsp)
movaps %xmm0,0x160(%rsp)
movaps %xmm0,0x170(%rsp)
movaps %xmm0,0x180(%rsp)
movaps %xmm0,0x190(%rsp)
movaps %xmm0,0x1a0(%rsp)
movaps %xmm0,0x1b0(%rsp)
movaps %xmm0,0x1c0(%rsp)
movaps %xmm0,0x1d0(%rsp)
movaps %xmm0,0x1e0(%rsp)
movaps %xmm0,0x1f0(%rsp)
movaps %xmm0,0x200(%rsp)
movaps %xmm0,0x210(%rsp)
movaps %xmm0,0x220(%rsp)
movaps %xmm0,0x230(%rsp)
movaps %xmm0,0x240(%rsp)
movaps %xmm0,0x250(%rsp)
movaps %xmm0,0x260(%rsp)
movaps %xmm0,0x270(%rsp)
movaps %xmm0,0x280(%rsp)
movaps %xmm0,0x290(%rsp)
movaps %xmm0,0x2a0(%rsp)
movaps %xmm0,0x2b0(%rsp)
movaps %xmm0,0x2c0(%rsp)
movaps %xmm0,0x2d0(%rsp)
movaps %xmm0,0x2e0(%rsp)
movaps %xmm0,0x2f0(%rsp)
movaps %xmm0,0x300(%rsp)
movaps %xmm0,0x310(%rsp)
movaps %xmm0,0x320(%rsp)
movaps %xmm0,0x330(%rsp)
movaps %xmm0,0x340(%rsp)
movaps %xmm0,0x350(%rsp)
movaps %xmm0,0x360(%rsp)
movaps %xmm0,0x370(%rsp)
movaps %xmm0,0x380(%rsp)
movaps %xmm0,0x390(%rsp)
movaps %xmm0,0x3a0(%rsp)
movaps %xmm0,0x3b0(%rsp)
movaps %xmm0,0x3c0(%rsp)
movaps %xmm0,0x3d0(%rsp)
movaps %xmm0,0x3e0(%rsp)
movaps %xmm0,0x3f0(%rsp)
movaps %xmm0,0x400(%rsp)
movaps %xmm0,0x410(%rsp)
movaps %xmm0,0x420(%rsp)
movl   $0x100,0x430(%rsp)
mov    0x2b82(%rip),%rbx
mov    (%rbx),%edi
call   1120 <getc@plt>
mov    0x2b6c(%rip),%r14
cmp    (%r14),%eax
jne    1525 <main+0x325>
mov    %r15,%rdi
call   1060 <strlen@plt>
mov    %eax,%ebx
mov    0x8(%rsp),%rbp
mov    %rbp,%rdi
call   1060 <strlen@plt>
lea    (%rbx,%rax,1),%edi
add    $0x1,%edi
call   10a0 <malloc@plt>
mov    %rax,%rbx
mov    %rax,%rdi
mov    %r15,%rsi
call   1030 <strcpy@plt>
mov    %rbx,%rdi
mov    %rbp,%rsi
call   10e0 <strcat@plt>
lea    0xb65(%rip),%rsi
mov    %rbx,%rdi
call   10d0 <fopen@plt>
test   %rax,%rax
je     1efa <main+0xcfa>
mov    %rax,0x8(%rsp)
mov    0x10(%rsp),%rdi
call   1110 <strdup@plt>
mov    %rax,%r14
mov    %rax,%rdi
call   1060 <strlen@plt>
test   %eax,%eax
jle    1629 <main+0x429>
xor    %ebp,%ebp
jmp    1517 <main+0x317>
cs nopw 0x0(%rax,%rax,1)
add    $0x1,%rbp
mov    %r14,%rdi
call   1060 <strlen@plt>
cltq
cmp    %rax,%rbp
jge    1629 <main+0x429>
cmpb   $0x2d,(%r14,%rbp,1)
jne    1500 <main+0x300>
movb   $0x5f,(%r14,%rbp,1)
jmp    1500 <main+0x300>
lea    0xaf3(%rip),%r13
lea    0x430(%rsp),%r12
jmp    1550 <main+0x350>
cs nopw 0x0(%rax,%rax,1)
mov    (%rbx),%edi
call   1120 <getc@plt>
cmp    (%r14),%eax
je     147d <main+0x27d>
lea    -0x9(%rax),%ecx
cmp    $0x2,%ecx
jb     1540 <main+0x340>
cmp    $0x20,%eax
je     1540 <main+0x340>
cmp    $0x23,%eax
jne    1590 <main+0x390>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
mov    (%rbx),%edi
call   1120 <getc@plt>
cmp    $0xa,%eax
je     1540 <main+0x340>
cmp    (%r14),%eax
jne    1570 <main+0x370>
jmp    1540 <main+0x340>
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
mov    (%rbx),%esi
mov    %eax,%edi
call   10b0 <ungetc@plt>
mov    %r13,%rdi
mov    %r12,%rsi
call   10c0 <scanf@plt>
cmp    $0x1,%eax
jne    1efa <main+0xcfa>
mov    0x430(%rsp),%eax
test   %eax,%eax
js     1efa <main+0xcfa>
cmp    $0xff,%eax
jg     1efa <main+0xcfa>
nopw   0x0(%rax,%rax,1)
mov    (%rbx),%edi
call   1120 <getc@plt>
cmp    $0x9,%eax
je     15d0 <main+0x3d0>
mov    %eax,%ebp
cmp    $0x20,%eax
je     15d0 <main+0x3d0>
cmp    (%r14),%ebp
je     15f1 <main+0x3f1>
mov    (%rbx),%esi
mov    %ebp,%edi
call   10b0 <ungetc@plt>
cmp    $0xa,%ebp
je     1540 <main+0x340>
cmp    $0x23,%ebp
je     1540 <main+0x340>
movslq 0x430(%rsp),%rax
lea    (%rsp,%rax,4),%rsi
add    $0x30,%rsi
mov    %r13,%rdi
call   10c0 <scanf@plt>
cmp    $0x1,%eax
je     1540 <main+0x340>
jmp    1efa <main+0xcfa>
lea    0x9f6(%rip),%rdi
mov    $0x3,%esi
mov    $0x1,%edx
mov    0x8(%rsp),%rbx
mov    %rbx,%rcx
call   1100 <fwrite@plt>
lea    0x9dc(%rip),%rsi
mov    %rbx,%rdi
mov    0x10(%rsp),%rbp
mov    %rbp,%rdx
xor    %eax,%eax
call   1090 <fprintf@plt>
lea    0x9d0(%rip),%rdi
mov    $0x3,%esi
mov    $0x1,%edx
mov    %rbx,%rcx
call   1100 <fwrite@plt>
lea    0x9bb(%rip),%rsi
mov    %rbx,%rdi
mov    %rbp,%rdx
xor    %eax,%eax
call   1090 <fprintf@plt>
lea    0x9ca(%rip),%rdi
mov    $0x35,%esi
mov    $0x1,%edx
mov    %rbx,%rcx
call   1100 <fwrite@plt>
lea    0xa48(%rip),%rdi
mov    $0x4,%esi
mov    $0x1,%edx
mov    %rbx,%rcx
call   1100 <fwrite@plt>
mov    $0xa,%edi
mov    %rbx,%rsi
call   1080 <fputc@plt>
lea    0x9c1(%rip),%rsi
mov    %rbx,%rdi
mov    %r14,0x20(%rsp)
mov    %r14,%rdx
xor    %eax,%eax
call   1090 <fprintf@plt>
mov    $0xa,%edi
mov    %rbx,%rsi
call   1080 <fputc@plt>
lea    0x9bf(%rip),%rdi
mov    $0x31,%esi
mov    $0x1,%edx
mov    %rbx,%rcx
call   1100 <fwrite@plt>
lea    0x9eb(%rip),%r14
lea    0x9ed(%rip),%r13
xor    %ebp,%ebp
nopl   0x0(%rax,%rax,1)
mov    %rbx,%rdi
lea    0x9c0(%rip),%rsi
mov    %ebp,%edx
xor    %eax,%eax
call   1090 <fprintf@plt>
mov    $0x2,%esi
mov    $0x1,%edx
lea    0x9b6(%rip),%r15
mov    %r15,%rdi
mov    %rbx,%rcx
call   1100 <fwrite@plt>
mov    0x30(%rsp,%rbp,4),%edx
mov    %rbx,%rdi
mov    %r14,%rsi
mov    %r13,%rcx
xor    %eax,%eax
call   1090 <fprintf@plt>
mov    $0x20,%edi
mov    %rbx,%rsi
call   1080 <fputc@plt>
mov    0x34(%rsp,%rbp,4),%edx
mov    %rbx,%rdi
mov    %r14,%rsi
mov    %r13,%rcx
xor    %eax,%eax
call   1090 <fprintf@plt>
mov    $0x20,%edi
mov    %rbx,%rsi
call   1080 <fputc@plt>
mov    0x38(%rsp,%rbp,4),%edx
mov    %rbx,%rdi
mov    %r14,%rsi
mov    %r13,%rcx
xor    %eax,%eax
call   1090 <fprintf@plt>
mov    $0x20,%edi
mov    %rbx,%rsi
call   1080 <fputc@plt>
mov    0x3c(%rsp,%rbp,4),%edx
mov    %rbx,%rdi
mov    %r14,%rsi
mov    %r13,%rcx
xor    %eax,%eax
call   1090 <fprintf@plt>
mov    $0x20,%edi
mov    %rbx,%rsi
call   1080 <fputc@plt>
mov    0x40(%rsp,%rbp,4),%edx
mov    %rbx,%rdi
mov    %r14,%rsi
mov    %r13,%rcx
xor    %eax,%eax
call   1090 <fprintf@plt>
mov    $0x20,%edi
mov    %rbx,%rsi
call   1080 <fputc@plt>
mov    0x44(%rsp,%rbp,4),%edx
mov    %rbx,%rdi
mov    %r14,%rsi
mov    %r13,%rcx
xor    %eax,%eax
call   1090 <fprintf@plt>
mov    $0x20,%edi
mov    %rbx,%rsi
call   1080 <fputc@plt>
mov    0x48(%rsp,%rbp,4),%edx
mov    %rbx,%rdi
mov    %r14,%rsi
mov    %r13,%rcx
xor    %eax,%eax
call   1090 <fprintf@plt>
mov    $0x20,%edi
mov    %rbx,%rsi
call   1080 <fputc@plt>
lea    0x7(%rbp),%rax
mov    0x4c(%rsp,%rbp,4),%edx
cmp    $0xff,%rax
lea    0x8b0(%rip),%r12
mov    %r12,%rcx
cmovb  %r13,%rcx
mov    %rbx,%rdi
mov    %r14,%rsi
xor    %eax,%eax
call   1090 <fprintf@plt>
mov    $0xa,%edi
mov    %rbx,%rsi
call   1080 <fputc@plt>
mov    $0x2,%esi
mov    $0x1,%edx
mov    %r15,%rdi
mov    %rbx,%rcx
call   1100 <fwrite@plt>
mov    0x50(%rsp,%rbp,4),%edx
mov    %rbx,%rdi
mov    %r14,%rsi
mov    %r13,%rcx
xor    %eax,%eax
call   1090 <fprintf@plt>
mov    $0x20,%edi
mov    %rbx,%rsi
call   1080 <fputc@plt>
mov    0x54(%rsp,%rbp,4),%edx
mov    %rbx,%rdi
mov    %r14,%rsi
mov    %r13,%rcx
xor    %eax,%eax
call   1090 <fprintf@plt>
mov    $0x20,%edi
mov    %rbx,%rsi
call   1080 <fputc@plt>
mov    0x58(%rsp,%rbp,4),%edx
mov    %rbx,%rdi
mov    %r14,%rsi
mov    %r13,%rcx
xor    %eax,%eax
call   1090 <fprintf@plt>
mov    $0x20,%edi
mov    %rbx,%rsi
call   1080 <fputc@plt>
mov    0x5c(%rsp,%rbp,4),%edx
mov    %rbx,%rdi
mov    %r14,%rsi
mov    %r13,%rcx
xor    %eax,%eax
call   1090 <fprintf@plt>
mov    $0x20,%edi
mov    %rbx,%rsi
call   1080 <fputc@plt>
mov    0x60(%rsp,%rbp,4),%edx
mov    %rbx,%rdi
mov    %r14,%rsi
mov    %r13,%rcx
xor    %eax,%eax
call   1090 <fprintf@plt>
mov    $0x20,%edi
mov    %rbx,%rsi
call   1080 <fputc@plt>
mov    0x64(%rsp,%rbp,4),%edx
mov    %rbx,%rdi
mov    %r14,%rsi
mov    %r13,%rcx
xor    %eax,%eax
call   1090 <fprintf@plt>
mov    $0x20,%edi
mov    %rbx,%rsi
call   1080 <fputc@plt>
mov    0x68(%rsp,%rbp,4),%edx
mov    %rbx,%rdi
mov    %r14,%rsi
mov    %r13,%rcx
xor    %eax,%eax
call   1090 <fprintf@plt>
mov    $0x20,%edi
mov    %rbx,%rsi
call   1080 <fputc@plt>
lea    0xf(%rbp),%rax
mov    0x6c(%rsp,%rbp,4),%edx
cmp    $0xff,%rax
cmovb  %r13,%r12
mov    %rbx,%rdi
mov    %r14,%rsi
mov    %r12,%rcx
xor    %eax,%eax
call   1090 <fprintf@plt>
mov    $0xa,%edi
mov    %rbx,%rsi
call   1080 <fputc@plt>
add    $0x10,%rbp
cmp    $0x100,%rbp
jne    1720 <main+0x520>
lea    0x759(%rip),%rdi
mov    $0x3,%esi
mov    $0x1,%edx
mov    %rbx,%rcx
call   1100 <fwrite@plt>
mov    $0xa,%edi
mov    %rbx,%rsi
call   1080 <fputc@plt>
lea    0x430(%rsp),%rdi
xor    %ebp,%ebp
mov    $0x400,%edx
xor    %esi,%esi
call   1070 <memset@plt>
mov    0x20(%rsp),%rbx
jmp    19fd <main+0x7fd>
nopl   0x0(%rax,%rax,1)
add    $0x2,%rbp
cmp    $0x100,%rbp
je     1a35 <main+0x835>
mov    0x30(%rsp,%rbp,4),%eax
cmp    $0xfffd,%eax
je     1a18 <main+0x818>
sar    $0x8,%eax
cltq
movl   $0x1,0x430(%rsp,%rax,4)
mov    0x34(%rsp,%rbp,4),%eax
cmp    $0xfffd,%eax
je     19f0 <main+0x7f0>
sar    $0x8,%eax
cltq
movl   $0x1,0x430(%rsp,%rax,4)
jmp    19f0 <main+0x7f0>
lea    0x6d0(%rip),%rsi
mov    0x8(%rsp),%rdi
mov    %rbx,%rdx
xor    %eax,%eax
call   1090 <fprintf@plt>
lea    0x6de(%rip),%r14
xor    %ebp,%ebp
jmp    1a6d <main+0x86d>
cs nopw 0x0(%rax,%rax,1)
add    $0x1,%rbp
cmp    $0x100,%rbp
je     1a90 <main+0x890>
cmpl   $0x0,0x430(%rsp,%rbp,4)
je     1a60 <main+0x860>
mov    0x8(%rsp),%rdi
mov    %r14,%rsi
mov    %ebp,%edx
mov    %rbx,%rcx
mov    %ebp,%r8d
xor    %eax,%eax
call   1090 <fprintf@plt>
jmp    1a60 <main+0x860>
mov    $0xa,%edi
mov    0x8(%rsp),%r12
mov    %r12,%rsi
call   1080 <fputc@plt>
lea    0x6d3(%rip),%rbp
xor    %r15d,%r15d
mov    %r13,%rbx
jmp    1afc <main+0x8fc>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
mov    $0x3,%esi
mov    $0x1,%edx
lea    0x637(%rip),%rdi
mov    %r12,%rcx
call   1100 <fwrite@plt>
mov    $0xa,%edi
mov    %r12,%rsi
call   1080 <fputc@plt>
mov    0x18(%rsp),%r15
add    $0x1,%r15
cmp    $0x100,%r15
je     1c3e <main+0xa3e>
cmpl   $0x0,0x430(%rsp,%r15,4)
je     1aeb <main+0x8eb>
xor    %r14d,%r14d
mov    %r12,%rdi
lea    0x63a(%rip),%rsi
mov    %r15d,%edx
xor    %eax,%eax
call   1090 <fprintf@plt>
mov    %r15,0x18(%rsp)
mov    %r15d,%r13d
shl    $0x8,%r13d
jmp    1b5d <main+0x95d>
nopl   0x0(%rax)
mov    %r15d,%ecx
or     $0x7,%ecx
mov    0x8(%rsp),%r12
mov    %r12,%rdi
lea    0x641(%rip),%rsi
mov    %r15d,%edx
xor    %eax,%eax
call   1090 <fprintf@plt>
add    $0x1,%r14d
cmp    $0x20,%r14d
je     1ac0 <main+0x8c0>
mov    $0x2,%esi
mov    $0x1,%edx
lea    0x58c(%rip),%rdi
mov    %r12,%rcx
call   1100 <fwrite@plt>
lea    0x0(,%r14,8),%r15d
xor    %r12d,%r12d
jmp    1bc0 <main+0x9c0>
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
lea    0x564(%rip),%rsi
cmp    $0xff,%eax
mov    %rsi,%rcx
cmovb  %rbx,%rcx
mov    0x8(%rsp),%rdi
mov    %rbp,%rsi
xor    %eax,%eax
call   1090 <fprintf@plt>
add    $0x1,%r12d
cmp    $0x8,%r12d
je     1b30 <main+0x930>
lea    (%r12,%r15,1),%eax
lea    (%rax,%r13,1),%ecx
xor    %edx,%edx
cmp    $0xfffd,%ecx
je     1b90 <main+0x990>
xor    %edx,%edx
lea    0x520(%rip),%rsi
nopl   0x0(%rax,%rax,1)
cmp    %ecx,0x30(%rsp,%rdx,4)
je     1c19 <main+0xa19>
cmp    %ecx,0x34(%rsp,%rdx,4)
je     1c07 <main+0xa07>
cmp    %ecx,0x38(%rsp,%rdx,4)
je     1c15 <main+0xa15>
cmp    %ecx,0x3c(%rsp,%rdx,4)
je     1c2c <main+0xa2c>
add    $0x4,%rdx
cmp    $0x100,%rdx
jne    1be0 <main+0x9e0>
jmp    1c25 <main+0xa25>
add    $0x1,%rdx
cmp    $0x100,%edx
jne    1b97 <main+0x997>
jmp    1c25 <main+0xa25>
add    $0x2,%rdx
cmp    $0x100,%edx
jne    1b97 <main+0x997>
xor    %edx,%edx
jmp    1b97 <main+0x997>
add    $0x3,%rdx
cmp    $0x100,%edx
jne    1b97 <main+0x997>
jmp    1c25 <main+0xa25>
lea    0x556(%rip),%rdi
mov    $0x38,%esi
mov    $0x1,%edx
mov    %r12,%rcx
call   1100 <fwrite@plt>
lea    0x524(%rip),%rbp
lea    0x56f(%rip),%r15
xor    %r14d,%r14d
xor    %eax,%eax
jmp    1c9e <main+0xa9e>
nopl   0x0(%rax)
mov    $0xa,%edi
mov    0x8(%rsp),%r12
mov    %r12,%rsi
call   1080 <fputc@plt>
mov    0x28(%rsp),%rax
add    $0x1,%rax
mov    0x18(%rsp),%r14
add    $0x8,%r14
cmp    $0x20,%rax
je     1d3d <main+0xb3d>
mov    %rax,0x28(%rsp)
mov    $0x2,%esi
mov    $0x1,%edx
lea    0x446(%rip),%rdi
mov    %r12,%rcx
call   1100 <fwrite@plt>
mov    $0x8,%r12d
mov    %r14,0x18(%rsp)
jmp    1d1b <main+0xb1b>
nopl   0x0(%rax)
mov    $0x6,%esi
mov    $0x1,%edx
lea    0x4fc(%rip),%rdi
mov    0x8(%rsp),%r13
mov    %r13,%rcx
call   1100 <fwrite@plt>
cmp    $0xff,%r14
lea    0x3ff(%rip),%rdx
cmovb  %rbx,%rdx
mov    %r13,%rdi
mov    %rbp,%rsi
xor    %eax,%eax
call   1090 <fprintf@plt>
add    $0x1,%r14
add    $0xffffffffffffffff,%r12
je     1c70 <main+0xa70>
cmpl   $0x0,0x430(%rsp,%r14,4)
je     1cd0 <main+0xad0>
mov    0x8(%rsp),%r13
mov    %r13,%rdi
mov    %r15,%rsi
mov    %r14d,%edx
xor    %eax,%eax
call   1090 <fprintf@plt>
jmp    1cee <main+0xaee>
lea    0x3c4(%rip),%rdi
mov    $0x3,%esi
mov    $0x1,%edx
mov    %r12,%rcx
call   1100 <fwrite@plt>
mov    $0xa,%edi
mov    %r12,%rsi
call   1080 <fputc@plt>
mov    $0xff,%ebp
lea    0x475(%rip),%r14
mov    0x20(%rsp),%r15
jmp    1d86 <main+0xb86>
cs nopw 0x0(%rax,%rax,1)
add    $0xffffffffffffffff,%rbp
jae    1da1 <main+0xba1>
cmpl   $0x0,0x430(%rsp,%rbp,4)
je     1d80 <main+0xb80>
mov    %r12,%rdi
mov    %r14,%rsi
mov    %ebp,%edx
xor    %eax,%eax
call   1090 <fprintf@plt>
jmp    1d80 <main+0xb80>
mov    $0xa,%edi
mov    %r12,%rsi
call   1080 <fputc@plt>
lea    0x440(%rip),%rsi
xor    %ebp,%ebp
mov    %r12,%rdi
mov    %r15,%rdx
xor    %eax,%eax
call   1090 <fprintf@plt>
lea    0x44f(%rip),%rsi
mov    %r12,%rdi
mov    0x10(%rsp),%rdx
xor    %eax,%eax
call   1090 <fprintf@plt>
lea    0x442(%rip),%rdi
mov    $0xf,%esi
mov    $0x1,%edx
mov    %r12,%rcx
call   1100 <fwrite@plt>
lea    0x439(%rip),%rdi
mov    $0xf,%esi
mov    $0x1,%edx
mov    %r12,%rcx
call   1100 <fwrite@plt>
lea    0x438(%rip),%rdx
lea    0x42f(%rip),%rax
nopw   0x0(%rax,%rax,1)
mov    0x30(%rsp,%rbp,4),%ecx
cmp    %rcx,%rbp
jne    1e63 <main+0xc63>
mov    0x34(%rsp,%rbp,4),%esi
lea    0x1(%rbp),%rcx
cmp    %rsi,%rcx
jne    1e63 <main+0xc63>
mov    0x38(%rsp,%rbp,4),%esi
add    $0x1,%rcx
cmp    %rsi,%rcx
jne    1e63 <main+0xc63>
mov    0x3c(%rsp,%rbp,4),%esi
add    $0x1,%rcx
cmp    %rsi,%rcx
jne    1e63 <main+0xc63>
add    $0x1,%rcx
mov    %rcx,%rbp
cmp    $0x80,%rcx
jne    1e20 <main+0xc20>
mov    %rax,%rdx
lea    0x3d9(%rip),%rsi
mov    %r12,%rdi
xor    %eax,%eax
call   1090 <fprintf@plt>
lea    0x28d(%rip),%rdi
mov    $0x3,%esi
mov    $0x1,%edx
mov    %r12,%rcx
call   1100 <fwrite@plt>
mov    $0xa,%edi
mov    %r12,%rsi
call   1080 <fputc@plt>
lea    0x3ac(%rip),%rdi
mov    $0x13,%esi
mov    $0x1,%edx
mov    %r12,%rcx
call   1100 <fwrite@plt>
lea    0x3a7(%rip),%rdi
mov    $0x13,%esi
mov    $0x1,%edx
mov    %r12,%rcx
call   1100 <fwrite@plt>
mov    $0xa,%edi
mov    %r12,%rsi
call   1080 <fputc@plt>
mov    %r12,%rdi
call   1040 <ferror@plt>
test   %rax,%rax
jne    1efa <main+0xcfa>
mov    %r12,%rdi
call   1050 <fclose@plt>
test   %rax,%rax
jne    1efa <main+0xcfa>
xor    %edi,%edi
call   10f0 <exit@plt>
mov    $0x1,%edi
call   10f0 <exit@plt>

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

LLVM IR (-O2):
@.str = [1 x i8] zeroinitializer
@stderr = global i32 0
@.str.1 = [15 x i8] c"Creating %s%s\0A\00"
@stdin = global i32 0
@EOF = global i32 0
@.str.2 = [5 x i8] c"0x%x\00"
@.str.3 = [2 x i8] c"w\00"
@.str.4 = [4 x i8] c"/*\0A\00"
@.str.5 = [13 x i8] c" * nls_%s.c\0A\00"
@.str.6 = [4 x i8] c" *\0A\00"
@.str.7 = [35 x i8] c" * Charset %s translation tables.\0A\00"
@.str.8 = [54 x i8] c" * Generated automatically by the nls_table utility.\0A\00"
@.str.9 = [5 x i8] c" */\0A\00"
@.str.11 = [36 x i8] c"#define charset2uni %s_charset2uni\0A\00"
@.str.12 = [50 x i8] c"static const unsigned short charset2uni[256] = {\0A\00"
@.str.13 = [16 x i8] c" /* 0x%02x */\0A\00"
@.str.14 = [3 x i8] c" \00"
@.str.15 = [2 x i8] c" \00"
@.str.16 = [9 x i8] c"0x%04x%s\00"
@.str.17 = [2 x i8] c",\00"
@.str.18 = [4 x i8] c"};\0A\00"
@.str.19 = [36 x i8] c"#define uni2charset %s_uni2charset\0A\00"
@.str.20 = [30 x i8] c"#define page%02x %s_page%02x\0A\00"
@.str.21 = [46 x i8] c"static const unsigned char page%02x[256] = {\0A\00"
@.str.22 = [10 x i8] c"0x%02x%s \00"
@.str.23 = [21 x i8] c"/* 0x%02x-0x%02x */\0A\00"
@.str.24 = [57 x i8] c"static const unsigned char * const uni2charset[256] = {\0A\00"
@.str.25 = [9 x i8] c"page%02x\00"
@.str.26 = [7 x i8] c"nopage\00"
@.str.27 = [4 x i8] c"%s \00"
@.str.28 = [17 x i8] c"#undef page%02x\0A\00"
@.str.29 = [37 x i8] c"struct nls_table_t nls_%s_table = {\0A\00"
@.str.30 = [9 x i8] c" \22%s\22,\0A\00"
@.str.31 = [16 x i8] c" uni2charset,\0A\00"
@.str.32 = [16 x i8] c" charset2uni,\0A\00"
@.str.33 = [6 x i8] c" %s\0A\00"
@.str.34 = [2 x i8] c"1\00"
@.str.35 = [2 x i8] c"0\00"
@.str.36 = [20 x i8] c"#undef uni2charset\0A\00"
@.str.37 = [20 x i8] c"#undef charset2uni\0A\00"
define i32 @main(i32 %0, i8** nocapture %1) {
%3 = alloca [256 x i32]
%4 = alloca i32
%5 = alloca [256 x i32]
%6 = bitcast [256 x i32]* %5 to i8*
%7 = bitcast [256 x i32]* %3 to i8*
%8 = add i32 %0, -5
%9 = icmp ult i32 %8, -2
br i1 %9, label %10, label %12
10: ; preds = %2
%11 = tail call i32 @exit(i32 1)
unreachable
12: ; preds = %2
%13 = getelementptr inbounds i8*, i8** %1, i64 1
%14 = load i8*, i8** %13
%15 = getelementptr inbounds i8*, i8** %1, i64 2
%16 = load i8*, i8** %15
%17 = icmp ugt i32 %0, 3
br i1 %17, label %18, label %21
18: ; preds = %12
%19 = getelementptr inbounds i8*, i8** %1, i64 3
%20 = load i8*, i8** %19
br label %21
21: ; preds = %12, %18
%22 = phi i8* [ %20, %18 ], [ getelementptr inbounds ([1 x i8], [1 x i8]* @.str, i64 0, i64 0), %12 ]
%23 = load i32, i32* @stderr
%24 = sext i32 %23 to i64
%25 = inttoptr i64 %24 to i32*
%26 = tail call i32 (i32*, i8*, ...) @fprintf(i32* %25, i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.1, i64 0, i64 0), i8* %22, i8* %16)
%27 = bitcast i32* %4 to i8*
%28 = bitcast [256 x i32]* %3 to <4 x i32>*
store <4 x i32> <i32 65533, i32 65533, i32 65533, i32 65533>, <4 x i32>* %28
%29 = getelementptr inbounds [256 x i32], [256 x i32]* %3, i64 0, i64 4
%30 = bitcast i32* %29 to <4 x i32>*
store <4 x i32> <i32 65533, i32 65533, i32 65533, i32 65533>, <4 x i32>* %30
%31 = getelementptr inbounds [256 x i32], [256 x i32]* %3, i64 0, i64 8
%32 = bitcast i32* %31 to <4 x i32>*
store <4 x i32> <i32 65533, i32 65533, i32 65533, i32 65533>, <4 x i32>* %32
%33 = getelementptr inbounds [256 x i32], [256 x i32]* %3, i64 0, i64 12
%34 = bitcast i32* %33 to <4 x i32>*
store <4 x i32> <i32 65533, i32 65533, i32 65533, i32 65533>, <4 x i32>* %34
%35 = getelementptr inbounds [256 x i32], [256 x i32]* %3, i64 0, i64 16
%36 = bitcast i32* %35 to <4 x i32>*
store <4 x i32> <i32 65533, i32 65533, i32 65533, i32 65533>, <4 x i32>* %36
%37 = getelementptr inbounds [256 x i32], [256 x i32]* %3, i64 0, i64 20
%38 = bitcast i32* %37 to <4 x i32>*
store <4 x i32> <i32 65533, i32 65533, i32 65533, i32 65533>, <4 x i32>* %38
%39 = getelementptr inbounds [256 x i32], [256 x i32]* %3, i64 0, i64 24
%40 = bitcast i32* %39 to <4 x i32>*
store <4 x i32> <i32 65533, i32 65533, i32 65533, i32 65533>, <4 x i32>* %40
%41 = getelementptr inbounds [256 x i32], [256 x i32]* %3, i64 0, i64 28
%42 = bitcast i32* %41 to <4 x i32>*
store <4 x i32> <i32 65533, i32 65533, i32 65533, i32 65533>, <4 x i32>* %42
%43 = getelementptr inbounds [256 x i32], [256 x i32]* %3, i64 0, i64 32
%44 = bitcast i32* %43 to <4 x i32>*
store <4 x i32> <i32 65533, i32 65533, i32 65533, i32 65533>, <4 x i32>* %44
%45 = getelementptr inbounds [256 x i32], [256 x i32]* %3, i64 0, i64 36
%46 = bitcast i32* %45 to <4 x i32>*
store <4 x i32> <i32 65533, i32 65533, i32 65533, i32 65533>, <4 x i32>* %46
%47 = getelementptr inbounds [256 x i32], [256 x i32]* %3, i64 0, i64 40
%48 = bitcast i32* %47 to <4 x i32>*
store <4 x i32> <i32 65533, i32 65533, i32 65533, i32 65533>, <4 x i32>* %48
%49 = getelementptr inbounds [256 x i32], [256 x i32]* %3, i64 0, i64 44
%50 = bitcast i32* %49 to <4 x i32>*
store <4 x i32> <i32 65533, i32 65533, i32 65533, i32 65533>, <4 x i32>* %50
%51 = getelementptr inbounds [256 x i32], [256 x i32]* %3, i64 0, i64 48
%52 = bitcast i32* %51 to <4 x i32>*
store <4 x i32> <i32 65533, i32 65533, i32 65533, i32 65533>, <4 x i32>* %52
%53 = getelementptr inbounds [256 x i32], [256 x i32]* %3, i64 0, i64 52
%54 = bitcast i32* %53 to <4 x i32>*
store <4 x i32> <i32 65533, i32 65533, i32 65533, i32 65533>, <4 x i32>* %54
%55 = getelementptr inbounds [256 x i32], [256 x i32]* %3, i64 0, i64 56
%56 = bitcast i32* %55 to <4 x i32>*
store <4 x i32> <i32 65533, i32 65533, i32 65533, i32 65533>, <4 x i32>* %56
%57 = getelementptr inbounds [256 x i32], [256 x i32]* %3, i64 0, i64 60
%58 = bitcast i32* %57 to <4 x i32>*
store <4 x i32> <i32 65533, i32 65533, i32 65533, i32 65533>, <4 x i32>* %58
%59 = getelementptr inbounds [256 x i32], [256 x i32]* %3, i64 0, i64 64
%60 = bitcast i32* %59 to <4 x i32>*
store <4 x i32> <i32 65533, i32 65533, i32 65533, i32 65533>, <4 x i32>* %60
%61 = getelementptr inbounds [256 x i32], [256 x i32]* %3, i64 0, i64 68
%62 = bitcast i32* %61 to <4 x i32>*
store <4 x i32> <i32 65533, i32 65533, i32 65533, i32 65533>, <4 x i32>* %62
%63 = getelementptr inbounds [256 x i32], [256 x i32]* %3, i64 0, i64 72
%64 = bitcast i32* %63 to <4 x i32>*
store <4 x i32> <i32 65533, i32 65533, i32 65533, i32 65533>, <4 x i32>* %64
%65 = getelementptr inbounds [256 x i32], [256 x i32]* %3, i64 0, i64 76
%66 = bitcast i32* %65 to <4 x i32>*
store <4 x i32> <i32 65533, i32 65533, i32 65533, i32 65533>, <4 x i32>* %66
%67 = getelementptr inbounds [256 x i32], [256 x i32]* %3, i64 0, i64 80
%68 = bitcast i32* %67 to <4 x i32>*
store <4 x i32> <i32 65533, i32 65533, i32 65533, i32 65533>, <4 x i32>* %68
%69 = getelementptr inbounds [256 x i32], [256 x i32]* %3, i64 0, i64 84
%70 = bitcast i32* %69 to <4 x i32>*
store <4 x i32> <i32 65533, i32 65533, i32 65533, i32 65533>, <4 x i32>* %70
%71 = getelementptr inbounds [256 x i32], [256 x i32]* %3, i64 0, i64 88
%72 = bitcast i32* %71 to <4 x i32>*
store <4 x i32> <i32 65533, i32 65533, i32 65533, i32 65533>, <4 x i32>* %72
%73 = getelementptr inbounds [256 x i32], [256 x i32]* %3, i64 0, i64 92
%74 = bitcast i32* %73 to <4 x i32>*
store <4 x i32> <i32 65533, i32 65533, i32 65533, i32 65533>, <4 x i32>* %74
%75 = getelementptr inbounds [256 x i32], [256 x i32]* %3, i64 0, i64 96
%76 = bitcast i32* %75 to <4 x i32>*
store <4 x i32> <i32 65533, i32 65533, i32 65533, i32 65533>, <4 x i32>* %76
%77 = getelementptr inbounds [256 x i32], [256 x i32]* %3, i64 0, i64 100
%78 = bitcast i32* %77 to <4 x i32>*
store <4 x i32> <i32 65533, i32 65533, i32 65533, i32 65533>, <4 x i32>* %78
%79 = getelementptr inbounds [256 x i32], [256 x i32]* %3, i64 0, i64 104
%80 = bitcast i32* %79 to <4 x i32>*
store <4 x i32> <i32 65533, i32 65533, i32 65533, i32 65533>, <4 x i32>* %80
%81 = getelementptr inbounds [256 x i32], [256 x i32]* %3, i64 0, i64 108
%82 = bitcast i32* %81 to <4 x i32>*
store <4 x i32> <i32 65533, i32 65533, i32 65533, i32 65533>, <4 x i32>* %82
%83 = getelementptr inbounds [256 x i32], [256 x i32]* %3, i64 0, i64 112
%84 = bitcast i32* %83 to <4 x i32>*
store <4 x i32> <i32 65533, i32 65533, i32 65533, i32 65533>, <4 x i32>* %84
%85 = getelementptr inbounds [256 x i32], [256 x i32]* %3, i64 0, i64 116
%86 = bitcast i32* %85 to <4 x i32>*
store <4 x i32> <i32 65533, i32 65533, i32 65533, i32 65533>, <4 x i32>* %86
%87 = getelementptr inbounds [256 x i32], [256 x i32]* %3, i64 0, i64 120
%88 = bitcast i32* %87 to <4 x i32>*
store <4 x i32> <i32 65533, i32 65533, i32 65533, i32 65533>, <4 x i32>* %88
%89 = getelementptr inbounds [256 x i32], [256 x i32]* %3, i64 0, i64 124
%90 = bitcast i32* %89 to <4 x i32>*
store <4 x i32> <i32 65533, i32 65533, i32 65533, i32 65533>, <4 x i32>* %90
%91 = getelementptr inbounds [256 x i32], [256 x i32]* %3, i64 0, i64 128
%92 = bitcast i32* %91 to <4 x i32>*
store <4 x i32> <i32 65533, i32 65533, i32 65533, i32 65533>, <4 x i32>* %92
%93 = getelementptr inbounds [256 x i32], [256 x i32]* %3, i64 0, i64 132
%94 = bitcast i32* %93 to <4 x i32>*
store <4 x i32> <i32 65533, i32 65533, i32 65533, i32 65533>, <4 x i32>* %94
%95 = getelementptr inbounds [256 x i32], [256 x i32]* %3, i64 0, i64 136
%96 = bitcast i32* %95 to <4 x i32>*
store <4 x i32> <i32 65533, i32 65533, i32 65533, i32 65533>, <4 x i32>* %96
%97 = getelementptr inbounds [256 x i32], [256 x i32]* %3, i64 0, i64 140
%98 = bitcast i32* %97 to <4 x i32>*
store <4 x i32> <i32 65533, i32 65533, i32 65533, i32 65533>, <4 x i32>* %98
%99 = getelementptr inbounds [256 x i32], [256 x i32]* %3, i64 0, i64 144
%100 = bitcast i32* %99 to <4 x i32>*
store <4 x i32> <i32 65533, i32 65533, i32 65533, i32 65533>, <4 x i32>* %100
%101 = getelementptr inbounds [256 x i32], [256 x i32]* %3, i64 0, i64 148
%102 = bitcast i32* %101 to <4 x i32>*
store <4 x i32> <i32 65533, i32 65533, i32 65533, i32 65533>, <4 x i32>* %102
%103 = getelementptr inbounds [256 x i32], [256 x i32]* %3, i64 0, i64 152
%104 = bitcast i32* %103 to <4 x i32>*
store <4 x i32> <i32 65533, i32 65533, i32 65533, i32 65533>, <4 x i32>* %104
%105 = getelementptr inbounds [256 x i32], [256 x i32]* %3, i64 0, i64 156
%106 = bitcast i32* %105 to <4 x i32>*
store <4 x i32> <i32 65533, i32 65533, i32 65533, i32 65533>, <4 x i32>* %106
%107 = getelementptr inbounds [256 x i32], [256 x i32]* %3, i64 0, i64 160
%108 = bitcast i32* %107 to <4 x i32>*
store <4 x i32> <i32 65533, i32 65533, i32 65533, i32 65533>, <4 x i32>* %108
%109 = getelementptr inbounds [256 x i32], [256 x i32]* %3, i64 0, i64 164
%110 = bitcast i32* %109 to <4 x i32>*
store <4 x i32> <i32 65533, i32 65533, i32 65533, i32 65533>, <4 x i32>* %110
%111 = getelementptr inbounds [256 x i32], [256 x i32]* %3, i64 0, i64 168
%112 = bitcast i32* %111 to <4 x i32>*
store <4 x i32> <i32 65533, i32 65533, i32 65533, i32 65533>, <4 x i32>* %112
%113 = getelementptr inbounds [256 x i32], [256 x i32]* %3, i64 0, i64 172
%114 = bitcast i32* %113 to <4 x i32>*
store <4 x i32> <i32 65533, i32 65533, i32 65533, i32 65533>, <4 x i32>* %114
%115 = getelementptr inbounds [256 x i32], [256 x i32]* %3, i64 0, i64 176
%116 = bitcast i32* %115 to <4 x i32>*
store <4 x i32> <i32 65533, i32 65533, i32 65533, i32 65533>, <4 x i32>* %116
%117 = getelementptr inbounds [256 x i32], [256 x i32]* %3, i64 0, i64 180
%118 = bitcast i32* %117 to <4 x i32>*
store <4 x i32> <i32 65533, i32 65533, i32 65533, i32 65533>, <4 x i32>* %118
%119 = getelementptr inbounds [256 x i32], [256 x i32]* %3, i64 0, i64 184
%120 = bitcast i32* %119 to <4 x i32>*
store <4 x i32> <i32 65533, i32 65533, i32 65533, i32 65533>, <4 x i32>* %120
%121 = getelementptr inbounds [256 x i32], [256 x i32]* %3, i64 0, i64 188
%122 = bitcast i32* %121 to <4 x i32>*
store <4 x i32> <i32 65533, i32 65533, i32 65533, i32 65533>, <4 x i32>* %122
%123 = getelementptr inbounds [256 x i32], [256 x i32]* %3, i64 0, i64 192
%124 = bitcast i32* %123 to <4 x i32>*
store <4 x i32> <i32 65533, i32 65533, i32 65533, i32 65533>, <4 x i32>* %124
%125 = getelementptr inbounds [256 x i32], [256 x i32]* %3, i64 0, i64 196
%126 = bitcast i32* %125 to <4 x i32>*
store <4 x i32> <i32 65533, i32 65533, i32 65533, i32 65533>, <4 x i32>* %126
%127 = getelementptr inbounds [256 x i32], [256 x i32]* %3, i64 0, i64 200
%128 = bitcast i32* %127 to <4 x i32>*
store <4 x i32> <i32 65533, i32 65533, i32 65533, i32 65533>, <4 x i32>* %128
%129 = getelementptr inbounds [256 x i32], [256 x i32]* %3, i64 0, i64 204
%130 = bitcast i32* %129 to <4 x i32>*
store <4 x i32> <i32 65533, i32 65533, i32 65533, i32 65533>, <4 x i32>* %130
%131 = getelementptr inbounds [256 x i32], [256 x i32]* %3, i64 0, i64 208
%132 = bitcast i32* %131 to <4 x i32>*
store <4 x i32> <i32 65533, i32 65533, i32 65533, i32 65533>, <4 x i32>* %132
%133 = getelementptr inbounds [256 x i32], [256 x i32]* %3, i64 0, i64 212
%134 = bitcast i32* %133 to <4 x i32>*
store <4 x i32> <i32 65533, i32 65533, i32 65533, i32 65533>, <4 x i32>* %134
%135 = getelementptr inbounds [256 x i32], [256 x i32]* %3, i64 0, i64 216
%136 = bitcast i32* %135 to <4 x i32>*
store <4 x i32> <i32 65533, i32 65533, i32 65533, i32 65533>, <4 x i32>* %136
%137 = getelementptr inbounds [256 x i32], [256 x i32]* %3, i64 0, i64 220
%138 = bitcast i32* %137 to <4 x i32>*
store <4 x i32> <i32 65533, i32 65533, i32 65533, i32 65533>, <4 x i32>* %138
%139 = getelementptr inbounds [256 x i32], [256 x i32]* %3, i64 0, i64 224
%140 = bitcast i32* %139 to <4 x i32>*
store <4 x i32> <i32 65533, i32 65533, i32 65533, i32 65533>, <4 x i32>* %140
%141 = getelementptr inbounds [256 x i32], [256 x i32]* %3, i64 0, i64 228
%142 = bitcast i32* %141 to <4 x i32>*
store <4 x i32> <i32 65533, i32 65533, i32 65533, i32 65533>, <4 x i32>* %142
%143 = getelementptr inbounds [256 x i32], [256 x i32]* %3, i64 0, i64 232
%144 = bitcast i32* %143 to <4 x i32>*
store <4 x i32> <i32 65533, i32 65533, i32 65533, i32 65533>, <4 x i32>* %144
%145 = getelementptr inbounds [256 x i32], [256 x i32]* %3, i64 0, i64 236
%146 = bitcast i32* %145 to <4 x i32>*
store <4 x i32> <i32 65533, i32 65533, i32 65533, i32 65533>, <4 x i32>* %146
%147 = getelementptr inbounds [256 x i32], [256 x i32]* %3, i64 0, i64 240
%148 = bitcast i32* %147 to <4 x i32>*
store <4 x i32> <i32 65533, i32 65533, i32 65533, i32 65533>, <4 x i32>* %148
%149 = getelementptr inbounds [256 x i32], [256 x i32]* %3, i64 0, i64 244
%150 = bitcast i32* %149 to <4 x i32>*
store <4 x i32> <i32 65533, i32 65533, i32 65533, i32 65533>, <4 x i32>* %150
%151 = getelementptr inbounds [256 x i32], [256 x i32]* %3, i64 0, i64 248
%152 = bitcast i32* %151 to <4 x i32>*
store <4 x i32> <i32 65533, i32 65533, i32 65533, i32 65533>, <4 x i32>* %152
%153 = getelementptr inbounds [256 x i32], [256 x i32]* %3, i64 0, i64 252
%154 = bitcast i32* %153 to <4 x i32>*
store <4 x i32> <i32 65533, i32 65533, i32 65533, i32 65533>, <4 x i32>* %154
store i32 256, i32* %4
%155 = load i32, i32* @stdin
%156 = call i32 @getc(i32 %155)
%157 = load i32, i32* @EOF
%158 = icmp eq i32 %156, %157
br i1 %158, label %204, label %159
159: ; preds = %21, %197
%160 = phi i32 [ %199, %197 ], [ %156, %21 ]
switch i32 %160, label %168 [
i32 32, label %197
i32 10, label %197
i32 9, label %197
i32 35, label %161
]
161: ; preds = %159, %161
%162 = load i32, i32* @stdin
%163 = call i32 @getc(i32 %162)
%164 = load i32, i32* @EOF
%165 = icmp ne i32 %163, %164
%166 = icmp ne i32 %163, 10
%167 = and i1 %166, %165
br i1 %167, label %161, label %197
168: ; preds = %159
%169 = load i32, i32* @stdin
%170 = call i32 @ungetc(i32 %160, i32 %169)
%171 = call i32 @scanf(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.2, i64 0, i64 0), i32* %4)
%172 = icmp eq i32 %171, 1
%173 = load i32, i32* %4
%174 = icmp sgt i32 %173, -1
%175 = select i1 %172, i1 %174, i1 false
%176 = icmp slt i32 %173, 256
%177 = select i1 %175, i1 %176, i1 false
br i1 %177, label %180, label %178
178: ; preds = %168
%179 = call i32 @exit(i32 1)
unreachable
180: ; preds = %168, %183
%181 = load i32, i32* @stdin
%182 = call i32 @getc(i32 %181)
switch i32 %182, label %184 [
i32 32, label %183
i32 9, label %183
]
183: ; preds = %180, %180
br label %180
184: ; preds = %180
%185 = load i32, i32* @EOF
%186 = icmp eq i32 %182, %185
br i1 %186, label %190, label %187
187: ; preds = %184
%188 = load i32, i32* @stdin
%189 = call i32 @ungetc(i32 %182, i32 %188)
br label %190
190: ; preds = %187, %184
switch i32 %182, label %191 [
i32 35, label %197
i32 10, label %197
]
191: ; preds = %190
%192 = load i32, i32* %4
%193 = sext i32 %192 to i64
%194 = getelementptr inbounds [256 x i32], [256 x i32]* %3, i64 0, i64 %193
%195 = call i32 @scanf(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.2, i64 0, i64 0), i32* %194)
%196 = icmp eq i32 %195, 1
br i1 %196, label %197, label %202
197: ; preds = %161, %191, %159, %159, %159, %190, %190
%198 = load i32, i32* @stdin
%199 = call i32 @getc(i32 %198)
%200 = load i32, i32* @EOF
%201 = icmp eq i32 %199, %200
br i1 %201, label %204, label %159
202: ; preds = %191
%203 = call i32 @exit(i32 1)
unreachable
204: ; preds = %197, %21
%205 = call i32 @strlen(i8* %22)
%206 = call i32 @strlen(i8* %16)
%207 = add i32 %205, 1
%208 = add i32 %207, %206
%209 = call i8* @malloc(i32 %208)
%210 = call i32 @strcpy(i8* %209, i8* %22)
%211 = call i32 @strcat(i8* %209, i8* %16)
%212 = call i32* @fopen(i8* %209, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.3, i64 0, i64 0))
%213 = icmp eq i32* %212, null
br i1 %213, label %214, label %216
214: ; preds = %204
%215 = call i32 @exit(i32 1)
unreachable
216: ; preds = %204
%217 = call i8* @strdup(i8* %14)
%218 = call i32 @strlen(i8* %217)
%219 = icmp sgt i32 %218, 0
br i1 %219, label %220, label %231
220: ; preds = %216, %226
%221 = phi i64 [ %227, %226 ], [ 0, %216 ]
%222 = getelementptr inbounds i8, i8* %217, i64 %221
%223 = load i8, i8* %222
%224 = icmp eq i8 %223, 45
br i1 %224, label %225, label %226
225: ; preds = %220
store i8 95, i8* %222
br label %226
226: ; preds = %220, %225
%227 = add nuw nsw i64 %221, 1
%228 = call i32 @strlen(i8* %217)
%229 = sext i32 %228 to i64
%230 = icmp slt i64 %227, %229
br i1 %230, label %220, label %231
231: ; preds = %226, %216
%232 = call i64 @fwrite(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.4, i64 0, i64 0), i64 3, i64 1, i32* %212)
%233 = call i32 (i32*, i8*, ...) @fprintf(i32* %212, i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.5, i64 0, i64 0), i8* %14)
%234 = call i64 @fwrite(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.6, i64 0, i64 0), i64 3, i64 1, i32* %212)
%235 = call i32 (i32*, i8*, ...) @fprintf(i32* %212, i8* getelementptr inbounds ([35 x i8], [35 x i8]* @.str.7, i64 0, i64 0), i8* %14)
%236 = call i64 @fwrite(i8* getelementptr inbounds ([54 x i8], [54 x i8]* @.str.8, i64 0, i64 0), i64 53, i64 1, i32* %212)
%237 = call i64 @fwrite(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.9, i64 0, i64 0), i64 4, i64 1, i32* %212)
%238 = call i32 @fputc(i32 10, i32* %212)
%239 = call i32 (i32*, i8*, ...) @fprintf(i32* %212, i8* getelementptr inbounds ([36 x i8], [36 x i8]* @.str.11, i64 0, i64 0), i8* %217)
%240 = call i32 @fputc(i32 10, i32* %212)
%241 = call i64 @fwrite(i8* getelementptr inbounds ([50 x i8], [50 x i8]* @.str.12, i64 0, i64 0), i64 49, i64 1, i32* %212)
br label %242
242: ; preds = %231, %242
%243 = phi i64 [ 0, %231 ], [ %332, %242 ]
%244 = shl nuw nsw i64 %243, 4
%245 = trunc i64 %244 to i32
%246 = call i32 (i32*, i8*, ...) @fprintf(i32* %212, i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.13, i64 0, i64 0), i32 %245)
%247 = call i64 @fwrite(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.14, i64 0, i64 0), i64 2, i64 1, i32* %212)
%248 = getelementptr inbounds [256 x i32], [256 x i32]* %3, i64 0, i64 %244
%249 = load i32, i32* %248
%250 = call i32 (i32*, i8*, ...) @fprintf(i32* %212, i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.16, i64 0, i64 0), i32 %249, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.17, i64 0, i64 0))
%251 = call i32 @fputc(i32 32, i32* %212)
%252 = or i64 %244, 1
%253 = getelementptr inbounds [256 x i32], [256 x i32]* %3, i64 0, i64 %252
%254 = load i32, i32* %253
%255 = call i32 (i32*, i8*, ...) @fprintf(i32* %212, i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.16, i64 0, i64 0), i32 %254, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.17, i64 0, i64 0))
%256 = call i32 @fputc(i32 32, i32* %212)
%257 = or i64 %244, 2
%258 = getelementptr inbounds [256 x i32], [256 x i32]* %3, i64 0, i64 %257
%259 = load i32, i32* %258
%260 = call i32 (i32*, i8*, ...) @fprintf(i32* %212, i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.16, i64 0, i64 0), i32 %259, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.17, i64 0, i64 0))
%261 = call i32 @fputc(i32 32, i32* %212)
%262 = or i64 %244, 3
%263 = getelementptr inbounds [256 x i32], [256 x i32]* %3, i64 0, i64 %262
%264 = load i32, i32* %263
%265 = call i32 (i32*, i8*, ...) @fprintf(i32* %212, i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.16, i64 0, i64 0), i32 %264, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.17, i64 0, i64 0))
%266 = call i32 @fputc(i32 32, i32* %212)
%267 = or i64 %244, 4
%268 = getelementptr inbounds [256 x i32], [256 x i32]* %3, i64 0, i64 %267
%269 = load i32, i32* %268
%270 = call i32 (i32*, i8*, ...) @fprintf(i32* %212, i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.16, i64 0, i64 0), i32 %269, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.17, i64 0, i64 0))
%271 = call i32 @fputc(i32 32, i32* %212)
%272 = or i64 %244, 5
%273 = getelementptr inbounds [256 x i32], [256 x i32]* %3, i64 0, i64 %272
%274 = load i32, i32* %273
%275 = call i32 (i32*, i8*, ...) @fprintf(i32* %212, i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.16, i64 0, i64 0), i32 %274, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.17, i64 0, i64 0))
%276 = call i32 @fputc(i32 32, i32* %212)
%277 = or i64 %244, 6
%278 = getelementptr inbounds [256 x i32], [256 x i32]* %3, i64 0, i64 %277
%279 = load i32, i32* %278
%280 = call i32 (i32*, i8*, ...) @fprintf(i32* %212, i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.16, i64 0, i64 0), i32 %279, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.17, i64 0, i64 0))
%281 = call i32 @fputc(i32 32, i32* %212)
%282 = or i64 %244, 7
%283 = getelementptr inbounds [256 x i32], [256 x i32]* %3, i64 0, i64 %282
%284 = load i32, i32* %283
%285 = icmp ult i64 %282, 255
%286 = select i1 %285, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.17, i64 0, i64 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.15, i64 0, i64 0)
%287 = call i32 (i32*, i8*, ...) @fprintf(i32* %212, i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.16, i64 0, i64 0), i32 %284, i8* %286)
%288 = call i32 @fputc(i32 10, i32* %212)
%289 = call i64 @fwrite(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.14, i64 0, i64 0), i64 2, i64 1, i32* %212)
%290 = or i64 %244, 8
%291 = getelementptr inbounds [256 x i32], [256 x i32]* %3, i64 0, i64 %290
%292 = load i32, i32* %291
%293 = call i32 (i32*, i8*, ...) @fprintf(i32* %212, i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.16, i64 0, i64 0), i32 %292, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.17, i64 0, i64 0))
%294 = call i32 @fputc(i32 32, i32* %212)
%295 = or i64 %244, 9
%296 = getelementptr inbounds [256 x i32], [256 x i32]* %3, i64 0, i64 %295
%297 = load i32, i32* %296
%298 = call i32 (i32*, i8*, ...) @fprintf(i32* %212, i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.16, i64 0, i64 0), i32 %297, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.17, i64 0, i64 0))
%299 = call i32 @fputc(i32 32, i32* %212)
%300 = or i64 %244, 10
%301 = getelementptr inbounds [256 x i32], [256 x i32]* %3, i64 0, i64 %300
%302 = load i32, i32* %301
%303 = call i32 (i32*, i8*, ...) @fprintf(i32* %212, i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.16, i64 0, i64 0), i32 %302, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.17, i64 0, i64 0))
%304 = call i32 @fputc(i32 32, i32* %212)
%305 = or i64 %244, 11
%306 = getelementptr inbounds [256 x i32], [256 x i32]* %3, i64 0, i64 %305
%307 = load i32, i32* %306
%308 = call i32 (i32*, i8*, ...) @fprintf(i32* %212, i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.16, i64 0, i64 0), i32 %307, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.17, i64 0, i64 0))
%309 = call i32 @fputc(i32 32, i32* %212)
%310 = or i64 %244, 12
%311 = getelementptr inbounds [256 x i32], [256 x i32]* %3, i64 0, i64 %310
%312 = load i32, i32* %311
%313 = call i32 (i32*, i8*, ...) @fprintf(i32* %212, i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.16, i64 0, i64 0), i32 %312, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.17, i64 0, i64 0))
%314 = call i32 @fputc(i32 32, i32* %212)
%315 = or i64 %244, 13
%316 = getelementptr inbounds [256 x i32], [256 x i32]* %3, i64 0, i64 %315
%317 = load i32, i32* %316
%318 = call i32 (i32*, i8*, ...) @fprintf(i32* %212, i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.16, i64 0, i64 0), i32 %317, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.17, i64 0, i64 0))
%319 = call i32 @fputc(i32 32, i32* %212)
%320 = or i64 %244, 14
%321 = getelementptr inbounds [256 x i32], [256 x i32]* %3, i64 0, i64 %320
%322 = load i32, i32* %321
%323 = call i32 (i32*, i8*, ...) @fprintf(i32* %212, i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.16, i64 0, i64 0), i32 %322, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.17, i64 0, i64 0))
%324 = call i32 @fputc(i32 32, i32* %212)
%325 = or i64 %244, 15
%326 = getelementptr inbounds [256 x i32], [256 x i32]* %3, i64 0, i64 %325
%327 = load i32, i32* %326
%328 = icmp ult i64 %325, 255
%329 = select i1 %328, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.17, i64 0, i64 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.15, i64 0, i64 0)
%330 = call i32 (i32*, i8*, ...) @fprintf(i32* %212, i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.16, i64 0, i64 0), i32 %327, i8* %329)
%331 = call i32 @fputc(i32 10, i32* %212)
%332 = add nuw nsw i64 %243, 1
%333 = icmp eq i64 %332, 16
br i1 %333, label %334, label %242
334: ; preds = %242
%335 = call i64 @fwrite(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.18, i64 0, i64 0), i64 3, i64 1, i32* %212)
%336 = call i32 @fputc(i32 10, i32* %212)
br label %337
337: ; preds = %355, %334
%338 = phi i64 [ 0, %334 ], [ %356, %355 ]
%339 = getelementptr inbounds [256 x i32], [256 x i32]* %3, i64 0, i64 %338
%340 = load i32, i32* %339
%341 = icmp eq i32 %340, 65533
br i1 %341, label %346, label %342
342: ; preds = %337
%343 = ashr i32 %340, 8
%344 = sext i32 %343 to i64
%345 = getelementptr inbounds [256 x i32], [256 x i32]* %5, i64 0, i64 %344
store i32 1, i32* %345
br label %346
346: ; preds = %337, %342
%347 = or i64 %338, 1
%348 = getelementptr inbounds [256 x i32], [256 x i32]* %3, i64 0, i64 %347
%349 = load i32, i32* %348
%350 = icmp eq i32 %349, 65533
br i1 %350, label %355, label %351
351: ; preds = %346
%352 = ashr i32 %349, 8
%353 = sext i32 %352 to i64
%354 = getelementptr inbounds [256 x i32], [256 x i32]* %5, i64 0, i64 %353
store i32 1, i32* %354
br label %355
355: ; preds = %351, %346
%356 = add nuw nsw i64 %338, 2
%357 = icmp eq i64 %356, 256
br i1 %357, label %358, label %337
358: ; preds = %355
%359 = call i32 (i32*, i8*, ...) @fprintf(i32* %212, i8* getelementptr inbounds ([36 x i8], [36 x i8]* @.str.19, i64 0, i64 0), i8* %217)
br label %360
360: ; preds = %358, %368
%361 = phi i64 [ 0, %358 ], [ %369, %368 ]
%362 = getelementptr inbounds [256 x i32], [256 x i32]* %5, i64 0, i64 %361
%363 = load i32, i32* %362
%364 = icmp eq i32 %363, 0
br i1 %364, label %368, label %365
365: ; preds = %360
%366 = trunc i64 %361 to i32
%367 = call i32 (i32*, i8*, ...) @fprintf(i32* %212, i8* getelementptr inbounds ([30 x i8], [30 x i8]* @.str.20, i64 0, i64 0), i32 %366, i8* %217, i32 %366)
br label %368
368: ; preds = %360, %365
%369 = add nuw nsw i64 %361, 1
%370 = icmp eq i64 %369, 256
br i1 %370, label %371, label %360
371: ; preds = %368
%372 = call i32 @fputc(i32 10, i32* %212)
br label %373
373: ; preds = %371, %434
%374 = phi i64 [ 0, %371 ], [ %435, %434 ]
%375 = trunc i64 %374 to i32
%376 = getelementptr inbounds [256 x i32], [256 x i32]* %5, i64 0, i64 %374
%377 = load i32, i32* %376
%378 = icmp eq i32 %377, 0
br i1 %378, label %434, label %379
379: ; preds = %373
%380 = call i32 (i32*, i8*, ...) @fprintf(i32* %212, i8* getelementptr inbounds ([46 x i8], [46 x i8]* @.str.21, i64 0, i64 0), i32 %375)
%381 = shl nsw i32 %375, 8
br label %382
382: ; preds = %379, %426
%383 = phi i32 [ 0, %379 ], [ %429, %426 ]
%384 = call i64 @fwrite(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.14, i64 0, i64 0), i64 2, i64 1, i32* %212)
%385 = shl nsw i32 %383, 3
br label %386
386: ; preds = %382, %419
%387 = phi i32 [ 0, %382 ], [ %424, %419 ]
%388 = add nuw nsw i32 %387, %385
%389 = add nuw nsw i32 %388, %381
%390 = icmp eq i32 %389, 65533
br i1 %390, label %419, label %391
391: ; preds = %386, %411
%392 = phi i64 [ %412, %411 ], [ 0, %386 ]
%393 = getelementptr inbounds [256 x i32], [256 x i32]* %3, i64 0, i64 %392
%394 = load i32, i32* %393
%395 = icmp eq i32 %394, %389
br i1 %395, label %414, label %396
396: ; preds = %391
%397 = or i64 %392, 1
%398 = getelementptr inbounds [256 x i32], [256 x i32]* %3, i64 0, i64 %397
%399 = load i32, i32* %398
%400 = icmp eq i32 %399, %389
br i1 %400, label %414, label %401
401: ; preds = %396
%402 = or i64 %392, 2
%403 = getelementptr inbounds [256 x i32], [256 x i32]* %3, i64 0, i64 %402
%404 = load i32, i32* %403
%405 = icmp eq i32 %404, %389
br i1 %405, label %414, label %406
406: ; preds = %401
%407 = or i64 %392, 3
%408 = getelementptr inbounds [256 x i32], [256 x i32]* %3, i64 0, i64 %407
%409 = load i32, i32* %408
%410 = icmp eq i32 %409, %389
br i1 %410, label %414, label %411
411: ; preds = %406
%412 = add nuw nsw i64 %392, 4
%413 = icmp eq i64 %412, 256
br i1 %413, label %418, label %391
414: ; preds = %406, %401, %396, %391
%415 = phi i64 [ %392, %391 ], [ %397, %396 ], [ %402, %401 ], [ %407, %406 ]
%416 = trunc i64 %415 to i32
%417 = icmp eq i32 %416, 256
br i1 %417, label %418, label %419
418: ; preds = %411, %414
br label %419
419: ; preds = %418, %414, %386
%420 = phi i32 [ 0, %386 ], [ 0, %418 ], [ %416, %414 ]
%421 = icmp ult i32 %388, 255
%422 = select i1 %421, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.17, i64 0, i64 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.15, i64 0, i64 0)
%423 = call i32 (i32*, i8*, ...) @fprintf(i32* %212, i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.22, i64 0, i64 0), i32 %420, i8* %422)
%424 = add nuw nsw i32 %387, 1
%425 = icmp eq i32 %424, 8
br i1 %425, label %426, label %386
426: ; preds = %419
%427 = or i32 %385, 7
%428 = call i32 (i32*, i8*, ...) @fprintf(i32* %212, i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.23, i64 0, i64 0), i32 %385, i32 %427)
%429 = add nuw nsw i32 %383, 1
%430 = icmp eq i32 %429, 32
br i1 %430, label %431, label %382
431: ; preds = %426
%432 = call i64 @fwrite(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.18, i64 0, i64 0), i64 3, i64 1, i32* %212)
%433 = call i32 @fputc(i32 10, i32* %212)
br label %434
434: ; preds = %373, %431
%435 = add nuw nsw i64 %374, 1
%436 = icmp eq i64 %435, 256
br i1 %436, label %437, label %373
437: ; preds = %434
%438 = call i64 @fwrite(i8* getelementptr inbounds ([57 x i8], [57 x i8]* @.str.24, i64 0, i64 0), i64 56, i64 1, i32* %212)
br label %439
439: ; preds = %437, %460
%440 = phi i64 [ 0, %437 ], [ %462, %460 ]
%441 = call i64 @fwrite(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.14, i64 0, i64 0), i64 2, i64 1, i32* %212)
%442 = shl nsw i64 %440, 3
br label %443
443: ; preds = %439, %454
%444 = phi i64 [ 0, %439 ], [ %458, %454 ]
%445 = add nuw nsw i64 %444, %442
%446 = getelementptr inbounds [256 x i32], [256 x i32]* %5, i64 0, i64 %445
%447 = load i32, i32* %446
%448 = icmp eq i32 %447, 0
br i1 %448, label %452, label %449
449: ; preds = %443
%450 = trunc i64 %445 to i32
%451 = call i32 (i32*, i8*, ...) @fprintf(i32* %212, i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.25, i64 0, i64 0), i32 %450)
br label %454
452: ; preds = %443
%453 = call i64 @fwrite(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.26, i64 0, i64 0), i64 6, i64 1, i32* %212)
br label %454
454: ; preds = %452, %449
%455 = icmp ult i64 %445, 255
%456 = select i1 %455, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.17, i64 0, i64 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.15, i64 0, i64 0)
%457 = call i32 (i32*, i8*, ...) @fprintf(i32* %212, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.27, i64 0, i64 0), i8* %456)
%458 = add nuw nsw i64 %444, 1
%459 = icmp eq i64 %458, 8
br i1 %459, label %460, label %443
460: ; preds = %454
%461 = call i32 @fputc(i32 10, i32* %212)
%462 = add nuw nsw i64 %440, 1
%463 = icmp eq i64 %462, 32
br i1 %463, label %464, label %439
464: ; preds = %460
%465 = call i64 @fwrite(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.18, i64 0, i64 0), i64 3, i64 1, i32* %212)
%466 = call i32 @fputc(i32 10, i32* %212)
br label %467
467: ; preds = %464, %475
%468 = phi i64 [ 255, %464 ], [ %476, %475 ]
%469 = getelementptr inbounds [256 x i32], [256 x i32]* %5, i64 0, i64 %468
%470 = load i32, i32* %469
%471 = icmp eq i32 %470, 0
br i1 %471, label %475, label %472
472: ; preds = %467
%473 = trunc i64 %468 to i32
%474 = call i32 (i32*, i8*, ...) @fprintf(i32* %212, i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.28, i64 0, i64 0), i32 %473)
br label %475
475: ; preds = %467, %472
%476 = add nsw i64 %468, -1
%477 = icmp eq i64 %468, 0
br i1 %477, label %478, label %467
478: ; preds = %475
%479 = call i32 @fputc(i32 10, i32* %212)
%480 = call i32 (i32*, i8*, ...) @fprintf(i32* %212, i8* getelementptr inbounds ([37 x i8], [37 x i8]* @.str.29, i64 0, i64 0), i8* %217)
%481 = call i32 (i32*, i8*, ...) @fprintf(i32* %212, i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.30, i64 0, i64 0), i8* %14)
%482 = call i64 @fwrite(i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.31, i64 0, i64 0), i64 15, i64 1, i32* %212)
%483 = call i64 @fwrite(i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.32, i64 0, i64 0), i64 15, i64 1, i32* %212)
br label %505
484: ; preds = %505
%485 = or i64 %506, 1
%486 = getelementptr inbounds [256 x i32], [256 x i32]* %3, i64 0, i64 %485
%487 = load i32, i32* %486
%488 = zext i32 %487 to i64
%489 = icmp eq i64 %485, %488
br i1 %489, label %490, label %511
490: ; preds = %484
%491 = or i64 %506, 2
%492 = getelementptr inbounds [256 x i32], [256 x i32]* %3, i64 0, i64 %491
%493 = load i32, i32* %492
%494 = zext i32 %493 to i64
%495 = icmp eq i64 %491, %494
br i1 %495, label %496, label %511
496: ; preds = %490
%497 = or i64 %506, 3
%498 = getelementptr inbounds [256 x i32], [256 x i32]* %3, i64 0, i64 %497
%499 = load i32, i32* %498
%500 = zext i32 %499 to i64
%501 = icmp eq i64 %497, %500
br i1 %501, label %502, label %511
502: ; preds = %496
%503 = add nuw nsw i64 %506, 4
%504 = icmp eq i64 %503, 128
br i1 %504, label %511, label %505
505: ; preds = %502, %478
%506 = phi i64 [ 0, %478 ], [ %503, %502 ]
%507 = getelementptr inbounds [256 x i32], [256 x i32]* %3, i64 0, i64 %506
%508 = load i32, i32* %507
%509 = zext i32 %508 to i64
%510 = icmp eq i64 %506, %509
br i1 %510, label %484, label %511
511: ; preds = %502, %496, %490, %484, %505
%512 = phi i8* [ getelementptr inbounds ([2 x i8], [2 x i8]* @.str.35, i64 0, i64 0), %505 ], [ getelementptr inbounds ([2 x i8], [2 x i8]* @.str.35, i64 0, i64 0), %484 ], [ getelementptr inbounds ([2 x i8], [2 x i8]* @.str.35, i64 0, i64 0), %490 ], [ getelementptr inbounds ([2 x i8], [2 x i8]* @.str.35, i64 0, i64 0), %496 ], [ getelementptr inbounds ([2 x i8], [2 x i8]* @.str.34, i64 0, i64 0), %502 ]
%513 = call i32 (i32*, i8*, ...) @fprintf(i32* %212, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.33, i64 0, i64 0), i8* %512)
%514 = call i64 @fwrite(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.18, i64 0, i64 0), i64 3, i64 1, i32* %212)
%515 = call i32 @fputc(i32 10, i32* %212)
%516 = call i64 @fwrite(i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str.36, i64 0, i64 0), i64 19, i64 1, i32* %212)
%517 = call i64 @fwrite(i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str.37, i64 0, i64 0), i64 19, i64 1, i32* %212)
%518 = call i32 @fputc(i32 10, i32* %212)
%519 = call i64 @ferror(i32* %212)
%520 = icmp eq i64 %519, 0
br i1 %520, label %521, label %524
521: ; preds = %511
%522 = call i64 @fclose(i32* %212)
%523 = icmp eq i64 %522, 0
br i1 %523, label %526, label %524
524: ; preds = %521, %511
%525 = call i32 @exit(i32 1)
unreachable
526: ; preds = %521
%527 = call i32 @exit(i32 0)
unreachable
}