// File: lvandeve[P]lodepng/lodepng_unittest.cpp
// Function: testCompressZlib()
void testCompressZlib() {
  testCompressStringZlib("", false);
  testCompressStringZlib("a", false);
  testCompressStringZlib("aa", false);
  testCompressStringZlib("ababababababababababababababababababababababababababababababababababababababababababab", true);
  testCompressStringZlib("abaaaabaabbbaabbabbababbbbabababbbaabbbaaaabbbbabbbabbbaababbbbbaaabaabbabaaaabbbbbbab", true);
  testCompressStringZlib("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaab", true);
  testCompressStringZlib("omnomnomnomnomnomnomnomnomnomnom", true);
  testCompressStringZlib("the quick brown fox jumps over the lazy dog. the quick brown fox jumps over the lazy dog.", true);
  testCompressStringZlib("abracadabra", false);
  testCompressStringZlib("hello hello hello hello hello hello hello hello hello hello hello?", true);
  testCompressStringZlib("WPgZX2D*um0H::,4/KU\"kt\"Ne\"#Qa.&#<aF9{jag]|{hv,IXez\
\\DKn5zYdV{XxBi=n|1J-TwakWvp[b8|-kOcZ@QkAxJSMeZ0l&<*w0BP/CXM(LFH'", false);
  testCompressStringZlib("asdfhlkhfafsduyfbasiuytfgbiasuidygiausygdifaubsydfsdf", false);
  testCompressStringZlib("418541499849814614617987416457317375467441841687487", true);
  testCompressStringZlib("3.141592653589793238462643383279502884197169399375105820974944592307816406286", true);
  testCompressStringZlib("lodepng_zlib_decompress(&out2, &outsize2, out, outsize, &lodepng_default_decompress_settings);", true);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x2e0, %rsp            # imm = 0x2E0
leaq -0x21(%rbp), %rdi
movq %rdi, -0x270(%rbp)
callq 0x3440
movq -0x270(%rbp), %rdx
leaq 0x7cebb(%rip), %rsi     # 0xb4504
leaq -0x20(%rbp), %rdi
callq 0x3340
jmp 0x37654
leaq -0x20(%rbp), %rdi
xorl %esi, %esi
callq 0x364a0
jmp 0x37661
leaq -0x20(%rbp), %rdi
callq 0x34a8
jmp 0x3766c
leaq -0x21(%rbp), %rdi
callq 0x3290
leaq -0x59(%rbp), %rdi
movq %rdi, -0x278(%rbp)
callq 0x3440
movq -0x278(%rbp), %rdx
leaq 0x898d4(%rip), %rsi     # 0xc0f67
leaq -0x58(%rbp), %rdi
callq 0x3340
jmp 0x3769e
leaq -0x58(%rbp), %rdi
xorl %esi, %esi
callq 0x364a0
jmp 0x376ab
leaq -0x58(%rbp), %rdi
callq 0x34a8
jmp 0x376b6
leaq -0x59(%rbp), %rdi
callq 0x3290
leaq -0x81(%rbp), %rdi
movq %rdi, -0x280(%rbp)
callq 0x3440
movq -0x280(%rbp), %rdx
leaq 0xa0a0b(%rip), %rsi     # 0xd80eb
leaq -0x80(%rbp), %rdi
callq 0x3340
jmp 0x376eb
leaq -0x80(%rbp), %rdi
xorl %esi, %esi
callq 0x364a0
jmp 0x376f8
leaq -0x80(%rbp), %rdi
callq 0x34a8
jmp 0x37703
leaq -0x81(%rbp), %rdi
callq 0x3290
leaq -0xa9(%rbp), %rdi
movq %rdi, -0x288(%rbp)
callq 0x3440
movq -0x288(%rbp), %rdx
leaq 0x7c189(%rip), %rsi     # 0xb38b9
leaq -0xa8(%rbp), %rdi
callq 0x3340
jmp 0x3773e
leaq -0xa8(%rbp), %rdi
movl $0x1, %esi
callq 0x364a0
jmp 0x37751
leaq -0xa8(%rbp), %rdi
callq 0x34a8
jmp 0x3775f
leaq -0xa9(%rbp), %rdi
callq 0x3290
leaq -0xd1(%rbp), %rdi
movq %rdi, -0x290(%rbp)
callq 0x3440
movq -0x290(%rbp), %rdx
leaq 0x7c184(%rip), %rsi     # 0xb3910
leaq -0xd0(%rbp), %rdi
callq 0x3340
jmp 0x3779a
leaq -0xd0(%rbp), %rdi
movl $0x1, %esi
callq 0x364a0
jmp 0x377ad
leaq -0xd0(%rbp), %rdi
callq 0x34a8
jmp 0x377bb
leaq -0xd1(%rbp), %rdi
callq 0x3290
leaq -0xf9(%rbp), %rdi
movq %rdi, -0x298(%rbp)
callq 0x3440
movq -0x298(%rbp), %rdx
leaq 0x7c17f(%rip), %rsi     # 0xb3967
leaq -0xf8(%rbp), %rdi
callq 0x3340
jmp 0x377f6
leaq -0xf8(%rbp), %rdi
movl $0x1, %esi
callq 0x364a0
jmp 0x37809
leaq -0xf8(%rbp), %rdi
callq 0x34a8
jmp 0x37817
leaq -0xf9(%rbp), %rdi
callq 0x3290
leaq -0x121(%rbp), %rdi
movq %rdi, -0x2a0(%rbp)
callq 0x3440
movq -0x2a0(%rbp), %rdx
leaq 0x7c149(%rip), %rsi     # 0xb398d
leaq -0x120(%rbp), %rdi
callq 0x3340
jmp 0x37852
leaq -0x120(%rbp), %rdi
movl $0x1, %esi
callq 0x364a0
jmp 0x37865
leaq -0x120(%rbp), %rdi
callq 0x34a8
jmp 0x37873
leaq -0x121(%rbp), %rdi
callq 0x3290
leaq -0x149(%rbp), %rdi
movq %rdi, -0x2a8(%rbp)
callq 0x3440
movq -0x2a8(%rbp), %rdx
leaq 0x7c10e(%rip), %rsi     # 0xb39ae
leaq -0x148(%rbp), %rdi
callq 0x3340
jmp 0x378ae
leaq -0x148(%rbp), %rdi
movl $0x1, %esi
callq 0x364a0
jmp 0x378c1
leaq -0x148(%rbp), %rdi
callq 0x34a8
jmp 0x378cf
leaq -0x149(%rbp), %rdi
callq 0x3290
leaq -0x171(%rbp), %rdi
movq %rdi, -0x2b0(%rbp)
callq 0x3440
movq -0x2b0(%rbp), %rdx
leaq 0x7c10c(%rip), %rsi     # 0xb3a08
leaq -0x170(%rbp), %rdi
callq 0x3340
jmp 0x3790a
leaq -0x170(%rbp), %rdi
xorl %esi, %esi
callq 0x364a0
jmp 0x3791a
leaq -0x170(%rbp), %rdi
callq 0x34a8
jmp 0x37928
leaq -0x171(%rbp), %rdi
callq 0x3290
leaq -0x199(%rbp), %rdi
movq %rdi, -0x2b8(%rbp)
callq 0x3440
movq -0x2b8(%rbp), %rdx
leaq 0x7c0bf(%rip), %rsi     # 0xb3a14
leaq -0x198(%rbp), %rdi
callq 0x3340
jmp 0x37963
leaq -0x198(%rbp), %rdi
movl $0x1, %esi
callq 0x364a0
jmp 0x37976
leaq -0x198(%rbp), %rdi
callq 0x34a8
jmp 0x37984
leaq -0x199(%rbp), %rdi
callq 0x3290
leaq -0x1c1(%rbp), %rdi
movq %rdi, -0x2c0(%rbp)
callq 0x3440
movq -0x2c0(%rbp), %rdx
leaq 0x7c0a6(%rip), %rsi     # 0xb3a57
leaq -0x1c0(%rbp), %rdi
callq 0x3340
jmp 0x379bf
leaq -0x1c0(%rbp), %rdi
xorl %esi, %esi
callq 0x364a0
jmp 0x379cf
leaq -0x1c0(%rbp), %rdi
callq 0x34a8
jmp 0x379dd
leaq -0x1c1(%rbp), %rdi
callq 0x3290
leaq -0x1e9(%rbp), %rdi
movq %rdi, -0x2c8(%rbp)
callq 0x3440
movq -0x2c8(%rbp), %rdx
leaq 0x7c0c0(%rip), %rsi     # 0xb3aca
leaq -0x1e8(%rbp), %rdi
callq 0x3340
jmp 0x37a18
leaq -0x1e8(%rbp), %rdi
xorl %esi, %esi
callq 0x364a0
jmp 0x37a28
leaq -0x1e8(%rbp), %rdi
callq 0x34a8
jmp 0x37a36
leaq -0x1e9(%rbp), %rdi
callq 0x3290
leaq -0x211(%rbp), %rdi
movq %rdi, -0x2d0(%rbp)
callq 0x3440
movq -0x2d0(%rbp), %rdx
leaq 0x7c09d(%rip), %rsi     # 0xb3b00
leaq -0x210(%rbp), %rdi
callq 0x3340
jmp 0x37a71
leaq -0x210(%rbp), %rdi
movl $0x1, %esi
callq 0x364a0
jmp 0x37a84
leaq -0x210(%rbp), %rdi
callq 0x34a8
jmp 0x37a92
leaq -0x211(%rbp), %rdi
callq 0x3290
leaq -0x239(%rbp), %rdi
movq %rdi, -0x2d8(%rbp)
callq 0x3440
movq -0x2d8(%rbp), %rdx
leaq 0x7c075(%rip), %rsi     # 0xb3b34
leaq -0x238(%rbp), %rdi
callq 0x3340
jmp 0x37acd
leaq -0x238(%rbp), %rdi
movl $0x1, %esi
callq 0x364a0
jmp 0x37ae0
leaq -0x238(%rbp), %rdi
callq 0x34a8
jmp 0x37aee
leaq -0x239(%rbp), %rdi
callq 0x3290
leaq -0x261(%rbp), %rdi
movq %rdi, -0x2e0(%rbp)
callq 0x3440
movq -0x2e0(%rbp), %rdx
leaq 0x7c067(%rip), %rsi     # 0xb3b82
leaq -0x260(%rbp), %rdi
callq 0x3340
jmp 0x37b29
leaq -0x260(%rbp), %rdi
movl $0x1, %esi
callq 0x364a0
jmp 0x37b3c
leaq -0x260(%rbp), %rdi
callq 0x34a8
jmp 0x37b4a
leaq -0x261(%rbp), %rdi
callq 0x3290
addq $0x2e0, %rsp            # imm = 0x2E0
popq %rbp
retq
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
jmp 0x37b86
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x20(%rbp), %rdi
callq 0x34a8
jmp 0x37b84
jmp 0x37b86
leaq -0x21(%rbp), %rdi
callq 0x3290
jmp 0x37eba
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
jmp 0x37bbb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x58(%rbp), %rdi
callq 0x34a8
jmp 0x37bb9
jmp 0x37bbb
leaq -0x59(%rbp), %rdi
callq 0x3290
jmp 0x37eba
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
jmp 0x37bf0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x80(%rbp), %rdi
callq 0x34a8
jmp 0x37bee
jmp 0x37bf0
leaq -0x81(%rbp), %rdi
callq 0x3290
jmp 0x37eba
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
jmp 0x37c2b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0xa8(%rbp), %rdi
callq 0x34a8
jmp 0x37c29
jmp 0x37c2b
leaq -0xa9(%rbp), %rdi
callq 0x3290
jmp 0x37eba
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
jmp 0x37c66
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0xd0(%rbp), %rdi
callq 0x34a8
jmp 0x37c64
jmp 0x37c66
leaq -0xd1(%rbp), %rdi
callq 0x3290
jmp 0x37eba
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
jmp 0x37ca1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0xf8(%rbp), %rdi
callq 0x34a8
jmp 0x37c9f
jmp 0x37ca1
leaq -0xf9(%rbp), %rdi
callq 0x3290
jmp 0x37eba
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
jmp 0x37cdc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x120(%rbp), %rdi
callq 0x34a8
jmp 0x37cda
jmp 0x37cdc
leaq -0x121(%rbp), %rdi
callq 0x3290
jmp 0x37eba
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
jmp 0x37d17
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x148(%rbp), %rdi
callq 0x34a8
jmp 0x37d15
jmp 0x37d17
leaq -0x149(%rbp), %rdi
callq 0x3290
jmp 0x37eba
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
jmp 0x37d52
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x170(%rbp), %rdi
callq 0x34a8
jmp 0x37d50
jmp 0x37d52
leaq -0x171(%rbp), %rdi
callq 0x3290
jmp 0x37eba
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
jmp 0x37d8d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x198(%rbp), %rdi
callq 0x34a8
jmp 0x37d8b
jmp 0x37d8d
leaq -0x199(%rbp), %rdi
callq 0x3290
jmp 0x37eba
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
jmp 0x37dc8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x1c0(%rbp), %rdi
callq 0x34a8
jmp 0x37dc6
jmp 0x37dc8
leaq -0x1c1(%rbp), %rdi
callq 0x3290
jmp 0x37eba
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
jmp 0x37e03
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x1e8(%rbp), %rdi
callq 0x34a8
jmp 0x37e01
jmp 0x37e03
leaq -0x1e9(%rbp), %rdi
callq 0x3290
jmp 0x37eba
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
jmp 0x37e3e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x210(%rbp), %rdi
callq 0x34a8
jmp 0x37e3c
jmp 0x37e3e
leaq -0x211(%rbp), %rdi
callq 0x3290
jmp 0x37eba
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
jmp 0x37e76
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x238(%rbp), %rdi
callq 0x34a8
jmp 0x37e74
jmp 0x37e76
leaq -0x239(%rbp), %rdi
callq 0x3290
jmp 0x37eba
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
jmp 0x37eae
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x260(%rbp), %rdi
callq 0x34a8
jmp 0x37eac
jmp 0x37eae
leaq -0x261(%rbp), %rdi
callq 0x3290
movq -0x30(%rbp), %rdi
callq 0x3430
movq %rax, %rdi
callq 0x1a490
nopl (%rax,%rax)