#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__ nsvg__isdigit(char const);
scalar_t__ nsvg__isspace(char const);
const char *nsvg__getNextPathItem(const char *s, char *it) {
  int i = 0;
  it[0] = '\0';
  while (*s && (nsvg__isspace(*s) || *s == ','))
    s++;
  if (!*s)
    return s;
  if (*s == '-' || *s == '+' || nsvg__isdigit(*s)) {
    if (*s == '-' || *s == '+') {
      if (i < 63)
        it[i++] = *s;
      s++;
    }
    while (*s && nsvg__isdigit(*s)) {
      if (i < 63)
        it[i++] = *s;
      s++;
    }
    if (*s == '.') {
      if (i < 63)
        it[i++] = *s;
      s++;
      while (*s && nsvg__isdigit(*s)) {
        if (i < 63)
          it[i++] = *s;
        s++;
      }
    }
    if (*s == 'e' || *s == 'E') {
      if (i < 63)
        it[i++] = *s;
      s++;
      if (*s == '-' || *s == '+') {
        if (i < 63)
          it[i++] = *s;
        s++;
      }
      while (*s && nsvg__isdigit(*s)) {
        if (i < 63)
          it[i++] = *s;
        s++;
      }
    }
    it[i] = '\0';
  } else {
    it[0] = *s++;
    it[1] = '\0';
    return s;
  }
  return s;
}


