void __attribute__((visibility("hidden"))) http_unchunk_data(char *buffer) {
  char *temp = buffer;
  char *p = buffer;
  int chunklen = 0;
  if (*p == '<') {
    while (*p) {
      if (!(*p == '\n' || *p == '\r' || *p == '\t')) {
        *temp = *p;
        temp++;
      }
      p++;
    }
    *temp = '\0';
    return;
  }
  while (1) {
    while (*p != '\n' && *p != '\r') {
      chunklen = chunklen << 4;
      if ('0' <= *p && *p <= '9')
        chunklen += *p - '0';
      else if ('A' <= *p && *p <= 'F')
        chunklen += 10 - 'A' + *p;
      else if ('a' <= *p && *p <= 'f')
        chunklen += 10 + *p - 'a';
      else {
        chunklen = chunklen >> 4;
        break;
      }
      p++;
    }
    if (chunklen == 0)
      break;
    while (*p == '\n' || *p == '\r' || *p == '\t')
      p++;
    while (chunklen > 0) {
      if (!(*p == '\n' || *p == '\r' || *p == '\t')) {
        *temp = *p;
        temp++;
      }
      p++;
      chunklen--;
    }
    while (*p == '\n' || *p == '\r' || *p == '\t')
      p++;
  }
  *temp = '\0';
}


