// File: /workspace/github_cpp_makefile_star2_O1/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 $0x1518, %rsp           # imm = 0x1518
leaq 0x190(%rsp), %rbx
movq %rbx, %rdi
callq 0x7342
movq %rbx, %rdi
callq 0x2230
movl %eax, %ebx
leaq 0x190(%rsp), %rdi
callq 0x21d0
movq 0x750d(%rip), %r14      # 0xafd8
leaq 0x5628(%rip), %rsi      # 0x90fa
movl $0x12, %edx
movq %r14, %rdi
callq 0x2200
movl %ebx, %ebx
movq %r14, %rdi
movq %rbx, %rsi
callq 0x2110
leaq 0x5665(%rip), %rsi      # 0x9158
movl $0x1, %r14d
movl $0x1, %edx
movq %rax, %rdi
callq 0x2200
movq %rbx, 0x771b(%rip)      # 0xb228
leaq 0x7714(%rip), %rax      # 0xb228
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 0x3b14
movq $0x270, 0x8a67(%rip) # imm = 0x270
leaq 0x76e0(%rip), %rbp      # 0xb228
movq %rbp, %rdi
callq 0x7c48
mulsd 0x54c8(%rip), %xmm0     # 0x9020
addsd 0x54c8(%rip), %xmm0     # 0x9028
callq 0x2330
movsd %xmm0, 0x168(%rsp)
movq 0x7463(%rip), %rbx      # 0xafd8
leaq 0x5591(%rip), %rsi      # 0x910d
movl $0x14, %edx
movq %rbx, %rdi
callq 0x2200
movq %rbx, %rdi
movsd 0x168(%rsp), %xmm0
callq 0x22a0
leaq 0x55b7(%rip), %rsi      # 0x9158
movl $0x1, %edx
movq %rax, %rdi
callq 0x2200
xorl %r15d, %r15d
leaq 0x190(%rsp), %r12
movq %r15, (%r12)
movl $0x989680, %r14d        # imm = 0x989680
movq %r14, 0x8(%r12)
movq %r12, %rdi
movq %rbp, %rsi
movq %r12, %rdx
callq 0x7ed6
movq %rax, %r13
movq %r15, (%r12)
movq %r14, 0x8(%r12)
leaq 0x190(%rsp), %r12
movq %r12, %rdi
movq %rbp, %rsi
movq %r12, %rdx
callq 0x7ed6
movq %rax, %rbp
cmpq %rax, %r13
cmovgq %r13, %rbp
testq %rbp, %rbp
cmovleq %r15, %rbp
leaq 0x5512(%rip), %rsi      # 0x9122
movl $0x15, %edx
movq %rbx, %rdi
callq 0x2200
movq %rbx, %rdi
movq %rbp, %rsi
callq 0x2080
movl $0x1, %edx
movq %rax, %rdi
leaq 0x5521(%rip), %rsi      # 0x9158
callq 0x2200
movq %r14, (%r12)
movl $0x1312d00, %r13d       # imm = 0x1312D00
movq %r13, 0x8(%r12)
leaq 0x190(%rsp), %r15
movq %r15, %rdi
leaq 0x75cb(%rip), %rbx      # 0xb228
movq %rbx, %rsi
movq %r15, %rdx
callq 0x7ed6
movq %rax, %r12
movq %r14, (%r15)
movq %r13, 0x8(%r15)
leaq 0x190(%rsp), %rdi
movq %rbx, %rsi
movq %rdi, %rdx
callq 0x7ed6
movq %rax, %r14
cmpq %rax, %r12
cmovlq %r12, %r14
cmpq %r13, %r14
cmovgeq %r13, %r14
leaq 0x549b(%rip), %rsi      # 0x9138
movl $0x11, %edx
movq 0x732f(%rip), %rbx      # 0xafd8
movq %rbx, %rdi
callq 0x2200
movq %rbx, %rdi
movq %r14, 0x178(%rsp)
movq %r14, %rsi
callq 0x2080
movq %rax, %r14
leaq 0x547c(%rip), %rsi      # 0x914a
movl $0xc, %edx
movq %rax, %rdi
callq 0x2200
movl $0x989680, %esi         # imm = 0x989680
movq %r14, %rdi
callq 0x2080
leaq 0x5468(%rip), %rsi      # 0x9157
movl $0x2, %edx
movq %rax, %rdi
callq 0x2200
leaq 0x5457(%rip), %rsi      # 0x915a
movl $0x8, %edx
movq %rbx, %rdi
callq 0x2200
movsd 0x5318(%rip), %xmm0     # 0x9030
movq %rbx, %rdi
callq 0x22a0
leaq 0x543c(%rip), %rsi      # 0x9163
movl $0xc, %edx
movq %rax, %rdi
callq 0x2200
leaq 0x5435(%rip), %rsi      # 0x9170
movl $0x1b, %edx
movq %rbx, %rdi
callq 0x2200
movq %rsp, %rbx
movq %rbx, %rdi
movq %rbp, 0x180(%rsp)
movq %rbp, %rsi
callq 0x2736
movq (%rbx), %rax
movq 0x8(%rbx), %rcx
xorpd %xmm0, %xmm0
cmpq %rcx, %rax
je 0x3d79
addsd 0x18(%rax), %xmm0
addq $0x20, %rax
jmp 0x3d69
movsd %xmm0, 0x100(%rsp)
movq 0x724f(%rip), %rdi      # 0xafd8
leaq 0x53fc(%rip), %rsi      # 0x918c
movl $0xa, %edx
callq 0x2200
movq 0x8(%rsp), %rsi
subq (%rsp), %rsi
shrq $0x5, %rsi
movq 0x722a(%rip), %rdi      # 0xafd8
callq 0x2310
movq %rax, %rbx
leaq 0x53da(%rip), %rsi      # 0x9197
movl $0xf, %edx
movq %rax, %rdi
callq 0x2200
movq %rbx, %rdi
movsd 0x100(%rsp), %xmm0
callq 0x22a0
leaq 0x5376(%rip), %rsi      # 0x9158
movl $0x1, %edx
movq %rax, %rdi
callq 0x2200
movq 0x178(%rsp), %rax
subq 0x180(%rsp), %rax
movq %rax, 0x178(%rsp)
xorl %ebp, %ebp
leaq 0x7418(%rip), %r13      # 0xb228
xorps %xmm0, %xmm0
cvtsi2sd %rbp, %xmm0
divsd 0x5210(%rip), %xmm0     # 0x9030
movsd %xmm0, 0xc8(%rsp)
movq %rbp, %rax
imulq 0x178(%rsp), %rax
movabsq $0x3aa3ffae990c39, %rcx # imm = 0x3AA3FFAE990C39
imulq %rcx
movq %rdx, %rax
shrq $0x3f, %rax
sarq $0x1c, %rdx
addq %rax, %rdx
addq 0x180(%rsp), %rdx
movl $0x989680, %eax         # imm = 0x989680
cmpq %rax, %rdx
cmovgeq %rax, %rdx
movq %rdx, 0x108(%rsp)
testl $0xffffff, %ebp         # imm = 0xFFFFFF
jne 0x3f45
movl $0x7, %edx
movq 0x7154(%rip), %rdi      # 0xafd8
leaq 0x5314(%rip), %rsi      # 0x919f
callq 0x2200
movq 0x7141(%rip), %rdi      # 0xafd8
movsd 0x100(%rsp), %xmm0
callq 0x22a0
movq %rax, %r14
movl $0xd, %edx
movq %rax, %rdi
leaq 0x52f0(%rip), %rsi      # 0x91a7
callq 0x2200
movq %r14, %rdi
movsd 0xc8(%rsp), %xmm0
callq 0x22a0
movq %rax, %r14
movl $0x10, %edx
movq %rax, %rdi
leaq 0x52d6(%rip), %rsi      # 0x91b5
callq 0x2200
movsd 0x514c(%rip), %xmm0     # 0x9038
subsd 0xc8(%rsp), %xmm0
mulsd %xmm0, %xmm0
mulsd 0x168(%rsp), %xmm0
movq %r14, %rdi
callq 0x22a0
movq %rax, %r14
movl $0xf, %edx
movq %rax, %rdi
leaq 0x52aa(%rip), %rsi      # 0x91c6
callq 0x2200
movq %r14, %rdi
movq 0x108(%rsp), %rsi
callq 0x2080
movl $0x1, %edx
movq %rax, %rdi
leaq 0x5218(%rip), %rsi      # 0x9158
callq 0x2200
movq %rbp, %rax
shlq $0x34, %rax
jne 0x41dc
movq %rbp, 0xb0(%rsp)
movq (%rsp), %r14
movq 0x8(%rsp), %r13
movq %r13, %rax
subq %r14, %rax
shrq $0x5, %rax
testl %eax, %eax
jle 0x40a1
xorl %r12d, %r12d
xorl %ebx, %ebx
movq %r12, %rbp
shlq $0x5, %rbp
movq 0x8(%r14,%rbp), %rax
subq (%r14,%rbp), %rax
shrq $0x3, %rax
imull $0xb6db6db7, %eax, %eax # imm = 0xB6DB6DB7
cmpl $0x2, %eax
jne 0x407e
cmpl $0xc8, %ebx
jl 0x407c
addq %rbp, %r14
leaq -0x20(%r13), %r15
movups (%r14), %xmm0
movaps %xmm0, 0x190(%rsp)
movq 0x10(%r14), %rax
movq %rax, 0x1a0(%rsp)
xorps %xmm0, %xmm0
movups %xmm0, (%r14)
movq $0x0, 0x10(%r14)
movsd 0x18(%r14), %xmm0
movsd %xmm0, 0x1a8(%rsp)
movq %r14, %rdi
movq %r15, %rsi
callq 0x7fca
movsd -0x8(%r13), %xmm0
movsd %xmm0, 0x18(%r14)
movq %r15, %rdi
leaq 0x190(%rsp), %rsi
callq 0x7fca
movsd 0x1a8(%rsp), %xmm0
movsd %xmm0, -0x8(%r13)
movq 0x190(%rsp), %rdi
testq %rdi, %rdi
je 0x4039
movq 0x1a0(%rsp), %rsi
subq %rdi, %rsi
callq 0x21f0
movq 0x8(%rsp), %rax
leaq -0x20(%rax), %rcx
movq %rcx, 0x8(%rsp)
movq -0x20(%rax), %rdi
testq %rdi, %rdi
je 0x405c
movq -0x10(%rax), %rsi
subq %rdi, %rsi
callq 0x21f0
movq (%rsp), %r14
movq 0x8(%rsp), %r13
movq %r13, %rax
subq %r14, %rax
shrq $0x5, %rax
cltq
cmpq %rax, %r12
jl 0x3f81
jmp 0x40a3
incl %ebx
incq %r12
movq (%rsp), %r14
movq 0x8(%rsp), %r13
movq %r13, %rax
subq %r14, %rax
shrq $0x5, %rax
cltq
cmpq %rax, %r12
jl 0x3f7a
jmp 0x40a3
xorl %ebx, %ebx
cmpl $0xc7, %ebx
movq 0xb0(%rsp), %rbp
leaq 0x7170(%rip), %r13      # 0xb228
jg 0x41dc
addl $0xffffff38, %ebx       # imm = 0xFFFFFF38
xorpd %xmm0, %xmm0
movapd %xmm0, 0x190(%rsp)
movq $0x0, 0x1a0(%rsp)
movq 0x198(%rsp), %rsi
testq %rsi, %rsi
je 0x4125
movq 0x712f(%rip), %rax      # 0xb220
movq %rax, 0x30(%rsi)
movups 0x7114(%rip), %xmm0     # 0xb210
movups %xmm0, 0x20(%rsi)
movups 0x70f9(%rip), %xmm0     # 0xb200
movups %xmm0, 0x10(%rsi)
movupd 0x70dd(%rip), %xmm0     # 0xb1f0
movupd %xmm0, (%rsi)
addq $0x38, %rsi
movq %rsi, 0x198(%rsp)
jmp 0x4139
leaq 0x190(%rsp), %rdi
leaq 0x70bc(%rip), %rdx      # 0xb1f0
callq 0x7458
movq 0x198(%rsp), %rsi
cmpq 0x1a0(%rsp), %rsi
je 0x4186
movq 0x70ce(%rip), %rax      # 0xb220
movq %rax, 0x30(%rsi)
movups 0x70b3(%rip), %xmm0     # 0xb210
movups %xmm0, 0x20(%rsi)
movups 0x7098(%rip), %xmm0     # 0xb200
movups %xmm0, 0x10(%rsi)
movupd 0x707c(%rip), %xmm0     # 0xb1f0
movupd %xmm0, (%rsi)
addq $0x38, %rsi
movq %rsi, 0x198(%rsp)
jmp 0x419a
leaq 0x190(%rsp), %rdi
leaq 0x705b(%rip), %rdx      # 0xb1f0
callq 0x7458
leaq 0x190(%rsp), %rdi
callq 0x704a
movq %rsp, %rdi
leaq 0x190(%rsp), %rsi
callq 0x78c0
movq 0x190(%rsp), %rdi
testq %rdi, %rdi
je 0x41d4
movq 0x1a0(%rsp), %rsi
subq %rdi, %rsi
callq 0x21f0
incl %ebx
jne 0x40c4
movabsq $0x300000000, %rax      # imm = 0x300000000
movq %rax, 0x190(%rsp)
leaq 0x190(%rsp), %rdi
movq %r13, %rsi
movq %rdi, %rdx
callq 0x8002
movl %eax, %r14d
testl %eax, %eax
jne 0x4389
movq 0x8(%rsp), %rax
subq (%rsp), %rax
shrq $0x5, %rax
decl %eax
movl $0x0, 0x190(%rsp)
movl %eax, 0x194(%rsp)
leaq 0x190(%rsp), %rbx
movq %rbx, %rdi
movq %r13, %rsi
movq %rbx, %rdx
callq 0x8002
movl %eax, %r15d
movq 0x8(%rsp), %rax
subq (%rsp), %rax
shrq $0x5, %rax
decl %eax
movl $0x0, 0x190(%rsp)
movl %eax, 0x194(%rsp)
movq %rbx, %rdi
movq %r13, %rsi
movq %rbx, %rdx
callq 0x8002
movl %eax, %r12d
cmpl %eax, %r15d
jne 0x4284
xorl %eax, %eax
jmp 0x4381
movslq %r15d, %r15
movq (%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, 0x190(%rsp)
movl %eax, 0x194(%rsp)
leaq 0x190(%rsp), %rbx
movq %rbx, %rdi
movq %r13, %rsi
movq %rbx, %rdx
callq 0x8002
movq %r13, %rsi
movl %eax, %r13d
movl %r14d, 0x60(%rsp)
movslq %r12d, %r12
movq (%rsp), %rax
shlq $0x5, %r12
movq 0x8(%rax,%r12), %rcx
subq (%rax,%r12), %rcx
shrq $0x3, %rcx
imull $0xb6db6db7, %ecx, %eax # imm = 0xB6DB6DB7
decl %eax
movl $0x1, 0x190(%rsp)
movl %eax, 0x194(%rsp)
movq %rbx, %rdi
movq %rbx, %rdx
callq 0x8002
movq (%rsp), %rdx
leal -0x1(%r13), %ecx
movslq %ecx, %rsi
movq (%rdx,%r15), %rcx
imulq $0x38, %rsi, %r14
movslq %eax, %r9
movq (%rdx,%r12), %rdx
imulq $0x38, %r9, %r8
movq 0x30(%rdx,%r8), %rsi
addq 0x28(%rcx,%r14), %rsi
movq 0x108(%rsp), %rdi
cmpq %rdi, %rsi
jg 0x4373
movq %r8, 0xb0(%rsp)
decl %eax
cltq
imulq $0x38, %rax, %rbx
movslq %r13d, %r8
imulq $0x38, %r8, %rsi
movq 0x30(%rcx,%rsi), %rax
addq 0x28(%rdx,%rbx), %rax
cmpq %rdi, %rax
jle 0x5015
xorl %eax, %eax
leaq 0x6eac(%rip), %r13      # 0xb228
movl 0x60(%rsp), %r14d
testb %al, %al
je 0x4ffa
cmpl $0x1, %r14d
jne 0x4b4f
movl %r14d, 0x60(%rsp)
movq 0x8(%rsp), %rax
subq (%rsp), %rax
shrq $0x5, %rax
decl %eax
movl $0x0, 0x190(%rsp)
movl %eax, 0x194(%rsp)
leaq 0x190(%rsp), %rbx
movq %rbx, %rdi
movq %r13, %rsi
movq %rbx, %rdx
callq 0x8002
movq %r13, %r14
movslq %eax, %r13
movq (%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, 0x190(%rsp)
movl %eax, 0x194(%rsp)
movq %rbx, %rdi
movq %r14, %rsi
movq %rbx, %rdx
callq 0x8002
movl %eax, %r15d
movq (%rsp), %rax
movq 0x8(%rax,%r13), %rcx
subq (%rax,%r13), %rcx
shrq $0x3, %rcx
imull $0xb6db6db7, %ecx, %eax # imm = 0xB6DB6DB7
decl %eax
movl $0x1, 0x190(%rsp)
movl %eax, 0x194(%rsp)
movq %rbx, %rdi
movq %r14, %rsi
movq %rbx, %rdx
callq 0x8002
movl %eax, %r12d
cmpl %eax, %r15d
movl %eax, %ebx
cmovgl %r15d, %ebx
cmovll %r15d, %eax
movslq %r12d, %rcx
movslq %r15d, %rdx
subq %rcx, %rdx
movq %rdx, %rcx
negq %rcx
cmovsq %rdx, %rcx
movq %rcx, 0x90(%rsp)
cmpl $0x1, %ecx
movl 0x60(%rsp), %r14d
jle 0x4b3a
movq %rbp, 0xb0(%rsp)
movq (%rsp), %rcx
leal -0x1(%rax), %edx
movslq %edx, %rdx
movq (%rcx,%r13), %rcx
imulq $0x38, %rdx, %rbp
movsd 0x8(%rcx,%rbp), %xmm6
movsd 0x10(%rcx,%rbp), %xmm7
movsd 0x18(%rcx,%rbp), %xmm5
cltq
imulq $0x38, %rax, %rax
movsd 0x8(%rcx,%rax), %xmm9
movsd 0x10(%rcx,%rax), %xmm10
movq %rax, 0xd0(%rsp)
movsd 0x18(%rcx,%rax), %xmm8
movsd 0x6d0a(%rip), %xmm4     # 0xb1e8
movapd %xmm10, %xmm0
mulsd %xmm5, %xmm0
movapd %xmm7, %xmm1
mulsd %xmm8, %xmm1
subsd %xmm0, %xmm1
movapd %xmm8, %xmm0
mulsd %xmm6, %xmm0
movapd %xmm5, %xmm2
mulsd %xmm9, %xmm2
subsd %xmm0, %xmm2
movapd %xmm9, %xmm3
mulsd %xmm7, %xmm3
movapd %xmm6, %xmm0
mulsd %xmm10, %xmm0
subsd %xmm3, %xmm0
mulsd %xmm2, %xmm2
mulsd %xmm1, %xmm1
addsd %xmm2, %xmm1
mulsd %xmm0, %xmm0
addsd %xmm1, %xmm0
ucomisd 0x4adc(%rip), %xmm0     # 0x9018
movaps %xmm4, 0x140(%rsp)
jb 0x454c
sqrtsd %xmm0, %xmm0
jmp 0x45ab
movsd %xmm5, 0x50(%rsp)
movsd %xmm6, 0x30(%rsp)
movsd %xmm7, 0x130(%rsp)
movsd %xmm8, 0x70(%rsp)
movsd %xmm9, 0xf0(%rsp)
movsd %xmm10, 0x18(%rsp)
callq 0x2170
movsd 0x18(%rsp), %xmm10
movsd 0xf0(%rsp), %xmm9
movsd 0x70(%rsp), %xmm8
movsd 0x130(%rsp), %xmm7
movsd 0x30(%rsp), %xmm6
movsd 0x50(%rsp), %xmm5
mulsd %xmm10, %xmm7
mulsd %xmm9, %xmm6
addsd %xmm7, %xmm6
mulsd %xmm8, %xmm5
addsd %xmm6, %xmm5
divsd %xmm0, %xmm5
movapd %xmm5, %xmm0
callq 0x2190
movapd %xmm0, 0x50(%rsp)
movq (%rsp), %rax
leal -0x1(%rbx), %ecx
movslq %ecx, %rcx
movq (%rax,%r13), %rax
imulq $0x38, %rcx, %r14
movsd 0x8(%rax,%r14), %xmm5
movsd 0x10(%rax,%r14), %xmm6
movsd 0x18(%rax,%r14), %xmm4
movslq %ebx, %rcx
imulq $0x38, %rcx, %rbx
movsd 0x8(%rax,%rbx), %xmm8
movsd 0x10(%rax,%rbx), %xmm9
movsd 0x18(%rax,%rbx), %xmm7
movsd 0x6bc9(%rip), %xmm0     # 0xb1e8
movaps %xmm0, 0x30(%rsp)
movapd %xmm9, %xmm0
mulsd %xmm4, %xmm0
movapd %xmm6, %xmm1
mulsd %xmm7, %xmm1
subsd %xmm0, %xmm1
movapd %xmm7, %xmm0
mulsd %xmm5, %xmm0
movapd %xmm4, %xmm2
mulsd %xmm8, %xmm2
subsd %xmm0, %xmm2
movapd %xmm8, %xmm3
mulsd %xmm6, %xmm3
movapd %xmm5, %xmm0
mulsd %xmm9, %xmm0
subsd %xmm3, %xmm0
mulsd %xmm2, %xmm2
mulsd %xmm1, %xmm1
addsd %xmm2, %xmm1
mulsd %xmm0, %xmm0
addsd %xmm1, %xmm0
ucomisd 0x4998(%rip), %xmm0     # 0x9018
jb 0x4688
sqrtsd %xmm0, %xmm0
jmp 0x46e5
movsd %xmm4, 0x130(%rsp)
movsd %xmm5, 0x70(%rsp)
movsd %xmm6, 0xf0(%rsp)
movsd %xmm7, 0x18(%rsp)
movsd %xmm8, 0x20(%rsp)
movsd %xmm9, 0x28(%rsp)
callq 0x2170
movsd 0x28(%rsp), %xmm9
movsd 0x20(%rsp), %xmm8
movsd 0x18(%rsp), %xmm7
movsd 0xf0(%rsp), %xmm6
movsd 0x70(%rsp), %xmm5
movsd 0x130(%rsp), %xmm4
mulsd %xmm9, %xmm6
mulsd %xmm8, %xmm5
addsd %xmm6, %xmm5
mulsd %xmm7, %xmm4
addsd %xmm5, %xmm4
divsd %xmm0, %xmm4
movapd %xmm4, %xmm0
callq 0x2190
movapd 0x140(%rsp), %xmm4
unpcklpd 0x30(%rsp), %xmm4       # xmm4 = xmm4[0],mem[0]
movapd 0x50(%rsp), %xmm1
unpcklpd %xmm0, %xmm1            # xmm1 = xmm1[0],xmm0[0]
subpd %xmm1, %xmm4
mulpd 0x4913(%rip), %xmm4     # 0x9040
movq (%rsp), %rax
movq (%rax,%r13), %rax
movsd 0x8(%rax,%rbp), %xmm6
movsd 0x10(%rax,%rbp), %xmm7
movsd 0x18(%rax,%rbp), %xmm5
movsd 0x8(%rax,%r14), %xmm9
movsd 0x10(%rax,%r14), %xmm10
movsd 0x18(%rax,%r14), %xmm8
movsd 0x6a84(%rip), %xmm0     # 0xb1e8
movaps %xmm0, 0x50(%rsp)
movapd %xmm10, %xmm0
mulsd %xmm5, %xmm0
movapd %xmm7, %xmm1
mulsd %xmm8, %xmm1
subsd %xmm0, %xmm1
movapd %xmm8, %xmm0
mulsd %xmm6, %xmm0
movapd %xmm5, %xmm2
mulsd %xmm9, %xmm2
subsd %xmm0, %xmm2
movapd %xmm9, %xmm3
mulsd %xmm7, %xmm3
movapd %xmm6, %xmm0
mulsd %xmm10, %xmm0
subsd %xmm3, %xmm0
mulsd %xmm2, %xmm2
mulsd %xmm1, %xmm1
addsd %xmm2, %xmm1
mulsd %xmm0, %xmm0
addsd %xmm1, %xmm0
ucomisd 0x4851(%rip), %xmm0     # 0x9018
movapd %xmm4, 0x140(%rsp)
jb 0x47d8
sqrtsd %xmm0, %xmm0
jmp 0x4837
movsd %xmm5, 0x30(%rsp)
movsd %xmm6, 0x130(%rsp)
movsd %xmm7, 0x70(%rsp)
movsd %xmm8, 0xf0(%rsp)
movsd %xmm9, 0x18(%rsp)
movsd %xmm10, 0x20(%rsp)
callq 0x2170
movsd 0x20(%rsp), %xmm10
movsd 0x18(%rsp), %xmm9
movsd 0xf0(%rsp), %xmm8
movsd 0x70(%rsp), %xmm7
movsd 0x130(%rsp), %xmm6
movsd 0x30(%rsp), %xmm5
movq 0xb0(%rsp), %rbp
movl 0x60(%rsp), %r14d
mulsd %xmm10, %xmm7
mulsd %xmm9, %xmm6
addsd %xmm7, %xmm6
mulsd %xmm8, %xmm5
addsd %xmm6, %xmm5
divsd %xmm0, %xmm5
movapd %xmm5, %xmm0
callq 0x2190
movapd %xmm0, 0x60(%rsp)
movq (%rsp), %rax
movq (%rax,%r13), %rax
movsd 0x8(%rax,%rbx), %xmm5
movsd 0x10(%rax,%rbx), %xmm6
movsd 0x18(%rax,%rbx), %xmm4
movq 0xd0(%rsp), %rcx
movsd 0x8(%rax,%rcx), %xmm8
movsd 0x10(%rax,%rcx), %xmm9
movsd 0x18(%rax,%rcx), %xmm7
movsd 0x693c(%rip), %xmm0     # 0xb1e8
movaps %xmm0, 0xb0(%rsp)
movapd %xmm9, %xmm0
mulsd %xmm4, %xmm0
movapd %xmm6, %xmm1
mulsd %xmm7, %xmm1
subsd %xmm0, %xmm1
movapd %xmm7, %xmm0
mulsd %xmm5, %xmm0
movapd %xmm4, %xmm2
mulsd %xmm8, %xmm2
subsd %xmm0, %xmm2
movapd %xmm8, %xmm3
mulsd %xmm6, %xmm3
movapd %xmm5, %xmm0
mulsd %xmm9, %xmm0
subsd %xmm3, %xmm0
mulsd %xmm2, %xmm2
mulsd %xmm1, %xmm1
addsd %xmm2, %xmm1
mulsd %xmm0, %xmm0
addsd %xmm1, %xmm0
ucomisd 0x4708(%rip), %xmm0     # 0x9018
jb 0x4918
sqrtsd %xmm0, %xmm0
jmp 0x4975
movsd %xmm4, 0x30(%rsp)
movsd %xmm5, 0x130(%rsp)
movsd %xmm6, 0x70(%rsp)
movsd %xmm7, 0xf0(%rsp)
movsd %xmm8, 0x18(%rsp)
movsd %xmm9, 0x20(%rsp)
callq 0x2170
movsd 0x20(%rsp), %xmm9
movsd 0x18(%rsp), %xmm8
movsd 0xf0(%rsp), %xmm7
movsd 0x70(%rsp), %xmm6
movsd 0x130(%rsp), %xmm5
movsd 0x30(%rsp), %xmm4
mulsd %xmm9, %xmm6
mulsd %xmm8, %xmm5
addsd %xmm6, %xmm5
mulsd %xmm7, %xmm4
addsd %xmm5, %xmm4
divsd %xmm0, %xmm4
movapd %xmm4, %xmm0
callq 0x2190
movapd 0x50(%rsp), %xmm2
unpcklpd 0xb0(%rsp), %xmm2       # xmm2 = xmm2[0],mem[0]
movapd 0x60(%rsp), %xmm1
unpcklpd %xmm0, %xmm1            # xmm1 = xmm1[0],xmm0[0]
subpd %xmm1, %xmm2
mulpd 0x4683(%rip), %xmm2     # 0x9040
xorpd %xmm0, %xmm0
movapd 0x140(%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, 0x50(%rsp)
ucomisd %xmm2, %xmm0
jae 0x4a45
leaq 0x682f(%rip), %rdi      # 0xb228
callq 0x7c48
movsd %xmm0, 0x60(%rsp)
movapd 0x50(%rsp), %xmm0
xorpd 0x464e(%rip), %xmm0     # 0x9060
movsd 0x461e(%rip), %xmm1     # 0x9038
subsd 0xc8(%rsp), %xmm1
mulsd %xmm1, %xmm1
mulsd 0x168(%rsp), %xmm1
divsd %xmm1, %xmm0
callq 0x2330
ucomisd 0x60(%rsp), %xmm0
jbe 0x4b3a
movq (%rsp), %rdi
cmpl %r12d, %r15d
je 0x4b1a
movq (%rdi,%r13), %rcx
movq 0xd0(%rsp), %rax
leaq (%rcx,%rax), %rdx
leaq (%rcx,%rbx), %rax
addq $-0x38, %rax
cmpq %rdx, %rax
jbe 0x4b1a
movq 0xd0(%rsp), %rdx
addq %rdx, %rcx
addq $0x38, %rcx
movq -0x8(%rcx), %rdx
movq %rdx, 0x1c0(%rsp)
movups -0x38(%rcx), %xmm0
movups -0x28(%rcx), %xmm1
movups -0x18(%rcx), %xmm2
movaps %xmm2, 0x1b0(%rsp)
movaps %xmm1, 0x1a0(%rsp)
movaps %xmm0, 0x190(%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 0x1c0(%rsp), %rdx
movq %rdx, 0x30(%rax)
movapd 0x190(%rsp), %xmm0
movapd 0x1a0(%rsp), %xmm1
movapd 0x1b0(%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 0x4a82
addq %r13, %rdi
callq 0x704a
movsd 0x100(%rsp), %xmm0
addsd 0x50(%rsp), %xmm0
movsd %xmm0, 0x100(%rsp)
leaq 0x66e7(%rip), %r13      # 0xb228
cmpl $0x2, 0x90(%rsp)
jl 0x4ffa
cmpl $0x2, %r14d
jne 0x4dc2
movq 0x8(%rsp), %rax
subq (%rsp), %rax
shrq $0x5, %rax
decl %eax
movl $0x0, 0x190(%rsp)
movl %eax, 0x194(%rsp)
leaq 0x190(%rsp), %rbx
movq %rbx, %rdi
movq %r13, %rsi
movq %rbx, %rdx
callq 0x8002
movl %eax, %r12d
movq 0x8(%rsp), %rax
subq (%rsp), %rax
shrq $0x5, %rax
decl %eax
movl $0x0, 0x190(%rsp)
movl %eax, 0x194(%rsp)
movq %rbx, %rdi
movq %r13, %rsi
movq %rbx, %rdx
callq 0x8002
movl %eax, %r15d
cmpl %eax, %r12d
jne 0x4bd1
xorl %eax, %eax
jmp 0x4dba
movslq %r12d, %r12
movq (%rsp), %rax
shlq $0x5, %r12
movq 0x8(%rax,%r12), %rcx
subq (%rax,%r12), %rcx
shrq $0x3, %rcx
imull $0xb6db6db7, %ecx, %eax # imm = 0xB6DB6DB7
decl %eax
movl $0x1, 0x190(%rsp)
movl %eax, 0x194(%rsp)
leaq 0x190(%rsp), %rbx
movq %rbx, %rdi
movq %r13, %rsi
movq %rbx, %rdx
callq 0x8002
movl %eax, 0xb0(%rsp)
movq (%rsp), %rax
movq 0x8(%rax,%r12), %rcx
subq (%rax,%r12), %rcx
shrq $0x3, %rcx
imull $0xb6db6db7, %ecx, %eax # imm = 0xB6DB6DB7
decl %eax
movl $0x1, 0x190(%rsp)
movl %eax, 0x194(%rsp)
movq %rbx, %rdi
movq %r13, %rsi
movq %rbx, %rdx
callq 0x8002
movl %eax, 0x50(%rsp)
movslq %r15d, %r15
movq (%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, 0x190(%rsp)
movl %eax, 0x194(%rsp)
movq %rbx, %rdi
movq %r13, %rsi
movq %rbx, %rdx
callq 0x8002
movl %eax, 0x140(%rsp)
movq (%rsp), %rax
movq 0x8(%rax,%r15), %rcx
subq (%rax,%r15), %rcx
shrq $0x3, %rcx
imull $0xb6db6db7, %ecx, %eax # imm = 0xB6DB6DB7
decl %eax
movl $0x1, 0x190(%rsp)
movl %eax, 0x194(%rsp)
movq %rbx, %rdi
movq %r13, %rsi
movq %rbx, %rdx
callq 0x8002
movl %eax, %r13d
movl 0xb0(%rsp), %edi
movl 0x50(%rsp), %esi
cmpl %esi, %edi
sete %al
movl 0x140(%rsp), %edx
cmpl %r13d, %edx
sete %cl
orb %al, %cl
je 0x4d0f
xorl %eax, %eax
leaq 0x651e(%rip), %r13      # 0xb228
jmp 0x4dba
movl %r14d, 0x60(%rsp)
cmpl %r13d, %edx
movl %r13d, %eax
cmovll %edx, %eax
movl %r13d, %ecx
cmovgl %edx, %ecx
cmpl %esi, %edi
movl %esi, %edx
cmovll %edi, %edx
cmovgl %edi, %esi
movq (%rsp), %rdi
movq (%rdi,%r12), %r10
movslq %edx, %rdx
imulq $0x38, %rdx, %r8
movslq %esi, %rdx
imulq $0x38, %rdx, %r9
movq (%rdi,%r15), %r14
cltq
imulq $0x38, %rax, %rbx
movslq %ecx, %rax
imulq $0x38, %rax, %rdi
movq -0x10(%r10,%r8), %rcx
movq -0x10(%r14,%rbx), %rax
movq 0x30(%r10,%r9), %rdx
addq %rcx, %rdx
subq %rax, %rdx
addq -0x10(%r14,%rdi), %rdx
movq 0x108(%rsp), %rsi
cmpq %rsi, %rdx
jg 0x4dac
leaq (%r14,%rdi), %rdx
subq %rcx, %rax
movq %rdx, 0x90(%rsp)
addq 0x30(%rdx), %rax
movq %r9, 0x28(%rsp)
leaq (%r10,%r9), %rcx
movq %rcx, 0xd0(%rsp)
addq -0x10(%rcx), %rax
cmpq %rsi, %rax
jle 0x5771
xorl %eax, %eax
leaq 0x6473(%rip), %r13      # 0xb228
movl 0x60(%rsp), %r14d
testb %al, %al
je 0x4ffa
cmpl $0x3, %r14d
jne 0x4ffa
movq 0x8(%rsp), %rax
subq (%rsp), %rax
shrq $0x5, %rax
decl %eax
movl $0x0, 0x190(%rsp)
movl %eax, 0x194(%rsp)
leaq 0x190(%rsp), %rbx
movq %rbx, %rdi
movq %r13, %rsi
movq %rbx, %rdx
callq 0x8002
movl %eax, %r14d
movq 0x8(%rsp), %rax
subq (%rsp), %rax
shrq $0x5, %rax
decl %eax
movl $0x0, 0x190(%rsp)
movl %eax, 0x194(%rsp)
movq %rbx, %rdi
movq %r13, %rsi
movq %rbx, %rdx
callq 0x8002
movl %eax, %r15d
movq 0x8(%rsp), %rax
subq (%rsp), %rax
shrq $0x5, %rax
decl %eax
movl $0x0, 0x190(%rsp)
movl %eax, 0x194(%rsp)
movq %rbx, %rdi
movq %r13, %rsi
movq %rbx, %rdx
callq 0x8002
movl %eax, %r12d
cmpl %eax, %r15d
je 0x4ffa
cmpl %r15d, %r14d
je 0x4ffa
cmpl %r12d, %r14d
je 0x4ffa
movq %rbp, 0xb0(%rsp)
movslq %r14d, %rdx
movq (%rsp), %rax
shlq $0x5, %rdx
movq 0x8(%rax,%rdx), %rcx
movq %rdx, 0x60(%rsp)
subq (%rax,%rdx), %rcx
shrq $0x3, %rcx
imull $0xb6db6db7, %ecx, %eax # imm = 0xB6DB6DB7
decl %eax
movl $0x1, 0x190(%rsp)
movl %eax, 0x194(%rsp)
leaq 0x190(%rsp), %rbx
movq %rbx, %rdi
movq %r13, %rsi
movq %rbx, %rdx
callq 0x8002
movl %eax, %ebp
movslq %r15d, %r15
movq (%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, 0x190(%rsp)
movl %eax, 0x194(%rsp)
movq %rbx, %rdi
movq %r13, %rsi
movq %rbx, %rdx
callq 0x8002
movl %eax, %r14d
movslq %r12d, %r12
movq (%rsp), %rax
shlq $0x5, %r12
movq 0x8(%rax,%r12), %rcx
subq (%rax,%r12), %rcx
shrq $0x3, %rcx
imull $0xb6db6db7, %ecx, %eax # imm = 0xB6DB6DB7
decl %eax
movl $0x1, 0x190(%rsp)
movl %eax, 0x194(%rsp)
movq %rbx, %rdi
movq %r13, %rsi
movq %rbx, %rdx
callq 0x8002
movq (%rsp), %rdx
leal -0x1(%rbp), %ecx
movslq %ecx, %rsi
movq 0x60(%rsp), %rcx
movq (%rdx,%rcx), %rcx
imulq $0x38, %rsi, %rbx
movslq %r14d, %r13
movq (%rdx,%r15), %rsi
imulq $0x38, %r13, %r10
movq 0x30(%rsi,%r10), %rdi
addq 0x28(%rcx,%rbx), %rdi
movq 0x108(%rsp), %r8
cmpq %r8, %rdi
jg 0x4feb
decl %r14d
movslq %r14d, %rdi
imulq $0x38, %rdi, %r14
movslq %eax, %r11
movq (%rdx,%r12), %rdx
imulq $0x38, %r11, %r9
movq 0x30(%rdx,%r9), %rdi
addq 0x28(%rsi,%r14), %rdi
cmpq %r8, %rdi
jg 0x4feb
movq %r14, 0x50(%rsp)
decl %eax
cltq
imulq $0x38, %rax, %r14
movslq %ebp, %rdi
imulq $0x38, %rdi, %rsi
movq 0x30(%rcx,%rsi), %rax
movq %r14, 0xd0(%rsp)
addq 0x28(%rdx,%r14), %rax
cmpq %r8, %rax
jle 0x582e
leaq 0x6236(%rip), %r13      # 0xb228
movq 0xb0(%rsp), %rbp
incq %rbp
movabsq $0x45d964b800, %rax     # imm = 0x45D964B800
cmpq %rax, %rbp
jne 0x3e10
jmp 0x6f4b
leaq (%rcx,%r14), %rax
addq %rsi, %rcx
movsd 0x8(%rax), %xmm6
movsd 0x10(%rax), %xmm7
movsd 0x18(%rax), %xmm5
movsd 0x8(%rcx), %xmm9
movsd 0x10(%rcx), %xmm10
movsd 0x18(%rcx), %xmm8
movsd 0x61a3(%rip), %xmm4     # 0xb1e8
movapd %xmm10, %xmm0
mulsd %xmm5, %xmm0
movapd %xmm7, %xmm1
mulsd %xmm8, %xmm1
subsd %xmm0, %xmm1
movapd %xmm8, %xmm0
mulsd %xmm6, %xmm0
movapd %xmm5, %xmm2
mulsd %xmm9, %xmm2
subsd %xmm0, %xmm2
movapd %xmm9, %xmm3
mulsd %xmm7, %xmm3
movapd %xmm6, %xmm0
mulsd %xmm10, %xmm0
subsd %xmm3, %xmm0
mulsd %xmm2, %xmm2
mulsd %xmm1, %xmm1
addsd %xmm2, %xmm1
mulsd %xmm0, %xmm0
addsd %xmm1, %xmm0
ucomisd 0x3f75(%rip), %xmm0     # 0x9018
leaq 0x617e(%rip), %r13      # 0xb228
movq %rsi, 0x90(%rsp)
movq %r9, 0x130(%rsp)
movq %r8, 0x70(%rsp)
movaps %xmm4, 0x140(%rsp)
jb 0x50cf
sqrtsd %xmm0, %xmm0
jmp 0x512e
movsd %xmm5, 0x50(%rsp)
movsd %xmm6, 0xd0(%rsp)
movsd %xmm7, 0x30(%rsp)
movsd %xmm8, 0xf0(%rsp)
movsd %xmm9, 0x18(%rsp)
movsd %xmm10, 0x20(%rsp)
callq 0x2170
movsd 0x20(%rsp), %xmm10
movsd 0x18(%rsp), %xmm9
movsd 0xf0(%rsp), %xmm8
movsd 0x30(%rsp), %xmm7
movsd 0xd0(%rsp), %xmm6
movsd 0x50(%rsp), %xmm5
mulsd %xmm10, %xmm7
mulsd %xmm9, %xmm6
addsd %xmm7, %xmm6
mulsd %xmm8, %xmm5
addsd %xmm6, %xmm5
divsd %xmm0, %xmm5
movapd %xmm5, %xmm0
callq 0x2190
movapd %xmm0, 0x50(%rsp)
movq (%rsp), %rax
movq (%rax,%r12), %rax
movsd 0x8(%rax,%rbx), %xmm5
movsd 0x10(%rax,%rbx), %xmm6
movsd 0x18(%rax,%rbx), %xmm4
movq 0xb0(%rsp), %rcx
movsd 0x8(%rax,%rcx), %xmm8
movsd 0x10(%rax,%rcx), %xmm9
movsd 0x18(%rax,%rcx), %xmm7
movsd 0x6052(%rip), %xmm0     # 0xb1e8
movaps %xmm0, 0xd0(%rsp)
movapd %xmm9, %xmm0
mulsd %xmm4, %xmm0
movapd %xmm6, %xmm1
mulsd %xmm7, %xmm1
subsd %xmm0, %xmm1
movapd %xmm7, %xmm0
mulsd %xmm5, %xmm0
movapd %xmm4, %xmm2
mulsd %xmm8, %xmm2
subsd %xmm0, %xmm2
movapd %xmm8, %xmm3
mulsd %xmm6, %xmm3
movapd %xmm5, %xmm0
mulsd %xmm9, %xmm0
subsd %xmm3, %xmm0
mulsd %xmm2, %xmm2
mulsd %xmm1, %xmm1
addsd %xmm2, %xmm1
mulsd %xmm0, %xmm0
addsd %xmm1, %xmm0
ucomisd 0x3e1e(%rip), %xmm0     # 0x9018
jb 0x5202
sqrtsd %xmm0, %xmm0
jmp 0x525f
movsd %xmm4, 0x30(%rsp)
movsd %xmm5, 0xf0(%rsp)
movsd %xmm6, 0x18(%rsp)
movsd %xmm7, 0x20(%rsp)
movsd %xmm8, 0x28(%rsp)
movsd %xmm9, 0x110(%rsp)
callq 0x2170
movsd 0x110(%rsp), %xmm9
movsd 0x28(%rsp), %xmm8
movsd 0x20(%rsp), %xmm7
movsd 0x18(%rsp), %xmm6
movsd 0xf0(%rsp), %xmm5
movsd 0x30(%rsp), %xmm4
mulsd %xmm9, %xmm6
mulsd %xmm8, %xmm5
addsd %xmm6, %xmm5
mulsd %xmm7, %xmm4
addsd %xmm5, %xmm4
divsd %xmm0, %xmm4
movapd %xmm4, %xmm0
callq 0x2190
movapd 0x140(%rsp), %xmm4
unpcklpd 0xd0(%rsp), %xmm4       # xmm4 = xmm4[0],mem[0]
movapd 0x50(%rsp), %xmm1
unpcklpd %xmm0, %xmm1            # xmm1 = xmm1[0],xmm0[0]
subpd %xmm1, %xmm4
mulpd 0x3d96(%rip), %xmm4     # 0x9040
movq (%rsp), %rax
movq (%rax,%r15), %rcx
movsd 0x8(%rcx,%r14), %xmm6
movsd 0x10(%rcx,%r14), %xmm7
movsd 0x18(%rcx,%r14), %xmm5
movq (%rax,%r12), %rax
movq 0xb0(%rsp), %rcx
movsd 0x8(%rax,%rcx), %xmm9
movsd 0x10(%rax,%rcx), %xmm10
movsd 0x18(%rax,%rcx), %xmm8
movsd 0x5ef8(%rip), %xmm0     # 0xb1e8
movaps %xmm0, 0x50(%rsp)
movapd %xmm10, %xmm0
mulsd %xmm5, %xmm0
movapd %xmm7, %xmm1
mulsd %xmm8, %xmm1
subsd %xmm0, %xmm1
movapd %xmm8, %xmm0
mulsd %xmm6, %xmm0
movapd %xmm5, %xmm2
mulsd %xmm9, %xmm2
subsd %xmm0, %xmm2
movapd %xmm9, %xmm3
mulsd %xmm7, %xmm3
movapd %xmm6, %xmm0
mulsd %xmm10, %xmm0
subsd %xmm3, %xmm0
mulsd %xmm2, %xmm2
mulsd %xmm1, %xmm1
addsd %xmm2, %xmm1
mulsd %xmm0, %xmm0
addsd %xmm1, %xmm0
ucomisd 0x3cc5(%rip), %xmm0     # 0x9018
movapd %xmm4, 0x140(%rsp)
jb 0x5364
sqrtsd %xmm0, %xmm0
jmp 0x53c3
movsd %xmm5, 0xd0(%rsp)
movsd %xmm6, 0x30(%rsp)
movsd %xmm7, 0xf0(%rsp)
movsd %xmm8, 0x18(%rsp)
movsd %xmm9, 0x20(%rsp)
movsd %xmm10, 0x28(%rsp)
callq 0x2170
movsd 0x28(%rsp), %xmm10
movsd 0x20(%rsp), %xmm9
movsd 0x18(%rsp), %xmm8
movsd 0xf0(%rsp), %xmm7
movsd 0x30(%rsp), %xmm6
movsd 0xd0(%rsp), %xmm5
movl 0x60(%rsp), %r14d
mulsd %xmm10, %xmm7
mulsd %xmm9, %xmm6
addsd %xmm7, %xmm6
mulsd %xmm8, %xmm5
addsd %xmm6, %xmm5
divsd %xmm0, %xmm5
movapd %xmm5, %xmm0
callq 0x2190
movapd %xmm0, 0xd0(%rsp)
movq (%rsp), %rax
movq (%rax,%r12), %rcx
movsd 0x8(%rcx,%rbx), %xmm5
movsd 0x10(%rcx,%rbx), %xmm6
movsd 0x18(%rcx,%rbx), %xmm4
movq (%rax,%r15), %rax
movq 0x90(%rsp), %rcx
movsd 0x8(%rax,%rcx), %xmm8
movsd 0x10(%rax,%rcx), %xmm9
movsd 0x18(%rax,%rcx), %xmm7
movsd 0x5db1(%rip), %xmm0     # 0xb1e8
movaps %xmm0, 0x30(%rsp)
movapd %xmm9, %xmm0
mulsd %xmm4, %xmm0
movapd %xmm6, %xmm1
mulsd %xmm7, %xmm1
subsd %xmm0, %xmm1
movapd %xmm7, %xmm0
mulsd %xmm5, %xmm0
movapd %xmm4, %xmm2
mulsd %xmm8, %xmm2
subsd %xmm0, %xmm2
movapd %xmm8, %xmm3
mulsd %xmm6, %xmm3
movapd %xmm5, %xmm0
mulsd %xmm9, %xmm0
subsd %xmm3, %xmm0
mulsd %xmm2, %xmm2
mulsd %xmm1, %xmm1
addsd %xmm2, %xmm1
mulsd %xmm0, %xmm0
addsd %xmm1, %xmm0
ucomisd 0x3b80(%rip), %xmm0     # 0x9018
jb 0x54a0
sqrtsd %xmm0, %xmm0
jmp 0x5503
movsd %xmm4, 0xf0(%rsp)
movsd %xmm5, 0x18(%rsp)
movsd %xmm6, 0x20(%rsp)
movsd %xmm7, 0x28(%rsp)
movsd %xmm8, 0x110(%rsp)
movsd %xmm9, 0xe0(%rsp)
callq 0x2170
movsd 0xe0(%rsp), %xmm9
movsd 0x110(%rsp), %xmm8
movsd 0x28(%rsp), %xmm7
movsd 0x20(%rsp), %xmm6
movsd 0x18(%rsp), %xmm5
movsd 0xf0(%rsp), %xmm4
movq 0xb0(%rsp), %rbx
mulsd %xmm9, %xmm6
mulsd %xmm8, %xmm5
addsd %xmm6, %xmm5
mulsd %xmm7, %xmm4
addsd %xmm5, %xmm4
divsd %xmm0, %xmm4
movapd %xmm4, %xmm0
callq 0x2190
movapd 0x50(%rsp), %xmm1
unpcklpd 0x30(%rsp), %xmm1       # xmm1 = xmm1[0],mem[0]
movapd 0xd0(%rsp), %xmm2
unpcklpd %xmm0, %xmm2            # xmm2 = xmm2[0],xmm0[0]
subpd %xmm2, %xmm1
mulpd 0x3aed(%rip), %xmm1     # 0x9040
xorpd %xmm0, %xmm0
movapd 0x140(%rsp), %xmm2
subsd %xmm2, %xmm0
unpckhpd %xmm2, %xmm2            # xmm2 = xmm2[1,1]
subsd %xmm2, %xmm0
addsd %xmm1, %xmm0
unpckhpd %xmm1, %xmm1            # xmm1 = xmm1[1,1]
addsd %xmm0, %xmm1
xorpd %xmm0, %xmm0
movapd %xmm1, 0x50(%rsp)
ucomisd %xmm1, %xmm0
jae 0x55df
movq %r13, %rdi
callq 0x7c48
movsd %xmm0, 0x140(%rsp)
movapd 0x50(%rsp), %xmm0
xorpd 0x3ab9(%rip), %xmm0     # 0x9060
movsd 0x3a89(%rip), %xmm1     # 0x9038
subsd 0xc8(%rsp), %xmm1
mulsd %xmm1, %xmm1
mulsd 0x168(%rsp), %xmm1
divsd %xmm1, %xmm0
callq 0x2330
movb $0x1, %al
ucomisd 0x140(%rsp), %xmm0
jbe 0x4381
movq (%rsp), %rax
leaq (%rax,%r15), %rdi
movq 0x8(%rax,%r15), %rsi
movq %rsi, %r14
subq (%rax,%r15), %r14
movq (%rax,%r12), %rcx
movq 0x8(%rax,%r12), %rax
subq %rcx, %rax
shrq $0x3, %rax
imull $0xb6db6db7, %eax, %eax # imm = 0xB6DB6DB7
leaq (%rcx,%rbx), %rdx
movslq %eax, %rbx
imulq $0x38, %rbx, %rax
movq %rax, 0x140(%rsp)
addq %rax, %rcx
callq 0x763c
shrq $0x3, %r14
imull $0xb6db6db7, %r14d, %eax # imm = 0xB6DB6DB7
movq (%rsp), %rcx
leaq (%rcx,%r12), %rdi
movq 0x8(%rcx,%r12), %rsi
movq (%rcx,%r15), %rcx
movq 0x90(%rsp), %rdx
addq %rcx, %rdx
movslq %eax, %r14
imulq $0x38, %r14, %r13
addq %r13, %rcx
callq 0x763c
cmpq 0x70(%rsp), %r14
movq 0x130(%rsp), %r8
movq 0x90(%rsp), %rdi
je 0x56c1
movq (%rsp), %r14
movq (%r14,%r15), %rax
addq %r15, %r14
addq %rax, %rdi
addq %rax, %r13
movq 0x8(%r14), %rdx
subq %r13, %rdx
je 0x56ab
movq %rdi, 0x90(%rsp)
movq %r13, %rsi
callq 0x22b0
movq 0x90(%rsp), %rdi
movq 0x130(%rsp), %r8
movq 0x8(%r14), %rax
movq %rax, %rcx
subq %r13, %rcx
addq %rcx, %rdi
cmpq %rdi, %rax
je 0x56c1
movq %rdi, 0x8(%r14)
cmpq %r8, %rbx
leaq 0x5b5d(%rip), %r13      # 0xb228
movl 0x60(%rsp), %r14d
je 0x573a
movq (%rsp), %rdi
movq (%rdi,%r12), %rax
addq %r12, %rdi
movq 0xb0(%rsp), %rbx
addq %rax, %rbx
movq 0x140(%rsp), %rsi
addq %rax, %rsi
movq 0x8(%rdi), %rdx
subq %rsi, %rdx
je 0x5724
movq %rdi, 0xb0(%rsp)
movq %rbx, %rdi
movq %rsi, 0x140(%rsp)
callq 0x22b0
movq 0xb0(%rsp), %rdi
movq 0x140(%rsp), %rsi
movq 0x8(%rdi), %rax
movq %rax, %rcx
subq %rsi, %rcx
addq %rcx, %rbx
cmpq %rbx, %rax
je 0x573a
movq %rbx, 0x8(%rdi)
addq (%rsp), %r15
movq %r15, %rdi
callq 0x704a
addq (%rsp), %r12
movq %r12, %rdi
callq 0x704a
movsd 0x100(%rsp), %xmm0
addsd 0x50(%rsp), %xmm0
movsd %xmm0, 0x100(%rsp)
movb $0x1, %al
jmp 0x4381
leaq (%r10,%r8), %rax
movsd -0x30(%rax), %xmm5
movsd -0x28(%rax), %xmm6
movq %rax, 0xf0(%rsp)
movsd -0x20(%rax), %xmm4
movsd 0x8(%r10,%r8), %xmm8
movsd 0x10(%r10,%r8), %xmm9
movsd 0x18(%r10,%r8), %xmm7
movsd 0x5a3f(%rip), %xmm0     # 0xb1e8
movaps %xmm0, 0x130(%rsp)
movapd %xmm9, %xmm0
mulsd %xmm4, %xmm0
movapd %xmm6, %xmm1
mulsd %xmm7, %xmm1
subsd %xmm0, %xmm1
movapd %xmm7, %xmm0
mulsd %xmm5, %xmm0
movapd %xmm4, %xmm2
mulsd %xmm8, %xmm2
subsd %xmm0, %xmm2
movapd %xmm8, %xmm3
mulsd %xmm6, %xmm3
movapd %xmm5, %xmm0
mulsd %xmm9, %xmm0
subsd %xmm3, %xmm0
mulsd %xmm2, %xmm2
mulsd %xmm1, %xmm1
addsd %xmm2, %xmm1
mulsd %xmm0, %xmm0
addsd %xmm1, %xmm0
ucomisd 0x380b(%rip), %xmm0     # 0x9018
movq %rdi, 0x20(%rsp)
movq %r8, 0x18(%rsp)
movq %r10, 0x110(%rsp)
jb 0x5909
sqrtsd %xmm0, %xmm0
jmp 0x596c
movq %r13, 0x18(%rsp)
movq %r11, 0xf0(%rsp)
movq %r10, 0x140(%rsp)
leaq (%rcx,%rbx), %rax
movq %rsi, 0x130(%rsp)
addq %rsi, %rcx
movsd 0x8(%rax), %xmm5
movsd 0x10(%rax), %xmm6
movsd 0x18(%rax), %xmm4
movsd 0x8(%rcx), %xmm8
movsd 0x10(%rcx), %xmm9
movsd 0x18(%rcx), %xmm7
movsd 0x596e(%rip), %xmm0     # 0xb1e8
movaps %xmm0, 0x90(%rsp)
movapd %xmm9, %xmm0
mulsd %xmm4, %xmm0
movapd %xmm6, %xmm1
mulsd %xmm7, %xmm1
subsd %xmm0, %xmm1
movapd %xmm7, %xmm0
mulsd %xmm5, %xmm0
movapd %xmm4, %xmm2
mulsd %xmm8, %xmm2
subsd %xmm0, %xmm2
movapd %xmm8, %xmm3
mulsd %xmm6, %xmm3
movapd %xmm5, %xmm0
mulsd %xmm9, %xmm0
subsd %xmm3, %xmm0
mulsd %xmm2, %xmm2
mulsd %xmm1, %xmm1
addsd %xmm2, %xmm1
mulsd %xmm0, %xmm0
addsd %xmm1, %xmm0
ucomisd 0x373a(%rip), %xmm0     # 0x9018
leaq 0x5943(%rip), %r13      # 0xb228
movq 0xb0(%rsp), %rbp
movq %r9, 0x108(%rsp)
movq %rdi, 0x20(%rsp)
jb 0x64fa
sqrtsd %xmm0, %xmm0
jmp 0x655d
movsd %xmm4, 0x30(%rsp)
movsd %xmm5, 0x70(%rsp)
movsd %xmm6, 0xe0(%rsp)
movsd %xmm7, 0x80(%rsp)
movsd %xmm8, 0x120(%rsp)
movsd %xmm9, 0x48(%rsp)
callq 0x2170
movsd 0x48(%rsp), %xmm9
movsd 0x120(%rsp), %xmm8
movsd 0x80(%rsp), %xmm7
movsd 0xe0(%rsp), %xmm6
movsd 0x70(%rsp), %xmm5
movsd 0x30(%rsp), %xmm4
mulsd %xmm9, %xmm6
mulsd %xmm8, %xmm5
addsd %xmm6, %xmm5
mulsd %xmm7, %xmm4
addsd %xmm5, %xmm4
divsd %xmm0, %xmm4
movapd %xmm4, %xmm0
callq 0x2190
movapd %xmm0, 0x70(%rsp)
movq 0xd0(%rsp), %rax
movsd -0x30(%rax), %xmm5
movsd -0x28(%rax), %xmm6
movsd -0x20(%rax), %xmm4
movsd 0x8(%rax), %xmm8
movsd 0x10(%rax), %xmm9
movsd 0x18(%rax), %xmm7
movsd 0x5823(%rip), %xmm0     # 0xb1e8
movaps %xmm0, 0xe0(%rsp)
movapd %xmm9, %xmm0
mulsd %xmm4, %xmm0
movapd %xmm6, %xmm1
mulsd %xmm7, %xmm1
subsd %xmm0, %xmm1
movapd %xmm7, %xmm0
mulsd %xmm5, %xmm0
movapd %xmm4, %xmm2
mulsd %xmm8, %xmm2
subsd %xmm0, %xmm2
movapd %xmm8, %xmm3
mulsd %xmm6, %xmm3
movapd %xmm5, %xmm0
mulsd %xmm9, %xmm0
subsd %xmm3, %xmm0
mulsd %xmm2, %xmm2
mulsd %xmm1, %xmm1
addsd %xmm2, %xmm1
mulsd %xmm0, %xmm0
addsd %xmm1, %xmm0
ucomisd 0x35ef(%rip), %xmm0     # 0x9018
jb 0x5a31
sqrtsd %xmm0, %xmm0
jmp 0x5a9a
movsd %xmm4, 0x30(%rsp)
movsd %xmm5, 0x80(%rsp)
movsd %xmm6, 0x120(%rsp)
movsd %xmm7, 0x48(%rsp)
movsd %xmm8, 0xa8(%rsp)
movsd %xmm9, 0x158(%rsp)
callq 0x2170
movsd 0x158(%rsp), %xmm9
movsd 0xa8(%rsp), %xmm8
movsd 0x48(%rsp), %xmm7
movsd 0x120(%rsp), %xmm6
movsd 0x80(%rsp), %xmm5
movsd 0x30(%rsp), %xmm4
movq %rbx, 0x30(%rsp)
movq 0x30(%rsp), %rax
leaq (%r14,%rax), %rbx
mulsd %xmm9, %xmm6
mulsd %xmm8, %xmm5
addsd %xmm6, %xmm5
mulsd %xmm7, %xmm4
addsd %xmm5, %xmm4
divsd %xmm0, %xmm4
movapd %xmm4, %xmm0
callq 0x2190
movapd 0x130(%rsp), %xmm1
unpcklpd 0xe0(%rsp), %xmm1       # xmm1 = xmm1[0],mem[0]
movapd 0x70(%rsp), %xmm2
unpcklpd %xmm0, %xmm2            # xmm2 = xmm2[0],xmm0[0]
subpd %xmm2, %xmm1
mulpd 0x354d(%rip), %xmm1     # 0x9040
movapd %xmm1, 0x130(%rsp)
movsd -0x30(%rbx), %xmm5
movsd -0x28(%rbx), %xmm6
movq %rbx, 0xe0(%rsp)
movsd -0x20(%rbx), %xmm4
movq 0x30(%rsp), %rbx
movsd 0x8(%r14,%rbx), %xmm8
movsd 0x10(%r14,%rbx), %xmm9
movsd 0x18(%r14,%rbx), %xmm7
movsd 0x56b3(%rip), %xmm0     # 0xb1e8
movaps %xmm0, 0x70(%rsp)
movapd %xmm9, %xmm0
mulsd %xmm4, %xmm0
movapd %xmm6, %xmm1
mulsd %xmm7, %xmm1
subsd %xmm0, %xmm1
movapd %xmm7, %xmm0
mulsd %xmm5, %xmm0
movapd %xmm4, %xmm2
mulsd %xmm8, %xmm2
subsd %xmm0, %xmm2
movapd %xmm8, %xmm3
mulsd %xmm6, %xmm3
movapd %xmm5, %xmm0
mulsd %xmm9, %xmm0
subsd %xmm3, %xmm0
mulsd %xmm2, %xmm2
mulsd %xmm1, %xmm1
addsd %xmm2, %xmm1
mulsd %xmm0, %xmm0
addsd %xmm1, %xmm0
ucomisd 0x3482(%rip), %xmm0     # 0x9018
jb 0x5b9e
sqrtsd %xmm0, %xmm0
jmp 0x5c0d
movsd %xmm4, 0x80(%rsp)
movsd %xmm5, 0x120(%rsp)
movsd %xmm6, 0x48(%rsp)
movsd %xmm7, 0xa8(%rsp)
movsd %xmm8, 0x158(%rsp)
movsd %xmm9, 0x160(%rsp)
callq 0x2170
movsd 0x160(%rsp), %xmm9
movsd 0x158(%rsp), %xmm8
movsd 0xa8(%rsp), %xmm7
movsd 0x48(%rsp), %xmm6
movsd 0x120(%rsp), %xmm5
movsd 0x80(%rsp), %xmm4
mulsd %xmm9, %xmm6
mulsd %xmm8, %xmm5
addsd %xmm6, %xmm5
mulsd %xmm7, %xmm4
addsd %xmm5, %xmm4
divsd %xmm0, %xmm4
movapd %xmm4, %xmm0
callq 0x2190
movapd %xmm0, 0x80(%rsp)
movq 0x90(%rsp), %rax
movsd -0x30(%rax), %xmm5
movsd -0x28(%rax), %xmm6
movsd -0x20(%rax), %xmm4
movsd 0x8(%rax), %xmm8
movsd 0x10(%rax), %xmm9
movsd 0x18(%rax), %xmm7
movsd 0x557f(%rip), %xmm0     # 0xb1e8
movaps %xmm0, 0x120(%rsp)
movapd %xmm9, %xmm0
mulsd %xmm4, %xmm0
movapd %xmm6, %xmm1
mulsd %xmm7, %xmm1
subsd %xmm0, %xmm1
movapd %xmm7, %xmm0
mulsd %xmm5, %xmm0
movapd %xmm4, %xmm2
mulsd %xmm8, %xmm2
subsd %xmm0, %xmm2
movapd %xmm8, %xmm3
mulsd %xmm6, %xmm3
movapd %xmm5, %xmm0
mulsd %xmm9, %xmm0
subsd %xmm3, %xmm0
mulsd %xmm2, %xmm2
mulsd %xmm1, %xmm1
addsd %xmm2, %xmm1
mulsd %xmm0, %xmm0
addsd %xmm1, %xmm0
ucomisd 0x334b(%rip), %xmm0     # 0x9018
jb 0x5cd5
sqrtsd %xmm0, %xmm0
jmp 0x5d44
movsd %xmm4, 0x48(%rsp)
movsd %xmm5, 0xa8(%rsp)
movsd %xmm6, 0x158(%rsp)
movsd %xmm7, 0x160(%rsp)
movsd %xmm8, 0x170(%rsp)
movsd %xmm9, 0x188(%rsp)
callq 0x2170
movsd 0x188(%rsp), %xmm9
movsd 0x170(%rsp), %xmm8
movsd 0x160(%rsp), %xmm7
movsd 0x158(%rsp), %xmm6
movsd 0xa8(%rsp), %xmm5
movsd 0x48(%rsp), %xmm4
addq %r14, %rbx
addq $0x8, %rbx
mulsd %xmm9, %xmm6
mulsd %xmm8, %xmm5
addsd %xmm6, %xmm5
mulsd %xmm7, %xmm4
addsd %xmm5, %xmm4
divsd %xmm0, %xmm4
movapd %xmm4, %xmm0
callq 0x2190
movapd 0x70(%rsp), %xmm1
unpcklpd 0x120(%rsp), %xmm1      # xmm1 = xmm1[0],mem[0]
movapd 0x80(%rsp), %xmm2
unpcklpd %xmm0, %xmm2            # xmm2 = xmm2[0],xmm0[0]
subpd %xmm2, %xmm1
mulpd 0x32aa(%rip), %xmm1     # 0x9040
movapd %xmm1, 0x70(%rsp)
movq 0xf0(%rsp), %rax
movsd -0x30(%rax), %xmm5
movsd -0x28(%rax), %xmm6
movsd -0x20(%rax), %xmm4
movsd (%rbx), %xmm8
movsd 0x8(%rbx), %xmm9
movsd 0x10(%rbx), %xmm7
movsd 0x541d(%rip), %xmm0     # 0xb1e8
movaps %xmm0, 0xf0(%rsp)
movapd %xmm9, %xmm0
mulsd %xmm4, %xmm0
movapd %xmm6, %xmm1
mulsd %xmm7, %xmm1
subsd %xmm0, %xmm1
movapd %xmm7, %xmm0
mulsd %xmm5, %xmm0
movapd %xmm4, %xmm2
mulsd %xmm8, %xmm2
subsd %xmm0, %xmm2
movapd %xmm8, %xmm3
mulsd %xmm6, %xmm3
movapd %xmm5, %xmm0
mulsd %xmm9, %xmm0
subsd %xmm3, %xmm0
mulsd %xmm2, %xmm2
mulsd %xmm1, %xmm1
addsd %xmm2, %xmm1
mulsd %xmm0, %xmm0
addsd %xmm1, %xmm0
ucomisd 0x31e9(%rip), %xmm0     # 0x9018
jb 0x5e37
sqrtsd %xmm0, %xmm0
jmp 0x5ea6
movsd %xmm4, 0x80(%rsp)
movsd %xmm5, 0x120(%rsp)
movsd %xmm6, 0x48(%rsp)
movsd %xmm7, 0xa8(%rsp)
movsd %xmm8, 0x158(%rsp)
movsd %xmm9, 0x160(%rsp)
callq 0x2170
movsd 0x160(%rsp), %xmm9
movsd 0x158(%rsp), %xmm8
movsd 0xa8(%rsp), %xmm7
movsd 0x48(%rsp), %xmm6
movsd 0x120(%rsp), %xmm5
movsd 0x80(%rsp), %xmm4
movl 0x60(%rsp), %r14d
mulsd %xmm9, %xmm6
mulsd %xmm8, %xmm5
addsd %xmm6, %xmm5
mulsd %xmm7, %xmm4
addsd %xmm5, %xmm4
divsd %xmm0, %xmm4
movapd %xmm4, %xmm0
callq 0x2190
movapd %xmm0, 0x60(%rsp)
movq 0xd0(%rsp), %rax
movsd -0x30(%rax), %xmm5
movsd -0x28(%rax), %xmm6
movsd -0x20(%rax), %xmm4
movq 0x90(%rsp), %rax
movsd 0x8(%rax), %xmm8
movsd 0x10(%rax), %xmm9
movsd 0x18(%rax), %xmm7
movsd 0x52dc(%rip), %xmm0     # 0xb1e8
movaps %xmm0, 0x80(%rsp)
movapd %xmm9, %xmm0
mulsd %xmm4, %xmm0
movapd %xmm6, %xmm1
mulsd %xmm7, %xmm1
subsd %xmm0, %xmm1
movapd %xmm7, %xmm0
mulsd %xmm5, %xmm0
movapd %xmm4, %xmm2
mulsd %xmm8, %xmm2
subsd %xmm0, %xmm2
movapd %xmm8, %xmm3
mulsd %xmm6, %xmm3
movapd %xmm5, %xmm0
mulsd %xmm9, %xmm0
subsd %xmm3, %xmm0
mulsd %xmm2, %xmm2
mulsd %xmm1, %xmm1
addsd %xmm2, %xmm1
mulsd %xmm0, %xmm0
addsd %xmm1, %xmm0
ucomisd 0x30a8(%rip), %xmm0     # 0x9018
jb 0x5f78
sqrtsd %xmm0, %xmm0
jmp 0x5fe7
movsd %xmm4, 0x120(%rsp)
movsd %xmm5, 0x48(%rsp)
movsd %xmm6, 0xa8(%rsp)
movsd %xmm7, 0x158(%rsp)
movsd %xmm8, 0x160(%rsp)
movsd %xmm9, 0x170(%rsp)
callq 0x2170
movsd 0x170(%rsp), %xmm9
movsd 0x160(%rsp), %xmm8
movsd 0x158(%rsp), %xmm7
movsd 0xa8(%rsp), %xmm6
movsd 0x48(%rsp), %xmm5
movsd 0x120(%rsp), %xmm4
movq 0x18(%rsp), %rax
movq 0x110(%rsp), %rcx
leaq (%rcx,%rax), %rbx
addq $0x8, %rbx
mulsd %xmm9, %xmm6
mulsd %xmm8, %xmm5
addsd %xmm6, %xmm5
mulsd %xmm7, %xmm4
addsd %xmm5, %xmm4
divsd %xmm0, %xmm4
movapd %xmm4, %xmm0
callq 0x2190
movapd 0xf0(%rsp), %xmm1
unpcklpd 0x80(%rsp), %xmm1       # xmm1 = xmm1[0],mem[0]
movapd 0x60(%rsp), %xmm2
unpcklpd %xmm0, %xmm2            # xmm2 = xmm2[0],xmm0[0]
subpd %xmm2, %xmm1
mulpd 0x2ff9(%rip), %xmm1     # 0x9040
movapd %xmm1, 0xf0(%rsp)
movq 0xe0(%rsp), %rax
movsd -0x30(%rax), %xmm5
movsd -0x28(%rax), %xmm6
movsd -0x20(%rax), %xmm4
movsd (%rbx), %xmm8
movsd 0x8(%rbx), %xmm9
movsd 0x10(%rbx), %xmm7
movsd 0x5169(%rip), %xmm0     # 0xb1e8
movaps %xmm0, 0x60(%rsp)
movapd %xmm9, %xmm0
mulsd %xmm4, %xmm0
movapd %xmm6, %xmm1
mulsd %xmm7, %xmm1
subsd %xmm0, %xmm1
movapd %xmm7, %xmm0
mulsd %xmm5, %xmm0
movapd %xmm4, %xmm2
mulsd %xmm8, %xmm2
subsd %xmm0, %xmm2
movapd %xmm8, %xmm3
mulsd %xmm6, %xmm3
movapd %xmm5, %xmm0
mulsd %xmm9, %xmm0
subsd %xmm3, %xmm0
mulsd %xmm2, %xmm2
mulsd %xmm1, %xmm1
addsd %xmm2, %xmm1
mulsd %xmm0, %xmm0
addsd %xmm1, %xmm0
ucomisd 0x2f38(%rip), %xmm0     # 0x9018
jb 0x60e8
sqrtsd %xmm0, %xmm0
jmp 0x6157
movsd %xmm4, 0x110(%rsp)
movsd %xmm5, 0xe0(%rsp)
movsd %xmm6, 0x80(%rsp)
movsd %xmm7, 0x120(%rsp)
movsd %xmm8, 0x48(%rsp)
movsd %xmm9, 0xa8(%rsp)
callq 0x2170
movsd 0xa8(%rsp), %xmm9
movsd 0x48(%rsp), %xmm8
movsd 0x120(%rsp), %xmm7
movsd 0x80(%rsp), %xmm6
movsd 0xe0(%rsp), %xmm5
movsd 0x110(%rsp), %xmm4
movq 0x30(%rsp), %rbx
mulsd %xmm9, %xmm6
mulsd %xmm8, %xmm5
addsd %xmm6, %xmm5
mulsd %xmm7, %xmm4
addsd %xmm5, %xmm4
divsd %xmm0, %xmm4
movapd %xmm4, %xmm0
callq 0x2190
movapd %xmm0, 0x110(%rsp)
movq 0x90(%rsp), %rax
movsd -0x30(%rax), %xmm5
movsd -0x28(%rax), %xmm6
movsd -0x20(%rax), %xmm4
movq 0xd0(%rsp), %rax
movsd 0x8(%rax), %xmm8
movsd 0x10(%rax), %xmm9
movsd 0x18(%rax), %xmm7
movsd 0x5028(%rip), %xmm0     # 0xb1e8
movaps %xmm0, 0x90(%rsp)
movapd %xmm9, %xmm0
mulsd %xmm4, %xmm0
movapd %xmm6, %xmm1
mulsd %xmm7, %xmm1
subsd %xmm0, %xmm1
movapd %xmm7, %xmm0
mulsd %xmm5, %xmm0
movapd %xmm4, %xmm2
mulsd %xmm8, %xmm2
subsd %xmm0, %xmm2
movapd %xmm8, %xmm3
mulsd %xmm6, %xmm3
movapd %xmm5, %xmm0
mulsd %xmm9, %xmm0
subsd %xmm3, %xmm0
mulsd %xmm2, %xmm2
mulsd %xmm1, %xmm1
addsd %xmm2, %xmm1
mulsd %xmm0, %xmm0
addsd %xmm1, %xmm0
ucomisd 0x2df4(%rip), %xmm0     # 0x9018
jb 0x622c
sqrtsd %xmm0, %xmm0
jmp 0x629b
movsd %xmm4, 0xd0(%rsp)
movsd %xmm5, 0xe0(%rsp)
movsd %xmm6, 0x80(%rsp)
movsd %xmm7, 0x120(%rsp)
movsd %xmm8, 0x48(%rsp)
movsd %xmm9, 0xa8(%rsp)
callq 0x2170
movsd 0xa8(%rsp), %xmm9
movsd 0x48(%rsp), %xmm8
movsd 0x120(%rsp), %xmm7
movsd 0x80(%rsp), %xmm6
movsd 0xe0(%rsp), %xmm5
movsd 0xd0(%rsp), %xmm4
mulsd %xmm9, %xmm6
mulsd %xmm8, %xmm5
addsd %xmm6, %xmm5
mulsd %xmm7, %xmm4
addsd %xmm5, %xmm4
divsd %xmm0, %xmm4
movapd %xmm4, %xmm0
callq 0x2190
movapd 0x60(%rsp), %xmm2
unpcklpd 0x90(%rsp), %xmm2       # xmm2 = xmm2[0],mem[0]
movapd 0x110(%rsp), %xmm1
unpcklpd %xmm0, %xmm1            # xmm1 = xmm1[0],xmm0[0]
subpd %xmm1, %xmm2
mulpd 0x2d5a(%rip), %xmm2     # 0x9040
xorpd %xmm0, %xmm0
movapd 0x130(%rsp), %xmm1
subsd %xmm1, %xmm0
unpckhpd %xmm1, %xmm1            # xmm1 = xmm1[1,1]
subsd %xmm1, %xmm0
movapd 0x70(%rsp), %xmm1
subsd %xmm1, %xmm0
unpckhpd %xmm1, %xmm1            # xmm1 = xmm1[1,1]
subsd %xmm1, %xmm0
movapd 0xf0(%rsp), %xmm1
addsd %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, 0x60(%rsp)
ucomisd %xmm2, %xmm0
jae 0x639d
leaq 0x4edf(%rip), %rdi      # 0xb228
callq 0x7c48
movsd %xmm0, 0x90(%rsp)
movapd 0x60(%rsp), %xmm0
xorpd 0x2cfb(%rip), %xmm0     # 0x9060
movsd 0x2ccb(%rip), %xmm1     # 0x9038
subsd 0xc8(%rsp), %xmm1
mulsd %xmm1, %xmm1
mulsd 0x168(%rsp), %xmm1
divsd %xmm1, %xmm0
callq 0x2330
movb $0x1, %al
ucomisd 0x90(%rsp), %xmm0
jbe 0x4d03
movl %r13d, 0x90(%rsp)
movq (%rsp), %rax
leaq (%rax,%r12), %rdi
movq (%rax,%r12), %rsi
movq 0x28(%rsp), %r13
addq %r13, %rsi
movq (%rax,%r15), %rcx
leaq (%rcx,%rbx), %rdx
movq 0x20(%rsp), %rbx
addq %rbx, %rcx
callq 0x763c
movq (%rsp), %rax
leaq (%rax,%r15), %rdi
movq (%rax,%r15), %rsi
addq %rbx, %rsi
movq (%rax,%r12), %rcx
movq 0x18(%rsp), %rax
leaq (%rcx,%rax), %rdx
addq %r13, %rcx
callq 0x763c
movl 0x50(%rsp), %eax
cmpl %eax, 0xb0(%rsp)
movq 0x20(%rsp), %rsi
movq 0x18(%rsp), %rdi
je 0x6450
movq (%rsp), %rbx
movq (%rbx,%r12), %rax
addq %r12, %rbx
addq %rax, %rdi
addq %rax, %r13
movq 0x8(%rbx), %rdx
subq %r13, %rdx
je 0x643a
movq %r13, %rsi
movq %rdi, 0x18(%rsp)
callq 0x22b0
movq 0x18(%rsp), %rdi
movq 0x20(%rsp), %rsi
movq 0x8(%rbx), %rax
movq %rax, %rcx
subq %r13, %rcx
addq %rcx, %rdi
cmpq %rdi, %rax
je 0x6450
movq %rdi, 0x8(%rbx)
movl 0x90(%rsp), %eax
cmpl %eax, 0x140(%rsp)
leaq 0x4dc3(%rip), %r13      # 0xb228
je 0x64c3
movq (%rsp), %rdi
movq (%rdi,%r15), %rax
addq %r15, %rdi
movq 0x30(%rsp), %rbx
addq %rax, %rbx
addq %rax, %rsi
movq 0x8(%rdi), %rdx
subq %rsi, %rdx
je 0x64ad
movq %rsi, 0x20(%rsp)
movq %rdi, 0xb0(%rsp)
movq %rbx, %rdi
movq 0x20(%rsp), %rsi
callq 0x22b0
movq 0xb0(%rsp), %rdi
movq 0x20(%rsp), %rsi
movq 0x8(%rdi), %rax
movq %rax, %rcx
subq %rsi, %rcx
addq %rcx, %rbx
cmpq %rbx, %rax
je 0x64c3
movq %rbx, 0x8(%rdi)
addq (%rsp), %r12
movq %r12, %rdi
callq 0x704a
addq (%rsp), %r15
movq %r15, %rdi
callq 0x704a
movsd 0x100(%rsp), %xmm0
addsd 0x60(%rsp), %xmm0
movsd %xmm0, 0x100(%rsp)
movb $0x1, %al
jmp 0x4dba
movsd %xmm4, 0x30(%rsp)
movsd %xmm5, 0x70(%rsp)
movsd %xmm6, 0x28(%rsp)
movsd %xmm7, 0x110(%rsp)
movsd %xmm8, 0xe0(%rsp)
movsd %xmm9, 0x80(%rsp)
callq 0x2170
movsd 0x80(%rsp), %xmm9
movsd 0xe0(%rsp), %xmm8
movsd 0x110(%rsp), %xmm7
movsd 0x28(%rsp), %xmm6
movsd 0x70(%rsp), %xmm5
movsd 0x30(%rsp), %xmm4
movq 0x50(%rsp), %r14
mulsd %xmm9, %xmm6
mulsd %xmm8, %xmm5
addsd %xmm6, %xmm5
mulsd %xmm7, %xmm4
addsd %xmm5, %xmm4
divsd %xmm0, %xmm4
movapd %xmm4, %xmm0
callq 0x2190
movapd %xmm0, 0x50(%rsp)
movq (%rsp), %rax
movq (%rax,%r15), %rax
movsd 0x8(%rax,%r14), %xmm5
movsd 0x10(%rax,%r14), %xmm6
movsd 0x18(%rax,%r14), %xmm4
movq 0x140(%rsp), %rcx
movsd 0x8(%rax,%rcx), %xmm8
movsd 0x10(%rax,%rcx), %xmm9
movsd 0x18(%rax,%rcx), %xmm7
movsd 0x4c1c(%rip), %xmm0     # 0xb1e8
movaps %xmm0, 0x30(%rsp)
movapd %xmm9, %xmm0
mulsd %xmm4, %xmm0
movapd %xmm6, %xmm1
mulsd %xmm7, %xmm1
subsd %xmm0, %xmm1
movapd %xmm7, %xmm0
mulsd %xmm5, %xmm0
movapd %xmm4, %xmm2
mulsd %xmm8, %xmm2
subsd %xmm0, %xmm2
movapd %xmm8, %xmm3
mulsd %xmm6, %xmm3
movapd %xmm5, %xmm0
mulsd %xmm9, %xmm0
subsd %xmm3, %xmm0
mulsd %xmm2, %xmm2
mulsd %xmm1, %xmm1
addsd %xmm2, %xmm1
mulsd %xmm0, %xmm0
addsd %xmm1, %xmm0
ucomisd 0x29eb(%rip), %xmm0     # 0x9018
jb 0x6635
sqrtsd %xmm0, %xmm0
jmp 0x669e
movsd %xmm4, 0x70(%rsp)
movsd %xmm5, 0x28(%rsp)
movsd %xmm6, 0x110(%rsp)
movsd %xmm7, 0xe0(%rsp)
movsd %xmm8, 0x80(%rsp)
movsd %xmm9, 0x120(%rsp)
callq 0x2170
movsd 0x120(%rsp), %xmm9
movsd 0x80(%rsp), %xmm8
movsd 0xe0(%rsp), %xmm7
movsd 0x110(%rsp), %xmm6
movsd 0x28(%rsp), %xmm5
movsd 0x70(%rsp), %xmm4
mulsd %xmm9, %xmm6
mulsd %xmm8, %xmm5
addsd %xmm6, %xmm5
mulsd %xmm7, %xmm4
addsd %xmm5, %xmm4
divsd %xmm0, %xmm4
movapd %xmm4, %xmm0
callq 0x2190
movapd 0x90(%rsp), %xmm1
unpcklpd 0x30(%rsp), %xmm1       # xmm1 = xmm1[0],mem[0]
movapd 0x50(%rsp), %xmm2
unpcklpd %xmm0, %xmm2            # xmm2 = xmm2[0],xmm0[0]
subpd %xmm2, %xmm1
mulpd 0x295a(%rip), %xmm1     # 0x9040
movapd %xmm1, 0x90(%rsp)
movq (%rsp), %rax
movq (%rax,%r12), %rax
movq 0xd0(%rsp), %rcx
movsd 0x8(%rax,%rcx), %xmm5
movsd 0x10(%rax,%rcx), %xmm6
movsd 0x18(%rax,%rcx), %xmm4
movq 0x108(%rsp), %rcx
movsd 0x8(%rax,%rcx), %xmm8
movsd 0x10(%rax,%rcx), %xmm9
movsd 0x18(%rax,%rcx), %xmm7
movsd 0x4ab3(%rip), %xmm0     # 0xb1e8
movaps %xmm0, 0x30(%rsp)
movapd %xmm9, %xmm0
mulsd %xmm4, %xmm0
movapd %xmm6, %xmm1
mulsd %xmm7, %xmm1
subsd %xmm0, %xmm1
movapd %xmm7, %xmm0
mulsd %xmm5, %xmm0
movapd %xmm4, %xmm2
mulsd %xmm8, %xmm2
subsd %xmm0, %xmm2
movapd %xmm8, %xmm3
mulsd %xmm6, %xmm3
movapd %xmm5, %xmm0
mulsd %xmm9, %xmm0
subsd %xmm3, %xmm0
mulsd %xmm2, %xmm2
mulsd %xmm1, %xmm1
addsd %xmm2, %xmm1
mulsd %xmm0, %xmm0
addsd %xmm1, %xmm0
ucomisd 0x2882(%rip), %xmm0     # 0x9018
jb 0x679e
sqrtsd %xmm0, %xmm0
jmp 0x6801
movsd %xmm4, 0x50(%rsp)
movsd %xmm5, 0x70(%rsp)
movsd %xmm6, 0x28(%rsp)
movsd %xmm7, 0x110(%rsp)
movsd %xmm8, 0xe0(%rsp)
movsd %xmm9, 0x80(%rsp)
callq 0x2170
movsd 0x80(%rsp), %xmm9
movsd 0xe0(%rsp), %xmm8
movsd 0x110(%rsp), %xmm7
movsd 0x28(%rsp), %xmm6
movsd 0x70(%rsp), %xmm5
movsd 0x50(%rsp), %xmm4
mulsd %xmm9, %xmm6
mulsd %xmm8, %xmm5
addsd %xmm6, %xmm5
mulsd %xmm7, %xmm4
addsd %xmm5, %xmm4
divsd %xmm0, %xmm4
movapd %xmm4, %xmm0
callq 0x2190
movapd %xmm0, 0x50(%rsp)
movq (%rsp), %rax
movq 0x60(%rsp), %rcx
movq (%rax,%rcx), %rcx
movsd 0x8(%rcx,%rbx), %xmm5
movsd 0x10(%rcx,%rbx), %xmm6
movsd 0x18(%rcx,%rbx), %xmm4
movq (%rax,%r15), %rax
movq 0x140(%rsp), %rcx
movsd 0x8(%rax,%rcx), %xmm8
movsd 0x10(%rax,%rcx), %xmm9
movsd 0x18(%rax,%rcx), %xmm7
movsd 0x4977(%rip), %xmm0     # 0xb1e8
movaps %xmm0, 0x70(%rsp)
movapd %xmm9, %xmm0
mulsd %xmm4, %xmm0
movapd %xmm6, %xmm1
mulsd %xmm7, %xmm1
subsd %xmm0, %xmm1
movapd %xmm7, %xmm0
mulsd %xmm5, %xmm0
movapd %xmm4, %xmm2
mulsd %xmm8, %xmm2
subsd %xmm0, %xmm2
movapd %xmm8, %xmm3
mulsd %xmm6, %xmm3
movapd %xmm5, %xmm0
mulsd %xmm9, %xmm0
subsd %xmm3, %xmm0
mulsd %xmm2, %xmm2
mulsd %xmm1, %xmm1
addsd %xmm2, %xmm1
mulsd %xmm0, %xmm0
addsd %xmm1, %xmm0
ucomisd 0x2746(%rip), %xmm0     # 0x9018
jb 0x68da
sqrtsd %xmm0, %xmm0
jmp 0x6943
movsd %xmm4, 0x28(%rsp)
movsd %xmm5, 0x110(%rsp)
movsd %xmm6, 0xe0(%rsp)
movsd %xmm7, 0x80(%rsp)
movsd %xmm8, 0x120(%rsp)
movsd %xmm9, 0x48(%rsp)
callq 0x2170
movsd 0x48(%rsp), %xmm9
movsd 0x120(%rsp), %xmm8
movsd 0x80(%rsp), %xmm7
movsd 0xe0(%rsp), %xmm6
movsd 0x110(%rsp), %xmm5
movsd 0x28(%rsp), %xmm4
movq 0x130(%rsp), %rbx
mulsd %xmm9, %xmm6
mulsd %xmm8, %xmm5
addsd %xmm6, %xmm5
mulsd %xmm7, %xmm4
addsd %xmm5, %xmm4
divsd %xmm0, %xmm4
movapd %xmm4, %xmm0
callq 0x2190
movapd 0x30(%rsp), %xmm1
unpcklpd 0x70(%rsp), %xmm1       # xmm1 = xmm1[0],mem[0]
movapd 0x50(%rsp), %xmm2
unpcklpd %xmm0, %xmm2            # xmm2 = xmm2[0],xmm0[0]
subpd %xmm2, %xmm1
mulpd 0x26b0(%rip), %xmm1     # 0x9040
movapd %xmm1, 0x30(%rsp)
movq (%rsp), %rax
movq (%rax,%r15), %rcx
movsd 0x8(%rcx,%r14), %xmm5
movsd 0x10(%rcx,%r14), %xmm6
movsd 0x18(%rcx,%r14), %xmm4
movq (%rax,%r12), %rax
movq 0x108(%rsp), %rcx
movsd 0x8(%rax,%rcx), %xmm8
movsd 0x10(%rax,%rcx), %xmm9
movsd 0x18(%rax,%rcx), %xmm7
movsd 0x480d(%rip), %xmm0     # 0xb1e8
movaps %xmm0, 0x50(%rsp)
movapd %xmm9, %xmm0
mulsd %xmm4, %xmm0
movapd %xmm6, %xmm1
mulsd %xmm7, %xmm1
subsd %xmm0, %xmm1
movapd %xmm7, %xmm0
mulsd %xmm5, %xmm0
movapd %xmm4, %xmm2
mulsd %xmm8, %xmm2
subsd %xmm0, %xmm2
movapd %xmm8, %xmm3
mulsd %xmm6, %xmm3
movapd %xmm5, %xmm0
mulsd %xmm9, %xmm0
subsd %xmm3, %xmm0
mulsd %xmm2, %xmm2
mulsd %xmm1, %xmm1
addsd %xmm2, %xmm1
mulsd %xmm0, %xmm0
addsd %xmm1, %xmm0
ucomisd 0x25dc(%rip), %xmm0     # 0x9018
jb 0x6a44
sqrtsd %xmm0, %xmm0
jmp 0x6aad
movsd %xmm4, 0x130(%rsp)
movsd %xmm5, 0x70(%rsp)
movsd %xmm6, 0x28(%rsp)
movsd %xmm7, 0x110(%rsp)
movsd %xmm8, 0xe0(%rsp)
movsd %xmm9, 0x80(%rsp)
callq 0x2170
movsd 0x80(%rsp), %xmm9
movsd 0xe0(%rsp), %xmm8
movsd 0x110(%rsp), %xmm7
movsd 0x28(%rsp), %xmm6
movsd 0x70(%rsp), %xmm5
movsd 0x130(%rsp), %xmm4
mulsd %xmm9, %xmm6
mulsd %xmm8, %xmm5
addsd %xmm6, %xmm5
mulsd %xmm7, %xmm4
addsd %xmm5, %xmm4
divsd %xmm0, %xmm4
movapd %xmm4, %xmm0
callq 0x2190
movapd %xmm0, 0x130(%rsp)
movq (%rsp), %rax
movq (%rax,%r12), %rcx
movq 0xd0(%rsp), %rdx
movsd 0x8(%rcx,%rdx), %xmm5
movsd 0x10(%rcx,%rdx), %xmm6
movsd 0x18(%rcx,%rdx), %xmm4
movq 0x60(%rsp), %rcx
movq (%rax,%rcx), %rax
movsd 0x8(%rax,%rbx), %xmm8
movsd 0x10(%rax,%rbx), %xmm9
movsd 0x18(%rax,%rbx), %xmm7
movsd 0x46c8(%rip), %xmm0     # 0xb1e8
movaps %xmm0, 0xd0(%rsp)
movapd %xmm9, %xmm0
mulsd %xmm4, %xmm0
movapd %xmm6, %xmm1
mulsd %xmm7, %xmm1
subsd %xmm0, %xmm1
movapd %xmm7, %xmm0
mulsd %xmm5, %xmm0
movapd %xmm4, %xmm2
mulsd %xmm8, %xmm2
subsd %xmm0, %xmm2
movapd %xmm8, %xmm3
mulsd %xmm6, %xmm3
movapd %xmm5, %xmm0
mulsd %xmm9, %xmm0
subsd %xmm3, %xmm0
mulsd %xmm2, %xmm2
mulsd %xmm1, %xmm1
addsd %xmm2, %xmm1
mulsd %xmm0, %xmm0
addsd %xmm1, %xmm0
ucomisd 0x2494(%rip), %xmm0     # 0x9018
jb 0x6b8c
sqrtsd %xmm0, %xmm0
jmp 0x6bf5
movsd %xmm4, 0x70(%rsp)
movsd %xmm5, 0x28(%rsp)
movsd %xmm6, 0x110(%rsp)
movsd %xmm7, 0xe0(%rsp)
movsd %xmm8, 0x80(%rsp)
movsd %xmm9, 0x120(%rsp)
callq 0x2170
movsd 0x120(%rsp), %xmm9
movsd 0x80(%rsp), %xmm8
movsd 0xe0(%rsp), %xmm7
movsd 0x110(%rsp), %xmm6
movsd 0x28(%rsp), %xmm5
movsd 0x70(%rsp), %xmm4
mulsd %xmm9, %xmm6
mulsd %xmm8, %xmm5
addsd %xmm6, %xmm5
mulsd %xmm7, %xmm4
addsd %xmm5, %xmm4
divsd %xmm0, %xmm4
movapd %xmm4, %xmm0
callq 0x2190
movapd 0x50(%rsp), %xmm2
unpcklpd 0xd0(%rsp), %xmm2       # xmm2 = xmm2[0],mem[0]
movapd 0x130(%rsp), %xmm1
unpcklpd %xmm0, %xmm1            # xmm1 = xmm1[0],xmm0[0]
subpd %xmm1, %xmm2
mulpd 0x2400(%rip), %xmm2     # 0x9040
xorpd %xmm0, %xmm0
movapd 0x90(%rsp), %xmm1
subsd %xmm1, %xmm0
unpckhpd %xmm1, %xmm1            # xmm1 = xmm1[1,1]
subsd %xmm1, %xmm0
movapd 0x30(%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, 0x50(%rsp)
ucomisd %xmm2, %xmm0
jae 0x6cdc
movq %r13, %rdi
callq 0x7c48
movsd %xmm0, 0x90(%rsp)
movapd 0x50(%rsp), %xmm0
xorpd 0x23ba(%rip), %xmm0     # 0x9060
movsd 0x238a(%rip), %xmm1     # 0x9038
subsd 0xc8(%rsp), %xmm1
mulsd %xmm1, %xmm1
mulsd 0x168(%rsp), %xmm1
divsd %xmm1, %xmm0
callq 0x2330
ucomisd 0x90(%rsp), %xmm0
jbe 0x4ffa
movq (%rsp), %rax
movq 0x60(%rsp), %rcx
movq 0x8(%rax,%rcx), %rsi
movq %rsi, %r14
subq (%rax,%rcx), %r14
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,%r12), %r13
movq 0x8(%rax,%r12), %rbp
movq 0x140(%rsp), %rax
leaq (%rcx,%rax), %rdx
movslq %r8d, %rax
movq %rax, 0xd0(%rsp)
imulq $0x38, %rax, %rax
movq %rax, 0xc8(%rsp)
addq %rax, %rcx
callq 0x763c
subq %r13, %rbp
shrq $0x3, %rbp
imull $0xb6db6db7, %ebp, %eax # imm = 0xB6DB6DB7
movq (%rsp), %rcx
leaq (%rcx,%r15), %rdi
movq 0x8(%rcx,%r15), %rsi
movq (%rcx,%r12), %rcx
movq 0x108(%rsp), %rdx
addq %rcx, %rdx
movslq %eax, %r13
imulq $0x38, %r13, %rax
movq %rax, 0x90(%rsp)
addq %rax, %rcx
callq 0x763c
movq %r13, 0x30(%rsp)
sarq $0x3, %r14
movabsq $0x6db6db6db6db6db7, %rax # imm = 0x6DB6DB6DB6DB6DB7
imulq %rax, %r14
movq (%rsp), %rax
leaq (%rax,%r12), %rdi
movq 0x8(%rax,%r12), %rsi
movq 0x60(%rsp), %rcx
movq (%rax,%rcx), %rcx
leaq (%rcx,%rbx), %rdx
movslq %r14d, %r13
imulq $0x38, %r13, %r14
addq %r14, %rcx
callq 0x763c
cmpq 0x20(%rsp), %r13
leaq 0x445c(%rip), %r13      # 0xb228
movq 0x108(%rsp), %rdi
movq 0xc8(%rsp), %rsi
je 0x6e2f
movq (%rsp), %rbp
movq 0x60(%rsp), %rcx
movq (%rbp,%rcx), %rax
addq %rcx, %rbp
addq %rax, %rbx
addq %rax, %r14
movq 0x8(%rbp), %rdx
subq %r14, %rdx
je 0x6e19
movq %rbx, %rdi
movq %r14, %rsi
callq 0x22b0
movq 0xc8(%rsp), %rsi
movq 0x108(%rsp), %rdi
movq 0x8(%rbp), %rax
movq %rax, %rcx
subq %r14, %rcx
addq %rcx, %rbx
cmpq %rbx, %rax
je 0x6e2f
movq %rbx, 0x8(%rbp)
movq 0xd0(%rsp), %rax
cmpq 0x18(%rsp), %rax
movq 0xb0(%rsp), %rbp
je 0x6ea6
movq (%rsp), %r14
movq (%r14,%r15), %rax
addq %r15, %r14
movq 0x140(%rsp), %rbx
addq %rax, %rbx
addq %rax, %rsi
movq 0x8(%r14), %rdx
subq %rsi, %rdx
je 0x6e90
movq %rbx, %rdi
movq %rsi, 0xc8(%rsp)
movq 0xc8(%rsp), %rsi
callq 0x22b0
movq 0xc8(%rsp), %rsi
movq 0x108(%rsp), %rdi
movq 0x8(%r14), %rax
movq %rax, %rcx
subq %rsi, %rcx
addq %rcx, %rbx
cmpq %rbx, %rax
je 0x6ea6
movq %rbx, 0x8(%r14)
movq 0x30(%rsp), %rax
cmpq 0xf0(%rsp), %rax
je 0x6f08
movq (%rsp), %rbx
movq (%rbx,%r12), %rax
addq %r12, %rbx
addq %rax, %rdi
movq 0x90(%rsp), %rsi
addq %rax, %rsi
movq 0x8(%rbx), %rdx
subq %rsi, %rdx
je 0x6ef2
movq %rsi, 0x90(%rsp)
movq %rdi, %r14
callq 0x22b0
movq %r14, %rdi
movq 0x90(%rsp), %rsi
movq 0x8(%rbx), %rax
movq %rax, %rcx
subq %rsi, %rcx
addq %rcx, %rdi
cmpq %rdi, %rax
je 0x6f08
movq %rdi, 0x8(%rbx)
movq 0x60(%rsp), %rdi
addq (%rsp), %rdi
callq 0x704a
addq (%rsp), %r15
movq %r15, %rdi
callq 0x704a
addq (%rsp), %r12
movq %r12, %rdi
callq 0x704a
movsd 0x100(%rsp), %xmm0
addsd 0x50(%rsp), %xmm0
movsd %xmm0, 0x100(%rsp)
jmp 0x4ffa
movq 0x4086(%rip), %rdi      # 0xafd8
leaq 0x2246(%rip), %rsi      # 0x919f
movl $0x7, %edx
callq 0x2200
movq 0x406e(%rip), %rdi      # 0xafd8
movsd 0x100(%rsp), %xmm0
callq 0x22a0
leaq 0x21d9(%rip), %rsi      # 0x9158
movl $0x1, %edx
movq %rax, %rdi
callq 0x2200
movq %rsp, %rdi
callq 0x37b0
movq %rsp, %rdi
callq 0x72b2
xorl %eax, %eax
addq $0x1518, %rsp           # imm = 0x1518
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x7014
jmp 0x7014
jmp 0x7014
jmp 0x7014
jmp 0x7014
jmp 0x7014
jmp 0x7014
jmp 0x7014
jmp 0x7014
jmp 0x6fd6
movq %rax, %rbx
leaq 0x190(%rsp), %rdi
callq 0x21d0
jmp 0x7041
movq %rax, %rdi
callq 0x744c
jmp 0x7014
jmp 0x7014
jmp 0x7014
jmp 0x7014
jmp 0x7014
jmp 0x7014
jmp 0x7014
jmp 0x7014
jmp 0x7014
jmp 0x7014
jmp 0x7014
jmp 0x7014
jmp 0x7014
jmp 0x7014
jmp 0x7014
jmp 0x7014
jmp 0x7014
jmp 0x7014
jmp 0x7014
jmp 0x7014
jmp 0x7014
jmp 0x7014
jmp 0x7014
jmp 0x7014
jmp 0x7014
jmp 0x7014
jmp 0x7014
movq %rax, %rbx
jmp 0x7039
movq %rax, %rbx
movq 0x190(%rsp), %rdi
testq %rdi, %rdi
je 0x7039
movq 0x1a0(%rsp), %rsi
subq %rdi, %rsi
callq 0x21f0
movq %rsp, %rdi
callq 0x72b2
movq %rbx, %rdi
callq 0x2320
nop