// File: wx-csy[P]librmq/prep.cpp
// Function: decision_tree_node::decision_tree_node(std::vector<instance, std::allocator<instance>> const&, int)
decision_tree_node(const std::vector<instance>& instances, int dep) {
        id = next_node_id++;
        tree_id = should_stop(instances);
        if (tree_id >= 0) {
            crit = -1;
        } else {
            crit = select_criterion(instances);
            std::vector<instance> subtree_inst[2];
            for (auto& inst : instances) 
                subtree_inst[inst.bs[crit]].push_back(inst);
            for (int i = 0; i < 2; i++)
                subtree[i] = new decision_tree_node(subtree_inst[i], dep + 1);
        }
    }

// Assembly:
subq $0xe8, %rsp
movq %rdi, 0xe0(%rsp)
movq %rsi, 0xd8(%rsp)
movl %edx, 0xd4(%rsp)
movq 0xe0(%rsp), %rax
movq %rax, 0x58(%rsp)
addq $0x10, %rax
movq %rax, %rcx
addq $0x10, %rcx
movq %rcx, 0x60(%rsp)
movq %rax, 0x68(%rsp)
movq 0x68(%rsp), %rax
movq 0x60(%rsp), %rcx
movq $0x0, (%rax)
addq $0x8, %rax
cmpq %rcx, %rax
movq %rax, 0x68(%rsp)
jne 0x2370
movq 0x58(%rsp), %rax
movl 0xbdce(%rip), %ecx      # 0xe168
movl %ecx, %edx
addl $0x1, %edx
movl %edx, 0xbdc3(%rip)      # 0xe168
movl %ecx, (%rax)
movq 0xd8(%rsp), %rdi
callq 0x3750
movl %eax, %ecx
movq 0x58(%rsp), %rax
movl %ecx, 0x8(%rax)
cmpl $0x0, 0x8(%rax)
jl 0x23d5
movq 0x58(%rsp), %rax
movl $0xffffffff, 0x4(%rax)  # imm = 0xFFFFFFFF
jmp 0x2606
movq 0xd8(%rsp), %rdi
callq 0x37f0
movl %eax, %ecx
movq 0x58(%rsp), %rax
movl %ecx, 0x4(%rax)
leaq 0xa0(%rsp), %rax
movq %rax, %rcx
addq $0x30, %rcx
movq %rcx, 0x48(%rsp)
movq %rax, 0x50(%rsp)
movq 0x50(%rsp), %rdi
movq %rdi, 0x40(%rsp)
callq 0x1dd0
movq 0x40(%rsp), %rax
movq 0x48(%rsp), %rcx
addq $0x18, %rax
cmpq %rcx, %rax
movq %rax, 0x50(%rsp)
jne 0x2405
movq 0xd8(%rsp), %rax
movq %rax, 0x98(%rsp)
movq 0x98(%rsp), %rdi
callq 0x3940
movq %rax, 0x90(%rsp)
movq 0x98(%rsp), %rdi
callq 0x3970
movq %rax, 0x88(%rsp)
leaq 0x90(%rsp), %rdi
leaq 0x88(%rsp), %rsi
callq 0x39a0
testb $0x1, %al
jne 0x2484
jmp 0x2504
leaq 0x90(%rsp), %rdi
callq 0x39e0
movq %rax, %rcx
movq 0x58(%rsp), %rax
movq %rcx, 0x80(%rsp)
movq 0x80(%rsp), %rdi
movslq 0x4(%rax), %rsi
callq 0x39f0
movb %al, 0x3f(%rsp)
jmp 0x24b8
movb 0x3f(%rsp), %al
movzbl %al, %eax
andl $0x1, %eax
leaq (%rax,%rax,2), %rax
leaq 0xa0(%rsp,%rax,8), %rdi
movq 0x80(%rsp), %rsi
callq 0x3a20
jmp 0x24dd
jmp 0x24df
leaq 0x90(%rsp), %rdi
callq 0x3a90
jmp 0x2466
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x78(%rsp)
movl %eax, 0x74(%rsp)
jmp 0x25c9
movl $0x0, 0x70(%rsp)
cmpl $0x2, 0x70(%rsp)
jge 0x258a
movl $0x20, %edi
callq 0x10e0
movq %rax, 0x30(%rsp)
jmp 0x2524
movq 0x30(%rsp), %rdi
movslq 0x70(%rsp), %rax
leaq (%rax,%rax,2), %rax
leaq 0xa0(%rsp,%rax,8), %rsi
movl 0xd4(%rsp), %edx
incl %edx
callq 0x2330
jmp 0x254a
movq 0x58(%rsp), %rax
movq 0x30(%rsp), %rdx
movslq 0x70(%rsp), %rcx
movq %rdx, 0x10(%rax,%rcx,8)
movl 0x70(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x70(%rsp)
jmp 0x250c
movq 0x30(%rsp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x78(%rsp)
movl %eax, 0x74(%rsp)
movl $0x20, %esi
callq 0x10f0
jmp 0x25c9
leaq 0xa0(%rsp), %rax
movq %rax, 0x20(%rsp)
addq $0x30, %rax
movq %rax, 0x28(%rsp)
movq 0x28(%rsp), %rdi
addq $-0x18, %rdi
movq %rdi, 0x18(%rsp)
callq 0x1de0
movq 0x20(%rsp), %rcx
movq 0x18(%rsp), %rax
cmpq %rcx, %rax
movq %rax, 0x28(%rsp)
jne 0x25a0
jmp 0x2606
leaq 0xa0(%rsp), %rax
movq %rax, 0x8(%rsp)
addq $0x30, %rax
movq %rax, 0x10(%rsp)
movq 0x10(%rsp), %rdi
addq $-0x18, %rdi
movq %rdi, (%rsp)
callq 0x1de0
movq 0x8(%rsp), %rcx
movq (%rsp), %rax
cmpq %rcx, %rax
movq %rax, 0x10(%rsp)
jne 0x25df
jmp 0x260e
addq $0xe8, %rsp
retq
movq 0x78(%rsp), %rdi
callq 0x1180
nopl (%rax,%rax)