#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__ isxdigit(char);
char *strchr(char *, char);
char strtol(char *, int /*<<< orphan*/ *, int);
int conf_c_to_string(char *text) {
  char *r;
  char *w;
  char *p;
  char nr[4];
  r = text;
  w = text;
  while (*r) {
    if (*r == '\\') {
      if ((p = strchr("ntvbrfa\\?'\"", *(r + 1))) != NULL) {
        *w = "\n\t\v\b\r\f\a\\\?\'\""[p - "ntvbrfa\\?'\""];
        w++;
        r += 2;
      } else if (*(r + 1) == 'x') {
        if (isxdigit(r[2]) && isxdigit(r[3])) {
          nr[0] = r[2];
          nr[1] = r[3];
          nr[2] = '\0';
          *w = (char)strtol(nr, NULL, 16);
          w++;
          r += 4;
        } else {
          goto error;
        }
      } else if (r[1] >= '0' && r[1] <= '7') {
        nr[0] = r[1];
        if (r[2] >= '0' && r[2] <= '7') {
          nr[1] = r[2];
          if (r[3] >= '0' && r[3] <= '7') {
            nr[2] = r[3];
            nr[3] = '\0';
            r += 4;
          } else {
            nr[2] = '\0';
            r += 3;
          }
        } else {
          r += 2;
          nr[1] = '\0';
        }
        *w = strtol(nr, NULL, 8);
        w++;
      } else {
        goto error;
      }
    } else {
      *w = *r;
      w++;
      r++;
    }
  }
  *w = '\0';
  return 0;
error:
  return -1;
}


