// File: /workspace/github_cpp_makefile_star2_O2/lvandeve[P]lodepng/lodepng_unittest.cpp
// Function: testHuffmanCodeLengths()
void testHuffmanCodeLengths() {
  bool atleasttwo = true; //LodePNG generates at least two, instead of at least one, symbol
  if(atleasttwo) {
    doTestHuffmanCodeLengths("1 1", "0 0", 16);
    doTestHuffmanCodeLengths("1 1 0", "0 0 0", 16);
    doTestHuffmanCodeLengths("1 1", "1 0", 16);
    doTestHuffmanCodeLengths("1 1 0 0 0 0 0 0 0", "0 0 0 0 0 0 0 0 0", 16);
    doTestHuffmanCodeLengths("1 1 0 0 0 0 0 0 0", "1 0 0 0 0 0 0 0 0", 16);
    doTestHuffmanCodeLengths("1 1 0 0 0 0 0 0 0", "0 1 0 0 0 0 0 0 0", 16);
    doTestHuffmanCodeLengths("1 0 0 0 0 0 0 0 1", "0 0 0 0 0 0 0 0 1", 16);
    doTestHuffmanCodeLengths("0 0 0 0 0 0 0 1 1", "0 0 0 0 0 0 0 1 1", 16);
  } else {
    doTestHuffmanCodeLengths("1 0", "0 0", 16);
    doTestHuffmanCodeLengths("1 0 0", "0 0 0", 16);
    doTestHuffmanCodeLengths("1 0", "1 0", 16);
    doTestHuffmanCodeLengths("1", "1", 16);
    doTestHuffmanCodeLengths("1", "0", 16);
  }
  doTestHuffmanCodeLengths("1 1", "1 1", 16);
  doTestHuffmanCodeLengths("1 1", "1 100", 16);
  doTestHuffmanCodeLengths("2 2 1", "1 2 3", 16);
  doTestHuffmanCodeLengths("2 1 2", "2 3 1", 16);
  doTestHuffmanCodeLengths("1 2 2", "3 1 2", 16);
  doTestHuffmanCodeLengths("3 3 2 1", "1 30 31 32", 16);
  doTestHuffmanCodeLengths("2 2 2 2", "1 30 31 32", 2);
  doTestHuffmanCodeLengths("5 5 4 4 4 3 3 1", "1 2 3 4 5 6 7 500", 16);
}

