#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 */
char *malloc(int);
char *ser_preformat(char *s) {
  char *pos;
  char *ret;
  char *d;
  int count;
  int quote;
  int comment;
  if (!s)
    return NULL;
  count = 0;
  quote = 0;
  comment = 0;
  pos = s;
  while (*pos != '\0') {
    if (comment) {
      if (*pos == '*' && *(pos + 1) == '/') {
        pos += 2;
        count += 3;
        comment = 0;
      } else {
        pos++;
        count++;
      }
    } else if (*pos == '\"') {
      count++;
      pos++;
      quote = !quote;
    } else if (!quote && *pos == '/' && *(pos + 1) == '*') {
      comment = 1;
      count += 3;
      pos += 2;
    } else if (quote && *pos == '\\') {
      count++;
      pos++;
      if (*pos == '\"' || *pos == '\\') {
        count++;
        pos++;
      }
    } else if ((*pos == ';' || *pos == ',' || *pos == '{' || *pos == '}') &&
               !quote) {
      count += 3;
      pos++;
    } else {
      count++;
      pos++;
    }
  }
  count++;
  ;
  ret = malloc(count);
  if (ret == NULL)
    return NULL;
  quote = 0;
  d = ret;
  pos = s;
  while (*pos != '\0') {
    if (comment) {
      if (*pos == '*' && *(pos + 1) == '/') {
        *d++ = *pos++;
        *d++ = *pos++;
        *d++ = ' ';
        comment = 0;
      } else {
        *d++ = *pos++;
      }
    } else if (*pos == '\"') {
      quote = !quote;
      *d++ = *pos++;
    } else if (!quote && *pos == '/' && *(pos + 1) == '*') {
      *d++ = ' ';
      *d++ = *pos++;
      *d++ = *pos++;
    } else if (*pos == '\\' && quote) {
      *d++ = *pos++;
      if (*pos == '\"' || *pos == '\\') {
        *d++ = *pos++;
      }
    } else if ((*pos == ';' || *pos == ',' || *pos == '{' || *pos == '}') &&
               !quote) {
      *d++ = ' ';
      *d++ = *pos;
      *d++ = ' ';
      pos++;
    } else {
      *d++ = *pos++;
    }
  }
  *d = '\0';
  return ret;
}


