#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 */

/* Variables and functions */
scalar_t__ isdigit(char);
scalar_t__ strncmp(char *, char *, int);
int parse_time(char *str, int *date, int *time) {
  int hh, mm, year, day, leap;
  int k;
  if (str[2] == ':') {
    if (!isdigit(str[0]) || !isdigit(str[1])) {
      return 0;
    }
    hh = (str[0] - '0') * 10 + str[1] - '0';
    if (!isdigit(str[3]) || !isdigit(str[4])) {
      return 0;
    }
    mm = (str[3] - '0') * 10 + str[4] - '0';
    if (str[5] != 'Z' && str[5] != 'z') {
      return 1;
    }
    k = 6;
  } else if (str[2] == 'Z' || str[2] == 'z') {
    if (!isdigit(str[0]) || !isdigit(str[1])) {
      return 0;
    }
    hh = (str[0] - '0') * 10 + str[1] - '0';
    mm = 0;
    k = 3;
  } else if (str[1] == ':') {
    if (!isdigit(str[0])) {
      return 0;
    }
    hh = str[0] - '0';
    if (!isdigit(str[2]) || !isdigit(str[3])) {
      return 0;
    }
    mm = (str[2] - '0') * 10 + str[3] - '0';
    if (str[4] != 'Z' && str[4] != 'z') {
      return 0;
    }
    k = 5;
  } else if (str[1] == 'Z') {
    if (!isdigit(str[0])) {
      return 0;
    }
    hh = str[0] - '0';
    mm = 0;
    k = 2;
  } else {
    hh = mm = 0;
    k = 0;
  }
  *time = 100 * (100 * hh + mm);
  if (isdigit(str[k])) {
    if (isdigit(str[k + 1])) {
      day = (str[k] - '0') * 10 + str[k + 1] - '0';
      k += 2;
    } else {
      day = str[k] - '0';
      k += 1;
    }
  } else {
    day = 0;
  }
  if (isdigit(str[k + 3]) && isdigit(str[k + 4])) {
    if (isdigit(str[k + 5]) && isdigit(str[k + 6])) {
      year = (str[k + 5] - '0') * 10 + str[k + 6] - '0';
    } else {
      year = (str[k + 3] - '0') * 10 + str[k + 4] - '0';
    }
  } else {
    return 0;
  }
  leap = ((year % 4) == 0);
  if (strncmp(str + k, "jan", 3) == 0 || strncmp(str + k, "JAN", 3) == 0) {
    day += 0;
  } else if (strncmp(str + k, "feb", 3) == 0 ||
             strncmp(str + k, "FEB", 3) == 0) {
    day += 31;
  } else if (strncmp(str + k, "mar", 3) == 0 ||
             strncmp(str + k, "MAR", 3) == 0) {
    day += 59 + leap;
  } else if (strncmp(str + k, "apr", 3) == 0 ||
             strncmp(str + k, "APR", 3) == 0) {
    day += 90 + leap;
  } else if (strncmp(str + k, "may", 3) == 0 ||
             strncmp(str + k, "MAY", 3) == 0) {
    day += 120 + leap;
  } else if (strncmp(str + k, "jun", 3) == 0 ||
             strncmp(str + k, "JUN", 3) == 0) {
    day += 151 + leap;
  } else if (strncmp(str + k, "jul", 3) == 0 ||
             strncmp(str + k, "JUL", 3) == 0) {
    day += 181 + leap;
  } else if (strncmp(str + k, "aug", 3) == 0 ||
             strncmp(str + k, "AUG", 3) == 0) {
    day += 211 + leap;
  } else if (strncmp(str + k, "sep", 3) == 0 ||
             strncmp(str + k, "SEP", 3) == 0) {
    day += 242 + leap;
  } else if (strncmp(str + k, "oct", 3) == 0 ||
             strncmp(str + k, "OCT", 3) == 0) {
    day += 272 + leap;
  } else if (strncmp(str + k, "nov", 3) == 0 ||
             strncmp(str + k, "NOV", 3) == 0) {
    day += 303 + leap;
  } else if (strncmp(str + k, "dec", 3) == 0 ||
             strncmp(str + k, "DEC", 3) == 0) {
    day += 333 + leap;
  } else {
    return 0;
  }
  *date = 1000 * year + day;
  return 1;
}


