// File: /workspace/github_cpp_makefile_star2_O1/lvandeve[P]lodepng/pngdetail.cpp
// Function: showExifIFD(unsigned char const*, unsigned long, unsigned long, bool, bool, bool)
void showExifIFD(const unsigned char* exif, size_t size, size_t ifd_pos, bool big_endian, bool is_thumbnail, bool is_sub) {
  size_t pos = ifd_pos;
  size_t sub_ifd = 0;
  if(pos + 2 > size) {
    std::cout << "EXIF IFD out of range: " << pos << std::endl;
    return;
  }
  size_t num_entries = readExifUint16(exif, size, pos, big_endian);
  if(is_sub) {
    std::cout << "EXIF Sub-IFD at " << pos << ", num entries: " << num_entries << std::endl;
  } else if(is_thumbnail) {
    std::cout << "EXIF Thumbnail IFD at " << pos << ", num entries: " << num_entries << std::endl;
  } else {
    std::cout << "EXIF IFD at " << pos << ", num entries: " << num_entries << std::endl;
  }
  pos += 2;
  for(size_t i = 0; i < num_entries; i++) {
    if(pos + 12 > size) {
      std::cout << "EXIF IFD entry out of range: " << pos << std::endl;
      return;
    }
    uint32_t tag_number = readExifUint16(exif, size, pos, big_endian);
    uint32_t format = readExifUint16(exif, size, pos + 2, big_endian);
    uint32_t num = readExifUint32(exif, size, pos + 4, big_endian);
    uint32_t offset = readExifUint32(exif, size, pos + 8, big_endian);
    uint32_t component_size = 1;
    if(format == 3 || format == 8) component_size = 2;
    else if(format == 4 || format == 9 || format == 11) component_size = 4;
    else if(format == 5 || format == 10 || format == 12) component_size = 8;
    size_t len = num * component_size;
    if(len <= 4) offset = pos + 8; // small value is stored in the offset itself
    pos += 12;

    if(format < 1 || format > 12) {
      std::cout << "EXIF unknown entry format" << std::endl;
      return;
    }
    if(is_thumbnail) std::cout << "EXIF tag (thumbnail): ";
    else std::cout << "EXIF tag: ";
    // Only show some common tags by full name
    if(tag_number == 256) std::cout << "Umage Width";
    else if(tag_number == 257) std::cout << "Image Height";
    else if(tag_number == 259) std::cout << "Compression";
    else if(tag_number == 269) std::cout << "Document Name";
    else if(tag_number == 270) std::cout << "Image Description";
    else if(tag_number == 274) std::cout << "Orientation";
    else if(tag_number == 282) std::cout << "X Resolution";
    else if(tag_number == 283) std::cout << "Y Resolution";
    else if(tag_number == 296) std::cout << "Resolution Unit";
    else if(tag_number == 513) std::cout << "Thumbnail Offset";
    else if(tag_number == 514) std::cout << "Thumbnail Size";
    else if(tag_number == 33434) std::cout << "Exposure Time";
    else if(tag_number == 33432) std::cout << "Copyright";
    else if(tag_number == 36864) std::cout << "Exif Version";
    else if(tag_number == 37510) std::cout << "User Comment";
    else std::cout << "#" << tag_number; // tag for which we don't show a name here
    std::cout << ": ";

    if(offset + len > size) {
      std::cout << "EXIF data out of range" << std::endl;
      return;
    }
    if(len == 0) {
      std::cout << "[empty]" << std::endl;
      continue;
    }

    if(format == 1) {
      std::cout << (uint32_t)exif[offset];
    } else if(format == 2) {
      for(size_t j = 0; j < len; j++) {
        if(!exif[offset + j]) break; // NULL terminator
        std::cout << exif[offset + j];
      }
    } else if(format == 3) {
      std::cout << readExifUint16(exif, size, offset, big_endian);
    } else if(format == 4) {
      if(tag_number == 34665) sub_ifd = readExifUint32(exif, size, offset, big_endian);
      else std::cout << readExifUint32(exif, size, offset, big_endian);
    } else if(format == 5) {
      double n = readExifUint32(exif, size, offset, big_endian);
      double d = readExifUint32(exif, size, offset + 4, big_endian);
      std::cout << (n / d);
    } else if(format == 7 && len > 8 && exif[offset + 0] == 'A' && exif[offset + 1] == 'S' &&
              exif[offset + 2] == 'C' && exif[offset + 3] == 'I' && exif[offset + 4] == 'I') {
      for(size_t j = 8; j < len; j++) std::cout << exif[offset + j];
    } else if(format == 7 && len == 4 && tag_number == 36864) {
      for(size_t j = 0; j < len; j++) std::cout << exif[offset + j];
    } else if(format == 8) {
      std::cout << (int32_t)readExifUint16(exif, size, offset, big_endian);
    } else if(format == 9) {
      std::cout << (int16_t)readExifUint32(exif, size, offset, big_endian);
    } else if(format == 10) {
      double n = (int32_t)readExifUint32(exif, size, offset, big_endian);
      double d = (int32_t)readExifUint32(exif, size, offset + 4, big_endian);
      std::cout << (n / d);
    } else {
      // Formats like double not handled here
      std::cout << "[format " << format << ", len " << len << "]";
    }
    std::cout << std::endl;
  }
  if(pos + 4 > size) {
    std::cout << "EXIF IFD footer out of range" << std::endl;
    return;
  }
  size_t next_ifd = readExifUint32(exif, size, pos, big_endian);

  // The > checks are to guarantee progress rather than infinity recursion, though it does mean
  // that an odd EXIF that places later parts earlier in the file won't be supported correctly
  if(sub_ifd && sub_ifd > ifd_pos && sub_ifd != next_ifd) {
    showExifIFD(exif, size, sub_ifd, big_endian, is_thumbnail, true);
  }
  if(next_ifd && next_ifd > ifd_pos) {
    showExifIFD(exif, size, sub_ifd, big_endian, true, is_sub);
  }
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x68, %rsp
movl %r8d, 0x34(%rsp)
movq %rdx, %r14
leaq 0x2(%rdx), %r15
cmpq %rsi, %r15
jbe 0x1c840
movq 0xe7e7(%rip), %rbx      # 0x2afd0
leaq 0x7a95(%rip), %rsi      # 0x24285
movl $0x17, %edx
movq %rbx, %rdi
callq 0x2280
movq %rbx, %rdi
movq %r14, %rsi
callq 0x2150
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x2210
movsbl %al, %esi
movq %rbx, %rdi
callq 0x2040
movq %rax, %rdi
addq $0x68, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x2160
movl %ecx, %ebp
movq %rsi, %r13
leaq (%rdi,%r14), %rax
leaq (%rdi,%r14), %rcx
incq %rcx
testb %bpl, %bpl
movq %rax, %rdx
cmovneq %rcx, %rdx
cmoveq %rcx, %rax
movzbl (%rax), %eax
shll $0x8, %eax
movzbl (%rdx), %ecx
orq %rax, %rcx
movq %rcx, 0x48(%rsp)
testb %r9b, %r9b
movq %rdi, 0x8(%rsp)
movl %r9d, 0x44(%rsp)
je 0x1c893
movq 0xe74b(%rip), %rdi      # 0x2afd0
leaq 0x7a11(%rip), %rsi      # 0x2429d
movl $0x10, %edx
jmp 0x1c8c2
cmpb $0x0, 0x34(%rsp)
je 0x1c8af
movq 0xe72f(%rip), %rdi      # 0x2afd0
leaq 0x7a16(%rip), %rsi      # 0x242be
movl $0x16, %edx
jmp 0x1c8c2
movq 0xe71a(%rip), %rdi      # 0x2afd0
leaq 0x7a18(%rip), %rsi      # 0x242d5
movl $0xc, %edx
callq 0x2280
movq 0xe702(%rip), %rdi      # 0x2afd0
movq %r14, 0x58(%rsp)
movq %r14, %rsi
callq 0x2150
movq %rax, %rbx
leaq 0x79c9(%rip), %rsi      # 0x242ae
movl $0xf, %edx
movq %rax, %rdi
callq 0x2280
movq %rbx, %rdi
movq 0x48(%rsp), %r14
movq %r14, %rsi
callq 0x2150
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x2210
movsbl %al, %esi
movq %rbx, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x2160
testq %r14, %r14
setne %r14b
movl %ebp, 0x24(%rsp)
je 0x1d1a6
movq $0x0, 0x38(%rsp)
movzbl %bpl, %eax
movl %eax, 0x20(%rsp)
movq %r15, %rbp
xorl %eax, %eax
movq 0x8(%rsp), %rbx
movq %r13, 0x10(%rsp)
leaq 0xc(%rbp), %rdi
cmpq %r13, %rdi
ja 0x1d1b1
movb %r14b, 0x1c(%rsp)
movq %rax, 0x60(%rsp)
leaq 0x2(%rbp), %rax
xorl %r12d, %r12d
movl $0x0, %edx
cmpq %r13, %rax
ja 0x1c9ab
leaq (%rbx,%rbp), %rcx
leaq (%rbx,%rbp), %rdx
incq %rdx
cmpb $0x0, 0x24(%rsp)
movq %rcx, %rsi
cmovneq %rdx, %rsi
cmoveq %rdx, %rcx
movzbl (%rcx), %ecx
shll $0x8, %ecx
movzbl (%rsi), %edx
orl %ecx, %edx
movl %edx, 0x28(%rsp)
movq %rdi, 0x50(%rsp)
leaq 0x4(%rbp), %rdx
cmpq %r13, %rdx
ja 0x1c9e4
leaq (%rbx,%rax), %rcx
addq %rbx, %rax
incq %rax
cmpb $0x0, 0x24(%rsp)
movq %rcx, %rsi
cmovneq %rax, %rsi
cmoveq %rax, %rcx
movzbl (%rcx), %eax
shll $0x8, %eax
movzbl (%rsi), %r12d
orl %eax, %r12d
movq %rbx, %rdi
movq %r13, %rsi
movl 0x20(%rsp), %r14d
movl %r14d, %ecx
callq 0x1c746
movl %eax, %r15d
addq $0x8, %rbp
movq %rbx, %rdi
movq %r13, %rsi
movq %rbp, %rdx
movl %r14d, %ecx
callq 0x1c746
movl %eax, %r13d
movl $0x2, %ebx
cmpl $0x3, %r12d
je 0x1ca5a
cmpl $0x8, %r12d
je 0x1ca5a
cmpl $0x4, %r12d
sete %al
movl %r12d, %ecx
andl $-0x3, %ecx
cmpl $0x9, %ecx
sete %cl
orb %al, %cl
movl $0x4, %ebx
jne 0x1ca5a
movl $0x1, %ebx
cmpl $0xc, %r12d
ja 0x1ca5a
movl $0x1420, %eax           # imm = 0x1420
btl %r12d, %eax
jae 0x1ca5a
movl $0x8, %ebx
imull %r15d, %ebx
cmpl $0x5, %ebx
cmovbl %ebp, %r13d
leal -0xd(%r12), %eax
cmpl $-0xd, %eax
ja 0x1ca8a
movl $0x19, %edx
movq 0xe555(%rip), %r14      # 0x2afd0
movq %r14, %rdi
leaq 0x787b(%rip), %rsi      # 0x24300
jmp 0x1cd0c
cmpb $0x0, 0x34(%rsp)
movq 0xe53a(%rip), %r14      # 0x2afd0
je 0x1caa9
movl $0x16, %edx
movq %r14, %rdi
leaq 0x7873(%rip), %rsi      # 0x2431a
jmp 0x1cab8
movl $0xa, %edx
movq %r14, %rdi
leaq 0x7879(%rip), %rsi      # 0x24331
callq 0x2280
movl 0x28(%rsp), %eax
cmpl $0x11a, %eax            # imm = 0x11A
jle 0x1cb04
cmpl $0x8297, %eax           # imm = 0x8297
jg 0x1cb40
cmpl $0x200, %eax            # imm = 0x200
jg 0x1cbd4
cmpl $0x11b, %eax            # imm = 0x11B
je 0x1cc61
cmpl $0x128, %eax            # imm = 0x128
jne 0x1cca5
movl $0xf, %edx
movq %r14, %rdi
leaq 0x78a8(%rip), %rsi      # 0x243a7
jmp 0x1ccd6
cmpl $0x10c, %eax            # imm = 0x10C
jle 0x1cb75
cmpl $0x111, %eax            # imm = 0x111
jg 0x1cbaa
cmpl $0x10d, %eax            # imm = 0x10D
je 0x1cc28
cmpl $0x10e, %eax            # imm = 0x10E
jne 0x1cca5
movl $0x11, %edx
movq %r14, %rdi
leaq 0x7834(%rip), %rsi      # 0x2436f
jmp 0x1ccd6
cmpl $0x8fff, %eax           # imm = 0x8FFF
jg 0x1cbfe
cmpl $0x8298, %eax           # imm = 0x8298
je 0x1cc72
cmpl $0x829a, %eax           # imm = 0x829A
jne 0x1cca5
movl $0xd, %edx
movq %r14, %rdi
leaq 0x7867(%rip), %rsi      # 0x243d7
jmp 0x1ccd6
cmpl $0x100, %eax            # imm = 0x100
je 0x1ccc7
cmpl $0x101, %eax            # imm = 0x101
je 0x1cc50
cmpl $0x103, %eax            # imm = 0x103
jne 0x1cca5
movl $0xb, %edx
movq %r14, %rdi
leaq 0x77b0(%rip), %rsi      # 0x24355
jmp 0x1ccd6
cmpl $0x112, %eax            # imm = 0x112
je 0x1cc3c
cmpl $0x11a, %eax            # imm = 0x11A
jne 0x1cca5
movl $0xc, %edx
movq %r14, %rdi
leaq 0x77be(%rip), %rsi      # 0x2438d
jmp 0x1ccd6
cmpl $0x201, %eax            # imm = 0x201
je 0x1cc83
cmpl $0x202, %eax            # imm = 0x202
jne 0x1cca5
movl $0xe, %edx
movq %r14, %rdi
leaq 0x77cf(%rip), %rsi      # 0x243c8
jmp 0x1ccd6
cmpl $0x9000, %eax           # imm = 0x9000
je 0x1cc94
cmpl $0x9286, %eax           # imm = 0x9286
jne 0x1cca5
movl $0xc, %edx
movq %r14, %rdi
leaq 0x77d9(%rip), %rsi      # 0x243fc
jmp 0x1ccd6
movl $0xd, %edx
movq %r14, %rdi
leaq 0x772a(%rip), %rsi      # 0x24361
jmp 0x1ccd6
movl $0xb, %edx
movq %r14, %rdi
leaq 0x7736(%rip), %rsi      # 0x24381
jmp 0x1ccd6
movl $0xc, %edx
movq %r14, %rdi
leaq 0x76e9(%rip), %rsi      # 0x24348
jmp 0x1ccd6
movl $0xc, %edx
movq %r14, %rdi
leaq 0x772a(%rip), %rsi      # 0x2439a
jmp 0x1ccd6
movl $0x9, %edx
movq %r14, %rdi
leaq 0x7764(%rip), %rsi      # 0x243e5
jmp 0x1ccd6
movl $0x10, %edx
movq %r14, %rdi
leaq 0x7725(%rip), %rsi      # 0x243b7
jmp 0x1ccd6
movl $0xc, %edx
movq %r14, %rdi
leaq 0x774c(%rip), %rsi      # 0x243ef
jmp 0x1ccd6
movl $0x1, %edx
movq %r14, %rdi
leaq 0x6bbf(%rip), %rsi      # 0x23873
callq 0x2280
movl 0x28(%rsp), %esi
movq %r14, %rdi
callq 0x2150
jmp 0x1ccdb
movl $0xb, %edx
movq %r14, %rdi
leaq 0x7666(%rip), %rsi      # 0x2433c
callq 0x2280
movl $0x2, %edx
movq %r14, %rdi
leaq 0x7644(%rip), %rsi      # 0x2432e
callq 0x2280
movl %r13d, %ebp
leaq (%rbx,%rbp), %rax
cmpq 0x10(%rsp), %rax
jbe 0x1cd76
movl $0x16, %edx
movq %r14, %rdi
leaq 0x76fd(%rip), %rsi      # 0x24409
callq 0x2280
movl $0x1, %r15d
movq 0x10(%rsp), %r13
movq 0x8(%rsp), %rbx
movq (%r14), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x2210
movsbl %al, %esi
movq %r14, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x2160
testb $0x3, %r15b
movq 0x60(%rsp), %rax
jne 0x1d206
incq %rax
movq 0x50(%rsp), %r15
movq %r15, %rbp
cmpq 0x48(%rsp), %rax
setb %r14b
jne 0x1c95d
jmp 0x1d210
testq %rbx, %rbx
je 0x1cdbe
leal -0x1(%r12), %eax
cmpl $0x4, %eax
ja 0x1ceee
leaq 0x6240(%rip), %rcx      # 0x22fd0
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq 0x8(%rsp), %rbx
movzbl (%rbx,%rbp), %esi
movq 0xe227(%rip), %r14      # 0x2afd0
movq %r14, %rdi
callq 0x2150
xorl %r15d, %r15d
movq 0x10(%rsp), %r13
jmp 0x1cd21
movl $0x7, %edx
movq 0xe206(%rip), %r14      # 0x2afd0
movq %r14, %rdi
leaq 0x764c(%rip), %rsi      # 0x24420
callq 0x2280
movl $0x4, %r15d
jmp 0x1cd17
movq 0x8(%rsp), %r14
movq %r14, %rdi
movq 0x10(%rsp), %rbx
movq %rbx, %rsi
movq %rbp, %rdx
movl 0x20(%rsp), %ebp
movl %ebp, %ecx
callq 0x1c746
movl %eax, %eax
cvtsi2sd %rax, %xmm0
movsd %xmm0, 0x28(%rsp)
addl $0x4, %r13d
movq %r14, %rdi
movq %rbx, %rsi
movq %r13, %rdx
movq %rbx, %r13
movq %r14, %rbx
movl %ebp, %ecx
callq 0x1c746
movl %eax, %eax
cvtsi2sd %rax, %xmm1
movsd 0x28(%rsp), %xmm0
divsd %xmm1, %xmm0
movq 0xe18f(%rip), %r14      # 0x2afd0
movq %r14, %rdi
callq 0x2320
jmp 0x1d02f
leaq 0x2(%rbp), %rax
movq 0x10(%rsp), %r13
cmpq %r13, %rax
jbe 0x1cff4
xorl %esi, %esi
movq 0x8(%rsp), %rbx
jmp 0x1d020
movq 0x8(%rsp), %rbx
movq %rbx, %rdi
movq 0x10(%rsp), %r13
movq %r13, %rsi
movq %rbp, %rdx
movl 0x20(%rsp), %ecx
callq 0x1c746
xorl %r15d, %r15d
movl %eax, %esi
cmpl $0x8769, 0x28(%rsp)     # imm = 0x8769
jne 0x1d037
movq %rsi, 0x38(%rsp)
jmp 0x1cee2
addq 0x8(%rsp), %rbp
xorl %r14d, %r14d
movq 0x10(%rsp), %r13
movb (%rbp,%r14), %al
xorl %r15d, %r15d
testb %al, %al
je 0x1cedd
movb %al, 0x1d(%rsp)
movl $0x1, %edx
movq 0xe105(%rip), %rdi      # 0x2afd0
leaq 0x1d(%rsp), %rsi
callq 0x2280
incq %r14
cmpq %r14, %rbx
jne 0x1ceaf
movq 0x8(%rsp), %rbx
movq 0xe0e7(%rip), %r14      # 0x2afd0
jmp 0x1cd21
cmpl $0x7, %r12d
jne 0x1cf97
cmpl $0x9, %ebx
jb 0x1cf97
movq 0x8(%rsp), %rax
cmpb $0x41, (%rax,%rbp)
jne 0x1cf97
leal 0x1(%r13), %eax
movq 0x8(%rsp), %rcx
cmpb $0x53, (%rcx,%rax)
jne 0x1cf97
leal 0x2(%r13), %eax
movq 0x8(%rsp), %rcx
cmpb $0x43, (%rcx,%rax)
jne 0x1cf97
leal 0x3(%r13), %eax
movq 0x8(%rsp), %rcx
cmpb $0x49, (%rcx,%rax)
jne 0x1cf97
leal 0x4(%r13), %eax
movq 0x8(%rsp), %rcx
cmpb $0x49, (%rcx,%rax)
jne 0x1cf97
xorl %r15d, %r15d
cmpl $0x9, %ebx
jb 0x1d19c
addq 0x8(%rsp), %rbp
movl $0x8, %r14d
movq 0x10(%rsp), %r13
leaq 0x1e(%rsp), %r12
movb (%rbp,%r14), %al
movb %al, 0x1e(%rsp)
movl $0x1, %edx
movq 0xe04e(%rip), %rdi      # 0x2afd0
movq %r12, %rsi
callq 0x2280
incq %r14
cmpq %r14, %rbx
jne 0x1cf6d
jmp 0x1cedd
cmpl $0x7, %r12d
jne 0x1d04b
cmpl $0x9000, 0x28(%rsp)     # imm = 0x9000
jne 0x1d04b
cmpl $0x4, %ebx
jne 0x1d04b
addq 0x8(%rsp), %rbp
xorl %ebx, %ebx
movq 0xe00a(%rip), %r14      # 0x2afd0
leaq 0x1f(%rsp), %r12
movb (%rbp,%rbx), %al
movb %al, 0x1f(%rsp)
movl $0x1, %edx
movq %r14, %rdi
movq %r12, %rsi
callq 0x2280
incq %rbx
xorl %r15d, %r15d
cmpq $0x4, %rbx
jne 0x1cfcb
jmp 0x1cd17
movq 0x8(%rsp), %rbx
leaq (%rbx,%rbp), %rax
leaq (%rbx,%rbp), %rcx
incq %rcx
cmpb $0x0, 0x24(%rsp)
movq %rax, %rdx
cmovneq %rcx, %rdx
cmoveq %rcx, %rax
movzbl (%rax), %eax
shll $0x8, %eax
movzbl (%rdx), %esi
orq %rax, %rsi
movq 0xdfa9(%rip), %r14      # 0x2afd0
movq %r14, %rdi
callq 0x2150
xorl %r15d, %r15d
jmp 0x1cd21
movq 0xdf92(%rip), %r14      # 0x2afd0
movq %r14, %rdi
callq 0x2150
jmp 0x1cd21
cmpl $0xa, %r12d
je 0x1d0ed
cmpl $0x9, %r12d
je 0x1d0ba
cmpl $0x8, %r12d
movq 0x10(%rsp), %r13
jne 0x1d138
leaq 0x2(%rbp), %rax
xorl %r15d, %r15d
movl $0x0, %esi
cmpq %r13, %rax
movq 0x8(%rsp), %rbx
ja 0x1d0a6
leaq (%rbx,%rbp), %rax
leaq (%rbx,%rbp), %rcx
incq %rcx
cmpb $0x0, 0x24(%rsp)
movq %rax, %rdx
cmovneq %rcx, %rdx
cmoveq %rcx, %rax
movzbl (%rax), %eax
shll $0x8, %eax
movzbl (%rdx), %esi
orl %eax, %esi
movq 0xdf23(%rip), %r14      # 0x2afd0
movq %r14, %rdi
callq 0x2380
jmp 0x1cd21
movq 0x8(%rsp), %rbx
movq %rbx, %rdi
movq 0x10(%rsp), %r13
movq %r13, %rsi
movq %rbp, %rdx
movl 0x20(%rsp), %ecx
callq 0x1c746
movswl %ax, %esi
movq 0xdef0(%rip), %r14      # 0x2afd0
movq %r14, %rdi
callq 0x21f0
jmp 0x1d02f
movq 0x8(%rsp), %r14
movq %r14, %rdi
movq 0x10(%rsp), %rbx
movq %rbx, %rsi
movq %rbp, %rdx
movl 0x20(%rsp), %ebp
movl %ebp, %ecx
callq 0x1c746
cvtsi2sd %eax, %xmm0
movsd %xmm0, 0x28(%rsp)
addl $0x4, %r13d
movq %r14, %rdi
movq %rbx, %rsi
movq %r13, %rdx
movq %rbx, %r13
movq %r14, %rbx
movl %ebp, %ecx
callq 0x1c746
cvtsi2sd %eax, %xmm1
jmp 0x1ce30
movl $0x8, %edx
movq 0xde8c(%rip), %r14      # 0x2afd0
movq %r14, %rdi
leaq 0x72da(%rip), %rsi      # 0x24428
callq 0x2280
movl %r12d, %esi
movq %r14, %rdi
callq 0x2150
movq %rax, %r15
movl $0x6, %edx
movq %rax, %rdi
leaq 0x72c1(%rip), %rsi      # 0x24431
callq 0x2280
movq %r15, %rdi
movq %rbx, %rsi
callq 0x2150
movl $0x1, %edx
movq %rax, %rdi
leaq 0x59c3(%rip), %rsi      # 0x22b52
callq 0x2280
xorl %r15d, %r15d
jmp 0x1cd1c
movq 0x10(%rsp), %r13
jmp 0x1cedd
movq $0x0, 0x38(%rsp)
jmp 0x1d210
movq 0xde18(%rip), %rbx      # 0x2afd0
leaq 0x7123(%rip), %rsi      # 0x242e2
movl $0x1d, %edx
movq %rbx, %rdi
callq 0x2280
movq %rbx, %rdi
movq %rbp, %rsi
callq 0x2150
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x2210
movsbl %al, %esi
movq %rbx, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x2160
movq %rbp, %r15
jmp 0x1d210
movq 0x50(%rsp), %r15
movb 0x1c(%rsp), %r14b
testb $0x1, %r14b
jne 0x1d2d5
leaq 0x4(%r15), %rax
cmpq %r13, %rax
jbe 0x1d267
leaq 0x720e(%rip), %rsi      # 0x24438
movl $0x1c, %edx
movq 0xdd9a(%rip), %rbx      # 0x2afd0
movq %rbx, %rdi
callq 0x2280
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x2210
movsbl %al, %esi
movq %rbx, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x2160
jmp 0x1d2d5
movzbl 0x24(%rsp), %ebx
movq 0x8(%rsp), %rdi
movq %r13, %rsi
movq %r15, %rdx
movl %ebx, %ecx
callq 0x1c746
movl %eax, %r14d
movq 0x58(%rsp), %r15
movq 0x38(%rsp), %rdx
cmpq %r15, %rdx
jbe 0x1d2b0
cmpq %r14, %rdx
je 0x1d2b0
movzbl 0x34(%rsp), %r8d
movq 0x8(%rsp), %rdi
movq %r13, %rsi
movl %ebx, %ecx
movl $0x1, %r9d
callq 0x1c7c3
cmpq %r15, %r14
jbe 0x1d2d5
movzbl 0x44(%rsp), %r9d
movq 0x8(%rsp), %rdi
movq %r13, %rsi
movq 0x38(%rsp), %rdx
movl %ebx, %ecx
movl $0x1, %r8d
callq 0x1c7c3
addq $0x68, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq