// File: /workspace/github_cpp_makefile_star2_O3/lvandeve[P]lodepng/lodepng_unittest.cpp
// Function: testCompressStringZlib(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, bool)
void testCompressStringZlib(const std::string& text, bool compressible) {
  if(text.size() < 500) std::cout << "compress test with text: " << text << std::endl;
  else std::cout << "compress test with text length: " << text.size() << std::endl;

  std::vector<unsigned char> in(text.size());
  for(size_t i = 0; i < text.size(); i++) in[i] = (unsigned char)text[i];
  unsigned char* out = 0;
  size_t outsize = 0;
  unsigned error = 0;

  error = lodepng_zlib_compress(&out, &outsize, in.empty() ? 0 : &in[0], in.size(), &lodepng_default_compress_settings);
  ASSERT_NO_PNG_ERROR(error);
  if(compressible) assertTrue(outsize < in.size());

  unsigned char* out2 = 0;
  size_t outsize2 = 0;

  error = lodepng_zlib_decompress(&out2, &outsize2, out, outsize, &lodepng_default_decompress_settings);
  ASSERT_NO_PNG_ERROR(error);
  ASSERT_EQUALS(outsize2, in.size());
  for(size_t i = 0; i < in.size(); i++) ASSERT_EQUALS(in[i], out2[i]);

  free(out);
  free(out2);
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x118, %rsp            # imm = 0x118
movl %esi, %ebx
movq %rdi, %r14
cmpq $0x1f3, 0x8(%rdi)       # imm = 0x1F3
ja 0x1ed55
movq 0x952a8(%rip), %r15     # 0xb3fd8
leaq 0x57d89(%rip), %rsi     # 0x76ac0
movl $0x19, %edx
movq %r15, %rdi
callq 0x2280
movq (%r14), %rsi
movq 0x8(%r14), %rdx
movq %r15, %rdi
callq 0x2280
jmp 0x1ed7c
movq 0x9527c(%rip), %r15     # 0xb3fd8
leaq 0x57d77(%rip), %rsi     # 0x76ada
movl $0x20, %edx
movq %r15, %rdi
callq 0x2280
movq 0x8(%r14), %rsi
movq %r15, %rdi
callq 0x2160
movq %rax, %r15
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x2220
movsbl %al, %esi
movq %r15, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x2170
movq 0x8(%r14), %rsi
leaq 0x20(%rsp), %rdx
movb $0x0, (%rdx)
leaq 0xa0(%rsp), %rdi
movq %rsp, %rcx
callq 0x7076e
cmpq $0x0, 0x8(%r14)
je 0x1ede5
xorl %eax, %eax
movq (%r14), %rcx
movb (%rcx,%rax), %cl
movq 0xa0(%rsp), %rdx
movb %cl, (%rdx,%rax)
incq %rax
cmpq 0x8(%r14), %rax
jb 0x1edcb
xorl %eax, %eax
leaq 0xd0(%rsp), %rdi
movq %rax, (%rdi)
leaq 0xc8(%rsp), %rsi
movq %rax, (%rsi)
movq 0xa0(%rsp), %rdx
movq 0xa8(%rsp), %rcx
subq %rdx, %rcx
cmoveq %rax, %rdx
leaq 0x5351d(%rip), %r8      # 0x72338
callq 0x5195
movl %eax, %ebp
leaq 0x70(%rsp), %r12
movq %r12, -0x10(%r12)
leaq 0x5754a(%rip), %rsi     # 0x7637d
leaq 0x57548(%rip), %rdx     # 0x76382
leaq 0x60(%rsp), %rdi
callq 0x14f6e
leaq 0x10(%rsp), %rax
movq %rax, -0x10(%rax)
movq 0x60(%rsp), %rsi
movq 0x68(%rsp), %rdx
addq %rsi, %rdx
movq %rsp, %rdi
callq 0x1518a
leaq 0x57c92(%rip), %rsi     # 0x76afb
movq %rsp, %rdi
callq 0x23e0
leaq 0x50(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x588e5(%rip), %rdx     # 0x77766
leaq 0x40(%rsp), %rdi
movq %rdx, %rsi
callq 0x14f6e
movq 0x48(%rsp), %r14
testq %r14, %r14
je 0x1eed9
leaq 0x108(%rsp), %r13
movq %r13, -0x10(%r13)
leaq 0x588bb(%rip), %rdx     # 0x77766
leaq 0xf8(%rsp), %rdi
movq %rdx, %rsi
callq 0x14f6e
leaq 0x5aa83(%rip), %rsi     # 0x79945
leaq 0x80(%rsp), %rdi
leaq 0xf8(%rsp), %rdx
callq 0x70423
jmp 0x1eefc
leaq 0x90(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x5887a(%rip), %rdx     # 0x77766
leaq 0x80(%rsp), %rdi
movq %rdx, %rsi
callq 0x14f6e
leaq 0x20(%rsp), %rdi
movq %rsp, %rsi
leaq 0x80(%rsp), %rdx
callq 0x70057
leaq 0x20(%rsp), %rsi
movl %ebp, %edi
callq 0x16314
leaq 0x30(%rsp), %r13
movq -0x10(%r13), %rdi
cmpq %r13, %rdi
je 0x1ef30
callq 0x2210
leaq 0x90(%rsp), %rbp
movq -0x10(%rbp), %rdi
cmpq %rbp, %rdi
je 0x1ef46
callq 0x2210
testq %r14, %r14
je 0x1ef61
leaq 0x108(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x1ef61
callq 0x2210
movq 0x40(%rsp), %rdi
leaq 0x50(%rsp), %rax
cmpq %rax, %rdi
je 0x1ef75
callq 0x2210
movq (%rsp), %rdi
leaq 0x10(%rsp), %rax
cmpq %rax, %rdi
je 0x1ef88
callq 0x2210
movq 0x60(%rsp), %rdi
cmpq %r12, %rdi
je 0x1ef97
callq 0x2210
testb %bl, %bl
je 0x1efef
movq 0xc8(%rsp), %rbx
movq 0xa0(%rsp), %r15
movq 0xa8(%rsp), %r14
leaq 0x20(%rsp), %rdi
movq %r13, (%rdi)
leaq 0x587a4(%rip), %rdx     # 0x77766
movq %rdx, %rsi
callq 0x14f6e
subq %r15, %r14
xorl %edi, %edi
cmpq %r14, %rbx
setb %dil
leaq 0x20(%rsp), %rsi
callq 0x162a1
movq 0x20(%rsp), %rdi
cmpq %r13, %rdi
je 0x1efef
callq 0x2210
xorl %eax, %eax
leaq 0xb8(%rsp), %rdi
movq %rax, (%rdi)
leaq 0xc0(%rsp), %rsi
movq %rax, (%rsi)
movq 0xd0(%rsp), %rdx
movq 0xc8(%rsp), %rcx
leaq 0x5334a(%rip), %r8      # 0x72368
callq 0x4fb8
movl %eax, %ebx
leaq 0x60(%rsp), %rdi
movq %r12, (%rdi)
leaq 0x57349(%rip), %rsi     # 0x7637d
leaq 0x57347(%rip), %rdx     # 0x76382
callq 0x14f6e
movq %rsp, %rdi
leaq 0x10(%rsp), %rax
movq %rax, (%rdi)
movq 0x60(%rsp), %rsi
movq 0x68(%rsp), %rdx
addq %rsi, %rdx
callq 0x1518a
leaq 0x57a9c(%rip), %rsi     # 0x76b00
movq %rsp, %rdi
callq 0x23e0
leaq 0x40(%rsp), %rdi
leaq 0x50(%rsp), %rax
movq %rax, (%rdi)
leaq 0x586e6(%rip), %rdx     # 0x77766
movq %rdx, %rsi
callq 0x14f6e
movq 0x48(%rsp), %r14
testq %r14, %r14
je 0x1f0d3
leaq 0xe8(%rsp), %r15
movq %r15, -0x10(%r15)
leaq 0x586c1(%rip), %rdx     # 0x77766
leaq 0xd8(%rsp), %rdi
movq %rdx, %rsi
callq 0x14f6e
leaq 0x5a889(%rip), %rsi     # 0x79945
leaq 0x80(%rsp), %rdi
leaq 0xd8(%rsp), %rdx
callq 0x70423
jmp 0x1f0ed
leaq 0x80(%rsp), %rdi
movq %rbp, (%rdi)
leaq 0x58681(%rip), %rdx     # 0x77766
movq %rdx, %rsi
callq 0x14f6e
leaq 0x20(%rsp), %rdi
movq %rsp, %rsi
leaq 0x80(%rsp), %rdx
callq 0x70057
leaq 0x20(%rsp), %rsi
movl %ebx, %edi
callq 0x16314
movq 0x20(%rsp), %rdi
cmpq %r13, %rdi
je 0x1f11d
callq 0x2210
movq 0x80(%rsp), %rdi
cmpq %rbp, %rdi
je 0x1f12f
callq 0x2210
testq %r14, %r14
je 0x1f14a
leaq 0xe8(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x1f14a
callq 0x2210
movq 0x40(%rsp), %rdi
leaq 0x50(%rsp), %rax
cmpq %rax, %rdi
je 0x1f15e
callq 0x2210
movq (%rsp), %rdi
leaq 0x10(%rsp), %rax
cmpq %rax, %rdi
je 0x1f171
callq 0x2210
movq 0x60(%rsp), %rdi
cmpq %r12, %rdi
je 0x1f180
callq 0x2210
movq 0xc0(%rsp), %rsi
movq 0xa0(%rsp), %rax
movq 0xa8(%rsp), %rcx
movq %rcx, %rdx
subq %rax, %rdx
cmpq %rdx, %rsi
jne 0x1f45b
cmpq %rax, %rcx
je 0x1f1d9
movq 0xb8(%rsp), %rcx
xorl %ebx, %ebx
cmpq $0x1, %rsi
movl $0x0, %edx
sbbq %rsi, %rdx
xorl %esi, %esi
movb (%rax,%rsi), %dil
cmpb (%rcx,%rsi), %dil
jne 0x1f217
incq %rsi
decq %rbx
cmpq %rbx, %rdx
jne 0x1f1c4
movq 0xd0(%rsp), %rdi
callq 0x22a0
movq 0xb8(%rsp), %rdi
callq 0x22a0
movq 0xa0(%rsp), %rdi
testq %rdi, %rdi
je 0x1f205
callq 0x2210
addq $0x118, %rsp            # imm = 0x118
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x40(%rsp), %rdi
leaq 0x50(%rsp), %rax
movq %rax, (%rdi)
leaq 0x57152(%rip), %rsi     # 0x7637d
leaq 0x57150(%rip), %rdx     # 0x76382
callq 0x14f6e
leaq 0x80(%rsp), %rdi
movq %rbp, (%rdi)
movq 0x40(%rsp), %rsi
movq 0x48(%rsp), %rdx
addq %rsi, %rdx
callq 0x1518a
leaq 0x578b9(%rip), %rsi     # 0x76b14
leaq 0x80(%rsp), %rdi
callq 0x23e0
leaq 0x60(%rsp), %rdi
movq %r12, (%rdi)
movq 0x80(%rsp), %rsi
movq 0x88(%rsp), %rdx
addq %rsi, %rdx
callq 0x1518a
leaq 0x5a6b6(%rip), %rsi     # 0x79945
leaq 0x60(%rsp), %rdi
callq 0x23e0
movq %rsp, %rdi
leaq 0x10(%rsp), %rax
movq %rax, (%rdi)
movq 0x60(%rsp), %rsi
movq 0x68(%rsp), %rdx
addq %rsi, %rdx
callq 0x1518a
leaq 0x5785c(%rip), %rsi     # 0x76b19
movq %rsp, %rdi
callq 0x23e0
leaq 0x20(%rsp), %rdi
movq %r13, (%rdi)
movq (%rsp), %rsi
movq 0x8(%rsp), %rdx
addq %rsi, %rdx
callq 0x1518a
leaq 0x570e0(%rip), %rsi     # 0x763c5
leaq 0x20(%rsp), %rdi
callq 0x23e0
movq 0x20(%rsp), %rsi
movq 0x28(%rsp), %rdx
movq 0x94cd8(%rip), %rdi     # 0xb3fd8
callq 0x2280
movq 0x20(%rsp), %rdi
cmpq %r13, %rdi
je 0x1f314
callq 0x2210
movq (%rsp), %rdi
leaq 0x10(%rsp), %rax
cmpq %rax, %rdi
je 0x1f327
callq 0x2210
movq 0x60(%rsp), %rdi
cmpq %r12, %rdi
je 0x1f336
callq 0x2210
movq 0x80(%rsp), %rdi
cmpq %rbp, %rdi
je 0x1f348
callq 0x2210
movq 0x40(%rsp), %rdi
leaq 0x50(%rsp), %rax
cmpq %rax, %rdi
je 0x1f35c
callq 0x2210
movq 0x94c75(%rip), %rdi     # 0xb3fd8
leaq 0x7fd43(%rip), %rsi     # 0x9f0ad
movl $0x9, %edx
callq 0x2280
movq 0xa0(%rsp), %rsi
subq %rbx, %rsi
leaq 0x20(%rsp), %rdi
callq 0x16232
movq 0x20(%rsp), %rsi
movq 0x28(%rsp), %rdx
movq 0x94c3e(%rip), %rdi     # 0xb3fd8
callq 0x2280
movq %rax, %r15
leaq 0x57034(%rip), %rsi     # 0x763dd
movl $0x9, %edx
movq %rax, %rdi
callq 0x2280
movq 0xb8(%rsp), %rsi
subq %rbx, %rsi
movq %rsp, %rdi
callq 0x16232
movq (%rsp), %rsi
movq 0x8(%rsp), %rdx
movq %r15, %rdi
callq 0x2280
movq %rax, %rbx
leaq 0x56ee0(%rip), %rsi     # 0x762c4
movl $0x2, %edx
movq %rax, %rdi
callq 0x2280
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x2220
movsbl %al, %esi
movq %rbx, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x2170
movq (%rsp), %rdi
leaq 0x10(%rsp), %rax
cmpq %rax, %rdi
je 0x1f42b
callq 0x2210
movq 0x20(%rsp), %rdi
cmpq %r13, %rdi
je 0x1f43a
callq 0x2210
movl $0x4, %edi
callq 0x2120
movl $0x1, (%rax)
movq 0x94b67(%rip), %rsi     # 0xb3fb8
movq %rax, %rdi
xorl %edx, %edx
callq 0x2390
leaq 0x40(%rsp), %rdi
leaq 0x50(%rsp), %rax
movq %rax, (%rdi)
leaq 0x56f0e(%rip), %rsi     # 0x7637d
leaq 0x56f0c(%rip), %rdx     # 0x76382
callq 0x14f6e
leaq 0x80(%rsp), %rdi
movq %rbp, (%rdi)
movq 0x40(%rsp), %rsi
movq 0x48(%rsp), %rdx
addq %rsi, %rdx
callq 0x1518a
leaq 0x57666(%rip), %rsi     # 0x76b05
leaq 0x80(%rsp), %rdi
callq 0x23e0
leaq 0x60(%rsp), %rdi
movq %r12, (%rdi)
movq 0x80(%rsp), %rsi
movq 0x88(%rsp), %rdx
addq %rsi, %rdx
callq 0x1518a
leaq 0x5a472(%rip), %rsi     # 0x79945
leaq 0x60(%rsp), %rdi
callq 0x23e0
movq %rsp, %rdi
leaq 0x10(%rsp), %rax
movq %rax, (%rdi)
movq 0x60(%rsp), %rsi
movq 0x68(%rsp), %rdx
addq %rsi, %rdx
callq 0x1518a
leaq 0x57609(%rip), %rsi     # 0x76b0a
movq %rsp, %rdi
callq 0x23e0
leaq 0x20(%rsp), %rdi
movq %r13, (%rdi)
movq (%rsp), %rsi
movq 0x8(%rsp), %rdx
addq %rsi, %rdx
callq 0x1518a
leaq 0x56e9c(%rip), %rsi     # 0x763c5
leaq 0x20(%rsp), %rdi
callq 0x23e0
movq 0x20(%rsp), %rsi
movq 0x28(%rsp), %rdx
movq 0x94a94(%rip), %rdi     # 0xb3fd8
callq 0x2280
movq 0x20(%rsp), %rdi
cmpq %r13, %rdi
je 0x1f558
callq 0x2210
movq (%rsp), %rdi
leaq 0x10(%rsp), %rax
cmpq %rax, %rdi
je 0x1f56b
callq 0x2210
movq 0x60(%rsp), %rdi
cmpq %r12, %rdi
je 0x1f57a
callq 0x2210
movq 0x80(%rsp), %rdi
cmpq %rbp, %rdi
je 0x1f58c
callq 0x2210
movq 0x40(%rsp), %rdi
leaq 0x50(%rsp), %rax
cmpq %rax, %rdi
je 0x1f5a0
callq 0x2210
movq 0x94a31(%rip), %rdi     # 0xb3fd8
leaq 0x7faff(%rip), %rsi     # 0x9f0ad
movl $0x9, %edx
callq 0x2280
leaq 0x20(%rsp), %rdi
leaq 0xc0(%rsp), %rsi
callq 0x703b5
movq 0x20(%rsp), %rsi
movq 0x28(%rsp), %rdx
movq 0x949fd(%rip), %rdi     # 0xb3fd8
callq 0x2280
movq %rax, %rbx
leaq 0x56df3(%rip), %rsi     # 0x763dd
movl $0x9, %edx
movq %rax, %rdi
callq 0x2280
movq 0xa8(%rsp), %rax
subq 0xa0(%rsp), %rax
leaq 0x60(%rsp), %rsi
movq %rax, (%rsi)
movq %rsp, %rdi
callq 0x703b5
movq (%rsp), %rsi
movq 0x8(%rsp), %rdx
movq %rbx, %rdi
callq 0x2280
movq %rax, %rbx
leaq 0x56c92(%rip), %rsi     # 0x762c4
movl $0x2, %edx
movq %rax, %rdi
callq 0x2280
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x2220
movsbl %al, %esi
movq %rbx, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x2170
movq (%rsp), %rdi
leaq 0x10(%rsp), %rax
cmpq %rax, %rdi
je 0x1f679
callq 0x2210
movq 0x20(%rsp), %rdi
cmpq %r13, %rdi
je 0x1f688
callq 0x2210
movl $0x4, %edi
callq 0x2120
movl $0x1, (%rax)
movq 0x94919(%rip), %rsi     # 0xb3fb8
movq %rax, %rdi
xorl %edx, %edx
callq 0x2390
jmp 0x1f6ba
jmp 0x1f736
jmp 0x1f736
jmp 0x1f8b1
movq %rax, %rbx
movq (%rsp), %rdi
leaq 0x10(%rsp), %rax
cmpq %rax, %rdi
je 0x1f739
callq 0x2210
jmp 0x1f739
jmp 0x1f736
jmp 0x1f6ee
jmp 0x1f6ee
jmp 0x1f736
jmp 0x1f70e
jmp 0x1f8b1
jmp 0x1f70e
jmp 0x1f8b1
jmp 0x1f751
jmp 0x1f6ee
jmp 0x1f751
movq %rax, %rbx
movq 0x20(%rsp), %rdi
cmpq %r13, %rdi
je 0x1f711
callq 0x2210
jmp 0x1f711
jmp 0x1f881
jmp 0x1f70e
jmp 0x1f881
movq %rax, %rbx
movq (%rsp), %rdi
leaq 0x10(%rsp), %rax
cmpq %rax, %rdi
je 0x1f754
callq 0x2210
jmp 0x1f754
jmp 0x1f898
jmp 0x1f751
jmp 0x1f7a0
jmp 0x1f7a0
jmp 0x1f8b1
movq %rax, %rbx
movq 0x20(%rsp), %rdi
cmpq %r13, %rdi
jne 0x1f8aa
jmp 0x1f8b4
jmp 0x1f8b1
movq %rax, %rbx
movq 0x60(%rsp), %rdi
cmpq %r12, %rdi
je 0x1f884
callq 0x2210
jmp 0x1f884
movq %rax, %rbx
movq 0xd8(%rsp), %rdi
cmpq %r15, %rdi
jne 0x1f835
jmp 0x1f83a
jmp 0x1f7a0
movq %rax, %rbx
movq 0xf8(%rsp), %rdi
cmpq %r13, %rdi
jne 0x1f835
jmp 0x1f83a
movq %rax, %rbx
jmp 0x1f83a
movq %rax, %rbx
movq 0x20(%rsp), %rdi
cmpq %r13, %rdi
je 0x1f7bf
callq 0x2210
jmp 0x1f7bf
movq %rax, %rbx
movq 0x80(%rsp), %rdi
cmpq %rbp, %rdi
je 0x1f7d1
callq 0x2210
testq %r14, %r14
je 0x1f83a
leaq 0xe8(%rsp), %rax
jmp 0x1f82c
jmp 0x1f852
jmp 0x1f852
jmp 0x1f86a
jmp 0x1f8b1
movq %rax, %rbx
leaq 0x30(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x1f809
callq 0x2210
jmp 0x1f809
movq %rax, %rbx
leaq 0x90(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x1f81f
callq 0x2210
testq %r14, %r14
je 0x1f83a
leaq 0x108(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x1f83a
callq 0x2210
movq 0x40(%rsp), %rdi
leaq 0x50(%rsp), %rax
cmpq %rax, %rdi
je 0x1f855
callq 0x2210
jmp 0x1f855
jmp 0x1f852
movq %rax, %rbx
movq (%rsp), %rdi
leaq 0x10(%rsp), %rax
cmpq %rax, %rdi
je 0x1f86d
callq 0x2210
jmp 0x1f86d
movq %rax, %rbx
movq 0x60(%rsp), %rdi
cmpq %r12, %rdi
jne 0x1f8aa
jmp 0x1f8b4
jmp 0x1f8b1
jmp 0x1f8b1
jmp 0x1f8b1
jmp 0x1f881
movq %rax, %rbx
movq 0x80(%rsp), %rdi
cmpq %rbp, %rdi
je 0x1f89b
callq 0x2210
jmp 0x1f89b
movq %rax, %rbx
movq 0x40(%rsp), %rdi
leaq 0x50(%rsp), %rax
cmpq %rax, %rdi
je 0x1f8b4
callq 0x2210
jmp 0x1f8b4
movq %rax, %rbx
movq 0xa0(%rsp), %rdi
testq %rdi, %rdi
je 0x1f8c6
callq 0x2210
movq %rbx, %rdi
callq 0x23c0