int read_item(char **sp, int *num) {
  char *s;
  int val, base;
  s = *sp;
  base = 10;
  val = 0;
  while (*s == ' ' || *s == '\t')
    s++;
  if (!*s) {
    *sp = s;
    return 0;
  }
  *sp = s + 1;
  switch (*s) {
  case '+':
    return 7;
  case '-':
    return 22;
  case '*':
    return 4;
  case '/':
    return 5;
  case '%':
    return 6;
  case '~':
    return 2;
  case '(':
    return 20;
  case ')':
    return 21;
  case '<':
    s++;
    if (*s != '<')
      return -1;
    *sp = s + 1;
    return 9;
  case '>':
    s++;
    if (*s != '>')
      return -1;
    *sp = s + 1;
    return 10;
  case '0':
    s++;
    if (*s == 'x') {
      s++;
      if (!*s)
        return -1;
      base = 16;
    } else
      base = 8;
    break;
  default:
    if (*s < '0' || *s > '9') {
      *sp = s;
      return 0;
    }
  }
  for (;;) {
    if ((*s >= '0' && *s <= '7') || (base > 8 && *s >= '8' && *s <= '9'))
      val = val * base + (*s - '0');
    else if (base > 10 &&
             ((*s >= 'a' && *s <= 'f') || (*s >= 'A' && *s <= 'F'))) {
      if (*s < 'a')
        val = val * base + (*s - 'A' + 10);
      else
        val = val * base + (*s - 'a' + 10);
    } else
      break;
    s++;
  }
  *num = val;
  *sp = s;
  return 1;
}


