// File: iPapatsoris[P]Maximum-Independent-Set/src/Mis.hpp
// Function: Mis::expandIncludedNodes(std::vector<unsigned int, std::allocator<unsigned int>>&, std::vector<unsigned int, std::allocator<unsigned int>>&)
void expandIncludedNodes(std::vector<uint32_t> &set, std::vector<uint32_t> &finalMis) {
        for (uint32_t i = 0 ; i < set.size() ; i++) {
            auto subsequent = subsequentNodes.find(set[i]);
            if (subsequent != subsequentNodes.end()) {
                if (std::find(set.begin(), set.end(), subsequent->second) != set.end() || std::find(finalMis.begin(), finalMis.end(), subsequent->second) != finalMis.end()) {
                    subsequentNodes.erase(subsequent);
                } else {
                    set.push_back(subsequent->second);
                }
            }
            auto res = hypernodeToInnernode.find(set[i]);
            if (res == hypernodeToInnernode.end()) {
                finalMis.push_back(set[i]);
            } else {
                assert(res->second.outerLevel);
                for (auto node : res->second.neighbors) {
                    auto innerHypernode = hypernodeToInnernode.find(node);
                    if (innerHypernode != hypernodeToInnernode.end()) {
                        assert(!innerHypernode->second.outerLevel);
                        innerHypernode->second.outerLevel = true;
                    }
                    set.push_back(node);
                }
                for (auto node : res->second.nodes) {
                    auto innerHypernode = hypernodeToInnernode.find(node);
                    if (innerHypernode != hypernodeToInnernode.end()) {
                        assert(!innerHypernode->second.outerLevel);
                        innerHypernode->second.outerLevel = true;
                    }
                }
                hypernodeToInnernode.erase(res);
            }
        }
        set.clear();
    }

