// File: /workspace/github_cpp_makefile_star2_O1/lvandeve[P]lodepng/lodepng_benchmark.cpp
// Function: main
int main(int argc, char *argv[]) {
  verbose = false;
  do_decode = true;
  do_encode = true;
  decode_encoded = true;

  std::vector<std::string> files;

  for(int i = 1; i < argc; i++) {
    std::string arg = argv[i];
    if(arg == "-v") verbose = true;
    else if(arg == "-h" || arg == "--help") { showHelp(argc, argv); return 0; }
    else if(arg == "-d") do_decode ? (do_encode = false) : (do_decode = true);
    else if(arg == "-e") do_encode ? (do_decode = false) : (do_encode = true);
    else if(arg == "-o") decode_encoded = false;
    else if(arg == "-m") apply_mods = true;
    else if(arg == "--dumpdir" && i + 1 < argc) {
      dumpdir = argv[++i];
    }
    else files.push_back(arg);
  }

  if(!do_encode) decode_encoded = false;

  if(files.empty()) {
    std::cout << "must give .png filenames to benchamrk" << std::endl;
    showHelp(argc, argv);
    return 1;
  }



  for(size_t i = 0; i < files.size(); i++) {
    testFile(files[i]);
  }

  // test images stats
  if(verbose) {
    std::cout << "Final Summary: " << std::endl;
    std::cout << "input images: " << files.size() << std::endl;
    std::cout << "total_pixels: " << total_pixels << std::endl;
    // file size of original PNGs that were given as command line arguments to the tool
    std::cout << "total_png_orig_size: " << total_png_orig_size << " (" << (8.0 * total_png_orig_size / total_pixels) << " bpp)" << std::endl;
    // size of the data inside the original PNGs, dependent on color encoding (bit depth used in the PNG)
    std::cout << "total_raw_orig_size: " << total_raw_orig_size << " (" << (8.0 * total_raw_orig_size / total_pixels) << " bpp)" << std::endl;
    // size of the pixel data given to the benchmark encoder, dependent on color encoding (bit depth used in the image representation in the benchmark tool, probably 32 bits)
    if(do_encode) std::cout << "total_raw_enc_size: " << total_raw_enc_size << " (" << (8.0 * total_raw_enc_size / total_pixels) << " bpp)" << std::endl;
    // file size of PNGs created by the benchmark encoder
    if(do_encode) std::cout << "total_png_out_size: " << total_png_out_size << " (" << (8.0 * total_png_out_size / total_pixels) << " bpp)" << std::endl;
    // size of the data inside the PNGs created by the benchmark encoder, dependent on color encoding (bit depth used in the PNG), may differ from total_raw_orig_size since the encoder may choose to use a different color encoding
    if(do_encode) std::cout << "total_raw_out_size: " << total_raw_out_size << " (" << (8.0 * total_raw_out_size / total_pixels) << " bpp)" << std::endl;
    // size of file size of the PNGs given to the benchmark decoder, this could either be the original ones or the ones encoded by the benchmark encoder depending on user options
    if(do_decode) std::cout << "total_png_in_size: " << total_png_in_size << " (" << (8.0 * total_png_in_size / total_pixels) << " bpp)" << std::endl;
    // size of the data inside the PNGs mentioned at total_png_in_size, dependent on color encoding (bit depth used in the image representation in the benchmark tool, probably 32 bits)
    if(do_decode) std::cout << "total_raw_in_size: " << total_raw_in_size << " (" << (8.0 * total_raw_in_size / total_pixels) << " bpp)" << std::endl;
    // size of the pixel data requested from the benchmark decoder, dependent on color encoding requested (bit depth used in the image representation in the benchmark tool, probably 32 bits)
    if(do_decode) std::cout << "total_raw_dec_size: " << total_raw_dec_size << " (" << (8.0 * total_raw_dec_size / total_pixels) << " bpp)" << std::endl;
  }

  // final encoding stats
  if(do_encode) {
    std::cout << "encoding time: " << total_enc_time << "s on " << total_pixels << " pixels and " << total_raw_out_size << " raw bytes ("
              << ((total_raw_enc_size/1024.0/1024.0)/(total_enc_time)) << " MB/s, " << ((total_pixels/1024.0/1024.0)/(total_enc_time)) << " MP/s)" << std::endl;
    std::cout << "encoded size: " << total_png_out_size << " (" << (100.0 * total_png_out_size / total_raw_out_size) << "%), bpp: "
              << (8.0 * total_png_out_size / total_pixels) << std::endl;
  }

  // final decoding stats
  if(do_decode) {
    if(verbose) std::cout << "decoding iterations: " << NUM_DECODE << std::endl;
    std::cout << "decoding time: " << total_dec_time/NUM_DECODE << "s on " << total_pixels << " pixels and " << total_png_in_size
              << " compressed bytes (" << ((total_raw_in_size/1024.0/1024.0)/(total_dec_time/NUM_DECODE)) << " MB/s, "
              << ((total_pixels/1024.0/1024.0)/(total_dec_time/NUM_DECODE)) << " MP/s)" << std::endl;
  }
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x58, %rsp
movq %rsi, %rbx
movb $0x0, 0xb461(%rip)      # 0x1d220
movb $0x1, %al
movb %al, 0xb45a(%rip)       # 0x1d221
movb %al, 0xb455(%rip)       # 0x1d222
movb %al, 0xb450(%rip)       # 0x1d223
xorpd %xmm0, %xmm0
movapd %xmm0, 0x10(%rsp)
movq $0x0, 0x20(%rsp)
cmpl $0x2, %edi
jl 0x11fb5
movl %edi, %ebp
movl $0x1, %r13d
leaq 0x38(%rsp), %r14
leaq 0x6107(%rip), %r12      # 0x17f0a
movslq %r13d, %rax
movq (%rbx,%rax,8), %rsi
movq %r14, %rdi
leaq 0xf(%rsp), %rdx
callq 0x2090
movq %r14, %rdi
movq %r12, %rsi
callq 0x2060
testl %eax, %eax
je 0x11f23
movq %r14, %rdi
leaq 0x60d9(%rip), %rsi      # 0x17f0d
callq 0x2060
testl %eax, %eax
je 0x11f16
movq %r14, %rdi
leaq 0x60c5(%rip), %rsi      # 0x17f10
callq 0x2060
testl %eax, %eax
je 0x11f16
movq %r14, %rdi
leaq 0x60b5(%rip), %rsi      # 0x17f17
callq 0x2060
testl %eax, %eax
je 0x11f58
movq %r14, %rdi
leaq 0x60a1(%rip), %rsi      # 0x17f1a
callq 0x2060
testl %eax, %eax
je 0x11f6a
movq %r14, %rdi
leaq 0x608d(%rip), %rsi      # 0x17f1d
callq 0x2060
testl %eax, %eax
je 0x11f85
movq %r14, %rdi
leaq 0x6079(%rip), %rsi      # 0x17f20
callq 0x2060
testl %eax, %eax
je 0x11fa9
movq %r14, %rdi
leaq 0x6065(%rip), %rsi      # 0x17f23
callq 0x2060
testl %eax, %eax
jne 0x11f8e
leal 0x1(%r13), %eax
cmpl %ebp, %eax
jge 0x11f8e
movl %eax, %r13d
cltq
movq (%rbx,%rax,8), %rdi
movq %rdi, 0x28(%rsp)
movq 0xb344(%rip), %rax      # 0x1d230
movq %rax, 0x30(%rsp)
callq 0x20b0
movb $0x1, %r15b
leaq 0xb328(%rip), %rdi      # 0x1d228
xorl %esi, %esi
movq 0x30(%rsp), %rdx
movq 0x28(%rsp), %rcx
movq %rax, %r8
callq 0x2280
jmp 0x11f2d
movq %rbx, %rsi
callq 0x11b6b
xorl %r15d, %r15d
jmp 0x11f2d
movb $0x1, 0xb2f6(%rip)      # 0x1d220
movb $0x1, %r15b
movq 0x38(%rsp), %rdi
leaq 0x48(%rsp), %rax
cmpq %rax, %rdi
je 0x11f41
callq 0x2170
testb %r15b, %r15b
je 0x12d27
incl %r13d
cmpl %ebp, %r13d
jl 0x11e03
jmp 0x11fb5
cmpb $0x1, 0xb2c2(%rip)      # 0x1d221
jne 0x11f7c
movb $0x0, 0xb2ba(%rip)      # 0x1d222
jmp 0x11f2a
cmpb $0x1, 0xb2b1(%rip)      # 0x1d222
jne 0x11fa0
movb $0x0, 0xb2a7(%rip)      # 0x1d221
jmp 0x11f2a
movb $0x1, 0xb29e(%rip)      # 0x1d221
jmp 0x11f2a
movb $0x0, 0xb297(%rip)      # 0x1d223
jmp 0x11f2a
movb $0x1, %r15b
leaq 0x10(%rsp), %rdi
movq %r14, %rsi
callq 0x13058
jmp 0x11f2d
movb $0x1, 0xb27b(%rip)      # 0x1d222
jmp 0x11f2a
movb $0x1, 0xb211(%rip)      # 0x1d1c1
jmp 0x11f2a
cmpb $0x0, 0xb266(%rip)      # 0x1d222
jne 0x11fc5
movb $0x0, 0xb25e(%rip)      # 0x1d223
movq 0x10(%rsp), %rax
cmpq 0x18(%rsp), %rax
je 0x12cd2
movq 0x10(%rsp), %rdi
cmpq %rdi, 0x18(%rsp)
je 0x1200b
xorl %ebx, %ebx
xorl %r14d, %r14d
addq %rbx, %rdi
callq 0x11740
incq %r14
movq 0x10(%rsp), %rdi
movq 0x18(%rsp), %rax
subq %rdi, %rax
sarq $0x5, %rax
addq $0x20, %rbx
cmpq %rax, %r14
jb 0x11fe6
cmpb $0x0, 0xb20e(%rip)      # 0x1d220
je 0x1282d
movq 0xafb9(%rip), %rbx      # 0x1cfd8
leaq 0x5f2d(%rip), %rsi      # 0x17f53
movl $0xf, %edx
movq %rbx, %rdi
callq 0x21f0
movq (%rbx), %rax
addq -0x18(%rax), %rbx
movq %rbx, %rdi
movl $0xa, %esi
callq 0x2180
movsbl %al, %esi
movq 0xaf87(%rip), %rdi      # 0x1cfd8
callq 0x2040
movq %rax, %rdi
callq 0x2110
movq 0xaf73(%rip), %rdi      # 0x1cfd8
leaq 0x5ef7(%rip), %rsi      # 0x17f63
movl $0xe, %edx
callq 0x21f0
movq 0x18(%rsp), %rsi
subq 0x10(%rsp), %rsi
sarq $0x5, %rsi
movq 0xaf4d(%rip), %rdi      # 0x1cfd8
callq 0x2100
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x2180
movsbl %al, %esi
movq %rbx, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x2110
movq 0xaf17(%rip), %rdi      # 0x1cfd8
leaq 0x5eaa(%rip), %rsi      # 0x17f72
movl $0xe, %edx
callq 0x21f0
movq 0xb0ef(%rip), %rsi      # 0x1d1c8
movq 0xaef8(%rip), %rdi      # 0x1cfd8
callq 0x2100
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x2180
movsbl %al, %esi
movq %rbx, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x2110
movq 0xaec2(%rip), %rdi      # 0x1cfd8
leaq 0x5e64(%rip), %rsi      # 0x17f81
movl $0x15, %edx
callq 0x21f0
movq 0xb0a2(%rip), %rsi      # 0x1d1d0
movq 0xaea3(%rip), %rdi      # 0x1cfd8
callq 0x2100
movq %rax, %rbx
leaq 0x5f7a(%rip), %rsi      # 0x180be
movl $0x2, %edx
movq %rax, %rdi
callq 0x21f0
movsd 0xb077(%rip), %xmm1     # 0x1d1d0
movsd 0x5acf(%rip), %xmm2     # 0x17c30
unpcklps %xmm2, %xmm1            # xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1]
movapd 0x5ad4(%rip), %xmm3     # 0x17c40
subpd %xmm3, %xmm1
movapd %xmm1, %xmm0
unpckhpd %xmm1, %xmm0            # xmm0 = xmm0[1],xmm1[1]
addsd %xmm1, %xmm0
mulsd 0x5a8c(%rip), %xmm0     # 0x17c10
movsd 0xb03c(%rip), %xmm1     # 0x1d1c8
unpcklps %xmm2, %xmm1            # xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1]
subpd %xmm3, %xmm1
movapd %xmm1, %xmm2
unpckhpd %xmm1, %xmm2            # xmm2 = xmm2[1],xmm1[1]
addsd %xmm1, %xmm2
divsd %xmm2, %xmm0
movq %rbx, %rdi
callq 0x2290
movq %rax, %rbx
leaq 0x5de2(%rip), %rsi      # 0x17f97
movl $0x5, %edx
movq %rax, %rdi
callq 0x21f0
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x2180
movsbl %al, %esi
movq %rbx, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x2110
movq 0xade8(%rip), %rdi      # 0x1cfd8
leaq 0x5da6(%rip), %rsi      # 0x17f9d
movl $0x15, %edx
callq 0x21f0
movq 0xafd0(%rip), %rsi      # 0x1d1d8
movq 0xadc9(%rip), %rdi      # 0x1cfd8
callq 0x2100
movq %rax, %rbx
leaq 0x5ea0(%rip), %rsi      # 0x180be
movl $0x2, %edx
movq %rax, %rdi
callq 0x21f0
movsd 0xafa5(%rip), %xmm1     # 0x1d1d8
movsd 0x59f5(%rip), %xmm2     # 0x17c30
unpcklps %xmm2, %xmm1            # xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1]
movapd 0x59fa(%rip), %xmm3     # 0x17c40
subpd %xmm3, %xmm1
movapd %xmm1, %xmm0
unpckhpd %xmm1, %xmm0            # xmm0 = xmm0[1],xmm1[1]
addsd %xmm1, %xmm0
mulsd 0x59b2(%rip), %xmm0     # 0x17c10
movsd 0xaf62(%rip), %xmm1     # 0x1d1c8
unpcklps %xmm2, %xmm1            # xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1]
subpd %xmm3, %xmm1
movapd %xmm1, %xmm2
unpckhpd %xmm1, %xmm2            # xmm2 = xmm2[1],xmm1[1]
addsd %xmm1, %xmm2
divsd %xmm2, %xmm0
movq %rbx, %rdi
callq 0x2290
movq %rax, %rbx
leaq 0x5d08(%rip), %rsi      # 0x17f97
movl $0x5, %edx
movq %rax, %rdi
callq 0x21f0
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x2180
movsbl %al, %esi
movq %rbx, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x2110
cmpb $0x1, 0xaf58(%rip)      # 0x1d222
jne 0x123aa
movq 0xad01(%rip), %rdi      # 0x1cfd8
leaq 0x5cd5(%rip), %rsi      # 0x17fb3
movl $0x14, %edx
callq 0x21f0
movq 0xaf19(%rip), %rsi      # 0x1d208
movq 0xace2(%rip), %rdi      # 0x1cfd8
callq 0x2100
movq %rax, %rbx
leaq 0x5db9(%rip), %rsi      # 0x180be
movl $0x2, %edx
movq %rax, %rdi
callq 0x21f0
movsd 0xaeee(%rip), %xmm1     # 0x1d208
movsd 0x590e(%rip), %xmm2     # 0x17c30
unpcklps %xmm2, %xmm1            # xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1]
movapd 0x5913(%rip), %xmm3     # 0x17c40
subpd %xmm3, %xmm1
movapd %xmm1, %xmm0
unpckhpd %xmm1, %xmm0            # xmm0 = xmm0[1],xmm1[1]
addsd %xmm1, %xmm0
mulsd 0x58cb(%rip), %xmm0     # 0x17c10
movsd 0xae7b(%rip), %xmm1     # 0x1d1c8
unpcklps %xmm2, %xmm1            # xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1]
subpd %xmm3, %xmm1
movapd %xmm1, %xmm2
unpckhpd %xmm1, %xmm2            # xmm2 = xmm2[1],xmm1[1]
addsd %xmm1, %xmm2
divsd %xmm2, %xmm0
movq %rbx, %rdi
callq 0x2290
movq %rax, %rbx
leaq 0x5c21(%rip), %rsi      # 0x17f97
movl $0x5, %edx
movq %rax, %rdi
callq 0x21f0
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x2180
movsbl %al, %esi
movq %rbx, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x2110
cmpb $0x1, 0xae71(%rip)      # 0x1d222
jne 0x12491
movq 0xac1a(%rip), %rdi      # 0x1cfd8
leaq 0x5c03(%rip), %rsi      # 0x17fc8
movl $0x14, %edx
callq 0x21f0
movq 0xae3a(%rip), %rsi      # 0x1d210
movq 0xabfb(%rip), %rdi      # 0x1cfd8
callq 0x2100
movq %rax, %rbx
leaq 0x5cd2(%rip), %rsi      # 0x180be
movl $0x2, %edx
movq %rax, %rdi
callq 0x21f0
movsd 0xae0f(%rip), %xmm1     # 0x1d210
movsd 0x5827(%rip), %xmm2     # 0x17c30
unpcklps %xmm2, %xmm1            # xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1]
movapd 0x582c(%rip), %xmm3     # 0x17c40
subpd %xmm3, %xmm1
movapd %xmm1, %xmm0
unpckhpd %xmm1, %xmm0            # xmm0 = xmm0[1],xmm1[1]
addsd %xmm1, %xmm0
mulsd 0x57e4(%rip), %xmm0     # 0x17c10
movsd 0xad94(%rip), %xmm1     # 0x1d1c8
unpcklps %xmm2, %xmm1            # xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1]
subpd %xmm3, %xmm1
movapd %xmm1, %xmm2
unpckhpd %xmm1, %xmm2            # xmm2 = xmm2[1],xmm1[1]
addsd %xmm1, %xmm2
divsd %xmm2, %xmm0
movq %rbx, %rdi
callq 0x2290
movq %rax, %rbx
leaq 0x5b3a(%rip), %rsi      # 0x17f97
movl $0x5, %edx
movq %rax, %rdi
callq 0x21f0
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x2180
movsbl %al, %esi
movq %rbx, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x2110
cmpb $0x1, 0xad8a(%rip)      # 0x1d222
jne 0x12578
movq 0xab33(%rip), %rdi      # 0x1cfd8
leaq 0x5b31(%rip), %rsi      # 0x17fdd
movl $0x14, %edx
callq 0x21f0
movq 0xad5b(%rip), %rsi      # 0x1d218
movq 0xab14(%rip), %rdi      # 0x1cfd8
callq 0x2100
movq %rax, %rbx
leaq 0x5beb(%rip), %rsi      # 0x180be
movl $0x2, %edx
movq %rax, %rdi
callq 0x21f0
movsd 0xad30(%rip), %xmm1     # 0x1d218
movsd 0x5740(%rip), %xmm2     # 0x17c30
unpcklps %xmm2, %xmm1            # xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1]
movapd 0x5745(%rip), %xmm3     # 0x17c40
subpd %xmm3, %xmm1
movapd %xmm1, %xmm0
unpckhpd %xmm1, %xmm0            # xmm0 = xmm0[1],xmm1[1]
addsd %xmm1, %xmm0
mulsd 0x56fd(%rip), %xmm0     # 0x17c10
movsd 0xacad(%rip), %xmm1     # 0x1d1c8
unpcklps %xmm2, %xmm1            # xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1]
subpd %xmm3, %xmm1
movapd %xmm1, %xmm2
unpckhpd %xmm1, %xmm2            # xmm2 = xmm2[1],xmm1[1]
addsd %xmm1, %xmm2
divsd %xmm2, %xmm0
movq %rbx, %rdi
callq 0x2290
movq %rax, %rbx
leaq 0x5a53(%rip), %rsi      # 0x17f97
movl $0x5, %edx
movq %rax, %rdi
callq 0x21f0
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x2180
movsbl %al, %esi
movq %rbx, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x2110
cmpb $0x1, 0xaca2(%rip)      # 0x1d221
jne 0x1265f
movq 0xaa4c(%rip), %rdi      # 0x1cfd8
leaq 0x5a5f(%rip), %rsi      # 0x17ff2
movl $0x13, %edx
callq 0x21f0
movq 0xac44(%rip), %rsi      # 0x1d1e8
movq 0xaa2d(%rip), %rdi      # 0x1cfd8
callq 0x2100
movq %rax, %rbx
leaq 0x5b04(%rip), %rsi      # 0x180be
movl $0x2, %edx
movq %rax, %rdi
callq 0x21f0
movsd 0xac19(%rip), %xmm1     # 0x1d1e8
movsd 0x5659(%rip), %xmm2     # 0x17c30
unpcklps %xmm2, %xmm1            # xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1]
movapd 0x565e(%rip), %xmm3     # 0x17c40
subpd %xmm3, %xmm1
movapd %xmm1, %xmm0
unpckhpd %xmm1, %xmm0            # xmm0 = xmm0[1],xmm1[1]
addsd %xmm1, %xmm0
mulsd 0x5616(%rip), %xmm0     # 0x17c10
movsd 0xabc6(%rip), %xmm1     # 0x1d1c8
unpcklps %xmm2, %xmm1            # xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1]
subpd %xmm3, %xmm1
movapd %xmm1, %xmm2
unpckhpd %xmm1, %xmm2            # xmm2 = xmm2[1],xmm1[1]
addsd %xmm1, %xmm2
divsd %xmm2, %xmm0
movq %rbx, %rdi
callq 0x2290
movq %rax, %rbx
leaq 0x596c(%rip), %rsi      # 0x17f97
movl $0x5, %edx
movq %rax, %rdi
callq 0x21f0
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x2180
movsbl %al, %esi
movq %rbx, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x2110
cmpb $0x1, 0xabbb(%rip)      # 0x1d221
jne 0x12746
movq 0xa965(%rip), %rdi      # 0x1cfd8
leaq 0x598c(%rip), %rsi      # 0x18006
movl $0x13, %edx
callq 0x21f0
movq 0xab65(%rip), %rsi      # 0x1d1f0
movq 0xa946(%rip), %rdi      # 0x1cfd8
callq 0x2100
movq %rax, %rbx
leaq 0x5a1d(%rip), %rsi      # 0x180be
movl $0x2, %edx
movq %rax, %rdi
callq 0x21f0
movsd 0xab3a(%rip), %xmm1     # 0x1d1f0
movsd 0x5572(%rip), %xmm2     # 0x17c30
unpcklps %xmm2, %xmm1            # xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1]
movapd 0x5577(%rip), %xmm3     # 0x17c40
subpd %xmm3, %xmm1
movapd %xmm1, %xmm0
unpckhpd %xmm1, %xmm0            # xmm0 = xmm0[1],xmm1[1]
addsd %xmm1, %xmm0
mulsd 0x552f(%rip), %xmm0     # 0x17c10
movsd 0xaadf(%rip), %xmm1     # 0x1d1c8
unpcklps %xmm2, %xmm1            # xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1]
subpd %xmm3, %xmm1
movapd %xmm1, %xmm2
unpckhpd %xmm1, %xmm2            # xmm2 = xmm2[1],xmm1[1]
addsd %xmm1, %xmm2
divsd %xmm2, %xmm0
movq %rbx, %rdi
callq 0x2290
movq %rax, %rbx
leaq 0x5885(%rip), %rsi      # 0x17f97
movl $0x5, %edx
movq %rax, %rdi
callq 0x21f0
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x2180
movsbl %al, %esi
movq %rbx, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x2110
cmpb $0x1, 0xaad4(%rip)      # 0x1d221
jne 0x1282d
movq 0xa87e(%rip), %rdi      # 0x1cfd8
leaq 0x58b9(%rip), %rsi      # 0x1801a
movl $0x14, %edx
callq 0x21f0
movq 0xaa86(%rip), %rsi      # 0x1d1f8
movq 0xa85f(%rip), %rdi      # 0x1cfd8
callq 0x2100
movq %rax, %rbx
leaq 0x5936(%rip), %rsi      # 0x180be
movl $0x2, %edx
movq %rax, %rdi
callq 0x21f0
movsd 0xaa5b(%rip), %xmm1     # 0x1d1f8
movsd 0x548b(%rip), %xmm2     # 0x17c30
unpcklps %xmm2, %xmm1            # xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1]
movapd 0x5490(%rip), %xmm3     # 0x17c40
subpd %xmm3, %xmm1
movapd %xmm1, %xmm0
unpckhpd %xmm1, %xmm0            # xmm0 = xmm0[1],xmm1[1]
addsd %xmm1, %xmm0
mulsd 0x5448(%rip), %xmm0     # 0x17c10
movsd 0xa9f8(%rip), %xmm1     # 0x1d1c8
unpcklps %xmm2, %xmm1            # xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1]
subpd %xmm3, %xmm1
movapd %xmm1, %xmm2
unpckhpd %xmm1, %xmm2            # xmm2 = xmm2[1],xmm1[1]
addsd %xmm1, %xmm2
divsd %xmm2, %xmm0
movq %rbx, %rdi
callq 0x2290
movq %rax, %rbx
leaq 0x579e(%rip), %rsi      # 0x17f97
movl $0x5, %edx
movq %rax, %rdi
callq 0x21f0
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x2180
movsbl %al, %esi
movq %rbx, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x2110
cmpb $0x1, 0xa9ee(%rip)      # 0x1d222
jne 0x12adb
movq 0xa797(%rip), %rdi      # 0x1cfd8
leaq 0x57e7(%rip), %rsi      # 0x1802f
movl $0xf, %edx
callq 0x21f0
movsd 0xa9a6(%rip), %xmm0     # 0x1d200
movq 0xa777(%rip), %rdi      # 0x1cfd8
callq 0x2290
movq %rax, %rbx
leaq 0x57cf(%rip), %rsi      # 0x1803f
movl $0x5, %edx
movq %rax, %rdi
callq 0x21f0
movq 0xa944(%rip), %rsi      # 0x1d1c8
movq %rbx, %rdi
callq 0x2100
movq %rax, %rbx
leaq 0x57af(%rip), %rsi      # 0x18045
movl $0xc, %edx
movq %rax, %rdi
callq 0x21f0
movq 0xa96e(%rip), %rsi      # 0x1d218
movq %rbx, %rdi
callq 0x2100
movq %rax, %rbx
leaq 0x5796(%rip), %rsi      # 0x18052
movl $0xc, %edx
movq %rax, %rdi
callq 0x21f0
movsd 0xa937(%rip), %xmm1     # 0x1d208
unpcklps 0x5358(%rip), %xmm1     # xmm1 = xmm1[0],mem[0],xmm1[1],mem[1]
subpd 0x5360(%rip), %xmm1     # 0x17c40
movapd %xmm1, %xmm0
unpckhpd %xmm1, %xmm0            # xmm0 = xmm0[1],xmm1[1]
addsd %xmm1, %xmm0
movsd 0x5324(%rip), %xmm1     # 0x17c18
mulsd %xmm1, %xmm0
mulsd %xmm1, %xmm0
divsd 0xa8fc(%rip), %xmm0     # 0x1d200
movq %rbx, %rdi
callq 0x2290
movq %rax, %rbx
leaq 0x5749(%rip), %rsi      # 0x1805f
movl $0x7, %edx
movq %rax, %rdi
callq 0x21f0
movsd 0xa89d(%rip), %xmm1     # 0x1d1c8
unpcklps 0x52fe(%rip), %xmm1     # xmm1 = xmm1[0],mem[0],xmm1[1],mem[1]
subpd 0x5306(%rip), %xmm1     # 0x17c40
movapd %xmm1, %xmm0
unpckhpd %xmm1, %xmm0            # xmm0 = xmm0[1],xmm1[1]
addsd %xmm1, %xmm0
movsd 0x52ca(%rip), %xmm1     # 0x17c18
mulsd %xmm1, %xmm0
mulsd %xmm1, %xmm0
divsd 0xa8a2(%rip), %xmm0     # 0x1d200
movq %rbx, %rdi
callq 0x2290
movq %rax, %rbx
leaq 0x56f7(%rip), %rsi      # 0x18067
movl $0x6, %edx
movq %rax, %rdi
callq 0x21f0
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x2180
movsbl %al, %esi
movq %rbx, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x2110
movq 0xa62d(%rip), %rdi      # 0x1cfd8
leaq 0x56bc(%rip), %rsi      # 0x1806e
movl $0xe, %edx
callq 0x21f0
movq 0xa84d(%rip), %rsi      # 0x1d210
movq 0xa60e(%rip), %rdi      # 0x1cfd8
callq 0x2100
movq %rax, %rbx
leaq 0x56e5(%rip), %rsi      # 0x180be
movl $0x2, %edx
movq %rax, %rdi
callq 0x21f0
movsd 0xa822(%rip), %xmm1     # 0x1d210
movsd 0x523a(%rip), %xmm2     # 0x17c30
unpcklps %xmm2, %xmm1            # xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1]
movapd 0x523f(%rip), %xmm3     # 0x17c40
subpd %xmm3, %xmm1
movapd %xmm1, %xmm0
unpckhpd %xmm1, %xmm0            # xmm0 = xmm0[1],xmm1[1]
addsd %xmm1, %xmm0
mulsd 0x51ef(%rip), %xmm0     # 0x17c08
movsd 0xa7f7(%rip), %xmm1     # 0x1d218
unpcklps %xmm2, %xmm1            # xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1]
subpd %xmm3, %xmm1
movapd %xmm1, %xmm2
unpckhpd %xmm1, %xmm2            # xmm2 = xmm2[1],xmm1[1]
addsd %xmm1, %xmm2
divsd %xmm2, %xmm0
movq %rbx, %rdi
callq 0x2290
movq %rax, %rbx
leaq 0x5633(%rip), %rsi      # 0x1807d
movl $0x9, %edx
movq %rax, %rdi
callq 0x21f0
movsd 0xa7b1(%rip), %xmm1     # 0x1d210
movsd 0x51c9(%rip), %xmm2     # 0x17c30
unpcklps %xmm2, %xmm1            # xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1]
movapd 0x51ce(%rip), %xmm3     # 0x17c40
subpd %xmm3, %xmm1
movapd %xmm1, %xmm0
unpckhpd %xmm1, %xmm0            # xmm0 = xmm0[1],xmm1[1]
addsd %xmm1, %xmm0
mulsd 0x5186(%rip), %xmm0     # 0x17c10
movsd 0xa736(%rip), %xmm1     # 0x1d1c8
unpcklps %xmm2, %xmm1            # xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1]
subpd %xmm3, %xmm1
movapd %xmm1, %xmm2
unpckhpd %xmm1, %xmm2            # xmm2 = xmm2[1],xmm1[1]
addsd %xmm1, %xmm2
divsd %xmm2, %xmm0
movq %rbx, %rdi
callq 0x2290
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x2180
movsbl %al, %esi
movq %rbx, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x2110
xorl %ebp, %ebp
cmpb $0x1, 0xa73d(%rip)      # 0x1d221
jne 0x12d29
cmpb $0x1, 0xa72f(%rip)      # 0x1d220
jne 0x12b46
movq 0xa4de(%rip), %rdi      # 0x1cfd8
leaq 0x5586(%rip), %rsi      # 0x18087
movl $0x15, %edx
callq 0x21f0
movq 0xa4c6(%rip), %rdi      # 0x1cfd8
movl $0x5, %esi
callq 0x22e0
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x2180
movsbl %al, %esi
movq %rbx, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x2110
movq 0xa48b(%rip), %rdi      # 0x1cfd8
leaq 0x5549(%rip), %rsi      # 0x1809d
movl $0xf, %edx
callq 0x21f0
movsd 0xa67a(%rip), %xmm0     # 0x1d1e0
divsd 0x50b2(%rip), %xmm0     # 0x17c20
movq 0xa463(%rip), %rdi      # 0x1cfd8
callq 0x2290
movq %rax, %rbx
leaq 0x54bb(%rip), %rsi      # 0x1803f
movl $0x5, %edx
movq %rax, %rdi
callq 0x21f0
movq 0xa630(%rip), %rsi      # 0x1d1c8
movq %rbx, %rdi
callq 0x2100
movq %rax, %rbx
leaq 0x549b(%rip), %rsi      # 0x18045
movl $0xc, %edx
movq %rax, %rdi
callq 0x21f0
movq 0xa62a(%rip), %rsi      # 0x1d1e8
movq %rbx, %rdi
callq 0x2100
movq %rax, %rbx
leaq 0x54dd(%rip), %rsi      # 0x180ad
movl $0x13, %edx
movq %rax, %rdi
callq 0x21f0
movsd 0xa60b(%rip), %xmm1     # 0x1d1f0
unpcklps 0x5044(%rip), %xmm1     # xmm1 = xmm1[0],mem[0],xmm1[1],mem[1]
subpd 0x504c(%rip), %xmm1     # 0x17c40
movapd %xmm1, %xmm0
unpckhpd %xmm1, %xmm0            # xmm0 = xmm0[1],xmm1[1]
addsd %xmm1, %xmm0
movsd 0x5010(%rip), %xmm1     # 0x17c18
mulsd %xmm1, %xmm0
mulsd %xmm1, %xmm0
movsd 0xa5c8(%rip), %xmm1     # 0x1d1e0
divsd 0x5000(%rip), %xmm1     # 0x17c20
divsd %xmm1, %xmm0
movq %rbx, %rdi
callq 0x2290
movq %rax, %rbx
leaq 0x5429(%rip), %rsi      # 0x1805f
movl $0x7, %edx
movq %rax, %rdi
callq 0x21f0
movsd 0xa57d(%rip), %xmm1     # 0x1d1c8
unpcklps 0x4fde(%rip), %xmm1     # xmm1 = xmm1[0],mem[0],xmm1[1],mem[1]
subpd 0x4fe6(%rip), %xmm1     # 0x17c40
movapd %xmm1, %xmm0
unpckhpd %xmm1, %xmm0            # xmm0 = xmm0[1],xmm1[1]
addsd %xmm1, %xmm0
movsd 0x4faa(%rip), %xmm1     # 0x17c18
mulsd %xmm1, %xmm0
mulsd %xmm1, %xmm0
movsd 0xa562(%rip), %xmm1     # 0x1d1e0
divsd 0x4f9a(%rip), %xmm1     # 0x17c20
divsd %xmm1, %xmm0
movq %rbx, %rdi
callq 0x2290
movq %rax, %rbx
leaq 0x53cb(%rip), %rsi      # 0x18067
movl $0x6, %edx
movq %rax, %rdi
callq 0x21f0
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x2180
movsbl %al, %esi
movq %rbx, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x2110
jmp 0x12d29
movq 0xa2ff(%rip), %r14      # 0x1cfd8
leaq 0x524d(%rip), %rsi      # 0x17f2d
movl $0x25, %edx
movq %r14, %rdi
callq 0x21f0
movq (%r14), %rax
addq -0x18(%rax), %r14
movq %r14, %rdi
movl $0xa, %esi
callq 0x2180
movsbl %al, %esi
movq 0xa2cd(%rip), %rdi      # 0x1cfd8
callq 0x2040
movq %rax, %rdi
callq 0x2110
movl $0x1, %ebp
movq %rbx, %rsi
callq 0x11b6b
jmp 0x12d29
xorl %ebp, %ebp
leaq 0x10(%rsp), %rdi
callq 0x13096
movl %ebp, %eax
addq $0x58, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x12d48
jmp 0x12d48
movq %rax, %rbx
jmp 0x12d64
movq %rax, %rbx
movq 0x38(%rsp), %rdi
leaq 0x48(%rsp), %rax
cmpq %rax, %rdi
je 0x12d64
callq 0x2170
leaq 0x10(%rsp), %rdi
callq 0x13096
movq %rbx, %rdi
callq 0x22f0
movq %rax, %rdi
callq 0x12e15