// File: /workspace/github_cpp_makefile_star2_O3/lionell[P]huffman-rle/main.cc
// Function: main
int main() {
  string text = read();

  string without = run(text, false);
  write(without, "out.txt");
  string with = run(text, true);
  write(with, "opt.txt");

  cout << without.length() << " chars w/o optimization" << endl;
  cout << with.length() << " chars with optimization" << endl;
  cout << setprecision(3) << 100. - (100. * with.length() / without.length()) << "% benefit";
  return 0;
}

// Assembly:
pushq %r14
pushq %rbx
subq $0xa8, %rsp
leaq 0x88(%rsp), %rbx
movq %rbx, %rdi
callq 0x23cc
leaq 0x28(%rsp), %rdi
movq %rbx, %rsi
xorl %edx, %edx
callq 0x2aef
leaq 0x78(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x13c4(%rip), %rsi      # 0x404e
leaq 0x13c4(%rip), %rdx      # 0x4055
leaq 0x68(%rsp), %rdi
callq 0x315c
leaq 0x28(%rsp), %rdi
leaq 0x68(%rsp), %rsi
callq 0x2bd1
movq 0x68(%rsp), %rdi
cmpq %r14, %rdi
je 0x2cb9
callq 0x2150
leaq 0x8(%rsp), %rdi
leaq 0x88(%rsp), %rsi
movl $0x1, %edx
callq 0x2aef
leaq 0x58(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x1376(%rip), %rsi      # 0x4056
leaq 0x1376(%rip), %rdx      # 0x405d
leaq 0x48(%rsp), %rdi
callq 0x315c
leaq 0x8(%rsp), %rdi
leaq 0x48(%rsp), %rsi
callq 0x2bd1
movq 0x48(%rsp), %rdi
cmpq %r14, %rdi
je 0x2d0f
callq 0x2150
movq 0x30(%rsp), %rsi
movq 0x32b5(%rip), %rdi      # 0x5fd0
callq 0x20c0
movq %rax, %rbx
leaq 0x1334(%rip), %rsi      # 0x405e
movl $0x17, %edx
movq %rax, %rdi
callq 0x2190
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x2160
movsbl %al, %esi
movq %rbx, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x20d0
movq 0x10(%rsp), %rsi
movq 0x3266(%rip), %rbx      # 0x5fd0
movq %rbx, %rdi
callq 0x20c0
movq %rax, %r14
leaq 0x12fa(%rip), %rsi      # 0x4076
movl $0x18, %edx
movq %rax, %rdi
callq 0x2190
movq (%r14), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x2160
movsbl %al, %esi
movq %r14, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x20d0
movq (%rbx), %rax
movq -0x18(%rax), %rax
movq $0x3, 0x8(%rbx,%rax)
movsd 0x10(%rsp), %xmm0
movsd 0x1252(%rip), %xmm1     # 0x4020
unpcklps %xmm1, %xmm0            # xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
movapd 0x1257(%rip), %xmm2     # 0x4030
subpd %xmm2, %xmm0
movapd %xmm0, %xmm3
unpckhpd %xmm0, %xmm3            # xmm3 = xmm3[1],xmm0[1]
addsd %xmm0, %xmm3
movsd 0x124f(%rip), %xmm0     # 0x4040
mulsd %xmm0, %xmm3
movsd 0x30(%rsp), %xmm4
unpcklps %xmm1, %xmm4            # xmm4 = xmm4[0],xmm1[0],xmm4[1],xmm1[1]
subpd %xmm2, %xmm4
movapd %xmm4, %xmm1
unpckhpd %xmm4, %xmm1            # xmm1 = xmm1[1],xmm4[1]
addsd %xmm4, %xmm1
divsd %xmm1, %xmm3
subsd %xmm3, %xmm0
movq %rbx, %rdi
callq 0x2220
leaq 0x126a(%rip), %rsi      # 0x408f
movl $0x9, %edx
movq %rax, %rdi
callq 0x2190
leaq 0x18(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x2e45
callq 0x2150
leaq 0x38(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x2e58
callq 0x2150
leaq 0x98(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x2e6e
callq 0x2150
xorl %eax, %eax
addq $0xa8, %rsp
popq %rbx
popq %r14
retq
movq %rax, %rbx
movq 0x48(%rsp), %rdi
cmpq %r14, %rdi
je 0x2eaf
callq 0x2150
jmp 0x2eaf
jmp 0x2eac
jmp 0x2ea2
movq %rax, %rbx
movq 0x68(%rsp), %rdi
cmpq %r14, %rdi
jne 0x2ebd
jmp 0x2ec2
movq %rax, %rbx
jmp 0x2ec2
movq %rax, %rbx
jmp 0x2ed5
movq %rax, %rbx
leaq 0x18(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x2ec2
callq 0x2150
leaq 0x38(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x2ed5
callq 0x2150
leaq 0x98(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x2eeb
callq 0x2150
movq %rbx, %rdi
callq 0x2250
nop