// File: 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
movq %rsp, %rbp
subq $0x310, %rsp            # imm = 0x310
movl $0x0, -0x4(%rbp)
movl %edi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movb $0x0, 0xdc78(%rip)      # 0x2a228
movb $0x1, 0xdc72(%rip)      # 0x2a229
movb $0x1, 0xdc6c(%rip)      # 0x2a22a
movb $0x1, 0xdc66(%rip)      # 0x2a22b
leaq -0x28(%rbp), %rdi
callq 0x1dd50
movl $0x1, -0x2c(%rbp)
movl -0x2c(%rbp), %eax
cmpl -0x8(%rbp), %eax
jge 0x1c87d
movq -0x10(%rbp), %rax
movslq -0x2c(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq %rax, -0x80(%rbp)
leaq -0x51(%rbp), %rdi
movq %rdi, -0x78(%rbp)
callq 0x2300
movq -0x80(%rbp), %rsi
movq -0x78(%rbp), %rdx
leaq -0x50(%rbp), %rdi
callq 0x2250
jmp 0x1c611
leaq -0x51(%rbp), %rdi
callq 0x21b0
leaq 0x76d9(%rip), %rsi      # 0x23cfa
leaq -0x50(%rbp), %rdi
callq 0x1dd70
movb %al, -0x81(%rbp)
jmp 0x1c632
movb -0x81(%rbp), %al
testb $0x1, %al
jne 0x1c63e
jmp 0x1c67e
movb $0x1, 0xdbe3(%rip)      # 0x2a228
jmp 0x1c838
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
leaq -0x51(%rbp), %rdi
callq 0x21b0
jmp 0x1d7c3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
leaq -0x50(%rbp), %rdi
callq 0x2348
jmp 0x1c878
leaq 0x7678(%rip), %rsi      # 0x23cfd
leaq -0x50(%rbp), %rdi
callq 0x1dd70
movb %al, -0x82(%rbp)
jmp 0x1c696
movb -0x82(%rbp), %al
testb $0x1, %al
jne 0x1c6c6
jmp 0x1c6a2
leaq 0x7657(%rip), %rsi      # 0x23d00
leaq -0x50(%rbp), %rdi
callq 0x1dd70
movb %al, -0x83(%rbp)
jmp 0x1c6ba
movb -0x83(%rbp), %al
testb $0x1, %al
jne 0x1c6c6
jmp 0x1c6e7
movl -0x8(%rbp), %edi
movq -0x10(%rbp), %rsi
callq 0x1c440
jmp 0x1c6d4
movl $0x0, -0x4(%rbp)
movl $0x1, -0x68(%rbp)
jmp 0x1c83f
leaq 0x7619(%rip), %rsi      # 0x23d07
leaq -0x50(%rbp), %rdi
callq 0x1dd70
movb %al, -0x84(%rbp)
jmp 0x1c6ff
movb -0x84(%rbp), %al
testb $0x1, %al
jne 0x1c70b
jmp 0x1c729
testb $0x1, 0xdb17(%rip)      # 0x2a229
je 0x1c71d
movb $0x0, 0xdb0f(%rip)      # 0x2a22a
jmp 0x1c724
movb $0x1, 0xdb05(%rip)      # 0x2a229
jmp 0x1c834
leaq 0x75da(%rip), %rsi      # 0x23d0a
leaq -0x50(%rbp), %rdi
callq 0x1dd70
movb %al, -0x85(%rbp)
jmp 0x1c741
movb -0x85(%rbp), %al
testb $0x1, %al
jne 0x1c74d
jmp 0x1c76b
testb $0x1, 0xdad6(%rip)      # 0x2a22a
je 0x1c75f
movb $0x0, 0xdacc(%rip)      # 0x2a229
jmp 0x1c766
movb $0x1, 0xdac4(%rip)      # 0x2a22a
jmp 0x1c832
leaq 0x759b(%rip), %rsi      # 0x23d0d
leaq -0x50(%rbp), %rdi
callq 0x1dd70
movb %al, -0x86(%rbp)
jmp 0x1c783
movb -0x86(%rbp), %al
testb $0x1, %al
jne 0x1c78f
jmp 0x1c79b
movb $0x0, 0xda95(%rip)      # 0x2a22b
jmp 0x1c830
leaq 0x756e(%rip), %rsi      # 0x23d10
leaq -0x50(%rbp), %rdi
callq 0x1dd70
movb %al, -0x87(%rbp)
jmp 0x1c7b3
movb -0x87(%rbp), %al
testb $0x1, %al
jne 0x1c7bf
jmp 0x1c7c8
movb $0x1, 0xda03(%rip)      # 0x2a1c9
jmp 0x1c82e
leaq 0x7544(%rip), %rsi      # 0x23d13
leaq -0x50(%rbp), %rdi
callq 0x1dd70
movb %al, -0x88(%rbp)
jmp 0x1c7e0
movb -0x88(%rbp), %al
testb $0x1, %al
jne 0x1c7ec
jmp 0x1c81b
movl -0x2c(%rbp), %eax
addl $0x1, %eax
cmpl -0x8(%rbp), %eax
jge 0x1c81b
movq -0x10(%rbp), %rax
movslq -0x2c(%rbp), %rcx
movl %ecx, %edx
incl %edx
movl %edx, -0x2c(%rbp)
movq 0x8(%rax,%rcx,8), %rsi
leaq 0xda1e(%rip), %rdi      # 0x2a230
callq 0x2240
jmp 0x1c819
jmp 0x1c82c
leaq -0x28(%rbp), %rdi
leaq -0x50(%rbp), %rsi
callq 0x1dda0
jmp 0x1c82a
jmp 0x1c82c
jmp 0x1c82e
jmp 0x1c830
jmp 0x1c832
jmp 0x1c834
jmp 0x1c836
jmp 0x1c838
movl $0x0, -0x68(%rbp)
leaq -0x50(%rbp), %rdi
callq 0x2348
jmp 0x1c84a
movl -0x68(%rbp), %eax
testl %eax, %eax
jne 0x1d7ae
jmp 0x1c857
jmp 0x1c859
movl -0x2c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x2c(%rbp)
jmp 0x1c5d5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
jmp 0x1d7c3
jmp 0x1d7c3
testb $0x1, 0xd9a6(%rip)      # 0x2a22a
jne 0x1c88d
movb $0x0, 0xd99e(%rip)      # 0x2a22b
leaq -0x28(%rbp), %rdi
callq 0x1de10
movb %al, -0x89(%rbp)
jmp 0x1c89e
movb -0x89(%rbp), %al
testb $0x1, %al
jne 0x1c8aa
jmp 0x1c8fc
movq 0xd727(%rip), %rdi      # 0x29fd8
leaq 0x7465(%rip), %rsi      # 0x23d1d
callq 0x2150
movq %rax, -0x98(%rbp)
jmp 0x1c8c6
movq -0x98(%rbp), %rdi
movq 0xd6ec(%rip), %rsi      # 0x29fc0
callq 0x21a0
jmp 0x1c8db
movl -0x8(%rbp), %edi
movq -0x10(%rbp), %rsi
callq 0x1c440
jmp 0x1c8e9
movl $0x1, -0x4(%rbp)
movl $0x1, -0x68(%rbp)
jmp 0x1d7ae
movq $0x0, -0x70(%rbp)
movq -0x70(%rbp), %rax
movq %rax, -0xa8(%rbp)
leaq -0x28(%rbp), %rdi
callq 0x1de50
movq %rax, -0xa0(%rbp)
jmp 0x1c921
movq -0xa8(%rbp), %rax
movq -0xa0(%rbp), %rcx
cmpq %rcx, %rax
jae 0x1c968
movq -0x70(%rbp), %rsi
leaq -0x28(%rbp), %rdi
callq 0x1de70
movq %rax, -0xb0(%rbp)
jmp 0x1c94a
movq -0xb0(%rbp), %rdi
callq 0x1bed0
jmp 0x1c958
jmp 0x1c95a
movq -0x70(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x70(%rbp)
jmp 0x1c904
testb $0x1, 0xd8b9(%rip)      # 0x2a228
je 0x1d226
movq 0xd65c(%rip), %rdi      # 0x29fd8
leaq 0x73c0(%rip), %rsi      # 0x23d43
callq 0x2150
movq %rax, -0xb8(%rbp)
jmp 0x1c991
movq -0xb8(%rbp), %rdi
movq 0xd621(%rip), %rsi      # 0x29fc0
callq 0x21a0
jmp 0x1c9a6
movq 0xd62b(%rip), %rdi      # 0x29fd8
leaq 0x739f(%rip), %rsi      # 0x23d53
callq 0x2150
movq %rax, -0xc0(%rbp)
jmp 0x1c9c2
leaq -0x28(%rbp), %rdi
callq 0x1de50
movq %rax, -0xc8(%rbp)
jmp 0x1c9d4
movq -0xc8(%rbp), %rsi
movq -0xc0(%rbp), %rdi
callq 0x2050
movq %rax, -0xd0(%rbp)
jmp 0x1c9f0
movq -0xd0(%rbp), %rdi
movq 0xd5c2(%rip), %rsi      # 0x29fc0
callq 0x21a0
jmp 0x1ca05
movq 0xd5cc(%rip), %rdi      # 0x29fd8
leaq 0x734f(%rip), %rsi      # 0x23d62
callq 0x2150
movq %rax, -0xd8(%rbp)
jmp 0x1ca21
movq -0xd8(%rbp), %rdi
movq 0xd7a1(%rip), %rsi      # 0x2a1d0
callq 0x2050
movq %rax, -0xe0(%rbp)
jmp 0x1ca3d
movq -0xe0(%rbp), %rdi
movq 0xd575(%rip), %rsi      # 0x29fc0
callq 0x21a0
jmp 0x1ca52
movq 0xd57f(%rip), %rdi      # 0x29fd8
leaq 0x7311(%rip), %rsi      # 0x23d71
callq 0x2150
movq %rax, -0xe8(%rbp)
jmp 0x1ca6e
movq -0xe8(%rbp), %rdi
movq 0xd75c(%rip), %rsi      # 0x2a1d8
callq 0x2050
movq %rax, -0xf0(%rbp)
jmp 0x1ca8a
movq -0xf0(%rbp), %rdi
leaq 0x7416(%rip), %rsi      # 0x23eae
callq 0x2150
movq %rax, -0xf8(%rbp)
jmp 0x1caa6
movq -0xf8(%rbp), %rdi
movq 0xd723(%rip), %xmm0     # 0x2a1d8
movaps 0x6f64(%rip), %xmm3     # 0x23a20
punpckldq %xmm3, %xmm0    # xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1]
movapd 0x6f68(%rip), %xmm2     # 0x23a30
subpd %xmm2, %xmm0
movaps %xmm0, %xmm1
unpckhpd %xmm0, %xmm0            # xmm0 = xmm0[1,1]
addsd %xmm1, %xmm0
movsd 0x6f21(%rip), %xmm1     # 0x23a00
mulsd %xmm1, %xmm0
movq 0xd6e5(%rip), %xmm1     # 0x2a1d0
punpckldq %xmm3, %xmm1    # xmm1 = xmm1[0],xmm3[0],xmm1[1],xmm3[1]
subpd %xmm2, %xmm1
movaps %xmm1, %xmm2
unpckhpd %xmm1, %xmm1            # xmm1 = xmm1[1,1]
addsd %xmm2, %xmm1
divsd %xmm1, %xmm0
callq 0x2310
movq %rax, -0x100(%rbp)
jmp 0x1cb10
movq -0x100(%rbp), %rdi
leaq 0x7269(%rip), %rsi      # 0x23d87
callq 0x2150
movq %rax, -0x108(%rbp)
jmp 0x1cb2c
movq -0x108(%rbp), %rdi
movq 0xd486(%rip), %rsi      # 0x29fc0
callq 0x21a0
jmp 0x1cb41
movq 0xd490(%rip), %rdi      # 0x29fd8
leaq 0x723e(%rip), %rsi      # 0x23d8d
callq 0x2150
movq %rax, -0x110(%rbp)
jmp 0x1cb5d
movq -0x110(%rbp), %rdi
movq 0xd675(%rip), %rsi      # 0x2a1e0
callq 0x2050
movq %rax, -0x118(%rbp)
jmp 0x1cb79
movq -0x118(%rbp), %rdi
leaq 0x7327(%rip), %rsi      # 0x23eae
callq 0x2150
movq %rax, -0x120(%rbp)
jmp 0x1cb95
movq -0x120(%rbp), %rdi
movq 0xd63c(%rip), %xmm0     # 0x2a1e0
movaps 0x6e75(%rip), %xmm3     # 0x23a20
punpckldq %xmm3, %xmm0    # xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1]
movapd 0x6e79(%rip), %xmm2     # 0x23a30
subpd %xmm2, %xmm0
movaps %xmm0, %xmm1
unpckhpd %xmm0, %xmm0            # xmm0 = xmm0[1,1]
addsd %xmm1, %xmm0
movsd 0x6e32(%rip), %xmm1     # 0x23a00
mulsd %xmm1, %xmm0
movq 0xd5f6(%rip), %xmm1     # 0x2a1d0
punpckldq %xmm3, %xmm1    # xmm1 = xmm1[0],xmm3[0],xmm1[1],xmm3[1]
subpd %xmm2, %xmm1
movaps %xmm1, %xmm2
unpckhpd %xmm1, %xmm1            # xmm1 = xmm1[1,1]
addsd %xmm2, %xmm1
divsd %xmm1, %xmm0
callq 0x2310
movq %rax, -0x128(%rbp)
jmp 0x1cbff
movq -0x128(%rbp), %rdi
leaq 0x717a(%rip), %rsi      # 0x23d87
callq 0x2150
movq %rax, -0x130(%rbp)
jmp 0x1cc1b
movq -0x130(%rbp), %rdi
movq 0xd397(%rip), %rsi      # 0x29fc0
callq 0x21a0
jmp 0x1cc30
testb $0x1, 0xd5f3(%rip)      # 0x2a22a
je 0x1cd2e
movq 0xd394(%rip), %rdi      # 0x29fd8
leaq 0x7158(%rip), %rsi      # 0x23da3
callq 0x2150
movq %rax, -0x138(%rbp)
jmp 0x1cc59
movq -0x138(%rbp), %rdi
movq 0xd5a9(%rip), %rsi      # 0x2a210
callq 0x2050
movq %rax, -0x140(%rbp)
jmp 0x1cc75
movq -0x140(%rbp), %rdi
leaq 0x722b(%rip), %rsi      # 0x23eae
callq 0x2150
movq %rax, -0x148(%rbp)
jmp 0x1cc91
movq -0x148(%rbp), %rdi
movq 0xd570(%rip), %xmm0     # 0x2a210
movaps 0x6d79(%rip), %xmm3     # 0x23a20
punpckldq %xmm3, %xmm0    # xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1]
movapd 0x6d7d(%rip), %xmm2     # 0x23a30
subpd %xmm2, %xmm0
movaps %xmm0, %xmm1
unpckhpd %xmm0, %xmm0            # xmm0 = xmm0[1,1]
addsd %xmm1, %xmm0
movsd 0x6d36(%rip), %xmm1     # 0x23a00
mulsd %xmm1, %xmm0
movq 0xd4fa(%rip), %xmm1     # 0x2a1d0
punpckldq %xmm3, %xmm1    # xmm1 = xmm1[0],xmm3[0],xmm1[1],xmm3[1]
subpd %xmm2, %xmm1
movaps %xmm1, %xmm2
unpckhpd %xmm1, %xmm1            # xmm1 = xmm1[1,1]
addsd %xmm2, %xmm1
divsd %xmm1, %xmm0
callq 0x2310
movq %rax, -0x150(%rbp)
jmp 0x1ccfb
movq -0x150(%rbp), %rdi
leaq 0x707e(%rip), %rsi      # 0x23d87
callq 0x2150
movq %rax, -0x158(%rbp)
jmp 0x1cd17
movq -0x158(%rbp), %rdi
movq 0xd29b(%rip), %rsi      # 0x29fc0
callq 0x21a0
jmp 0x1cd2c
jmp 0x1cd2e
testb $0x1, 0xd4f5(%rip)      # 0x2a22a
je 0x1ce2c
movq 0xd296(%rip), %rdi      # 0x29fd8
leaq 0x706f(%rip), %rsi      # 0x23db8
callq 0x2150
movq %rax, -0x160(%rbp)
jmp 0x1cd57
movq -0x160(%rbp), %rdi
movq 0xd4b3(%rip), %rsi      # 0x2a218
callq 0x2050
movq %rax, -0x168(%rbp)
jmp 0x1cd73
movq -0x168(%rbp), %rdi
leaq 0x712d(%rip), %rsi      # 0x23eae
callq 0x2150
movq %rax, -0x170(%rbp)
jmp 0x1cd8f
movq -0x170(%rbp), %rdi
movq 0xd47a(%rip), %xmm0     # 0x2a218
movaps 0x6c7b(%rip), %xmm3     # 0x23a20
punpckldq %xmm3, %xmm0    # xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1]
movapd 0x6c7f(%rip), %xmm2     # 0x23a30
subpd %xmm2, %xmm0
movaps %xmm0, %xmm1
unpckhpd %xmm0, %xmm0            # xmm0 = xmm0[1,1]
addsd %xmm1, %xmm0
movsd 0x6c38(%rip), %xmm1     # 0x23a00
mulsd %xmm1, %xmm0
movq 0xd3fc(%rip), %xmm1     # 0x2a1d0
punpckldq %xmm3, %xmm1    # xmm1 = xmm1[0],xmm3[0],xmm1[1],xmm3[1]
subpd %xmm2, %xmm1
movaps %xmm1, %xmm2
unpckhpd %xmm1, %xmm1            # xmm1 = xmm1[1,1]
addsd %xmm2, %xmm1
divsd %xmm1, %xmm0
callq 0x2310
movq %rax, -0x178(%rbp)
jmp 0x1cdf9
movq -0x178(%rbp), %rdi
leaq 0x6f80(%rip), %rsi      # 0x23d87
callq 0x2150
movq %rax, -0x180(%rbp)
jmp 0x1ce15
movq -0x180(%rbp), %rdi
movq 0xd19d(%rip), %rsi      # 0x29fc0
callq 0x21a0
jmp 0x1ce2a
jmp 0x1ce2c
testb $0x1, 0xd3f7(%rip)      # 0x2a22a
je 0x1cf2a
movq 0xd198(%rip), %rdi      # 0x29fd8
leaq 0x6f86(%rip), %rsi      # 0x23dcd
callq 0x2150
movq %rax, -0x188(%rbp)
jmp 0x1ce55
movq -0x188(%rbp), %rdi
movq 0xd3bd(%rip), %rsi      # 0x2a220
callq 0x2050
movq %rax, -0x190(%rbp)
jmp 0x1ce71
movq -0x190(%rbp), %rdi
leaq 0x702f(%rip), %rsi      # 0x23eae
callq 0x2150
movq %rax, -0x198(%rbp)
jmp 0x1ce8d
movq -0x198(%rbp), %rdi
movq 0xd384(%rip), %xmm0     # 0x2a220
movaps 0x6b7d(%rip), %xmm3     # 0x23a20
punpckldq %xmm3, %xmm0    # xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1]
movapd 0x6b81(%rip), %xmm2     # 0x23a30
subpd %xmm2, %xmm0
movaps %xmm0, %xmm1
unpckhpd %xmm0, %xmm0            # xmm0 = xmm0[1,1]
addsd %xmm1, %xmm0
movsd 0x6b3a(%rip), %xmm1     # 0x23a00
mulsd %xmm1, %xmm0
movq 0xd2fe(%rip), %xmm1     # 0x2a1d0
punpckldq %xmm3, %xmm1    # xmm1 = xmm1[0],xmm3[0],xmm1[1],xmm3[1]
subpd %xmm2, %xmm1
movaps %xmm1, %xmm2
unpckhpd %xmm1, %xmm1            # xmm1 = xmm1[1,1]
addsd %xmm2, %xmm1
divsd %xmm1, %xmm0
callq 0x2310
movq %rax, -0x1a0(%rbp)
jmp 0x1cef7
movq -0x1a0(%rbp), %rdi
leaq 0x6e82(%rip), %rsi      # 0x23d87
callq 0x2150
movq %rax, -0x1a8(%rbp)
jmp 0x1cf13
movq -0x1a8(%rbp), %rdi
movq 0xd09f(%rip), %rsi      # 0x29fc0
callq 0x21a0
jmp 0x1cf28
jmp 0x1cf2a
testb $0x1, 0xd2f8(%rip)      # 0x2a229
je 0x1d028
movq 0xd09a(%rip), %rdi      # 0x29fd8
leaq 0x6e9d(%rip), %rsi      # 0x23de2
callq 0x2150
movq %rax, -0x1b0(%rbp)
jmp 0x1cf53
movq -0x1b0(%rbp), %rdi
movq 0xd28f(%rip), %rsi      # 0x2a1f0
callq 0x2050
movq %rax, -0x1b8(%rbp)
jmp 0x1cf6f
movq -0x1b8(%rbp), %rdi
leaq 0x6f31(%rip), %rsi      # 0x23eae
callq 0x2150
movq %rax, -0x1c0(%rbp)
jmp 0x1cf8b
movq -0x1c0(%rbp), %rdi
movq 0xd256(%rip), %xmm0     # 0x2a1f0
movaps 0x6a7f(%rip), %xmm3     # 0x23a20
punpckldq %xmm3, %xmm0    # xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1]
movapd 0x6a83(%rip), %xmm2     # 0x23a30
subpd %xmm2, %xmm0
movaps %xmm0, %xmm1
unpckhpd %xmm0, %xmm0            # xmm0 = xmm0[1,1]
addsd %xmm1, %xmm0
movsd 0x6a3c(%rip), %xmm1     # 0x23a00
mulsd %xmm1, %xmm0
movq 0xd200(%rip), %xmm1     # 0x2a1d0
punpckldq %xmm3, %xmm1    # xmm1 = xmm1[0],xmm3[0],xmm1[1],xmm3[1]
subpd %xmm2, %xmm1
movaps %xmm1, %xmm2
unpckhpd %xmm1, %xmm1            # xmm1 = xmm1[1,1]
addsd %xmm2, %xmm1
divsd %xmm1, %xmm0
callq 0x2310
movq %rax, -0x1c8(%rbp)
jmp 0x1cff5
movq -0x1c8(%rbp), %rdi
leaq 0x6d84(%rip), %rsi      # 0x23d87
callq 0x2150
movq %rax, -0x1d0(%rbp)
jmp 0x1d011
movq -0x1d0(%rbp), %rdi
movq 0xcfa1(%rip), %rsi      # 0x29fc0
callq 0x21a0
jmp 0x1d026
jmp 0x1d028
testb $0x1, 0xd1fa(%rip)      # 0x2a229
je 0x1d126
movq 0xcf9c(%rip), %rdi      # 0x29fd8
leaq 0x6db3(%rip), %rsi      # 0x23df6
callq 0x2150
movq %rax, -0x1d8(%rbp)
jmp 0x1d051
movq -0x1d8(%rbp), %rdi
movq 0xd199(%rip), %rsi      # 0x2a1f8
callq 0x2050
movq %rax, -0x1e0(%rbp)
jmp 0x1d06d
movq -0x1e0(%rbp), %rdi
leaq 0x6e33(%rip), %rsi      # 0x23eae
callq 0x2150
movq %rax, -0x1e8(%rbp)
jmp 0x1d089
movq -0x1e8(%rbp), %rdi
movq 0xd160(%rip), %xmm0     # 0x2a1f8
movaps 0x6981(%rip), %xmm3     # 0x23a20
punpckldq %xmm3, %xmm0    # xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1]
movapd 0x6985(%rip), %xmm2     # 0x23a30
subpd %xmm2, %xmm0
movaps %xmm0, %xmm1
unpckhpd %xmm0, %xmm0            # xmm0 = xmm0[1,1]
addsd %xmm1, %xmm0
movsd 0x693e(%rip), %xmm1     # 0x23a00
mulsd %xmm1, %xmm0
movq 0xd102(%rip), %xmm1     # 0x2a1d0
punpckldq %xmm3, %xmm1    # xmm1 = xmm1[0],xmm3[0],xmm1[1],xmm3[1]
subpd %xmm2, %xmm1
movaps %xmm1, %xmm2
unpckhpd %xmm1, %xmm1            # xmm1 = xmm1[1,1]
addsd %xmm2, %xmm1
divsd %xmm1, %xmm0
callq 0x2310
movq %rax, -0x1f0(%rbp)
jmp 0x1d0f3
movq -0x1f0(%rbp), %rdi
leaq 0x6c86(%rip), %rsi      # 0x23d87
callq 0x2150
movq %rax, -0x1f8(%rbp)
jmp 0x1d10f
movq -0x1f8(%rbp), %rdi
movq 0xcea3(%rip), %rsi      # 0x29fc0
callq 0x21a0
jmp 0x1d124
jmp 0x1d126
testb $0x1, 0xd0fc(%rip)      # 0x2a229
je 0x1d224
movq 0xce9e(%rip), %rdi      # 0x29fd8
leaq 0x6cc9(%rip), %rsi      # 0x23e0a
callq 0x2150
movq %rax, -0x200(%rbp)
jmp 0x1d14f
movq -0x200(%rbp), %rdi
movq 0xd0a3(%rip), %rsi      # 0x2a200
callq 0x2050
movq %rax, -0x208(%rbp)
jmp 0x1d16b
movq -0x208(%rbp), %rdi
leaq 0x6d35(%rip), %rsi      # 0x23eae
callq 0x2150
movq %rax, -0x210(%rbp)
jmp 0x1d187
movq -0x210(%rbp), %rdi
movq 0xd06a(%rip), %xmm0     # 0x2a200
movaps 0x6883(%rip), %xmm3     # 0x23a20
punpckldq %xmm3, %xmm0    # xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1]
movapd 0x6887(%rip), %xmm2     # 0x23a30
subpd %xmm2, %xmm0
movaps %xmm0, %xmm1
unpckhpd %xmm0, %xmm0            # xmm0 = xmm0[1,1]
addsd %xmm1, %xmm0
movsd 0x6840(%rip), %xmm1     # 0x23a00
mulsd %xmm1, %xmm0
movq 0xd004(%rip), %xmm1     # 0x2a1d0
punpckldq %xmm3, %xmm1    # xmm1 = xmm1[0],xmm3[0],xmm1[1],xmm3[1]
subpd %xmm2, %xmm1
movaps %xmm1, %xmm2
unpckhpd %xmm1, %xmm1            # xmm1 = xmm1[1,1]
addsd %xmm2, %xmm1
divsd %xmm1, %xmm0
callq 0x2310
movq %rax, -0x218(%rbp)
jmp 0x1d1f1
movq -0x218(%rbp), %rdi
leaq 0x6b88(%rip), %rsi      # 0x23d87
callq 0x2150
movq %rax, -0x220(%rbp)
jmp 0x1d20d
movq -0x220(%rbp), %rdi
movq 0xcda5(%rip), %rsi      # 0x29fc0
callq 0x21a0
jmp 0x1d222
jmp 0x1d224
jmp 0x1d226
testb $0x1, 0xcffd(%rip)      # 0x2a22a
je 0x1d556
movq 0xcd9e(%rip), %rdi      # 0x29fd8
leaq 0x6bde(%rip), %rsi      # 0x23e1f
callq 0x2150
movq %rax, -0x228(%rbp)
jmp 0x1d24f
movq -0x228(%rbp), %rdi
movsd 0xcfaa(%rip), %xmm0     # 0x2a208
callq 0x2310
movq %rax, -0x230(%rbp)
jmp 0x1d26c
movq -0x230(%rbp), %rdi
leaq 0x6bb5(%rip), %rsi      # 0x23e2f
callq 0x2150
movq %rax, -0x238(%rbp)
jmp 0x1d288
movq -0x238(%rbp), %rdi
movq 0xcf3a(%rip), %rsi      # 0x2a1d0
callq 0x2050
movq %rax, -0x240(%rbp)
jmp 0x1d2a4
movq -0x240(%rbp), %rdi
leaq 0x6b83(%rip), %rsi      # 0x23e35
callq 0x2150
movq %rax, -0x248(%rbp)
jmp 0x1d2c0
movq -0x248(%rbp), %rdi
movq 0xcf52(%rip), %rsi      # 0x2a220
callq 0x2050
movq %rax, -0x250(%rbp)
jmp 0x1d2dc
movq -0x250(%rbp), %rdi
leaq 0x6b58(%rip), %rsi      # 0x23e42
callq 0x2150
movq %rax, -0x258(%rbp)
jmp 0x1d2f8
movq -0x258(%rbp), %rdi
movaps 0x671a(%rip), %xmm1     # 0x23a20
movq 0xcf02(%rip), %xmm0     # 0x2a210
punpckldq %xmm1, %xmm0    # xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
movapd 0x6716(%rip), %xmm1     # 0x23a30
subpd %xmm1, %xmm0
movaps %xmm0, %xmm1
unpckhpd %xmm0, %xmm0            # xmm0 = xmm0[1,1]
addsd %xmm1, %xmm0
movsd 0x66d7(%rip), %xmm1     # 0x23a08
mulsd %xmm1, %xmm0
mulsd %xmm1, %xmm0
movsd 0xcec7(%rip), %xmm1     # 0x2a208
divsd %xmm1, %xmm0
callq 0x2310
movq %rax, -0x260(%rbp)
jmp 0x1d353
movq -0x260(%rbp), %rdi
leaq 0x6aee(%rip), %rsi      # 0x23e4f
callq 0x2150
movq %rax, -0x268(%rbp)
jmp 0x1d36f
movq -0x268(%rbp), %rdi
movaps 0x66a3(%rip), %xmm1     # 0x23a20
movq 0xce4b(%rip), %xmm0     # 0x2a1d0
punpckldq %xmm1, %xmm0    # xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
movapd 0x669f(%rip), %xmm1     # 0x23a30
subpd %xmm1, %xmm0
movaps %xmm0, %xmm1
unpckhpd %xmm0, %xmm0            # xmm0 = xmm0[1,1]
addsd %xmm1, %xmm0
movsd 0x6660(%rip), %xmm1     # 0x23a08
mulsd %xmm1, %xmm0
mulsd %xmm1, %xmm0
movsd 0xce50(%rip), %xmm1     # 0x2a208
divsd %xmm1, %xmm0
callq 0x2310
movq %rax, -0x270(%rbp)
jmp 0x1d3ca
movq -0x270(%rbp), %rdi
leaq 0x6a7f(%rip), %rsi      # 0x23e57
callq 0x2150
movq %rax, -0x278(%rbp)
jmp 0x1d3e6
movq -0x278(%rbp), %rdi
movq 0xcbcc(%rip), %rsi      # 0x29fc0
callq 0x21a0
jmp 0x1d3fb
movq 0xcbd6(%rip), %rdi      # 0x29fd8
leaq 0x6a55(%rip), %rsi      # 0x23e5e
callq 0x2150
movq %rax, -0x280(%rbp)
jmp 0x1d417
movq -0x280(%rbp), %rdi
movq 0xcdf3(%rip), %rsi      # 0x2a218
callq 0x2050
movq %rax, -0x288(%rbp)
jmp 0x1d433
movq -0x288(%rbp), %rdi
leaq 0x6a6d(%rip), %rsi      # 0x23eae
callq 0x2150
movq %rax, -0x290(%rbp)
jmp 0x1d44f
movq -0x290(%rbp), %rdi
movq 0xcdba(%rip), %xmm0     # 0x2a218
movaps 0x65bb(%rip), %xmm3     # 0x23a20
punpckldq %xmm3, %xmm0    # xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1]
movapd 0x65bf(%rip), %xmm2     # 0x23a30
subpd %xmm2, %xmm0
movaps %xmm0, %xmm1
unpckhpd %xmm0, %xmm0            # xmm0 = xmm0[1,1]
addsd %xmm1, %xmm0
movsd 0x6570(%rip), %xmm1     # 0x239f8
mulsd %xmm1, %xmm0
movq 0xcd8c(%rip), %xmm1     # 0x2a220
punpckldq %xmm3, %xmm1    # xmm1 = xmm1[0],xmm3[0],xmm1[1],xmm3[1]
subpd %xmm2, %xmm1
movaps %xmm1, %xmm2
unpckhpd %xmm1, %xmm1            # xmm1 = xmm1[1,1]
addsd %xmm2, %xmm1
divsd %xmm1, %xmm0
callq 0x2310
movq %rax, -0x298(%rbp)
jmp 0x1d4b9
movq -0x298(%rbp), %rdi
leaq 0x69a6(%rip), %rsi      # 0x23e6d
callq 0x2150
movq %rax, -0x2a0(%rbp)
jmp 0x1d4d5
movq -0x2a0(%rbp), %rdi
movq 0xcd34(%rip), %xmm0     # 0x2a218
movaps 0x6535(%rip), %xmm3     # 0x23a20
punpckldq %xmm3, %xmm0    # xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1]
movapd 0x6539(%rip), %xmm2     # 0x23a30
subpd %xmm2, %xmm0
movaps %xmm0, %xmm1
unpckhpd %xmm0, %xmm0            # xmm0 = xmm0[1,1]
addsd %xmm1, %xmm0
movsd 0x64f2(%rip), %xmm1     # 0x23a00
mulsd %xmm1, %xmm0
movq 0xccb6(%rip), %xmm1     # 0x2a1d0
punpckldq %xmm3, %xmm1    # xmm1 = xmm1[0],xmm3[0],xmm1[1],xmm3[1]
subpd %xmm2, %xmm1
movaps %xmm1, %xmm2
unpckhpd %xmm1, %xmm1            # xmm1 = xmm1[1,1]
addsd %xmm2, %xmm1
divsd %xmm1, %xmm0
callq 0x2310
movq %rax, -0x2a8(%rbp)
jmp 0x1d53f
movq -0x2a8(%rbp), %rdi
movq 0xca73(%rip), %rsi      # 0x29fc0
callq 0x21a0
jmp 0x1d554
jmp 0x1d556
testb $0x1, 0xcccc(%rip)      # 0x2a229
je 0x1d7a7
testb $0x1, 0xccbe(%rip)      # 0x2a228
je 0x1d5b9
movq 0xca65(%rip), %rdi      # 0x29fd8
leaq 0x68fd(%rip), %rsi      # 0x23e77
callq 0x2150
movq %rax, -0x2b0(%rbp)
jmp 0x1d588
movq -0x2b0(%rbp), %rdi
movl $0x5, %esi
callq 0x22e0
movq %rax, -0x2b8(%rbp)
jmp 0x1d5a2
movq -0x2b8(%rbp), %rdi
movq 0xca10(%rip), %rsi      # 0x29fc0
callq 0x21a0
jmp 0x1d5b7
jmp 0x1d5b9
movq 0xca18(%rip), %rdi      # 0x29fd8
leaq 0x68c6(%rip), %rsi      # 0x23e8d
callq 0x2150
movq %rax, -0x2c0(%rbp)
jmp 0x1d5d5
movq -0x2c0(%rbp), %rdi
movsd 0xcc04(%rip), %xmm0     # 0x2a1e8
movsd 0x6424(%rip), %xmm1     # 0x23a10
divsd %xmm1, %xmm0
callq 0x2310
movq %rax, -0x2c8(%rbp)
jmp 0x1d5fe
movq -0x2c8(%rbp), %rdi
leaq 0x6823(%rip), %rsi      # 0x23e2f
callq 0x2150
movq %rax, -0x2d0(%rbp)
jmp 0x1d61a
movq -0x2d0(%rbp), %rdi
movq 0xcba8(%rip), %rsi      # 0x2a1d0
callq 0x2050
movq %rax, -0x2d8(%rbp)
jmp 0x1d636
movq -0x2d8(%rbp), %rdi
leaq 0x67f1(%rip), %rsi      # 0x23e35
callq 0x2150
movq %rax, -0x2e0(%rbp)
jmp 0x1d652
movq -0x2e0(%rbp), %rdi
movq 0xcb90(%rip), %rsi      # 0x2a1f0
callq 0x2050
movq %rax, -0x2e8(%rbp)
jmp 0x1d66e
movq -0x2e8(%rbp), %rdi
leaq 0x6821(%rip), %rsi      # 0x23e9d
callq 0x2150
movq %rax, -0x2f0(%rbp)
jmp 0x1d68a
movq -0x2f0(%rbp), %rdi
movaps 0x6388(%rip), %xmm1     # 0x23a20
movq 0xcb58(%rip), %xmm0     # 0x2a1f8
punpckldq %xmm1, %xmm0    # xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
movapd 0x6384(%rip), %xmm1     # 0x23a30
subpd %xmm1, %xmm0
movaps %xmm0, %xmm1
unpckhpd %xmm0, %xmm0            # xmm0 = xmm0[1,1]
addsd %xmm1, %xmm0
movsd 0x6345(%rip), %xmm1     # 0x23a08
mulsd %xmm1, %xmm0
mulsd %xmm1, %xmm0
movsd 0xcb15(%rip), %xmm1     # 0x2a1e8
movsd 0x6335(%rip), %xmm2     # 0x23a10
divsd %xmm2, %xmm1
divsd %xmm1, %xmm0
callq 0x2310
movq %rax, -0x2f8(%rbp)
jmp 0x1d6f1
movq -0x2f8(%rbp), %rdi
leaq 0x6750(%rip), %rsi      # 0x23e4f
callq 0x2150
movq %rax, -0x300(%rbp)
jmp 0x1d70d
movq -0x300(%rbp), %rdi
movaps 0x6305(%rip), %xmm1     # 0x23a20
movq 0xcaad(%rip), %xmm0     # 0x2a1d0
punpckldq %xmm1, %xmm0    # xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
movapd 0x6301(%rip), %xmm1     # 0x23a30
subpd %xmm1, %xmm0
movaps %xmm0, %xmm1
unpckhpd %xmm0, %xmm0            # xmm0 = xmm0[1,1]
addsd %xmm1, %xmm0
movsd 0x62c2(%rip), %xmm1     # 0x23a08
mulsd %xmm1, %xmm0
mulsd %xmm1, %xmm0
movsd 0xca92(%rip), %xmm1     # 0x2a1e8
movsd 0x62b2(%rip), %xmm2     # 0x23a10
divsd %xmm2, %xmm1
divsd %xmm1, %xmm0
callq 0x2310
movq %rax, -0x308(%rbp)
jmp 0x1d774
movq -0x308(%rbp), %rdi
leaq 0x66d5(%rip), %rsi      # 0x23e57
callq 0x2150
movq %rax, -0x310(%rbp)
jmp 0x1d790
movq -0x310(%rbp), %rdi
movq 0xc822(%rip), %rsi      # 0x29fc0
callq 0x21a0
jmp 0x1d7a5
jmp 0x1d7a7
movl $0x0, -0x68(%rbp)
leaq -0x28(%rbp), %rdi
callq 0x1de90
movl -0x4(%rbp), %eax
addq $0x310, %rsp            # imm = 0x310
popq %rbp
retq
leaq -0x28(%rbp), %rdi
callq 0x1de90
jmp 0x1d7ce
jmp 0x1d7d0
movq -0x60(%rbp), %rdi
callq 0x22f0
movq %rax, %rdi
callq 0x19290
nopw %cs:(%rax,%rax)
nopl (%rax,%rax)