#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 */
int atoi(char *);
scalar_t__ isInteger(char *);
scalar_t__ isdigit(char);
int localToUnixTime(char *, char *);
int /*<<< orphan*/ snprintf(char *, int, char *, int);
int /*<<< orphan*/ strcat(char *, char *);
int strlen(char *);
int /*<<< orphan*/ strncpy(char *, char *, int);
int checkDateFormat(char *s) {
  int len;
  char t[] = "0000-00-00.00:00:00";
  char outUnixTime[32];
  int status;
  int offset = 0;
  if (isInteger(s))
    return (0);
  len = strlen(s);
  if (s[len - 1] == 's') {
    s[len - 1] = '\0';
    offset = atoi(s);
    snprintf(s, 19, "%d", offset);
    return 0;
  } else if (s[len - 1] == 'm') {
    s[len - 1] = '\0';
    offset = atoi(s) * 60;
    snprintf(s, 19, "%d", offset);
    return 0;
  } else if (s[len - 1] == 'h') {
    s[len - 1] = '\0';
    offset = atoi(s) * 3600;
    snprintf(s, 19, "%d", offset);
    return 0;
  } else if (s[len - 1] == 'd') {
    s[len - 1] = '\0';
    offset = atoi(s) * 3600 * 24;
    snprintf(s, 19, "%d", offset);
    return 0;
  } else if (s[len - 1] == 'y') {
    s[len - 1] = '\0';
    offset = atoi(s) * 3600 * 24 * 365;
    snprintf(s, 19, "%d", offset);
    return 0;
  } else if (len < 19) {
    if (isdigit(s[0]) && isdigit(s[1]) && isdigit(s[2]) && isdigit(s[3])) {
      strcat(s, (char *)&t[len]);
    } else {
      int mypos;
      mypos = len - 1;
      while (mypos >= 0) {
        if (isdigit(s[mypos]))
          offset += s[mypos] - 48;
        else
          return (-10);
        mypos--;
        if (mypos >= 0)
          if (isdigit(s[mypos]))
            offset += 10 * (s[mypos] - 48);
          else
            return (-10);
        else
          break;
        mypos--;
        if (mypos >= 0)
          if (s[mypos] != ':')
            return (-10);
        mypos--;
        if (mypos >= 0)
          if (isdigit(s[mypos]))
            offset += 60 * (s[mypos] - 48);
          else
            return (-10);
        else
          break;
        mypos--;
        if (mypos >= 0)
          if (isdigit(s[mypos]))
            offset += 10 * 60 * (s[mypos] - 48);
          else
            return (-10);
        else
          break;
        mypos--;
        if (mypos >= 0)
          if (s[mypos] != ':')
            return (-10);
        mypos--;
        if (mypos >= 0)
          if (isdigit(s[mypos]))
            offset += 3600 * (s[mypos] - 48);
          else
            return (-10);
        else
          break;
        mypos--;
        if (mypos >= 0)
          if (isdigit(s[mypos]))
            offset += 10 * 3600 * (s[mypos] - 48);
          else
            return (-10);
        else
          break;
        mypos--;
        if (mypos >= 0)
          if (s[mypos] != '.')
            return (-10);
        mypos--;
        if (mypos >= 0)
          if (isdigit(s[mypos]))
            offset += 24 * 3600 * (s[mypos] - 48);
          else
            return (-10);
        else
          break;
        mypos--;
        if (mypos >= 0)
          if (isdigit(s[mypos]))
            offset += 10 * 24 * 3600 * (s[mypos] - 48);
          else
            return (-10);
        else
          break;
      }
      snprintf(s, 19, "%d", offset);
      return (0);
    }
  }
  if (isdigit(s[0]) && isdigit(s[1]) && isdigit(s[2]) && isdigit(s[3]) &&
      isdigit(s[5]) && isdigit(s[6]) && isdigit(s[8]) && isdigit(s[9]) &&
      isdigit(s[11]) && isdigit(s[12]) && isdigit(s[14]) && isdigit(s[15]) &&
      isdigit(s[17]) && isdigit(s[18]) && s[4] == '-' && s[7] == '-' &&
      s[10] == '.' && s[13] == ':' && s[16] == ':') {
    status = localToUnixTime(s, outUnixTime);
    if (status >= 0) {
      strncpy(s, outUnixTime, 32);
    }
    return (status);
  } else {
    return (-10);
  }
}


