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

  const LodePNGInfo& info = data.state.info_png;
  const LodePNGColorMode& color = info.color;
  if(options.show_header) {
    std::cout << "Filesize: " << data.buffer.size() << " (" << data.buffer.size() / 1024 << "K)" << std::endl;
    if(data.is_icc) {
      std::cout << "Not a PNG but an ICC profile, use -i or -I for more info." << std::endl;
    } else if(data.is_exif) {
      std::cout << "Not a PNG but an EXIF file, use -e for more info." << std::endl;
    } else {
      std::cout << "Width: " << data.w << std::endl;
      std::cout << "Height: " << data.h << std::endl;
      if(options.verbose) {
        double bpp = data.buffer.size() / (double)(data.w * data.h);
        std::cout << "Compressed bpp: " << bpp << std::endl;
      }
      std::cout << "Interlace method: " << info.interlace_method << std::endl;
      if(options.verbose) {
        std::cout << "Compression method: " << info.compression_method << std::endl;
        std::cout << "Filter method: " << info.filter_method << std::endl;
      }
      std::cout << "Color type: " << colorTypeString(color.colortype) << std::endl;
      std::cout << "Bit depth: " << color.bitdepth << std::endl;
      if(options.verbose) {
        std::cout << "Bits per pixel: " << lodepng_get_bpp(&color) << std::endl;
        std::cout << "Channels per pixel: " << lodepng_get_channels(&color) << std::endl;
        std::cout << "Is greyscale type: " << lodepng_is_greyscale_type(&color) << std::endl;
        std::cout << "Can have alpha: " << lodepng_can_have_alpha(&color) << std::endl;
        std::cout << "Has color key: " << color.key_defined << std::endl;
      }
    }
  }
  if(options.show_png_info && data.is_png) {
    if (color.colortype == LCT_PALETTE) {
      std::cout << "Palette size: " << color.palettesize << std::endl;
    }
    if(color.key_defined) {
      std::cout << "Color key rgb: " << color.key_r
                << ", " << color.key_g
                << ", " << color.key_b << std::endl;
    }
    if(info.background_defined) {
      if(color.colortype == LCT_PALETTE) {
        std::cout << "Background index: " << info.background_r << std::endl;
      } else {
        std::cout << "Background rgb: " << info.background_r
                  << ", " << info.background_g
                  << ", " << info.background_b << std::endl;
      }
    }
    if(info.gama_defined) {
      std::cout << "gAMA defined: " << info.gama_gamma << " (" << (info.gama_gamma / 100000.0)
                << ", " << (100000.0 / info.gama_gamma) << ")" << std::endl;
    }
    if(info.chrm_defined) {
      std::cout << "cHRM defined: w: " << (info.chrm_white_x / 100000.0) << " " << (info.chrm_white_y / 100000.0)
                << ", r: " << (info.chrm_red_x / 100000.0) << " " << (info.chrm_red_y / 100000.0)
                << ", g: " << (info.chrm_green_x / 100000.0) << " " << (info.chrm_green_y / 100000.0)
                << ", b: " << (info.chrm_blue_x / 100000.0) << " " << (info.chrm_blue_y / 100000.0)
                << std::endl;
    }
    if(info.srgb_defined) {
      std::cout << "sRGB defined: rendering intent: " << info.srgb_intent << std::endl;
    }
    if(info.iccp_defined) {
      std::cout << "ICC profile defined (" << info.iccp_profile_size << " bytes): name: " << info.iccp_name << std::endl;
      if(options.verbose && !options.show_icc_details && !options.show_icc_hex) {
        std::cout << "Use -i or -I to show ICC profile details or hex" << std::endl;
      }
    }
    if(info.exif_defined) {
      std::cout << "EXIF metadata defined (" << info.exif_size << " bytes)" << std::endl;
      if(options.verbose && !options.show_exif && !options.show_exif_hex) {
        std::cout << "Use -e or -E to show EXIF details or hex" << std::endl;
      }
    }
  }
  if(info.iccp_defined && options.show_icc_details) {
    if(!options.show_header) {
      std::cout << "ICC profile details (" << info.iccp_profile_size << " bytes), PNG name: " << info.iccp_name << std::endl;
    }
    printICCDetails(info.iccp_profile, info.iccp_profile_size, "  ");
    std::cout << "end of ICC profile" << std::endl;
  }
  if(info.iccp_defined && options.show_icc_hex) {
    showHex(info.iccp_profile, info.iccp_profile_size, options);
  }
  if(info.exif_defined && options.show_exif_hex) {
    showHex(info.exif, info.exif_size, options);
  }

  if(options.show_png_info && data.is_png) {
    if(options.verbose) std::cout << "Physics defined: " << info.phys_defined << std::endl;
    if(info.phys_defined) {
      std::cout << "Physics: X: " << info.phys_x << ", Y: " << info.phys_y << ", unit: " << info.phys_unit << std::endl;
    }
  }
}