x86 assembly (clang, -O0):
<parse_time>:
push   %rbp
mov    %rsp,%rbp
sub    $0x40,%rsp
mov    %rdi,-0x10(%rbp)
mov    %rsi,-0x18(%rbp)
mov    %rdx,-0x20(%rbp)
mov    -0x10(%rbp),%rax
movsbl 0x2(%rax),%eax
cmp    $0x3a,%eax
jne    122d <parse_time+0x10d>
mov    -0x10(%rbp),%rax
movsbl (%rax),%edi
call   1040 <isdigit@plt>
cmp    $0x0,%rax
je     1172 <parse_time+0x52>
mov    -0x10(%rbp),%rax
movsbl 0x1(%rax),%edi
call   1040 <isdigit@plt>
cmp    $0x0,%rax
jne    117e <parse_time+0x5e>
movl   $0x0,-0x4(%rbp)
jmp    1a79 <parse_time+0x959>
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
sub    $0x30,%eax
imul   $0xa,%eax,%eax
mov    -0x10(%rbp),%rcx
movsbl 0x1(%rcx),%ecx
add    %ecx,%eax
sub    $0x30,%eax
mov    %eax,-0x24(%rbp)
mov    -0x10(%rbp),%rax
movsbl 0x3(%rax),%edi
call   1040 <isdigit@plt>
cmp    $0x0,%rax
je     11c9 <parse_time+0xa9>
mov    -0x10(%rbp),%rax
movsbl 0x4(%rax),%edi
call   1040 <isdigit@plt>
cmp    $0x0,%rax
jne    11d5 <parse_time+0xb5>
movl   $0x0,-0x4(%rbp)
jmp    1a79 <parse_time+0x959>
mov    -0x10(%rbp),%rax
movsbl 0x3(%rax),%eax
sub    $0x30,%eax
imul   $0xa,%eax,%eax
mov    -0x10(%rbp),%rcx
movsbl 0x4(%rcx),%ecx
add    %ecx,%eax
sub    $0x30,%eax
mov    %eax,-0x28(%rbp)
mov    -0x10(%rbp),%rax
movsbl 0x5(%rax),%eax
cmp    $0x5a,%eax
je     1221 <parse_time+0x101>
mov    -0x10(%rbp),%rax
movsbl 0x5(%rax),%eax
cmp    $0x7a,%eax
je     1221 <parse_time+0x101>
movl   $0x1,-0x4(%rbp)
jmp    1a79 <parse_time+0x959>
movl   $0x6,-0x38(%rbp)
jmp    1401 <parse_time+0x2e1>
mov    -0x10(%rbp),%rax
movsbl 0x2(%rax),%eax
cmp    $0x5a,%eax
je     124f <parse_time+0x12f>
mov    -0x10(%rbp),%rax
movsbl 0x2(%rax),%eax
cmp    $0x7a,%eax
jne    12b8 <parse_time+0x198>
mov    -0x10(%rbp),%rax
movsbl (%rax),%edi
call   1040 <isdigit@plt>
cmp    $0x0,%rax
je     127c <parse_time+0x15c>
mov    -0x10(%rbp),%rax
movsbl 0x1(%rax),%edi
call   1040 <isdigit@plt>
cmp    $0x0,%rax
jne    1288 <parse_time+0x168>
movl   $0x0,-0x4(%rbp)
jmp    1a79 <parse_time+0x959>
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
sub    $0x30,%eax
imul   $0xa,%eax,%eax
mov    -0x10(%rbp),%rcx
movsbl 0x1(%rcx),%ecx
add    %ecx,%eax
sub    $0x30,%eax
mov    %eax,-0x24(%rbp)
movl   $0x0,-0x28(%rbp)
movl   $0x3,-0x38(%rbp)
jmp    13fc <parse_time+0x2dc>
mov    -0x10(%rbp),%rax
movsbl 0x1(%rax),%eax
cmp    $0x3a,%eax
jne    138a <parse_time+0x26a>
mov    -0x10(%rbp),%rax
movsbl (%rax),%edi
call   1040 <isdigit@plt>
cmp    $0x0,%rax
jne    12eb <parse_time+0x1cb>
movl   $0x0,-0x4(%rbp)
jmp    1a79 <parse_time+0x959>
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
sub    $0x30,%eax
mov    %eax,-0x24(%rbp)
mov    -0x10(%rbp),%rax
movsbl 0x2(%rax),%edi
call   1040 <isdigit@plt>
cmp    $0x0,%rax
je     1326 <parse_time+0x206>
mov    -0x10(%rbp),%rax
movsbl 0x3(%rax),%edi
call   1040 <isdigit@plt>
cmp    $0x0,%rax
jne    1332 <parse_time+0x212>
movl   $0x0,-0x4(%rbp)
jmp    1a79 <parse_time+0x959>
mov    -0x10(%rbp),%rax
movsbl 0x2(%rax),%eax
sub    $0x30,%eax
imul   $0xa,%eax,%eax
mov    -0x10(%rbp),%rcx
movsbl 0x3(%rcx),%ecx
add    %ecx,%eax
sub    $0x30,%eax
mov    %eax,-0x28(%rbp)
mov    -0x10(%rbp),%rax
movsbl 0x4(%rax),%eax
cmp    $0x5a,%eax
je     137e <parse_time+0x25e>
mov    -0x10(%rbp),%rax
movsbl 0x4(%rax),%eax
cmp    $0x7a,%eax
je     137e <parse_time+0x25e>
movl   $0x0,-0x4(%rbp)
jmp    1a79 <parse_time+0x959>
movl   $0x5,-0x38(%rbp)
jmp    13f7 <parse_time+0x2d7>
mov    -0x10(%rbp),%rax
movsbl 0x1(%rax),%eax
cmp    $0x5a,%eax
jne    13dd <parse_time+0x2bd>
mov    -0x10(%rbp),%rax
movsbl (%rax),%edi
call   1040 <isdigit@plt>
cmp    $0x0,%rax
jne    13bd <parse_time+0x29d>
movl   $0x0,-0x4(%rbp)
jmp    1a79 <parse_time+0x959>
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
sub    $0x30,%eax
mov    %eax,-0x24(%rbp)
movl   $0x0,-0x28(%rbp)
movl   $0x2,-0x38(%rbp)
jmp    13f2 <parse_time+0x2d2>
movl   $0x0,-0x28(%rbp)
movl   $0x0,-0x24(%rbp)
movl   $0x0,-0x38(%rbp)
jmp    13f7 <parse_time+0x2d7>
jmp    13fc <parse_time+0x2dc>
jmp    1401 <parse_time+0x2e1>
imul   $0x64,-0x24(%rbp),%eax
add    -0x28(%rbp),%eax
imul   $0x64,%eax,%ecx
mov    -0x20(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x10(%rbp),%rax
movslq -0x38(%rbp),%rcx
movsbl (%rax,%rcx,1),%edi
call   1040 <isdigit@plt>
cmp    $0x0,%rax
je     14a5 <parse_time+0x385>
mov    -0x10(%rbp),%rax
mov    -0x38(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%edi
call   1040 <isdigit@plt>
cmp    $0x0,%rax
je     1485 <parse_time+0x365>
mov    -0x10(%rbp),%rax
movslq -0x38(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
sub    $0x30,%eax
imul   $0xa,%eax,%eax
mov    -0x10(%rbp),%rcx
mov    -0x38(%rbp),%edx
add    $0x1,%edx
movslq %edx,%rdx
movsbl (%rcx,%rdx,1),%ecx
add    %ecx,%eax
sub    $0x30,%eax
mov    %eax,-0x30(%rbp)
mov    -0x38(%rbp),%eax
add    $0x2,%eax
mov    %eax,-0x38(%rbp)
jmp    14a0 <parse_time+0x380>
mov    -0x10(%rbp),%rax
movslq -0x38(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
sub    $0x30,%eax
mov    %eax,-0x30(%rbp)
mov    -0x38(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x38(%rbp)
jmp    14ac <parse_time+0x38c>
movl   $0x0,-0x30(%rbp)
mov    -0x10(%rbp),%rax
mov    -0x38(%rbp),%ecx
add    $0x3,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%edi
call   1040 <isdigit@plt>
cmp    $0x0,%rax
je     1596 <parse_time+0x476>
mov    -0x10(%rbp),%rax
mov    -0x38(%rbp),%ecx
add    $0x4,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%edi
call   1040 <isdigit@plt>
cmp    $0x0,%rax
je     1596 <parse_time+0x476>
mov    -0x10(%rbp),%rax
mov    -0x38(%rbp),%ecx
add    $0x5,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%edi
call   1040 <isdigit@plt>
cmp    $0x0,%rax
je     1561 <parse_time+0x441>
mov    -0x10(%rbp),%rax
mov    -0x38(%rbp),%ecx
add    $0x6,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%edi
call   1040 <isdigit@plt>
cmp    $0x0,%rax
je     1561 <parse_time+0x441>
mov    -0x10(%rbp),%rax
mov    -0x38(%rbp),%ecx
add    $0x5,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
sub    $0x30,%eax
imul   $0xa,%eax,%eax
mov    -0x10(%rbp),%rcx
mov    -0x38(%rbp),%edx
add    $0x6,%edx
movslq %edx,%rdx
movsbl (%rcx,%rdx,1),%ecx
add    %ecx,%eax
sub    $0x30,%eax
mov    %eax,-0x2c(%rbp)
jmp    1591 <parse_time+0x471>
mov    -0x10(%rbp),%rax
mov    -0x38(%rbp),%ecx
add    $0x3,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
sub    $0x30,%eax
imul   $0xa,%eax,%eax
mov    -0x10(%rbp),%rcx
mov    -0x38(%rbp),%edx
add    $0x4,%edx
movslq %edx,%rdx
movsbl (%rcx,%rdx,1),%ecx
add    %ecx,%eax
sub    $0x30,%eax
mov    %eax,-0x2c(%rbp)
jmp    15a2 <parse_time+0x482>
movl   $0x0,-0x4(%rbp)
jmp    1a79 <parse_time+0x959>
mov    -0x2c(%rbp),%eax
mov    $0x4,%ecx
cltd
idiv   %ecx
cmp    $0x0,%edx
sete   %al
and    $0x1,%al
movzbl %al,%eax
mov    %eax,-0x34(%rbp)
mov    -0x10(%rbp),%rdi
movslq -0x38(%rbp),%rax
add    %rax,%rdi
lea    0xa33(%rip),%rsi
mov    $0x3,%edx
call   1030 <strncmp@plt>
cmp    $0x0,%rax
je     1607 <parse_time+0x4e7>
mov    -0x10(%rbp),%rdi
movslq -0x38(%rbp),%rax
add    %rax,%rdi
lea    0xa11(%rip),%rsi
mov    $0x3,%edx
call   1030 <strncmp@plt>
cmp    $0x0,%rax
jne    1615 <parse_time+0x4f5>
mov    -0x30(%rbp),%eax
add    $0x0,%eax
mov    %eax,-0x30(%rbp)
jmp    1a62 <parse_time+0x942>
mov    -0x10(%rbp),%rdi
movslq -0x38(%rbp),%rax
add    %rax,%rdi
lea    0x9e1(%rip),%rsi
mov    $0x3,%edx
call   1030 <strncmp@plt>
cmp    $0x0,%rax
je     1661 <parse_time+0x541>
mov    -0x10(%rbp),%rdi
movslq -0x38(%rbp),%rax
add    %rax,%rdi
lea    0x9bf(%rip),%rsi
mov    $0x3,%edx
call   1030 <strncmp@plt>
cmp    $0x0,%rax
jne    166f <parse_time+0x54f>
mov    -0x30(%rbp),%eax
add    $0x1f,%eax
mov    %eax,-0x30(%rbp)
jmp    1a5d <parse_time+0x93d>
mov    -0x10(%rbp),%rdi
movslq -0x38(%rbp),%rax
add    %rax,%rdi
lea    0x98f(%rip),%rsi
mov    $0x3,%edx
call   1030 <strncmp@plt>
cmp    $0x0,%rax
je     16bb <parse_time+0x59b>
mov    -0x10(%rbp),%rdi
movslq -0x38(%rbp),%rax
add    %rax,%rdi
lea    0x96d(%rip),%rsi
mov    $0x3,%edx
call   1030 <strncmp@plt>
cmp    $0x0,%rax
jne    16cc <parse_time+0x5ac>
mov    -0x34(%rbp),%eax
add    $0x3b,%eax
add    -0x30(%rbp),%eax
mov    %eax,-0x30(%rbp)
jmp    1a58 <parse_time+0x938>
mov    -0x10(%rbp),%rdi
movslq -0x38(%rbp),%rax
add    %rax,%rdi
lea    0x93a(%rip),%rsi
mov    $0x3,%edx
call   1030 <strncmp@plt>
cmp    $0x0,%rax
je     1718 <parse_time+0x5f8>
mov    -0x10(%rbp),%rdi
movslq -0x38(%rbp),%rax
add    %rax,%rdi
lea    0x918(%rip),%rsi
mov    $0x3,%edx
call   1030 <strncmp@plt>
cmp    $0x0,%rax
jne    1729 <parse_time+0x609>
mov    -0x34(%rbp),%eax
add    $0x5a,%eax
add    -0x30(%rbp),%eax
mov    %eax,-0x30(%rbp)
jmp    1a53 <parse_time+0x933>
mov    -0x10(%rbp),%rdi
movslq -0x38(%rbp),%rax
add    %rax,%rdi
lea    0x8e5(%rip),%rsi
mov    $0x3,%edx
call   1030 <strncmp@plt>
cmp    $0x0,%rax
je     1775 <parse_time+0x655>
mov    -0x10(%rbp),%rdi
movslq -0x38(%rbp),%rax
add    %rax,%rdi
lea    0x8c3(%rip),%rsi
mov    $0x3,%edx
call   1030 <strncmp@plt>
cmp    $0x0,%rax
jne    1786 <parse_time+0x666>
mov    -0x34(%rbp),%eax
add    $0x78,%eax
add    -0x30(%rbp),%eax
mov    %eax,-0x30(%rbp)
jmp    1a4e <parse_time+0x92e>
mov    -0x10(%rbp),%rdi
movslq -0x38(%rbp),%rax
add    %rax,%rdi
lea    0x890(%rip),%rsi
mov    $0x3,%edx
call   1030 <strncmp@plt>
cmp    $0x0,%rax
je     17d2 <parse_time+0x6b2>
mov    -0x10(%rbp),%rdi
movslq -0x38(%rbp),%rax
add    %rax,%rdi
lea    0x86e(%rip),%rsi
mov    $0x3,%edx
call   1030 <strncmp@plt>
cmp    $0x0,%rax
jne    17e5 <parse_time+0x6c5>
mov    -0x34(%rbp),%eax
add    $0x97,%eax
add    -0x30(%rbp),%eax
mov    %eax,-0x30(%rbp)
jmp    1a49 <parse_time+0x929>
mov    -0x10(%rbp),%rdi
movslq -0x38(%rbp),%rax
add    %rax,%rdi
lea    0x839(%rip),%rsi
mov    $0x3,%edx
call   1030 <strncmp@plt>
cmp    $0x0,%rax
je     1831 <parse_time+0x711>
mov    -0x10(%rbp),%rdi
movslq -0x38(%rbp),%rax
add    %rax,%rdi
lea    0x817(%rip),%rsi
mov    $0x3,%edx
call   1030 <strncmp@plt>
cmp    $0x0,%rax
jne    1844 <parse_time+0x724>
mov    -0x34(%rbp),%eax
add    $0xb5,%eax
add    -0x30(%rbp),%eax
mov    %eax,-0x30(%rbp)
jmp    1a44 <parse_time+0x924>
mov    -0x10(%rbp),%rdi
movslq -0x38(%rbp),%rax
add    %rax,%rdi
lea    0x7e2(%rip),%rsi
mov    $0x3,%edx
call   1030 <strncmp@plt>
cmp    $0x0,%rax
je     1890 <parse_time+0x770>
mov    -0x10(%rbp),%rdi
movslq -0x38(%rbp),%rax
add    %rax,%rdi
lea    0x7c0(%rip),%rsi
mov    $0x3,%edx
call   1030 <strncmp@plt>
cmp    $0x0,%rax
jne    18a3 <parse_time+0x783>
mov    -0x34(%rbp),%eax
add    $0xd3,%eax
add    -0x30(%rbp),%eax
mov    %eax,-0x30(%rbp)
jmp    1a3f <parse_time+0x91f>
mov    -0x10(%rbp),%rdi
movslq -0x38(%rbp),%rax
add    %rax,%rdi
lea    0x78b(%rip),%rsi
mov    $0x3,%edx
call   1030 <strncmp@plt>
cmp    $0x0,%rax
je     18ef <parse_time+0x7cf>
mov    -0x10(%rbp),%rdi
movslq -0x38(%rbp),%rax
add    %rax,%rdi
lea    0x769(%rip),%rsi
mov    $0x3,%edx
call   1030 <strncmp@plt>
cmp    $0x0,%rax
jne    1902 <parse_time+0x7e2>
mov    -0x34(%rbp),%eax
add    $0xf2,%eax
add    -0x30(%rbp),%eax
mov    %eax,-0x30(%rbp)
jmp    1a3a <parse_time+0x91a>
mov    -0x10(%rbp),%rdi
movslq -0x38(%rbp),%rax
add    %rax,%rdi
lea    0x734(%rip),%rsi
mov    $0x3,%edx
call   1030 <strncmp@plt>
cmp    $0x0,%rax
je     194e <parse_time+0x82e>
mov    -0x10(%rbp),%rdi
movslq -0x38(%rbp),%rax
add    %rax,%rdi
lea    0x712(%rip),%rsi
mov    $0x3,%edx
call   1030 <strncmp@plt>
cmp    $0x0,%rax
jne    1961 <parse_time+0x841>
mov    -0x34(%rbp),%eax
add    $0x110,%eax
add    -0x30(%rbp),%eax
mov    %eax,-0x30(%rbp)
jmp    1a35 <parse_time+0x915>
mov    -0x10(%rbp),%rdi
movslq -0x38(%rbp),%rax
add    %rax,%rdi
lea    0x6dd(%rip),%rsi
mov    $0x3,%edx
call   1030 <strncmp@plt>
cmp    $0x0,%rax
je     19ad <parse_time+0x88d>
mov    -0x10(%rbp),%rdi
movslq -0x38(%rbp),%rax
add    %rax,%rdi
lea    0x6bb(%rip),%rsi
mov    $0x3,%edx
call   1030 <strncmp@plt>
cmp    $0x0,%rax
jne    19c0 <parse_time+0x8a0>
mov    -0x34(%rbp),%eax
add    $0x12f,%eax
add    -0x30(%rbp),%eax
mov    %eax,-0x30(%rbp)
jmp    1a30 <parse_time+0x910>
mov    -0x10(%rbp),%rdi
movslq -0x38(%rbp),%rax
add    %rax,%rdi
lea    0x686(%rip),%rsi
mov    $0x3,%edx
call   1030 <strncmp@plt>
cmp    $0x0,%rax
je     1a0c <parse_time+0x8ec>
mov    -0x10(%rbp),%rdi
movslq -0x38(%rbp),%rax
add    %rax,%rdi
lea    0x664(%rip),%rsi
mov    $0x3,%edx
call   1030 <strncmp@plt>
cmp    $0x0,%rax
jne    1a1f <parse_time+0x8ff>
mov    -0x34(%rbp),%eax
add    $0x14d,%eax
add    -0x30(%rbp),%eax
mov    %eax,-0x30(%rbp)
jmp    1a2b <parse_time+0x90b>
movl   $0x0,-0x4(%rbp)
jmp    1a79 <parse_time+0x959>
jmp    1a30 <parse_time+0x910>
jmp    1a35 <parse_time+0x915>
jmp    1a3a <parse_time+0x91a>
jmp    1a3f <parse_time+0x91f>
jmp    1a44 <parse_time+0x924>
jmp    1a49 <parse_time+0x929>
jmp    1a4e <parse_time+0x92e>
jmp    1a53 <parse_time+0x933>
jmp    1a58 <parse_time+0x938>
jmp    1a5d <parse_time+0x93d>
jmp    1a62 <parse_time+0x942>
imul   $0x3e8,-0x2c(%rbp),%ecx
add    -0x30(%rbp),%ecx
mov    -0x18(%rbp),%rax
mov    %ecx,(%rax)
movl   $0x1,-0x4(%rbp)
mov    -0x4(%rbp),%eax
add    $0x40,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<parse_time>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
push   %rax
mov    %rdx,%r12
mov    %rsi,%rbp
mov    %rdi,%r14
mov    0x2(%rdi),%al
cmp    $0x7a,%al
je     11e3 <parse_time+0xc3>
cmp    $0x5a,%al
je     11e3 <parse_time+0xc3>
cmp    $0x3a,%al
jne    1230 <parse_time+0x110>
movsbl (%r14),%edi
call   1040 <isdigit@plt>
xor    %ebx,%ebx
test   %rax,%rax
je     179c <parse_time+0x67c>
movsbl 0x1(%r14),%edi
call   1040 <isdigit@plt>
test   %rax,%rax
je     179c <parse_time+0x67c>
movsbl (%r14),%r15d
movsbl 0x1(%r14),%r13d
movsbl 0x3(%r14),%edi
call   1040 <isdigit@plt>
test   %rax,%rax
je     179c <parse_time+0x67c>
movsbl 0x4(%r14),%edi
call   1040 <isdigit@plt>
test   %rax,%rax
je     179c <parse_time+0x67c>
mov    0x5(%r14),%al
or     $0x20,%al
cmp    $0x7a,%al
jne    1797 <parse_time+0x677>
mov    %rbp,(%rsp)
lea    (%r15,%r15,4),%eax
lea    -0x210(%r13,%rax,2),%r13d
ff
movsbl 0x3(%r14),%eax
lea    (%rax,%rax,4),%eax
movsbl 0x4(%r14),%ecx
lea    (%rcx,%rax,2),%eax
add    $0xfffffdf0,%eax
mov    $0x6,%r15d
jmp    12eb <parse_time+0x1cb>
movsbl (%r14),%edi
call   1040 <isdigit@plt>
xor    %ebx,%ebx
test   %rax,%rax
je     179c <parse_time+0x67c>
movsbl 0x1(%r14),%edi
call   1040 <isdigit@plt>
test   %rax,%rax
je     179c <parse_time+0x67c>
mov    %rbp,(%rsp)
movsbl (%r14),%eax
lea    (%rax,%rax,4),%eax
movsbl 0x1(%r14),%ecx
lea    (%rcx,%rax,2),%r13d
add    $0xfffffdf0,%r13d
mov    $0x3,%r15d
jmp    12e9 <parse_time+0x1c9>
mov    0x1(%r14),%cl
cmp    $0x5a,%cl
je     12c5 <parse_time+0x1a5>
mov    %rbp,(%rsp)
xor    %r13d,%r13d
mov    $0x0,%eax
mov    $0x0,%r15d
cmp    $0x3a,%cl
jne    12eb <parse_time+0x1cb>
movsbl (%r14),%edi
call   1040 <isdigit@plt>
xor    %ebx,%ebx
test   %rax,%rax
je     179c <parse_time+0x67c>
movsbl (%r14),%r13d
movsbl 0x2(%r14),%edi
call   1040 <isdigit@plt>
test   %rax,%rax
je     179c <parse_time+0x67c>
movsbl 0x3(%r14),%edi
call   1040 <isdigit@plt>
test   %rax,%rax
je     179c <parse_time+0x67c>
mov    0x4(%r14),%al
or     $0x20,%al
cmp    $0x7a,%al
jne    179c <parse_time+0x67c>
add    $0xffffffd0,%r13d
movsbl 0x2(%r14),%eax
lea    (%rax,%rax,4),%eax
movsbl 0x3(%r14),%ecx
lea    (%rcx,%rax,2),%eax
add    $0xfffffdf0,%eax
mov    $0x5,%r15d
jmp    12eb <parse_time+0x1cb>
movsbl (%r14),%edi
call   1040 <isdigit@plt>
test   %rax,%rax
je     13ab <parse_time+0x28b>
mov    %rbp,(%rsp)
movsbl (%r14),%r13d
add    $0xffffffd0,%r13d
mov    $0x2,%r15d
xor    %eax,%eax
imul   $0x64,%r13d,%ecx
add    %eax,%ecx
imul   $0x64,%ecx,%eax
mov    %eax,(%r12)
mov    %r15d,%ebx
movsbl (%r14,%rbx,1),%edi
call   1040 <isdigit@plt>
test   %rax,%rax
je     1341 <parse_time+0x221>
movsbl 0x1(%r14,%rbx,1),%edi
mov    %rbx,%rbp
add    $0x1,%rbp
call   1040 <isdigit@plt>
movsbl (%r14,%rbx,1),%r13d
test   %rax,%rax
je     1346 <parse_time+0x226>
lea    0x0(%r13,%r13,4),%eax
movsbl (%r14,%rbp,1),%ecx
lea    (%rcx,%rax,2),%r13d
add    $0xfffffdf0,%r13d
add    $0x2,%r15d
jmp    134d <parse_time+0x22d>
xor    %r13d,%r13d
jmp    134d <parse_time+0x22d>
add    $0xffffffd0,%r13d
mov    %ebp,%r15d
mov    %r15d,%ebp
movsbl 0x3(%rbp,%r14,1),%edi
call   1040 <isdigit@plt>
test   %rax,%rax
je     13ab <parse_time+0x28b>
movsbl 0x4(%rbp,%r14,1),%edi
call   1040 <isdigit@plt>
test   %rax,%rax
mov    $0x0,%ebx
je     179c <parse_time+0x67c>
movsbl 0x5(%rbp,%r14,1),%edi
call   1040 <isdigit@plt>
test   %rax,%rax
je     13b2 <parse_time+0x292>
movsbl 0x6(%rbp,%r14,1),%edi
call   1040 <isdigit@plt>
test   %rax,%rax
je     13b2 <parse_time+0x292>
lea    (%r14,%rbp,1),%rcx
add    $0x5,%rcx
lea    (%r14,%rbp,1),%rax
add    $0x6,%rax
jmp    13c2 <parse_time+0x2a2>
xor    %ebx,%ebx
jmp    179c <parse_time+0x67c>
lea    (%r14,%rbp,1),%rcx
add    $0x3,%rcx
lea    (%r14,%rbp,1),%rax
add    $0x4,%rax
mov    (%rsp),%r15
movsbl (%rcx),%ecx
lea    (%rcx,%rcx,4),%ecx
movsbl (%rax),%eax
lea    (%rax,%rcx,2),%r12d
add    $0xfffffe20,%r12d
add    %rbp,%r14
lea    0xc1c(%rip),%rsi
mov    %r14,%rdi
mov    $0x3,%edx
call   1030 <strncmp@plt>
test   %rax,%rax
je     1785 <parse_time+0x665>
lea    0xc03(%rip),%rsi
mov    %r14,%rdi
mov    $0x3,%edx
call   1030 <strncmp@plt>
test   %rax,%rax
je     1785 <parse_time+0x665>
lea    0xbea(%rip),%rsi
mov    %r14,%rdi
mov    $0x3,%edx
call   1030 <strncmp@plt>
test   %rax,%rax
je     16b5 <parse_time+0x595>
lea    0xbd1(%rip),%rsi
mov    %r14,%rdi
mov    $0x3,%edx
call   1030 <strncmp@plt>
test   %rax,%rax
je     16b5 <parse_time+0x595>
lea    0xbb8(%rip),%rsi
mov    %r14,%rdi
mov    $0x3,%edx
call   1030 <strncmp@plt>
test   %rax,%rax
je     16be <parse_time+0x59e>
lea    0xb9f(%rip),%rsi
mov    %r14,%rdi
mov    $0x3,%edx
call   1030 <strncmp@plt>
test   %rax,%rax
je     16be <parse_time+0x59e>
lea    0xb86(%rip),%rsi
mov    %r14,%rdi
mov    $0x3,%edx
call   1030 <strncmp@plt>
test   %rax,%rax
je     16d4 <parse_time+0x5b4>
lea    0xb6d(%rip),%rsi
mov    %r14,%rdi
mov    $0x3,%edx
call   1030 <strncmp@plt>
test   %rax,%rax
je     16d4 <parse_time+0x5b4>
lea    0xb54(%rip),%rsi
mov    %r14,%rdi
mov    $0x3,%edx
call   1030 <strncmp@plt>
test   %rax,%rax
je     16ea <parse_time+0x5ca>
lea    0xb3b(%rip),%rsi
mov    %r14,%rdi
mov    $0x3,%edx
call   1030 <strncmp@plt>
test   %rax,%rax
je     16ea <parse_time+0x5ca>
lea    0xb22(%rip),%rsi
mov    %r14,%rdi
mov    $0x3,%edx
call   1030 <strncmp@plt>
test   %rax,%rax
je     1700 <parse_time+0x5e0>
lea    0xb09(%rip),%rsi
mov    %r14,%rdi
mov    $0x3,%edx
call   1030 <strncmp@plt>
test   %rax,%rax
je     1700 <parse_time+0x5e0>
lea    0xaf0(%rip),%rsi
mov    %r14,%rdi
mov    $0x3,%edx
call   1030 <strncmp@plt>
test   %rax,%rax
je     1716 <parse_time+0x5f6>
lea    0xad7(%rip),%rsi
mov    %r14,%rdi
mov    $0x3,%edx
call   1030 <strncmp@plt>
test   %rax,%rax
je     1716 <parse_time+0x5f6>
lea    0xabe(%rip),%rsi
mov    %r14,%rdi
mov    $0x3,%edx
call   1030 <strncmp@plt>
test   %rax,%rax
je     172c <parse_time+0x60c>
lea    0xaa5(%rip),%rsi
mov    %r14,%rdi
mov    $0x3,%edx
call   1030 <strncmp@plt>
test   %rax,%rax
je     172c <parse_time+0x60c>
lea    0xa8c(%rip),%rsi
mov    %r14,%rdi
mov    $0x3,%edx
call   1030 <strncmp@plt>
test   %rax,%rax
je     1742 <parse_time+0x622>
lea    0xa73(%rip),%rsi
mov    %r14,%rdi
mov    $0x3,%edx
call   1030 <strncmp@plt>
test   %rax,%rax
je     1742 <parse_time+0x622>
mov    %r15,%rbx
lea    0xa57(%rip),%rsi
mov    %r14,%rdi
mov    $0x3,%edx
call   1030 <strncmp@plt>
test   %rax,%rax
je     1758 <parse_time+0x638>
lea    0xa3e(%rip),%rsi
mov    %r14,%rdi
mov    $0x3,%edx
call   1030 <strncmp@plt>
test   %rax,%rax
je     1758 <parse_time+0x638>
lea    0xa25(%rip),%rsi
mov    %r14,%rdi
mov    $0x3,%edx
call   1030 <strncmp@plt>
test   %rax,%rax
je     176e <parse_time+0x64e>
lea    0xa0c(%rip),%rsi
mov    %r14,%rdi
mov    $0x3,%edx
call   1030 <strncmp@plt>
test   %rax,%rax
je     176e <parse_time+0x64e>
lea    0x9f3(%rip),%rsi
mov    %r14,%rdi
mov    $0x3,%edx
call   1030 <strncmp@plt>
test   %rax,%rax
mov    %rbx,%r15
mov    $0x0,%ebx
je     169c <parse_time+0x57c>
lea    0x9d6(%rip),%rsi
mov    %r14,%rdi
mov    $0x3,%edx
call   1030 <strncmp@plt>
test   %rax,%rax
jne    179c <parse_time+0x67c>
mov    %r12d,%eax
and    $0x3,%eax
cmp    $0x1,%eax
adc    $0x0,%r13d
add    $0x14d,%r13d
jmp    1785 <parse_time+0x665>
add    $0x1f,%r13d
jmp    1785 <parse_time+0x665>
mov    %r12d,%eax
and    $0x3,%eax
cmp    $0x1,%eax
adc    $0x0,%r13d
add    $0x3b,%r13d
jmp    1785 <parse_time+0x665>
mov    %r12d,%eax
and    $0x3,%eax
cmp    $0x1,%eax
adc    $0x0,%r13d
add    $0x5a,%r13d
jmp    1785 <parse_time+0x665>
mov    %r12d,%eax
and    $0x3,%eax
cmp    $0x1,%eax
adc    $0x0,%r13d
add    $0x78,%r13d
jmp    1785 <parse_time+0x665>
mov    %r12d,%eax
and    $0x3,%eax
cmp    $0x1,%eax
adc    $0x0,%r13d
add    $0x97,%r13d
jmp    1785 <parse_time+0x665>
mov    %r12d,%eax
and    $0x3,%eax
cmp    $0x1,%eax
adc    $0x0,%r13d
add    $0xb5,%r13d
jmp    1785 <parse_time+0x665>
mov    %r12d,%eax
and    $0x3,%eax
cmp    $0x1,%eax
adc    $0x0,%r13d
add    $0xd3,%r13d
jmp    1785 <parse_time+0x665>
mov    %r12d,%eax
and    $0x3,%eax
cmp    $0x1,%eax
adc    $0x0,%r13d
add    $0xf2,%r13d
jmp    1785 <parse_time+0x665>
mov    %r12d,%eax
and    $0x3,%eax
cmp    $0x1,%eax
adc    $0x0,%r13d
add    $0x110,%r13d
jmp    1782 <parse_time+0x662>
mov    %r12d,%eax
and    $0x3,%eax
cmp    $0x1,%eax
adc    $0x0,%r13d
add    $0x12f,%r13d
mov    %rbx,%r15
imul   $0x3e8,%r12d,%eax
add    %r13d,%eax
add    $0xffff4480,%eax
mov    %eax,(%r15)
mov    $0x1,%ebx
mov    %ebx,%eax
add    $0x8,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

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

LLVM IR (-O2):
@.str = [4 x i8] c"jan\00"
@.str.1 = [4 x i8] c"JAN\00"
@.str.2 = [4 x i8] c"feb\00"
@.str.3 = [4 x i8] c"FEB\00"
@.str.4 = [4 x i8] c"mar\00"
@.str.5 = [4 x i8] c"MAR\00"
@.str.6 = [4 x i8] c"apr\00"
@.str.7 = [4 x i8] c"APR\00"
@.str.8 = [4 x i8] c"may\00"
@.str.9 = [4 x i8] c"MAY\00"
@.str.10 = [4 x i8] c"jun\00"
@.str.11 = [4 x i8] c"JUN\00"
@.str.12 = [4 x i8] c"jul\00"
@.str.13 = [4 x i8] c"JUL\00"
@.str.14 = [4 x i8] c"aug\00"
@.str.15 = [4 x i8] c"AUG\00"
@.str.16 = [4 x i8] c"sep\00"
@.str.17 = [4 x i8] c"SEP\00"
@.str.18 = [4 x i8] c"oct\00"
@.str.19 = [4 x i8] c"OCT\00"
@.str.20 = [4 x i8] c"nov\00"
@.str.21 = [4 x i8] c"NOV\00"
@.str.22 = [4 x i8] c"dec\00"
@.str.23 = [4 x i8] c"DEC\00"
define i32 @parse_time(i8* %0, i32* nocapture writeonly %1, i32* nocapture writeonly %2) {
%4 = getelementptr inbounds i8, i8* %0, i64 2
%5 = load i8, i8* %4
switch i8 %5, label %59 [
i8 58, label %6
i8 90, label %42
i8 122, label %42
]
6: ; preds = %3
%7 = load i8, i8* %0
%8 = tail call i64 @isdigit(i8 signext %7)
%9 = icmp eq i64 %8, 0
br i1 %9, label %279, label %10
10: ; preds = %6
%11 = getelementptr inbounds i8, i8* %0, i64 1
%12 = load i8, i8* %11
%13 = tail call i64 @isdigit(i8 signext %12)
%14 = icmp eq i64 %13, 0
br i1 %14, label %279, label %15
15: ; preds = %10
%16 = load i8, i8* %0
%17 = sext i8 %16 to i32
%18 = mul nsw i32 %17, 10
%19 = load i8, i8* %11
%20 = sext i8 %19 to i32
%21 = add nsw i32 %18, -528
%22 = add nsw i32 %21, %20
%23 = getelementptr inbounds i8, i8* %0, i64 3
%24 = load i8, i8* %23
%25 = tail call i64 @isdigit(i8 signext %24)
%26 = icmp eq i64 %25, 0
br i1 %26, label %279, label %27
27: ; preds = %15
%28 = getelementptr inbounds i8, i8* %0, i64 4
%29 = load i8, i8* %28
%30 = tail call i64 @isdigit(i8 signext %29)
%31 = icmp eq i64 %30, 0
br i1 %31, label %279, label %32
32: ; preds = %27
%33 = load i8, i8* %23
%34 = sext i8 %33 to i32
%35 = mul nsw i32 %34, 10
%36 = load i8, i8* %28
%37 = sext i8 %36 to i32
%38 = add nsw i32 %35, -528
%39 = add nsw i32 %38, %37
%40 = getelementptr inbounds i8, i8* %0, i64 5
%41 = load i8, i8* %40
switch i8 %41, label %279 [
i8 90, label %96
i8 122, label %96
]
42: ; preds = %3, %3
%43 = load i8, i8* %0
%44 = tail call i64 @isdigit(i8 signext %43)
%45 = icmp eq i64 %44, 0
br i1 %45, label %279, label %46
46: ; preds = %42
%47 = getelementptr inbounds i8, i8* %0, i64 1
%48 = load i8, i8* %47
%49 = tail call i64 @isdigit(i8 signext %48)
%50 = icmp eq i64 %49, 0
br i1 %50, label %279, label %51
51: ; preds = %46
%52 = load i8, i8* %0
%53 = sext i8 %52 to i32
%54 = mul nsw i32 %53, 10
%55 = load i8, i8* %47
%56 = sext i8 %55 to i32
%57 = add nsw i32 %54, -528
%58 = add nsw i32 %57, %56
br label %96
59: ; preds = %3
%60 = getelementptr inbounds i8, i8* %0, i64 1
%61 = load i8, i8* %60
switch i8 %61, label %96 [
i8 58, label %62
i8 90, label %88
]
62: ; preds = %59
%63 = load i8, i8* %0
%64 = tail call i64 @isdigit(i8 signext %63)
%65 = icmp eq i64 %64, 0
br i1 %65, label %279, label %66
66: ; preds = %62
%67 = load i8, i8* %0
%68 = sext i8 %67 to i32
%69 = add nsw i32 %68, -48
%70 = load i8, i8* %4
%71 = tail call i64 @isdigit(i8 signext %70)
%72 = icmp eq i64 %71, 0
br i1 %72, label %279, label %73
73: ; preds = %66
%74 = getelementptr inbounds i8, i8* %0, i64 3
%75 = load i8, i8* %74
%76 = tail call i64 @isdigit(i8 signext %75)
%77 = icmp eq i64 %76, 0
br i1 %77, label %279, label %78
78: ; preds = %73
%79 = load i8, i8* %4
%80 = sext i8 %79 to i32
%81 = mul nsw i32 %80, 10
%82 = load i8, i8* %74
%83 = sext i8 %82 to i32
%84 = add nsw i32 %81, -528
%85 = add nsw i32 %84, %83
%86 = getelementptr inbounds i8, i8* %0, i64 4
%87 = load i8, i8* %86
switch i8 %87, label %279 [
i8 90, label %96
i8 122, label %96
]
88: ; preds = %59
%89 = load i8, i8* %0
%90 = tail call i64 @isdigit(i8 signext %89)
%91 = icmp eq i64 %90, 0
br i1 %91, label %279, label %92
92: ; preds = %88
%93 = load i8, i8* %0
%94 = sext i8 %93 to i32
%95 = add nsw i32 %94, -48
br label %96
96: ; preds = %59, %78, %78, %32, %32, %51, %92
%97 = phi i32 [ %58, %51 ], [ %95, %92 ], [ %22, %32 ], [ %22, %32 ], [ %69, %78 ], [ %69, %78 ], [ 0, %59 ]
%98 = phi i32 [ 0, %51 ], [ 0, %92 ], [ %39, %32 ], [ %39, %32 ], [ %85, %78 ], [ %85, %78 ], [ 0, %59 ]
%99 = phi i32 [ 3, %51 ], [ 2, %92 ], [ 6, %32 ], [ 6, %32 ], [ 5, %78 ], [ 5, %78 ], [ 0, %59 ]
%100 = mul nsw i32 %97, 100
%101 = add nsw i32 %100, %98
%102 = mul nsw i32 %101, 100
store i32 %102, i32* %2
%103 = zext i32 %99 to i64
%104 = getelementptr inbounds i8, i8* %0, i64 %103
%105 = load i8, i8* %104
%106 = tail call i64 @isdigit(i8 signext %105)
%107 = icmp eq i64 %106, 0
br i1 %107, label %126, label %108
108: ; preds = %96
%109 = add nuw nsw i32 %99, 1
%110 = zext i32 %109 to i64
%111 = getelementptr inbounds i8, i8* %0, i64 %110
%112 = load i8, i8* %111
%113 = tail call i64 @isdigit(i8 signext %112)
%114 = icmp eq i64 %113, 0
%115 = load i8, i8* %104
%116 = sext i8 %115 to i32
br i1 %114, label %124, label %117
117: ; preds = %108
%118 = mul nsw i32 %116, 10
%119 = load i8, i8* %111
%120 = sext i8 %119 to i32
%121 = add nsw i32 %118, -528
%122 = add nsw i32 %121, %120
%123 = add nuw nsw i32 %99, 2
br label %126
124: ; preds = %108
%125 = add nsw i32 %116, -48
br label %126
126: ; preds = %96, %117, %124
%127 = phi i32 [ %122, %117 ], [ %125, %124 ], [ 0, %96 ]
%128 = phi i32 [ %123, %117 ], [ %109, %124 ], [ %99, %96 ]
%129 = add nuw nsw i32 %128, 3
%130 = zext i32 %129 to i64
%131 = getelementptr inbounds i8, i8* %0, i64 %130
%132 = load i8, i8* %131
%133 = tail call i64 @isdigit(i8 signext %132)
%134 = icmp eq i64 %133, 0
br i1 %134, label %279, label %135
135: ; preds = %126
%136 = add nuw nsw i32 %128, 4
%137 = zext i32 %136 to i64
%138 = getelementptr inbounds i8, i8* %0, i64 %137
%139 = load i8, i8* %138
%140 = tail call i64 @isdigit(i8 signext %139)
%141 = icmp eq i64 %140, 0
br i1 %141, label %279, label %142
142: ; preds = %135
%143 = add nuw nsw i32 %128, 5
%144 = zext i32 %143 to i64
%145 = getelementptr inbounds i8, i8* %0, i64 %144
%146 = load i8, i8* %145
%147 = tail call i64 @isdigit(i8 signext %146)
%148 = icmp eq i64 %147, 0
br i1 %148, label %156, label %149
149: ; preds = %142
%150 = add nuw nsw i32 %128, 6
%151 = zext i32 %150 to i64
%152 = getelementptr inbounds i8, i8* %0, i64 %151
%153 = load i8, i8* %152
%154 = tail call i64 @isdigit(i8 signext %153)
%155 = icmp eq i64 %154, 0
br i1 %155, label %156, label %157
156: ; preds = %149, %142
br label %157
157: ; preds = %149, %156
%158 = phi i8* [ %131, %156 ], [ %145, %149 ]
%159 = phi i8* [ %138, %156 ], [ %152, %149 ]
%160 = load i8, i8* %158
%161 = sext i8 %160 to i32
%162 = mul nsw i32 %161, 10
%163 = add nsw i32 %162, -480
%164 = load i8, i8* %159
%165 = sext i8 %164 to i32
%166 = add nsw i32 %163, %165
%167 = and i32 %166, 3
%168 = icmp eq i32 %167, 0
%169 = zext i32 %128 to i64
%170 = getelementptr inbounds i8, i8* %0, i64 %169
%171 = tail call i64 @strncmp(i8* %170, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 3)
%172 = icmp eq i64 %171, 0
br i1 %172, label %274, label %173
173: ; preds = %157
%174 = tail call i64 @strncmp(i8* %170, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.1, i64 0, i64 0), i32 3)
%175 = icmp eq i64 %174, 0
br i1 %175, label %274, label %176
176: ; preds = %173
%177 = tail call i64 @strncmp(i8* %170, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.2, i64 0, i64 0), i32 3)
%178 = icmp eq i64 %177, 0
br i1 %178, label %182, label %179
179: ; preds = %176
%180 = tail call i64 @strncmp(i8* %170, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.3, i64 0, i64 0), i32 3)
%181 = icmp eq i64 %180, 0
br i1 %181, label %182, label %184
182: ; preds = %179, %176
%183 = add nsw i32 %127, 31
br label %274
184: ; preds = %179
%185 = tail call i64 @strncmp(i8* %170, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.4, i64 0, i64 0), i32 3)
%186 = icmp eq i64 %185, 0
br i1 %186, label %190, label %187
187: ; preds = %184
%188 = tail call i64 @strncmp(i8* %170, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), i32 3)
%189 = icmp eq i64 %188, 0
br i1 %189, label %190, label %193
190: ; preds = %187, %184
%191 = select i1 %168, i32 60, i32 59
%192 = add nsw i32 %191, %127
br label %274
193: ; preds = %187
%194 = tail call i64 @strncmp(i8* %170, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.6, i64 0, i64 0), i32 3)
%195 = icmp eq i64 %194, 0
br i1 %195, label %199, label %196
196: ; preds = %193
%197 = tail call i64 @strncmp(i8* %170, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.7, i64 0, i64 0), i32 3)
%198 = icmp eq i64 %197, 0
br i1 %198, label %199, label %202
199: ; preds = %196, %193
%200 = select i1 %168, i32 91, i32 90
%201 = add nsw i32 %200, %127
br label %274
202: ; preds = %196
%203 = tail call i64 @strncmp(i8* %170, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.8, i64 0, i64 0), i32 3)
%204 = icmp eq i64 %203, 0
br i1 %204, label %208, label %205
205: ; preds = %202
%206 = tail call i64 @strncmp(i8* %170, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.9, i64 0, i64 0), i32 3)
%207 = icmp eq i64 %206, 0
br i1 %207, label %208, label %211
208: ; preds = %205, %202
%209 = select i1 %168, i32 121, i32 120
%210 = add nsw i32 %209, %127
br label %274
211: ; preds = %205
%212 = tail call i64 @strncmp(i8* %170, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.10, i64 0, i64 0), i32 3)
%213 = icmp eq i64 %212, 0
br i1 %213, label %217, label %214
214: ; preds = %211
%215 = tail call i64 @strncmp(i8* %170, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.11, i64 0, i64 0), i32 3)
%216 = icmp eq i64 %215, 0
br i1 %216, label %217, label %220
217: ; preds = %214, %211
%218 = select i1 %168, i32 152, i32 151
%219 = add nsw i32 %218, %127
br label %274
220: ; preds = %214
%221 = tail call i64 @strncmp(i8* %170, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.12, i64 0, i64 0), i32 3)
%222 = icmp eq i64 %221, 0
br i1 %222, label %226, label %223
223: ; preds = %220
%224 = tail call i64 @strncmp(i8* %170, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.13, i64 0, i64 0), i32 3)
%225 = icmp eq i64 %224, 0
br i1 %225, label %226, label %229
226: ; preds = %223, %220
%227 = select i1 %168, i32 182, i32 181
%228 = add nsw i32 %227, %127
br label %274
229: ; preds = %223
%230 = tail call i64 @strncmp(i8* %170, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.14, i64 0, i64 0), i32 3)
%231 = icmp eq i64 %230, 0
br i1 %231, label %235, label %232
232: ; preds = %229
%233 = tail call i64 @strncmp(i8* %170, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.15, i64 0, i64 0), i32 3)
%234 = icmp eq i64 %233, 0
br i1 %234, label %235, label %238
235: ; preds = %232, %229
%236 = select i1 %168, i32 212, i32 211
%237 = add nsw i32 %236, %127
br label %274
238: ; preds = %232
%239 = tail call i64 @strncmp(i8* %170, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.16, i64 0, i64 0), i32 3)
%240 = icmp eq i64 %239, 0
br i1 %240, label %244, label %241
241: ; preds = %238
%242 = tail call i64 @strncmp(i8* %170, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.17, i64 0, i64 0), i32 3)
%243 = icmp eq i64 %242, 0
br i1 %243, label %244, label %247
244: ; preds = %241, %238
%245 = select i1 %168, i32 243, i32 242
%246 = add nsw i32 %245, %127
br label %274
247: ; preds = %241
%248 = tail call i64 @strncmp(i8* %170, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.18, i64 0, i64 0), i32 3)
%249 = icmp eq i64 %248, 0
br i1 %249, label %253, label %250
250: ; preds = %247
%251 = tail call i64 @strncmp(i8* %170, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.19, i64 0, i64 0), i32 3)
%252 = icmp eq i64 %251, 0
br i1 %252, label %253, label %256
253: ; preds = %250, %247
%254 = select i1 %168, i32 273, i32 272
%255 = add nsw i32 %254, %127
br label %274
256: ; preds = %250
%257 = tail call i64 @strncmp(i8* %170, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.20, i64 0, i64 0), i32 3)
%258 = icmp eq i64 %257, 0
br i1 %258, label %262, label %259
259: ; preds = %256
%260 = tail call i64 @strncmp(i8* %170, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.21, i64 0, i64 0), i32 3)
%261 = icmp eq i64 %260, 0
br i1 %261, label %262, label %265
262: ; preds = %259, %256
%263 = select i1 %168, i32 304, i32 303
%264 = add nsw i32 %263, %127
br label %274
265: ; preds = %259
%266 = tail call i64 @strncmp(i8* %170, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.22, i64 0, i64 0), i32 3)
%267 = icmp eq i64 %266, 0
br i1 %267, label %271, label %268
268: ; preds = %265
%269 = tail call i64 @strncmp(i8* %170, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.23, i64 0, i64 0), i32 3)
%270 = icmp eq i64 %269, 0
br i1 %270, label %271, label %279
271: ; preds = %268, %265
%272 = select i1 %168, i32 334, i32 333
%273 = add nsw i32 %272, %127
br label %274
274: ; preds = %157, %173, %182, %199, %217, %235, %253, %271, %262, %244, %226, %208, %190
%275 = phi i32 [ %183, %182 ], [ %192, %190 ], [ %201, %199 ], [ %210, %208 ], [ %219, %217 ], [ %228, %226 ], [ %237, %235 ], [ %246, %244 ], [ %255, %253 ], [ %264, %262 ], [ %273, %271 ], [ %127, %173 ], [ %127, %157 ]
%276 = mul nsw i32 %166, 1000
%277 = add nsw i32 %276, -48000
%278 = add nsw i32 %277, %275
store i32 %278, i32* %1
br label %279
279: ; preds = %268, %126, %135, %88, %78, %66, %73, %62, %42, %46, %32, %15, %27, %6, %10, %274
%280 = phi i32 [ 1, %274 ], [ 0, %10 ], [ 0, %6 ], [ 0, %27 ], [ 0, %15 ], [ 1, %32 ], [ 0, %46 ], [ 0, %42 ], [ 0, %62 ], [ 0, %73 ], [ 0, %66 ], [ 0, %78 ], [ 0, %88 ], [ 0, %135 ], [ 0, %126 ], [ 0, %268 ]
ret i32 %280
}