#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 */
int /*<<< orphan*/ snprintf(char *, int, char *, int);
int /*<<< orphan*/ strlen(char *);
char *tgoto(const char *cap, int col, int row) {
  static char dst_str[100];
  char *dst = dst_str;
  char ch;
  int values[2];
  int position;
  int tmp;
  values[0] = row;
  values[1] = col;
  position = 0;
  while (*cap) {
    ch = *cap;
    cap++;
    if (ch == '%') {
      ch = *cap;
      cap++;
      if (ch == '%') {
        *dst = '%';
        dst++;
      } else if (ch == 'd') {
        snprintf(dst, 100, "%d", values[position]);
        dst += strlen(dst);
        position++;
      } else if (ch == '2') {
        snprintf(dst, 100, "%02d", values[position]);
        dst += strlen(dst);
        position++;
      } else if (ch == '3') {
        snprintf(dst, 100, "%03d", values[position]);
        dst += strlen(dst);
        position++;
      } else if (ch == '.') {
        snprintf(dst, 100, "%c", values[position]);
        dst += strlen(dst);
        position++;
      } else if (ch == 'r') {
        tmp = values[0];
        values[0] = values[1];
        values[1] = tmp;
      } else if (ch == 'i') {
        values[0]++;
        values[1]++;
      }
    } else {
      *dst = ch;
      dst++;
    }
  }
  *dst = 0;
  return dst_str;
}