// Assembly:
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x40, %rsp
movq %rsi, %r14
movq %rdi, %rbx
callq 0x18e38
cmpl $0x0, 0x2d8(%rbx)
jne 0x1709f
leaq 0x2997(%rip), %rax      # 0x190b2
leaq 0x29a0(%rip), %rcx      # 0x190c2
cmpb $0x0, 0x24(%r14)
cmovneq %rax, %rcx
movq 0x1089e(%rip), %rdi     # 0x26fd0
movq (%rdi), %rax
addq -0x18(%rax), %rdi
callq *%rcx
leaq 0x138(%rbx), %r15
cmpb $0x1, 0x3(%r14)
jne 0x167eb
movq 0x1087c(%rip), %rdi     # 0x26fd0
leaq 0x8456(%rip), %rsi      # 0x1ebb1
callq 0x2210
movq 0x28(%rbx), %rsi
subq 0x20(%rbx), %rsi
movq %rax, %rdi
callq 0x2150
leaq 0x897a(%rip), %rsi      # 0x1f0f1
movq %rax, %rdi
callq 0x2210
movq 0x28(%rbx), %rsi
subq 0x20(%rbx), %rsi
shrq $0xa, %rsi
movq %rax, %rdi
callq 0x2150
leaq 0x8422(%rip), %rsi      # 0x1ebbc
movq %rax, %rdi
callq 0x2210
movq %rax, %rdi
callq 0x2100
cmpb $0x1, 0x2de(%rbx)
jne 0x167c3
movq 0x10816(%rip), %rdi     # 0x26fd0
leaq 0x8703(%rip), %rsi      # 0x1eec4
jmp 0x167de
cmpb $0x1, 0x2df(%rbx)
jne 0x168d7
movq 0x107f9(%rip), %rdi     # 0x26fd0
leaq 0x8720(%rip), %rsi      # 0x1eefe
callq 0x2210
movq %rax, %rdi
callq 0x2100
cmpb $0x1, 0xa(%r14)
jne 0x16ee3
cmpb $0x1, 0x2dd(%rbx)
jne 0x16ee3
cmpl $0x3, (%r15)
jne 0x16833
movq 0x107c0(%rip), %rdi     # 0x26fd0
leaq 0x8114(%rip), %rsi      # 0x1e92b
callq 0x2210
movq 0x148(%rbx), %rsi
movq %rax, %rdi
callq 0x2150
movq %rax, %rdi
callq 0x2100
cmpl $0x0, 0x150(%rbx)
je 0x1689e
movq 0x1078d(%rip), %rdi     # 0x26fd0
leaq 0x87b4(%rip), %rsi      # 0x1effe
callq 0x2210
movl 0x154(%rbx), %esi
movq %rax, %rdi
callq 0x2150
leaq 0x8480(%rip), %r15      # 0x1ece4
movq %rax, %rdi
movq %r15, %rsi
callq 0x2210
movl 0x158(%rbx), %esi
movq %rax, %rdi
callq 0x2150
movq %rax, %rdi
movq %r15, %rsi
callq 0x2210
movl 0x15c(%rbx), %esi
movq %rax, %rdi
callq 0x2150
movq %rax, %rdi
callq 0x2100
cmpl $0x0, 0x160(%rbx)
je 0x16bc5
cmpl $0x3, 0x138(%rbx)
jne 0x16b5f
leaq 0x164(%rbx), %r15
movq 0x1070a(%rip), %rdi     # 0x26fd0
leaq 0x8741(%rip), %rsi      # 0x1f00e
callq 0x2210
jmp 0x16bb2
movq 0x106f2(%rip), %r12     # 0x26fd0
leaq 0x864b(%rip), %rsi      # 0x1ef30
movq %r12, %rdi
callq 0x2210
movl 0x50(%rbx), %esi
movq %rax, %rdi
callq 0x2150
movq %rax, %rdi
callq 0x2100
leaq 0x8631(%rip), %rsi      # 0x1ef38
movq %r12, %rdi
callq 0x2210
movl 0x54(%rbx), %esi
movq %rax, %rdi
callq 0x2150
movq %rax, %rdi
callq 0x2100
cmpb $0x1, (%r14)
jne 0x16990
movq 0x28(%rbx), %rax
subq 0x20(%rbx), %rax
movq %rax, %xmm0
punpckldq 0x7713(%rip), %xmm0 # xmm0 = xmm0[0],mem[0],xmm0[1],mem[1]
subpd 0x771b(%rip), %xmm0     # 0x1e060
movapd %xmm0, %xmm1
unpckhpd %xmm0, %xmm1            # xmm1 = xmm1[1],xmm0[1]
movl 0x54(%rbx), %eax
imull 0x50(%rbx), %eax
addsd %xmm0, %xmm1
cvtsi2sd %rax, %xmm0
divsd %xmm0, %xmm1
movapd %xmm1, 0x30(%rsp)
movq 0x10662(%rip), %rdi     # 0x26fd0
leaq 0x85cc(%rip), %rsi      # 0x1ef41
callq 0x2210
movq %rax, %rdi
movapd 0x30(%rsp), %xmm0
callq 0x2330
movq %rax, %rdi
callq 0x2100
movq 0x10639(%rip), %rdi     # 0x26fd0
leaq 0x85b4(%rip), %rsi      # 0x1ef52
callq 0x2210
movl 0x130(%rbx), %esi
movq %rax, %rdi
callq 0x2150
movq %rax, %rdi
callq 0x2100
cmpb $0x1, (%r14)
jne 0x16a10
movq 0x1060a(%rip), %r12     # 0x26fd0
leaq 0x8598(%rip), %rsi      # 0x1ef65
movq %r12, %rdi
callq 0x2210
movl 0x128(%rbx), %esi
movq %rax, %rdi
callq 0x2150
movq %rax, %rdi
callq 0x2100
leaq 0x8588(%rip), %rsi      # 0x1ef7a
movq %r12, %rdi
callq 0x2210
movl 0x12c(%rbx), %esi
movq %rax, %rdi
callq 0x2150
movq %rax, %rdi
callq 0x2100
movq 0x105b9(%rip), %rdi     # 0x26fd0
leaq 0x856c(%rip), %rsi      # 0x1ef8a
callq 0x2210
movq %rax, %r12
movl (%r15), %esi
leaq 0x10(%rsp), %r13
movq %r13, %rdi
callq 0x132ef
movq %r12, %rdi
movq %r13, %rsi
callq 0x21e0
movq %rax, %rdi
callq 0x2100
leaq 0x10(%rsp), %rdi
callq 0x22a0
movq 0x10576(%rip), %rdi     # 0x26fd0
leaq 0x8536(%rip), %rsi      # 0x1ef97
callq 0x2210
movl 0x13c(%rbx), %esi
movq %rax, %rdi
callq 0x2150
movq %rax, %rdi
callq 0x2100
cmpb $0x1, (%r14)
jne 0x167eb
movq 0x10543(%rip), %r12     # 0x26fd0
leaq 0x850f(%rip), %rsi      # 0x1efa3
movq %r12, %rdi
callq 0x2210
movq %rax, %r13
movq %r15, %rdi
callq 0x4ad0
movl %eax, %esi
movq %r13, %rdi
callq 0x2150
movq %rax, %rdi
callq 0x2100
leaq 0x84f4(%rip), %rsi      # 0x1efb4
movq %r12, %rdi
callq 0x2210
movq %rax, %r13
movq %r15, %rdi
callq 0x4ae2
movl %eax, %esi
movq %r13, %rdi
callq 0x2150
movq %rax, %rdi
callq 0x2100
leaq 0x84dd(%rip), %rsi      # 0x1efc9
movq %r12, %rdi
callq 0x2210
movq %rax, %r13
movq %r15, %rdi
callq 0x4b16
movl %eax, %esi
movq %r13, %rdi
callq 0x2150
movq %rax, %rdi
callq 0x2100
leaq 0x84c5(%rip), %rsi      # 0x1efdd
movq %r12, %rdi
callq 0x2210
movq %rax, %r13
movq %r15, %rdi
callq 0x4b57
movl %eax, %esi
movq %r13, %rdi
callq 0x2150
movq %rax, %rdi
callq 0x2100
leaq 0x84aa(%rip), %rsi      # 0x1efee
movq %r12, %rdi
callq 0x2210
movl 0x150(%rbx), %esi
movq %rax, %rdi
callq 0x2150
jmp 0x167e3
movq 0x1046a(%rip), %rdi     # 0x26fd0
leaq 0x84b4(%rip), %rsi      # 0x1f021
callq 0x2210
movl 0x164(%rbx), %esi
movq %rax, %rdi
callq 0x2150
leaq 0x815d(%rip), %r15      # 0x1ece4
movq %rax, %rdi
movq %r15, %rsi
callq 0x2210
movl 0x168(%rbx), %esi
movq %rax, %rdi
callq 0x2150
movq %rax, %rdi
movq %r15, %rsi
callq 0x2210
leaq 0x16c(%rbx), %r15
movl (%r15), %esi
movq %rax, %rdi
callq 0x2150
movq %rax, %rdi
callq 0x2100
cmpl $0x0, 0x1f0(%rbx)
je 0x16c62
movq 0x103f7(%rip), %rdi     # 0x26fd0
leaq 0x8452(%rip), %rsi      # 0x1f032
callq 0x2210
movl 0x1f4(%rbx), %esi
movq %rax, %rdi
callq 0x2150
leaq 0x84f7(%rip), %rsi      # 0x1f0f1
movq %rax, %rdi
callq 0x2210
movl 0x1f4(%rbx), %ecx
cvtsi2sd %rcx, %xmm0
divsd 0x741b(%rip), %xmm0     # 0x1e030
movq %rax, %rdi
callq 0x2330
leaq 0x80c0(%rip), %rsi      # 0x1ece4
movq %rax, %rdi
callq 0x2210
movl 0x1f4(%rbx), %ecx
cvtsi2sd %rcx, %xmm1
movsd 0x73f1(%rip), %xmm0     # 0x1e030
divsd %xmm1, %xmm0
movq %rax, %rdi
callq 0x2330
leaq 0x7336(%rip), %rsi      # 0x1df88
movq %rax, %rdi
callq 0x2210
movq %rax, %rdi
callq 0x2100
cmpl $0x0, 0x1f8(%rbx)
je 0x16dc2
movq 0x1035a(%rip), %rdi     # 0x26fd0
leaq 0x83c4(%rip), %rsi      # 0x1f041
callq 0x2210
movl 0x1fc(%rbx), %ecx
cvtsi2sd %rcx, %xmm0
divsd 0x739b(%rip), %xmm0     # 0x1e030
movq %rax, %rdi
callq 0x2330
leaq 0x84ac(%rip), %r15      # 0x1f150
movq %rax, %rdi
movq %r15, %rsi
callq 0x2210
movl 0x200(%rbx), %ecx
cvtsi2sd %rcx, %xmm0
divsd 0x736e(%rip), %xmm0     # 0x1e030
movq %rax, %rdi
callq 0x2330
leaq 0x8382(%rip), %rsi      # 0x1f053
movq %rax, %rdi
callq 0x2210
movl 0x204(%rbx), %ecx
cvtsi2sd %rcx, %xmm0
divsd 0x7344(%rip), %xmm0     # 0x1e030
movq %rax, %rdi
callq 0x2330
movq %rax, %rdi
movq %r15, %rsi
callq 0x2210
movl 0x208(%rbx), %ecx
cvtsi2sd %rcx, %xmm0
divsd 0x731e(%rip), %xmm0     # 0x1e030
movq %rax, %rdi
callq 0x2330
leaq 0x8338(%rip), %rsi      # 0x1f059
movq %rax, %rdi
callq 0x2210
movl 0x20c(%rbx), %ecx
cvtsi2sd %rcx, %xmm0
divsd 0x72f4(%rip), %xmm0     # 0x1e030
movq %rax, %rdi
callq 0x2330
movq %rax, %rdi
movq %r15, %rsi
callq 0x2210
movl 0x210(%rbx), %ecx
cvtsi2sd %rcx, %xmm0
divsd 0x72ce(%rip), %xmm0     # 0x1e030
movq %rax, %rdi
callq 0x2330
leaq 0x82ee(%rip), %rsi      # 0x1f05f
movq %rax, %rdi
callq 0x2210
movl 0x214(%rbx), %ecx
cvtsi2sd %rcx, %xmm0
divsd 0x72a4(%rip), %xmm0     # 0x1e030
movq %rax, %rdi
callq 0x2330
movq %rax, %rdi
movq %r15, %rsi
callq 0x2210
movl 0x218(%rbx), %ecx
cvtsi2sd %rcx, %xmm0
divsd 0x727e(%rip), %xmm0     # 0x1e030
movq %rax, %rdi
callq 0x2330
movq %rax, %rdi
callq 0x2100
cmpl $0x0, 0x21c(%rbx)
je 0x16df4
movq 0x101fe(%rip), %rdi     # 0x26fd0
leaq 0x828c(%rip), %rsi      # 0x1f065
callq 0x2210
movl 0x220(%rbx), %esi
movq %rax, %rdi
callq 0x2150
movq %rax, %rdi
callq 0x2100
cmpl $0x0, 0x224(%rbx)
je 0x16e73
movq 0x101cc(%rip), %rdi     # 0x26fd0
leaq 0x827b(%rip), %rsi      # 0x1f086
callq 0x2210
movl 0x238(%rbx), %esi
movq %rax, %rdi
callq 0x2150
leaq 0x8277(%rip), %rsi      # 0x1f09c
movq %rax, %rdi
callq 0x2210
movq 0x228(%rbx), %rsi
movq %rax, %rdi
callq 0x2210
movq %rax, %rdi
callq 0x2100
cmpb $0x1, (%r14)
jne 0x16e73
cmpb $0x0, 0x5(%r14)
jne 0x16e73
cmpb $0x0, 0x6(%r14)
jne 0x16e73
movq 0x10171(%rip), %rdi     # 0x26fd0
leaq 0x8246(%rip), %rsi      # 0x1f0ac
callq 0x2210
movq %rax, %rdi
callq 0x2100
cmpl $0x0, 0x1b0(%rbx)
je 0x16ee3
movq 0x1014d(%rip), %rdi     # 0x26fd0
leaq 0x8252(%rip), %rsi      # 0x1f0dc
callq 0x2210
movl 0x1c0(%rbx), %esi
movq %rax, %rdi
callq 0x2150
leaq 0x8250(%rip), %rsi      # 0x1f0f4
movq %rax, %rdi
callq 0x2210
movq %rax, %rdi
callq 0x2100
cmpb $0x1, (%r14)
jne 0x16ee3
cmpb $0x0, 0x7(%r14)
jne 0x16ee3
cmpb $0x0, 0x8(%r14)
jne 0x16ee3
movq 0x10101(%rip), %rdi     # 0x26fd0
leaq 0x8226(%rip), %rsi      # 0x1f0fc
callq 0x2210
movq %rax, %rdi
callq 0x2100
cmpl $0x0, 0x224(%rbx)
je 0x16fc7
cmpb $0x1, 0x5(%r14)
jne 0x16fab
cmpb $0x0, 0x3(%r14)
jne 0x16f49
movq 0x100c7(%rip), %rdi     # 0x26fd0
leaq 0x8215(%rip), %rsi      # 0x1f125
callq 0x2210
movl 0x238(%rbx), %esi
movq %rax, %rdi
callq 0x2150
leaq 0x8211(%rip), %rsi      # 0x1f13b
movq %rax, %rdi
callq 0x2210
movq 0x228(%rbx), %rsi
movq %rax, %rdi
callq 0x2210
movq %rax, %rdi
callq 0x2100
movq 0x230(%rbx), %r15
movl 0x238(%rbx), %r12d
leaq 0x81f1(%rip), %rsi      # 0x1f14f
leaq 0x10(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x20b0
leaq 0x10(%rsp), %rdx
movq %r15, %rdi
movq %r12, %rsi
callq 0x15650
leaq 0x10(%rsp), %rdi
callq 0x22a0
movq 0x10042(%rip), %rdi     # 0x26fd0
leaq 0x81bd(%rip), %rsi      # 0x1f152
callq 0x2210
movq %rax, %rdi
callq 0x2100
cmpl $0x0, 0x224(%rbx)
je 0x16fc7
cmpb $0x1, 0x6(%r14)
jne 0x16fc7
movq 0x230(%rbx), %rdi
movl 0x238(%rbx), %esi
movq %r14, %rdx
callq 0x1663d
cmpl $0x0, 0x1b0(%rbx)
je 0x16fec
cmpb $0x1, 0x8(%r14)
jne 0x16fec
movq 0x1b8(%rbx), %rdi
movl 0x1c0(%rbx), %esi
movq %r14, %rdx
callq 0x1663d
cmpb $0x1, 0xa(%r14)
jne 0x1709f
cmpb $0x1, 0x2dd(%rbx)
jne 0x1709f
cmpb $0x1, (%r14)
jne 0x17033
movq 0xffbf(%rip), %rdi      # 0x26fd0
leaq 0x814d(%rip), %rsi      # 0x1f165
callq 0x2210
movl 0x1e0(%rbx), %esi
movq %rax, %rdi
callq 0x2150
movq %rax, %rdi
callq 0x2100
cmpl $0x0, 0x1e0(%rbx)
je 0x1709f
movq 0xff8d(%rip), %rdi      # 0x26fd0
leaq 0x812d(%rip), %rsi      # 0x1f177
callq 0x2210
movl 0x1e4(%rbx), %esi
movq %rax, %rdi
callq 0x2150
leaq 0x8120(%rip), %rsi      # 0x1f184
movq %rax, %rdi
callq 0x2210
movl 0x1e8(%rbx), %esi
movq %rax, %rdi
callq 0x2150
leaq 0x8109(%rip), %rsi      # 0x1f18a
movq %rax, %rdi
callq 0x2210
movl 0x1ec(%rbx), %esi
movq %rax, %rdi
callq 0x2150
movq %rax, %rdi
callq 0x2100
addq $0x40, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
retq
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0x22a0
jmp 0x170d6
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0x22a0
jmp 0x170d6
movq %rax, %rdi
callq 0xe69c
movq %rax, %rbx
movq %rbx, %rdi
callq 0x23a0