char *TclWordEnd(start, nested)
char *start;
int nested;
{
  register char *p;
  int count;
  p = start;
  while (isspace(*p)) {
    p++;
  }
  if (*p == '"') {
    p = QuoteEnd(p + 1, '"');
  } else if (*p == '{') {
    int braces = 1;
    while (braces != 0) {
      p++;
      while (*p == '\\') {
        (void)Tcl_Backslash(p, &count);
        p += count;
      }
      if (*p == '}') {
        braces--;
      } else if (*p == '{') {
        braces++;
      } else if (*p == 0) {
        return p;
      }
    }
  }
  while (*p != 0) {
    if (*p == '[') {
      p++;
      while ((*p != ']') && (*p != 0)) {
        p = TclWordEnd(p, 1);
      }
      if (*p == ']') {
        p++;
      }
    } else if (*p == '\\') {
      (void)Tcl_Backslash(p, &count);
      p += count;
    } else if (*p == '$') {
      p = VarNameEnd(p);
    } else if (*p == ';') {
      if (p == start) {
        p++;
      }
      break;
    } else if (isspace(*p)) {
      break;
    } else if ((*p == ']') && nested) {
      break;
    } else {
      p++;
    }
  }
  return p;
}


x86 assembly (clang, -O0):
<TclWordEnd>:
push   %rbp
mov    %rsp,%rbp
sub    $0x30,%rsp
mov    %rdi,-0x10(%rbp)
mov    %esi,-0x14(%rbp)
mov    -0x10(%rbp),%rax
mov    %rax,-0x20(%rbp)
mov    -0x20(%rbp),%rax
movsbl (%rax),%edi
call   1050 <isspace@plt>
cmp    $0x0,%eax
je     118d <TclWordEnd+0x3d>
mov    -0x20(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x20(%rbp)
jmp    1167 <TclWordEnd+0x17>
mov    -0x20(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x22,%eax
jne    11bc <TclWordEnd+0x6c>
mov    -0x20(%rbp),%rdi
add    $0x1,%rdi
mov    $0x22,%esi
mov    $0x0,%al
call   1060 <QuoteEnd@plt>
cltq
mov    %rax,-0x20(%rbp)
jmp    1290 <TclWordEnd+0x140>
mov    -0x20(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x7b,%eax
jne    128b <TclWordEnd+0x13b>
movl   $0x1,-0x28(%rbp)
cmpl   $0x0,-0x28(%rbp)
je     1286 <TclWordEnd+0x136>
mov    -0x20(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x20(%rbp)
mov    -0x20(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x5c,%eax
jne    121e <TclWordEnd+0xce>
mov    -0x20(%rbp),%rdi
lea    -0x24(%rbp),%rsi
mov    $0x0,%al
call   1040 <Tcl_Backslash@plt>
mov    -0x24(%rbp),%ecx
mov    -0x20(%rbp),%rax
movslq %ecx,%rcx
add    %rcx,%rax
mov    %rax,-0x20(%rbp)
jmp    11e9 <TclWordEnd+0x99>
mov    -0x20(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x7d,%eax
jne    123c <TclWordEnd+0xec>
mov    -0x28(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x28(%rbp)
jmp    1281 <TclWordEnd+0x131>
mov    -0x20(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x7b,%eax
jne    125a <TclWordEnd+0x10a>
mov    -0x28(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x28(%rbp)
jmp    127c <TclWordEnd+0x12c>
mov    -0x20(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x0,%eax
jne    1277 <TclWordEnd+0x127>
mov    -0x20(%rbp),%rax
mov    %rax,-0x8(%rbp)
jmp    1423 <TclWordEnd+0x2d3>
jmp    127c <TclWordEnd+0x12c>
jmp    1281 <TclWordEnd+0x131>
jmp    11d3 <TclWordEnd+0x83>
jmp    128b <TclWordEnd+0x13b>
jmp    1290 <TclWordEnd+0x140>
jmp    1295 <TclWordEnd+0x145>
mov    -0x20(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x0,%eax
je     141b <TclWordEnd+0x2cb>
mov    -0x20(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x5b,%eax
jne    132e <TclWordEnd+0x1de>
mov    -0x20(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x20(%rbp)
mov    -0x20(%rbp),%rax
movsbl (%rax),%ecx
xor    %eax,%eax
cmp    $0x5d,%ecx
mov    %al,-0x29(%rbp)
je     12e6 <TclWordEnd+0x196>
mov    -0x20(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x0,%eax
setne  %al
mov    %al,-0x29(%rbp)
mov    -0x29(%rbp),%al
test   $0x1,%al
jne    12f6 <TclWordEnd+0x1a6>
jmp    130d <TclWordEnd+0x1bd>
mov    -0x20(%rbp),%rdi
mov    $0x1,%esi
call   1070 <TclWordEnd@plt>
mov    %rax,-0x20(%rbp)
jmp    12c1 <TclWordEnd+0x171>
mov    -0x20(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x5d,%eax
jne    1329 <TclWordEnd+0x1d9>
mov    -0x20(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x20(%rbp)
jmp    1416 <TclWordEnd+0x2c6>
mov    -0x20(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x5c,%eax
jne    1363 <TclWordEnd+0x213>
mov    -0x20(%rbp),%rdi
lea    -0x24(%rbp),%rsi
mov    $0x0,%al
call   1040 <Tcl_Backslash@plt>
mov    -0x24(%rbp),%ecx
mov    -0x20(%rbp),%rax
movslq %ecx,%rcx
add    %rcx,%rax
mov    %rax,-0x20(%rbp)
jmp    1411 <TclWordEnd+0x2c1>
mov    -0x20(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x24,%eax
jne    1389 <TclWordEnd+0x239>
mov    -0x20(%rbp),%rdi
mov    $0x0,%al
call   1030 <VarNameEnd@plt>
cltq
mov    %rax,-0x20(%rbp)
jmp    140c <TclWordEnd+0x2bc>
mov    -0x20(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x3b,%eax
jne    13b8 <TclWordEnd+0x268>
mov    -0x20(%rbp),%rax
cmp    -0x10(%rbp),%rax
jne    13b3 <TclWordEnd+0x263>
mov    -0x20(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x20(%rbp)
jmp    141b <TclWordEnd+0x2cb>
mov    -0x20(%rbp),%rax
movsbl (%rax),%edi
call   1050 <isspace@plt>
cmp    $0x0,%eax
je     13d2 <TclWordEnd+0x282>
jmp    141b <TclWordEnd+0x2cb>
mov    -0x20(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x5d,%eax
jne    13f1 <TclWordEnd+0x2a1>
cmpl   $0x0,-0x14(%rbp)
je     13f1 <TclWordEnd+0x2a1>
jmp    141b <TclWordEnd+0x2cb>
mov    -0x20(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x20(%rbp)
jmp    1402 <TclWordEnd+0x2b2>
jmp    1407 <TclWordEnd+0x2b7>
jmp    140c <TclWordEnd+0x2bc>
jmp    1411 <TclWordEnd+0x2c1>
jmp    1416 <TclWordEnd+0x2c6>
jmp    1295 <TclWordEnd+0x145>
mov    -0x20(%rbp),%rax
mov    %rax,-0x8(%rbp)
mov    -0x8(%rbp),%rax
add    $0x30,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<TclWordEnd>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
push   %rax
mov    %esi,%r12d
mov    %rdi,%r14
mov    %rdi,%rbx
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
movzbl (%rbx),%ebp
movsbl %bpl,%edi
call   1050 <isspace@plt>
add    $0x1,%rbx
test   %eax,%eax
jne    1170 <TclWordEnd+0x20>
cmp    $0x22,%bpl
je     11a4 <TclWordEnd+0x54>
add    $0xffffffffffffffff,%rbx
cmp    $0x7b,%bpl
jne    11b6 <TclWordEnd+0x66>
mov    $0x1,%r15d
lea    0x4(%rsp),%rbp
jmp    128d <TclWordEnd+0x13d>
mov    %rbx,%rdi
mov    $0x22,%esi
xor    %eax,%eax
call   1060 <QuoteEnd@plt>
movslq %eax,%rbx
lea    0x4(%rsp),%r15
jmp    11d5 <TclWordEnd+0x85>
nopl   (%rax)
mov    %rbx,%rdi
mov    %r15,%rsi
xor    %eax,%eax
call   1040 <Tcl_Backslash@plt>
movslq 0x4(%rsp),%rax
add    %rax,%rbx
movsbl (%rbx),%ebp
cmp    $0x5a,%ebp
jle    1210 <TclWordEnd+0xc0>
cmp    $0x5c,%bpl
je     11c0 <TclWordEnd+0x70>
cmp    $0x5b,%bpl
jne    124f <TclWordEnd+0xff>
add    $0x1,%rbx
nopl   (%rax)
movzbl (%rbx),%eax
test   %al,%al
je     1230 <TclWordEnd+0xe0>
cmp    $0x5d,%al
je     1230 <TclWordEnd+0xe0>
mov    %rbx,%rdi
mov    $0x1,%esi
call   1070 <TclWordEnd@plt>
mov    %rax,%rbx
jmp    11f0 <TclWordEnd+0xa0>
nopl   (%rax)
cmp    $0x24,%bpl
jne    123c <TclWordEnd+0xec>
mov    %rbx,%rdi
xor    %eax,%eax
call   1030 <VarNameEnd@plt>
movslq %eax,%rbx
jmp    11d5 <TclWordEnd+0x85>
cs nopw 0x0(%rax,%rax,1)
nop
xor    %ecx,%ecx
cmp    $0x5d,%al
sete   %cl
add    %rcx,%rbx
jmp    11d5 <TclWordEnd+0x85>
test   %bpl,%bpl
je     12dd <TclWordEnd+0x18d>
cmp    $0x3b,%bpl
je     12d2 <TclWordEnd+0x182>
test   %r12d,%r12d
setne  %r13b
mov    %ebp,%edi
call   1050 <isspace@plt>
cmp    $0x5d,%bpl
sete   %cl
test   %eax,%eax
jne    12dd <TclWordEnd+0x18d>
and    %cl,%r13b
jne    12dd <TclWordEnd+0x18d>
add    $0x1,%rbx
jmp    11d5 <TclWordEnd+0x85>
cs nopw 0x0(%rax,%rax,1)
add    $0x1,%r15d
test   %r15d,%r15d
je     11b6 <TclWordEnd+0x66>
add    $0x1,%rbx
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
movzbl (%rbx),%eax
cmp    $0x5c,%al
jne    12c0 <TclWordEnd+0x170>
mov    %rbx,%rdi
mov    %rbp,%rsi
xor    %eax,%eax
call   1040 <Tcl_Backslash@plt>
movslq 0x4(%rsp),%rax
add    %rax,%rbx
jmp    12a0 <TclWordEnd+0x150>
xchg   %ax,%ax
test   %al,%al
je     12dd <TclWordEnd+0x18d>
cmp    $0x7b,%al
je     1280 <TclWordEnd+0x130>
cmp    $0x7d,%al
jne    1284 <TclWordEnd+0x134>
add    $0xffffffff,%r15d
jmp    1284 <TclWordEnd+0x134>
xor    %eax,%eax
cmp    %r14,%rbx
sete   %al
add    %rax,%rbx
mov    %rbx,%rax
add    $0x8,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

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

LLVM IR (-O2):
define i8* @TclWordEnd(i8* %0, i32 %1) {
%3 = alloca i32
%4 = bitcast i32* %3 to i8*
br label %5
5: ; preds = %5, %2
%6 = phi i8* [ %0, %2 ], [ %11, %5 ]
%7 = load i8, i8* %6
%8 = sext i8 %7 to i32
%9 = tail call i32 @isspace(i32 %8)
%10 = icmp eq i32 %9, 0
%11 = getelementptr inbounds i8, i8* %6, i64 1
br i1 %10, label %12, label %5
12: ; preds = %5
switch i8 %7, label %36 [
i8 34, label %13
i8 123, label %17
]
13: ; preds = %12
%14 = tail call i32 (i8*, i32, ...) bitcast (i32 (...)* @QuoteEnd to i32 (i8*, i32, ...)*)(i8* %11, i32 34)
%15 = sext i32 %14 to i64
%16 = inttoptr i64 %15 to i8*
br label %36
17: ; preds = %12, %33
%18 = phi i32 [ %34, %33 ], [ 1, %12 ]
%19 = phi i8* [ %22, %33 ], [ %6, %12 ]
%20 = getelementptr inbounds i8, i8* %19, i64 1
br label %21
21: ; preds = %24, %17
%22 = phi i8* [ %20, %17 ], [ %28, %24 ]
%23 = load i8, i8* %22
switch i8 %23, label %33 [
i8 92, label %24
i8 125, label %29
i8 123, label %31
i8 0, label %77
]
24: ; preds = %21
%25 = call i32 (i8*, i32*, ...) bitcast (i32 (...)* @Tcl_Backslash to i32 (i8*, i32*, ...)*)(i8* %22, i32* %3)
%26 = load i32, i32* %3
%27 = sext i32 %26 to i64
%28 = getelementptr inbounds i8, i8* %22, i64 %27
br label %21
29: ; preds = %21
%30 = add nsw i32 %18, -1
br label %33
31: ; preds = %21
%32 = add nsw i32 %18, 1
br label %33
33: ; preds = %21, %31, %29
%34 = phi i32 [ %30, %29 ], [ %32, %31 ], [ %18, %21 ]
%35 = icmp eq i32 %34, 0
br i1 %35, label %36, label %17
36: ; preds = %33, %12, %13
%37 = phi i8* [ %16, %13 ], [ %6, %12 ], [ %22, %33 ]
%38 = icmp ne i32 %1, 0
br label %39
39: ; preds = %53, %36
%40 = phi i8* [ %37, %36 ], [ %54, %53 ]
%41 = load i8, i8* %40
switch i8 %41, label %68 [
i8 0, label %77
i8 91, label %42
i8 92, label %55
i8 36, label %60
i8 59, label %64
]
42: ; preds = %39
%43 = getelementptr inbounds i8, i8* %40, i64 1
br label %44
44: ; preds = %47, %42
%45 = phi i8* [ %43, %42 ], [ %48, %47 ]
%46 = load i8, i8* %45
switch i8 %46, label %47 [
i8 93, label %49
i8 0, label %49
]
47: ; preds = %44
%48 = call i8* @TclWordEnd(i8* %45, i32 1)
br label %44
49: ; preds = %44, %44
%50 = icmp eq i8 %46, 93
%51 = zext i1 %50 to i64
%52 = getelementptr i8, i8* %45, i64 %51
br label %53
53: ; preds = %49, %55, %75, %60
%54 = phi i8* [ %59, %55 ], [ %63, %60 ], [ %76, %75 ], [ %52, %49 ]
br label %39
55: ; preds = %39
%56 = call i32 (i8*, i32*, ...) bitcast (i32 (...)* @Tcl_Backslash to i32 (i8*, i32*, ...)*)(i8* %40, i32* %3)
%57 = load i32, i32* %3
%58 = sext i32 %57 to i64
%59 = getelementptr inbounds i8, i8* %40, i64 %58
br label %53
60: ; preds = %39
%61 = call i32 (i8*, ...) bitcast (i32 (...)* @VarNameEnd to i32 (i8*, ...)*)(i8* %40)
%62 = sext i32 %61 to i64
%63 = inttoptr i64 %62 to i8*
br label %53
64: ; preds = %39
%65 = icmp eq i8* %40, %0
%66 = zext i1 %65 to i64
%67 = getelementptr i8, i8* %40, i64 %66
br label %77
68: ; preds = %39
%69 = sext i8 %41 to i32
%70 = call i32 @isspace(i32 %69)
%71 = icmp ne i32 %70, 0
%72 = icmp eq i8 %41, 93
%73 = and i1 %38, %72
%74 = select i1 %71, i1 true, i1 %73
br i1 %74, label %77, label %75
75: ; preds = %68
%76 = getelementptr inbounds i8, i8* %40, i64 1
br label %53
77: ; preds = %21, %68, %39, %64
%78 = phi i8* [ %67, %64 ], [ %40, %39 ], [ %40, %68 ], [ %22, %21 ]
ret i8* %78
}