#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 time_t;
struct tm {
  int tm_isdst;
};
typedef char FILE;

/* Variables and functions */
char *asctime(int /*<<< orphan*/);
int atoi(char *);
char *fgets(char *, int, char *);
char *fopen(char *, char *);
int /*<<< orphan*/ gmtime(long *);
scalar_t__ isdigit(char);
int mktime(struct tm *);
int /*<<< orphan*/ printf(char *, ...);
int strlen(char *);
int strptime(char *, char *, struct tm *);
int /*<<< orphan*/ *strstr(char *, char *);
int main(int argc, char **argv) {
  FILE *inputFile_ptr;
  int i, j, k;
  time_t t;
  struct tm time_str;
  char *line;
  char lineBuf[512];
  long int currentTimeInSecondsSinceEpoch = 1234567890;
  long int slotBootTimeInSecondsSinceEpoch = 313131313;
  int daysDiffInt = 0;
  int hoursDiffInt = 0;
  int minutesDiffInt = 0;
  int secondsDiffInt = 0;
  char daysDiffString[6];
  char hoursDiffString[3];
  char minutesDiffString[3];
  char secondsDiffString[3];
  if (argc != 2) {
    printf("\n");
    printf("\n");
    printf("    Usage: %s <input text file 1>\n", argv[0]);
    printf("\n");
    printf("This C program takes as INPUT(in a file) the output from an "
           "eSeries \"show version\" CLI command, for example:\n");
    printf("\n");
    printf("Juniper Edge Routing Switch ERX-1400\n");
    printf("Copyright (c) 1999-2008 Juniper Networks, Inc.  All rights "
           "reserved.\n");
    printf("System Release: 8-2-3p0-5-1.rel\n");
    printf("        Version: 8.2.3 patch-0.5.1 [BuildId 10739]   (March 24, "
           "2009  10:50)\n");
    printf("System running for: 553 days, 16 hours, 13 minutes, 20 seconds\n");
    printf("        (since TUE SEP 01 2009 05:21:30 UTC)\n");
    printf("\n");
    printf("slot  state        type        admin  spare running release   slot "
           "uptime  \n");
    printf("---- ------- ---------------- ------- ----- --------------- "
           "---------------\n");
    printf("0    standby OC3/OC12/DS3-ATM enabled spare 8-2-3p0-5-1.rel       "
           "---      \n");
    printf("1    online  OC3-4A           enabled  ---  8-2-3p0-5-1.rel "
           "553d16h:01m:15s\n");
    printf("2    online  OC3-4A           enabled  ---  8-2-3p0-5-1.rel "
           "553d16h:01m:14s\n");
    printf("3      ---         ---          ---    ---        ---             "
           "---      \n");
    printf("4    online  OC3-4A           enabled  ---  8-2-3p0-5-1.rel "
           "553d16h:01m:12s\n");
    printf("5    online  OC3-4A           enabled  ---  8-2-3p0-5-1.rel "
           "553d16h:01m:10s\n");
    printf("6    online  SRP-10Ge         enabled  ---  8-2-3p0-5-1.rel "
           "553d16h:10m:27s\n");
    printf("7    standby SRP-10Ge         enabled  ---  8-2-3p0-5-1.rel       "
           "---      \n");
    printf("8      ---         ---          ---    ---        ---             "
           "---      \n");
    printf("9    online  GE               enabled  ---  8-2-3p0-5-1.rel "
           "553d16h:02m:33s\n");
    printf("10     ---         ---          ---    ---        ---             "
           "---      \n");
    printf("11     ---         ---          ---    ---        ---             "
           "---      \n");
    printf("12   online  GE               enabled  ---  8-2-3p0-5-1.rel "
           "553d16h:02m:36s\n");
    printf("13     ---         ---          ---    ---        ---             "
           "---      \n");
    printf("\n");
    printf("\n");
    printf("--and provides as OUTPUT(to the monitor) the time that this "
           "eSeries \"show version\" CLI command was executed;\n");
    printf("ALSO, it converts the slot uptimes to the actual times the slots "
           "came up, in this example it would be:\n");
    printf("\n");
    printf("Juniper Edge Routing Switch ERX-1400\n");
    printf("Copyright (c) 1999-2008 Juniper Networks, Inc.  All rights "
           "reserved.\n");
    printf("System Release: 8-2-3p0-5-1.rel\n");
    printf("        Version: 8.2.3 patch-0.5.1 [BuildId 10739]   (March 24, "
           "2009  10:50)\n");
    printf("System running for: 553 days, 16 hours, 13 minutes, 20 seconds\n");
    printf("        (since TUE SEP 01 2009 05:21:30 UTC)\n");
    printf("Time this \"show version\" CLI command was executed:               "
           "           Tue Mar  8 21:34:50 2011\n");
    printf("\n");
    printf("slot  state        type        admin  spare running release   slot "
           "uptime  \n");
    printf("---- ------- ---------------- ------- ----- --------------- "
           "---------------\n");
    printf("0    standby OC3/OC12/DS3-ATM enabled spare 8-2-3p0-5-1.rel       "
           "---      \n");
    printf("1    online  OC3-4A           enabled  ---  8-2-3p0-5-1.rel "
           "553d16h:01m:15s Tue Sep  1 05:33:35 2009\n");
    printf("2    online  OC3-4A           enabled  ---  8-2-3p0-5-1.rel "
           "553d16h:01m:14s Tue Sep  1 05:33:36 2009\n");
    printf("3      ---         ---          ---    ---        ---             "
           "---      \n");
    printf("4    online  OC3-4A           enabled  ---  8-2-3p0-5-1.rel "
           "553d16h:01m:12s Tue Sep  1 05:33:38 2009\n");
    printf("5    online  OC3-4A           enabled  ---  8-2-3p0-5-1.rel "
           "553d16h:01m:10s Tue Sep  1 05:33:40 2009\n");
    printf("6    online  SRP-10Ge         enabled  ---  8-2-3p0-5-1.rel "
           "553d16h:10m:27s Tue Sep  1 05:24:23 2009\n");
    printf("7    standby SRP-10Ge         enabled  ---  8-2-3p0-5-1.rel       "
           "---      \n");
    printf("8      ---         ---          ---    ---        ---             "
           "---      \n");
    printf("9    online  GE               enabled  ---  8-2-3p0-5-1.rel "
           "553d16h:02m:33s Tue Sep  1 05:32:17 2009\n");
    printf("10     ---         ---          ---    ---        ---             "
           "---      \n");
    printf("11     ---         ---          ---    ---        ---             "
           "---      \n");
    printf("12   online  GE               enabled  ---  8-2-3p0-5-1.rel "
           "553d16h:02m:36s Tue Sep  1 05:32:14 2009\n");
    printf("13     ---         ---          ---    ---        ---             "
           "---      \n");
    printf("\n");
    printf("\n");
    printf("Caveats:\n");
    printf("0 - input format must be exact\n");
    printf("1 - output is in local time, ASSUMED to be UTC (at least, that is "
           "what I like)\n");
    printf("2 - the eSeries may add trailing spaces, which breaks this code.  "
           "An example workaround is:\n");
    printf("        cat inputFile | sed 's/ *$//' > inputFileCleaned\n");
    printf("\n");
    printf("Written by Jonathan Natale for Juniper Networks on 11-Mar-2011.\n");
    printf("\n");
    return (1);
  }
  if ((inputFile_ptr = fopen(argv[1], "r")) == NULL) {
    printf("Sorry, unable to open %s file.\n", argv[1]);
    printf("Please try again.  Exiting ...\n");
    return (2);
  }
  while (1) {
    if ((line = fgets(lineBuf, 512 - 2, inputFile_ptr)) == NULL) {
      printf("Sorry, unexpected NULL line read in %s file.\n", inputFile_ptr);
      printf("Please try again.  Exiting ...\n");
      return (3);
    }
    if (strstr(line, "System running for: ") == NULL) {
      printf("%s", line);
    } else {
      break;
    }
  }
  printf("%s", line);
  i = 0;
  j = 0;
  while (!isdigit(line[i])) {
    i++;
    j++;
  }
  if (j != 20) {
    printf("Sorry, wrong number of non-numeric characters before a number, in "
           "first line (got %d, expected 20).\n",
           j);
    printf("Please try again.  Exiting ...\n");
    return (4);
  }
  j = 0;
  while (isdigit(line[i])) {
    daysDiffString[j] = line[i];
    if (j >= 5) {
      printf("Sorry, wrong number of digits in the number of days, in first "
             "line (got %d, expected between 1 and 5).\n",
             j + 1);
      printf("Please try again.  Exiting ...\n");
      return (5);
    }
    i++;
    j++;
  }
  daysDiffString[j] = '\0';
  daysDiffInt = atoi(daysDiffString);
  j = 0;
  while (!isdigit(line[i])) {
    i++;
    j++;
  }
  if ((j != 6) && (j != 7)) {
    printf(
        "Sorry, wrong number of characters after the number of days and before "
        "the number of hours, in first line (got %d, expected 6 or 7).\n",
        j);
    printf("Please try again.  Exiting ...\n");
    return (6);
  }
  j = 0;
  while (isdigit(line[i])) {
    hoursDiffString[j] = line[i];
    if (j >= 2) {
      printf("Sorry, wrong number of digits in the number of hours, in first "
             "line (got %d, expected between 1 and 2).\n",
             j + 1);
      printf("Please try again.  Exiting ...\n");
      return (7);
    }
    i++;
    j++;
  }
  hoursDiffString[j] = '\0';
  hoursDiffInt = atoi(hoursDiffString);
  j = 0;
  while (!isdigit(line[i])) {
    i++;
    j++;
  }
  if ((j != 7) && (j != 8)) {
    printf("Sorry, wrong number of characters after the number of hours and "
           "before the number of minutes, in first line (got %d, expected 7 or "
           "8).\n",
           j);
    printf("Please try again.  Exiting ...\n");
    return (8);
  }
  j = 0;
  while (isdigit(line[i])) {
    minutesDiffString[j] = line[i];
    if (j >= 2) {
      printf("Sorry, wrong number of digits in the number of minutes, in first "
             "line (got %d, expected between 1 and 2).\n",
             j + 1);
      printf("Please try again.  Exiting ...\n");
      return (9);
    }
    i++;
    j++;
  }
  minutesDiffString[j] = '\0';
  minutesDiffInt = atoi(minutesDiffString);
  j = 0;
  while (!isdigit(line[i])) {
    i++;
    j++;
  }
  if ((j != 9) && (j != 10)) {
    printf("Sorry, wrong number of characters after the number of minutes and "
           "before the number of seconds, in first line (got %d, expected 9 or "
           "10).\n",
           j);
    printf("Please try again.  Exiting ...\n");
    return (10);
  }
  j = 0;
  while (isdigit(line[i])) {
    secondsDiffString[j] = line[i];
    if (j >= 2) {
      printf("Sorry, wrong number of digits in the number of seconds, in first "
             "line (got %d, expected between 1 and 2).\n",
             j + 1);
      printf("Please try again.  Exiting ...\n");
      return (11);
    }
    i++;
    j++;
  }
  secondsDiffString[j] = '\0';
  secondsDiffInt = atoi(secondsDiffString);
  if ((line = fgets(lineBuf, 512 - 2, inputFile_ptr)) == NULL) {
    return (12);
  }
  printf("%s", line);
  if (strptime(line, "         (since %a %b %d %Y %T UTC)", &time_str) ==
      (int)NULL) {
    printf("strptime() failed!\n");
    return (13);
  }
  time_str.tm_isdst = -1;
  t = mktime(&time_str);
  if (t == -1) {
    printf("mktime failed!");
    return (14);
  } else {
    currentTimeInSecondsSinceEpoch = (long)t + secondsDiffInt +
                                     minutesDiffInt * 60 + hoursDiffInt * 3600 +
                                     daysDiffInt * 86400;
  }
  printf("Time this \"show version\" CLI command was executed:                 "
         "                  %s",
         asctime(gmtime(&currentTimeInSecondsSinceEpoch)));
  while (1) {
    while (1) {
      if ((line = fgets(lineBuf, 512 - 2, inputFile_ptr)) == NULL) {
        return (0);
      }
      if (strstr(line, "m:") == NULL) {
        printf("%s", line);
      } else {
        break;
      }
    }
    for (k = strlen(line) - 1; k >= -1; k--) {
      if (k == -1) {
        printf("Sorry, unexpectedly, a nonspace was not found in the input "
               "line: <%s>.\n",
               line);
        printf("Please try again.  Exiting ...\n");
        return (16);
      }
      if ((line[k] != ' ') && (line[k] != '\n')) {
        break;
      }
    }
    for (i = k; i >= -1; i--) {
      if (i == -1) {
        printf("Sorry, unexpectedly, a space was not found in the input line: "
               "<%s>.\n",
               line);
        printf("Please try again.  Exiting ...\n");
        return (16);
      }
      if (line[i] == ' ') {
        j = i + 1;
        break;
      }
    }
    i = 0;
    while (isdigit(line[j])) {
      daysDiffString[i++] = line[j++];
    }
    daysDiffString[i] = '\0';
    daysDiffInt = atoi(daysDiffString);
    while (!isdigit(line[j++]))
      ;
    j--;
    i = 0;
    while (isdigit(line[j])) {
      hoursDiffString[i++] = line[j++];
    }
    hoursDiffString[i] = '\0';
    hoursDiffInt = atoi(hoursDiffString);
    while (!isdigit(line[j++]))
      ;
    j--;
    i = 0;
    while (isdigit(line[j])) {
      minutesDiffString[i++] = line[j++];
    }
    minutesDiffString[i] = '\0';
    minutesDiffInt = atoi(minutesDiffString);
    while (!isdigit(line[j++]))
      ;
    j--;
    i = 0;
    while (isdigit(line[j])) {
      secondsDiffString[i++] = line[j++];
    }
    secondsDiffString[i] = '\0';
    secondsDiffInt = atoi(secondsDiffString);
    while (!isdigit(line[j++])) {
    }
    j--;
    slotBootTimeInSecondsSinceEpoch = currentTimeInSecondsSinceEpoch -
                                      secondsDiffInt - minutesDiffInt * 60 -
                                      hoursDiffInt * 3600 - daysDiffInt * 86400;
    j = strlen(line) - 1;
    line[j++] = ' ';
    line[j++] = 's';
    line[j++] = 'i';
    line[j++] = 'n';
    line[j++] = 'c';
    line[j++] = 'e';
    line[j++] = ' ';
    for (i = 0; i < strlen(asctime(gmtime(&slotBootTimeInSecondsSinceEpoch)));
         i++) {
      line[j++] = asctime(gmtime(&slotBootTimeInSecondsSinceEpoch))[i];
    }
    line[j] = '\0';
    printf("%s", line);
  }
  printf("Sorry, unexpected program exit point, something might be broken!\n");
  printf("Please try again and/or contact the program author, Jonathan Natale. "
         " Exiting ...\n");
  return (0);
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0x280,%rsp
movl   $0x0,-0x4(%rbp)
mov    %edi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
movq   $0x499602d2,-0x248(%rbp)
d2 02 96 49
movq   $0x12aa0131,-0x250(%rbp)
31 01 aa 12
movl   $0x0,-0x254(%rbp)
movl   $0x0,-0x258(%rbp)
movl   $0x0,-0x25c(%rbp)
movl   $0x0,-0x260(%rbp)
cmpl   $0x2,-0x8(%rbp)
je     15dc <main+0x42c>
lea    0x218e(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x2180(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
mov    -0x10(%rbp),%rax
mov    (%rax),%rsi
lea    0x1dc5(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x215d(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x1dcc(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x2141(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x1e1e(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x1e36(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x1e6e(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x1e81(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x1ec1(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x1ef3(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x20df(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x1f05(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x1f44(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x1f83(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x1fc2(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x2001(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x2040(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x207f(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x20be(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x20fd(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x213c(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x217b(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x21ba(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x21f9(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x2238(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x2277(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x22b6(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x1ff1(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x1fe3(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x22d9(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x2339(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x1fb9(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x1c96(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x1cae(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x1ce6(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x1cf9(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x1d39(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x1d6b(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x2331(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x1f49(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x1d6f(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x1dae(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x1ded(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x2351(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x23a9(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x1eaa(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x23f3(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x244b(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x24a3(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x1fa6(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x1fe5(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x24df(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x2063(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x20a2(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x251b(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x2120(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x1e5b(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x1e4d(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x2549(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x2545(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x2557(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x2599(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x25e8(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x1df9(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x2606(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x1ddd(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
movl   $0x1,-0x4(%rbp)
jmp    223e <main+0x108e>
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%rdi
lea    0x2617(%rip),%rsi
call   1090 <fopen@plt>
mov    %rax,-0x18(%rbp)
cmp    $0x0,%rax
jne    162e <main+0x47e>
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%rsi
lea    0x25f7(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x2609(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
movl   $0x2,-0x4(%rbp)
jmp    223e <main+0x108e>
jmp    1633 <main+0x483>
lea    -0x240(%rbp),%rdi
mov    -0x18(%rbp),%rdx
mov    $0x1fe,%esi
call   1070 <fgets@plt>
mov    %rax,-0x38(%rbp)
cmp    $0x0,%rax
jne    1682 <main+0x4d2>
mov    -0x18(%rbp),%rsi
lea    0x25e3(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x25b5(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
movl   $0x3,-0x4(%rbp)
jmp    223e <main+0x108e>
mov    -0x38(%rbp),%rdi
lea    0x25e5(%rip),%rsi
call   10d0 <strstr@plt>
cmp    $0x0,%rax
jne    16b3 <main+0x503>
mov    -0x38(%rbp),%rsi
lea    0x2a20(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
jmp    16b8 <main+0x508>
jmp    16bd <main+0x50d>
jmp    1633 <main+0x483>
mov    -0x38(%rbp),%rsi
lea    0x29ff(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
movl   $0x0,-0x1c(%rbp)
movl   $0x0,-0x20(%rbp)
mov    -0x38(%rbp),%rax
movslq -0x1c(%rbp),%rcx
movsbl (%rax,%rcx,1),%edi
call   1030 <isdigit@plt>
cmp    $0x0,%rax
setne  %al
xor    $0xff,%al
test   $0x1,%al
jne    1704 <main+0x554>
jmp    171b <main+0x56b>
mov    -0x1c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1c(%rbp)
mov    -0x20(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x20(%rbp)
jmp    16dd <main+0x52d>
cmpl   $0x14,-0x20(%rbp)
je     1750 <main+0x5a0>
mov    -0x20(%rbp),%esi
lea    0x2558(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x24e7(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
movl   $0x4,-0x4(%rbp)
jmp    223e <main+0x108e>
movl   $0x0,-0x20(%rbp)
mov    -0x38(%rbp),%rax
movslq -0x1c(%rbp),%rcx
movsbl (%rax,%rcx,1),%edi
call   1030 <isdigit@plt>
cmp    $0x0,%rax
je     17d7 <main+0x627>
mov    -0x38(%rbp),%rax
movslq -0x1c(%rbp),%rcx
mov    (%rax,%rcx,1),%cl
movslq -0x20(%rbp),%rax
mov    %cl,-0x266(%rbp,%rax,1)
cmpl   $0x5,-0x20(%rbp)
jl     17c0 <main+0x610>
mov    -0x20(%rbp),%esi
add    $0x1,%esi
lea    0x254d(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x2477(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
movl   $0x5,-0x4(%rbp)
jmp    223e <main+0x108e>
mov    -0x1c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1c(%rbp)
mov    -0x20(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x20(%rbp)
jmp    1757 <main+0x5a7>
movslq -0x20(%rbp),%rax
movb   $0x0,-0x266(%rbp,%rax,1)
lea    -0x266(%rbp),%rdi
call   10b0 <atoi@plt>
mov    %eax,-0x254(%rbp)
movl   $0x0,-0x20(%rbp)
mov    -0x38(%rbp),%rax
movslq -0x1c(%rbp),%rcx
movsbl (%rax,%rcx,1),%edi
call   1030 <isdigit@plt>
cmp    $0x0,%rax
setne  %al
xor    $0xff,%al
test   $0x1,%al
jne    1823 <main+0x673>
jmp    183a <main+0x68a>
mov    -0x1c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1c(%rbp)
mov    -0x20(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x20(%rbp)
jmp    17fc <main+0x64c>
cmpl   $0x6,-0x20(%rbp)
je     1879 <main+0x6c9>
cmpl   $0x7,-0x20(%rbp)
je     1879 <main+0x6c9>
mov    -0x20(%rbp),%esi
lea    0x24fc(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x23be(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
movl   $0x6,-0x4(%rbp)
jmp    223e <main+0x108e>
movl   $0x0,-0x20(%rbp)
mov    -0x38(%rbp),%rax
movslq -0x1c(%rbp),%rcx
movsbl (%rax,%rcx,1),%edi
call   1030 <isdigit@plt>
cmp    $0x0,%rax
je     1900 <main+0x750>
mov    -0x38(%rbp),%rax
movslq -0x1c(%rbp),%rcx
mov    (%rax,%rcx,1),%cl
movslq -0x20(%rbp),%rax
mov    %cl,-0x269(%rbp,%rax,1)
cmpl   $0x2,-0x20(%rbp)
jl     18e9 <main+0x739>
mov    -0x20(%rbp),%esi
add    $0x1,%esi
lea    0x2511(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x234e(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
movl   $0x7,-0x4(%rbp)
jmp    223e <main+0x108e>
mov    -0x1c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1c(%rbp)
mov    -0x20(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x20(%rbp)
jmp    1880 <main+0x6d0>
movslq -0x20(%rbp),%rax
movb   $0x0,-0x269(%rbp,%rax,1)
lea    -0x269(%rbp),%rdi
call   10b0 <atoi@plt>
mov    %eax,-0x258(%rbp)
movl   $0x0,-0x20(%rbp)
mov    -0x38(%rbp),%rax
movslq -0x1c(%rbp),%rcx
movsbl (%rax,%rcx,1),%edi
call   1030 <isdigit@plt>
cmp    $0x0,%rax
setne  %al
xor    $0xff,%al
test   $0x1,%al
jne    194c <main+0x79c>
jmp    1963 <main+0x7b3>
mov    -0x1c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1c(%rbp)
mov    -0x20(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x20(%rbp)
jmp    1925 <main+0x775>
cmpl   $0x7,-0x20(%rbp)
je     19a2 <main+0x7f2>
cmpl   $0x8,-0x20(%rbp)
je     19a2 <main+0x7f2>
mov    -0x20(%rbp),%esi
lea    0x24c1(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x2295(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
movl   $0x8,-0x4(%rbp)
jmp    223e <main+0x108e>
movl   $0x0,-0x20(%rbp)
mov    -0x38(%rbp),%rax
movslq -0x1c(%rbp),%rcx
movsbl (%rax,%rcx,1),%edi
call   1030 <isdigit@plt>
cmp    $0x0,%rax
je     1a29 <main+0x879>
mov    -0x38(%rbp),%rax
movslq -0x1c(%rbp),%rcx
mov    (%rax,%rcx,1),%cl
movslq -0x20(%rbp),%rax
mov    %cl,-0x26c(%rbp,%rax,1)
cmpl   $0x2,-0x20(%rbp)
jl     1a12 <main+0x862>
mov    -0x20(%rbp),%esi
add    $0x1,%esi
lea    0x24d9(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x2225(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
movl   $0x9,-0x4(%rbp)
jmp    223e <main+0x108e>
mov    -0x1c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1c(%rbp)
mov    -0x20(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x20(%rbp)
jmp    19a9 <main+0x7f9>
movslq -0x20(%rbp),%rax
movb   $0x0,-0x26c(%rbp,%rax,1)
lea    -0x26c(%rbp),%rdi
call   10b0 <atoi@plt>
mov    %eax,-0x25c(%rbp)
movl   $0x0,-0x20(%rbp)
mov    -0x38(%rbp),%rax
movslq -0x1c(%rbp),%rcx
movsbl (%rax,%rcx,1),%edi
call   1030 <isdigit@plt>
cmp    $0x0,%rax
setne  %al
xor    $0xff,%al
test   $0x1,%al
jne    1a75 <main+0x8c5>
jmp    1a8c <main+0x8dc>
mov    -0x1c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1c(%rbp)
mov    -0x20(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x20(%rbp)
jmp    1a4e <main+0x89e>
cmpl   $0x9,-0x20(%rbp)
je     1acb <main+0x91b>
cmpl   $0xa,-0x20(%rbp)
je     1acb <main+0x91b>
mov    -0x20(%rbp),%esi
lea    0x248b(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x216c(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
movl   $0xa,-0x4(%rbp)
jmp    223e <main+0x108e>
movl   $0x0,-0x20(%rbp)
mov    -0x38(%rbp),%rax
movslq -0x1c(%rbp),%rcx
movsbl (%rax,%rcx,1),%edi
call   1030 <isdigit@plt>
cmp    $0x0,%rax
je     1b52 <main+0x9a2>
mov    -0x38(%rbp),%rax
movslq -0x1c(%rbp),%rcx
mov    (%rax,%rcx,1),%cl
movslq -0x20(%rbp),%rax
mov    %cl,-0x26f(%rbp,%rax,1)
cmpl   $0x2,-0x20(%rbp)
jl     1b3b <main+0x98b>
mov    -0x20(%rbp),%esi
add    $0x1,%esi
lea    0x24a6(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x20fc(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
movl   $0xb,-0x4(%rbp)
jmp    223e <main+0x108e>
mov    -0x1c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1c(%rbp)
mov    -0x20(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x20(%rbp)
jmp    1ad2 <main+0x922>
movslq -0x20(%rbp),%rax
movb   $0x0,-0x26f(%rbp,%rax,1)
lea    -0x26f(%rbp),%rdi
call   10b0 <atoi@plt>
mov    %eax,-0x260(%rbp)
lea    -0x240(%rbp),%rdi
mov    -0x18(%rbp),%rdx
mov    $0x1fe,%esi
call   1070 <fgets@plt>
mov    %rax,-0x38(%rbp)
cmp    $0x0,%rax
jne    1b9f <main+0x9ef>
movl   $0xc,-0x4(%rbp)
jmp    223e <main+0x108e>
mov    -0x38(%rbp),%rsi
lea    0x251d(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
mov    -0x38(%rbp),%rdi
lea    0x246f(%rip),%rsi
lea    -0x30(%rbp),%rdx
call   10c0 <strptime@plt>
cmp    $0x0,%eax
jne    1be8 <main+0xa38>
lea    0x247a(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
movl   $0xd,-0x4(%rbp)
jmp    223e <main+0x108e>
movl   $0xffffffff,-0x30(%rbp)
lea    -0x30(%rbp),%rdi
call   1080 <mktime@plt>
mov    %eax,-0x28(%rbp)
cmpl   $0xffffffff,-0x28(%rbp)
jne    1c1f <main+0xa6f>
lea    0x2457(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
movl   $0xe,-0x4(%rbp)
jmp    223e <main+0x108e>
movslq -0x28(%rbp),%rax
movslq -0x260(%rbp),%rcx
add    %rcx,%rax
imul   $0x3c,-0x25c(%rbp),%ecx
movslq %ecx,%rcx
add    %rcx,%rax
imul   $0xe10,-0x258(%rbp),%ecx
movslq %ecx,%rcx
add    %rcx,%rax
imul   $0x15180,-0x254(%rbp),%ecx
movslq %ecx,%rcx
add    %rcx,%rax
mov    %rax,-0x248(%rbp)
lea    -0x248(%rbp),%rdi
call   10a0 <gmtime@plt>
mov    %eax,%edi
call   1050 <asctime@plt>
mov    %rax,%rsi
lea    0x23f4(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
jmp    1c8a <main+0xada>
lea    -0x240(%rbp),%rdi
mov    -0x18(%rbp),%rdx
mov    $0x1fe,%esi
call   1070 <fgets@plt>
mov    %rax,-0x38(%rbp)
cmp    $0x0,%rax
jne    1cb9 <main+0xb09>
movl   $0x0,-0x4(%rbp)
jmp    223e <main+0x108e>
mov    -0x38(%rbp),%rdi
lea    0x2406(%rip),%rsi
call   10d0 <strstr@plt>
cmp    $0x0,%rax
jne    1cea <main+0xb3a>
mov    -0x38(%rbp),%rsi
lea    0x23e9(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
jmp    1cef <main+0xb3f>
jmp    1cf4 <main+0xb44>
jmp    1c8a <main+0xada>
mov    -0x38(%rbp),%rdi
call   1040 <strlen@plt>
sub    $0x1,%eax
mov    %eax,-0x24(%rbp)
cmpl   $0xffffffff,-0x24(%rbp)
jl     1d85 <main+0xbd5>
cmpl   $0xffffffff,-0x24(%rbp)
jne    1d43 <main+0xb93>
mov    -0x38(%rbp),%rsi
lea    0x23ab(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x1ef4(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
movl   $0x10,-0x4(%rbp)
jmp    223e <main+0x108e>
mov    -0x38(%rbp),%rax
movslq -0x24(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x20,%eax
je     1d72 <main+0xbc2>
mov    -0x38(%rbp),%rax
movslq -0x24(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0xa,%eax
je     1d72 <main+0xbc2>
jmp    1d85 <main+0xbd5>
jmp    1d77 <main+0xbc7>
mov    -0x24(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x24(%rbp)
jmp    1d03 <main+0xb53>
mov    -0x24(%rbp),%eax
mov    %eax,-0x1c(%rbp)
cmpl   $0xffffffff,-0x1c(%rbp)
jl     1e01 <main+0xc51>
cmpl   $0xffffffff,-0x1c(%rbp)
jne    1dcb <main+0xc1b>
mov    -0x38(%rbp),%rsi
lea    0x236b(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x1e6c(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
movl   $0x10,-0x4(%rbp)
jmp    223e <main+0x108e>
mov    -0x38(%rbp),%rax
movslq -0x1c(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x20,%eax
jne    1dee <main+0xc3e>
mov    -0x1c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x20(%rbp)
jmp    1e01 <main+0xc51>
jmp    1df3 <main+0xc43>
mov    -0x1c(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x1c(%rbp)
jmp    1d8b <main+0xbdb>
movl   $0x0,-0x1c(%rbp)
mov    -0x38(%rbp),%rax
movslq -0x20(%rbp),%rcx
movsbl (%rax,%rcx,1),%edi
call   1030 <isdigit@plt>
cmp    $0x0,%rax
je     1e51 <main+0xca1>
mov    -0x38(%rbp),%rax
mov    -0x20(%rbp),%ecx
mov    %ecx,%edx
add    $0x1,%edx
mov    %edx,-0x20(%rbp)
movslq %ecx,%rcx
mov    (%rax,%rcx,1),%cl
mov    -0x1c(%rbp),%eax
mov    %eax,%edx
add    $0x1,%edx
mov    %edx,-0x1c(%rbp)
cltq
mov    %cl,-0x266(%rbp,%rax,1)
jmp    1e08 <main+0xc58>
movslq -0x1c(%rbp),%rax
movb   $0x0,-0x266(%rbp,%rax,1)
lea    -0x266(%rbp),%rdi
call   10b0 <atoi@plt>
mov    %eax,-0x254(%rbp)
mov    -0x38(%rbp),%rax
mov    -0x20(%rbp),%ecx
mov    %ecx,%edx
add    $0x1,%edx
mov    %edx,-0x20(%rbp)
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%edi
call   1030 <isdigit@plt>
cmp    $0x0,%rax
setne  %al
xor    $0xff,%al
test   $0x1,%al
jne    1ea0 <main+0xcf0>
jmp    1ea5 <main+0xcf5>
jmp    1e6f <main+0xcbf>
mov    -0x20(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x20(%rbp)
movl   $0x0,-0x1c(%rbp)
mov    -0x38(%rbp),%rax
movslq -0x20(%rbp),%rcx
movsbl (%rax,%rcx,1),%edi
call   1030 <isdigit@plt>
cmp    $0x0,%rax
je     1efe <main+0xd4e>
mov    -0x38(%rbp),%rax
mov    -0x20(%rbp),%ecx
mov    %ecx,%edx
add    $0x1,%edx
mov    %edx,-0x20(%rbp)
movslq %ecx,%rcx
mov    (%rax,%rcx,1),%cl
mov    -0x1c(%rbp),%eax
mov    %eax,%edx
add    $0x1,%edx
mov    %edx,-0x1c(%rbp)
cltq
mov    %cl,-0x269(%rbp,%rax,1)
jmp    1eb5 <main+0xd05>
movslq -0x1c(%rbp),%rax
movb   $0x0,-0x269(%rbp,%rax,1)
lea    -0x269(%rbp),%rdi
call   10b0 <atoi@plt>
mov    %eax,-0x258(%rbp)
mov    -0x38(%rbp),%rax
mov    -0x20(%rbp),%ecx
mov    %ecx,%edx
add    $0x1,%edx
mov    %edx,-0x20(%rbp)
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%edi
call   1030 <isdigit@plt>
cmp    $0x0,%rax
setne  %al
xor    $0xff,%al
test   $0x1,%al
jne    1f4d <main+0xd9d>
jmp    1f52 <main+0xda2>
jmp    1f1c <main+0xd6c>
mov    -0x20(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x20(%rbp)
movl   $0x0,-0x1c(%rbp)
mov    -0x38(%rbp),%rax
movslq -0x20(%rbp),%rcx
movsbl (%rax,%rcx,1),%edi
call   1030 <isdigit@plt>
cmp    $0x0,%rax
je     1fab <main+0xdfb>
mov    -0x38(%rbp),%rax
mov    -0x20(%rbp),%ecx
mov    %ecx,%edx
add    $0x1,%edx
mov    %edx,-0x20(%rbp)
movslq %ecx,%rcx
mov    (%rax,%rcx,1),%cl
mov    -0x1c(%rbp),%eax
mov    %eax,%edx
add    $0x1,%edx
mov    %edx,-0x1c(%rbp)
cltq
mov    %cl,-0x26c(%rbp,%rax,1)
jmp    1f62 <main+0xdb2>
movslq -0x1c(%rbp),%rax
movb   $0x0,-0x26c(%rbp,%rax,1)
lea    -0x26c(%rbp),%rdi
call   10b0 <atoi@plt>
mov    %eax,-0x25c(%rbp)
mov    -0x38(%rbp),%rax
mov    -0x20(%rbp),%ecx
mov    %ecx,%edx
add    $0x1,%edx
mov    %edx,-0x20(%rbp)
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%edi
call   1030 <isdigit@plt>
cmp    $0x0,%rax
setne  %al
xor    $0xff,%al
test   $0x1,%al
jne    1ffa <main+0xe4a>
jmp    1fff <main+0xe4f>
jmp    1fc9 <main+0xe19>
mov    -0x20(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x20(%rbp)
movl   $0x0,-0x1c(%rbp)
mov    -0x38(%rbp),%rax
movslq -0x20(%rbp),%rcx
movsbl (%rax,%rcx,1),%edi
call   1030 <isdigit@plt>
cmp    $0x0,%rax
je     2058 <main+0xea8>
mov    -0x38(%rbp),%rax
mov    -0x20(%rbp),%ecx
mov    %ecx,%edx
add    $0x1,%edx
mov    %edx,-0x20(%rbp)
movslq %ecx,%rcx
mov    (%rax,%rcx,1),%cl
mov    -0x1c(%rbp),%eax
mov    %eax,%edx
add    $0x1,%edx
mov    %edx,-0x1c(%rbp)
cltq
mov    %cl,-0x26f(%rbp,%rax,1)
jmp    200f <main+0xe5f>
movslq -0x1c(%rbp),%rax
movb   $0x0,-0x26f(%rbp,%rax,1)
lea    -0x26f(%rbp),%rdi
call   10b0 <atoi@plt>
mov    %eax,-0x260(%rbp)
mov    -0x38(%rbp),%rax
mov    -0x20(%rbp),%ecx
mov    %ecx,%edx
add    $0x1,%edx
mov    %edx,-0x20(%rbp)
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%edi
call   1030 <isdigit@plt>
cmp    $0x0,%rax
setne  %al
xor    $0xff,%al
test   $0x1,%al
jne    20a7 <main+0xef7>
jmp    20ac <main+0xefc>
jmp    2076 <main+0xec6>
mov    -0x20(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x20(%rbp)
mov    -0x248(%rbp),%rax
movslq -0x260(%rbp),%rcx
sub    %rcx,%rax
imul   $0x3c,-0x25c(%rbp),%ecx
movslq %ecx,%rcx
sub    %rcx,%rax
imul   $0xe10,-0x258(%rbp),%ecx
movslq %ecx,%rcx
sub    %rcx,%rax
imul   $0x15180,-0x254(%rbp),%ecx
movslq %ecx,%rcx
sub    %rcx,%rax
mov    %rax,-0x250(%rbp)
mov    -0x38(%rbp),%rdi
call   1040 <strlen@plt>
sub    $0x1,%eax
mov    %eax,-0x20(%rbp)
mov    -0x38(%rbp),%rax
mov    -0x20(%rbp),%ecx
mov    %ecx,%edx
add    $0x1,%edx
mov    %edx,-0x20(%rbp)
movslq %ecx,%rcx
movb   $0x20,(%rax,%rcx,1)
mov    -0x38(%rbp),%rax
mov    -0x20(%rbp),%ecx
mov    %ecx,%edx
add    $0x1,%edx
mov    %edx,-0x20(%rbp)
movslq %ecx,%rcx
movb   $0x73,(%rax,%rcx,1)
mov    -0x38(%rbp),%rax
mov    -0x20(%rbp),%ecx
mov    %ecx,%edx
add    $0x1,%edx
mov    %edx,-0x20(%rbp)
movslq %ecx,%rcx
movb   $0x69,(%rax,%rcx,1)
mov    -0x38(%rbp),%rax
mov    -0x20(%rbp),%ecx
mov    %ecx,%edx
add    $0x1,%edx
mov    %edx,-0x20(%rbp)
movslq %ecx,%rcx
movb   $0x6e,(%rax,%rcx,1)
mov    -0x38(%rbp),%rax
mov    -0x20(%rbp),%ecx
mov    %ecx,%edx
add    $0x1,%edx
mov    %edx,-0x20(%rbp)
movslq %ecx,%rcx
movb   $0x63,(%rax,%rcx,1)
mov    -0x38(%rbp),%rax
mov    -0x20(%rbp),%ecx
mov    %ecx,%edx
add    $0x1,%edx
mov    %edx,-0x20(%rbp)
movslq %ecx,%rcx
movb   $0x65,(%rax,%rcx,1)
mov    -0x38(%rbp),%rax
mov    -0x20(%rbp),%ecx
mov    %ecx,%edx
add    $0x1,%edx
mov    %edx,-0x20(%rbp)
movslq %ecx,%rcx
movb   $0x20,(%rax,%rcx,1)
movl   $0x0,-0x1c(%rbp)
mov    -0x1c(%rbp),%eax
mov    %eax,-0x274(%rbp)
lea    -0x250(%rbp),%rdi
call   10a0 <gmtime@plt>
mov    %eax,%edi
call   1050 <asctime@plt>
mov    %rax,%rdi
call   1040 <strlen@plt>
mov    %eax,%ecx
mov    -0x274(%rbp),%eax
cmp    %ecx,%eax
jge    221b <main+0x106b>
lea    -0x250(%rbp),%rdi
call   10a0 <gmtime@plt>
mov    %eax,%edi
call   1050 <asctime@plt>
movslq -0x1c(%rbp),%rcx
mov    (%rax,%rcx,1),%dl
mov    -0x38(%rbp),%rax
mov    -0x20(%rbp),%ecx
mov    %ecx,%esi
add    $0x1,%esi
mov    %esi,-0x20(%rbp)
movslq %ecx,%rcx
mov    %dl,(%rax,%rcx,1)
mov    -0x1c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1c(%rbp)
jmp    21aa <main+0xffa>
mov    -0x38(%rbp),%rax
movslq -0x20(%rbp),%rcx
movb   $0x0,(%rax,%rcx,1)
mov    -0x38(%rbp),%rsi
lea    0x1e95(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
jmp    1c85 <main+0xad5>
mov    -0x4(%rbp),%eax
add    $0x280,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x258,%rsp
mov    %rsi,%rbx
movq   $0x499602d2,0x40(%rsp)
96 49
movq   $0x12aa0131,0x38(%rsp)
aa 12
cmp    $0x2,%edi
jne    12b3 <main+0xe3>
mov    0x8(%rbx),%rdi
lea    0x1e19(%rip),%rsi
call   10b0 <fopen@plt>
test   %rax,%rax
je     15d2 <main+0x402>
mov    %rax,%r13
lea    0x50(%rsp),%rdi
mov    $0x1fe,%esi
mov    %rax,%rdx
call   1090 <fgets@plt>
test   %rax,%rax
je     128c <main+0xbc>
mov    %rax,%rbp
lea    0x1e37(%rip),%r14
lea    0x2271(%rip),%r15
lea    0x50(%rsp),%r12
nopl   0x0(%rax,%rax,1)
mov    %rbp,%rdi
mov    %r14,%rsi
call   10f0 <strstr@plt>
mov    %rax,%rbx
mov    %r15,%rdi
mov    %rbp,%rsi
xor    %eax,%eax
call   1080 <printf@plt>
test   %rbx,%rbx
jne    15fa <main+0x42a>
mov    %r12,%rdi
mov    $0x1fe,%esi
mov    %r13,%rdx
call   1090 <fgets@plt>
mov    %rax,%rbp
test   %rax,%rax
jne    1250 <main+0x80>
lea    0x1db2(%rip),%rdi
mov    %r13,%rsi
xor    %eax,%eax
call   1080 <printf@plt>
lea    0x22b6(%rip),%rdi
call   1050 <puts@plt>
mov    $0x3,%ebp
jmp    170c <main+0x53c>
mov    $0xa,%edi
call   1030 <putchar@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
mov    (%rbx),%rsi
lea    0x1d2f(%rip),%rdi
xor    %eax,%eax
call   1080 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
lea    0x2290(%rip),%rdi
call   1050 <puts@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
lea    0x25cf(%rip),%rdi
call   1050 <puts@plt>
lea    0x25e8(%rip),%rdi
call   1050 <puts@plt>
lea    0x2621(%rip),%rdi
call   1050 <puts@plt>
lea    0x2635(%rip),%rdi
call   1050 <puts@plt>
lea    0x2676(%rip),%rdi
call   1050 <puts@plt>
lea    0x26a9(%rip),%r13
mov    %r13,%rdi
call   1050 <puts@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
lea    0x2722(%rip),%rdi
call   1050 <puts@plt>
lea    0x2762(%rip),%rdi
call   1050 <puts@plt>
lea    0x27a2(%rip),%rdi
call   1050 <puts@plt>
lea    0x226e(%rip),%rdi
call   1050 <puts@plt>
lea    0x22ae(%rip),%rdi
call   1050 <puts@plt>
lea    0x2894(%rip),%rdi
call   1050 <puts@plt>
lea    0x22e2(%rip),%rdi
call   1050 <puts@plt>
lea    0x2322(%rip),%rdi
call   1050 <puts@plt>
lea    0x2362(%rip),%rdi
call   1050 <puts@plt>
lea    0x29df(%rip),%rbp
mov    %rbp,%rdi
call   1050 <puts@plt>
lea    0x2a1c(%rip),%rbx
mov    %rbx,%rdi
call   1050 <puts@plt>
lea    0x2384(%rip),%rdi
call   1050 <puts@plt>
lea    0x2ab2(%rip),%r14
mov    %r14,%rdi
call   1050 <puts@plt>
lea    0x2aef(%rip),%r15
mov    %r15,%rdi
call   1050 <puts@plt>
lea    0x23a6(%rip),%rdi
call   1050 <puts@plt>
lea    0x2b85(%rip),%r12
mov    %r12,%rdi
call   1050 <puts@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
lea    0x23c3(%rip),%rdi
call   1050 <puts@plt>
lea    0x2424(%rip),%rdi
call   1050 <puts@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
lea    0x2475(%rip),%rdi
call   1050 <puts@plt>
lea    0x248e(%rip),%rdi
call   1050 <puts@plt>
lea    0x24c7(%rip),%rdi
call   1050 <puts@plt>
lea    0x24db(%rip),%rdi
call   1050 <puts@plt>
lea    0x251c(%rip),%rdi
call   1050 <puts@plt>
mov    %r13,%rdi
call   1050 <puts@plt>
lea    0x2574(%rip),%rdi
call   1050 <puts@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
lea    0x25c3(%rip),%rdi
call   1050 <puts@plt>
lea    0x2603(%rip),%rdi
call   1050 <puts@plt>
lea    0x2643(%rip),%rdi
call   1050 <puts@plt>
lea    0x2683(%rip),%rdi
call   1050 <puts@plt>
lea    0x26dc(%rip),%rdi
call   1050 <puts@plt>
lea    0x2735(%rip),%rdi
call   1050 <puts@plt>
lea    0x2775(%rip),%rdi
call   1050 <puts@plt>
lea    0x27ce(%rip),%rdi
call   1050 <puts@plt>
lea    0x2827(%rip),%rdi
call   1050 <puts@plt>
mov    %rbp,%rdi
call   1050 <puts@plt>
mov    %rbx,%rdi
call   1050 <puts@plt>
lea    0x2908(%rip),%rdi
call   1050 <puts@plt>
mov    %r14,%rdi
call   1050 <puts@plt>
mov    %r15,%rdi
call   1050 <puts@plt>
lea    0x29e9(%rip),%rdi
call   1050 <puts@plt>
mov    %r12,%rdi
call   1050 <puts@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
lea    0x2a72(%rip),%rdi
call   1050 <puts@plt>
lea    0x2a6f(%rip),%rdi
call   1050 <puts@plt>
lea    0x2a82(%rip),%rdi
call   1050 <puts@plt>
lea    0x2ac5(%rip),%rdi
call   1050 <puts@plt>
lea    0x2b15(%rip),%rdi
call   1050 <puts@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
lea    0x2b38(%rip),%rdi
call   1050 <puts@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
mov    $0x1,%ebp
jmp    170c <main+0x53c>
mov    0x8(%rbx),%rsi
lea    0x1a48(%rip),%rdi
xor    %eax,%eax
call   1080 <printf@plt>
lea    0x1f6f(%rip),%rdi
call   1050 <puts@plt>
mov    $0x2,%ebp
jmp    170c <main+0x53c>
movsbl 0x0(%rbp),%edi
call   1040 <isdigit@plt>
xor    %ebx,%ebx
test   %rax,%rax
jne    16eb <main+0x51b>
xor    %ebx,%ebx
movsbl 0x1(%rbp,%rbx,1),%edi
add    $0x1,%rbx
call   1040 <isdigit@plt>
test   %rax,%rax
je     1610 <main+0x440>
cmp    $0x14,%ebx
jne    16eb <main+0x51b>
movsbl 0x14(%rbp),%edi
call   1040 <isdigit@plt>
xor    %r15d,%r15d
test   %rax,%rax
je     1720 <main+0x550>
mov    0x14(%rbp),%al
mov    %al,0x26(%rsp)
movsbl 0x15(%rbp),%edi
call   1040 <isdigit@plt>
test   %rax,%rax
je     1729 <main+0x559>
mov    0x15(%rbp),%al
mov    %al,0x27(%rsp)
movsbl 0x16(%rbp),%edi
call   1040 <isdigit@plt>
test   %rax,%rax
je     1735 <main+0x565>
mov    0x16(%rbp),%al
mov    %al,0x28(%rsp)
movsbl 0x17(%rbp),%edi
call   1040 <isdigit@plt>
test   %rax,%rax
je     1741 <main+0x571>
mov    0x17(%rbp),%al
mov    %al,0x29(%rsp)
movsbl 0x18(%rbp),%edi
call   1040 <isdigit@plt>
test   %rax,%rax
je     174d <main+0x57d>
mov    0x18(%rbp),%al
mov    %al,0x2a(%rsp)
movsbl 0x19(%rbp),%edi
call   1040 <isdigit@plt>
test   %rax,%rax
je     1759 <main+0x589>
mov    0x19(%rbp),%al
mov    %al,0x2b(%rsp)
lea    0x1a21(%rip),%rdi
mov    $0x6,%esi
xor    %eax,%eax
call   1080 <printf@plt>
lea    0x1e7b(%rip),%rdi
call   1050 <puts@plt>
mov    $0x5,%ebp
jmp    170c <main+0x53c>
lea    0x1996(%rip),%rdi
mov    %ebx,%esi
xor    %eax,%eax
call   1080 <printf@plt>
lea    0x1e58(%rip),%rdi
call   1050 <puts@plt>
mov    $0x4,%ebp
mov    %ebp,%eax
add    $0x258,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret
mov    $0x14,%ebx
xor    %eax,%eax
jmp    1763 <main+0x593>
mov    $0x1,%eax
mov    $0x15,%ebx
jmp    1763 <main+0x593>
mov    $0x2,%eax
mov    $0x16,%ebx
jmp    1763 <main+0x593>
mov    $0x3,%eax
mov    $0x17,%ebx
jmp    1763 <main+0x593>
mov    $0x4,%eax
mov    $0x18,%ebx
jmp    1763 <main+0x593>
mov    $0x5,%eax
mov    $0x19,%ebx
movb   $0x0,0x26(%rsp,%rax,1)
lea    0x26(%rsp),%rdi
call   10d0 <atoi@plt>
mov    %eax,%r14d
movsbl 0x0(%rbp,%rbx,1),%edi
call   1040 <isdigit@plt>
test   %rax,%rax
jne    182f <main+0x65f>
xor    %r15d,%r15d
nopl   0x0(%rax,%rax,1)
add    $0x1,%r15d
movsbl 0x1(%rbp,%rbx,1),%edi
add    $0x1,%rbx
call   1040 <isdigit@plt>
test   %rax,%rax
je     1790 <main+0x5c0>
mov    %r15d,%eax
and    $0x7ffffffe,%eax
cmp    $0x6,%eax
jne    182f <main+0x65f>
mov    %ebx,%ebx
movsbl 0x0(%rbp,%rbx,1),%edi
call   1040 <isdigit@plt>
xor    %r12d,%r12d
test   %rax,%rax
je     1856 <main+0x686>
mov    0x0(%rbp,%rbx,1),%al
mov    %al,0x23(%rsp)
movsbl 0x1(%rbp,%rbx,1),%edi
call   1040 <isdigit@plt>
test   %rax,%rax
je     185a <main+0x68a>
mov    0x1(%rbp,%rbx,1),%al
mov    %al,0x24(%rsp)
movsbl 0x2(%rbp,%rbx,1),%edi
add    $0x2,%rbx
call   1040 <isdigit@plt>
test   %rax,%rax
je     1865 <main+0x695>
mov    0x0(%rbp,%rbx,1),%al
mov    %al,0x25(%rsp)
lea    0x19cd(%rip),%rdi
mov    $0x3,%esi
xor    %eax,%eax
call   1080 <printf@plt>
lea    0x1d3a(%rip),%rdi
call   1050 <puts@plt>
mov    $0x7,%ebp
jmp    170c <main+0x53c>
lea    0x191f(%rip),%rdi
mov    %r15d,%esi
xor    %eax,%eax
call   1080 <printf@plt>
lea    0x1d13(%rip),%rdi
call   1050 <puts@plt>
mov    $0x6,%ebp
jmp    170c <main+0x53c>
xor    %eax,%eax
jmp    186c <main+0x69c>
add    $0x1,%rbx
mov    $0x1,%eax
jmp    186a <main+0x69a>
mov    $0x2,%eax
mov    %ebx,%ebx
movb   $0x0,0x23(%rsp,%rax,1)
lea    0x23(%rsp),%rdi
call   10d0 <atoi@plt>
mov    %eax,%r15d
movsbl 0x0(%rbp,%rbx,1),%edi
call   1040 <isdigit@plt>
test   %rax,%rax
jne    18b4 <main+0x6e4>
mov    $0xfffffff7,%r12d
movsbl 0x1(%rbp,%rbx,1),%edi
add    $0x1,%rbx
call   1040 <isdigit@plt>
add    $0x1,%r12d
test   %rax,%rax
je     1893 <main+0x6c3>
cmp    $0xfffffffe,%r12d
jae    18db <main+0x70b>
add    $0x9,%r12d
lea    0x1988(%rip),%rdi
mov    %r12d,%esi
xor    %eax,%eax
call   1080 <printf@plt>
lea    0x1c8e(%rip),%rdi
call   1050 <puts@plt>
mov    $0x8,%ebp
jmp    170c <main+0x53c>
mov    %r15d,0x10(%rsp)
mov    %ebx,%r15d
movsbl 0x0(%rbp,%r15,1),%edi
call   1040 <isdigit@plt>
xor    %r12d,%r12d
test   %rax,%rax
je     195e <main+0x78e>
mov    0x0(%rbp,%r15,1),%al
mov    %al,0x20(%rsp)
movsbl 0x1(%rbp,%r15,1),%edi
call   1040 <isdigit@plt>
test   %rax,%rax
je     1962 <main+0x792>
mov    0x1(%rbp,%r15,1),%al
mov    %al,0x21(%rsp)
movsbl 0x2(%rbp,%r15,1),%edi
add    $0x2,%r15
call   1040 <isdigit@plt>
test   %rax,%rax
je     196d <main+0x79d>
mov    0x0(%rbp,%r15,1),%al
mov    %al,0x22(%rsp)
lea    0x198f(%rip),%rdi
mov    $0x3,%esi
xor    %eax,%eax
call   1080 <printf@plt>
lea    0x1c0b(%rip),%rdi
call   1050 <puts@plt>
mov    $0x9,%ebp
jmp    170c <main+0x53c>
xor    %eax,%eax
jmp    1975 <main+0x7a5>
add    $0x1,%r15
mov    $0x1,%eax
jmp    1972 <main+0x7a2>
mov    $0x2,%eax
mov    %r15,%rbx
movb   $0x0,0x20(%rsp,%rax,1)
lea    0x20(%rsp),%rdi
call   10d0 <atoi@plt>
mov    %eax,%r15d
movslq %ebx,%rbx
movsbl 0x0(%rbp,%rbx,1),%edi
call   1040 <isdigit@plt>
test   %rax,%rax
jne    19d7 <main+0x807>
mov    %r15d,0x2c(%rsp)
lea    (%rbx,%rbp,1),%r15
add    $0x1,%r15
shl    $0x20,%rbx
xor    %r12d,%r12d
movsbl (%r15,%r12,1),%edi
call   1040 <isdigit@plt>
movabs $0x100000000,%rcx
add    %rcx,%rbx
add    $0x1,%r12
test   %rax,%rax
je     19ad <main+0x7dd>
lea    -0xb(%r12),%eax
cmp    $0xfffffffd,%eax
ja     19fe <main+0x82e>
lea    0x1958(%rip),%rdi
mov    %r12d,%esi
xor    %eax,%eax
call   1080 <printf@plt>
lea    0x1b6b(%rip),%rdi
call   1050 <puts@plt>
mov    $0xa,%ebp
jmp    170c <main+0x53c>
sar    $0x20,%rbx
movsbl 0x0(%rbp,%rbx,1),%edi
call   1040 <isdigit@plt>
test   %rax,%rax
je     1a70 <main+0x8a0>
mov    0x0(%rbp,%rbx,1),%al
mov    %al,0x1d(%rsp)
movsbl 0x1(%rbp,%rbx,1),%edi
call   1040 <isdigit@plt>
test   %rax,%rax
je     1a7a <main+0x8aa>
mov    0x1(%rbp,%rbx,1),%al
mov    %al,0x1e(%rsp)
movsbl 0x2(%rbp,%rbx,1),%edi
call   1040 <isdigit@plt>
test   %rax,%rax
je     1a84 <main+0x8b4>
mov    0x2(%rbp,%rbx,1),%al
mov    %al,0x1f(%rsp)
lea    0x1973(%rip),%rdi
mov    $0x3,%esi
xor    %eax,%eax
call   1080 <printf@plt>
lea    0x1af9(%rip),%rdi
call   1050 <puts@plt>
mov    $0xb,%ebp
jmp    170c <main+0x53c>
movl   $0x0,0xc(%rsp)
jmp    1a8c <main+0x8bc>
movl   $0x1,0xc(%rsp)
jmp    1a8c <main+0x8bc>
movl   $0x2,0xc(%rsp)
mov    0xc(%rsp),%eax
movb   $0x0,0x1d(%rsp,%rax,1)
lea    0x1d(%rsp),%rdi
call   10d0 <atoi@plt>
mov    %eax,%r12d
lea    0x50(%rsp),%rdi
mov    $0x1fe,%esi
mov    %r13,%rdx
call   1090 <fgets@plt>
test   %rax,%rax
je     1ffb <main+0xe2b>
mov    %rax,%rbp
lea    0x19ed(%rip),%rdi
mov    %rax,%rsi
xor    %eax,%eax
call   1080 <printf@plt>
lea    0x1954(%rip),%rsi
lea    0x30(%rsp),%rdx
mov    %rbp,%rdi
call   10e0 <strptime@plt>
test   %eax,%eax
je     2005 <main+0xe35>
movl   $0xffffffff,0x30(%rsp)
ff
lea    0x30(%rsp),%rdi
call   10a0 <mktime@plt>
cmp    $0xffffffff,%eax
je     201b <main+0xe4b>
cltq
movslq %r12d,%rcx
imul   $0x3c,0x2c(%rsp),%edx
movslq %edx,%rdx
imul   $0xe10,0x10(%rsp),%esi
movslq %esi,%rsi
imul   $0x15180,%r14d,%edi
movslq %edi,%rdi
add    %rsi,%rdi
add    %rdx,%rdi
add    %rcx,%rdi
add    %rax,%rdi
mov    %rdi,0x40(%rsp)
lea    0x40(%rsp),%rdi
call   10c0 <gmtime@plt>
mov    %eax,%edi
call   1070 <asctime@plt>
lea    0x190c(%rip),%rdi
xor    %ebp,%ebp
mov    %rax,%rsi
xor    %eax,%eax
call   1080 <printf@plt>
lea    0x50(%rsp),%rdi
mov    $0x1fe,%esi
mov    %r13,%rdx
call   1090 <fgets@plt>
test   %rax,%rax
je     170c <main+0x53c>
mov    %rax,%r14
lea    0x1933(%rip),%rbx
lea    0x1929(%rip),%r15
lea    0x50(%rsp),%r12
mov    %r14,%rdi
mov    %rbx,%rsi
call   10f0 <strstr@plt>
test   %rax,%rax
jne    1bcc <main+0x9fc>
xor    %ebp,%ebp
mov    %r15,%rdi
mov    %r14,%rsi
xor    %eax,%eax
call   1080 <printf@plt>
mov    %r12,%rdi
mov    $0x1fe,%esi
mov    %r13,%rdx
call   1090 <fgets@plt>
mov    %rax,%r14
test   %rax,%rax
jne    1b90 <main+0x9c0>
jmp    170c <main+0x53c>
mov    %r14,0x10(%rsp)
mov    %r14,%rdi
call   1060 <strlen@plt>
test   %eax,%eax
js     1c35 <main+0xa65>
je     2033 <main+0xe63>
mov    %eax,%ecx
neg    %ecx
mov    %eax,%edx
add    $0xffffffff,%edx
add    0x10(%rsp),%rdx
jmp    1c02 <main+0xa32>
add    $0xffffffffffffffff,%rdx
add    $0xffffffff,%eax
inc    %ecx
je     2033 <main+0xe63>
movzbl (%rdx),%ebx
cmp    $0x20,%bl
je     1bf3 <main+0xa23>
cmp    $0xa,%bl
je     1bf3 <main+0xa23>
neg    %ecx
js     1c35 <main+0xa65>
jae    205c <main+0xe8c>
lea    -0x1(%rax),%ecx
mov    0x10(%rsp),%rdx
cmpb   $0x20,(%rdx,%rcx,1)
je     1c31 <main+0xa61>
add    $0xffffffff,%eax
jne    1c19 <main+0xa49>
jmp    205c <main+0xe8c>
mov    %eax,0xc(%rsp)
movslq 0xc(%rsp),%r12
mov    0x10(%rsp),%rax
movsbl (%rax,%r12,1),%edi
call   1040 <isdigit@plt>
test   %rax,%rax
je     1c90 <main+0xac0>
mov    0x10(%rsp),%rax
lea    (%rax,%r12,1),%rbp
add    $0x1,%rbp
shl    $0x20,%r12
xor    %ebx,%ebx
movzbl -0x1(%rbp,%rbx,1),%eax
mov    %al,0x26(%rsp,%rbx,1)
movsbl 0x0(%rbp,%rbx,1),%edi
add    $0x1,%rbx
call   1040 <isdigit@plt>
movabs $0x100000000,%rcx
add    %rcx,%r12
test   %rax,%rax
jne    1c61 <main+0xa91>
sar    $0x20,%r12
jmp    1c92 <main+0xac2>
xor    %ebx,%ebx
mov    %ebx,%eax
movb   $0x0,0x26(%rsp,%rax,1)
lea    0x26(%rsp),%rdi
call   10d0 <atoi@plt>
mov    %eax,0x2c(%rsp)
mov    %r12,%rbp
shl    $0x20,%rbp
movabs $0xffffffff00000000,%rax
ff ff ff
add    %rax,%rbp
mov    0x10(%rsp),%rax
lea    (%rax,%r12,1),%rbx
movabs $0x100000000,%r15
mov    %r12d,%r14d
movsbl (%rbx),%edi
call   1040 <isdigit@plt>
add    %r15,%rbp
add    $0x1,%rbx
lea    0x1(%r14),%r12d
test   %rax,%rax
je     1cce <main+0xafe>
sar    $0x20,%rbp
mov    0x10(%rsp),%rax
movsbl (%rax,%rbp,1),%edi
call   1040 <isdigit@plt>
test   %rax,%rax
je     1d46 <main+0xb76>
movslq %r14d,%rbp
mov    0x10(%rsp),%rax
lea    (%rax,%rbp,1),%r14
add    $0x1,%r14
shl    $0x20,%rbp
xor    %ebx,%ebx
movzbl -0x1(%r14,%rbx,1),%eax
mov    %al,0x23(%rsp,%rbx,1)
movsbl (%r14,%rbx,1),%edi
add    $0x1,%rbx
call   1040 <isdigit@plt>
movabs $0x100000000,%rcx
add    %rcx,%rbp
test   %rax,%rax
jne    1d16 <main+0xb46>
sar    $0x20,%rbp
jmp    1d48 <main+0xb78>
xor    %ebx,%ebx
mov    %ebx,%eax
movb   $0x0,0x23(%rsp,%rax,1)
lea    0x23(%rsp),%rdi
call   10d0 <atoi@plt>
mov    %eax,0xc(%rsp)
mov    %rbp,%r14
shl    $0x20,%r14
movabs $0xffffffff00000000,%rax
ff ff ff
add    %rax,%r14
mov    0x10(%rsp),%rax
lea    (%rax,%rbp,1),%rbx
movabs $0x100000000,%r15
mov    %ebp,%r12d
movsbl (%rbx),%edi
call   1040 <isdigit@plt>
add    %r15,%r14
add    $0x1,%rbx
lea    0x1(%r12),%ebp
test   %rax,%rax
je     1d84 <main+0xbb4>
sar    $0x20,%r14
mov    0x10(%rsp),%rax
movsbl (%rax,%r14,1),%edi
call   1040 <isdigit@plt>
test   %rax,%rax
je     1dfd <main+0xc2d>
movslq %r12d,%r14
mov    0x10(%rsp),%rax
lea    (%rax,%r14,1),%rbp
add    $0x1,%rbp
shl    $0x20,%r14
xor    %ebx,%ebx
movzbl -0x1(%rbp,%rbx,1),%eax
mov    %al,0x20(%rsp,%rbx,1)
movsbl 0x0(%rbp,%rbx,1),%edi
add    $0x1,%rbx
call   1040 <isdigit@plt>
movabs $0x100000000,%rcx
add    %rcx,%r14
test   %rax,%rax
jne    1dce <main+0xbfe>
sar    $0x20,%r14
jmp    1dff <main+0xc2f>
xor    %ebx,%ebx
mov    %ebx,%eax
movb   $0x0,0x20(%rsp,%rax,1)
lea    0x20(%rsp),%rdi
call   10d0 <atoi@plt>
mov    %eax,0x4c(%rsp)
mov    %r14,%r12
shl    $0x20,%r12
movabs $0xffffffff00000000,%rax
ff ff ff
add    %rax,%r12
mov    0x10(%rsp),%rax
lea    (%rax,%r14,1),%rbp
movabs $0x100000000,%r15
mov    %r14d,%ebx
movsbl 0x0(%rbp),%edi
call   1040 <isdigit@plt>
add    %r15,%r12
add    $0x1,%rbp
lea    0x1(%rbx),%r14d
test   %rax,%rax
je     1e3b <main+0xc6b>
sar    $0x20,%r12
mov    0x10(%rsp),%rax
movsbl (%rax,%r12,1),%edi
call   1040 <isdigit@plt>
test   %rax,%rax
je     1eb4 <main+0xce4>
movslq %ebx,%r12
mov    0x10(%rsp),%rax
lea    (%rax,%r12,1),%rbp
add    $0x1,%rbp
shl    $0x20,%r12
xor    %ebx,%ebx
movzbl -0x1(%rbp,%rbx,1),%eax
mov    %al,0x1d(%rsp,%rbx,1)
movsbl 0x0(%rbp,%rbx,1),%edi
add    $0x1,%rbx
call   1040 <isdigit@plt>
movabs $0x100000000,%rcx
add    %rcx,%r12
test   %rax,%rax
jne    1e85 <main+0xcb5>
sar    $0x20,%r12
jmp    1eb6 <main+0xce6>
xor    %ebx,%ebx
mov    %ebx,%eax
movb   $0x0,0x1d(%rsp,%rax,1)
lea    0x1d(%rsp),%rdi
call   10d0 <atoi@plt>
mov    %eax,%ebp
add    0x10(%rsp),%r12
movsbl (%r12),%edi
call   1040 <isdigit@plt>
add    $0x1,%r12
test   %rax,%rax
je     1ece <main+0xcfe>
mov    0x40(%rsp),%rax
movslq %ebp,%rcx
imul   $0x3c,0x4c(%rsp),%edx
movslq %edx,%rdx
imul   $0xe10,0xc(%rsp),%esi
movslq %esi,%rsi
imul   $0x15180,0x2c(%rsp),%edi
movslq %edi,%rdi
add    %rsi,%rdi
add    %rdx,%rdi
add    %rcx,%rdi
sub    %rdi,%rax
mov    %rax,0x38(%rsp)
mov    0x10(%rsp),%rbx
mov    %rbx,%rdi
call   1060 <strlen@plt>
cltq
movl   $0x6e697320,-0x1(%rax,%rbx,1)
6e
movw   $0x6563,0x3(%rax,%rbx,1)
lea    0x6(%rax),%ecx
mov    %ecx,0xc(%rsp)
movb   $0x20,0x5(%rax,%rbx,1)
lea    0x38(%rsp),%rdi
call   10c0 <gmtime@plt>
mov    %eax,%edi
call   1070 <asctime@plt>
mov    %rax,%rdi
call   1060 <strlen@plt>
test   %eax,%eax
jle    1fad <main+0xddd>
movslq 0xc(%rsp),%r14
add    0x10(%rsp),%r14
xor    %ebp,%ebp
lea    0x38(%rsp),%rbx
mov    %rbx,%rdi
call   10c0 <gmtime@plt>
mov    %eax,%edi
call   1070 <asctime@plt>
movzbl (%rax,%rbp,1),%eax
mov    %al,(%r14,%rbp,1)
add    $0x1,%rbp
mov    %rbx,%rdi
call   10c0 <gmtime@plt>
mov    %eax,%edi
call   1070 <asctime@plt>
mov    %rax,%rdi
call   1060 <strlen@plt>
cltq
cmp    %rax,%rbp
jl     1f6b <main+0xd9b>
add    %ebp,0xc(%rsp)
movslq 0xc(%rsp),%rax
mov    0x10(%rsp),%rsi
movb   $0x0,(%rsi,%rax,1)
xor    %ebp,%ebp
lea    0x14f0(%rip),%r15
mov    %r15,%rdi
xor    %eax,%eax
call   1080 <printf@plt>
lea    0x50(%rsp),%r12
mov    %r12,%rdi
mov    $0x1fe,%esi
mov    %r13,%rdx
call   1090 <fgets@plt>
mov    %rax,%r14
test   %rax,%rax
lea    0x14c7(%rip),%rbx
jne    1b90 <main+0x9c0>
jmp    170c <main+0x53c>
mov    $0xc,%ebp
jmp    170c <main+0x53c>
lea    0x153b(%rip),%rdi
call   1050 <puts@plt>
mov    $0xd,%ebp
jmp    170c <main+0x53c>
lea    0x142e(%rip),%rdi
xor    %eax,%eax
call   1080 <printf@plt>
mov    $0xe,%ebp
jmp    170c <main+0x53c>
lea    0x1480(%rip),%rdi
mov    0x10(%rsp),%rsi
xor    %eax,%eax
call   1080 <printf@plt>
lea    0x150d(%rip),%rdi
call   1050 <puts@plt>
mov    $0x10,%ebp
jmp    170c <main+0x53c>
lea    0x149f(%rip),%rdi
jmp    203a <main+0xe6a>

LLVM IR (-O0):
%struct.tm = type { i32 }
@.str = [2 x i8] c"\0A\00"
@.str.1 = [35 x i8] c" Usage: %s <input text file 1>\0A\00"
@.str.2 = [110 x i8] c"This C program takes as INPUT(in a file) the output from an eSeries \22show version\22 CLI command, for example:\0A\00"
@.str.3 = [38 x i8] c"Juniper Edge Routing Switch ERX-1400\0A\00"
@.str.4 = [70 x i8] c"Copyright (c) 1999-2008 Juniper Networks, Inc. All rights reserved.\0A\00"
@.str.5 = [33 x i8] c"System Release: 8-2-3p0-5-1.rel\0A\00"
@.str.6 = [78 x i8] c" Version: 8.2.3 patch-0.5.1 [BuildId 10739] (March 24, 2009 10:50)\0A\00"
@.str.7 = [64 x i8] c"System running for: 553 days, 16 hours, 13 minutes, 20 seconds\0A\00"
@.str.8 = [46 x i8] c" (since TUE SEP 01 2009 05:21:30 UTC)\0A\00"
@.str.9 = [77 x i8] c"slot state type admin spare running release slot uptime \0A\00"
@.str.10 = [77 x i8] c"---- ------- ---------------- ------- ----- --------------- ---------------\0A\00"
@.str.11 = [77 x i8] c"0 standby OC3/OC12/DS3-ATM enabled spare 8-2-3p0-5-1.rel --- \0A\00"
@.str.12 = [77 x i8] c"1 online OC3-4A enabled --- 8-2-3p0-5-1.rel 553d16h:01m:15s\0A\00"
@.str.13 = [77 x i8] c"2 online OC3-4A enabled --- 8-2-3p0-5-1.rel 553d16h:01m:14s\0A\00"
@.str.14 = [77 x i8] c"3 --- --- --- --- --- --- \0A\00"
@.str.15 = [77 x i8] c"4 online OC3-4A enabled --- 8-2-3p0-5-1.rel 553d16h:01m:12s\0A\00"
@.str.16 = [77 x i8] c"5 online OC3-4A enabled --- 8-2-3p0-5-1.rel 553d16h:01m:10s\0A\00"
@.str.17 = [77 x i8] c"6 online SRP-10Ge enabled --- 8-2-3p0-5-1.rel 553d16h:10m:27s\0A\00"
@.str.18 = [77 x i8] c"7 standby SRP-10Ge enabled --- 8-2-3p0-5-1.rel --- \0A\00"
@.str.19 = [77 x i8] c"8 --- --- --- --- --- --- \0A\00"
@.str.20 = [77 x i8] c"9 online GE enabled --- 8-2-3p0-5-1.rel 553d16h:02m:33s\0A\00"
@.str.21 = [77 x i8] c"10 --- --- --- --- --- --- \0A\00"
@.str.22 = [77 x i8] c"11 --- --- --- --- --- --- \0A\00"
@.str.23 = [77 x i8] c"12 online GE enabled --- 8-2-3p0-5-1.rel 553d16h:02m:36s\0A\00"
@.str.24 = [77 x i8] c"13 --- --- --- --- --- --- \0A\00"
@.str.25 = [110 x i8] c"--and provides as OUTPUT(to the monitor) the time that this eSeries \22show version\22 CLI command was executed;\0A\00"
@.str.26 = [104 x i8] c"ALSO, it converts the slot uptimes to the actual times the slots came up, in this example it would be:\0A\00"
@.str.27 = [102 x i8] c"Time this \22show version\22 CLI command was executed: Tue Mar 8 21:34:50 2011\0A\00"
@.str.28 = [102 x i8] c"1 online OC3-4A enabled --- 8-2-3p0-5-1.rel 553d16h:01m:15s Tue Sep 1 05:33:35 2009\0A\00"
@.str.29 = [102 x i8] c"2 online OC3-4A enabled --- 8-2-3p0-5-1.rel 553d16h:01m:14s Tue Sep 1 05:33:36 2009\0A\00"
@.str.30 = [102 x i8] c"4 online OC3-4A enabled --- 8-2-3p0-5-1.rel 553d16h:01m:12s Tue Sep 1 05:33:38 2009\0A\00"
@.str.31 = [102 x i8] c"5 online OC3-4A enabled --- 8-2-3p0-5-1.rel 553d16h:01m:10s Tue Sep 1 05:33:40 2009\0A\00"
@.str.32 = [102 x i8] c"6 online SRP-10Ge enabled --- 8-2-3p0-5-1.rel 553d16h:10m:27s Tue Sep 1 05:24:23 2009\0A\00"
@.str.33 = [102 x i8] c"9 online GE enabled --- 8-2-3p0-5-1.rel 553d16h:02m:33s Tue Sep 1 05:32:17 2009\0A\00"
@.str.34 = [102 x i8] c"12 online GE enabled --- 8-2-3p0-5-1.rel 553d16h:02m:36s Tue Sep 1 05:32:14 2009\0A\00"
@.str.35 = [10 x i8] c"Caveats:\0A\00"
@.str.36 = [32 x i8] c"0 - input format must be exact\0A\00"
@.str.37 = [80 x i8] c"1 - output is in local time, ASSUMED to be UTC (at least, that is what I like)\0A\00"
@.str.38 = [93 x i8] c"2 - the eSeries may add trailing spaces, which breaks this code. An example workaround is:\0A\00"
@.str.39 = [58 x i8] c" cat inputFile | sed 's/ *$//' > inputFileCleaned\0A\00"
@.str.40 = [65 x i8] c"Written by Jonathan Natale for Juniper Networks on 11-Mar-2011.\0A\00"
@.str.41 = [2 x i8] c"r\00"
@.str.42 = [32 x i8] c"Sorry, unable to open %s file.\0A\00"
@.str.43 = [32 x i8] c"Please try again. Exiting ...\0A\00"
@.str.44 = [46 x i8] c"Sorry, unexpected NULL line read in %s file.\0A\00"
@.str.45 = [21 x i8] c"System running for: \00"
@.str.46 = [3 x i8] c"%s\00"
@.str.47 = [101 x i8] c"Sorry, wrong number of non-numeric characters before a number, in first line (got %d, expected 20).\0A\00"
@.str.48 = [104 x i8] c"Sorry, wrong number of digits in the number of days, in first line (got %d, expected between 1 and 5).\0A\00"
@.str.49 = [133 x i8] c"Sorry, wrong number of characters after the number of days and before the number of hours, in first line (got %d, expected 6 or 7).\0A\00"
@.str.50 = [105 x i8] c"Sorry, wrong number of digits in the number of hours, in first line (got %d, expected between 1 and 2).\0A\00"
@.str.51 = [136 x i8] c"Sorry, wrong number of characters after the number of hours and before the number of minutes, in first line (got %d, expected 7 or 8).\0A\00"
@.str.52 = [107 x i8] c"Sorry, wrong number of digits in the number of minutes, in first line (got %d, expected between 1 and 2).\0A\00"
@.str.53 = [139 x i8] c"Sorry, wrong number of characters after the number of minutes and before the number of seconds, in first line (got %d, expected 9 or 10).\0A\00"
@.str.54 = [107 x i8] c"Sorry, wrong number of digits in the number of seconds, in first line (got %d, expected between 1 and 2).\0A\00"
@.str.55 = [36 x i8] c" (since %a %b %d %Y %T UTC)\00"
@.str.56 = [20 x i8] c"strptime() failed!\0A\00"
@.str.57 = [15 x i8] c"mktime failed!\00"
@.str.58 = [88 x i8] c"Time this \22show version\22 CLI command was executed: %s\00"
@.str.59 = [3 x i8] c"m:\00"
@.str.60 = [72 x i8] c"Sorry, unexpectedly, a nonspace was not found in the input line: <%s>.\0A\00"
@.str.61 = [69 x i8] c"Sorry, unexpectedly, a space was not found in the input line: <%s>.\0A\00"
define i32 @main(i32 %0, i8** %1) {
%3 = alloca i32
%4 = alloca i32
%5 = alloca i8**
%6 = alloca i8*
%7 = alloca i32
%8 = alloca i32
%9 = alloca i32
%10 = alloca i32
%11 = alloca %struct.tm
%12 = alloca i8*
%13 = alloca [512 x i8]
%14 = alloca i64
%15 = alloca i64
%16 = alloca i32
%17 = alloca i32
%18 = alloca i32
%19 = alloca i32
%20 = alloca [6 x i8]
%21 = alloca [3 x i8]
%22 = alloca [3 x i8]
%23 = alloca [3 x i8]
store i32 0, i32* %3
store i32 %0, i32* %4
store i8** %1, i8*** %5
store i64 1234567890, i64* %14
store i64 313131313, i64* %15
store i32 0, i32* %16
store i32 0, i32* %17
store i32 0, i32* %18
store i32 0, i32* %19
%24 = load i32, i32* %4
%25 = icmp ne i32 %24, 2
br i1 %25, label %26, label %98
26: ; preds = %2
%27 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0))
%28 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0))
%29 = load i8**, i8*** %5
%30 = getelementptr inbounds i8*, i8** %29, i64 0
%31 = load i8*, i8** %30
%32 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([35 x i8], [35 x i8]* @.str.1, i64 0, i64 0), i8* %31)
%33 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0))
%34 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([110 x i8], [110 x i8]* @.str.2, i64 0, i64 0))
%35 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0))
%36 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([38 x i8], [38 x i8]* @.str.3, i64 0, i64 0))
%37 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([70 x i8], [70 x i8]* @.str.4, i64 0, i64 0))
%38 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([33 x i8], [33 x i8]* @.str.5, i64 0, i64 0))
%39 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([78 x i8], [78 x i8]* @.str.6, i64 0, i64 0))
%40 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([64 x i8], [64 x i8]* @.str.7, i64 0, i64 0))
%41 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([46 x i8], [46 x i8]* @.str.8, i64 0, i64 0))
%42 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0))
%43 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([77 x i8], [77 x i8]* @.str.9, i64 0, i64 0))
%44 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([77 x i8], [77 x i8]* @.str.10, i64 0, i64 0))
%45 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([77 x i8], [77 x i8]* @.str.11, i64 0, i64 0))
%46 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([77 x i8], [77 x i8]* @.str.12, i64 0, i64 0))
%47 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([77 x i8], [77 x i8]* @.str.13, i64 0, i64 0))
%48 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([77 x i8], [77 x i8]* @.str.14, i64 0, i64 0))
%49 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([77 x i8], [77 x i8]* @.str.15, i64 0, i64 0))
%50 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([77 x i8], [77 x i8]* @.str.16, i64 0, i64 0))
%51 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([77 x i8], [77 x i8]* @.str.17, i64 0, i64 0))
%52 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([77 x i8], [77 x i8]* @.str.18, i64 0, i64 0))
%53 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([77 x i8], [77 x i8]* @.str.19, i64 0, i64 0))
%54 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([77 x i8], [77 x i8]* @.str.20, i64 0, i64 0))
%55 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([77 x i8], [77 x i8]* @.str.21, i64 0, i64 0))
%56 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([77 x i8], [77 x i8]* @.str.22, i64 0, i64 0))
%57 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([77 x i8], [77 x i8]* @.str.23, i64 0, i64 0))
%58 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([77 x i8], [77 x i8]* @.str.24, i64 0, i64 0))
%59 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0))
%60 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0))
%61 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([110 x i8], [110 x i8]* @.str.25, i64 0, i64 0))
%62 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([104 x i8], [104 x i8]* @.str.26, i64 0, i64 0))
%63 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0))
%64 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([38 x i8], [38 x i8]* @.str.3, i64 0, i64 0))
%65 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([70 x i8], [70 x i8]* @.str.4, i64 0, i64 0))
%66 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([33 x i8], [33 x i8]* @.str.5, i64 0, i64 0))
%67 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([78 x i8], [78 x i8]* @.str.6, i64 0, i64 0))
%68 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([64 x i8], [64 x i8]* @.str.7, i64 0, i64 0))
%69 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([46 x i8], [46 x i8]* @.str.8, i64 0, i64 0))
%70 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([102 x i8], [102 x i8]* @.str.27, i64 0, i64 0))
%71 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0))
%72 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([77 x i8], [77 x i8]* @.str.9, i64 0, i64 0))
%73 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([77 x i8], [77 x i8]* @.str.10, i64 0, i64 0))
%74 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([77 x i8], [77 x i8]* @.str.11, i64 0, i64 0))
%75 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([102 x i8], [102 x i8]* @.str.28, i64 0, i64 0))
%76 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([102 x i8], [102 x i8]* @.str.29, i64 0, i64 0))
%77 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([77 x i8], [77 x i8]* @.str.14, i64 0, i64 0))
%78 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([102 x i8], [102 x i8]* @.str.30, i64 0, i64 0))
%79 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([102 x i8], [102 x i8]* @.str.31, i64 0, i64 0))
%80 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([102 x i8], [102 x i8]* @.str.32, i64 0, i64 0))
%81 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([77 x i8], [77 x i8]* @.str.18, i64 0, i64 0))
%82 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([77 x i8], [77 x i8]* @.str.19, i64 0, i64 0))
%83 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([102 x i8], [102 x i8]* @.str.33, i64 0, i64 0))
%84 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([77 x i8], [77 x i8]* @.str.21, i64 0, i64 0))
%85 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([77 x i8], [77 x i8]* @.str.22, i64 0, i64 0))
%86 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([102 x i8], [102 x i8]* @.str.34, i64 0, i64 0))
%87 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([77 x i8], [77 x i8]* @.str.24, i64 0, i64 0))
%88 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0))
%89 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0))
%90 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.35, i64 0, i64 0))
%91 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([32 x i8], [32 x i8]* @.str.36, i64 0, i64 0))
%92 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([80 x i8], [80 x i8]* @.str.37, i64 0, i64 0))
%93 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([93 x i8], [93 x i8]* @.str.38, i64 0, i64 0))
%94 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([58 x i8], [58 x i8]* @.str.39, i64 0, i64 0))
%95 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0))
%96 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([65 x i8], [65 x i8]* @.str.40, i64 0, i64 0))
%97 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0))
store i32 1, i32* %3
br label %728
98: ; preds = %2
%99 = load i8**, i8*** %5
%100 = getelementptr inbounds i8*, i8** %99, i64 1
%101 = load i8*, i8** %100
%102 = call i8* @fopen(i8* %101, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.41, i64 0, i64 0))
store i8* %102, i8** %6
%103 = icmp eq i8* %102, null
br i1 %103, label %104, label %110
104: ; preds = %98
%105 = load i8**, i8*** %5
%106 = getelementptr inbounds i8*, i8** %105, i64 1
%107 = load i8*, i8** %106
%108 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([32 x i8], [32 x i8]* @.str.42, i64 0, i64 0), i8* %107)
%109 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([32 x i8], [32 x i8]* @.str.43, i64 0, i64 0))
store i32 2, i32* %3
br label %728
110: ; preds = %98
br label %111
111: ; preds = %110, %128
%112 = getelementptr inbounds [512 x i8], [512 x i8]* %13, i64 0, i64 0
%113 = load i8*, i8** %6
%114 = call i8* @fgets(i8* %112, i32 510, i8* %113)
store i8* %114, i8** %12
%115 = icmp eq i8* %114, null
br i1 %115, label %116, label %120
116: ; preds = %111
%117 = load i8*, i8** %6
%118 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([46 x i8], [46 x i8]* @.str.44, i64 0, i64 0), i8* %117)
%119 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([32 x i8], [32 x i8]* @.str.43, i64 0, i64 0))
store i32 3, i32* %3
br label %728
120: ; preds = %111
%121 = load i8*, i8** %12
%122 = call i32* @strstr(i8* %121, i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.45, i64 0, i64 0))
%123 = icmp eq i32* %122, null
br i1 %123, label %124, label %127
124: ; preds = %120
%125 = load i8*, i8** %12
%126 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.46, i64 0, i64 0), i8* %125)
br label %128
127: ; preds = %120
br label %129
128: ; preds = %124
br label %111
129: ; preds = %127
%130 = load i8*, i8** %12
%131 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.46, i64 0, i64 0), i8* %130)
store i32 0, i32* %7
store i32 0, i32* %8
br label %132
132: ; preds = %141, %129
%133 = load i8*, i8** %12
%134 = load i32, i32* %7
%135 = sext i32 %134 to i64
%136 = getelementptr inbounds i8, i8* %133, i64 %135
%137 = load i8, i8* %136
%138 = call i64 @isdigit(i8 signext %137)
%139 = icmp ne i64 %138, 0
%140 = xor i1 %139, true
br i1 %140, label %141, label %146
141: ; preds = %132
%142 = load i32, i32* %7
%143 = add nsw i32 %142, 1
store i32 %143, i32* %7
%144 = load i32, i32* %8
%145 = add nsw i32 %144, 1
store i32 %145, i32* %8
br label %132
146: ; preds = %132
%147 = load i32, i32* %8
%148 = icmp ne i32 %147, 20
br i1 %148, label %149, label %153
149: ; preds = %146
%150 = load i32, i32* %8
%151 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([101 x i8], [101 x i8]* @.str.47, i64 0, i64 0), i32 %150)
%152 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([32 x i8], [32 x i8]* @.str.43, i64 0, i64 0))
store i32 4, i32* %3
br label %728
153: ; preds = %146
store i32 0, i32* %8
br label %154
154: ; preds = %178, %153
%155 = load i8*, i8** %12
%156 = load i32, i32* %7
%157 = sext i32 %156 to i64
%158 = getelementptr inbounds i8, i8* %155, i64 %157
%159 = load i8, i8* %158
%160 = call i64 @isdigit(i8 signext %159)
%161 = icmp ne i64 %160, 0
br i1 %161, label %162, label %183
162: ; preds = %154
%163 = load i8*, i8** %12
%164 = load i32, i32* %7
%165 = sext i32 %164 to i64
%166 = getelementptr inbounds i8, i8* %163, i64 %165
%167 = load i8, i8* %166
%168 = load i32, i32* %8
%169 = sext i32 %168 to i64
%170 = getelementptr inbounds [6 x i8], [6 x i8]* %20, i64 0, i64 %169
store i8 %167, i8* %170
%171 = load i32, i32* %8
%172 = icmp sge i32 %171, 5
br i1 %172, label %173, label %178
173: ; preds = %162
%174 = load i32, i32* %8
%175 = add nsw i32 %174, 1
%176 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([104 x i8], [104 x i8]* @.str.48, i64 0, i64 0), i32 %175)
%177 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([32 x i8], [32 x i8]* @.str.43, i64 0, i64 0))
store i32 5, i32* %3
br label %728
178: ; preds = %162
%179 = load i32, i32* %7
%180 = add nsw i32 %179, 1
store i32 %180, i32* %7
%181 = load i32, i32* %8
%182 = add nsw i32 %181, 1
store i32 %182, i32* %8
br label %154
183: ; preds = %154
%184 = load i32, i32* %8
%185 = sext i32 %184 to i64
%186 = getelementptr inbounds [6 x i8], [6 x i8]* %20, i64 0, i64 %185
store i8 0, i8* %186
%187 = getelementptr inbounds [6 x i8], [6 x i8]* %20, i64 0, i64 0
%188 = call i32 @atoi(i8* %187)
store i32 %188, i32* %16
store i32 0, i32* %8
br label %189
189: ; preds = %198, %183
%190 = load i8*, i8** %12
%191 = load i32, i32* %7
%192 = sext i32 %191 to i64
%193 = getelementptr inbounds i8, i8* %190, i64 %192
%194 = load i8, i8* %193
%195 = call i64 @isdigit(i8 signext %194)
%196 = icmp ne i64 %195, 0
%197 = xor i1 %196, true
br i1 %197, label %198, label %203
198: ; preds = %189
%199 = load i32, i32* %7
%200 = add nsw i32 %199, 1
store i32 %200, i32* %7
%201 = load i32, i32* %8
%202 = add nsw i32 %201, 1
store i32 %202, i32* %8
br label %189
203: ; preds = %189
%204 = load i32, i32* %8
%205 = icmp ne i32 %204, 6
br i1 %205, label %206, label %213
206: ; preds = %203
%207 = load i32, i32* %8
%208 = icmp ne i32 %207, 7
br i1 %208, label %209, label %213
209: ; preds = %206
%210 = load i32, i32* %8
%211 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([133 x i8], [133 x i8]* @.str.49, i64 0, i64 0), i32 %210)
%212 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([32 x i8], [32 x i8]* @.str.43, i64 0, i64 0))
store i32 6, i32* %3
br label %728
213: ; preds = %206, %203
store i32 0, i32* %8
br label %214
214: ; preds = %238, %213
%215 = load i8*, i8** %12
%216 = load i32, i32* %7
%217 = sext i32 %216 to i64
%218 = getelementptr inbounds i8, i8* %215, i64 %217
%219 = load i8, i8* %218
%220 = call i64 @isdigit(i8 signext %219)
%221 = icmp ne i64 %220, 0
br i1 %221, label %222, label %243
222: ; preds = %214
%223 = load i8*, i8** %12
%224 = load i32, i32* %7
%225 = sext i32 %224 to i64
%226 = getelementptr inbounds i8, i8* %223, i64 %225
%227 = load i8, i8* %226
%228 = load i32, i32* %8
%229 = sext i32 %228 to i64
%230 = getelementptr inbounds [3 x i8], [3 x i8]* %21, i64 0, i64 %229
store i8 %227, i8* %230
%231 = load i32, i32* %8
%232 = icmp sge i32 %231, 2
br i1 %232, label %233, label %238
233: ; preds = %222
%234 = load i32, i32* %8
%235 = add nsw i32 %234, 1
%236 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([105 x i8], [105 x i8]* @.str.50, i64 0, i64 0), i32 %235)
%237 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([32 x i8], [32 x i8]* @.str.43, i64 0, i64 0))
store i32 7, i32* %3
br label %728
238: ; preds = %222
%239 = load i32, i32* %7
%240 = add nsw i32 %239, 1
store i32 %240, i32* %7
%241 = load i32, i32* %8
%242 = add nsw i32 %241, 1
store i32 %242, i32* %8
br label %214
243: ; preds = %214
%244 = load i32, i32* %8
%245 = sext i32 %244 to i64
%246 = getelementptr inbounds [3 x i8], [3 x i8]* %21, i64 0, i64 %245
store i8 0, i8* %246
%247 = getelementptr inbounds [3 x i8], [3 x i8]* %21, i64 0, i64 0
%248 = call i32 @atoi(i8* %247)
store i32 %248, i32* %17
store i32 0, i32* %8
br label %249
249: ; preds = %258, %243
%250 = load i8*, i8** %12
%251 = load i32, i32* %7
%252 = sext i32 %251 to i64
%253 = getelementptr inbounds i8, i8* %250, i64 %252
%254 = load i8, i8* %253
%255 = call i64 @isdigit(i8 signext %254)
%256 = icmp ne i64 %255, 0
%257 = xor i1 %256, true
br i1 %257, label %258, label %263
258: ; preds = %249
%259 = load i32, i32* %7
%260 = add nsw i32 %259, 1
store i32 %260, i32* %7
%261 = load i32, i32* %8
%262 = add nsw i32 %261, 1
store i32 %262, i32* %8
br label %249
263: ; preds = %249
%264 = load i32, i32* %8
%265 = icmp ne i32 %264, 7
br i1 %265, label %266, label %273
266: ; preds = %263
%267 = load i32, i32* %8
%268 = icmp ne i32 %267, 8
br i1 %268, label %269, label %273
269: ; preds = %266
%270 = load i32, i32* %8
%271 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([136 x i8], [136 x i8]* @.str.51, i64 0, i64 0), i32 %270)
%272 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([32 x i8], [32 x i8]* @.str.43, i64 0, i64 0))
store i32 8, i32* %3
br label %728
273: ; preds = %266, %263
store i32 0, i32* %8
br label %274
274: ; preds = %298, %273
%275 = load i8*, i8** %12
%276 = load i32, i32* %7
%277 = sext i32 %276 to i64
%278 = getelementptr inbounds i8, i8* %275, i64 %277
%279 = load i8, i8* %278
%280 = call i64 @isdigit(i8 signext %279)
%281 = icmp ne i64 %280, 0
br i1 %281, label %282, label %303
282: ; preds = %274
%283 = load i8*, i8** %12
%284 = load i32, i32* %7
%285 = sext i32 %284 to i64
%286 = getelementptr inbounds i8, i8* %283, i64 %285
%287 = load i8, i8* %286
%288 = load i32, i32* %8
%289 = sext i32 %288 to i64
%290 = getelementptr inbounds [3 x i8], [3 x i8]* %22, i64 0, i64 %289
store i8 %287, i8* %290
%291 = load i32, i32* %8
%292 = icmp sge i32 %291, 2
br i1 %292, label %293, label %298
293: ; preds = %282
%294 = load i32, i32* %8
%295 = add nsw i32 %294, 1
%296 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([107 x i8], [107 x i8]* @.str.52, i64 0, i64 0), i32 %295)
%297 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([32 x i8], [32 x i8]* @.str.43, i64 0, i64 0))
store i32 9, i32* %3
br label %728
298: ; preds = %282
%299 = load i32, i32* %7
%300 = add nsw i32 %299, 1
store i32 %300, i32* %7
%301 = load i32, i32* %8
%302 = add nsw i32 %301, 1
store i32 %302, i32* %8
br label %274
303: ; preds = %274
%304 = load i32, i32* %8
%305 = sext i32 %304 to i64
%306 = getelementptr inbounds [3 x i8], [3 x i8]* %22, i64 0, i64 %305
store i8 0, i8* %306
%307 = getelementptr inbounds [3 x i8], [3 x i8]* %22, i64 0, i64 0
%308 = call i32 @atoi(i8* %307)
store i32 %308, i32* %18
store i32 0, i32* %8
br label %309
309: ; preds = %318, %303
%310 = load i8*, i8** %12
%311 = load i32, i32* %7
%312 = sext i32 %311 to i64
%313 = getelementptr inbounds i8, i8* %310, i64 %312
%314 = load i8, i8* %313
%315 = call i64 @isdigit(i8 signext %314)
%316 = icmp ne i64 %315, 0
%317 = xor i1 %316, true
br i1 %317, label %318, label %323
318: ; preds = %309
%319 = load i32, i32* %7
%320 = add nsw i32 %319, 1
store i32 %320, i32* %7
%321 = load i32, i32* %8
%322 = add nsw i32 %321, 1
store i32 %322, i32* %8
br label %309
323: ; preds = %309
%324 = load i32, i32* %8
%325 = icmp ne i32 %324, 9
br i1 %325, label %326, label %333
326: ; preds = %323
%327 = load i32, i32* %8
%328 = icmp ne i32 %327, 10
br i1 %328, label %329, label %333
329: ; preds = %326
%330 = load i32, i32* %8
%331 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([139 x i8], [139 x i8]* @.str.53, i64 0, i64 0), i32 %330)
%332 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([32 x i8], [32 x i8]* @.str.43, i64 0, i64 0))
store i32 10, i32* %3
br label %728
333: ; preds = %326, %323
store i32 0, i32* %8
br label %334
334: ; preds = %358, %333
%335 = load i8*, i8** %12
%336 = load i32, i32* %7
%337 = sext i32 %336 to i64
%338 = getelementptr inbounds i8, i8* %335, i64 %337
%339 = load i8, i8* %338
%340 = call i64 @isdigit(i8 signext %339)
%341 = icmp ne i64 %340, 0
br i1 %341, label %342, label %363
342: ; preds = %334
%343 = load i8*, i8** %12
%344 = load i32, i32* %7
%345 = sext i32 %344 to i64
%346 = getelementptr inbounds i8, i8* %343, i64 %345
%347 = load i8, i8* %346
%348 = load i32, i32* %8
%349 = sext i32 %348 to i64
%350 = getelementptr inbounds [3 x i8], [3 x i8]* %23, i64 0, i64 %349
store i8 %347, i8* %350
%351 = load i32, i32* %8
%352 = icmp sge i32 %351, 2
br i1 %352, label %353, label %358
353: ; preds = %342
%354 = load i32, i32* %8
%355 = add nsw i32 %354, 1
%356 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([107 x i8], [107 x i8]* @.str.54, i64 0, i64 0), i32 %355)
%357 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([32 x i8], [32 x i8]* @.str.43, i64 0, i64 0))
store i32 11, i32* %3
br label %728
358: ; preds = %342
%359 = load i32, i32* %7
%360 = add nsw i32 %359, 1
store i32 %360, i32* %7
%361 = load i32, i32* %8
%362 = add nsw i32 %361, 1
store i32 %362, i32* %8
br label %334
363: ; preds = %334
%364 = load i32, i32* %8
%365 = sext i32 %364 to i64
%366 = getelementptr inbounds [3 x i8], [3 x i8]* %23, i64 0, i64 %365
store i8 0, i8* %366
%367 = getelementptr inbounds [3 x i8], [3 x i8]* %23, i64 0, i64 0
%368 = call i32 @atoi(i8* %367)
store i32 %368, i32* %19
%369 = getelementptr inbounds [512 x i8], [512 x i8]* %13, i64 0, i64 0
%370 = load i8*, i8** %6
%371 = call i8* @fgets(i8* %369, i32 510, i8* %370)
store i8* %371, i8** %12
%372 = icmp eq i8* %371, null
br i1 %372, label %373, label %374
373: ; preds = %363
store i32 12, i32* %3
br label %728
374: ; preds = %363
%375 = load i8*, i8** %12
%376 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.46, i64 0, i64 0), i8* %375)
%377 = load i8*, i8** %12
%378 = call i32 @strptime(i8* %377, i8* getelementptr inbounds ([36 x i8], [36 x i8]* @.str.55, i64 0, i64 0), %struct.tm* %11)
%379 = icmp eq i32 %378, 0
br i1 %379, label %380, label %382
380: ; preds = %374
%381 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str.56, i64 0, i64 0))
store i32 13, i32* %3
br label %728
382: ; preds = %374
%383 = getelementptr inbounds %struct.tm, %struct.tm* %11, i32 0, i32 0
store i32 -1, i32* %383
%384 = call i32 @mktime(%struct.tm* %11)
store i32 %384, i32* %10
%385 = load i32, i32* %10
%386 = icmp eq i32 %385, -1
br i1 %386, label %387, label %389
387: ; preds = %382
%388 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.57, i64 0, i64 0))
store i32 14, i32* %3
br label %728
389: ; preds = %382
%390 = load i32, i32* %10
%391 = sext i32 %390 to i64
%392 = load i32, i32* %19
%393 = sext i32 %392 to i64
%394 = add nsw i64 %391, %393
%395 = load i32, i32* %18
%396 = mul nsw i32 %395, 60
%397 = sext i32 %396 to i64
%398 = add nsw i64 %394, %397
%399 = load i32, i32* %17
%400 = mul nsw i32 %399, 3600
%401 = sext i32 %400 to i64
%402 = add nsw i64 %398, %401
%403 = load i32, i32* %16
%404 = mul nsw i32 %403, 86400
%405 = sext i32 %404 to i64
%406 = add nsw i64 %402, %405
store i64 %406, i64* %14
br label %407
407: ; preds = %389
%408 = call i32 @gmtime(i64* %14)
%409 = call i8* @asctime(i32 %408)
%410 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([88 x i8], [88 x i8]* @.str.58, i64 0, i64 0), i8* %409)
br label %411
411: ; preds = %407, %721
br label %412
412: ; preds = %411, %426
%413 = getelementptr inbounds [512 x i8], [512 x i8]* %13, i64 0, i64 0
%414 = load i8*, i8** %6
%415 = call i8* @fgets(i8* %413, i32 510, i8* %414)
store i8* %415, i8** %12
%416 = icmp eq i8* %415, null
br i1 %416, label %417, label %418
417: ; preds = %412
store i32 0, i32* %3
br label %728
418: ; preds = %412
%419 = load i8*, i8** %12
%420 = call i32* @strstr(i8* %419, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.59, i64 0, i64 0))
%421 = icmp eq i32* %420, null
br i1 %421, label %422, label %425
422: ; preds = %418
%423 = load i8*, i8** %12
%424 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.46, i64 0, i64 0), i8* %423)
br label %426
425: ; preds = %418
br label %427
426: ; preds = %422
br label %412
427: ; preds = %425
%428 = load i8*, i8** %12
%429 = call i32 @strlen(i8* %428)
%430 = sub nsw i32 %429, 1
store i32 %430, i32* %9
br label %431
431: ; preds = %459, %427
%432 = load i32, i32* %9
%433 = icmp sge i32 %432, -1
br i1 %433, label %434, label %462
434: ; preds = %431
%435 = load i32, i32* %9
%436 = icmp eq i32 %435, -1
br i1 %436, label %437, label %441
437: ; preds = %434
%438 = load i8*, i8** %12
%439 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([72 x i8], [72 x i8]* @.str.60, i64 0, i64 0), i8* %438)
%440 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([32 x i8], [32 x i8]* @.str.43, i64 0, i64 0))
store i32 16, i32* %3
br label %728
441: ; preds = %434
%442 = load i8*, i8** %12
%443 = load i32, i32* %9
%444 = sext i32 %443 to i64
%445 = getelementptr inbounds i8, i8* %442, i64 %444
%446 = load i8, i8* %445
%447 = sext i8 %446 to i32
%448 = icmp ne i32 %447, 32
br i1 %448, label %449, label %458
449: ; preds = %441
%450 = load i8*, i8** %12
%451 = load i32, i32* %9
%452 = sext i32 %451 to i64
%453 = getelementptr inbounds i8, i8* %450, i64 %452
%454 = load i8, i8* %453
%455 = sext i8 %454 to i32
%456 = icmp ne i32 %455, 10
br i1 %456, label %457, label %458
457: ; preds = %449
br label %462
458: ; preds = %449, %441
br label %459
459: ; preds = %458
%460 = load i32, i32* %9
%461 = add nsw i32 %460, -1
store i32 %461, i32* %9
br label %431
462: ; preds = %457, %431
%463 = load i32, i32* %9
store i32 %463, i32* %7
br label %464
464: ; preds = %486, %462
%465 = load i32, i32* %7
%466 = icmp sge i32 %465, -1
br i1 %466, label %467, label %489
467: ; preds = %464
%468 = load i32, i32* %7
%469 = icmp eq i32 %468, -1
br i1 %469, label %470, label %474
470: ; preds = %467
%471 = load i8*, i8** %12
%472 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([69 x i8], [69 x i8]* @.str.61, i64 0, i64 0), i8* %471)
%473 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([32 x i8], [32 x i8]* @.str.43, i64 0, i64 0))
store i32 16, i32* %3
br label %728
474: ; preds = %467
%475 = load i8*, i8** %12
%476 = load i32, i32* %7
%477 = sext i32 %476 to i64
%478 = getelementptr inbounds i8, i8* %475, i64 %477
%479 = load i8, i8* %478
%480 = sext i8 %479 to i32
%481 = icmp eq i32 %480, 32
br i1 %481, label %482, label %485
482: ; preds = %474
%483 = load i32, i32* %7
%484 = add nsw i32 %483, 1
store i32 %484, i32* %8
br label %489
485: ; preds = %474
br label %486
486: ; preds = %485
%487 = load i32, i32* %7
%488 = add nsw i32 %487, -1
store i32 %488, i32* %7
br label %464
489: ; preds = %482, %464
store i32 0, i32* %7
br label %490
490: ; preds = %498, %489
%491 = load i8*, i8** %12
%492 = load i32, i32* %8
%493 = sext i32 %492 to i64
%494 = getelementptr inbounds i8, i8* %491, i64 %493
%495 = load i8, i8* %494
%496 = call i64 @isdigit(i8 signext %495)
%497 = icmp ne i64 %496, 0
br i1 %497, label %498, label %509
498: ; preds = %490
%499 = load i8*, i8** %12
%500 = load i32, i32* %8
%501 = add nsw i32 %500, 1
store i32 %501, i32* %8
%502 = sext i32 %500 to i64
%503 = getelementptr inbounds i8, i8* %499, i64 %502
%504 = load i8, i8* %503
%505 = load i32, i32* %7
%506 = add nsw i32 %505, 1
store i32 %506, i32* %7
%507 = sext i32 %505 to i64
%508 = getelementptr inbounds [6 x i8], [6 x i8]* %20, i64 0, i64 %507
store i8 %504, i8* %508
br label %490
509: ; preds = %490
%510 = load i32, i32* %7
%511 = sext i32 %510 to i64
%512 = getelementptr inbounds [6 x i8], [6 x i8]* %20, i64 0, i64 %511
store i8 0, i8* %512
%513 = getelementptr inbounds [6 x i8], [6 x i8]* %20, i64 0, i64 0
%514 = call i32 @atoi(i8* %513)
store i32 %514, i32* %16
br label %515
515: ; preds = %525, %509
%516 = load i8*, i8** %12
%517 = load i32, i32* %8
%518 = add nsw i32 %517, 1
store i32 %518, i32* %8
%519 = sext i32 %517 to i64
%520 = getelementptr inbounds i8, i8* %516, i64 %519
%521 = load i8, i8* %520
%522 = call i64 @isdigit(i8 signext %521)
%523 = icmp ne i64 %522, 0
%524 = xor i1 %523, true
br i1 %524, label %525, label %526
525: ; preds = %515
br label %515
526: ; preds = %515
%527 = load i32, i32* %8
%528 = add nsw i32 %527, -1
store i32 %528, i32* %8
store i32 0, i32* %7
br label %529
529: ; preds = %537, %526
%530 = load i8*, i8** %12
%531 = load i32, i32* %8
%532 = sext i32 %531 to i64
%533 = getelementptr inbounds i8, i8* %530, i64 %532
%534 = load i8, i8* %533
%535 = call i64 @isdigit(i8 signext %534)
%536 = icmp ne i64 %535, 0
br i1 %536, label %537, label %548
537: ; preds = %529
%538 = load i8*, i8** %12
%539 = load i32, i32* %8
%540 = add nsw i32 %539, 1
store i32 %540, i32* %8
%541 = sext i32 %539 to i64
%542 = getelementptr inbounds i8, i8* %538, i64 %541
%543 = load i8, i8* %542
%544 = load i32, i32* %7
%545 = add nsw i32 %544, 1
store i32 %545, i32* %7
%546 = sext i32 %544 to i64
%547 = getelementptr inbounds [3 x i8], [3 x i8]* %21, i64 0, i64 %546
store i8 %543, i8* %547
br label %529
548: ; preds = %529
%549 = load i32, i32* %7
%550 = sext i32 %549 to i64
%551 = getelementptr inbounds [3 x i8], [3 x i8]* %21, i64 0, i64 %550
store i8 0, i8* %551
%552 = getelementptr inbounds [3 x i8], [3 x i8]* %21, i64 0, i64 0
%553 = call i32 @atoi(i8* %552)
store i32 %553, i32* %17
br label %554
554: ; preds = %564, %548
%555 = load i8*, i8** %12
%556 = load i32, i32* %8
%557 = add nsw i32 %556, 1
store i32 %557, i32* %8
%558 = sext i32 %556 to i64
%559 = getelementptr inbounds i8, i8* %555, i64 %558
%560 = load i8, i8* %559
%561 = call i64 @isdigit(i8 signext %560)
%562 = icmp ne i64 %561, 0
%563 = xor i1 %562, true
br i1 %563, label %564, label %565
564: ; preds = %554
br label %554
565: ; preds = %554
%566 = load i32, i32* %8
%567 = add nsw i32 %566, -1
store i32 %567, i32* %8
store i32 0, i32* %7
br label %568
568: ; preds = %576, %565
%569 = load i8*, i8** %12
%570 = load i32, i32* %8
%571 = sext i32 %570 to i64
%572 = getelementptr inbounds i8, i8* %569, i64 %571
%573 = load i8, i8* %572
%574 = call i64 @isdigit(i8 signext %573)
%575 = icmp ne i64 %574, 0
br i1 %575, label %576, label %587
576: ; preds = %568
%577 = load i8*, i8** %12
%578 = load i32, i32* %8
%579 = add nsw i32 %578, 1
store i32 %579, i32* %8
%580 = sext i32 %578 to i64
%581 = getelementptr inbounds i8, i8* %577, i64 %580
%582 = load i8, i8* %581
%583 = load i32, i32* %7
%584 = add nsw i32 %583, 1
store i32 %584, i32* %7
%585 = sext i32 %583 to i64
%586 = getelementptr inbounds [3 x i8], [3 x i8]* %22, i64 0, i64 %585
store i8 %582, i8* %586
br label %568
587: ; preds = %568
%588 = load i32, i32* %7
%589 = sext i32 %588 to i64
%590 = getelementptr inbounds [3 x i8], [3 x i8]* %22, i64 0, i64 %589
store i8 0, i8* %590
%591 = getelementptr inbounds [3 x i8], [3 x i8]* %22, i64 0, i64 0
%592 = call i32 @atoi(i8* %591)
store i32 %592, i32* %18
br label %593
593: ; preds = %603, %587
%594 = load i8*, i8** %12
%595 = load i32, i32* %8
%596 = add nsw i32 %595, 1
store i32 %596, i32* %8
%597 = sext i32 %595 to i64
%598 = getelementptr inbounds i8, i8* %594, i64 %597
%599 = load i8, i8* %598
%600 = call i64 @isdigit(i8 signext %599)
%601 = icmp ne i64 %600, 0
%602 = xor i1 %601, true
br i1 %602, label %603, label %604
603: ; preds = %593
br label %593
604: ; preds = %593
%605 = load i32, i32* %8
%606 = add nsw i32 %605, -1
store i32 %606, i32* %8
store i32 0, i32* %7
br label %607
607: ; preds = %615, %604
%608 = load i8*, i8** %12
%609 = load i32, i32* %8
%610 = sext i32 %609 to i64
%611 = getelementptr inbounds i8, i8* %608, i64 %610
%612 = load i8, i8* %611
%613 = call i64 @isdigit(i8 signext %612)
%614 = icmp ne i64 %613, 0
br i1 %614, label %615, label %626
615: ; preds = %607
%616 = load i8*, i8** %12
%617 = load i32, i32* %8
%618 = add nsw i32 %617, 1
store i32 %618, i32* %8
%619 = sext i32 %617 to i64
%620 = getelementptr inbounds i8, i8* %616, i64 %619
%621 = load i8, i8* %620
%622 = load i32, i32* %7
%623 = add nsw i32 %622, 1
store i32 %623, i32* %7
%624 = sext i32 %622 to i64
%625 = getelementptr inbounds [3 x i8], [3 x i8]* %23, i64 0, i64 %624
store i8 %621, i8* %625
br label %607
626: ; preds = %607
%627 = load i32, i32* %7
%628 = sext i32 %627 to i64
%629 = getelementptr inbounds [3 x i8], [3 x i8]* %23, i64 0, i64 %628
store i8 0, i8* %629
%630 = getelementptr inbounds [3 x i8], [3 x i8]* %23, i64 0, i64 0
%631 = call i32 @atoi(i8* %630)
store i32 %631, i32* %19
br label %632
632: ; preds = %642, %626
%633 = load i8*, i8** %12
%634 = load i32, i32* %8
%635 = add nsw i32 %634, 1
store i32 %635, i32* %8
%636 = sext i32 %634 to i64
%637 = getelementptr inbounds i8, i8* %633, i64 %636
%638 = load i8, i8* %637
%639 = call i64 @isdigit(i8 signext %638)
%640 = icmp ne i64 %639, 0
%641 = xor i1 %640, true
br i1 %641, label %642, label %643
642: ; preds = %632
br label %632
643: ; preds = %632
%644 = load i32, i32* %8
%645 = add nsw i32 %644, -1
store i32 %645, i32* %8
%646 = load i64, i64* %14
%647 = load i32, i32* %19
%648 = sext i32 %647 to i64
%649 = sub nsw i64 %646, %648
%650 = load i32, i32* %18
%651 = mul nsw i32 %650, 60
%652 = sext i32 %651 to i64
%653 = sub nsw i64 %649, %652
%654 = load i32, i32* %17
%655 = mul nsw i32 %654, 3600
%656 = sext i32 %655 to i64
%657 = sub nsw i64 %653, %656
%658 = load i32, i32* %16
%659 = mul nsw i32 %658, 86400
%660 = sext i32 %659 to i64
%661 = sub nsw i64 %657, %660
store i64 %661, i64* %15
%662 = load i8*, i8** %12
%663 = call i32 @strlen(i8* %662)
%664 = sub nsw i32 %663, 1
store i32 %664, i32* %8
%665 = load i8*, i8** %12
%666 = load i32, i32* %8
%667 = add nsw i32 %666, 1
store i32 %667, i32* %8
%668 = sext i32 %666 to i64
%669 = getelementptr inbounds i8, i8* %665, i64 %668
store i8 32, i8* %669
%670 = load i8*, i8** %12
%671 = load i32, i32* %8
%672 = add nsw i32 %671, 1
store i32 %672, i32* %8
%673 = sext i32 %671 to i64
%674 = getelementptr inbounds i8, i8* %670, i64 %673
store i8 115, i8* %674
%675 = load i8*, i8** %12
%676 = load i32, i32* %8
%677 = add nsw i32 %676, 1
store i32 %677, i32* %8
%678 = sext i32 %676 to i64
%679 = getelementptr inbounds i8, i8* %675, i64 %678
store i8 105, i8* %679
%680 = load i8*, i8** %12
%681 = load i32, i32* %8
%682 = add nsw i32 %681, 1
store i32 %682, i32* %8
%683 = sext i32 %681 to i64
%684 = getelementptr inbounds i8, i8* %680, i64 %683
store i8 110, i8* %684
%685 = load i8*, i8** %12
%686 = load i32, i32* %8
%687 = add nsw i32 %686, 1
store i32 %687, i32* %8
%688 = sext i32 %686 to i64
%689 = getelementptr inbounds i8, i8* %685, i64 %688
store i8 99, i8* %689
%690 = load i8*, i8** %12
%691 = load i32, i32* %8
%692 = add nsw i32 %691, 1
store i32 %692, i32* %8
%693 = sext i32 %691 to i64
%694 = getelementptr inbounds i8, i8* %690, i64 %693
store i8 101, i8* %694
%695 = load i8*, i8** %12
%696 = load i32, i32* %8
%697 = add nsw i32 %696, 1
store i32 %697, i32* %8
%698 = sext i32 %696 to i64
%699 = getelementptr inbounds i8, i8* %695, i64 %698
store i8 32, i8* %699
store i32 0, i32* %7
br label %700
700: ; preds = %718, %643
%701 = load i32, i32* %7
%702 = call i32 @gmtime(i64* %15)
%703 = call i8* @asctime(i32 %702)
%704 = call i32 @strlen(i8* %703)
%705 = icmp slt i32 %701, %704
br i1 %705, label %706, label %721
706: ; preds = %700
%707 = call i32 @gmtime(i64* %15)
%708 = call i8* @asctime(i32 %707)
%709 = load i32, i32* %7
%710 = sext i32 %709 to i64
%711 = getelementptr inbounds i8, i8* %708, i64 %710
%712 = load i8, i8* %711
%713 = load i8*, i8** %12
%714 = load i32, i32* %8
%715 = add nsw i32 %714, 1
store i32 %715, i32* %8
%716 = sext i32 %714 to i64
%717 = getelementptr inbounds i8, i8* %713, i64 %716
store i8 %712, i8* %717
br label %718
718: ; preds = %706
%719 = load i32, i32* %7
%720 = add nsw i32 %719, 1
store i32 %720, i32* %7
br label %700
721: ; preds = %700
%722 = load i8*, i8** %12
%723 = load i32, i32* %8
%724 = sext i32 %723 to i64
%725 = getelementptr inbounds i8, i8* %722, i64 %724
store i8 0, i8* %725
%726 = load i8*, i8** %12
%727 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.46, i64 0, i64 0), i8* %726)
br label %411
728: ; preds = %470, %437, %417, %387, %380, %373, %353, %329, %293, %269, %233, %209, %173, %149, %116, %104, %26
%729 = load i32, i32* %3
ret i32 %729
}

