// File: /workspace/github_cpp_makefile_star2_O1/iPapatsoris[P]Maximum-Independent-Set/src/Alg.hpp
// Function: Alg::branchRight(Alg::BranchingRule&, Alg::SearchNode*, Mis&) const
void branchRight(BranchingRule &branchingRule, SearchNode *searchNode, Mis &parentMis) const {
        //std::cout << "right\n";
        switch (branchingRule.type) {
            case BranchingRule::Type::MAX_DEGREE:
            case BranchingRule::Type::OPTNODE:
            case BranchingRule::Type::EFFECTIVE_NODE: {
                branchOnExtendedGranchildren(branchingRule, searchNode);
                break;
            }
            case BranchingRule::Type::SHORT_EDGE: {
                branchingRule.container.push_back(branchingRule.node1);
                branchingRule.container.push_back(branchingRule.node2);
                searchNode->graph.remove(branchingRule.container, searchNode->reductions->getReduceInfo());
                std::vector<uint32_t> neighbors1, neighbors2;
                searchNode->graph.gatherNeighbors(branchingRule.node1, neighbors1);
                searchNode->graph.gatherNeighbors(branchingRule.node2, neighbors2);
                std::unordered_map<uint32_t, uint32_t> &subsequentNodes = searchNode->mis.getSubsequentNodes();
                for (auto neighbor1: neighbors1) {
                    subsequentNodes.insert({neighbor1, branchingRule.node2});
                    searchNode->graph.addEdges(neighbor1, neighbors2);
                }
                for (auto neighbor2: neighbors2) {
                    subsequentNodes.insert({neighbor2, branchingRule.node1});
                    searchNode->graph.addEdges(neighbor2, neighbors1);
                }
                break;
            }
            case BranchingRule::Type::GOOD_FUNNEL: {
                searchNode->mis.getMis().push_back(branchingRule.node2);
                std::vector<uint32_t> neighbors;
                searchNode->graph.gatherNeighbors(branchingRule.node2, neighbors);
                neighbors.push_back(branchingRule.node2);
                searchNode->graph.remove(neighbors, searchNode->reductions->getReduceInfo());
                break;
            }
            case BranchingRule::Type::GOOD_PAIR: {
                searchNode->graph.remove(branchingRule.container, searchNode->reductions->getReduceInfo());
                break;
            }
            case BranchingRule::Type::FOUR_CYCLE: {
                std::vector<uint32_t> nonAdjacent;
                nonAdjacent.push_back(branchingRule.container[1]);
                nonAdjacent.push_back(branchingRule.container[3]);
                searchNode->graph.remove(nonAdjacent, searchNode->reductions->getReduceInfo());
                break;
            }
            case BranchingRule::Type::OPT4NODE: {
                std::vector<uint32_t> neighbors;
                searchNode->graph.gatherNeighbors(branchingRule.node1, neighbors);
                neighbors.push_back(branchingRule.node1);
                searchNode->mis.getMis().push_back(branchingRule.node1);
                searchNode->graph.remove(neighbors, searchNode->reductions->getReduceInfo());
                break;
            }
            case BranchingRule::Type::CUT: {
                //std::cout << "right cut" << std::endl;
                std::vector<uint32_t> *component1 = (searchNode->actualComponent1 ? &(searchNode->c1) : &(searchNode->c2));
                std::vector<uint32_t> *component2 = (searchNode->actualComponent1 ? &(searchNode->c2) : &(searchNode->c1));
                std::set<uint32_t> neighbors;
                searchNode->graph.gatherAllNeighbors(searchNode->cut, neighbors);
                component2->insert(component2->end(), searchNode->cut.begin(), searchNode->cut.end());
                searchNode->graph.remove(*component2, searchNode->reductions->getReduceInfo());
                for (auto c: searchNode->cut) {
                    component2->pop_back();
                }
                searchNode->graph.remove(neighbors, searchNode->reductions->getReduceInfo());
                std::unordered_set<uint32_t> nodesInComponent;
                nodesInComponent.insert(component1->begin(), component1->end());
                for (auto n: neighbors) {
                    nodesInComponent.erase(n);
                }
                searchNode->graph.rebuildFromNodes(nodesInComponent);
                searchNode->mis.getMis().clear();
                searchNode->mis.removeSubsequentNodes(nodesInComponent);
                parentMis.removeHypernodes(searchNode->mis.getHypernodeToInnerNode());
                break;
            }
            case BranchingRule::Type::CUT_RIGHT_1: {
                //std::cout << "right cut 1" << std::endl;
                std::vector<uint32_t> *component1 = (searchNode->actualComponent1 ? &(searchNode->c1) : &(searchNode->c2));
                std::vector<uint32_t> *component2 = (searchNode->actualComponent1 ? &(searchNode->c2) : &(searchNode->c1));
                searchNode->graph.remove(*component1, searchNode->reductions->getReduceInfo());
                std::unordered_set<uint32_t> nodesInComponent;
                nodesInComponent.insert(component2->begin(), component2->end());
                nodesInComponent.insert(searchNode->cut.begin(), searchNode->cut.end());
                searchNode->graph.rebuildFromNodes(nodesInComponent);
                searchNode->mis.getMis().clear();
                searchNode->mis.removeSubsequentNodes(nodesInComponent);
                parentMis.removeHypernodes(searchNode->mis.getHypernodeToInnerNode());
                break;
            }
            case BranchingRule::Type::CUT_RIGHT_2: {
                //std::cout << "right cut 2" << std::endl;
                std::vector<uint32_t> *component1 = (searchNode->actualComponent1 ? &(searchNode->c1) : &(searchNode->c2));
                std::vector<uint32_t> *component2 = (searchNode->actualComponent1 ? &(searchNode->c2) : &(searchNode->c1));
                component1->insert(component1->end(), searchNode->cut.begin(), searchNode->cut.end());
                searchNode->graph.remove(*component1, searchNode->reductions->getReduceInfo());
                for (auto c: searchNode->cut) {
                    component1->pop_back();
                }
                std::unordered_set<uint32_t> nodesInComponent;
                nodesInComponent.insert(component2->begin(), component2->end());
                searchNode->graph.rebuildFromNodes(nodesInComponent);
                searchNode->mis.getMis().clear();
                searchNode->mis.removeSubsequentNodes(nodesInComponent);
                parentMis.removeHypernodes(searchNode->mis.getHypernodeToInnerNode());
                break;
            }
            default:
                assert(false);
        }
        uint32_t dummy, maxDegree;
        uint32_t oldTheta = searchNode->theta;
        searchNode->graph.getMaxNodeDegree(dummy, maxDegree, oldTheta);
        if (maxDegree < oldTheta) {
            if (maxDegree >= 3) {
                searchNode->theta = maxDegree;
            } else {
                searchNode->theta = 3;
            }
        }
    }

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x98, %rsp
movq %rcx, 0x48(%rsp)
movl (%rsi), %eax
cmpq $0xa, %rax
ja 0x16144
movq %rdx, %rbx
movq %rsi, %r15
leaq 0x51bb(%rip), %rcx      # 0x1a9ec
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq %r15, %rsi
movq %rbx, %rdx
callq 0x16f22
jmp 0x160f8
leaq 0x168(%rbx), %r14
leaq 0x180(%rbx), %rax
xorl %ecx, %ecx
cmpb %cl, 0x198(%rbx)
movq %rax, %rsi
cmovneq %r14, %rsi
cmovneq %rax, %r14
leaq 0x30(%rbx), %r15
movq %rbx, 0x8(%rsp)
movq 0x108(%rbx), %rdx
addq $0x10, %rdx
leaq 0x10(%rsp), %r12
movb %cl, (%r12)
leaq 0x50(%rsp), %r13
movb %cl, (%r13)
movq %r15, %rdi
movq %r12, %rcx
xorl %r8d, %r8d
movq %r13, %r9
callq 0xc16e
leaq 0x40(%rsp), %rax
movq %rax, -0x30(%rax)
movq $0x1, -0x28(%rax)
xorps %xmm0, %xmm0
movups %xmm0, -0x20(%rax)
movl $0x3f800000, -0x10(%rax) # imm = 0x3F800000
movups %xmm0, -0x8(%rax)
movq (%r14), %rbx
movq 0x8(%r14), %r14
movq %r12, (%r13)
cmpq %r14, %rbx
je 0x158f6
leaq 0x10(%rsp), %r13
leaq 0x50(%rsp), %rbp
movq %r13, %rdi
movq %rbx, %rsi
movq %rbp, %rdx
callq 0x17362
addq $0x4, %rbx
cmpq %r14, %rbx
jne 0x158df
movq 0x8(%rsp), %rax
movq 0x140(%rax), %r14
movq %r12, 0x50(%rsp)
testq %r14, %r14
je 0x1592d
leaq 0x10(%rsp), %rbx
leaq 0x50(%rsp), %r12
leaq 0x8(%r14), %rsi
movq %rbx, %rdi
movq %r12, %rdx
callq 0xdc3e
movq (%r14), %r14
testq %r14, %r14
jne 0x15916
leaq 0x10(%rsp), %rsi
movq %r15, %rdi
callq 0x33fc
movq 0x8(%rsp), %rbx
leaq 0x80(%rbx), %rdi
movq 0x80(%rbx), %rax
cmpq %rax, 0x88(%rbx)
je 0x1595d
movq %rax, 0x88(%rbx)
leaq 0x10(%rsp), %rsi
callq 0x1804a
leaq 0x98(%rbx), %rsi
movq 0x48(%rsp), %rdi
callq 0x17fd4
jmp 0x15b6c
xorps %xmm0, %xmm0
leaq 0x10(%rsp), %rdx
movaps %xmm0, (%rdx)
movq $0x0, 0x10(%rdx)
leaq 0x30(%rbx), %r14
addq $0x4, %r15
leaq 0x50(%rsp), %r8
movl $0xffffffff, (%r8)      # imm = 0xFFFFFFFF
movq %r14, %rdi
movq %r15, %rsi
xorl %ecx, %ecx
callq 0xc714
movq 0x18(%rsp), %rsi
cmpq 0x20(%rsp), %rsi
je 0x16048
movl (%r15), %eax
movl %eax, (%rsi)
addq $0x4, %rsi
movq %rsi, 0x18(%rsp)
jmp 0x16055
leaq 0x30(%rbx), %rdi
addq $0x10, %r15
movq 0x108(%rbx), %rdx
addq $0x10, %rdx
xorl %eax, %eax
leaq 0x10(%rsp), %rcx
movb %al, (%rcx)
leaq 0x50(%rsp), %r9
movb %al, (%r9)
movq %r15, %rsi
xorl %r8d, %r8d
callq 0xc16e
jmp 0x160f8
xorps %xmm0, %xmm0
movaps %xmm0, 0x10(%rsp)
movq $0x0, 0x20(%rsp)
movq 0x10(%r15), %rdx
addq $0x4, %rdx
movq 0x18(%rsp), %rsi
testq %rsi, %rsi
je 0x15dee
movl (%rdx), %eax
movl %eax, (%rsi)
addq $0x4, %rsi
movq %rsi, 0x18(%rsp)
jmp 0x15df8
leaq 0x168(%rbx), %r14
movq %rbx, %rbp
xorl %ebx, %ebx
cmpb %bl, 0x198(%rbp)
leaq 0x180(%rbp), %rax
movq %rax, %r12
cmovneq %r14, %r12
cmovneq %rax, %r14
movq 0x8(%r12), %rsi
movq 0x140(%rbp), %rdx
movq %r12, %rdi
xorl %ecx, %ecx
callq 0x17158
leaq 0x30(%rbp), %r15
movq 0x108(%rbp), %rdx
addq $0x10, %rdx
leaq 0x10(%rsp), %r13
movb %bl, (%r13)
leaq 0x50(%rsp), %r9
movb %bl, (%r9)
movq %r15, %rdi
movq %r12, %rsi
movq %r13, %rcx
xorl %r8d, %r8d
callq 0xc16e
movq 0x140(%rbp), %rax
testq %rax, %rax
je 0x15ace
movq 0x8(%r12), %rcx
addq $-0x4, %rcx
movq (%rax), %rax
testq %rax, %rax
jne 0x15abd
movq %rcx, 0x8(%r12)
leaq 0x40(%rsp), %rax
movq %rax, -0x30(%rax)
movq $0x1, -0x28(%rax)
xorps %xmm0, %xmm0
movups %xmm0, -0x20(%rax)
movl $0x3f800000, -0x10(%rax) # imm = 0x3F800000
movups %xmm0, -0x8(%rax)
movq (%r14), %rbx
movq 0x8(%r14), %r14
movq %r13, 0x50(%rsp)
cmpq %r14, %rbx
je 0x15b23
leaq 0x10(%rsp), %r12
leaq 0x50(%rsp), %r13
movq %r12, %rdi
movq %rbx, %rsi
movq %r13, %rdx
callq 0x17362
addq $0x4, %rbx
cmpq %r14, %rbx
jne 0x15b0c
leaq 0x10(%rsp), %rsi
movq %r15, %rdi
callq 0x33fc
movq %rbp, %rbx
leaq 0x80(%rbp), %rdi
movq 0x80(%rbp), %rax
cmpq %rax, 0x88(%rbp)
je 0x15b51
movq %rax, 0x88(%rbx)
leaq 0x10(%rsp), %rsi
callq 0x1804a
leaq 0x98(%rbx), %rsi
movq 0x48(%rsp), %rdi
callq 0x17fd4
leaq 0x10(%rsp), %rdi
callq 0xcff8
jmp 0x160f8
leaq 0x168(%rbx), %r12
cmpb $0x0, 0x198(%rbx)
leaq 0x180(%rbx), %rax
movq %rax, %rcx
cmovneq %r12, %rcx
movq %rcx, 0x90(%rsp)
cmovneq %rax, %r12
leaq 0x58(%rsp), %rcx
movl $0x0, (%rcx)
xorl %eax, %eax
movq %rax, 0x8(%rcx)
movq %rcx, 0x10(%rcx)
movq %rcx, 0x18(%rcx)
movq %rax, 0x20(%rcx)
leaq 0x30(%rbx), %r15
movq %rbx, %rax
addq $0x130, %rbx            # imm = 0x130
leaq 0x10(%rsp), %r13
movl $0xffffffff, (%r13)     # imm = 0xFFFFFFFF
movq %rax, 0x8(%rsp)
leaq 0x140(%rax), %r14
leaq 0x50(%rsp), %rbp
movq %r14, 0x88(%rsp)
movq (%r14), %r14
testq %r14, %r14
je 0x15c15
leaq 0x8(%r14), %rsi
movq %r15, %rdi
movq %rbp, %rdx
movq %rbx, %rcx
movq %r13, %r8
callq 0xd05a
testb %al, %al
jne 0x15bf4
movq 0x8(%r12), %rsi
movq 0x88(%rsp), %r13
movq (%r13), %rdx
movq %r12, %rdi
xorl %ecx, %ecx
callq 0x17158
movq 0x8(%rsp), %rbx
movq 0x108(%rbx), %rdx
addq $0x10, %rdx
xorl %eax, %eax
leaq 0x10(%rsp), %rcx
movb %al, (%rcx)
movq %rsp, %r9
movb %al, (%r9)
movq %r15, %rdi
movq %r12, %rsi
xorl %r8d, %r8d
callq 0xc16e
leaq 0x58(%rsp), %r14
movq (%r13), %rax
testq %rax, %rax
je 0x15c81
movq 0x8(%r12), %rcx
addq $-0x4, %rcx
movq (%rax), %rax
testq %rax, %rax
jne 0x15c70
movq %rcx, 0x8(%r12)
movq 0x108(%rbx), %rdx
addq $0x10, %rdx
xorl %eax, %eax
leaq 0x10(%rsp), %rbx
movb %al, (%rbx)
movq %rsp, %r9
movb %al, (%r9)
leaq 0x50(%rsp), %rsi
movq %r15, %rdi
movq %rbx, %rcx
xorl %r8d, %r8d
callq 0x12a88
leaq 0x40(%rsp), %rax
movq %rax, -0x30(%rax)
movq $0x1, -0x28(%rax)
xorps %xmm0, %xmm0
movups %xmm0, -0x20(%rax)
movl $0x3f800000, -0x10(%rax) # imm = 0x3F800000
movups %xmm0, -0x8(%rax)
movq 0x90(%rsp), %rax
movq (%rax), %r12
movq 0x8(%rax), %rbp
movq %rbx, (%rsp)
cmpq %rbp, %r12
je 0x15d08
leaq 0x10(%rsp), %rbx
movq %rsp, %r13
movq %rbx, %rdi
movq %r12, %rsi
movq %r13, %rdx
callq 0x17362
addq $0x4, %r12
cmpq %rbp, %r12
jne 0x15cf1
movq 0x68(%rsp), %rbx
cmpq %r14, %rbx
je 0x15d3b
leaq 0x10(%rsp), %r12
movq %rsp, %r13
movl 0x20(%rbx), %eax
movl %eax, (%rsp)
movq %r12, %rdi
movq %r13, %rsi
callq 0xda9e
movq %rbx, %rdi
callq 0x2210
movq %rax, %rbx
cmpq %r14, %rax
jne 0x15d1a
leaq 0x10(%rsp), %rsi
movq %r15, %rdi
callq 0x33fc
movq 0x8(%rsp), %rbx
leaq 0x80(%rbx), %rdi
movq 0x80(%rbx), %rax
cmpq %rax, 0x88(%rbx)
je 0x15d6b
movq %rax, 0x88(%rbx)
leaq 0x10(%rsp), %rsi
callq 0x1804a
leaq 0x98(%rbx), %rsi
movq 0x48(%rsp), %rdi
callq 0x17fd4
leaq 0x10(%rsp), %rdi
callq 0xcff8
leaq 0x50(%rsp), %rdi
callq 0xcfae
jmp 0x160f8
addq $0x8, %r15
movq 0x88(%rbx), %rsi
cmpq 0x90(%rbx), %rsi
je 0x15e22
movl (%r15), %eax
movl %eax, (%rsi)
addq $0x4, %rsi
movq %rsi, 0x88(%rbx)
jmp 0x15e31
leaq 0x10(%r15), %r13
leaq 0x4(%r15), %rbp
movq 0x18(%r15), %rsi
cmpq 0x20(%r15), %rsi
je 0x15e84
movl 0x4(%r15), %eax
movl %eax, (%rsi)
addq $0x4, %rsi
movq %rsi, 0x18(%r15)
jmp 0x15e8f
leaq 0x10(%rsp), %rdi
callq 0xdeac
movq 0x10(%r15), %rdx
addq $0xc, %rdx
movq 0x18(%rsp), %rsi
cmpq 0x20(%rsp), %rsi
je 0x1600e
movl (%rdx), %eax
movl %eax, (%rsi)
addq $0x4, %rsi
movq %rsi, 0x18(%rsp)
jmp 0x16018
leaq 0x80(%rbx), %rdi
movq %r15, %rdx
callq 0xdeac
xorps %xmm0, %xmm0
leaq 0x10(%rsp), %rdx
movaps %xmm0, (%rdx)
movq $0x0, 0x10(%rdx)
leaq 0x30(%rbx), %r14
leaq 0x50(%rsp), %r8
movl $0xffffffff, (%r8)      # imm = 0xFFFFFFFF
movq %r14, %rdi
movq %r15, %rsi
xorl %ecx, %ecx
callq 0xc714
movq 0x18(%rsp), %rsi
cmpq 0x20(%rsp), %rsi
je 0x16077
movl (%r15), %eax
movl %eax, (%rsi)
addq $0x4, %rsi
movq %rsi, 0x18(%rsp)
jmp 0x16084
movq %r13, %rdi
movq %rbp, %rdx
callq 0xdeac
leaq 0x8(%r15), %rdx
movq 0x18(%r15), %rsi
cmpq 0x20(%r15), %rsi
movq %rdx, 0x48(%rsp)
je 0x15eb2
movl 0x8(%r15), %eax
movl %eax, (%rsi)
addq $0x4, %rsi
movq %rsi, 0x18(%r15)
jmp 0x15eba
movq %r13, %rdi
callq 0xdeac
leaq 0x30(%rbx), %r15
movq %rbx, 0x8(%rsp)
movq 0x108(%rbx), %rdx
addq $0x10, %rdx
xorl %r12d, %r12d
leaq 0x10(%rsp), %rbx
movb %r12b, (%rbx)
leaq 0x50(%rsp), %r14
movb %r12b, (%r14)
movq %r15, %rdi
movq %r13, %rsi
movq %rbx, %rcx
xorl %r8d, %r8d
movq %r14, %r9
callq 0xc16e
movq %r12, 0x10(%rbx)
xorps %xmm0, %xmm0
movaps %xmm0, (%rbx)
movq %r12, 0x10(%r14)
movaps %xmm0, (%r14)
movq %rsp, %r8
movl $0xffffffff, (%r8)      # imm = 0xFFFFFFFF
leaq 0x10(%rsp), %rdx
movq %r15, %rdi
movq %rbp, %rsi
xorl %ecx, %ecx
callq 0xc714
movq %rbp, 0x88(%rsp)
movq %rsp, %r8
movl $0xffffffff, (%r8)      # imm = 0xFFFFFFFF
leaq 0x50(%rsp), %rdx
movq %r15, %rdi
movq 0x48(%rsp), %rsi
xorl %ecx, %ecx
callq 0xc714
movq 0x8(%rsp), %rax
leaq 0xd0(%rax), %r13
movq 0x10(%rsp), %r12
movq 0x18(%rsp), %rbp
cmpq %rbp, %r12
je 0x15f9e
leaq 0x50(%rsp), %rbx
movl (%r12), %r14d
movl %r14d, (%rsp)
movq 0x48(%rsp), %rax
movl (%rax), %eax
movl %eax, 0x4(%rsp)
movq %r13, %rdi
movq %rsp, %rsi
callq 0xdfc4
movq %r15, %rdi
movl %r14d, %esi
movq %rbx, %rdx
callq 0x6cde
addq $0x4, %r12
cmpq %rbp, %r12
jne 0x15f69
movq 0x50(%rsp), %r14
movq 0x58(%rsp), %r12
cmpq %r12, %r14
je 0x15fe7
leaq 0x10(%rsp), %rbx
movl (%r14), %ebp
movl %ebp, (%rsp)
movq 0x88(%rsp), %rax
movl (%rax), %eax
movl %eax, 0x4(%rsp)
movq %r13, %rdi
movq %rsp, %rsi
callq 0xdfc4
movq %r15, %rdi
movl %ebp, %esi
movq %rbx, %rdx
callq 0x6cde
addq $0x4, %r14
cmpq %r12, %r14
jne 0x15fb2
movq 0x50(%rsp), %rdi
testq %rdi, %rdi
je 0x15ff6
callq 0x21a0
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
movq 0x8(%rsp), %rbx
jne 0x160f3
jmp 0x160f8
leaq 0x10(%rsp), %rdi
callq 0xdeac
leaq 0x30(%rbx), %rdi
movq 0x108(%rbx), %rdx
addq $0x10, %rdx
xorl %eax, %eax
leaq 0x50(%rsp), %rcx
movb %al, (%rcx)
movq %rsp, %r9
movb %al, (%r9)
leaq 0x10(%rsp), %rsi
xorl %r8d, %r8d
callq 0xc16e
jmp 0x160e9
leaq 0x10(%rsp), %rdi
movq %r15, %rdx
callq 0xdeac
movq 0x88(%rbx), %rsi
cmpq 0x90(%rbx), %rsi
je 0x160b0
movl (%r15), %eax
movl %eax, (%rsi)
addq $0x4, %rsi
movq %rsi, 0x88(%rbx)
jmp 0x160bf
leaq 0x10(%rsp), %rdi
movq %r15, %rdx
callq 0xdeac
movq 0x108(%rbx), %rdx
addq $0x10, %rdx
xorl %eax, %eax
leaq 0x50(%rsp), %rcx
movb %al, (%rcx)
movq %rsp, %r9
movb %al, (%r9)
leaq 0x10(%rsp), %rsi
movq %r14, %rdi
xorl %r8d, %r8d
callq 0xc16e
jmp 0x160e9
leaq 0x80(%rbx), %rdi
movq %r15, %rdx
callq 0xdeac
movq 0x108(%rbx), %rdx
addq $0x10, %rdx
xorl %eax, %eax
leaq 0x50(%rsp), %rcx
movb %al, (%rcx)
movq %rsp, %r9
movb %al, (%r9)
leaq 0x10(%rsp), %rsi
movq %r14, %rdi
xorl %r8d, %r8d
callq 0xc16e
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0x160f8
callq 0x21a0
movl 0x4(%rbx), %eax
movq %rbx, %r15
movq %rsp, %rbx
movl %eax, (%rbx)
leaq 0x30(%r15), %rdi
leaq 0x10(%rsp), %rsi
leaq 0x50(%rsp), %r14
movq %r14, %rdx
movq %rbx, %rcx
callq 0x2a00
movl (%r14), %eax
cmpl (%rbx), %eax
jae 0x16132
cmpl $0x4, %eax
movl $0x3, %ecx
cmovael %eax, %ecx
movl %ecx, 0x4(%r15)
addq $0x98, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x4780(%rip), %rdi      # 0x1a8cb
leaq 0x4977(%rip), %rsi      # 0x1aac9
leaq 0x4b32(%rip), %rcx      # 0x1ac8b
movl $0x21b, %edx            # imm = 0x21B
callq 0x2110
jmp 0x1617b
jmp 0x1617b
jmp 0x1617b
jmp 0x16186
jmp 0x16186
jmp 0x16186
jmp 0x1617b
jmp 0x1617b
jmp 0x16193
jmp 0x1617b
jmp 0x16193
jmp 0x1617b
movq %rax, %rbx
jmp 0x161a5
jmp 0x161b8
jmp 0x161d3
jmp 0x161d3
movq %rax, %rbx
jmp 0x161c5
jmp 0x16193
jmp 0x16193
jmp 0x161b8
jmp 0x16193
movq %rax, %rbx
movq 0x50(%rsp), %rdi
testq %rdi, %rdi
je 0x161a5
callq 0x21a0
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0x161e0
callq 0x21a0
jmp 0x161e0
jmp 0x161d3
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0xcff8
leaq 0x50(%rsp), %rdi
callq 0xcfae
jmp 0x161e0
jmp 0x161d3
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0xcff8
movq %rbx, %rdi
callq 0x2320