#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__ style_concatenable(unsigned char const *);
int compress_style_chunk(const unsigned char *src, int srclen,
                         unsigned char *dst) {
  const unsigned char *rpos = src;
  unsigned char *wpos = dst;
  int count;
  int dstlen = 0;
  unsigned char previous_char = '\0';
  unsigned char previous_char2 = '\0';
  unsigned char quote_char;
  int break_loop;
  count = srclen;
  while (count) {
    if (*rpos <= ' ') {
      if (previous_char != ' ') {
        *(wpos++) = ' ';
        dstlen++;
      }
      rpos++;
      count--;
    } else if (*rpos == '/') {
      if (count >= 2) {
        if (*(rpos + 1) == '*') {
          rpos += 2;
          count -= 2;
          while ((count >= 2) && ((*rpos != '*') || (*(rpos + 1) != '/'))) {
            rpos++;
            count--;
          }
          if (count) {
            rpos++;
            count--;
          }
          if (count) {
            rpos++;
            count--;
          }
        } else {
          *(wpos++) = *(rpos++);
          dstlen++;
          count--;
        }
      } else {
        *(wpos++) = *(rpos++);
        dstlen++;
        count--;
      }
    } else if ((*rpos == '"') || (*rpos == '\'')) {
      if (previous_char == ' ') {
        wpos--;
        dstlen--;
      }
      quote_char = *(rpos++);
      *(wpos++) = quote_char;
      dstlen++;
      count--;
      break_loop = 0;
      while ((count) && (!break_loop)) {
        if (*rpos == '\\') {
          *(wpos++) = *(rpos++);
          if (count > 1) {
            *(wpos++) = *(rpos++);
            dstlen++;
            count--;
          }
        } else if (*rpos == quote_char) {
          *(wpos++) = *(rpos++);
          break_loop = 1;
        } else {
          *(wpos++) = *(rpos++);
        }
        dstlen++;
        count--;
      }
    } else {
      if (previous_char == ' ') {
        if (style_concatenable(&previous_char2) || style_concatenable(rpos)) {
          previous_char = previous_char2;
          previous_char2 = '\0';
          wpos--;
          dstlen--;
        }
      }
      *(wpos++) = *(rpos++);
      dstlen++;
      count--;
    }
    if (dstlen)
      previous_char = *(wpos - 1);
    else
      previous_char = '\0';
    if (dstlen >= 2)
      previous_char2 = *(wpos - 2);
    else
      previous_char2 = '\0';
  }
  return (dstlen);
}