// Assembly:
subq $0x138, %rsp            # imm = 0x138
movq %rdi, 0x130(%rsp)
movq %rsi, 0x128(%rsp)
movq %rdx, 0x120(%rsp)
movq 0x130(%rsp), %rax
movq %rax, 0x30(%rsp)
movl $0x0, 0x11c(%rsp)
movl 0x11c(%rsp), %eax
movq %rax, 0x28(%rsp)
movq 0x128(%rsp), %rdi
callq 0x188e0
movq %rax, %rcx
movq 0x28(%rsp), %rax
cmpq %rcx, %rax
jae 0x42c38
movq 0x30(%rsp), %rax
addq $0x50, %rax
movq %rax, 0x20(%rsp)
movq 0x128(%rsp), %rdi
movl 0x11c(%rsp), %eax
movl %eax, %esi
callq 0x18900
movq 0x20(%rsp), %rdi
movq %rax, %rsi
callq 0x19340
movq 0x30(%rsp), %rdi
movq %rax, 0x110(%rsp)
addq $0x50, %rdi
callq 0x19370
movq %rax, 0x108(%rsp)
leaq 0x110(%rsp), %rdi
leaq 0x108(%rsp), %rsi
callq 0x42e90
testb $0x1, %al
jne 0x4277e
jmp 0x42904
movq 0x128(%rsp), %rdi
callq 0x19b50
movq %rax, 0xf8(%rsp)
movq 0x128(%rsp), %rdi
callq 0x1a0e0
movq %rax, 0xf0(%rsp)
leaq 0x110(%rsp), %rdi
callq 0x1b500
movq %rax, %rdx
addq $0x4, %rdx
movq 0xf8(%rsp), %rdi
movq 0xf0(%rsp), %rsi
callq 0x43030
movq %rax, 0x100(%rsp)
movq 0x128(%rsp), %rdi
callq 0x1a0e0
movq %rax, 0xe8(%rsp)
leaq 0x100(%rsp), %rdi
leaq 0xe8(%rsp), %rsi
callq 0x1a110
movb %al, %cl
movb $0x1, %al
testb $0x1, %cl
movb %al, 0x1f(%rsp)
jne 0x4289d
movq 0x120(%rsp), %rdi
callq 0x19b50
movq %rax, 0xd8(%rsp)
movq 0x120(%rsp), %rdi
callq 0x1a0e0
movq %rax, 0xd0(%rsp)
leaq 0x110(%rsp), %rdi
callq 0x1b500
movq %rax, %rdx
addq $0x4, %rdx
movq 0xd8(%rsp), %rdi
movq 0xd0(%rsp), %rsi
callq 0x43030
movq %rax, 0xe0(%rsp)
movq 0x120(%rsp), %rdi
callq 0x1a0e0
movq %rax, 0xc8(%rsp)
leaq 0xe0(%rsp), %rdi
leaq 0xc8(%rsp), %rsi
callq 0x1a110
movb %al, 0x1f(%rsp)
movb 0x1f(%rsp), %al
testb $0x1, %al
jne 0x428a7
jmp 0x428d7
movq 0x30(%rsp), %rdi
addq $0x50, %rdi
movq 0x110(%rsp), %rax
movq %rax, 0xc0(%rsp)
movq 0xc0(%rsp), %rsi
callq 0x43090
movq %rax, 0xb8(%rsp)
jmp 0x42902
movq 0x128(%rsp), %rax
movq %rax, 0x10(%rsp)
leaq 0x110(%rsp), %rdi
callq 0x1b500
movq 0x10(%rsp), %rdi
movq %rax, %rsi
addq $0x4, %rsi
callq 0x19070
jmp 0x42904
movq 0x30(%rsp), %rax
addq $0x18, %rax
movq %rax, 0x8(%rsp)
movq 0x128(%rsp), %rdi
movl 0x11c(%rsp), %eax
movl %eax, %esi
callq 0x18900
movq 0x8(%rsp), %rdi
movq %rax, %rsi
callq 0x42500
movq 0x30(%rsp), %rdi
movq %rax, 0xb0(%rsp)
addq $0x18, %rdi
callq 0x42550
movq %rax, 0xa8(%rsp)
leaq 0xb0(%rsp), %rdi
leaq 0xa8(%rsp), %rsi
callq 0x42d30
testb $0x1, %al
jne 0x4296e
jmp 0x429a1
movq 0x120(%rsp), %rax
movq %rax, (%rsp)
movq 0x128(%rsp), %rdi
movl 0x11c(%rsp), %eax
movl %eax, %esi
callq 0x18900
movq (%rsp), %rdi
movq %rax, %rsi
callq 0x19070
jmp 0x42c20
leaq 0xb0(%rsp), %rdi
callq 0x42580
testb $0x1, 0x38(%rax)
je 0x429b6
jmp 0x429d5
leaq 0x4662(%rip), %rdi      # 0x4701f
leaq 0x4672(%rip), %rsi      # 0x47036
movl $0x3a, %edx
leaq 0x4672(%rip), %rcx      # 0x47042
callq 0x2110
leaq 0xb0(%rsp), %rdi
callq 0x42580
addq $0x8, %rax
addq $0x18, %rax
movq %rax, 0xa0(%rsp)
movq 0xa0(%rsp), %rdi
callq 0x19b50
movq %rax, 0x98(%rsp)
movq 0xa0(%rsp), %rdi
callq 0x1a0e0
movq %rax, 0x90(%rsp)
leaq 0x98(%rsp), %rdi
leaq 0x90(%rsp), %rsi
callq 0x1a110
testb $0x1, %al
jne 0x42a3a
jmp 0x42b0a
leaq 0x98(%rsp), %rdi
callq 0x1a150
movq 0x30(%rsp), %rdi
movl (%rax), %eax
movl %eax, 0x8c(%rsp)
addq $0x18, %rdi
leaq 0x8c(%rsp), %rsi
callq 0x42500
movq 0x30(%rsp), %rdi
movq %rax, 0x80(%rsp)
addq $0x18, %rdi
callq 0x42550
movq %rax, 0x78(%rsp)
leaq 0x80(%rsp), %rdi
leaq 0x78(%rsp), %rsi
callq 0x42530
testb $0x1, %al
jne 0x42a99
jmp 0x42ae3
leaq 0x80(%rsp), %rdi
callq 0x42580
movb 0x38(%rax), %al
xorb $-0x1, %al
testb $0x1, %al
jne 0x42ab1
jmp 0x42ab3
jmp 0x42ad2
leaq 0x44e3(%rip), %rdi      # 0x46f9d
leaq 0x4575(%rip), %rsi      # 0x47036
movl $0x3e, %edx
leaq 0x4575(%rip), %rcx      # 0x47042
callq 0x2110
leaq 0x80(%rsp), %rdi
callq 0x42580
movb $0x1, 0x38(%rax)
movq 0x128(%rsp), %rdi
leaq 0x8c(%rsp), %rsi
callq 0x19070
leaq 0x98(%rsp), %rdi
callq 0x1a160
jmp 0x42a1c
leaq 0xb0(%rsp), %rdi
callq 0x42580
addq $0x8, %rax
movq %rax, 0x70(%rsp)
movq 0x70(%rsp), %rdi
callq 0x19b50
movq %rax, 0x68(%rsp)
movq 0x70(%rsp), %rdi
callq 0x1a0e0
movq %rax, 0x60(%rsp)
leaq 0x68(%rsp), %rdi
leaq 0x60(%rsp), %rsi
callq 0x1a110
testb $0x1, %al
jne 0x42b56
jmp 0x42bfb
leaq 0x68(%rsp), %rdi
callq 0x1a150
movq 0x30(%rsp), %rdi
movl (%rax), %eax
movl %eax, 0x5c(%rsp)
addq $0x18, %rdi
leaq 0x5c(%rsp), %rsi
callq 0x42500
movq 0x30(%rsp), %rdi
movq %rax, 0x50(%rsp)
addq $0x18, %rdi
callq 0x42550
movq %rax, 0x48(%rsp)
leaq 0x50(%rsp), %rdi
leaq 0x48(%rsp), %rsi
callq 0x42530
testb $0x1, %al
jne 0x42ba6
jmp 0x42bea
leaq 0x50(%rsp), %rdi
callq 0x42580
movb 0x38(%rax), %al
xorb $-0x1, %al
testb $0x1, %al
jne 0x42bbb
jmp 0x42bbd
jmp 0x42bdc
leaq 0x43d9(%rip), %rdi      # 0x46f9d
leaq 0x446b(%rip), %rsi      # 0x47036
movl $0x46, %edx
leaq 0x446b(%rip), %rcx      # 0x47042
callq 0x2110
leaq 0x50(%rsp), %rdi
callq 0x42580
movb $0x1, 0x38(%rax)
jmp 0x42bec
leaq 0x68(%rsp), %rdi
callq 0x1a160
jmp 0x42b3e
movq 0x30(%rsp), %rdi
addq $0x18, %rdi
movq 0xb0(%rsp), %rax
movq %rax, 0x40(%rsp)
movq 0x40(%rsp), %rsi
callq 0x42cd0
movq %rax, 0x38(%rsp)
jmp 0x42c22
movl 0x11c(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x11c(%rsp)
jmp 0x426e7
movq 0x128(%rsp), %rdi
callq 0x191c0
addq $0x138, %rsp            # imm = 0x138
retq
nopl (%rax)