// File: lvandeve[P]lodepng/pngdetail.cpp
// Function: showPNGInfo(Data&, Options const&)
void showPNGInfo(Data& data, const Options& options) {
  data.loadInspect();
  if(!data.is_png) return;
  loadWithErrorRecovery(data, options, false);
  if(data.error) return;
  std::cout << (options.use_hex ? std::hex: std::dec);

  const LodePNGInfo& info = data.state.info_png;

  if(options.verbose) std::cout << "Texts: " << info.text_num << std::endl;
  for(size_t i = 0; i < info.text_num; i++) {
    std::cout << "Text (" << (strlen(info.text_strings[i])) << " bytes): "
              << info.text_keys[i] << ": " << shortenText(info.text_strings[i], options) << std::endl;
  }
  if(options.verbose) std::cout << "International texts: " << info.itext_num << std::endl;
  for(size_t i = 0; i < info.itext_num; i++) {
    std::cout << "Text (" << (strlen(info.itext_strings[i])) << " bytes): "
              << info.itext_keys[i] << ", "
              << info.itext_langtags[i] << ", "
              << info.itext_transkeys[i] << ": "
              << shortenText(info.itext_strings[i], options) << std::endl;
  }
  if(options.verbose) std::cout << "Time defined: " << info.time_defined << std::endl;
  if(info.time_defined) {
    const LodePNGTime& time = info.time;
    printf("time: %02d-%02d-%02dT%02d:%02d:%02d\n",
           time.year, time.month, time.day, time.hour, time.minute, time.second);

  }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x140, %rsp            # imm = 0x140
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x8(%rbp), %rdi
callq 0x317c0
movq -0x8(%rbp), %rax
testb $0x1, 0x2dd(%rax)
jne 0x2edae
jmp 0x2f2e5
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
xorl %edx, %edx
callq 0x2bcf0
movq -0x8(%rbp), %rax
cmpl $0x0, 0x2d8(%rax)
je 0x2edcf
jmp 0x2f2e5
movq -0x10(%rbp), %rax
testb $0x1, 0x24(%rax)
je 0x2ede9
leaq 0x2e70(%rip), %rax      # 0x31c50
movq %rax, -0xd8(%rbp)
jmp 0x2edf9
leaq 0x2e90(%rip), %rax      # 0x31c80
movq %rax, -0xd8(%rbp)
jmp 0x2edf9
movq -0xd8(%rbp), %rsi
movq 0x181c9(%rip), %rdi     # 0x46fd0
callq 0x20b0
movq -0x8(%rbp), %rax
addq $0x58, %rax
addq $0xd0, %rax
movq %rax, -0x18(%rbp)
movq -0x10(%rbp), %rax
testb $0x1, (%rax)
je 0x2ee59
movq 0x181a2(%rip), %rdi     # 0x46fd0
leaq 0xc02a(%rip), %rsi      # 0x3ae5f
callq 0x2250
movq %rax, %rdi
movq -0x18(%rbp), %rax
movq 0x48(%rax), %rsi
callq 0x2080
movq %rax, %rdi
movq 0x1816c(%rip), %rsi     # 0x46fc0
callq 0x22a0
movq $0x0, -0x20(%rbp)
movq -0x20(%rbp), %rax
movq -0x18(%rbp), %rcx
cmpq 0x48(%rcx), %rax
jae 0x2efef
movq 0x18156(%rip), %rdi     # 0x46fd0
leaq 0xbfe6(%rip), %rsi      # 0x3ae67
callq 0x2250
movq %rax, -0xf8(%rbp)
movq -0x18(%rbp), %rax
movq 0x58(%rax), %rax
movq -0x20(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
callq 0x2110
movq -0xf8(%rbp), %rdi
movq %rax, %rsi
callq 0x2080
movq %rax, %rdi
leaq 0xbfb3(%rip), %rsi      # 0x3ae6e
callq 0x2250
movq %rax, %rdi
movq -0x18(%rbp), %rax
movq 0x50(%rax), %rax
movq -0x20(%rbp), %rcx
movq (%rax,%rcx,8), %rsi
callq 0x2250
movq %rax, %rdi
leaq 0xc117(%rip), %rsi      # 0x3aff9
callq 0x2250
movq %rax, -0xf0(%rbp)
movq -0x18(%rbp), %rax
movq 0x58(%rax), %rax
movq -0x20(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq %rax, -0xe8(%rbp)
leaq -0x61(%rbp), %rdi
movq %rdi, -0xe0(%rbp)
callq 0x2440
movq -0xe8(%rbp), %rsi
movq -0xe0(%rbp), %rdx
leaq -0x60(%rbp), %rdi
callq 0x2360
jmp 0x2ef2e
movq -0x10(%rbp), %rdx
leaq -0x40(%rbp), %rdi
leaq -0x60(%rbp), %rsi
callq 0x2eba0
jmp 0x2ef41
movq -0xf0(%rbp), %rdi
leaq -0x40(%rbp), %rsi
callq 0x2210
movq %rax, -0x100(%rbp)
jmp 0x2ef5a
movq -0x100(%rbp), %rdi
movq 0x18058(%rip), %rsi     # 0x46fc0
callq 0x22a0
jmp 0x2ef6f
leaq -0x40(%rbp), %rdi
callq 0x2170
jmp 0x2ef7a
leaq -0x60(%rbp), %rdi
callq 0x2170
jmp 0x2ef85
leaq -0x61(%rbp), %rdi
callq 0x22b0
movq -0x20(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x20(%rbp)
jmp 0x2ee61
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0x2efe1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0x2efd4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
leaq -0x40(%rbp), %rdi
callq 0x2170
jmp 0x2efd2
jmp 0x2efd4
leaq -0x60(%rbp), %rdi
callq 0x2170
jmp 0x2efdf
jmp 0x2efe1
leaq -0x61(%rbp), %rdi
callq 0x22b0
jmp 0x2f2ee
movq -0x10(%rbp), %rax
testb $0x1, (%rax)
je 0x2f02a
movq 0x17fd1(%rip), %rdi     # 0x46fd0
leaq 0xbe72(%rip), %rsi      # 0x3ae78
callq 0x2250
movq %rax, %rdi
movq -0x18(%rbp), %rax
movq 0x60(%rax), %rsi
callq 0x2080
movq %rax, %rdi
movq 0x17f9b(%rip), %rsi     # 0x46fc0
callq 0x22a0
movq $0x0, -0x80(%rbp)
movq -0x80(%rbp), %rax
movq -0x18(%rbp), %rcx
cmpq 0x60(%rcx), %rax
jae 0x2f23c
movq 0x17f85(%rip), %rdi     # 0x46fd0
leaq 0xbe15(%rip), %rsi      # 0x3ae67
callq 0x2250
movq %rax, -0x128(%rbp)
movq -0x18(%rbp), %rax
movq 0x80(%rax), %rax
movq -0x80(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
callq 0x2110
movq -0x128(%rbp), %rdi
movq %rax, %rsi
callq 0x2080
movq %rax, %rdi
leaq 0xbddf(%rip), %rsi      # 0x3ae6e
callq 0x2250
movq %rax, %rdi
movq -0x18(%rbp), %rax
movq 0x68(%rax), %rax
movq -0x80(%rbp), %rcx
movq (%rax,%rcx,8), %rsi
callq 0x2250
movq %rax, %rdi
leaq 0xb8c8(%rip), %rsi      # 0x3a97e
movq %rsi, -0x120(%rbp)
callq 0x2250
movq %rax, %rdi
movq -0x18(%rbp), %rax
movq 0x70(%rax), %rax
movq -0x80(%rbp), %rcx
movq (%rax,%rcx,8), %rsi
callq 0x2250
movq -0x120(%rbp), %rsi
movq %rax, %rdi
callq 0x2250
movq %rax, %rdi
movq -0x18(%rbp), %rax
movq 0x78(%rax), %rax
movq -0x80(%rbp), %rcx
movq (%rax,%rcx,8), %rsi
callq 0x2250
movq %rax, %rdi
leaq 0xbeee(%rip), %rsi      # 0x3aff9
callq 0x2250
movq %rax, -0x118(%rbp)
movq -0x18(%rbp), %rax
movq 0x80(%rax), %rax
movq -0x80(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq %rax, -0x110(%rbp)
leaq -0xc1(%rbp), %rdi
movq %rdi, -0x108(%rbp)
callq 0x2440
movq -0x110(%rbp), %rsi
movq -0x108(%rbp), %rdx
leaq -0xc0(%rbp), %rdi
callq 0x2360
jmp 0x2f160
movq -0x10(%rbp), %rdx
leaq -0xa0(%rbp), %rdi
leaq -0xc0(%rbp), %rsi
callq 0x2eba0
jmp 0x2f179
movq -0x118(%rbp), %rdi
leaq -0xa0(%rbp), %rsi
callq 0x2210
movq %rax, -0x130(%rbp)
jmp 0x2f195
movq -0x130(%rbp), %rdi
movq 0x17e1d(%rip), %rsi     # 0x46fc0
callq 0x22a0
jmp 0x2f1aa
leaq -0xa0(%rbp), %rdi
callq 0x2170
jmp 0x2f1b8
leaq -0xc0(%rbp), %rdi
callq 0x2170
jmp 0x2f1c6
leaq -0xc1(%rbp), %rdi
callq 0x22b0
movq -0x80(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x80(%rbp)
jmp 0x2f032
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0x2f22b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0x2f21b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
leaq -0xa0(%rbp), %rdi
callq 0x2170
jmp 0x2f219
jmp 0x2f21b
leaq -0xc0(%rbp), %rdi
callq 0x2170
jmp 0x2f229
jmp 0x2f22b
leaq -0xc1(%rbp), %rdi
callq 0x22b0
jmp 0x2f2ee
movq -0x10(%rbp), %rax
testb $0x1, (%rax)
je 0x2f279
movq 0x17d84(%rip), %rdi     # 0x46fd0
leaq 0xbc3b(%rip), %rsi      # 0x3ae8e
callq 0x2250
movq %rax, %rdi
movq -0x18(%rbp), %rax
movl 0x9c(%rax), %esi
callq 0x2340
movq %rax, %rdi
movq 0x17d4c(%rip), %rsi     # 0x46fc0
callq 0x22a0
movq -0x18(%rbp), %rax
cmpl $0x0, 0x9c(%rax)
je 0x2f2e5
movq -0x18(%rbp), %rax
addq $0xa0, %rax
movq %rax, -0xd0(%rbp)
movq -0xd0(%rbp), %rax
movl (%rax), %esi
movq -0xd0(%rbp), %rax
movl 0x4(%rax), %edx
movq -0xd0(%rbp), %rax
movl 0x8(%rax), %ecx
movq -0xd0(%rbp), %rax
movl 0xc(%rax), %r8d
movq -0xd0(%rbp), %rax
movl 0x10(%rax), %r9d
movq -0xd0(%rbp), %rax
movl 0x14(%rax), %eax
leaq 0xbbc2(%rip), %rdi      # 0x3ae9d
movl %eax, (%rsp)
movb $0x0, %al
callq 0x2060
addq $0x140, %rsp            # imm = 0x140
popq %rbp
retq
movq -0x70(%rbp), %rdi
callq 0x2430
movq %rax, %rdi
callq 0x19400
nop