#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 strlen(char *);
void URLtoSITE(char *url, char *site) {
  int i, j;
  int len = strlen(url);
  j = 0;
  for (i = 0; i < len && url[i] != '/'; i++)
    ;
  i++;
  for (; i < len && url[i] != '/'; i++)
    ;
  i++;
  if (i >= len) {
    site[0] = 0;
    return;
  }
  if (url[i] == 'w')
    if (url[i + 1] == 'w')
      if (url[i + 2] == 'w')
        if (url[i + 3] == '.')
          i += 4;
  for (; i < len && url[i] != '/'; i++, j++)
    site[j] = url[i];
  if (url[i] == '/')
    if (url[i + 1] == '~')
      for (site[j++] = url[i++]; i < len && url[i] != '/'; i++, j++)
        site[j] = url[i];
  site[j] = 0;
}


x86 assembly (clang, -O0):
<URLtoSITE>:
push   %rbp
mov    %rsp,%rbp
sub    $0x20,%rsp
mov    %rdi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
mov    -0x8(%rbp),%rdi
call   1030 <strlen@plt>
mov    %eax,-0x1c(%rbp)
movl   $0x0,-0x18(%rbp)
movl   $0x0,-0x14(%rbp)
mov    -0x14(%rbp),%ecx
xor    %eax,%eax
cmp    -0x1c(%rbp),%ecx
mov    %al,-0x1d(%rbp)
jge    1160 <URLtoSITE+0x50>
mov    -0x8(%rbp),%rax
movslq -0x14(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x2f,%eax
setne  %al
mov    %al,-0x1d(%rbp)
mov    -0x1d(%rbp),%al
test   $0x1,%al
jne    1170 <URLtoSITE+0x60>
jmp    1183 <URLtoSITE+0x73>
jmp    1175 <URLtoSITE+0x65>
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14(%rbp)
jmp    113a <URLtoSITE+0x2a>
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14(%rbp)
mov    -0x14(%rbp),%ecx
xor    %eax,%eax
cmp    -0x1c(%rbp),%ecx
mov    %al,-0x1e(%rbp)
jge    11b2 <URLtoSITE+0xa2>
mov    -0x8(%rbp),%rax
movslq -0x14(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x2f,%eax
setne  %al
mov    %al,-0x1e(%rbp)
mov    -0x1e(%rbp),%al
test   $0x1,%al
jne    11c2 <URLtoSITE+0xb2>
jmp    11d5 <URLtoSITE+0xc5>
jmp    11c7 <URLtoSITE+0xb7>
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14(%rbp)
jmp    118c <URLtoSITE+0x7c>
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14(%rbp)
mov    -0x14(%rbp),%eax
cmp    -0x1c(%rbp),%eax
jl     11f6 <URLtoSITE+0xe6>
mov    -0x10(%rbp),%rax
movb   $0x0,(%rax)
jmp    13ab <URLtoSITE+0x29b>
mov    -0x8(%rbp),%rax
movslq -0x14(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x77,%eax
jne    1271 <URLtoSITE+0x161>
mov    -0x8(%rbp),%rax
mov    -0x14(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x77,%eax
jne    126c <URLtoSITE+0x15c>
mov    -0x8(%rbp),%rax
mov    -0x14(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x77,%eax
jne    1267 <URLtoSITE+0x157>
mov    -0x8(%rbp),%rax
mov    -0x14(%rbp),%ecx
add    $0x3,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x2e,%eax
jne    1262 <URLtoSITE+0x152>
mov    -0x14(%rbp),%eax
add    $0x4,%eax
mov    %eax,-0x14(%rbp)
jmp    1267 <URLtoSITE+0x157>
jmp    126c <URLtoSITE+0x15c>
jmp    1271 <URLtoSITE+0x161>
jmp    1276 <URLtoSITE+0x166>
mov    -0x14(%rbp),%ecx
xor    %eax,%eax
cmp    -0x1c(%rbp),%ecx
mov    %al,-0x1f(%rbp)
jge    129c <URLtoSITE+0x18c>
mov    -0x8(%rbp),%rax
movslq -0x14(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x2f,%eax
setne  %al
mov    %al,-0x1f(%rbp)
mov    -0x1f(%rbp),%al
test   $0x1,%al
jne    12ac <URLtoSITE+0x19c>
jmp    12d9 <URLtoSITE+0x1c9>
mov    -0x8(%rbp),%rax
movslq -0x14(%rbp),%rcx
mov    (%rax,%rcx,1),%dl
mov    -0x10(%rbp),%rax
movslq -0x18(%rbp),%rcx
mov    %dl,(%rax,%rcx,1)
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14(%rbp)
mov    -0x18(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x18(%rbp)
jmp    1276 <URLtoSITE+0x166>
mov    -0x8(%rbp),%rax
movslq -0x14(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x2f,%eax
jne    139f <URLtoSITE+0x28f>
mov    -0x8(%rbp),%rax
mov    -0x14(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x7e,%eax
jne    139a <URLtoSITE+0x28a>
mov    -0x8(%rbp),%rax
mov    -0x14(%rbp),%ecx
mov    %ecx,%edx
add    $0x1,%edx
mov    %edx,-0x14(%rbp)
movslq %ecx,%rcx
mov    (%rax,%rcx,1),%dl
mov    -0x10(%rbp),%rax
mov    -0x18(%rbp),%ecx
mov    %ecx,%esi
add    $0x1,%esi
mov    %esi,-0x18(%rbp)
movslq %ecx,%rcx
mov    %dl,(%rax,%rcx,1)
mov    -0x14(%rbp),%ecx
xor    %eax,%eax
cmp    -0x1c(%rbp),%ecx
mov    %al,-0x20(%rbp)
jge    1358 <URLtoSITE+0x248>
mov    -0x8(%rbp),%rax
movslq -0x14(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x2f,%eax
setne  %al
mov    %al,-0x20(%rbp)
mov    -0x20(%rbp),%al
test   $0x1,%al
jne    1368 <URLtoSITE+0x258>
jmp    1395 <URLtoSITE+0x285>
mov    -0x8(%rbp),%rax
movslq -0x14(%rbp),%rcx
mov    (%rax,%rcx,1),%dl
mov    -0x10(%rbp),%rax
movslq -0x18(%rbp),%rcx
mov    %dl,(%rax,%rcx,1)
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14(%rbp)
mov    -0x18(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x18(%rbp)
jmp    1332 <URLtoSITE+0x222>
jmp    139a <URLtoSITE+0x28a>
jmp    139f <URLtoSITE+0x28f>
mov    -0x10(%rbp),%rax
movslq -0x18(%rbp),%rcx
movb   $0x0,(%rax,%rcx,1)
add    $0x20,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<URLtoSITE>:
push   %r14
push   %rbx
push   %rax
mov    %rsi,%r14
mov    %rdi,%rbx
call   1030 <strlen@plt>
test   %eax,%eax
jle    1143 <URLtoSITE+0x33>
mov    %eax,%ecx
xor    %edx,%edx
nopw   0x0(%rax,%rax,1)
cmpb   $0x2f,(%rbx,%rdx,1)
je     1145 <URLtoSITE+0x35>
add    $0x1,%rdx
cmp    %rdx,%rcx
jne    1130 <URLtoSITE+0x20>
mov    %ecx,%edx
jmp    1145 <URLtoSITE+0x35>
xor    %edx,%edx
lea    0x1(%rdx),%ecx
cmp    %ecx,%eax
cmovg  %eax,%ecx
mov    %edx,%esi
add    $0xffffffff,%ecx
add    $0xffffffff,%edx
add    %rbx,%rsi
add    $0x1,%rsi
nopl   0x0(%rax)
lea    0x2(%rdx),%edi
cmp    %edi,%eax
jle    1175 <URLtoSITE+0x65>
add    $0x1,%edx
cmpb   $0x2f,(%rsi)
lea    0x1(%rsi),%rsi
jne    1160 <URLtoSITE+0x50>
jmp    1177 <URLtoSITE+0x67>
mov    %ecx,%edx
mov    %edx,%esi
lea    0x2(%rsi),%rcx
cmp    %eax,%ecx
jge    1248 <URLtoSITE+0x138>
cmpb   $0x77,(%rbx,%rcx,1)
jne    11a6 <URLtoSITE+0x96>
cmpb   $0x77,0x3(%rsi,%rbx,1)
jne    11a6 <URLtoSITE+0x96>
cmpb   $0x77,0x4(%rsi,%rbx,1)
jne    11a6 <URLtoSITE+0x96>
add    $0x6,%edx
cmpb   $0x2e,0x5(%rsi,%rbx,1)
cmovne %ecx,%edx
mov    %edx,%ecx
mov    %eax,%r8d
sub    %ecx,%r8d
jle    11da <URLtoSITE+0xca>
movslq %ecx,%rdi
add    %rbx,%rdi
xor    %esi,%esi
cs nopw 0x0(%rax,%rax,1)
movzbl (%rdi,%rsi,1),%edx
cmp    $0x2f,%dl
je     11df <URLtoSITE+0xcf>
mov    %dl,(%r14,%rsi,1)
add    $0x1,%rsi
cmp    %rsi,%r8
jne    11c0 <URLtoSITE+0xb0>
mov    %eax,%ecx
jmp    11e4 <URLtoSITE+0xd4>
xor    %r8d,%r8d
jmp    11e4 <URLtoSITE+0xd4>
add    %esi,%ecx
mov    %esi,%r8d
movslq %ecx,%rdi
cmpb   $0x2f,(%rbx,%rdi,1)
jne    1242 <URLtoSITE+0x132>
cmpb   $0x7e,0x1(%rbx,%rdi,1)
jne    1242 <URLtoSITE+0x132>
add    $0x1,%rdi
mov    %r8d,%edx
movb   $0x2f,(%r14,%rdx,1)
lea    0x1(%r8),%esi
cmp    %eax,%edi
jge    123a <URLtoSITE+0x12a>
mov    %esi,%esi
add    %eax,%r8d
sub    %ecx,%r8d
add    %rdi,%rbx
not    %ecx
add    %eax,%ecx
nopw   0x0(%rax,%rax,1)
movzbl (%rbx),%eax
cmp    $0x2f,%al
je     123f <URLtoSITE+0x12f>
mov    %al,(%r14,%rsi,1)
add    $0x1,%rsi
add    $0x1,%rbx
add    $0xffffffff,%ecx
jne    1220 <URLtoSITE+0x110>
jmp    1242 <URLtoSITE+0x132>
mov    %esi,%r8d
jmp    1242 <URLtoSITE+0x132>
mov    %esi,%r8d
movslq %r8d,%rax
add    %rax,%r14
movb   $0x0,(%r14)
add    $0x8,%rsp
pop    %rbx
pop    %r14
ret

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

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