#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 /*<<< orphan*/ exit(int /*<<< orphan*/);
int /*<<< orphan*/ fclose(int /*<<< orphan*/ *);
int /*<<< orphan*/ *fgets(char *, int, int /*<<< orphan*/ *);
int /*<<< orphan*/ *fopen(char *, char *);
int /*<<< orphan*/ fprintf(int /*<<< orphan*/ *, char *, char *, ...);
int /*<<< orphan*/ fputs(char *, int /*<<< orphan*/ *);
int /*<<< orphan*/ printf(char *, ...);
int /*<<< orphan*/ puts(char *);
int /*<<< orphan*/ sscanf(char *, char *, int *);
int /*<<< orphan*/ strcpy(char *, char *);
int strlen(char *);
scalar_t__ strncmp(char *, char *, int);
main() {
  FILE *vrdierrs_dat;
  FILE *verrordefs_h;
  FILE *verrdefs_fin;
  FILE *vrdifac_msg;
  char *expected;
  long cur_num;
  int len;
  char number_str[25];
  int number;
  char in_record[2001];
  char key[2001];
  char name[2001];
  char fname[2001];
  char message[2001];
  verrordefs_h = fopen("verrdefs.h", "w");
  verrdefs_fin = fopen("verrdefs.fin", "w");
  vrdifac_msg = fopen("vrdifac.msg", "w");
  fputs("/* VERRDEFS -- Definition of all symbolic names for VRDI internal\n",
        verrordefs_h);
  fputs(" * errors.  This module is used by application programs to define\n",
        verrordefs_h);
  fputs(" * symbolic names for the VRDI errors.  \n", verrordefs_h);
  fputs(" *\n", verrordefs_h);
  fputs(" *\tNOTE :  This file is built by VRDIERRORS.COM.  It should never\n",
        verrordefs_h);
  fputs(" *\t\tbe modified directly.  To make changes to the source,\n",
        verrordefs_h);
  fputs(" *\t\tchange VRDIERRORS.COM.\n", verrordefs_h);
  fputs(" *\n", verrordefs_h);
  fputs(" */\n", verrordefs_h);
  fputs("C VERRDEFS -- Definition of all symbolic names for VRDI internal\n",
        verrdefs_fin);
  fputs("C errors.  This module is used by application programs to define\n",
        verrdefs_fin);
  fputs("C symbolic names for the VRDI errors.\n", verrdefs_fin);
  fputs("C\n", verrdefs_fin);
  fputs("C\tNOTE :  This file is built by VRDIERRORS.COM.  It should never\n",
        verrdefs_fin);
  fputs("C\t\tbe modified directly.  To make changes to the source,\n",
        verrdefs_fin);
  fputs("C\t\tchange VRDIERRORS.COM.\n", verrdefs_fin);
  fputs("C\n", verrdefs_fin);
  fputs("!\n", vrdifac_msg);
  fputs("!\tMessage file for facility VIC2\n", vrdifac_msg);
  fputs("!\n", vrdifac_msg);
  fputs("!  This file contains the message id's and detailed texts for\n",
        vrdifac_msg);
  fputs("!  the VRDI internal errors.\n", vrdifac_msg);
  fputs("!\n", vrdifac_msg);
  fputs("!\n", vrdifac_msg);
  fputs("!\tNOTE :  This file is built by VRDIERRORS.COM.  It should never\n",
        vrdifac_msg);
  fputs("!\t\tbe modified directly.  To make changes to the source,\n",
        vrdifac_msg);
  fputs("!\t\tchange VRDIERRORS.COM.\n", vrdifac_msg);
  fputs("!\n", vrdifac_msg);
  fputs("!\n", vrdifac_msg);
  cur_num = -65537;
  vrdierrs_dat = fopen("vrdierrs.dat", "r");
FIND_TOP:
  if (fgets(in_record, 2000, vrdierrs_dat) == NULL)
    goto EARLY_END;
  fgets(in_record, 2000, vrdierrs_dat);
  if (strncmp(in_record, "%%SKIP", 6) == 0) {
    cur_num = cur_num - 1;
  } else if (strncmp(in_record, "%%KEY ", 6) != 0)
    goto FIND_TOP;
TOP:
  strcpy(key, &in_record[6]);
  if ((len = strlen(key)) != 0)
    if (key[len - 1] == '\n')
      key[len - 1] = '\0';
  if (fgets(in_record, 2000, vrdierrs_dat) == NULL)
    goto EARLY_END;
  expected = "%%NUMBER ";
  if (strncmp(in_record, "%%NUMBER ", 9) != 0)
    goto BAD_DIRECTIVE;
  strcpy(number_str, &in_record[9]);
  sscanf(number_str, " %d", &number);
  if (number != cur_num)
    goto BAD_NUMBER;
  cur_num = cur_num - 1;
  if (fgets(in_record, 2000, vrdierrs_dat) == NULL)
    goto EARLY_END;
  expected = "%%NAME ";
  if (strncmp(in_record, "%%NAME ", 7) != 0)
    goto BAD_DIRECTIVE;
  strcpy(name, &in_record[7]);
  if ((len = strlen(name)) != 0)
    if (name[len - 1] == '\n')
      name[len - 1] = '\0';
  if (fgets(in_record, 2000, vrdierrs_dat) == NULL)
    goto EARLY_END;
  expected = "%%MESSAGE ";
  if (strncmp(in_record, "%%MESSAGE ", 10) != 0)
    goto BAD_DIRECTIVE;
  strcpy(message, &in_record[10]);
  if ((len = strlen(message)) != 0)
    if (message[len - 1] == '\n')
      message[len - 1] = '\0';
  fprintf(verrordefs_h, "#define %s %d\n", key, number);
  fprintf(verrdefs_fin, "      INTEGER %s\n", key);
  fprintf(verrdefs_fin, "      PARAMETER (%s = %d)\n", key, number);
  if (fgets(in_record, 2000, vrdierrs_dat) == NULL)
    goto EARLY_END;
  expected = "%%HELP";
  if (strncmp(in_record, "%%HELP", 6) != 0)
    goto BAD_DIRECTIVE;
  fprintf(vrdifac_msg, ".KEY %s\t! %s\n", key, name);
WRT_HLP:
  strcpy(in_record, "  ");
  if (fgets(in_record, 2000, vrdierrs_dat) == NULL)
    goto HLP_DONE;
  if (strncmp(in_record, "%%", 2) == 0)
    goto HLP_DONE;
  fputs(in_record, vrdifac_msg);
  goto WRT_HLP;
HLP_DONE:
  if (strncmp(in_record, "%%", 2) != 0)
    goto DONE;
CHECK_SKIP:
  if (strncmp(in_record, "%%SKIP", 6) != 0)
    goto CHECK_KEY;
  cur_num = cur_num - 1;
  if (fgets(in_record, 2000, vrdierrs_dat) == NULL)
    goto DONE;
  goto CHECK_SKIP;
CHECK_KEY:
  expected = "%%KEY ";
  if (strncmp(in_record, "%%KEY ", 6) != 0)
    goto BAD_DIRECTIVE;
  goto TOP;
DONE:
  fclose(vrdierrs_dat);
  fclose(verrordefs_h);
  fclose(verrdefs_fin);
  puts("****************************************");
  puts("*                                      *");
  puts("* VRDIERRORS.COM:                      *");
  puts("* All files successfully created       *");
  puts("*                                      *");
  puts("****************************************");
  exit(0);
EARLY_END:
  printf("**** Premature end of file encountered processing VRDIERRS.DAT\n");
  printf("**** Check file contents\n");
  goto PLS_FIX;
BAD_DIRECTIVE:
  printf("**** Bad directive in VRDIERRS.DAT\n");
  printf("**** Expected %s\n", expected);
  printf("**** Found %s\n", in_record);
  goto PLS_FIX;
BAD_NUMBER:
  printf("**** Numbering sequence in VRDIERRS.DAT is bad");
  printf("**** Found %d when expecting %ld\n", number, cur_num);
PLS_FIX:
  puts("");
  puts("Please see documentation in ERRORBLD.COM and fix");
  puts("ERROR file build aborted");
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0x27c0,%rsp
movl   $0x0,-0x4(%rbp)
lea    0xe27(%rip),%rdi
lea    0xe2b(%rip),%rsi
call   10d0 <fopen@plt>
mov    %rax,-0x18(%rbp)
lea    0xe1d(%rip),%rdi
lea    0xe14(%rip),%rsi
call   10d0 <fopen@plt>
mov    %rax,-0x20(%rbp)
lea    0xe13(%rip),%rdi
lea    0xdfd(%rip),%rsi
call   10d0 <fopen@plt>
mov    %rax,-0x28(%rbp)
mov    -0x18(%rbp),%rsi
lea    0xe04(%rip),%rdi
call   1090 <fputs@plt>
mov    -0x18(%rbp),%rsi
lea    0xe37(%rip),%rdi
call   1090 <fputs@plt>
mov    -0x18(%rbp),%rsi
lea    0xe6a(%rip),%rdi
call   1090 <fputs@plt>
mov    -0x18(%rbp),%rsi
lea    0xe84(%rip),%rdi
call   1090 <fputs@plt>
mov    -0x18(%rbp),%rsi
lea    0xe78(%rip),%rdi
call   1090 <fputs@plt>
mov    -0x18(%rbp),%rsi
lea    0xeab(%rip),%rdi
call   1090 <fputs@plt>
mov    -0x18(%rbp),%rsi
lea    0xed6(%rip),%rdi
call   1090 <fputs@plt>
mov    -0x18(%rbp),%rsi
lea    0xe44(%rip),%rdi
call   1090 <fputs@plt>
mov    -0x18(%rbp),%rsi
lea    0xed2(%rip),%rdi
call   1090 <fputs@plt>
mov    -0x20(%rbp),%rsi
lea    0xec7(%rip),%rdi
call   1090 <fputs@plt>
mov    -0x20(%rbp),%rsi
lea    0xef9(%rip),%rdi
call   1090 <fputs@plt>
mov    -0x20(%rbp),%rsi
lea    0xf2b(%rip),%rdi
call   1090 <fputs@plt>
mov    -0x20(%rbp),%rsi
lea    0xf42(%rip),%rdi
call   1090 <fputs@plt>
mov    -0x20(%rbp),%rsi
lea    0xf35(%rip),%rdi
call   1090 <fputs@plt>
mov    -0x20(%rbp),%rsi
lea    0xf67(%rip),%rdi
call   1090 <fputs@plt>
mov    -0x20(%rbp),%rsi
lea    0xf91(%rip),%rdi
call   1090 <fputs@plt>
mov    -0x20(%rbp),%rsi
lea    0xf02(%rip),%rdi
call   1090 <fputs@plt>
mov    -0x28(%rbp),%rsi
lea    0xf8c(%rip),%rdi
call   1090 <fputs@plt>
mov    -0x28(%rbp),%rsi
lea    0xf7f(%rip),%rdi
call   1090 <fputs@plt>
mov    -0x28(%rbp),%rsi
lea    0xf6c(%rip),%rdi
call   1090 <fputs@plt>
mov    -0x28(%rbp),%rsi
lea    0xf81(%rip),%rdi
call   1090 <fputs@plt>
mov    -0x28(%rbp),%rsi
lea    0xfb0(%rip),%rdi
call   1090 <fputs@plt>
mov    -0x28(%rbp),%rsi
lea    0xf3c(%rip),%rdi
call   1090 <fputs@plt>
mov    -0x28(%rbp),%rsi
lea    0xf2c(%rip),%rdi
call   1090 <fputs@plt>
mov    -0x28(%rbp),%rsi
lea    0xf9e(%rip),%rdi
call   1090 <fputs@plt>
mov    -0x28(%rbp),%rsi
lea    0xfd0(%rip),%rdi
call   1090 <fputs@plt>
mov    -0x28(%rbp),%rsi
lea    0xffa(%rip),%rdi
call   1090 <fputs@plt>
mov    -0x28(%rbp),%rsi
lea    0xeec(%rip),%rdi
call   1090 <fputs@plt>
mov    -0x28(%rbp),%rsi
lea    0xedc(%rip),%rdi
call   1090 <fputs@plt>
movq   $0xfffffffffffeffff,-0x38(%rbp)
ff
lea    0xfe1(%rip),%rdi
lea    0xfe7(%rip),%rsi
call   10d0 <fopen@plt>
mov    %rax,-0x10(%rbp)
lea    -0x840(%rbp),%rdi
mov    -0x10(%rbp),%rdx
mov    $0x7d0,%esi
call   10a0 <fgets@plt>
cmp    $0x0,%rax
jne    142a <main+0x26a>
jmp    1966 <main+0x7a6>
lea    -0x840(%rbp),%rdi
mov    -0x10(%rbp),%rdx
mov    $0x7d0,%esi
call   10a0 <fgets@plt>
lea    -0x840(%rbp),%rdi
lea    0xf99(%rip),%rsi
mov    $0x6,%edx
call   1030 <strncmp@plt>
cmp    $0x0,%rax
jne    1472 <main+0x2b2>
mov    -0x38(%rbp),%rax
sub    $0x1,%rax
mov    %rax,-0x38(%rbp)
jmp    149e <main+0x2de>
lea    -0x840(%rbp),%rdi
lea    0xf6d(%rip),%rsi
mov    $0x6,%edx
call   1030 <strncmp@plt>
cmp    $0x0,%rax
je     1499 <main+0x2d9>
jmp    1406 <main+0x246>
jmp    149e <main+0x2de>
jmp    14a3 <main+0x2e3>
lea    -0x1020(%rbp),%rdi
lea    -0x840(%rbp),%rsi
add    $0x6,%rsi
call   1040 <strcpy@plt>
lea    -0x1020(%rbp),%rdi
call   1070 <strlen@plt>
mov    %eax,-0x3c(%rbp)
cmp    $0x0,%eax
je     1500 <main+0x340>
mov    -0x3c(%rbp),%eax
sub    $0x1,%eax
cltq
movsbl -0x1020(%rbp,%rax,1),%eax
ff
cmp    $0xa,%eax
jne    14fb <main+0x33b>
mov    -0x3c(%rbp),%eax
sub    $0x1,%eax
cltq
movb   $0x0,-0x1020(%rbp,%rax,1)
jmp    1500 <main+0x340>
lea    -0x840(%rbp),%rdi
mov    -0x10(%rbp),%rdx
mov    $0x7d0,%esi
call   10a0 <fgets@plt>
cmp    $0x0,%rax
jne    1524 <main+0x364>
jmp    1966 <main+0x7a6>
lea    0xec9(%rip),%rax
mov    %rax,-0x30(%rbp)
lea    -0x840(%rbp),%rdi
lea    0xeb7(%rip),%rsi
mov    $0x9,%edx
call   1030 <strncmp@plt>
cmp    $0x0,%rax
je     1556 <main+0x396>
jmp    1987 <main+0x7c7>
lea    -0x60(%rbp),%rdi
lea    -0x840(%rbp),%rsi
add    $0x9,%rsi
call   1040 <strcpy@plt>
lea    -0x60(%rbp),%rdi
lea    0xe89(%rip),%rsi
lea    -0x64(%rbp),%rdx
call   10c0 <sscanf@plt>
movslq -0x64(%rbp),%rax
cmp    -0x38(%rbp),%rax
je     1591 <main+0x3d1>
jmp    19c1 <main+0x801>
mov    -0x38(%rbp),%rax
sub    $0x1,%rax
mov    %rax,-0x38(%rbp)
lea    -0x840(%rbp),%rdi
mov    -0x10(%rbp),%rdx
mov    $0x7d0,%esi
call   10a0 <fgets@plt>
cmp    $0x0,%rax
jne    15c1 <main+0x401>
jmp    1966 <main+0x7a6>
lea    0xe3a(%rip),%rax
mov    %rax,-0x30(%rbp)
lea    -0x840(%rbp),%rdi
lea    0xe28(%rip),%rsi
mov    $0x7,%edx
call   1030 <strncmp@plt>
cmp    $0x0,%rax
je     15f3 <main+0x433>
jmp    1987 <main+0x7c7>
lea    -0x1800(%rbp),%rdi
lea    -0x840(%rbp),%rsi
add    $0x7,%rsi
call   1040 <strcpy@plt>
lea    -0x1800(%rbp),%rdi
call   1070 <strlen@plt>
mov    %eax,-0x3c(%rbp)
cmp    $0x0,%eax
je     1650 <main+0x490>
mov    -0x3c(%rbp),%eax
sub    $0x1,%eax
cltq
movsbl -0x1800(%rbp,%rax,1),%eax
ff
cmp    $0xa,%eax
jne    164b <main+0x48b>
mov    -0x3c(%rbp),%eax
sub    $0x1,%eax
cltq
movb   $0x0,-0x1800(%rbp,%rax,1)
jmp    1650 <main+0x490>
lea    -0x840(%rbp),%rdi
mov    -0x10(%rbp),%rdx
mov    $0x7d0,%esi
call   10a0 <fgets@plt>
cmp    $0x0,%rax
jne    1674 <main+0x4b4>
jmp    1966 <main+0x7a6>
lea    0xd8f(%rip),%rax
mov    %rax,-0x30(%rbp)
lea    -0x840(%rbp),%rdi
lea    0xd7d(%rip),%rsi
mov    $0xa,%edx
call   1030 <strncmp@plt>
cmp    $0x0,%rax
je     16a6 <main+0x4e6>
jmp    1987 <main+0x7c7>
lea    -0x27c0(%rbp),%rdi
lea    -0x840(%rbp),%rsi
add    $0xa,%rsi
call   1040 <strcpy@plt>
lea    -0x27c0(%rbp),%rdi
call   1070 <strlen@plt>
mov    %eax,-0x3c(%rbp)
cmp    $0x0,%eax
je     1703 <main+0x543>
mov    -0x3c(%rbp),%eax
sub    $0x1,%eax
cltq
movsbl -0x27c0(%rbp,%rax,1),%eax
ff
cmp    $0xa,%eax
jne    16fe <main+0x53e>
mov    -0x3c(%rbp),%eax
sub    $0x1,%eax
cltq
movb   $0x0,-0x27c0(%rbp,%rax,1)
jmp    1703 <main+0x543>
mov    -0x18(%rbp),%rdi
lea    -0x1020(%rbp),%rdx
mov    -0x64(%rbp),%ecx
lea    0xcfd(%rip),%rsi
mov    $0x0,%al
call   10b0 <fprintf@plt>
mov    -0x20(%rbp),%rdi
lea    -0x1020(%rbp),%rdx
lea    0xcf3(%rip),%rsi
mov    $0x0,%al
call   10b0 <fprintf@plt>
mov    -0x20(%rbp),%rdi
lea    -0x1020(%rbp),%rdx
mov    -0x64(%rbp),%ecx
lea    0xce9(%rip),%rsi
mov    $0x0,%al
call   10b0 <fprintf@plt>
lea    -0x840(%rbp),%rdi
mov    -0x10(%rbp),%rdx
mov    $0x7d0,%esi
call   10a0 <fgets@plt>
cmp    $0x0,%rax
jne    1778 <main+0x5b8>
jmp    1966 <main+0x7a6>
lea    0xcd2(%rip),%rax
mov    %rax,-0x30(%rbp)
lea    -0x840(%rbp),%rdi
lea    0xcc0(%rip),%rsi
mov    $0x6,%edx
call   1030 <strncmp@plt>
cmp    $0x0,%rax
je     17aa <main+0x5ea>
jmp    1987 <main+0x7c7>
mov    -0x28(%rbp),%rdi
lea    -0x1020(%rbp),%rdx
lea    -0x1800(%rbp),%rcx
lea    0xc95(%rip),%rsi
mov    $0x0,%al
call   10b0 <fprintf@plt>
lea    -0x840(%rbp),%rdi
lea    0xc8e(%rip),%rsi
call   1040 <strcpy@plt>
lea    -0x840(%rbp),%rdi
mov    -0x10(%rbp),%rdx
mov    $0x7d0,%esi
call   10a0 <fgets@plt>
cmp    $0x0,%rax
jne    1801 <main+0x641>
jmp    183d <main+0x67d>
lea    -0x840(%rbp),%rdi
lea    0xc5a(%rip),%rsi
mov    $0x2,%edx
call   1030 <strncmp@plt>
cmp    $0x0,%rax
jne    1828 <main+0x668>
jmp    183d <main+0x67d>
lea    -0x840(%rbp),%rdi
mov    -0x28(%rbp),%rsi
call   1090 <fputs@plt>
jmp    17ca <main+0x60a>
lea    -0x840(%rbp),%rdi
lea    0xc1e(%rip),%rsi
mov    $0x2,%edx
call   1030 <strncmp@plt>
cmp    $0x0,%rax
je     1864 <main+0x6a4>
jmp    18fc <main+0x73c>
jmp    1869 <main+0x6a9>
lea    -0x840(%rbp),%rdi
lea    0xb6f(%rip),%rsi
mov    $0x6,%edx
call   1030 <strncmp@plt>
cmp    $0x0,%rax
je     1890 <main+0x6d0>
jmp    18c5 <main+0x705>
mov    -0x38(%rbp),%rax
sub    $0x1,%rax
mov    %rax,-0x38(%rbp)
lea    -0x840(%rbp),%rdi
mov    -0x10(%rbp),%rdx
mov    $0x7d0,%esi
call   10a0 <fgets@plt>
cmp    $0x0,%rax
jne    18c0 <main+0x700>
jmp    18fc <main+0x73c>
jmp    1869 <main+0x6a9>
lea    0xb21(%rip),%rax
mov    %rax,-0x30(%rbp)
lea    -0x840(%rbp),%rdi
lea    0xb0f(%rip),%rsi
mov    $0x6,%edx
call   1030 <strncmp@plt>
cmp    $0x0,%rax
je     18f7 <main+0x737>
jmp    1987 <main+0x7c7>
jmp    14a3 <main+0x2e3>
mov    -0x10(%rbp),%rdi
call   1060 <fclose@plt>
mov    -0x18(%rbp),%rdi
call   1060 <fclose@plt>
mov    -0x20(%rbp),%rdi
call   1060 <fclose@plt>
lea    0xb4e(%rip),%rdi
call   1050 <puts@plt>
lea    0xb6b(%rip),%rdi
call   1050 <puts@plt>
lea    0xb88(%rip),%rdi
call   1050 <puts@plt>
lea    0xba5(%rip),%rdi
call   1050 <puts@plt>
lea    0xb47(%rip),%rdi
call   1050 <puts@plt>
lea    0xb12(%rip),%rdi
call   1050 <puts@plt>
xor    %edi,%edi
call   10e0 <exit@plt>
lea    0xba3(%rip),%rdi
mov    $0x0,%al
call   1080 <printf@plt>
lea    0xbd5(%rip),%rdi
mov    $0x0,%al
call   1080 <printf@plt>
jmp    19e4 <main+0x824>
lea    0xbdc(%rip),%rdi
mov    $0x0,%al
call   1080 <printf@plt>
mov    -0x30(%rbp),%rsi
lea    0xbee(%rip),%rdi
mov    $0x0,%al
call   1080 <printf@plt>
lea    -0x840(%rbp),%rsi
lea    0xbeb(%rip),%rdi
mov    $0x0,%al
call   1080 <printf@plt>
jmp    19e4 <main+0x824>
lea    0xbe7(%rip),%rdi
mov    $0x0,%al
call   1080 <printf@plt>
mov    -0x64(%rbp),%esi
mov    -0x38(%rbp),%rdx
lea    0xc01(%rip),%rdi
mov    $0x0,%al
call   1080 <printf@plt>
lea    0x6ea(%rip),%rdi
call   1050 <puts@plt>
lea    0xc09(%rip),%rdi
call   1050 <puts@plt>
lea    0xc2e(%rip),%rdi
call   1050 <puts@plt>
mov    -0x4(%rbp),%eax
add    $0x27c0,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x1fb8,%rsp
lea    0xe08(%rip),%rdi
lea    0xe0c(%rip),%r14
mov    %r14,%rsi
call   10e0 <fopen@plt>
mov    %rax,%rbp
lea    0xdfc(%rip),%rdi
mov    %r14,%rsi
call   10e0 <fopen@plt>
mov    %rax,%rbx
lea    0xdf7(%rip),%rdi
mov    %r14,%rsi
call   10e0 <fopen@plt>
mov    %rax,%r12
lea    0xdf1(%rip),%rdi
mov    $0x42,%esi
mov    $0x1,%edx
mov    %rbp,%rcx
call   1100 <fwrite@plt>
lea    0xe1b(%rip),%rdi
mov    $0x42,%esi
mov    $0x1,%edx
mov    %rbp,%rcx
call   1100 <fwrite@plt>
lea    0xe45(%rip),%rdi
mov    $0x29,%esi
mov    $0x1,%edx
mov    %rbp,%rcx
call   1100 <fwrite@plt>
lea    0xe56(%rip),%r14
mov    $0x3,%esi
mov    $0x1,%edx
mov    %r14,%rdi
mov    %rbp,%rcx
call   1100 <fwrite@plt>
lea    0xe3e(%rip),%rdi
mov    $0x42,%esi
mov    $0x1,%edx
mov    %rbp,%rcx
call   1100 <fwrite@plt>
lea    0xe68(%rip),%rdi
mov    $0x3a,%esi
mov    $0x1,%edx
mov    %rbp,%rcx
call   1100 <fwrite@plt>
lea    0xe8a(%rip),%rdi
mov    $0x1b,%esi
mov    $0x1,%edx
mov    %rbp,%rcx
call   1100 <fwrite@plt>
mov    $0x3,%esi
mov    $0x1,%edx
mov    %r14,%rdi
mov    %rbp,%rcx
call   1100 <fwrite@plt>
lea    0xe78(%rip),%rdi
mov    $0x4,%esi
mov    $0x1,%edx
mov    %rbp,0x10(%rsp)
mov    %rbp,%rcx
call   1100 <fwrite@plt>
lea    0xe5f(%rip),%rdi
mov    $0x41,%esi
mov    $0x1,%edx
mov    %rbx,%rcx
call   1100 <fwrite@plt>
lea    0xe88(%rip),%rdi
mov    $0x41,%esi
mov    $0x1,%edx
mov    %rbx,%rcx
call   1100 <fwrite@plt>
lea    0xeb1(%rip),%rdi
mov    $0x26,%esi
mov    $0x1,%edx
mov    %rbx,%rcx
call   1100 <fwrite@plt>
lea    0xebf(%rip),%rbp
mov    $0x2,%esi
mov    $0x1,%edx
mov    %rbp,%rdi
mov    %rbx,%rcx
call   1100 <fwrite@plt>
lea    0xea6(%rip),%rdi
mov    $0x41,%esi
mov    $0x1,%edx
mov    %rbx,%rcx
call   1100 <fwrite@plt>
lea    0xecf(%rip),%rdi
mov    $0x39,%esi
mov    $0x1,%edx
mov    %rbx,%rcx
call   1100 <fwrite@plt>
lea    0xef0(%rip),%rdi
mov    $0x1a,%esi
mov    $0x1,%edx
mov    %rbx,%rcx
call   1100 <fwrite@plt>
mov    $0x2,%esi
mov    $0x1,%edx
mov    %rbp,%rdi
mov    %rbx,0x8(%rsp)
mov    %rbx,%rcx
call   1100 <fwrite@plt>
lea    0xed8(%rip),%rbx
mov    $0x2,%esi
mov    $0x1,%edx
mov    %rbx,%rdi
mov    %r12,%rcx
call   1100 <fwrite@plt>
lea    0xebf(%rip),%rdi
mov    $0x21,%esi
mov    $0x1,%edx
mov    %r12,%rcx
call   1100 <fwrite@plt>
mov    $0x2,%esi
mov    $0x1,%edx
mov    %rbx,%rdi
mov    %r12,%rcx
call   1100 <fwrite@plt>
lea    0xeb3(%rip),%rdi
mov    $0x3e,%esi
mov    $0x1,%edx
mov    %r12,%rcx
call   1100 <fwrite@plt>
lea    0xed9(%rip),%rdi
mov    $0x1d,%esi
mov    $0x1,%edx
mov    %r12,%rcx
call   1100 <fwrite@plt>
mov    $0x2,%esi
mov    $0x1,%edx
mov    %rbx,%rdi
mov    %r12,%rcx
call   1100 <fwrite@plt>
mov    $0x2,%esi
mov    $0x1,%edx
mov    %rbx,%rdi
mov    %r12,%rcx
call   1100 <fwrite@plt>
lea    0xeb4(%rip),%rdi
mov    $0x41,%esi
mov    $0x1,%edx
mov    %r12,%rcx
call   1100 <fwrite@plt>
lea    0xedd(%rip),%rdi
mov    $0x39,%esi
mov    $0x1,%edx
mov    %r12,%rcx
call   1100 <fwrite@plt>
lea    0xefe(%rip),%rdi
mov    $0x1a,%esi
mov    $0x1,%edx
mov    %r12,%rcx
call   1100 <fwrite@plt>
mov    $0x2,%esi
mov    $0x1,%edx
mov    %rbx,%rdi
mov    %r12,%rcx
call   1100 <fwrite@plt>
mov    $0x2,%esi
mov    $0x1,%edx
mov    %rbx,%rdi
mov    %r12,%rcx
call   1100 <fwrite@plt>
lea    0xed6(%rip),%rdi
lea    0xedc(%rip),%rsi
call   10e0 <fopen@plt>
mov    %rax,%rbx
lea    0x40(%rsp),%rbp
lea    0xeca(%rip),%r14
lea    0xeca(%rip),%r15
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
mov    %rbp,%rdi
mov    $0x7d0,%esi
mov    %rbx,%rdx
call   10b0 <fgets@plt>
test   %rax,%rax
je     191b <main+0x73b>
mov    %rbp,%rdi
mov    $0x7d0,%esi
mov    %rbx,%rdx
call   10b0 <fgets@plt>
mov    %rbp,%rdi
mov    %r14,%rsi
mov    $0x6,%edx
call   1040 <strncmp@plt>
test   %rax,%rax
je     158c <main+0x3ac>
mov    %rbp,%rdi
mov    %r15,%rsi
mov    $0x6,%edx
call   1040 <strncmp@plt>
test   %rax,%rax
jne    1530 <main+0x350>
mov    $0xfffffffffffeffff,%rbp
jmp    1593 <main+0x3b3>
mov    $0xfffffffffffefffe,%rbp
lea    0x40(%rsp),%r14
lea    0xe47(%rip),%r15
mov    %r12,0x18(%rsp)
jmp    15c6 <main+0x3e6>
cs nopw 0x0(%rax,%rax,1)
mov    %r13,%rsi
mov    $0x6,%edx
call   1040 <strncmp@plt>
test   %rax,%rax
jne    1973 <main+0x793>
lea    0x820(%rsp),%r13
mov    %r13,%rdi
lea    0x46(%rsp),%rsi
call   1050 <strcpy@plt>
mov    %r13,%rdi
call   1080 <strlen@plt>
test   %eax,%eax
je     1600 <main+0x420>
cltq
lea    0x820(%rsp),%rcx
cmpb   $0xa,-0x1(%rax,%rcx,1)
jne    1600 <main+0x420>
movb   $0x0,0x81f(%rsp,%rax,1)
mov    %r14,%rdi
mov    $0x7d0,%esi
mov    %rbx,%rdx
call   10b0 <fgets@plt>
test   %rax,%rax
je     191b <main+0x73b>
mov    %r14,%rdi
lea    0xdd1(%rip),%r13
mov    %r13,%rsi
mov    $0x9,%edx
call   1040 <strncmp@plt>
test   %rax,%rax
jne    1973 <main+0x793>
lea    0x20(%rsp),%r13
mov    %r13,%rdi
lea    0x49(%rsp),%rsi
call   1050 <strcpy@plt>
mov    %r13,%rdi
lea    0xda9(%rip),%rsi
lea    0x4(%rsp),%rdx
call   10d0 <sscanf@plt>
movslq 0x4(%rsp),%rax
cmp    %rax,%rbp
jne    1935 <main+0x755>
mov    %r14,%rdi
mov    $0x7d0,%esi
mov    %rbx,%rdx
call   10b0 <fgets@plt>
test   %rax,%rax
je     191b <main+0x73b>
mov    %r14,%rdi
lea    0xd72(%rip),%rsi
mov    $0x7,%edx
call   1040 <strncmp@plt>
test   %rax,%rax
jne    195a <main+0x77a>
lea    0x1000(%rsp),%r13
mov    %r13,%rdi
lea    0x47(%rsp),%rsi
call   1050 <strcpy@plt>
mov    %r13,%rdi
call   1080 <strlen@plt>
test   %eax,%eax
je     16dd <main+0x4fd>
cltq
lea    0x1000(%rsp),%rcx
cmpb   $0xa,-0x1(%rax,%rcx,1)
jne    16dd <main+0x4fd>
movb   $0x0,0xfff(%rsp,%rax,1)
mov    %r14,%rdi
mov    $0x7d0,%esi
mov    %rbx,%rdx
call   10b0 <fgets@plt>
test   %rax,%rax
je     191b <main+0x73b>
mov    %r14,%rdi
lea    0xd0a(%rip),%rsi
mov    $0xa,%edx
call   1040 <strncmp@plt>
test   %rax,%rax
jne    1963 <main+0x783>
lea    0x17e0(%rsp),%r12
mov    %r12,%rdi
lea    0x4a(%rsp),%rsi
call   1050 <strcpy@plt>
mov    %r12,%rdi
call   1080 <strlen@plt>
test   %eax,%eax
je     174d <main+0x56d>
cltq
lea    0x17e0(%rsp),%rcx
cmpb   $0xa,-0x1(%rax,%rcx,1)
jne    174d <main+0x56d>
movb   $0x0,0x17df(%rsp,%rax,1)
mov    0x4(%rsp),%ecx
mov    0x10(%rsp),%rdi
lea    0xcb8(%rip),%rsi
lea    0x820(%rsp),%r12
mov    %r12,%rdx
xor    %eax,%eax
call   10c0 <fprintf@plt>
mov    0x8(%rsp),%r13
mov    %r13,%rdi
lea    0xca6(%rip),%rsi
mov    %r12,%rdx
xor    %eax,%eax
call   10c0 <fprintf@plt>
mov    0x4(%rsp),%ecx
mov    %r13,%rdi
lea    0xca0(%rip),%rsi
mov    %r12,%rdx
xor    %eax,%eax
call   10c0 <fprintf@plt>
mov    %r14,%rdi
mov    $0x7d0,%esi
mov    %rbx,%rdx
call   10b0 <fgets@plt>
test   %rax,%rax
lea    0xc33(%rip),%r13
mov    0x18(%rsp),%r12
je     191b <main+0x73b>
mov    %r14,%rdi
lea    0xc82(%rip),%rsi
mov    $0x6,%edx
call   1040 <strncmp@plt>
test   %rax,%rax
jne    196c <main+0x78c>
mov    %r12,%rdi
lea    0xc6c(%rip),%rsi
lea    0x820(%rsp),%rdx
lea    0x1000(%rsp),%rcx
xor    %eax,%eax
call   10c0 <fprintf@plt>
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
mov    %r14,%rdi
lea    0xc4c(%rip),%rsi
call   1050 <strcpy@plt>
mov    %r14,%rdi
mov    $0x7d0,%esi
mov    %rbx,%rdx
call   10b0 <fgets@plt>
test   %rax,%rax
je     1860 <main+0x680>
mov    %r14,%rdi
lea    0xc2b(%rip),%rsi
mov    $0x2,%edx
call   1040 <strncmp@plt>
test   %rax,%rax
je     1860 <main+0x680>
mov    %r14,%rdi
mov    %r12,%rsi
call   10a0 <fputs@plt>
jmp    1810 <main+0x630>
nopw   0x0(%rax,%rax,1)
mov    %r14,%rdi
lea    0xbff(%rip),%rsi
mov    $0x2,%edx
call   1040 <strncmp@plt>
test   %rax,%rax
jne    18b2 <main+0x6d2>
add    $0xffffffffffffffff,%rbp
nopl   (%rax)
mov    %r14,%rdi
mov    %r15,%rsi
mov    $0x6,%edx
call   1040 <strncmp@plt>
mov    %r14,%rdi
test   %rax,%rax
jne    15b0 <main+0x3d0>
mov    $0x7d0,%esi
mov    %rbx,%rdx
call   10b0 <fgets@plt>
add    $0xffffffffffffffff,%rbp
test   %rax,%rax
jne    1880 <main+0x6a0>
mov    %rbx,%rdi
call   1070 <fclose@plt>
mov    0x10(%rsp),%rdi
call   1070 <fclose@plt>
mov    0x8(%rsp),%rdi
call   1070 <fclose@plt>
lea    0xb97(%rip),%rbx
mov    %rbx,%rdi
call   1060 <puts@plt>
lea    0xbb1(%rip),%rbp
mov    %rbp,%rdi
call   1060 <puts@plt>
lea    0xbcb(%rip),%rdi
call   1060 <puts@plt>
lea    0xbe8(%rip),%rdi
call   1060 <puts@plt>
mov    %rbp,%rdi
call   1060 <puts@plt>
mov    %rbx,%rdi
call   1060 <puts@plt>
xor    %edi,%edi
call   10f0 <exit@plt>
lea    0xccd(%rip),%rdi
call   1060 <puts@plt>
lea    0xd00(%rip),%rdi
call   1060 <puts@plt>
jmp    19a3 <main+0x7c3>
lea    0xbf5(%rip),%rdi
xor    %eax,%eax
call   1090 <printf@plt>
mov    0x4(%rsp),%esi
lea    0xc12(%rip),%rdi
mov    %rbp,%rdx
xor    %eax,%eax
call   1090 <printf@plt>
jmp    19a3 <main+0x7c3>
lea    0xaa1(%rip),%r13
jmp    1973 <main+0x793>
lea    0xaa0(%rip),%r13
jmp    1973 <main+0x793>
lea    0xade(%rip),%r13
lea    0xc52(%rip),%rdi
call   1060 <puts@plt>
lea    0xb8a(%rip),%rdi
mov    %r13,%rsi
xor    %eax,%eax
call   1090 <printf@plt>
lea    0xb8b(%rip),%rdi
lea    0x40(%rsp),%rsi
xor    %eax,%eax
call   1090 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
lea    0xbce(%rip),%rdi
call   1060 <puts@plt>
lea    0xbf3(%rip),%rdi
call   1060 <puts@plt>
xor    %eax,%eax
add    $0x1fb8,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

LLVM IR (-O0):
@.str = [11 x i8] c"verrdefs.h\00"
@.str.1 = [2 x i8] c"w\00"
@.str.2 = [13 x i8] c"verrdefs.fin\00"
@.str.3 = [12 x i8] c"vrdifac.msg\00"
@.str.4 = [67 x i8] c"/* VERRDEFS -- Definition of all symbolic names for VRDI internal\0A\00"
@.str.5 = [67 x i8] c" * errors. This module is used by application programs to define\0A\00"
@.str.6 = [42 x i8] c" * symbolic names for the VRDI errors. \0A\00"
@.str.7 = [4 x i8] c" *\0A\00"
@.str.8 = [67 x i8] c" *\09NOTE : This file is built by VRDIERRORS.COM. It should never\0A\00"
@.str.9 = [59 x i8] c" *\09\09be modified directly. To make changes to the source,\0A\00"
@.str.10 = [28 x i8] c" *\09\09change VRDIERRORS.COM.\0A\00"
@.str.11 = [5 x i8] c" */\0A\00"
@.str.12 = [66 x i8] c"C VERRDEFS -- Definition of all symbolic names for VRDI internal\0A\00"
@.str.13 = [66 x i8] c"C errors. This module is used by application programs to define\0A\00"
@.str.14 = [39 x i8] c"C symbolic names for the VRDI errors.\0A\00"
@.str.15 = [3 x i8] c"C\0A\00"
@.str.16 = [66 x i8] c"C\09NOTE : This file is built by VRDIERRORS.COM. It should never\0A\00"
@.str.17 = [58 x i8] c"C\09\09be modified directly. To make changes to the source,\0A\00"
@.str.18 = [27 x i8] c"C\09\09change VRDIERRORS.COM.\0A\00"
@.str.19 = [3 x i8] c"!\0A\00"
@.str.20 = [34 x i8] c"!\09Message file for facility VIC2\0A\00"
@.str.21 = [63 x i8] c"! This file contains the message id's and detailed texts for\0A\00"
@.str.22 = [30 x i8] c"! the VRDI internal errors.\0A\00"
@.str.23 = [66 x i8] c"!\09NOTE : This file is built by VRDIERRORS.COM. It should never\0A\00"
@.str.24 = [58 x i8] c"!\09\09be modified directly. To make changes to the source,\0A\00"
@.str.25 = [27 x i8] c"!\09\09change VRDIERRORS.COM.\0A\00"
@.str.26 = [13 x i8] c"vrdierrs.dat\00"
@.str.27 = [2 x i8] c"r\00"
@.str.28 = [7 x i8] c"%%SKIP\00"
@.str.29 = [7 x i8] c"%%KEY \00"
@.str.30 = [10 x i8] c"%%NUMBER \00"
@.str.31 = [4 x i8] c" %d\00"
@.str.32 = [8 x i8] c"%%NAME \00"
@.str.33 = [11 x i8] c"%%MESSAGE \00"
@.str.34 = [15 x i8] c"#define %s %d\0A\00"
@.str.35 = [18 x i8] c" INTEGER %s\0A\00"
@.str.36 = [27 x i8] c" PARAMETER (%s = %d)\0A\00"
@.str.37 = [7 x i8] c"%%HELP\00"
@.str.38 = [14 x i8] c".KEY %s\09! %s\0A\00"
@.str.39 = [3 x i8] c" \00"
@.str.40 = [3 x i8] c"%%\00"
@.str.41 = [41 x i8] c"****************************************\00"
@.str.42 = [41 x i8] c"* *\00"
@.str.43 = [41 x i8] c"* VRDIERRORS.COM: *\00"
@.str.44 = [41 x i8] c"* All files successfully created *\00"
@.str.45 = [64 x i8] c"**** Premature end of file encountered processing VRDIERRS.DAT\0A\00"
@.str.46 = [26 x i8] c"**** Check file contents\0A\00"
@.str.47 = [36 x i8] c"**** Bad directive in VRDIERRS.DAT\0A\00"
@.str.48 = [18 x i8] c"**** Expected %s\0A\00"
@.str.49 = [15 x i8] c"**** Found %s\0A\00"
@.str.50 = [47 x i8] c"**** Numbering sequence in VRDIERRS.DAT is bad\00"
@.str.51 = [34 x i8] c"**** Found %d when expecting %ld\0A\00"
@.str.52 = [1 x i8] zeroinitializer
@.str.53 = [49 x i8] c"Please see documentation in ERRORBLD.COM and fix\00"
@.str.54 = [25 x i8] c"ERROR file build aborted\00"
define i32 @main() {
%1 = alloca i32
%2 = alloca i32*
%3 = alloca i32*
%4 = alloca i32*
%5 = alloca i32*
%6 = alloca i8*
%7 = alloca i64
%8 = alloca i32
%9 = alloca [25 x i8]
%10 = alloca i32
%11 = alloca [2001 x i8]
%12 = alloca [2001 x i8]
%13 = alloca [2001 x i8]
%14 = alloca [2001 x i8]
%15 = alloca [2001 x i8]
store i32 0, i32* %1
%16 = call i32* @fopen(i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.1, i64 0, i64 0))
store i32* %16, i32** %3
%17 = call i32* @fopen(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.1, i64 0, i64 0))
store i32* %17, i32** %4
%18 = call i32* @fopen(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.3, i64 0, i64 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.1, i64 0, i64 0))
store i32* %18, i32** %5
%19 = load i32*, i32** %3
%20 = call i32 @fputs(i8* getelementptr inbounds ([67 x i8], [67 x i8]* @.str.4, i64 0, i64 0), i32* %19)
%21 = load i32*, i32** %3
%22 = call i32 @fputs(i8* getelementptr inbounds ([67 x i8], [67 x i8]* @.str.5, i64 0, i64 0), i32* %21)
%23 = load i32*, i32** %3
%24 = call i32 @fputs(i8* getelementptr inbounds ([42 x i8], [42 x i8]* @.str.6, i64 0, i64 0), i32* %23)
%25 = load i32*, i32** %3
%26 = call i32 @fputs(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.7, i64 0, i64 0), i32* %25)
%27 = load i32*, i32** %3
%28 = call i32 @fputs(i8* getelementptr inbounds ([67 x i8], [67 x i8]* @.str.8, i64 0, i64 0), i32* %27)
%29 = load i32*, i32** %3
%30 = call i32 @fputs(i8* getelementptr inbounds ([59 x i8], [59 x i8]* @.str.9, i64 0, i64 0), i32* %29)
%31 = load i32*, i32** %3
%32 = call i32 @fputs(i8* getelementptr inbounds ([28 x i8], [28 x i8]* @.str.10, i64 0, i64 0), i32* %31)
%33 = load i32*, i32** %3
%34 = call i32 @fputs(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.7, i64 0, i64 0), i32* %33)
%35 = load i32*, i32** %3
%36 = call i32 @fputs(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.11, i64 0, i64 0), i32* %35)
%37 = load i32*, i32** %4
%38 = call i32 @fputs(i8* getelementptr inbounds ([66 x i8], [66 x i8]* @.str.12, i64 0, i64 0), i32* %37)
%39 = load i32*, i32** %4
%40 = call i32 @fputs(i8* getelementptr inbounds ([66 x i8], [66 x i8]* @.str.13, i64 0, i64 0), i32* %39)
%41 = load i32*, i32** %4
%42 = call i32 @fputs(i8* getelementptr inbounds ([39 x i8], [39 x i8]* @.str.14, i64 0, i64 0), i32* %41)
%43 = load i32*, i32** %4
%44 = call i32 @fputs(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.15, i64 0, i64 0), i32* %43)
%45 = load i32*, i32** %4
%46 = call i32 @fputs(i8* getelementptr inbounds ([66 x i8], [66 x i8]* @.str.16, i64 0, i64 0), i32* %45)
%47 = load i32*, i32** %4
%48 = call i32 @fputs(i8* getelementptr inbounds ([58 x i8], [58 x i8]* @.str.17, i64 0, i64 0), i32* %47)
%49 = load i32*, i32** %4
%50 = call i32 @fputs(i8* getelementptr inbounds ([27 x i8], [27 x i8]* @.str.18, i64 0, i64 0), i32* %49)
%51 = load i32*, i32** %4
%52 = call i32 @fputs(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.15, i64 0, i64 0), i32* %51)
%53 = load i32*, i32** %5
%54 = call i32 @fputs(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.19, i64 0, i64 0), i32* %53)
%55 = load i32*, i32** %5
%56 = call i32 @fputs(i8* getelementptr inbounds ([34 x i8], [34 x i8]* @.str.20, i64 0, i64 0), i32* %55)
%57 = load i32*, i32** %5
%58 = call i32 @fputs(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.19, i64 0, i64 0), i32* %57)
%59 = load i32*, i32** %5
%60 = call i32 @fputs(i8* getelementptr inbounds ([63 x i8], [63 x i8]* @.str.21, i64 0, i64 0), i32* %59)
%61 = load i32*, i32** %5
%62 = call i32 @fputs(i8* getelementptr inbounds ([30 x i8], [30 x i8]* @.str.22, i64 0, i64 0), i32* %61)
%63 = load i32*, i32** %5
%64 = call i32 @fputs(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.19, i64 0, i64 0), i32* %63)
%65 = load i32*, i32** %5
%66 = call i32 @fputs(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.19, i64 0, i64 0), i32* %65)
%67 = load i32*, i32** %5
%68 = call i32 @fputs(i8* getelementptr inbounds ([66 x i8], [66 x i8]* @.str.23, i64 0, i64 0), i32* %67)
%69 = load i32*, i32** %5
%70 = call i32 @fputs(i8* getelementptr inbounds ([58 x i8], [58 x i8]* @.str.24, i64 0, i64 0), i32* %69)
%71 = load i32*, i32** %5
%72 = call i32 @fputs(i8* getelementptr inbounds ([27 x i8], [27 x i8]* @.str.25, i64 0, i64 0), i32* %71)
%73 = load i32*, i32** %5
%74 = call i32 @fputs(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.19, i64 0, i64 0), i32* %73)
%75 = load i32*, i32** %5
%76 = call i32 @fputs(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.19, i64 0, i64 0), i32* %75)
store i64 -65537, i64* %7
%77 = call i32* @fopen(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.26, i64 0, i64 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.27, i64 0, i64 0))
store i32* %77, i32** %2
br label %78
78: ; preds = %98, %0
%79 = getelementptr inbounds [2001 x i8], [2001 x i8]* %11, i64 0, i64 0
%80 = load i32*, i32** %2
%81 = call i32* @fgets(i8* %79, i32 2000, i32* %80)
%82 = icmp eq i32* %81, null
br i1 %82, label %83, label %84
83: ; preds = %78
br label %294
84: ; preds = %78
%85 = getelementptr inbounds [2001 x i8], [2001 x i8]* %11, i64 0, i64 0
%86 = load i32*, i32** %2
%87 = call i32* @fgets(i8* %85, i32 2000, i32* %86)
%88 = getelementptr inbounds [2001 x i8], [2001 x i8]* %11, i64 0, i64 0
%89 = call i64 @strncmp(i8* %88, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.28, i64 0, i64 0), i32 6)
%90 = icmp eq i64 %89, 0
br i1 %90, label %91, label %94
91: ; preds = %84
%92 = load i64, i64* %7
%93 = sub nsw i64 %92, 1
store i64 %93, i64* %7
br label %100
94: ; preds = %84
%95 = getelementptr inbounds [2001 x i8], [2001 x i8]* %11, i64 0, i64 0
%96 = call i64 @strncmp(i8* %95, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.29, i64 0, i64 0), i32 6)
%97 = icmp ne i64 %96, 0
br i1 %97, label %98, label %99
98: ; preds = %94
br label %78
99: ; preds = %94
br label %100
100: ; preds = %99, %91
br label %101
101: ; preds = %279, %100
%102 = getelementptr inbounds [2001 x i8], [2001 x i8]* %12, i64 0, i64 0
%103 = getelementptr inbounds [2001 x i8], [2001 x i8]* %11, i64 0, i64 6
%104 = call i32 @strcpy(i8* %102, i8* %103)
%105 = getelementptr inbounds [2001 x i8], [2001 x i8]* %12, i64 0, i64 0
%106 = call i32 @strlen(i8* %105)
store i32 %106, i32* %8
%107 = icmp ne i32 %106, 0
br i1 %107, label %108, label %122
108: ; preds = %101
%109 = load i32, i32* %8
%110 = sub nsw i32 %109, 1
%111 = sext i32 %110 to i64
%112 = getelementptr inbounds [2001 x i8], [2001 x i8]* %12, i64 0, i64 %111
%113 = load i8, i8* %112
%114 = sext i8 %113 to i32
%115 = icmp eq i32 %114, 10
br i1 %115, label %116, label %121
116: ; preds = %108
%117 = load i32, i32* %8
%118 = sub nsw i32 %117, 1
%119 = sext i32 %118 to i64
%120 = getelementptr inbounds [2001 x i8], [2001 x i8]* %12, i64 0, i64 %119
store i8 0, i8* %120
br label %121
121: ; preds = %116, %108
br label %122
122: ; preds = %121, %101
%123 = getelementptr inbounds [2001 x i8], [2001 x i8]* %11, i64 0, i64 0
%124 = load i32*, i32** %2
%125 = call i32* @fgets(i8* %123, i32 2000, i32* %124)
%126 = icmp eq i32* %125, null
br i1 %126, label %127, label %128
127: ; preds = %122
br label %294
128: ; preds = %122
store i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.30, i64 0, i64 0), i8** %6
%129 = getelementptr inbounds [2001 x i8], [2001 x i8]* %11, i64 0, i64 0
%130 = call i64 @strncmp(i8* %129, i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.30, i64 0, i64 0), i32 9)
%131 = icmp ne i64 %130, 0
br i1 %131, label %132, label %133
132: ; preds = %128
br label %297
133: ; preds = %128
%134 = getelementptr inbounds [25 x i8], [25 x i8]* %9, i64 0, i64 0
%135 = getelementptr inbounds [2001 x i8], [2001 x i8]* %11, i64 0, i64 9
%136 = call i32 @strcpy(i8* %134, i8* %135)
%137 = getelementptr inbounds [25 x i8], [25 x i8]* %9, i64 0, i64 0
%138 = call i32 @sscanf(i8* %137, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.31, i64 0, i64 0), i32* %10)
%139 = load i32, i32* %10
%140 = sext i32 %139 to i64
%141 = load i64, i64* %7
%142 = icmp ne i64 %140, %141
br i1 %142, label %143, label %144
143: ; preds = %133
br label %303
144: ; preds = %133
%145 = load i64, i64* %7
%146 = sub nsw i64 %145, 1
store i64 %146, i64* %7
%147 = getelementptr inbounds [2001 x i8], [2001 x i8]* %11, i64 0, i64 0
%148 = load i32*, i32** %2
%149 = call i32* @fgets(i8* %147, i32 2000, i32* %148)
%150 = icmp eq i32* %149, null
br i1 %150, label %151, label %152
151: ; preds = %144
br label %294
152: ; preds = %144
store i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.32, i64 0, i64 0), i8** %6
%153 = getelementptr inbounds [2001 x i8], [2001 x i8]* %11, i64 0, i64 0
%154 = call i64 @strncmp(i8* %153, i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.32, i64 0, i64 0), i32 7)
%155 = icmp ne i64 %154, 0
br i1 %155, label %156, label %157
156: ; preds = %152
br label %297
157: ; preds = %152
%158 = getelementptr inbounds [2001 x i8], [2001 x i8]* %13, i64 0, i64 0
%159 = getelementptr inbounds [2001 x i8], [2001 x i8]* %11, i64 0, i64 7
%160 = call i32 @strcpy(i8* %158, i8* %159)
%161 = getelementptr inbounds [2001 x i8], [2001 x i8]* %13, i64 0, i64 0
%162 = call i32 @strlen(i8* %161)
store i32 %162, i32* %8
%163 = icmp ne i32 %162, 0
br i1 %163, label %164, label %178
164: ; preds = %157
%165 = load i32, i32* %8
%166 = sub nsw i32 %165, 1
%167 = sext i32 %166 to i64
%168 = getelementptr inbounds [2001 x i8], [2001 x i8]* %13, i64 0, i64 %167
%169 = load i8, i8* %168
%170 = sext i8 %169 to i32
%171 = icmp eq i32 %170, 10
br i1 %171, label %172, label %177
172: ; preds = %164
%173 = load i32, i32* %8
%174 = sub nsw i32 %173, 1
%175 = sext i32 %174 to i64
%176 = getelementptr inbounds [2001 x i8], [2001 x i8]* %13, i64 0, i64 %175
store i8 0, i8* %176
br label %177
177: ; preds = %172, %164
br label %178
178: ; preds = %177, %157
%179 = getelementptr inbounds [2001 x i8], [2001 x i8]* %11, i64 0, i64 0
%180 = load i32*, i32** %2
%181 = call i32* @fgets(i8* %179, i32 2000, i32* %180)
%182 = icmp eq i32* %181, null
br i1 %182, label %183, label %184
183: ; preds = %178
br label %294
184: ; preds = %178
store i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.33, i64 0, i64 0), i8** %6
%185 = getelementptr inbounds [2001 x i8], [2001 x i8]* %11, i64 0, i64 0
%186 = call i64 @strncmp(i8* %185, i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.33, i64 0, i64 0), i32 10)
%187 = icmp ne i64 %186, 0
br i1 %187, label %188, label %189
188: ; preds = %184
br label %297
189: ; preds = %184
%190 = getelementptr inbounds [2001 x i8], [2001 x i8]* %15, i64 0, i64 0
%191 = getelementptr inbounds [2001 x i8], [2001 x i8]* %11, i64 0, i64 10
%192 = call i32 @strcpy(i8* %190, i8* %191)
%193 = getelementptr inbounds [2001 x i8], [2001 x i8]* %15, i64 0, i64 0
%194 = call i32 @strlen(i8* %193)
store i32 %194, i32* %8
%195 = icmp ne i32 %194, 0
br i1 %195, label %196, label %210
196: ; preds = %189
%197 = load i32, i32* %8
%198 = sub nsw i32 %197, 1
%199 = sext i32 %198 to i64
%200 = getelementptr inbounds [2001 x i8], [2001 x i8]* %15, i64 0, i64 %199
%201 = load i8, i8* %200
%202 = sext i8 %201 to i32
%203 = icmp eq i32 %202, 10
br i1 %203, label %204, label %209
204: ; preds = %196
%205 = load i32, i32* %8
%206 = sub nsw i32 %205, 1
%207 = sext i32 %206 to i64
%208 = getelementptr inbounds [2001 x i8], [2001 x i8]* %15, i64 0, i64 %207
store i8 0, i8* %208
br label %209
209: ; preds = %204, %196
br label %210
210: ; preds = %209, %189
%211 = load i32*, i32** %3
%212 = getelementptr inbounds [2001 x i8], [2001 x i8]* %12, i64 0, i64 0
%213 = load i32, i32* %10
%214 = call i32 (i32*, i8*, i8*, ...) @fprintf(i32* %211, i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.34, i64 0, i64 0), i8* %212, i32 %213)
%215 = load i32*, i32** %4
%216 = getelementptr inbounds [2001 x i8], [2001 x i8]* %12, i64 0, i64 0
%217 = call i32 (i32*, i8*, i8*, ...) @fprintf(i32* %215, i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.35, i64 0, i64 0), i8* %216)
%218 = load i32*, i32** %4
%219 = getelementptr inbounds [2001 x i8], [2001 x i8]* %12, i64 0, i64 0
%220 = load i32, i32* %10
%221 = call i32 (i32*, i8*, i8*, ...) @fprintf(i32* %218, i8* getelementptr inbounds ([27 x i8], [27 x i8]* @.str.36, i64 0, i64 0), i8* %219, i32 %220)
%222 = getelementptr inbounds [2001 x i8], [2001 x i8]* %11, i64 0, i64 0
%223 = load i32*, i32** %2
%224 = call i32* @fgets(i8* %222, i32 2000, i32* %223)
%225 = icmp eq i32* %224, null
br i1 %225, label %226, label %227
226: ; preds = %210
br label %294
227: ; preds = %210
store i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.37, i64 0, i64 0), i8** %6
%228 = getelementptr inbounds [2001 x i8], [2001 x i8]* %11, i64 0, i64 0
%229 = call i64 @strncmp(i8* %228, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.37, i64 0, i64 0), i32 6)
%230 = icmp ne i64 %229, 0
br i1 %230, label %231, label %232
231: ; preds = %227
br label %297
232: ; preds = %227
%233 = load i32*, i32** %5
%234 = getelementptr inbounds [2001 x i8], [2001 x i8]* %12, i64 0, i64 0
%235 = getelementptr inbounds [2001 x i8], [2001 x i8]* %13, i64 0, i64 0
%236 = call i32 (i32*, i8*, i8*, ...) @fprintf(i32* %233, i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.38, i64 0, i64 0), i8* %234, i8* %235)
br label %237
237: ; preds = %250, %232
%238 = getelementptr inbounds [2001 x i8], [2001 x i8]* %11, i64 0, i64 0
%239 = call i32 @strcpy(i8* %238, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.39, i64 0, i64 0))
%240 = getelementptr inbounds [2001 x i8], [2001 x i8]* %11, i64 0, i64 0
%241 = load i32*, i32** %2
%242 = call i32* @fgets(i8* %240, i32 2000, i32* %241)
%243 = icmp eq i32* %242, null
br i1 %243, label %244, label %245
244: ; preds = %237
br label %254
245: ; preds = %237
%246 = getelementptr inbounds [2001 x i8], [2001 x i8]* %11, i64 0, i64 0
%247 = call i64 @strncmp(i8* %246, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.40, i64 0, i64 0), i32 2)
%248 = icmp eq i64 %247, 0
br i1 %248, label %249, label %250
249: ; preds = %245
br label %254
250: ; preds = %245
%251 = getelementptr inbounds [2001 x i8], [2001 x i8]* %11, i64 0, i64 0
%252 = load i32*, i32** %5
%253 = call i32 @fputs(i8* %251, i32* %252)
br label %237
254: ; preds = %249, %244
%255 = getelementptr inbounds [2001 x i8], [2001 x i8]* %11, i64 0, i64 0
%256 = call i64 @strncmp(i8* %255, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.40, i64 0, i64 0), i32 2)
%257 = icmp ne i64 %256, 0
br i1 %257, label %258, label %259
258: ; preds = %254
br label %280
259: ; preds = %254
br label %260
260: ; preds = %273, %259
%261 = getelementptr inbounds [2001 x i8], [2001 x i8]* %11, i64 0, i64 0
%262 = call i64 @strncmp(i8* %261, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.28, i64 0, i64 0), i32 6)
%263 = icmp ne i64 %262, 0
br i1 %263, label %264, label %265
264: ; preds = %260
br label %274
265: ; preds = %260
%266 = load i64, i64* %7
%267 = sub nsw i64 %266, 1
store i64 %267, i64* %7
%268 = getelementptr inbounds [2001 x i8], [2001 x i8]* %11, i64 0, i64 0
%269 = load i32*, i32** %2
%270 = call i32* @fgets(i8* %268, i32 2000, i32* %269)
%271 = icmp eq i32* %270, null
br i1 %271, label %272, label %273
272: ; preds = %265
br label %280
273: ; preds = %265
br label %260
274: ; preds = %264
store i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.29, i64 0, i64 0), i8** %6
%275 = getelementptr inbounds [2001 x i8], [2001 x i8]* %11, i64 0, i64 0
%276 = call i64 @strncmp(i8* %275, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.29, i64 0, i64 0), i32 6)
%277 = icmp ne i64 %276, 0
br i1 %277, label %278, label %279
278: ; preds = %274
br label %297
279: ; preds = %274
br label %101
280: ; preds = %272, %258
%281 = load i32*, i32** %2
%282 = call i32 @fclose(i32* %281)
%283 = load i32*, i32** %3
%284 = call i32 @fclose(i32* %283)
%285 = load i32*, i32** %4
%286 = call i32 @fclose(i32* %285)
%287 = call i32 @puts(i8* getelementptr inbounds ([41 x i8], [41 x i8]* @.str.41, i64 0, i64 0))
%288 = call i32 @puts(i8* getelementptr inbounds ([41 x i8], [41 x i8]* @.str.42, i64 0, i64 0))
%289 = call i32 @puts(i8* getelementptr inbounds ([41 x i8], [41 x i8]* @.str.43, i64 0, i64 0))
%290 = call i32 @puts(i8* getelementptr inbounds ([41 x i8], [41 x i8]* @.str.44, i64 0, i64 0))
%291 = call i32 @puts(i8* getelementptr inbounds ([41 x i8], [41 x i8]* @.str.42, i64 0, i64 0))
%292 = call i32 @puts(i8* getelementptr inbounds ([41 x i8], [41 x i8]* @.str.41, i64 0, i64 0))
%293 = call i32 @exit(i32 0)
unreachable
294: ; preds = %226, %183, %151, %127, %83
%295 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([64 x i8], [64 x i8]* @.str.45, i64 0, i64 0))
%296 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([26 x i8], [26 x i8]* @.str.46, i64 0, i64 0))
br label %308
297: ; preds = %278, %231, %188, %156, %132
%298 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([36 x i8], [36 x i8]* @.str.47, i64 0, i64 0))
%299 = load i8*, i8** %6
%300 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.48, i64 0, i64 0), i8* %299)
%301 = getelementptr inbounds [2001 x i8], [2001 x i8]* %11, i64 0, i64 0
%302 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.49, i64 0, i64 0), i8* %301)
br label %308
303: ; preds = %143
%304 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([47 x i8], [47 x i8]* @.str.50, i64 0, i64 0))
%305 = load i32, i32* %10
%306 = load i64, i64* %7
%307 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([34 x i8], [34 x i8]* @.str.51, i64 0, i64 0), i32 %305, i64 %306)
br label %308
308: ; preds = %303, %297, %294
%309 = call i32 @puts(i8* getelementptr inbounds ([1 x i8], [1 x i8]* @.str.52, i64 0, i64 0))
%310 = call i32 @puts(i8* getelementptr inbounds ([49 x i8], [49 x i8]* @.str.53, i64 0, i64 0))
%311 = call i32 @puts(i8* getelementptr inbounds ([25 x i8], [25 x i8]* @.str.54, i64 0, i64 0))
%312 = load i32, i32* %1
ret i32 %312
}

