#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 */
scalar_t__ isalphanum(unsigned char);
scalar_t__ isspecial(unsigned char);
scalar_t__ iswhite(unsigned char);
int /*<<< orphan*/ strncpy(char *, char *, size_t);
unsigned char *pslTok(unsigned char **apslp, unsigned char *intobuf,
                      size_t intosz) {
  unsigned char *apsl = *apslp;
  unsigned char *token;
  size_t tokensz;
  for (; iswhite(*apsl); apsl++)
    ;
  while (*apsl == '/') {
    if (apsl[1] == '*') {
      for (apsl += 2; *apsl && (apsl[0] != '*' || apsl[1] != '/'); apsl++)
        ;
    } else if (apsl[1] == '/') {
      for (apsl += 2; *apsl && *apsl != '\n'; apsl++)
        ;
    } else {
      break;
    }
    for (; iswhite(*apsl); apsl++)
      ;
  }
  if (*apsl == '\0')
    return NULL;
  token = apsl;
  if (isalphanum(*apsl)) {
    for (apsl++; isalphanum(*apsl); apsl++)
      ;
  } else if (*apsl == '"') {
    for (apsl++; *apsl && *apsl != '"'; apsl++) {
      if (*apsl == '\\')
        apsl++;
    }
    if (*apsl == '"')
      apsl++;
  } else if (isspecial(*apsl)) {
    apsl++;
  } else {
    for (apsl++; *apsl && !iswhite(*apsl) && !isalphanum(*apsl) && *apsl != '/';
         apsl++)
      ;
  }
  tokensz = apsl - token;
  if (tokensz >= intosz)
    tokensz = intosz - 1;
  strncpy((char *)intobuf, (char *)token, tokensz);
  intobuf[tokensz] = '\0';
  *apslp = apsl;
  return intobuf;
}


