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

/* Forward declarations */

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

/* Variables and functions */
scalar_t__ mpq_cmp(int /*<<< orphan*/, int /*<<< orphan*/);
int /*<<< orphan*/ mpq_set(int /*<<< orphan*/, int /*<<< orphan*/);
char *parseUncertain(char const *, int /*<<< orphan*/, int *,
                     int /*<<< orphan*/, int *);
char *parse_number(char const *, int /*<<< orphan*/, int *);
char *parse_sp(char const *);
int parse_interval(const char *cp, int decorated, mpq_t infq,
                   int *isInfinityInf, mpq_t supq, int *isInfinitySup) {
  int decor = 16;
  int isemp = 0;
  *isInfinityInf = 1;
  *isInfinitySup = -1;
  char c = *cp;
  if (c == '[') {
    cp = parse_sp(cp + 1);
    if (cp[0] == ']') {
      isemp = 1;
      decor = 4;
    } else if (((cp[0]) | 0x20) == 'e') {
      if (((cp[1]) | 0x20) == 'm' && ((cp[2]) | 0x20) == 'p' &&
          ((cp[3]) | 0x20) == 't' && ((cp[4]) | 0x20) == 'y') {
        isemp = 1;
        decor = 4;
        cp += 5;
      } else if (((cp[1]) | 0x20) == 'n' && ((cp[2]) | 0x20) == 't' &&
                 ((cp[3]) | 0x20) == 'i' && ((cp[4]) | 0x20) == 'r' &&
                 ((cp[5]) | 0x20) == 'e') {
        *isInfinityInf = -1;
        *isInfinitySup = 1;
        cp += 6;
      } else {
        return -1;
      }
    } else if (decorated && ((cp[0]) | 0x20) == 'n') {
      if (((cp[1]) | 0x20) == 'a' && ((cp[2]) | 0x20) == 'i') {
        isemp = 1;
        decor = 0;
        cp += 3;
      } else {
        return -1;
      }
    } else {
      *isInfinityInf = *isInfinitySup = 0;
      if (*cp == ',') {
        *isInfinityInf = -1;
      } else {
        cp = parse_number(cp, infq, isInfinityInf);
      }
      if (cp == NULL)
        return -1;
      cp = parse_sp(cp);
      if (*cp == ',') {
        cp = parse_sp(cp + 1);
        if (*cp == ']') {
          *isInfinitySup = 1;
        } else {
          cp = parse_number(cp, supq, isInfinitySup);
          if (cp == NULL)
            return -1;
        }
      } else {
        mpq_set(supq, infq);
        *isInfinitySup = *isInfinityInf;
      }
      cp = parse_sp(cp);
      if (*isInfinityInf == 1 || *isInfinitySup == -1 ||
          !*isInfinityInf && !*isInfinitySup && mpq_cmp(infq, supq) > 0) {
        *isInfinityInf = 1;
        *isInfinitySup = -1;
        return -1;
      }
    }
    cp = parse_sp(cp);
    if (*cp != ']')
      return -1;
    cp++;
  } else {
    cp = parseUncertain(cp, infq, isInfinityInf, supq, isInfinitySup);
    if (cp == NULL)
      return -1;
  }
  if (decorated && decor != 0 && *cp == '_') {
    cp++;
    if (((cp[0]) | 0x20) == 't' && ((cp[1]) | 0x20) == 'r' &&
        ((cp[2]) | 0x20) == 'v') {
      decor = 4;
    } else if (((cp[0]) | 0x20) == 'd' && ((cp[1]) | 0x20) == 'e' &&
               ((cp[2]) | 0x20) == 'f') {
      if (*isInfinityInf > *isInfinitySup)
        return -1;
      decor = 8;
    } else if (((cp[0]) | 0x20) == 'd' && ((cp[1]) | 0x20) == 'a' &&
               ((cp[2]) | 0x20) == 'c') {
      if (*isInfinityInf > *isInfinitySup)
        return -1;
      decor = 12;
    } else if (((cp[0]) | 0x20) == 'c' && ((cp[1]) | 0x20) == 'o' &&
               ((cp[2]) | 0x20) == 'm') {
      if (*isInfinityInf || *isInfinitySup)
        return -1;
      decor = 16;
    } else {
      return -1;
    }
    cp += 3;
  } else {
    if (decor == 16 && (*isInfinityInf || *isInfinitySup))
      decor = 12;
  }
  if (*cp != 0) {
    return -1;
  }
  return decor;
}


