// File: /workspace/github_cpp_makefile_star2_O3/ttalvitie[P]traveling-santa/optimize.cpp
// Function: main
int main() {
	unsigned int seed = random_device{}();
	cout << "Using random seed " << seed << "\n";
	rng.seed(seed);

    double initTemp = exp(uniform_real_distribution<double>(log(5000.0), log(50000.0))(rng));
    cout << "Initial temperature " << initTemp << "\n";

    Z initWtLimit = 0;
    initWtLimit = max(initWtLimit, uniform_int_distribution<Z>(0, FinalWtLimit)(rng));
    initWtLimit = max(initWtLimit, uniform_int_distribution<Z>(0, FinalWtLimit)(rng));
    cout << "Initial weight limit " << initWtLimit << "\n";

    Z endWtLimit = 2 * FinalWtLimit;
    endWtLimit = min(endWtLimit, uniform_int_distribution<Z>(FinalWtLimit, 2 * FinalWtLimit)(rng));
    endWtLimit = min(endWtLimit, uniform_int_distribution<Z>(FinalWtLimit, 2 * FinalWtLimit)(rng));
    cout << "End weight limit " << endWtLimit << " (capped to " << FinalWtLimit << ")\n";

    long long iterations = (long long)3e11;
    cout << "Running " << (double)iterations << " iterations\n";

    cout << "Constructing initial paths\n";

    vector<Path> paths = initialPaths(initWtLimit);

    double cost = 0.0;
    for(const Path& path : paths) {
        cost += path.cost;
    }

    cout << "Initially " << len(paths) << " paths, cost = " << cost << "\n";

    for(long long iter = 0; iter < iterations; ++iter) {
        double prog = (double)iter / (double)iterations;
        auto temp = [&]() {
            double t = (1.0 - (double)iter / (double)iterations);
            return t * t * initTemp;
        };
        Z wtLimit = min(initWtLimit + iter * (endWtLimit - initWtLimit) / iterations, FinalWtLimit);

        if(!(iter & 0xFFFFFF)) {
            cout << "cost = " << cost << ", progress = " << prog << ", temperature = " << temp() << ", weight limit " << wtLimit << "\n";
        }
        if(!(iter & 0xFFF)) {
            int emptyCount = 0;
            int i = 0;
            while(i < len(paths)) {
                if(len(paths[i].points) == 2) {
                    if(emptyCount >= 200) {
                        swap(paths[i], paths.back());
                        paths.pop_back();
                        continue;
                    }
                    ++emptyCount;
                }
                ++i;
            }
            while(emptyCount < 200) {
                Path path;
                path.points.push_back(Korvatunturi);
                path.points.push_back(Korvatunturi);
                path.finalize();
                paths.push_back(move(path));
                ++emptyCount;
            }
        }

        int type = uniform_int_distribution<int>(0, 3)(rng);
        if(type == 0) {
            int ap = uniform_int_distribution<int>(0, len(paths) - 1)(rng);
            int bp = uniform_int_distribution<int>(0, len(paths) - 1)(rng);
            if(ap == bp) continue;
            int ai = uniform_int_distribution<int>(1, len(paths[ap].points) - 1)(rng);
            int bi = uniform_int_distribution<int>(1, len(paths[bp].points) - 1)(rng);

            if(paths[ap].points[ai - 1].leftWt + paths[bp].points[bi].rightWt > wtLimit) continue;
            if(paths[bp].points[bi - 1].leftWt + paths[ap].points[ai].rightWt > wtLimit) continue;

            double costDiff = 0.0;
            costDiff -= sphereDist(paths[ap].points[ai - 1].pos, paths[ap].points[ai].pos);
            costDiff -= sphereDist(paths[bp].points[bi - 1].pos, paths[bp].points[bi].pos);
            costDiff += sphereDist(paths[ap].points[ai - 1].pos, paths[bp].points[bi].pos);
            costDiff += sphereDist(paths[bp].points[bi - 1].pos, paths[ap].points[ai].pos);

            if(costDiff <= 0.0 || uniform_real_distribution(0.0, 1.0)(rng) < exp(-costDiff / temp())) {
                cost += costDiff;

                int ae = len(paths[ap].points);
                int be = len(paths[bp].points);
                paths[ap].points.insert(paths[ap].points.end(), paths[bp].points.begin() + bi, paths[bp].points.begin() + be);
                paths[bp].points.insert(paths[bp].points.end(), paths[ap].points.begin() + ai, paths[ap].points.begin() + ae);
                paths[ap].points.erase(paths[ap].points.begin() + ai, paths[ap].points.begin() + ae);
                paths[bp].points.erase(paths[bp].points.begin() + bi, paths[bp].points.begin() + be);

                paths[ap].finalize();
                paths[bp].finalize();
            }
        }
        if(type == 1) {
            int p = uniform_int_distribution<int>(0, len(paths) - 1)(rng);
            int i = uniform_int_distribution<int>(1, len(paths[p].points) - 1)(rng);
            int j = uniform_int_distribution<int>(1, len(paths[p].points) - 1)(rng);
            if(i > j) swap(i, j);
            if(j - i < 2) continue;

            double costDiff = 0.0;
            costDiff -= sphereDist(paths[p].points[i - 1].pos, paths[p].points[i].pos);
            costDiff -= sphereDist(paths[p].points[j - 1].pos, paths[p].points[j].pos);
            costDiff += sphereDist(paths[p].points[i - 1].pos, paths[p].points[j - 1].pos);
            costDiff += sphereDist(paths[p].points[j].pos, paths[p].points[i].pos);

            if(costDiff <= 0.0 || uniform_real_distribution(0.0, 1.0)(rng) < exp(-costDiff / temp())) {
                cost += costDiff;

                reverse(paths[p].points.begin() + i, paths[p].points.begin() + j);

                paths[p].finalize();
            }
        }
        if(type == 2) {
            int ap = uniform_int_distribution<int>(0, len(paths) - 1)(rng);
            int bp = uniform_int_distribution<int>(0, len(paths) - 1)(rng);
            if(ap == bp) continue;
            int as = uniform_int_distribution<int>(1, len(paths[ap].points) - 1)(rng);
            int ae = uniform_int_distribution<int>(1, len(paths[ap].points) - 1)(rng);
            int bs = uniform_int_distribution<int>(1, len(paths[bp].points) - 1)(rng);
            int be = uniform_int_distribution<int>(1, len(paths[bp].points) - 1)(rng);

            if(as > ae) swap(as, ae);
            if(bs > be) swap(bs, be);

            if(ae == as) continue;
            if(be == bs) continue;

            const Point& as1 = paths[ap].points[as - 1];
            const Point& as2 = paths[ap].points[as];
            const Point& ae1 = paths[ap].points[ae - 1];
            const Point& ae2 = paths[ap].points[ae];
            const Point& bs1 = paths[bp].points[bs - 1];
            const Point& bs2 = paths[bp].points[bs];
            const Point& be1 = paths[bp].points[be - 1];
            const Point& be2 = paths[bp].points[be];

            Z aWt1 = as1.leftWt;
            Z aWt2 = ae1.leftWt - aWt1;
            Z aWt3 = ae2.rightWt;
            Z bWt1 = bs1.leftWt;
            Z bWt2 = be1.leftWt - bWt1;
            Z bWt3 = be2.rightWt;

            if(aWt1 + bWt2 + aWt3 > wtLimit) continue;
            if(bWt1 + aWt2 + bWt3 > wtLimit) continue;

            double costDiff = 0.0;
            costDiff -= sphereDist(as1.pos, as2.pos);
            costDiff -= sphereDist(ae1.pos, ae2.pos);
            costDiff -= sphereDist(bs1.pos, bs2.pos);
            costDiff -= sphereDist(be1.pos, be2.pos);
            costDiff += sphereDist(as1.pos, bs2.pos);
            costDiff += sphereDist(ae1.pos, be2.pos);
            costDiff += sphereDist(bs1.pos, as2.pos);
            costDiff += sphereDist(be1.pos, ae2.pos);

            if(costDiff <= 0.0 || uniform_real_distribution(0.0, 1.0)(rng) < exp(-costDiff / temp())) {
                cost += costDiff;

                paths[ap].points.insert(paths[ap].points.begin() + ae, paths[bp].points.begin() + bs, paths[bp].points.begin() + be);
                paths[bp].points.insert(paths[bp].points.begin() + be, paths[ap].points.begin() + as, paths[ap].points.begin() + ae);
                paths[ap].points.erase(paths[ap].points.begin() + as, paths[ap].points.begin() + ae);
                paths[bp].points.erase(paths[bp].points.begin() + bs, paths[bp].points.begin() + be);

                paths[ap].finalize();
                paths[bp].finalize();
            }
        }
        if(type == 3) {
            int ap = uniform_int_distribution<int>(0, len(paths) - 1)(rng);
            int bp = uniform_int_distribution<int>(0, len(paths) - 1)(rng);
            int cp = uniform_int_distribution<int>(0, len(paths) - 1)(rng);
            if(ap == bp || ap == cp || bp == cp) continue;
            int ai = uniform_int_distribution<int>(1, len(paths[ap].points) - 1)(rng);
            int bi = uniform_int_distribution<int>(1, len(paths[bp].points) - 1)(rng);
            int ci = uniform_int_distribution<int>(1, len(paths[cp].points) - 1)(rng);

            if(paths[ap].points[ai - 1].leftWt + paths[bp].points[bi].rightWt > wtLimit) continue;
            if(paths[bp].points[bi - 1].leftWt + paths[cp].points[ci].rightWt > wtLimit) continue;
            if(paths[cp].points[ci - 1].leftWt + paths[ap].points[ai].rightWt > wtLimit) continue;

            double costDiff = 0.0;
            costDiff -= sphereDist(paths[ap].points[ai - 1].pos, paths[ap].points[ai].pos);
            costDiff -= sphereDist(paths[bp].points[bi - 1].pos, paths[bp].points[bi].pos);
            costDiff -= sphereDist(paths[cp].points[ci - 1].pos, paths[cp].points[ci].pos);
            costDiff += sphereDist(paths[ap].points[ai - 1].pos, paths[bp].points[bi].pos);
            costDiff += sphereDist(paths[bp].points[bi - 1].pos, paths[cp].points[ci].pos);
            costDiff += sphereDist(paths[cp].points[ci - 1].pos, paths[ap].points[ai].pos);

            if(costDiff <= 0.0 || uniform_real_distribution(0.0, 1.0)(rng) < exp(-costDiff / temp())) {
                cost += costDiff;

                int ae = len(paths[ap].points);
                int be = len(paths[bp].points);
                int ce = len(paths[cp].points);
                paths[ap].points.insert(paths[ap].points.end(), paths[bp].points.begin() + bi, paths[bp].points.begin() + be);
                paths[bp].points.insert(paths[bp].points.end(), paths[cp].points.begin() + ci, paths[cp].points.begin() + ce);
                paths[cp].points.insert(paths[cp].points.end(), paths[ap].points.begin() + ai, paths[ap].points.begin() + ae);
                paths[ap].points.erase(paths[ap].points.begin() + ai, paths[ap].points.begin() + ae);
                paths[bp].points.erase(paths[bp].points.begin() + bi, paths[bp].points.begin() + be);
                paths[cp].points.erase(paths[cp].points.begin() + ci, paths[cp].points.begin() + ce);

                paths[ap].finalize();
                paths[bp].finalize();
                paths[cp].finalize();
            }
        }
    }

    cout << "cost = " << cost << "\n";

    writeOutput(paths);

    return 0;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x1478, %rsp           # imm = 0x1478
leaq 0xf0(%rsp), %rbx
movq %rbx, %rdi
callq 0x61d4
movq %rbx, %rdi
callq 0x2220
movl %eax, %ebx
leaq 0xf0(%rsp), %rdi
callq 0x21c0
movq 0x58d1(%rip), %r14      # 0x8fd8
leaq 0x39ec(%rip), %rsi      # 0x70fa
movl $0x12, %edx
movq %r14, %rdi
callq 0x21f0
movl %ebx, %ebx
movq %r14, %rdi
movq %rbx, %rsi
callq 0x2110
leaq 0x3a29(%rip), %rsi      # 0x7158
movl $0x1, %r14d
movl $0x1, %edx
movq %rax, %rdi
callq 0x21f0
movq %rbx, 0x5ad7(%rip)      # 0x9220
leaq 0x5ad0(%rip), %rax      # 0x9220
movq %rbx, %rcx
shrq $0x1e, %rcx
xorl %ebx, %ecx
imull $0x6c078965, %ecx, %ebx # imm = 0x6C078965
addl %r14d, %ebx
movq %rbx, (%rax,%r14,8)
incq %r14
cmpq $0x270, %r14            # imm = 0x270
jne 0x3750
movq $0x270, 0x6e23(%rip) # imm = 0x270
leaq 0x5a9c(%rip), %rbp      # 0x9220
movq %rbp, %rdi
callq 0x6ae2
mulsd 0x388c(%rip), %xmm0     # 0x7020
addsd 0x388c(%rip), %xmm0     # 0x7028
callq 0x2320
movsd %xmm0, 0xb0(%rsp)
movq 0x5827(%rip), %rbx      # 0x8fd8
leaq 0x3955(%rip), %rsi      # 0x710d
movl $0x14, %edx
movq %rbx, %rdi
callq 0x21f0
movq %rbx, %rdi
movsd 0xb0(%rsp), %xmm0
callq 0x2290
leaq 0x397b(%rip), %rsi      # 0x7158
movl $0x1, %edx
movq %rax, %rdi
callq 0x21f0
xorl %r15d, %r15d
leaq 0xf0(%rsp), %r12
movq %r15, (%r12)
movl $0x989680, %r14d        # imm = 0x989680
movq %r14, 0x8(%r12)
movq %r12, %rdi
movq %rbp, %rsi
movq %r12, %rdx
callq 0x6d74
movq %rax, %r13
movq %r15, (%r12)
movq %r14, 0x8(%r12)
leaq 0xf0(%rsp), %r12
movq %r12, %rdi
movq %rbp, %rsi
movq %r12, %rdx
callq 0x6d74
movq %rax, %rbp
cmpq %rax, %r13
cmovgq %r13, %rbp
testq %rbp, %rbp
cmovleq %r15, %rbp
leaq 0x38d6(%rip), %rsi      # 0x7122
movl $0x15, %edx
movq %rbx, %rdi
callq 0x21f0
movq %rbx, %rdi
movq %rbp, %rsi
callq 0x2080
movl $0x1, %edx
movq %rax, %rdi
leaq 0x38e5(%rip), %rsi      # 0x7158
callq 0x21f0
movq %r14, (%r12)
movl $0x1312d00, %r13d       # imm = 0x1312D00
movq %r13, 0x8(%r12)
leaq 0xf0(%rsp), %r15
movq %r15, %rdi
leaq 0x5987(%rip), %rbx      # 0x9220
movq %rbx, %rsi
movq %r15, %rdx
callq 0x6d74
movq %rax, %r12
movq %r14, (%r15)
movq %r13, 0x8(%r15)
leaq 0xf0(%rsp), %rdi
movq %rbx, %rsi
movq %rdi, %rdx
callq 0x6d74
movq %rax, %r14
cmpq %rax, %r12
cmovlq %r12, %r14
cmpq %r13, %r14
cmovgeq %r13, %r14
leaq 0x385f(%rip), %rsi      # 0x7138
movl $0x11, %edx
movq 0x56f3(%rip), %rbx      # 0x8fd8
movq %rbx, %rdi
callq 0x21f0
movq %rbx, %rdi
movq %r14, 0xd8(%rsp)
movq %r14, %rsi
callq 0x2080
movq %rax, %r14
leaq 0x3840(%rip), %rsi      # 0x714a
movl $0xc, %edx
movq %rax, %rdi
callq 0x21f0
movl $0x989680, %esi         # imm = 0x989680
movq %r14, %rdi
callq 0x2080
leaq 0x382c(%rip), %rsi      # 0x7157
movl $0x2, %edx
movq %rax, %rdi
callq 0x21f0
leaq 0x381b(%rip), %rsi      # 0x715a
movl $0x8, %edx
movq %rbx, %rdi
callq 0x21f0
movsd 0x36dc(%rip), %xmm0     # 0x7030
movq %rbx, %rdi
callq 0x2290
leaq 0x3800(%rip), %rsi      # 0x7163
movl $0xc, %edx
movq %rax, %rdi
callq 0x21f0
leaq 0x37f9(%rip), %rsi      # 0x7170
movl $0x1b, %edx
movq %rbx, %rdi
callq 0x21f0
leaq 0x8(%rsp), %rbx
movq %rbx, %rdi
movq %rbp, 0xe0(%rsp)
movq %rbp, %rsi
callq 0x26ee
movq (%rbx), %rax
movq 0x8(%rbx), %rcx
xorpd %xmm0, %xmm0
cmpq %rcx, %rax
je 0x39b7
addsd 0x18(%rax), %xmm0
addq $0x20, %rax
jmp 0x39a7
movsd %xmm0, 0x78(%rsp)
movq 0x5614(%rip), %rdi      # 0x8fd8
leaq 0x37c1(%rip), %rsi      # 0x718c
movl $0xa, %edx
callq 0x21f0
movq 0x10(%rsp), %rsi
subq 0x8(%rsp), %rsi
shrq $0x5, %rsi
movq 0x55ee(%rip), %rdi      # 0x8fd8
callq 0x2300
movq %rax, %rbx
leaq 0x379e(%rip), %rsi      # 0x7197
movl $0xf, %edx
movq %rax, %rdi
callq 0x21f0
movq %rbx, %rdi
movsd 0x78(%rsp), %xmm0
callq 0x2290
leaq 0x373d(%rip), %rsi      # 0x7158
movl $0x1, %edx
movq %rax, %rdi
callq 0x21f0
movq 0xd8(%rsp), %rax
subq 0xe0(%rsp), %rax
movq %rax, 0xd8(%rsp)
xorl %r12d, %r12d
leaq 0xf0(%rsp), %rbx
xorps %xmm0, %xmm0
cvtsi2sd %r12, %xmm0
divsd 0x35d5(%rip), %xmm0     # 0x7030
movsd %xmm0, 0x88(%rsp)
movq %r12, %rax
imulq 0xd8(%rsp), %rax
movabsq $0x3aa3ffae990c39, %rcx # imm = 0x3AA3FFAE990C39
imulq %rcx
movq %rdx, %r15
movq %rdx, %rax
shrq $0x3f, %rax
sarq $0x1c, %r15
addq %rax, %r15
addq 0xe0(%rsp), %r15
movl $0x989680, %eax         # imm = 0x989680
cmpq %rax, %r15
cmovgeq %rax, %r15
testl $0xffffff, %r12d        # imm = 0xFFFFFF
jne 0x3b74
movl $0x7, %edx
movq 0x551d(%rip), %rdi      # 0x8fd8
leaq 0x36dd(%rip), %rsi      # 0x719f
callq 0x21f0
movq 0x550a(%rip), %rdi      # 0x8fd8
movsd 0x78(%rsp), %xmm0
callq 0x2290
movq %rax, %r14
movl $0xd, %edx
movq %rax, %rdi
leaq 0x36bc(%rip), %rsi      # 0x71a7
callq 0x21f0
movq %r14, %rdi
movsd 0x88(%rsp), %xmm0
callq 0x2290
movq %rax, %r14
movl $0x10, %edx
movq %rax, %rdi
leaq 0x36a2(%rip), %rsi      # 0x71b5
callq 0x21f0
movsd 0x3518(%rip), %xmm0     # 0x7038
subsd 0x88(%rsp), %xmm0
mulsd %xmm0, %xmm0
mulsd 0xb0(%rsp), %xmm0
movq %r14, %rdi
callq 0x2290
movq %rax, %r14
movl $0xf, %edx
movq %rax, %rdi
leaq 0x3676(%rip), %rsi      # 0x71c6
callq 0x21f0
movq %r14, %rdi
movq %r15, %rsi
callq 0x2080
movl $0x1, %edx
movq %rax, %rdi
leaq 0x35e9(%rip), %rsi      # 0x7158
callq 0x21f0
movq %r15, 0x60(%rsp)
movq %r12, 0x58(%rsp)
movq %r12, %rax
shlq $0x34, %rax
je 0x4194
movabsq $0x300000000, %rax      # imm = 0x300000000
movq %rax, 0xf0(%rsp)
movq %rbx, %rdi
leaq 0x5679(%rip), %r13      # 0x9220
movq %r13, %rsi
movq %rbx, %rdx
callq 0x6ea0
movl %eax, %r14d
cmpl $0x1, %eax
je 0x42ee
testl %r14d, %r14d
jne 0x4875
movq 0x10(%rsp), %rax
subq 0x8(%rsp), %rax
shrq $0x5, %rax
decl %eax
movl $0x0, 0xf0(%rsp)
movl %eax, 0xf4(%rsp)
movq %rbx, %rdi
movq %r13, %rsi
movq %rbx, %rdx
callq 0x6ea0
movq 0x58(%rsp), %r12
movl %eax, %ebp
movq 0x10(%rsp), %rax
subq 0x8(%rsp), %rax
shrq $0x5, %rax
decl %eax
movl $0x0, 0xf0(%rsp)
movl %eax, 0xf4(%rsp)
movq %rbx, %rdi
movq %r13, %rsi
movq %rbx, %rdx
callq 0x6ea0
movl %eax, %r15d
cmpl %eax, %ebp
je 0x544c
movslq %ebp, %r14
movq 0x8(%rsp), %rax
shlq $0x5, %r14
movq 0x8(%rax,%r14), %rcx
subq (%rax,%r14), %rcx
shrq $0x3, %rcx
imull $0xb6db6db7, %ecx, %eax # imm = 0xB6DB6DB7
decl %eax
movl $0x1, 0xf0(%rsp)
movl %eax, 0xf4(%rsp)
movq %rbx, %rdi
movq %r13, %rsi
movq %rbx, %rdx
callq 0x6ea0
movl %eax, %ebp
movslq %r15d, %r15
movq 0x8(%rsp), %rax
shlq $0x5, %r15
movq 0x8(%rax,%r15), %rcx
subq (%rax,%r15), %rcx
shrq $0x3, %rcx
imull $0xb6db6db7, %ecx, %eax # imm = 0xB6DB6DB7
decl %eax
movl $0x1, 0xf0(%rsp)
movl %eax, 0xf4(%rsp)
movq %rbx, %rdi
movq %r13, %rsi
movq %rbx, %rdx
callq 0x6ea0
movq 0x8(%rsp), %rdx
leal -0x1(%rbp), %ecx
movslq %ecx, %rsi
movq (%rdx,%r14), %rcx
imulq $0x38, %rsi, %r13
movslq %eax, %r9
movq (%rdx,%r15), %rdx
imulq $0x38, %r9, %r8
movq 0x30(%rdx,%r8), %rsi
addq 0x28(%rcx,%r13), %rsi
movq 0x60(%rsp), %rdi
cmpq %rdi, %rsi
jg 0x544c
decl %eax
cltq
imulq $0x38, %rax, %r12
movslq %ebp, %r10
imulq $0x38, %r10, %rsi
movq 0x30(%rcx,%rsi), %rax
addq 0x28(%rdx,%r12), %rax
cmpq %rdi, %rax
jg 0x5447
movq %r10, 0x80(%rsp)
movq %r9, 0x50(%rsp)
leaq (%rcx,%r13), %rax
addq %rsi, %rcx
movsd 0x8(%rax), %xmm1
movsd 0x10(%rax), %xmm6
movsd 0x18(%rax), %xmm2
movsd 0x8(%rcx), %xmm3
movsd 0x10(%rcx), %xmm4
movapd %xmm1, %xmm7
mulsd %xmm3, %xmm7
movapd %xmm2, %xmm0
movapd %xmm4, %xmm8
mulsd %xmm2, %xmm8
movapd %xmm6, %xmm5
mulsd %xmm3, %xmm2
mulsd %xmm6, %xmm3
mulsd %xmm4, %xmm6
addsd %xmm6, %xmm7
movsd 0x18(%rcx), %xmm6
mulsd %xmm6, %xmm0
addsd %xmm7, %xmm0
mulsd %xmm6, %xmm5
subsd %xmm8, %xmm5
mulsd %xmm1, %xmm6
subsd %xmm6, %xmm2
mulsd %xmm4, %xmm1
subsd %xmm3, %xmm1
mulsd %xmm2, %xmm2
mulsd %xmm5, %xmm5
addsd %xmm2, %xmm5
mulsd %xmm1, %xmm1
addsd %xmm5, %xmm1
sqrtsd %xmm1, %xmm1
divsd %xmm1, %xmm0
movsd 0x542a(%rip), %xmm1     # 0x91e0
movaps %xmm1, 0x40(%rsp)
movq %r8, %rbp
movq %rsi, 0x30(%rsp)
callq 0x2180
movapd %xmm0, 0x20(%rsp)
movq 0x8(%rsp), %rax
movq (%rax,%r15), %rax
movsd 0x8(%rax,%r12), %xmm1
movsd 0x10(%rax,%r12), %xmm6
movsd 0x18(%rax,%r12), %xmm2
movsd 0x8(%rax,%rbp), %xmm3
movsd 0x10(%rax,%rbp), %xmm4
movapd %xmm1, %xmm7
mulsd %xmm3, %xmm7
movapd %xmm2, %xmm0
movapd %xmm4, %xmm8
mulsd %xmm2, %xmm8
movapd %xmm6, %xmm5
mulsd %xmm3, %xmm2
mulsd %xmm6, %xmm3
mulsd %xmm4, %xmm6
addsd %xmm6, %xmm7
movsd 0x18(%rax,%rbp), %xmm6
mulsd %xmm6, %xmm0
addsd %xmm7, %xmm0
mulsd %xmm6, %xmm5
subsd %xmm8, %xmm5
mulsd %xmm1, %xmm6
subsd %xmm6, %xmm2
mulsd %xmm4, %xmm1
subsd %xmm3, %xmm1
mulsd %xmm2, %xmm2
mulsd %xmm5, %xmm5
addsd %xmm2, %xmm5
mulsd %xmm1, %xmm1
addsd %xmm5, %xmm1
sqrtsd %xmm1, %xmm1
divsd %xmm1, %xmm0
movaps 0x40(%rsp), %xmm1
movhps 0x536f(%rip), %xmm1     # xmm1 = xmm1[0,1],mem[0,1]
movaps %xmm1, 0x40(%rsp)
callq 0x2180
movapd 0x20(%rsp), %xmm2
unpcklpd %xmm0, %xmm2            # xmm2 = xmm2[0],xmm0[0]
movapd 0x40(%rsp), %xmm1
subpd %xmm2, %xmm1
movapd 0x31a9(%rip), %xmm0     # 0x7040
mulpd %xmm0, %xmm1
movapd %xmm1, 0x40(%rsp)
movq 0x8(%rsp), %rax
movq (%rax,%r14), %rcx
movsd 0x8(%rcx,%r13), %xmm1
movsd 0x10(%rcx,%r13), %xmm6
movsd 0x18(%rcx,%r13), %xmm2
movq (%rax,%r15), %rax
movsd 0x8(%rax,%rbp), %xmm3
movsd 0x10(%rax,%rbp), %xmm4
movapd %xmm1, %xmm7
mulsd %xmm3, %xmm7
movapd %xmm2, %xmm0
movapd %xmm4, %xmm8
mulsd %xmm2, %xmm8
movapd %xmm6, %xmm5
mulsd %xmm3, %xmm2
mulsd %xmm6, %xmm3
mulsd %xmm4, %xmm6
addsd %xmm6, %xmm7
movq %rbp, 0x60(%rsp)
movsd 0x18(%rax,%rbp), %xmm6
mulsd %xmm6, %xmm0
addsd %xmm7, %xmm0
mulsd %xmm6, %xmm5
subsd %xmm8, %xmm5
mulsd %xmm1, %xmm6
subsd %xmm6, %xmm2
mulsd %xmm4, %xmm1
subsd %xmm3, %xmm1
mulsd %xmm2, %xmm2
mulsd %xmm5, %xmm5
addsd %xmm2, %xmm5
mulsd %xmm1, %xmm1
addsd %xmm5, %xmm1
sqrtsd %xmm1, %xmm1
divsd %xmm1, %xmm0
movsd 0x5297(%rip), %xmm1     # 0x91e0
movaps %xmm1, 0x20(%rsp)
callq 0x2180
movapd %xmm0, 0x90(%rsp)
movq 0x8(%rsp), %rax
movq (%rax,%r15), %rcx
movsd 0x8(%rcx,%r12), %xmm1
movsd 0x10(%rcx,%r12), %xmm6
movsd 0x18(%rcx,%r12), %xmm2
movq (%rax,%r14), %rax
movq 0x30(%rsp), %rcx
movsd 0x8(%rax,%rcx), %xmm3
movsd 0x10(%rax,%rcx), %xmm4
movapd %xmm1, %xmm7
mulsd %xmm3, %xmm7
movapd %xmm2, %xmm0
movapd %xmm4, %xmm8
mulsd %xmm2, %xmm8
movapd %xmm6, %xmm5
mulsd %xmm3, %xmm2
mulsd %xmm6, %xmm3
mulsd %xmm4, %xmm6
addsd %xmm6, %xmm7
movsd 0x18(%rax,%rcx), %xmm6
mulsd %xmm6, %xmm0
addsd %xmm7, %xmm0
mulsd %xmm6, %xmm5
subsd %xmm8, %xmm5
mulsd %xmm1, %xmm6
subsd %xmm6, %xmm2
mulsd %xmm4, %xmm1
subsd %xmm3, %xmm1
mulsd %xmm2, %xmm2
mulsd %xmm5, %xmm5
addsd %xmm2, %xmm5
mulsd %xmm1, %xmm1
addsd %xmm5, %xmm1
sqrtsd %xmm1, %xmm1
divsd %xmm1, %xmm0
movaps 0x20(%rsp), %xmm1
movhps 0x51d8(%rip), %xmm1     # xmm1 = xmm1[0,1],mem[0,1]
movaps %xmm1, 0x20(%rsp)
callq 0x2180
movapd 0x90(%rsp), %xmm1
unpcklpd %xmm0, %xmm1            # xmm1 = xmm1[0],xmm0[0]
movapd 0x20(%rsp), %xmm2
subpd %xmm1, %xmm2
mulpd 0x300f(%rip), %xmm2     # 0x7040
xorpd %xmm0, %xmm0
movapd 0x40(%rsp), %xmm1
subsd %xmm1, %xmm0
unpckhpd %xmm1, %xmm1            # xmm1 = xmm1[1,1]
subsd %xmm1, %xmm0
addsd %xmm2, %xmm0
unpckhpd %xmm2, %xmm2            # xmm2 = xmm2[1,1]
addsd %xmm0, %xmm2
xorpd %xmm0, %xmm0
movapd %xmm2, 0x20(%rsp)
ucomisd %xmm2, %xmm0
jae 0x40b6
leaq 0x51b6(%rip), %rdi      # 0x9220
callq 0x6ae2
movsd %xmm0, 0x40(%rsp)
movapd 0x20(%rsp), %xmm0
xorpd 0x2fdd(%rip), %xmm0     # 0x7060
movsd 0x2fad(%rip), %xmm1     # 0x7038
subsd 0x88(%rsp), %xmm1
mulsd %xmm1, %xmm1
mulsd 0xb0(%rsp), %xmm1
divsd %xmm1, %xmm0
callq 0x2320
ucomisd 0x40(%rsp), %xmm0
jbe 0x5447
movq 0x8(%rsp), %rax
leaq (%rax,%r14), %rdi
movq 0x8(%rax,%r14), %rsi
movq %rsi, %r13
subq (%rax,%r14), %r13
movq (%rax,%r15), %rcx
movq 0x8(%rax,%r15), %rax
subq %rcx, %rax
shrq $0x3, %rax
imull $0xb6db6db7, %eax, %eax # imm = 0xB6DB6DB7
movq 0x60(%rsp), %rdx
addq %rcx, %rdx
movslq %eax, %r12
imulq $0x38, %r12, %rbx
addq %rbx, %rcx
callq 0x64d2
shrq $0x3, %r13
imull $0xb6db6db7, %r13d, %eax # imm = 0xB6DB6DB7
movq 0x8(%rsp), %rcx
leaq (%rcx,%r15), %rdi
movq 0x8(%rcx,%r15), %rsi
movq (%rcx,%r14), %rcx
movq 0x30(%rsp), %rdx
addq %rcx, %rdx
movslq %eax, %r13
imulq $0x38, %r13, %rbp
addq %rbp, %rcx
callq 0x64d2
cmpq 0x80(%rsp), %r13
movq 0x60(%rsp), %rdi
movq 0x50(%rsp), %rsi
movq 0x30(%rsp), %r8
je 0x5c24
movq 0x8(%rsp), %r13
movq (%r13,%r14), %rax
addq %r14, %r13
addq %rax, %r8
addq %rax, %rbp
movq 0x8(%r13), %rdx
subq %rbp, %rdx
je 0x5c0f
movq %r8, %rdi
movq %rbp, %rsi
movq %r8, 0x30(%rsp)
callq 0x22a0
movq 0x30(%rsp), %r8
movq 0x50(%rsp), %rsi
movq 0x60(%rsp), %rdi
movq 0x8(%r13), %rax
movq %rax, %rcx
jmp 0x5c15
movq 0x8(%rsp), %r14
movq 0x10(%rsp), %r12
movq %r12, %rax
subq %r14, %rax
shrq $0x5, %rax
testl %eax, %eax
jle 0x5467
xorl %ecx, %ecx
xorl %ebp, %ebp
movq %rcx, %r13
shlq $0x5, %r13
movl %ebp, 0x40(%rsp)
movq %rcx, 0x30(%rsp)
movq (%r14,%r13), %r15
movq 0x8(%r14,%r13), %rbx
movq %rbx, %rax
subq %r15, %rax
shrq $0x3, %rax
imull $0xb6db6db7, %eax, %eax # imm = 0xB6DB6DB7
cmpl $0x2, %eax
jne 0x42bd
cmpl $0xc8, %ebp
jl 0x42bb
addq %r13, %r14
leaq -0x20(%r12), %rsi
movq 0x10(%r14), %rbp
xorpd %xmm0, %xmm0
movupd %xmm0, (%r14)
movq $0x0, 0x10(%r14)
movsd 0x18(%r14), %xmm0
movsd %xmm0, 0x20(%rsp)
movq %r14, %rdi
callq 0x6e68
movsd -0x8(%r12), %xmm0
movsd %xmm0, 0x18(%r14)
movq -0x20(%r12), %rdi
movq -0x10(%r12), %rsi
movq %r15, -0x20(%r12)
movq %rbx, -0x18(%r12)
movq %rbp, -0x10(%r12)
testq %rdi, %rdi
je 0x4256
subq %rdi, %rsi
callq 0x21e0
movsd 0x20(%rsp), %xmm0
movsd %xmm0, -0x8(%r12)
movq 0x10(%rsp), %rax
leaq -0x20(%rax), %r12
movq %r12, 0x10(%rsp)
movq -0x20(%rax), %rdi
testq %rdi, %rdi
leaq 0xf0(%rsp), %rbx
je 0x4293
movq -0x10(%rax), %rsi
subq %rdi, %rsi
callq 0x21e0
movq 0x10(%rsp), %r12
movq 0x8(%rsp), %r14
movq %r12, %rax
subq %r14, %rax
shrq $0x5, %rax
cltq
movq 0x30(%rsp), %rcx
cmpq %rax, %rcx
movl 0x40(%rsp), %ebp
jl 0x41c4
jmp 0x3b8b
incl %ebp
leaq 0xf0(%rsp), %rbx
incq %rcx
movq %r12, %rax
subq %r14, %rax
shrq $0x5, %rax
cltq
cmpq %rax, %rcx
jl 0x41b4
cmpl $0xc7, %ebp
jg 0x3b8b
jmp 0x5469
movq 0x10(%rsp), %rax
subq 0x8(%rsp), %rax
shrq $0x5, %rax
decl %eax
movl $0x0, 0xf0(%rsp)
movl %eax, 0xf4(%rsp)
movq %rbx, %rdi
movq %r13, %rsi
movq %rbx, %rdx
callq 0x6ea0
movq %r13, %r15
movslq %eax, %r13
movq 0x8(%rsp), %rax
shlq $0x5, %r13
movq 0x8(%rax,%r13), %rcx
subq (%rax,%r13), %rcx
shrq $0x3, %rcx
imull $0xb6db6db7, %ecx, %eax # imm = 0xB6DB6DB7
decl %eax
movl $0x1, 0xf0(%rsp)
movl %eax, 0xf4(%rsp)
movq %rbx, %rdi
movq %r15, %rsi
movq %rbx, %rdx
callq 0x6ea0
movl %eax, %ebp
movq 0x8(%rsp), %rax
movq 0x8(%rax,%r13), %rcx
subq (%rax,%r13), %rcx
shrq $0x3, %rcx
imull $0xb6db6db7, %ecx, %eax # imm = 0xB6DB6DB7
decl %eax
movl $0x1, 0xf0(%rsp)
movl %eax, 0xf4(%rsp)
movq %rbx, %rdi
movq %r15, %rsi
movq %rbx, %rdx
callq 0x6ea0
cmpl %eax, %ebp
movl %eax, %r15d
cmovgl %ebp, %r15d
movl %eax, %esi
cmovll %ebp, %esi
movslq %eax, %rcx
movslq %ebp, %rdx
subq %rcx, %rdx
movq %rdx, %rcx
negq %rcx
cmovsq %rdx, %rcx
cmpl $0x1, %ecx
jle 0x5447
movl %eax, 0x50(%rsp)
movl %ebp, 0x90(%rsp)
movq 0x8(%rsp), %rcx
leal -0x1(%rsi), %edx
movslq %edx, %rdx
movq (%rcx,%r13), %rcx
imulq $0x38, %rdx, %rax
movq %rax, 0x20(%rsp)
movsd 0x8(%rcx,%rax), %xmm1
movsd 0x10(%rcx,%rax), %xmm3
movsd 0x18(%rcx,%rax), %xmm2
movslq %esi, %rax
imulq $0x38, %rax, %r12
movsd 0x8(%rcx,%r12), %xmm4
movsd 0x10(%rcx,%r12), %xmm5
movsd 0x18(%rcx,%r12), %xmm6
movapd %xmm3, %xmm0
mulsd %xmm5, %xmm0
movapd %xmm1, %xmm7
mulsd %xmm4, %xmm7
addsd %xmm0, %xmm7
movapd %xmm2, %xmm0
mulsd %xmm6, %xmm0
addsd %xmm7, %xmm0
movapd %xmm3, %xmm7
mulsd %xmm6, %xmm7
mulsd %xmm1, %xmm6
mulsd %xmm5, %xmm1
mulsd %xmm2, %xmm5
subsd %xmm5, %xmm7
mulsd %xmm4, %xmm2
subsd %xmm6, %xmm2
mulsd %xmm4, %xmm3
subsd %xmm3, %xmm1
mulsd %xmm2, %xmm2
mulsd %xmm7, %xmm7
addsd %xmm2, %xmm7
mulsd %xmm1, %xmm1
addsd %xmm7, %xmm1
sqrtsd %xmm1, %xmm1
divsd %xmm1, %xmm0
movsd 0x4d5b(%rip), %xmm1     # 0x91e0
movaps %xmm1, 0x40(%rsp)
callq 0x2180
movapd %xmm0, 0x30(%rsp)
movq 0x8(%rsp), %rax
leal -0x1(%r15), %ecx
movslq %ecx, %rcx
movq (%rax,%r13), %rax
imulq $0x38, %rcx, %rbp
movsd 0x8(%rax,%rbp), %xmm1
movsd 0x10(%rax,%rbp), %xmm3
movsd 0x18(%rax,%rbp), %xmm2
movslq %r15d, %rcx
movq %r12, %r15
imulq $0x38, %rcx, %r12
movsd 0x8(%rax,%r12), %xmm4
movsd 0x10(%rax,%r12), %xmm5
movsd 0x18(%rax,%r12), %xmm6
movapd %xmm3, %xmm0
mulsd %xmm5, %xmm0
movapd %xmm1, %xmm7
mulsd %xmm4, %xmm7
addsd %xmm0, %xmm7
movapd %xmm2, %xmm0
mulsd %xmm6, %xmm0
addsd %xmm7, %xmm0
movapd %xmm3, %xmm7
mulsd %xmm6, %xmm7
mulsd %xmm1, %xmm6
mulsd %xmm5, %xmm1
mulsd %xmm2, %xmm5
subsd %xmm5, %xmm7
mulsd %xmm4, %xmm2
subsd %xmm6, %xmm2
mulsd %xmm4, %xmm3
subsd %xmm3, %xmm1
mulsd %xmm2, %xmm2
mulsd %xmm7, %xmm7
addsd %xmm2, %xmm7
mulsd %xmm1, %xmm1
addsd %xmm7, %xmm1
sqrtsd %xmm1, %xmm1
divsd %xmm1, %xmm0
movaps 0x40(%rsp), %xmm1
movhps 0x4c96(%rip), %xmm1     # xmm1 = xmm1[0,1],mem[0,1]
movaps %xmm1, 0x40(%rsp)
callq 0x2180
movapd 0x30(%rsp), %xmm2
unpcklpd %xmm0, %xmm2            # xmm2 = xmm2[0],xmm0[0]
movapd 0x40(%rsp), %xmm1
subpd %xmm2, %xmm1
movapd 0x2ad0(%rip), %xmm0     # 0x7040
mulpd %xmm0, %xmm1
movapd %xmm1, 0x40(%rsp)
movq 0x8(%rsp), %rax
movq (%rax,%r13), %rax
movq 0x20(%rsp), %rcx
movsd 0x8(%rax,%rcx), %xmm1
movsd 0x10(%rax,%rcx), %xmm6
movsd 0x18(%rax,%rcx), %xmm2
movsd 0x8(%rax,%rbp), %xmm3
movsd 0x10(%rax,%rbp), %xmm4
movapd %xmm1, %xmm7
mulsd %xmm3, %xmm7
movapd %xmm2, %xmm0
movapd %xmm4, %xmm8
mulsd %xmm2, %xmm8
movapd %xmm6, %xmm5
mulsd %xmm3, %xmm2
mulsd %xmm6, %xmm3
mulsd %xmm4, %xmm6
addsd %xmm6, %xmm7
movsd 0x18(%rax,%rbp), %xmm6
movq %r12, %rbp
mulsd %xmm6, %xmm0
addsd %xmm7, %xmm0
mulsd %xmm6, %xmm5
subsd %xmm8, %xmm5
mulsd %xmm1, %xmm6
subsd %xmm6, %xmm2
mulsd %xmm4, %xmm1
subsd %xmm3, %xmm1
mulsd %xmm2, %xmm2
mulsd %xmm5, %xmm5
addsd %xmm2, %xmm5
mulsd %xmm1, %xmm1
addsd %xmm5, %xmm1
sqrtsd %xmm1, %xmm1
divsd %xmm1, %xmm0
movsd 0x4bc2(%rip), %xmm1     # 0x91e0
movaps %xmm1, 0x20(%rsp)
callq 0x2180
movapd %xmm0, 0x30(%rsp)
movq 0x8(%rsp), %rax
movq (%rax,%r13), %rax
movsd 0x8(%rax,%r12), %xmm1
movsd 0x10(%rax,%r12), %xmm6
movsd 0x18(%rax,%r12), %xmm2
movsd 0x8(%rax,%r15), %xmm3
movsd 0x10(%rax,%r15), %xmm4
movapd %xmm1, %xmm7
mulsd %xmm3, %xmm7
movapd %xmm2, %xmm0
movapd %xmm4, %xmm8
mulsd %xmm2, %xmm8
movapd %xmm6, %xmm5
mulsd %xmm3, %xmm2
mulsd %xmm6, %xmm3
mulsd %xmm4, %xmm6
addsd %xmm6, %xmm7
movsd 0x18(%rax,%r15), %xmm6
mulsd %xmm6, %xmm0
addsd %xmm7, %xmm0
mulsd %xmm6, %xmm5
subsd %xmm8, %xmm5
mulsd %xmm1, %xmm6
subsd %xmm6, %xmm2
mulsd %xmm4, %xmm1
subsd %xmm3, %xmm1
mulsd %xmm2, %xmm2
mulsd %xmm5, %xmm5
addsd %xmm2, %xmm5
mulsd %xmm1, %xmm1
addsd %xmm5, %xmm1
sqrtsd %xmm1, %xmm1
divsd %xmm1, %xmm0
movaps 0x20(%rsp), %xmm1
movhps 0x4b0c(%rip), %xmm1     # xmm1 = xmm1[0,1],mem[0,1]
movaps %xmm1, 0x20(%rsp)
callq 0x2180
movapd 0x30(%rsp), %xmm1
unpcklpd %xmm0, %xmm1            # xmm1 = xmm1[0],xmm0[0]
movapd 0x20(%rsp), %xmm2
subpd %xmm1, %xmm2
mulpd 0x2946(%rip), %xmm2     # 0x7040
xorpd %xmm0, %xmm0
movapd 0x40(%rsp), %xmm1
subsd %xmm1, %xmm0
unpckhpd %xmm1, %xmm1            # xmm1 = xmm1[1,1]
subsd %xmm1, %xmm0
addsd %xmm2, %xmm0
unpckhpd %xmm2, %xmm2            # xmm2 = xmm2[1,1]
addsd %xmm0, %xmm2
xorpd %xmm0, %xmm0
movapd %xmm2, 0x20(%rsp)
ucomisd %xmm2, %xmm0
movq 0x58(%rsp), %r12
jae 0x4784
leaq 0x4ae8(%rip), %rdi      # 0x9220
callq 0x6ae2
movsd %xmm0, 0x40(%rsp)
movapd 0x20(%rsp), %xmm0
xorpd 0x290f(%rip), %xmm0     # 0x7060
movsd 0x28df(%rip), %xmm1     # 0x7038
subsd 0x88(%rsp), %xmm1
mulsd %xmm1, %xmm1
mulsd 0xb0(%rsp), %xmm1
divsd %xmm1, %xmm0
callq 0x2320
ucomisd 0x40(%rsp), %xmm0
jbe 0x544c
movq 0x8(%rsp), %rdi
movl 0x50(%rsp), %eax
cmpl %eax, 0x90(%rsp)
je 0x4852
movq (%rdi,%r13), %rcx
leaq (%rcx,%r15), %rdx
leaq (%rcx,%rbp), %rax
addq $-0x38, %rax
cmpq %rdx, %rax
jbe 0x4852
addq %r15, %rcx
addq $0x38, %rcx
movq -0x8(%rcx), %rdx
movq %rdx, 0x120(%rsp)
movups -0x38(%rcx), %xmm0
movups -0x28(%rcx), %xmm1
movups -0x18(%rcx), %xmm2
movaps %xmm2, 0x110(%rsp)
movaps %xmm1, 0x100(%rsp)
movaps %xmm0, 0xf0(%rsp)
movq 0x30(%rax), %rdx
movq %rdx, -0x8(%rcx)
movups (%rax), %xmm0
movups 0x10(%rax), %xmm1
movups 0x20(%rax), %xmm2
movups %xmm2, -0x18(%rcx)
movups %xmm1, -0x28(%rcx)
movups %xmm0, -0x38(%rcx)
movq 0x120(%rsp), %rdx
movq %rdx, 0x30(%rax)
movapd 0xf0(%rsp), %xmm0
movapd 0x100(%rsp), %xmm1
movapd 0x110(%rsp), %xmm2
movupd %xmm2, 0x20(%rax)
movupd %xmm1, 0x10(%rax)
movupd %xmm0, (%rax)
addq $-0x38, %rax
leaq 0x38(%rcx), %rdx
cmpq %rax, %rcx
movq %rdx, %rcx
jb 0x47ba
addq %r13, %rdi
callq 0x5f5a
movsd 0x78(%rsp), %xmm0
addsd 0x20(%rsp), %xmm0
movsd %xmm0, 0x78(%rsp)
leaq 0x49ad(%rip), %r13      # 0x9220
jmp 0x487a
movq 0x58(%rsp), %r12
cmpl $0x3, %r14d
je 0x522e
cmpl $0x2, %r14d
jne 0x544c
movq 0x10(%rsp), %rax
subq 0x8(%rsp), %rax
shrq $0x5, %rax
decl %eax
movl $0x0, 0xf0(%rsp)
movl %eax, 0xf4(%rsp)
movq %rbx, %rdi
movq %r13, %rsi
movq %rbx, %rdx
callq 0x6ea0
movl %eax, %ebp
movq 0x10(%rsp), %rax
subq 0x8(%rsp), %rax
shrq $0x5, %rax
decl %eax
movl $0x0, 0xf0(%rsp)
movl %eax, 0xf4(%rsp)
movq %rbx, %rdi
movq %r13, %rsi
movq %rbx, %rdx
callq 0x6ea0
movl %eax, %r15d
cmpl %eax, %ebp
je 0x544c
movslq %ebp, %r14
movq 0x8(%rsp), %rax
shlq $0x5, %r14
movq 0x8(%rax,%r14), %rcx
subq (%rax,%r14), %rcx
shrq $0x3, %rcx
imull $0xb6db6db7, %ecx, %eax # imm = 0xB6DB6DB7
decl %eax
movl $0x1, 0xf0(%rsp)
movl %eax, 0xf4(%rsp)
movq %rbx, %rdi
movq %r13, %rsi
movq %rbx, %rdx
callq 0x6ea0
movl %eax, 0x20(%rsp)
movq 0x8(%rsp), %rax
movq 0x8(%rax,%r14), %rcx
movq %r14, 0x40(%rsp)
subq (%rax,%r14), %rcx
shrq $0x3, %rcx
imull $0xb6db6db7, %ecx, %eax # imm = 0xB6DB6DB7
decl %eax
movl $0x1, 0xf0(%rsp)
movl %eax, 0xf4(%rsp)
movq %rbx, %rdi
movq %r13, %rsi
movq %rbx, %rdx
callq 0x6ea0
movq %r13, %rbp
movl %eax, %r13d
movslq %r15d, %r15
movq 0x8(%rsp), %rax
shlq $0x5, %r15
movq 0x8(%rax,%r15), %rcx
subq (%rax,%r15), %rcx
shrq $0x3, %rcx
imull $0xb6db6db7, %ecx, %eax # imm = 0xB6DB6DB7
decl %eax
movl $0x1, 0xf0(%rsp)
movl %eax, 0xf4(%rsp)
movq %rbx, %rdi
movq %rbp, %rsi
movq %rbx, %rdx
callq 0x6ea0
movl %eax, %r14d
movq 0x8(%rsp), %rax
movq 0x8(%rax,%r15), %rcx
subq (%rax,%r15), %rcx
shrq $0x3, %rcx
imull $0xb6db6db7, %ecx, %eax # imm = 0xB6DB6DB7
decl %eax
movl $0x1, 0xf0(%rsp)
movl %eax, 0xf4(%rsp)
movq %rbx, %rdi
movq %rbp, %rsi
movq %rbx, %rdx
callq 0x6ea0
movl 0x20(%rsp), %esi
cmpl %r13d, %esi
sete %cl
cmpl %eax, %r14d
sete %dl
orb %cl, %dl
jne 0x544c
cmpl %eax, %r14d
movl %eax, %ecx
cmovll %r14d, %ecx
cmovgl %r14d, %eax
cmpl %r13d, %esi
movl %r13d, %edx
cmovll %esi, %edx
cmovgl %esi, %r13d
movq 0x8(%rsp), %rsi
movq 0x40(%rsp), %rdi
movq (%rsi,%rdi), %rbp
movslq %edx, %rdx
imulq $0x38, %rdx, %r9
movslq %r13d, %rdx
imulq $0x38, %rdx, %r10
movq (%rsi,%r15), %r14
movslq %ecx, %rcx
imulq $0x38, %rcx, %rdi
cltq
imulq $0x38, %rax, %r8
movq -0x10(%rbp,%r9), %rcx
movq -0x10(%r14,%rdi), %rax
movq 0x30(%rbp,%r10), %rdx
addq %rcx, %rdx
subq %rax, %rdx
addq -0x10(%r14,%r8), %rdx
movq 0x60(%rsp), %rsi
cmpq %rsi, %rdx
jg 0x544c
movq %rdi, 0x50(%rsp)
movq %r8, 0x80(%rsp)
leaq (%r14,%r8), %r13
subq %rcx, %rax
addq 0x30(%r13), %rax
movq %r10, 0xb8(%rsp)
leaq (%r10,%rbp), %rcx
addq -0x10(%rcx), %rax
cmpq %rsi, %rax
jg 0x544c
leaq (%r9,%rbp), %rax
movq %rax, 0x90(%rsp)
movq 0x50(%rsp), %rbx
leaq (%r14,%rbx), %rdx
movq %rdx, 0x20(%rsp)
movsd -0x30(%rax), %xmm1
movsd -0x28(%rax), %xmm3
movsd -0x20(%rax), %xmm2
movsd 0x8(%rbp,%r9), %xmm4
movsd 0x10(%rbp,%r9), %xmm5
movsd 0x18(%rbp,%r9), %xmm6
movapd %xmm3, %xmm0
mulsd %xmm5, %xmm0
movapd %xmm1, %xmm7
mulsd %xmm4, %xmm7
addsd %xmm0, %xmm7
movapd %xmm2, %xmm0
mulsd %xmm6, %xmm0
addsd %xmm7, %xmm0
movapd %xmm3, %xmm7
mulsd %xmm6, %xmm7
mulsd %xmm1, %xmm6
mulsd %xmm5, %xmm1
mulsd %xmm2, %xmm5
subsd %xmm5, %xmm7
mulsd %xmm4, %xmm2
subsd %xmm6, %xmm2
mulsd %xmm4, %xmm3
subsd %xmm3, %xmm1
mulsd %xmm2, %xmm2
mulsd %xmm7, %xmm7
addsd %xmm2, %xmm7
mulsd %xmm1, %xmm1
addsd %xmm7, %xmm1
sqrtsd %xmm1, %xmm1
divsd %xmm1, %xmm0
movsd 0x467b(%rip), %xmm1     # 0x91e0
movaps %xmm1, 0x30(%rsp)
movq %r9, 0xa8(%rsp)
movq %rcx, %r12
callq 0x2180
movapd %xmm0, 0x60(%rsp)
movsd -0x30(%r12), %xmm1
movsd -0x28(%r12), %xmm6
movsd -0x20(%r12), %xmm2
movsd 0x8(%r12), %xmm3
movsd 0x10(%r12), %xmm4
movq %r12, 0xd0(%rsp)
movapd %xmm1, %xmm7
mulsd %xmm3, %xmm7
movapd %xmm2, %xmm0
movapd %xmm4, %xmm8
mulsd %xmm2, %xmm8
movapd %xmm6, %xmm5
mulsd %xmm3, %xmm2
mulsd %xmm6, %xmm3
mulsd %xmm4, %xmm6
addsd %xmm6, %xmm7
movsd 0x18(%r12), %xmm6
mulsd %xmm6, %xmm0
addsd %xmm7, %xmm0
mulsd %xmm6, %xmm5
subsd %xmm8, %xmm5
mulsd %xmm1, %xmm6
subsd %xmm6, %xmm2
mulsd %xmm4, %xmm1
subsd %xmm3, %xmm1
mulsd %xmm2, %xmm2
mulsd %xmm5, %xmm5
addsd %xmm2, %xmm5
mulsd %xmm1, %xmm1
addsd %xmm5, %xmm1
sqrtsd %xmm1, %xmm1
divsd %xmm1, %xmm0
movaps 0x30(%rsp), %xmm1
movhps 0x45bb(%rip), %xmm1     # xmm1 = xmm1[0,1],mem[0,1]
movaps %xmm1, 0x30(%rsp)
callq 0x2180
movapd 0x60(%rsp), %xmm2
unpcklpd %xmm0, %xmm2            # xmm2 = xmm2[0],xmm0[0]
movapd 0x30(%rsp), %xmm1
subpd %xmm2, %xmm1
movapd 0x23f5(%rip), %xmm0     # 0x7040
mulpd %xmm0, %xmm1
movapd %xmm1, 0x30(%rsp)
movq 0x20(%rsp), %rax
movsd -0x30(%rax), %xmm1
movsd -0x28(%rax), %xmm6
movsd -0x20(%rax), %xmm2
movsd 0x8(%r14,%rbx), %xmm3
movsd 0x10(%r14,%rbx), %xmm4
movapd %xmm1, %xmm7
mulsd %xmm3, %xmm7
movapd %xmm2, %xmm0
movapd %xmm4, %xmm8
mulsd %xmm2, %xmm8
movapd %xmm6, %xmm5
mulsd %xmm3, %xmm2
mulsd %xmm6, %xmm3
mulsd %xmm4, %xmm6
addsd %xmm6, %xmm7
movsd 0x18(%r14,%rbx), %xmm6
mulsd %xmm6, %xmm0
addsd %xmm7, %xmm0
mulsd %xmm6, %xmm5
subsd %xmm8, %xmm5
mulsd %xmm1, %xmm6
subsd %xmm6, %xmm2
mulsd %xmm4, %xmm1
subsd %xmm3, %xmm1
mulsd %xmm2, %xmm2
mulsd %xmm5, %xmm5
addsd %xmm2, %xmm5
mulsd %xmm1, %xmm1
addsd %xmm5, %xmm1
sqrtsd %xmm1, %xmm1
divsd %xmm1, %xmm0
movsd 0x44f3(%rip), %xmm1     # 0x91e0
movaps %xmm1, 0x60(%rsp)
callq 0x2180
movapd %xmm0, 0xc0(%rsp)
movsd -0x30(%r13), %xmm1
movsd -0x28(%r13), %xmm6
movsd -0x20(%r13), %xmm2
movsd 0x8(%r13), %xmm3
movsd 0x10(%r13), %xmm4
movapd %xmm1, %xmm7
mulsd %xmm3, %xmm7
movapd %xmm2, %xmm0
movapd %xmm4, %xmm8
mulsd %xmm2, %xmm8
movapd %xmm6, %xmm5
mulsd %xmm3, %xmm2
mulsd %xmm6, %xmm3
mulsd %xmm4, %xmm6
addsd %xmm6, %xmm7
movsd 0x18(%r13), %xmm6
mulsd %xmm6, %xmm0
addsd %xmm7, %xmm0
mulsd %xmm6, %xmm5
subsd %xmm8, %xmm5
mulsd %xmm1, %xmm6
subsd %xmm6, %xmm2
mulsd %xmm4, %xmm1
subsd %xmm3, %xmm1
mulsd %xmm2, %xmm2
mulsd %xmm5, %xmm5
addsd %xmm2, %xmm5
mulsd %xmm1, %xmm1
addsd %xmm5, %xmm1
sqrtsd %xmm1, %xmm1
divsd %xmm1, %xmm0
movaps 0x60(%rsp), %xmm1
movhps 0x4449(%rip), %xmm1     # xmm1 = xmm1[0,1],mem[0,1]
movaps %xmm1, 0x60(%rsp)
callq 0x2180
movapd 0xc0(%rsp), %xmm1
unpcklpd %xmm0, %xmm1            # xmm1 = xmm1[0],xmm0[0]
movapd 0x60(%rsp), %xmm0
subpd %xmm1, %xmm0
mulpd 0x2280(%rip), %xmm0     # 0x7040
movapd %xmm0, 0x60(%rsp)
movq 0x90(%rsp), %rax
movsd -0x30(%rax), %xmm1
movsd -0x28(%rax), %xmm6
movsd -0x20(%rax), %xmm2
movq 0x58(%rsp), %r12
movsd 0x8(%r14,%rbx), %xmm3
movsd 0x10(%r14,%rbx), %xmm4
movapd %xmm1, %xmm7
mulsd %xmm3, %xmm7
movapd %xmm2, %xmm0
movapd %xmm4, %xmm8
mulsd %xmm2, %xmm8
movapd %xmm6, %xmm5
mulsd %xmm3, %xmm2
mulsd %xmm6, %xmm3
mulsd %xmm4, %xmm6
addsd %xmm6, %xmm7
movsd 0x18(%r14,%rbx), %xmm6
mulsd %xmm6, %xmm0
addsd %xmm7, %xmm0
mulsd %xmm6, %xmm5
subsd %xmm8, %xmm5
mulsd %xmm1, %xmm6
subsd %xmm6, %xmm2
mulsd %xmm4, %xmm1
subsd %xmm3, %xmm1
mulsd %xmm2, %xmm2
mulsd %xmm5, %xmm5
addsd %xmm2, %xmm5
mulsd %xmm1, %xmm1
addsd %xmm5, %xmm1
sqrtsd %xmm1, %xmm1
divsd %xmm1, %xmm0
movsd 0x437a(%rip), %xmm1     # 0x91e0
movaps %xmm1, 0x90(%rsp)
callq 0x2180
movapd %xmm0, 0xc0(%rsp)
movq 0xd0(%rsp), %r14
movsd -0x30(%r14), %xmm1
movsd -0x28(%r14), %xmm6
movsd -0x20(%r14), %xmm2
movsd 0x8(%r13), %xmm3
movsd 0x10(%r13), %xmm4
movapd %xmm1, %xmm7
mulsd %xmm3, %xmm7
movapd %xmm2, %xmm0
movapd %xmm4, %xmm8
mulsd %xmm2, %xmm8
movapd %xmm6, %xmm5
mulsd %xmm3, %xmm2
mulsd %xmm6, %xmm3
mulsd %xmm4, %xmm6
addsd %xmm6, %xmm7
movsd 0x18(%r13), %xmm6
mulsd %xmm6, %xmm0
addsd %xmm7, %xmm0
mulsd %xmm6, %xmm5
subsd %xmm8, %xmm5
mulsd %xmm1, %xmm6
subsd %xmm6, %xmm2
mulsd %xmm4, %xmm1
subsd %xmm3, %xmm1
mulsd %xmm2, %xmm2
mulsd %xmm5, %xmm5
addsd %xmm2, %xmm5
mulsd %xmm1, %xmm1
addsd %xmm5, %xmm1
sqrtsd %xmm1, %xmm1
divsd %xmm1, %xmm0
movaps 0x90(%rsp), %xmm1
movhps 0x42c2(%rip), %xmm1     # xmm1 = xmm1[0,1],mem[0,1]
movaps %xmm1, 0x90(%rsp)
callq 0x2180
movapd 0xc0(%rsp), %xmm1
unpcklpd %xmm0, %xmm1            # xmm1 = xmm1[0],xmm0[0]
movapd 0x90(%rsp), %xmm0
subpd %xmm1, %xmm0
mulpd 0x20f3(%rip), %xmm0     # 0x7040
movapd %xmm0, 0x90(%rsp)
movq 0x20(%rsp), %rax
movsd -0x30(%rax), %xmm1
movsd -0x28(%rax), %xmm6
movsd -0x20(%rax), %xmm2
leaq 0xf0(%rsp), %rbx
movq 0xa8(%rsp), %rax
movsd 0x8(%rbp,%rax), %xmm3
movsd 0x10(%rbp,%rax), %xmm4
movapd %xmm1, %xmm7
mulsd %xmm3, %xmm7
movapd %xmm2, %xmm0
movapd %xmm4, %xmm8
mulsd %xmm2, %xmm8
movapd %xmm6, %xmm5
mulsd %xmm3, %xmm2
mulsd %xmm6, %xmm3
mulsd %xmm4, %xmm6
addsd %xmm6, %xmm7
movsd 0x18(%rbp,%rax), %xmm6
mulsd %xmm6, %xmm0
addsd %xmm7, %xmm0
mulsd %xmm6, %xmm5
subsd %xmm8, %xmm5
mulsd %xmm1, %xmm6
subsd %xmm6, %xmm2
mulsd %xmm4, %xmm1
subsd %xmm3, %xmm1
mulsd %xmm2, %xmm2
mulsd %xmm5, %xmm5
addsd %xmm2, %xmm5
mulsd %xmm1, %xmm1
addsd %xmm5, %xmm1
sqrtsd %xmm1, %xmm1
divsd %xmm1, %xmm0
movsd 0x41e5(%rip), %xmm1     # 0x91e0
movaps %xmm1, 0x20(%rsp)
callq 0x2180
movapd %xmm0, 0xc0(%rsp)
movsd -0x30(%r13), %xmm1
movsd -0x28(%r13), %xmm6
movsd -0x20(%r13), %xmm2
movsd 0x8(%r14), %xmm3
movsd 0x10(%r14), %xmm4
movapd %xmm1, %xmm7
mulsd %xmm3, %xmm7
movapd %xmm2, %xmm0
movapd %xmm4, %xmm8
mulsd %xmm2, %xmm8
movapd %xmm6, %xmm5
mulsd %xmm3, %xmm2
mulsd %xmm6, %xmm3
mulsd %xmm4, %xmm6
addsd %xmm6, %xmm7
movsd 0x18(%r14), %xmm6
mulsd %xmm6, %xmm0
addsd %xmm7, %xmm0
mulsd %xmm6, %xmm5
subsd %xmm8, %xmm5
mulsd %xmm1, %xmm6
subsd %xmm6, %xmm2
mulsd %xmm4, %xmm1
subsd %xmm3, %xmm1
mulsd %xmm2, %xmm2
mulsd %xmm5, %xmm5
addsd %xmm2, %xmm5
mulsd %xmm1, %xmm1
addsd %xmm5, %xmm1
sqrtsd %xmm1, %xmm1
divsd %xmm1, %xmm0
movaps 0x20(%rsp), %xmm1
movhps 0x413b(%rip), %xmm1     # xmm1 = xmm1[0,1],mem[0,1]
movaps %xmm1, 0x20(%rsp)
callq 0x2180
movapd 0xc0(%rsp), %xmm1
unpcklpd %xmm0, %xmm1            # xmm1 = xmm1[0],xmm0[0]
movapd 0x20(%rsp), %xmm2
subpd %xmm1, %xmm2
mulpd 0x1f72(%rip), %xmm2     # 0x7040
xorpd %xmm0, %xmm0
movapd 0x30(%rsp), %xmm1
subsd %xmm1, %xmm0
unpckhpd %xmm1, %xmm1            # xmm1 = xmm1[1,1]
subsd %xmm1, %xmm0
movapd 0x60(%rsp), %xmm1
subsd %xmm1, %xmm0
unpckhpd %xmm1, %xmm1            # xmm1 = xmm1[1,1]
subsd %xmm1, %xmm0
movapd 0x90(%rsp), %xmm1
addsd %xmm1, %xmm0
unpckhpd %xmm1, %xmm1            # xmm1 = xmm1[1,1]
addsd %xmm0, %xmm1
movapd %xmm2, %xmm0
addsd %xmm2, %xmm1
unpckhpd %xmm2, %xmm0            # xmm0 = xmm0[1],xmm2[1]
addsd %xmm1, %xmm0
movapd %xmm0, %xmm1
xorpd %xmm0, %xmm0
movapd %xmm1, 0x20(%rsp)
ucomisd %xmm1, %xmm0
leaq 0x40ec(%rip), %rdi      # 0x9220
movq 0x40(%rsp), %rbp
jae 0x5187
callq 0x6ae2
movsd %xmm0, 0x30(%rsp)
movapd 0x20(%rsp), %xmm0
xorpd 0x1f0c(%rip), %xmm0     # 0x7060
movsd 0x1edc(%rip), %xmm1     # 0x7038
subsd 0x88(%rsp), %xmm1
mulsd %xmm1, %xmm1
mulsd 0xb0(%rsp), %xmm1
divsd %xmm1, %xmm0
callq 0x2320
ucomisd 0x30(%rsp), %xmm0
jbe 0x544c
movq 0x8(%rsp), %rax
leaq (%rax,%rbp), %rdi
movq (%rax,%rbp), %rsi
movq 0xb8(%rsp), %r14
addq %r14, %rsi
movq (%rax,%r15), %rcx
movq 0x50(%rsp), %r13
leaq (%rcx,%r13), %rdx
movq 0x80(%rsp), %rbx
addq %rbx, %rcx
callq 0x64d2
movq 0x8(%rsp), %rax
leaq (%rax,%r15), %rdi
movq (%rax,%r15), %rsi
addq %rbx, %rsi
movq (%rax,%rbp), %rcx
movq %rbp, %rbx
movq 0xa8(%rsp), %rbp
leaq (%rcx,%rbp), %rdx
addq %r14, %rcx
callq 0x64d2
movq 0x8(%rsp), %rax
leaq (%rax,%rbx), %rsi
movq (%rax,%rbx), %rcx
movq 0x8(%rax,%rbx), %rdx
addq %rcx, %rbp
addq %rcx, %r14
subq %r14, %rdx
movq %rbp, %rdi
movq %r14, %rbx
je 0x5ca9
movq %rsi, %r14
movq %rbx, %rsi
movq %rdi, %rbp
callq 0x22a0
movq %r14, %rsi
movq %rbp, %rdi
movq 0x8(%r14), %rax
movq %rax, %rcx
jmp 0x5caf
movq 0x10(%rsp), %rax
subq 0x8(%rsp), %rax
shrq $0x5, %rax
decl %eax
movl $0x0, 0xf0(%rsp)
movl %eax, 0xf4(%rsp)
movq %rbx, %rdi
movq %r13, %rsi
movq %rbx, %rdx
callq 0x6ea0
movl %eax, %ebp
movq 0x10(%rsp), %rax
subq 0x8(%rsp), %rax
shrq $0x5, %rax
decl %eax
movl $0x0, 0xf0(%rsp)
movl %eax, 0xf4(%rsp)
movq %rbx, %rdi
movq %r13, %rsi
movq %rbx, %rdx
callq 0x6ea0
movl %eax, %r15d
movq 0x10(%rsp), %rax
subq 0x8(%rsp), %rax
shrq $0x5, %rax
decl %eax
movl $0x0, 0xf0(%rsp)
movl %eax, 0xf4(%rsp)
movq %rbx, %rdi
movq %r13, %rsi
movq %rbx, %rdx
callq 0x6ea0
movl %eax, %r13d
cmpl %eax, %r15d
je 0x544c
cmpl %r15d, %ebp
je 0x544c
cmpl %r13d, %ebp
je 0x544c
movslq %ebp, %rdx
movq 0x8(%rsp), %rax
shlq $0x5, %rdx
movq 0x8(%rax,%rdx), %rcx
movq %rdx, 0x20(%rsp)
subq (%rax,%rdx), %rcx
shrq $0x3, %rcx
imull $0xb6db6db7, %ecx, %eax # imm = 0xB6DB6DB7
decl %eax
movl $0x1, 0xf0(%rsp)
movl %eax, 0xf4(%rsp)
movq %rbx, %rdi
leaq 0x3efd(%rip), %r12      # 0x9220
movq %r12, %rsi
movq %rbx, %rdx
callq 0x6ea0
movl %eax, %ebp
movslq %r15d, %r15
movq 0x8(%rsp), %rax
shlq $0x5, %r15
movq 0x8(%rax,%r15), %rcx
subq (%rax,%r15), %rcx
shrq $0x3, %rcx
imull $0xb6db6db7, %ecx, %eax # imm = 0xB6DB6DB7
decl %eax
movl $0x1, 0xf0(%rsp)
movl %eax, 0xf4(%rsp)
movq %rbx, %rdi
movq %r12, %rsi
movq %rbx, %rdx
callq 0x6ea0
movl %eax, %r14d
movslq %r13d, %r13
movq 0x8(%rsp), %rax
shlq $0x5, %r13
movq 0x8(%rax,%r13), %rcx
subq (%rax,%r13), %rcx
shrq $0x3, %rcx
imull $0xb6db6db7, %ecx, %eax # imm = 0xB6DB6DB7
decl %eax
movl $0x1, 0xf0(%rsp)
movl %eax, 0xf4(%rsp)
movq %rbx, %rdi
movq %r12, %rsi
movq %rbx, %rdx
callq 0x6ea0
movq 0x8(%rsp), %rdx
leal -0x1(%rbp), %ecx
movslq %ecx, %rsi
movq 0x20(%rsp), %rcx
movq (%rdx,%rcx), %rcx
imulq $0x38, %rsi, %r12
movslq %r14d, %r9
movq (%rdx,%r15), %rsi
imulq $0x38, %r9, %r10
movq 0x30(%rsi,%r10), %rdi
addq 0x28(%rcx,%r12), %rdi
movq 0x60(%rsp), %r8
cmpq %r8, %rdi
jg 0x5447
movq %r9, 0x90(%rsp)
decl %r14d
movslq %r14d, %rdi
imulq $0x38, %rdi, %r14
movslq %eax, %r11
movq (%rdx,%r13), %rdx
imulq $0x38, %r11, %r9
movq 0x30(%rdx,%r9), %rdi
addq 0x28(%rsi,%r14), %rdi
cmpq %r8, %rdi
jg 0x5447
movq %r14, 0x40(%rsp)
decl %eax
cltq
imulq $0x38, %rax, %r14
movslq %ebp, %rdi
imulq $0x38, %rdi, %rsi
movq 0x30(%rcx,%rsi), %rax
movq %r14, 0x80(%rsp)
addq 0x28(%rdx,%r14), %rax
cmpq %r8, %rax
jle 0x5534
movq 0x58(%rsp), %r12
incq %r12
movabsq $0x45d964b800, %rax     # imm = 0x45D964B800
cmpq %rax, %r12
jne 0x3a4b
jmp 0x5e59
xorl %ebp, %ebp
addl $0xffffff38, %ebp       # imm = 0xFFFFFF38
xorpd %xmm0, %xmm0
movapd %xmm0, 0xf0(%rsp)
movq $0x0, 0x100(%rsp)
movq %rbx, %rdi
xorl %esi, %esi
leaq 0x3d54(%rip), %rdx      # 0x91e8
callq 0x62ee
movq 0xf8(%rsp), %rsi
cmpq 0x100(%rsp), %rsi
je 0x54e6
movq 0x3d66(%rip), %rax      # 0x9218
movq %rax, 0x30(%rsi)
movups 0x3d4b(%rip), %xmm0     # 0x9208
movups %xmm0, 0x20(%rsi)
movups 0x3d30(%rip), %xmm0     # 0x91f8
movups %xmm0, 0x10(%rsi)
movupd 0x3d14(%rip), %xmm0     # 0x91e8
movupd %xmm0, (%rsi)
addq $0x38, %rsi
movq %rsi, 0xf8(%rsp)
jmp 0x54f5
movq %rbx, %rdi
leaq 0x3cf8(%rip), %rdx      # 0x91e8
callq 0x62ee
movq %rbx, %rdi
callq 0x5f5a
leaq 0x8(%rsp), %rdi
movq %rbx, %rsi
callq 0x6752
movq 0xf0(%rsp), %rdi
testq %rdi, %rdi
je 0x5527
movq 0x100(%rsp), %rsi
subq %rdi, %rsi
callq 0x21e0
incl %ebp
jne 0x546f
jmp 0x3b8b
movq %rdi, 0xe8(%rsp)
movq %r11, 0xa8(%rsp)
leaq (%rcx,%r12), %rax
addq %rsi, %rcx
movsd 0x8(%rax), %xmm1
movsd 0x10(%rax), %xmm6
movsd 0x18(%rax), %xmm2
movsd 0x8(%rcx), %xmm3
movsd 0x10(%rcx), %xmm4
movapd %xmm1, %xmm7
mulsd %xmm3, %xmm7
movapd %xmm2, %xmm0
movapd %xmm4, %xmm8
mulsd %xmm2, %xmm8
movapd %xmm6, %xmm5
mulsd %xmm3, %xmm2
mulsd %xmm6, %xmm3
mulsd %xmm4, %xmm6
addsd %xmm6, %xmm7
movsd 0x18(%rcx), %xmm6
mulsd %xmm6, %xmm0
addsd %xmm7, %xmm0
mulsd %xmm6, %xmm5
subsd %xmm8, %xmm5
mulsd %xmm1, %xmm6
subsd %xmm6, %xmm2
mulsd %xmm4, %xmm1
subsd %xmm3, %xmm1
mulsd %xmm2, %xmm2
mulsd %xmm5, %xmm5
addsd %xmm2, %xmm5
mulsd %xmm1, %xmm1
addsd %xmm5, %xmm1
sqrtsd %xmm1, %xmm1
divsd %xmm1, %xmm0
movsd 0x3c08(%rip), %xmm1     # 0x91e0
movaps %xmm1, 0x30(%rsp)
movq %r9, 0x50(%rsp)
movq %r10, %rbp
movq %rsi, 0xd0(%rsp)
callq 0x2180
movapd %xmm0, 0x60(%rsp)
movq 0x8(%rsp), %rax
movq (%rax,%r15), %rax
movq 0x40(%rsp), %r14
movsd 0x8(%rax,%r14), %xmm1
movsd 0x10(%rax,%r14), %xmm6
movsd 0x18(%rax,%r14), %xmm2
movsd 0x8(%rax,%rbp), %xmm3
movsd 0x10(%rax,%rbp), %xmm4
movapd %xmm1, %xmm7
mulsd %xmm3, %xmm7
movapd %xmm2, %xmm0
movapd %xmm4, %xmm8
mulsd %xmm2, %xmm8
movapd %xmm6, %xmm5
mulsd %xmm3, %xmm2
mulsd %xmm6, %xmm3
mulsd %xmm4, %xmm6
addsd %xmm6, %xmm7
movsd 0x18(%rax,%rbp), %xmm6
mulsd %xmm6, %xmm0
addsd %xmm7, %xmm0
mulsd %xmm6, %xmm5
subsd %xmm8, %xmm5
mulsd %xmm1, %xmm6
subsd %xmm6, %xmm2
mulsd %xmm4, %xmm1
subsd %xmm3, %xmm1
mulsd %xmm2, %xmm2
mulsd %xmm5, %xmm5
addsd %xmm2, %xmm5
mulsd %xmm1, %xmm1
addsd %xmm5, %xmm1
sqrtsd %xmm1, %xmm1
divsd %xmm1, %xmm0
movaps 0x30(%rsp), %xmm1
movhps 0x3b40(%rip), %xmm1     # xmm1 = xmm1[0,1],mem[0,1]
movaps %xmm1, 0x30(%rsp)
callq 0x2180
movapd 0x60(%rsp), %xmm2
unpcklpd %xmm0, %xmm2            # xmm2 = xmm2[0],xmm0[0]
movapd 0x30(%rsp), %xmm1
subpd %xmm2, %xmm1
movapd 0x197a(%rip), %xmm0     # 0x7040
mulpd %xmm0, %xmm1
movapd %xmm1, 0x30(%rsp)
movq 0x8(%rsp), %rax
movq (%rax,%r13), %rax
movq 0x80(%rsp), %rcx
movsd 0x8(%rax,%rcx), %xmm1
movsd 0x10(%rax,%rcx), %xmm6
movsd 0x18(%rax,%rcx), %xmm2
movq 0x50(%rsp), %rcx
movsd 0x8(%rax,%rcx), %xmm3
movsd 0x10(%rax,%rcx), %xmm4
movapd %xmm1, %xmm7
mulsd %xmm3, %xmm7
movapd %xmm2, %xmm0
movapd %xmm4, %xmm8
mulsd %xmm2, %xmm8
movapd %xmm6, %xmm5
mulsd %xmm3, %xmm2
mulsd %xmm6, %xmm3
mulsd %xmm4, %xmm6
addsd %xmm6, %xmm7
movsd 0x18(%rax,%rcx), %xmm6
mulsd %xmm6, %xmm0
addsd %xmm7, %xmm0
mulsd %xmm6, %xmm5
subsd %xmm8, %xmm5
mulsd %xmm1, %xmm6
subsd %xmm6, %xmm2
mulsd %xmm4, %xmm1
subsd %xmm3, %xmm1
mulsd %xmm2, %xmm2
mulsd %xmm5, %xmm5
addsd %xmm2, %xmm5
mulsd %xmm1, %xmm1
addsd %xmm5, %xmm1
sqrtsd %xmm1, %xmm1
divsd %xmm1, %xmm0
movsd 0x3a67(%rip), %xmm1     # 0x91e0
movaps %xmm1, 0x60(%rsp)
callq 0x2180
movapd %xmm0, 0xc0(%rsp)
movq 0x8(%rsp), %rax
movq 0x20(%rsp), %rcx
movq (%rax,%rcx), %rcx
movsd 0x8(%rcx,%r12), %xmm1
movsd 0x10(%rcx,%r12), %xmm6
movsd 0x18(%rcx,%r12), %xmm2
movq (%rax,%r15), %rax
movsd 0x8(%rax,%rbp), %xmm3
movsd 0x10(%rax,%rbp), %xmm4
movapd %xmm1, %xmm7
mulsd %xmm3, %xmm7
movapd %xmm2, %xmm0
movapd %xmm4, %xmm8
mulsd %xmm2, %xmm8
movapd %xmm6, %xmm5
mulsd %xmm3, %xmm2
mulsd %xmm6, %xmm3
mulsd %xmm4, %xmm6
addsd %xmm6, %xmm7
movq %rbp, 0xb8(%rsp)
movsd 0x18(%rax,%rbp), %xmm6
mulsd %xmm6, %xmm0
addsd %xmm7, %xmm0
mulsd %xmm6, %xmm5
subsd %xmm8, %xmm5
mulsd %xmm1, %xmm6
subsd %xmm6, %xmm2
mulsd %xmm4, %xmm1
subsd %xmm3, %xmm1
mulsd %xmm2, %xmm2
mulsd %xmm5, %xmm5
addsd %xmm2, %xmm5
mulsd %xmm1, %xmm1
addsd %xmm5, %xmm1
sqrtsd %xmm1, %xmm1
divsd %xmm1, %xmm0
movaps 0x60(%rsp), %xmm1
movhps 0x39a0(%rip), %xmm1     # xmm1 = xmm1[0,1],mem[0,1]
movaps %xmm1, 0x60(%rsp)
callq 0x2180
movapd 0xc0(%rsp), %xmm1
unpcklpd %xmm0, %xmm1            # xmm1 = xmm1[0],xmm0[0]
movapd 0x60(%rsp), %xmm0
subpd %xmm1, %xmm0
mulpd 0x17d7(%rip), %xmm0     # 0x7040
movapd %xmm0, 0x60(%rsp)
movq 0x8(%rsp), %rax
movq (%rax,%r15), %rcx
movsd 0x8(%rcx,%r14), %xmm1
movsd 0x10(%rcx,%r14), %xmm6
movsd 0x18(%rcx,%r14), %xmm2
movq (%rax,%r13), %rax
movq 0x50(%rsp), %rcx
movsd 0x8(%rax,%rcx), %xmm3
movsd 0x10(%rax,%rcx), %xmm4
movapd %xmm1, %xmm7
mulsd %xmm3, %xmm7
movapd %xmm2, %xmm0
movapd %xmm4, %xmm8
mulsd %xmm2, %xmm8
movapd %xmm6, %xmm5
mulsd %xmm3, %xmm2
mulsd %xmm6, %xmm3
mulsd %xmm4, %xmm6
addsd %xmm6, %xmm7
movsd 0x18(%rax,%rcx), %xmm6
mulsd %xmm6, %xmm0
addsd %xmm7, %xmm0
mulsd %xmm6, %xmm5
subsd %xmm8, %xmm5
mulsd %xmm1, %xmm6
subsd %xmm6, %xmm2
mulsd %xmm4, %xmm1
subsd %xmm3, %xmm1
mulsd %xmm2, %xmm2
mulsd %xmm5, %xmm5
addsd %xmm2, %xmm5
mulsd %xmm1, %xmm1
addsd %xmm5, %xmm1
sqrtsd %xmm1, %xmm1
divsd %xmm1, %xmm0
movsd 0x38c9(%rip), %xmm1     # 0x91e0
movaps %xmm1, 0x40(%rsp)
callq 0x2180
movapd %xmm0, 0xc0(%rsp)
movq 0x8(%rsp), %rax
movq (%rax,%r13), %rcx
movq 0x80(%rsp), %rdx
movsd 0x8(%rcx,%rdx), %xmm1
movsd 0x10(%rcx,%rdx), %xmm6
movsd 0x18(%rcx,%rdx), %xmm2
movq 0x20(%rsp), %rcx
movq (%rax,%rcx), %rax
movq 0xd0(%rsp), %rcx
movsd 0x8(%rax,%rcx), %xmm3
movsd 0x10(%rax,%rcx), %xmm4
movapd %xmm1, %xmm7
mulsd %xmm3, %xmm7
movapd %xmm2, %xmm0
movapd %xmm4, %xmm8
mulsd %xmm2, %xmm8
movapd %xmm6, %xmm5
mulsd %xmm3, %xmm2
mulsd %xmm6, %xmm3
mulsd %xmm4, %xmm6
addsd %xmm6, %xmm7
movq %rcx, %rbp
movsd 0x18(%rax,%rcx), %xmm6
mulsd %xmm6, %xmm0
addsd %xmm7, %xmm0
mulsd %xmm6, %xmm5
subsd %xmm8, %xmm5
mulsd %xmm1, %xmm6
subsd %xmm6, %xmm2
mulsd %xmm4, %xmm1
subsd %xmm3, %xmm1
mulsd %xmm2, %xmm2
mulsd %xmm5, %xmm5
addsd %xmm2, %xmm5
mulsd %xmm1, %xmm1
addsd %xmm5, %xmm1
sqrtsd %xmm1, %xmm1
divsd %xmm1, %xmm0
movaps 0x40(%rsp), %xmm1
movhps 0x37fa(%rip), %xmm1     # xmm1 = xmm1[0,1],mem[0,1]
movaps %xmm1, 0x40(%rsp)
callq 0x2180
movapd 0xc0(%rsp), %xmm1
unpcklpd %xmm0, %xmm1            # xmm1 = xmm1[0],xmm0[0]
movapd 0x40(%rsp), %xmm2
subpd %xmm1, %xmm2
mulpd 0x1631(%rip), %xmm2     # 0x7040
xorpd %xmm0, %xmm0
movapd 0x30(%rsp), %xmm1
subsd %xmm1, %xmm0
unpckhpd %xmm1, %xmm1            # xmm1 = xmm1[1,1]
subsd %xmm1, %xmm0
movapd 0x60(%rsp), %xmm1
subsd %xmm1, %xmm0
unpckhpd %xmm1, %xmm1            # xmm1 = xmm1[1,1]
addsd %xmm0, %xmm1
addsd %xmm2, %xmm1
unpckhpd %xmm2, %xmm2            # xmm2 = xmm2[1,1]
addsd %xmm1, %xmm2
xorpd %xmm0, %xmm0
movapd %xmm2, 0x40(%rsp)
ucomisd %xmm2, %xmm0
jae 0x5aa6
leaq 0x37c6(%rip), %rdi      # 0x9220
callq 0x6ae2
movsd %xmm0, 0x30(%rsp)
movapd 0x40(%rsp), %xmm0
xorpd 0x15ed(%rip), %xmm0     # 0x7060
movsd 0x15bd(%rip), %xmm1     # 0x7038
subsd 0x88(%rsp), %xmm1
mulsd %xmm1, %xmm1
mulsd 0xb0(%rsp), %xmm1
divsd %xmm1, %xmm0
callq 0x2320
ucomisd 0x30(%rsp), %xmm0
jbe 0x5447
movq 0x8(%rsp), %rax
movq 0x20(%rsp), %rcx
movq 0x8(%rax,%rcx), %rsi
movq %rsi, %rbx
subq (%rax,%rcx), %rbx
leaq (%rax,%rcx), %rdi
movq (%rax,%r15), %rcx
movq 0x8(%rax,%r15), %rdx
subq %rcx, %rdx
shrq $0x3, %rdx
imull $0xb6db6db7, %edx, %r8d # imm = 0xB6DB6DB7
movq (%rax,%r13), %r12
movq 0x8(%rax,%r13), %r14
movq 0xb8(%rsp), %rax
leaq (%rcx,%rax), %rdx
movslq %r8d, %rax
movq %rax, 0x88(%rsp)
imulq $0x38, %rax, %rax
movq %rax, 0x30(%rsp)
addq %rax, %rcx
callq 0x64d2
subq %r12, %r14
shrq $0x3, %r14
imull $0xb6db6db7, %r14d, %eax # imm = 0xB6DB6DB7
movq 0x8(%rsp), %rcx
leaq (%rcx,%r15), %rdi
movq 0x8(%rcx,%r15), %rsi
movq (%rcx,%r13), %rcx
movq 0x50(%rsp), %rdx
addq %rcx, %rdx
cltq
movq %rax, 0x80(%rsp)
imulq $0x38, %rax, %rax
movq %rax, 0x60(%rsp)
addq %rax, %rcx
callq 0x64d2
sarq $0x3, %rbx
movabsq $0x6db6db6db6db6db7, %rax # imm = 0x6DB6DB6DB6DB6DB7
imulq %rax, %rbx
movq 0x8(%rsp), %rax
leaq (%rax,%r13), %rdi
movq 0x8(%rax,%r13), %rsi
movq 0x20(%rsp), %rcx
movq (%rax,%rcx), %rcx
leaq (%rcx,%rbp), %rdx
movslq %ebx, %r14
imulq $0x38, %r14, %rbx
addq %rbx, %rcx
callq 0x64d2
movq 0x58(%rsp), %r12
cmpq 0xe8(%rsp), %r14
movq 0x50(%rsp), %rdi
movq 0xb8(%rsp), %r8
movq 0xa8(%rsp), %r10
movq 0x90(%rsp), %r9
je 0x5d4e
movq 0x8(%rsp), %r14
movq 0x20(%rsp), %rcx
movq (%r14,%rcx), %rax
addq %rcx, %r14
addq %rax, %rbp
addq %rax, %rbx
movq 0x8(%r14), %rdx
subq %rbx, %rdx
je 0x5d39
movq %rbp, %rdi
movq %rbx, %rsi
callq 0x22a0
movq 0x90(%rsp), %r9
movq 0xa8(%rsp), %r10
movq 0xb8(%rsp), %r8
movq 0x50(%rsp), %rdi
movq 0x8(%r14), %rax
movq %rax, %rcx
jmp 0x5d3f
movq %rbp, %rax
movq %rbp, %rcx
subq %rbp, %rax
addq %rax, %r8
cmpq %r8, %rcx
je 0x5c24
movq %r8, 0x8(%r13)
cmpq %rsi, %r12
je 0x5c73
movq 0x8(%rsp), %r12
movq (%r12,%r15), %rax
addq %r15, %r12
addq %rax, %rdi
addq %rax, %rbx
movq 0x8(%r12), %rdx
subq %rbx, %rdx
je 0x5c5d
movq %rbx, %rsi
movq %rdi, %r13
callq 0x22a0
movq %r13, %rdi
movq 0x8(%r12), %rax
movq %rax, %rcx
jmp 0x5c63
movq %rbx, %rax
movq %rbx, %rcx
subq %rbx, %rax
addq %rax, %rdi
cmpq %rdi, %rcx
je 0x5c73
movq %rdi, 0x8(%r12)
addq 0x8(%rsp), %r14
movq %r14, %rdi
callq 0x5f5a
addq 0x8(%rsp), %r15
movq %r15, %rdi
callq 0x5f5a
movsd 0x78(%rsp), %xmm0
addsd 0x20(%rsp), %xmm0
movsd %xmm0, 0x78(%rsp)
movq 0x58(%rsp), %r12
jmp 0x5e4c
movq %rbx, %rax
movq %rbx, %rcx
subq %rbx, %rax
addq %rax, %rdi
cmpq %rdi, %rcx
je 0x5cbe
movq %rdi, 0x8(%rsi)
movq 0x8(%rsp), %rax
leaq (%rax,%r15), %rbx
movq (%rax,%r15), %rcx
movq 0x8(%rax,%r15), %rdx
addq %rcx, %r13
movq 0x80(%rsp), %rbp
addq %rcx, %rbp
subq %rbp, %rdx
je 0x5cf7
movq %r13, %rdi
movq %rbp, %rsi
callq 0x22a0
movq 0x8(%rbx), %rax
movq %rax, %rcx
jmp 0x5cfd
movq %rbp, %rax
movq %rbp, %rcx
subq %rbp, %rax
addq %rax, %r13
cmpq %r13, %rcx
je 0x5d0c
movq %r13, 0x8(%rbx)
movq 0x40(%rsp), %rdi
addq 0x8(%rsp), %rdi
callq 0x5f5a
addq 0x8(%rsp), %r15
movq %r15, %rdi
callq 0x5f5a
movsd 0x78(%rsp), %xmm0
addsd 0x20(%rsp), %xmm0
jmp 0x5e46
movq %rbx, %rax
movq %rbx, %rcx
subq %rbx, %rax
addq %rax, %rbp
cmpq %rbp, %rcx
je 0x5d4e
movq %rbp, 0x8(%r14)
cmpq %r9, 0x88(%rsp)
movq 0x60(%rsp), %rbp
je 0x5dc0
movq 0x8(%rsp), %rbx
movq (%rbx,%r15), %rax
addq %r15, %rbx
addq %rax, %r8
movq 0x30(%rsp), %rsi
addq %rax, %rsi
movq 0x8(%rbx), %rdx
subq %rsi, %rdx
je 0x5dab
movq %r8, %rdi
movq %r8, %r14
movq %rsi, 0x30(%rsp)
callq 0x22a0
movq 0x30(%rsp), %rsi
movq 0xa8(%rsp), %r10
movq %r14, %r8
movq 0x50(%rsp), %rdi
movq 0x8(%rbx), %rax
movq %rax, %rcx
jmp 0x5db1
movq %rsi, %rax
movq %rsi, %rcx
subq %rsi, %rax
addq %rax, %r8
cmpq %r8, %rcx
je 0x5dc0
movq %r8, 0x8(%rbx)
cmpq %r10, 0x80(%rsp)
je 0x5e11
movq 0x8(%rsp), %rbx
movq (%rbx,%r13), %rax
addq %r13, %rbx
addq %rax, %rdi
addq %rax, %rbp
movq 0x8(%rbx), %rdx
subq %rbp, %rdx
je 0x5dfc
movq %rbp, %rsi
movq %rdi, %r14
callq 0x22a0
movq %r14, %rdi
movq 0x8(%rbx), %rax
movq %rax, %rcx
jmp 0x5e02
movq %rbp, %rax
movq %rbp, %rcx
subq %rbp, %rax
addq %rax, %rdi
cmpq %rdi, %rcx
je 0x5e11
movq %rdi, 0x8(%rbx)
movq 0x20(%rsp), %rdi
addq 0x8(%rsp), %rdi
callq 0x5f5a
addq 0x8(%rsp), %r15
movq %r15, %rdi
callq 0x5f5a
addq 0x8(%rsp), %r13
movq %r13, %rdi
callq 0x5f5a
movsd 0x78(%rsp), %xmm0
addsd 0x40(%rsp), %xmm0
movsd %xmm0, 0x78(%rsp)
leaq 0xf0(%rsp), %rbx
jmp 0x544c
movq 0x3178(%rip), %rdi      # 0x8fd8
leaq 0x1338(%rip), %rsi      # 0x719f
movl $0x7, %edx
callq 0x21f0
movq 0x3160(%rip), %rdi      # 0x8fd8
movsd 0x78(%rsp), %xmm0
callq 0x2290
leaq 0x12ce(%rip), %rsi      # 0x7158
movl $0x1, %edx
movq %rax, %rdi
callq 0x21f0
leaq 0x8(%rsp), %rdi
callq 0x33ea
leaq 0x8(%rsp), %rdi
callq 0x613e
xorl %eax, %eax
addq $0x1478, %rsp           # imm = 0x1478
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x5f23
jmp 0x5f23
jmp 0x5f23
jmp 0x5f23
jmp 0x5f23
jmp 0x5f23
jmp 0x5f23
jmp 0x5f23
jmp 0x5f23
jmp 0x5f23
jmp 0x5f23
jmp 0x5f23
jmp 0x5eeb
movq %rax, %rbx
leaq 0xf0(%rsp), %rdi
callq 0x21c0
jmp 0x5f52
movq %rax, %rdi
callq 0x62e3
jmp 0x5f23
jmp 0x5f23
jmp 0x5f23
jmp 0x5f23
jmp 0x5f23
jmp 0x5f23
jmp 0x5f23
jmp 0x5f23
jmp 0x5f23
jmp 0x5f23
jmp 0x5f23
jmp 0x5f23
jmp 0x5f23
jmp 0x5f23
jmp 0x5f23
jmp 0x5f23
jmp 0x5f23
jmp 0x5f23
jmp 0x5f23
jmp 0x5f23
jmp 0x5f23
jmp 0x5f23
jmp 0x5f23
jmp 0x5f23
movq %rax, %rbx
jmp 0x5f48
movq %rax, %rbx
movq 0xf0(%rsp), %rdi
testq %rdi, %rdi
je 0x5f48
movq 0x100(%rsp), %rsi
subq %rdi, %rsi
callq 0x21e0
leaq 0x8(%rsp), %rdi
callq 0x613e
movq %rbx, %rdi
callq 0x2310