// File: iPapatsoris[P]Maximum-Independent-Set/src/Graph.cpp
// Function: Graph::getSeparatingPairs(std::unordered_set<unsigned int, std::hash<unsigned int>, std::equal_to<unsigned int>, std::allocator<unsigned int>>&, std::vector<unsigned int, std::allocator<unsigned int>>&, std::vector<unsigned int, std::allocator<unsigned int>>&, bool&) const
bool Graph::getSeparatingPairs(unordered_set<uint32_t> &vertexCut, vector<uint32_t> &component1, vector<uint32_t> &component2, bool &actualComponent1) const {
    struct Instance {
        Instance(const uint32_t &node, const uint32_t &parentNode, const Graph &graph) : graphTraversal(graph, node), parentNode(parentNode) {}
        GraphTraversal graphTraversal;
        uint32_t parentNode;
    };

    Graph::GraphTraversal graphTraversal(*this);
    if (graphTraversal.curNode == NONE) {
        return false;
    }
    vertexCut.clear();
    component1.clear();
    component2.clear();
    unordered_map<uint32_t, uint32_t> visitToId;
    unordered_map<uint32_t, Value1> exploredSet;
    stack<Instance> frontier;
    unordered_set<uint32_t> flags;
    unordered_map<uint32_t, uint32_t> fathers;
    unordered_map<uint32_t, uint32_t> sons;
    unordered_map<uint32_t, vector<uint32_t> > palmTree1;
    unordered_map<uint32_t, vector<uint32_t> > palmTree2;
    unordered_map<uint32_t, vector<uint32_t> > bothPalmTrees;
    unordered_map<uint32_t, unordered_set<uint32_t> > descendants;
    uint32_t visit = 0;
    uint32_t numberOfNodes = 0;
    if (exploredSet.find(graphTraversal.curNode) == exploredSet.end()) {
        frontier.push(Instance(graphTraversal.curNode, NONE, *this));
        while (!frontier.empty()) {
            uint32_t node = frontier.top().graphTraversal.curNode;
            visit++;
            exploredSet.insert({node, Value1(visit)});
            visitToId.insert({visit, node});
            sons.insert({visit, 0});
            numberOfNodes++;
            bool newCall;
            do {
                node = frontier.top().graphTraversal.curNode;
                Graph::GraphTraversal &neighbors = frontier.top().graphTraversal;
                newCall = false;
                while (neighbors.curEdgeOffset != NONE) {
                    uint32_t neighbor = (*edgeBuffer)[neighbors.curEdgeOffset];
                    auto it = exploredSet.find(neighbor);
                    if (it == exploredSet.end()) {
                        addPalmTreeArc(palmTree1, node, neighbor);
                        addPalmTreeArc(bothPalmTrees, node, neighbor);
                        fathers.insert({neighbor, node});
                        newCall = true;
                        frontier.push(Instance(neighbor, node, *this));
                        break;
                    } else if (neighbor != node && it->second.visit < exploredSet.find(node)->second.visit || flags.find(node) != flags.end()) {
                        addPalmTreeArc(palmTree2, node, neighbor);
                        addPalmTreeArc(bothPalmTrees, node, neighbor);
                        auto it1 = exploredSet.find(node);
                        if (it->second.visit < it1->second.low1) {
                            it1->second.low2 = it1->second.low1;
                            it1->second.low1 = it->second.visit;
                        } else if (it->second.visit > it1->second.low1) {
                            if (it->second.visit < it1->second.low2) {
                                it1->second.low2 = it->second.visit;
                            }
                        }
                    } else if (neighbor == node && flags.find(node) == flags.end()) {
                        flags.insert(node);
                    }
                    getNextEdge(neighbors);
                }
                if (!newCall) {
                    uint32_t parentNode = frontier.top().parentNode;
                    if (parentNode == NONE) {
                        assert(frontier.size() == 1);
                        frontier.pop();
                        break;
                    }
                    auto it1 = exploredSet.find(parentNode);
                    auto it2 = exploredSet.find(node);
                    assert(it1 != exploredSet.end() && it2 != exploredSet.end());
                    it1->second.nd += (1 + it2->second.nd);
                    auto d1 = descendants.find(parentNode);
                    if (d1 == descendants.end()) {
                        descendants.insert({parentNode, unordered_set<uint32_t>()});
                        d1 = descendants.find(parentNode);
                    }
                    d1->second.insert(node);
                    auto d2 = descendants.find(node);
                    if (d2 != descendants.end()) {
                        d1->second.insert(d2->second.begin(), d2->second.end());
                    }
                    if (it2->second.low1 < it1->second.low1) {
                        it1->second.low2 = it1->second.low1;
                        if (it2->second.low2 < it1->second.low1) {
                            it1->second.low2 = it2->second.low2;
                        }
                        it1->second.low1 = it2->second.low1;
                    } else if (it2->second.low1 == it1->second.low1) {
                        if (it2->second.low2 < it1->second.low2) {
                            it1->second.low2 = it2->second.low2;
                        }
                    } else if (it2->second.low1 < it1->second.low2) {
                        it1->second.low2 = it2->second.low1;
                    }
                    frontier.pop();
                    if (!frontier.size()) {
                        break;
                    }
                    if (frontier.top().graphTraversal.curEdgeOffset != NONE) {
                        getNextEdge(frontier.top().graphTraversal);
                    }
                }
            } while (!newCall);
        }
    }
    if (getSeparatingPairs2(vertexCut, component1, component2, actualComponent1, numberOfNodes, palmTree1, palmTree2, bothPalmTrees, exploredSet, fathers, sons, descendants, visitToId)) {
        return true;
    }
    return false;
}

