// File: oknenavin[P]cxon/test/src/cbor/cbor.node-main.cxx
// Function: test::kind::time(std::vector<test::fixture, std::allocator<test::fixture>> const&)
int time(const fixture::vector& fs) {
        using JSON = cxon::JSON<>;
        using CBOR = cxon::CBOR<>;

        std::vector<test_time> time;

        for (auto& fixture : fs) for (auto& file: fixture.group) {
            test_time t;

            std::string cbor;
            {   // JSON => CBOR
                std::ifstream is(file);
                    if (!is) {
                        CXON_ASSERT(0, "unexpected");
                        t.error = "error: cannot be opened: ''" + file + "'";
                        continue;
                    }
                cxon::cbor::ordered_node n;
                {   auto const r = cxon::from_bytes<JSON>(n, std::istreambuf_iterator<char>(is), std::istreambuf_iterator<char>());
                    if (!r) {
                        t.error = r.ec.category().name() + std::string(": ") + r.ec.message();
                        continue;
                    }
                }
                {   auto const r = cxon::to_bytes<CBOR>(cbor, n);
                    if (!r) {
                        t.error = r.ec.category().name() + std::string(": ") + r.ec.message();
                        continue;
                    }
                }
            }
            {   // time
                t.source = file;
                t.size = cbor.size();
                // read
                    std::vector<cxon::cbor::ordered_node> vo;
                    t.read = CXON_MEASURE(
                        vo.emplace_back();
                        auto const r = cxon::from_bytes(vo.back(), cbor);
                        if (!r) t.error = format_error(r, cbor.cbegin());
                    );
                // write
                    auto o = vo.back(); vo.clear();
                    std::vector<std::string> vs;
                    t.write = CXON_MEASURE(
                        vs.emplace_back();
                        cxon::to_bytes(vs.back(), o);
                    );
            }
            time.push_back(std::move(t));
        }

        {   // print
            std::vector<std::vector<std::string>> tab;
            {   // build the table
                static auto const fmt = [](double d) -> std::string {
                    char b[64];
                    int const r = std::snprintf(b, sizeof(b), "%.2f", d); CXON_ASSERT( r > 0 && r < (int)sizeof(b), "unexpected");
                    return b;
                };
                {   // header
                    tab.push_back({"# cbor/node", "Size", "Read", "Write"});
                }
                test_time total; double total_size = 0;
                {   // body
                    for (auto& t : time) {
                        if (!t.error.empty()) {
                            std::fprintf(stderr, "%s: %s\n", t.source.c_str(), t.error.c_str());
                            continue;
                        }
                        double const size = double(t.size) / (1024. * 1024);
                        tab.push_back({
                            t.source.substr(t.source.rfind('/') + 1),
                            fmt(size),
                            fmt(size / (t.read / 1000)),
                            fmt(size / (t.write/ 1000))
                        });
                        total.read += size / (t.read / 1000),
                        total.write += size / (t.write / 1000);
                        total_size += size;
                    }
                }
                {   // average
                    tab.push_back({
                        "<average>",
                        fmt(total_size / time.size()),
                        fmt(total.read / time.size()),
                        fmt(total.write/ time.size())
                    });
                }
            }

            std::vector<std::size_t> wid(tab[0].size(), 0);
            {   // column width
                for (auto& r : tab)
                    for (std::size_t i = 0, is = r.size(); i != is; ++i)
                        wid[i] = std::max(wid[i], r[i].length());
            }

            {   // print
                {   // header
                    std::fprintf(stdout, "%-*s", (unsigned)wid[0], tab.front()[0].c_str());
                    for (std::size_t i = 1, is = tab.front().size(); i != is; ++i)
                        std::fprintf(stdout, " %*s", (unsigned)wid[i], tab.front()[i].c_str());
                    std::fputc('\n', stdout);
                }
                {   // body
                    for (std::size_t i = 1, is = tab.size(); i != is; ++i) {
                        std::fprintf(stdout, "%-*s", (unsigned)wid[0], tab[i][0].c_str());
                        for (std::size_t j = 1, js = tab[i].size(); j != js; ++j)
                            std::fprintf(stdout, " %*s", (unsigned)wid[j], tab[i][j].c_str());
                        std::fputc('\n', stdout);
                    }
                }
            }
            std::fflush(stdout);
        }

        int err = 0;
            for (auto& t : time)
                err += !t.error.empty();
        return err;
    }

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xb30, %rsp            # imm = 0xB30
movq %rdi, -0x8(%rbp)
leaq -0x20(%rbp), %rdi
callq 0xb5f0
movq -0x8(%rbp), %rax
movq %rax, -0x28(%rbp)
movq -0x28(%rbp), %rdi
callq 0xa850
movq %rax, -0x30(%rbp)
movq -0x28(%rbp), %rdi
callq 0xa880
movq %rax, -0x38(%rbp)
leaq -0x30(%rbp), %rdi
leaq -0x38(%rbp), %rsi
callq 0xa8b0
testb $0x1, %al
jne 0x78f0
jmp 0x807a
leaq -0x30(%rbp), %rdi
callq 0xa8f0
movq %rax, -0x40(%rbp)
movq -0x40(%rbp), %rax
addq $0x20, %rax
movq %rax, -0x48(%rbp)
movq -0x48(%rbp), %rdi
callq 0xa910
movq %rax, -0x50(%rbp)
movq -0x48(%rbp), %rdi
callq 0xa940
movq %rax, -0x58(%rbp)
leaq -0x50(%rbp), %rdi
leaq -0x58(%rbp), %rsi
callq 0xa970
testb $0x1, %al
jne 0x7939
jmp 0x806a
leaq -0x50(%rbp), %rdi
callq 0xa9b0
movq %rax, -0x60(%rbp)
leaq -0xb8(%rbp), %rdi
callq 0xb610
leaq -0xd8(%rbp), %rdi
callq 0x5510
movq -0x60(%rbp), %rsi
leaq -0x2e0(%rbp), %rdi
movl $0x8, %edx
callq 0x55f0
jmp 0x7975
movq -0x2e0(%rbp), %rax
movq -0x18(%rax), %rax
leaq -0x2e0(%rbp,%rax), %rdi
callq 0x51b0
movb %al, -0x8c9(%rbp)
jmp 0x7995
movb -0x8c9(%rbp), %al
testb $0x1, %al
jne 0x79a4
jmp 0x7a68
movq -0x60(%rbp), %rdx
leaq 0xbb054(%rip), %rsi     # 0xc2a03
leaq -0x330(%rbp), %rdi
callq 0xb660
jmp 0x79bd
leaq 0xbb059(%rip), %rdx     # 0xc2a1d
leaq -0x310(%rbp), %rdi
leaq -0x330(%rbp), %rsi
callq 0xb010
jmp 0x79d9
leaq -0xb8(%rbp), %rdi
addq $0x20, %rdi
leaq -0x310(%rbp), %rsi
callq 0x5440
leaq -0x310(%rbp), %rdi
callq 0x5260
leaq -0x330(%rbp), %rdi
callq 0x5260
movl $0x5, -0x334(%rbp)
jmp 0x7e3b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x2e8(%rbp)
movl %eax, -0x2ec(%rbp)
jmp 0x804d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x2e8(%rbp)
movl %eax, -0x2ec(%rbp)
jmp 0x7ff5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x2e8(%rbp)
movl %eax, -0x2ec(%rbp)
leaq -0x330(%rbp), %rdi
callq 0x5260
jmp 0x7ff5
leaq -0x360(%rbp), %rdi
movq %rdi, -0x8d8(%rbp)
callq 0xb220
leaq -0x390(%rbp), %rdi
leaq -0x2e0(%rbp), %rsi
callq 0x9de0
leaq -0x3a0(%rbp), %rdi
callq 0x9e40
movq -0x8d8(%rbp), %rsi
movq -0x390(%rbp), %rdx
movl -0x388(%rbp), %ecx
movq -0x3a0(%rbp), %r8
movl -0x398(%rbp), %r9d
leaq -0x380(%rbp), %rdi
callq 0xb250
jmp 0x7aca
leaq -0x380(%rbp), %rdi
callq 0xaa60
testb $0x1, %al
jne 0x7c75
leaq -0x380(%rbp), %rdi
callq 0xb2e0
movq %rax, %rdi
movq (%rdi), %rax
movq 0x10(%rax), %rax
callq *%rax
movq %rax, -0x8e8(%rbp)
leaq -0x401(%rbp), %rdi
movq %rdi, -0x8e0(%rbp)
callq 0x5670
movq -0x8e0(%rbp), %rdx
leaq 0xbb055(%rip), %rsi     # 0xc2b73
leaq -0x400(%rbp), %rdi
callq 0x54f0
jmp 0x7b2c
movq -0x8e8(%rbp), %rsi
leaq -0x3e0(%rbp), %rdi
leaq -0x400(%rbp), %rdx
callq 0xb060
jmp 0x7b48
leaq -0x428(%rbp), %rdi
leaq -0x380(%rbp), %rsi
callq 0xaa80
jmp 0x7b5d
leaq -0x3c0(%rbp), %rdi
leaq -0x3e0(%rbp), %rsi
leaq -0x428(%rbp), %rdx
callq 0xb770
jmp 0x7b79
leaq -0xb8(%rbp), %rdi
addq $0x20, %rdi
leaq -0x3c0(%rbp), %rsi
callq 0x5440
leaq -0x3c0(%rbp), %rdi
callq 0x5260
leaq -0x428(%rbp), %rdi
callq 0x5260
leaq -0x3e0(%rbp), %rdi
callq 0x5260
leaq -0x400(%rbp), %rdi
callq 0x5260
leaq -0x401(%rbp), %rdi
callq 0x53f0
movl $0x5, -0x334(%rbp)
jmp 0x7e2f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x2e8(%rbp)
movl %eax, -0x2ec(%rbp)
jmp 0x7fe9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x2e8(%rbp)
movl %eax, -0x2ec(%rbp)
jmp 0x7c64
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x2e8(%rbp)
movl %eax, -0x2ec(%rbp)
jmp 0x7c58
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x2e8(%rbp)
movl %eax, -0x2ec(%rbp)
jmp 0x7c4c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x2e8(%rbp)
movl %eax, -0x2ec(%rbp)
leaq -0x428(%rbp), %rdi
callq 0x5260
leaq -0x3e0(%rbp), %rdi
callq 0x5260
leaq -0x400(%rbp), %rdi
callq 0x5260
leaq -0x401(%rbp), %rdi
callq 0x53f0
jmp 0x7fe9
leaq -0x440(%rbp), %rdi
leaq -0xd8(%rbp), %rsi
leaq -0x360(%rbp), %rdx
callq 0xb300
jmp 0x7c91
leaq -0x440(%rbp), %rdi
callq 0xb360
testb $0x1, %al
jne 0x7e25
leaq -0x440(%rbp), %rdi
callq 0xb2e0
movq %rax, %rdi
movq (%rdi), %rax
movq 0x10(%rax), %rax
callq *%rax
movq %rax, -0x8f8(%rbp)
leaq -0x4a1(%rbp), %rdi
movq %rdi, -0x8f0(%rbp)
callq 0x5670
movq -0x8f0(%rbp), %rdx
leaq 0xbae8e(%rip), %rsi     # 0xc2b73
leaq -0x4a0(%rbp), %rdi
callq 0x54f0
jmp 0x7cf3
movq -0x8f8(%rbp), %rsi
leaq -0x480(%rbp), %rdi
leaq -0x4a0(%rbp), %rdx
callq 0xb060
jmp 0x7d0f
leaq -0x4c8(%rbp), %rdi
leaq -0x440(%rbp), %rsi
callq 0xaa80
jmp 0x7d24
leaq -0x460(%rbp), %rdi
leaq -0x480(%rbp), %rsi
leaq -0x4c8(%rbp), %rdx
callq 0xb770
jmp 0x7d40
leaq -0xb8(%rbp), %rdi
addq $0x20, %rdi
leaq -0x460(%rbp), %rsi
callq 0x5440
leaq -0x460(%rbp), %rdi
callq 0x5260
leaq -0x4c8(%rbp), %rdi
callq 0x5260
leaq -0x480(%rbp), %rdi
callq 0x5260
leaq -0x4a0(%rbp), %rdi
callq 0x5260
leaq -0x4a1(%rbp), %rdi
callq 0x53f0
movl $0x5, -0x334(%rbp)
jmp 0x7e2f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x2e8(%rbp)
movl %eax, -0x2ec(%rbp)
jmp 0x7e14
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x2e8(%rbp)
movl %eax, -0x2ec(%rbp)
jmp 0x7e08
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x2e8(%rbp)
movl %eax, -0x2ec(%rbp)
jmp 0x7dfc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x2e8(%rbp)
movl %eax, -0x2ec(%rbp)
leaq -0x4c8(%rbp), %rdi
callq 0x5260
leaq -0x480(%rbp), %rdi
callq 0x5260
leaq -0x4a0(%rbp), %rdi
callq 0x5260
leaq -0x4a1(%rbp), %rdi
callq 0x53f0
jmp 0x7fe9
movl $0x0, -0x334(%rbp)
leaq -0x360(%rbp), %rdi
callq 0xb560
leaq -0x2e0(%rbp), %rdi
callq 0x50d0
movl -0x334(%rbp), %eax
testl %eax, %eax
jne 0x7fb3
jmp 0x7e57
movq -0x60(%rbp), %rsi
leaq -0xb8(%rbp), %rdi
callq 0x5050
jmp 0x7e69
leaq -0xd8(%rbp), %rdi
movq %rdi, -0x908(%rbp)
callq 0x52c0
movq %rax, -0x78(%rbp)
leaq -0x4e0(%rbp), %rdi
movq %rdi, -0x910(%rbp)
callq 0xb840
movq -0x910(%rbp), %rcx
movq -0x908(%rbp), %rax
movq %rcx, -0x4f8(%rbp)
movq %rax, -0x4f0(%rbp)
leaq -0xb8(%rbp), %rax
movq %rax, -0x4e8(%rbp)
movq -0x4e8(%rbp), %rcx
movq %rsp, %rax
movq %rcx, 0x10(%rax)
movups -0x4f8(%rbp), %xmm0
movups %xmm0, (%rax)
callq 0x92d0
movsd %xmm0, -0x900(%rbp)
jmp 0x7ee4
movsd -0x900(%rbp), %xmm0
movsd %xmm0, -0x70(%rbp)
leaq -0x4e0(%rbp), %rdi
callq 0xb860
movq %rax, %rsi
leaq -0x520(%rbp), %rdi
callq 0xb8a0
jmp 0x7f0e
leaq -0x4e0(%rbp), %rdi
callq 0xb9f0
leaq -0x538(%rbp), %rdi
movq %rdi, -0x920(%rbp)
callq 0xaff0
movq -0x920(%rbp), %rax
movq %rax, -0x548(%rbp)
leaq -0x520(%rbp), %rax
movq %rax, -0x540(%rbp)
movq -0x548(%rbp), %rdi
movq -0x540(%rbp), %rsi
callq 0x9450
movsd %xmm0, -0x918(%rbp)
jmp 0x7f66
movsd -0x918(%rbp), %xmm0
movsd %xmm0, -0x68(%rbp)
leaq -0x538(%rbp), %rdi
callq 0xb590
leaq -0x520(%rbp), %rdi
callq 0xb560
leaq -0x4e0(%rbp), %rdi
callq 0xba10
leaq -0x20(%rbp), %rdi
leaq -0xb8(%rbp), %rsi
callq 0xba70
jmp 0x7fa9
movl $0x0, -0x334(%rbp)
leaq -0xd8(%rbp), %rdi
callq 0x5260
leaq -0xb8(%rbp), %rdi
callq 0xbaa0
movl -0x334(%rbp), %eax
testl %eax, %eax
je 0x7fd9
jmp 0x7fd7
jmp 0x7fdb
jmp 0x7fdb
leaq -0x50(%rbp), %rdi
callq 0xafb0
jmp 0x7923
leaq -0x360(%rbp), %rdi
callq 0xb560
leaq -0x2e0(%rbp), %rdi
callq 0x50d0
jmp 0x804d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x2e8(%rbp)
movl %eax, -0x2ec(%rbp)
jmp 0x8041
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x2e8(%rbp)
movl %eax, -0x2ec(%rbp)
leaq -0x538(%rbp), %rdi
callq 0xb590
leaq -0x520(%rbp), %rdi
callq 0xb560
leaq -0x4e0(%rbp), %rdi
callq 0xba10
leaq -0xd8(%rbp), %rdi
callq 0x5260
leaq -0xb8(%rbp), %rdi
callq 0xbaa0
jmp 0x9201
jmp 0x806c
leaq -0x30(%rbp), %rdi
callq 0xafd0
jmp 0x78da
leaq -0x560(%rbp), %rdi
callq 0xbad0
movb $0x1, -0x615(%rbp)
leaq -0x608(%rbp), %rax
movq %rax, -0x930(%rbp)
movq %rax, -0x610(%rbp)
leaq -0x611(%rbp), %rdi
movq %rdi, -0x928(%rbp)
callq 0x5670
movq -0x930(%rbp), %rdi
movq -0x928(%rbp), %rdx
leaq 0xba955(%rip), %rsi     # 0xc2a1f
callq 0x54f0
jmp 0x80d1
leaq -0x5e8(%rbp), %rax
movq %rax, -0x940(%rbp)
movq %rax, -0x610(%rbp)
leaq -0x612(%rbp), %rdi
movq %rdi, -0x938(%rbp)
callq 0x5670
movq -0x940(%rbp), %rdi
movq -0x938(%rbp), %rdx
leaq 0xba91d(%rip), %rsi     # 0xc2a2b
callq 0x54f0
jmp 0x8115
leaq -0x5c8(%rbp), %rax
movq %rax, -0x950(%rbp)
movq %rax, -0x610(%rbp)
leaq -0x613(%rbp), %rdi
movq %rdi, -0x948(%rbp)
callq 0x5670
movq -0x950(%rbp), %rdi
movq -0x948(%rbp), %rdx
leaq 0xba8de(%rip), %rsi     # 0xc2a30
callq 0x54f0
jmp 0x8159
leaq -0x5a8(%rbp), %rax
movq %rax, -0x960(%rbp)
movq %rax, -0x610(%rbp)
leaq -0x614(%rbp), %rdi
movq %rdi, -0x958(%rbp)
callq 0x5670
movq -0x960(%rbp), %rdi
movq -0x958(%rbp), %rdx
leaq 0xba89f(%rip), %rsi     # 0xc2a35
callq 0x54f0
jmp 0x819d
movb $0x0, -0x615(%rbp)
leaq -0x608(%rbp), %rax
movq %rax, -0x588(%rbp)
movq $0x4, -0x580(%rbp)
leaq -0x616(%rbp), %rdi
movq %rdi, -0x968(%rbp)
callq 0xbb20
movq -0x968(%rbp), %rcx
movq -0x588(%rbp), %rsi
movq -0x580(%rbp), %rdx
leaq -0x578(%rbp), %rdi
callq 0xbb40
jmp 0x81f3
leaq -0x560(%rbp), %rdi
leaq -0x578(%rbp), %rsi
callq 0xbaf0
jmp 0x8208
leaq -0x578(%rbp), %rdi
callq 0xb590
leaq -0x616(%rbp), %rdi
callq 0xbbc0
leaq -0x608(%rbp), %rax
movq %rax, -0x978(%rbp)
addq $0x80, %rax
movq %rax, -0x970(%rbp)
movq -0x970(%rbp), %rdi
addq $-0x20, %rdi
movq %rdi, -0x980(%rbp)
callq 0x5260
movq -0x978(%rbp), %rcx
movq -0x980(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x970(%rbp)
jne 0x823b
leaq -0x614(%rbp), %rdi
callq 0x53f0
leaq -0x613(%rbp), %rdi
callq 0x53f0
leaq -0x612(%rbp), %rdi
callq 0x53f0
leaq -0x611(%rbp), %rdi
callq 0x53f0
leaq -0x670(%rbp), %rdi
callq 0xb610
xorps %xmm0, %xmm0
movsd %xmm0, -0x678(%rbp)
leaq -0x20(%rbp), %rax
movq %rax, -0x680(%rbp)
movq -0x680(%rbp), %rdi
callq 0xbbe0
movq %rax, -0x688(%rbp)
movq -0x680(%rbp), %rdi
callq 0xbc10
movq %rax, -0x690(%rbp)
leaq -0x688(%rbp), %rdi
leaq -0x690(%rbp), %rsi
callq 0xbc40
testb $0x1, %al
jne 0x8300
jmp 0x8885
leaq -0x688(%rbp), %rdi
callq 0xbc80
movq %rax, -0x698(%rbp)
movq -0x698(%rbp), %rdi
addq $0x20, %rdi
callq 0x5620
testb $0x1, %al
jne 0x84f8
movq 0x10dcae(%rip), %rax    # 0x115fe0
movq (%rax), %rax
movq %rax, -0x990(%rbp)
movq -0x698(%rbp), %rdi
callq 0x5150
movq %rax, -0x988(%rbp)
movq -0x698(%rbp), %rdi
addq $0x20, %rdi
callq 0x5150
movq -0x990(%rbp), %rdi
movq -0x988(%rbp), %rdx
movq %rax, %rcx
leaq 0xba680(%rip), %rsi     # 0xc29f7
movb $0x0, %al
callq 0x5540
jmp 0x8783
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x2e8(%rbp)
movl %eax, -0x2ec(%rbp)
jmp 0x848f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x2e8(%rbp)
movl %eax, -0x2ec(%rbp)
jmp 0x8483
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x2e8(%rbp)
movl %eax, -0x2ec(%rbp)
jmp 0x8477
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x2e8(%rbp)
movl %eax, -0x2ec(%rbp)
jmp 0x846b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x2e8(%rbp)
movl %eax, -0x2ec(%rbp)
jmp 0x8411
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x2e8(%rbp)
movl %eax, -0x2ec(%rbp)
leaq -0x578(%rbp), %rdi
callq 0xb590
leaq -0x616(%rbp), %rdi
callq 0xbbc0
leaq -0x608(%rbp), %rax
movq %rax, -0x9a0(%rbp)
addq $0x80, %rax
movq %rax, -0x998(%rbp)
movq -0x998(%rbp), %rdi
addq $-0x20, %rdi
movq %rdi, -0x9a8(%rbp)
callq 0x5260
movq -0x9a0(%rbp), %rcx
movq -0x9a8(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x998(%rbp)
jne 0x8438
jmp 0x846b
leaq -0x614(%rbp), %rdi
callq 0x53f0
leaq -0x613(%rbp), %rdi
callq 0x53f0
leaq -0x612(%rbp), %rdi
callq 0x53f0
leaq -0x611(%rbp), %rdi
callq 0x53f0
testb $0x1, -0x615(%rbp)
jne 0x84a6
jmp 0x84f3
movq -0x610(%rbp), %rax
leaq -0x608(%rbp), %rcx
cmpq %rax, %rcx
movq %rax, -0x9b0(%rbp)
je 0x84f1
movq -0x9b0(%rbp), %rdi
addq $-0x20, %rdi
movq %rdi, -0x9b8(%rbp)
callq 0x5260
movq -0x9b8(%rbp), %rax
leaq -0x608(%rbp), %rcx
cmpq %rcx, %rax
movq %rax, -0x9b0(%rbp)
jne 0x84c0
jmp 0x84f3
jmp 0x91c5
movq -0x698(%rbp), %rax
movq 0x40(%rax), %xmm0
movaps 0xb8b05(%rip), %xmm1    # 0xc1010
punpckldq %xmm1, %xmm0    # xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
movapd 0xb8b09(%rip), %xmm1    # 0xc1020
subpd %xmm1, %xmm0
movaps %xmm0, %xmm1
unpckhpd %xmm0, %xmm0            # xmm0 = xmm0[1,1]
addsd %xmm1, %xmm0
movsd 0xb8b02(%rip), %xmm1    # 0xc1030
mulsd %xmm1, %xmm0
movsd %xmm0, -0x6a0(%rbp)
leaq -0x748(%rbp), %rax
movq %rax, -0x9d0(%rbp)
movq %rax, -0x750(%rbp)
movq -0x698(%rbp), %rdi
movq %rdi, -0x9c8(%rbp)
movl $0x2f, %esi
movq $-0x1, %rdx
movq %rdx, -0x9c0(%rbp)
callq 0x56f0
movq -0x9d0(%rbp), %rdi
movq -0x9c8(%rbp), %rsi
movq -0x9c0(%rbp), %rcx
movq %rax, %rdx
incq %rdx
callq 0x53c0
jmp 0x8597
leaq -0x728(%rbp), %rdi
movq %rdi, -0x750(%rbp)
movsd -0x6a0(%rbp), %xmm0
leaq 0xba87d(%rip), %rsi     # 0xc2e31
callq 0x95c0
jmp 0x85bb
leaq -0x708(%rbp), %rdi
movq %rdi, -0x750(%rbp)
movsd -0x6a0(%rbp), %xmm0
movq -0x698(%rbp), %rax
movsd 0x48(%rax), %xmm1
movsd 0xb8a53(%rip), %xmm2    # 0xc1038
divsd %xmm2, %xmm1
divsd %xmm1, %xmm0
leaq 0xba83d(%rip), %rsi     # 0xc2e31
callq 0x95c0
jmp 0x85fb
leaq -0x6e8(%rbp), %rdi
movq %rdi, -0x750(%rbp)
movsd -0x6a0(%rbp), %xmm0
movq -0x698(%rbp), %rax
movsd 0x50(%rax), %xmm1
movsd 0xb8a13(%rip), %xmm2    # 0xc1038
divsd %xmm2, %xmm1
divsd %xmm1, %xmm0
leaq 0xba7fd(%rip), %rsi     # 0xc2e31
callq 0x95c0
jmp 0x863b
leaq -0x748(%rbp), %rax
movq %rax, -0x6c8(%rbp)
movq $0x4, -0x6c0(%rbp)
leaq -0x751(%rbp), %rdi
movq %rdi, -0x9d8(%rbp)
callq 0xbb20
movq -0x9d8(%rbp), %rcx
movq -0x6c8(%rbp), %rsi
movq -0x6c0(%rbp), %rdx
leaq -0x6b8(%rbp), %rdi
callq 0xbb40
jmp 0x868a
leaq -0x560(%rbp), %rdi
leaq -0x6b8(%rbp), %rsi
callq 0xbaf0
jmp 0x869f
leaq -0x6b8(%rbp), %rdi
callq 0xb590
leaq -0x751(%rbp), %rdi
callq 0xbbc0
leaq -0x748(%rbp), %rax
movq %rax, -0x9e8(%rbp)
addq $0x80, %rax
movq %rax, -0x9e0(%rbp)
movq -0x9e0(%rbp), %rdi
addq $-0x20, %rdi
movq %rdi, -0x9f0(%rbp)
callq 0x5260
movq -0x9e8(%rbp), %rcx
movq -0x9f0(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x9e0(%rbp)
jne 0x86d2
movsd -0x6a0(%rbp), %xmm0
movq -0x698(%rbp), %rax
movsd 0x48(%rax), %xmm1
movsd 0xb8919(%rip), %xmm2    # 0xc1038
divsd %xmm2, %xmm1
divsd %xmm1, %xmm0
addsd -0x628(%rbp), %xmm0
movsd %xmm0, -0x628(%rbp)
movsd -0x6a0(%rbp), %xmm0
movq -0x698(%rbp), %rax
movsd 0x50(%rax), %xmm1
movsd 0xb88e5(%rip), %xmm2    # 0xc1038
divsd %xmm2, %xmm1
divsd %xmm1, %xmm0
addsd -0x620(%rbp), %xmm0
movsd %xmm0, -0x620(%rbp)
movsd -0x6a0(%rbp), %xmm0
addsd -0x678(%rbp), %xmm0
movsd %xmm0, -0x678(%rbp)
leaq -0x688(%rbp), %rdi
callq 0xbca0
jmp 0x82e4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x2e8(%rbp)
movl %eax, -0x2ec(%rbp)
movq -0x750(%rbp), %rax
leaq -0x748(%rbp), %rcx
cmpq %rax, %rcx
movq %rax, -0x9f8(%rbp)
je 0x87f1
movq -0x9f8(%rbp), %rdi
addq $-0x20, %rdi
movq %rdi, -0xa00(%rbp)
callq 0x5260
movq -0xa00(%rbp), %rax
leaq -0x748(%rbp), %rcx
cmpq %rcx, %rax
movq %rax, -0x9f8(%rbp)
jne 0x87c0
jmp 0x8dc0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x2e8(%rbp)
movl %eax, -0x2ec(%rbp)
jmp 0x8828
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x2e8(%rbp)
movl %eax, -0x2ec(%rbp)
leaq -0x6b8(%rbp), %rdi
callq 0xb590
leaq -0x751(%rbp), %rdi
callq 0xbbc0
leaq -0x748(%rbp), %rax
movq %rax, -0xa10(%rbp)
addq $0x80, %rax
movq %rax, -0xa08(%rbp)
movq -0xa08(%rbp), %rdi
addq $-0x20, %rdi
movq %rdi, -0xa18(%rbp)
callq 0x5260
movq -0xa10(%rbp), %rcx
movq -0xa18(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0xa08(%rbp)
jne 0x884f
jmp 0x8dc0
movb $0x1, -0x80a(%rbp)
leaq -0x800(%rbp), %rax
movq %rax, -0xa28(%rbp)
movq %rax, -0x808(%rbp)
leaq -0x809(%rbp), %rdi
movq %rdi, -0xa20(%rbp)
callq 0x5670
movq -0xa28(%rbp), %rdi
movq -0xa20(%rbp), %rdx
leaq 0xba172(%rip), %rsi     # 0xc2a3b
callq 0x54f0
jmp 0x88d0
leaq -0x7e0(%rbp), %rax
movq %rax, -0xa30(%rbp)
movq %rax, -0x808(%rbp)
movsd -0x678(%rbp), %xmm0
movsd %xmm0, -0xa38(%rbp)
leaq -0x20(%rbp), %rdi
callq 0xbcc0
movsd -0xa38(%rbp), %xmm0
movq -0xa30(%rbp), %rdi
movq %rax, %xmm1
movaps 0xb86f7(%rip), %xmm2    # 0xc1010
punpckldq %xmm2, %xmm1    # xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1]
movapd 0xb86fb(%rip), %xmm2    # 0xc1020
subpd %xmm2, %xmm1
movaps %xmm1, %xmm2
unpckhpd %xmm1, %xmm1            # xmm1 = xmm1[1,1]
addsd %xmm2, %xmm1
divsd %xmm1, %xmm0
leaq 0xba4f2(%rip), %rsi     # 0xc2e31
callq 0x95c0
jmp 0x8946
leaq -0x7c0(%rbp), %rax
movq %rax, -0xa40(%rbp)
movq %rax, -0x808(%rbp)
movsd -0x628(%rbp), %xmm0
movsd %xmm0, -0xa48(%rbp)
leaq -0x20(%rbp), %rdi
callq 0xbcc0
movsd -0xa48(%rbp), %xmm0
movq -0xa40(%rbp), %rdi
movq %rax, %xmm1
movaps 0xb8681(%rip), %xmm2    # 0xc1010
punpckldq %xmm2, %xmm1    # xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1]
movapd 0xb8685(%rip), %xmm2    # 0xc1020
subpd %xmm2, %xmm1
movaps %xmm1, %xmm2
unpckhpd %xmm1, %xmm1            # xmm1 = xmm1[1,1]
addsd %xmm2, %xmm1
divsd %xmm1, %xmm0
leaq 0xba47c(%rip), %rsi     # 0xc2e31
callq 0x95c0
jmp 0x89bc
leaq -0x7a0(%rbp), %rax
movq %rax, -0xa50(%rbp)
movq %rax, -0x808(%rbp)
movsd -0x620(%rbp), %xmm0
movsd %xmm0, -0xa58(%rbp)
leaq -0x20(%rbp), %rdi
callq 0xbcc0
movsd -0xa58(%rbp), %xmm0
movq -0xa50(%rbp), %rdi
movq %rax, %xmm1
movaps 0xb860b(%rip), %xmm2    # 0xc1010
punpckldq %xmm2, %xmm1    # xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1]
movapd 0xb860f(%rip), %xmm2    # 0xc1020
subpd %xmm2, %xmm1
movaps %xmm1, %xmm2
unpckhpd %xmm1, %xmm1            # xmm1 = xmm1[1,1]
addsd %xmm2, %xmm1
divsd %xmm1, %xmm0
leaq 0xba406(%rip), %rsi     # 0xc2e31
callq 0x95c0
jmp 0x8a32
movb $0x0, -0x80a(%rbp)
leaq -0x800(%rbp), %rax
movq %rax, -0x780(%rbp)
movq $0x4, -0x778(%rbp)
leaq -0x80b(%rbp), %rdi
movq %rdi, -0xa60(%rbp)
callq 0xbb20
movq -0xa60(%rbp), %rcx
movq -0x780(%rbp), %rsi
movq -0x778(%rbp), %rdx
leaq -0x770(%rbp), %rdi
callq 0xbb40
jmp 0x8a88
leaq -0x560(%rbp), %rdi
leaq -0x770(%rbp), %rsi
callq 0xbaf0
jmp 0x8a9d
leaq -0x770(%rbp), %rdi
callq 0xb590
leaq -0x80b(%rbp), %rdi
callq 0xbbc0
leaq -0x800(%rbp), %rax
movq %rax, -0xa70(%rbp)
addq $0x80, %rax
movq %rax, -0xa68(%rbp)
movq -0xa68(%rbp), %rdi
addq $-0x20, %rdi
movq %rdi, -0xa78(%rbp)
callq 0x5260
movq -0xa70(%rbp), %rcx
movq -0xa78(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0xa68(%rbp)
jne 0x8ad0
leaq -0x809(%rbp), %rdi
callq 0x53f0
leaq -0x670(%rbp), %rdi
callq 0xbaa0
xorl %eax, %eax
movl %eax, %esi
leaq -0x560(%rbp), %rdi
callq 0xbcf0
movq %rax, %rdi
callq 0xbd10
movq %rax, -0xa88(%rbp)
movq $0x0, -0x830(%rbp)
leaq -0x831(%rbp), %rdi
movq %rdi, -0xa80(%rbp)
callq 0xbd30
movq -0xa88(%rbp), %rsi
movq -0xa80(%rbp), %rcx
leaq -0x828(%rbp), %rdi
leaq -0x830(%rbp), %rdx
callq 0xbd50
jmp 0x8b79
leaq -0x831(%rbp), %rdi
callq 0xbdd0
leaq -0x560(%rbp), %rax
movq %rax, -0x840(%rbp)
movq -0x840(%rbp), %rdi
callq 0xbdf0
movq %rax, -0x848(%rbp)
movq -0x840(%rbp), %rdi
callq 0xbe20
movq %rax, -0x850(%rbp)
leaq -0x848(%rbp), %rdi
leaq -0x850(%rbp), %rsi
callq 0xbe50
testb $0x1, %al
jne 0x8bd5
jmp 0x8e2a
leaq -0x848(%rbp), %rdi
callq 0xbe90
movq %rax, -0x858(%rbp)
movq $0x0, -0x860(%rbp)
movq -0x858(%rbp), %rdi
callq 0xbd10
movq %rax, -0x868(%rbp)
movq -0x860(%rbp), %rax
cmpq -0x868(%rbp), %rax
je 0x8e17
movq -0x860(%rbp), %rsi
leaq -0x828(%rbp), %rdi
callq 0xbef0
movq %rax, -0xa98(%rbp)
movq -0x858(%rbp), %rdi
movq -0x860(%rbp), %rsi
callq 0xbf10
movq %rax, %rdi
callq 0x5580
movq -0xa98(%rbp), %rdi
movq %rax, -0x870(%rbp)
leaq -0x870(%rbp), %rsi
callq 0xbeb0
movq %rax, -0xa90(%rbp)
jmp 0x8c72
movq -0xa90(%rbp), %rax
movq (%rax), %rax
movq %rax, -0xaa0(%rbp)
movq -0x860(%rbp), %rsi
leaq -0x828(%rbp), %rdi
callq 0xbef0
movq -0xaa0(%rbp), %rcx
movq %rcx, (%rax)
movq -0x860(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x860(%rbp)
jmp 0x8c06
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x2e8(%rbp)
movl %eax, -0x2ec(%rbp)
jmp 0x8d5a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x2e8(%rbp)
movl %eax, -0x2ec(%rbp)
jmp 0x8d00
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x2e8(%rbp)
movl %eax, -0x2ec(%rbp)
leaq -0x770(%rbp), %rdi
callq 0xb590
leaq -0x80b(%rbp), %rdi
callq 0xbbc0
leaq -0x800(%rbp), %rax
movq %rax, -0xab0(%rbp)
addq $0x80, %rax
movq %rax, -0xaa8(%rbp)
movq -0xaa8(%rbp), %rdi
addq $-0x20, %rdi
movq %rdi, -0xab8(%rbp)
callq 0x5260
movq -0xab0(%rbp), %rcx
movq -0xab8(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0xaa8(%rbp)
jne 0x8d27
jmp 0x8d5a
leaq -0x809(%rbp), %rdi
callq 0x53f0
testb $0x1, -0x80a(%rbp)
jne 0x8d71
jmp 0x8dbe
movq -0x808(%rbp), %rax
leaq -0x800(%rbp), %rcx
cmpq %rax, %rcx
movq %rax, -0xac0(%rbp)
je 0x8dbc
movq -0xac0(%rbp), %rdi
addq $-0x20, %rdi
movq %rdi, -0xac8(%rbp)
callq 0x5260
movq -0xac8(%rbp), %rax
leaq -0x800(%rbp), %rcx
cmpq %rcx, %rax
movq %rax, -0xac0(%rbp)
jne 0x8d8b
jmp 0x8dbe
jmp 0x8dc0
leaq -0x670(%rbp), %rdi
callq 0xbaa0
jmp 0x91c5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x2e8(%rbp)
movl %eax, -0x2ec(%rbp)
leaq -0x831(%rbp), %rdi
callq 0xbdd0
jmp 0x91c5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x2e8(%rbp)
movl %eax, -0x2ec(%rbp)
leaq -0x828(%rbp), %rdi
callq 0xbfb0
jmp 0x91c5
jmp 0x8e19
leaq -0x848(%rbp), %rdi
callq 0xbf30
jmp 0x8bb9
movq 0x10d18f(%rip), %rax    # 0x115fc0
movq (%rax), %rax
movq %rax, -0xad8(%rbp)
leaq -0x828(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0xbef0
movq (%rax), %rax
movl %eax, -0xacc(%rbp)
leaq -0x560(%rbp), %rdi
callq 0xbf50
movq %rax, %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0xbf10
movq %rax, %rdi
callq 0x5150
movq -0xad8(%rbp), %rdi
movl -0xacc(%rbp), %edx
movq %rax, %rcx
leaq 0xb9bba(%rip), %rsi     # 0xc2a45
movb $0x0, %al
callq 0x5540
movq $0x1, -0x878(%rbp)
leaq -0x560(%rbp), %rdi
callq 0xbf50
movq %rax, %rdi
callq 0xbd10
movq %rax, -0x880(%rbp)
movq -0x878(%rbp), %rax
cmpq -0x880(%rbp), %rax
je 0x8f51
movq 0x10d0ed(%rip), %rax    # 0x115fc0
movq (%rax), %rax
movq %rax, -0xae8(%rbp)
movq -0x878(%rbp), %rsi
leaq -0x828(%rbp), %rdi
callq 0xbef0
movq (%rax), %rax
movl %eax, -0xadc(%rbp)
leaq -0x560(%rbp), %rdi
callq 0xbf50
movq %rax, %rdi
movq -0x878(%rbp), %rsi
callq 0xbf10
movq %rax, %rdi
callq 0x5150
movq -0xae8(%rbp), %rdi
movl -0xadc(%rbp), %edx
movq %rax, %rcx
leaq 0xb9b17(%rip), %rsi     # 0xc2a4a
movb $0x0, %al
callq 0x5540
movq -0x878(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x878(%rbp)
jmp 0x8eb8
movq 0x10d068(%rip), %rax    # 0x115fc0
movq (%rax), %rsi
movl $0xa, %edi
callq 0x5460
jmp 0x8f67
movq $0x1, -0x888(%rbp)
leaq -0x560(%rbp), %rdi
callq 0xbf80
movq %rax, -0x890(%rbp)
movq -0x888(%rbp), %rax
cmpq -0x890(%rbp), %rax
je 0x9104
movq 0x10d020(%rip), %rax    # 0x115fc0
movq (%rax), %rax
movq %rax, -0xaf8(%rbp)
leaq -0x828(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0xbef0
movq (%rax), %rax
movl %eax, -0xaec(%rbp)
movq -0x888(%rbp), %rsi
leaq -0x560(%rbp), %rdi
callq 0xbcf0
movq %rax, %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0xbf10
movq %rax, %rdi
callq 0x5150
movq -0xaf8(%rbp), %rdi
movl -0xaec(%rbp), %edx
movq %rax, %rcx
leaq 0xb9a44(%rip), %rsi     # 0xc2a45
movb $0x0, %al
callq 0x5540
movq $0x1, -0x898(%rbp)
movq -0x888(%rbp), %rsi
leaq -0x560(%rbp), %rdi
callq 0xbcf0
movq %rax, %rdi
callq 0xbd10
movq %rax, -0x8a0(%rbp)
movq -0x898(%rbp), %rax
cmpq -0x8a0(%rbp), %rax
je 0x90d5
movq 0x10cf70(%rip), %rax    # 0x115fc0
movq (%rax), %rax
movq %rax, -0xb08(%rbp)
movq -0x898(%rbp), %rsi
leaq -0x828(%rbp), %rdi
callq 0xbef0
movq (%rax), %rax
movl %eax, -0xafc(%rbp)
movq -0x888(%rbp), %rsi
leaq -0x560(%rbp), %rdi
callq 0xbcf0
movq %rax, %rdi
movq -0x898(%rbp), %rsi
callq 0xbf10
movq %rax, %rdi
callq 0x5150
movq -0xb08(%rbp), %rdi
movl -0xafc(%rbp), %edx
movq %rax, %rcx
leaq 0xb9993(%rip), %rsi     # 0xc2a4a
movb $0x0, %al
callq 0x5540
movq -0x898(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x898(%rbp)
jmp 0x9035
movq 0x10cee4(%rip), %rax    # 0x115fc0
movq (%rax), %rsi
movl $0xa, %edi
callq 0x5460
jmp 0x90eb
jmp 0x90ed
movq -0x888(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x888(%rbp)
jmp 0x8f85
movq 0x10ceb5(%rip), %rax    # 0x115fc0
movq (%rax), %rdi
callq 0x5430
jmp 0x9115
leaq -0x828(%rbp), %rdi
callq 0xbfb0
leaq -0x560(%rbp), %rdi
callq 0xc010
movl $0x0, -0x8a4(%rbp)
leaq -0x20(%rbp), %rax
movq %rax, -0x8b0(%rbp)
movq -0x8b0(%rbp), %rdi
callq 0xbbe0
movq %rax, -0x8b8(%rbp)
movq -0x8b0(%rbp), %rdi
callq 0xbc10
movq %rax, -0x8c0(%rbp)
leaq -0x8b8(%rbp), %rdi
leaq -0x8c0(%rbp), %rsi
callq 0xbc40
testb $0x1, %al
jne 0x9181
jmp 0x91d3
leaq -0x8b8(%rbp), %rdi
callq 0xbc80
movq %rax, -0x8c8(%rbp)
movq -0x8c8(%rbp), %rdi
addq $0x20, %rdi
callq 0x5620
xorb $-0x1, %al
andb $0x1, %al
movzbl %al, %eax
addl -0x8a4(%rbp), %eax
movl %eax, -0x8a4(%rbp)
leaq -0x8b8(%rbp), %rdi
callq 0xbca0
jmp 0x9168
leaq -0x560(%rbp), %rdi
callq 0xc010
jmp 0x9201
movl -0x8a4(%rbp), %eax
movl %eax, -0xb0c(%rbp)
movl $0x1, -0x334(%rbp)
leaq -0x20(%rbp), %rdi
callq 0xc070
movl -0xb0c(%rbp), %eax
addq $0xb30, %rsp            # imm = 0xB30
popq %rbp
retq
leaq -0x20(%rbp), %rdi
callq 0xc070
movq -0x2e8(%rbp), %rdi
callq 0x5660
nopw %cs:(%rax,%rax)