// File: iPapatsoris[P]Maximum-Independent-Set/src/Reductions.cpp
// Function: Reductions::removeEasyInstances(unsigned int const&)
void Reductions::removeEasyInstances(const uint32_t &theta) {
    vector<unordered_map<uint32_t, vector<uint32_t>* >::iterator> removedCCs;
    for (auto it = ccToNodes.begin() ; it != ccToNodes.end() ; it++) {
        vector<uint32_t> *cc = it->second;
            if (theta == 5 && cc->size() <= 28 || theta == 4 && cc->size() <= 23 || theta == 3 && cc->size() <= 20) {
                //cout << "Removing easy instance component " << it->first << "\n";
                findMis(*cc);
                graph.remove(*cc, reduceInfo, true);
                removedCCs.push_back(it);
            }
        }
    if (removedCCs.empty()) {
        //cout << "No nodes removed" << endl;
    } else {
        for (auto cc : removedCCs) {
            delete cc->second;
            ccToNodes.erase(cc);
        }
    }
}

// Assembly:
subq $0xa8, %rsp
movq %rdi, 0xa0(%rsp)
movq %rsi, 0x98(%rsp)
movq 0xa0(%rsp), %rax
movq %rax, 0x18(%rsp)
leaq 0x80(%rsp), %rdi
callq 0x334c0
movq 0x18(%rsp), %rdi
addq $0x18, %rdi
callq 0x334d0
movq %rax, 0x78(%rsp)
movq 0x18(%rsp), %rdi
addq $0x18, %rdi
callq 0x33520
movq %rax, 0x70(%rsp)
leaq 0x78(%rsp), %rdi
leaq 0x70(%rsp), %rsi
callq 0x33500
testb $0x1, %al
jne 0x305ef
jmp 0x306ed
leaq 0x78(%rsp), %rdi
callq 0x33550
movq 0x8(%rax), %rax
movq %rax, 0x68(%rsp)
movq 0x98(%rsp), %rax
cmpl $0x5, (%rax)
jne 0x3061f
movq 0x68(%rsp), %rdi
callq 0x188e0
cmpq $0x1c, %rax
jbe 0x3065d
movq 0x98(%rsp), %rax
cmpl $0x4, (%rax)
jne 0x3063c
movq 0x68(%rsp), %rdi
callq 0x188e0
cmpq $0x17, %rax
jbe 0x3065d
movq 0x98(%rsp), %rax
cmpl $0x3, (%rax)
jne 0x306d5
movq 0x68(%rsp), %rdi
callq 0x188e0
cmpq $0x14, %rax
ja 0x306d5
movq 0x18(%rsp), %rdi
movq 0x68(%rsp), %rsi
callq 0x31870
jmp 0x3066e
movq 0x18(%rsp), %rdx
movq (%rdx), %rdi
movq 0x68(%rsp), %rsi
addq $0x10, %rdx
movb $0x1, 0x5b(%rsp)
movb $0x0, 0x5a(%rsp)
xorl %eax, %eax
movl %eax, %r8d
leaq 0x5b(%rsp), %rcx
leaq 0x5a(%rsp), %r9
callq 0x189b0
jmp 0x3069f
leaq 0x80(%rsp), %rdi
leaq 0x78(%rsp), %rsi
callq 0x33570
jmp 0x306b3
jmp 0x306d5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x60(%rsp)
movl %eax, 0x5c(%rsp)
leaq 0x80(%rsp), %rdi
callq 0x33770
jmp 0x307d8
jmp 0x306d7
leaq 0x78(%rsp), %rdi
xorl %esi, %esi
callq 0x335e0
movq %rax, 0x50(%rsp)
jmp 0x305c4
leaq 0x80(%rsp), %rdi
callq 0x33610
testb $0x1, %al
jne 0x30700
jmp 0x30705
jmp 0x307c3
leaq 0x80(%rsp), %rax
movq %rax, 0x48(%rsp)
movq 0x48(%rsp), %rdi
callq 0x33660
movq %rax, 0x40(%rsp)
movq 0x48(%rsp), %rdi
callq 0x33690
movq %rax, 0x38(%rsp)
leaq 0x40(%rsp), %rdi
leaq 0x38(%rsp), %rsi
callq 0x336c0
testb $0x1, %al
jne 0x30745
jmp 0x307c1
leaq 0x40(%rsp), %rdi
callq 0x33700
movq (%rax), %rax
movq %rax, 0x30(%rsp)
leaq 0x30(%rsp), %rdi
callq 0x33550
movq 0x8(%rax), %rax
movq %rax, 0x10(%rsp)
cmpq $0x0, %rax
je 0x30784
movq 0x10(%rsp), %rdi
callq 0x18520
movq 0x10(%rsp), %rdi
callq 0x2180
movq 0x18(%rsp), %rdi
addq $0x18, %rdi
movq 0x30(%rsp), %rax
movq %rax, 0x28(%rsp)
movq 0x28(%rsp), %rsi
callq 0x33710
movq %rax, 0x8(%rsp)
jmp 0x307a8
movq 0x8(%rsp), %rax
movq %rax, 0x20(%rsp)
leaq 0x40(%rsp), %rdi
callq 0x33750
jmp 0x30730
jmp 0x307c3
leaq 0x80(%rsp), %rdi
callq 0x33770
addq $0xa8, %rsp
retq
movq 0x60(%rsp), %rdi
callq 0x2310
nopw %cs:(%rax,%rax)