// File: 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
movq %rsp, %rbp
subq $0x2d0, %rsp            # imm = 0x2D0
movq %rdi, -0x278(%rbp)
movq %rdi, %rax
movq %rax, -0x270(%rbp)
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movb $0x0, -0x19(%rbp)
callq 0x17630
leaq -0x50(%rbp), %rdi
callq 0x434d0
movl $0x0, -0x54(%rbp)
movl -0x54(%rbp), %eax
movq -0x10(%rbp), %rcx
cmpl 0x50(%rcx), %eax
jge 0x3cfe5
movq -0x10(%rbp), %rdi
addq $0x38, %rdi
movslq -0x54(%rbp), %rsi
callq 0xbba0
movq %rax, %rdi
callq 0x59a0
cmpq $0x0, %rax
jne 0x3cbc5
jmp 0x3cfd7
movl $0x0, -0x58(%rbp)
movl -0x58(%rbp), %eax
movq -0x10(%rbp), %rcx
cmpl 0x50(%rcx), %eax
jge 0x3cbf5
movslq -0x58(%rbp), %rcx
leaq 0x5f650d(%rip), %rax    # 0x6330f0
movl $0x0, (%rax,%rcx,4)
movl -0x58(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x58(%rbp)
jmp 0x3cbcc
movq -0x10(%rbp), %rdi
addq $0x38, %rdi
movslq -0x54(%rbp), %rsi
callq 0xbba0
movq %rax, -0x60(%rbp)
movq -0x60(%rbp), %rdi
callq 0x6680
movq %rax, -0x68(%rbp)
movq -0x60(%rbp), %rdi
callq 0x66b0
movq %rax, -0x70(%rbp)
leaq -0x68(%rbp), %rdi
leaq -0x70(%rbp), %rsi
callq 0xbbc0
testb $0x1, %al
jne 0x3cc37
jmp 0x3cc62
leaq -0x68(%rbp), %rdi
callq 0xbc00
movl (%rax), %eax
movl %eax, -0x74(%rbp)
movslq -0x74(%rbp), %rcx
leaq 0x5f64a0(%rip), %rax    # 0x6330f0
movl $0x2, (%rax,%rcx,4)
leaq -0x68(%rbp), %rdi
callq 0xbc80
jmp 0x3cc24
movslq -0x54(%rbp), %rcx
leaq 0x5f6483(%rip), %rax    # 0x6330f0
movl $0x2, (%rax,%rcx,4)
movq -0x10(%rbp), %rdi
addq $0x38, %rdi
movslq -0x54(%rbp), %rsi
callq 0xbba0
movq %rax, -0x80(%rbp)
movq -0x80(%rbp), %rdi
callq 0x6680
movq %rax, -0x88(%rbp)
movq -0x80(%rbp), %rdi
callq 0x66b0
movq %rax, -0x90(%rbp)
leaq -0x88(%rbp), %rdi
leaq -0x90(%rbp), %rsi
callq 0xbbc0
testb $0x1, %al
jne 0x3ccc5
jmp 0x3cfd5
leaq -0x88(%rbp), %rdi
callq 0xbc00
movl (%rax), %eax
movl %eax, -0x94(%rbp)
movq -0x10(%rbp), %rdi
addq $0x38, %rdi
movslq -0x94(%rbp), %rsi
callq 0xbba0
movq %rax, -0xa0(%rbp)
movq -0xa0(%rbp), %rdi
callq 0x6680
movq %rax, -0xa8(%rbp)
movq -0xa0(%rbp), %rdi
callq 0x66b0
movq %rax, -0xb0(%rbp)
leaq -0xa8(%rbp), %rdi
leaq -0xb0(%rbp), %rsi
callq 0xbbc0
testb $0x1, %al
jne 0x3cd36
jmp 0x3cfc2
leaq -0xa8(%rbp), %rdi
callq 0xbc00
movl (%rax), %eax
movl %eax, -0xb4(%rbp)
movslq -0xb4(%rbp), %rcx
leaq 0x5f6398(%rip), %rax    # 0x6330f0
cmpl $0x0, (%rax,%rcx,4)
jne 0x3cfaf
leaq -0xd0(%rbp), %rdi
movq %rdi, -0x280(%rbp)
callq 0xdf40
movq -0x280(%rbp), %rdx
movq -0x10(%rbp), %rdi
movl -0xb4(%rbp), %esi
callq 0x3ca30
jmp 0x3cd8d
leaq -0xd0(%rbp), %rdi
callq 0x59a0
cmpq $0x0, %rax
jbe 0x3cda1
jmp 0x3cde3
leaq 0x1de3c(%rip), %rdi     # 0x5abe4
leaq 0x1d8c7(%rip), %rsi     # 0x5a676
movl $0x1a7, %edx            # imm = 0x1A7
leaq 0x1de37(%rip), %rcx     # 0x5abf2
callq 0x31a0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xd8(%rbp)
movl %eax, -0xdc(%rbp)
leaq -0xd0(%rbp), %rdi
callq 0x6d30
jmp 0x3d625
leaq -0xd0(%rbp), %rax
movq %rax, -0xe8(%rbp)
movq -0xe8(%rbp), %rdi
callq 0xe060
movq %rax, -0xf0(%rbp)
movq -0xe8(%rbp), %rdi
callq 0xe090
movq %rax, -0xf8(%rbp)
leaq -0xf0(%rbp), %rdi
leaq -0xf8(%rbp), %rsi
callq 0xe0c0
testb $0x1, %al
jne 0x3ce30
jmp 0x3ce67
leaq -0xf0(%rbp), %rdi
callq 0xe100
movl (%rax), %eax
movl %eax, -0xfc(%rbp)
movslq -0xfc(%rbp), %rcx
leaq 0x5f629e(%rip), %rax    # 0x6330f0
movl $0x2, (%rax,%rcx,4)
leaq -0xf0(%rbp), %rdi
callq 0xe120
jmp 0x3ce17
leaq -0xd0(%rbp), %rdi
movq %rdi, -0x288(%rbp)
callq 0xe060
movq -0x288(%rbp), %rdi
movq %rax, -0x108(%rbp)
callq 0xe090
movq %rax, -0x110(%rbp)
movq -0x108(%rbp), %rdi
movq -0x110(%rbp), %rsi
callq 0x176e0
jmp 0x3cea9
leaq -0x50(%rbp), %rdi
leaq -0xd0(%rbp), %rsi
callq 0x43570
movq %rax, -0x290(%rbp)
jmp 0x3cec2
movq -0x290(%rbp), %rax
cmpq $0x0, %rax
jne 0x3cf87
leaq -0x50(%rbp), %rdi
leaq -0xd0(%rbp), %rsi
callq 0x435d0
movb %dl, -0x299(%rbp)
movq %rax, -0x298(%rbp)
jmp 0x3cef2
movq -0x278(%rbp), %rdi
movb -0x299(%rbp), %al
movq -0x298(%rbp), %rcx
movq %rcx, -0x120(%rbp)
movb %al, -0x118(%rbp)
leaq -0xd0(%rbp), %rsi
callq 0x17bb0
jmp 0x3cf21
cmpq $-0x1, -0x18(%rbp)
je 0x3cf85
movq -0x278(%rbp), %rdi
callq 0x5e80
cmpq -0x18(%rbp), %rax
jl 0x3cf85
movq -0x278(%rbp), %rdi
callq 0x58e0
movq -0x278(%rbp), %rdi
movq %rax, -0x128(%rbp)
callq 0x5910
movq %rax, -0x130(%rbp)
movq -0x128(%rbp), %rdi
movq -0x130(%rbp), %rsi
callq 0x17c20
jmp 0x3cf75
movb $0x1, -0x19(%rbp)
movl $0x1, -0x134(%rbp)
jmp 0x3cf91
jmp 0x3cf87
movl $0x0, -0x134(%rbp)
leaq -0xd0(%rbp), %rdi
callq 0x6d30
movl -0x134(%rbp), %eax
testl %eax, %eax
jne 0x3d614
jmp 0x3cfad
jmp 0x3cfaf
jmp 0x3cfb1
leaq -0xa8(%rbp), %rdi
callq 0xbc80
jmp 0x3cd1a
jmp 0x3cfc4
leaq -0x88(%rbp), %rdi
callq 0xbc80
jmp 0x3cca9
jmp 0x3cfd7
movl -0x54(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x54(%rbp)
jmp 0x3cb91
movl $0x0, -0x138(%rbp)
movq -0x278(%rbp), %rdi
movl -0x138(%rbp), %eax
movl %eax, -0x2a0(%rbp)
callq 0x5e80
movq %rax, %rcx
movl -0x2a0(%rbp), %eax
cmpl %ecx, %eax
jge 0x3d5cb
movq -0x278(%rbp), %rdi
movslq -0x138(%rbp), %rsi
callq 0x178a0
movq %rax, %rsi
leaq -0x150(%rbp), %rdi
callq 0x6490
jmp 0x3d03c
leaq -0x150(%rbp), %rax
movq %rax, -0x158(%rbp)
movq -0x158(%rbp), %rdi
callq 0xe060
movq %rax, -0x160(%rbp)
movq -0x158(%rbp), %rdi
callq 0xe090
movq %rax, -0x168(%rbp)
leaq -0x160(%rbp), %rdi
leaq -0x168(%rbp), %rsi
callq 0xe0c0
testb $0x1, %al
jne 0x3d08c
jmp 0x3d593
leaq -0x160(%rbp), %rdi
callq 0xe100
movl (%rax), %eax
movl %eax, -0x16c(%rbp)
movl $0x0, -0x170(%rbp)
movl -0x170(%rbp), %eax
movq -0x10(%rbp), %rcx
cmpl 0x50(%rcx), %eax
jge 0x3d0f6
movslq -0x170(%rbp), %rcx
leaq 0x5f6029(%rip), %rax    # 0x6330f0
movl $0x0, (%rax,%rcx,4)
movl -0x170(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x170(%rbp)
jmp 0x3d0aa
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xd8(%rbp)
movl %eax, -0xdc(%rbp)
jmp 0x3d625
leaq -0x150(%rbp), %rax
movq %rax, -0x178(%rbp)
movq -0x178(%rbp), %rdi
callq 0xe060
movq %rax, -0x180(%rbp)
movq -0x178(%rbp), %rdi
callq 0xe090
movq %rax, -0x188(%rbp)
leaq -0x180(%rbp), %rdi
leaq -0x188(%rbp), %rsi
callq 0xe0c0
testb $0x1, %al
jne 0x3d143
jmp 0x3d17a
leaq -0x180(%rbp), %rdi
callq 0xe100
movl (%rax), %eax
movl %eax, -0x18c(%rbp)
movslq -0x18c(%rbp), %rcx
leaq 0x5f5f8b(%rip), %rax    # 0x6330f0
movl $0x2, (%rax,%rcx,4)
leaq -0x180(%rbp), %rdi
callq 0xe120
jmp 0x3d12a
movq -0x10(%rbp), %rdi
addq $0x38, %rdi
movslq -0x16c(%rbp), %rsi
callq 0xbba0
movq %rax, -0x198(%rbp)
movq -0x198(%rbp), %rdi
callq 0x6680
movq %rax, -0x1a0(%rbp)
movq -0x198(%rbp), %rdi
callq 0x66b0
movq %rax, -0x1a8(%rbp)
leaq -0x1a0(%rbp), %rdi
leaq -0x1a8(%rbp), %rsi
callq 0xbbc0
testb $0x1, %al
jne 0x3d1d4
jmp 0x3d20b
leaq -0x1a0(%rbp), %rdi
callq 0xbc00
movl (%rax), %eax
movl %eax, -0x1ac(%rbp)
movslq -0x1ac(%rbp), %rcx
leaq 0x5f5efa(%rip), %rax    # 0x6330f0
movl $0x2, (%rax,%rcx,4)
leaq -0x1a0(%rbp), %rdi
callq 0xbc80
jmp 0x3d1bb
movq -0x10(%rbp), %rdi
addq $0x38, %rdi
movslq -0x16c(%rbp), %rsi
callq 0xbba0
movq %rax, -0x1b8(%rbp)
movq -0x1b8(%rbp), %rdi
callq 0x6680
movq %rax, -0x1c0(%rbp)
movq -0x1b8(%rbp), %rdi
callq 0x66b0
movq %rax, -0x1c8(%rbp)
leaq -0x1c0(%rbp), %rdi
leaq -0x1c8(%rbp), %rsi
callq 0xbbc0
testb $0x1, %al
jne 0x3d268
jmp 0x3d580
leaq -0x1c0(%rbp), %rdi
callq 0xbc00
movl (%rax), %eax
movl %eax, -0x1cc(%rbp)
movq -0x10(%rbp), %rdi
addq $0x38, %rdi
movslq -0x1cc(%rbp), %rsi
callq 0xbba0
movq %rax, -0x1d8(%rbp)
movq -0x1d8(%rbp), %rdi
callq 0x6680
movq %rax, -0x1e0(%rbp)
movq -0x1d8(%rbp), %rdi
callq 0x66b0
movq %rax, -0x1e8(%rbp)
leaq -0x1e0(%rbp), %rdi
leaq -0x1e8(%rbp), %rsi
callq 0xbbc0
testb $0x1, %al
jne 0x3d2d9
jmp 0x3d56d
leaq -0x1e0(%rbp), %rdi
callq 0xbc00
movl (%rax), %eax
movl %eax, -0x1ec(%rbp)
movslq -0x1ec(%rbp), %rcx
leaq 0x5f5df5(%rip), %rax    # 0x6330f0
cmpl $0x0, (%rax,%rcx,4)
jne 0x3d55a
leaq -0x208(%rbp), %rdi
movq %rdi, -0x2a8(%rbp)
callq 0xdf40
movq -0x2a8(%rbp), %rdx
movq -0x10(%rbp), %rdi
movl -0x1ec(%rbp), %esi
callq 0x3ca30
jmp 0x3d330
leaq -0x208(%rbp), %rdi
callq 0x59a0
cmpq $0x0, %rax
jbe 0x3d344
jmp 0x3d392
leaq 0x1d899(%rip), %rdi     # 0x5abe4
leaq 0x1d324(%rip), %rsi     # 0x5a676
movl $0x1c9, %edx            # imm = 0x1C9
leaq 0x1d894(%rip), %rcx     # 0x5abf2
callq 0x31a0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xd8(%rbp)
movl %eax, -0xdc(%rbp)
leaq -0x208(%rbp), %rdi
callq 0x6d30
leaq -0x150(%rbp), %rdi
callq 0x6d30
jmp 0x3d625
leaq -0x208(%rbp), %rax
movq %rax, -0x210(%rbp)
movq -0x210(%rbp), %rdi
callq 0xe060
movq %rax, -0x218(%rbp)
movq -0x210(%rbp), %rdi
callq 0xe090
movq %rax, -0x220(%rbp)
leaq -0x218(%rbp), %rdi
leaq -0x220(%rbp), %rsi
callq 0xe0c0
testb $0x1, %al
jne 0x3d3df
jmp 0x3d416
leaq -0x218(%rbp), %rdi
callq 0xe100
movl (%rax), %eax
movl %eax, -0x224(%rbp)
movslq -0x224(%rbp), %rcx
leaq 0x5f5cef(%rip), %rax    # 0x6330f0
movl $0x2, (%rax,%rcx,4)
leaq -0x218(%rbp), %rdi
callq 0xe120
jmp 0x3d3c6
leaq -0x208(%rbp), %rdi
movq %rdi, -0x2b0(%rbp)
callq 0xe060
movq -0x2b0(%rbp), %rdi
movq %rax, -0x230(%rbp)
callq 0xe090
movq %rax, -0x238(%rbp)
movq -0x230(%rbp), %rdi
movq -0x238(%rbp), %rsi
callq 0x176e0
jmp 0x3d458
leaq -0x50(%rbp), %rdi
leaq -0x208(%rbp), %rsi
callq 0x43570
movq %rax, -0x2b8(%rbp)
jmp 0x3d471
movq -0x2b8(%rbp), %rax
cmpq $0x0, %rax
jne 0x3d536
leaq -0x50(%rbp), %rdi
leaq -0x208(%rbp), %rsi
callq 0x435d0
movb %dl, -0x2c1(%rbp)
movq %rax, -0x2c0(%rbp)
jmp 0x3d4a1
movq -0x278(%rbp), %rdi
movb -0x2c1(%rbp), %al
movq -0x2c0(%rbp), %rcx
movq %rcx, -0x248(%rbp)
movb %al, -0x240(%rbp)
leaq -0x208(%rbp), %rsi
callq 0x17bb0
jmp 0x3d4d0
cmpq $-0x1, -0x18(%rbp)
je 0x3d534
movq -0x278(%rbp), %rdi
callq 0x5e80
cmpq -0x18(%rbp), %rax
jl 0x3d534
movq -0x278(%rbp), %rdi
callq 0x58e0
movq -0x278(%rbp), %rdi
movq %rax, -0x250(%rbp)
callq 0x5910
movq %rax, -0x258(%rbp)
movq -0x250(%rbp), %rdi
movq -0x258(%rbp), %rsi
callq 0x17c20
jmp 0x3d524
movb $0x1, -0x19(%rbp)
movl $0x1, -0x134(%rbp)
jmp 0x3d540
jmp 0x3d536
movl $0x0, -0x134(%rbp)
leaq -0x208(%rbp), %rdi
callq 0x6d30
movl -0x134(%rbp), %eax
testl %eax, %eax
jne 0x3d59d
jmp 0x3d558
jmp 0x3d55a
jmp 0x3d55c
leaq -0x1e0(%rbp), %rdi
callq 0xbc80
jmp 0x3d2bd
jmp 0x3d56f
leaq -0x1c0(%rbp), %rdi
callq 0xbc80
jmp 0x3d24c
jmp 0x3d582
leaq -0x160(%rbp), %rdi
callq 0xe120
jmp 0x3d070
movl $0x0, -0x134(%rbp)
leaq -0x150(%rbp), %rdi
callq 0x6d30
movl -0x134(%rbp), %eax
testl %eax, %eax
jne 0x3d614
jmp 0x3d5b5
jmp 0x3d5b7
movl -0x138(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x138(%rbp)
jmp 0x3cfef
movq -0x278(%rbp), %rdi
callq 0x58e0
movq -0x278(%rbp), %rdi
movq %rax, -0x260(%rbp)
callq 0x5910
movq %rax, -0x268(%rbp)
movq -0x260(%rbp), %rdi
movq -0x268(%rbp), %rsi
callq 0x17c20
jmp 0x3d606
movb $0x1, -0x19(%rbp)
movl $0x1, -0x134(%rbp)
leaq -0x50(%rbp), %rdi
callq 0x43620
testb $0x1, -0x19(%rbp)
jne 0x3d648
jmp 0x3d63c
leaq -0x50(%rbp), %rdi
callq 0x43620
movq -0x278(%rbp), %rdi
callq 0x5e20
jmp 0x3d658
movq -0x278(%rbp), %rdi
callq 0x5e20
movq -0x270(%rbp), %rax
addq $0x2d0, %rsp            # imm = 0x2D0
popq %rbp
retq
movq -0xd8(%rbp), %rdi
callq 0x3480
nopw %cs:(%rax,%rax)