x86 assembly (clang, -O0):
<read_item>:
push   %rbp
mov    %rsp,%rbp
mov    %rdi,-0x10(%rbp)
mov    %rsi,-0x18(%rbp)
mov    -0x10(%rbp),%rax
mov    (%rax),%rax
mov    %rax,-0x20(%rbp)
movl   $0xa,-0x28(%rbp)
movl   $0x0,-0x24(%rbp)
mov    -0x20(%rbp),%rax
movsbl (%rax),%ecx
mov    $0x1,%al
cmp    $0x20,%ecx
mov    %al,-0x29(%rbp)
je     114a <read_item+0x4a>
mov    -0x20(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x9,%eax
sete   %al
mov    %al,-0x29(%rbp)
mov    -0x29(%rbp),%al
test   $0x1,%al
jne    115a <read_item+0x5a>
jmp    116b <read_item+0x6b>
mov    -0x20(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x20(%rbp)
jmp    1125 <read_item+0x25>
mov    -0x20(%rbp),%rax
cmpb   $0x0,(%rax)
jne    118f <read_item+0x8f>
mov    -0x20(%rbp),%rcx
mov    -0x10(%rbp),%rax
mov    %rcx,(%rax)
movl   $0x0,-0x4(%rbp)
jmp    147c <read_item+0x37c>
mov    -0x20(%rbp),%rcx
add    $0x1,%rcx
mov    -0x10(%rbp),%rax
mov    %rcx,(%rax)
mov    -0x20(%rbp),%rax
movsbl (%rax),%eax
add    $0xffffffdb,%eax
mov    %eax,%ecx
mov    %rcx,-0x38(%rbp)
sub    $0x59,%eax
ja     130a <read_item+0x20a>
mov    -0x38(%rbp),%rax
lea    0xe3e(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
movl   $0x7,-0x4(%rbp)
jmp    147c <read_item+0x37c>
movl   $0x16,-0x4(%rbp)
jmp    147c <read_item+0x37c>
movl   $0x4,-0x4(%rbp)
jmp    147c <read_item+0x37c>
movl   $0x5,-0x4(%rbp)
jmp    147c <read_item+0x37c>
movl   $0x6,-0x4(%rbp)
jmp    147c <read_item+0x37c>
movl   $0x2,-0x4(%rbp)
jmp    147c <read_item+0x37c>
movl   $0x14,-0x4(%rbp)
jmp    147c <read_item+0x37c>
movl   $0x15,-0x4(%rbp)
jmp    147c <read_item+0x37c>
mov    -0x20(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x20(%rbp)
mov    -0x20(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x3c,%eax
je     1253 <read_item+0x153>
movl   $0xffffffff,-0x4(%rbp)
jmp    147c <read_item+0x37c>
mov    -0x20(%rbp),%rcx
add    $0x1,%rcx
mov    -0x10(%rbp),%rax
mov    %rcx,(%rax)
movl   $0x9,-0x4(%rbp)
jmp    147c <read_item+0x37c>
mov    -0x20(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x20(%rbp)
mov    -0x20(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x3e,%eax
je     1296 <read_item+0x196>
movl   $0xffffffff,-0x4(%rbp)
jmp    147c <read_item+0x37c>
mov    -0x20(%rbp),%rcx
add    $0x1,%rcx
mov    -0x10(%rbp),%rax
mov    %rcx,(%rax)
movl   $0xa,-0x4(%rbp)
jmp    147c <read_item+0x37c>
mov    -0x20(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x20(%rbp)
mov    -0x20(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x78,%eax
jne    12fe <read_item+0x1fe>
mov    -0x20(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x20(%rbp)
mov    -0x20(%rbp),%rax
cmpb   $0x0,(%rax)
jne    12f2 <read_item+0x1f2>
movl   $0xffffffff,-0x4(%rbp)
jmp    147c <read_item+0x37c>
movl   $0x10,-0x28(%rbp)
jmp    1305 <read_item+0x205>
movl   $0x8,-0x28(%rbp)
jmp    1346 <read_item+0x246>
mov    -0x20(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x30,%eax
jl     132a <read_item+0x22a>
mov    -0x20(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x39,%eax
jle    1341 <read_item+0x241>
mov    -0x20(%rbp),%rcx
mov    -0x10(%rbp),%rax
mov    %rcx,(%rax)
movl   $0x0,-0x4(%rbp)
jmp    147c <read_item+0x37c>
jmp    1346 <read_item+0x246>
jmp    134b <read_item+0x24b>
mov    -0x20(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x30,%eax
jl     136b <read_item+0x26b>
mov    -0x20(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x37,%eax
jle    1395 <read_item+0x295>
cmpl   $0x8,-0x28(%rbp)
jle    13b0 <read_item+0x2b0>
mov    -0x20(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x38,%eax
jl     13b0 <read_item+0x2b0>
mov    -0x20(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x39,%eax
jg     13b0 <read_item+0x2b0>
mov    -0x24(%rbp),%eax
imul   -0x28(%rbp),%eax
mov    -0x20(%rbp),%rcx
movsbl (%rcx),%ecx
sub    $0x30,%ecx
add    %ecx,%eax
mov    %eax,-0x24(%rbp)
jmp    1450 <read_item+0x350>
cmpl   $0xa,-0x28(%rbp)
jle    1446 <read_item+0x346>
mov    -0x20(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x61,%eax
jl     13da <read_item+0x2da>
mov    -0x20(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x66,%eax
jle    13fa <read_item+0x2fa>
mov    -0x20(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x41,%eax
jl     1446 <read_item+0x346>
mov    -0x20(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x46,%eax
jg     1446 <read_item+0x346>
mov    -0x20(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x61,%eax
jge    1428 <read_item+0x328>
mov    -0x24(%rbp),%eax
imul   -0x28(%rbp),%eax
mov    -0x20(%rbp),%rcx
movsbl (%rcx),%ecx
sub    $0x41,%ecx
add    $0xa,%ecx
add    %ecx,%eax
mov    %eax,-0x24(%rbp)
jmp    1441 <read_item+0x341>
mov    -0x24(%rbp),%eax
imul   -0x28(%rbp),%eax
mov    -0x20(%rbp),%rcx
movsbl (%rcx),%ecx
sub    $0x61,%ecx
add    $0xa,%ecx
add    %ecx,%eax
mov    %eax,-0x24(%rbp)
jmp    144b <read_item+0x34b>
jmp    1461 <read_item+0x361>
jmp    1450 <read_item+0x350>
mov    -0x20(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x20(%rbp)
jmp    134b <read_item+0x24b>
mov    -0x24(%rbp),%ecx
mov    -0x18(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x20(%rbp),%rcx
mov    -0x10(%rbp),%rax
mov    %rcx,(%rax)
movl   $0x1,-0x4(%rbp)
mov    -0x4(%rbp),%eax
pop    %rbp
ret

x86 assembly (clang, -O2):
<read_item>:
mov    (%rdi),%rcx
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
add    $0x1,%rcx
movzbl -0x1(%rcx),%eax
cmp    $0x9,%al
je     1110 <read_item+0x10>
cmp    $0x20,%al
je     1110 <read_item+0x10>
test   %al,%al
jne    112e <read_item+0x2e>
add    $0xffffffffffffffff,%rcx
mov    %rcx,(%rdi)
xor    %eax,%eax
ret
mov    %rcx,(%rdi)
movsbl -0x1(%rcx),%r10d
lea    -0x25(%r10),%edx
cmp    $0x59,%edx
ja     115a <read_item+0x5a>
mov    $0x7,%eax
lea    0xeb5(%rip),%r8
movslq (%r8,%rdx,4),%rdx
add    %r8,%rdx
jmp    *%rdx
mov    $0x6,%eax
ret
add    $0xffffffffffffffff,%rcx
lea    -0x3a(%r10),%edx
xor    %eax,%eax
cmp    $0xf5,%dl
ja     11f2 <read_item+0xf2>
mov    %rcx,(%rdi)
ret
mov    $0x14,%eax
ret
mov    $0x15,%eax
ret
mov    $0x4,%eax
ret
mov    $0x16,%eax
ret
mov    $0x5,%eax
ret
mov    (%rcx),%r10b
cmp    $0x78,%r10b
jne    11fd <read_item+0xfd>
mov    0x1(%rcx),%r10b
test   %r10b,%r10b
je     128b <read_item+0x18b>
add    $0x1,%rcx
mov    $0x10,%r8d
mov    $0x1,%r9b
mov    $0x1,%al
jmp    1208 <read_item+0x108>
mov    $0xffffffff,%eax
cmpb   $0x3c,(%rcx)
jne    128a <read_item+0x18a>
add    $0x1,%rcx
mov    %rcx,(%rdi)
mov    $0x9,%eax
ret
mov    $0xffffffff,%eax
cmpb   $0x3e,(%rcx)
jne    128a <read_item+0x18a>
add    $0x1,%rcx
mov    %rcx,(%rdi)
mov    $0xa,%eax
ret
mov    $0x2,%eax
ret
mov    $0xa,%r8d
mov    $0x1,%r9b
jmp    1208 <read_item+0x108>
mov    $0x8,%r8d
xor    %r9d,%r9d
xor    %eax,%eax
xor    %r11d,%r11d
jmp    1228 <read_item+0x128>
nopl   (%rax)
imul   %r8d,%r11d
movzbl %r10b,%edx
add    %edx,%r11d
add    $0xffffffd0,%r11d
movzbl 0x1(%rcx),%r10d
add    $0x1,%rcx
mov    %r10d,%edx
and    $0xf8,%dl
cmp    $0x30,%dl
je     1210 <read_item+0x110>
mov    %r10d,%edx
and    $0xfe,%dl
cmp    $0x38,%dl
sete   %dl
and    %r9b,%dl
cmp    $0x1,%dl
je     1210 <read_item+0x110>
test   %al,%al
je     127f <read_item+0x17f>
lea    -0x61(%r10),%edx
cmp    $0x6,%dl
jae    1265 <read_item+0x165>
movzbl %r10b,%edx
imul   %r8d,%r11d
add    %edx,%r11d
add    $0xffffffa9,%r11d
jmp    121f <read_item+0x11f>
lea    -0x41(%r10),%edx
cmp    $0x5,%dl
ja     127f <read_item+0x17f>
movzbl %r10b,%edx
imul   %r8d,%r11d
add    %edx,%r11d
add    $0xffffffc9,%r11d
jmp    121f <read_item+0x11f>
mov    %r11d,(%rsi)
mov    %rcx,(%rdi)
mov    $0x1,%eax
ret
mov    $0xffffffff,%eax
ret

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

LLVM IR (-O2):
define i32 @read_item(i8** nocapture %0, i32* nocapture writeonly %1) {
%3 = load i8*, i8** %0
br label %4
4: ; preds = %7, %2
%5 = phi i8* [ %3, %2 ], [ %8, %7 ]
%6 = load i8, i8* %5
switch i8 %6, label %10 [
i8 32, label %7
i8 9, label %7
i8 0, label %9
]
7: ; preds = %4, %4
%8 = getelementptr inbounds i8, i8* %5, i64 1
br label %4
9: ; preds = %4
store i8* %5, i8** %0
br label %85
10: ; preds = %4
%11 = getelementptr inbounds i8, i8* %5, i64 1
store i8* %11, i8** %0
%12 = load i8, i8* %5
%13 = sext i8 %12 to i32
switch i32 %13, label %38 [
i32 43, label %85
i32 45, label %14
i32 42, label %15
i32 47, label %16
i32 37, label %17
i32 126, label %18
i32 40, label %19
i32 41, label %20
i32 60, label %21
i32 62, label %26
i32 48, label %31
]
14: ; preds = %10
br label %85
15: ; preds = %10
br label %85
16: ; preds = %10
br label %85
17: ; preds = %10
br label %85
18: ; preds = %10
br label %85
19: ; preds = %10
br label %85
20: ; preds = %10
br label %85
21: ; preds = %10
%22 = load i8, i8* %11
%23 = icmp eq i8 %22, 60
br i1 %23, label %24, label %85
24: ; preds = %21
%25 = getelementptr inbounds i8, i8* %5, i64 2
store i8* %25, i8** %0
br label %85
26: ; preds = %10
%27 = load i8, i8* %11
%28 = icmp eq i8 %27, 62
br i1 %28, label %29, label %85
29: ; preds = %26
%30 = getelementptr inbounds i8, i8* %5, i64 2
store i8* %30, i8** %0
br label %85
31: ; preds = %10
%32 = load i8, i8* %11
%33 = icmp eq i8 %32, 120
br i1 %33, label %34, label %42
34: ; preds = %31
%35 = getelementptr inbounds i8, i8* %5, i64 2
%36 = load i8, i8* %35
%37 = icmp eq i8 %36, 0
br i1 %37, label %85, label %42
38: ; preds = %10
%39 = add i8 %12, -58
%40 = icmp ult i8 %39, -10
br i1 %40, label %41, label %42
41: ; preds = %38
store i8* %5, i8** %0
br label %85
42: ; preds = %38, %31, %34
%43 = phi i8 [ %36, %34 ], [ %32, %31 ], [ %12, %38 ]
%44 = phi i8* [ %35, %34 ], [ %11, %31 ], [ %5, %38 ]
%45 = phi i1 [ true, %34 ], [ false, %31 ], [ true, %38 ]
%46 = phi i1 [ true, %34 ], [ false, %31 ], [ false, %38 ]
%47 = phi i32 [ 16, %34 ], [ 8, %31 ], [ 10, %38 ]
br label %48
48: ; preds = %80, %42
%49 = phi i8 [ %43, %42 ], [ %83, %80 ]
%50 = phi i8* [ %44, %42 ], [ %82, %80 ]
%51 = phi i32 [ 0, %42 ], [ %81, %80 ]
%52 = and i8 %49, -8
%53 = icmp eq i8 %52, 48
br i1 %53, label %58, label %54
54: ; preds = %48
%55 = and i8 %49, -2
%56 = icmp eq i8 %55, 56
%57 = select i1 %45, i1 %56, i1 false
br i1 %57, label %58, label %63
58: ; preds = %54, %48
%59 = mul nsw i32 %51, %47
%60 = zext i8 %49 to i32
%61 = add i32 %59, -48
%62 = add i32 %61, %60
br label %80
63: ; preds = %54
br i1 %46, label %64, label %84
64: ; preds = %63
%65 = add i8 %49, -97
%66 = icmp ult i8 %65, 6
br i1 %66, label %75, label %67
67: ; preds = %64
%68 = add i8 %49, -65
%69 = icmp ult i8 %68, 6
br i1 %69, label %70, label %84
70: ; preds = %67
%71 = zext i8 %49 to i32
%72 = mul nsw i32 %51, %47
%73 = add i32 %72, -55
%74 = add i32 %73, %71
br label %80
75: ; preds = %64
%76 = zext i8 %49 to i32
%77 = mul nsw i32 %51, %47
%78 = add i32 %77, -87
%79 = add i32 %78, %76
br label %80
80: ; preds = %75, %70, %58
%81 = phi i32 [ %62, %58 ], [ %74, %70 ], [ %79, %75 ]
%82 = getelementptr inbounds i8, i8* %50, i64 1
%83 = load i8, i8* %82
br label %48
84: ; preds = %63, %67
store i32 %51, i32* %1
store i8* %50, i8** %0
br label %85
85: ; preds = %34, %26, %21, %10, %84, %41, %29, %24, %20, %19, %18, %17, %16, %15, %14, %9
%86 = phi i32 [ 0, %41 ], [ 1, %84 ], [ 10, %29 ], [ 9, %24 ], [ 21, %20 ], [ 20, %19 ], [ 2, %18 ], [ 6, %17 ], [ 5, %16 ], [ 4, %15 ], [ 22, %14 ], [ 0, %9 ], [ 7, %10 ], [ -1, %21 ], [ -1, %26 ], [ -1, %34 ]
ret i32 %86
}