// Assembly:
pushq %rbx
subq $0x50, %rsp
leaq 0x455b7(%rip), %rsi     # 0x60d8d
leaq 0x30(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x20c0
leaq 0x45547(%rip), %rsi     # 0x60d33
leaq 0x10(%rsp), %rdi
leaq 0xe(%rsp), %rdx
callq 0x20c0
leaq 0x30(%rsp), %rdi
leaq 0x10(%rsp), %rsi
pushq $0x10
popq %rdx
callq 0x1b3b7
leaq 0x10(%rsp), %rdi
callq 0x2270
leaq 0x30(%rsp), %rdi
callq 0x2270
leaq 0x454e5(%rip), %rsi     # 0x60d0d
leaq 0x30(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x20c0
leaq 0x454f3(%rip), %rsi     # 0x60d31
leaq 0x10(%rsp), %rdi
leaq 0xe(%rsp), %rdx
callq 0x20c0
leaq 0x30(%rsp), %rdi
leaq 0x10(%rsp), %rsi
pushq $0x10
popq %rdx
callq 0x1b3b7
leaq 0x10(%rsp), %rdi
callq 0x2270
leaq 0x30(%rsp), %rdi
callq 0x2270
leaq 0x45513(%rip), %rsi     # 0x60d8d
leaq 0x30(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x20c0
leaq 0x4547f(%rip), %rsi     # 0x60d0f
leaq 0x10(%rsp), %rdi
leaq 0xe(%rsp), %rdx
callq 0x20c0
leaq 0x30(%rsp), %rdi
leaq 0x10(%rsp), %rsi
pushq $0x10
popq %rdx
callq 0x1b3b7
leaq 0x10(%rsp), %rdi
callq 0x2270
leaq 0x30(%rsp), %rdi
callq 0x2270
leaq 0x45447(%rip), %rsi     # 0x60d13
leaq 0x30(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x20c0
leaq 0x45443(%rip), %rsi     # 0x60d25
leaq 0x10(%rsp), %rdi
leaq 0xe(%rsp), %rdx
callq 0x20c0
leaq 0x30(%rsp), %rdi
leaq 0x10(%rsp), %rsi
pushq $0x10
popq %rdx
callq 0x1b3b7
leaq 0x10(%rsp), %rdi
callq 0x2270
leaq 0x30(%rsp), %rdi
callq 0x2270
leaq 0x453f5(%rip), %rsi     # 0x60d13
leaq 0x30(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x20c0
leaq 0x45403(%rip), %rsi     # 0x60d37
leaq 0x10(%rsp), %rdi
leaq 0xe(%rsp), %rdx
callq 0x20c0
leaq 0x30(%rsp), %rdi
leaq 0x10(%rsp), %rsi
pushq $0x10
popq %rdx
callq 0x1b3b7
leaq 0x10(%rsp), %rdi
callq 0x2270
leaq 0x30(%rsp), %rdi
callq 0x2270
leaq 0x453a3(%rip), %rsi     # 0x60d13
leaq 0x30(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x20c0
leaq 0x453c3(%rip), %rsi     # 0x60d49
leaq 0x10(%rsp), %rdi
leaq 0xe(%rsp), %rdx
callq 0x20c0
leaq 0x30(%rsp), %rdi
leaq 0x10(%rsp), %rsi
pushq $0x10
popq %rdx
callq 0x1b3b7
leaq 0x10(%rsp), %rdi
callq 0x2270
leaq 0x30(%rsp), %rdi
callq 0x2270
leaq 0x45399(%rip), %rsi     # 0x60d5b
leaq 0x30(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x20c0
leaq 0x45395(%rip), %rsi     # 0x60d6d
leaq 0x10(%rsp), %rdi
leaq 0xe(%rsp), %rdx
callq 0x20c0
leaq 0x30(%rsp), %rdi
leaq 0x10(%rsp), %rsi
pushq $0x10
popq %rdx
callq 0x1b3b7
leaq 0x10(%rsp), %rdi
callq 0x2270
leaq 0x30(%rsp), %rdi
callq 0x2270
leaq 0x4536b(%rip), %rsi     # 0x60d7f
leaq 0x30(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x20c0
leaq 0x45355(%rip), %rsi     # 0x60d7f
leaq 0x10(%rsp), %rdi
leaq 0xe(%rsp), %rdx
callq 0x20c0
leaq 0x30(%rsp), %rdi
leaq 0x10(%rsp), %rsi
pushq $0x10
popq %rdx
callq 0x1b3b7
leaq 0x10(%rsp), %rdi
callq 0x2270
leaq 0x30(%rsp), %rdi
callq 0x2270
leaq 0x45327(%rip), %rsi     # 0x60d8d
leaq 0x30(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x20c0
leaq 0x45311(%rip), %rsi     # 0x60d8d
leaq 0x10(%rsp), %rdi
leaq 0xe(%rsp), %rdx
callq 0x20c0
leaq 0x30(%rsp), %rdi
leaq 0x10(%rsp), %rsi
pushq $0x10
popq %rdx
callq 0x1b3b7
leaq 0x10(%rsp), %rdi
callq 0x2270
leaq 0x30(%rsp), %rdi
callq 0x2270
leaq 0x452d5(%rip), %rsi     # 0x60d8d
leaq 0x30(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x20c0
leaq 0x452c3(%rip), %rsi     # 0x60d91
leaq 0x10(%rsp), %rdi
leaq 0xe(%rsp), %rdx
callq 0x20c0
leaq 0x30(%rsp), %rdi
leaq 0x10(%rsp), %rsi
pushq $0x10
popq %rdx
callq 0x1b3b7
leaq 0x10(%rsp), %rdi
callq 0x2270
leaq 0x30(%rsp), %rdi
callq 0x2270
leaq 0x4528d(%rip), %rsi     # 0x60d97
leaq 0x30(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x20c0
leaq 0x4527d(%rip), %rsi     # 0x60d9d
leaq 0x10(%rsp), %rdi
leaq 0xe(%rsp), %rdx
callq 0x20c0
leaq 0x30(%rsp), %rdi
leaq 0x10(%rsp), %rsi
pushq $0x10
popq %rdx
callq 0x1b3b7
leaq 0x10(%rsp), %rdi
callq 0x2270
leaq 0x30(%rsp), %rdi
callq 0x2270
leaq 0x45247(%rip), %rsi     # 0x60da3
leaq 0x30(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x20c0
leaq 0x45237(%rip), %rsi     # 0x60da9
leaq 0x10(%rsp), %rdi
leaq 0xe(%rsp), %rdx
callq 0x20c0
leaq 0x30(%rsp), %rdi
leaq 0x10(%rsp), %rsi
pushq $0x10
popq %rdx
callq 0x1b3b7
leaq 0x10(%rsp), %rdi
callq 0x2270
leaq 0x30(%rsp), %rdi
callq 0x2270
leaq 0x45201(%rip), %rsi     # 0x60daf
leaq 0x30(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x20c0
leaq 0x451f1(%rip), %rsi     # 0x60db5
leaq 0x10(%rsp), %rdi
leaq 0xe(%rsp), %rdx
callq 0x20c0
leaq 0x30(%rsp), %rdi
leaq 0x10(%rsp), %rsi
pushq $0x10
popq %rdx
callq 0x1b3b7
leaq 0x10(%rsp), %rdi
callq 0x2270
leaq 0x30(%rsp), %rdi
callq 0x2270
leaq 0x451bb(%rip), %rsi     # 0x60dbb
leaq 0x30(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x20c0
leaq 0x451ad(%rip), %rsi     # 0x60dc3
leaq 0x10(%rsp), %rdi
leaq 0xe(%rsp), %rdx
callq 0x20c0
leaq 0x30(%rsp), %rdi
leaq 0x10(%rsp), %rsi
pushq $0x10
popq %rdx
callq 0x1b3b7
leaq 0x10(%rsp), %rdi
callq 0x2270
leaq 0x30(%rsp), %rdi
callq 0x2270
leaq 0x4517c(%rip), %rsi     # 0x60dce
leaq 0x30(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x20c0
leaq 0x4515b(%rip), %rsi     # 0x60dc3
leaq 0x10(%rsp), %rdi
leaq 0xe(%rsp), %rdx
callq 0x20c0
leaq 0x30(%rsp), %rdi
leaq 0x10(%rsp), %rsi
pushq $0x2
popq %rdx
callq 0x1b3b7
leaq 0x10(%rsp), %rdi
callq 0x2270
leaq 0x30(%rsp), %rdi
callq 0x2270
leaq 0x45132(%rip), %rsi     # 0x60dd6
leaq 0x30(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x20c0
leaq 0x4512c(%rip), %rsi     # 0x60de6
leaq 0x10(%rsp), %rdi
leaq 0xe(%rsp), %rdx
callq 0x20c0
leaq 0x30(%rsp), %rdi
leaq 0x10(%rsp), %rsi
pushq $0x10
popq %rdx
callq 0x1b3b7
leaq 0x10(%rsp), %rdi
callq 0x2270
leaq 0x30(%rsp), %rdi
callq 0x2270
addq $0x50, %rsp
popq %rbx
retq
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0x2270
jmp 0x1be1d
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0x2270
jmp 0x1be34
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0x2270
jmp 0x1be4b
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0x2270
jmp 0x1be62
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0x2270
jmp 0x1be79
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0x2270
jmp 0x1be90
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0x2270
jmp 0x1bea7
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0x2270
jmp 0x1bebe
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0x2270
jmp 0x1becf
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0x2270
jmp 0x1bee0
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0x2270
jmp 0x1beef
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0x2270
jmp 0x1bf02
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0x2270
jmp 0x1bf13
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0x2270
jmp 0x1bf24
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0x2270
jmp 0x1bf35
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0x2270
jmp 0x1bf4f
jmp 0x1bf41
movq %rax, %rbx
leaq 0x30(%rsp), %rdi
callq 0x2270
jmp 0x1bf44
jmp 0x1bf41
movq %rax, %rbx
leaq 0x30(%rsp), %rdi
callq 0x2270
jmp 0x1bf44
jmp 0x1bf41
movq %rax, %rbx
leaq 0x30(%rsp), %rdi
callq 0x2270
jmp 0x1bf44
jmp 0x1bf41
movq %rax, %rbx
leaq 0x30(%rsp), %rdi
callq 0x2270
jmp 0x1bf44
jmp 0x1bf41
movq %rax, %rbx
leaq 0x30(%rsp), %rdi
callq 0x2270
jmp 0x1bf44
jmp 0x1bf41
movq %rax, %rbx
leaq 0x30(%rsp), %rdi
callq 0x2270
jmp 0x1bf44
jmp 0x1bf41
movq %rax, %rbx
leaq 0x30(%rsp), %rdi
callq 0x2270
jmp 0x1bf44
jmp 0x1bf41
movq %rax, %rbx
leaq 0x30(%rsp), %rdi
callq 0x2270
jmp 0x1bf44
jmp 0x1bf41
movq %rax, %rbx
leaq 0x30(%rsp), %rdi
callq 0x2270
jmp 0x1bf44
jmp 0x1bf41
movq %rax, %rbx
leaq 0x30(%rsp), %rdi
callq 0x2270
jmp 0x1bf44
movq %rax, %rbx
leaq 0x30(%rsp), %rdi
callq 0x2270
jmp 0x1bf44
jmp 0x1bf41
jmp 0x1bf41
movq %rax, %rbx
leaq 0x30(%rsp), %rdi
callq 0x2270
jmp 0x1bf44
jmp 0x1bf41
movq %rax, %rbx
leaq 0x30(%rsp), %rdi
callq 0x2270
jmp 0x1bf44
jmp 0x1bf41
movq %rax, %rbx
leaq 0x30(%rsp), %rdi
callq 0x2270
jmp 0x1bf44
jmp 0x1bf41
movq %rax, %rbx
leaq 0x30(%rsp), %rdi
callq 0x2270
jmp 0x1bf44
movq %rax, %rbx
movq %rbx, %rdi
callq 0x2380
movq %rax, %rbx
leaq 0x30(%rsp), %rdi
callq 0x2270
jmp 0x1bf44
movq %rax, %rdi
callq 0xe6cc