LLVM IR (-O2):
%struct.tm = type { i32 }
@.str.1 = [35 x i8] c" Usage: %s <input text file 1>\0A\00"
@.str.41 = [2 x i8] c"r\00"
@.str.42 = [32 x i8] c"Sorry, unable to open %s file.\0A\00"
@.str.44 = [46 x i8] c"Sorry, unexpected NULL line read in %s file.\0A\00"
@.str.45 = [21 x i8] c"System running for: \00"
@.str.46 = [3 x i8] c"%s\00"
@.str.47 = [101 x i8] c"Sorry, wrong number of non-numeric characters before a number, in first line (got %d, expected 20).\0A\00"
@.str.48 = [104 x i8] c"Sorry, wrong number of digits in the number of days, in first line (got %d, expected between 1 and 5).\0A\00"
@.str.49 = [133 x i8] c"Sorry, wrong number of characters after the number of days and before the number of hours, in first line (got %d, expected 6 or 7).\0A\00"
@.str.50 = [105 x i8] c"Sorry, wrong number of digits in the number of hours, in first line (got %d, expected between 1 and 2).\0A\00"
@.str.51 = [136 x i8] c"Sorry, wrong number of characters after the number of hours and before the number of minutes, in first line (got %d, expected 7 or 8).\0A\00"
@.str.52 = [107 x i8] c"Sorry, wrong number of digits in the number of minutes, in first line (got %d, expected between 1 and 2).\0A\00"
@.str.53 = [139 x i8] c"Sorry, wrong number of characters after the number of minutes and before the number of seconds, in first line (got %d, expected 9 or 10).\0A\00"
@.str.54 = [107 x i8] c"Sorry, wrong number of digits in the number of seconds, in first line (got %d, expected between 1 and 2).\0A\00"
@.str.55 = [36 x i8] c" (since %a %b %d %Y %T UTC)\00"
@.str.57 = [15 x i8] c"mktime failed!\00"
@.str.58 = [88 x i8] c"Time this \22show version\22 CLI command was executed: %s\00"
@.str.59 = [3 x i8] c"m:\00"
@.str.60 = [72 x i8] c"Sorry, unexpectedly, a nonspace was not found in the input line: <%s>.\0A\00"
@.str.61 = [69 x i8] c"Sorry, unexpectedly, a space was not found in the input line: <%s>.\0A\00"
@str.63 = [19 x i8] c"strptime() failed!\00"
@str.73 = [31 x i8] c"Please try again. Exiting ...\00"
@str.74 = [109 x i8] c"This C program takes as INPUT(in a file) the output from an eSeries \22show version\22 CLI command, for example:\00"
@str.84 = [76 x i8] c"1 online OC3-4A enabled --- 8-2-3p0-5-1.rel 553d16h:01m:15s\00"
@str.85 = [76 x i8] c"2 online OC3-4A enabled --- 8-2-3p0-5-1.rel 553d16h:01m:14s\00"
@str.87 = [76 x i8] c"4 online OC3-4A enabled --- 8-2-3p0-5-1.rel 553d16h:01m:12s\00"
@str.88 = [76 x i8] c"5 online OC3-4A enabled --- 8-2-3p0-5-1.rel 553d16h:01m:10s\00"
@str.89 = [76 x i8] c"6 online SRP-10Ge enabled --- 8-2-3p0-5-1.rel 553d16h:10m:27s\00"
@str.92 = [76 x i8] c"9 online GE enabled --- 8-2-3p0-5-1.rel 553d16h:02m:33s\00"
@str.95 = [76 x i8] c"12 online GE enabled --- 8-2-3p0-5-1.rel 553d16h:02m:36s\00"
@str.97 = [109 x i8] c"--and provides as OUTPUT(to the monitor) the time that this eSeries \22show version\22 CLI command was executed;\00"
@str.98 = [103 x i8] c"ALSO, it converts the slot uptimes to the actual times the slots came up, in this example it would be:\00"
@str.99 = [37 x i8] c"Juniper Edge Routing Switch ERX-1400\00"
@str.100 = [69 x i8] c"Copyright (c) 1999-2008 Juniper Networks, Inc. All rights reserved.\00"
@str.101 = [32 x i8] c"System Release: 8-2-3p0-5-1.rel\00"
@str.102 = [77 x i8] c" Version: 8.2.3 patch-0.5.1 [BuildId 10739] (March 24, 2009 10:50)\00"
@str.103 = [63 x i8] c"System running for: 553 days, 16 hours, 13 minutes, 20 seconds\00"
@str.104 = [45 x i8] c" (since TUE SEP 01 2009 05:21:30 UTC)\00"
@str.105 = [101 x i8] c"Time this \22show version\22 CLI command was executed: Tue Mar 8 21:34:50 2011\00"
@str.106 = [76 x i8] c"slot state type admin spare running release slot uptime \00"
@str.107 = [76 x i8] c"---- ------- ---------------- ------- ----- --------------- ---------------\00"
@str.108 = [76 x i8] c"0 standby OC3/OC12/DS3-ATM enabled spare 8-2-3p0-5-1.rel --- \00"
@str.109 = [101 x i8] c"1 online OC3-4A enabled --- 8-2-3p0-5-1.rel 553d16h:01m:15s Tue Sep 1 05:33:35 2009\00"
@str.110 = [101 x i8] c"2 online OC3-4A enabled --- 8-2-3p0-5-1.rel 553d16h:01m:14s Tue Sep 1 05:33:36 2009\00"
@str.111 = [76 x i8] c"3 --- --- --- --- --- --- \00"
@str.112 = [101 x i8] c"4 online OC3-4A enabled --- 8-2-3p0-5-1.rel 553d16h:01m:12s Tue Sep 1 05:33:38 2009\00"
@str.113 = [101 x i8] c"5 online OC3-4A enabled --- 8-2-3p0-5-1.rel 553d16h:01m:10s Tue Sep 1 05:33:40 2009\00"
@str.114 = [101 x i8] c"6 online SRP-10Ge enabled --- 8-2-3p0-5-1.rel 553d16h:10m:27s Tue Sep 1 05:24:23 2009\00"
@str.115 = [76 x i8] c"7 standby SRP-10Ge enabled --- 8-2-3p0-5-1.rel --- \00"
@str.116 = [76 x i8] c"8 --- --- --- --- --- --- \00"
@str.117 = [101 x i8] c"9 online GE enabled --- 8-2-3p0-5-1.rel 553d16h:02m:33s Tue Sep 1 05:32:17 2009\00"
@str.118 = [76 x i8] c"10 --- --- --- --- --- --- \00"
@str.119 = [76 x i8] c"11 --- --- --- --- --- --- \00"
@str.120 = [101 x i8] c"12 online GE enabled --- 8-2-3p0-5-1.rel 553d16h:02m:36s Tue Sep 1 05:32:14 2009\00"
@str.121 = [76 x i8] c"13 --- --- --- --- --- --- \00"
@str.122 = [9 x i8] c"Caveats:\00"
@str.123 = [31 x i8] c"0 - input format must be exact\00"
@str.124 = [79 x i8] c"1 - output is in local time, ASSUMED to be UTC (at least, that is what I like)\00"
@str.125 = [92 x i8] c"2 - the eSeries may add trailing spaces, which breaks this code. An example workaround is:\00"
@str.126 = [57 x i8] c" cat inputFile | sed 's/ *$//' > inputFileCleaned\00"
@str.127 = [64 x i8] c"Written by Jonathan Natale for Juniper Networks on 11-Mar-2011.\00"
define i32 @main(i32 %0, i8** nocapture %1) {
%3 = alloca %struct.tm
%4 = alloca [512 x i8]
%5 = alloca i64
%6 = alloca i64
%7 = alloca [6 x i8]
%8 = alloca [3 x i8]
%9 = alloca [3 x i8]
%10 = alloca [3 x i8]
%11 = bitcast %struct.tm* %3 to i8*
%12 = getelementptr inbounds [512 x i8], [512 x i8]* %4, i64 0, i64 0
%13 = bitcast i64* %5 to i8*
store i64 1234567890, i64* %5
%14 = bitcast i64* %6 to i8*
store i64 313131313, i64* %6
%15 = getelementptr inbounds [6 x i8], [6 x i8]* %7, i64 0, i64 0
%16 = getelementptr inbounds [3 x i8], [3 x i8]* %8, i64 0, i64 0
%17 = getelementptr inbounds [3 x i8], [3 x i8]* %9, i64 0, i64 0
%18 = getelementptr inbounds [3 x i8], [3 x i8]* %10, i64 0, i64 0
%19 = icmp eq i32 %0, 2
br i1 %19, label %90, label %20
20: ; preds = %2
%21 = tail call i32 @putchar(i32 10)
%22 = tail call i32 @putchar(i32 10)
%23 = load i8*, i8** %1
%24 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([35 x i8], [35 x i8]* @.str.1, i64 0, i64 0), i8* %23)
%25 = tail call i32 @putchar(i32 10)
%26 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([109 x i8], [109 x i8]* @str.74, i64 0, i64 0))
%27 = tail call i32 @putchar(i32 10)
%28 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([37 x i8], [37 x i8]* @str.99, i64 0, i64 0))
%29 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([69 x i8], [69 x i8]* @str.100, i64 0, i64 0))
%30 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([32 x i8], [32 x i8]* @str.101, i64 0, i64 0))
%31 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([77 x i8], [77 x i8]* @str.102, i64 0, i64 0))
%32 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([63 x i8], [63 x i8]* @str.103, i64 0, i64 0))
%33 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([45 x i8], [45 x i8]* @str.104, i64 0, i64 0))
%34 = tail call i32 @putchar(i32 10)
%35 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([76 x i8], [76 x i8]* @str.106, i64 0, i64 0))
%36 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([76 x i8], [76 x i8]* @str.107, i64 0, i64 0))
%37 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([76 x i8], [76 x i8]* @str.108, i64 0, i64 0))
%38 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([76 x i8], [76 x i8]* @str.84, i64 0, i64 0))
%39 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([76 x i8], [76 x i8]* @str.85, i64 0, i64 0))
%40 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([76 x i8], [76 x i8]* @str.111, i64 0, i64 0))
%41 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([76 x i8], [76 x i8]* @str.87, i64 0, i64 0))
%42 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([76 x i8], [76 x i8]* @str.88, i64 0, i64 0))
%43 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([76 x i8], [76 x i8]* @str.89, i64 0, i64 0))
%44 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([76 x i8], [76 x i8]* @str.115, i64 0, i64 0))
%45 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([76 x i8], [76 x i8]* @str.116, i64 0, i64 0))
%46 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([76 x i8], [76 x i8]* @str.92, i64 0, i64 0))
%47 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([76 x i8], [76 x i8]* @str.118, i64 0, i64 0))
%48 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([76 x i8], [76 x i8]* @str.119, i64 0, i64 0))
%49 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([76 x i8], [76 x i8]* @str.95, i64 0, i64 0))
%50 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([76 x i8], [76 x i8]* @str.121, i64 0, i64 0))
%51 = tail call i32 @putchar(i32 10)
%52 = tail call i32 @putchar(i32 10)
%53 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([109 x i8], [109 x i8]* @str.97, i64 0, i64 0))
%54 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([103 x i8], [103 x i8]* @str.98, i64 0, i64 0))
%55 = tail call i32 @putchar(i32 10)
%56 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([37 x i8], [37 x i8]* @str.99, i64 0, i64 0))
%57 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([69 x i8], [69 x i8]* @str.100, i64 0, i64 0))
%58 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([32 x i8], [32 x i8]* @str.101, i64 0, i64 0))
%59 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([77 x i8], [77 x i8]* @str.102, i64 0, i64 0))
%60 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([63 x i8], [63 x i8]* @str.103, i64 0, i64 0))
%61 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([45 x i8], [45 x i8]* @str.104, i64 0, i64 0))
%62 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([101 x i8], [101 x i8]* @str.105, i64 0, i64 0))
%63 = tail call i32 @putchar(i32 10)
%64 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([76 x i8], [76 x i8]* @str.106, i64 0, i64 0))
%65 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([76 x i8], [76 x i8]* @str.107, i64 0, i64 0))
%66 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([76 x i8], [76 x i8]* @str.108, i64 0, i64 0))
%67 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([101 x i8], [101 x i8]* @str.109, i64 0, i64 0))
%68 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([101 x i8], [101 x i8]* @str.110, i64 0, i64 0))
%69 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([76 x i8], [76 x i8]* @str.111, i64 0, i64 0))
%70 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([101 x i8], [101 x i8]* @str.112, i64 0, i64 0))
%71 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([101 x i8], [101 x i8]* @str.113, i64 0, i64 0))
%72 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([101 x i8], [101 x i8]* @str.114, i64 0, i64 0))
%73 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([76 x i8], [76 x i8]* @str.115, i64 0, i64 0))
%74 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([76 x i8], [76 x i8]* @str.116, i64 0, i64 0))
%75 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([101 x i8], [101 x i8]* @str.117, i64 0, i64 0))
%76 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([76 x i8], [76 x i8]* @str.118, i64 0, i64 0))
%77 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([76 x i8], [76 x i8]* @str.119, i64 0, i64 0))
%78 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([101 x i8], [101 x i8]* @str.120, i64 0, i64 0))
%79 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([76 x i8], [76 x i8]* @str.121, i64 0, i64 0))
%80 = tail call i32 @putchar(i32 10)
%81 = tail call i32 @putchar(i32 10)
%82 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([9 x i8], [9 x i8]* @str.122, i64 0, i64 0))
%83 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([31 x i8], [31 x i8]* @str.123, i64 0, i64 0))
%84 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([79 x i8], [79 x i8]* @str.124, i64 0, i64 0))
%85 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([92 x i8], [92 x i8]* @str.125, i64 0, i64 0))
%86 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([57 x i8], [57 x i8]* @str.126, i64 0, i64 0))
%87 = tail call i32 @putchar(i32 10)
%88 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([64 x i8], [64 x i8]* @str.127, i64 0, i64 0))
%89 = tail call i32 @putchar(i32 10)
br label %622
90: ; preds = %2
%91 = getelementptr inbounds i8*, i8** %1, i64 1
%92 = load i8*, i8** %91
%93 = tail call i8* @fopen(i8* %92, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.41, i64 0, i64 0))
%94 = icmp eq i8* %93, null
br i1 %94, label %98, label %95
95: ; preds = %90
%96 = call i8* @fgets(i8* %12, i32 510, i8* %93)
%97 = icmp eq i8* %96, null
br i1 %97, label %102, label %105
98: ; preds = %90
%99 = load i8*, i8** %91
%100 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([32 x i8], [32 x i8]* @.str.42, i64 0, i64 0), i8* %99)
%101 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([31 x i8], [31 x i8]* @str.73, i64 0, i64 0))
br label %622
102: ; preds = %110, %95
%103 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([46 x i8], [46 x i8]* @.str.44, i64 0, i64 0), i8* %93)
%104 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([31 x i8], [31 x i8]* @str.73, i64 0, i64 0))
br label %622
105: ; preds = %95, %110
%106 = phi i8* [ %111, %110 ], [ %96, %95 ]
%107 = call i32* @strstr(i8* %106, i8* dereferenceable(1) getelementptr inbounds ([21 x i8], [21 x i8]* @.str.45, i64 0, i64 0))
%108 = icmp eq i32* %107, null
%109 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([3 x i8], [3 x i8]* @.str.46, i64 0, i64 0), i8* %106)
br i1 %108, label %110, label %113
110: ; preds = %105
%111 = call i8* @fgets(i8* %12, i32 510, i8* %93)
%112 = icmp eq i8* %111, null
br i1 %112, label %102, label %105
113: ; preds = %105
%114 = load i8, i8* %106
%115 = call i64 @isdigit(i8 signext %114)
%116 = icmp eq i64 %115, 0
br i1 %116, label %117, label %138
117: ; preds = %113, %117
%118 = phi i64 [ %119, %117 ], [ 0, %113 ]
%119 = add nuw nsw i64 %118, 1
%120 = getelementptr inbounds i8, i8* %106, i64 %119
%121 = load i8, i8* %120
%122 = call i64 @isdigit(i8 signext %121)
%123 = icmp eq i64 %122, 0
br i1 %123, label %117, label %124
124: ; preds = %117
%125 = trunc i64 %119 to i32
%126 = icmp eq i32 %125, 20
br i1 %126, label %127, label %138
127: ; preds = %124
%128 = getelementptr inbounds i8, i8* %106, i64 20
%129 = load i8, i8* %128
%130 = call i64 @isdigit(i8 signext %129)
%131 = icmp eq i64 %130, 0
br i1 %131, label %175, label %132
132: ; preds = %127
%133 = load i8, i8* %128
store i8 %133, i8* %15
%134 = getelementptr inbounds i8, i8* %106, i64 21
%135 = load i8, i8* %134
%136 = call i64 @isdigit(i8 signext %135)
%137 = icmp eq i64 %136, 0
br i1 %137, label %175, label %147
138: ; preds = %113, %124
%139 = phi i32 [ %125, %124 ], [ 0, %113 ]
%140 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([101 x i8], [101 x i8]* @.str.47, i64 0, i64 0), i32 %139)
%141 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([31 x i8], [31 x i8]* @str.73, i64 0, i64 0))
br label %622
142: ; preds = %168
%143 = load i8, i8* %171
%144 = getelementptr inbounds [6 x i8], [6 x i8]* %7, i64 0, i64 5
store i8 %143, i8* %144
%145 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([104 x i8], [104 x i8]* @.str.48, i64 0, i64 0), i32 6)
%146 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([31 x i8], [31 x i8]* @str.73, i64 0, i64 0))
br label %622
147: ; preds = %132
%148 = load i8, i8* %134
%149 = getelementptr inbounds [6 x i8], [6 x i8]* %7, i64 0, i64 1
store i8 %148, i8* %149
%150 = getelementptr inbounds i8, i8* %106, i64 22
%151 = load i8, i8* %150
%152 = call i64 @isdigit(i8 signext %151)
%153 = icmp eq i64 %152, 0
br i1 %153, label %175, label %154
154: ; preds = %147
%155 = load i8, i8* %150
%156 = getelementptr inbounds [6 x i8], [6 x i8]* %7, i64 0, i64 2
store i8 %155, i8* %156
%157 = getelementptr inbounds i8, i8* %106, i64 23
%158 = load i8, i8* %157
%159 = call i64 @isdigit(i8 signext %158)
%160 = icmp eq i64 %159, 0
br i1 %160, label %175, label %161
161: ; preds = %154
%162 = load i8, i8* %157
%163 = getelementptr inbounds [6 x i8], [6 x i8]* %7, i64 0, i64 3
store i8 %162, i8* %163
%164 = getelementptr inbounds i8, i8* %106, i64 24
%165 = load i8, i8* %164
%166 = call i64 @isdigit(i8 signext %165)
%167 = icmp eq i64 %166, 0
br i1 %167, label %175, label %168
168: ; preds = %161
%169 = load i8, i8* %164
%170 = getelementptr inbounds [6 x i8], [6 x i8]* %7, i64 0, i64 4
store i8 %169, i8* %170
%171 = getelementptr inbounds i8, i8* %106, i64 25
%172 = load i8, i8* %171
%173 = call i64 @isdigit(i8 signext %172)
%174 = icmp eq i64 %173, 0
br i1 %174, label %175, label %142
175: ; preds = %132, %147, %154, %161, %168, %127
%176 = phi i64 [ 20, %127 ], [ 21, %132 ], [ 22, %147 ], [ 23, %154 ], [ 24, %161 ], [ 25, %168 ]
%177 = phi i64 [ 0, %127 ], [ 1, %132 ], [ 2, %147 ], [ 3, %154 ], [ 4, %161 ], [ 5, %168 ]
%178 = getelementptr inbounds [6 x i8], [6 x i8]* %7, i64 0, i64 %177
store i8 0, i8* %178
%179 = call i32 @atoi(i8* %15)
%180 = getelementptr inbounds i8, i8* %106, i64 %176
%181 = load i8, i8* %180
%182 = call i64 @isdigit(i8 signext %181)
%183 = icmp eq i64 %182, 0
br i1 %183, label %184, label %209
184: ; preds = %175, %184
%185 = phi i64 [ %187, %184 ], [ %176, %175 ]
%186 = phi i32 [ %188, %184 ], [ 0, %175 ]
%187 = add nuw i64 %185, 1
%188 = add nuw nsw i32 %186, 1
%189 = getelementptr inbounds i8, i8* %106, i64 %187
%190 = load i8, i8* %189
%191 = call i64 @isdigit(i8 signext %190)
%192 = icmp eq i64 %191, 0
br i1 %192, label %184, label %193
193: ; preds = %184
%194 = and i32 %188, 2147483646
%195 = icmp eq i32 %194, 6
br i1 %195, label %196, label %209
196: ; preds = %193
%197 = and i64 %187, 4294967295
%198 = getelementptr inbounds i8, i8* %106, i64 %197
%199 = load i8, i8* %198
%200 = call i64 @isdigit(i8 signext %199)
%201 = icmp eq i64 %200, 0
br i1 %201, label %230, label %202
202: ; preds = %196
%203 = load i8, i8* %198
store i8 %203, i8* %16
%204 = add nuw nsw i64 %197, 1
%205 = getelementptr inbounds i8, i8* %106, i64 %204
%206 = load i8, i8* %205
%207 = call i64 @isdigit(i8 signext %206)
%208 = icmp eq i64 %207, 0
br i1 %208, label %226, label %218
209: ; preds = %175, %193
%210 = phi i32 [ %188, %193 ], [ 0, %175 ]
%211 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([133 x i8], [133 x i8]* @.str.49, i64 0, i64 0), i32 %210)
%212 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([31 x i8], [31 x i8]* @str.73, i64 0, i64 0))
br label %622
213: ; preds = %218
%214 = load i8, i8* %222
%215 = getelementptr inbounds [3 x i8], [3 x i8]* %8, i64 0, i64 2
store i8 %214, i8* %215
%216 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([105 x i8], [105 x i8]* @.str.50, i64 0, i64 0), i32 3)
%217 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([31 x i8], [31 x i8]* @str.73, i64 0, i64 0))
br label %622
218: ; preds = %202
%219 = load i8, i8* %205
%220 = getelementptr inbounds [3 x i8], [3 x i8]* %8, i64 0, i64 1
store i8 %219, i8* %220
%221 = add nuw nsw i64 %197, 2
%222 = getelementptr inbounds i8, i8* %106, i64 %221
%223 = load i8, i8* %222
%224 = call i64 @isdigit(i8 signext %223)
%225 = icmp eq i64 %224, 0
br i1 %225, label %226, label %213
226: ; preds = %218, %202
%227 = phi i64 [ %204, %202 ], [ %221, %218 ]
%228 = phi i64 [ 1, %202 ], [ 2, %218 ]
%229 = and i64 %227, 4294967295
br label %230
230: ; preds = %226, %196
%231 = phi i64 [ %229, %226 ], [ %197, %196 ]
%232 = phi i64 [ %228, %226 ], [ 0, %196 ]
%233 = getelementptr inbounds [3 x i8], [3 x i8]* %8, i64 0, i64 %232
store i8 0, i8* %233
%234 = call i32 @atoi(i8* %16)
%235 = getelementptr inbounds i8, i8* %106, i64 %231
%236 = load i8, i8* %235
%237 = call i64 @isdigit(i8 signext %236)
%238 = icmp eq i64 %237, 0
br i1 %238, label %239, label %264
239: ; preds = %230, %239
%240 = phi i64 [ %242, %239 ], [ %231, %230 ]
%241 = phi i32 [ %243, %239 ], [ 0, %230 ]
%242 = add nuw i64 %240, 1
%243 = add nuw nsw i32 %241, 1
%244 = getelementptr inbounds i8, i8* %106, i64 %242
%245 = load i8, i8* %244
%246 = call i64 @isdigit(i8 signext %245)
%247 = icmp eq i64 %246, 0
br i1 %247, label %239, label %248
248: ; preds = %239
%249 = add nsw i32 %241, -8
%250 = icmp ult i32 %249, -2
br i1 %250, label %264, label %251
251: ; preds = %248
%252 = and i64 %242, 4294967295
%253 = getelementptr inbounds i8, i8* %106, i64 %252
%254 = load i8, i8* %253
%255 = call i64 @isdigit(i8 signext %254)
%256 = icmp eq i64 %255, 0
br i1 %256, label %281, label %257
257: ; preds = %251
%258 = load i8, i8* %253
store i8 %258, i8* %17
%259 = add nuw nsw i64 %252, 1
%260 = getelementptr inbounds i8, i8* %106, i64 %259
%261 = load i8, i8* %260
%262 = call i64 @isdigit(i8 signext %261)
%263 = icmp eq i64 %262, 0
br i1 %263, label %281, label %273
264: ; preds = %230, %248
%265 = phi i32 [ %243, %248 ], [ 0, %230 ]
%266 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([136 x i8], [136 x i8]* @.str.51, i64 0, i64 0), i32 %265)
%267 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([31 x i8], [31 x i8]* @str.73, i64 0, i64 0))
br label %622
268: ; preds = %273
%269 = load i8, i8* %277
%270 = getelementptr inbounds [3 x i8], [3 x i8]* %9, i64 0, i64 2
store i8 %269, i8* %270
%271 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([107 x i8], [107 x i8]* @.str.52, i64 0, i64 0), i32 3)
%272 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([31 x i8], [31 x i8]* @str.73, i64 0, i64 0))
br label %622
273: ; preds = %257
%274 = load i8, i8* %260
%275 = getelementptr inbounds [3 x i8], [3 x i8]* %9, i64 0, i64 1
store i8 %274, i8* %275
%276 = add nuw nsw i64 %252, 2
%277 = getelementptr inbounds i8, i8* %106, i64 %276
%278 = load i8, i8* %277
%279 = call i64 @isdigit(i8 signext %278)
%280 = icmp eq i64 %279, 0
br i1 %280, label %281, label %268
281: ; preds = %257, %273, %251
%282 = phi i64 [ %242, %251 ], [ %259, %257 ], [ %276, %273 ]
%283 = phi i64 [ 0, %251 ], [ 1, %257 ], [ 2, %273 ]
%284 = getelementptr inbounds [3 x i8], [3 x i8]* %9, i64 0, i64 %283
store i8 0, i8* %284
%285 = call i32 @atoi(i8* %17)
%286 = shl i64 %282, 32
%287 = ashr exact i64 %286, 32
%288 = getelementptr inbounds i8, i8* %106, i64 %287
%289 = load i8, i8* %288
%290 = call i64 @isdigit(i8 signext %289)
%291 = icmp eq i64 %290, 0
br i1 %291, label %292, label %318
292: ; preds = %281, %292
%293 = phi i64 [ %295, %292 ], [ %287, %281 ]
%294 = phi i32 [ %296, %292 ], [ 0, %281 ]
%295 = add i64 %293, 1
%296 = add nuw nsw i32 %294, 1
%297 = getelementptr inbounds i8, i8* %106, i64 %295
%298 = load i8, i8* %297
%299 = call i64 @isdigit(i8 signext %298)
%300 = icmp eq i64 %299, 0
br i1 %300, label %292, label %301
301: ; preds = %292
%302 = add nsw i32 %294, -10
%303 = icmp ult i32 %302, -2
br i1 %303, label %318, label %304
304: ; preds = %301
%305 = shl i64 %295, 32
%306 = ashr exact i64 %305, 32
%307 = getelementptr inbounds i8, i8* %106, i64 %306
%308 = load i8, i8* %307
%309 = call i64 @isdigit(i8 signext %308)
%310 = icmp eq i64 %309, 0
br i1 %310, label %335, label %311
311: ; preds = %304
%312 = load i8, i8* %307
store i8 %312, i8* %18
%313 = add nsw i64 %306, 1
%314 = getelementptr inbounds i8, i8* %106, i64 %313
%315 = load i8, i8* %314
%316 = call i64 @isdigit(i8 signext %315)
%317 = icmp eq i64 %316, 0
br i1 %317, label %335, label %327
318: ; preds = %281, %301
%319 = phi i32 [ %296, %301 ], [ 0, %281 ]
%320 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([139 x i8], [139 x i8]* @.str.53, i64 0, i64 0), i32 %319)
%321 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([31 x i8], [31 x i8]* @str.73, i64 0, i64 0))
br label %622
322: ; preds = %327
%323 = load i8, i8* %331
%324 = getelementptr inbounds [3 x i8], [3 x i8]* %10, i64 0, i64 2
store i8 %323, i8* %324
%325 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([107 x i8], [107 x i8]* @.str.54, i64 0, i64 0), i32 3)
%326 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([31 x i8], [31 x i8]* @str.73, i64 0, i64 0))
br label %622
327: ; preds = %311
%328 = load i8, i8* %314
%329 = getelementptr inbounds [3 x i8], [3 x i8]* %10, i64 0, i64 1
store i8 %328, i8* %329
%330 = add nsw i64 %306, 2
%331 = getelementptr inbounds i8, i8* %106, i64 %330
%332 = load i8, i8* %331
%333 = call i64 @isdigit(i8 signext %332)
%334 = icmp eq i64 %333, 0
br i1 %334, label %335, label %322
335: ; preds = %311, %327, %304
%336 = phi i32 [ 0, %304 ], [ 1, %311 ], [ 2, %327 ]
%337 = zext i32 %336 to i64
%338 = getelementptr inbounds [3 x i8], [3 x i8]* %10, i64 0, i64 %337
store i8 0, i8* %338
%339 = call i32 @atoi(i8* %18)
%340 = call i8* @fgets(i8* %12, i32 510, i8* %93)
%341 = icmp eq i8* %340, null
br i1 %341, label %622, label %342
342: ; preds = %335
%343 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([3 x i8], [3 x i8]* @.str.46, i64 0, i64 0), i8* %340)
%344 = call i32 @strptime(i8* %340, i8* getelementptr inbounds ([36 x i8], [36 x i8]* @.str.55, i64 0, i64 0), %struct.tm* %3)
%345 = icmp eq i32 %344, 0
br i1 %345, label %346, label %348
346: ; preds = %342
%347 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([19 x i8], [19 x i8]* @str.63, i64 0, i64 0))
br label %622
348: ; preds = %342
%349 = getelementptr inbounds %struct.tm, %struct.tm* %3, i64 0, i32 0
store i32 -1, i32* %349
%350 = call i32 @mktime(%struct.tm* %3)
%351 = icmp eq i32 %350, -1
br i1 %351, label %352, label %354
352: ; preds = %348
%353 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([15 x i8], [15 x i8]* @.str.57, i64 0, i64 0))
br label %622
354: ; preds = %348
%355 = sext i32 %350 to i64
%356 = sext i32 %339 to i64
%357 = mul nsw i32 %285, 60
%358 = sext i32 %357 to i64
%359 = mul nsw i32 %234, 3600
%360 = sext i32 %359 to i64
%361 = mul nsw i32 %179, 86400
%362 = sext i32 %361 to i64
%363 = add nsw i64 %360, %362
%364 = add nsw i64 %363, %358
%365 = add nsw i64 %364, %356
%366 = add nsw i64 %365, %355
store i64 %366, i64* %5
%367 = call i32 @gmtime(i64* %5)
%368 = call i8* @asctime(i32 %367)
%369 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([88 x i8], [88 x i8]* @.str.58, i64 0, i64 0), i8* %368)
%370 = call i8* @fgets(i8* %12, i32 510, i8* %93)
%371 = icmp eq i8* %370, null
br i1 %371, label %622, label %372
372: ; preds = %354, %615
%373 = phi i8* [ %620, %615 ], [ %370, %354 ]
%374 = phi i32 [ %616, %615 ], [ %336, %354 ]
br label %375
375: ; preds = %372, %379
%376 = phi i8* [ %373, %372 ], [ %381, %379 ]
%377 = call i32* @strstr(i8* dereferenceable(1) %376, i8* dereferenceable(1) getelementptr inbounds ([3 x i8], [3 x i8]* @.str.59, i64 0, i64 0))
%378 = icmp eq i32* %377, null
br i1 %378, label %379, label %383
379: ; preds = %375
%380 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([3 x i8], [3 x i8]* @.str.46, i64 0, i64 0), i8* %376)
%381 = call i8* @fgets(i8* %12, i32 510, i8* %93)
%382 = icmp eq i8* %381, null
br i1 %382, label %622, label %375
383: ; preds = %375
%384 = call i32 @strlen(i8* %376)
%385 = icmp sgt i32 %384, -1
br i1 %385, label %386, label %417
386: ; preds = %383
%387 = icmp eq i32 %384, 0
br i1 %387, label %388, label %391
388: ; preds = %386, %397
%389 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([72 x i8], [72 x i8]* @.str.60, i64 0, i64 0), i8* %376)
%390 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([31 x i8], [31 x i8]* @str.73, i64 0, i64 0))
br label %622
391: ; preds = %386, %397
%392 = phi i32 [ %393, %397 ], [ %384, %386 ]
%393 = add nsw i32 %392, -1
%394 = zext i32 %393 to i64
%395 = getelementptr inbounds i8, i8* %376, i64 %394
%396 = load i8, i8* %395
switch i8 %396, label %399 [
i8 32, label %397
i8 10, label %397
]
397: ; preds = %391, %391
%398 = icmp eq i32 %393, 0
br i1 %398, label %388, label %391
399: ; preds = %391
%400 = icmp sgt i32 %392, -1
br i1 %400, label %401, label %417
401: ; preds = %399
%402 = icmp eq i32 %392, 0
br i1 %402, label %403, label %406
403: ; preds = %401, %414
%404 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([69 x i8], [69 x i8]* @.str.61, i64 0, i64 0), i8* %376)
%405 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([31 x i8], [31 x i8]* @str.73, i64 0, i64 0))
br label %622
406: ; preds = %401, %414
%407 = phi i32 [ %415, %414 ], [ %393, %401 ]
%408 = zext i32 %407 to i64
%409 = getelementptr inbounds i8, i8* %376, i64 %408
%410 = load i8, i8* %409
%411 = icmp eq i8 %410, 32
br i1 %411, label %412, label %414
412: ; preds = %406
%413 = add nuw nsw i32 %407, 1
br label %417
414: ; preds = %406
%415 = add nsw i32 %407, -1
%416 = icmp eq i32 %407, 0
br i1 %416, label %403, label %406
417: ; preds = %383, %399, %412
%418 = phi i32 [ %413, %412 ], [ %374, %399 ], [ %374, %383 ]
%419 = sext i32 %418 to i64
%420 = getelementptr inbounds i8, i8* %376, i64 %419
%421 = load i8, i8* %420
%422 = call i64 @isdigit(i8 signext %421)
%423 = icmp eq i64 %422, 0
br i1 %423, label %439, label %424
424: ; preds = %417, %424
%425 = phi i64 [ %430, %424 ], [ 0, %417 ]
%426 = phi i64 [ %428, %424 ], [ %419, %417 ]
%427 = phi i8* [ %432, %424 ], [ %420, %417 ]
%428 = add i64 %426, 1
%429 = load i8, i8* %427
%430 = add nuw i64 %425, 1
%431 = getelementptr inbounds [6 x i8], [6 x i8]* %7, i64 0, i64 %425
store i8 %429, i8* %431
%432 = getelementptr inbounds i8, i8* %376, i64 %428
%433 = load i8, i8* %432
%434 = call i64 @isdigit(i8 signext %433)
%435 = icmp eq i64 %434, 0
br i1 %435, label %436, label %424
436: ; preds = %424
%437 = shl i64 %428, 32
%438 = ashr exact i64 %437, 32
br label %439
439: ; preds = %436, %417
%440 = phi i64 [ %438, %436 ], [ %419, %417 ]
%441 = phi i64 [ %430, %436 ], [ 0, %417 ]
%442 = and i64 %441, 4294967295
%443 = getelementptr inbounds [6 x i8], [6 x i8]* %7, i64 0, i64 %442
store i8 0, i8* %443
%444 = call i32 @atoi(i8* %15)
br label %445
445: ; preds = %445, %439
%446 = phi i64 [ %447, %445 ], [ %440, %439 ]
%447 = add i64 %446, 1
%448 = getelementptr inbounds i8, i8* %376, i64 %446
%449 = load i8, i8* %448
%450 = call i64 @isdigit(i8 signext %449)
%451 = icmp eq i64 %450, 0
br i1 %451, label %445, label %452
452: ; preds = %445
%453 = shl i64 %446, 32
%454 = ashr exact i64 %453, 32
%455 = getelementptr inbounds i8, i8* %376, i64 %454
%456 = load i8, i8* %455
%457 = call i64 @isdigit(i8 signext %456)
%458 = icmp eq i64 %457, 0
br i1 %458, label %474, label %459
459: ; preds = %452, %459
%460 = phi i64 [ %465, %459 ], [ 0, %452 ]
%461 = phi i64 [ %463, %459 ], [ %454, %452 ]
%462 = phi i8* [ %467, %459 ], [ %455, %452 ]
%463 = add i64 %461, 1
%464 = load i8, i8* %462
%465 = add nuw i64 %460, 1
%466 = getelementptr inbounds [3 x i8], [3 x i8]* %8, i64 0, i64 %460
store i8 %464, i8* %466
%467 = getelementptr inbounds i8, i8* %376, i64 %463
%468 = load i8, i8* %467
%469 = call i64 @isdigit(i8 signext %468)
%470 = icmp eq i64 %469, 0
br i1 %470, label %471, label %459
471: ; preds = %459
%472 = shl i64 %463, 32
%473 = ashr exact i64 %472, 32
br label %474
474: ; preds = %471, %452
%475 = phi i64 [ %473, %471 ], [ %454, %452 ]
%476 = phi i64 [ %465, %471 ], [ 0, %452 ]
%477 = and i64 %476, 4294967295
%478 = getelementptr inbounds [3 x i8], [3 x i8]* %8, i64 0, i64 %477
store i8 0, i8* %478
%479 = call i32 @atoi(i8* %16)
br label %480
480: ; preds = %480, %474
%481 = phi i64 [ %482, %480 ], [ %475, %474 ]
%482 = add i64 %481, 1
%483 = getelementptr inbounds i8, i8* %376, i64 %481
%484 = load i8, i8* %483
%485 = call i64 @isdigit(i8 signext %484)
%486 = icmp eq i64 %485, 0
br i1 %486, label %480, label %487
487: ; preds = %480
%488 = shl i64 %481, 32
%489 = ashr exact i64 %488, 32
%490 = getelementptr inbounds i8, i8* %376, i64 %489
%491 = load i8, i8* %490
%492 = call i64 @isdigit(i8 signext %491)
%493 = icmp eq i64 %492, 0
br i1 %493, label %509, label %494
494: ; preds = %487, %494
%495 = phi i64 [ %500, %494 ], [ 0, %487 ]
%496 = phi i64 [ %498, %494 ], [ %489, %487 ]
%497 = phi i8* [ %502, %494 ], [ %490, %487 ]
%498 = add i64 %496, 1
%499 = load i8, i8* %497
%500 = add nuw i64 %495, 1
%501 = getelementptr inbounds [3 x i8], [3 x i8]* %9, i64 0, i64 %495
store i8 %499, i8* %501
%502 = getelementptr inbounds i8, i8* %376, i64 %498
%503 = load i8, i8* %502
%504 = call i64 @isdigit(i8 signext %503)
%505 = icmp eq i64 %504, 0
br i1 %505, label %506, label %494
506: ; preds = %494
%507 = shl i64 %498, 32
%508 = ashr exact i64 %507, 32
br label %509
509: ; preds = %506, %487
%510 = phi i64 [ %508, %506 ], [ %489, %487 ]
%511 = phi i64 [ %500, %506 ], [ 0, %487 ]
%512 = and i64 %511, 4294967295
%513 = getelementptr inbounds [3 x i8], [3 x i8]* %9, i64 0, i64 %512
store i8 0, i8* %513
%514 = call i32 @atoi(i8* %17)
br label %515
515: ; preds = %515, %509
%516 = phi i64 [ %517, %515 ], [ %510, %509 ]
%517 = add i64 %516, 1
%518 = getelementptr inbounds i8, i8* %376, i64 %516
%519 = load i8, i8* %518
%520 = call i64 @isdigit(i8 signext %519)
%521 = icmp eq i64 %520, 0
br i1 %521, label %515, label %522
522: ; preds = %515
%523 = shl i64 %516, 32
%524 = ashr exact i64 %523, 32
%525 = getelementptr inbounds i8, i8* %376, i64 %524
%526 = load i8, i8* %525
%527 = call i64 @isdigit(i8 signext %526)
%528 = icmp eq i64 %527, 0
br i1 %528, label %544, label %529
529: ; preds = %522, %529
%530 = phi i64 [ %535, %529 ], [ 0, %522 ]
%531 = phi i64 [ %533, %529 ], [ %524, %522 ]
%532 = phi i8* [ %537, %529 ], [ %525, %522 ]
%533 = add i64 %531, 1
%534 = load i8, i8* %532
%535 = add nuw i64 %530, 1
%536 = getelementptr inbounds [3 x i8], [3 x i8]* %10, i64 0, i64 %530
store i8 %534, i8* %536
%537 = getelementptr inbounds i8, i8* %376, i64 %533
%538 = load i8, i8* %537
%539 = call i64 @isdigit(i8 signext %538)
%540 = icmp eq i64 %539, 0
br i1 %540, label %541, label %529
541: ; preds = %529
%542 = shl i64 %533, 32
%543 = ashr exact i64 %542, 32
br label %544
544: ; preds = %541, %522
%545 = phi i64 [ %543, %541 ], [ %524, %522 ]
%546 = phi i64 [ %535, %541 ], [ 0, %522 ]
%547 = and i64 %546, 4294967295
%548 = getelementptr inbounds [3 x i8], [3 x i8]* %10, i64 0, i64 %547
store i8 0, i8* %548
%549 = call i32 @atoi(i8* %18)
br label %550
550: ; preds = %550, %544
%551 = phi i64 [ %552, %550 ], [ %545, %544 ]
%552 = add i64 %551, 1
%553 = getelementptr inbounds i8, i8* %376, i64 %551
%554 = load i8, i8* %553
%555 = call i64 @isdigit(i8 signext %554)
%556 = icmp eq i64 %555, 0
br i1 %556, label %550, label %557
557: ; preds = %550
%558 = load i64, i64* %5
%559 = sext i32 %549 to i64
%560 = mul nsw i32 %514, 60
%561 = sext i32 %560 to i64
%562 = mul nsw i32 %479, 3600
%563 = sext i32 %562 to i64
%564 = mul nsw i32 %444, 86400
%565 = sext i32 %564 to i64
%566 = add nsw i64 %563, %565
%567 = add nsw i64 %566, %561
%568 = add nsw i64 %567, %559
%569 = sub i64 %558, %568
store i64 %569, i64* %6
%570 = call i32 @strlen(i8* %376)
%571 = add nsw i32 %570, -1
%572 = sext i32 %571 to i64
%573 = getelementptr inbounds i8, i8* %376, i64 %572
store i8 32, i8* %573
%574 = add nsw i32 %570, 1
%575 = sext i32 %570 to i64
%576 = getelementptr inbounds i8, i8* %376, i64 %575
store i8 115, i8* %576
%577 = add nsw i32 %570, 2
%578 = sext i32 %574 to i64
%579 = getelementptr inbounds i8, i8* %376, i64 %578
store i8 105, i8* %579
%580 = add nsw i32 %570, 3
%581 = sext i32 %577 to i64
%582 = getelementptr inbounds i8, i8* %376, i64 %581
store i8 110, i8* %582
%583 = add nsw i32 %570, 4
%584 = sext i32 %580 to i64
%585 = getelementptr inbounds i8, i8* %376, i64 %584
store i8 99, i8* %585
%586 = add nsw i32 %570, 5
%587 = sext i32 %583 to i64
%588 = getelementptr inbounds i8, i8* %376, i64 %587
store i8 101, i8* %588
%589 = add i32 %570, 6
%590 = sext i32 %586 to i64
%591 = getelementptr inbounds i8, i8* %376, i64 %590
store i8 32, i8* %591
%592 = call i32 @gmtime(i64* %6)
%593 = call i8* @asctime(i32 %592)
%594 = call i32 @strlen(i8* %593)
%595 = icmp sgt i32 %594, 0
br i1 %595, label %596, label %615
596: ; preds = %557
%597 = sext i32 %589 to i64
br label %598
598: ; preds = %596, %598
%599 = phi i64 [ 0, %596 ], [ %607, %598 ]
%600 = phi i64 [ %597, %596 ], [ %605, %598 ]
%601 = call i32 @gmtime(i64* %6)
%602 = call i8* @asctime(i32 %601)
%603 = getelementptr inbounds i8, i8* %602, i64 %599
%604 = load i8, i8* %603
%605 = add nsw i64 %600, 1
%606 = getelementptr inbounds i8, i8* %376, i64 %600
store i8 %604, i8* %606
%607 = add nuw nsw i64 %599, 1
%608 = call i32 @gmtime(i64* %6)
%609 = call i8* @asctime(i32 %608)
%610 = call i32 @strlen(i8* %609)
%611 = sext i32 %610 to i64
%612 = icmp slt i64 %607, %611
br i1 %612, label %598, label %613
613: ; preds = %598
%614 = trunc i64 %605 to i32
br label %615
615: ; preds = %613, %557
%616 = phi i32 [ %589, %557 ], [ %614, %613 ]
%617 = sext i32 %616 to i64
%618 = getelementptr inbounds i8, i8* %376, i64 %617
store i8 0, i8* %618
%619 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([3 x i8], [3 x i8]* @.str.46, i64 0, i64 0), i8* %376)
%620 = call i8* @fgets(i8* %12, i32 510, i8* %93)
%621 = icmp eq i8* %620, null
br i1 %621, label %622, label %372
622: ; preds = %615, %379, %354, %335, %403, %388, %352, %346, %322, %318, %268, %264, %213, %209, %142, %138, %102, %98, %20
%623 = phi i32 [ 1, %20 ], [ 2, %98 ], [ 3, %102 ], [ 4, %138 ], [ 5, %142 ], [ 6, %209 ], [ 7, %213 ], [ 8, %264 ], [ 9, %268 ], [ 10, %318 ], [ 11, %322 ], [ 13, %346 ], [ 14, %352 ], [ 16, %388 ], [ 16, %403 ], [ 12, %335 ], [ 0, %354 ], [ 0, %379 ], [ 0, %615 ]
ret i32 %623
}