// File: 0asa[P]TTree-source/ClassicTree.cpp
// Function: ClassicTree::computeVimp()
void ClassicTree::computeVimp() {
	Node* n = root;
	Score sc;
	Scorer s(db);
	ScoreInfo si;
	std::vector<unsigned int> left;
	std::vector<unsigned int> right;
	Stack stack;
	stack.push(n);
	while (!stack.empty()) {
		n = stack.pop();
		if (!n->isLeaf()) {
			si.attribute = n->getAtt();
			si.threshold = n->getTh();
			std::vector<unsigned int> set = n->getLS();
			ContingencyTable ct = s.getContingencyTable(set,si.attribute,si.threshold);
			vimp[n->getAtt()] += sc.getMutualInfo(ct) * set.size();
			stack.push(n->getLeft());
			stack.push(n->getRight());
		}
	}
}

// Assembly:
subq $0x1b8, %rsp            # imm = 0x1B8
movq %rdi, 0x1b0(%rsp)
movq 0x1b0(%rsp), %rax
movq %rax, 0x58(%rsp)
movq 0x50(%rax), %rax
movq %rax, 0x1a8(%rsp)
leaq 0x1a4(%rsp), %rdi
callq 0xcdf0
movq 0x58(%rsp), %rax
movq 0x8(%rax), %rsi
leaq 0x178(%rsp), %rdi
callq 0x26d90
jmp 0x15d5d
leaq 0x138(%rsp), %rdi
callq 0x26ba0
jmp 0x15d6c
leaq 0x120(%rsp), %rdi
callq 0x67b0
leaq 0x108(%rsp), %rdi
callq 0x67b0
leaq 0xf0(%rsp), %rdi
callq 0x2d660
jmp 0x15d95
movq 0x1a8(%rsp), %rsi
leaq 0xf0(%rsp), %rdi
callq 0x2d680
jmp 0x15dac
jmp 0x15dae
leaq 0xf0(%rsp), %rdi
callq 0x2d720
movb %al, 0x57(%rsp)
jmp 0x15dc1
movb 0x57(%rsp), %al
xorb $-0x1, %al
testb $0x1, %al
jne 0x15dd0
jmp 0x1606b
leaq 0xf0(%rsp), %rdi
callq 0x2d6d0
movq %rax, 0x48(%rsp)
jmp 0x15de4
movq 0x48(%rsp), %rax
movq %rax, 0x1a8(%rsp)
movq 0x1a8(%rsp), %rdi
callq 0x21aa0
movb %al, 0x47(%rsp)
jmp 0x15e04
movb 0x47(%rsp), %al
testb $0x1, %al
jne 0x16066
jmp 0x15e12
movq 0x1a8(%rsp), %rdi
callq 0x21cd0
movl %eax, 0x40(%rsp)
jmp 0x15e25
movl 0x40(%rsp), %eax
movl %eax, 0x154(%rsp)
movq 0x1a8(%rsp), %rdi
callq 0x21cf0
movsd %xmm0, 0x38(%rsp)
jmp 0x15e45
movsd 0x38(%rsp), %xmm0
movsd %xmm0, 0x158(%rsp)
movq 0x1a8(%rsp), %rdi
callq 0xcba0
movq %rax, 0x30(%rsp)
jmp 0x15e68
movq 0x30(%rsp), %rsi
leaq 0xd8(%rsp), %rdi
callq 0xcbb0
jmp 0x15e7c
movl 0x154(%rsp), %ecx
movsd 0x158(%rsp), %xmm0
leaq 0x60(%rsp), %rdi
leaq 0x178(%rsp), %rsi
leaq 0xd8(%rsp), %rdx
callq 0x281a0
jmp 0x15ea8
leaq 0x1a4(%rsp), %rdi
leaq 0x60(%rsp), %rsi
callq 0x26a40
movsd %xmm0, 0x28(%rsp)
jmp 0x15ec2
leaq 0xd8(%rsp), %rdi
callq 0x8bf0
movq %rax, %rcx
movq 0x58(%rsp), %rax
movq %rcx, %xmm0
movaps 0x1a86d(%rip), %xmm1    # 0x30750
punpckldq %xmm1, %xmm0    # xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
movapd 0x1a871(%rip), %xmm1    # 0x30760
subpd %xmm1, %xmm0
movaps %xmm0, %xmm1
unpckhpd %xmm0, %xmm0            # xmm0 = xmm0[1,1]
addsd %xmm1, %xmm0
movsd %xmm0, 0x10(%rsp)
addq $0x38, %rax
movq %rax, 0x18(%rsp)
movq 0x1a8(%rsp), %rdi
callq 0x21cd0
movl %eax, 0x24(%rsp)
jmp 0x15f20
movq 0x18(%rsp), %rdi
movl 0x24(%rsp), %eax
movslq %eax, %rsi
callq 0x12680
movsd 0x28(%rsp), %xmm0
movsd 0x10(%rsp), %xmm2
movss (%rax), %xmm1
cvtss2sd %xmm1, %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
cvtsd2ss %xmm0, %xmm0
movss %xmm0, (%rax)
movq 0x1a8(%rsp), %rdi
callq 0x21af0
movq %rax, 0x8(%rsp)
jmp 0x15f69
movq 0x8(%rsp), %rsi
leaq 0xf0(%rsp), %rdi
callq 0x2d680
jmp 0x15f7d
movq 0x1a8(%rsp), %rdi
callq 0x21b00
movq %rax, (%rsp)
jmp 0x15f90
movq (%rsp), %rsi
leaq 0xf0(%rsp), %rdi
callq 0x2d680
jmp 0x15fa3
leaq 0x60(%rsp), %rdi
callq 0x16d70
leaq 0xd8(%rsp), %rdi
callq 0x6830
jmp 0x16066
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x170(%rsp)
movl %eax, 0x16c(%rsp)
jmp 0x16102
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x170(%rsp)
movl %eax, 0x16c(%rsp)
jmp 0x160f5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x170(%rsp)
movl %eax, 0x16c(%rsp)
jmp 0x160ce
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x170(%rsp)
movl %eax, 0x16c(%rsp)
jmp 0x160c1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x170(%rsp)
movl %eax, 0x16c(%rsp)
jmp 0x16057
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x170(%rsp)
movl %eax, 0x16c(%rsp)
leaq 0x60(%rsp), %rdi
callq 0x16d70
leaq 0xd8(%rsp), %rdi
callq 0x6830
jmp 0x160c1
jmp 0x15dae
leaq 0xf0(%rsp), %rdi
callq 0x2d670
leaq 0x108(%rsp), %rdi
callq 0x6830
leaq 0x120(%rsp), %rdi
callq 0x6830
leaq 0x138(%rsp), %rdi
callq 0x12640
leaq 0x178(%rsp), %rdi
callq 0x26e10
leaq 0x1a4(%rsp), %rdi
callq 0xd410
addq $0x1b8, %rsp            # imm = 0x1B8
retq
leaq 0xf0(%rsp), %rdi
callq 0x2d670
leaq 0x108(%rsp), %rdi
callq 0x6830
leaq 0x120(%rsp), %rdi
callq 0x6830
leaq 0x138(%rsp), %rdi
callq 0x12640
leaq 0x178(%rsp), %rdi
callq 0x26e10
leaq 0x1a4(%rsp), %rdi
callq 0xd410
movq 0x170(%rsp), %rdi
callq 0x33e0
nopl (%rax)