// File: /workspace/github_cpp_makefile_star2_O1/Laakeri[P]Triangulator/src/PMC.cpp
// Function: PMC::findMinSeps(Graph const&, long)
vector<vector<int> > findMinSeps(const Graph& G, int64_t UBcount = -1) {
	vector<vector<int> > minSeps;
	set<vector<int> > ff;
	for (int i = 0; i < G.n; i++) {
		if (G.g[i].size() == 0) continue;
		for (int j = 0; j < G.n; j++) {
			u[j] = 0;
		}
		for (int nx : G.g[i]) {
			u[nx] = 2;
		}
		u[i] = 2;
		for (int nx : G.g[i]) {
			for (int nnx : G.g[nx]) {
				if (u[nnx] == 0) {
					vector<int> nb;
					dfs4(G, nnx, nb);
					assert(nb.size() > 0);
					for (int a : nb) {
						u[a] = 2;
					}
					sort(nb.begin(), nb.end());
					if (!ff.count(nb)) {
						ff.insert(nb);
						minSeps.push_back(nb);
						if (UBcount != -1 && (int64_t)minSeps.size() >= UBcount) {
							sort(minSeps.begin(), minSeps.end());
							return minSeps;
						}
					}
				}
			}
		}
	}
	for (int i = 0; i < (int)minSeps.size(); i++) {
		auto S = minSeps[i];
		for (int x : S) {
			for (int j = 0; j < G.n; j++) {
				u[j] = 0;
			}
			for (int y : S) {
				u[y] = 2;
			}
			for (int nx : G.g[x]) {
				u[nx] = 2;
			}
			for (int nx : G.g[x]) {
				for (int nnx : G.g[nx]) {
					if (u[nnx] == 0) {
						vector<int> nb;
						dfs4(G, nnx, nb);
						assert(nb.size() > 0);
						for (int a : nb) {
							u[a] = 2;
						}
						sort(nb.begin(), nb.end());
						if (!ff.count(nb)) {
							ff.insert(nb);
							minSeps.push_back(nb);
							if (UBcount != -1 && (int64_t)minSeps.size() >= UBcount) {
								sort(minSeps.begin(), minSeps.end());
								return minSeps;
							}
						}
					}
				}
			}
		}
	}
	sort(minSeps.begin(), minSeps.end());
	return minSeps;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0xb8, %rsp
movq %rdx, 0x78(%rsp)
xorl %eax, %eax
movq %rax, 0x10(%rdi)
xorps %xmm0, %xmm0
movq %rdi, 0x8(%rsp)
movups %xmm0, (%rdi)
leaq 0x90(%rsp), %rcx
movl $0x0, (%rcx)
movq %rax, 0x8(%rcx)
movq %rcx, 0x10(%rcx)
movq %rcx, 0x18(%rcx)
movq %rax, 0x20(%rcx)
cmpl $0x0, 0x50(%rsi)
setg 0x28(%rsp)
movq %rsi, 0x70(%rsp)
jle 0x1d0a7
movq %rsi, %rdi
xorl %esi, %esi
leaq 0x5d21b7(%rip), %rbx    # 0x5ef010
movq $0x0, 0x30(%rsp)
movq 0x38(%rdi), %rax
leaq (%rsi,%rsi,2), %rcx
movq (%rax,%rcx,8), %r8
movq 0x8(%rax,%rcx,8), %r9
cmpq %r8, %r9
je 0x1d090
cmpl $0x0, 0x50(%rdi)
jle 0x1ce9d
movq %rbx, %rax
xorl %ecx, %ecx
movl $0x0, (%rax)
incq %rcx
movslq 0x50(%rdi), %rdx
addq $0x4, %rax
cmpq %rdx, %rcx
jl 0x1ce87
movq %r8, %rax
cmpq %r9, %r8
je 0x1ceb8
movslq (%rax), %rcx
movl $0x2, (%rbx,%rcx,4)
addq $0x4, %rax
cmpq %r9, %rax
jne 0x1cea5
movq %rsi, 0x58(%rsp)
movl $0x2, (%rbx,%rsi,4)
cmpq %r9, %r8
sete %al
movq %r9, 0x38(%rsp)
je 0x1d087
movb %al, 0x60(%rsp)
movq %r8, 0x68(%rsp)
movslq (%r8), %rax
movq 0x38(%rdi), %rcx
leaq (%rax,%rax,2), %rax
movq (%rcx,%rax,8), %r15
movq 0x8(%rcx,%rax,8), %r12
cmpq %r12, %r15
sete %r14b
je 0x1d061
movslq (%r15), %rsi
movb $0x1, %bpl
cmpl $0x0, (%rbx,%rsi,4)
jne 0x1cfc0
xorps %xmm0, %xmm0
movaps %xmm0, 0x10(%rsp)
movq $0x0, 0x20(%rsp)
leaq 0x10(%rsp), %rdx
callq 0x1cd21
movq 0x10(%rsp), %r13
movq 0x18(%rsp), %rbp
movq %rbp, %rax
subq %r13, %rax
je 0x1d493
sarq $0x2, %rax
movq %r13, %rcx
movslq (%rcx), %rdx
movl $0x2, (%rbx,%rdx,4)
addq $0x4, %rcx
cmpq %rbp, %rcx
jne 0x1cf47
cmpq %rbp, %r13
je 0x1cf82
bsrq %rax, %rdx
xorl $0x3f, %edx
addl %edx, %edx
xorq $0x7e, %rdx
movq %r13, %rdi
movq %rbp, %rsi
callq 0xac3d
movq %r13, %rdi
movq %rbp, %rsi
callq 0xad20
leaq 0x88(%rsp), %rdi
leaq 0x10(%rsp), %rsi
callq 0x217c0
movb $0x1, %bpl
leaq 0x90(%rsp), %rcx
cmpq %rcx, %rax
je 0x1cfd2
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0x1cfbb
movq 0x20(%rsp), %rsi
subq %rdi, %rsi
callq 0x2210
movq 0x70(%rsp), %rdi
testb %bpl, %bpl
je 0x1d061
addq $0x4, %r15
jmp 0x1cef2
leaq 0x88(%rsp), %rdi
leaq 0x10(%rsp), %rsi
callq 0x218b4
movq 0x8(%rsp), %rdi
leaq 0x10(%rsp), %rsi
callq 0xa744
movq 0x78(%rsp), %rcx
cmpq $-0x1, %rcx
je 0x1cfa4
movq 0x8(%rsp), %rax
movq (%rax), %r13
movq 0x8(%rax), %rsi
movq %rsi, %rax
subq %r13, %rax
sarq $0x3, %rax
movabsq $-0x5555555555555555, %rdx # imm = 0xAAAAAAAAAAAAAAAB
imulq %rdx, %rax
cmpq %rcx, %rax
jl 0x1cfa4
movb $0x1, %cl
movq %rcx, 0x30(%rsp)
cmpq %rsi, %r13
je 0x1d05a
bsrq %rax, %rdx
xorl $0x3f, %edx
addl %edx, %edx
xorq $0x7e, %rdx
movq %r13, %rdi
movq %rsi, %rbp
callq 0xb710
movq %r13, %rdi
movq %rbp, %rsi
callq 0xb7cf
xorl %ebp, %ebp
jmp 0x1cfa4
testb $0x1, %r14b
je 0x1d083
movq 0x68(%rsp), %r8
addq $0x4, %r8
movq 0x38(%rsp), %r9
cmpq %r9, %r8
sete %al
jne 0x1ced5
jmp 0x1d087
movb 0x60(%rsp), %al
testb $0x1, %al
movq 0x58(%rsp), %rsi
je 0x1d0b0
incq %rsi
movslq 0x50(%rdi), %rax
cmpq %rax, %rsi
setl 0x28(%rsp)
jl 0x1ce62
jmp 0x1d0b0
movq $0x0, 0x30(%rsp)
testb $0x1, 0x28(%rsp)
jne 0x1d43f
movq 0x8(%rsp), %rcx
movq (%rcx), %rax
movq 0x8(%rcx), %rcx
subq %rax, %rcx
shrq $0x3, %rcx
imull $0xaaaaaaab, %ecx, %ecx # imm = 0xAAAAAAAB
testl %ecx, %ecx
jle 0x1d3dc
xorl %edx, %edx
leaq 0x5d1f2b(%rip), %rbx    # 0x5ef010
movq %rdx, 0x80(%rsp)
leaq (%rdx,%rdx,2), %rcx
leaq (%rax,%rcx,8), %rsi
leaq 0x10(%rsp), %rdi
callq 0x431c
movq 0x10(%rsp), %rax
movq 0x18(%rsp), %rcx
movq %rcx, 0x28(%rsp)
cmpq %rcx, %rax
movq 0x70(%rsp), %rdi
je 0x1d38b
movq %rax, 0x58(%rsp)
movslq (%rax), %rax
cmpl $0x0, 0x50(%rdi)
jle 0x1d145
movq %rbx, %rcx
xorl %edx, %edx
movl $0x0, (%rcx)
incq %rdx
movslq 0x50(%rdi), %rsi
addq $0x4, %rcx
cmpq %rsi, %rdx
jl 0x1d12f
movq 0x10(%rsp), %rcx
movq 0x18(%rsp), %rdx
cmpq %rdx, %rcx
je 0x1d164
movslq (%rcx), %rsi
movl $0x2, (%rbx,%rsi,4)
addq $0x4, %rcx
jmp 0x1d14f
movq 0x38(%rdi), %rcx
leaq (%rax,%rax,2), %rax
movq (%rcx,%rax,8), %rdx
movq 0x8(%rcx,%rax,8), %rsi
movq %rdx, %rax
cmpq %rsi, %rdx
je 0x1d190
movslq (%rax), %rcx
movl $0x2, (%rbx,%rcx,4)
addq $0x4, %rax
cmpq %rsi, %rax
jne 0x1d17d
cmpq %rsi, %rdx
movq %rsi, 0x60(%rsp)
je 0x1d355
movq %rdx, 0x68(%rsp)
movslq (%rdx), %rax
movq 0x38(%rdi), %rcx
leaq (%rax,%rax,2), %rax
movq (%rcx,%rax,8), %r13
movq 0x8(%rcx,%rax,8), %rbp
movl $0x0, 0x38(%rsp)
cmpq %rbp, %r13
sete %r15b
je 0x1d338
movslq (%r13), %rsi
movb $0x1, %r14b
cmpl $0x0, (%rbx,%rsi,4)
jne 0x1d28e
xorps %xmm0, %xmm0
movaps %xmm0, 0x40(%rsp)
movq $0x0, 0x50(%rsp)
leaq 0x40(%rsp), %rdx
callq 0x1cd21
movq 0x40(%rsp), %r14
movq 0x48(%rsp), %r12
movq %r12, %rax
subq %r14, %rax
je 0x1d474
sarq $0x2, %rax
movq %r14, %rcx
movslq (%rcx), %rdx
movl $0x2, (%rbx,%rdx,4)
addq $0x4, %rcx
cmpq %r12, %rcx
jne 0x1d215
cmpq %r12, %r14
je 0x1d250
bsrq %rax, %rdx
xorl $0x3f, %edx
addl %edx, %edx
xorq $0x7e, %rdx
movq %r14, %rdi
movq %r12, %rsi
callq 0xac3d
movq %r14, %rdi
movq %r12, %rsi
callq 0xad20
leaq 0x88(%rsp), %rdi
leaq 0x40(%rsp), %rsi
callq 0x217c0
movb $0x1, %r14b
leaq 0x90(%rsp), %rcx
cmpq %rcx, %rax
je 0x1d2a0
movq 0x40(%rsp), %rdi
testq %rdi, %rdi
je 0x1d289
movq 0x50(%rsp), %rsi
subq %rdi, %rsi
callq 0x2210
movq 0x70(%rsp), %rdi
testb %r14b, %r14b
je 0x1d330
addq $0x4, %r13
jmp 0x1d1bf
leaq 0x88(%rsp), %rdi
leaq 0x40(%rsp), %rsi
callq 0x218b4
movq 0x8(%rsp), %rdi
leaq 0x40(%rsp), %rsi
callq 0xa744
movq 0x78(%rsp), %rcx
cmpq $-0x1, %rcx
je 0x1d272
movq 0x8(%rsp), %rax
movq (%rax), %r12
movq 0x8(%rax), %rsi
movq %rsi, %rax
subq %r12, %rax
sarq $0x3, %rax
movabsq $-0x5555555555555555, %rdx # imm = 0xAAAAAAAAAAAAAAAB
imulq %rdx, %rax
cmpq %rcx, %rax
jl 0x1d272
movb $0x1, %cl
movq %rcx, 0x30(%rsp)
cmpq %rsi, %r12
je 0x1d328
bsrq %rax, %rdx
xorl $0x3f, %edx
addl %edx, %edx
xorq $0x7e, %rdx
movq %r12, %rdi
movq %rsi, %r14
callq 0xb710
movq %r12, %rdi
movq %r14, %rsi
callq 0xb7cf
xorl %r14d, %r14d
jmp 0x1d272
movl $0x1, 0x38(%rsp)
testb $0x1, %r15b
je 0x1d35c
movq 0x68(%rsp), %rdx
addq $0x4, %rdx
movq 0x60(%rsp), %rsi
cmpq %rsi, %rdx
jne 0x1d19e
movl $0x1c, %ecx
jmp 0x1d360
movl 0x38(%rsp), %ecx
cmpl $0x1c, %ecx
sete %al
testl %ecx, %ecx
sete %bpl
orb %al, %bpl
cmpb $0x1, %bpl
jne 0x1d38e
movq 0x58(%rsp), %rax
addq $0x4, %rax
cmpq 0x28(%rsp), %rax
jne 0x1d11c
jmp 0x1d38e
movb $0x1, %bpl
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0x1d3a5
movq 0x20(%rsp), %rsi
subq %rdi, %rsi
callq 0x2210
testb %bpl, %bpl
je 0x1d3df
movq 0x80(%rsp), %rdx
incq %rdx
movq 0x8(%rsp), %rcx
movq (%rcx), %rax
movq 0x8(%rcx), %rcx
subq %rax, %rcx
shrq $0x3, %rcx
imull $0xaaaaaaab, %ecx, %ecx # imm = 0xAAAAAAAB
movslq %ecx, %rcx
cmpq %rcx, %rdx
jl 0x1d0e5
jmp 0x1d3df
movb $0x1, %bpl
testb %bpl, %bpl
je 0x1d43f
movq 0x8(%rsp), %rax
movq (%rax), %r14
movq 0x8(%rax), %r15
cmpq %r15, %r14
je 0x1d430
movq %r15, %rax
subq %r14, %rax
sarq $0x3, %rax
movabsq $-0x5555555555555555, %rcx # imm = 0xAAAAAAAAAAAAAAAB
imulq %rax, %rcx
bsrq %rcx, %rdx
xorl $0x3f, %edx
addl %edx, %edx
xorq $0x7e, %rdx
movq %r14, %rdi
movq %r15, %rsi
callq 0xb710
movq %r14, %rdi
movq %r15, %rsi
callq 0xb7cf
leaq 0x88(%rsp), %rdi
callq 0x2159c
jmp 0x1d45d
leaq 0x88(%rsp), %rdi
callq 0x2159c
testb $0x1, 0x30(%rsp)
jne 0x1d45d
movq 0x8(%rsp), %rdi
callq 0x41fe
movq 0x8(%rsp), %rax
addq $0xb8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0xe7a9(%rip), %rdi      # 0x2bc24
leaq 0xe234(%rip), %rsi      # 0x2b6b6
leaq 0xe7a9(%rip), %rcx      # 0x2bc32
movl $0x1c9, %edx            # imm = 0x1C9
callq 0x2140
leaq 0xe78a(%rip), %rdi      # 0x2bc24
leaq 0xe215(%rip), %rsi      # 0x2b6b6
leaq 0xe78a(%rip), %rcx      # 0x2bc32
movl $0x1a7, %edx            # imm = 0x1A7
callq 0x2140
jmp 0x1d4b4
movq %rax, %r14
jmp 0x1d4ef
movq %rax, %r14
jmp 0x1d4d8
movq %rax, %r14
movq 0x40(%rsp), %rdi
testq %rdi, %rdi
je 0x1d4d8
movq 0x50(%rsp), %rsi
subq %rdi, %rsi
callq 0x2210
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0x1d4ef
movq 0x20(%rsp), %rsi
subq %rdi, %rsi
callq 0x2210
leaq 0x88(%rsp), %rdi
callq 0x2159c
movq 0x8(%rsp), %rdi
callq 0x41fe
movq %r14, %rdi
callq 0x2310