x86 assembly (clang, -O0):
<ser_preformat>:
push   %rbp
mov    %rsp,%rbp
sub    $0x40,%rsp
mov    %rdi,-0x10(%rbp)
cmpq   $0x0,-0x10(%rbp)
jne    1134 <ser_preformat+0x24>
movq   $0x0,-0x8(%rbp)
jmp    1682 <ser_preformat+0x572>
movl   $0x0,-0x2c(%rbp)
movl   $0x0,-0x30(%rbp)
movl   $0x0,-0x34(%rbp)
mov    -0x10(%rbp),%rax
mov    %rax,-0x18(%rbp)
mov    -0x18(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x0,%eax
je     1349 <ser_preformat+0x239>
cmpl   $0x0,-0x34(%rbp)
je     11c7 <ser_preformat+0xb7>
mov    -0x18(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x2a,%eax
jne    11ad <ser_preformat+0x9d>
mov    -0x18(%rbp),%rax
movsbl 0x1(%rax),%eax
cmp    $0x2f,%eax
jne    11ad <ser_preformat+0x9d>
mov    -0x18(%rbp),%rax
add    $0x2,%rax
mov    %rax,-0x18(%rbp)
mov    -0x2c(%rbp),%eax
add    $0x3,%eax
mov    %eax,-0x2c(%rbp)
movl   $0x0,-0x34(%rbp)
jmp    11c2 <ser_preformat+0xb2>
mov    -0x18(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x18(%rbp)
mov    -0x2c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x2c(%rbp)
jmp    1344 <ser_preformat+0x234>
mov    -0x18(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x22,%eax
jne    1202 <ser_preformat+0xf2>
mov    -0x2c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x2c(%rbp)
mov    -0x18(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x18(%rbp)
cmpl   $0x0,-0x30(%rbp)
setne  %al
xor    $0xff,%al
and    $0x1,%al
movzbl %al,%eax
mov    %eax,-0x30(%rbp)
jmp    133f <ser_preformat+0x22f>
cmpl   $0x0,-0x30(%rbp)
jne    124e <ser_preformat+0x13e>
mov    -0x18(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x2f,%eax
jne    124e <ser_preformat+0x13e>
mov    -0x18(%rbp),%rax
movsbl 0x1(%rax),%eax
cmp    $0x2a,%eax
jne    124e <ser_preformat+0x13e>
movl   $0x1,-0x34(%rbp)
mov    -0x2c(%rbp),%eax
add    $0x3,%eax
mov    %eax,-0x2c(%rbp)
mov    -0x18(%rbp),%rax
add    $0x2,%rax
mov    %rax,-0x18(%rbp)
jmp    133a <ser_preformat+0x22a>
cmpl   $0x0,-0x30(%rbp)
je     12b7 <ser_preformat+0x1a7>
mov    -0x18(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x5c,%eax
jne    12b7 <ser_preformat+0x1a7>
mov    -0x2c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x2c(%rbp)
mov    -0x18(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x18(%rbp)
mov    -0x18(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x22,%eax
je     129d <ser_preformat+0x18d>
mov    -0x18(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x5c,%eax
jne    12b2 <ser_preformat+0x1a2>
mov    -0x2c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x2c(%rbp)
mov    -0x18(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x18(%rbp)
jmp    1335 <ser_preformat+0x225>
mov    -0x18(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x3b,%eax
je     12f7 <ser_preformat+0x1e7>
mov    -0x18(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x2c,%eax
je     12f7 <ser_preformat+0x1e7>
mov    -0x18(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x7b,%eax
je     12f7 <ser_preformat+0x1e7>
mov    -0x18(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x7d,%eax
jne    131b <ser_preformat+0x20b>
cmpl   $0x0,-0x30(%rbp)
jne    131b <ser_preformat+0x20b>
mov    -0x2c(%rbp),%eax
add    $0x3,%eax
mov    %eax,-0x2c(%rbp)
mov    -0x18(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x18(%rbp)
jmp    1330 <ser_preformat+0x220>
mov    -0x2c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x2c(%rbp)
mov    -0x18(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x18(%rbp)
jmp    1335 <ser_preformat+0x225>
jmp    133a <ser_preformat+0x22a>
jmp    133f <ser_preformat+0x22f>
jmp    1344 <ser_preformat+0x234>
jmp    1151 <ser_preformat+0x41>
mov    -0x2c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x2c(%rbp)
mov    -0x2c(%rbp),%edi
call   1030 <malloc@plt>
mov    %rax,-0x20(%rbp)
cmpq   $0x0,-0x20(%rbp)
jne    1376 <ser_preformat+0x266>
movq   $0x0,-0x8(%rbp)
jmp    1682 <ser_preformat+0x572>
movl   $0x0,-0x30(%rbp)
mov    -0x20(%rbp),%rax
mov    %rax,-0x28(%rbp)
mov    -0x10(%rbp),%rax
mov    %rax,-0x18(%rbp)
mov    -0x18(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x0,%eax
je     1673 <ser_preformat+0x563>
cmpl   $0x0,-0x34(%rbp)
je     1451 <ser_preformat+0x341>
mov    -0x18(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x2a,%eax
jne    142a <ser_preformat+0x31a>
mov    -0x18(%rbp),%rax
movsbl 0x1(%rax),%eax
cmp    $0x2f,%eax
jne    142a <ser_preformat+0x31a>
mov    -0x18(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x18(%rbp)
mov    (%rax),%cl
mov    -0x28(%rbp),%rax
mov    %rax,%rdx
add    $0x1,%rdx
mov    %rdx,-0x28(%rbp)
mov    %cl,(%rax)
mov    -0x18(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x18(%rbp)
mov    (%rax),%cl
mov    -0x28(%rbp),%rax
mov    %rax,%rdx
add    $0x1,%rdx
mov    %rdx,-0x28(%rbp)
mov    %cl,(%rax)
mov    -0x28(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x28(%rbp)
movb   $0x20,(%rax)
movl   $0x0,-0x34(%rbp)
jmp    144c <ser_preformat+0x33c>
mov    -0x18(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x18(%rbp)
mov    (%rax),%cl
mov    -0x28(%rbp),%rax
mov    %rax,%rdx
add    $0x1,%rdx
mov    %rdx,-0x28(%rbp)
mov    %cl,(%rax)
jmp    166e <ser_preformat+0x55e>
mov    -0x18(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x22,%eax
jne    1499 <ser_preformat+0x389>
cmpl   $0x0,-0x30(%rbp)
setne  %al
xor    $0xff,%al
and    $0x1,%al
movzbl %al,%eax
mov    %eax,-0x30(%rbp)
mov    -0x18(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x18(%rbp)
mov    (%rax),%cl
mov    -0x28(%rbp),%rax
mov    %rax,%rdx
add    $0x1,%rdx
mov    %rdx,-0x28(%rbp)
mov    %cl,(%rax)
jmp    1669 <ser_preformat+0x559>
cmpl   $0x0,-0x30(%rbp)
jne    151f <ser_preformat+0x40f>
mov    -0x18(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x2f,%eax
jne    151f <ser_preformat+0x40f>
mov    -0x18(%rbp),%rax
movsbl 0x1(%rax),%eax
cmp    $0x2a,%eax
jne    151f <ser_preformat+0x40f>
mov    -0x28(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x28(%rbp)
movb   $0x20,(%rax)
mov    -0x18(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x18(%rbp)
mov    (%rax),%cl
mov    -0x28(%rbp),%rax
mov    %rax,%rdx
add    $0x1,%rdx
mov    %rdx,-0x28(%rbp)
mov    %cl,(%rax)
mov    -0x18(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x18(%rbp)
mov    (%rax),%cl
mov    -0x28(%rbp),%rax
mov    %rax,%rdx
add    $0x1,%rdx
mov    %rdx,-0x28(%rbp)
mov    %cl,(%rax)
jmp    1664 <ser_preformat+0x554>
mov    -0x18(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x5c,%eax
jne    15a2 <ser_preformat+0x492>
cmpl   $0x0,-0x30(%rbp)
je     15a2 <ser_preformat+0x492>
mov    -0x18(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x18(%rbp)
mov    (%rax),%cl
mov    -0x28(%rbp),%rax
mov    %rax,%rdx
add    $0x1,%rdx
mov    %rdx,-0x28(%rbp)
mov    %cl,(%rax)
mov    -0x18(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x22,%eax
je     157b <ser_preformat+0x46b>
mov    -0x18(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x5c,%eax
jne    159d <ser_preformat+0x48d>
mov    -0x18(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x18(%rbp)
mov    (%rax),%cl
mov    -0x28(%rbp),%rax
mov    %rax,%rdx
add    $0x1,%rdx
mov    %rdx,-0x28(%rbp)
mov    %cl,(%rax)
jmp    165f <ser_preformat+0x54f>
mov    -0x18(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x3b,%eax
je     15e2 <ser_preformat+0x4d2>
mov    -0x18(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x2c,%eax
je     15e2 <ser_preformat+0x4d2>
mov    -0x18(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x7b,%eax
je     15e2 <ser_preformat+0x4d2>
mov    -0x18(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x7d,%eax
jne    1638 <ser_preformat+0x528>
cmpl   $0x0,-0x30(%rbp)
jne    1638 <ser_preformat+0x528>
mov    -0x28(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x28(%rbp)
movb   $0x20,(%rax)
mov    -0x18(%rbp),%rax
mov    (%rax),%cl
mov    -0x28(%rbp),%rax
mov    %rax,%rdx
add    $0x1,%rdx
mov    %rdx,-0x28(%rbp)
mov    %cl,(%rax)
mov    -0x28(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x28(%rbp)
movb   $0x20,(%rax)
mov    -0x18(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x18(%rbp)
jmp    165a <ser_preformat+0x54a>
mov    -0x18(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x18(%rbp)
mov    (%rax),%cl
mov    -0x28(%rbp),%rax
mov    %rax,%rdx
add    $0x1,%rdx
mov    %rdx,-0x28(%rbp)
mov    %cl,(%rax)
jmp    165f <ser_preformat+0x54f>
jmp    1664 <ser_preformat+0x554>
jmp    1669 <ser_preformat+0x559>
jmp    166e <ser_preformat+0x55e>
jmp    138d <ser_preformat+0x27d>
mov    -0x28(%rbp),%rax
movb   $0x0,(%rax)
mov    -0x20(%rbp),%rax
mov    %rax,-0x8(%rbp)
mov    -0x8(%rbp),%rax
add    $0x40,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<ser_preformat>:
push   %rbp
push   %r14
push   %rbx
test   %rdi,%rdi
je     137d <ser_preformat+0x26d>
mov    %rdi,%r14
mov    (%rdi),%bl
test   %bl,%bl
je     136b <ser_preformat+0x25b>
xor    %ebp,%ebp
mov    %ebx,%edx
xor    %ecx,%ecx
xor    %edi,%edi
mov    %r14,%rax
jmp    1157 <ser_preformat+0x47>
nopw   0x0(%rax,%rax,1)
add    $0x1,%rax
add    $0x1,%edi
mov    $0x1,%ebp
movzbl (%rax),%edx
test   %dl,%dl
je     122d <ser_preformat+0x11d>
test   %ebp,%ebp
je     1180 <ser_preformat+0x70>
cmp    $0x2a,%dl
jne    1140 <ser_preformat+0x30>
cmpb   $0x2f,0x1(%rax)
jne    1140 <ser_preformat+0x30>
add    $0x2,%rax
add    $0x3,%edi
jmp    1210 <ser_preformat+0x100>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
cmp    $0x22,%dl
jne    1199 <ser_preformat+0x89>
add    $0x1,%edi
add    $0x1,%rax
xor    %edx,%edx
test   %ecx,%ecx
sete   %dl
xor    %ebp,%ebp
mov    %edx,%ecx
jmp    114c <ser_preformat+0x3c>
test   %ecx,%ecx
jne    11b8 <ser_preformat+0xa8>
cmp    $0x2f,%dl
jne    11b8 <ser_preformat+0xa8>
cmpb   $0x2a,0x1(%rax)
jne    11fa <ser_preformat+0xea>
add    $0x3,%edi
add    $0x2,%rax
mov    $0x1,%ebp
xor    %ecx,%ecx
jmp    114c <ser_preformat+0x3c>
test   %ecx,%ecx
je     11e2 <ser_preformat+0xd2>
cmp    $0x5c,%dl
jne    11e2 <ser_preformat+0xd2>
movzbl 0x1(%rax),%edx
cmp    $0x5c,%dl
je     11cf <ser_preformat+0xbf>
cmp    $0x22,%dl
jne    1217 <ser_preformat+0x107>
add    $0x2,%edi
add    $0x2,%rax
xor    %ebp,%ebp
mov    $0x1,%ecx
jmp    114c <ser_preformat+0x3c>
cmp    $0x2c,%dl
je     11f6 <ser_preformat+0xe6>
cmp    $0x3b,%dl
je     11f6 <ser_preformat+0xe6>
cmp    $0x7b,%dl
je     11f6 <ser_preformat+0xe6>
cmp    $0x7d,%dl
jne    11fa <ser_preformat+0xea>
test   %ecx,%ecx
je     1203 <ser_preformat+0xf3>
add    $0x1,%edi
add    $0x1,%rax
jmp    1210 <ser_preformat+0x100>
add    $0x3,%edi
add    $0x1,%rax
xor    %ecx,%ecx
nopl   0x0(%rax)
xor    %ebp,%ebp
jmp    114c <ser_preformat+0x3c>
add    $0x1,%rax
add    $0x1,%edi
xor    %ebp,%ebp
mov    $0x1,%ecx
test   %dl,%dl
jne    1157 <ser_preformat+0x47>
add    $0x1,%edi
call   1030 <malloc@plt>
test   %rax,%rax
je     137d <ser_preformat+0x26d>
test   %bl,%bl
je     1381 <ser_preformat+0x271>
xor    %edx,%edx
mov    %rax,%rcx
jmp    126b <ser_preformat+0x15b>
nopl   (%rax)
add    $0x1,%r14
mov    %bl,(%rcx)
add    $0x1,%rcx
mov    $0x1,%ebp
movzbl (%r14),%ebx
test   %bl,%bl
je     1384 <ser_preformat+0x274>
test   %ebp,%ebp
je     12a0 <ser_preformat+0x190>
cmp    $0x2a,%bl
jne    1250 <ser_preformat+0x140>
cmpb   $0x2f,0x1(%r14)
jne    1250 <ser_preformat+0x140>
movw   $0x2f2a,(%rcx)
add    $0x2,%r14
movb   $0x20,0x2(%rcx)
add    $0x3,%rcx
jmp    134b <ser_preformat+0x23b>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
cmp    $0x22,%bl
jne    12be <ser_preformat+0x1ae>
xor    %esi,%esi
test   %edx,%edx
sete   %sil
add    $0x1,%r14
movb   $0x22,(%rcx)
add    $0x1,%rcx
xor    %ebp,%ebp
mov    %esi,%edx
jmp    125f <ser_preformat+0x14f>
test   %edx,%edx
jne    12e1 <ser_preformat+0x1d1>
cmp    $0x2f,%bl
jne    12e1 <ser_preformat+0x1d1>
cmpb   $0x2a,0x1(%r14)
jne    132b <ser_preformat+0x21b>
movw   $0x2f20,(%rcx)
add    $0x2,%r14
movb   $0x2a,0x2(%rcx)
add    $0x3,%rcx
jmp    1349 <ser_preformat+0x239>
cmp    $0x5c,%bl
jne    1313 <ser_preformat+0x203>
test   %edx,%edx
je     1313 <ser_preformat+0x203>
movb   $0x5c,(%rcx)
movzbl 0x1(%r14),%ebx
cmp    $0x5c,%bl
je     12fc <ser_preformat+0x1ec>
cmp    $0x22,%bl
jne    1352 <ser_preformat+0x242>
add    $0x2,%r14
mov    %bl,0x1(%rcx)
add    $0x2,%rcx
xor    %ebp,%ebp
mov    $0x1,%edx
jmp    125f <ser_preformat+0x14f>
cmp    $0x2c,%bl
je     1327 <ser_preformat+0x217>
cmp    $0x3b,%bl
je     1327 <ser_preformat+0x217>
cmp    $0x7b,%bl
je     1327 <ser_preformat+0x217>
cmp    $0x7d,%bl
jne    132b <ser_preformat+0x21b>
test   %edx,%edx
je     1337 <ser_preformat+0x227>
add    $0x1,%r14
mov    %bl,(%rcx)
add    $0x1,%rcx
jmp    134b <ser_preformat+0x23b>
movb   $0x20,(%rcx)
mov    %bl,0x1(%rcx)
movb   $0x20,0x2(%rcx)
add    $0x3,%rcx
add    $0x1,%r14
xor    %edx,%edx
xor    %ebp,%ebp
jmp    125f <ser_preformat+0x14f>
add    $0x1,%r14
add    $0x1,%rcx
xor    %ebp,%ebp
mov    $0x1,%edx
test   %bl,%bl
jne    126b <ser_preformat+0x15b>
jmp    1384 <ser_preformat+0x274>
mov    $0x1,%edi
call   1030 <malloc@plt>
mov    %rax,%rcx
test   %rax,%rax
jne    1384 <ser_preformat+0x274>
xor    %eax,%eax
jmp    1387 <ser_preformat+0x277>
mov    %rax,%rcx
movb   $0x0,(%rcx)
pop    %rbx
pop    %r14
pop    %rbp
ret

LLVM IR (-O0):
define i8* @ser_preformat(i8* %0) {
%2 = alloca i8*
%3 = alloca i8*
%4 = alloca i8*
%5 = alloca i8*
%6 = alloca i8*
%7 = alloca i32
%8 = alloca i32
%9 = alloca i32
store i8* %0, i8** %3
%10 = load i8*, i8** %3
%11 = icmp ne i8* %10, null
br i1 %11, label %13, label %12
12: ; preds = %1
store i8* null, i8** %2
br label %314
13: ; preds = %1
store i32 0, i32* %7
store i32 0, i32* %8
store i32 0, i32* %9
%14 = load i8*, i8** %3
store i8* %14, i8** %4
br label %15
15: ; preds = %143, %13
%16 = load i8*, i8** %4
%17 = load i8, i8* %16
%18 = sext i8 %17 to i32
%19 = icmp ne i32 %18, 0
br i1 %19, label %20, label %144
20: ; preds = %15
%21 = load i32, i32* %9
%22 = icmp ne i32 %21, 0
br i1 %22, label %23, label %45
23: ; preds = %20
%24 = load i8*, i8** %4
%25 = load i8, i8* %24
%26 = sext i8 %25 to i32
%27 = icmp eq i32 %26, 42
br i1 %27, label %28, label %39
28: ; preds = %23
%29 = load i8*, i8** %4
%30 = getelementptr inbounds i8, i8* %29, i64 1
%31 = load i8, i8* %30
%32 = sext i8 %31 to i32
%33 = icmp eq i32 %32, 47
br i1 %33, label %34, label %39
34: ; preds = %28
%35 = load i8*, i8** %4
%36 = getelementptr inbounds i8, i8* %35, i64 2
store i8* %36, i8** %4
%37 = load i32, i32* %7
%38 = add nsw i32 %37, 3
store i32 %38, i32* %7
store i32 0, i32* %9
br label %44
39: ; preds = %28, %23
%40 = load i8*, i8** %4
%41 = getelementptr inbounds i8, i8* %40, i32 1
store i8* %41, i8** %4
%42 = load i32, i32* %7
%43 = add nsw i32 %42, 1
store i32 %43, i32* %7
br label %44
44: ; preds = %39, %34
br label %143
45: ; preds = %20
%46 = load i8*, i8** %4
%47 = load i8, i8* %46
%48 = sext i8 %47 to i32
%49 = icmp eq i32 %48, 34
br i1 %49, label %50, label %59
50: ; preds = %45
%51 = load i32, i32* %7
%52 = add nsw i32 %51, 1
store i32 %52, i32* %7
%53 = load i8*, i8** %4
%54 = getelementptr inbounds i8, i8* %53, i32 1
store i8* %54, i8** %4
%55 = load i32, i32* %8
%56 = icmp ne i32 %55, 0
%57 = xor i1 %56, true
%58 = zext i1 %57 to i32
store i32 %58, i32* %8
br label %142
59: ; preds = %45
%60 = load i32, i32* %8
%61 = icmp ne i32 %60, 0
br i1 %61, label %78, label %62
62: ; preds = %59
%63 = load i8*, i8** %4
%64 = load i8, i8* %63
%65 = sext i8 %64 to i32
%66 = icmp eq i32 %65, 47
br i1 %66, label %67, label %78
67: ; preds = %62
%68 = load i8*, i8** %4
%69 = getelementptr inbounds i8, i8* %68, i64 1
%70 = load i8, i8* %69
%71 = sext i8 %70 to i32
%72 = icmp eq i32 %71, 42
br i1 %72, label %73, label %78
73: ; preds = %67
store i32 1, i32* %9
%74 = load i32, i32* %7
%75 = add nsw i32 %74, 3
store i32 %75, i32* %7
%76 = load i8*, i8** %4
%77 = getelementptr inbounds i8, i8* %76, i64 2
store i8* %77, i8** %4
br label %141
78: ; preds = %67, %62, %59
%79 = load i32, i32* %8
%80 = icmp ne i32 %79, 0
br i1 %80, label %81, label %106
81: ; preds = %78
%82 = load i8*, i8** %4
%83 = load i8, i8* %82
%84 = sext i8 %83 to i32
%85 = icmp eq i32 %84, 92
br i1 %85, label %86, label %106
86: ; preds = %81
%87 = load i32, i32* %7
%88 = add nsw i32 %87, 1
store i32 %88, i32* %7
%89 = load i8*, i8** %4
%90 = getelementptr inbounds i8, i8* %89, i32 1
store i8* %90, i8** %4
%91 = load i8*, i8** %4
%92 = load i8, i8* %91
%93 = sext i8 %92 to i32
%94 = icmp eq i32 %93, 34
br i1 %94, label %100, label %95
95: ; preds = %86
%96 = load i8*, i8** %4
%97 = load i8, i8* %96
%98 = sext i8 %97 to i32
%99 = icmp eq i32 %98, 92
br i1 %99, label %100, label %105
100: ; preds = %95, %86
%101 = load i32, i32* %7
%102 = add nsw i32 %101, 1
store i32 %102, i32* %7
%103 = load i8*, i8** %4
%104 = getelementptr inbounds i8, i8* %103, i32 1
store i8* %104, i8** %4
br label %105
105: ; preds = %100, %95
br label %140
106: ; preds = %81, %78
%107 = load i8*, i8** %4
%108 = load i8, i8* %107
%109 = sext i8 %108 to i32
%110 = icmp eq i32 %109, 59
br i1 %110, label %126, label %111
111: ; preds = %106
%112 = load i8*, i8** %4
%113 = load i8, i8* %112
%114 = sext i8 %113 to i32
%115 = icmp eq i32 %114, 44
br i1 %115, label %126, label %116
116: ; preds = %111
%117 = load i8*, i8** %4
%118 = load i8, i8* %117
%119 = sext i8 %118 to i32
%120 = icmp eq i32 %119, 123
br i1 %120, label %126, label %121
121: ; preds = %116
%122 = load i8*, i8** %4
%123 = load i8, i8* %122
%124 = sext i8 %123 to i32
%125 = icmp eq i32 %124, 125
br i1 %125, label %126, label %134
126: ; preds = %121, %116, %111, %106
%127 = load i32, i32* %8
%128 = icmp ne i32 %127, 0
br i1 %128, label %134, label %129
129: ; preds = %126
%130 = load i32, i32* %7
%131 = add nsw i32 %130, 3
store i32 %131, i32* %7
%132 = load i8*, i8** %4
%133 = getelementptr inbounds i8, i8* %132, i32 1
store i8* %133, i8** %4
br label %139
134: ; preds = %126, %121
%135 = load i32, i32* %7
%136 = add nsw i32 %135, 1
store i32 %136, i32* %7
%137 = load i8*, i8** %4
%138 = getelementptr inbounds i8, i8* %137, i32 1
store i8* %138, i8** %4
br label %139
139: ; preds = %134, %129
br label %140
140: ; preds = %139, %105
br label %141
141: ; preds = %140, %73
br label %142
142: ; preds = %141, %50
br label %143
143: ; preds = %142, %44
br label %15
144: ; preds = %15
%145 = load i32, i32* %7
%146 = add nsw i32 %145, 1
store i32 %146, i32* %7
%147 = load i32, i32* %7
%148 = call i8* @malloc(i32 %147)
store i8* %148, i8** %5
%149 = load i8*, i8** %5
%150 = icmp eq i8* %149, null
br i1 %150, label %151, label %152
151: ; preds = %144
store i8* null, i8** %2
br label %314
152: ; preds = %144
store i32 0, i32* %8
%153 = load i8*, i8** %5
store i8* %153, i8** %6
%154 = load i8*, i8** %3
store i8* %154, i8** %4
br label %155
155: ; preds = %310, %152
%156 = load i8*, i8** %4
%157 = load i8, i8* %156
%158 = sext i8 %157 to i32
%159 = icmp ne i32 %158, 0
br i1 %159, label %160, label %311
160: ; preds = %155
%161 = load i32, i32* %9
%162 = icmp ne i32 %161, 0
br i1 %162, label %163, label %194
163: ; preds = %160
%164 = load i8*, i8** %4
%165 = load i8, i8* %164
%166 = sext i8 %165 to i32
%167 = icmp eq i32 %166, 42
br i1 %167, label %168, label %187
168: ; preds = %163
%169 = load i8*, i8** %4
%170 = getelementptr inbounds i8, i8* %169, i64 1
%171 = load i8, i8* %170
%172 = sext i8 %171 to i32
%173 = icmp eq i32 %172, 47
br i1 %173, label %174, label %187
174: ; preds = %168
%175 = load i8*, i8** %4
%176 = getelementptr inbounds i8, i8* %175, i32 1
store i8* %176, i8** %4
%177 = load i8, i8* %175
%178 = load i8*, i8** %6
%179 = getelementptr inbounds i8, i8* %178, i32 1
store i8* %179, i8** %6
store i8 %177, i8* %178
%180 = load i8*, i8** %4
%181 = getelementptr inbounds i8, i8* %180, i32 1
store i8* %181, i8** %4
%182 = load i8, i8* %180
%183 = load i8*, i8** %6
%184 = getelementptr inbounds i8, i8* %183, i32 1
store i8* %184, i8** %6
store i8 %182, i8* %183
%185 = load i8*, i8** %6
%186 = getelementptr inbounds i8, i8* %185, i32 1
store i8* %186, i8** %6
store i8 32, i8* %185
store i32 0, i32* %9
br label %193
187: ; preds = %168, %163
%188 = load i8*, i8** %4
%189 = getelementptr inbounds i8, i8* %188, i32 1
store i8* %189, i8** %4
%190 = load i8, i8* %188
%191 = load i8*, i8** %6
%192 = getelementptr inbounds i8, i8* %191, i32 1
store i8* %192, i8** %6
store i8 %190, i8* %191
br label %193
193: ; preds = %187, %174
br label %310
194: ; preds = %160
%195 = load i8*, i8** %4
%196 = load i8, i8* %195
%197 = sext i8 %196 to i32
%198 = icmp eq i32 %197, 34
br i1 %198, label %199, label %209
199: ; preds = %194
%200 = load i32, i32* %8
%201 = icmp ne i32 %200, 0
%202 = xor i1 %201, true
%203 = zext i1 %202 to i32
store i32 %203, i32* %8
%204 = load i8*, i8** %4
%205 = getelementptr inbounds i8, i8* %204, i32 1
store i8* %205, i8** %4
%206 = load i8, i8* %204
%207 = load i8*, i8** %6
%208 = getelementptr inbounds i8, i8* %207, i32 1
store i8* %208, i8** %6
store i8 %206, i8* %207
br label %309
209: ; preds = %194
%210 = load i32, i32* %8
%211 = icmp ne i32 %210, 0
br i1 %211, label %236, label %212
212: ; preds = %209
%213 = load i8*, i8** %4
%214 = load i8, i8* %213
%215 = sext i8 %214 to i32
%216 = icmp eq i32 %215, 47
br i1 %216, label %217, label %236
217: ; preds = %212
%218 = load i8*, i8** %4
%219 = getelementptr inbounds i8, i8* %218, i64 1
%220 = load i8, i8* %219
%221 = sext i8 %220 to i32
%222 = icmp eq i32 %221, 42
br i1 %222, label %223, label %236
223: ; preds = %217
%224 = load i8*, i8** %6
%225 = getelementptr inbounds i8, i8* %224, i32 1
store i8* %225, i8** %6
store i8 32, i8* %224
%226 = load i8*, i8** %4
%227 = getelementptr inbounds i8, i8* %226, i32 1
store i8* %227, i8** %4
%228 = load i8, i8* %226
%229 = load i8*, i8** %6
%230 = getelementptr inbounds i8, i8* %229, i32 1
store i8* %230, i8** %6
store i8 %228, i8* %229
%231 = load i8*, i8** %4
%232 = getelementptr inbounds i8, i8* %231, i32 1
store i8* %232, i8** %4
%233 = load i8, i8* %231
%234 = load i8*, i8** %6
%235 = getelementptr inbounds i8, i8* %234, i32 1
store i8* %235, i8** %6
store i8 %233, i8* %234
br label %308
236: ; preds = %217, %212, %209
%237 = load i8*, i8** %4
%238 = load i8, i8* %237
%239 = sext i8 %238 to i32
%240 = icmp eq i32 %239, 92
br i1 %240, label %241, label %266
241: ; preds = %236
%242 = load i32, i32* %8
%243 = icmp ne i32 %242, 0
br i1 %243, label %244, label %266
244: ; preds = %241
%245 = load i8*, i8** %4
%246 = getelementptr inbounds i8, i8* %245, i32 1
store i8* %246, i8** %4
%247 = load i8, i8* %245
%248 = load i8*, i8** %6
%249 = getelementptr inbounds i8, i8* %248, i32 1
store i8* %249, i8** %6
store i8 %247, i8* %248
%250 = load i8*, i8** %4
%251 = load i8, i8* %250
%252 = sext i8 %251 to i32
%253 = icmp eq i32 %252, 34
br i1 %253, label %259, label %254
254: ; preds = %244
%255 = load i8*, i8** %4
%256 = load i8, i8* %255
%257 = sext i8 %256 to i32
%258 = icmp eq i32 %257, 92
br i1 %258, label %259, label %265
259: ; preds = %254, %244
%260 = load i8*, i8** %4
%261 = getelementptr inbounds i8, i8* %260, i32 1
store i8* %261, i8** %4
%262 = load i8, i8* %260
%263 = load i8*, i8** %6
%264 = getelementptr inbounds i8, i8* %263, i32 1
store i8* %264, i8** %6
store i8 %262, i8* %263
br label %265
265: ; preds = %259, %254
br label %307
266: ; preds = %241, %236
%267 = load i8*, i8** %4
%268 = load i8, i8* %267
%269 = sext i8 %268 to i32
%270 = icmp eq i32 %269, 59
br i1 %270, label %286, label %271
271: ; preds = %266
%272 = load i8*, i8** %4
%273 = load i8, i8* %272
%274 = sext i8 %273 to i32
%275 = icmp eq i32 %274, 44
br i1 %275, label %286, label %276
276: ; preds = %271
%277 = load i8*, i8** %4
%278 = load i8, i8* %277
%279 = sext i8 %278 to i32
%280 = icmp eq i32 %279, 123
br i1 %280, label %286, label %281
281: ; preds = %276
%282 = load i8*, i8** %4
%283 = load i8, i8* %282
%284 = sext i8 %283 to i32
%285 = icmp eq i32 %284, 125
br i1 %285, label %286, label %300
286: ; preds = %281, %276, %271, %266
%287 = load i32, i32* %8
%288 = icmp ne i32 %287, 0
br i1 %288, label %300, label %289
289: ; preds = %286
%290 = load i8*, i8** %6
%291 = getelementptr inbounds i8, i8* %290, i32 1
store i8* %291, i8** %6
store i8 32, i8* %290
%292 = load i8*, i8** %4
%293 = load i8, i8* %292
%294 = load i8*, i8** %6
%295 = getelementptr inbounds i8, i8* %294, i32 1
store i8* %295, i8** %6
store i8 %293, i8* %294
%296 = load i8*, i8** %6
%297 = getelementptr inbounds i8, i8* %296, i32 1
store i8* %297, i8** %6
store i8 32, i8* %296
%298 = load i8*, i8** %4
%299 = getelementptr inbounds i8, i8* %298, i32 1
store i8* %299, i8** %4
br label %306
300: ; preds = %286, %281
%301 = load i8*, i8** %4
%302 = getelementptr inbounds i8, i8* %301, i32 1
store i8* %302, i8** %4
%303 = load i8, i8* %301
%304 = load i8*, i8** %6
%305 = getelementptr inbounds i8, i8* %304, i32 1
store i8* %305, i8** %6
store i8 %303, i8* %304
br label %306
306: ; preds = %300, %289
br label %307
307: ; preds = %306, %265
br label %308
308: ; preds = %307, %223
br label %309
309: ; preds = %308, %199
br label %310
310: ; preds = %309, %193
br label %155
311: ; preds = %155
%312 = load i8*, i8** %6
store i8 0, i8* %312
%313 = load i8*, i8** %5
store i8* %313, i8** %2
br label %314
314: ; preds = %311, %151, %12
%315 = load i8*, i8** %2
ret i8* %315
}

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