#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__ fossil_isspace(int);
char *malloc(int);
int strlen(char const *);
char *fossilize(const char *zIn, int nIn) {
  int n, i, j, c;
  char *zOut;
  if (nIn < 0)
    nIn = strlen(zIn);
  for (i = n = 0; i < nIn; i++) {
    c = zIn[i];
    if (c == 0 || c == ' ' || c == '\n' || c == '\t' || c == '\r' ||
        c == '\f' || c == '\v' || c == '\\')
      n++;
  }
  n += nIn;
  zOut = malloc(n + 1);
  if (zOut) {
    for (i = j = 0; i < nIn; i++) {
      int c = zIn[i];
      if (c == 0) {
        zOut[j++] = '\\';
        zOut[j++] = '0';
      } else if (c == '\\') {
        zOut[j++] = '\\';
        zOut[j++] = '\\';
      } else if (fossil_isspace(c)) {
        zOut[j++] = '\\';
        switch (c) {
        case '\n':
          c = 'n';
          break;
        case ' ':
          c = 's';
          break;
        case '\t':
          c = 't';
          break;
        case '\r':
          c = 'r';
          break;
        case '\v':
          c = 'v';
          break;
        case '\f':
          c = 'f';
          break;
        }
        zOut[j++] = c;
      } else {
        zOut[j++] = c;
      }
    }
    zOut[j] = 0;
  }
  return zOut;
}