x86 assembly (clang, -O0):
<checkDateFormat>:
push   %rbp
mov    %rsp,%rbp
sub    $0x60,%rsp
mov    %rdi,-0x10(%rbp)
mov    0xe6d(%rip),%rax
mov    %rax,-0x30(%rbp)
mov    0xe6a(%rip),%rax
mov    %rax,-0x28(%rbp)
mov    0xe68(%rip),%eax
mov    %eax,-0x20(%rbp)
movl   $0x0,-0x58(%rbp)
mov    -0x10(%rbp),%rdi
call   1090 <isInteger@plt>
cmp    $0x0,%rax
je     11d1 <checkDateFormat+0x51>
movl   $0x0,-0x4(%rbp)
jmp    1a13 <checkDateFormat+0x893>
mov    -0x10(%rbp),%rdi
call   1050 <strlen@plt>
mov    %eax,-0x14(%rbp)
mov    -0x10(%rbp),%rax
mov    -0x14(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x73,%eax
jne    1238 <checkDateFormat+0xb8>
mov    -0x10(%rbp),%rax
mov    -0x14(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movb   $0x0,(%rax,%rcx,1)
mov    -0x10(%rbp),%rdi
call   1080 <atoi@plt>
mov    %eax,-0x58(%rbp)
mov    -0x10(%rbp),%rdi
mov    -0x58(%rbp),%ecx
mov    $0x13,%esi
lea    0xded(%rip),%rdx
call   1060 <snprintf@plt>
movl   $0x0,-0x4(%rbp)
jmp    1a13 <checkDateFormat+0x893>
mov    -0x10(%rbp),%rax
mov    -0x14(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x6d,%eax
jne    1296 <checkDateFormat+0x116>
mov    -0x10(%rbp),%rax
mov    -0x14(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movb   $0x0,(%rax,%rcx,1)
mov    -0x10(%rbp),%rdi
call   1080 <atoi@plt>
imul   $0x3c,%eax,%eax
mov    %eax,-0x58(%rbp)
mov    -0x10(%rbp),%rdi
mov    -0x58(%rbp),%ecx
mov    $0x13,%esi
lea    0xd8f(%rip),%rdx
call   1060 <snprintf@plt>
movl   $0x0,-0x4(%rbp)
jmp    1a13 <checkDateFormat+0x893>
mov    -0x10(%rbp),%rax
mov    -0x14(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x68,%eax
jne    12f7 <checkDateFormat+0x177>
mov    -0x10(%rbp),%rax
mov    -0x14(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movb   $0x0,(%rax,%rcx,1)
mov    -0x10(%rbp),%rdi
call   1080 <atoi@plt>
imul   $0xe10,%eax,%eax
mov    %eax,-0x58(%rbp)
mov    -0x10(%rbp),%rdi
mov    -0x58(%rbp),%ecx
mov    $0x13,%esi
lea    0xd2e(%rip),%rdx
call   1060 <snprintf@plt>
movl   $0x0,-0x4(%rbp)
jmp    1a13 <checkDateFormat+0x893>
mov    -0x10(%rbp),%rax
mov    -0x14(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x64,%eax
jne    135b <checkDateFormat+0x1db>
mov    -0x10(%rbp),%rax
mov    -0x14(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movb   $0x0,(%rax,%rcx,1)
mov    -0x10(%rbp),%rdi
call   1080 <atoi@plt>
imul   $0xe10,%eax,%eax
imul   $0x18,%eax,%eax
mov    %eax,-0x58(%rbp)
mov    -0x10(%rbp),%rdi
mov    -0x58(%rbp),%ecx
mov    $0x13,%esi
lea    0xcca(%rip),%rdx
call   1060 <snprintf@plt>
movl   $0x0,-0x4(%rbp)
jmp    1a13 <checkDateFormat+0x893>
mov    -0x10(%rbp),%rax
mov    -0x14(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x79,%eax
jne    13c5 <checkDateFormat+0x245>
mov    -0x10(%rbp),%rax
mov    -0x14(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movb   $0x0,(%rax,%rcx,1)
mov    -0x10(%rbp),%rdi
call   1080 <atoi@plt>
imul   $0xe10,%eax,%eax
imul   $0x18,%eax,%eax
imul   $0x16d,%eax,%eax
mov    %eax,-0x58(%rbp)
mov    -0x10(%rbp),%rdi
mov    -0x58(%rbp),%ecx
mov    $0x13,%esi
lea    0xc60(%rip),%rdx
call   1060 <snprintf@plt>
movl   $0x0,-0x4(%rbp)
jmp    1a13 <checkDateFormat+0x893>
cmpl   $0x13,-0x14(%rbp)
jge    1826 <checkDateFormat+0x6a6>
mov    -0x10(%rbp),%rax
movsbl (%rax),%edi
call   1040 <isdigit@plt>
cmp    $0x0,%rax
je     1443 <checkDateFormat+0x2c3>
mov    -0x10(%rbp),%rax
movsbl 0x1(%rax),%edi
call   1040 <isdigit@plt>
cmp    $0x0,%rax
je     1443 <checkDateFormat+0x2c3>
mov    -0x10(%rbp),%rax
movsbl 0x2(%rax),%edi
call   1040 <isdigit@plt>
cmp    $0x0,%rax
je     1443 <checkDateFormat+0x2c3>
mov    -0x10(%rbp),%rax
movsbl 0x3(%rax),%edi
call   1040 <isdigit@plt>
cmp    $0x0,%rax
je     1443 <checkDateFormat+0x2c3>
mov    -0x10(%rbp),%rdi
movslq -0x14(%rbp),%rax
lea    -0x30(%rbp),%rsi
add    %rax,%rsi
call   10a0 <strcat@plt>
jmp    1821 <checkDateFormat+0x6a1>
mov    -0x14(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x5c(%rbp)
cmpl   $0x0,-0x5c(%rbp)
jl     17fd <checkDateFormat+0x67d>
mov    -0x10(%rbp),%rax
movslq -0x5c(%rbp),%rcx
movsbl (%rax,%rcx,1),%edi
call   1040 <isdigit@plt>
cmp    $0x0,%rax
je     148b <checkDateFormat+0x30b>
mov    -0x10(%rbp),%rax
movslq -0x5c(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
sub    $0x30,%eax
add    -0x58(%rbp),%eax
mov    %eax,-0x58(%rbp)
jmp    1497 <checkDateFormat+0x317>
movl   $0xfffffff6,-0x4(%rbp)
jmp    1a13 <checkDateFormat+0x893>
mov    -0x5c(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x5c(%rbp)
cmpl   $0x0,-0x5c(%rbp)
jl     14f3 <checkDateFormat+0x373>
mov    -0x10(%rbp),%rax
movslq -0x5c(%rbp),%rcx
movsbl (%rax,%rcx,1),%edi
call   1040 <isdigit@plt>
cmp    $0x0,%rax
je     14e2 <checkDateFormat+0x362>
mov    -0x10(%rbp),%rax
movslq -0x5c(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
sub    $0x30,%eax
imul   $0xa,%eax,%eax
add    -0x58(%rbp),%eax
mov    %eax,-0x58(%rbp)
jmp    14ee <checkDateFormat+0x36e>
movl   $0xfffffff6,-0x4(%rbp)
jmp    1a13 <checkDateFormat+0x893>
jmp    14f8 <checkDateFormat+0x378>
jmp    17fd <checkDateFormat+0x67d>
mov    -0x5c(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x5c(%rbp)
cmpl   $0x0,-0x5c(%rbp)
jl     1531 <checkDateFormat+0x3b1>
mov    -0x10(%rbp),%rax
movslq -0x5c(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x3a,%eax
je     152c <checkDateFormat+0x3ac>
movl   $0xfffffff6,-0x4(%rbp)
jmp    1a13 <checkDateFormat+0x893>
jmp    1531 <checkDateFormat+0x3b1>
mov    -0x5c(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x5c(%rbp)
cmpl   $0x0,-0x5c(%rbp)
jl     158d <checkDateFormat+0x40d>
mov    -0x10(%rbp),%rax
movslq -0x5c(%rbp),%rcx
movsbl (%rax,%rcx,1),%edi
call   1040 <isdigit@plt>
cmp    $0x0,%rax
je     157c <checkDateFormat+0x3fc>
mov    -0x10(%rbp),%rax
movslq -0x5c(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
sub    $0x30,%eax
imul   $0x3c,%eax,%eax
add    -0x58(%rbp),%eax
mov    %eax,-0x58(%rbp)
jmp    1588 <checkDateFormat+0x408>
movl   $0xfffffff6,-0x4(%rbp)
jmp    1a13 <checkDateFormat+0x893>
jmp    1592 <checkDateFormat+0x412>
jmp    17fd <checkDateFormat+0x67d>
mov    -0x5c(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x5c(%rbp)
cmpl   $0x0,-0x5c(%rbp)
jl     15f1 <checkDateFormat+0x471>
mov    -0x10(%rbp),%rax
movslq -0x5c(%rbp),%rcx
movsbl (%rax,%rcx,1),%edi
call   1040 <isdigit@plt>
cmp    $0x0,%rax
je     15e0 <checkDateFormat+0x460>
mov    -0x10(%rbp),%rax
movslq -0x5c(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
sub    $0x30,%eax
imul   $0x258,%eax,%eax
add    -0x58(%rbp),%eax
mov    %eax,-0x58(%rbp)
jmp    15ec <checkDateFormat+0x46c>
movl   $0xfffffff6,-0x4(%rbp)
jmp    1a13 <checkDateFormat+0x893>
jmp    15f6 <checkDateFormat+0x476>
jmp    17fd <checkDateFormat+0x67d>
mov    -0x5c(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x5c(%rbp)
cmpl   $0x0,-0x5c(%rbp)
jl     162f <checkDateFormat+0x4af>
mov    -0x10(%rbp),%rax
movslq -0x5c(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x3a,%eax
je     162a <checkDateFormat+0x4aa>
movl   $0xfffffff6,-0x4(%rbp)
jmp    1a13 <checkDateFormat+0x893>
jmp    162f <checkDateFormat+0x4af>
mov    -0x5c(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x5c(%rbp)
cmpl   $0x0,-0x5c(%rbp)
jl     168e <checkDateFormat+0x50e>
mov    -0x10(%rbp),%rax
movslq -0x5c(%rbp),%rcx
movsbl (%rax,%rcx,1),%edi
call   1040 <isdigit@plt>
cmp    $0x0,%rax
je     167d <checkDateFormat+0x4fd>
mov    -0x10(%rbp),%rax
movslq -0x5c(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
sub    $0x30,%eax
imul   $0xe10,%eax,%eax
add    -0x58(%rbp),%eax
mov    %eax,-0x58(%rbp)
jmp    1689 <checkDateFormat+0x509>
movl   $0xfffffff6,-0x4(%rbp)
jmp    1a13 <checkDateFormat+0x893>
jmp    1693 <checkDateFormat+0x513>
jmp    17fd <checkDateFormat+0x67d>
mov    -0x5c(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x5c(%rbp)
cmpl   $0x0,-0x5c(%rbp)
jl     16f2 <checkDateFormat+0x572>
mov    -0x10(%rbp),%rax
movslq -0x5c(%rbp),%rcx
movsbl (%rax,%rcx,1),%edi
call   1040 <isdigit@plt>
cmp    $0x0,%rax
je     16e1 <checkDateFormat+0x561>
mov    -0x10(%rbp),%rax
movslq -0x5c(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
sub    $0x30,%eax
imul   $0x8ca0,%eax,%eax
add    -0x58(%rbp),%eax
mov    %eax,-0x58(%rbp)
jmp    16ed <checkDateFormat+0x56d>
movl   $0xfffffff6,-0x4(%rbp)
jmp    1a13 <checkDateFormat+0x893>
jmp    16f7 <checkDateFormat+0x577>
jmp    17fd <checkDateFormat+0x67d>
mov    -0x5c(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x5c(%rbp)
cmpl   $0x0,-0x5c(%rbp)
jl     1730 <checkDateFormat+0x5b0>
mov    -0x10(%rbp),%rax
movslq -0x5c(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x2e,%eax
je     172b <checkDateFormat+0x5ab>
movl   $0xfffffff6,-0x4(%rbp)
jmp    1a13 <checkDateFormat+0x893>
jmp    1730 <checkDateFormat+0x5b0>
mov    -0x5c(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x5c(%rbp)
cmpl   $0x0,-0x5c(%rbp)
jl     178f <checkDateFormat+0x60f>
mov    -0x10(%rbp),%rax
movslq -0x5c(%rbp),%rcx
movsbl (%rax,%rcx,1),%edi
call   1040 <isdigit@plt>
cmp    $0x0,%rax
je     177e <checkDateFormat+0x5fe>
mov    -0x10(%rbp),%rax
movslq -0x5c(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
sub    $0x30,%eax
imul   $0x15180,%eax,%eax
add    -0x58(%rbp),%eax
mov    %eax,-0x58(%rbp)
jmp    178a <checkDateFormat+0x60a>
movl   $0xfffffff6,-0x4(%rbp)
jmp    1a13 <checkDateFormat+0x893>
jmp    1794 <checkDateFormat+0x614>
jmp    17fd <checkDateFormat+0x67d>
mov    -0x5c(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x5c(%rbp)
cmpl   $0x0,-0x5c(%rbp)
jl     17f3 <checkDateFormat+0x673>
mov    -0x10(%rbp),%rax
movslq -0x5c(%rbp),%rcx
movsbl (%rax,%rcx,1),%edi
call   1040 <isdigit@plt>
cmp    $0x0,%rax
je     17e2 <checkDateFormat+0x662>
mov    -0x10(%rbp),%rax
movslq -0x5c(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
sub    $0x30,%eax
imul   $0xd2f00,%eax,%eax
add    -0x58(%rbp),%eax
mov    %eax,-0x58(%rbp)
jmp    17ee <checkDateFormat+0x66e>
movl   $0xfffffff6,-0x4(%rbp)
jmp    1a13 <checkDateFormat+0x893>
jmp    17f8 <checkDateFormat+0x678>
jmp    17fd <checkDateFormat+0x67d>
jmp    144c <checkDateFormat+0x2cc>
mov    -0x10(%rbp),%rdi
mov    -0x58(%rbp),%ecx
mov    $0x13,%esi
lea    0x804(%rip),%rdx
call   1060 <snprintf@plt>
movl   $0x0,-0x4(%rbp)
jmp    1a13 <checkDateFormat+0x893>
jmp    1826 <checkDateFormat+0x6a6>
jmp    182b <checkDateFormat+0x6ab>
jmp    1830 <checkDateFormat+0x6b0>
jmp    1835 <checkDateFormat+0x6b5>
jmp    183a <checkDateFormat+0x6ba>
jmp    183f <checkDateFormat+0x6bf>
mov    -0x10(%rbp),%rax
movsbl (%rax),%edi
call   1040 <isdigit@plt>
cmp    $0x0,%rax
je     1a0c <checkDateFormat+0x88c>
mov    -0x10(%rbp),%rax
movsbl 0x1(%rax),%edi
call   1040 <isdigit@plt>
cmp    $0x0,%rax
je     1a0c <checkDateFormat+0x88c>
mov    -0x10(%rbp),%rax
movsbl 0x2(%rax),%edi
call   1040 <isdigit@plt>
cmp    $0x0,%rax
je     1a0c <checkDateFormat+0x88c>
mov    -0x10(%rbp),%rax
movsbl 0x3(%rax),%edi
call   1040 <isdigit@plt>
cmp    $0x0,%rax
je     1a0c <checkDateFormat+0x88c>
mov    -0x10(%rbp),%rax
movsbl 0x5(%rax),%edi
call   1040 <isdigit@plt>
cmp    $0x0,%rax
je     1a0c <checkDateFormat+0x88c>
mov    -0x10(%rbp),%rax
movsbl 0x6(%rax),%edi
call   1040 <isdigit@plt>
cmp    $0x0,%rax
je     1a0c <checkDateFormat+0x88c>
mov    -0x10(%rbp),%rax
movsbl 0x8(%rax),%edi
call   1040 <isdigit@plt>
cmp    $0x0,%rax
je     1a0c <checkDateFormat+0x88c>
mov    -0x10(%rbp),%rax
movsbl 0x9(%rax),%edi
call   1040 <isdigit@plt>
cmp    $0x0,%rax
je     1a0c <checkDateFormat+0x88c>
mov    -0x10(%rbp),%rax
movsbl 0xb(%rax),%edi
call   1040 <isdigit@plt>
cmp    $0x0,%rax
je     1a0c <checkDateFormat+0x88c>
mov    -0x10(%rbp),%rax
movsbl 0xc(%rax),%edi
call   1040 <isdigit@plt>
cmp    $0x0,%rax
je     1a0c <checkDateFormat+0x88c>
mov    -0x10(%rbp),%rax
movsbl 0xe(%rax),%edi
call   1040 <isdigit@plt>
cmp    $0x0,%rax
je     1a0c <checkDateFormat+0x88c>
mov    -0x10(%rbp),%rax
movsbl 0xf(%rax),%edi
call   1040 <isdigit@plt>
cmp    $0x0,%rax
je     1a0c <checkDateFormat+0x88c>
mov    -0x10(%rbp),%rax
movsbl 0x11(%rax),%edi
call   1040 <isdigit@plt>
cmp    $0x0,%rax
je     1a0c <checkDateFormat+0x88c>
mov    -0x10(%rbp),%rax
movsbl 0x12(%rax),%edi
call   1040 <isdigit@plt>
cmp    $0x0,%rax
je     1a0c <checkDateFormat+0x88c>
mov    -0x10(%rbp),%rax
movsbl 0x4(%rax),%eax
cmp    $0x2d,%eax
jne    1a0c <checkDateFormat+0x88c>
mov    -0x10(%rbp),%rax
movsbl 0x7(%rax),%eax
cmp    $0x2d,%eax
jne    1a0c <checkDateFormat+0x88c>
mov    -0x10(%rbp),%rax
movsbl 0xa(%rax),%eax
cmp    $0x2e,%eax
jne    1a0c <checkDateFormat+0x88c>
mov    -0x10(%rbp),%rax
movsbl 0xd(%rax),%eax
cmp    $0x3a,%eax
jne    1a0c <checkDateFormat+0x88c>
mov    -0x10(%rbp),%rax
movsbl 0x10(%rax),%eax
cmp    $0x3a,%eax
jne    1a0c <checkDateFormat+0x88c>
mov    -0x10(%rbp),%rdi
lea    -0x50(%rbp),%rsi
call   1070 <localToUnixTime@plt>
mov    %eax,-0x54(%rbp)
cmpl   $0x0,-0x54(%rbp)
jl     1a01 <checkDateFormat+0x881>
mov    -0x10(%rbp),%rdi
lea    -0x50(%rbp),%rsi
mov    $0x20,%edx
call   1030 <strncpy@plt>
mov    -0x54(%rbp),%eax
mov    %eax,-0x4(%rbp)
jmp    1a13 <checkDateFormat+0x893>
movl   $0xfffffff6,-0x4(%rbp)
mov    -0x4(%rbp),%eax
add    $0x60,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<checkDateFormat>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0xa8,%rsp
mov    %rdi,%r12
movaps 0xec5(%rip),%xmm0
movaps %xmm0,0x60(%rsp)
movl   $0x30303a,0x70(%rsp)
call   1090 <isInteger@plt>
xor    %r13d,%r13d
test   %rax,%rax
jne    145f <checkDateFormat+0x2df>
mov    %r12,%rdi
call   1050 <strlen@plt>
mov    %eax,%r14d
movslq %eax,%rbx
lea    -0x1(%rbx),%rbp
mov    -0x1(%r12,%rbx,1),%al
add    $0x9c,%al
cmp    $0x15,%al
ja     1201 <checkDateFormat+0x81>
movzbl %al,%eax
lea    0xe20(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
movb   $0x0,(%r12,%rbp,1)
mov    %r12,%rdi
call   1080 <atoi@plt>
imul   $0x15180,%eax,%ecx
jmp    144b <checkDateFormat+0x2cb>
cmp    $0x12,%r14d
jg     1266 <checkDateFormat+0xe6>
movsbl (%r12),%edi
call   1040 <isdigit@plt>
test   %rax,%rax
je     1474 <checkDateFormat+0x2f4>
movsbl 0x1(%r12),%edi
call   1040 <isdigit@plt>
test   %rax,%rax
je     1474 <checkDateFormat+0x2f4>
movsbl 0x2(%r12),%edi
call   1040 <isdigit@plt>
test   %rax,%rax
je     1474 <checkDateFormat+0x2f4>
movsbl 0x3(%r12),%edi
call   1040 <isdigit@plt>
test   %rax,%rax
je     1474 <checkDateFormat+0x2f4>
lea    (%rsp,%rbx,1),%rsi
add    $0x60,%rsi
mov    %r12,%rdi
call   10a0 <strcat@plt>
movsbl (%r12),%edi
call   1040 <isdigit@plt>
mov    $0xfffffff6,%r13d
test   %rax,%rax
je     145f <checkDateFormat+0x2df>
movsbl 0x1(%r12),%edi
call   1040 <isdigit@plt>
test   %rax,%rax
je     145f <checkDateFormat+0x2df>
movsbl 0x2(%r12),%edi
call   1040 <isdigit@plt>
test   %rax,%rax
je     145f <checkDateFormat+0x2df>
movsbl 0x3(%r12),%edi
call   1040 <isdigit@plt>
test   %rax,%rax
je     145f <checkDateFormat+0x2df>
movsbl 0x5(%r12),%edi
call   1040 <isdigit@plt>
test   %rax,%rax
je     145f <checkDateFormat+0x2df>
movsbl 0x6(%r12),%edi
call   1040 <isdigit@plt>
test   %rax,%rax
je     145f <checkDateFormat+0x2df>
movsbl 0x8(%r12),%edi
call   1040 <isdigit@plt>
test   %rax,%rax
je     145f <checkDateFormat+0x2df>
movsbl 0x9(%r12),%edi
call   1040 <isdigit@plt>
test   %rax,%rax
je     145f <checkDateFormat+0x2df>
movsbl 0xb(%r12),%edi
call   1040 <isdigit@plt>
test   %rax,%rax
je     145f <checkDateFormat+0x2df>
movsbl 0xc(%r12),%edi
call   1040 <isdigit@plt>
test   %rax,%rax
je     145f <checkDateFormat+0x2df>
movsbl 0xe(%r12),%edi
call   1040 <isdigit@plt>
test   %rax,%rax
je     145f <checkDateFormat+0x2df>
movsbl 0xf(%r12),%edi
call   1040 <isdigit@plt>
test   %rax,%rax
je     145f <checkDateFormat+0x2df>
movsbl 0x11(%r12),%edi
call   1040 <isdigit@plt>
test   %rax,%rax
je     145f <checkDateFormat+0x2df>
movsbl 0x12(%r12),%edi
call   1040 <isdigit@plt>
test   %rax,%rax
je     145f <checkDateFormat+0x2df>
cmpb   $0x2d,0x4(%r12)
jne    145f <checkDateFormat+0x2df>
cmpb   $0x2d,0x7(%r12)
jne    145f <checkDateFormat+0x2df>
cmpb   $0x2e,0xa(%r12)
jne    145f <checkDateFormat+0x2df>
cmpb   $0x3a,0xd(%r12)
jne    145f <checkDateFormat+0x2df>
cmpb   $0x3a,0x10(%r12)
jne    145f <checkDateFormat+0x2df>
lea    0x80(%rsp),%rsi
mov    %r12,%rdi
call   1070 <localToUnixTime@plt>
mov    %eax,%r13d
test   %eax,%eax
js     145f <checkDateFormat+0x2df>
lea    0x80(%rsp),%rsi
mov    %r12,%rdi
mov    $0x20,%edx
call   1030 <strncpy@plt>
jmp    145f <checkDateFormat+0x2df>
movb   $0x0,(%r12,%rbp,1)
mov    %r12,%rdi
call   1080 <atoi@plt>
imul   $0xe10,%eax,%ecx
jmp    144b <checkDateFormat+0x2cb>
movb   $0x0,(%r12,%rbp,1)
mov    %r12,%rdi
call   1080 <atoi@plt>
imul   $0x3c,%eax,%ecx
jmp    144b <checkDateFormat+0x2cb>
movb   $0x0,(%r12,%rbp,1)
mov    %r12,%rdi
call   1080 <atoi@plt>
lea    0xc48(%rip),%rdx
mov    %r12,%rdi
mov    $0x13,%esi
mov    %eax,%ecx
jmp    145a <checkDateFormat+0x2da>
movb   $0x0,(%r12,%rbp,1)
mov    %r12,%rdi
call   1080 <atoi@plt>
imul   $0x1e13380,%eax,%ecx
lea    0xc22(%rip),%rdx
mov    %r12,%rdi
mov    $0x13,%esi
call   1060 <snprintf@plt>
mov    %r13d,%eax
add    $0xa8,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret
xor    %r13d,%r13d
mov    $0x0,%r15d
test   %r14d,%r14d
jle    171f <checkDateFormat+0x59f>
mov    %ebp,%ebx
movsbl (%r12,%rbx,1),%edi
call   1040 <isdigit@plt>
test   %rax,%rax
je     1714 <checkDateFormat+0x594>
lea    (%r12,%rbx,1),%rcx
lea    -0xb(%r14),%eax
mov    %rax,0x18(%rsp)
lea    -0xa(%r14),%eax
mov    %rax,0x20(%rsp)
lea    -0x9(%r14),%eax
mov    %rax,0x28(%rsp)
lea    -0x8(%r14),%eax
mov    %rax,0x30(%rsp)
lea    -0x7(%r14),%eax
mov    %rax,0x38(%rsp)
lea    -0x6(%r14),%eax
mov    %rax,0x40(%rsp)
lea    -0x5(%r14),%eax
mov    %rax,0x48(%rsp)
lea    -0x4(%r14),%eax
mov    %rax,0x50(%rsp)
lea    -0x3(%r14),%eax
mov    %rax,0x58(%rsp)
add    $0xfffffffe,%r14d
xor    %ebp,%ebp
xor    %r15d,%r15d
mov    %rbx,0x10(%rsp)
mov    %rcx,0x8(%rsp)
add    %rbp,%rbx
movsbl (%rcx,%rbp,1),%eax
add    %eax,%r15d
add    $0xffffffd0,%r15d
test   %ebx,%ebx
jle    171f <checkDateFormat+0x59f>
mov    %rbp,(%rsp)
add    %r14d,%ebp
movsbl (%r12,%rbp,1),%edi
call   1040 <isdigit@plt>
test   %rax,%rax
je     1714 <checkDateFormat+0x594>
movsbl (%r12,%rbp,1),%eax
lea    (%rax,%rax,4),%eax
lea    (%r15,%rax,2),%r15d
add    $0xfffffe20,%r15d
cmp    $0x2,%ebx
jb     171f <checkDateFormat+0x59f>
mov    0x58(%rsp),%rax
mov    (%rsp),%rcx
add    %ecx,%eax
cmpb   $0x3a,(%r12,%rax,1)
jne    1714 <checkDateFormat+0x594>
cmp    $0x3,%ebx
jb     171f <checkDateFormat+0x59f>
mov    0x50(%rsp),%rax
lea    (%rax,%rcx,1),%ebp
movsbl (%r12,%rbp,1),%edi
call   1040 <isdigit@plt>
test   %rax,%rax
je     1714 <checkDateFormat+0x594>
movsbl (%r12,%rbp,1),%eax
imul   $0x3c,%eax,%eax
add    %eax,%r15d
add    $0xfffff4c0,%r15d
cmp    $0x4,%ebx
jb     171f <checkDateFormat+0x59f>
mov    0x48(%rsp),%rax
mov    (%rsp),%rcx
lea    (%rax,%rcx,1),%ebp
movsbl (%r12,%rbp,1),%edi
call   1040 <isdigit@plt>
test   %rax,%rax
je     1714 <checkDateFormat+0x594>
movsbl (%r12,%rbp,1),%eax
imul   $0x258,%eax,%eax
add    %eax,%r15d
add    $0xffff8f80,%r15d
cmp    $0x5,%ebx
jb     171f <checkDateFormat+0x59f>
mov    0x40(%rsp),%rax
mov    (%rsp),%rcx
add    %ecx,%eax
cmpb   $0x3a,(%r12,%rax,1)
jne    1714 <checkDateFormat+0x594>
cmp    $0x6,%ebx
jb     171f <checkDateFormat+0x59f>
mov    0x38(%rsp),%rax
lea    (%rax,%rcx,1),%ebp
movsbl (%r12,%rbp,1),%edi
call   1040 <isdigit@plt>
test   %rax,%rax
je     1714 <checkDateFormat+0x594>
movsbl (%r12,%rbp,1),%eax
imul   $0xe10,%eax,%eax
add    %eax,%r15d
add    $0xfffd5d00,%r15d
cmp    $0x7,%ebx
jb     171f <checkDateFormat+0x59f>
mov    0x30(%rsp),%rax
mov    (%rsp),%rcx
lea    (%rax,%rcx,1),%ebp
movsbl (%r12,%rbp,1),%edi
call   1040 <isdigit@plt>
test   %rax,%rax
je     1714 <checkDateFormat+0x594>
movsbl (%r12,%rbp,1),%eax
imul   $0x8ca0,%eax,%eax
add    %eax,%r15d
add    $0xffe5a200,%r15d
cmp    $0x8,%ebx
jb     171f <checkDateFormat+0x59f>
mov    0x28(%rsp),%rax
mov    (%rsp),%rcx
add    %ecx,%eax
cmpb   $0x2e,(%r12,%rax,1)
jne    1714 <checkDateFormat+0x594>
cmp    $0x9,%ebx
jb     171f <checkDateFormat+0x59f>
mov    0x20(%rsp),%rax
lea    (%rax,%rcx,1),%ebp
movsbl (%r12,%rbp,1),%edi
call   1040 <isdigit@plt>
test   %rax,%rax
je     1714 <checkDateFormat+0x594>
movsbl (%r12,%rbp,1),%eax
imul   $0x15180,%eax,%eax
add    %eax,%r15d
add    $0xffc0b800,%r15d
cmp    $0xa,%ebx
jb     171f <checkDateFormat+0x59f>
mov    0x18(%rsp),%rax
mov    (%rsp),%rbp
add    %rbp,%rax
mov    %eax,%ebx
movsbl (%r12,%rbx,1),%edi
call   1040 <isdigit@plt>
test   %rax,%rax
je     1714 <checkDateFormat+0x594>
movsbl (%r12,%rbx,1),%edi
imul   $0xd2f00,%edi,%eax
add    %eax,%r15d
add    $0xfd873000,%r15d
call   1040 <isdigit@plt>
add    $0xfffffffffffffff6,%rbp
test   %rax,%rax
mov    0x10(%rsp),%rbx
mov    0x8(%rsp),%rcx
jne    1503 <checkDateFormat+0x383>
mov    $0xfffffff6,%r13d
jmp    145f <checkDateFormat+0x2df>
lea    0x94e(%rip),%rdx
mov    %r12,%rdi
mov    $0x13,%esi
mov    %r15d,%ecx
jmp    145a <checkDateFormat+0x2da>

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

LLVM IR (-O2):
@__const.checkDateFormat.t = [20 x i8] c"0000-00-00.00:00:00\00"
@.str = [3 x i8] c"%d\00"
define i32 @checkDateFormat(i8* %0) {
%2 = alloca [20 x i8]
%3 = alloca [32 x i8]
%4 = getelementptr inbounds [20 x i8], [20 x i8]* %2, i64 0, i64 0
%5 = getelementptr inbounds [32 x i8], [32 x i8]* %3, i64 0, i64 0
%6 = tail call i64 @isInteger(i8* %0)
%7 = icmp eq i64 %6, 0
br i1 %7, label %8, label %296
8: ; preds = %1
%9 = tail call i32 @strlen(i8* %0)
%10 = add nsw i32 %9, -1
%11 = sext i32 %10 to i64
%12 = getelementptr inbounds i8, i8* %0, i64 %11
%13 = load i8, i8* %12
switch i8 %13, label %33 [
i8 115, label %14
i8 109, label %17
i8 104, label %21
i8 100, label %25
i8 121, label %29
]
14: ; preds = %8
store i8 0, i8* %12
%15 = tail call i32 @atoi(i8* %0)
%16 = tail call i32 @snprintf(i8* %0, i32 19, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i64 0, i64 0), i32 %15)
br label %296
17: ; preds = %8
store i8 0, i8* %12
%18 = tail call i32 @atoi(i8* %0)
%19 = mul nsw i32 %18, 60
%20 = tail call i32 @snprintf(i8* %0, i32 19, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i64 0, i64 0), i32 %19)
br label %296
21: ; preds = %8
store i8 0, i8* %12
%22 = tail call i32 @atoi(i8* %0)
%23 = mul nsw i32 %22, 3600
%24 = tail call i32 @snprintf(i8* %0, i32 19, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i64 0, i64 0), i32 %23)
br label %296
25: ; preds = %8
store i8 0, i8* %12
%26 = tail call i32 @atoi(i8* %0)
%27 = mul i32 %26, 86400
%28 = tail call i32 @snprintf(i8* %0, i32 19, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i64 0, i64 0), i32 %27)
br label %296
29: ; preds = %8
store i8 0, i8* %12
%30 = tail call i32 @atoi(i8* %0)
%31 = mul i32 %30, 31536000
%32 = tail call i32 @snprintf(i8* %0, i32 19, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i64 0, i64 0), i32 %31)
br label %296
33: ; preds = %8
%34 = icmp slt i32 %9, 19
br i1 %34, label %35, label %202
35: ; preds = %33
%36 = load i8, i8* %0
%37 = tail call i64 @isdigit(i8 signext %36)
%38 = icmp eq i64 %37, 0
br i1 %38, label %58, label %39
39: ; preds = %35
%40 = getelementptr inbounds i8, i8* %0, i64 1
%41 = load i8, i8* %40
%42 = tail call i64 @isdigit(i8 signext %41)
%43 = icmp eq i64 %42, 0
br i1 %43, label %58, label %44
44: ; preds = %39
%45 = getelementptr inbounds i8, i8* %0, i64 2
%46 = load i8, i8* %45
%47 = tail call i64 @isdigit(i8 signext %46)
%48 = icmp eq i64 %47, 0
br i1 %48, label %58, label %49
49: ; preds = %44
%50 = getelementptr inbounds i8, i8* %0, i64 3
%51 = load i8, i8* %50
%52 = tail call i64 @isdigit(i8 signext %51)
%53 = icmp eq i64 %52, 0
br i1 %53, label %58, label %54
54: ; preds = %49
%55 = sext i32 %9 to i64
%56 = getelementptr inbounds [20 x i8], [20 x i8]* %2, i64 0, i64 %55
%57 = call i32 @strcat(i8* %0, i8* %56)
br label %202
58: ; preds = %49, %44, %39, %35
%59 = icmp sgt i32 %9, 0
br i1 %59, label %60, label %199
60: ; preds = %58
%61 = zext i32 %10 to i64
%62 = getelementptr inbounds i8, i8* %0, i64 %61
%63 = load i8, i8* %62
%64 = tail call i64 @isdigit(i8 signext %63)
%65 = icmp eq i64 %64, 0
br i1 %65, label %296, label %66
66: ; preds = %60, %191
%67 = phi i32 [ %196, %191 ], [ 0, %60 ]
%68 = phi i32 [ %183, %191 ], [ %10, %60 ]
%69 = zext i32 %68 to i64
%70 = getelementptr inbounds i8, i8* %0, i64 %69
%71 = load i8, i8* %70
%72 = sext i8 %71 to i32
%73 = add i32 %67, -48
%74 = add i32 %73, %72
%75 = icmp sgt i32 %68, 0
br i1 %75, label %76, label %199
76: ; preds = %66
%77 = add nsw i32 %68, -1
%78 = zext i32 %77 to i64
%79 = getelementptr inbounds i8, i8* %0, i64 %78
%80 = load i8, i8* %79
%81 = tail call i64 @isdigit(i8 signext %80)
%82 = icmp eq i64 %81, 0
br i1 %82, label %296, label %83
83: ; preds = %76
%84 = load i8, i8* %79
%85 = sext i8 %84 to i32
%86 = mul nsw i32 %85, 10
%87 = add i32 %74, -480
%88 = add i32 %87, %86
%89 = icmp ugt i32 %68, 1
br i1 %89, label %90, label %199
90: ; preds = %83
%91 = add nsw i32 %68, -2
%92 = zext i32 %91 to i64
%93 = getelementptr inbounds i8, i8* %0, i64 %92
%94 = load i8, i8* %93
%95 = icmp eq i8 %94, 58
br i1 %95, label %96, label %296
96: ; preds = %90
%97 = icmp ugt i32 %68, 2
br i1 %97, label %98, label %199
98: ; preds = %96
%99 = add nsw i32 %68, -3
%100 = zext i32 %99 to i64
%101 = getelementptr inbounds i8, i8* %0, i64 %100
%102 = load i8, i8* %101
%103 = tail call i64 @isdigit(i8 signext %102)
%104 = icmp eq i64 %103, 0
br i1 %104, label %296, label %105
105: ; preds = %98
%106 = load i8, i8* %101
%107 = sext i8 %106 to i32
%108 = mul nsw i32 %107, 60
%109 = add i32 %88, -2880
%110 = add i32 %109, %108
%111 = icmp ugt i32 %68, 3
br i1 %111, label %112, label %199
112: ; preds = %105
%113 = add nsw i32 %68, -4
%114 = zext i32 %113 to i64
%115 = getelementptr inbounds i8, i8* %0, i64 %114
%116 = load i8, i8* %115
%117 = tail call i64 @isdigit(i8 signext %116)
%118 = icmp eq i64 %117, 0
br i1 %118, label %296, label %119
119: ; preds = %112
%120 = load i8, i8* %115
%121 = sext i8 %120 to i32
%122 = mul nsw i32 %121, 600
%123 = add i32 %110, -28800
%124 = add i32 %123, %122
%125 = icmp ugt i32 %68, 4
br i1 %125, label %126, label %199
126: ; preds = %119
%127 = add nsw i32 %68, -5
%128 = zext i32 %127 to i64
%129 = getelementptr inbounds i8, i8* %0, i64 %128
%130 = load i8, i8* %129
%131 = icmp eq i8 %130, 58
br i1 %131, label %132, label %296
132: ; preds = %126
%133 = icmp ugt i32 %68, 5
br i1 %133, label %134, label %199
134: ; preds = %132
%135 = add nsw i32 %68, -6
%136 = zext i32 %135 to i64
%137 = getelementptr inbounds i8, i8* %0, i64 %136
%138 = load i8, i8* %137
%139 = tail call i64 @isdigit(i8 signext %138)
%140 = icmp eq i64 %139, 0
br i1 %140, label %296, label %141
141: ; preds = %134
%142 = load i8, i8* %137
%143 = sext i8 %142 to i32
%144 = mul nsw i32 %143, 3600
%145 = add i32 %124, -172800
%146 = add i32 %145, %144
%147 = icmp ugt i32 %68, 6
br i1 %147, label %148, label %199
148: ; preds = %141
%149 = add nsw i32 %68, -7
%150 = zext i32 %149 to i64
%151 = getelementptr inbounds i8, i8* %0, i64 %150
%152 = load i8, i8* %151
%153 = tail call i64 @isdigit(i8 signext %152)
%154 = icmp eq i64 %153, 0
br i1 %154, label %296, label %155
155: ; preds = %148
%156 = load i8, i8* %151
%157 = sext i8 %156 to i32
%158 = mul nsw i32 %157, 36000
%159 = add i32 %146, -1728000
%160 = add i32 %159, %158
%161 = icmp ugt i32 %68, 7
br i1 %161, label %162, label %199
162: ; preds = %155
%163 = add nsw i32 %68, -8
%164 = zext i32 %163 to i64
%165 = getelementptr inbounds i8, i8* %0, i64 %164
%166 = load i8, i8* %165
%167 = icmp eq i8 %166, 46
br i1 %167, label %168, label %296
168: ; preds = %162
%169 = icmp ugt i32 %68, 8
br i1 %169, label %170, label %199
170: ; preds = %168
%171 = add nsw i32 %68, -9
%172 = zext i32 %171 to i64
%173 = getelementptr inbounds i8, i8* %0, i64 %172
%174 = load i8, i8* %173
%175 = tail call i64 @isdigit(i8 signext %174)
%176 = icmp eq i64 %175, 0
br i1 %176, label %296, label %177
177: ; preds = %170
%178 = load i8, i8* %173
%179 = sext i8 %178 to i32
%180 = mul nsw i32 %179, 86400
%181 = add i32 %160, -4147200
%182 = add i32 %181, %180
%183 = add nsw i32 %68, -10
%184 = icmp ugt i32 %68, 9
br i1 %184, label %185, label %199
185: ; preds = %177
%186 = zext i32 %183 to i64
%187 = getelementptr inbounds i8, i8* %0, i64 %186
%188 = load i8, i8* %187
%189 = tail call i64 @isdigit(i8 signext %188)
%190 = icmp eq i64 %189, 0
br i1 %190, label %296, label %191
191: ; preds = %185
%192 = load i8, i8* %187
%193 = sext i8 %192 to i32
%194 = mul nsw i32 %193, 864000
%195 = add i32 %182, -41472000
%196 = add i32 %195, %194
%197 = tail call i64 @isdigit(i8 signext %192)
%198 = icmp eq i64 %197, 0
br i1 %198, label %296, label %66
199: ; preds = %66, %96, %105, %132, %141, %168, %177, %83, %119, %155, %58
%200 = phi i32 [ 0, %58 ], [ %160, %155 ], [ %124, %119 ], [ %88, %83 ], [ %182, %177 ], [ %160, %168 ], [ %146, %141 ], [ %124, %132 ], [ %110, %105 ], [ %88, %96 ], [ %74, %66 ]
%201 = tail call i32 @snprintf(i8* %0, i32 19, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i64 0, i64 0), i32 %200)
br label %296
202: ; preds = %33, %54
%203 = load i8, i8* %0
%204 = call i64 @isdigit(i8 signext %203)
%205 = icmp eq i64 %204, 0
br i1 %205, label %296, label %206
206: ; preds = %202
%207 = getelementptr inbounds i8, i8* %0, i64 1
%208 = load i8, i8* %207
%209 = call i64 @isdigit(i8 signext %208)
%210 = icmp eq i64 %209, 0
br i1 %210, label %296, label %211
211: ; preds = %206
%212 = getelementptr inbounds i8, i8* %0, i64 2
%213 = load i8, i8* %212
%214 = call i64 @isdigit(i8 signext %213)
%215 = icmp eq i64 %214, 0
br i1 %215, label %296, label %216
216: ; preds = %211
%217 = getelementptr inbounds i8, i8* %0, i64 3
%218 = load i8, i8* %217
%219 = call i64 @isdigit(i8 signext %218)
%220 = icmp eq i64 %219, 0
br i1 %220, label %296, label %221
221: ; preds = %216
%222 = getelementptr inbounds i8, i8* %0, i64 5
%223 = load i8, i8* %222
%224 = call i64 @isdigit(i8 signext %223)
%225 = icmp eq i64 %224, 0
br i1 %225, label %296, label %226
226: ; preds = %221
%227 = getelementptr inbounds i8, i8* %0, i64 6
%228 = load i8, i8* %227
%229 = call i64 @isdigit(i8 signext %228)
%230 = icmp eq i64 %229, 0
br i1 %230, label %296, label %231
231: ; preds = %226
%232 = getelementptr inbounds i8, i8* %0, i64 8
%233 = load i8, i8* %232
%234 = call i64 @isdigit(i8 signext %233)
%235 = icmp eq i64 %234, 0
br i1 %235, label %296, label %236
236: ; preds = %231
%237 = getelementptr inbounds i8, i8* %0, i64 9
%238 = load i8, i8* %237
%239 = call i64 @isdigit(i8 signext %238)
%240 = icmp eq i64 %239, 0
br i1 %240, label %296, label %241
241: ; preds = %236
%242 = getelementptr inbounds i8, i8* %0, i64 11
%243 = load i8, i8* %242
%244 = call i64 @isdigit(i8 signext %243)
%245 = icmp eq i64 %244, 0
br i1 %245, label %296, label %246
246: ; preds = %241
%247 = getelementptr inbounds i8, i8* %0, i64 12
%248 = load i8, i8* %247
%249 = call i64 @isdigit(i8 signext %248)
%250 = icmp eq i64 %249, 0
br i1 %250, label %296, label %251
251: ; preds = %246
%252 = getelementptr inbounds i8, i8* %0, i64 14
%253 = load i8, i8* %252
%254 = call i64 @isdigit(i8 signext %253)
%255 = icmp eq i64 %254, 0
br i1 %255, label %296, label %256
256: ; preds = %251
%257 = getelementptr inbounds i8, i8* %0, i64 15
%258 = load i8, i8* %257
%259 = call i64 @isdigit(i8 signext %258)
%260 = icmp eq i64 %259, 0
br i1 %260, label %296, label %261
261: ; preds = %256
%262 = getelementptr inbounds i8, i8* %0, i64 17
%263 = load i8, i8* %262
%264 = call i64 @isdigit(i8 signext %263)
%265 = icmp eq i64 %264, 0
br i1 %265, label %296, label %266
266: ; preds = %261
%267 = getelementptr inbounds i8, i8* %0, i64 18
%268 = load i8, i8* %267
%269 = call i64 @isdigit(i8 signext %268)
%270 = icmp eq i64 %269, 0
br i1 %270, label %296, label %271
271: ; preds = %266
%272 = getelementptr inbounds i8, i8* %0, i64 4
%273 = load i8, i8* %272
%274 = icmp eq i8 %273, 45
br i1 %274, label %275, label %296
275: ; preds = %271
%276 = getelementptr inbounds i8, i8* %0, i64 7
%277 = load i8, i8* %276
%278 = icmp eq i8 %277, 45
br i1 %278, label %279, label %296
279: ; preds = %275
%280 = getelementptr inbounds i8, i8* %0, i64 10
%281 = load i8, i8* %280
%282 = icmp eq i8 %281, 46
br i1 %282, label %283, label %296
283: ; preds = %279
%284 = getelementptr inbounds i8, i8* %0, i64 13
%285 = load i8, i8* %284
%286 = icmp eq i8 %285, 58
br i1 %286, label %287, label %296
287: ; preds = %283
%288 = getelementptr inbounds i8, i8* %0, i64 16
%289 = load i8, i8* %288
%290 = icmp eq i8 %289, 58
br i1 %290, label %291, label %296
291: ; preds = %287
%292 = call i32 @localToUnixTime(i8* %0, i8* %5)
%293 = icmp sgt i32 %292, -1
br i1 %293, label %294, label %296
294: ; preds = %291
%295 = call i32 @strncpy(i8* %0, i8* %5, i32 32)
br label %296
296: ; preds = %185, %170, %162, %148, %134, %126, %112, %98, %90, %76, %191, %60, %202, %206, %211, %216, %221, %226, %231, %236, %241, %246, %251, %256, %261, %266, %271, %275, %279, %283, %287, %291, %294, %199, %1, %29, %25, %21, %17, %14
%297 = phi i32 [ 0, %14 ], [ 0, %17 ], [ 0, %21 ], [ 0, %25 ], [ 0, %29 ], [ 0, %1 ], [ 0, %199 ], [ %292, %294 ], [ %292, %291 ], [ -10, %287 ], [ -10, %283 ], [ -10, %279 ], [ -10, %275 ], [ -10, %271 ], [ -10, %266 ], [ -10, %261 ], [ -10, %256 ], [ -10, %251 ], [ -10, %246 ], [ -10, %241 ], [ -10, %236 ], [ -10, %231 ], [ -10, %226 ], [ -10, %221 ], [ -10, %216 ], [ -10, %211 ], [ -10, %206 ], [ -10, %202 ], [ -10, %60 ], [ -10, %191 ], [ -10, %76 ], [ -10, %90 ], [ -10, %98 ], [ -10, %112 ], [ -10, %126 ], [ -10, %134 ], [ -10, %148 ], [ -10, %162 ], [ -10, %170 ], [ -10, %185 ]
ret i32 %297
}