x86 assembly (clang, -O0):
<tgoto>:
push   %rbp
mov    %rsp,%rbp
sub    $0x30,%rsp
mov    %rdi,-0x8(%rbp)
mov    %esi,-0xc(%rbp)
mov    %edx,-0x10(%rbp)
lea    0x2f07(%rip),%rax
mov    %rax,-0x18(%rbp)
mov    -0x10(%rbp),%eax
mov    %eax,-0x24(%rbp)
mov    -0xc(%rbp),%eax
mov    %eax,-0x20(%rbp)
movl   $0x0,-0x28(%rbp)
mov    -0x8(%rbp),%rax
cmpb   $0x0,(%rax)
je     137d <tgoto+0x25d>
mov    -0x8(%rbp),%rax
mov    (%rax),%al
mov    %al,-0x19(%rbp)
mov    -0x8(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x8(%rbp)
movsbl -0x19(%rbp),%eax
cmp    $0x25,%eax
jne    1363 <tgoto+0x243>
mov    -0x8(%rbp),%rax
mov    (%rax),%al
mov    %al,-0x19(%rbp)
mov    -0x8(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x8(%rbp)
movsbl -0x19(%rbp),%eax
cmp    $0x25,%eax
jne    11b9 <tgoto+0x99>
mov    -0x18(%rbp),%rax
movb   $0x25,(%rax)
mov    -0x18(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x18(%rbp)
jmp    135e <tgoto+0x23e>
movsbl -0x19(%rbp),%eax
cmp    $0x64,%eax
jne    120a <tgoto+0xea>
mov    -0x18(%rbp),%rdi
movslq -0x28(%rbp),%rax
mov    -0x24(%rbp,%rax,4),%ecx
mov    $0x64,%esi
lea    0xe22(%rip),%rdx
call   1040 <snprintf@plt>
mov    -0x18(%rbp),%rdi
call   1030 <strlen@plt>
mov    %eax,%ecx
mov    -0x18(%rbp),%rax
movslq %ecx,%rcx
add    %rcx,%rax
mov    %rax,-0x18(%rbp)
mov    -0x28(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x28(%rbp)
jmp    1359 <tgoto+0x239>
movsbl -0x19(%rbp),%eax
cmp    $0x32,%eax
jne    125b <tgoto+0x13b>
mov    -0x18(%rbp),%rdi
movslq -0x28(%rbp),%rax
mov    -0x24(%rbp,%rax,4),%ecx
mov    $0x64,%esi
lea    0xdd4(%rip),%rdx
call   1040 <snprintf@plt>
mov    -0x18(%rbp),%rdi
call   1030 <strlen@plt>
mov    %eax,%ecx
mov    -0x18(%rbp),%rax
movslq %ecx,%rcx
add    %rcx,%rax
mov    %rax,-0x18(%rbp)
mov    -0x28(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x28(%rbp)
jmp    1354 <tgoto+0x234>
movsbl -0x19(%rbp),%eax
cmp    $0x33,%eax
jne    12ac <tgoto+0x18c>
mov    -0x18(%rbp),%rdi
movslq -0x28(%rbp),%rax
mov    -0x24(%rbp,%rax,4),%ecx
mov    $0x64,%esi
lea    0xd88(%rip),%rdx
call   1040 <snprintf@plt>
mov    -0x18(%rbp),%rdi
call   1030 <strlen@plt>
mov    %eax,%ecx
mov    -0x18(%rbp),%rax
movslq %ecx,%rcx
add    %rcx,%rax
mov    %rax,-0x18(%rbp)
mov    -0x28(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x28(%rbp)
jmp    134f <tgoto+0x22f>
movsbl -0x19(%rbp),%eax
cmp    $0x2e,%eax
jne    12fd <tgoto+0x1dd>
mov    -0x18(%rbp),%rdi
movslq -0x28(%rbp),%rax
mov    -0x24(%rbp,%rax,4),%ecx
mov    $0x64,%esi
lea    0xd3c(%rip),%rdx
call   1040 <snprintf@plt>
mov    -0x18(%rbp),%rdi
call   1030 <strlen@plt>
mov    %eax,%ecx
mov    -0x18(%rbp),%rax
movslq %ecx,%rcx
add    %rcx,%rax
mov    %rax,-0x18(%rbp)
mov    -0x28(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x28(%rbp)
jmp    134a <tgoto+0x22a>
movsbl -0x19(%rbp),%eax
cmp    $0x72,%eax
jne    1321 <tgoto+0x201>
mov    -0x24(%rbp),%eax
mov    %eax,-0x2c(%rbp)
mov    -0x20(%rbp),%eax
mov    %eax,-0x24(%rbp)
mov    -0x2c(%rbp),%eax
mov    %eax,-0x20(%rbp)
jmp    1345 <tgoto+0x225>
movsbl -0x19(%rbp),%eax
cmp    $0x69,%eax
jne    1340 <tgoto+0x220>
mov    -0x24(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x24(%rbp)
mov    -0x20(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x20(%rbp)
jmp    1345 <tgoto+0x225>
jmp    134a <tgoto+0x22a>
jmp    134f <tgoto+0x22f>
jmp    1354 <tgoto+0x234>
jmp    1359 <tgoto+0x239>
jmp    135e <tgoto+0x23e>
jmp    1378 <tgoto+0x258>
mov    -0x19(%rbp),%cl
mov    -0x18(%rbp),%rax
mov    %cl,(%rax)
mov    -0x18(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x18(%rbp)
jmp    1150 <tgoto+0x30>
mov    -0x18(%rbp),%rax
movb   $0x0,(%rax)
lea    0x2cb5(%rip),%rax
add    $0x30,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<tgoto>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
push   %rax
mov    %edx,(%rsp)
mov    %esi,0x4(%rsp)
mov    (%rdi),%al
test   %al,%al
je     1237 <tgoto+0x117>
mov    %rdi,%rbx
lea    0x2efa(%rip),%r14
xor    %r15d,%r15d
lea    0xeb0(%rip),%r12
lea    0xeed(%rip),%r13
lea    0xede(%rip),%rbp
jmp    1197 <tgoto+0x77>
movslq %r15d,%r15
mov    (%rsp,%r15,4),%ecx
mov    %r14,%rdi
mov    $0x64,%esi
lea    0xed3(%rip),%rdx
call   1040 <snprintf@plt>
mov    %r14,%rdi
call   1030 <strlen@plt>
cltq
add    %rax,%r14
add    $0x1,%r15d
movzbl (%rbx),%eax
test   %al,%al
je     123e <tgoto+0x11e>
cmp    $0x25,%al
jne    11c0 <tgoto+0xa0>
movzbl 0x1(%rbx),%eax
add    $0x2,%rbx
cmp    $0x63,%al
jg     11d0 <tgoto+0xb0>
add    $0xdb,%al
cmp    $0xe,%al
ja     118c <tgoto+0x6c>
movzbl %al,%eax
movslq (%r12,%rax,4),%rax
add    %r12,%rax
jmp    *%rax
movb   $0x25,(%r14)
jmp    11c7 <tgoto+0xa7>
nop
add    $0x1,%rbx
mov    %al,(%r14)
add    $0x1,%r14
jmp    118c <tgoto+0x6c>
nopl   (%rax)
cmp    $0x64,%al
je     1213 <tgoto+0xf3>
cmp    $0x69,%al
je     1229 <tgoto+0x109>
cmp    $0x72,%al
jne    118c <tgoto+0x6c>
rolq   $0x20,(%rsp)
jmp    118c <tgoto+0x6c>
movslq %r15d,%rax
mov    (%rsp,%rax,4),%ecx
mov    %r14,%rdi
mov    $0x64,%esi
lea    0xe47(%rip),%rdx
jmp    1176 <tgoto+0x56>
movslq %r15d,%rax
mov    (%rsp,%rax,4),%ecx
mov    %r14,%rdi
mov    $0x64,%esi
mov    %r13,%rdx
jmp    1176 <tgoto+0x56>
movslq %r15d,%rax
mov    (%rsp,%rax,4),%ecx
mov    %r14,%rdi
mov    $0x64,%esi
mov    %rbp,%rdx
jmp    1176 <tgoto+0x56>
addl   $0x1,(%rsp)
addl   $0x1,0x4(%rsp)
jmp    118c <tgoto+0x6c>
lea    0x2e02(%rip),%r14
movb   $0x0,(%r14)
lea    0x2df7(%rip),%rax
add    $0x8,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

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

LLVM IR (-O2):
@tgoto.dst_str = internal global [100 x i8] zeroinitializer
@.str = [3 x i8] c"%d\00"
@.str.1 = [5 x i8] c"%02d\00"
@.str.2 = [5 x i8] c"%03d\00"
@.str.3 = [3 x i8] c"%c\00"
define i8* @tgoto(i8* nocapture %0, i32 %1, i32 %2) {
%4 = alloca [2 x i32]
%5 = bitcast [2 x i32]* %4 to i8*
%6 = getelementptr inbounds [2 x i32], [2 x i32]* %4, i64 0, i64 0
store i32 %2, i32* %6
%7 = getelementptr inbounds [2 x i32], [2 x i32]* %4, i64 0, i64 1
store i32 %1, i32* %7
%8 = load i8, i8* %0
%9 = icmp eq i8 %8, 0
br i1 %9, label %74, label %10
10: ; preds = %3, %68
%11 = phi i8 [ %72, %68 ], [ %8, %3 ]
%12 = phi i8* [ %71, %68 ], [ %0, %3 ]
%13 = phi i32 [ %70, %68 ], [ 0, %3 ]
%14 = phi i8* [ %69, %68 ], [ getelementptr inbounds ([100 x i8], [100 x i8]* @tgoto.dst_str, i64 0, i64 0), %3 ]
%15 = getelementptr inbounds i8, i8* %12, i64 1
%16 = icmp eq i8 %11, 37
br i1 %16, label %17, label %66
17: ; preds = %10
%18 = load i8, i8* %15
%19 = getelementptr inbounds i8, i8* %12, i64 2
switch i8 %18, label %68 [
i8 37, label %20
i8 100, label %22
i8 50, label %31
i8 51, label %40
i8 46, label %49
i8 114, label %58
i8 105, label %61
]
20: ; preds = %17
store i8 37, i8* %14
%21 = getelementptr inbounds i8, i8* %14, i64 1
br label %68
22: ; preds = %17
%23 = sext i32 %13 to i64
%24 = getelementptr inbounds [2 x i32], [2 x i32]* %4, i64 0, i64 %23
%25 = load i32, i32* %24
%26 = tail call i32 @snprintf(i8* %14, i32 100, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i64 0, i64 0), i32 %25)
%27 = tail call i32 @strlen(i8* %14)
%28 = sext i32 %27 to i64
%29 = getelementptr inbounds i8, i8* %14, i64 %28
%30 = add nsw i32 %13, 1
br label %68
31: ; preds = %17
%32 = sext i32 %13 to i64
%33 = getelementptr inbounds [2 x i32], [2 x i32]* %4, i64 0, i64 %32
%34 = load i32, i32* %33
%35 = tail call i32 @snprintf(i8* %14, i32 100, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.1, i64 0, i64 0), i32 %34)
%36 = tail call i32 @strlen(i8* %14)
%37 = sext i32 %36 to i64
%38 = getelementptr inbounds i8, i8* %14, i64 %37
%39 = add nsw i32 %13, 1
br label %68
40: ; preds = %17
%41 = sext i32 %13 to i64
%42 = getelementptr inbounds [2 x i32], [2 x i32]* %4, i64 0, i64 %41
%43 = load i32, i32* %42
%44 = tail call i32 @snprintf(i8* %14, i32 100, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.2, i64 0, i64 0), i32 %43)
%45 = tail call i32 @strlen(i8* %14)
%46 = sext i32 %45 to i64
%47 = getelementptr inbounds i8, i8* %14, i64 %46
%48 = add nsw i32 %13, 1
br label %68
49: ; preds = %17
%50 = sext i32 %13 to i64
%51 = getelementptr inbounds [2 x i32], [2 x i32]* %4, i64 0, i64 %50
%52 = load i32, i32* %51
%53 = tail call i32 @snprintf(i8* %14, i32 100, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.3, i64 0, i64 0), i32 %52)
%54 = tail call i32 @strlen(i8* %14)
%55 = sext i32 %54 to i64
%56 = getelementptr inbounds i8, i8* %14, i64 %55
%57 = add nsw i32 %13, 1
br label %68
58: ; preds = %17
%59 = load i32, i32* %6
%60 = load i32, i32* %7
store i32 %60, i32* %6
store i32 %59, i32* %7
br label %68
61: ; preds = %17
%62 = load i32, i32* %6
%63 = add nsw i32 %62, 1
store i32 %63, i32* %6
%64 = load i32, i32* %7
%65 = add nsw i32 %64, 1
store i32 %65, i32* %7
br label %68
66: ; preds = %10
store i8 %11, i8* %14
%67 = getelementptr inbounds i8, i8* %14, i64 1
br label %68
68: ; preds = %17, %20, %31, %49, %61, %58, %40, %22, %66
%69 = phi i8* [ %21, %20 ], [ %29, %22 ], [ %38, %31 ], [ %47, %40 ], [ %56, %49 ], [ %14, %58 ], [ %14, %61 ], [ %67, %66 ], [ %14, %17 ]
%70 = phi i32 [ %13, %20 ], [ %30, %22 ], [ %39, %31 ], [ %48, %40 ], [ %57, %49 ], [ %13, %58 ], [ %13, %61 ], [ %13, %66 ], [ %13, %17 ]
%71 = phi i8* [ %19, %20 ], [ %19, %22 ], [ %19, %31 ], [ %19, %40 ], [ %19, %49 ], [ %19, %58 ], [ %19, %61 ], [ %15, %66 ], [ %19, %17 ]
%72 = load i8, i8* %71
%73 = icmp eq i8 %72, 0
br i1 %73, label %74, label %10
74: ; preds = %68, %3
%75 = phi i8* [ getelementptr inbounds ([100 x i8], [100 x i8]* @tgoto.dst_str, i64 0, i64 0), %3 ], [ %69, %68 ]
store i8 0, i8* %75
ret i8* getelementptr inbounds ([100 x i8], [100 x i8]* @tgoto.dst_str, i64 0, i64 0)
}