int get_token(char **buf, char *tok, char *end) {
  char *p;
  p = *buf;
  while (*p && (*p == ' ' || *p == '\t' || *p == '\r' || *p == '\n'))
    p++;
  if (!*p)
    return -1;
  if ((*p == '<' || *p == '>' || *p == '|' || *p == ';' || *p == '"')) {
    if (*p == '>') {
      *tok++ = *p++;
      if (*p == '>')
        *tok++ = *p++;
    } else if (*p == '"') {
      p++;
      while (*p && *p != '"') {
        if (tok == end)
          return -1;
        *tok++ = *p++;
      }
      if (tok == end)
        return -1;
      p++;
    } else {
      *tok++ = *p++;
    }
    *tok = 0;
  } else {
    while (*p && !(*p == ' ' || *p == '\t' || *p == '\r' || *p == '\n') &&
           !(*p == '<' || *p == '>' || *p == '|' || *p == ';' || *p == '"')) {
      *tok++ = *p++;
      if (tok == end)
        return -1;
    }
    *tok = 0;
  }
  *buf = p;
  return *p ? 0 : -1;
}


x86 assembly (clang, -O0):
<get_token>:
push   %rbp
mov    %rsp,%rbp
mov    %rdi,-0x10(%rbp)
mov    %rsi,-0x18(%rbp)
mov    %rdx,-0x20(%rbp)
mov    -0x10(%rbp),%rax
mov    (%rax),%rax
mov    %rax,-0x28(%rbp)
mov    -0x28(%rbp),%rax
movsbl (%rax),%ecx
xor    %eax,%eax
cmp    $0x0,%ecx
mov    %al,-0x29(%rbp)
je     1185 <get_token+0x85>
mov    -0x28(%rbp),%rax
movsbl (%rax),%ecx
mov    $0x1,%al
cmp    $0x20,%ecx
mov    %al,-0x2a(%rbp)
je     117f <get_token+0x7f>
mov    -0x28(%rbp),%rax
movsbl (%rax),%ecx
mov    $0x1,%al
cmp    $0x9,%ecx
mov    %al,-0x2a(%rbp)
je     117f <get_token+0x7f>
mov    -0x28(%rbp),%rax
movsbl (%rax),%ecx
mov    $0x1,%al
cmp    $0xd,%ecx
mov    %al,-0x2a(%rbp)
je     117f <get_token+0x7f>
mov    -0x28(%rbp),%rax
movsbl (%rax),%eax
cmp    $0xa,%eax
sete   %al
mov    %al,-0x2a(%rbp)
mov    -0x2a(%rbp),%al
mov    %al,-0x29(%rbp)
mov    -0x29(%rbp),%al
test   $0x1,%al
jne    1195 <get_token+0x95>
jmp    11a6 <get_token+0xa6>
mov    -0x28(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x28(%rbp)
jmp    111b <get_token+0x1b>
mov    -0x28(%rbp),%rax
cmpb   $0x0,(%rax)
jne    11bf <get_token+0xbf>
movl   $0xffffffff,-0x4(%rbp)
jmp    14bc <get_token+0x3bc>
mov    -0x28(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x3c,%eax
je     120f <get_token+0x10f>
mov    -0x28(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x3e,%eax
je     120f <get_token+0x10f>
mov    -0x28(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x7c,%eax
je     120f <get_token+0x10f>
mov    -0x28(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x3b,%eax
je     120f <get_token+0x10f>
mov    -0x28(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x22,%eax
jne    1368 <get_token+0x268>
mov    -0x28(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x3e,%eax
jne    1278 <get_token+0x178>
mov    -0x28(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x28(%rbp)
mov    (%rax),%cl
mov    -0x18(%rbp),%rax
mov    %rax,%rdx
add    $0x1,%rdx
mov    %rdx,-0x18(%rbp)
mov    %cl,(%rax)
mov    -0x28(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x3e,%eax
jne    1273 <get_token+0x173>
mov    -0x28(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x28(%rbp)
mov    (%rax),%cl
mov    -0x18(%rbp),%rax
mov    %rax,%rdx
add    $0x1,%rdx
mov    %rdx,-0x18(%rbp)
mov    %cl,(%rax)
jmp    135c <get_token+0x25c>
mov    -0x28(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x22,%eax
jne    1335 <get_token+0x235>
mov    -0x28(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x28(%rbp)
mov    -0x28(%rbp),%rax
movsbl (%rax),%ecx
xor    %eax,%eax
cmp    $0x0,%ecx
mov    %al,-0x2b(%rbp)
je     12b9 <get_token+0x1b9>
mov    -0x28(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x22,%eax
setne  %al
mov    %al,-0x2b(%rbp)
mov    -0x2b(%rbp),%al
test   $0x1,%al
jne    12c9 <get_token+0x1c9>
jmp    130a <get_token+0x20a>
mov    -0x18(%rbp),%rax
cmp    -0x20(%rbp),%rax
jne    12e3 <get_token+0x1e3>
movl   $0xffffffff,-0x4(%rbp)
jmp    14bc <get_token+0x3bc>
mov    -0x28(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x28(%rbp)
mov    (%rax),%cl
mov    -0x18(%rbp),%rax
mov    %rax,%rdx
add    $0x1,%rdx
mov    %rdx,-0x18(%rbp)
mov    %cl,(%rax)
jmp    1294 <get_token+0x194>
mov    -0x18(%rbp),%rax
cmp    -0x20(%rbp),%rax
jne    1324 <get_token+0x224>
movl   $0xffffffff,-0x4(%rbp)
jmp    14bc <get_token+0x3bc>
mov    -0x28(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x28(%rbp)
jmp    1357 <get_token+0x257>
mov    -0x28(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x28(%rbp)
mov    (%rax),%cl
mov    -0x18(%rbp),%rax
mov    %rax,%rdx
add    $0x1,%rdx
mov    %rdx,-0x18(%rbp)
mov    %cl,(%rax)
jmp    135c <get_token+0x25c>
mov    -0x18(%rbp),%rax
movb   $0x0,(%rax)
jmp    149a <get_token+0x39a>
jmp    136d <get_token+0x26d>
mov    -0x28(%rbp),%rax
movsbl (%rax),%ecx
xor    %eax,%eax
cmp    $0x0,%ecx
mov    %al,-0x2c(%rbp)
je     1442 <get_token+0x342>
mov    -0x28(%rbp),%rax
movsbl (%rax),%ecx
xor    %eax,%eax
cmp    $0x20,%ecx
mov    %al,-0x2c(%rbp)
je     1442 <get_token+0x342>
mov    -0x28(%rbp),%rax
movsbl (%rax),%ecx
xor    %eax,%eax
cmp    $0x9,%ecx
mov    %al,-0x2c(%rbp)
je     1442 <get_token+0x342>
mov    -0x28(%rbp),%rax
movsbl (%rax),%ecx
xor    %eax,%eax
cmp    $0xd,%ecx
mov    %al,-0x2c(%rbp)
je     1442 <get_token+0x342>
mov    -0x28(%rbp),%rax
movsbl (%rax),%ecx
xor    %eax,%eax
cmp    $0xa,%ecx
mov    %al,-0x2c(%rbp)
je     1442 <get_token+0x342>
mov    -0x28(%rbp),%rax
movsbl (%rax),%ecx
mov    $0x1,%al
cmp    $0x3c,%ecx
mov    %al,-0x2d(%rbp)
je     143a <get_token+0x33a>
mov    -0x28(%rbp),%rax
movsbl (%rax),%ecx
mov    $0x1,%al
cmp    $0x3e,%ecx
mov    %al,-0x2d(%rbp)
je     143a <get_token+0x33a>
mov    -0x28(%rbp),%rax
movsbl (%rax),%ecx
mov    $0x1,%al
cmp    $0x7c,%ecx
mov    %al,-0x2d(%rbp)
je     143a <get_token+0x33a>
mov    -0x28(%rbp),%rax
movsbl (%rax),%ecx
mov    $0x1,%al
cmp    $0x3b,%ecx
mov    %al,-0x2d(%rbp)
je     143a <get_token+0x33a>
mov    -0x28(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x22,%eax
sete   %al
mov    %al,-0x2d(%rbp)
mov    -0x2d(%rbp),%al
xor    $0xff,%al
mov    %al,-0x2c(%rbp)
mov    -0x2c(%rbp),%al
test   $0x1,%al
jne    1452 <get_token+0x352>
jmp    1493 <get_token+0x393>
mov    -0x28(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x28(%rbp)
mov    (%rax),%cl
mov    -0x18(%rbp),%rax
mov    %rax,%rdx
add    $0x1,%rdx
mov    %rdx,-0x18(%rbp)
mov    %cl,(%rax)
mov    -0x18(%rbp),%rax
cmp    -0x20(%rbp),%rax
jne    148e <get_token+0x38e>
movl   $0xffffffff,-0x4(%rbp)
jmp    14bc <get_token+0x3bc>
jmp    136d <get_token+0x26d>
mov    -0x18(%rbp),%rax
movb   $0x0,(%rax)
mov    -0x28(%rbp),%rcx
mov    -0x10(%rbp),%rax
mov    %rcx,(%rax)
mov    -0x28(%rbp),%rax
movsbl (%rax),%edx
mov    $0xffffffff,%eax
xor    %ecx,%ecx
cmp    $0x0,%edx
cmovne %ecx,%eax
mov    %eax,-0x4(%rbp)
mov    -0x4(%rbp),%eax
pop    %rbp
ret

x86 assembly (clang, -O2):
<get_token>:
mov    (%rdi),%r9
add    $0x1,%r9
lea    0xef2(%rip),%r8
xchg   %ax,%ax
movzbl -0x1(%r9),%ecx
cmp    $0x3e,%rcx
ja     1157 <get_token+0x57>
movslq (%r8,%rcx,4),%rax
add    %r8,%rax
jmp    *%rax
add    $0x1,%r9
jmp    1110 <get_token+0x10>
nopw   0x0(%rax,%rax,1)
cmp    $0x22,%al
je     114c <get_token+0x4c>
cmp    %rdx,%rsi
je     1151 <get_token+0x51>
mov    %al,(%rsi)
add    $0x1,%rsi
add    $0x1,%r9
movzbl -0x1(%r9),%eax
test   %al,%al
jne    1130 <get_token+0x30>
cmp    %rdx,%rsi
jne    11be <get_token+0xbe>
mov    $0xffffffff,%eax
ret
cmp    $0x7c,%cl
jne    1164 <get_token+0x64>
mov    %cl,(%rsi)
add    $0x1,%rsi
jmp    11be <get_token+0xbe>
add    $0xffffffffffffffff,%r9
movabs $0x5800000500002601,%r8
cmp    $0x3e,%cl
jbe    119e <get_token+0x9e>
nopw   0x0(%rax,%rax,1)
cmp    $0x7c,%cl
je     11be <get_token+0xbe>
mov    %cl,(%rsi)
add    $0x1,%rsi
cmp    %rdx,%rsi
je     1151 <get_token+0x51>
movzbl 0x1(%r9),%ecx
add    $0x1,%r9
cmp    $0x3e,%cl
ja     1180 <get_token+0x80>
movzbl %cl,%eax
bt     %rax,%r8
jae    1180 <get_token+0x80>
jmp    11be <get_token+0xbe>
movb   $0x3e,(%rsi)
cmpb   $0x3e,(%r9)
jne    115e <get_token+0x5e>
add    $0x1,%r9
movb   $0x3e,0x1(%rsi)
add    $0x2,%rsi
movb   $0x0,(%rsi)
mov    %r9,(%rdi)
cmpb   $0x1,(%r9)
sbb    %eax,%eax
ret

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

LLVM IR (-O2):
define i32 @get_token(i8** nocapture %0, i8* writeonly %1, i8* readnone %2) {
%4 = load i8*, i8** %0
br label %5
5: ; preds = %8, %3
%6 = phi i8* [ %4, %3 ], [ %9, %8 ]
%7 = load i8, i8* %6
switch i8 %7, label %36 [
i8 10, label %8
i8 32, label %8
i8 9, label %8
i8 13, label %8
i8 0, label %50
i8 62, label %10
i8 34, label %18
i8 59, label %31
i8 60, label %31
i8 124, label %31
]
8: ; preds = %5, %5, %5, %5
%9 = getelementptr inbounds i8, i8* %6, i64 1
br label %5
10: ; preds = %5
%11 = getelementptr inbounds i8, i8* %6, i64 1
%12 = getelementptr inbounds i8, i8* %1, i64 1
store i8 62, i8* %1
%13 = load i8, i8* %11
%14 = icmp eq i8 %13, 62
br i1 %14, label %15, label %44
15: ; preds = %10
%16 = getelementptr inbounds i8, i8* %6, i64 2
%17 = getelementptr inbounds i8, i8* %1, i64 2
store i8 62, i8* %12
br label %44
18: ; preds = %5, %25
%19 = phi i8* [ %26, %25 ], [ %1, %5 ]
%20 = phi i8* [ %21, %25 ], [ %6, %5 ]
%21 = getelementptr inbounds i8, i8* %20, i64 1
%22 = load i8, i8* %21
switch i8 %22, label %23 [
i8 0, label %27
i8 34, label %27
]
23: ; preds = %18
%24 = icmp eq i8* %19, %2
br i1 %24, label %50, label %25
25: ; preds = %23
%26 = getelementptr inbounds i8, i8* %19, i64 1
store i8 %22, i8* %19
br label %18
27: ; preds = %18, %18
%28 = icmp eq i8* %19, %2
br i1 %28, label %50, label %29
29: ; preds = %27
%30 = getelementptr inbounds i8, i8* %20, i64 2
br label %44
31: ; preds = %5, %5, %5
%32 = getelementptr inbounds i8, i8* %6, i64 1
%33 = getelementptr inbounds i8, i8* %1, i64 1
store i8 %7, i8* %1
br label %44
34: ; preds = %40
%35 = load i8, i8* %41
br label %36
36: ; preds = %5, %34
%37 = phi i8 [ %35, %34 ], [ %7, %5 ]
%38 = phi i8* [ %42, %34 ], [ %1, %5 ]
%39 = phi i8* [ %41, %34 ], [ %6, %5 ]
switch i8 %37, label %40 [
i8 0, label %44
i8 32, label %44
i8 9, label %44
i8 13, label %44
i8 10, label %44
i8 60, label %44
i8 62, label %44
i8 124, label %44
i8 59, label %44
i8 34, label %44
]
40: ; preds = %36
%41 = getelementptr inbounds i8, i8* %39, i64 1
%42 = getelementptr inbounds i8, i8* %38, i64 1
store i8 %37, i8* %38
%43 = icmp eq i8* %42, %2
br i1 %43, label %50, label %34
44: ; preds = %36, %36, %36, %36, %36, %36, %36, %36, %36, %36, %15, %10, %31, %29
%45 = phi i8* [ %17, %15 ], [ %12, %10 ], [ %19, %29 ], [ %33, %31 ], [ %38, %36 ], [ %38, %36 ], [ %38, %36 ], [ %38, %36 ], [ %38, %36 ], [ %38, %36 ], [ %38, %36 ], [ %38, %36 ], [ %38, %36 ], [ %38, %36 ]
%46 = phi i8* [ %16, %15 ], [ %11, %10 ], [ %30, %29 ], [ %32, %31 ], [ %39, %36 ], [ %39, %36 ], [ %39, %36 ], [ %39, %36 ], [ %39, %36 ], [ %39, %36 ], [ %39, %36 ], [ %39, %36 ], [ %39, %36 ], [ %39, %36 ]
store i8 0, i8* %45
store i8* %46, i8** %0
%47 = load i8, i8* %46
%48 = icmp eq i8 %47, 0
%49 = sext i1 %48 to i32
br label %50
50: ; preds = %5, %23, %40, %27, %44
%51 = phi i32 [ %49, %44 ], [ -1, %27 ], [ -1, %40 ], [ -1, %23 ], [ -1, %5 ]
ret i32 %51
}