#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 getval(char *, char **);
int getvalues(char *line, int *o, int *oe, int *n, int *ne) {
  char *p;
  p = line;
  while (*p == ' ' || *p == '\t')
    ++p;
  if (*p < '0' || *p > '9')
    return (0);
  line = p;
  *o = getval(line, &p);
  if (p == line)
    return (0);
  while (*p == ' ' || *p == '\t')
    ++p;
  if (*p == '\n' || *p == '#' || *p == 0) {
    *oe = *n = *o;
    return (1);
  }
  if (*p == '>')
    *oe = *o;
  else if (*p == '-') {
    line = ++p;
    *oe = getval(line, &p);
    if (p == line)
      return (0);
    while (*p == ' ' || *p == '\t')
      ++p;
    if (*p == '\n' || *p == '#' || *p == 0) {
      *n = *o;
      return (1);
    }
    if (*p != '>')
      return (0);
  } else
    return (0);
  line = ++p;
  *n = getval(line, &p);
  if (p == line)
    return (0);
  while (*p == ' ' || *p == '\t')
    ++p;
  if (*p == '\n' || *p == '#' || *p == 0) {
    *ne = *n;
    return (1);
  }
  if (*p != '-')
    return (0);
  line = ++p;
  *ne = getval(line, &p);
  if (p == line)
    return (0);
  while (*p == ' ' || *p == '\t')
    ++p;
  if (*p == '\n' || *p == '#' || *p == 0)
    return (*oe - *o == *ne - *n);
  return (0);
}


