// File: 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:
subq $0x7d8, %rsp            # imm = 0x7D8
movq %rdi, 0x140(%rsp)
movq %rdi, %rax
movq %rax, 0x148(%rsp)
movq %rdi, 0x7d0(%rsp)
movq %rsi, 0x7c8(%rsp)
leaq 0x7b0(%rsp), %rdi
callq 0x8dd0
leaq 0xb64a(%rip), %rsi      # 0xf098
leaq 0x5a8(%rsp), %rdi
movl $0x8, %edx
callq 0x3450
jmp 0x3a62
movq 0x5a8(%rsp), %rax
movq -0x18(%rax), %rax
leaq 0x5a8(%rsp,%rax), %rdi
callq 0x33d0
movb %al, 0x13f(%rsp)
jmp 0x3a84
movb 0x13f(%rsp), %al
testb $0x1, %al
jne 0x3aeb
jmp 0x3a91
movl $0x4, %edi
callq 0x30d0
movq %rax, %rdi
movl $0x0, (%rdi)
movq 0xf515(%rip), %rsi      # 0x12fc0
xorl %eax, %eax
movl %eax, %edx
callq 0x33f0
jmp 0x48ab
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x5a0(%rsp)
movl %eax, 0x59c(%rsp)
jmp 0x4891
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x5a0(%rsp)
movl %eax, 0x59c(%rsp)
jmp 0x4884
jmp 0x3aed
jmp 0x3aef
leaq 0x578(%rsp), %rdi
movq %rdi, 0x130(%rsp)
callq 0x3330
movq 0x130(%rsp), %rsi
leaq 0x5a8(%rsp), %rdi
callq 0x3310
jmp 0x3b1b
movq 0x5a8(%rsp), %rax
movq -0x18(%rax), %rax
leaq 0x5a8(%rsp,%rax), %rdi
callq 0x33d0
movb %al, 0x12f(%rsp)
jmp 0x3b3d
movb 0x12f(%rsp), %al
testb $0x1, %al
jne 0x3b73
jmp 0x3b4a
movl $0x3, 0x574(%rsp)
jmp 0x3e02
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x5a0(%rsp)
movl %eax, 0x59c(%rsp)
jmp 0x3e23
leaq 0x578(%rsp), %rax
movq %rax, 0x568(%rsp)
movq 0x568(%rsp), %rdi
callq 0x3220
movq %rax, 0x560(%rsp)
movq 0x568(%rsp), %rdi
callq 0x3110
movq %rax, 0x558(%rsp)
leaq 0x560(%rsp), %rdi
leaq 0x558(%rsp), %rsi
callq 0x8de0
testb $0x1, %al
jne 0x3bc8
jmp 0x3c09
leaq 0x560(%rsp), %rdi
callq 0x8e20
movq %rax, 0x550(%rsp)
movq 0x550(%rsp), %rax
movsbl (%rax), %eax
cmpl $0x3b, %eax
jne 0x3bf8
movq 0x550(%rsp), %rax
movb $0x20, (%rax)
jmp 0x3bfa
leaq 0x560(%rsp), %rdi
callq 0x8e30
jmp 0x3bad
leaq 0x578(%rsp), %rdi
movl $0xa, %esi
callq 0x3210
jmp 0x3c1d
movl $0x10, %edi
movl $0x8, %esi
callq 0x8e50
movl %eax, 0x128(%rsp)
jmp 0x3c35
movl 0x128(%rsp), %edx
leaq 0x3c8(%rsp), %rdi
leaq 0x578(%rsp), %rsi
callq 0x3390
jmp 0x3c53
movq 0x3c8(%rsp), %rax
movq -0x18(%rax), %rax
leaq 0x3c8(%rsp,%rax), %rax
movq %rax, 0x118(%rsp)
movl $0x4, %edi
movl $0x1, %esi
callq 0x8e70
movl %eax, 0x124(%rsp)
jmp 0x3c87
movl 0x124(%rsp), %edi
movl $0x2, %esi
callq 0x8e70
movl %eax, 0x114(%rsp)
jmp 0x3ca1
movl 0x114(%rsp), %esi
movq 0x118(%rsp), %rdi
callq 0x3070
jmp 0x3cb7
leaq 0x390(%rsp), %rdi
callq 0x8e90
jmp 0x3cc6
leaq 0x3c8(%rsp), %rdi
leaq 0x390(%rsp), %rsi
callq 0x3120
movq %rax, 0x108(%rsp)
jmp 0x3ce5
movq 0x108(%rsp), %rdi
leaq 0x388(%rsp), %rsi
callq 0x31d0
movq %rax, 0x100(%rsp)
jmp 0x3d04
movq 0x100(%rsp), %rdi
leaq 0x380(%rsp), %rsi
callq 0x31d0
movq %rax, 0xf8(%rsp)
jmp 0x3d23
movq 0xf8(%rsp), %rdi
leaq 0x3b0(%rsp), %rsi
callq 0x32f0
jmp 0x3d3a
cmpl $-0x1, 0x390(%rsp)
jne 0x3d92
movl $0x4, %edi
callq 0x30d0
movq %rax, %rdi
movl $0x0, (%rdi)
movq 0xf262(%rip), %rsi      # 0x12fc0
xorl %eax, %eax
movl %eax, %edx
callq 0x33f0
jmp 0x48ab
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x5a0(%rsp)
movl %eax, 0x59c(%rsp)
leaq 0x3c8(%rsp), %rdi
callq 0x3180
jmp 0x3e23
movsd 0x388(%rsp), %xmm0
movsd 0x380(%rsp), %xmm1
leaq 0x368(%rsp), %rdi
callq 0x8cf0
jmp 0x3db3
movq 0x378(%rsp), %rax
movq %rax, 0x3a8(%rsp)
movups 0x368(%rsp), %xmm0
movups %xmm0, 0x398(%rsp)
leaq 0x7b0(%rsp), %rdi
leaq 0x390(%rsp), %rsi
callq 0x8eb0
jmp 0x3dea
leaq 0x3c8(%rsp), %rdi
callq 0x3180
movl $0x0, 0x574(%rsp)
leaq 0x578(%rsp), %rdi
callq 0x3130
movl 0x574(%rsp), %eax
testl %eax, %eax
je 0x3e1e
jmp 0x3e1c
jmp 0x3e35
jmp 0x3aed
leaq 0x578(%rsp), %rdi
callq 0x3130
jmp 0x4884
leaq 0x348(%rsp), %rdi
movq %rdi, 0xf0(%rsp)
callq 0x8f20
movq 0xf0(%rsp), %rdi
leaq 0xf427(%rip), %rsi      # 0x13280
callq 0x8eb0
jmp 0x3e60
jmp 0x3e62
leaq 0x7b0(%rsp), %rdi
callq 0x8f30
xorb $-0x1, %al
testb $0x1, %al
jne 0x3e7a
jmp 0x4091
movsd 0xb1b6(%rip), %xmm0     # 0xf038
movsd %xmm0, 0x340(%rsp)
movl $0xffffffff, 0x33c(%rsp) # imm = 0xFFFFFFFF
movl $0x0, 0x338(%rsp)
movl 0x338(%rsp), %eax
movl %eax, 0xe8(%rsp)
leaq 0x7b0(%rsp), %rdi
callq 0x8f80
movl %eax, 0xec(%rsp)
jmp 0x3ec5
movl 0xe8(%rsp), %eax
movl 0xec(%rsp), %ecx
cmpl %ecx, %eax
jge 0x3fec
leaq 0x348(%rsp), %rdi
callq 0x8f90
movq 0x18(%rax), %rcx
movq %rcx, 0x320(%rsp)
movups 0x8(%rax), %xmm0
movaps %xmm0, 0x310(%rsp)
movslq 0x338(%rsp), %rsi
leaq 0x7b0(%rsp), %rdi
callq 0x8fd0
movq 0x18(%rax), %rcx
movq %rcx, 0x300(%rsp)
movups 0x8(%rax), %xmm0
movaps %xmm0, 0x2f0(%rsp)
movq 0x300(%rsp), %rcx
movq %rsp, %rax
movq %rcx, 0x28(%rax)
movaps 0x2f0(%rsp), %xmm0
movups %xmm0, 0x18(%rax)
movq 0x320(%rsp), %rcx
movq %rcx, 0x10(%rax)
movaps 0x310(%rsp), %xmm0
movups %xmm0, (%rax)
callq 0x3860
movsd %xmm0, 0xe0(%rsp)
jmp 0x3f6f
movsd 0xe0(%rsp), %xmm0
movsd %xmm0, 0x330(%rsp)
movsd 0x330(%rsp), %xmm1
movsd 0x340(%rsp), %xmm0
ucomisd %xmm1, %xmm0
jbe 0x3fd4
movsd 0x330(%rsp), %xmm0
movsd %xmm0, 0x340(%rsp)
movl 0x338(%rsp), %eax
movl %eax, 0x33c(%rsp)
jmp 0x3fd4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x5a0(%rsp)
movl %eax, 0x59c(%rsp)
jmp 0x4877
jmp 0x3fd6
movl 0x338(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x338(%rsp)
jmp 0x3ea1
cmpl $-0x1, 0x33c(%rsp)
jne 0x401e
movl $0x4, %edi
callq 0x30d0
movq %rax, %rdi
movl $0x0, (%rdi)
movq 0xefb0(%rip), %rsi      # 0x12fc0
xorl %eax, %eax
movl %eax, %edx
callq 0x33f0
jmp 0x48ab
movslq 0x33c(%rsp), %rsi
leaq 0x7b0(%rsp), %rdi
movq %rdi, 0xd8(%rsp)
callq 0x8fd0
movq 0xd8(%rsp), %rdi
movq %rax, 0xd0(%rsp)
callq 0x8f90
movq 0xd0(%rsp), %rdi
movq %rax, %rsi
callq 0x8ff0
movq 0xd8(%rsp), %rdi
callq 0x8f90
movq %rax, %rsi
leaq 0x348(%rsp), %rdi
callq 0x8eb0
jmp 0x407f
leaq 0x7b0(%rsp), %rdi
callq 0x9040
jmp 0x3e62
leaq 0xf1e8(%rip), %rsi      # 0x13280
leaq 0x348(%rsp), %rdi
callq 0x8eb0
jmp 0x40a7
jmp 0x40a9
jmp 0x40ab
movb $0x0, 0x2ef(%rsp)
movl $0x1, 0x2e8(%rsp)
movl 0x2e8(%rsp), %eax
movl %eax, 0xc8(%rsp)
leaq 0x348(%rsp), %rdi
callq 0x8f80
movl %eax, 0xcc(%rsp)
jmp 0x40e2
movl 0xc8(%rsp), %eax
movl 0xcc(%rsp), %ecx
cmpl %ecx, %eax
jge 0x452e
movl 0x2e8(%rsp), %eax
addl $0x2, %eax
movl %eax, 0x2e4(%rsp)
movl 0x2e4(%rsp), %eax
movl %eax, 0xc0(%rsp)
leaq 0x348(%rsp), %rdi
callq 0x8f80
movl %eax, 0xc4(%rsp)
jmp 0x412d
movl 0xc0(%rsp), %eax
movl 0xc4(%rsp), %ecx
cmpl %ecx, %eax
jge 0x4516
movq $0x0, 0x2d8(%rsp)
movl 0x2e8(%rsp), %eax
decl %eax
movslq %eax, %rsi
leaq 0x348(%rsp), %rdi
movq %rdi, 0xb0(%rsp)
callq 0x8fd0
movq 0xb0(%rsp), %rdi
movq 0x18(%rax), %rcx
movq %rcx, 0x2d0(%rsp)
movups 0x8(%rax), %xmm0
movaps %xmm0, 0x2c0(%rsp)
movslq 0x2e8(%rsp), %rsi
callq 0x8fd0
movq 0x18(%rax), %rcx
movq %rcx, 0x2b0(%rsp)
movups 0x8(%rax), %xmm0
movaps %xmm0, 0x2a0(%rsp)
movq 0x2b0(%rsp), %rcx
movq %rsp, %rax
movq %rcx, 0x28(%rax)
movaps 0x2a0(%rsp), %xmm0
movups %xmm0, 0x18(%rax)
movq 0x2d0(%rsp), %rcx
movq %rcx, 0x10(%rax)
movaps 0x2c0(%rsp), %xmm0
movups %xmm0, (%rax)
callq 0x3860
movsd %xmm0, 0xb8(%rsp)
jmp 0x41f7
movsd 0xb8(%rsp), %xmm1
movsd 0x2d8(%rsp), %xmm0
subsd %xmm1, %xmm0
movsd %xmm0, 0x2d8(%rsp)
movl 0x2e4(%rsp), %eax
decl %eax
movslq %eax, %rsi
leaq 0x348(%rsp), %rdi
movq %rdi, 0xa0(%rsp)
callq 0x8fd0
movq 0xa0(%rsp), %rdi
movq 0x18(%rax), %rcx
movq %rcx, 0x290(%rsp)
movups 0x8(%rax), %xmm0
movaps %xmm0, 0x280(%rsp)
movslq 0x2e4(%rsp), %rsi
callq 0x8fd0
movq 0x18(%rax), %rcx
movq %rcx, 0x270(%rsp)
movups 0x8(%rax), %xmm0
movaps %xmm0, 0x260(%rsp)
movq 0x270(%rsp), %rcx
movq %rsp, %rax
movq %rcx, 0x28(%rax)
movaps 0x260(%rsp), %xmm0
movups %xmm0, 0x18(%rax)
movq 0x290(%rsp), %rcx
movq %rcx, 0x10(%rax)
movaps 0x280(%rsp), %xmm0
movups %xmm0, (%rax)
callq 0x3860
movsd %xmm0, 0xa8(%rsp)
jmp 0x42be
movsd 0xa8(%rsp), %xmm1
movsd 0x2d8(%rsp), %xmm0
subsd %xmm1, %xmm0
movsd %xmm0, 0x2d8(%rsp)
movl 0x2e8(%rsp), %eax
decl %eax
movslq %eax, %rsi
leaq 0x348(%rsp), %rdi
movq %rdi, 0x90(%rsp)
callq 0x8fd0
movq 0x90(%rsp), %rdi
movq 0x18(%rax), %rcx
movq %rcx, 0x250(%rsp)
movups 0x8(%rax), %xmm0
movaps %xmm0, 0x240(%rsp)
movl 0x2e4(%rsp), %eax
decl %eax
movslq %eax, %rsi
callq 0x8fd0
movq 0x18(%rax), %rcx
movq %rcx, 0x230(%rsp)
movups 0x8(%rax), %xmm0
movaps %xmm0, 0x220(%rsp)
movq 0x230(%rsp), %rcx
movq %rsp, %rax
movq %rcx, 0x28(%rax)
movaps 0x220(%rsp), %xmm0
movups %xmm0, 0x18(%rax)
movq 0x250(%rsp), %rcx
movq %rcx, 0x10(%rax)
movaps 0x240(%rsp), %xmm0
movups %xmm0, (%rax)
callq 0x3860
movsd %xmm0, 0x98(%rsp)
jmp 0x4389
movsd 0x98(%rsp), %xmm1
movsd 0x2d8(%rsp), %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, 0x2d8(%rsp)
movslq 0x2e8(%rsp), %rsi
leaq 0x348(%rsp), %rdi
movq %rdi, 0x80(%rsp)
callq 0x8fd0
movq 0x80(%rsp), %rdi
movq 0x18(%rax), %rcx
movq %rcx, 0x210(%rsp)
movups 0x8(%rax), %xmm0
movaps %xmm0, 0x200(%rsp)
movslq 0x2e4(%rsp), %rsi
callq 0x8fd0
movq 0x18(%rax), %rcx
movq %rcx, 0x1f0(%rsp)
movups 0x8(%rax), %xmm0
movaps %xmm0, 0x1e0(%rsp)
movq 0x1f0(%rsp), %rcx
movq %rsp, %rax
movq %rcx, 0x28(%rax)
movaps 0x1e0(%rsp), %xmm0
movups %xmm0, 0x18(%rax)
movq 0x210(%rsp), %rcx
movq %rcx, 0x10(%rax)
movaps 0x200(%rsp), %xmm0
movups %xmm0, (%rax)
callq 0x3860
movsd %xmm0, 0x88(%rsp)
jmp 0x444c
movsd 0x88(%rsp), %xmm0
addsd 0x2d8(%rsp), %xmm0
movsd %xmm0, 0x2d8(%rsp)
xorps %xmm0, %xmm0
ucomisd 0x2d8(%rsp), %xmm0
jbe 0x44fe
leaq 0x348(%rsp), %rdi
movq %rdi, 0x78(%rsp)
callq 0x90a0
movq %rax, 0x1d0(%rsp)
movslq 0x2e8(%rsp), %rsi
leaq 0x1d0(%rsp), %rdi
callq 0x90d0
movq 0x78(%rsp), %rdi
movq %rax, 0x1d8(%rsp)
callq 0x90a0
movq %rax, 0x1c0(%rsp)
movslq 0x2e4(%rsp), %rsi
leaq 0x1c0(%rsp), %rdi
callq 0x90d0
movq %rax, 0x1c8(%rsp)
movq 0x1d8(%rsp), %rdi
movq 0x1c8(%rsp), %rsi
callq 0x9060
jmp 0x44f6
movb $0x1, 0x2ef(%rsp)
jmp 0x4500
movl 0x2e4(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x2e4(%rsp)
jmp 0x4109
jmp 0x4518
movl 0x2e8(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x2e8(%rsp)
jmp 0x40be
testb $0x1, 0x2ef(%rsp)
jne 0x453a
jmp 0x453f
jmp 0x40a9
movq 0x140(%rsp), %rdi
movb $0x0, 0x1bf(%rsp)
callq 0x9110
movl $0x1, 0x1b8(%rsp)
movl 0x1b8(%rsp), %eax
movl %eax, 0x70(%rsp)
leaq 0x348(%rsp), %rdi
callq 0x8f80
movl %eax, 0x74(%rsp)
jmp 0x457d
movl 0x70(%rsp), %eax
movl 0x74(%rsp), %ecx
subl $0x1, %ecx
cmpl %ecx, %eax
je 0x4809
movl 0x1b8(%rsp), %eax
movl %eax, 0x1b4(%rsp)
movq $0x0, 0x1a8(%rsp)
movl 0x1b4(%rsp), %eax
movl %eax, 0x68(%rsp)
leaq 0x348(%rsp), %rdi
callq 0x8f80
movl %eax, 0x6c(%rsp)
jmp 0x45c8
movl 0x68(%rsp), %ecx
movl 0x6c(%rsp), %edx
subl $0x1, %edx
xorl %eax, %eax
cmpl %edx, %ecx
movb %al, 0x67(%rsp)
je 0x4638
movl 0x1b4(%rsp), %ecx
movb $0x1, %al
cmpl 0x1b8(%rsp), %ecx
movb %al, 0x66(%rsp)
je 0x4630
movq 0x1a8(%rsp), %rax
movq %rax, 0x58(%rsp)
leaq 0x348(%rsp), %rdi
movslq 0x1b4(%rsp), %rsi
callq 0x8fd0
movq %rax, %rcx
movq 0x58(%rsp), %rax
addq 0x20(%rcx), %rax
cmpq 0x7c8(%rsp), %rax
setle %al
movb %al, 0x66(%rsp)
movb 0x66(%rsp), %al
movb %al, 0x67(%rsp)
movb 0x67(%rsp), %al
testb $0x1, %al
jne 0x4642
jmp 0x469a
leaq 0x348(%rsp), %rdi
movslq 0x1b4(%rsp), %rsi
callq 0x8fd0
movq 0x20(%rax), %rax
addq 0x1a8(%rsp), %rax
movq %rax, 0x1a8(%rsp)
movl 0x1b4(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x1b4(%rsp)
jmp 0x45aa
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x5a0(%rsp)
movl %eax, 0x59c(%rsp)
jmp 0x486a
leaq 0x188(%rsp), %rdi
movq %rdi, 0x50(%rsp)
callq 0x8f20
movq 0x50(%rsp), %rdi
leaq 0xebc8(%rip), %rsi      # 0x13280
callq 0x8eb0
jmp 0x46bf
leaq 0x188(%rsp), %rdi
movq %rdi, 0x40(%rsp)
callq 0x91e0
movq %rax, 0x178(%rsp)
leaq 0x180(%rsp), %rdi
leaq 0x178(%rsp), %rsi
callq 0x9210
leaq 0x348(%rsp), %rdi
movq %rdi, 0x38(%rsp)
callq 0x90a0
movq %rax, 0x168(%rsp)
movslq 0x1b8(%rsp), %rsi
leaq 0x168(%rsp), %rdi
callq 0x90d0
movq 0x38(%rsp), %rdi
movq %rax, 0x170(%rsp)
callq 0x90a0
movq %rax, 0x158(%rsp)
movslq 0x1b4(%rsp), %rsi
leaq 0x158(%rsp), %rdi
callq 0x90d0
movq 0x40(%rsp), %rdi
movq %rax, 0x160(%rsp)
movq 0x180(%rsp), %rsi
movq 0x170(%rsp), %rdx
movq 0x160(%rsp), %rcx
callq 0x9120
movq %rax, 0x48(%rsp)
jmp 0x477d
movq 0x48(%rsp), %rax
movq %rax, 0x150(%rsp)
leaq 0xeaef(%rip), %rsi      # 0x13280
leaq 0x188(%rsp), %rdi
callq 0x8eb0
jmp 0x47a0
leaq 0x188(%rsp), %rdi
callq 0x9250
jmp 0x47af
movq 0x140(%rsp), %rdi
leaq 0x188(%rsp), %rsi
callq 0x9590
jmp 0x47c6
movl 0x1b4(%rsp), %eax
movl %eax, 0x1b8(%rsp)
leaq 0x188(%rsp), %rdi
callq 0x95c0
jmp 0x455f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x5a0(%rsp)
movl %eax, 0x59c(%rsp)
leaq 0x188(%rsp), %rdi
callq 0x95c0
jmp 0x486a
movb $0x1, 0x1bf(%rsp)
movl $0x1, 0x574(%rsp)
testb $0x1, 0x1bf(%rsp)
jne 0x4833
movq 0x140(%rsp), %rdi
callq 0x95d0
leaq 0x348(%rsp), %rdi
callq 0x95c0
leaq 0x5a8(%rsp), %rdi
callq 0x3050
leaq 0x7b0(%rsp), %rdi
callq 0x9630
movq 0x148(%rsp), %rax
addq $0x7d8, %rsp            # imm = 0x7D8
retq
movq 0x140(%rsp), %rdi
callq 0x95d0
leaq 0x348(%rsp), %rdi
callq 0x95c0
leaq 0x5a8(%rsp), %rdi
callq 0x3050
leaq 0x7b0(%rsp), %rdi
callq 0x9630
movq 0x5a0(%rsp), %rdi
callq 0x3410
nopl (%rax,%rax)