x86 assembly (clang, -O0):
<pslTok>:
push   %rbp
mov    %rsp,%rbp
sub    $0x40,%rsp
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
movzbl (%rax),%edi
call   1050 <iswhite@plt>
cmp    $0x0,%rax
je     118b <pslTok+0x4b>
jmp    117a <pslTok+0x3a>
mov    -0x28(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x28(%rbp)
jmp    115f <pslTok+0x1f>
jmp    1190 <pslTok+0x50>
mov    -0x28(%rbp),%rax
movzbl (%rax),%eax
cmp    $0x2f,%eax
jne    12d6 <pslTok+0x196>
mov    -0x28(%rbp),%rax
movzbl 0x1(%rax),%eax
cmp    $0x2a,%eax
jne    1229 <pslTok+0xe9>
mov    -0x28(%rbp),%rax
add    $0x2,%rax
mov    %rax,-0x28(%rbp)
mov    -0x28(%rbp),%rax
movzbl (%rax),%ecx
xor    %eax,%eax
cmp    $0x0,%ecx
mov    %al,-0x39(%rbp)
je     11fe <pslTok+0xbe>
mov    -0x28(%rbp),%rax
movzbl (%rax),%ecx
mov    $0x1,%al
cmp    $0x2a,%ecx
mov    %al,-0x3a(%rbp)
jne    11f8 <pslTok+0xb8>
mov    -0x28(%rbp),%rax
movzbl 0x1(%rax),%eax
cmp    $0x2f,%eax
setne  %al
mov    %al,-0x3a(%rbp)
mov    -0x3a(%rbp),%al
mov    %al,-0x39(%rbp)
mov    -0x39(%rbp),%al
test   $0x1,%al
jne    120e <pslTok+0xce>
jmp    1224 <pslTok+0xe4>
jmp    1213 <pslTok+0xd3>
mov    -0x28(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x28(%rbp)
jmp    11bd <pslTok+0x7d>
jmp    12a0 <pslTok+0x160>
mov    -0x28(%rbp),%rax
movzbl 0x1(%rax),%eax
cmp    $0x2f,%eax
jne    1296 <pslTok+0x156>
mov    -0x28(%rbp),%rax
add    $0x2,%rax
mov    %rax,-0x28(%rbp)
mov    -0x28(%rbp),%rax
movzbl (%rax),%ecx
xor    %eax,%eax
cmp    $0x0,%ecx
mov    %al,-0x3b(%rbp)
je     126b <pslTok+0x12b>
mov    -0x28(%rbp),%rax
movzbl (%rax),%eax
cmp    $0xa,%eax
setne  %al
mov    %al,-0x3b(%rbp)
mov    -0x3b(%rbp),%al
test   $0x1,%al
jne    127b <pslTok+0x13b>
jmp    1291 <pslTok+0x151>
jmp    1280 <pslTok+0x140>
mov    -0x28(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x28(%rbp)
jmp    1246 <pslTok+0x106>
jmp    129b <pslTok+0x15b>
jmp    12d6 <pslTok+0x196>
jmp    12a0 <pslTok+0x160>
jmp    12a5 <pslTok+0x165>
mov    -0x28(%rbp),%rax
movzbl (%rax),%edi
call   1050 <iswhite@plt>
cmp    $0x0,%rax
je     12d1 <pslTok+0x191>
jmp    12c0 <pslTok+0x180>
mov    -0x28(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x28(%rbp)
jmp    12a5 <pslTok+0x165>
jmp    1190 <pslTok+0x50>
mov    -0x28(%rbp),%rax
movzbl (%rax),%eax
cmp    $0x0,%eax
jne    12f3 <pslTok+0x1b3>
movq   $0x0,-0x8(%rbp)
jmp    1514 <pslTok+0x3d4>
mov    -0x28(%rbp),%rax
mov    %rax,-0x30(%rbp)
mov    -0x28(%rbp),%rax
movzbl (%rax),%edi
call   1060 <isalphanum@plt>
cmp    $0x0,%rax
je     134e <pslTok+0x20e>
mov    -0x28(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x28(%rbp)
mov    -0x28(%rbp),%rax
movzbl (%rax),%edi
call   1060 <isalphanum@plt>
cmp    $0x0,%rax
je     1349 <pslTok+0x209>
jmp    1338 <pslTok+0x1f8>
mov    -0x28(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x28(%rbp)
jmp    131d <pslTok+0x1dd>
jmp    14bb <pslTok+0x37b>
mov    -0x28(%rbp),%rax
movzbl (%rax),%eax
cmp    $0x22,%eax
jne    13f2 <pslTok+0x2b2>
mov    -0x28(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x28(%rbp)
mov    -0x28(%rbp),%rax
movzbl (%rax),%ecx
xor    %eax,%eax
cmp    $0x0,%ecx
mov    %al,-0x3c(%rbp)
je     138f <pslTok+0x24f>
mov    -0x28(%rbp),%rax
movzbl (%rax),%eax
cmp    $0x22,%eax
setne  %al
mov    %al,-0x3c(%rbp)
mov    -0x3c(%rbp),%al
test   $0x1,%al
jne    139f <pslTok+0x25f>
jmp    13d1 <pslTok+0x291>
mov    -0x28(%rbp),%rax
movzbl (%rax),%eax
cmp    $0x5c,%eax
jne    13bb <pslTok+0x27b>
mov    -0x28(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x28(%rbp)
jmp    13c0 <pslTok+0x280>
mov    -0x28(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x28(%rbp)
jmp    136a <pslTok+0x22a>
mov    -0x28(%rbp),%rax
movzbl (%rax),%eax
cmp    $0x22,%eax
jne    13ed <pslTok+0x2ad>
mov    -0x28(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x28(%rbp)
jmp    14b6 <pslTok+0x376>
mov    -0x28(%rbp),%rax
movzbl (%rax),%edi
call   1040 <isspecial@plt>
cmp    $0x0,%rax
je     1419 <pslTok+0x2d9>
mov    -0x28(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x28(%rbp)
jmp    14b1 <pslTok+0x371>
mov    -0x28(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x28(%rbp)
mov    -0x28(%rbp),%rax
movzbl (%rax),%ecx
xor    %eax,%eax
cmp    $0x0,%ecx
mov    %al,-0x3d(%rbp)
je     1486 <pslTok+0x346>
mov    -0x28(%rbp),%rax
movzbl (%rax),%edi
call   1050 <iswhite@plt>
mov    %rax,%rcx
xor    %eax,%eax
cmp    $0x0,%rcx
mov    %al,-0x3d(%rbp)
jne    1486 <pslTok+0x346>
mov    -0x28(%rbp),%rax
movzbl (%rax),%edi
call   1060 <isalphanum@plt>
mov    %rax,%rcx
xor    %eax,%eax
cmp    $0x0,%rcx
mov    %al,-0x3d(%rbp)
jne    1486 <pslTok+0x346>
mov    -0x28(%rbp),%rax
movzbl (%rax),%eax
cmp    $0x2f,%eax
setne  %al
mov    %al,-0x3d(%rbp)
mov    -0x3d(%rbp),%al
test   $0x1,%al
jne    1496 <pslTok+0x356>
jmp    14ac <pslTok+0x36c>
jmp    149b <pslTok+0x35b>
mov    -0x28(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x28(%rbp)
jmp    1425 <pslTok+0x2e5>
jmp    14b1 <pslTok+0x371>
jmp    14b6 <pslTok+0x376>
jmp    14bb <pslTok+0x37b>
mov    -0x28(%rbp),%rax
mov    -0x30(%rbp),%rcx
sub    %rcx,%rax
mov    %rax,-0x38(%rbp)
mov    -0x38(%rbp),%rax
cmp    -0x20(%rbp),%rax
jb     14e4 <pslTok+0x3a4>
mov    -0x20(%rbp),%rax
sub    $0x1,%rax
mov    %rax,-0x38(%rbp)
mov    -0x18(%rbp),%rdi
mov    -0x30(%rbp),%rsi
mov    -0x38(%rbp),%rdx
call   1030 <strncpy@plt>
mov    -0x18(%rbp),%rax
mov    -0x38(%rbp),%rcx
movb   $0x0,(%rax,%rcx,1)
mov    -0x28(%rbp),%rcx
mov    -0x10(%rbp),%rax
mov    %rcx,(%rax)
mov    -0x18(%rbp),%rax
mov    %rax,-0x8(%rbp)
mov    -0x8(%rbp),%rax
add    $0x40,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<pslTok>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
push   %rax
mov    %rdx,%r12
mov    %rsi,%r15
mov    %rdi,%r14
mov    (%rdi),%rbx
add    $0xffffffffffffffff,%rbx
nopl   0x0(%rax,%rax,1)
movzbl 0x1(%rbx),%edi
add    $0x1,%rbx
call   1050 <iswhite@plt>
test   %rax,%rax
jne    1160 <pslTok+0x20>
jmp    1220 <pslTok+0xe0>
nopw   0x0(%rax,%rax,1)
mov    0x1(%rbx),%cl
cmp    $0x2f,%cl
je     11c0 <pslTok+0x80>
cmp    $0x2a,%cl
jne    1236 <pslTok+0xf6>
add    $0x2,%rbx
jmp    11aa <pslTok+0x6a>
nopw   0x0(%rax,%rax,1)
cmpb   $0x2f,0x1(%rbx)
je     11f0 <pslTok+0xb0>
add    $0x1,%rbx
movzbl (%rbx),%eax
cmp    $0x2a,%al
je     11a0 <pslTok+0x60>
test   %al,%al
jne    11a6 <pslTok+0x66>
jmp    11f2 <pslTok+0xb2>
nopw   0x0(%rax,%rax,1)
add    $0x2,%rbx
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
movzbl (%rbx),%eax
test   %al,%al
je     11f2 <pslTok+0xb2>
cmp    $0xa,%al
je     11f2 <pslTok+0xb2>
add    $0x1,%rbx
jmp    11d0 <pslTok+0x90>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
mov    $0x2a,%al
movzbl %al,%edi
cs nopw 0x0(%rax,%rax,1)
nop
call   1050 <iswhite@plt>
test   %rax,%rax
je     1220 <pslTok+0xe0>
movzbl 0x1(%rbx),%edi
add    $0x1,%rbx
jmp    1200 <pslTok+0xc0>
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
mov    (%rbx),%al
cmp    $0x2f,%al
je     1180 <pslTok+0x40>
test   %al,%al
jne    1236 <pslTok+0xf6>
xor    %r15d,%r15d
jmp    12d6 <pslTok+0x196>
movzbl %al,%edi
call   1060 <isalphanum@plt>
test   %rax,%rax
je     1264 <pslTok+0x124>
mov    %rbx,%rbp
cs nopw 0x0(%rax,%rax,1)
movzbl 0x1(%rbp),%edi
add    $0x1,%rbp
call   1060 <isalphanum@plt>
test   %rax,%rax
jne    1250 <pslTok+0x110>
jmp    12ae <pslTok+0x16e>
mov    (%rbx),%al
cmp    $0x22,%al
jne    129d <pslTok+0x15d>
mov    %rbx,%rbp
jmp    1277 <pslTok+0x137>
nop
add    $0x2,%rax
mov    %rax,%rbp
mov    %rbp,%rax
movzbl 0x1(%rbp),%ecx
cmp    $0x5c,%cl
je     1270 <pslTok+0x130>
lea    0x1(%rax),%rbp
test   %cl,%cl
je     1290 <pslTok+0x150>
cmp    $0x22,%cl
jne    1277 <pslTok+0x137>
add    $0x2,%rax
cmp    $0x22,%cl
cmove  %rax,%rbp
jmp    12ae <pslTok+0x16e>
movzbl %al,%edi
call   1040 <isspecial@plt>
test   %rax,%rax
je     12e8 <pslTok+0x1a8>
lea    0x1(%rbx),%rbp
mov    %rbp,%rax
sub    %rbx,%rax
lea    -0x1(%r12),%r13
cmp    %r12,%rax
cmovb  %rax,%r13
mov    %r15,%rdi
mov    %rbx,%rsi
mov    %r13,%rdx
call   1030 <strncpy@plt>
movb   $0x0,(%r15,%r13,1)
mov    %rbp,(%r14)
mov    %r15,%rax
add    $0x8,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret
lea    0x1(%rbx),%rax
nopl   0x0(%rax)
mov    %rax,%rbp
movzbl (%rax),%eax
test   %al,%al
je     12ae <pslTok+0x16e>
movzbl %al,%edi
call   1050 <iswhite@plt>
test   %rax,%rax
jne    12ae <pslTok+0x16e>
movzbl 0x0(%rbp),%edi
call   1060 <isalphanum@plt>
test   %rax,%rax
jne    12ae <pslTok+0x16e>
lea    0x1(%rbp),%rax
cmpb   $0x2f,0x0(%rbp)
jne    12f0 <pslTok+0x1b0>
jmp    12ae <pslTok+0x16e>

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

LLVM IR (-O2):
define i8* @pslTok(i8** nocapture %0, i8* %1, i64 %2) {
%4 = load i8*, i8** %0
br label %5
5: ; preds = %5, %3
%6 = phi i8* [ %4, %3 ], [ %10, %5 ]
%7 = load i8, i8* %6
%8 = tail call i64 @iswhite(i8 zeroext %7)
%9 = icmp eq i64 %8, 0
%10 = getelementptr inbounds i8, i8* %6, i64 1
br i1 %9, label %11, label %5
11: ; preds = %5, %40
%12 = phi i8* [ %41, %40 ], [ %6, %5 ]
%13 = load i8, i8* %12
switch i8 %13, label %48 [
i8 47, label %14
i8 0, label %102
]
14: ; preds = %11
%15 = getelementptr inbounds i8, i8* %12, i64 1
%16 = load i8, i8* %15
switch i8 %16, label %48 [
i8 42, label %17
i8 47, label %28
]
17: ; preds = %14
%18 = getelementptr inbounds i8, i8* %12, i64 2
br label %19
19: ; preds = %26, %17
%20 = phi i8* [ %18, %17 ], [ %27, %26 ]
%21 = load i8, i8* %20
switch i8 %21, label %26 [
i8 0, label %35
i8 42, label %22
]
22: ; preds = %19
%23 = getelementptr inbounds i8, i8* %20, i64 1
%24 = load i8, i8* %23
%25 = icmp eq i8 %24, 47
br i1 %25, label %35, label %26
26: ; preds = %19, %22
%27 = getelementptr inbounds i8, i8* %20, i64 1
br label %19
28: ; preds = %14
%29 = getelementptr inbounds i8, i8* %12, i64 2
br label %30
30: ; preds = %33, %28
%31 = phi i8* [ %29, %28 ], [ %34, %33 ]
%32 = load i8, i8* %31
switch i8 %32, label %33 [
i8 0, label %35
i8 10, label %35
]
33: ; preds = %30
%34 = getelementptr inbounds i8, i8* %31, i64 1
br label %30
35: ; preds = %30, %30, %19, %22
%36 = phi i8 [ %21, %19 ], [ 42, %22 ], [ %32, %30 ], [ %32, %30 ]
%37 = phi i8* [ %20, %22 ], [ %20, %19 ], [ %31, %30 ], [ %31, %30 ]
%38 = tail call i64 @iswhite(i8 zeroext %36)
%39 = icmp eq i64 %38, 0
br i1 %39, label %40, label %42
40: ; preds = %42, %35
%41 = phi i8* [ %37, %35 ], [ %44, %42 ]
br label %11
42: ; preds = %35, %42
%43 = phi i8* [ %44, %42 ], [ %37, %35 ]
%44 = getelementptr inbounds i8, i8* %43, i64 1
%45 = load i8, i8* %44
%46 = tail call i64 @iswhite(i8 zeroext %45)
%47 = icmp eq i64 %46, 0
br i1 %47, label %40, label %42
48: ; preds = %11, %14
%49 = tail call i64 @isalphanum(i8 zeroext %13)
%50 = icmp eq i64 %49, 0
br i1 %50, label %57, label %51
51: ; preds = %48, %51
%52 = phi i8* [ %53, %51 ], [ %12, %48 ]
%53 = getelementptr inbounds i8, i8* %52, i64 1
%54 = load i8, i8* %53
%55 = tail call i64 @isalphanum(i8 zeroext %54)
%56 = icmp eq i64 %55, 0
br i1 %56, label %92, label %51
57: ; preds = %48
%58 = load i8, i8* %12
%59 = icmp eq i8 %58, 34
br i1 %59, label %60, label %72
60: ; preds = %57, %64
%61 = phi i8* [ %65, %64 ], [ %12, %57 ]
%62 = getelementptr inbounds i8, i8* %61, i64 1
%63 = load i8, i8* %62
switch i8 %63, label %64 [
i8 0, label %68
i8 34, label %68
i8 92, label %66
]
64: ; preds = %60, %66
%65 = phi i8* [ %67, %66 ], [ %62, %60 ]
br label %60
66: ; preds = %60
%67 = getelementptr inbounds i8, i8* %61, i64 2
br label %64
68: ; preds = %60, %60
%69 = icmp eq i8 %63, 34
%70 = getelementptr inbounds i8, i8* %61, i64 2
%71 = select i1 %69, i8* %70, i8* %62
br label %92
72: ; preds = %57
%73 = tail call i64 @isspecial(i8 zeroext %58)
%74 = icmp eq i64 %73, 0
br i1 %74, label %77, label %75
75: ; preds = %72
%76 = getelementptr inbounds i8, i8* %12, i64 1
br label %92
77: ; preds = %72, %89
%78 = phi i8* [ %79, %89 ], [ %12, %72 ]
%79 = getelementptr inbounds i8, i8* %78, i64 1
%80 = load i8, i8* %79
%81 = icmp eq i8 %80, 0
br i1 %81, label %92, label %82
82: ; preds = %77
%83 = tail call i64 @iswhite(i8 zeroext %80)
%84 = icmp eq i64 %83, 0
br i1 %84, label %85, label %92
85: ; preds = %82
%86 = load i8, i8* %79
%87 = tail call i64 @isalphanum(i8 zeroext %86)
%88 = icmp eq i64 %87, 0
br i1 %88, label %89, label %92
89: ; preds = %85
%90 = load i8, i8* %79
%91 = icmp eq i8 %90, 47
br i1 %91, label %92, label %77
92: ; preds = %51, %89, %85, %82, %77, %68, %75
%93 = phi i8* [ %76, %75 ], [ %71, %68 ], [ %79, %77 ], [ %79, %82 ], [ %79, %85 ], [ %79, %89 ], [ %53, %51 ]
%94 = ptrtoint i8* %93 to i64
%95 = ptrtoint i8* %12 to i64
%96 = sub i64 %94, %95
%97 = icmp ult i64 %96, %2
%98 = add i64 %2, -1
%99 = select i1 %97, i64 %96, i64 %98
%100 = tail call i32 @strncpy(i8* %1, i8* %12, i64 %99)
%101 = getelementptr inbounds i8, i8* %1, i64 %99
store i8 0, i8* %101
store i8* %93, i8** %0
br label %102
102: ; preds = %11, %92
%103 = phi i8* [ %1, %92 ], [ null, %11 ]
ret i8* %103
}