x86 assembly (clang, -O0):
<fossilize>:
push   %rbp
mov    %rsp,%rbp
sub    $0x40,%rsp
mov    %rdi,-0x8(%rbp)
mov    %esi,-0xc(%rbp)
cmpl   $0x0,-0xc(%rbp)
jge    1155 <fossilize+0x25>
mov    -0x8(%rbp),%rdi
call   1040 <strlen@plt>
mov    %eax,-0xc(%rbp)
movl   $0x0,-0x10(%rbp)
movl   $0x0,-0x14(%rbp)
mov    -0x14(%rbp),%eax
cmp    -0xc(%rbp),%eax
jge    11ea <fossilize+0xba>
mov    -0x8(%rbp),%rax
movslq -0x14(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
mov    %eax,-0x1c(%rbp)
cmpl   $0x0,-0x1c(%rbp)
je     11ce <fossilize+0x9e>
cmpl   $0x20,-0x1c(%rbp)
je     11ce <fossilize+0x9e>
cmpl   $0xa,-0x1c(%rbp)
je     11ce <fossilize+0x9e>
cmpl   $0x9,-0x1c(%rbp)
je     11ce <fossilize+0x9e>
cmpl   $0xd,-0x1c(%rbp)
je     11ce <fossilize+0x9e>
cmpl   $0xc,-0x1c(%rbp)
je     11ce <fossilize+0x9e>
cmpl   $0xb,-0x1c(%rbp)
je     11ce <fossilize+0x9e>
cmpl   $0x5c,-0x1c(%rbp)
jne    11d7 <fossilize+0xa7>
mov    -0x10(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x10(%rbp)
jmp    11dc <fossilize+0xac>
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14(%rbp)
jmp    1163 <fossilize+0x33>
mov    -0xc(%rbp),%eax
add    -0x10(%rbp),%eax
mov    %eax,-0x10(%rbp)
mov    -0x10(%rbp),%edi
add    $0x1,%edi
call   1050 <malloc@plt>
mov    %rax,-0x28(%rbp)
cmpq   $0x0,-0x28(%rbp)
je     13a0 <fossilize+0x270>
movl   $0x0,-0x18(%rbp)
movl   $0x0,-0x14(%rbp)
mov    -0x14(%rbp),%eax
cmp    -0xc(%rbp),%eax
jge    1394 <fossilize+0x264>
mov    -0x8(%rbp),%rax
movslq -0x14(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
mov    %eax,-0x2c(%rbp)
cmpl   $0x0,-0x2c(%rbp)
jne    1271 <fossilize+0x141>
mov    -0x28(%rbp),%rax
mov    -0x18(%rbp),%ecx
mov    %ecx,%edx
add    $0x1,%edx
mov    %edx,-0x18(%rbp)
movslq %ecx,%rcx
movb   $0x5c,(%rax,%rcx,1)
mov    -0x28(%rbp),%rax
mov    -0x18(%rbp),%ecx
mov    %ecx,%edx
add    $0x1,%edx
mov    %edx,-0x18(%rbp)
movslq %ecx,%rcx
movb   $0x30,(%rax,%rcx,1)
jmp    1381 <fossilize+0x251>
cmpl   $0x5c,-0x2c(%rbp)
jne    12ac <fossilize+0x17c>
mov    -0x28(%rbp),%rax
mov    -0x18(%rbp),%ecx
mov    %ecx,%edx
add    $0x1,%edx
mov    %edx,-0x18(%rbp)
movslq %ecx,%rcx
movb   $0x5c,(%rax,%rcx,1)
mov    -0x28(%rbp),%rax
mov    -0x18(%rbp),%ecx
mov    %ecx,%edx
add    $0x1,%edx
mov    %edx,-0x18(%rbp)
movslq %ecx,%rcx
movb   $0x5c,(%rax,%rcx,1)
jmp    137c <fossilize+0x24c>
mov    -0x2c(%rbp),%edi
call   1030 <fossil_isspace@plt>
cmp    $0x0,%rax
je     135d <fossilize+0x22d>
mov    -0x28(%rbp),%rax
movslq -0x18(%rbp),%rcx
mov    %ecx,%edx
add    $0x1,%edx
mov    %edx,-0x18(%rbp)
movb   $0x5c,(%rax,%rcx,1)
mov    -0x2c(%rbp),%eax
add    $0xfffffff7,%eax
mov    %eax,%ecx
mov    %rcx,-0x38(%rbp)
sub    $0x17,%eax
ja     133e <fossilize+0x20e>
mov    -0x38(%rbp),%rax
lea    0xd0e(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
movl   $0x6e,-0x2c(%rbp)
jmp    133e <fossilize+0x20e>
movl   $0x73,-0x2c(%rbp)
jmp    133e <fossilize+0x20e>
movl   $0x74,-0x2c(%rbp)
jmp    133e <fossilize+0x20e>
movl   $0x72,-0x2c(%rbp)
jmp    133e <fossilize+0x20e>
movl   $0x76,-0x2c(%rbp)
jmp    133e <fossilize+0x20e>
movl   $0x66,-0x2c(%rbp)
mov    -0x2c(%rbp),%eax
mov    %al,%dl
mov    -0x28(%rbp),%rax
mov    -0x18(%rbp),%ecx
mov    %ecx,%esi
add    $0x1,%esi
mov    %esi,-0x18(%rbp)
movslq %ecx,%rcx
mov    %dl,(%rax,%rcx,1)
jmp    1377 <fossilize+0x247>
mov    -0x2c(%rbp),%eax
mov    %al,%dl
mov    -0x28(%rbp),%rax
mov    -0x18(%rbp),%ecx
mov    %ecx,%esi
add    $0x1,%esi
mov    %esi,-0x18(%rbp)
movslq %ecx,%rcx
mov    %dl,(%rax,%rcx,1)
jmp    137c <fossilize+0x24c>
jmp    1381 <fossilize+0x251>
jmp    1386 <fossilize+0x256>
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14(%rbp)
jmp    121b <fossilize+0xeb>
mov    -0x28(%rbp),%rax
movslq -0x18(%rbp),%rcx
movb   $0x0,(%rax,%rcx,1)
mov    -0x28(%rbp),%rax
add    $0x40,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<fossilize>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
push   %rax
mov    %esi,%r14d
mov    %rdi,%r15
test   %esi,%esi
jns    1150 <fossilize+0x20>
mov    %r15,%rdi
call   1040 <strlen@plt>
mov    %eax,%r14d
mov    %r14d,%r12d
test   %r14d,%r14d
jle    11b4 <fossilize+0x84>
lea    -0x1(%r12),%rdx
mov    %r12d,%eax
and    $0x3,%eax
movabs $0x100003e01,%rcx
cmp    $0x3,%rdx
jae    12a7 <fossilize+0x177>
xor    %esi,%esi
xor    %edx,%edx
test   %rax,%rax
je     11b6 <fossilize+0x86>
add    %r15,%rsi
xor    %edi,%edi
jmp    11a2 <fossilize+0x72>
nopw   0x0(%rax,%rax,1)
bt     %rbp,%rcx
jae    11ac <fossilize+0x7c>
add    $0x1,%edx
add    $0x1,%rdi
cmp    %rdi,%rax
je     11b6 <fossilize+0x86>
movzbl (%rsi,%rdi,1),%ebp
cmp    $0x20,%rbp
jbe    1190 <fossilize+0x60>
cmp    $0x5c,%bpl
je     1196 <fossilize+0x66>
jmp    1199 <fossilize+0x69>
xor    %edx,%edx
lea    (%rdx,%r14,1),%edi
add    $0x1,%edi
call   1050 <malloc@plt>
mov    %rax,%r13
test   %rax,%rax
je     1295 <fossilize+0x165>
xor    %ebx,%ebx
test   %r14d,%r14d
jle    128f <fossilize+0x15f>
xor    %r14d,%r14d
jmp    1207 <fossilize+0xd7>
xchg   %ax,%ax
movslq %ebx,%rax
add    $0x1,%ebx
movb   $0x5c,0x0(%r13,%rax,1)
mov    $0x5c,%bpl
movslq %ebx,%rbx
mov    %bpl,0x0(%r13,%rbx,1)
add    $0x1,%ebx
add    $0x1,%r14
cmp    %r14,%r12
je     128c <fossilize+0x15c>
movsbl (%r15,%r14,1),%ebp
cmp    $0x5c,%ebp
je     11e0 <fossilize+0xb0>
test   %bpl,%bpl
jne    1230 <fossilize+0x100>
movslq %ebx,%rax
add    $0x1,%ebx
movb   $0x5c,0x0(%r13,%rax,1)
mov    $0x30,%bpl
jmp    11ef <fossilize+0xbf>
nopw   0x0(%rax,%rax,1)
mov    %ebp,%edi
call   1030 <fossil_isspace@plt>
test   %rax,%rax
je     11ef <fossilize+0xbf>
movslq %ebx,%rax
add    $0x1,%ebx
movb   $0x5c,0x0(%r13,%rax,1)
mov    %ebp,%eax
add    $0xfffffff7,%eax
cmp    $0x17,%eax
ja     11ef <fossilize+0xbf>
lea    0xda7(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
mov    $0x74,%bpl
jmp    11ef <fossilize+0xbf>
mov    $0x6e,%bpl
jmp    11ef <fossilize+0xbf>
mov    $0x76,%bpl
jmp    11ef <fossilize+0xbf>
mov    $0x66,%bpl
jmp    11ef <fossilize+0xbf>
mov    $0x72,%bpl
jmp    11ef <fossilize+0xbf>
mov    $0x73,%bpl
jmp    11ef <fossilize+0xbf>
movslq %ebx,%rbx
movb   $0x0,0x0(%r13,%rbx,1)
mov    %r13,%rax
add    $0x8,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret
mov    %r12d,%edi
and    $0xfffffffc,%edi
xor    %esi,%esi
xor    %edx,%edx
jmp    12d6 <fossilize+0x1a6>
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
bt     %rbp,%rcx
jae    1320 <fossilize+0x1f0>
add    $0x1,%edx
add    $0x4,%rsi
cmp    %rsi,%rdi
je     117b <fossilize+0x4b>
movzbl (%r15,%rsi,1),%ebp
cmp    $0x20,%rbp
ja     1330 <fossilize+0x200>
bt     %rbp,%rcx
jae    1330 <fossilize+0x200>
add    $0x1,%edx
movzbl 0x1(%r15,%rsi,1),%ebp
cmp    $0x20,%rbp
ja     1340 <fossilize+0x210>
bt     %rbp,%rcx
jae    1340 <fossilize+0x210>
add    $0x1,%edx
movzbl 0x2(%r15,%rsi,1),%ebp
cmp    $0x20,%rbp
ja     1350 <fossilize+0x220>
bt     %rbp,%rcx
jae    1350 <fossilize+0x220>
add    $0x1,%edx
movzbl 0x3(%r15,%rsi,1),%ebp
cmp    $0x20,%rbp
jbe    12c0 <fossilize+0x190>
cmp    $0x5c,%bpl
je     12c6 <fossilize+0x196>
jmp    12c9 <fossilize+0x199>
nopl   0x0(%rax,%rax,1)
cmp    $0x5c,%bpl
je     12e7 <fossilize+0x1b7>
jmp    12ea <fossilize+0x1ba>
nopl   0x0(%rax,%rax,1)
cmp    $0x5c,%bpl
je     12fc <fossilize+0x1cc>
jmp    12ff <fossilize+0x1cf>
nopl   0x0(%rax,%rax,1)
cmp    $0x5c,%bpl
je     1311 <fossilize+0x1e1>
jmp    1314 <fossilize+0x1e4>

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

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