// File: /workspace/github_cpp_makefile_star2_O1/ttalvitie[P]traveling-santa/optimize.cpp
// Function: initialPaths(long long)
vector<Path> initialPaths(Z wtLimit) {
    vector<Point> points;
	ifstream fp("nicelist.txt");
    if(!fp.good()) throw 0;
	while(true) {
		string item;
		fp >> item;
		if(!fp.good()) {
			break;
		}
		for(char& c : item) {
			if(c == ';') c = ' ';
		}
		item.push_back('\n');
		stringstream ss(item);
		ss.exceptions(ss.failbit | ss.badbit | ss.eofbit);
        Point point;
		double la, lo;
		ss >> point.child >> la >> lo >> point.wt;
        if(point.child == -1) throw 0;
		point.pos = Vec3::fromLatLong(la, lo);
        points.push_back(point);
    }

    Path path;
    path.points.push_back(Korvatunturi);

    while(!points.empty()) {
        double bestDist = Infty;
        int bestPi = -1;
        for(int pi = 0; pi < len(points); ++pi) {
            double dist = sphereDist(path.points.back().pos, points[pi].pos);
            if(dist < bestDist) {
                bestDist = dist;
                bestPi = pi;
            }
        }
        if(bestPi == -1) throw 0;
        swap(points[bestPi], points.back());
        path.points.push_back(points.back());
        points.pop_back();
    }

    path.points.push_back(Korvatunturi);

    while(true) {
        bool progress = false;
        for(int i = 1; i < len(path.points); ++i) {
            for(int j = i + 2; j < len(path.points); ++j) {
                double costDiff = 0.0;
                costDiff -= sphereDist(path.points[i - 1].pos, path.points[i].pos);
                costDiff -= sphereDist(path.points[j - 1].pos, path.points[j].pos);
                costDiff += sphereDist(path.points[i - 1].pos, path.points[j - 1].pos);
                costDiff += sphereDist(path.points[i].pos, path.points[j].pos);
                if(costDiff < 0.0) {
                    reverse(path.points.begin() + i, path.points.begin() + j);
                    progress = true;
                }
            }
        }
        if(!progress) break;
    }

    vector<Path> paths;
    int i = 1;
    while(i != len(path.points) - 1) {
        int j = i;
        Z wt = 0;
        while(j != len(path.points) - 1 && (j == i || wt + path.points[j].wt <= wtLimit)) {
            wt += path.points[j].wt;
            ++j;
        }
        Path sub;
        sub.points.push_back(Korvatunturi);
        sub.points.insert(sub.points.end(), path.points.begin() + i, path.points.begin() + j);
        sub.points.push_back(Korvatunturi);
        sub.finalize();
        paths.push_back(move(sub));
        i = j;
    }

    return paths;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x4d8, %rsp            # imm = 0x4D8
movq %rsi, %r14
movq %rdi, %rbx
xorpd %xmm0, %xmm0
movapd %xmm0, 0x30(%rsp)
movq $0x0, 0x40(%rsp)
leaq 0x6975(%rip), %rsi      # 0x90dc
leaq 0x2d0(%rsp), %rdi
movl $0x8, %edx
callq 0x2350
movq %r14, 0x110(%rsp)
movq %rbx, 0xe8(%rsp)
movq 0x2d0(%rsp), %rax
movq -0x18(%rax), %rax
cmpl $0x0, 0x2f0(%rsp,%rax)
jne 0x36bb
leaq 0x100(%rsp), %r14
leaq 0x2d0(%rsp), %r13
leaq 0xf0(%rsp), %rbp
leaq 0x140(%rsp), %rbx
leaq 0x50(%rsp), %r15
movq %r14, 0xf0(%rsp)
movq $0x0, 0xf8(%rsp)
movb $0x0, 0x100(%rsp)
movq %r13, %rdi
movq %rbp, %rsi
callq 0x2210
movq 0x2d0(%rsp), %rax
movq -0x18(%rax), %rax
movl 0x2f0(%rsp,%rax), %r12d
testl %r12d, %r12d
jne 0x29dd
movq 0xf8(%rsp), %rax
testq %rax, %rax
je 0x2835
movq 0xf0(%rsp), %rcx
xorl %edx, %edx
cmpb $0x3b, (%rcx,%rdx)
jne 0x282d
movb $0x20, (%rcx,%rdx)
incq %rdx
cmpq %rdx, %rax
jne 0x2823
movq %rbp, %rdi
movl $0xa, %esi
callq 0x21b0
movq %rbx, %rdi
movq %rbp, %rsi
movl $0x18, %edx
callq 0x2290
movq 0x140(%rsp), %rax
movq -0x18(%rax), %rax
leaq (%rsp,%rax), %rdi
addq $0x140, %rdi            # imm = 0x140
movl $0x7, 0x1c(%rdi)
movl 0x20(%rdi), %esi
callq 0x22e0
movq %rbx, %rdi
movq %r15, %rsi
callq 0x20f0
movq %rax, %rdi
leaq 0x138(%rsp), %rsi
callq 0x2100
movq %rax, %rdi
leaq 0x130(%rsp), %rsi
callq 0x2100
movq %rax, %rdi
leaq 0x70(%rsp), %rsi
callq 0x2220
cmpl $-0x1, 0x50(%rsp)
je 0x3698
movsd 0x9ced(%rip), %xmm0     # 0xc5b0
movsd 0x138(%rsp), %xmm1
mulsd %xmm0, %xmm1
movsd %xmm1, 0xd0(%rsp)
mulsd 0x130(%rsp), %xmm0
movsd %xmm0, 0x20(%rsp)
callq 0x2360
movapd %xmm0, 0xc0(%rsp)
movsd 0xd0(%rsp), %xmm0
callq 0x2360
movaps %xmm0, 0xa0(%rsp)
movsd 0x20(%rsp), %xmm0
callq 0x2030
movaps %xmm0, 0x20(%rsp)
movsd 0xd0(%rsp), %xmm0
callq 0x2360
movaps %xmm0, 0x90(%rsp)
movsd 0xd0(%rsp), %xmm0
callq 0x2030
movapd 0xc0(%rsp), %xmm1
unpcklpd 0x20(%rsp), %xmm1       # xmm1 = xmm1[0],mem[0]
movapd 0xa0(%rsp), %xmm2
unpcklpd 0x90(%rsp), %xmm2       # xmm2 = xmm2[0],mem[0]
mulpd %xmm1, %xmm2
movupd %xmm2, 0x58(%rsp)
movsd %xmm0, 0x68(%rsp)
movq 0x38(%rsp), %rsi
cmpq 0x40(%rsp), %rsi
je 0x29b4
movq 0x80(%rsp), %rax
movq %rax, 0x30(%rsi)
movupd 0x50(%rsp), %xmm0
movupd 0x60(%rsp), %xmm1
movupd 0x70(%rsp), %xmm2
movupd %xmm2, 0x20(%rsi)
movupd %xmm1, 0x10(%rsi)
movupd %xmm0, (%rsi)
addq $0x38, %rsi
movq %rsi, 0x38(%rsp)
jmp 0x29c1
leaq 0x30(%rsp), %rdi
movq %r15, %rdx
callq 0x7458
movq %rbx, %rdi
movq 0x85ed(%rip), %rsi      # 0xafb8
callq 0x2150
leaq 0x1c0(%rsp), %rdi
callq 0x2060
movq 0xf0(%rsp), %rdi
cmpq %r14, %rdi
je 0x29fa
movq 0x100(%rsp), %rsi
incq %rsi
callq 0x21f0
testl %r12d, %r12d
je 0x27c8
xorpd %xmm0, %xmm0
movapd %xmm0, 0x50(%rsp)
movq $0x0, 0x60(%rsp)
movq 0x58(%rsp), %rsi
testq %rsi, %rsi
je 0x2a58
movq 0x87f9(%rip), %rax      # 0xb220
movq %rax, 0x30(%rsi)
movups 0x87de(%rip), %xmm0     # 0xb210
movups %xmm0, 0x20(%rsi)
movups 0x87c3(%rip), %xmm0     # 0xb200
movups %xmm0, 0x10(%rsi)
movupd 0x87a7(%rip), %xmm0     # 0xb1f0
movupd %xmm0, (%rsi)
addq $0x38, %rsi
movq %rsi, 0x58(%rsp)
jmp 0x2a69
leaq 0x8791(%rip), %rdx      # 0xb1f0
leaq 0x50(%rsp), %rdi
callq 0x7458
movq 0x30(%rsp), %rax
cmpq 0x38(%rsp), %rax
je 0x2d32
leaq 0x50(%rsp), %rbx
movq 0x30(%rsp), %rax
movq 0x38(%rsp), %rcx
movq %rcx, %rdx
subq %rax, %rdx
shrq $0x3, %rdx
imull $0xb6db6db7, %edx, %edx # imm = 0xB6DB6DB7
movl $0xffffffff, %ebp       # imm = 0xFFFFFFFF
testl %edx, %edx
jle 0x2c33
movl $0x18, %r14d
xorl %r15d, %r15d
movsd 0x655a(%rip), %xmm1     # 0x9010
movsd %xmm1, 0xc0(%rsp)
movq 0x58(%rsp), %rcx
movsd -0x30(%rcx), %xmm5
movsd -0x28(%rcx), %xmm6
movsd -0x20(%rcx), %xmm4
movsd -0x10(%rax,%r14), %xmm8
movsd -0x8(%rax,%r14), %xmm9
movsd (%rax,%r14), %xmm7
movsd 0x86f9(%rip), %xmm0     # 0xb1e8
movsd %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 0x64c4(%rip), %xmm0     # 0x9018
jb 0x2b5c
sqrtsd %xmm0, %xmm0
jmp 0x2bb9
movsd %xmm4, 0xa0(%rsp)
movsd %xmm5, 0x20(%rsp)
movsd %xmm6, 0x90(%rsp)
movsd %xmm7, 0x10(%rsp)
movsd %xmm8, 0x8(%rsp)
movsd %xmm9, 0x18(%rsp)
callq 0x2170
movsd 0x18(%rsp), %xmm9
movsd 0x8(%rsp), %xmm8
movsd 0x10(%rsp), %xmm7
movsd 0x90(%rsp), %xmm6
movsd 0x20(%rsp), %xmm5
movsd 0xa0(%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
movsd 0xd0(%rsp), %xmm1
subsd %xmm0, %xmm1
mulsd 0x6417(%rip), %xmm1     # 0x9008
movsd 0xc0(%rsp), %xmm0
ucomisd %xmm1, %xmm0
cmoval %r15d, %ebp
minsd %xmm0, %xmm1
incq %r15
movq 0x30(%rsp), %rax
movq 0x38(%rsp), %rcx
movq %rcx, %rdx
subq %rax, %rdx
shrq $0x3, %rdx
imull $0xb6db6db7, %edx, %edx # imm = 0xB6DB6DB7
movslq %edx, %rdx
addq $0x38, %r14
cmpq %rdx, %r15
jl 0x2ab6
cmpl $-0x1, %ebp
je 0x3675
movslq %ebp, %rdx
imulq $0x38, %rdx, %rsi
leaq -0x38(%rcx), %rdx
movq 0x30(%rax,%rsi), %rdi
movq %rdi, 0x170(%rsp)
movups (%rax,%rsi), %xmm0
movups 0x10(%rax,%rsi), %xmm1
movups 0x20(%rax,%rsi), %xmm2
movaps %xmm2, 0x160(%rsp)
movaps %xmm1, 0x150(%rsp)
movaps %xmm0, 0x140(%rsp)
movq -0x8(%rcx), %rdi
movq %rdi, 0x30(%rax,%rsi)
movups -0x38(%rcx), %xmm0
movups -0x28(%rcx), %xmm1
movups -0x18(%rcx), %xmm2
movups %xmm2, 0x20(%rax,%rsi)
movups %xmm1, 0x10(%rax,%rsi)
movups %xmm0, (%rax,%rsi)
movq 0x170(%rsp), %rax
movq %rax, -0x8(%rcx)
movapd 0x140(%rsp), %xmm0
movapd 0x150(%rsp), %xmm1
movapd 0x160(%rsp), %xmm2
movupd %xmm2, -0x18(%rcx)
movupd %xmm1, -0x28(%rcx)
movupd %xmm0, -0x38(%rcx)
movq 0x58(%rsp), %rsi
cmpq 0x60(%rsp), %rsi
je 0x2d0e
movq 0x30(%rdx), %rax
movq %rax, 0x30(%rsi)
movupd (%rdx), %xmm0
movupd 0x10(%rdx), %xmm1
movupd 0x20(%rdx), %xmm2
movupd %xmm2, 0x20(%rsi)
movupd %xmm1, 0x10(%rsi)
movupd %xmm0, (%rsi)
addq $0x38, %rsi
movq %rsi, 0x58(%rsp)
jmp 0x2d16
movq %rbx, %rdi
callq 0x7458
movq 0x30(%rsp), %rax
movq 0x38(%rsp), %rcx
addq $-0x38, %rcx
movq %rcx, 0x38(%rsp)
cmpq %rcx, %rax
jne 0x2a7e
movq 0x58(%rsp), %rsi
cmpq 0x60(%rsp), %rsi
je 0x2d76
movq 0x84db(%rip), %rax      # 0xb220
movq %rax, 0x30(%rsi)
movups 0x84c0(%rip), %xmm0     # 0xb210
movups %xmm0, 0x20(%rsi)
movups 0x84a5(%rip), %xmm0     # 0xb200
movups %xmm0, 0x10(%rsi)
movupd 0x8489(%rip), %xmm0     # 0xb1f0
movupd %xmm0, (%rsi)
addq $0x38, %rsi
movq %rsi, 0x58(%rsp)
jmp 0x2d87
leaq 0x8473(%rip), %rdx      # 0xb1f0
leaq 0x50(%rsp), %rdi
callq 0x7458
movq 0x58(%rsp), %rax
subq 0x50(%rsp), %rax
shrq $0x3, %rax
imull $0xb6db6db7, %eax, %eax # imm = 0xB6DB6DB7
cmpl $0x2, %eax
jl 0x3465
movl $0x3, %ebx
movl $0x1, %esi
movl $0x70, %r12d
movl $0x0, 0xbc(%rsp)
leaq 0x2(%rsi), %rcx
movq 0x50(%rsp), %rax
movq 0x58(%rsp), %rdx
subq %rax, %rdx
shrq $0x3, %rdx
imull $0xb6db6db7, %edx, %edx # imm = 0xB6DB6DB7
movslq %edx, %rdx
cmpq %rdx, %rcx
movq %rbx, 0x120(%rsp)
movq %rsi, 0x118(%rsp)
jge 0x341e
leaq -0x1(%rsi), %rcx
imulq $0x38, %rcx, %r13
imulq $0x38, %rsi, %r14
movsd 0x8(%rax,%r13), %xmm5
movsd 0x10(%rax,%r13), %xmm6
movsd 0x18(%rax,%r13), %xmm4
movsd 0x8(%rax,%r14), %xmm8
movsd 0x10(%rax,%r14), %xmm9
movsd 0x18(%rax,%r14), %xmm7
movsd 0x83b4(%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 0x6180(%rip), %xmm0     # 0x9018
jb 0x2ea0
sqrtsd %xmm0, %xmm0
jmp 0x2f03
movsd %xmm4, 0xc0(%rsp)
movsd %xmm5, 0xa0(%rsp)
movsd %xmm6, 0x20(%rsp)
movsd %xmm7, 0x90(%rsp)
movsd %xmm8, 0x10(%rsp)
movsd %xmm9, 0x8(%rsp)
callq 0x2170
movsd 0x8(%rsp), %xmm9
movsd 0x10(%rsp), %xmm8
movsd 0x90(%rsp), %xmm7
movsd 0x20(%rsp), %xmm6
movsd 0xa0(%rsp), %xmm5
movsd 0xc0(%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, 0xc0(%rsp)
movq 0x50(%rsp), %rax
imulq $0x38, %rbx, %rbp
movsd -0x30(%rax,%rbp), %xmm5
movsd -0x28(%rax,%rbp), %xmm6
movsd -0x20(%rax,%rbp), %xmm4
movsd 0x8(%rax,%rbp), %xmm8
movsd 0x10(%rax,%rbp), %xmm9
movsd 0x18(%rax,%rbp), %xmm7
movsd 0x8282(%rip), %xmm0     # 0xb1e8
movaps %xmm0, 0xa0(%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 0x604e(%rip), %xmm0     # 0x9018
jb 0x2fd2
sqrtsd %xmm0, %xmm0
jmp 0x302f
movsd %xmm4, 0x20(%rsp)
movsd %xmm5, 0x90(%rsp)
movsd %xmm6, 0x10(%rsp)
movsd %xmm7, 0x8(%rsp)
movsd %xmm8, 0x18(%rsp)
movsd %xmm9, 0xe0(%rsp)
callq 0x2170
movsd 0xe0(%rsp), %xmm9
movsd 0x18(%rsp), %xmm8
movsd 0x8(%rsp), %xmm7
movsd 0x10(%rsp), %xmm6
movsd 0x90(%rsp), %xmm5
movsd 0x20(%rsp), %xmm4
leaq -0x1(%rbx), %r15
mulsd %xmm9, %xmm6
mulsd %xmm8, %xmm5
addsd %xmm6, %xmm5
mulsd %xmm7, %xmm4
addsd %xmm5, %xmm4
divsd %xmm0, %xmm4
movapd %xmm4, %xmm0
callq 0x2190
movapd 0xd0(%rsp), %xmm1
unpcklpd 0xa0(%rsp), %xmm1       # xmm1 = xmm1[0],mem[0]
movapd 0xc0(%rsp), %xmm2
unpcklpd %xmm0, %xmm2            # xmm2 = xmm2[0],xmm0[0]
subpd %xmm2, %xmm1
mulpd 0x5fbf(%rip), %xmm1     # 0x9040
movapd %xmm1, 0xd0(%rsp)
movq 0x50(%rsp), %rax
movsd 0x8(%rax,%r13), %xmm5
movsd 0x10(%rax,%r13), %xmm6
movsd 0x18(%rax,%r13), %xmm4
imulq $0x38, %r15, %rcx
movsd 0x8(%rax,%rcx), %xmm8
movsd 0x10(%rax,%rcx), %xmm9
movsd 0x18(%rax,%rcx), %xmm7
movsd 0x8124(%rip), %xmm0     # 0xb1e8
movaps %xmm0, 0xc0(%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 0x5ef0(%rip), %xmm0     # 0x9018
jb 0x3130
sqrtsd %xmm0, %xmm0
jmp 0x318d
movsd %xmm4, 0xa0(%rsp)
movsd %xmm5, 0x20(%rsp)
movsd %xmm6, 0x90(%rsp)
movsd %xmm7, 0x10(%rsp)
movsd %xmm8, 0x8(%rsp)
movsd %xmm9, 0x18(%rsp)
callq 0x2170
movsd 0x18(%rsp), %xmm9
movsd 0x8(%rsp), %xmm8
movsd 0x10(%rsp), %xmm7
movsd 0x90(%rsp), %xmm6
movsd 0x20(%rsp), %xmm5
movsd 0xa0(%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, 0xa0(%rsp)
movq 0x50(%rsp), %rax
movsd 0x8(%rax,%r14), %xmm5
movsd 0x10(%rax,%r14), %xmm6
movsd 0x18(%rax,%r14), %xmm4
movsd 0x8(%rax,%rbp), %xmm8
movsd 0x10(%rax,%rbp), %xmm9
movsd 0x18(%rax,%rbp), %xmm7
movsd 0x7ff9(%rip), %xmm0     # 0xb1e8
movaps %xmm0, 0x20(%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 0x5dc8(%rip), %xmm0     # 0x9018
jb 0x3258
sqrtsd %xmm0, %xmm0
jmp 0x32bb
movsd %xmm4, 0x90(%rsp)
movsd %xmm5, 0x10(%rsp)
movsd %xmm6, 0x8(%rsp)
movsd %xmm7, 0x18(%rsp)
movsd %xmm8, 0xe0(%rsp)
movsd %xmm9, 0x128(%rsp)
callq 0x2170
movsd 0x128(%rsp), %xmm9
movsd 0xe0(%rsp), %xmm8
movsd 0x18(%rsp), %xmm7
movsd 0x8(%rsp), %xmm6
movsd 0x10(%rsp), %xmm5
movsd 0x90(%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 0xc0(%rsp), %xmm2
unpcklpd 0x20(%rsp), %xmm2       # xmm2 = xmm2[0],mem[0]
movapd 0xa0(%rsp), %xmm1
unpcklpd %xmm0, %xmm1            # xmm1 = xmm1[0],xmm0[0]
subpd %xmm1, %xmm2
mulpd 0x5d3a(%rip), %xmm2     # 0x9040
xorpd %xmm0, %xmm0
movapd 0xd0(%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
ucomisd %xmm2, %xmm0
jbe 0x33f8
movq 0x50(%rsp), %rax
leaq (%rax,%r14), %rdx
leaq (%rax,%rbp), %rcx
addq $-0x38, %rcx
movb $0x1, %sil
movl %esi, 0xbc(%rsp)
cmpq %rdx, %rcx
jbe 0x33f8
addq %r12, %rax
movq -0x8(%rax), %rdx
movq %rdx, 0x170(%rsp)
movups -0x38(%rax), %xmm0
movups -0x28(%rax), %xmm1
movups -0x18(%rax), %xmm2
movaps %xmm2, 0x160(%rsp)
movaps %xmm1, 0x150(%rsp)
movaps %xmm0, 0x140(%rsp)
movq 0x30(%rcx), %rdx
movq %rdx, -0x8(%rax)
movups (%rcx), %xmm0
movups 0x10(%rcx), %xmm1
movups 0x20(%rcx), %xmm2
movups %xmm2, -0x18(%rax)
movups %xmm1, -0x28(%rax)
movups %xmm0, -0x38(%rax)
movq 0x170(%rsp), %rdx
movq %rdx, 0x30(%rcx)
movapd 0x140(%rsp), %xmm0
movapd 0x150(%rsp), %xmm1
movapd 0x160(%rsp), %xmm2
movupd %xmm2, 0x20(%rcx)
movupd %xmm1, 0x10(%rcx)
movupd %xmm0, (%rcx)
addq $-0x38, %rcx
leaq 0x38(%rax), %rdx
cmpq %rcx, %rax
movq %rdx, %rax
jb 0x3360
incq %rbx
movq 0x50(%rsp), %rax
movq 0x58(%rsp), %rcx
subq %rax, %rcx
shrq $0x3, %rcx
imull $0xb6db6db7, %ecx, %ecx # imm = 0xB6DB6DB7
movslq %ecx, %rcx
cmpq %rcx, %rbx
jl 0x2e02
movq 0x118(%rsp), %rsi
incq %rsi
movq 0x58(%rsp), %rax
subq 0x50(%rsp), %rax
shrq $0x3, %rax
imull $0xb6db6db7, %eax, %eax # imm = 0xB6DB6DB7
cltq
movq 0x120(%rsp), %rbx
incq %rbx
addq $0x38, %r12
cmpq %rax, %rsi
jl 0x2dbf
testb $0x1, 0xbc(%rsp)
jne 0x2d87
xorpd %xmm0, %xmm0
movq 0xe8(%rsp), %r14
movupd %xmm0, (%r14)
movq $0x0, 0x10(%r14)
movq 0x50(%rsp), %rdi
movq 0x58(%rsp), %rax
subq %rdi, %rax
shrq $0x3, %rax
imull $0xb6db6db7, %eax, %eax # imm = 0xB6DB6DB7
decl %eax
cmpl $0x1, %eax
je 0x362a
movl $0x1, %ebp
leaq 0x7d44(%rip), %rbx      # 0xb1f0
leaq 0x140(%rsp), %r15
movq 0x110(%rsp), %r13
movslq %ebp, %rcx
imulq $0x38, %rcx, %r12
leaq (%rdi,%r12), %rcx
addq $0x20, %rcx
xorl %edx, %edx
xorl %esi, %esi
testq %rdx, %rdx
je 0x34e0
movq (%rcx,%rdx), %rdi
addq %rsi, %rdi
cmpq %r13, %rdi
jg 0x34f0
addq (%rcx,%rdx), %rsi
incl %ebp
addq $0x38, %rdx
cmpl %ebp, %eax
jne 0x34cf
movl %eax, %ebp
xorpd %xmm0, %xmm0
movapd %xmm0, 0x140(%rsp)
movq $0x0, 0x150(%rsp)
movq 0x148(%rsp), %rsi
testq %rsi, %rsi
je 0x3551
movq 0x7d03(%rip), %rax      # 0xb220
movq %rax, 0x30(%rsi)
movups 0x7ce8(%rip), %xmm0     # 0xb210
movups %xmm0, 0x20(%rsi)
movups 0x7ccd(%rip), %xmm0     # 0xb200
movups %xmm0, 0x10(%rsi)
movupd 0x7cb1(%rip), %xmm0     # 0xb1f0
movupd %xmm0, (%rsi)
addq $0x38, %rsi
movq %rsi, 0x148(%rsp)
jmp 0x355c
movq %r15, %rdi
movq %rbx, %rdx
callq 0x7458
movq 0x148(%rsp), %rsi
movq 0x50(%rsp), %rax
addq %rax, %r12
movslq %ebp, %rcx
imulq $0x38, %rcx, %rcx
addq %rax, %rcx
movq %r15, %rdi
movq %r12, %rdx
callq 0x763c
movq 0x148(%rsp), %rsi
cmpq 0x150(%rsp), %rsi
je 0x35ce
movq 0x7c86(%rip), %rax      # 0xb220
movq %rax, 0x30(%rsi)
movups 0x7c6b(%rip), %xmm0     # 0xb210
movups %xmm0, 0x20(%rsi)
movups 0x7c50(%rip), %xmm0     # 0xb200
movups %xmm0, 0x10(%rsi)
movupd 0x7c34(%rip), %xmm0     # 0xb1f0
movupd %xmm0, (%rsi)
addq $0x38, %rsi
movq %rsi, 0x148(%rsp)
jmp 0x35d9
movq %r15, %rdi
movq %rbx, %rdx
callq 0x7458
movq %r15, %rdi
callq 0x704a
movq %r14, %rdi
movq %r15, %rsi
callq 0x78c0
movq 0x140(%rsp), %rdi
testq %rdi, %rdi
je 0x3609
movq 0x150(%rsp), %rsi
subq %rdi, %rsi
callq 0x21f0
movq 0x50(%rsp), %rdi
movq 0x58(%rsp), %rax
subq %rdi, %rax
shrq $0x3, %rax
imull $0xb6db6db7, %eax, %eax # imm = 0xB6DB6DB7
decl %eax
cmpl %eax, %ebp
jne 0x34bc
testq %rdi, %rdi
je 0x363c
movq 0x60(%rsp), %rsi
subq %rdi, %rsi
callq 0x21f0
leaq 0x2d0(%rsp), %rdi
callq 0x2040
movq 0x30(%rsp), %rdi
testq %rdi, %rdi
je 0x3660
movq 0x40(%rsp), %rsi
subq %rdi, %rsi
callq 0x21f0
movq %r14, %rax
addq $0x4d8, %rsp            # imm = 0x4D8
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movl $0x4, %edi
callq 0x20c0
movl $0x0, (%rax)
movq 0x7924(%rip), %rsi      # 0xafb0
movq %rax, %rdi
xorl %edx, %edx
callq 0x2300
jmp 0x36dc
movl $0x4, %edi
callq 0x20c0
movl $0x0, (%rax)
movq 0x7901(%rip), %rsi      # 0xafb0
movq %rax, %rdi
xorl %edx, %edx
callq 0x2300
jmp 0x36dc
movl $0x4, %edi
callq 0x20c0
movl $0x0, (%rax)
movq 0x78de(%rip), %rsi      # 0xafb0
movq %rax, %rdi
xorl %edx, %edx
callq 0x2300
jmp 0x36f8
movq %rax, %rbx
jmp 0x3784
movq %rax, %rbx
jmp 0x3791
jmp 0x36f8
jmp 0x3743
jmp 0x373e
jmp 0x3743
jmp 0x36fd
movq %rax, %rbx
jmp 0x372a
movq %rax, %rbx
movq 0x140(%rsp), %rdi
testq %rdi, %rdi
je 0x371d
movq 0x150(%rsp), %rsi
subq %rdi, %rsi
callq 0x21f0
movq 0xe8(%rsp), %rdi
callq 0x72b2
movq 0x50(%rsp), %rdi
testq %rdi, %rdi
je 0x3784
movq 0x60(%rsp), %rsi
subq %rdi, %rsi
jmp 0x377f
movq %rax, %rbx
jmp 0x3767
movq %rax, %rbx
movq 0x786b(%rip), %rsi      # 0xafb8
leaq 0x140(%rsp), %rdi
callq 0x2150
leaq 0x1c0(%rsp), %rdi
callq 0x2060
movq 0xf0(%rsp), %rdi
cmpq %r14, %rdi
je 0x3784
movq 0x100(%rsp), %rsi
incq %rsi
callq 0x21f0
leaq 0x2d0(%rsp), %rdi
callq 0x2040
movq 0x30(%rsp), %rdi
testq %rdi, %rdi
je 0x37a8
movq 0x40(%rsp), %rsi
subq %rdi, %rsi
callq 0x21f0
movq %rbx, %rdi
callq 0x2320