// File: 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 %rbp
movq %rsp, %rbp
subq $0x100, %rsp            # imm = 0x100
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x8(%rbp), %rdi
callq 0x317c0
movq -0x8(%rbp), %rax
cmpl $0x0, 0x2d8(%rax)
je 0x2de7e
jmp 0x2eb7b
movq -0x10(%rbp), %rax
testb $0x1, 0x24(%rax)
je 0x2de98
leaq 0x3dc1(%rip), %rax      # 0x31c50
movq %rax, -0x88(%rbp)
jmp 0x2dea8
leaq 0x3de1(%rip), %rax      # 0x31c80
movq %rax, -0x88(%rbp)
jmp 0x2dea8
movq -0x88(%rbp), %rsi
movq 0x1911a(%rip), %rdi     # 0x46fd0
callq 0x20b0
movq -0x8(%rbp), %rax
addq $0x58, %rax
addq $0xd0, %rax
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rax
addq $0x10, %rax
movq %rax, -0x20(%rbp)
movq -0x10(%rbp), %rax
testb $0x1, 0x3(%rax)
je 0x2e35a
movq 0x190e2(%rip), %rdi     # 0x46fd0
leaq 0xc956(%rip), %rsi      # 0x3a84b
callq 0x2250
movq %rax, -0x98(%rbp)
movq -0x8(%rbp), %rdi
addq $0x20, %rdi
callq 0x19370
movq -0x98(%rbp), %rdi
movq %rax, %rsi
callq 0x2080
movq %rax, %rdi
leaq 0xce67(%rip), %rsi      # 0x3ad8e
callq 0x2250
movq %rax, -0x90(%rbp)
movq -0x8(%rbp), %rdi
addq $0x20, %rdi
callq 0x19370
movq -0x90(%rbp), %rdi
movq %rax, %rsi
shrq $0xa, %rsi
callq 0x2080
movq %rax, %rdi
leaq 0xc8f9(%rip), %rsi      # 0x3a856
callq 0x2250
movq %rax, %rdi
movq 0x19054(%rip), %rsi     # 0x46fc0
callq 0x22a0
movq -0x8(%rbp), %rax
testb $0x1, 0x2de(%rax)
je 0x2dfa5
movq 0x1904b(%rip), %rdi     # 0x46fd0
leaq 0xcbd5(%rip), %rsi      # 0x3ab61
callq 0x2250
movq %rax, %rdi
movq 0x19025(%rip), %rsi     # 0x46fc0
callq 0x22a0
jmp 0x2e358
movq -0x8(%rbp), %rax
testb $0x1, 0x2df(%rax)
je 0x2dfd9
movq 0x19017(%rip), %rdi     # 0x46fd0
leaq 0xcbdb(%rip), %rsi      # 0x3ab9b
callq 0x2250
movq %rax, %rdi
movq 0x18ff1(%rip), %rsi     # 0x46fc0
callq 0x22a0
jmp 0x2e356
movq 0x18ff0(%rip), %rdi     # 0x46fd0
leaq 0xcbe6(%rip), %rsi      # 0x3abcd
callq 0x2250
movq %rax, %rdi
movq -0x8(%rbp), %rax
movl 0x50(%rax), %esi
callq 0x2340
movq %rax, %rdi
movq 0x18fbb(%rip), %rsi     # 0x46fc0
callq 0x22a0
movq 0x18fbf(%rip), %rdi     # 0x46fd0
leaq 0xcbbd(%rip), %rsi      # 0x3abd5
callq 0x2250
movq %rax, %rdi
movq -0x8(%rbp), %rax
movl 0x54(%rax), %esi
callq 0x2340
movq %rax, %rdi
movq 0x18f8a(%rip), %rsi     # 0x46fc0
callq 0x22a0
movq -0x10(%rbp), %rax
testb $0x1, (%rax)
je 0x2e0c2
movq -0x8(%rbp), %rdi
addq $0x20, %rdi
callq 0x19370
movq %rax, %xmm0
movaps 0xbd63(%rip), %xmm1     # 0x39dc0
punpckldq %xmm1, %xmm0    # xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
movapd 0xbd67(%rip), %xmm1     # 0x39dd0
subpd %xmm1, %xmm0
movaps %xmm0, %xmm1
unpckhpd %xmm0, %xmm0            # xmm0 = xmm0[1,1]
addsd %xmm1, %xmm0
movq -0x8(%rbp), %rcx
movl 0x50(%rcx), %eax
movl 0x54(%rcx), %ecx
imull %ecx, %eax
cvtsi2sd %rax, %xmm1
divsd %xmm1, %xmm0
movsd %xmm0, -0x28(%rbp)
movq 0x18f36(%rip), %rdi     # 0x46fd0
leaq 0xcb3d(%rip), %rsi      # 0x3abde
callq 0x2250
movq %rax, %rdi
movsd -0x28(%rbp), %xmm0
callq 0x2450
movq %rax, %rdi
movq 0x18f03(%rip), %rsi     # 0x46fc0
callq 0x22a0
movq 0x18f07(%rip), %rdi     # 0x46fd0
leaq 0xcb1f(%rip), %rsi      # 0x3abef
callq 0x2250
movq %rax, %rdi
movq -0x18(%rbp), %rax
movl 0x8(%rax), %esi
callq 0x2340
movq %rax, %rdi
movq 0x18ed2(%rip), %rsi     # 0x46fc0
callq 0x22a0
movq -0x10(%rbp), %rax
testb $0x1, (%rax)
je 0x2e15d
movq 0x18ecd(%rip), %rdi     # 0x46fd0
leaq 0xcaf8(%rip), %rsi      # 0x3ac02
callq 0x2250
movq %rax, %rdi
movq -0x18(%rbp), %rax
movl (%rax), %esi
callq 0x2340
movq %rax, %rdi
movq 0x18e99(%rip), %rsi     # 0x46fc0
callq 0x22a0
movq 0x18e9d(%rip), %rdi     # 0x46fd0
leaq 0xcadd(%rip), %rsi      # 0x3ac17
callq 0x2250
movq %rax, %rdi
movq -0x18(%rbp), %rax
movl 0x4(%rax), %esi
callq 0x2340
movq %rax, %rdi
movq 0x18e68(%rip), %rsi     # 0x46fc0
callq 0x22a0
movq 0x18e6c(%rip), %rdi     # 0x46fd0
leaq 0xcabc(%rip), %rsi      # 0x3ac27
callq 0x2250
movq %rax, -0xb0(%rbp)
movq -0x20(%rbp), %rax
movl (%rax), %esi
leaq -0x48(%rbp), %rdi
movq %rdi, -0xa8(%rbp)
callq 0x27c30
movq -0xb0(%rbp), %rdi
movq -0xa8(%rbp), %rsi
callq 0x2210
movq %rax, -0xa0(%rbp)
jmp 0x2e1a9
movq -0xa0(%rbp), %rdi
movq 0x18e09(%rip), %rsi     # 0x46fc0
callq 0x22a0
jmp 0x2e1be
leaq -0x48(%rbp), %rdi
callq 0x2170
movq 0x18e02(%rip), %rdi     # 0x46fd0
leaq 0xca5f(%rip), %rsi      # 0x3ac34
callq 0x2250
movq %rax, %rdi
movq -0x20(%rbp), %rax
movl 0x4(%rax), %esi
callq 0x2340
movq %rax, %rdi
movq 0x18dcd(%rip), %rsi     # 0x46fc0
callq 0x22a0
movq -0x10(%rbp), %rax
testb $0x1, (%rax)
je 0x2e354
movq 0x18dc4(%rip), %rdi     # 0x46fd0
leaq 0xca2d(%rip), %rsi      # 0x3ac40
callq 0x2250
movq %rax, -0xd0(%rbp)
movq -0x20(%rbp), %rdi
callq 0x49d0
movq -0xd0(%rbp), %rdi
movl %eax, %esi
callq 0x2340
movq %rax, %rdi
movq 0x18d80(%rip), %rsi     # 0x46fc0
callq 0x22a0
movq 0x18d84(%rip), %rdi     # 0x46fd0
leaq 0xc9fe(%rip), %rsi      # 0x3ac51
callq 0x2250
movq %rax, -0xc8(%rbp)
movq -0x20(%rbp), %rdi
callq 0x4a20
movq -0xc8(%rbp), %rdi
movl %eax, %esi
callq 0x2340
movq %rax, %rdi
movq 0x18d40(%rip), %rsi     # 0x46fc0
callq 0x22a0
movq 0x18d44(%rip), %rdi     # 0x46fd0
leaq 0xc9d3(%rip), %rsi      # 0x3ac66
callq 0x2250
movq %rax, -0xc0(%rbp)
movq -0x20(%rbp), %rdi
callq 0x4ad0
movq -0xc0(%rbp), %rdi
movl %eax, %esi
callq 0x2340
movq %rax, %rdi
movq 0x18d00(%rip), %rsi     # 0x46fc0
callq 0x22a0
movq 0x18d04(%rip), %rdi     # 0x46fd0
leaq 0xc9a7(%rip), %rsi      # 0x3ac7a
callq 0x2250
movq %rax, -0xb8(%rbp)
movq -0x20(%rbp), %rdi
callq 0x4ba0
movq -0xb8(%rbp), %rdi
movl %eax, %esi
callq 0x2340
movq %rax, %rdi
movq 0x18cc0(%rip), %rsi     # 0x46fc0
callq 0x22a0
movq 0x18cc4(%rip), %rdi     # 0x46fd0
leaq 0xc978(%rip), %rsi      # 0x3ac8b
callq 0x2250
movq %rax, %rdi
movq -0x20(%rbp), %rax
movl 0x18(%rax), %esi
callq 0x2340
movq %rax, %rdi
movq 0x18c8f(%rip), %rsi     # 0x46fc0
callq 0x22a0
jmp 0x2e354
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x48(%rbp), %rdi
callq 0x2170
jmp 0x2e34f
jmp 0x2eb84
jmp 0x2e356
jmp 0x2e358
jmp 0x2e35a
movq -0x10(%rbp), %rax
testb $0x1, 0xa(%rax)
je 0x2e8df
movq -0x8(%rbp), %rax
testb $0x1, 0x2dd(%rax)
je 0x2e8df
movq -0x20(%rbp), %rax
cmpl $0x3, (%rax)
jne 0x2e3b4
movq 0x18c47(%rip), %rdi     # 0x46fd0
leaq 0xc1ff(%rip), %rsi      # 0x3a58f
callq 0x2250
movq %rax, %rdi
movq -0x20(%rbp), %rax
movq 0x10(%rax), %rsi
callq 0x2080
movq %rax, %rdi
movq 0x18c11(%rip), %rsi     # 0x46fc0
callq 0x22a0
movq -0x20(%rbp), %rax
cmpl $0x0, 0x18(%rax)
je 0x2e42b
movq 0x18c0b(%rip), %rdi     # 0x46fd0
leaq 0xc8cf(%rip), %rsi      # 0x3ac9b
callq 0x2250
movq %rax, %rdi
movq -0x20(%rbp), %rax
movl 0x1c(%rax), %esi
callq 0x2340
movq %rax, %rdi
leaq 0xc594(%rip), %rsi      # 0x3a97e
callq 0x2250
movq %rax, %rdi
movq -0x20(%rbp), %rax
movl 0x20(%rax), %esi
callq 0x2340
movq %rax, %rdi
leaq 0xc576(%rip), %rsi      # 0x3a97e
callq 0x2250
movq %rax, %rdi
movq -0x20(%rbp), %rax
movl 0x24(%rax), %esi
callq 0x2340
movq %rax, %rdi
movq 0x18b9a(%rip), %rsi     # 0x46fc0
callq 0x22a0
movq -0x18(%rbp), %rax
cmpl $0x0, 0x38(%rax)
je 0x2e4e4
movq -0x20(%rbp), %rax
cmpl $0x3, (%rax)
jne 0x2e475
movq 0x18b87(%rip), %rdi     # 0x46fd0
leaq 0xc85b(%rip), %rsi      # 0x3acab
callq 0x2250
movq %rax, %rdi
movq -0x18(%rbp), %rax
movl 0x3c(%rax), %esi
callq 0x2340
movq %rax, %rdi
movq 0x18b52(%rip), %rsi     # 0x46fc0
callq 0x22a0
jmp 0x2e4e2
movq 0x18b54(%rip), %rdi     # 0x46fd0
leaq 0xc83b(%rip), %rsi      # 0x3acbe
callq 0x2250
movq %rax, %rdi
movq -0x18(%rbp), %rax
movl 0x3c(%rax), %esi
callq 0x2340
movq %rax, %rdi
leaq 0xc4dd(%rip), %rsi      # 0x3a97e
callq 0x2250
movq %rax, %rdi
movq -0x18(%rbp), %rax
movl 0x40(%rax), %esi
callq 0x2340
movq %rax, %rdi
leaq 0xc4bf(%rip), %rsi      # 0x3a97e
callq 0x2250
movq %rax, %rdi
movq -0x18(%rbp), %rax
movl 0x44(%rax), %esi
callq 0x2340
movq %rax, %rdi
movq 0x18ae3(%rip), %rsi     # 0x46fc0
callq 0x22a0
jmp 0x2e4e4
movq -0x18(%rbp), %rax
cmpl $0x0, 0xc8(%rax)
je 0x2e59c
movq 0x18ad4(%rip), %rdi     # 0x46fd0
leaq 0xc7cc(%rip), %rsi      # 0x3accf
callq 0x2250
movq %rax, %rdi
movq -0x18(%rbp), %rax
movl 0xcc(%rax), %esi
callq 0x2340
movq %rax, %rdi
leaq 0xc86a(%rip), %rsi      # 0x3ad8e
callq 0x2250
movq %rax, %rdi
movq -0x18(%rbp), %rax
movl 0xcc(%rax), %eax
cvtsi2sd %rax, %xmm0
movsd 0xb865(%rip), %xmm1     # 0x39da8
divsd %xmm1, %xmm0
callq 0x2450
movq %rax, %rdi
leaq 0xc428(%rip), %rsi      # 0x3a97e
callq 0x2250
movq %rax, %rdi
movq -0x18(%rbp), %rax
movl 0xcc(%rax), %eax
cvtsi2sd %rax, %xmm1
movsd 0xb833(%rip), %xmm0     # 0x39da8
divsd %xmm1, %xmm0
callq 0x2450
movq %rax, %rdi
leaq 0xb5a8(%rip), %rsi      # 0x39b30
callq 0x2250
movq %rax, %rdi
movq 0x18a29(%rip), %rsi     # 0x46fc0
callq 0x22a0
movq -0x18(%rbp), %rax
cmpl $0x0, 0xd0(%rax)
je 0x2e75f
movq 0x18a1c(%rip), %rdi     # 0x46fd0
leaq 0xc723(%rip), %rsi      # 0x3acde
callq 0x2250
movq %rax, %rdi
movq -0x18(%rbp), %rax
movl 0xd4(%rax), %eax
cvtsi2sd %rax, %xmm0
movsd 0xb7ce(%rip), %xmm1     # 0x39da8
movsd %xmm1, -0xe0(%rbp)
divsd %xmm1, %xmm0
callq 0x2450
movq %rax, %rdi
leaq 0xc7f8(%rip), %rsi      # 0x3aded
movq %rsi, -0xd8(%rbp)
callq 0x2250
movsd -0xe0(%rbp), %xmm1
movq %rax, %rdi
movq -0x18(%rbp), %rax
movl 0xd8(%rax), %eax
cvtsi2sd %rax, %xmm0
divsd %xmm1, %xmm0
callq 0x2450
movq %rax, %rdi
leaq 0xc6c2(%rip), %rsi      # 0x3acf0
callq 0x2250
movsd -0xe0(%rbp), %xmm1
movq %rax, %rdi
movq -0x18(%rbp), %rax
movl 0xdc(%rax), %eax
cvtsi2sd %rax, %xmm0
divsd %xmm1, %xmm0
callq 0x2450
movq -0xd8(%rbp), %rsi
movq %rax, %rdi
callq 0x2250
movsd -0xe0(%rbp), %xmm1
movq %rax, %rdi
movq -0x18(%rbp), %rax
movl 0xe0(%rax), %eax
cvtsi2sd %rax, %xmm0
divsd %xmm1, %xmm0
callq 0x2450
movq %rax, %rdi
leaq 0xc664(%rip), %rsi      # 0x3acf6
callq 0x2250
movsd -0xe0(%rbp), %xmm1
movq %rax, %rdi
movq -0x18(%rbp), %rax
movl 0xe4(%rax), %eax
cvtsi2sd %rax, %xmm0
divsd %xmm1, %xmm0
callq 0x2450
movq -0xd8(%rbp), %rsi
movq %rax, %rdi
callq 0x2250
movsd -0xe0(%rbp), %xmm1
movq %rax, %rdi
movq -0x18(%rbp), %rax
movl 0xe8(%rax), %eax
cvtsi2sd %rax, %xmm0
divsd %xmm1, %xmm0
callq 0x2450
movq %rax, %rdi
leaq 0xc606(%rip), %rsi      # 0x3acfc
callq 0x2250
movsd -0xe0(%rbp), %xmm1
movq %rax, %rdi
movq -0x18(%rbp), %rax
movl 0xec(%rax), %eax
cvtsi2sd %rax, %xmm0
divsd %xmm1, %xmm0
callq 0x2450
movq -0xd8(%rbp), %rsi
movq %rax, %rdi
callq 0x2250
movq %rax, %rdi
movq -0x18(%rbp), %rax
movl 0xf0(%rax), %eax
cvtsi2sd %rax, %xmm0
movsd 0xb661(%rip), %xmm1     # 0x39da8
divsd %xmm1, %xmm0
callq 0x2450
movq %rax, %rdi
movq 0x18866(%rip), %rsi     # 0x46fc0
callq 0x22a0
movq -0x18(%rbp), %rax
cmpl $0x0, 0xf4(%rax)
je 0x2e7a0
movq 0x1885d(%rip), %rdi     # 0x46fd0
leaq 0xc588(%rip), %rsi      # 0x3ad02
callq 0x2250
movq %rax, %rdi
movq -0x18(%rbp), %rax
movl 0xf8(%rax), %esi
callq 0x2340
movq %rax, %rdi
movq 0x18825(%rip), %rsi     # 0x46fc0
callq 0x22a0
movq -0x18(%rbp), %rax
cmpl $0x0, 0xfc(%rax)
je 0x2e848
movq 0x18818(%rip), %rdi     # 0x46fd0
leaq 0xc564(%rip), %rsi      # 0x3ad23
callq 0x2250
movq %rax, %rdi
movq -0x18(%rbp), %rax
movl 0x110(%rax), %esi
callq 0x2340
movq %rax, %rdi
leaq 0xc559(%rip), %rsi      # 0x3ad39
callq 0x2250
movq %rax, %rdi
movq -0x18(%rbp), %rax
movq 0x100(%rax), %rsi
callq 0x2250
movq %rax, %rdi
movq 0x187be(%rip), %rsi     # 0x46fc0
callq 0x22a0
movq -0x10(%rbp), %rax
testb $0x1, (%rax)
je 0x2e846
movq -0x10(%rbp), %rax
testb $0x1, 0x5(%rax)
jne 0x2e846
movq -0x10(%rbp), %rax
testb $0x1, 0x6(%rax)
jne 0x2e846
movq 0x187a5(%rip), %rdi     # 0x46fd0
leaq 0xc517(%rip), %rsi      # 0x3ad49
callq 0x2250
movq %rax, %rdi
movq 0x1877f(%rip), %rsi     # 0x46fc0
callq 0x22a0
jmp 0x2e848
movq -0x18(%rbp), %rax
cmpl $0x0, 0x88(%rax)
je 0x2e8dd
movq 0x18770(%rip), %rdi     # 0x46fd0
leaq 0xc512(%rip), %rsi      # 0x3ad79
callq 0x2250
movq %rax, %rdi
movq -0x18(%rbp), %rax
movl 0x98(%rax), %esi
callq 0x2340
movq %rax, %rdi
leaq 0xc509(%rip), %rsi      # 0x3ad91
callq 0x2250
movq %rax, %rdi
movq 0x18729(%rip), %rsi     # 0x46fc0
callq 0x22a0
movq -0x10(%rbp), %rax
testb $0x1, (%rax)
je 0x2e8db
movq -0x10(%rbp), %rax
testb $0x1, 0x7(%rax)
jne 0x2e8db
movq -0x10(%rbp), %rax
testb $0x1, 0x8(%rax)
jne 0x2e8db
movq 0x18710(%rip), %rdi     # 0x46fd0
leaq 0xc4d2(%rip), %rsi      # 0x3ad99
callq 0x2250
movq %rax, %rdi
movq 0x186ea(%rip), %rsi     # 0x46fc0
callq 0x22a0
jmp 0x2e8dd
jmp 0x2e8df
movq -0x18(%rbp), %rax
cmpl $0x0, 0xfc(%rax)
je 0x2ea2c
movq -0x10(%rbp), %rax
testb $0x1, 0x5(%rax)
je 0x2ea2c
movq -0x10(%rbp), %rax
testb $0x1, 0x3(%rax)
jne 0x2e95e
movq 0x186c1(%rip), %rdi     # 0x46fd0
leaq 0xc4ac(%rip), %rsi      # 0x3adc2
callq 0x2250
movq %rax, %rdi
movq -0x18(%rbp), %rax
movl 0x110(%rax), %esi
callq 0x2340
movq %rax, %rdi
leaq 0xc4a1(%rip), %rsi      # 0x3add8
callq 0x2250
movq %rax, %rdi
movq -0x18(%rbp), %rax
movq 0x100(%rax), %rsi
callq 0x2250
movq %rax, %rdi
movq 0x18667(%rip), %rsi     # 0x46fc0
callq 0x22a0
movq -0x18(%rbp), %rax
movq 0x108(%rax), %rcx
movq %rcx, -0xf8(%rbp)
movl 0x110(%rax), %eax
movq %rax, -0xf0(%rbp)
leaq -0x79(%rbp), %rdi
movq %rdi, -0xe8(%rbp)
callq 0x2440
movq -0xe8(%rbp), %rdx
leaq 0xc451(%rip), %rsi      # 0x3adec
leaq -0x78(%rbp), %rdi
callq 0x2360
jmp 0x2e9a6
movq -0xf0(%rbp), %rsi
movq -0xf8(%rbp), %rdi
leaq -0x78(%rbp), %rdx
callq 0x2c260
jmp 0x2e9bf
leaq -0x78(%rbp), %rdi
callq 0x2170
jmp 0x2e9ca
leaq -0x79(%rbp), %rdi
callq 0x22b0
movq 0x185f6(%rip), %rdi     # 0x46fd0
leaq 0xc40e(%rip), %rsi      # 0x3adef
callq 0x2250
movq %rax, %rdi
movq 0x185d0(%rip), %rsi     # 0x46fc0
callq 0x22a0
jmp 0x2ea2c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x2ea1e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x78(%rbp), %rdi
callq 0x2170
jmp 0x2ea1c
jmp 0x2ea1e
leaq -0x79(%rbp), %rdi
callq 0x22b0
jmp 0x2eb84
movq -0x18(%rbp), %rax
cmpl $0x0, 0xfc(%rax)
je 0x2ea63
movq -0x10(%rbp), %rax
testb $0x1, 0x6(%rax)
je 0x2ea63
movq -0x18(%rbp), %rax
movq 0x108(%rax), %rdi
movq -0x18(%rbp), %rax
movl 0x110(%rax), %eax
movl %eax, %esi
movq -0x10(%rbp), %rdx
callq 0x2dd50
movq -0x18(%rbp), %rax
cmpl $0x0, 0x88(%rax)
je 0x2ea9a
movq -0x10(%rbp), %rax
testb $0x1, 0x8(%rax)
je 0x2ea9a
movq -0x18(%rbp), %rax
movq 0x90(%rax), %rdi
movq -0x18(%rbp), %rax
movl 0x98(%rax), %eax
movl %eax, %esi
movq -0x10(%rbp), %rdx
callq 0x2dd50
movq -0x10(%rbp), %rax
testb $0x1, 0xa(%rax)
je 0x2eb7b
movq -0x8(%rbp), %rax
testb $0x1, 0x2dd(%rax)
je 0x2eb7b
movq -0x10(%rbp), %rax
testb $0x1, (%rax)
je 0x2eaf6
movq 0x18507(%rip), %rdi     # 0x46fd0
leaq 0xc332(%rip), %rsi      # 0x3ae02
callq 0x2250
movq %rax, %rdi
movq -0x18(%rbp), %rax
movl 0xb8(%rax), %esi
callq 0x2340
movq %rax, %rdi
movq 0x184cf(%rip), %rsi     # 0x46fc0
callq 0x22a0
movq -0x18(%rbp), %rax
cmpl $0x0, 0xb8(%rax)
je 0x2eb79
movq 0x184c6(%rip), %rdi     # 0x46fd0
leaq 0xc303(%rip), %rsi      # 0x3ae14
callq 0x2250
movq %rax, %rdi
movq -0x18(%rbp), %rax
movl 0xbc(%rax), %esi
callq 0x2340
movq %rax, %rdi
leaq 0xc2ef(%rip), %rsi      # 0x3ae21
callq 0x2250
movq %rax, %rdi
movq -0x18(%rbp), %rax
movl 0xc0(%rax), %esi
callq 0x2340
movq %rax, %rdi
leaq 0xc2d4(%rip), %rsi      # 0x3ae27
callq 0x2250
movq %rax, %rdi
movq -0x18(%rbp), %rax
movl 0xc4(%rax), %esi
callq 0x2340
movq %rax, %rdi
movq 0x1844c(%rip), %rsi     # 0x46fc0
callq 0x22a0
jmp 0x2eb7b
addq $0x100, %rsp            # imm = 0x100
popq %rbp
retq
movq -0x50(%rbp), %rdi
callq 0x2430
movq %rax, %rdi
callq 0x19400
nopw %cs:(%rax,%rax)