LLVM IR (-O2):
@.str = [11 x i8] c"verrdefs.h\00"
@.str.1 = [2 x i8] c"w\00"
@.str.2 = [13 x i8] c"verrdefs.fin\00"
@.str.3 = [12 x i8] c"vrdifac.msg\00"
@.str.4 = [67 x i8] c"/* VERRDEFS -- Definition of all symbolic names for VRDI internal\0A\00"
@.str.5 = [67 x i8] c" * errors. This module is used by application programs to define\0A\00"
@.str.6 = [42 x i8] c" * symbolic names for the VRDI errors. \0A\00"
@.str.7 = [4 x i8] c" *\0A\00"
@.str.8 = [67 x i8] c" *\09NOTE : This file is built by VRDIERRORS.COM. It should never\0A\00"
@.str.9 = [59 x i8] c" *\09\09be modified directly. To make changes to the source,\0A\00"
@.str.10 = [28 x i8] c" *\09\09change VRDIERRORS.COM.\0A\00"
@.str.11 = [5 x i8] c" */\0A\00"
@.str.12 = [66 x i8] c"C VERRDEFS -- Definition of all symbolic names for VRDI internal\0A\00"
@.str.13 = [66 x i8] c"C errors. This module is used by application programs to define\0A\00"
@.str.14 = [39 x i8] c"C symbolic names for the VRDI errors.\0A\00"
@.str.15 = [3 x i8] c"C\0A\00"
@.str.16 = [66 x i8] c"C\09NOTE : This file is built by VRDIERRORS.COM. It should never\0A\00"
@.str.17 = [58 x i8] c"C\09\09be modified directly. To make changes to the source,\0A\00"
@.str.18 = [27 x i8] c"C\09\09change VRDIERRORS.COM.\0A\00"
@.str.19 = [3 x i8] c"!\0A\00"
@.str.20 = [34 x i8] c"!\09Message file for facility VIC2\0A\00"
@.str.21 = [63 x i8] c"! This file contains the message id's and detailed texts for\0A\00"
@.str.22 = [30 x i8] c"! the VRDI internal errors.\0A\00"
@.str.23 = [66 x i8] c"!\09NOTE : This file is built by VRDIERRORS.COM. It should never\0A\00"
@.str.24 = [58 x i8] c"!\09\09be modified directly. To make changes to the source,\0A\00"
@.str.25 = [27 x i8] c"!\09\09change VRDIERRORS.COM.\0A\00"
@.str.26 = [13 x i8] c"vrdierrs.dat\00"
@.str.27 = [2 x i8] c"r\00"
@.str.28 = [7 x i8] c"%%SKIP\00"
@.str.29 = [7 x i8] c"%%KEY \00"
@.str.30 = [10 x i8] c"%%NUMBER \00"
@.str.31 = [4 x i8] c" %d\00"
@.str.32 = [8 x i8] c"%%NAME \00"
@.str.33 = [11 x i8] c"%%MESSAGE \00"
@.str.34 = [15 x i8] c"#define %s %d\0A\00"
@.str.35 = [18 x i8] c" INTEGER %s\0A\00"
@.str.36 = [27 x i8] c" PARAMETER (%s = %d)\0A\00"
@.str.37 = [7 x i8] c"%%HELP\00"
@.str.38 = [14 x i8] c".KEY %s\09! %s\0A\00"
@.str.39 = [3 x i8] c" \00"
@.str.40 = [3 x i8] c"%%\00"
@.str.41 = [41 x i8] c"****************************************\00"
@.str.42 = [41 x i8] c"* *\00"
@.str.43 = [41 x i8] c"* VRDIERRORS.COM: *\00"
@.str.44 = [41 x i8] c"* All files successfully created *\00"
@.str.48 = [18 x i8] c"**** Expected %s\0A\00"
@.str.49 = [15 x i8] c"**** Found %s\0A\00"
@.str.50 = [47 x i8] c"**** Numbering sequence in VRDIERRS.DAT is bad\00"
@.str.51 = [34 x i8] c"**** Found %d when expecting %ld\0A\00"
@.str.53 = [49 x i8] c"Please see documentation in ERRORBLD.COM and fix\00"
@.str.54 = [25 x i8] c"ERROR file build aborted\00"
@str = [35 x i8] c"**** Bad directive in VRDIERRS.DAT\00"
@str.55 = [63 x i8] c"**** Premature end of file encountered processing VRDIERRS.DAT\00"
@str.56 = [25 x i8] c"**** Check file contents\00"
define i32 @main() {
%1 = alloca [25 x i8]
%2 = alloca i32
%3 = alloca [2001 x i8]
%4 = alloca [2001 x i8]
%5 = alloca [2001 x i8]
%6 = alloca [2001 x i8]
%7 = getelementptr inbounds [25 x i8], [25 x i8]* %1, i64 0, i64 0
%8 = bitcast i32* %2 to i8*
%9 = getelementptr inbounds [2001 x i8], [2001 x i8]* %3, i64 0, i64 0
%10 = getelementptr inbounds [2001 x i8], [2001 x i8]* %4, i64 0, i64 0
%11 = getelementptr inbounds [2001 x i8], [2001 x i8]* %5, i64 0, i64 0
%12 = getelementptr inbounds [2001 x i8], [2001 x i8]* %6, i64 0, i64 0
%13 = tail call i32* @fopen(i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.1, i64 0, i64 0))
%14 = tail call i32* @fopen(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.1, i64 0, i64 0))
%15 = tail call i32* @fopen(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.3, i64 0, i64 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.1, i64 0, i64 0))
%16 = tail call i64 @fwrite(i8* getelementptr inbounds ([67 x i8], [67 x i8]* @.str.4, i64 0, i64 0), i64 66, i64 1, i32* %13)
%17 = tail call i64 @fwrite(i8* getelementptr inbounds ([67 x i8], [67 x i8]* @.str.5, i64 0, i64 0), i64 66, i64 1, i32* %13)
%18 = tail call i64 @fwrite(i8* getelementptr inbounds ([42 x i8], [42 x i8]* @.str.6, i64 0, i64 0), i64 41, i64 1, i32* %13)
%19 = tail call i64 @fwrite(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.7, i64 0, i64 0), i64 3, i64 1, i32* %13)
%20 = tail call i64 @fwrite(i8* getelementptr inbounds ([67 x i8], [67 x i8]* @.str.8, i64 0, i64 0), i64 66, i64 1, i32* %13)
%21 = tail call i64 @fwrite(i8* getelementptr inbounds ([59 x i8], [59 x i8]* @.str.9, i64 0, i64 0), i64 58, i64 1, i32* %13)
%22 = tail call i64 @fwrite(i8* getelementptr inbounds ([28 x i8], [28 x i8]* @.str.10, i64 0, i64 0), i64 27, i64 1, i32* %13)
%23 = tail call i64 @fwrite(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.7, i64 0, i64 0), i64 3, i64 1, i32* %13)
%24 = tail call i64 @fwrite(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.11, i64 0, i64 0), i64 4, i64 1, i32* %13)
%25 = tail call i64 @fwrite(i8* getelementptr inbounds ([66 x i8], [66 x i8]* @.str.12, i64 0, i64 0), i64 65, i64 1, i32* %14)
%26 = tail call i64 @fwrite(i8* getelementptr inbounds ([66 x i8], [66 x i8]* @.str.13, i64 0, i64 0), i64 65, i64 1, i32* %14)
%27 = tail call i64 @fwrite(i8* getelementptr inbounds ([39 x i8], [39 x i8]* @.str.14, i64 0, i64 0), i64 38, i64 1, i32* %14)
%28 = tail call i64 @fwrite(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.15, i64 0, i64 0), i64 2, i64 1, i32* %14)
%29 = tail call i64 @fwrite(i8* getelementptr inbounds ([66 x i8], [66 x i8]* @.str.16, i64 0, i64 0), i64 65, i64 1, i32* %14)
%30 = tail call i64 @fwrite(i8* getelementptr inbounds ([58 x i8], [58 x i8]* @.str.17, i64 0, i64 0), i64 57, i64 1, i32* %14)
%31 = tail call i64 @fwrite(i8* getelementptr inbounds ([27 x i8], [27 x i8]* @.str.18, i64 0, i64 0), i64 26, i64 1, i32* %14)
%32 = tail call i64 @fwrite(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.15, i64 0, i64 0), i64 2, i64 1, i32* %14)
%33 = tail call i64 @fwrite(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.19, i64 0, i64 0), i64 2, i64 1, i32* %15)
%34 = tail call i64 @fwrite(i8* getelementptr inbounds ([34 x i8], [34 x i8]* @.str.20, i64 0, i64 0), i64 33, i64 1, i32* %15)
%35 = tail call i64 @fwrite(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.19, i64 0, i64 0), i64 2, i64 1, i32* %15)
%36 = tail call i64 @fwrite(i8* getelementptr inbounds ([63 x i8], [63 x i8]* @.str.21, i64 0, i64 0), i64 62, i64 1, i32* %15)
%37 = tail call i64 @fwrite(i8* getelementptr inbounds ([30 x i8], [30 x i8]* @.str.22, i64 0, i64 0), i64 29, i64 1, i32* %15)
%38 = tail call i64 @fwrite(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.19, i64 0, i64 0), i64 2, i64 1, i32* %15)
%39 = tail call i64 @fwrite(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.19, i64 0, i64 0), i64 2, i64 1, i32* %15)
%40 = tail call i64 @fwrite(i8* getelementptr inbounds ([66 x i8], [66 x i8]* @.str.23, i64 0, i64 0), i64 65, i64 1, i32* %15)
%41 = tail call i64 @fwrite(i8* getelementptr inbounds ([58 x i8], [58 x i8]* @.str.24, i64 0, i64 0), i64 57, i64 1, i32* %15)
%42 = tail call i64 @fwrite(i8* getelementptr inbounds ([27 x i8], [27 x i8]* @.str.25, i64 0, i64 0), i64 26, i64 1, i32* %15)
%43 = tail call i64 @fwrite(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.19, i64 0, i64 0), i64 2, i64 1, i32* %15)
%44 = tail call i64 @fwrite(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.19, i64 0, i64 0), i64 2, i64 1, i32* %15)
%45 = tail call i32* @fopen(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.26, i64 0, i64 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.27, i64 0, i64 0))
br label %46
46: ; preds = %53, %0
%47 = call i32* @fgets(i8* %9, i32 2000, i32* %45)
%48 = icmp eq i32* %47, null
br i1 %48, label %169, label %49
49: ; preds = %46
%50 = call i32* @fgets(i8* %9, i32 2000, i32* %45)
%51 = call i64 @strncmp(i8* %9, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.28, i64 0, i64 0), i32 6)
%52 = icmp eq i64 %51, 0
br i1 %52, label %56, label %53
53: ; preds = %49
%54 = call i64 @strncmp(i8* %9, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.29, i64 0, i64 0), i32 6)
%55 = icmp eq i64 %54, 0
br i1 %55, label %56, label %46
56: ; preds = %49, %53
%57 = phi i64 [ -65537, %53 ], [ -65538, %49 ]
%58 = getelementptr inbounds [2001 x i8], [2001 x i8]* %3, i64 0, i64 6
%59 = getelementptr inbounds [2001 x i8], [2001 x i8]* %3, i64 0, i64 9
%60 = getelementptr inbounds [2001 x i8], [2001 x i8]* %3, i64 0, i64 7
%61 = getelementptr inbounds [2001 x i8], [2001 x i8]* %3, i64 0, i64 10
br label %62
62: ; preds = %155, %56
%63 = phi i64 [ %57, %56 ], [ %149, %155 ]
%64 = call i32 @strcpy(i8* %10, i8* %58)
%65 = call i32 @strlen(i8* %10)
%66 = icmp eq i32 %65, 0
br i1 %66, label %74, label %67
67: ; preds = %62
%68 = add nsw i32 %65, -1
%69 = sext i32 %68 to i64
%70 = getelementptr inbounds [2001 x i8], [2001 x i8]* %4, i64 0, i64 %69
%71 = load i8, i8* %70
%72 = icmp eq i8 %71, 10
br i1 %72, label %73, label %74
73: ; preds = %67
store i8 0, i8* %70
br label %74
74: ; preds = %67, %73, %62
%75 = call i32* @fgets(i8* %9, i32 2000, i32* %45)
%76 = icmp eq i32* %75, null
br i1 %76, label %169, label %77
77: ; preds = %74
%78 = call i64 @strncmp(i8* %9, i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.30, i64 0, i64 0), i32 9)
%79 = icmp eq i64 %78, 0
br i1 %79, label %80, label %172
80: ; preds = %77
%81 = call i32 @strcpy(i8* %7, i8* %59)
%82 = call i32 @sscanf(i8* %7, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.31, i64 0, i64 0), i32* %2)
%83 = load i32, i32* %2
%84 = sext i32 %83 to i64
%85 = icmp eq i64 %63, %84
br i1 %85, label %86, label %177
86: ; preds = %80
%87 = call i32* @fgets(i8* %9, i32 2000, i32* %45)
%88 = icmp eq i32* %87, null
br i1 %88, label %169, label %89
89: ; preds = %86
%90 = call i64 @strncmp(i8* %9, i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.32, i64 0, i64 0), i32 7)
%91 = icmp eq i64 %90, 0
br i1 %91, label %92, label %172
92: ; preds = %89
%93 = call i32 @strcpy(i8* %11, i8* %60)
%94 = call i32 @strlen(i8* %11)
%95 = icmp eq i32 %94, 0
br i1 %95, label %103, label %96
96: ; preds = %92
%97 = add nsw i32 %94, -1
%98 = sext i32 %97 to i64
%99 = getelementptr inbounds [2001 x i8], [2001 x i8]* %5, i64 0, i64 %98
%100 = load i8, i8* %99
%101 = icmp eq i8 %100, 10
br i1 %101, label %102, label %103
102: ; preds = %96
store i8 0, i8* %99
br label %103
103: ; preds = %96, %102, %92
%104 = call i32* @fgets(i8* %9, i32 2000, i32* %45)
%105 = icmp eq i32* %104, null
br i1 %105, label %169, label %106
106: ; preds = %103
%107 = call i64 @strncmp(i8* %9, i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.33, i64 0, i64 0), i32 10)
%108 = icmp eq i64 %107, 0
br i1 %108, label %109, label %172
109: ; preds = %106
%110 = call i32 @strcpy(i8* %12, i8* %61)
%111 = call i32 @strlen(i8* %12)
%112 = icmp eq i32 %111, 0
br i1 %112, label %120, label %113
113: ; preds = %109
%114 = add nsw i32 %111, -1
%115 = sext i32 %114 to i64
%116 = getelementptr inbounds [2001 x i8], [2001 x i8]* %6, i64 0, i64 %115
%117 = load i8, i8* %116
%118 = icmp eq i8 %117, 10
br i1 %118, label %119, label %120
119: ; preds = %113
store i8 0, i8* %116
br label %120
120: ; preds = %113, %119, %109
%121 = load i32, i32* %2
%122 = call i32 (i32*, i8*, i8*, ...) @fprintf(i32* %13, i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.34, i64 0, i64 0), i8* %10, i32 %121)
%123 = call i32 (i32*, i8*, i8*, ...) @fprintf(i32* %14, i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.35, i64 0, i64 0), i8* %10)
%124 = load i32, i32* %2
%125 = call i32 (i32*, i8*, i8*, ...) @fprintf(i32* %14, i8* getelementptr inbounds ([27 x i8], [27 x i8]* @.str.36, i64 0, i64 0), i8* %10, i32 %124)
%126 = call i32* @fgets(i8* %9, i32 2000, i32* %45)
%127 = icmp eq i32* %126, null
br i1 %127, label %169, label %128
128: ; preds = %120
%129 = call i64 @strncmp(i8* %9, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.37, i64 0, i64 0), i32 6)
%130 = icmp eq i64 %129, 0
br i1 %130, label %131, label %172
131: ; preds = %128
%132 = call i32 (i32*, i8*, i8*, ...) @fprintf(i32* %15, i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.38, i64 0, i64 0), i8* %10, i8* %11)
%133 = call i32 @strcpy(i8* %9, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.39, i64 0, i64 0))
%134 = call i32* @fgets(i8* %9, i32 2000, i32* %45)
%135 = icmp eq i32* %134, null
br i1 %135, label %144, label %136
136: ; preds = %131, %139
%137 = call i64 @strncmp(i8* %9, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.40, i64 0, i64 0), i32 2)
%138 = icmp eq i64 %137, 0
br i1 %138, label %144, label %139
139: ; preds = %136
%140 = call i32 @fputs(i8* %9, i32* %15)
%141 = call i32 @strcpy(i8* %9, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.39, i64 0, i64 0))
%142 = call i32* @fgets(i8* %9, i32 2000, i32* %45)
%143 = icmp eq i32* %142, null
br i1 %143, label %144, label %136
144: ; preds = %139, %136, %131
%145 = call i64 @strncmp(i8* %9, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.40, i64 0, i64 0), i32 2)
%146 = icmp eq i64 %145, 0
br i1 %146, label %147, label %158
147: ; preds = %144, %152
%148 = phi i64 [ %149, %152 ], [ %63, %144 ]
%149 = add nsw i64 %148, -1
%150 = call i64 @strncmp(i8* %9, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.28, i64 0, i64 0), i32 6)
%151 = icmp eq i64 %150, 0
br i1 %151, label %152, label %155
152: ; preds = %147
%153 = call i32* @fgets(i8* %9, i32 2000, i32* %45)
%154 = icmp eq i32* %153, null
br i1 %154, label %158, label %147
155: ; preds = %147
%156 = call i64 @strncmp(i8* %9, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.29, i64 0, i64 0), i32 6)
%157 = icmp eq i64 %156, 0
br i1 %157, label %62, label %172
158: ; preds = %144, %152
%159 = call i32 @fclose(i32* %45)
%160 = call i32 @fclose(i32* %13)
%161 = call i32 @fclose(i32* %14)
%162 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([41 x i8], [41 x i8]* @.str.41, i64 0, i64 0))
%163 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([41 x i8], [41 x i8]* @.str.42, i64 0, i64 0))
%164 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([41 x i8], [41 x i8]* @.str.43, i64 0, i64 0))
%165 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([41 x i8], [41 x i8]* @.str.44, i64 0, i64 0))
%166 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([41 x i8], [41 x i8]* @.str.42, i64 0, i64 0))
%167 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([41 x i8], [41 x i8]* @.str.41, i64 0, i64 0))
%168 = call i32 @exit(i32 0)
unreachable
169: ; preds = %46, %120, %103, %86, %74
%170 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([63 x i8], [63 x i8]* @str.55, i64 0, i64 0))
%171 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([25 x i8], [25 x i8]* @str.56, i64 0, i64 0))
br label %181
172: ; preds = %155, %128, %106, %89, %77
%173 = phi i8* [ getelementptr inbounds ([10 x i8], [10 x i8]* @.str.30, i64 0, i64 0), %77 ], [ getelementptr inbounds ([8 x i8], [8 x i8]* @.str.32, i64 0, i64 0), %89 ], [ getelementptr inbounds ([11 x i8], [11 x i8]* @.str.33, i64 0, i64 0), %106 ], [ getelementptr inbounds ([7 x i8], [7 x i8]* @.str.37, i64 0, i64 0), %128 ], [ getelementptr inbounds ([7 x i8], [7 x i8]* @.str.29, i64 0, i64 0), %155 ]
%174 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([35 x i8], [35 x i8]* @str, i64 0, i64 0))
%175 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([18 x i8], [18 x i8]* @.str.48, i64 0, i64 0), i8* %173)
%176 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([15 x i8], [15 x i8]* @.str.49, i64 0, i64 0), i8* %9)
br label %181
177: ; preds = %80
%178 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([47 x i8], [47 x i8]* @.str.50, i64 0, i64 0))
%179 = load i32, i32* %2
%180 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([34 x i8], [34 x i8]* @.str.51, i64 0, i64 0), i32 %179, i64 %63)
br label %181
181: ; preds = %177, %172, %169
%182 = call i32 @putchar(i32 10)
%183 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([49 x i8], [49 x i8]* @.str.53, i64 0, i64 0))
%184 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([25 x i8], [25 x i8]* @.str.54, i64 0, i64 0))
ret i32 0
}