// File: /workspace/github_cpp_makefile_star2_O3/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 0x1570d
movq %rdx, %rbx
movq %rsi, %r15
leaq 0x4bd7(%rip), %rcx      # 0x199ec
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq %r15, %rsi
movq %rbx, %rdx
callq 0x1654a
jmp 0x156c1
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 0xbaa6
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 0x14eda
leaq 0x10(%rsp), %r13
leaq 0x50(%rsp), %rbp
movq %r13, %rdi
movq %rbx, %rsi
movq %rbp, %rdx
callq 0x16994
addq $0x4, %rbx
cmpq %r14, %rbx
jne 0x14ec3
movq 0x8(%rsp), %rax
movq 0x140(%rax), %r14
movq %r12, 0x50(%rsp)
testq %r14, %r14
je 0x14f11
leaq 0x10(%rsp), %rbx
leaq 0x50(%rsp), %r12
leaq 0x8(%r14), %rsi
movq %rbx, %rdi
movq %r12, %rdx
callq 0xd538
movq (%r14), %r14
testq %r14, %r14
jne 0x14efa
leaq 0x10(%rsp), %rsi
movq %r15, %rdi
callq 0x346c
movq 0x8(%rsp), %rbx
leaq 0x80(%rbx), %rdi
movq 0x80(%rbx), %rax
cmpq %rax, 0x88(%rbx)
je 0x14f41
movq %rax, 0x88(%rbx)
leaq 0x10(%rsp), %rsi
callq 0x173e2
leaq 0x98(%rbx), %rsi
movq 0x48(%rsp), %rdi
callq 0x1736c
jmp 0x15163
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 0xc092
movq 0x18(%rsp), %rsi
cmpq 0x20(%rsp), %rsi
je 0x155d6
movl (%r15), %eax
movl %eax, (%rsi)
addq $0x4, %rsi
movq %rsi, 0x18(%rsp)
jmp 0x155e3
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 0xbaa6
jmp 0x156c1
xorps %xmm0, %xmm0
leaq 0x10(%rsp), %rdi
movaps %xmm0, (%rdi)
movq $0x0, 0x10(%rdi)
movq 0x10(%r15), %rdx
addq $0x4, %rdx
xorl %esi, %esi
callq 0xd7b4
movq 0x18(%rsp), %rsi
movq 0x10(%r15), %rdx
addq $0xc, %rdx
cmpq 0x20(%rsp), %rsi
je 0x15609
movl (%rdx), %eax
movl %eax, (%rsi)
addq $0x4, %rsi
movq %rsi, 0x18(%rsp)
jmp 0x15613
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 0x1676c
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 0xbaa6
movq 0x140(%rbp), %rax
testq %rax, %rax
je 0x150c5
movq 0x8(%r12), %rcx
addq $-0x4, %rcx
movq (%rax), %rax
testq %rax, %rax
jne 0x150b4
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 0x1511a
leaq 0x10(%rsp), %r12
leaq 0x50(%rsp), %r13
movq %r12, %rdi
movq %rbx, %rsi
movq %r13, %rdx
callq 0x16994
addq $0x4, %rbx
cmpq %r14, %rbx
jne 0x15103
leaq 0x10(%rsp), %rsi
movq %r15, %rdi
callq 0x346c
movq %rbp, %rbx
leaq 0x80(%rbp), %rdi
movq 0x80(%rbp), %rax
cmpq %rax, 0x88(%rbp)
je 0x15148
movq %rax, 0x88(%rbx)
leaq 0x10(%rsp), %rsi
callq 0x173e2
leaq 0x98(%rbx), %rsi
movq 0x48(%rsp), %rdi
callq 0x1736c
leaq 0x10(%rsp), %rdi
callq 0xc950
jmp 0x156c1
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 0x1520c
leaq 0x8(%r14), %rsi
movq %r15, %rdi
movq %rbp, %rdx
movq %rbx, %rcx
movq %r13, %r8
callq 0xc9b2
testb %al, %al
jne 0x151eb
movq 0x8(%r12), %rsi
movq 0x88(%rsp), %r13
movq (%r13), %rdx
movq %r12, %rdi
xorl %ecx, %ecx
callq 0x1676c
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 0xbaa6
leaq 0x58(%rsp), %r14
movq (%r13), %rax
testq %rax, %rax
je 0x15278
movq 0x8(%r12), %rcx
addq $-0x4, %rcx
movq (%rax), %rax
testq %rax, %rax
jne 0x15267
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 0x1217c
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 0x152ff
leaq 0x10(%rsp), %rbx
movq %rsp, %r13
movq %rbx, %rdi
movq %r12, %rsi
movq %r13, %rdx
callq 0x16994
addq $0x4, %r12
cmpq %rbp, %r12
jne 0x152e8
movq 0x68(%rsp), %rbx
cmpq %r14, %rbx
je 0x15332
leaq 0x10(%rsp), %r12
movq %rsp, %r13
movl 0x20(%rbx), %eax
movl %eax, (%rsp)
movq %r12, %rdi
movq %r13, %rsi
callq 0xd3d6
movq %rbx, %rdi
callq 0x2210
movq %rax, %rbx
cmpq %r14, %rax
jne 0x15311
leaq 0x10(%rsp), %rsi
movq %r15, %rdi
callq 0x346c
movq 0x8(%rsp), %rbx
leaq 0x80(%rbx), %rdi
movq 0x80(%rbx), %rax
cmpq %rax, 0x88(%rbx)
je 0x15362
movq %rax, 0x88(%rbx)
leaq 0x10(%rsp), %rsi
callq 0x173e2
leaq 0x98(%rbx), %rsi
movq 0x48(%rsp), %rdi
callq 0x1736c
leaq 0x10(%rsp), %rdi
callq 0xc950
leaq 0x50(%rsp), %rdi
callq 0xc906
jmp 0x156c1
addq $0x8, %r15
movq 0x88(%rbx), %rsi
cmpq 0x90(%rbx), %rsi
je 0x153e1
movl (%r15), %eax
movl %eax, (%rsi)
addq $0x4, %rsi
movq %rsi, 0x88(%rbx)
jmp 0x153f0
leaq 0x10(%r15), %r13
leaq 0x4(%r15), %rbp
movq 0x18(%r15), %rsi
movq 0x20(%r15), %rax
cmpq %rax, %rsi
je 0x15443
movl 0x4(%r15), %ecx
movl %ecx, (%rsi)
addq $0x4, %rsi
movq %rsi, 0x18(%r15)
jmp 0x15456
leaq 0x80(%rbx), %rdi
movq %r15, %rdx
callq 0xd7b4
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 0xc092
movq 0x18(%rsp), %rsi
cmpq 0x20(%rsp), %rsi
je 0x15640
movl (%r15), %eax
movl %eax, (%rsi)
addq $0x4, %rsi
movq %rsi, 0x18(%rsp)
jmp 0x1564d
movq %r13, %rdi
movq %rbp, %rdx
callq 0xd7b4
movq 0x18(%r15), %rsi
movq 0x20(%r15), %rax
leaq 0x8(%r15), %rdx
cmpq %rax, %rsi
movq %rdx, 0x48(%rsp)
je 0x15474
movl 0x8(%r15), %eax
movl %eax, (%rsi)
addq $0x4, %rsi
movq %rsi, 0x18(%r15)
jmp 0x1547c
movq %r13, %rdi
callq 0xd7b4
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 0xbaa6
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 0xc092
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 0xc092
movq 0x8(%rsp), %rax
leaq 0xd0(%rax), %r13
movq 0x10(%rsp), %r12
movq 0x18(%rsp), %rbp
cmpq %rbp, %r12
je 0x15560
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 0xd8cc
movq %r15, %rdi
movl %r14d, %esi
movq %rbx, %rdx
callq 0x6c96
addq $0x4, %r12
cmpq %rbp, %r12
jne 0x1552b
movq 0x50(%rsp), %r12
movq 0x58(%rsp), %rbp
cmpq %rbp, %r12
je 0x155b1
leaq 0x10(%rsp), %rbx
movl (%r12), %r14d
movl %r14d, (%rsp)
movq 0x88(%rsp), %rax
movl (%rax), %eax
movl %eax, 0x4(%rsp)
movq %r13, %rdi
movq %rsp, %rsi
callq 0xd8cc
movq %r15, %rdi
movl %r14d, %esi
movq %rbx, %rdx
callq 0x6c96
addq $0x4, %r12
cmpq %rbp, %r12
jne 0x15574
movq 0x50(%rsp), %r12
testq %r12, %r12
je 0x155be
movq %r12, %rdi
callq 0x21a0
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
movq 0x8(%rsp), %rbx
jne 0x156bc
jmp 0x156c1
leaq 0x10(%rsp), %rdi
movq %r15, %rdx
callq 0xd7b4
movq 0x88(%rbx), %rsi
cmpq 0x90(%rbx), %rsi
je 0x15679
movl (%r15), %eax
movl %eax, (%rsi)
addq $0x4, %rsi
movq %rsi, 0x88(%rbx)
jmp 0x15688
leaq 0x10(%rsp), %rdi
callq 0xd7b4
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 0xbaa6
jmp 0x156b2
leaq 0x10(%rsp), %rdi
movq %r15, %rdx
callq 0xd7b4
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 0xbaa6
jmp 0x156b2
leaq 0x80(%rbx), %rdi
movq %r15, %rdx
callq 0xd7b4
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 0xbaa6
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0x156c1
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 0x156fb
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 0x41b7(%rip), %rdi      # 0x198cb
leaq 0x43ae(%rip), %rsi      # 0x19ac9
leaq 0x4569(%rip), %rcx      # 0x19c8b
movl $0x21b, %edx            # imm = 0x21B
callq 0x2110
jmp 0x15744
jmp 0x15744
jmp 0x1574f
jmp 0x1574f
jmp 0x1574f
jmp 0x15744
jmp 0x15744
jmp 0x15744
jmp 0x1575c
jmp 0x1575c
jmp 0x15744
jmp 0x15744
movq %rax, %rbx
jmp 0x1576e
jmp 0x15781
jmp 0x1579c
jmp 0x1579c
movq %rax, %rbx
jmp 0x1578e
jmp 0x1575c
jmp 0x1575c
jmp 0x15781
jmp 0x1575c
movq %rax, %rbx
movq 0x50(%rsp), %rdi
testq %rdi, %rdi
je 0x1576e
callq 0x21a0
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0x157a9
callq 0x21a0
jmp 0x157a9
jmp 0x1579c
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0xc950
leaq 0x50(%rsp), %rdi
callq 0xc906
jmp 0x157a9
jmp 0x1579c
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0xc950
movq %rbx, %rdi
callq 0x2320
nop