x86 assembly (clang, -O0):
<getvalues>:
push   %rbp
mov    %rsp,%rbp
sub    $0x40,%rsp
mov    %rdi,-0x10(%rbp)
mov    %rsi,-0x18(%rbp)
mov    %rdx,-0x20(%rbp)
mov    %rcx,-0x28(%rbp)
mov    %r8,-0x30(%rbp)
mov    -0x10(%rbp),%rax
mov    %rax,-0x38(%rbp)
mov    -0x38(%rbp),%rax
movsbl (%rax),%ecx
mov    $0x1,%al
cmp    $0x20,%ecx
mov    %al,-0x39(%rbp)
je     1159 <getvalues+0x49>
mov    -0x38(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x9,%eax
sete   %al
mov    %al,-0x39(%rbp)
mov    -0x39(%rbp),%al
test   $0x1,%al
jne    1169 <getvalues+0x59>
jmp    117a <getvalues+0x6a>
mov    -0x38(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x38(%rbp)
jmp    1134 <getvalues+0x24>
mov    -0x38(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x30,%eax
jl     119a <getvalues+0x8a>
mov    -0x38(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x39,%eax
jle    11a6 <getvalues+0x96>
movl   $0x0,-0x4(%rbp)
jmp    1584 <getvalues+0x474>
mov    -0x38(%rbp),%rax
mov    %rax,-0x10(%rbp)
mov    -0x10(%rbp),%rdi
lea    -0x38(%rbp),%rsi
call   1030 <getval@plt>
mov    %eax,%ecx
mov    -0x18(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x38(%rbp),%rax
cmp    -0x10(%rbp),%rax
jne    11dd <getvalues+0xcd>
movl   $0x0,-0x4(%rbp)
jmp    1584 <getvalues+0x474>
jmp    11e2 <getvalues+0xd2>
mov    -0x38(%rbp),%rax
movsbl (%rax),%ecx
mov    $0x1,%al
cmp    $0x20,%ecx
mov    %al,-0x3a(%rbp)
je     1207 <getvalues+0xf7>
mov    -0x38(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x9,%eax
sete   %al
mov    %al,-0x3a(%rbp)
mov    -0x3a(%rbp),%al
test   $0x1,%al
jne    1217 <getvalues+0x107>
jmp    1228 <getvalues+0x118>
mov    -0x38(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x38(%rbp)
jmp    11e2 <getvalues+0xd2>
mov    -0x38(%rbp),%rax
movsbl (%rax),%eax
cmp    $0xa,%eax
je     1258 <getvalues+0x148>
mov    -0x38(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x23,%eax
je     1258 <getvalues+0x148>
mov    -0x38(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x0,%eax
jne    1276 <getvalues+0x166>
mov    -0x18(%rbp),%rax
mov    (%rax),%ecx
mov    -0x28(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x20(%rbp),%rax
mov    %ecx,(%rax)
movl   $0x1,-0x4(%rbp)
jmp    1584 <getvalues+0x474>
mov    -0x38(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x3e,%eax
jne    1297 <getvalues+0x187>
mov    -0x18(%rbp),%rax
mov    (%rax),%ecx
mov    -0x20(%rbp),%rax
mov    %ecx,(%rax)
jmp    13ab <getvalues+0x29b>
mov    -0x38(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x2d,%eax
jne    139a <getvalues+0x28a>
mov    -0x38(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x38(%rbp)
mov    %rax,-0x10(%rbp)
mov    -0x10(%rbp),%rdi
lea    -0x38(%rbp),%rsi
call   1030 <getval@plt>
mov    %eax,%ecx
mov    -0x20(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x38(%rbp),%rax
cmp    -0x10(%rbp),%rax
jne    12e6 <getvalues+0x1d6>
movl   $0x0,-0x4(%rbp)
jmp    1584 <getvalues+0x474>
jmp    12eb <getvalues+0x1db>
mov    -0x38(%rbp),%rax
movsbl (%rax),%ecx
mov    $0x1,%al
cmp    $0x20,%ecx
mov    %al,-0x3b(%rbp)
je     1310 <getvalues+0x200>
mov    -0x38(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x9,%eax
sete   %al
mov    %al,-0x3b(%rbp)
mov    -0x3b(%rbp),%al
test   $0x1,%al
jne    1320 <getvalues+0x210>
jmp    1331 <getvalues+0x221>
mov    -0x38(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x38(%rbp)
jmp    12eb <getvalues+0x1db>
mov    -0x38(%rbp),%rax
movsbl (%rax),%eax
cmp    $0xa,%eax
je     1361 <getvalues+0x251>
mov    -0x38(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x23,%eax
je     1361 <getvalues+0x251>
mov    -0x38(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x0,%eax
jne    1379 <getvalues+0x269>
mov    -0x18(%rbp),%rax
mov    (%rax),%ecx
mov    -0x28(%rbp),%rax
mov    %ecx,(%rax)
movl   $0x1,-0x4(%rbp)
jmp    1584 <getvalues+0x474>
mov    -0x38(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x3e,%eax
je     1395 <getvalues+0x285>
movl   $0x0,-0x4(%rbp)
jmp    1584 <getvalues+0x474>
jmp    13a6 <getvalues+0x296>
movl   $0x0,-0x4(%rbp)
jmp    1584 <getvalues+0x474>
jmp    13ab <getvalues+0x29b>
mov    -0x38(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x38(%rbp)
mov    %rax,-0x10(%rbp)
mov    -0x10(%rbp),%rdi
lea    -0x38(%rbp),%rsi
call   1030 <getval@plt>
mov    %eax,%ecx
mov    -0x28(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x38(%rbp),%rax
cmp    -0x10(%rbp),%rax
jne    13ea <getvalues+0x2da>
movl   $0x0,-0x4(%rbp)
jmp    1584 <getvalues+0x474>
jmp    13ef <getvalues+0x2df>
mov    -0x38(%rbp),%rax
movsbl (%rax),%ecx
mov    $0x1,%al
cmp    $0x20,%ecx
mov    %al,-0x3c(%rbp)
je     1414 <getvalues+0x304>
mov    -0x38(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x9,%eax
sete   %al
mov    %al,-0x3c(%rbp)
mov    -0x3c(%rbp),%al
test   $0x1,%al
jne    1424 <getvalues+0x314>
jmp    1435 <getvalues+0x325>
mov    -0x38(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x38(%rbp)
jmp    13ef <getvalues+0x2df>
mov    -0x38(%rbp),%rax
movsbl (%rax),%eax
cmp    $0xa,%eax
je     1465 <getvalues+0x355>
mov    -0x38(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x23,%eax
je     1465 <getvalues+0x355>
mov    -0x38(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x0,%eax
jne    147d <getvalues+0x36d>
mov    -0x28(%rbp),%rax
mov    (%rax),%ecx
mov    -0x30(%rbp),%rax
mov    %ecx,(%rax)
movl   $0x1,-0x4(%rbp)
jmp    1584 <getvalues+0x474>
mov    -0x38(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x2d,%eax
je     1499 <getvalues+0x389>
movl   $0x0,-0x4(%rbp)
jmp    1584 <getvalues+0x474>
mov    -0x38(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x38(%rbp)
mov    %rax,-0x10(%rbp)
mov    -0x10(%rbp),%rdi
lea    -0x38(%rbp),%rsi
call   1030 <getval@plt>
mov    %eax,%ecx
mov    -0x30(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x38(%rbp),%rax
cmp    -0x10(%rbp),%rax
jne    14d8 <getvalues+0x3c8>
movl   $0x0,-0x4(%rbp)
jmp    1584 <getvalues+0x474>
jmp    14dd <getvalues+0x3cd>
mov    -0x38(%rbp),%rax
movsbl (%rax),%ecx
mov    $0x1,%al
cmp    $0x20,%ecx
mov    %al,-0x3d(%rbp)
je     1502 <getvalues+0x3f2>
mov    -0x38(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x9,%eax
sete   %al
mov    %al,-0x3d(%rbp)
mov    -0x3d(%rbp),%al
test   $0x1,%al
jne    1512 <getvalues+0x402>
jmp    1523 <getvalues+0x413>
mov    -0x38(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x38(%rbp)
jmp    14dd <getvalues+0x3cd>
mov    -0x38(%rbp),%rax
movsbl (%rax),%eax
cmp    $0xa,%eax
je     1553 <getvalues+0x443>
mov    -0x38(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x23,%eax
je     1553 <getvalues+0x443>
mov    -0x38(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x0,%eax
jne    157d <getvalues+0x46d>
mov    -0x20(%rbp),%rax
mov    (%rax),%eax
mov    -0x18(%rbp),%rcx
sub    (%rcx),%eax
mov    -0x30(%rbp),%rcx
mov    (%rcx),%ecx
mov    -0x28(%rbp),%rdx
sub    (%rdx),%ecx
cmp    %ecx,%eax
sete   %al
and    $0x1,%al
movzbl %al,%eax
mov    %eax,-0x4(%rbp)
jmp    1584 <getvalues+0x474>
movl   $0x0,-0x4(%rbp)
mov    -0x4(%rbp),%eax
add    $0x40,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<getvalues>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x18,%rsp
mov    %rcx,%r13
mov    %rdx,%r12
mov    %rsi,%r15
mov    %rdi,%rbx
jmp    1134 <getvalues+0x24>
nopl   0x0(%rax)
add    $0x1,%rbx
movzbl (%rbx),%eax
cmp    $0x20,%al
je     1130 <getvalues+0x20>
cmp    $0x9,%al
je     1130 <getvalues+0x20>
mov    %rbx,(%rsp)
add    $0xc6,%al
xor    %r14d,%r14d
cmp    $0xf6,%al
jb     119b <getvalues+0x8b>
mov    %r8,0x8(%rsp)
mov    %rsp,%rsi
mov    %rbx,%rdi
call   1030 <getval@plt>
mov    %eax,(%r15)
mov    (%rsp),%rbp
cmp    %rbp,%rbx
je     119b <getvalues+0x8b>
lea    0xe91(%rip),%rcx
nop
movzbl 0x0(%rbp),%edx
cmp    $0x3e,%rdx
ja     119b <getvalues+0x8b>
movslq (%rcx,%rdx,4),%rdx
add    %rcx,%rdx
jmp    *%rdx
add    $0x1,%rbp
mov    %rbp,(%rsp)
jmp    1170 <getvalues+0x60>
mov    %eax,0x0(%r13)
mov    %eax,(%r12)
mov    $0x1,%r14d
mov    %r14d,%eax
add    $0x18,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret
mov    %rbp,%rbx
add    $0x1,%rbx
mov    %rbx,(%rsp)
mov    %rsp,%rsi
mov    %rbx,%rdi
call   1030 <getval@plt>
mov    %eax,(%r12)
mov    (%rsp),%rbp
cmp    %rbp,%rbx
je     119b <getvalues+0x8b>
movabs $0x100000200,%rax
nopw   0x0(%rax,%rax,1)
movzbl 0x0(%rbp),%ecx
cmp    $0x3e,%rcx
ja     119b <getvalues+0x8b>
bt     %rcx,%rax
jae    127b <getvalues+0x16b>
add    $0x1,%rbp
mov    %rbp,(%rsp)
jmp    11e0 <getvalues+0xd0>
mov    %eax,(%r12)
add    $0x1,%rbp
mov    %rbp,(%rsp)
mov    %rsp,%rsi
mov    %rbp,%rdi
call   1030 <getval@plt>
mov    %r13,0x10(%rsp)
mov    %eax,0x0(%r13)
mov    (%rsp),%r13
cmp    %rbp,%r13
je     119b <getvalues+0x8b>
add    $0x1,%r13
movabs $0x100000200,%rbx
nopl   0x0(%rax)
movzbl -0x1(%r13),%ecx
cmp    $0x2d,%rcx
ja     119b <getvalues+0x8b>
bt     %rcx,%rbx
jae    125f <getvalues+0x14f>
mov    %r13,(%rsp)
add    $0x1,%r13
jmp    1240 <getvalues+0x130>
movabs $0x800000401,%rbp
bt     %rcx,%rbp
jae    1297 <getvalues+0x187>
mov    0x8(%rsp),%rcx
mov    %eax,(%rcx)
jmp    1195 <getvalues+0x85>
movabs $0x800000401,%rax
bt     %rcx,%rax
jae    12eb <getvalues+0x1db>
mov    (%r15),%eax
mov    %eax,0x0(%r13)
jmp    1195 <getvalues+0x85>
cmp    $0x2d,%rcx
jne    119b <getvalues+0x8b>
mov    %r13,(%rsp)
mov    %rsp,%rsi
mov    %r13,%rdi
call   1030 <getval@plt>
mov    0x8(%rsp),%rcx
mov    %eax,(%rcx)
mov    (%rsp),%rcx
cmp    %rcx,%r13
je     119b <getvalues+0x8b>
add    $0x1,%rcx
mov    0x10(%rsp),%rsi
movzbl -0x1(%rcx),%edx
cmp    $0x23,%rdx
ja     119b <getvalues+0x8b>
bt     %rdx,%rbx
jae    12fa <getvalues+0x1ea>
mov    %rcx,(%rsp)
add    $0x1,%rcx
jmp    12cd <getvalues+0x1bd>
cmp    $0x3e,%rcx
je     1202 <getvalues+0xf2>
jmp    119b <getvalues+0x8b>
bt     %rdx,%rbp
jae    119b <getvalues+0x8b>
mov    (%r12),%ecx
sub    (%r15),%ecx
sub    (%rsi),%eax
xor    %r14d,%r14d
cmp    %eax,%ecx
sete   %r14b
jmp    119b <getvalues+0x8b>

LLVM IR (-O0):
define i32 @getvalues(i8* %0, i32* %1, i32* %2, i32* %3, i32* %4) {
%6 = alloca i32
%7 = alloca i8*
%8 = alloca i32*
%9 = alloca i32*
%10 = alloca i32*
%11 = alloca i32*
%12 = alloca i8*
store i8* %0, i8** %7
store i32* %1, i32** %8
store i32* %2, i32** %9
store i32* %3, i32** %10
store i32* %4, i32** %11
%13 = load i8*, i8** %7
store i8* %13, i8** %12
br label %14
14: ; preds = %26, %5
%15 = load i8*, i8** %12
%16 = load i8, i8* %15
%17 = sext i8 %16 to i32
%18 = icmp eq i32 %17, 32
br i1 %18, label %24, label %19
19: ; preds = %14
%20 = load i8*, i8** %12
%21 = load i8, i8* %20
%22 = sext i8 %21 to i32
%23 = icmp eq i32 %22, 9
br label %24
24: ; preds = %19, %14
%25 = phi i1 [ true, %14 ], [ %23, %19 ]
br i1 %25, label %26, label %29
26: ; preds = %24
%27 = load i8*, i8** %12
%28 = getelementptr inbounds i8, i8* %27, i32 1
store i8* %28, i8** %12
br label %14
29: ; preds = %24
%30 = load i8*, i8** %12
%31 = load i8, i8* %30
%32 = sext i8 %31 to i32
%33 = icmp slt i32 %32, 48
br i1 %33, label %39, label %34
34: ; preds = %29
%35 = load i8*, i8** %12
%36 = load i8, i8* %35
%37 = sext i8 %36 to i32
%38 = icmp sgt i32 %37, 57
br i1 %38, label %39, label %40
39: ; preds = %34, %29
store i32 0, i32* %6
br label %259
40: ; preds = %34
%41 = load i8*, i8** %12
store i8* %41, i8** %7
%42 = load i8*, i8** %7
%43 = call i32 @getval(i8* %42, i8** %12)
%44 = load i32*, i32** %8
store i32 %43, i32* %44
%45 = load i8*, i8** %12
%46 = load i8*, i8** %7
%47 = icmp eq i8* %45, %46
br i1 %47, label %48, label %49
48: ; preds = %40
store i32 0, i32* %6
br label %259
49: ; preds = %40
br label %50
50: ; preds = %62, %49
%51 = load i8*, i8** %12
%52 = load i8, i8* %51
%53 = sext i8 %52 to i32
%54 = icmp eq i32 %53, 32
br i1 %54, label %60, label %55
55: ; preds = %50
%56 = load i8*, i8** %12
%57 = load i8, i8* %56
%58 = sext i8 %57 to i32
%59 = icmp eq i32 %58, 9
br label %60
60: ; preds = %55, %50
%61 = phi i1 [ true, %50 ], [ %59, %55 ]
br i1 %61, label %62, label %65
62: ; preds = %60
%63 = load i8*, i8** %12
%64 = getelementptr inbounds i8, i8* %63, i32 1
store i8* %64, i8** %12
br label %50
65: ; preds = %60
%66 = load i8*, i8** %12
%67 = load i8, i8* %66
%68 = sext i8 %67 to i32
%69 = icmp eq i32 %68, 10
br i1 %69, label %80, label %70
70: ; preds = %65
%71 = load i8*, i8** %12
%72 = load i8, i8* %71
%73 = sext i8 %72 to i32
%74 = icmp eq i32 %73, 35
br i1 %74, label %80, label %75
75: ; preds = %70
%76 = load i8*, i8** %12
%77 = load i8, i8* %76
%78 = sext i8 %77 to i32
%79 = icmp eq i32 %78, 0
br i1 %79, label %80, label %85
80: ; preds = %75, %70, %65
%81 = load i32*, i32** %8
%82 = load i32, i32* %81
%83 = load i32*, i32** %10
store i32 %82, i32* %83
%84 = load i32*, i32** %9
store i32 %82, i32* %84
store i32 1, i32* %6
br label %259
85: ; preds = %75
%86 = load i8*, i8** %12
%87 = load i8, i8* %86
%88 = sext i8 %87 to i32
%89 = icmp eq i32 %88, 62
br i1 %89, label %90, label %94
90: ; preds = %85
%91 = load i32*, i32** %8
%92 = load i32, i32* %91
%93 = load i32*, i32** %9
store i32 %92, i32* %93
br label %153
94: ; preds = %85
%95 = load i8*, i8** %12
%96 = load i8, i8* %95
%97 = sext i8 %96 to i32
%98 = icmp eq i32 %97, 45
br i1 %98, label %99, label %151
99: ; preds = %94
%100 = load i8*, i8** %12
%101 = getelementptr inbounds i8, i8* %100, i32 1
store i8* %101, i8** %12
store i8* %101, i8** %7
%102 = load i8*, i8** %7
%103 = call i32 @getval(i8* %102, i8** %12)
%104 = load i32*, i32** %9
store i32 %103, i32* %104
%105 = load i8*, i8** %12
%106 = load i8*, i8** %7
%107 = icmp eq i8* %105, %106
br i1 %107, label %108, label %109
108: ; preds = %99
store i32 0, i32* %6
br label %259
109: ; preds = %99
br label %110
110: ; preds = %122, %109
%111 = load i8*, i8** %12
%112 = load i8, i8* %111
%113 = sext i8 %112 to i32
%114 = icmp eq i32 %113, 32
br i1 %114, label %120, label %115
115: ; preds = %110
%116 = load i8*, i8** %12
%117 = load i8, i8* %116
%118 = sext i8 %117 to i32
%119 = icmp eq i32 %118, 9
br label %120
120: ; preds = %115, %110
%121 = phi i1 [ true, %110 ], [ %119, %115 ]
br i1 %121, label %122, label %125
122: ; preds = %120
%123 = load i8*, i8** %12
%124 = getelementptr inbounds i8, i8* %123, i32 1
store i8* %124, i8** %12
br label %110
125: ; preds = %120
%126 = load i8*, i8** %12
%127 = load i8, i8* %126
%128 = sext i8 %127 to i32
%129 = icmp eq i32 %128, 10
br i1 %129, label %140, label %130
130: ; preds = %125
%131 = load i8*, i8** %12
%132 = load i8, i8* %131
%133 = sext i8 %132 to i32
%134 = icmp eq i32 %133, 35
br i1 %134, label %140, label %135
135: ; preds = %130
%136 = load i8*, i8** %12
%137 = load i8, i8* %136
%138 = sext i8 %137 to i32
%139 = icmp eq i32 %138, 0
br i1 %139, label %140, label %144
140: ; preds = %135, %130, %125
%141 = load i32*, i32** %8
%142 = load i32, i32* %141
%143 = load i32*, i32** %10
store i32 %142, i32* %143
store i32 1, i32* %6
br label %259
144: ; preds = %135
%145 = load i8*, i8** %12
%146 = load i8, i8* %145
%147 = sext i8 %146 to i32
%148 = icmp ne i32 %147, 62
br i1 %148, label %149, label %150
149: ; preds = %144
store i32 0, i32* %6
br label %259
150: ; preds = %144
br label %152
151: ; preds = %94
store i32 0, i32* %6
br label %259
152: ; preds = %150
br label %153
153: ; preds = %152, %90
%154 = load i8*, i8** %12
%155 = getelementptr inbounds i8, i8* %154, i32 1
store i8* %155, i8** %12
store i8* %155, i8** %7
%156 = load i8*, i8** %7
%157 = call i32 @getval(i8* %156, i8** %12)
%158 = load i32*, i32** %10
store i32 %157, i32* %158
%159 = load i8*, i8** %12
%160 = load i8*, i8** %7
%161 = icmp eq i8* %159, %160
br i1 %161, label %162, label %163
162: ; preds = %153
store i32 0, i32* %6
br label %259
163: ; preds = %153
br label %164
164: ; preds = %176, %163
%165 = load i8*, i8** %12
%166 = load i8, i8* %165
%167 = sext i8 %166 to i32
%168 = icmp eq i32 %167, 32
br i1 %168, label %174, label %169
169: ; preds = %164
%170 = load i8*, i8** %12
%171 = load i8, i8* %170
%172 = sext i8 %171 to i32
%173 = icmp eq i32 %172, 9
br label %174
174: ; preds = %169, %164
%175 = phi i1 [ true, %164 ], [ %173, %169 ]
br i1 %175, label %176, label %179
176: ; preds = %174
%177 = load i8*, i8** %12
%178 = getelementptr inbounds i8, i8* %177, i32 1
store i8* %178, i8** %12
br label %164
179: ; preds = %174
%180 = load i8*, i8** %12
%181 = load i8, i8* %180
%182 = sext i8 %181 to i32
%183 = icmp eq i32 %182, 10
br i1 %183, label %194, label %184
184: ; preds = %179
%185 = load i8*, i8** %12
%186 = load i8, i8* %185
%187 = sext i8 %186 to i32
%188 = icmp eq i32 %187, 35
br i1 %188, label %194, label %189
189: ; preds = %184
%190 = load i8*, i8** %12
%191 = load i8, i8* %190
%192 = sext i8 %191 to i32
%193 = icmp eq i32 %192, 0
br i1 %193, label %194, label %198
194: ; preds = %189, %184, %179
%195 = load i32*, i32** %10
%196 = load i32, i32* %195
%197 = load i32*, i32** %11
store i32 %196, i32* %197
store i32 1, i32* %6
br label %259
198: ; preds = %189
%199 = load i8*, i8** %12
%200 = load i8, i8* %199
%201 = sext i8 %200 to i32
%202 = icmp ne i32 %201, 45
br i1 %202, label %203, label %204
203: ; preds = %198
store i32 0, i32* %6
br label %259
204: ; preds = %198
%205 = load i8*, i8** %12
%206 = getelementptr inbounds i8, i8* %205, i32 1
store i8* %206, i8** %12
store i8* %206, i8** %7
%207 = load i8*, i8** %7
%208 = call i32 @getval(i8* %207, i8** %12)
%209 = load i32*, i32** %11
store i32 %208, i32* %209
%210 = load i8*, i8** %12
%211 = load i8*, i8** %7
%212 = icmp eq i8* %210, %211
br i1 %212, label %213, label %214
213: ; preds = %204
store i32 0, i32* %6
br label %259
214: ; preds = %204
br label %215
215: ; preds = %227, %214
%216 = load i8*, i8** %12
%217 = load i8, i8* %216
%218 = sext i8 %217 to i32
%219 = icmp eq i32 %218, 32
br i1 %219, label %225, label %220
220: ; preds = %215
%221 = load i8*, i8** %12
%222 = load i8, i8* %221
%223 = sext i8 %222 to i32
%224 = icmp eq i32 %223, 9
br label %225
225: ; preds = %220, %215
%226 = phi i1 [ true, %215 ], [ %224, %220 ]
br i1 %226, label %227, label %230
227: ; preds = %225
%228 = load i8*, i8** %12
%229 = getelementptr inbounds i8, i8* %228, i32 1
store i8* %229, i8** %12
br label %215
230: ; preds = %225
%231 = load i8*, i8** %12
%232 = load i8, i8* %231
%233 = sext i8 %232 to i32
%234 = icmp eq i32 %233, 10
br i1 %234, label %245, label %235
235: ; preds = %230
%236 = load i8*, i8** %12
%237 = load i8, i8* %236
%238 = sext i8 %237 to i32
%239 = icmp eq i32 %238, 35
br i1 %239, label %245, label %240
240: ; preds = %235
%241 = load i8*, i8** %12
%242 = load i8, i8* %241
%243 = sext i8 %242 to i32
%244 = icmp eq i32 %243, 0
br i1 %244, label %245, label %258
245: ; preds = %240, %235, %230
%246 = load i32*, i32** %9
%247 = load i32, i32* %246
%248 = load i32*, i32** %8
%249 = load i32, i32* %248
%250 = sub nsw i32 %247, %249
%251 = load i32*, i32** %11
%252 = load i32, i32* %251
%253 = load i32*, i32** %10
%254 = load i32, i32* %253
%255 = sub nsw i32 %252, %254
%256 = icmp eq i32 %250, %255
%257 = zext i1 %256 to i32
store i32 %257, i32* %6
br label %259
258: ; preds = %240
store i32 0, i32* %6
br label %259
259: ; preds = %258, %245, %213, %203, %194, %162, %151, %149, %140, %108, %80, %48, %39
%260 = load i32, i32* %6
ret i32 %260
}

LLVM IR (-O2):
define i32 @getvalues(i8* %0, i32* nocapture %1, i32* nocapture %2, i32* nocapture %3, i32* nocapture %4) {
%6 = alloca i8*
%7 = bitcast i8** %6 to i8*
br label %8
8: ; preds = %11, %5
%9 = phi i8* [ %0, %5 ], [ %12, %11 ]
%10 = load i8, i8* %9
switch i8 %10, label %13 [
i8 32, label %11
i8 9, label %11
]
11: ; preds = %8, %8
%12 = getelementptr inbounds i8, i8* %9, i64 1
br label %8
13: ; preds = %8
store i8* %9, i8** %6
%14 = add i8 %10, -58
%15 = icmp ult i8 %14, -10
br i1 %15, label %69, label %16
16: ; preds = %13
%17 = call i32 @getval(i8* %9, i8** %6)
store i32 %17, i32* %1
%18 = load i8*, i8** %6
%19 = icmp eq i8* %18, %9
br i1 %19, label %69, label %20
20: ; preds = %16, %23
%21 = phi i8* [ %24, %23 ], [ %18, %16 ]
%22 = load i8, i8* %21
switch i8 %22, label %69 [
i8 32, label %23
i8 9, label %23
i8 10, label %25
i8 35, label %25
i8 0, label %25
i8 62, label %26
i8 45, label %27
]
23: ; preds = %20, %20
%24 = getelementptr inbounds i8, i8* %21, i64 1
store i8* %24, i8** %6
br label %20
25: ; preds = %20, %20, %20
store i32 %17, i32* %3
store i32 %17, i32* %2
br label %69
26: ; preds = %20
store i32 %17, i32* %2
br label %39
27: ; preds = %20
%28 = getelementptr inbounds i8, i8* %21, i64 1
store i8* %28, i8** %6
%29 = call i32 @getval(i8* %28, i8** %6)
store i32 %29, i32* %2
%30 = load i8*, i8** %6
%31 = icmp eq i8* %30, %28
br i1 %31, label %69, label %32
32: ; preds = %27, %35
%33 = phi i8* [ %36, %35 ], [ %30, %27 ]
%34 = load i8, i8* %33
switch i8 %34, label %69 [
i8 32, label %35
i8 9, label %35
i8 10, label %37
i8 35, label %37
i8 0, label %37
i8 62, label %39
]
35: ; preds = %32, %32
%36 = getelementptr inbounds i8, i8* %33, i64 1
store i8* %36, i8** %6
br label %32
37: ; preds = %32, %32, %32
%38 = load i32, i32* %1
store i32 %38, i32* %3
br label %69
39: ; preds = %32, %26
%40 = phi i8* [ %21, %26 ], [ %33, %32 ]
%41 = getelementptr inbounds i8, i8* %40, i64 1
store i8* %41, i8** %6
%42 = call i32 @getval(i8* %41, i8** %6)
store i32 %42, i32* %3
%43 = load i8*, i8** %6
%44 = icmp eq i8* %43, %41
br i1 %44, label %69, label %45
45: ; preds = %39, %48
%46 = phi i8* [ %49, %48 ], [ %43, %39 ]
%47 = load i8, i8* %46
switch i8 %47, label %69 [
i8 32, label %48
i8 9, label %48
i8 10, label %50
i8 35, label %50
i8 0, label %50
i8 45, label %51
]
48: ; preds = %45, %45
%49 = getelementptr inbounds i8, i8* %46, i64 1
store i8* %49, i8** %6
br label %45
50: ; preds = %45, %45, %45
store i32 %42, i32* %4
br label %69
51: ; preds = %45
%52 = getelementptr inbounds i8, i8* %46, i64 1
store i8* %52, i8** %6
%53 = call i32 @getval(i8* %52, i8** %6)
store i32 %53, i32* %4
%54 = load i8*, i8** %6
%55 = icmp eq i8* %54, %52
br i1 %55, label %69, label %56
56: ; preds = %51, %59
%57 = phi i8* [ %60, %59 ], [ %54, %51 ]
%58 = load i8, i8* %57
switch i8 %58, label %69 [
i8 32, label %59
i8 9, label %59
i8 10, label %61
i8 35, label %61
i8 0, label %61
]
59: ; preds = %56, %56
%60 = getelementptr inbounds i8, i8* %57, i64 1
store i8* %60, i8** %6
br label %56
61: ; preds = %56, %56, %56
%62 = load i32, i32* %2
%63 = load i32, i32* %1
%64 = sub nsw i32 %62, %63
%65 = load i32, i32* %3
%66 = sub nsw i32 %53, %65
%67 = icmp eq i32 %64, %66
%68 = zext i1 %67 to i32
br label %69
69: ; preds = %20, %32, %45, %56, %51, %39, %27, %16, %13, %61, %50, %37, %25
%70 = phi i32 [ 1, %25 ], [ 1, %50 ], [ %68, %61 ], [ 1, %37 ], [ 0, %13 ], [ 0, %16 ], [ 0, %27 ], [ 0, %39 ], [ 0, %51 ], [ 0, %56 ], [ 0, %45 ], [ 0, %32 ], [ 0, %20 ]
ret i32 %70
}