x86 assembly (clang, -O0):
<parse_interval>:
push   %rbp
mov    %rsp,%rbp
sub    $0x40,%rsp
mov    %rdi,-0x10(%rbp)
mov    %esi,-0x14(%rbp)
mov    %edx,-0x18(%rbp)
mov    %rcx,-0x20(%rbp)
mov    %r8d,-0x24(%rbp)
mov    %r9,-0x30(%rbp)
movl   $0x10,-0x34(%rbp)
movl   $0x0,-0x38(%rbp)
mov    -0x20(%rbp),%rax
movl   $0x1,(%rax)
mov    -0x30(%rbp),%rax
movl   $0xffffffff,(%rax)
mov    -0x10(%rbp),%rax
mov    (%rax),%al
mov    %al,-0x39(%rbp)
movsbl -0x39(%rbp),%eax
cmp    $0x5b,%eax
jne    1526 <parse_interval+0x3d6>
mov    -0x10(%rbp),%rdi
add    $0x1,%rdi
call   1040 <parse_sp@plt>
mov    %rax,-0x10(%rbp)
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x5d,%eax
jne    11da <parse_interval+0x8a>
movl   $0x1,-0x38(%rbp)
movl   $0x4,-0x34(%rbp)
jmp    14ec <parse_interval+0x39c>
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
or     $0x20,%eax
cmp    $0x65,%eax
jne    12fb <parse_interval+0x1ab>
mov    -0x10(%rbp),%rax
movsbl 0x1(%rax),%eax
or     $0x20,%eax
cmp    $0x6d,%eax
jne    125c <parse_interval+0x10c>
mov    -0x10(%rbp),%rax
movsbl 0x2(%rax),%eax
or     $0x20,%eax
cmp    $0x70,%eax
jne    125c <parse_interval+0x10c>
mov    -0x10(%rbp),%rax
movsbl 0x3(%rax),%eax
or     $0x20,%eax
cmp    $0x74,%eax
jne    125c <parse_interval+0x10c>
mov    -0x10(%rbp),%rax
movsbl 0x4(%rax),%eax
or     $0x20,%eax
cmp    $0x79,%eax
jne    125c <parse_interval+0x10c>
movl   $0x1,-0x38(%rbp)
movl   $0x4,-0x34(%rbp)
mov    -0x10(%rbp),%rax
add    $0x5,%rax
mov    %rax,-0x10(%rbp)
jmp    12f6 <parse_interval+0x1a6>
mov    -0x10(%rbp),%rax
movsbl 0x1(%rax),%eax
or     $0x20,%eax
cmp    $0x6e,%eax
jne    12e5 <parse_interval+0x195>
mov    -0x10(%rbp),%rax
movsbl 0x2(%rax),%eax
or     $0x20,%eax
cmp    $0x74,%eax
jne    12e5 <parse_interval+0x195>
mov    -0x10(%rbp),%rax
movsbl 0x3(%rax),%eax
or     $0x20,%eax
cmp    $0x69,%eax
jne    12e5 <parse_interval+0x195>
mov    -0x10(%rbp),%rax
movsbl 0x4(%rax),%eax
or     $0x20,%eax
cmp    $0x72,%eax
jne    12e5 <parse_interval+0x195>
mov    -0x10(%rbp),%rax
movsbl 0x5(%rax),%eax
or     $0x20,%eax
cmp    $0x65,%eax
jne    12e5 <parse_interval+0x195>
mov    -0x20(%rbp),%rax
movl   $0xffffffff,(%rax)
mov    -0x30(%rbp),%rax
movl   $0x1,(%rax)
mov    -0x10(%rbp),%rax
add    $0x6,%rax
mov    %rax,-0x10(%rbp)
jmp    12f1 <parse_interval+0x1a1>
movl   $0xffffffff,-0x4(%rbp)
jmp    1789 <parse_interval+0x639>
jmp    12f6 <parse_interval+0x1a6>
jmp    14e7 <parse_interval+0x397>
cmpl   $0x0,-0x14(%rbp)
je     1370 <parse_interval+0x220>
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
or     $0x20,%eax
cmp    $0x6e,%eax
jne    1370 <parse_interval+0x220>
mov    -0x10(%rbp),%rax
movsbl 0x1(%rax),%eax
or     $0x20,%eax
cmp    $0x61,%eax
jne    135f <parse_interval+0x20f>
mov    -0x10(%rbp),%rax
movsbl 0x2(%rax),%eax
or     $0x20,%eax
cmp    $0x69,%eax
jne    135f <parse_interval+0x20f>
movl   $0x1,-0x38(%rbp)
movl   $0x0,-0x34(%rbp)
mov    -0x10(%rbp),%rax
add    $0x3,%rax
mov    %rax,-0x10(%rbp)
jmp    136b <parse_interval+0x21b>
movl   $0xffffffff,-0x4(%rbp)
jmp    1789 <parse_interval+0x639>
jmp    14e2 <parse_interval+0x392>
mov    -0x30(%rbp),%rax
movl   $0x0,(%rax)
mov    -0x20(%rbp),%rax
movl   $0x0,(%rax)
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x2c,%eax
jne    13a3 <parse_interval+0x253>
mov    -0x20(%rbp),%rax
movl   $0xffffffff,(%rax)
jmp    13b7 <parse_interval+0x267>
mov    -0x10(%rbp),%rdi
mov    -0x18(%rbp),%esi
mov    -0x20(%rbp),%rdx
call   1070 <parse_number@plt>
mov    %rax,-0x10(%rbp)
cmpq   $0x0,-0x10(%rbp)
jne    13ce <parse_interval+0x27e>
movl   $0xffffffff,-0x4(%rbp)
jmp    1789 <parse_interval+0x639>
mov    -0x10(%rbp),%rdi
call   1040 <parse_sp@plt>
mov    %rax,-0x10(%rbp)
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x2c,%eax
jne    1450 <parse_interval+0x300>
mov    -0x10(%rbp),%rdi
add    $0x1,%rdi
call   1040 <parse_sp@plt>
mov    %rax,-0x10(%rbp)
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x5d,%eax
jne    141b <parse_interval+0x2cb>
mov    -0x30(%rbp),%rax
movl   $0x1,(%rax)
jmp    144b <parse_interval+0x2fb>
mov    -0x10(%rbp),%rdi
mov    -0x24(%rbp),%esi
mov    -0x30(%rbp),%rdx
call   1070 <parse_number@plt>
mov    %rax,-0x10(%rbp)
cmpq   $0x0,-0x10(%rbp)
jne    1446 <parse_interval+0x2f6>
movl   $0xffffffff,-0x4(%rbp)
jmp    1789 <parse_interval+0x639>
jmp    144b <parse_interval+0x2fb>
jmp    1467 <parse_interval+0x317>
mov    -0x24(%rbp),%edi
mov    -0x18(%rbp),%esi
call   1030 <mpq_set@plt>
mov    -0x20(%rbp),%rax
mov    (%rax),%ecx
mov    -0x30(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x10(%rbp),%rdi
call   1040 <parse_sp@plt>
mov    %rax,-0x10(%rbp)
mov    -0x20(%rbp),%rax
cmpl   $0x1,(%rax)
je     14bd <parse_interval+0x36d>
mov    -0x30(%rbp),%rax
cmpl   $0xffffffff,(%rax)
je     14bd <parse_interval+0x36d>
mov    -0x20(%rbp),%rax
cmpl   $0x0,(%rax)
jne    14dd <parse_interval+0x38d>
mov    -0x30(%rbp),%rax
cmpl   $0x0,(%rax)
jne    14dd <parse_interval+0x38d>
mov    -0x18(%rbp),%edi
mov    -0x24(%rbp),%esi
call   1060 <mpq_cmp@plt>
cmp    $0x0,%rax
jle    14dd <parse_interval+0x38d>
mov    -0x20(%rbp),%rax
movl   $0x1,(%rax)
mov    -0x30(%rbp),%rax
movl   $0xffffffff,(%rax)
movl   $0xffffffff,-0x4(%rbp)
jmp    1789 <parse_interval+0x639>
jmp    14e2 <parse_interval+0x392>
jmp    14e7 <parse_interval+0x397>
jmp    14ec <parse_interval+0x39c>
mov    -0x10(%rbp),%rdi
call   1040 <parse_sp@plt>
mov    %rax,-0x10(%rbp)
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x5d,%eax
je     1515 <parse_interval+0x3c5>
movl   $0xffffffff,-0x4(%rbp)
jmp    1789 <parse_interval+0x639>
mov    -0x10(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x10(%rbp)
jmp    155d <parse_interval+0x40d>
mov    -0x10(%rbp),%rdi
mov    -0x18(%rbp),%esi
mov    -0x20(%rbp),%rdx
mov    -0x24(%rbp),%ecx
mov    -0x30(%rbp),%r8
call   1050 <parseUncertain@plt>
mov    %rax,-0x10(%rbp)
cmpq   $0x0,-0x10(%rbp)
jne    1558 <parse_interval+0x408>
movl   $0xffffffff,-0x4(%rbp)
jmp    1789 <parse_interval+0x639>
jmp    155d <parse_interval+0x40d>
cmpl   $0x0,-0x14(%rbp)
je     1737 <parse_interval+0x5e7>
cmpl   $0x0,-0x34(%rbp)
je     1737 <parse_interval+0x5e7>
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x5f,%eax
jne    1737 <parse_interval+0x5e7>
mov    -0x10(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x10(%rbp)
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
or     $0x20,%eax
cmp    $0x74,%eax
jne    15d4 <parse_interval+0x484>
mov    -0x10(%rbp),%rax
movsbl 0x1(%rax),%eax
or     $0x20,%eax
cmp    $0x72,%eax
jne    15d4 <parse_interval+0x484>
mov    -0x10(%rbp),%rax
movsbl 0x2(%rax),%eax
or     $0x20,%eax
cmp    $0x76,%eax
jne    15d4 <parse_interval+0x484>
movl   $0x4,-0x34(%rbp)
jmp    1726 <parse_interval+0x5d6>
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
or     $0x20,%eax
cmp    $0x64,%eax
jne    1639 <parse_interval+0x4e9>
mov    -0x10(%rbp),%rax
movsbl 0x1(%rax),%eax
or     $0x20,%eax
cmp    $0x65,%eax
jne    1639 <parse_interval+0x4e9>
mov    -0x10(%rbp),%rax
movsbl 0x2(%rax),%eax
or     $0x20,%eax
cmp    $0x66,%eax
jne    1639 <parse_interval+0x4e9>
mov    -0x20(%rbp),%rax
mov    (%rax),%eax
mov    -0x30(%rbp),%rcx
cmp    (%rcx),%eax
jle    162d <parse_interval+0x4dd>
movl   $0xffffffff,-0x4(%rbp)
jmp    1789 <parse_interval+0x639>
movl   $0x8,-0x34(%rbp)
jmp    1721 <parse_interval+0x5d1>
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
or     $0x20,%eax
cmp    $0x64,%eax
jne    169e <parse_interval+0x54e>
mov    -0x10(%rbp),%rax
movsbl 0x1(%rax),%eax
or     $0x20,%eax
cmp    $0x61,%eax
jne    169e <parse_interval+0x54e>
mov    -0x10(%rbp),%rax
movsbl 0x2(%rax),%eax
or     $0x20,%eax
cmp    $0x63,%eax
jne    169e <parse_interval+0x54e>
mov    -0x20(%rbp),%rax
mov    (%rax),%eax
mov    -0x30(%rbp),%rcx
cmp    (%rcx),%eax
jle    1692 <parse_interval+0x542>
movl   $0xffffffff,-0x4(%rbp)
jmp    1789 <parse_interval+0x639>
movl   $0xc,-0x34(%rbp)
jmp    171c <parse_interval+0x5cc>
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
or     $0x20,%eax
cmp    $0x63,%eax
jne    170b <parse_interval+0x5bb>
mov    -0x10(%rbp),%rax
movsbl 0x1(%rax),%eax
or     $0x20,%eax
cmp    $0x6f,%eax
jne    170b <parse_interval+0x5bb>
mov    -0x10(%rbp),%rax
movsbl 0x2(%rax),%eax
or     $0x20,%eax
cmp    $0x6d,%eax
jne    170b <parse_interval+0x5bb>
mov    -0x20(%rbp),%rax
cmpl   $0x0,(%rax)
jne    16f3 <parse_interval+0x5a3>
mov    -0x30(%rbp),%rax
cmpl   $0x0,(%rax)
je     16ff <parse_interval+0x5af>
movl   $0xffffffff,-0x4(%rbp)
jmp    1789 <parse_interval+0x639>
movl   $0x10,-0x34(%rbp)
jmp    1717 <parse_interval+0x5c7>
movl   $0xffffffff,-0x4(%rbp)
jmp    1789 <parse_interval+0x639>
jmp    171c <parse_interval+0x5cc>
jmp    1721 <parse_interval+0x5d1>
jmp    1726 <parse_interval+0x5d6>
mov    -0x10(%rbp),%rax
add    $0x3,%rax
mov    %rax,-0x10(%rbp)
jmp    1767 <parse_interval+0x617>
cmpl   $0x10,-0x34(%rbp)
jne    1762 <parse_interval+0x612>
mov    -0x20(%rbp),%rax
cmpl   $0x0,(%rax)
jne    175b <parse_interval+0x60b>
mov    -0x30(%rbp),%rax
cmpl   $0x0,(%rax)
je     1762 <parse_interval+0x612>
movl   $0xc,-0x34(%rbp)
jmp    1767 <parse_interval+0x617>
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x0,%eax
je     1783 <parse_interval+0x633>
movl   $0xffffffff,-0x4(%rbp)
jmp    1789 <parse_interval+0x639>
mov    -0x34(%rbp),%eax
mov    %eax,-0x4(%rbp)
mov    -0x4(%rbp),%eax
add    $0x40,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<parse_interval>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
push   %rax
mov    %r9,%r14
mov    %r8d,%r13d
mov    %rcx,%r12
mov    %edx,%ebx
mov    %esi,%ebp
movl   $0x1,(%rcx)
movl   $0xffffffff,(%r9)
cmpb   $0x5b,(%rdi)
jne    11c1 <parse_interval+0x71>
mov    %ebp,0x4(%rsp)
add    $0x1,%rdi
call   1040 <parse_sp@plt>
mov    %rax,%rbp
mov    (%rax),%al
mov    $0x4,%r15d
cmp    $0x5d,%al
jne    126b <parse_interval+0x11b>
mov    %rbp,%rdi
call   1040 <parse_sp@plt>
mov    %rax,%rcx
mov    $0xffffffff,%eax
cmpb   $0x5d,(%rcx)
jne    14af <parse_interval+0x35f>
add    $0x1,%rcx
mov    0x4(%rsp),%ebp
test   %ebp,%ebp
jne    11e7 <parse_interval+0x97>
jmp    1240 <parse_interval+0xf0>
mov    %ebx,%esi
mov    %r12,%rdx
mov    %r13d,%ecx
mov    %r14,%r8
call   1050 <parseUncertain@plt>
test   %rax,%rax
je     14aa <parse_interval+0x35a>
mov    %rax,%rcx
mov    $0x10,%r15d
test   %ebp,%ebp
je     1240 <parse_interval+0xf0>
test   %r15d,%r15d
je     1240 <parse_interval+0xf0>
cmpb   $0x5f,(%rcx)
jne    1240 <parse_interval+0xf0>
mov    0x1(%rcx),%dl
and    $0xdf,%dl
mov    $0xffffffff,%eax
cmp    $0x43,%dl
je     13e1 <parse_interval+0x291>
cmp    $0x44,%dl
je     141f <parse_interval+0x2cf>
cmp    $0x54,%dl
jne    14af <parse_interval+0x35f>
mov    0x2(%rcx),%dl
and    $0xdf,%dl
cmp    $0x52,%dl
jne    14af <parse_interval+0x35f>
mov    0x3(%rcx),%dl
and    $0xdf,%dl
mov    $0x4,%r15d
cmp    $0x56,%dl
jne    14af <parse_interval+0x35f>
jmp    14e3 <parse_interval+0x393>
cmp    $0x10,%r15d
jne    125d <parse_interval+0x10d>
cmpl   $0x0,(%r12)
jne    1257 <parse_interval+0x107>
cmpl   $0x0,(%r14)
je     14be <parse_interval+0x36e>
mov    $0xc,%r15d
xor    %eax,%eax
cmp    (%rcx),%al
sbb    %eax,%eax
or     %r15d,%eax
jmp    14af <parse_interval+0x35f>
or     $0x20,%al
cmp    $0x65,%al
jne    12c4 <parse_interval+0x174>
mov    0x1(%rbp),%cl
and    $0xdf,%cl
mov    $0xffffffff,%eax
cmp    $0x4e,%cl
je     131d <parse_interval+0x1cd>
cmp    $0x4d,%cl
jne    14af <parse_interval+0x35f>
mov    0x2(%rbp),%cl
and    $0xdf,%cl
cmp    $0x50,%cl
jne    14af <parse_interval+0x35f>
mov    0x3(%rbp),%cl
and    $0xdf,%cl
cmp    $0x54,%cl
jne    14af <parse_interval+0x35f>
mov    0x4(%rbp),%cl
and    $0xdf,%cl
cmp    $0x59,%cl
jne    14af <parse_interval+0x35f>
add    $0x5,%rbp
jmp    119a <parse_interval+0x4a>
cmpl   $0x0,0x4(%rsp)
je     12fe <parse_interval+0x1ae>
cmp    $0x6e,%al
jne    12fe <parse_interval+0x1ae>
mov    0x1(%rbp),%cl
and    $0xdf,%cl
mov    $0xffffffff,%eax
cmp    $0x41,%cl
jne    14af <parse_interval+0x35f>
mov    0x2(%rbp),%cl
and    $0xdf,%cl
cmp    $0x49,%cl
jne    14af <parse_interval+0x35f>
add    $0x3,%rbp
xor    %r15d,%r15d
jmp    119a <parse_interval+0x4a>
movl   $0x0,(%r14)
movl   $0x0,(%r12)
cmpb   $0x2c,0x0(%rbp)
jne    1377 <parse_interval+0x227>
movl   $0xffffffff,(%r12)
ff
jmp    1390 <parse_interval+0x240>
mov    0x2(%rbp),%cl
and    $0xdf,%cl
cmp    $0x54,%cl
jne    14af <parse_interval+0x35f>
mov    0x3(%rbp),%cl
and    $0xdf,%cl
cmp    $0x49,%cl
jne    14af <parse_interval+0x35f>
mov    0x4(%rbp),%cl
and    $0xdf,%cl
cmp    $0x52,%cl
jne    14af <parse_interval+0x35f>
mov    0x5(%rbp),%cl
and    $0xdf,%cl
cmp    $0x45,%cl
jne    14af <parse_interval+0x35f>
movl   $0xffffffff,(%r12)
ff
movl   $0x1,(%r14)
add    $0x6,%rbp
mov    $0x10,%r15d
jmp    119a <parse_interval+0x4a>
mov    %rbp,%rdi
mov    %ebx,%esi
mov    %r12,%rdx
call   1070 <parse_number@plt>
mov    %rax,%rbp
test   %rax,%rax
je     14aa <parse_interval+0x35a>
mov    %rbp,%rdi
call   1040 <parse_sp@plt>
mov    %rax,%rbp
cmpb   $0x2c,(%rax)
jne    144d <parse_interval+0x2fd>
add    $0x1,%rbp
mov    %rbp,%rdi
call   1040 <parse_sp@plt>
mov    %rax,%rbp
mov    $0x1,%eax
cmpb   $0x5d,0x0(%rbp)
je     145b <parse_interval+0x30b>
mov    %rbp,%rdi
mov    %r13d,%esi
mov    %r14,%rdx
call   1070 <parse_number@plt>
mov    %rax,%rbp
test   %rax,%rax
jne    145e <parse_interval+0x30e>
jmp    14aa <parse_interval+0x35a>
mov    0x2(%rcx),%dl
and    $0xdf,%dl
cmp    $0x4f,%dl
jne    14af <parse_interval+0x35f>
mov    0x3(%rcx),%dl
and    $0xdf,%dl
cmp    $0x4d,%dl
jne    14af <parse_interval+0x35f>
cmpl   $0x0,(%r12)
jne    14af <parse_interval+0x35f>
cmpl   $0x0,(%r14)
jne    14af <parse_interval+0x35f>
mov    $0x10,%r15d
jmp    14e3 <parse_interval+0x393>
mov    0x2(%rcx),%dl
and    $0xdf,%dl
cmp    $0x41,%dl
je     14c9 <parse_interval+0x379>
cmp    $0x45,%dl
jne    14af <parse_interval+0x35f>
mov    0x3(%rcx),%dl
and    $0xdf,%dl
cmp    $0x46,%dl
jne    14af <parse_interval+0x35f>
mov    (%r12),%edx
mov    $0x8,%r15d
jmp    14de <parse_interval+0x38e>
mov    %r13d,%edi
mov    %ebx,%esi
call   1030 <mpq_set@plt>
mov    (%r12),%eax
mov    %eax,(%r14)
mov    %rbp,%rdi
call   1040 <parse_sp@plt>
mov    %rax,%rbp
mov    (%r12),%eax
cmp    $0x1,%eax
je     149b <parse_interval+0x34b>
mov    (%r14),%ecx
cmp    $0xffffffff,%ecx
je     149b <parse_interval+0x34b>
mov    $0x10,%r15d
or     %ecx,%eax
jne    119a <parse_interval+0x4a>
mov    %ebx,%edi
mov    %r13d,%esi
call   1060 <mpq_cmp@plt>
test   %rax,%rax
jle    119a <parse_interval+0x4a>
movl   $0x1,(%r12)
movl   $0xffffffff,(%r14)
mov    $0xffffffff,%eax
add    $0x8,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret
mov    $0x10,%r15d
jmp    125d <parse_interval+0x10d>
mov    0x3(%rcx),%dl
and    $0xdf,%dl
cmp    $0x43,%dl
jne    14af <parse_interval+0x35f>
mov    (%r12),%edx
mov    $0xc,%r15d
cmp    (%r14),%edx
jg     14af <parse_interval+0x35f>
add    $0x4,%rcx
jmp    125d <parse_interval+0x10d>

LLVM IR (-O0):
define i32 @parse_interval(i8* %0, i32 %1, i32 %2, i32* %3, i32 %4, i32* %5) {
%7 = alloca i32
%8 = alloca i8*
%9 = alloca i32
%10 = alloca i32
%11 = alloca i32*
%12 = alloca i32
%13 = alloca i32*
%14 = alloca i32
%15 = alloca i32
%16 = alloca i8
store i8* %0, i8** %8
store i32 %1, i32* %9
store i32 %2, i32* %10
store i32* %3, i32** %11
store i32 %4, i32* %12
store i32* %5, i32** %13
store i32 16, i32* %14
store i32 0, i32* %15
%17 = load i32*, i32** %11
store i32 1, i32* %17
%18 = load i32*, i32** %13
store i32 -1, i32* %18
%19 = load i8*, i8** %8
%20 = load i8, i8* %19
store i8 %20, i8* %16
%21 = load i8, i8* %16
%22 = sext i8 %21 to i32
%23 = icmp eq i32 %22, 91
br i1 %23, label %24, label %236
24: ; preds = %6
%25 = load i8*, i8** %8
%26 = getelementptr inbounds i8, i8* %25, i64 1
%27 = call i8* @parse_sp(i8* %26)
store i8* %27, i8** %8
%28 = load i8*, i8** %8
%29 = getelementptr inbounds i8, i8* %28, i64 0
%30 = load i8, i8* %29
%31 = sext i8 %30 to i32
%32 = icmp eq i32 %31, 93
br i1 %32, label %33, label %34
33: ; preds = %24
store i32 1, i32* %15
store i32 4, i32* %14
br label %225
34: ; preds = %24
%35 = load i8*, i8** %8
%36 = getelementptr inbounds i8, i8* %35, i64 0
%37 = load i8, i8* %36
%38 = sext i8 %37 to i32
%39 = or i32 %38, 32
%40 = icmp eq i32 %39, 101
br i1 %40, label %41, label %115
41: ; preds = %34
%42 = load i8*, i8** %8
%43 = getelementptr inbounds i8, i8* %42, i64 1
%44 = load i8, i8* %43
%45 = sext i8 %44 to i32
%46 = or i32 %45, 32
%47 = icmp eq i32 %46, 109
br i1 %47, label %48, label %72
48: ; preds = %41
%49 = load i8*, i8** %8
%50 = getelementptr inbounds i8, i8* %49, i64 2
%51 = load i8, i8* %50
%52 = sext i8 %51 to i32
%53 = or i32 %52, 32
%54 = icmp eq i32 %53, 112
br i1 %54, label %55, label %72
55: ; preds = %48
%56 = load i8*, i8** %8
%57 = getelementptr inbounds i8, i8* %56, i64 3
%58 = load i8, i8* %57
%59 = sext i8 %58 to i32
%60 = or i32 %59, 32
%61 = icmp eq i32 %60, 116
br i1 %61, label %62, label %72
62: ; preds = %55
%63 = load i8*, i8** %8
%64 = getelementptr inbounds i8, i8* %63, i64 4
%65 = load i8, i8* %64
%66 = sext i8 %65 to i32
%67 = or i32 %66, 32
%68 = icmp eq i32 %67, 121
br i1 %68, label %69, label %72
69: ; preds = %62
store i32 1, i32* %15
store i32 4, i32* %14
%70 = load i8*, i8** %8
%71 = getelementptr inbounds i8, i8* %70, i64 5
store i8* %71, i8** %8
br label %114
72: ; preds = %62, %55, %48, %41
%73 = load i8*, i8** %8
%74 = getelementptr inbounds i8, i8* %73, i64 1
%75 = load i8, i8* %74
%76 = sext i8 %75 to i32
%77 = or i32 %76, 32
%78 = icmp eq i32 %77, 110
br i1 %78, label %79, label %112
79: ; preds = %72
%80 = load i8*, i8** %8
%81 = getelementptr inbounds i8, i8* %80, i64 2
%82 = load i8, i8* %81
%83 = sext i8 %82 to i32
%84 = or i32 %83, 32
%85 = icmp eq i32 %84, 116
br i1 %85, label %86, label %112
86: ; preds = %79
%87 = load i8*, i8** %8
%88 = getelementptr inbounds i8, i8* %87, i64 3
%89 = load i8, i8* %88
%90 = sext i8 %89 to i32
%91 = or i32 %90, 32
%92 = icmp eq i32 %91, 105
br i1 %92, label %93, label %112
93: ; preds = %86
%94 = load i8*, i8** %8
%95 = getelementptr inbounds i8, i8* %94, i64 4
%96 = load i8, i8* %95
%97 = sext i8 %96 to i32
%98 = or i32 %97, 32
%99 = icmp eq i32 %98, 114
br i1 %99, label %100, label %112
100: ; preds = %93
%101 = load i8*, i8** %8
%102 = getelementptr inbounds i8, i8* %101, i64 5
%103 = load i8, i8* %102
%104 = sext i8 %103 to i32
%105 = or i32 %104, 32
%106 = icmp eq i32 %105, 101
br i1 %106, label %107, label %112
107: ; preds = %100
%108 = load i32*, i32** %11
store i32 -1, i32* %108
%109 = load i32*, i32** %13
store i32 1, i32* %109
%110 = load i8*, i8** %8
%111 = getelementptr inbounds i8, i8* %110, i64 6
store i8* %111, i8** %8
br label %113
112: ; preds = %100, %93, %86, %79, %72
store i32 -1, i32* %7
br label %399
113: ; preds = %107
br label %114
114: ; preds = %113, %69
br label %224
115: ; preds = %34
%116 = load i32, i32* %9
%117 = icmp ne i32 %116, 0
br i1 %117, label %118, label %144
118: ; preds = %115
%119 = load i8*, i8** %8
%120 = getelementptr inbounds i8, i8* %119, i64 0
%121 = load i8, i8* %120
%122 = sext i8 %121 to i32
%123 = or i32 %122, 32
%124 = icmp eq i32 %123, 110
br i1 %124, label %125, label %144
125: ; preds = %118
%126 = load i8*, i8** %8
%127 = getelementptr inbounds i8, i8* %126, i64 1
%128 = load i8, i8* %127
%129 = sext i8 %128 to i32
%130 = or i32 %129, 32
%131 = icmp eq i32 %130, 97
br i1 %131, label %132, label %142
132: ; preds = %125
%133 = load i8*, i8** %8
%134 = getelementptr inbounds i8, i8* %133, i64 2
%135 = load i8, i8* %134
%136 = sext i8 %135 to i32
%137 = or i32 %136, 32
%138 = icmp eq i32 %137, 105
br i1 %138, label %139, label %142
139: ; preds = %132
store i32 1, i32* %15
store i32 0, i32* %14
%140 = load i8*, i8** %8
%141 = getelementptr inbounds i8, i8* %140, i64 3
store i8* %141, i8** %8
br label %143
142: ; preds = %132, %125
store i32 -1, i32* %7
br label %399
143: ; preds = %139
br label %223
144: ; preds = %118, %115
%145 = load i32*, i32** %13
store i32 0, i32* %145
%146 = load i32*, i32** %11
store i32 0, i32* %146
%147 = load i8*, i8** %8
%148 = load i8, i8* %147
%149 = sext i8 %148 to i32
%150 = icmp eq i32 %149, 44
br i1 %150, label %151, label %153
151: ; preds = %144
%152 = load i32*, i32** %11
store i32 -1, i32* %152
br label %158
153: ; preds = %144
%154 = load i8*, i8** %8
%155 = load i32, i32* %10
%156 = load i32*, i32** %11
%157 = call i8* @parse_number(i8* %154, i32 %155, i32* %156)
store i8* %157, i8** %8
br label %158
158: ; preds = %153, %151
%159 = load i8*, i8** %8
%160 = icmp eq i8* %159, null
br i1 %160, label %161, label %162
161: ; preds = %158
store i32 -1, i32* %7
br label %399
162: ; preds = %158
%163 = load i8*, i8** %8
%164 = call i8* @parse_sp(i8* %163)
store i8* %164, i8** %8
%165 = load i8*, i8** %8
%166 = load i8, i8* %165
%167 = sext i8 %166 to i32
%168 = icmp eq i32 %167, 44
br i1 %168, label %169, label %189
169: ; preds = %162
%170 = load i8*, i8** %8
%171 = getelementptr inbounds i8, i8* %170, i64 1
%172 = call i8* @parse_sp(i8* %171)
store i8* %172, i8** %8
%173 = load i8*, i8** %8
%174 = load i8, i8* %173
%175 = sext i8 %174 to i32
%176 = icmp eq i32 %175, 93
br i1 %176, label %177, label %179
177: ; preds = %169
%178 = load i32*, i32** %13
store i32 1, i32* %178
br label %188
179: ; preds = %169
%180 = load i8*, i8** %8
%181 = load i32, i32* %12
%182 = load i32*, i32** %13
%183 = call i8* @parse_number(i8* %180, i32 %181, i32* %182)
store i8* %183, i8** %8
%184 = load i8*, i8** %8
%185 = icmp eq i8* %184, null
br i1 %185, label %186, label %187
186: ; preds = %179
store i32 -1, i32* %7
br label %399
187: ; preds = %179
br label %188
188: ; preds = %187, %177
br label %196
189: ; preds = %162
%190 = load i32, i32* %12
%191 = load i32, i32* %10
%192 = call i32 @mpq_set(i32 %190, i32 %191)
%193 = load i32*, i32** %11
%194 = load i32, i32* %193
%195 = load i32*, i32** %13
store i32 %194, i32* %195
br label %196
196: ; preds = %189, %188
%197 = load i8*, i8** %8
%198 = call i8* @parse_sp(i8* %197)
store i8* %198, i8** %8
%199 = load i32*, i32** %11
%200 = load i32, i32* %199
%201 = icmp eq i32 %200, 1
br i1 %201, label %219, label %202
202: ; preds = %196
%203 = load i32*, i32** %13
%204 = load i32, i32* %203
%205 = icmp eq i32 %204, -1
br i1 %205, label %219, label %206
206: ; preds = %202
%207 = load i32*, i32** %11
%208 = load i32, i32* %207
%209 = icmp ne i32 %208, 0
br i1 %209, label %222, label %210
210: ; preds = %206
%211 = load i32*, i32** %13
%212 = load i32, i32* %211
%213 = icmp ne i32 %212, 0
br i1 %213, label %222, label %214
214: ; preds = %210
%215 = load i32, i32* %10
%216 = load i32, i32* %12
%217 = call i64 @mpq_cmp(i32 %215, i32 %216)
%218 = icmp sgt i64 %217, 0
br i1 %218, label %219, label %222
219: ; preds = %214, %202, %196
%220 = load i32*, i32** %11
store i32 1, i32* %220
%221 = load i32*, i32** %13
store i32 -1, i32* %221
store i32 -1, i32* %7
br label %399
222: ; preds = %214, %210, %206
br label %223
223: ; preds = %222, %143
br label %224
224: ; preds = %223, %114
br label %225
225: ; preds = %224, %33
%226 = load i8*, i8** %8
%227 = call i8* @parse_sp(i8* %226)
store i8* %227, i8** %8
%228 = load i8*, i8** %8
%229 = load i8, i8* %228
%230 = sext i8 %229 to i32
%231 = icmp ne i32 %230, 93
br i1 %231, label %232, label %233
232: ; preds = %225
store i32 -1, i32* %7
br label %399
233: ; preds = %225
%234 = load i8*, i8** %8
%235 = getelementptr inbounds i8, i8* %234, i32 1
store i8* %235, i8** %8
br label %247
236: ; preds = %6
%237 = load i8*, i8** %8
%238 = load i32, i32* %10
%239 = load i32*, i32** %11
%240 = load i32, i32* %12
%241 = load i32*, i32** %13
%242 = call i8* @parseUncertain(i8* %237, i32 %238, i32* %239, i32 %240, i32* %241)
store i8* %242, i8** %8
%243 = load i8*, i8** %8
%244 = icmp eq i8* %243, null
br i1 %244, label %245, label %246
245: ; preds = %236
store i32 -1, i32* %7
br label %399
246: ; preds = %236
br label %247
247: ; preds = %246, %233
%248 = load i32, i32* %9
%249 = icmp ne i32 %248, 0
br i1 %249, label %250, label %378
250: ; preds = %247
%251 = load i32, i32* %14
%252 = icmp ne i32 %251, 0
br i1 %252, label %253, label %378
253: ; preds = %250
%254 = load i8*, i8** %8
%255 = load i8, i8* %254
%256 = sext i8 %255 to i32
%257 = icmp eq i32 %256, 95
br i1 %257, label %258, label %378
258: ; preds = %253
%259 = load i8*, i8** %8
%260 = getelementptr inbounds i8, i8* %259, i32 1
store i8* %260, i8** %8
%261 = load i8*, i8** %8
%262 = getelementptr inbounds i8, i8* %261, i64 0
%263 = load i8, i8* %262
%264 = sext i8 %263 to i32
%265 = or i32 %264, 32
%266 = icmp eq i32 %265, 116
br i1 %266, label %267, label %282
267: ; preds = %258
%268 = load i8*, i8** %8
%269 = getelementptr inbounds i8, i8* %268, i64 1
%270 = load i8, i8* %269
%271 = sext i8 %270 to i32
%272 = or i32 %271, 32
%273 = icmp eq i32 %272, 114
br i1 %273, label %274, label %282
274: ; preds = %267
%275 = load i8*, i8** %8
%276 = getelementptr inbounds i8, i8* %275, i64 2
%277 = load i8, i8* %276
%278 = sext i8 %277 to i32
%279 = or i32 %278, 32
%280 = icmp eq i32 %279, 118
br i1 %280, label %281, label %282
281: ; preds = %274
store i32 4, i32* %14
br label %375
282: ; preds = %274, %267, %258
%283 = load i8*, i8** %8
%284 = getelementptr inbounds i8, i8* %283, i64 0
%285 = load i8, i8* %284
%286 = sext i8 %285 to i32
%287 = or i32 %286, 32
%288 = icmp eq i32 %287, 100
br i1 %288, label %289, label %311
289: ; preds = %282
%290 = load i8*, i8** %8
%291 = getelementptr inbounds i8, i8* %290, i64 1
%292 = load i8, i8* %291
%293 = sext i8 %292 to i32
%294 = or i32 %293, 32
%295 = icmp eq i32 %294, 101
br i1 %295, label %296, label %311
296: ; preds = %289
%297 = load i8*, i8** %8
%298 = getelementptr inbounds i8, i8* %297, i64 2
%299 = load i8, i8* %298
%300 = sext i8 %299 to i32
%301 = or i32 %300, 32
%302 = icmp eq i32 %301, 102
br i1 %302, label %303, label %311
303: ; preds = %296
%304 = load i32*, i32** %11
%305 = load i32, i32* %304
%306 = load i32*, i32** %13
%307 = load i32, i32* %306
%308 = icmp sgt i32 %305, %307
br i1 %308, label %309, label %310
309: ; preds = %303
store i32 -1, i32* %7
br label %399
310: ; preds = %303
store i32 8, i32* %14
br label %374
311: ; preds = %296, %289, %282
%312 = load i8*, i8** %8
%313 = getelementptr inbounds i8, i8* %312, i64 0
%314 = load i8, i8* %313
%315 = sext i8 %314 to i32
%316 = or i32 %315, 32
%317 = icmp eq i32 %316, 100
br i1 %317, label %318, label %340
318: ; preds = %311
%319 = load i8*, i8** %8
%320 = getelementptr inbounds i8, i8* %319, i64 1
%321 = load i8, i8* %320
%322 = sext i8 %321 to i32
%323 = or i32 %322, 32
%324 = icmp eq i32 %323, 97
br i1 %324, label %325, label %340
325: ; preds = %318
%326 = load i8*, i8** %8
%327 = getelementptr inbounds i8, i8* %326, i64 2
%328 = load i8, i8* %327
%329 = sext i8 %328 to i32
%330 = or i32 %329, 32
%331 = icmp eq i32 %330, 99
br i1 %331, label %332, label %340
332: ; preds = %325
%333 = load i32*, i32** %11
%334 = load i32, i32* %333
%335 = load i32*, i32** %13
%336 = load i32, i32* %335
%337 = icmp sgt i32 %334, %336
br i1 %337, label %338, label %339
338: ; preds = %332
store i32 -1, i32* %7
br label %399
339: ; preds = %332
store i32 12, i32* %14
br label %373
340: ; preds = %325, %318, %311
%341 = load i8*, i8** %8
%342 = getelementptr inbounds i8, i8* %341, i64 0
%343 = load i8, i8* %342
%344 = sext i8 %343 to i32
%345 = or i32 %344, 32
%346 = icmp eq i32 %345, 99
br i1 %346, label %347, label %371
347: ; preds = %340
%348 = load i8*, i8** %8
%349 = getelementptr inbounds i8, i8* %348, i64 1
%350 = load i8, i8* %349
%351 = sext i8 %350 to i32
%352 = or i32 %351, 32
%353 = icmp eq i32 %352, 111
br i1 %353, label %354, label %371
354: ; preds = %347
%355 = load i8*, i8** %8
%356 = getelementptr inbounds i8, i8* %355, i64 2
%357 = load i8, i8* %356
%358 = sext i8 %357 to i32
%359 = or i32 %358, 32
%360 = icmp eq i32 %359, 109
br i1 %360, label %361, label %371
361: ; preds = %354
%362 = load i32*, i32** %11
%363 = load i32, i32* %362
%364 = icmp ne i32 %363, 0
br i1 %364, label %369, label %365
365: ; preds = %361
%366 = load i32*, i32** %13
%367 = load i32, i32* %366
%368 = icmp ne i32 %367, 0
br i1 %368, label %369, label %370
369: ; preds = %365, %361
store i32 -1, i32* %7
br label %399
370: ; preds = %365
store i32 16, i32* %14
br label %372
371: ; preds = %354, %347, %340
store i32 -1, i32* %7
br label %399
372: ; preds = %370
br label %373
373: ; preds = %372, %339
br label %374
374: ; preds = %373, %310
br label %375
375: ; preds = %374, %281
%376 = load i8*, i8** %8
%377 = getelementptr inbounds i8, i8* %376, i64 3
store i8* %377, i8** %8
br label %391
378: ; preds = %253, %250, %247
%379 = load i32, i32* %14
%380 = icmp eq i32 %379, 16
br i1 %380, label %381, label %390
381: ; preds = %378
%382 = load i32*, i32** %11
%383 = load i32, i32* %382
%384 = icmp ne i32 %383, 0
br i1 %384, label %389, label %385
385: ; preds = %381
%386 = load i32*, i32** %13
%387 = load i32, i32* %386
%388 = icmp ne i32 %387, 0
br i1 %388, label %389, label %390
389: ; preds = %385, %381
store i32 12, i32* %14
br label %390
390: ; preds = %389, %385, %378
br label %391
391: ; preds = %390, %375
%392 = load i8*, i8** %8
%393 = load i8, i8* %392
%394 = sext i8 %393 to i32
%395 = icmp ne i32 %394, 0
br i1 %395, label %396, label %397
396: ; preds = %391
store i32 -1, i32* %7
br label %399
397: ; preds = %391
%398 = load i32, i32* %14
store i32 %398, i32* %7
br label %399
399: ; preds = %397, %396, %371, %369, %338, %309, %245, %232, %219, %186, %161, %142, %112
%400 = load i32, i32* %7
ret i32 %400
}

LLVM IR (-O2):
define i32 @parse_interval(i8* %0, i32 %1, i32 %2, i32* %3, i32 %4, i32* %5) {
store i32 1, i32* %3
store i32 -1, i32* %5
%7 = load i8, i8* %0
%8 = icmp eq i8 %7, 91
br i1 %8, label %9, label %126
9: ; preds = %6
%10 = getelementptr inbounds i8, i8* %0, i64 1
%11 = tail call i8* @parse_sp(i8* %10)
%12 = load i8, i8* %11
%13 = icmp eq i8 %12, 93
br i1 %13, label %118, label %14
14: ; preds = %9
%15 = or i8 %12, 32
%16 = icmp eq i8 %15, 101
br i1 %16, label %17, label %60
17: ; preds = %14
%18 = getelementptr inbounds i8, i8* %11, i64 1
%19 = load i8, i8* %18
%20 = and i8 %19, -33
switch i8 %20, label %208 [
i8 77, label %21
i8 78, label %38
]
21: ; preds = %17
%22 = getelementptr inbounds i8, i8* %11, i64 2
%23 = load i8, i8* %22
%24 = and i8 %23, -33
%25 = icmp eq i8 %24, 80
br i1 %25, label %26, label %208
26: ; preds = %21
%27 = getelementptr inbounds i8, i8* %11, i64 3
%28 = load i8, i8* %27
%29 = and i8 %28, -33
%30 = icmp eq i8 %29, 84
br i1 %30, label %31, label %208
31: ; preds = %26
%32 = getelementptr inbounds i8, i8* %11, i64 4
%33 = load i8, i8* %32
%34 = and i8 %33, -33
%35 = icmp eq i8 %34, 89
br i1 %35, label %36, label %208
36: ; preds = %31
%37 = getelementptr inbounds i8, i8* %11, i64 5
br label %118
38: ; preds = %17
%39 = getelementptr inbounds i8, i8* %11, i64 2
%40 = load i8, i8* %39
%41 = and i8 %40, -33
%42 = icmp eq i8 %41, 84
br i1 %42, label %43, label %208
43: ; preds = %38
%44 = getelementptr inbounds i8, i8* %11, i64 3
%45 = load i8, i8* %44
%46 = and i8 %45, -33
%47 = icmp eq i8 %46, 73
br i1 %47, label %48, label %208
48: ; preds = %43
%49 = getelementptr inbounds i8, i8* %11, i64 4
%50 = load i8, i8* %49
%51 = and i8 %50, -33
%52 = icmp eq i8 %51, 82
br i1 %52, label %53, label %208
53: ; preds = %48
%54 = getelementptr inbounds i8, i8* %11, i64 5
%55 = load i8, i8* %54
%56 = and i8 %55, -33
%57 = icmp eq i8 %56, 69
br i1 %57, label %58, label %208
58: ; preds = %53
store i32 -1, i32* %3
store i32 1, i32* %5
%59 = getelementptr inbounds i8, i8* %11, i64 6
br label %118
60: ; preds = %14
%61 = icmp ne i32 %1, 0
%62 = icmp eq i8 %15, 110
%63 = select i1 %61, i1 %62, i1 false
br i1 %63, label %64, label %76
64: ; preds = %60
%65 = getelementptr inbounds i8, i8* %11, i64 1
%66 = load i8, i8* %65
%67 = and i8 %66, -33
%68 = icmp eq i8 %67, 65
br i1 %68, label %69, label %208
69: ; preds = %64
%70 = getelementptr inbounds i8, i8* %11, i64 2
%71 = load i8, i8* %70
%72 = and i8 %71, -33
%73 = icmp eq i8 %72, 73
br i1 %73, label %74, label %208
74: ; preds = %69
%75 = getelementptr inbounds i8, i8* %11, i64 3
br label %118
76: ; preds = %60
store i32 0, i32* %5
store i32 0, i32* %3
%77 = load i8, i8* %11
%78 = icmp eq i8 %77, 44
br i1 %78, label %79, label %80
79: ; preds = %76
store i32 -1, i32* %3
br label %83
80: ; preds = %76
%81 = tail call i8* @parse_number(i8* %11, i32 %2, i32* %3)
%82 = icmp eq i8* %81, null
br i1 %82, label %208, label %83
83: ; preds = %79, %80
%84 = phi i8* [ %11, %79 ], [ %81, %80 ]
%85 = tail call i8* @parse_sp(i8* %84)
%86 = load i8, i8* %85
%87 = icmp eq i8 %86, 44
br i1 %87, label %88, label %96
88: ; preds = %83
%89 = getelementptr inbounds i8, i8* %85, i64 1
%90 = tail call i8* @parse_sp(i8* %89)
%91 = load i8, i8* %90
%92 = icmp eq i8 %91, 93
br i1 %92, label %99, label %93
93: ; preds = %88
%94 = tail call i8* @parse_number(i8* %90, i32 %4, i32* %5)
%95 = icmp eq i8* %94, null
br i1 %95, label %208, label %102
96: ; preds = %83
%97 = tail call i32 @mpq_set(i32 %4, i32 %2)
%98 = load i32, i32* %3
br label %99
99: ; preds = %88, %96
%100 = phi i32 [ %98, %96 ], [ 1, %88 ]
%101 = phi i8* [ %85, %96 ], [ %90, %88 ]
store i32 %100, i32* %5
br label %102
102: ; preds = %99, %93
%103 = phi i8* [ %94, %93 ], [ %101, %99 ]
%104 = tail call i8* @parse_sp(i8* %103)
%105 = load i32, i32* %3
%106 = icmp eq i32 %105, 1
br i1 %106, label %117, label %107
107: ; preds = %102
%108 = load i32, i32* %5
%109 = icmp eq i32 %108, -1
br i1 %109, label %117, label %110
110: ; preds = %107
%111 = icmp eq i32 %105, 0
%112 = icmp eq i32 %108, 0
%113 = select i1 %111, i1 %112, i1 false
br i1 %113, label %114, label %118
114: ; preds = %110
%115 = tail call i64 @mpq_cmp(i32 %2, i32 %4)
%116 = icmp sgt i64 %115, 0
br i1 %116, label %117, label %118
117: ; preds = %114, %107, %102
store i32 1, i32* %3
store i32 -1, i32* %5
br label %208
118: ; preds = %9, %58, %36, %110, %114, %74
%119 = phi i8* [ %37, %36 ], [ %59, %58 ], [ %75, %74 ], [ %104, %110 ], [ %104, %114 ], [ %11, %9 ]
%120 = phi i32 [ 4, %36 ], [ 16, %58 ], [ 0, %74 ], [ 16, %110 ], [ 16, %114 ], [ 4, %9 ]
%121 = tail call i8* @parse_sp(i8* %119)
%122 = load i8, i8* %121
%123 = icmp eq i8 %122, 93
br i1 %123, label %124, label %208
124: ; preds = %118
%125 = getelementptr inbounds i8, i8* %121, i64 1
br label %129
126: ; preds = %6
%127 = tail call i8* @parseUncertain(i8* %0, i32 %2, i32* %3, i32 %4, i32* %5)
%128 = icmp eq i8* %127, null
br i1 %128, label %208, label %129
129: ; preds = %126, %124
%130 = phi i8* [ %125, %124 ], [ %127, %126 ]
%131 = phi i32 [ %120, %124 ], [ 16, %126 ]
%132 = icmp ne i32 %1, 0
%133 = icmp ne i32 %131, 0
%134 = and i1 %132, %133
br i1 %134, label %135, label %193
135: ; preds = %129
%136 = load i8, i8* %130
%137 = icmp eq i8 %136, 95
br i1 %137, label %138, label %193
138: ; preds = %135
%139 = getelementptr inbounds i8, i8* %130, i64 1
%140 = load i8, i8* %139
%141 = and i8 %140, -33
switch i8 %141, label %208 [
i8 84, label %142
i8 68, label %152
i8 67, label %174
]
142: ; preds = %138
%143 = getelementptr inbounds i8, i8* %130, i64 2
%144 = load i8, i8* %143
%145 = and i8 %144, -33
%146 = icmp eq i8 %145, 82
br i1 %146, label %147, label %208
147: ; preds = %142
%148 = getelementptr inbounds i8, i8* %130, i64 3
%149 = load i8, i8* %148
%150 = and i8 %149, -33
%151 = icmp eq i8 %150, 86
br i1 %151, label %190, label %208
152: ; preds = %138
%153 = getelementptr inbounds i8, i8* %130, i64 2
%154 = load i8, i8* %153
%155 = and i8 %154, -33
switch i8 %155, label %208 [
i8 69, label %156
i8 65, label %165
]
156: ; preds = %152
%157 = getelementptr inbounds i8, i8* %130, i64 3
%158 = load i8, i8* %157
%159 = and i8 %158, -33
%160 = icmp eq i8 %159, 70
br i1 %160, label %161, label %208
161: ; preds = %156
%162 = load i32, i32* %3
%163 = load i32, i32* %5
%164 = icmp sgt i32 %162, %163
br i1 %164, label %208, label %190
165: ; preds = %152
%166 = getelementptr inbounds i8, i8* %130, i64 3
%167 = load i8, i8* %166
%168 = and i8 %167, -33
%169 = icmp eq i8 %168, 67
br i1 %169, label %170, label %208
170: ; preds = %165
%171 = load i32, i32* %3
%172 = load i32, i32* %5
%173 = icmp sgt i32 %171, %172
br i1 %173, label %208, label %190
174: ; preds = %138
%175 = getelementptr inbounds i8, i8* %130, i64 2
%176 = load i8, i8* %175
%177 = and i8 %176, -33
%178 = icmp eq i8 %177, 79
br i1 %178, label %179, label %208
179: ; preds = %174
%180 = getelementptr inbounds i8, i8* %130, i64 3
%181 = load i8, i8* %180
%182 = and i8 %181, -33
%183 = icmp eq i8 %182, 77
br i1 %183, label %184, label %208
184: ; preds = %179
%185 = load i32, i32* %3
%186 = icmp eq i32 %185, 0
br i1 %186, label %187, label %208
187: ; preds = %184
%188 = load i32, i32* %5
%189 = icmp eq i32 %188, 0
br i1 %189, label %190, label %208
190: ; preds = %187, %170, %161, %147
%191 = phi i32 [ 4, %147 ], [ 8, %161 ], [ 12, %170 ], [ 16, %187 ]
%192 = getelementptr inbounds i8, i8* %130, i64 4
br label %202
193: ; preds = %135, %129
%194 = icmp eq i32 %131, 16
br i1 %194, label %195, label %202
195: ; preds = %193
%196 = load i32, i32* %3
%197 = icmp eq i32 %196, 0
br i1 %197, label %198, label %201
198: ; preds = %195
%199 = load i32, i32* %5
%200 = icmp eq i32 %199, 0
br i1 %200, label %202, label %201
201: ; preds = %198, %195
br label %202
202: ; preds = %193, %198, %201, %190
%203 = phi i8* [ %192, %190 ], [ %130, %201 ], [ %130, %198 ], [ %130, %193 ]
%204 = phi i32 [ %191, %190 ], [ 12, %201 ], [ 16, %198 ], [ %131, %193 ]
%205 = load i8, i8* %203
%206 = icmp eq i8 %205, 0
%207 = select i1 %206, i32 %204, i32 -1
br label %208
208: ; preds = %152, %156, %138, %17, %165, %147, %142, %21, %26, %31, %202, %174, %179, %184, %187, %170, %161, %126, %118, %93, %80, %64, %69, %38, %43, %48, %53, %117
%209 = phi i32 [ -1, %117 ], [ -1, %53 ], [ -1, %48 ], [ -1, %43 ], [ -1, %38 ], [ -1, %69 ], [ -1, %64 ], [ -1, %80 ], [ -1, %93 ], [ -1, %118 ], [ -1, %126 ], [ -1, %161 ], [ -1, %170 ], [ -1, %187 ], [ -1, %184 ], [ -1, %179 ], [ -1, %174 ], [ %207, %202 ], [ -1, %31 ], [ -1, %26 ], [ -1, %21 ], [ -1, %142 ], [ -1, %147 ], [ -1, %165 ], [ -1, %17 ], [ -1, %138 ], [ -1, %156 ], [ -1, %152 ]
ret i32 %209
}