x86 assembly (clang, -O0):
<conf_c_to_string>:
push   %rbp
mov    %rsp,%rbp
sub    $0x30,%rsp
mov    %rdi,-0x10(%rbp)
mov    -0x10(%rbp),%rax
mov    %rax,-0x18(%rbp)
mov    -0x10(%rbp),%rax
mov    %rax,-0x20(%rbp)
mov    -0x18(%rbp),%rax
cmpb   $0x0,(%rax)
je     1384 <conf_c_to_string+0x254>
mov    -0x18(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x5c,%eax
jne    135b <conf_c_to_string+0x22b>
mov    -0x18(%rbp),%rax
lea    0xe8c(%rip),%rdi
movsbl 0x1(%rax),%esi
call   1030 <strchr@plt>
mov    %rax,-0x28(%rbp)
cmp    $0x0,%rax
je     11c6 <conf_c_to_string+0x96>
mov    -0x28(%rbp),%rcx
lea    0xe6a(%rip),%rax
sub    %rax,%rcx
lea    0xe6c(%rip),%rax
mov    (%rax,%rcx,1),%cl
mov    -0x20(%rbp),%rax
mov    %cl,(%rax)
mov    -0x20(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x20(%rbp)
mov    -0x18(%rbp),%rax
add    $0x2,%rax
mov    %rax,-0x18(%rbp)
jmp    1356 <conf_c_to_string+0x226>
mov    -0x18(%rbp),%rax
movsbl 0x1(%rax),%eax
cmp    $0x78,%eax
jne    125e <conf_c_to_string+0x12e>
mov    -0x18(%rbp),%rax
movsbl 0x2(%rax),%edi
call   1050 <isxdigit@plt>
cmp    $0x0,%rax
je     1254 <conf_c_to_string+0x124>
mov    -0x18(%rbp),%rax
movsbl 0x3(%rax),%edi
call   1050 <isxdigit@plt>
cmp    $0x0,%rax
je     1254 <conf_c_to_string+0x124>
mov    -0x18(%rbp),%rax
mov    0x2(%rax),%al
mov    %al,-0x2c(%rbp)
mov    -0x18(%rbp),%rax
mov    0x3(%rax),%al
mov    %al,-0x2b(%rbp)
movb   $0x0,-0x2a(%rbp)
lea    -0x2c(%rbp),%rdi
xor    %eax,%eax
mov    %eax,%esi
mov    $0x10,%edx
call   1040 <strtol@plt>
mov    %al,%cl
mov    -0x20(%rbp),%rax
mov    %cl,(%rax)
mov    -0x20(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x20(%rbp)
mov    -0x18(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0x18(%rbp)
jmp    1259 <conf_c_to_string+0x129>
jmp    1397 <conf_c_to_string+0x267>
jmp    1351 <conf_c_to_string+0x221>
mov    -0x18(%rbp),%rax
movsbl 0x1(%rax),%eax
cmp    $0x30,%eax
jl     1347 <conf_c_to_string+0x217>
mov    -0x18(%rbp),%rax
movsbl 0x1(%rax),%eax
cmp    $0x37,%eax
jg     1347 <conf_c_to_string+0x217>
mov    -0x18(%rbp),%rax
mov    0x1(%rax),%al
mov    %al,-0x2c(%rbp)
mov    -0x18(%rbp),%rax
movsbl 0x2(%rax),%eax
cmp    $0x30,%eax
jl     130c <conf_c_to_string+0x1dc>
mov    -0x18(%rbp),%rax
movsbl 0x2(%rax),%eax
cmp    $0x37,%eax
jg     130c <conf_c_to_string+0x1dc>
mov    -0x18(%rbp),%rax
mov    0x2(%rax),%al
mov    %al,-0x2b(%rbp)
mov    -0x18(%rbp),%rax
movsbl 0x3(%rax),%eax
cmp    $0x30,%eax
jl     12f7 <conf_c_to_string+0x1c7>
mov    -0x18(%rbp),%rax
movsbl 0x3(%rax),%eax
cmp    $0x37,%eax
jg     12f7 <conf_c_to_string+0x1c7>
mov    -0x18(%rbp),%rax
mov    0x3(%rax),%al
mov    %al,-0x2a(%rbp)
movb   $0x0,-0x29(%rbp)
mov    -0x18(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0x18(%rbp)
jmp    1307 <conf_c_to_string+0x1d7>
movb   $0x0,-0x2a(%rbp)
mov    -0x18(%rbp),%rax
add    $0x3,%rax
mov    %rax,-0x18(%rbp)
jmp    131c <conf_c_to_string+0x1ec>
mov    -0x18(%rbp),%rax
add    $0x2,%rax
mov    %rax,-0x18(%rbp)
movb   $0x0,-0x2b(%rbp)
lea    -0x2c(%rbp),%rdi
xor    %eax,%eax
mov    %eax,%esi
mov    $0x8,%edx
call   1040 <strtol@plt>
mov    %al,%cl
mov    -0x20(%rbp),%rax
mov    %cl,(%rax)
mov    -0x20(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x20(%rbp)
jmp    134c <conf_c_to_string+0x21c>
jmp    1397 <conf_c_to_string+0x267>
jmp    1351 <conf_c_to_string+0x221>
jmp    1356 <conf_c_to_string+0x226>
jmp    137f <conf_c_to_string+0x24f>
mov    -0x18(%rbp),%rax
mov    (%rax),%cl
mov    -0x20(%rbp),%rax
mov    %cl,(%rax)
mov    -0x20(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x20(%rbp)
mov    -0x18(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x18(%rbp)
jmp    114c <conf_c_to_string+0x1c>
mov    -0x20(%rbp),%rax
movb   $0x0,(%rax)
movl   $0x0,-0x4(%rbp)
jmp    139e <conf_c_to_string+0x26e>
movl   $0xffffffff,-0x4(%rbp)
mov    -0x4(%rbp),%eax
add    $0x30,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<conf_c_to_string>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
push   %rax
mov    %rdi,%rbp
lea    0xebb(%rip),%r14
lea    0x4(%rsp),%r13
lea    0xebb(%rip),%r12
mov    %rdi,%r15
jmp    1187 <conf_c_to_string+0x57>
cs nopw 0x0(%rax,%rax,1)
movzbl 0x1(%rbp),%ebx
movsbl %bl,%esi
mov    %r14,%rdi
call   1030 <strchr@plt>
test   %rax,%rax
je     11a4 <conf_c_to_string+0x74>
sub    %r14,%rax
movzbl (%rax,%r12,1),%eax
mov    %al,(%r15)
add    $0x2,%rbp
add    $0x1,%r15
movzbl 0x0(%rbp),%eax
cmp    $0x5c,%al
je     1160 <conf_c_to_string+0x30>
test   %al,%al
je     1277 <conf_c_to_string+0x147>
mov    %al,(%r15)
add    $0x1,%rbp
add    $0x1,%r15
jmp    1187 <conf_c_to_string+0x57>
cmp    $0x78,%bl
jne    120d <conf_c_to_string+0xdd>
mov    %r13,%rbx
movsbl 0x2(%rbp),%edi
call   1050 <isxdigit@plt>
mov    $0xffffffff,%r13d
test   %rax,%rax
je     127e <conf_c_to_string+0x14e>
movsbl 0x3(%rbp),%edi
call   1050 <isxdigit@plt>
test   %rax,%rax
je     127e <conf_c_to_string+0x14e>
movzbl 0x2(%rbp),%eax
mov    %al,0x4(%rsp)
movzbl 0x3(%rbp),%eax
mov    %al,0x5(%rsp)
movb   $0x0,0x6(%rsp)
mov    %rbx,%r13
mov    %rbx,%rdi
xor    %esi,%esi
mov    $0x10,%edx
call   1040 <strtol@plt>
mov    %al,(%r15)
add    $0x4,%rbp
add    $0x1,%r15
jmp    1187 <conf_c_to_string+0x57>
mov    %ebx,%eax
and    $0xf8,%al
cmp    $0x30,%al
jne    1290 <conf_c_to_string+0x160>
mov    %bl,0x4(%rsp)
movzbl 0x2(%rbp),%eax
mov    %eax,%ecx
and    $0xf8,%cl
cmp    $0x30,%cl
jne    1248 <conf_c_to_string+0x118>
mov    %al,0x5(%rsp)
movzbl 0x3(%rbp),%eax
mov    %eax,%ecx
and    $0xf8,%cl
cmp    $0x30,%cl
jne    1253 <conf_c_to_string+0x123>
mov    %al,0x6(%rsp)
movb   $0x0,0x7(%rsp)
add    $0x4,%rbp
jmp    125c <conf_c_to_string+0x12c>
add    $0x2,%rbp
movb   $0x0,0x5(%rsp)
jmp    125c <conf_c_to_string+0x12c>
add    $0x3,%rbp
movb   $0x0,0x6(%rsp)
mov    %r13,%rdi
xor    %esi,%esi
mov    $0x8,%edx
call   1040 <strtol@plt>
mov    %al,(%r15)
add    $0x1,%r15
jmp    1187 <conf_c_to_string+0x57>
movb   $0x0,(%r15)
xor    %r13d,%r13d
mov    %r13d,%eax
add    $0x8,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret
mov    $0xffffffff,%r13d
jmp    127e <conf_c_to_string+0x14e>

LLVM IR (-O0):
@.str = [12 x i8] c"ntvbrfa\\?'\22\00"
@.str.1 = [12 x i8] c"\0A\09\0B\08\0D\0C\07\\?'\22\00"
define i32 @conf_c_to_string(i8* %0) {
%2 = alloca i32
%3 = alloca i8*
%4 = alloca i8*
%5 = alloca i8*
%6 = alloca i8*
%7 = alloca [4 x i8]
store i8* %0, i8** %3
%8 = load i8*, i8** %3
store i8* %8, i8** %4
%9 = load i8*, i8** %3
store i8* %9, i8** %5
br label %10
10: ; preds = %152, %1
%11 = load i8*, i8** %4
%12 = load i8, i8* %11
%13 = icmp ne i8 %12, 0
br i1 %13, label %14, label %153
14: ; preds = %10
%15 = load i8*, i8** %4
%16 = load i8, i8* %15
%17 = sext i8 %16 to i32
%18 = icmp eq i32 %17, 92
br i1 %18, label %19, label %144
19: ; preds = %14
%20 = load i8*, i8** %4
%21 = getelementptr inbounds i8, i8* %20, i64 1
%22 = load i8, i8* %21
%23 = call i8* @strchr(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str, i64 0, i64 0), i8 signext %22)
store i8* %23, i8** %6
%24 = icmp ne i8* %23, null
br i1 %24, label %25, label %36
25: ; preds = %19
%26 = load i8*, i8** %6
%27 = ptrtoint i8* %26 to i64
%28 = sub i64 %27, ptrtoint ([12 x i8]* @.str to i64)
%29 = getelementptr inbounds [12 x i8], [12 x i8]* @.str.1, i64 0, i64 %28
%30 = load i8, i8* %29
%31 = load i8*, i8** %5
store i8 %30, i8* %31
%32 = load i8*, i8** %5
%33 = getelementptr inbounds i8, i8* %32, i32 1
store i8* %33, i8** %5
%34 = load i8*, i8** %4
%35 = getelementptr inbounds i8, i8* %34, i64 2
store i8* %35, i8** %4
br label %143
36: ; preds = %19
%37 = load i8*, i8** %4
%38 = getelementptr inbounds i8, i8* %37, i64 1
%39 = load i8, i8* %38
%40 = sext i8 %39 to i32
%41 = icmp eq i32 %40, 120
br i1 %41, label %42, label %73
42: ; preds = %36
%43 = load i8*, i8** %4
%44 = getelementptr inbounds i8, i8* %43, i64 2
%45 = load i8, i8* %44
%46 = call i64 @isxdigit(i8 signext %45)
%47 = icmp ne i64 %46, 0
br i1 %47, label %48, label %71
48: ; preds = %42
%49 = load i8*, i8** %4
%50 = getelementptr inbounds i8, i8* %49, i64 3
%51 = load i8, i8* %50
%52 = call i64 @isxdigit(i8 signext %51)
%53 = icmp ne i64 %52, 0
br i1 %53, label %54, label %71
54: ; preds = %48
%55 = load i8*, i8** %4
%56 = getelementptr inbounds i8, i8* %55, i64 2
%57 = load i8, i8* %56
%58 = getelementptr inbounds [4 x i8], [4 x i8]* %7, i64 0, i64 0
store i8 %57, i8* %58
%59 = load i8*, i8** %4
%60 = getelementptr inbounds i8, i8* %59, i64 3
%61 = load i8, i8* %60
%62 = getelementptr inbounds [4 x i8], [4 x i8]* %7, i64 0, i64 1
store i8 %61, i8* %62
%63 = getelementptr inbounds [4 x i8], [4 x i8]* %7, i64 0, i64 2
store i8 0, i8* %63
%64 = getelementptr inbounds [4 x i8], [4 x i8]* %7, i64 0, i64 0
%65 = call signext i8 @strtol(i8* %64, i32* null, i32 16)
%66 = load i8*, i8** %5
store i8 %65, i8* %66
%67 = load i8*, i8** %5
%68 = getelementptr inbounds i8, i8* %67, i32 1
store i8* %68, i8** %5
%69 = load i8*, i8** %4
%70 = getelementptr inbounds i8, i8* %69, i64 4
store i8* %70, i8** %4
br label %72
71: ; preds = %48, %42
br label %155
72: ; preds = %54
br label %142
73: ; preds = %36
%74 = load i8*, i8** %4
%75 = getelementptr inbounds i8, i8* %74, i64 1
%76 = load i8, i8* %75
%77 = sext i8 %76 to i32
%78 = icmp sge i32 %77, 48
br i1 %78, label %79, label %140
79: ; preds = %73
%80 = load i8*, i8** %4
%81 = getelementptr inbounds i8, i8* %80, i64 1
%82 = load i8, i8* %81
%83 = sext i8 %82 to i32
%84 = icmp sle i32 %83, 55
br i1 %84, label %85, label %140
85: ; preds = %79
%86 = load i8*, i8** %4
%87 = getelementptr inbounds i8, i8* %86, i64 1
%88 = load i8, i8* %87
%89 = getelementptr inbounds [4 x i8], [4 x i8]* %7, i64 0, i64 0
store i8 %88, i8* %89
%90 = load i8*, i8** %4
%91 = getelementptr inbounds i8, i8* %90, i64 2
%92 = load i8, i8* %91
%93 = sext i8 %92 to i32
%94 = icmp sge i32 %93, 48
br i1 %94, label %95, label %130
95: ; preds = %85
%96 = load i8*, i8** %4
%97 = getelementptr inbounds i8, i8* %96, i64 2
%98 = load i8, i8* %97
%99 = sext i8 %98 to i32
%100 = icmp sle i32 %99, 55
br i1 %100, label %101, label %130
101: ; preds = %95
%102 = load i8*, i8** %4
%103 = getelementptr inbounds i8, i8* %102, i64 2
%104 = load i8, i8* %103
%105 = getelementptr inbounds [4 x i8], [4 x i8]* %7, i64 0, i64 1
store i8 %104, i8* %105
%106 = load i8*, i8** %4
%107 = getelementptr inbounds i8, i8* %106, i64 3
%108 = load i8, i8* %107
%109 = sext i8 %108 to i32
%110 = icmp sge i32 %109, 48
br i1 %110, label %111, label %125
111: ; preds = %101
%112 = load i8*, i8** %4
%113 = getelementptr inbounds i8, i8* %112, i64 3
%114 = load i8, i8* %113
%115 = sext i8 %114 to i32
%116 = icmp sle i32 %115, 55
br i1 %116, label %117, label %125
117: ; preds = %111
%118 = load i8*, i8** %4
%119 = getelementptr inbounds i8, i8* %118, i64 3
%120 = load i8, i8* %119
%121 = getelementptr inbounds [4 x i8], [4 x i8]* %7, i64 0, i64 2
store i8 %120, i8* %121
%122 = getelementptr inbounds [4 x i8], [4 x i8]* %7, i64 0, i64 3
store i8 0, i8* %122
%123 = load i8*, i8** %4
%124 = getelementptr inbounds i8, i8* %123, i64 4
store i8* %124, i8** %4
br label %129
125: ; preds = %111, %101
%126 = getelementptr inbounds [4 x i8], [4 x i8]* %7, i64 0, i64 2
store i8 0, i8* %126
%127 = load i8*, i8** %4
%128 = getelementptr inbounds i8, i8* %127, i64 3
store i8* %128, i8** %4
br label %129
129: ; preds = %125, %117
br label %134
130: ; preds = %95, %85
%131 = load i8*, i8** %4
%132 = getelementptr inbounds i8, i8* %131, i64 2
store i8* %132, i8** %4
%133 = getelementptr inbounds [4 x i8], [4 x i8]* %7, i64 0, i64 1
store i8 0, i8* %133
br label %134
134: ; preds = %130, %129
%135 = getelementptr inbounds [4 x i8], [4 x i8]* %7, i64 0, i64 0
%136 = call signext i8 @strtol(i8* %135, i32* null, i32 8)
%137 = load i8*, i8** %5
store i8 %136, i8* %137
%138 = load i8*, i8** %5
%139 = getelementptr inbounds i8, i8* %138, i32 1
store i8* %139, i8** %5
br label %141
140: ; preds = %79, %73
br label %155
141: ; preds = %134
br label %142
142: ; preds = %141, %72
br label %143
143: ; preds = %142, %25
br label %152
144: ; preds = %14
%145 = load i8*, i8** %4
%146 = load i8, i8* %145
%147 = load i8*, i8** %5
store i8 %146, i8* %147
%148 = load i8*, i8** %5
%149 = getelementptr inbounds i8, i8* %148, i32 1
store i8* %149, i8** %5
%150 = load i8*, i8** %4
%151 = getelementptr inbounds i8, i8* %150, i32 1
store i8* %151, i8** %4
br label %152
152: ; preds = %144, %143
br label %10
153: ; preds = %10
%154 = load i8*, i8** %5
store i8 0, i8* %154
store i32 0, i32* %2
br label %156
155: ; preds = %140, %71
store i32 -1, i32* %2
br label %156
156: ; preds = %155, %153
%157 = load i32, i32* %2
ret i32 %157
}

LLVM IR (-O2):
@.str = [12 x i8] c"ntvbrfa\\?'\22\00"
@.str.1 = [12 x i8] c"\0A\09\0B\08\0D\0C\07\\?'\22\00"
define i32 @conf_c_to_string(i8* nocapture %0) {
%2 = alloca [4 x i8]
%3 = getelementptr inbounds [4 x i8], [4 x i8]* %2, i64 0, i64 0
%4 = getelementptr inbounds [4 x i8], [4 x i8]* %2, i64 0, i64 1
%5 = getelementptr inbounds [4 x i8], [4 x i8]* %2, i64 0, i64 2
%6 = getelementptr inbounds [4 x i8], [4 x i8]* %2, i64 0, i64 3
br label %7
7: ; preds = %61, %1
%8 = phi i8* [ %0, %1 ], [ %62, %61 ]
%9 = phi i8* [ %0, %1 ], [ %63, %61 ]
%10 = load i8, i8* %8
switch i8 %10, label %59 [
i8 0, label %64
i8 92, label %11
]
11: ; preds = %7
%12 = getelementptr inbounds i8, i8* %8, i64 1
%13 = load i8, i8* %12
%14 = tail call i8* @strchr(i8* dereferenceable(12) getelementptr inbounds ([12 x i8], [12 x i8]* @.str, i64 0, i64 0), i8 signext %13)
%15 = icmp eq i8* %14, null
br i1 %15, label %22, label %16
16: ; preds = %11
%17 = ptrtoint i8* %14 to i64
%18 = sub i64 %17, ptrtoint ([12 x i8]* @.str to i64)
%19 = getelementptr inbounds [12 x i8], [12 x i8]* @.str.1, i64 0, i64 %18
%20 = load i8, i8* %19
store i8 %20, i8* %9
%21 = getelementptr inbounds i8, i8* %8, i64 2
br label %61
22: ; preds = %11
%23 = icmp eq i8 %13, 120
br i1 %23, label %24, label %39
24: ; preds = %22
%25 = getelementptr inbounds i8, i8* %8, i64 2
%26 = load i8, i8* %25
%27 = tail call i64 @isxdigit(i8 signext %26)
%28 = icmp eq i64 %27, 0
br i1 %28, label %65, label %29
29: ; preds = %24
%30 = getelementptr inbounds i8, i8* %8, i64 3
%31 = load i8, i8* %30
%32 = tail call i64 @isxdigit(i8 signext %31)
%33 = icmp eq i64 %32, 0
br i1 %33, label %65, label %34
34: ; preds = %29
%35 = load i8, i8* %25
store i8 %35, i8* %3
%36 = load i8, i8* %30
store i8 %36, i8* %4
store i8 0, i8* %5
%37 = call signext i8 @strtol(i8* nocapture %3, i32* null, i32 16)
store i8 %37, i8* %9
%38 = getelementptr inbounds i8, i8* %8, i64 4
br label %61
39: ; preds = %22
%40 = and i8 %13, -8
%41 = icmp eq i8 %40, 48
br i1 %41, label %42, label %65
42: ; preds = %39
store i8 %13, i8* %3
%43 = getelementptr inbounds i8, i8* %8, i64 2
%44 = load i8, i8* %43
%45 = and i8 %44, -8
%46 = icmp eq i8 %45, 48
br i1 %46, label %47, label %55
47: ; preds = %42
store i8 %44, i8* %4
%48 = getelementptr inbounds i8, i8* %8, i64 3
%49 = load i8, i8* %48
%50 = and i8 %49, -8
%51 = icmp eq i8 %50, 48
br i1 %51, label %52, label %54
52: ; preds = %47
store i8 %49, i8* %5
store i8 0, i8* %6
%53 = getelementptr inbounds i8, i8* %8, i64 4
br label %56
54: ; preds = %47
store i8 0, i8* %5
br label %56
55: ; preds = %42
store i8 0, i8* %4
br label %56
56: ; preds = %52, %54, %55
%57 = phi i8* [ %53, %52 ], [ %48, %54 ], [ %43, %55 ]
%58 = call signext i8 @strtol(i8* nocapture %3, i32* null, i32 8)
store i8 %58, i8* %9
br label %61
59: ; preds = %7
store i8 %10, i8* %9
%60 = getelementptr inbounds i8, i8* %8, i64 1
br label %61
61: ; preds = %16, %56, %34, %59
%62 = phi i8* [ %21, %16 ], [ %38, %34 ], [ %57, %56 ], [ %60, %59 ]
%63 = getelementptr inbounds i8, i8* %9, i64 1
br label %7
64: ; preds = %7
store i8 0, i8* %9
br label %65
65: ; preds = %29, %24, %39, %64
%66 = phi i32 [ 0, %64 ], [ -1, %39 ], [ -1, %24 ], [ -1, %29 ]
ret i32 %66
}