// File: /workspace/github_cpp_makefile_star2_O2/Laakeri[P]Triangulator/src/setcover.cpp
// Function: SetCover::go(int, int)
void go(int i, int n) {
	if (i == n) {
		assert((int)cv.size() <= upperBound);
		upperBound = (int)cv.size();
		if (opt.size() == 0) {
			opt = cv;
		}
		else {
			assert((int)cv.size() < (int)opt.size());
			opt = cv;
		}
		assert(opt.size() > 0);
		return;
	}
	bool f = false;
	for (int x : where[i]) {
		if (sel[x]) {
			f = true;
			break;
		}
	}
	if (!f) {
		int ss = tnoS;
		for (int x : where[i]) {
			if ((int)cv.size() + 1 > upperBound) break;
			if ((int)cv.size() + 1 == (int)opt.size()) break;
			if (opt.size() != 0 && (int)opt.size() <= okCover) break;
			if (no[x]) continue;
			sel[x] = 1;
			cv.push_back(x);
			go(i+1, n);
			sel[x] = 0;
			cv.pop_back();
			no[x] = 1;
			tno[tnoS++] = x;
		}
		while (tnoS > ss) {
			no[tno[tnoS - 1]] = 0;
			tnoS--;
		}
	}
	else {
		go(i+1, n);
	}
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x18, %rsp
movslq %edi, %rdi
movl %esi, 0xc(%rsp)
movslq %esi, %rax
leaq 0x7b65b2(%rip), %rcx    # 0x7d1540
leaq 0x62fbab(%rip), %r13    # 0x64ab40
cmpq %rax, %rdi
je 0x1b0c4
imulq $0x18, %rdi, %rdx
movq (%rdx,%rcx), %rbx
movq 0x8(%rdx,%rcx), %r14
movq %rbx, %rdx
cmpq %r14, %rdx
je 0x1afc7
movslq (%rdx), %rsi
addq $0x4, %rdx
cmpl $0x0, (%r13,%rsi,4)
je 0x1afae
incq %rdi
jmp 0x1af95
movl 0xb86e73(%rip), %eax    # 0xba1e40
movslq %eax, %rbp
incl %edi
movq %rdi, 0x10(%rsp)
leaq 0xb253e2(%rip), %r15    # 0xb403c0
leaq 0xb5611b(%rip), %r12    # 0xb71100
cmpq %r14, %rbx
je 0x1b0a3
movslq (%rbx), %rcx
movq 0x62fb10(%rip), %rdx    # 0x64ab08
subq 0x62fb01(%rip), %rdx    # 0x64ab00
movl %ecx, 0x8(%rsp)
shrq $0x2, %rdx
cmpl %edx, 0xb86e3f(%rip)    # 0xba1e4c
jle 0x1b0a3
incl %edx
movq 0x62fb04(%rip), %rdi    # 0x64ab20
movq 0x62faf5(%rip), %r8     # 0x64ab18
movq %rdi, %rsi
subq %r8, %rsi
shrq $0x2, %rsi
cmpl %esi, %edx
je 0x1b0a3
cmpq %r8, %rdi
je 0x1b03e
cmpl %esi, 0xb86e0c(%rip)    # 0xba1e48
jge 0x1b0a3
cmpl $0x0, (%r15,%rcx,4)
jne 0x1b09a
pushq $0x1
popq %rax
movl %eax, (%r13,%rcx,4)
leaq 0x62faac(%rip), %rdi    # 0x64ab00
leaq 0x8(%rsp), %rsi
callq 0x6402
movq 0x10(%rsp), %rdi
movl 0xc(%rsp), %esi
callq 0x1af6f
movslq 0x8(%rsp), %rcx
andl $0x0, (%r13,%rcx,4)
addq $-0x4, 0x62fa89(%rip)   # 0x64ab08
pushq $0x1
popq %rax
movl %eax, (%r15,%rcx,4)
movslq 0xb86db3(%rip), %rdx    # 0xba1e40
leal 0x1(%rdx), %eax
movl %eax, 0xb86daa(%rip)    # 0xba1e40
movl %ecx, (%r12,%rdx,4)
addq $0x4, %rbx
jmp 0x1afe5
cltq
leal -0x1(%rax), %ecx
cmpq %rbp, %rax
jle 0x1b11f
movslq -0x4(%r12,%rax,4), %rdx
andl $0x0, (%r15,%rdx,4)
decq %rax
movl %ecx, 0xb86d80(%rip)    # 0xba1e40
decl %ecx
jmp 0x1b0a8
movq 0x62fa3d(%rip), %rax    # 0x64ab08
subq 0x62fa2e(%rip), %rax    # 0x64ab00
shrq $0x2, %rax
cmpl %eax, 0xb86d70(%rip)    # 0xba1e4c
jl 0x1b12e
movl %eax, 0xb86d68(%rip)    # 0xba1e4c
movq 0x62fa35(%rip), %rcx    # 0x64ab20
subq 0x62fa26(%rip), %rcx    # 0x64ab18
je 0x1b0fc
shrq $0x2, %rcx
cmpl %ecx, %eax
jge 0x1b160
leaq 0x62fa15(%rip), %rdi    # 0x64ab18
leaq 0x62f9f6(%rip), %rsi    # 0x64ab00
callq 0x193e8
movq 0x62fa0a(%rip), %rax    # 0x64ab20
cmpq 0x62f9fb(%rip), %rax    # 0x64ab18
je 0x1b147
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x7092(%rip), %rdi      # 0x221c7
leaq 0x7055(%rip), %rsi      # 0x22191
leaq 0x70a1(%rip), %rcx      # 0x221e4
pushq $0x3f
jmp 0x1b177
leaq 0x70d3(%rip), %rdi      # 0x22221
leaq 0x703c(%rip), %rsi      # 0x22191
leaq 0x7088(%rip), %rcx      # 0x221e4
pushq $0x48
jmp 0x1b177
leaq 0x7099(%rip), %rdi      # 0x22200
leaq 0x7023(%rip), %rsi      # 0x22191
leaq 0x706f(%rip), %rcx      # 0x221e4
pushq $0x45
popq %rdx
callq 0x2150