// File: lvandeve[P]lodepng/pngdetail.cpp
// Function: displayFilterTypes(Data&, Options const&)
void displayFilterTypes(Data& data, const Options& options) {
  std::cout << (options.use_hex ? std::hex: std::dec);
  data.loadFile();
  if(data.error) return;
  const std::vector<unsigned char>& buffer = data.buffer;
  std::vector<std::vector<unsigned char> > types;
  unsigned error = lodepng::getFilterTypesInterlaced(types, buffer);
  if(error) {
    std::cout << "Error getting filter types" << std::endl;
    return;
  }

  if(types.size() == 7) {
    std::cout << "Filter types (Adam7 interlaced):" << std::endl;
    for(int j = 0; j < 7; j++) {
      std::cout << " Pass " << (j + 1) << ": ";
      for(size_t i = 0; i < types[j].size(); i++) {
        std::cout << (int)(types[j][i]);
      }
      std::cout << std::endl;
    }
  } else {
    std::cout << "Filter types: ";
    for(size_t i = 0; i < types[0].size(); i++) {
      std::cout << (int)(types[0][i]);
    }
    std::cout << std::endl;
  }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xf0, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x10(%rbp), %rax
testb $0x1, 0x24(%rax)
je 0x2a1ca
leaq 0x7a8c(%rip), %rax      # 0x31c50
movq %rax, -0x68(%rbp)
jmp 0x2a1d7
leaq 0x7aaf(%rip), %rax      # 0x31c80
movq %rax, -0x68(%rbp)
jmp 0x2a1d7
movq -0x68(%rbp), %rsi
movq 0x1cdee(%rip), %rdi     # 0x46fd0
callq 0x20b0
movq -0x8(%rbp), %rdi
callq 0x31bf0
movq -0x8(%rbp), %rax
cmpl $0x0, 0x2d8(%rax)
je 0x2a202
jmp 0x2a4f6
movq -0x8(%rbp), %rax
addq $0x20, %rax
movq %rax, -0x18(%rbp)
leaq -0x30(%rbp), %rdi
movq %rdi, -0x78(%rbp)
callq 0x22840
movq -0x78(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0x1c070
movl %eax, -0x6c(%rbp)
jmp 0x2a22d
movl -0x6c(%rbp), %eax
movl %eax, -0x34(%rbp)
cmpl $0x0, -0x34(%rbp)
je 0x2a28a
movq 0x1cd90(%rip), %rdi     # 0x46fd0
leaq 0x102f6(%rip), %rsi     # 0x3a53d
callq 0x2250
movq %rax, -0x80(%rbp)
jmp 0x2a252
movq -0x80(%rbp), %rdi
movq 0x1cd63(%rip), %rsi     # 0x46fc0
callq 0x22a0
jmp 0x2a264
movl $0x1, -0x48(%rbp)
jmp 0x2a4ed
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x30(%rbp), %rdi
callq 0x228b0
jmp 0x2a4ff
leaq -0x30(%rbp), %rdi
callq 0x223f0
movq %rax, -0x88(%rbp)
jmp 0x2a29c
movq -0x88(%rbp), %rax
cmpq $0x7, %rax
jne 0x2a40f
movq 0x1cd1c(%rip), %rdi     # 0x46fd0
leaq 0x1029d(%rip), %rsi     # 0x3a558
callq 0x2250
movq %rax, -0x90(%rbp)
jmp 0x2a2c9
movq -0x90(%rbp), %rdi
movq 0x1cce9(%rip), %rsi     # 0x46fc0
callq 0x22a0
jmp 0x2a2de
movl $0x0, -0x4c(%rbp)
cmpl $0x7, -0x4c(%rbp)
jge 0x2a40a
movq 0x1ccda(%rip), %rdi     # 0x46fd0
leaq 0x1027c(%rip), %rsi     # 0x3a579
callq 0x2250
movq %rax, -0x98(%rbp)
jmp 0x2a30b
movq -0x98(%rbp), %rdi
movl -0x4c(%rbp), %esi
incl %esi
callq 0x2420
movq %rax, -0xa0(%rbp)
jmp 0x2a325
movq -0xa0(%rbp), %rdi
leaq 0x10cc6(%rip), %rsi     # 0x3aff9
callq 0x2250
jmp 0x2a33a
movq $0x0, -0x58(%rbp)
movq -0x58(%rbp), %rax
movq %rax, -0xb0(%rbp)
movslq -0x4c(%rbp), %rsi
leaq -0x30(%rbp), %rdi
callq 0x227b0
movq %rax, -0xa8(%rbp)
jmp 0x2a363
movq -0xa8(%rbp), %rdi
callq 0x19370
movq %rax, -0xb8(%rbp)
jmp 0x2a378
movq -0xb0(%rbp), %rax
movq -0xb8(%rbp), %rcx
cmpq %rcx, %rax
jae 0x2a3e5
movslq -0x4c(%rbp), %rsi
leaq -0x30(%rbp), %rdi
callq 0x227b0
movq %rax, -0xc0(%rbp)
jmp 0x2a3a1
movq -0xc0(%rbp), %rdi
movq -0x58(%rbp), %rsi
callq 0x19560
movq %rax, -0xc8(%rbp)
jmp 0x2a3ba
movq -0xc8(%rbp), %rax
movzbl (%rax), %esi
movq 0x1cc05(%rip), %rdi     # 0x46fd0
callq 0x2420
jmp 0x2a3d2
jmp 0x2a3d4
movq -0x58(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x58(%rbp)
jmp 0x2a342
movq 0x1cbe4(%rip), %rdi     # 0x46fd0
movq 0x1cbcd(%rip), %rsi     # 0x46fc0
callq 0x22a0
jmp 0x2a3fa
jmp 0x2a3fc
movl -0x4c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x4c(%rbp)
jmp 0x2a2e5
jmp 0x2a4e6
movq 0x1cbba(%rip), %rdi     # 0x46fd0
leaq 0x10163(%rip), %rsi     # 0x3a580
callq 0x2250
jmp 0x2a424
movq $0x0, -0x60(%rbp)
movq -0x60(%rbp), %rax
movq %rax, -0xd8(%rbp)
xorl %eax, %eax
movl %eax, %esi
leaq -0x30(%rbp), %rdi
callq 0x227b0
movq %rax, -0xd0(%rbp)
jmp 0x2a44d
movq -0xd0(%rbp), %rdi
callq 0x19370
movq %rax, -0xe0(%rbp)
jmp 0x2a462
movq -0xd8(%rbp), %rax
movq -0xe0(%rbp), %rcx
cmpq %rcx, %rax
jae 0x2a4cf
xorl %eax, %eax
movl %eax, %esi
leaq -0x30(%rbp), %rdi
callq 0x227b0
movq %rax, -0xe8(%rbp)
jmp 0x2a48b
movq -0xe8(%rbp), %rdi
movq -0x60(%rbp), %rsi
callq 0x19560
movq %rax, -0xf0(%rbp)
jmp 0x2a4a4
movq -0xf0(%rbp), %rax
movzbl (%rax), %esi
movq 0x1cb1b(%rip), %rdi     # 0x46fd0
callq 0x2420
jmp 0x2a4bc
jmp 0x2a4be
movq -0x60(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x60(%rbp)
jmp 0x2a42c
movq 0x1cafa(%rip), %rdi     # 0x46fd0
movq 0x1cae3(%rip), %rsi     # 0x46fc0
callq 0x22a0
jmp 0x2a4e4
jmp 0x2a4e6
movl $0x0, -0x48(%rbp)
leaq -0x30(%rbp), %rdi
callq 0x228b0
addq $0xf0, %rsp
popq %rbp
retq
jmp 0x2a501
movq -0x40(%rbp), %rdi
callq 0x2430
movq %rax, %rdi
callq 0x19400
nopw %cs:(%rax,%rax)