char *BSVM2_NatCall_SigNext(char *sig) {
  char *s;
  s = sig;
  if ((*s >= 'a') && (*s <= 'z'))
    return (s + 1);
  if ((*s == 'C') || (*s == 'D') || (*s == 'R')) {
    return (BSVM2_NatCall_SigNext(s + 1));
  }
  if (*s == 'P') {
    while (*s == 'P')
      s++;
    return (BSVM2_NatCall_SigNext(s));
  }
  if (*s == 'Q') {
    while (*s == 'Q')
      s++;
    return (BSVM2_NatCall_SigNext(s));
  }
  if ((*s == 'X') || (*s == 'L') || (*s == 'U')) {
    s++;
    if ((*s >= '0') && (*s <= '9')) {
      while ((*s >= '0') && (*s <= '9'))
        s++;
    } else {
      while (*s && (*s != ';'))
        s++;
      if (*s == ';')
        s++;
    }
    return (s);
  }
  if (*s == 'A') {
    s++;
    if ((*s >= '0') && (*s <= '9')) {
      while ((*s >= '0') && (*s <= '9'))
        s++;
      return (BSVM2_NatCall_SigNext(s));
    } else {
      return (BSVM2_NatCall_SigNext(s + 1));
    }
  }
  return (s);
}


x86 assembly (clang, -O0):
<BSVM2_NatCall_SigNext>:
push   %rbp
mov    %rsp,%rbp
sub    $0x20,%rsp
mov    %rdi,-0x10(%rbp)
mov    -0x10(%rbp),%rax
mov    %rax,-0x18(%rbp)
mov    -0x18(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x61,%eax
jl     1155 <BSVM2_NatCall_SigNext+0x45>
mov    -0x18(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x7a,%eax
jg     1155 <BSVM2_NatCall_SigNext+0x45>
mov    -0x18(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x8(%rbp)
jmp    1407 <BSVM2_NatCall_SigNext+0x2f7>
mov    -0x18(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x43,%eax
je     1185 <BSVM2_NatCall_SigNext+0x75>
mov    -0x18(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x44,%eax
je     1185 <BSVM2_NatCall_SigNext+0x75>
mov    -0x18(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x52,%eax
jne    119b <BSVM2_NatCall_SigNext+0x8b>
mov    -0x18(%rbp),%rdi
add    $0x1,%rdi
call   1030 <BSVM2_NatCall_SigNext@plt>
mov    %rax,-0x8(%rbp)
jmp    1407 <BSVM2_NatCall_SigNext+0x2f7>
mov    -0x18(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x50,%eax
jne    11e3 <BSVM2_NatCall_SigNext+0xd3>
jmp    11b0 <BSVM2_NatCall_SigNext+0xa0>
mov    -0x18(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x50,%eax
jne    11d1 <BSVM2_NatCall_SigNext+0xc1>
mov    -0x18(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x18(%rbp)
jmp    11b0 <BSVM2_NatCall_SigNext+0xa0>
mov    -0x18(%rbp),%rdi
call   1030 <BSVM2_NatCall_SigNext@plt>
mov    %rax,-0x8(%rbp)
jmp    1407 <BSVM2_NatCall_SigNext+0x2f7>
mov    -0x18(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x51,%eax
jne    122b <BSVM2_NatCall_SigNext+0x11b>
jmp    11f8 <BSVM2_NatCall_SigNext+0xe8>
mov    -0x18(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x51,%eax
jne    1219 <BSVM2_NatCall_SigNext+0x109>
mov    -0x18(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x18(%rbp)
jmp    11f8 <BSVM2_NatCall_SigNext+0xe8>
mov    -0x18(%rbp),%rdi
call   1030 <BSVM2_NatCall_SigNext@plt>
mov    %rax,-0x8(%rbp)
jmp    1407 <BSVM2_NatCall_SigNext+0x2f7>
mov    -0x18(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x58,%eax
je     125b <BSVM2_NatCall_SigNext+0x14b>
mov    -0x18(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x4c,%eax
je     125b <BSVM2_NatCall_SigNext+0x14b>
mov    -0x18(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x55,%eax
jne    1350 <BSVM2_NatCall_SigNext+0x240>
mov    -0x18(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x18(%rbp)
mov    -0x18(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x30,%eax
jl     12d7 <BSVM2_NatCall_SigNext+0x1c7>
mov    -0x18(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x39,%eax
jg     12d7 <BSVM2_NatCall_SigNext+0x1c7>
jmp    128c <BSVM2_NatCall_SigNext+0x17c>
mov    -0x18(%rbp),%rax
movsbl (%rax),%ecx
xor    %eax,%eax
cmp    $0x30,%ecx
mov    %al,-0x19(%rbp)
jl     12b1 <BSVM2_NatCall_SigNext+0x1a1>
mov    -0x18(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x39,%eax
setle  %al
mov    %al,-0x19(%rbp)
mov    -0x19(%rbp),%al
test   $0x1,%al
jne    12c1 <BSVM2_NatCall_SigNext+0x1b1>
jmp    12d2 <BSVM2_NatCall_SigNext+0x1c2>
mov    -0x18(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x18(%rbp)
jmp    128c <BSVM2_NatCall_SigNext+0x17c>
jmp    1343 <BSVM2_NatCall_SigNext+0x233>
jmp    12dc <BSVM2_NatCall_SigNext+0x1cc>
mov    -0x18(%rbp),%rax
movsbl (%rax),%ecx
xor    %eax,%eax
cmp    $0x0,%ecx
mov    %al,-0x1a(%rbp)
je     1301 <BSVM2_NatCall_SigNext+0x1f1>
mov    -0x18(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x3b,%eax
setne  %al
mov    %al,-0x1a(%rbp)
mov    -0x1a(%rbp),%al
test   $0x1,%al
jne    1311 <BSVM2_NatCall_SigNext+0x201>
jmp    1322 <BSVM2_NatCall_SigNext+0x212>
mov    -0x18(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x18(%rbp)
jmp    12dc <BSVM2_NatCall_SigNext+0x1cc>
mov    -0x18(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x3b,%eax
jne    133e <BSVM2_NatCall_SigNext+0x22e>
mov    -0x18(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x18(%rbp)
jmp    1343 <BSVM2_NatCall_SigNext+0x233>
mov    -0x18(%rbp),%rax
mov    %rax,-0x8(%rbp)
jmp    1407 <BSVM2_NatCall_SigNext+0x2f7>
mov    -0x18(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x41,%eax
jne    13ff <BSVM2_NatCall_SigNext+0x2ef>
mov    -0x18(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x18(%rbp)
mov    -0x18(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x30,%eax
jl     13e9 <BSVM2_NatCall_SigNext+0x2d9>
mov    -0x18(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x39,%eax
jg     13e9 <BSVM2_NatCall_SigNext+0x2d9>
jmp    1391 <BSVM2_NatCall_SigNext+0x281>
mov    -0x18(%rbp),%rax
movsbl (%rax),%ecx
xor    %eax,%eax
cmp    $0x30,%ecx
mov    %al,-0x1b(%rbp)
jl     13b6 <BSVM2_NatCall_SigNext+0x2a6>
mov    -0x18(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x39,%eax
setle  %al
mov    %al,-0x1b(%rbp)
mov    -0x1b(%rbp),%al
test   $0x1,%al
jne    13c6 <BSVM2_NatCall_SigNext+0x2b6>
jmp    13d7 <BSVM2_NatCall_SigNext+0x2c7>
mov    -0x18(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x18(%rbp)
jmp    1391 <BSVM2_NatCall_SigNext+0x281>
mov    -0x18(%rbp),%rdi
call   1030 <BSVM2_NatCall_SigNext@plt>
mov    %rax,-0x8(%rbp)
jmp    1407 <BSVM2_NatCall_SigNext+0x2f7>
mov    -0x18(%rbp),%rdi
add    $0x1,%rdi
call   1030 <BSVM2_NatCall_SigNext@plt>
mov    %rax,-0x8(%rbp)
jmp    1407 <BSVM2_NatCall_SigNext+0x2f7>
mov    -0x18(%rbp),%rax
mov    %rax,-0x8(%rbp)
mov    -0x8(%rbp),%rax
add    $0x20,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<BSVM2_NatCall_SigNext>:
mov    (%rdi),%dl
lea    -0x61(%rdx),%eax
cmp    $0x1a,%al
jae    1111 <BSVM2_NatCall_SigNext+0x11>
mov    %rdi,%rax
add    $0x1,%rax
ret
lea    0xee8(%rip),%rcx
jmp    1135 <BSVM2_NatCall_SigNext+0x35>
nopw   0x0(%rax,%rax,1)
add    $0x1,%rdi
mov    %rdi,%rax
mov    (%rax),%dl
lea    -0x61(%rdx),%esi
mov    %rax,%rdi
cmp    $0x1a,%sil
jb     110c <BSVM2_NatCall_SigNext+0xc>
add    $0xbf,%dl
cmp    $0x17,%dl
ja     121f <BSVM2_NatCall_SigNext+0x11f>
movzbl %dl,%eax
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
lea    0x1(%rdi),%rax
mov    0x1(%rdi),%dl
add    $0xd0,%dl
cmp    $0x9,%dl
ja     11b2 <BSVM2_NatCall_SigNext+0xb2>
ja     1127 <BSVM2_NatCall_SigNext+0x27>
add    $0x1,%rdi
mov    %rdi,%rax
cs nopw 0x0(%rax,%rax,1)
nop
movzbl 0x1(%rax),%edx
add    $0x1,%rax
add    $0xd0,%dl
cmp    $0xa,%dl
jb     1170 <BSVM2_NatCall_SigNext+0x70>
jmp    1127 <BSVM2_NatCall_SigNext+0x27>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
lea    0x1(%rdi),%rax
cmpb   $0x50,0x1(%rdi)
mov    %rax,%rdi
je     1190 <BSVM2_NatCall_SigNext+0x90>
jmp    1127 <BSVM2_NatCall_SigNext+0x27>
nop
lea    0x1(%rdi),%rax
cmpb   $0x51,0x1(%rdi)
mov    %rax,%rdi
je     11a0 <BSVM2_NatCall_SigNext+0xa0>
jmp    1127 <BSVM2_NatCall_SigNext+0x27>
add    $0x2,%rdi
jmp    1124 <BSVM2_NatCall_SigNext+0x24>
lea    0x1(%rdi),%rax
mov    0x1(%rdi),%cl
lea    -0x30(%rcx),%edx
cmp    $0xa,%dl
jae    1200 <BSVM2_NatCall_SigNext+0x100>
jae    11f0 <BSVM2_NatCall_SigNext+0xf0>
add    $0x1,%rdi
mov    %rdi,%rax
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
movzbl 0x1(%rax),%ecx
add    $0x1,%rax
add    $0xd0,%cl
cmp    $0xa,%cl
jb     11e0 <BSVM2_NatCall_SigNext+0xe0>
ret
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
test   %cl,%cl
je     1213 <BSVM2_NatCall_SigNext+0x113>
cmp    $0x3b,%cl
je     1213 <BSVM2_NatCall_SigNext+0x113>
movzbl 0x1(%rax),%ecx
add    $0x1,%rax
jmp    1200 <BSVM2_NatCall_SigNext+0x100>
xor    %edx,%edx
cmp    $0x3b,%cl
sete   %dl
add    %rdx,%rax
ret
mov    %rdi,%rax
ret

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

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