x86 assembly (clang, -O0):
<http_unchunk_data>:
push   %rbp
mov    %rsp,%rbp
mov    %rdi,-0x8(%rbp)
mov    -0x8(%rbp),%rax
mov    %rax,-0x10(%rbp)
mov    -0x8(%rbp),%rax
mov    %rax,-0x18(%rbp)
movl   $0x0,-0x1c(%rbp)
mov    -0x18(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x3c,%eax
jne    11a6 <http_unchunk_data+0xa6>
jmp    1134 <http_unchunk_data+0x34>
mov    -0x18(%rbp),%rax
cmpb   $0x0,(%rax)
je     119a <http_unchunk_data+0x9a>
mov    -0x18(%rbp),%rax
movsbl (%rax),%eax
cmp    $0xa,%eax
je     1189 <http_unchunk_data+0x89>
mov    -0x18(%rbp),%rax
movsbl (%rax),%eax
cmp    $0xd,%eax
je     1189 <http_unchunk_data+0x89>
mov    -0x18(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x9,%eax
je     1189 <http_unchunk_data+0x89>
mov    -0x18(%rbp),%rax
mov    (%rax),%cl
mov    -0x10(%rbp),%rax
mov    %cl,(%rax)
mov    -0x10(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x10(%rbp)
mov    -0x18(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x18(%rbp)
jmp    1134 <http_unchunk_data+0x34>
mov    -0x10(%rbp),%rax
movb   $0x0,(%rax)
jmp    1413 <http_unchunk_data+0x313>
jmp    11ab <http_unchunk_data+0xab>
jmp    11b0 <http_unchunk_data+0xb0>
mov    -0x18(%rbp),%rax
movsbl (%rax),%ecx
xor    %eax,%eax
cmp    $0xa,%ecx
mov    %al,-0x1d(%rbp)
je     11d5 <http_unchunk_data+0xd5>
mov    -0x18(%rbp),%rax
movsbl (%rax),%eax
cmp    $0xd,%eax
setne  %al
mov    %al,-0x1d(%rbp)
mov    -0x1d(%rbp),%al
test   $0x1,%al
jne    11e5 <http_unchunk_data+0xe5>
jmp    12c7 <http_unchunk_data+0x1c7>
mov    -0x1c(%rbp),%eax
shl    $0x4,%eax
mov    %eax,-0x1c(%rbp)
mov    -0x18(%rbp),%rax
movsbl (%rax),%ecx
mov    $0x30,%eax
cmp    %ecx,%eax
jg     1227 <http_unchunk_data+0x127>
mov    -0x18(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x39,%eax
jg     1227 <http_unchunk_data+0x127>
mov    -0x18(%rbp),%rax
movsbl (%rax),%eax
sub    $0x30,%eax
add    -0x1c(%rbp),%eax
mov    %eax,-0x1c(%rbp)
jmp    12b6 <http_unchunk_data+0x1b6>
mov    -0x18(%rbp),%rax
movsbl (%rax),%ecx
mov    $0x41,%eax
cmp    %ecx,%eax
jg     1262 <http_unchunk_data+0x162>
mov    -0x18(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x46,%eax
jg     1262 <http_unchunk_data+0x162>
mov    -0x18(%rbp),%rax
movsbl (%rax),%eax
add    $0xffffffc9,%eax
add    -0x1c(%rbp),%eax
mov    %eax,-0x1c(%rbp)
jmp    12b1 <http_unchunk_data+0x1b1>
mov    -0x18(%rbp),%rax
movsbl (%rax),%ecx
mov    $0x61,%eax
cmp    %ecx,%eax
jg     129e <http_unchunk_data+0x19e>
mov    -0x18(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x66,%eax
jg     129e <http_unchunk_data+0x19e>
mov    -0x18(%rbp),%rax
movsbl (%rax),%eax
add    $0xa,%eax
sub    $0x61,%eax
add    -0x1c(%rbp),%eax
mov    %eax,-0x1c(%rbp)
jmp    12ac <http_unchunk_data+0x1ac>
mov    -0x1c(%rbp),%eax
sar    $0x4,%eax
mov    %eax,-0x1c(%rbp)
jmp    12c7 <http_unchunk_data+0x1c7>
jmp    12b1 <http_unchunk_data+0x1b1>
jmp    12b6 <http_unchunk_data+0x1b6>
mov    -0x18(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x18(%rbp)
jmp    11b0 <http_unchunk_data+0xb0>
cmpl   $0x0,-0x1c(%rbp)
jne    12d6 <http_unchunk_data+0x1d6>
jmp    140c <http_unchunk_data+0x30c>
jmp    12db <http_unchunk_data+0x1db>
mov    -0x18(%rbp),%rax
movsbl (%rax),%ecx
mov    $0x1,%al
cmp    $0xa,%ecx
mov    %al,-0x1e(%rbp)
je     1315 <http_unchunk_data+0x215>
mov    -0x18(%rbp),%rax
movsbl (%rax),%ecx
mov    $0x1,%al
cmp    $0xd,%ecx
mov    %al,-0x1e(%rbp)
je     1315 <http_unchunk_data+0x215>
mov    -0x18(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x9,%eax
sete   %al
mov    %al,-0x1e(%rbp)
mov    -0x1e(%rbp),%al
test   $0x1,%al
jne    1325 <http_unchunk_data+0x225>
jmp    1336 <http_unchunk_data+0x236>
mov    -0x18(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x18(%rbp)
jmp    12db <http_unchunk_data+0x1db>
jmp    133b <http_unchunk_data+0x23b>
cmpl   $0x0,-0x1c(%rbp)
jle    13a7 <http_unchunk_data+0x2a7>
mov    -0x18(%rbp),%rax
movsbl (%rax),%eax
cmp    $0xa,%eax
je     138d <http_unchunk_data+0x28d>
mov    -0x18(%rbp),%rax
movsbl (%rax),%eax
cmp    $0xd,%eax
je     138d <http_unchunk_data+0x28d>
mov    -0x18(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x9,%eax
je     138d <http_unchunk_data+0x28d>
mov    -0x18(%rbp),%rax
mov    (%rax),%cl
mov    -0x10(%rbp),%rax
mov    %cl,(%rax)
mov    -0x10(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x10(%rbp)
mov    -0x18(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x18(%rbp)
mov    -0x1c(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x1c(%rbp)
jmp    133b <http_unchunk_data+0x23b>
jmp    13ac <http_unchunk_data+0x2ac>
mov    -0x18(%rbp),%rax
movsbl (%rax),%ecx
mov    $0x1,%al
cmp    $0xa,%ecx
mov    %al,-0x1f(%rbp)
je     13e6 <http_unchunk_data+0x2e6>
mov    -0x18(%rbp),%rax
movsbl (%rax),%ecx
mov    $0x1,%al
cmp    $0xd,%ecx
mov    %al,-0x1f(%rbp)
je     13e6 <http_unchunk_data+0x2e6>
mov    -0x18(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x9,%eax
sete   %al
mov    %al,-0x1f(%rbp)
mov    -0x1f(%rbp),%al
test   $0x1,%al
jne    13f6 <http_unchunk_data+0x2f6>
jmp    1407 <http_unchunk_data+0x307>
mov    -0x18(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x18(%rbp)
jmp    13ac <http_unchunk_data+0x2ac>
jmp    11ab <http_unchunk_data+0xab>
mov    -0x10(%rbp),%rax
movb   $0x0,(%rax)
pop    %rbp
ret

x86 assembly (clang, -O2):
<http_unchunk_data>:
mov    (%rdi),%dl
cmp    $0x3c,%dl
jne    1134 <http_unchunk_data+0x34>
lea    0x1(%rdi),%rax
mov    $0x3c,%cl
jmp    1117 <http_unchunk_data+0x17>
nop
movzbl (%rax),%ecx
add    $0x1,%rax
lea    -0x9(%rcx),%edx
cmp    $0x2,%dl
jb     1110 <http_unchunk_data+0x10>
cmp    $0xd,%cl
je     1110 <http_unchunk_data+0x10>
test   %cl,%cl
je     124d <http_unchunk_data+0x14d>
mov    %cl,(%rdi)
add    $0x1,%rdi
jmp    1110 <http_unchunk_data+0x10>
xor    %r9d,%r9d
mov    $0x2600,%r8d
mov    %rdi,%rsi
lea    0x1(%rsi),%rax
jmp    1164 <http_unchunk_data+0x64>
cs nopw 0x0(%rax,%rax,1)
movsbl %dl,%edx
add    %ecx,%edx
add    %edx,%r9d
movzbl 0x1(%rsi),%edx
add    $0x1,%rsi
add    $0x1,%rax
cmp    $0xa,%dl
je     11b0 <http_unchunk_data+0xb0>
cmp    $0xd,%dl
je     11b0 <http_unchunk_data+0xb0>
shl    $0x4,%r9d
lea    -0x30(%rdx),%r10d
mov    $0xffffffd0,%ecx
cmp    $0xa,%r10b
jb     1150 <http_unchunk_data+0x50>
lea    -0x41(%rdx),%r10d
mov    $0xffffffc9,%ecx
cmp    $0x6,%r10b
jb     1150 <http_unchunk_data+0x50>
lea    -0x61(%rdx),%r10d
mov    $0xffffffa9,%ecx
cmp    $0x6,%r10b
jb     1150 <http_unchunk_data+0x50>
sar    $0x4,%r9d
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
test   %r9d,%r9d
je     124d <http_unchunk_data+0x14d>
nopl   0x0(%rax)
cmp    $0xd,%dl
ja     11df <http_unchunk_data+0xdf>
movzbl %dl,%ecx
bt     %rcx,%r8
jae    11df <http_unchunk_data+0xdf>
movzbl 0x1(%rsi),%edx
add    $0x1,%rsi
add    $0x1,%rax
cmp    $0xd,%dl
jbe    11c5 <http_unchunk_data+0xc5>
test   %r9d,%r9d
jle    1230 <http_unchunk_data+0x130>
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
cmp    $0xd,%dl
ja     1213 <http_unchunk_data+0x113>
movzbl %dl,%ecx
bt     %rcx,%r8
jae    1213 <http_unchunk_data+0x113>
cmp    $0x2,%r9d
jl     121f <http_unchunk_data+0x11f>
add    $0xffffffff,%r9d
mov    (%rax),%dl
add    $0x1,%rax
cmp    $0xd,%dl
jbe    11f5 <http_unchunk_data+0xf5>
mov    %dl,(%rdi)
add    $0x1,%rdi
cmp    $0x2,%r9d
jge    1204 <http_unchunk_data+0x104>
xor    %r9d,%r9d
mov    %rax,%rsi
cs nopw 0x0(%rax,%rax,1)
nop
movzbl (%rsi),%edx
cmp    $0xd,%rdx
ja     1140 <http_unchunk_data+0x40>
bt     %rdx,%r8
jae    1140 <http_unchunk_data+0x40>
add    $0x1,%rsi
jmp    1230 <http_unchunk_data+0x130>
movb   $0x0,(%rdi)
ret

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

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