x86 assembly (clang, -O0):
<nsvg__getNextPathItem>:
push   %rbp
mov    %rsp,%rbp
sub    $0x30,%rsp
mov    %rdi,-0x10(%rbp)
mov    %rsi,-0x18(%rbp)
movl   $0x0,-0x1c(%rbp)
mov    -0x18(%rbp),%rax
movb   $0x0,(%rax)
mov    -0x10(%rbp),%rax
movsbl (%rax),%ecx
xor    %eax,%eax
cmp    $0x0,%ecx
mov    %al,-0x1d(%rbp)
je     1187 <nsvg__getNextPathItem+0x67>
mov    -0x10(%rbp),%rax
movsbl (%rax),%edi
call   1040 <nsvg__isspace@plt>
mov    %rax,%rcx
mov    $0x1,%al
cmp    $0x0,%rcx
mov    %al,-0x1e(%rbp)
jne    1181 <nsvg__getNextPathItem+0x61>
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x2c,%eax
sete   %al
mov    %al,-0x1e(%rbp)
mov    -0x1e(%rbp),%al
mov    %al,-0x1d(%rbp)
mov    -0x1d(%rbp),%al
test   $0x1,%al
jne    1197 <nsvg__getNextPathItem+0x77>
jmp    11a8 <nsvg__getNextPathItem+0x88>
mov    -0x10(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x10(%rbp)
jmp    113e <nsvg__getNextPathItem+0x1e>
mov    -0x10(%rbp),%rax
cmpb   $0x0,(%rax)
jne    11c2 <nsvg__getNextPathItem+0xa2>
mov    -0x10(%rbp),%rax
mov    %rax,-0x8(%rbp)
jmp    14d8 <nsvg__getNextPathItem+0x3b8>
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x2d,%eax
je     11f8 <nsvg__getNextPathItem+0xd8>
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x2b,%eax
je     11f8 <nsvg__getNextPathItem+0xd8>
mov    -0x10(%rbp),%rax
movsbl (%rax),%edi
call   1030 <nsvg__isdigit@plt>
cmp    $0x0,%rax
je     14a4 <nsvg__getNextPathItem+0x384>
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x2d,%eax
je     1218 <nsvg__getNextPathItem+0xf8>
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x2b,%eax
jne    1249 <nsvg__getNextPathItem+0x129>
cmpl   $0x3f,-0x1c(%rbp)
jge    123d <nsvg__getNextPathItem+0x11d>
mov    -0x10(%rbp),%rax
mov    (%rax),%dl
mov    -0x18(%rbp),%rax
mov    -0x1c(%rbp),%ecx
mov    %ecx,%esi
add    $0x1,%esi
mov    %esi,-0x1c(%rbp)
movslq %ecx,%rcx
mov    %dl,(%rax,%rcx,1)
mov    -0x10(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x10(%rbp)
jmp    124e <nsvg__getNextPathItem+0x12e>
mov    -0x10(%rbp),%rax
movsbl (%rax),%ecx
xor    %eax,%eax
cmp    $0x0,%ecx
mov    %al,-0x1f(%rbp)
je     1279 <nsvg__getNextPathItem+0x159>
mov    -0x10(%rbp),%rax
movsbl (%rax),%edi
call   1030 <nsvg__isdigit@plt>
cmp    $0x0,%rax
setne  %al
mov    %al,-0x1f(%rbp)
mov    -0x1f(%rbp),%al
test   $0x1,%al
jne    1289 <nsvg__getNextPathItem+0x169>
jmp    12bf <nsvg__getNextPathItem+0x19f>
cmpl   $0x3f,-0x1c(%rbp)
jge    12ae <nsvg__getNextPathItem+0x18e>
mov    -0x10(%rbp),%rax
mov    (%rax),%dl
mov    -0x18(%rbp),%rax
mov    -0x1c(%rbp),%ecx
mov    %ecx,%esi
add    $0x1,%esi
mov    %esi,-0x1c(%rbp)
movslq %ecx,%rcx
mov    %dl,(%rax,%rcx,1)
mov    -0x10(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x10(%rbp)
jmp    124e <nsvg__getNextPathItem+0x12e>
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x2e,%eax
jne    1376 <nsvg__getNextPathItem+0x256>
cmpl   $0x3f,-0x1c(%rbp)
jge    12f4 <nsvg__getNextPathItem+0x1d4>
mov    -0x10(%rbp),%rax
mov    (%rax),%dl
mov    -0x18(%rbp),%rax
mov    -0x1c(%rbp),%ecx
mov    %ecx,%esi
add    $0x1,%esi
mov    %esi,-0x1c(%rbp)
movslq %ecx,%rcx
mov    %dl,(%rax,%rcx,1)
mov    -0x10(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x10(%rbp)
mov    -0x10(%rbp),%rax
movsbl (%rax),%ecx
xor    %eax,%eax
cmp    $0x0,%ecx
mov    %al,-0x20(%rbp)
je     132b <nsvg__getNextPathItem+0x20b>
mov    -0x10(%rbp),%rax
movsbl (%rax),%edi
call   1030 <nsvg__isdigit@plt>
cmp    $0x0,%rax
setne  %al
mov    %al,-0x20(%rbp)
mov    -0x20(%rbp),%al
test   $0x1,%al
jne    133b <nsvg__getNextPathItem+0x21b>
jmp    1371 <nsvg__getNextPathItem+0x251>
cmpl   $0x3f,-0x1c(%rbp)
jge    1360 <nsvg__getNextPathItem+0x240>
mov    -0x10(%rbp),%rax
mov    (%rax),%dl
mov    -0x18(%rbp),%rax
mov    -0x1c(%rbp),%ecx
mov    %ecx,%esi
add    $0x1,%esi
mov    %esi,-0x1c(%rbp)
movslq %ecx,%rcx
mov    %dl,(%rax,%rcx,1)
mov    -0x10(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x10(%rbp)
jmp    1300 <nsvg__getNextPathItem+0x1e0>
jmp    1376 <nsvg__getNextPathItem+0x256>
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x65,%eax
je     1396 <nsvg__getNextPathItem+0x276>
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x45,%eax
jne    1493 <nsvg__getNextPathItem+0x373>
cmpl   $0x3f,-0x1c(%rbp)
jge    13bb <nsvg__getNextPathItem+0x29b>
mov    -0x10(%rbp),%rax
mov    (%rax),%dl
mov    -0x18(%rbp),%rax
mov    -0x1c(%rbp),%ecx
mov    %ecx,%esi
add    $0x1,%esi
mov    %esi,-0x1c(%rbp)
movslq %ecx,%rcx
mov    %dl,(%rax,%rcx,1)
mov    -0x10(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x10(%rbp)
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x2d,%eax
je     13e7 <nsvg__getNextPathItem+0x2c7>
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x2b,%eax
jne    1418 <nsvg__getNextPathItem+0x2f8>
cmpl   $0x3f,-0x1c(%rbp)
jge    140c <nsvg__getNextPathItem+0x2ec>
mov    -0x10(%rbp),%rax
mov    (%rax),%dl
mov    -0x18(%rbp),%rax
mov    -0x1c(%rbp),%ecx
mov    %ecx,%esi
add    $0x1,%esi
mov    %esi,-0x1c(%rbp)
movslq %ecx,%rcx
mov    %dl,(%rax,%rcx,1)
mov    -0x10(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x10(%rbp)
jmp    141d <nsvg__getNextPathItem+0x2fd>
mov    -0x10(%rbp),%rax
movsbl (%rax),%ecx
xor    %eax,%eax
cmp    $0x0,%ecx
mov    %al,-0x21(%rbp)
je     1448 <nsvg__getNextPathItem+0x328>
mov    -0x10(%rbp),%rax
movsbl (%rax),%edi
call   1030 <nsvg__isdigit@plt>
cmp    $0x0,%rax
setne  %al
mov    %al,-0x21(%rbp)
mov    -0x21(%rbp),%al
test   $0x1,%al
jne    1458 <nsvg__getNextPathItem+0x338>
jmp    148e <nsvg__getNextPathItem+0x36e>
cmpl   $0x3f,-0x1c(%rbp)
jge    147d <nsvg__getNextPathItem+0x35d>
mov    -0x10(%rbp),%rax
mov    (%rax),%dl
mov    -0x18(%rbp),%rax
mov    -0x1c(%rbp),%ecx
mov    %ecx,%esi
add    $0x1,%esi
mov    %esi,-0x1c(%rbp)
movslq %ecx,%rcx
mov    %dl,(%rax,%rcx,1)
mov    -0x10(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x10(%rbp)
jmp    141d <nsvg__getNextPathItem+0x2fd>
jmp    1493 <nsvg__getNextPathItem+0x373>
mov    -0x18(%rbp),%rax
movslq -0x1c(%rbp),%rcx
movb   $0x0,(%rax,%rcx,1)
jmp    14d0 <nsvg__getNextPathItem+0x3b0>
mov    -0x10(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x10(%rbp)
mov    (%rax),%cl
mov    -0x18(%rbp),%rax
mov    %cl,(%rax)
mov    -0x18(%rbp),%rax
movb   $0x0,0x1(%rax)
mov    -0x10(%rbp),%rax
mov    %rax,-0x8(%rbp)
jmp    14d8 <nsvg__getNextPathItem+0x3b8>
mov    -0x10(%rbp),%rax
mov    %rax,-0x8(%rbp)
mov    -0x8(%rbp),%rax
add    $0x30,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<nsvg__getNextPathItem>:
push   %rbp
push   %r14
push   %rbx
mov    %rdi,%rbx
movb   $0x0,(%rsi)
mov    (%rdi),%al
test   %al,%al
je     1249 <nsvg__getNextPathItem+0x129>
mov    %rsi,%r14
add    $0x1,%rbx
jmp    114b <nsvg__getNextPathItem+0x2b>
nopl   (%rax)
movzbl (%rbx),%eax
add    $0x1,%rbx
test   %al,%al
je     119b <nsvg__getNextPathItem+0x7b>
movsbl %al,%edi
call   1040 <nsvg__isspace@plt>
test   %rax,%rax
jne    1140 <nsvg__getNextPathItem+0x20>
movzbl -0x1(%rbx),%eax
cmp    $0x2c,%al
je     1140 <nsvg__getNextPathItem+0x20>
test   %al,%al
je     119b <nsvg__getNextPathItem+0x7b>
cmp    $0x2b,%al
je     1180 <nsvg__getNextPathItem+0x60>
cmp    $0x2d,%al
je     1180 <nsvg__getNextPathItem+0x60>
movsbl %al,%edi
call   1030 <nsvg__isdigit@plt>
test   %rax,%rax
je     1257 <nsvg__getNextPathItem+0x137>
mov    -0x1(%rbx),%al
cmp    $0x2b,%al
je     1188 <nsvg__getNextPathItem+0x68>
cmp    $0x2d,%al
jne    11a4 <nsvg__getNextPathItem+0x84>
mov    %al,(%r14)
mov    (%rbx),%al
mov    $0x1,%ebp
test   %al,%al
jne    11b2 <nsvg__getNextPathItem+0x92>
jmp    1241 <nsvg__getNextPathItem+0x121>
add    $0xffffffffffffffff,%rbx
jmp    1249 <nsvg__getNextPathItem+0x129>
add    $0xffffffffffffffff,%rbx
xor    %ebp,%ebp
test   %al,%al
je     1241 <nsvg__getNextPathItem+0x121>
add    $0x1,%rbx
jmp    11cb <nsvg__getNextPathItem+0xab>
nopl   0x0(%rax,%rax,1)
movzbl (%rbx),%eax
add    $0x1,%rbx
test   %al,%al
je     123d <nsvg__getNextPathItem+0x11d>
movsbl %al,%edi
call   1030 <nsvg__isdigit@plt>
test   %rax,%rax
je     11ed <nsvg__getNextPathItem+0xcd>
cmp    $0x3e,%ebp
jg     11c0 <nsvg__getNextPathItem+0xa0>
movzbl -0x1(%rbx),%eax
movslq %ebp,%rcx
add    $0x1,%ebp
mov    %al,(%r14,%rcx,1)
jmp    11c0 <nsvg__getNextPathItem+0xa0>
mov    -0x1(%rbx),%al
cmp    $0x2e,%al
jne    1251 <nsvg__getNextPathItem+0x131>
cmp    $0x3e,%ebp
jg     1204 <nsvg__getNextPathItem+0xe4>
movslq %ebp,%rax
add    $0x1,%ebp
movb   $0x2e,(%r14,%rax,1)
mov    (%rbx),%al
jmp    1218 <nsvg__getNextPathItem+0xf8>
nopl   0x0(%rax,%rax,1)
movzbl 0x1(%rbx),%eax
add    $0x1,%rbx
test   %al,%al
je     1241 <nsvg__getNextPathItem+0x121>
movsbl %al,%edi
call   1030 <nsvg__isdigit@plt>
test   %rax,%rax
je     1264 <nsvg__getNextPathItem+0x144>
cmp    $0x3e,%ebp
jg     1210 <nsvg__getNextPathItem+0xf0>
movzbl (%rbx),%eax
movslq %ebp,%rcx
add    $0x1,%ebp
mov    %al,(%r14,%rcx,1)
jmp    1210 <nsvg__getNextPathItem+0xf0>
add    $0xffffffffffffffff,%rbx
movslq %ebp,%rax
movb   $0x0,(%r14,%rax,1)
mov    %rbx,%rax
pop    %rbx
pop    %r14
pop    %rbp
ret
add    $0xffffffffffffffff,%rbx
jmp    1266 <nsvg__getNextPathItem+0x146>
mov    -0x1(%rbx),%al
mov    %al,(%r14)
mov    $0x1,%eax
jmp    1244 <nsvg__getNextPathItem+0x124>
mov    (%rbx),%al
mov    %eax,%ecx
or     $0x20,%cl
cmp    $0x65,%cl
jne    1241 <nsvg__getNextPathItem+0x121>
cmp    $0x3e,%ebp
jg     127f <nsvg__getNextPathItem+0x15f>
movslq %ebp,%rcx
add    $0x1,%ebp
mov    %al,(%r14,%rcx,1)
mov    0x1(%rbx),%al
cmp    $0x2d,%al
je     128a <nsvg__getNextPathItem+0x16a>
cmp    $0x2b,%al
jne    12a2 <nsvg__getNextPathItem+0x182>
cmp    $0x3e,%ebp
jg     1299 <nsvg__getNextPathItem+0x179>
movslq %ebp,%rcx
add    $0x1,%ebp
mov    %al,(%r14,%rcx,1)
mov    0x2(%rbx),%al
add    $0x2,%rbx
jmp    12b8 <nsvg__getNextPathItem+0x198>
add    $0x1,%rbx
jmp    12b8 <nsvg__getNextPathItem+0x198>
nopl   0x0(%rax,%rax,1)
movzbl 0x1(%rbx),%eax
add    $0x1,%rbx
test   %al,%al
je     1241 <nsvg__getNextPathItem+0x121>
movsbl %al,%edi
call   1030 <nsvg__isdigit@plt>
test   %rax,%rax
je     1241 <nsvg__getNextPathItem+0x121>
cmp    $0x3e,%ebp
jg     12b0 <nsvg__getNextPathItem+0x190>
movzbl (%rbx),%eax
movslq %ebp,%rcx
add    $0x1,%ebp
mov    %al,(%r14,%rcx,1)
jmp    12b0 <nsvg__getNextPathItem+0x190>

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

LLVM IR (-O2):
define i8* @nsvg__getNextPathItem(i8* %0, i8* nocapture writeonly %1) {
store i8 0, i8* %1
%3 = load i8, i8* %0
%4 = icmp eq i8 %3, 0
br i1 %4, label %141, label %5
5: ; preds = %2, %12
%6 = phi i8 [ %14, %12 ], [ %3, %2 ]
%7 = phi i8* [ %13, %12 ], [ %0, %2 ]
%8 = tail call i64 @nsvg__isspace(i8 signext %6)
%9 = icmp eq i64 %8, 0
br i1 %9, label %10, label %12
10: ; preds = %5
%11 = load i8, i8* %7
switch i8 %11, label %16 [
i8 44, label %12
i8 0, label %141
i8 45, label %21
i8 43, label %21
]
12: ; preds = %10, %5
%13 = getelementptr inbounds i8, i8* %7, i64 1
%14 = load i8, i8* %13
%15 = icmp eq i8 %14, 0
br i1 %15, label %141, label %5
16: ; preds = %10
%17 = tail call i64 @nsvg__isdigit(i8 signext %11)
%18 = icmp eq i64 %17, 0
br i1 %18, label %134, label %19
19: ; preds = %16
%20 = load i8, i8* %7
br label %21
21: ; preds = %10, %10, %19
%22 = phi i8 [ %20, %19 ], [ %11, %10 ], [ %11, %10 ]
switch i8 %22, label %26 [
i8 45, label %23
i8 43, label %23
]
23: ; preds = %21, %21
store i8 %22, i8* %1
%24 = getelementptr inbounds i8, i8* %7, i64 1
%25 = load i8, i8* %24
br label %26
26: ; preds = %21, %23
%27 = phi i8 [ %25, %23 ], [ %22, %21 ]
%28 = phi i8* [ %24, %23 ], [ %7, %21 ]
%29 = phi i32 [ 1, %23 ], [ 0, %21 ]
%30 = icmp eq i8 %27, 0
br i1 %30, label %130, label %31
31: ; preds = %26, %44
%32 = phi i8 [ %47, %44 ], [ %27, %26 ]
%33 = phi i32 [ %45, %44 ], [ %29, %26 ]
%34 = phi i8* [ %46, %44 ], [ %28, %26 ]
%35 = tail call i64 @nsvg__isdigit(i8 signext %32)
%36 = icmp eq i64 %35, 0
br i1 %36, label %49, label %37
37: ; preds = %31
%38 = icmp slt i32 %33, 63
br i1 %38, label %39, label %44
39: ; preds = %37
%40 = load i8, i8* %34
%41 = add nsw i32 %33, 1
%42 = sext i32 %33 to i64
%43 = getelementptr inbounds i8, i8* %1, i64 %42
store i8 %40, i8* %43
br label %44
44: ; preds = %39, %37
%45 = phi i32 [ %41, %39 ], [ %33, %37 ]
%46 = getelementptr inbounds i8, i8* %34, i64 1
%47 = load i8, i8* %46
%48 = icmp eq i8 %47, 0
br i1 %48, label %130, label %31
49: ; preds = %31
%50 = load i8, i8* %34
%51 = icmp eq i8 %50, 46
br i1 %51, label %52, label %83
52: ; preds = %49
%53 = icmp slt i32 %33, 63
br i1 %53, label %54, label %58
54: ; preds = %52
%55 = add nsw i32 %33, 1
%56 = sext i32 %33 to i64
%57 = getelementptr inbounds i8, i8* %1, i64 %56
store i8 46, i8* %57
br label %58
58: ; preds = %54, %52
%59 = phi i32 [ %55, %54 ], [ %33, %52 ]
%60 = getelementptr inbounds i8, i8* %34, i64 1
%61 = load i8, i8* %60
%62 = icmp eq i8 %61, 0
br i1 %62, label %130, label %63
63: ; preds = %58, %76
%64 = phi i8 [ %79, %76 ], [ %61, %58 ]
%65 = phi i8* [ %78, %76 ], [ %60, %58 ]
%66 = phi i32 [ %77, %76 ], [ %59, %58 ]
%67 = tail call i64 @nsvg__isdigit(i8 signext %64)
%68 = icmp eq i64 %67, 0
br i1 %68, label %81, label %69
69: ; preds = %63
%70 = icmp slt i32 %66, 63
br i1 %70, label %71, label %76
71: ; preds = %69
%72 = load i8, i8* %65
%73 = add nsw i32 %66, 1
%74 = sext i32 %66 to i64
%75 = getelementptr inbounds i8, i8* %1, i64 %74
store i8 %72, i8* %75
br label %76
76: ; preds = %71, %69
%77 = phi i32 [ %73, %71 ], [ %66, %69 ]
%78 = getelementptr inbounds i8, i8* %65, i64 1
%79 = load i8, i8* %78
%80 = icmp eq i8 %79, 0
br i1 %80, label %130, label %63
81: ; preds = %63
%82 = load i8, i8* %65
br label %83
83: ; preds = %81, %49
%84 = phi i8 [ %82, %81 ], [ %50, %49 ]
%85 = phi i8* [ %65, %81 ], [ %34, %49 ]
%86 = phi i32 [ %66, %81 ], [ %33, %49 ]
switch i8 %84, label %130 [
i8 101, label %87
i8 69, label %87
]
87: ; preds = %83, %83
%88 = icmp slt i32 %86, 63
br i1 %88, label %89, label %93
89: ; preds = %87
%90 = add nsw i32 %86, 1
%91 = sext i32 %86 to i64
%92 = getelementptr inbounds i8, i8* %1, i64 %91
store i8 %84, i8* %92
br label %93
93: ; preds = %89, %87
%94 = phi i32 [ %90, %89 ], [ %86, %87 ]
%95 = getelementptr inbounds i8, i8* %85, i64 1
%96 = load i8, i8* %95
switch i8 %96, label %107 [
i8 45, label %97
i8 43, label %97
]
97: ; preds = %93, %93
%98 = icmp slt i32 %94, 63
br i1 %98, label %99, label %103
99: ; preds = %97
%100 = add nsw i32 %94, 1
%101 = sext i32 %94 to i64
%102 = getelementptr inbounds i8, i8* %1, i64 %101
store i8 %96, i8* %102
br label %103
103: ; preds = %99, %97
%104 = phi i32 [ %100, %99 ], [ %94, %97 ]
%105 = getelementptr inbounds i8, i8* %85, i64 2
%106 = load i8, i8* %105
br label %107
107: ; preds = %93, %103
%108 = phi i8 [ %106, %103 ], [ %96, %93 ]
%109 = phi i8* [ %105, %103 ], [ %95, %93 ]
%110 = phi i32 [ %104, %103 ], [ %94, %93 ]
%111 = icmp eq i8 %108, 0
br i1 %111, label %130, label %112
112: ; preds = %107, %125
%113 = phi i8 [ %128, %125 ], [ %108, %107 ]
%114 = phi i32 [ %126, %125 ], [ %110, %107 ]
%115 = phi i8* [ %127, %125 ], [ %109, %107 ]
%116 = tail call i64 @nsvg__isdigit(i8 signext %113)
%117 = icmp eq i64 %116, 0
br i1 %117, label %130, label %118
118: ; preds = %112
%119 = icmp slt i32 %114, 63
br i1 %119, label %120, label %125
120: ; preds = %118
%121 = load i8, i8* %115
%122 = add nsw i32 %114, 1
%123 = sext i32 %114 to i64
%124 = getelementptr inbounds i8, i8* %1, i64 %123
store i8 %121, i8* %124
br label %125
125: ; preds = %120, %118
%126 = phi i32 [ %122, %120 ], [ %114, %118 ]
%127 = getelementptr inbounds i8, i8* %115, i64 1
%128 = load i8, i8* %127
%129 = icmp eq i8 %128, 0
br i1 %129, label %130, label %112
130: ; preds = %44, %76, %125, %112, %26, %58, %107, %83
%131 = phi i8* [ %85, %83 ], [ %109, %107 ], [ %60, %58 ], [ %28, %26 ], [ %127, %125 ], [ %115, %112 ], [ %78, %76 ], [ %46, %44 ]
%132 = phi i32 [ %86, %83 ], [ %110, %107 ], [ %59, %58 ], [ %29, %26 ], [ %126, %125 ], [ %114, %112 ], [ %77, %76 ], [ %45, %44 ]
%133 = sext i32 %132 to i64
br label %137
134: ; preds = %16
%135 = getelementptr inbounds i8, i8* %7, i64 1
%136 = load i8, i8* %7
store i8 %136, i8* %1
br label %137
137: ; preds = %134, %130
%138 = phi i64 [ %133, %130 ], [ 1, %134 ]
%139 = phi i8* [ %131, %130 ], [ %135, %134 ]
%140 = getelementptr inbounds i8, i8* %1, i64 %138
store i8 0, i8* %140
br label %141
141: ; preds = %12, %10, %137, %2
%142 = phi i8* [ %0, %2 ], [ %139, %137 ], [ %13, %12 ], [ %7, %10 ]
ret i8* %142
}