// File: /workspace/github_cpp_makefile_star2_O2/Laakeri[P]Triangulator/src/PMC.cpp
// Function: PMC::findPMCs(Graph const&, PMC::valueT, int)
vector<vector<int> > findPMCs(const Graph& G, valueT upperBound, int PROBLEM) {
	assert(G.isConnected());
	vector<int> rmV(G.n);
	vector<int> order = MCS::MCS_L(G, 0, rmV);
	reverse(order.begin(), order.end());
	vector<int> ord(G.n);
	assert((int)order.size() == G.n);
	for (int i = 0; i < G.n; i++) {
		ord[order[i]] = i;
	}
	Graph nG(G.n, true);
	vector<vector<int> > PMCs = {{order[0]}};
	vector<vector<int> > minSeps = {};
	for (int i = 1; i < G.n; i++) {
		int x = order[i];
		for (int nx : G.g[x]) {
			if (ord[nx] < ord[x]) {
				nG.addEdge(nx, x);
			}
		}
		assert(nG.isConnectedOrIsolated());
		auto newMinSeps = findMinSeps(nG);
		for (auto& s : newMinSeps) {
			assert(isMinSep(nG, s));
		}
		PMCs = ONE_MORE_VERTEX(nG, PMCs, minSeps, newMinSeps, x, upperBound, PROBLEM);
		minSeps = newMinSeps;
		for (auto& pmc : PMCs) {
			assert(canFill(G, pmc, upperBound, PROBLEM));
			sort(pmc.begin(), pmc.end());
		}
		sort(PMCs.begin(), PMCs.end());
		PMCs.erase(unique(PMCs.begin(), PMCs.end()), PMCs.end());
		if (printProgress) cerr<<"ONE_MORE_VERTEX: "<<G.n<<" "<<i<<" "<<PMCs.size()<<" "<<minSeps.size()<<endl;
	}
	return PMCs;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x148, %rsp            # imm = 0x148
movl %edx, 0x4c(%rsp)
movq %rsi, %rbp
movq %rdi, 0x40(%rsp)
movq %rsi, %rdi
callq 0x83e4
testb %al, %al
je 0x16c2f
movslq 0x50(%rbp), %rsi
leaq 0xd8(%rsp), %r15
leaq 0xf0(%rsp), %rdx
movq %r15, %rdi
callq 0x8852
leaq 0x78(%rsp), %rdi
movq %rbp, %rsi
xorl %edx, %edx
movq %r15, %rcx
callq 0xebd1
movq 0x78(%rsp), %rdi
movq 0x80(%rsp), %rsi
callq 0x10b51
movslq 0x50(%rbp), %rsi
leaq 0xa8(%rsp), %rdi
leaq 0xf0(%rsp), %rdx
callq 0x8852
movq 0x78(%rsp), %rax
movq 0x80(%rsp), %rsi
subq %rax, %rsi
shrq $0x2, %rsi
cmpl %esi, 0x50(%rbp)
jne 0x16c4e
leaq 0x180(%rsp), %rbx
movq 0xa8(%rsp), %rcx
xorl %edx, %edx
movslq %esi, %rdi
cmpq %rdi, %rdx
jge 0x168a8
movslq (%rax,%rdx,4), %rsi
movl %edx, (%rcx,%rsi,4)
incq %rdx
movl 0x50(%rbp), %esi
jmp 0x16891
leaq 0xf0(%rsp), %rdi
pushq $0x1
popq %rdx
callq 0x7870
movq 0x78(%rsp), %rax
movl (%rax), %eax
leaq 0x90(%rsp), %rsi
movl %eax, (%rsi)
leaq 0x50(%rsp), %rdi
pushq $0x1
popq %rdx
leaq 0xc0(%rsp), %rcx
callq 0xdbe8
leaq 0x50(%rsp), %rsi
pushq $0x1
popq %rdx
leaq 0x4b(%rsp), %rcx
movq 0x40(%rsp), %rdi
movq %rdx, %r15
callq 0x195fc
leaq 0x50(%rsp), %r12
movq %r12, %rdi
callq 0x38e4
xorps %xmm0, %xmm0
movaps %xmm0, (%r12)
andq $0x0, 0x10(%r12)
leaq 0xf0(%rsp), %r13
movslq 0x50(%rbp), %rax
cmpq %rax, %r15
jge 0x16b80
movq 0x78(%rsp), %rax
movq %r15, 0x70(%rsp)
movslq (%rax,%r15,4), %r12
movq %rbp, %r14
movq 0x38(%rbp), %rax
imulq $0x18, %r12, %rcx
movq (%rax,%rcx), %r15
movq 0x8(%rax,%rcx), %rbp
cmpq %rbp, %r15
je 0x16974
movslq (%r15), %rsi
movq 0xa8(%rsp), %rax
movl (%rax,%rsi,4), %ecx
cmpl (%rax,%r12,4), %ecx
jge 0x1696e
movq %r13, %rdi
movl %r12d, %edx
callq 0x7a8e
addq $0x4, %r15
jmp 0x1694a
movq %r13, %rdi
callq 0x8456
testb %al, %al
leaq 0x90(%rsp), %rdi
je 0x16c10
movq %r13, %rsi
pushq $-0x1
popq %rdx
callq 0x1617f
movq 0x90(%rsp), %r15
movq 0x98(%rsp), %rbp
cmpq %rbp, %r15
je 0x169c4
movq %r13, %rdi
movq %r15, %rsi
callq 0x166ac
addq $0x18, %r15
testb %al, %al
jne 0x169a7
jmp 0x16bd2
movaps (%rbx), %xmm0
movaps 0x10(%rbx), %xmm1
movaps 0x20(%rbx), %xmm2
movaps %xmm2, 0x20(%rsp)
movaps %xmm1, 0x10(%rsp)
movaps %xmm0, (%rsp)
movl 0x4c(%rsp), %eax
movl %eax, 0x30(%rsp)
movq %r13, %rsi
leaq 0xc0(%rsp), %rdi
movq 0x40(%rsp), %r15
movq %r15, %rdx
leaq 0x50(%rsp), %rcx
leaq 0x90(%rsp), %rbp
movq %rbp, %r8
movl %r12d, %r9d
callq 0x15b6a
movq %r15, %rdi
leaq 0xc0(%rsp), %r15
movq %r15, %rsi
callq 0x3dc6
movq %r15, %rdi
callq 0x376e
leaq 0x50(%rsp), %rdi
movq %rbp, %rsi
callq 0x19636
movq 0x40(%rsp), %rax
movq (%rax), %r12
movq 0x8(%rax), %r15
cmpq %r15, %r12
je 0x16a8d
movaps (%rbx), %xmm0
movaps 0x10(%rbx), %xmm1
movaps 0x20(%rbx), %xmm2
movaps %xmm2, 0x20(%rsp)
movaps %xmm1, 0x10(%rsp)
movaps %xmm0, (%rsp)
movq %r14, %rdi
movq %r12, %rsi
movl 0x4c(%rsp), %edx
callq 0x15ac3
testb %al, %al
je 0x16bf1
movq (%r12), %rdi
movq 0x8(%r12), %rsi
callq 0x8dde
addq $0x18, %r12
jmp 0x16a44
movq 0x40(%rsp), %rax
movq (%rax), %rdi
movq 0x8(%rax), %rsi
callq 0x9ad1
movq 0x40(%rsp), %r15
movq (%r15), %rdi
movq 0x8(%r15), %rsi
callq 0xa26e
movq 0x8(%r15), %rdx
movq %r15, %rdi
movq %rax, %rsi
callq 0x88d0
cmpb $0x1, 0x633fdf(%rip)    # 0x64aaa4
jne 0x16b68
movq 0x1951e(%rip), %rdi     # 0x2fff0
leaq 0xb244(%rip), %rsi      # 0x21d1d
callq 0x2210
movl 0x50(%r14), %esi
movq %rax, %rdi
callq 0x2330
movq %rax, %rdi
leaq 0xb239(%rip), %rsi      # 0x21d2d
callq 0x2210
movq %rax, %rdi
movq 0x70(%rsp), %rsi
callq 0x2330
movq %rax, %rdi
leaq 0xb21d(%rip), %rsi      # 0x21d2d
callq 0x2210
movq %rax, %rdi
movq 0x40(%rsp), %rcx
movq 0x8(%rcx), %rax
subq (%rcx), %rax
cqto
pushq $0x18
popq %rcx
idivq %rcx
movq %rax, %rsi
callq 0x2160
movq %rax, %rdi
leaq 0xb1ef(%rip), %rsi      # 0x21d2d
callq 0x2210
movq %rax, %rdi
movq 0x58(%rsp), %rax
subq 0x50(%rsp), %rax
cqto
pushq $0x18
popq %rcx
idivq %rcx
movq %rax, %rsi
callq 0x2160
movq %rax, %rdi
callq 0x20e0
movq %rbp, %rdi
callq 0x376e
movq 0x70(%rsp), %r15
incq %r15
movq %r14, %rbp
jmp 0x1691b
leaq 0x50(%rsp), %rdi
callq 0x376e
leaq 0xf0(%rsp), %rdi
callq 0x36d2
leaq 0xa8(%rsp), %rdi
callq 0x38e4
leaq 0x78(%rsp), %rdi
callq 0x38e4
leaq 0xd8(%rsp), %rdi
callq 0x38e4
movq 0x40(%rsp), %rax
addq $0x148, %rsp            # imm = 0x148
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0xb10f(%rip), %rdi      # 0x21ce8
leaq 0xaae6(%rip), %rsi      # 0x216c6
leaq 0xb0a8(%rip), %rcx      # 0x21c8f
movl $0x210, %edx            # imm = 0x210
callq 0x2150
leaq 0xb100(%rip), %rdi      # 0x21cf8
leaq 0xaac7(%rip), %rsi      # 0x216c6
leaq 0xb089(%rip), %rcx      # 0x21c8f
movl $0x215, %edx            # imm = 0x215
callq 0x2150
leaq 0xb0b6(%rip), %rdi      # 0x21ccd
leaq 0xaaa8(%rip), %rsi      # 0x216c6
leaq 0xb06a(%rip), %rcx      # 0x21c8f
movl $0x20d, %edx            # imm = 0x20D
callq 0x2150
leaq 0xb049(%rip), %rdi      # 0x21c7f
leaq 0xaa89(%rip), %rsi      # 0x216c6
leaq 0xb04b(%rip), %rcx      # 0x21c8f
movl $0x1fa, %edx            # imm = 0x1FA
callq 0x2150
leaq 0xa1f8(%rip), %rdi      # 0x20e4d
leaq 0xaa6a(%rip), %rsi      # 0x216c6
leaq 0xb02c(%rip), %rcx      # 0x21c8f
movl $0x1ff, %edx            # imm = 0x1FF
callq 0x2150
movq %rax, %r14
leaq 0x50(%rsp), %rdi
callq 0x38e4
jmp 0x16cc7
movq %rax, %r14
jmp 0x16cc7
movq %rax, %r14
jmp 0x16cd4
movq %rax, %r14
jmp 0x16ce1
movq %rax, %r14
jmp 0x16ceb
jmp 0x16ca3
jmp 0x16ca3
jmp 0x16ca3
jmp 0x16c9c
jmp 0x16c9c
jmp 0x16ca3
movq %rax, %r14
jmp 0x16cb3
jmp 0x16ca3
movq %rax, %r14
leaq 0x90(%rsp), %rdi
callq 0x376e
leaq 0x50(%rsp), %rdi
callq 0x376e
movq 0x40(%rsp), %rdi
callq 0x376e
leaq 0xf0(%rsp), %rdi
callq 0x36d2
leaq 0xa8(%rsp), %rdi
callq 0x38e4
leaq 0x78(%rsp), %rdi
callq 0x38e4
leaq 0xd8(%rsp), %rdi
callq 0x38e4
movq %r14, %rdi
callq 0x2340