// Assembly:
subq $0x698, %rsp            # imm = 0x698
movq %rdi, 0x688(%rsp)
movq %rsi, 0x680(%rsp)
movq %rdx, 0x678(%rsp)
movq %rcx, 0x670(%rsp)
movq %r8, 0x668(%rsp)
movq 0x688(%rsp), %rsi
movq %rsi, 0x1d8(%rsp)
leaq 0x660(%rsp), %rdi
callq 0x2a40
cmpl $-0x1, 0x660(%rsp)
jne 0xb4e3
movb $0x0, 0x697(%rsp)
jmp 0xc67c
movq 0x680(%rsp), %rdi
callq 0x1aed0
movq 0x678(%rsp), %rdi
callq 0x191c0
movq 0x670(%rsp), %rdi
callq 0x191c0
leaq 0x628(%rsp), %rdi
callq 0x19040
leaq 0x5f0(%rsp), %rdi
callq 0x1b060
leaq 0x5a0(%rsp), %rdi
callq 0xc6a0
jmp 0xb533
leaq 0x558(%rsp), %rdi
callq 0x1a020
leaq 0x520(%rsp), %rdi
callq 0x19040
leaq 0x4e8(%rsp), %rdi
callq 0x19040
leaq 0x4b0(%rsp), %rdi
callq 0x1b070
leaq 0x478(%rsp), %rdi
callq 0x1b070
leaq 0x440(%rsp), %rdi
callq 0x1b070
leaq 0x408(%rsp), %rdi
callq 0x1b080
movl $0x0, 0x404(%rsp)
movl $0x0, 0x400(%rsp)
leaq 0x5f0(%rsp), %rdi
leaq 0x660(%rsp), %rsi
callq 0x1b0b0
movq %rax, 0x1d0(%rsp)
jmp 0xb5c3
movq 0x1d0(%rsp), %rax
movq %rax, 0x3f8(%rsp)
leaq 0x5f0(%rsp), %rdi
callq 0x1b0e0
movq %rax, 0x3f0(%rsp)
leaq 0x3f8(%rsp), %rdi
leaq 0x3f0(%rsp), %rsi
callq 0x1b090
testb $0x1, %al
jne 0xb606
jmp 0xc49d
movq 0x1d8(%rsp), %rcx
movl $0xffffffff, 0x3e0(%rsp) # imm = 0xFFFFFFFF
leaq 0x3e4(%rsp), %rdi
leaq 0x660(%rsp), %rsi
leaq 0x3e0(%rsp), %rdx
callq 0xc700
jmp 0xb638
leaq 0x5a0(%rsp), %rdi
leaq 0x3e4(%rsp), %rsi
callq 0xc6d0
jmp 0xb64f
jmp 0xb651
leaq 0x5a0(%rsp), %rdi
callq 0xc750
movb %al, 0x1cf(%rsp)
jmp 0xb667
movb 0x1cf(%rsp), %al
xorb $-0x1, %al
testb $0x1, %al
jne 0xb679
jmp 0xc49b
leaq 0x5a0(%rsp), %rdi
callq 0xc770
movq %rax, 0x1c0(%rsp)
jmp 0xb690
movq 0x1c0(%rsp), %rax
movl (%rax), %eax
movl %eax, 0x3dc(%rsp)
movl 0x404(%rsp), %eax
incl %eax
movl %eax, 0x404(%rsp)
leaq 0x3b8(%rsp), %rdi
leaq 0x404(%rsp), %rsi
callq 0x1b160
jmp 0xb6c8
leaq 0x3c8(%rsp), %rdi
leaq 0x3dc(%rsp), %rsi
leaq 0x3b8(%rsp), %rdx
callq 0x1b1a0
jmp 0xb6e7
leaq 0x5f0(%rsp), %rdi
leaq 0x3c8(%rsp), %rsi
callq 0x1b110
movb %dl, 0x1b7(%rsp)
movq %rax, 0x1b8(%rsp)
jmp 0xb70d
movb 0x1b7(%rsp), %al
movq 0x1b8(%rsp), %rcx
movq %rcx, 0x3a8(%rsp)
movb %al, 0x3b0(%rsp)
leaq 0x3a0(%rsp), %rdi
leaq 0x404(%rsp), %rsi
leaq 0x3dc(%rsp), %rdx
callq 0x1b1e0
jmp 0xb74a
leaq 0x628(%rsp), %rdi
leaq 0x3a0(%rsp), %rsi
callq 0x190e0
movb %dl, 0x1a7(%rsp)
movq %rax, 0x1a8(%rsp)
jmp 0xb770
movb 0x1a7(%rsp), %al
movq 0x1a8(%rsp), %rcx
movq %rcx, 0x390(%rsp)
movb %al, 0x398(%rsp)
movl $0x0, 0x384(%rsp)
leaq 0x388(%rsp), %rdi
leaq 0x404(%rsp), %rsi
leaq 0x384(%rsp), %rdx
callq 0x1b210
jmp 0xb7b8
leaq 0x4e8(%rsp), %rdi
leaq 0x388(%rsp), %rsi
callq 0x190e0
movb %dl, 0x197(%rsp)
movq %rax, 0x198(%rsp)
jmp 0xb7de
movb 0x197(%rsp), %al
movq 0x198(%rsp), %rcx
movq %rcx, 0x370(%rsp)
movb %al, 0x378(%rsp)
movl 0x400(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x400(%rsp)
leaq 0x5a0(%rsp), %rdi
callq 0xc770
movq %rax, 0x188(%rsp)
jmp 0xb824
movq 0x188(%rsp), %rax
movl (%rax), %eax
movl %eax, 0x3dc(%rsp)
leaq 0x5a0(%rsp), %rdi
callq 0xc770
movq %rax, 0x180(%rsp)
jmp 0xb84c
movq 0x180(%rsp), %rax
movq %rax, 0x360(%rsp)
movb $0x0, 0x36f(%rsp)
movq 0x360(%rsp), %rax
cmpl $-0x1, 0x4(%rax)
je 0xbd90
movq 0x1d8(%rsp), %rax
movq 0x18(%rax), %rdi
movq 0x360(%rsp), %rax
movl 0x4(%rax), %eax
movl %eax, %esi
callq 0x18900
movl (%rax), %eax
movl %eax, 0x35c(%rsp)
leaq 0x5f0(%rsp), %rdi
leaq 0x35c(%rsp), %rsi
callq 0x1b0b0
movq %rax, 0x178(%rsp)
jmp 0xb8bc
movq 0x178(%rsp), %rax
movq %rax, 0x350(%rsp)
leaq 0x5f0(%rsp), %rdi
callq 0x1b0e0
movq %rax, 0x348(%rsp)
leaq 0x350(%rsp), %rdi
leaq 0x348(%rsp), %rsi
callq 0x1b090
testb $0x1, %al
jne 0xb8ff
jmp 0xba1d
leaq 0x4b0(%rsp), %rdi
leaq 0x3dc(%rsp), %rsi
leaq 0x35c(%rsp), %rdx
callq 0xb310
jmp 0xb91e
leaq 0x440(%rsp), %rdi
leaq 0x3dc(%rsp), %rsi
leaq 0x35c(%rsp), %rdx
callq 0xb310
jmp 0xb93d
leaq 0x340(%rsp), %rdi
leaq 0x35c(%rsp), %rsi
leaq 0x3dc(%rsp), %rdx
callq 0x1b1e0
jmp 0xb95c
leaq 0x520(%rsp), %rdi
leaq 0x340(%rsp), %rsi
callq 0x190e0
movb %dl, 0x16f(%rsp)
movq %rax, 0x170(%rsp)
jmp 0xb982
movq 0x1d8(%rsp), %rcx
movb 0x16f(%rsp), %al
movq 0x170(%rsp), %rdx
movq %rdx, 0x330(%rsp)
movb %al, 0x338(%rsp)
movb $0x1, 0x36f(%rsp)
leaq 0x324(%rsp), %rdi
leaq 0x35c(%rsp), %rsi
leaq 0x3dc(%rsp), %rdx
callq 0xc700
jmp 0xb9cf
leaq 0x5a0(%rsp), %rdi
leaq 0x324(%rsp), %rsi
callq 0xc6d0
jmp 0xb9e6
jmp 0xbd90
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x598(%rsp)
movl %eax, 0x594(%rsp)
jmp 0xc660
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x598(%rsp)
movl %eax, 0x594(%rsp)
jmp 0xc5f8
movl 0x35c(%rsp), %eax
cmpl 0x3dc(%rsp), %eax
je 0xba98
leaq 0x350(%rsp), %rdi
callq 0x1b240
movl 0x4(%rax), %eax
movl %eax, 0x15c(%rsp)
leaq 0x5f0(%rsp), %rdi
leaq 0x3dc(%rsp), %rsi
callq 0x1b0b0
movq %rax, 0x160(%rsp)
jmp 0xba63
movq 0x160(%rsp), %rax
movq %rax, 0x318(%rsp)
leaq 0x318(%rsp), %rdi
callq 0x1b240
movl 0x15c(%rsp), %ecx
movq %rax, %rdx
movb $0x1, %al
cmpl 0x4(%rdx), %ecx
movb %al, 0x15b(%rsp)
jb 0xbaf8
leaq 0x558(%rsp), %rdi
leaq 0x3dc(%rsp), %rsi
callq 0x192c0
movq %rax, 0x150(%rsp)
jmp 0xbab7
movq 0x150(%rsp), %rax
movq %rax, 0x310(%rsp)
leaq 0x558(%rsp), %rdi
callq 0x19250
movq %rax, 0x308(%rsp)
leaq 0x310(%rsp), %rdi
leaq 0x308(%rsp), %rsi
callq 0x19280
movb %al, 0x15b(%rsp)
movb 0x15b(%rsp), %al
testb $0x1, %al
jne 0xbb08
jmp 0xbca6
leaq 0x478(%rsp), %rdi
leaq 0x3dc(%rsp), %rsi
leaq 0x35c(%rsp), %rdx
callq 0xb310
jmp 0xbb27
leaq 0x440(%rsp), %rdi
leaq 0x3dc(%rsp), %rsi
leaq 0x35c(%rsp), %rdx
callq 0xb310
jmp 0xbb46
leaq 0x5f0(%rsp), %rdi
leaq 0x3dc(%rsp), %rsi
callq 0x1b0b0
movq %rax, 0x148(%rsp)
jmp 0xbb65
movq 0x148(%rsp), %rax
movq %rax, 0x300(%rsp)
leaq 0x350(%rsp), %rdi
callq 0x1b240
movl 0x4(%rax), %eax
movl %eax, 0x144(%rsp)
leaq 0x300(%rsp), %rdi
callq 0x1b240
movq %rax, %rcx
movl 0x144(%rsp), %eax
cmpl 0x8(%rcx), %eax
jae 0xbc09
leaq 0x300(%rsp), %rdi
callq 0x1b240
movl 0x8(%rax), %eax
movl %eax, 0x13c(%rsp)
leaq 0x300(%rsp), %rdi
callq 0x1b240
movl 0x13c(%rsp), %ecx
movl %ecx, 0xc(%rax)
leaq 0x350(%rsp), %rdi
callq 0x1b240
movl 0x4(%rax), %eax
movl %eax, 0x140(%rsp)
leaq 0x300(%rsp), %rdi
callq 0x1b240
movl 0x140(%rsp), %ecx
movl %ecx, 0x8(%rax)
jmp 0xbca1
leaq 0x350(%rsp), %rdi
callq 0x1b240
movl 0x4(%rax), %eax
movl %eax, 0x138(%rsp)
leaq 0x300(%rsp), %rdi
callq 0x1b240
movq %rax, %rcx
movl 0x138(%rsp), %eax
cmpl 0x8(%rcx), %eax
jbe 0xbc9f
leaq 0x350(%rsp), %rdi
callq 0x1b240
movl 0x4(%rax), %eax
movl %eax, 0x134(%rsp)
leaq 0x300(%rsp), %rdi
callq 0x1b240
movq %rax, %rcx
movl 0x134(%rsp), %eax
cmpl 0xc(%rcx), %eax
jae 0xbc9d
leaq 0x350(%rsp), %rdi
callq 0x1b240
movl 0x4(%rax), %eax
movl %eax, 0x130(%rsp)
leaq 0x300(%rsp), %rdi
callq 0x1b240
movl 0x130(%rsp), %ecx
movl %ecx, 0xc(%rax)
jmp 0xbc9f
jmp 0xbca1
jmp 0xbd72
movl 0x35c(%rsp), %ecx
xorl %eax, %eax
cmpl 0x3dc(%rsp), %ecx
movb %al, 0x12f(%rsp)
jne 0xbd1f
leaq 0x558(%rsp), %rdi
leaq 0x3dc(%rsp), %rsi
callq 0x192c0
movq %rax, 0x120(%rsp)
jmp 0xbcde
movq 0x120(%rsp), %rax
movq %rax, 0x2f8(%rsp)
leaq 0x558(%rsp), %rdi
callq 0x19250
movq %rax, 0x2f0(%rsp)
leaq 0x2f8(%rsp), %rdi
leaq 0x2f0(%rsp), %rsi
callq 0x1a690
movb %al, 0x12f(%rsp)
movb 0x12f(%rsp), %al
testb $0x1, %al
jne 0xbd2c
jmp 0xbd70
leaq 0x558(%rsp), %rdi
leaq 0x3dc(%rsp), %rsi
callq 0x18960
movb %dl, 0x117(%rsp)
movq %rax, 0x118(%rsp)
jmp 0xbd52
movb 0x117(%rsp), %al
movq 0x118(%rsp), %rcx
movq %rcx, 0x2e0(%rsp)
movb %al, 0x2e8(%rsp)
jmp 0xbd72
jmp 0xbd74
movq 0x1d8(%rsp), %rdi
movq 0x360(%rsp), %rsi
callq 0x19560
jmp 0xbd8b
jmp 0xb864
testb $0x1, 0x36f(%rsp)
jne 0xc483
leaq 0x5a0(%rsp), %rdi
callq 0xc770
movq %rax, 0x108(%rsp)
jmp 0xbdb5
movq 0x108(%rsp), %rax
movl 0x8(%rax), %eax
movl %eax, 0x2dc(%rsp)
cmpl $-0x1, 0x2dc(%rsp)
jne 0xbe2b
leaq 0x5a0(%rsp), %rdi
callq 0xc780
movq %rax, 0x100(%rsp)
jmp 0xbde8
movq 0x100(%rsp), %rax
cmpq $0x1, %rax
jne 0xbdf8
jmp 0xbe17
leaq 0x3a511(%rip), %rdi     # 0x46310
leaq 0x3a234(%rip), %rsi     # 0x4603a
movl $0x55b, %edx            # imm = 0x55B
leaq 0x3a513(%rip), %rcx     # 0x46325
callq 0x2110
leaq 0x5a0(%rsp), %rdi
callq 0xc790
jmp 0xbe26
jmp 0xc496
leaq 0x5f0(%rsp), %rdi
leaq 0x2dc(%rsp), %rsi
callq 0x1b0b0
movq %rax, 0xf8(%rsp)
jmp 0xbe4a
movq 0xf8(%rsp), %rax
movq %rax, 0x2d0(%rsp)
leaq 0x5f0(%rsp), %rdi
leaq 0x3dc(%rsp), %rsi
callq 0x1b0b0
movq %rax, 0xf0(%rsp)
jmp 0xbe79
movq 0xf0(%rsp), %rax
movq %rax, 0x2c8(%rsp)
leaq 0x5f0(%rsp), %rdi
callq 0x1b0e0
movq %rax, 0x2c0(%rsp)
leaq 0x2d0(%rsp), %rdi
leaq 0x2c0(%rsp), %rsi
callq 0x1b260
movb %al, %cl
xorl %eax, %eax
testb $0x1, %cl
movb %al, 0xef(%rsp)
jne 0xbec5
jmp 0xbef6
leaq 0x5f0(%rsp), %rdi
callq 0x1b0e0
movq %rax, 0x2b8(%rsp)
leaq 0x2c8(%rsp), %rdi
leaq 0x2b8(%rsp), %rsi
callq 0x1b260
movb %al, 0xef(%rsp)
movb 0xef(%rsp), %al
testb $0x1, %al
jne 0xbf03
jmp 0xbf05
jmp 0xbf24
leaq 0x3a354(%rip), %rdi     # 0x46260
leaq 0x3a127(%rip), %rsi     # 0x4603a
movl $0x561, %edx            # imm = 0x561
leaq 0x3a406(%rip), %rcx     # 0x46325
callq 0x2110
leaq 0x2c8(%rsp), %rdi
callq 0x1b240
movl 0x10(%rax), %eax
movl %eax, 0xdc(%rsp)
leaq 0x2d0(%rsp), %rdi
callq 0x1b240
movl 0xdc(%rsp), %edx
movl 0x10(%rax), %esi
movl %edx, %ecx
movl %esi, %edx
leal 0x1(%rcx,%rdx), %ecx
movl %ecx, 0x10(%rax)
leaq 0x408(%rsp), %rdi
leaq 0x2dc(%rsp), %rsi
callq 0x1b280
movq %rax, 0xe0(%rsp)
jmp 0xbf7c
movq 0xe0(%rsp), %rax
movq %rax, 0x2b0(%rsp)
leaq 0x408(%rsp), %rdi
callq 0x1b2d0
movq %rax, 0x2a8(%rsp)
leaq 0x2b0(%rsp), %rdi
leaq 0x2a8(%rsp), %rsi
callq 0x1b2b0
testb $0x1, %al
jne 0xbfbf
jmp 0xc102
xorps %xmm0, %xmm0
movaps %xmm0, 0x250(%rsp)
movaps %xmm0, 0x240(%rsp)
movaps %xmm0, 0x230(%rsp)
movq $0x0, 0x260(%rsp)
leaq 0x230(%rsp), %rdi
movq %rdi, 0xd0(%rsp)
callq 0x1a020
movq 0xd0(%rsp), %rdx
leaq 0x268(%rsp), %rdi
leaq 0x2dc(%rsp), %rsi
callq 0x1b350
jmp 0xc01a
leaq 0x408(%rsp), %rdi
leaq 0x268(%rsp), %rsi
callq 0x1b300
movb %dl, 0xc7(%rsp)
movq %rax, 0xc8(%rsp)
jmp 0xc040
movb 0xc7(%rsp), %al
movq 0xc8(%rsp), %rcx
movq %rcx, 0x220(%rsp)
movb %al, 0x228(%rsp)
leaq 0x268(%rsp), %rdi
callq 0x1b390
leaq 0x230(%rsp), %rdi
callq 0x1a030
leaq 0x408(%rsp), %rdi
leaq 0x2dc(%rsp), %rsi
callq 0x1b280
movq %rax, 0xb8(%rsp)
jmp 0xc097
movq 0xb8(%rsp), %rax
movq %rax, 0x218(%rsp)
movq 0x218(%rsp), %rax
movq %rax, 0x2b0(%rsp)
jmp 0xc102
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x598(%rsp)
movl %eax, 0x594(%rsp)
jmp 0xc0f0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x598(%rsp)
movl %eax, 0x594(%rsp)
leaq 0x268(%rsp), %rdi
callq 0x1b390
leaq 0x230(%rsp), %rdi
callq 0x1a030
jmp 0xc5f8
leaq 0x2b0(%rsp), %rdi
callq 0x1b3b0
movq %rax, %rdi
addq $0x8, %rdi
leaq 0x3dc(%rsp), %rsi
callq 0x18960
movb %dl, 0xaf(%rsp)
movq %rax, 0xb0(%rsp)
jmp 0xc134
movb 0xaf(%rsp), %al
movq 0xb0(%rsp), %rcx
movq %rcx, 0x208(%rsp)
movb %al, 0x210(%rsp)
leaq 0x408(%rsp), %rdi
leaq 0x3dc(%rsp), %rsi
callq 0x1b280
movq %rax, 0xa0(%rsp)
jmp 0xc171
movq 0xa0(%rsp), %rax
movq %rax, 0x200(%rsp)
leaq 0x408(%rsp), %rdi
callq 0x1b2d0
movq %rax, 0x1f8(%rsp)
leaq 0x200(%rsp), %rdi
leaq 0x1f8(%rsp), %rsi
callq 0x1b3d0
testb $0x1, %al
jne 0xc1b4
jmp 0xc238
leaq 0x2b0(%rsp), %rdi
callq 0x1b3b0
addq $0x8, %rax
movq %rax, 0x98(%rsp)
leaq 0x200(%rsp), %rdi
movq %rdi, 0x90(%rsp)
callq 0x1b3b0
movq %rax, %rdi
addq $0x8, %rdi
callq 0x19220
movq 0x90(%rsp), %rdi
movq %rax, 0x1f0(%rsp)
callq 0x1b3b0
movq %rax, %rdi
addq $0x8, %rdi
callq 0x19250
movq 0x98(%rsp), %rdi
movq %rax, 0x1e8(%rsp)
movq 0x1f0(%rsp), %rsi
movq 0x1e8(%rsp), %rdx
callq 0x1a490
jmp 0xc236
jmp 0xc238
leaq 0x2c8(%rsp), %rdi
callq 0x1b240
movl 0x8(%rax), %eax
movl %eax, 0x8c(%rsp)
leaq 0x2d0(%rsp), %rdi
callq 0x1b240
movq %rax, %rcx
movl 0x8c(%rsp), %eax
cmpl 0x8(%rcx), %eax
jae 0xc32b
leaq 0x2d0(%rsp), %rdi
callq 0x1b240
movl 0x8(%rax), %eax
movl %eax, 0x84(%rsp)
leaq 0x2d0(%rsp), %rdi
callq 0x1b240
movl 0x84(%rsp), %ecx
movl %ecx, 0xc(%rax)
leaq 0x2c8(%rsp), %rdi
callq 0x1b240
movl 0xc(%rax), %eax
movl %eax, 0x88(%rsp)
leaq 0x2d0(%rsp), %rdi
callq 0x1b240
movq %rax, %rcx
movl 0x88(%rsp), %eax
cmpl 0x8(%rcx), %eax
jae 0xc2fe
leaq 0x2c8(%rsp), %rdi
callq 0x1b240
movl 0xc(%rax), %eax
movl %eax, 0x80(%rsp)
leaq 0x2d0(%rsp), %rdi
callq 0x1b240
movl 0x80(%rsp), %ecx
movl %ecx, 0xc(%rax)
leaq 0x2c8(%rsp), %rdi
callq 0x1b240
movl 0x8(%rax), %eax
movl %eax, 0x7c(%rsp)
leaq 0x2d0(%rsp), %rdi
callq 0x1b240
movl 0x7c(%rsp), %ecx
movl %ecx, 0x8(%rax)
jmp 0xc408
leaq 0x2c8(%rsp), %rdi
callq 0x1b240
movl 0x8(%rax), %eax
movl %eax, 0x78(%rsp)
leaq 0x2d0(%rsp), %rdi
callq 0x1b240
movq %rax, %rcx
movl 0x78(%rsp), %eax
cmpl 0x8(%rcx), %eax
jne 0xc3af
leaq 0x2c8(%rsp), %rdi
callq 0x1b240
movl 0xc(%rax), %eax
movl %eax, 0x74(%rsp)
leaq 0x2d0(%rsp), %rdi
callq 0x1b240
movq %rax, %rcx
movl 0x74(%rsp), %eax
cmpl 0xc(%rcx), %eax
jae 0xc3ad
leaq 0x2c8(%rsp), %rdi
callq 0x1b240
movl 0xc(%rax), %eax
movl %eax, 0x70(%rsp)
leaq 0x2d0(%rsp), %rdi
callq 0x1b240
movl 0x70(%rsp), %ecx
movl %ecx, 0xc(%rax)
jmp 0xc406
leaq 0x2c8(%rsp), %rdi
callq 0x1b240
movl 0x8(%rax), %eax
movl %eax, 0x6c(%rsp)
leaq 0x2d0(%rsp), %rdi
callq 0x1b240
movq %rax, %rcx
movl 0x6c(%rsp), %eax
cmpl 0xc(%rcx), %eax
jae 0xc404
leaq 0x2c8(%rsp), %rdi
callq 0x1b240
movl 0x8(%rax), %eax
movl %eax, 0x68(%rsp)
leaq 0x2d0(%rsp), %rdi
callq 0x1b240
movl 0x68(%rsp), %ecx
movl %ecx, 0xc(%rax)
jmp 0xc406
jmp 0xc408
leaq 0x5a0(%rsp), %rdi
callq 0xc790
jmp 0xc417
leaq 0x5a0(%rsp), %rdi
callq 0xc780
movq %rax, 0x60(%rsp)
jmp 0xc42b
movq 0x60(%rsp), %rax
cmpq $0x0, %rax
jne 0xc438
jmp 0xc496
leaq 0x5a0(%rsp), %rdi
callq 0xc770
movq %rax, 0x58(%rsp)
jmp 0xc44c
movq 0x58(%rsp), %rax
cmpl $-0x1, 0x4(%rax)
je 0xc481
leaq 0x5a0(%rsp), %rdi
callq 0xc770
movq %rax, 0x50(%rsp)
jmp 0xc46b
movq 0x50(%rsp), %rsi
movq 0x1d8(%rsp), %rdi
callq 0x19560
jmp 0xc47f
jmp 0xc481
jmp 0xc483
jmp 0xc485
movb 0x36f(%rsp), %al
xorb $-0x1, %al
testb $0x1, %al
jne 0xb80d
jmp 0xb651
jmp 0xc49d
movq 0x1d8(%rsp), %rdi
movq 0x680(%rsp), %rsi
movq 0x678(%rsp), %rdx
movq 0x670(%rsp), %rcx
movq 0x668(%rsp), %r8
movq %rsp, %rax
movq %rax, 0x40(%rsp)
leaq 0x628(%rsp), %r9
movq %r9, 0x38(%rax)
leaq 0x408(%rsp), %r9
movq %r9, 0x30(%rax)
leaq 0x4e8(%rsp), %r9
movq %r9, 0x28(%rax)
leaq 0x520(%rsp), %r9
movq %r9, 0x20(%rax)
leaq 0x5f0(%rsp), %r9
movq %r9, 0x18(%rax)
leaq 0x440(%rsp), %r9
movq %r9, 0x10(%rax)
leaq 0x478(%rsp), %r9
movq %r9, 0x8(%rax)
leaq 0x4b0(%rsp), %r9
movq %r9, (%rax)
leaq 0x400(%rsp), %r9
callq 0xc7a0
movb %al, 0x4f(%rsp)
jmp 0xc53f
movb 0x4f(%rsp), %al
testb $0x1, %al
jne 0xc549
jmp 0xc55e
movb $0x1, 0x697(%rsp)
movl $0x1, 0x1e4(%rsp)
jmp 0xc571
movb $0x0, 0x697(%rsp)
movl $0x1, 0x1e4(%rsp)
leaq 0x408(%rsp), %rdi
callq 0x1b3f0
leaq 0x440(%rsp), %rdi
callq 0x1b400
leaq 0x478(%rsp), %rdi
callq 0x1b400
leaq 0x4b0(%rsp), %rdi
callq 0x1b400
leaq 0x4e8(%rsp), %rdi
callq 0x185e0
leaq 0x520(%rsp), %rdi
callq 0x185e0
leaq 0x558(%rsp), %rdi
callq 0x1a030
leaq 0x5a0(%rsp), %rdi
callq 0xe0b0
leaq 0x5f0(%rsp), %rdi
callq 0x1b410
leaq 0x628(%rsp), %rdi
callq 0x185e0
jmp 0xc67c
leaq 0x408(%rsp), %rdi
callq 0x1b3f0
leaq 0x440(%rsp), %rdi
callq 0x1b400
leaq 0x478(%rsp), %rdi
callq 0x1b400
leaq 0x4b0(%rsp), %rdi
callq 0x1b400
leaq 0x4e8(%rsp), %rdi
callq 0x185e0
leaq 0x520(%rsp), %rdi
callq 0x185e0
leaq 0x558(%rsp), %rdi
callq 0x1a030
leaq 0x5a0(%rsp), %rdi
callq 0xe0b0
leaq 0x5f0(%rsp), %rdi
callq 0x1b410
leaq 0x628(%rsp), %rdi
callq 0x185e0
jmp 0xc68d
movb 0x697(%rsp), %al
andb $0x1, %al
addq $0x698, %rsp            # imm = 0x698
retq
movq 0x598(%rsp), %rdi
callq 0x2310
nopw (%rax,%rax)