x86 assembly (clang, -O0):
<compress_style_chunk>:
push   %rbp
mov    %rsp,%rbp
sub    $0x40,%rsp
mov    %rdi,-0x8(%rbp)
mov    %esi,-0xc(%rbp)
mov    %rdx,-0x18(%rbp)
mov    -0x8(%rbp),%rax
mov    %rax,-0x20(%rbp)
mov    -0x18(%rbp),%rax
mov    %rax,-0x28(%rbp)
movl   $0x0,-0x30(%rbp)
movb   $0x0,-0x31(%rbp)
movb   $0x0,-0x32(%rbp)
mov    -0xc(%rbp),%eax
mov    %eax,-0x2c(%rbp)
cmpl   $0x0,-0x2c(%rbp)
je     1579 <compress_style_chunk+0x469>
mov    -0x20(%rbp),%rax
movzbl (%rax),%eax
cmp    $0x20,%eax
jg     11a4 <compress_style_chunk+0x94>
movzbl -0x31(%rbp),%eax
cmp    $0x20,%eax
je     118a <compress_style_chunk+0x7a>
mov    -0x28(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x28(%rbp)
movb   $0x20,(%rax)
mov    -0x30(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x30(%rbp)
mov    -0x20(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x20(%rbp)
mov    -0x2c(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x2c(%rbp)
jmp    153a <compress_style_chunk+0x42a>
mov    -0x20(%rbp),%rax
movzbl (%rax),%eax
cmp    $0x2f,%eax
jne    12fe <compress_style_chunk+0x1ee>
cmpl   $0x2,-0x2c(%rbp)
jl     12c5 <compress_style_chunk+0x1b5>
mov    -0x20(%rbp),%rax
movzbl 0x1(%rax),%eax
cmp    $0x2a,%eax
jne    128c <compress_style_chunk+0x17c>
mov    -0x20(%rbp),%rax
add    $0x2,%rax
mov    %rax,-0x20(%rbp)
mov    -0x2c(%rbp),%eax
sub    $0x2,%eax
mov    %eax,-0x2c(%rbp)
xor    %eax,%eax
cmpl   $0x2,-0x2c(%rbp)
mov    %al,-0x39(%rbp)
jl     121f <compress_style_chunk+0x10f>
mov    -0x20(%rbp),%rax
movzbl (%rax),%ecx
mov    $0x1,%al
cmp    $0x2a,%ecx
mov    %al,-0x3a(%rbp)
jne    1219 <compress_style_chunk+0x109>
mov    -0x20(%rbp),%rax
movzbl 0x1(%rax),%eax
cmp    $0x2f,%eax
setne  %al
mov    %al,-0x3a(%rbp)
mov    -0x3a(%rbp),%al
mov    %al,-0x39(%rbp)
mov    -0x39(%rbp),%al
test   $0x1,%al
jne    122f <compress_style_chunk+0x11f>
jmp    1249 <compress_style_chunk+0x139>
mov    -0x20(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x20(%rbp)
mov    -0x2c(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x2c(%rbp)
jmp    11e4 <compress_style_chunk+0xd4>
cmpl   $0x0,-0x2c(%rbp)
je     1268 <compress_style_chunk+0x158>
mov    -0x20(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x20(%rbp)
mov    -0x2c(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x2c(%rbp)
cmpl   $0x0,-0x2c(%rbp)
je     1287 <compress_style_chunk+0x177>
mov    -0x20(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x20(%rbp)
mov    -0x2c(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x2c(%rbp)
jmp    12c0 <compress_style_chunk+0x1b0>
mov    -0x20(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x20(%rbp)
mov    (%rax),%cl
mov    -0x28(%rbp),%rax
mov    %rax,%rdx
add    $0x1,%rdx
mov    %rdx,-0x28(%rbp)
mov    %cl,(%rax)
mov    -0x30(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x30(%rbp)
mov    -0x2c(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x2c(%rbp)
jmp    12f9 <compress_style_chunk+0x1e9>
mov    -0x20(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x20(%rbp)
mov    (%rax),%cl
mov    -0x28(%rbp),%rax
mov    %rax,%rdx
add    $0x1,%rdx
mov    %rdx,-0x28(%rbp)
mov    %cl,(%rax)
mov    -0x30(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x30(%rbp)
mov    -0x2c(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x2c(%rbp)
jmp    1535 <compress_style_chunk+0x425>
mov    -0x20(%rbp),%rax
movzbl (%rax),%eax
cmp    $0x22,%eax
je     131e <compress_style_chunk+0x20e>
mov    -0x20(%rbp),%rax
movzbl (%rax),%eax
cmp    $0x27,%eax
jne    14a5 <compress_style_chunk+0x395>
movzbl -0x31(%rbp),%eax
cmp    $0x20,%eax
jne    1340 <compress_style_chunk+0x230>
mov    -0x28(%rbp),%rax
add    $0xffffffffffffffff,%rax
mov    %rax,-0x28(%rbp)
mov    -0x30(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x30(%rbp)
mov    -0x20(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x20(%rbp)
mov    (%rax),%al
mov    %al,-0x33(%rbp)
mov    -0x33(%rbp),%cl
mov    -0x28(%rbp),%rax
mov    %rax,%rdx
add    $0x1,%rdx
mov    %rdx,-0x28(%rbp)
mov    %cl,(%rax)
mov    -0x30(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x30(%rbp)
mov    -0x2c(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x2c(%rbp)
movl   $0x0,-0x38(%rbp)
xor    %eax,%eax
cmpl   $0x0,-0x2c(%rbp)
mov    %al,-0x3b(%rbp)
je     139c <compress_style_chunk+0x28c>
cmpl   $0x0,-0x38(%rbp)
setne  %al
xor    $0xff,%al
mov    %al,-0x3b(%rbp)
mov    -0x3b(%rbp),%al
test   $0x1,%al
jne    13ac <compress_style_chunk+0x29c>
jmp    14a0 <compress_style_chunk+0x390>
mov    -0x20(%rbp),%rax
movzbl (%rax),%eax
cmp    $0x5c,%eax
jne    1421 <compress_style_chunk+0x311>
mov    -0x20(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x20(%rbp)
mov    (%rax),%cl
mov    -0x28(%rbp),%rax
mov    %rax,%rdx
add    $0x1,%rdx
mov    %rdx,-0x28(%rbp)
mov    %cl,(%rax)
cmpl   $0x1,-0x2c(%rbp)
jle    141c <compress_style_chunk+0x30c>
mov    -0x20(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x20(%rbp)
mov    (%rax),%cl
mov    -0x28(%rbp),%rax
mov    %rax,%rdx
add    $0x1,%rdx
mov    %rdx,-0x28(%rbp)
mov    %cl,(%rax)
mov    -0x30(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x30(%rbp)
mov    -0x2c(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x2c(%rbp)
jmp    1489 <compress_style_chunk+0x379>
mov    -0x20(%rbp),%rax
movzbl (%rax),%eax
movzbl -0x33(%rbp),%ecx
cmp    %ecx,%eax
jne    1462 <compress_style_chunk+0x352>
mov    -0x20(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x20(%rbp)
mov    (%rax),%cl
mov    -0x28(%rbp),%rax
mov    %rax,%rdx
add    $0x1,%rdx
mov    %rdx,-0x28(%rbp)
mov    %cl,(%rax)
movl   $0x1,-0x38(%rbp)
jmp    1484 <compress_style_chunk+0x374>
mov    -0x20(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x20(%rbp)
mov    (%rax),%cl
mov    -0x28(%rbp),%rax
mov    %rax,%rdx
add    $0x1,%rdx
mov    %rdx,-0x28(%rbp)
mov    %cl,(%rax)
jmp    1489 <compress_style_chunk+0x379>
mov    -0x30(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x30(%rbp)
mov    -0x2c(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x2c(%rbp)
jmp    1381 <compress_style_chunk+0x271>
jmp    1530 <compress_style_chunk+0x420>
movzbl -0x31(%rbp),%eax
cmp    $0x20,%eax
jne    14fc <compress_style_chunk+0x3ec>
lea    -0x32(%rbp),%rdi
call   1030 <style_concatenable@plt>
cmp    $0x0,%rax
jne    14d8 <compress_style_chunk+0x3c8>
mov    -0x20(%rbp),%rdi
call   1030 <style_concatenable@plt>
cmp    $0x0,%rax
je     14f7 <compress_style_chunk+0x3e7>
mov    -0x32(%rbp),%al
mov    %al,-0x31(%rbp)
movb   $0x0,-0x32(%rbp)
mov    -0x28(%rbp),%rax
add    $0xffffffffffffffff,%rax
mov    %rax,-0x28(%rbp)
mov    -0x30(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x30(%rbp)
jmp    14fc <compress_style_chunk+0x3ec>
mov    -0x20(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x20(%rbp)
mov    (%rax),%cl
mov    -0x28(%rbp),%rax
mov    %rax,%rdx
add    $0x1,%rdx
mov    %rdx,-0x28(%rbp)
mov    %cl,(%rax)
mov    -0x30(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x30(%rbp)
mov    -0x2c(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x2c(%rbp)
jmp    1535 <compress_style_chunk+0x425>
jmp    153a <compress_style_chunk+0x42a>
cmpl   $0x0,-0x30(%rbp)
je     1553 <compress_style_chunk+0x443>
mov    -0x28(%rbp),%rax
mov    -0x1(%rax),%al
mov    %al,-0x31(%rbp)
jmp    1557 <compress_style_chunk+0x447>
movb   $0x0,-0x31(%rbp)
cmpl   $0x2,-0x30(%rbp)
jl     1570 <compress_style_chunk+0x460>
mov    -0x28(%rbp),%rax
mov    -0x2(%rax),%al
mov    %al,-0x32(%rbp)
jmp    1574 <compress_style_chunk+0x464>
movb   $0x0,-0x32(%rbp)
jmp    1148 <compress_style_chunk+0x38>
mov    -0x30(%rbp),%eax
add    $0x40,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<compress_style_chunk>:
push   %rbp
push   %r15
push   %r14
push   %r12
push   %rbx
sub    $0x10,%rsp
movb   $0x0,0xf(%rsp)
test   %esi,%esi
je     1347 <compress_style_chunk+0x237>
mov    %rdx,%r15
mov    %rdi,%rbx
xor    %ecx,%ecx
lea    0xf(%rsp),%r14
xor    %r12d,%r12d
jmp    1150 <compress_style_chunk+0x40>
nopl   0x0(%rax,%rax,1)
xor    %ecx,%ecx
xor    %eax,%eax
mov    %al,0xf(%rsp)
test   %esi,%esi
je     134a <compress_style_chunk+0x23a>
mov    %esi,%ebp
mov    (%rbx),%dil
cmp    $0x20,%dil
ja     1180 <compress_style_chunk+0x70>
cmp    $0x20,%cl
je     116c <compress_style_chunk+0x5c>
movb   $0x20,(%r15)
add    $0x1,%r15
add    $0x1,%r12d
add    $0x1,%rbx
jmp    12e0 <compress_style_chunk+0x1d0>
cs nopw 0x0(%rax,%rax,1)
nop
cmp    $0x22,%dil
je     1200 <compress_style_chunk+0xf0>
cmp    $0x27,%dil
je     1200 <compress_style_chunk+0xf0>
cmp    $0x2f,%dil
jne    1295 <compress_style_chunk+0x185>
lea    0x1(%rbx),%rax
cmp    $0x2,%ebp
jl     1305 <compress_style_chunk+0x1f5>
cmpb   $0x2a,(%rax)
jne    1305 <compress_style_chunk+0x1f5>
lea    -0x2(%rbp),%ecx
cmp    $0x2,%ecx
jb     1332 <compress_style_chunk+0x222>
add    $0xfffffffc,%ebp
lea    (%rbx,%rbp,1),%rax
add    $0x3,%rax
add    $0x4,%rbx
mov    %ebp,%esi
jmp    11e5 <compress_style_chunk+0xd5>
nopl   0x0(%rax,%rax,1)
add    $0x1,%rbx
lea    -0x1(%rsi),%ecx
add    $0x1,%esi
cmp    $0x1,%esi
mov    %ecx,%esi
jbe    132b <compress_style_chunk+0x21b>
cmpb   $0x2a,-0x2(%rbx)
jne    11d0 <compress_style_chunk+0xc0>
cmpb   $0x2f,-0x1(%rbx)
jne    11d0 <compress_style_chunk+0xc0>
jmp    12e5 <compress_style_chunk+0x1d5>
cs nopw 0x0(%rax,%rax,1)
xor    %eax,%eax
cmp    $0x20,%cl
sete   %al
sub    %rax,%r15
mov    %r12d,%ecx
sub    %eax,%ecx
add    $0x1,%rbx
mov    %dil,(%r15)
add    $0x1,%r15
lea    0x1(%rcx),%r12d
mov    %ebp,%esi
add    $0xffffffff,%esi
je     131b <compress_style_chunk+0x20b>
mov    %r15,%rdx
jmp    1262 <compress_style_chunk+0x152>
nop
movzbl 0x1(%rbx),%eax
add    $0x2,%rbx
mov    %al,0x1(%rdx)
add    $0x2,%rdx
add    $0x2,%ecx
add    $0xfffffffe,%ebp
mov    %rdx,%r15
mov    %ebp,%esi
mov    %ecx,%r12d
mov    %r12d,%ecx
mov    %esi,%ebp
lea    0x1(%rcx),%r12d
mov    %r15,%rdx
add    $0xffffffff,%esi
je     12e5 <compress_style_chunk+0x1d5>
movzbl (%rbx),%eax
cmp    $0x5c,%al
jne    1280 <compress_style_chunk+0x170>
movb   $0x5c,(%rdx)
cmp    $0x3,%ebp
jge    1230 <compress_style_chunk+0x120>
add    $0x1,%rbx
add    $0x1,%rdx
mov    %rdx,%r15
jmp    124d <compress_style_chunk+0x13d>
xchg   %ax,%ax
add    $0x1,%rbx
lea    0x1(%rdx),%r15
cmp    %dil,%al
je     131f <compress_style_chunk+0x20f>
mov    %al,(%rdx)
jmp    124d <compress_style_chunk+0x13d>
cmp    $0x20,%cl
jne    12c1 <compress_style_chunk+0x1b1>
mov    %r14,%rdi
call   1030 <style_concatenable@plt>
test   %rax,%rax
jne    12b4 <compress_style_chunk+0x1a4>
mov    %rbx,%rdi
call   1030 <style_concatenable@plt>
test   %rax,%rax
je     12c1 <compress_style_chunk+0x1b1>
movb   $0x0,0xf(%rsp)
add    $0xffffffffffffffff,%r15
add    $0xffffffff,%r12d
mov    (%rbx),%al
add    $0x1,%rbx
mov    %al,(%r15)
add    $0x1,%r15
add    $0x1,%r12d
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
add    $0xffffffff,%ebp
mov    %ebp,%esi
test   %r12d,%r12d
je     1140 <compress_style_chunk+0x30>
mov    -0x1(%r15),%cl
cmp    $0x2,%r12d
jl     1142 <compress_style_chunk+0x32>
mov    -0x2(%r15),%al
jmp    1144 <compress_style_chunk+0x34>
movb   $0x2f,(%r15)
add    $0x1,%r15
add    $0x1,%r12d
add    $0xffffffff,%ebp
mov    %ebp,%esi
mov    %rax,%rbx
jmp    12e5 <compress_style_chunk+0x1d5>
xor    %esi,%esi
jmp    12e5 <compress_style_chunk+0x1d5>
mov    %dil,(%rdx)
add    $0x1,%r12d
add    $0xffffffff,%esi
jmp    12e5 <compress_style_chunk+0x1d5>
mov    $0x1,%ecx
jmp    1339 <compress_style_chunk+0x229>
add    $0x2,%rbx
mov    %rbx,%rax
cmp    $0x1,%ecx
sbb    $0xffffffffffffffff,%rax
xor    %esi,%esi
mov    %rax,%rbx
jmp    12e5 <compress_style_chunk+0x1d5>
xor    %r12d,%r12d
mov    %r12d,%eax
add    $0x10,%rsp
pop    %rbx
pop    %r12
pop    %r14
pop    %r15
pop    %rbp
ret

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

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