// File: 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
movq %rsp, %rbp
subq $0x60, %rsp
movl %edi, -0x4(%rbp)
movl %esi, -0x8(%rbp)
movl -0x4(%rbp), %eax
cmpl -0x8(%rbp), %eax
jne 0x4b569
leaq 0x64975f(%rip), %rdi    # 0x694bd0
callq 0x59a0
cmpl 0xba0aa0(%rip), %eax    # 0xbebf1c
jg 0x4b480
jmp 0x4b49f
leaq 0xfcf0(%rip), %rdi      # 0x5b177
leaq 0xfcb3(%rip), %rsi      # 0x5b141
movl $0x3f, %edx
leaq 0xfcfa(%rip), %rcx      # 0x5b194
callq 0x31a0
leaq 0x64972a(%rip), %rdi    # 0x694bd0
callq 0x59a0
movl %eax, 0xba0a6b(%rip)    # 0xbebf1c
leaq 0x649730(%rip), %rdi    # 0x694be8
callq 0x59a0
cmpq $0x0, %rax
jne 0x4b4d8
leaq 0x64971e(%rip), %rdi    # 0x694be8
leaq 0x6496ff(%rip), %rsi    # 0x694bd0
callq 0x42f30
jmp 0x4b531
leaq 0x6496f1(%rip), %rdi    # 0x694bd0
callq 0x59a0
movl %eax, -0x50(%rbp)
leaq 0x6496fa(%rip), %rdi    # 0x694be8
callq 0x59a0
movq %rax, %rcx
movl -0x50(%rbp), %eax
cmpl %ecx, %eax
jge 0x4b4ff
jmp 0x4b51e
leaq 0xfcaa(%rip), %rdi      # 0x5b1b0
leaq 0xfc34(%rip), %rsi      # 0x5b141
movl $0x45, %edx
leaq 0xfc7b(%rip), %rcx      # 0x5b194
callq 0x31a0
leaq 0x6496c3(%rip), %rdi    # 0x694be8
leaq 0x6496a4(%rip), %rsi    # 0x694bd0
callq 0x42f30
leaq 0x6496b0(%rip), %rdi    # 0x694be8
callq 0x59a0
cmpq $0x0, %rax
jbe 0x4b545
jmp 0x4b564
leaq 0xfc85(%rip), %rdi      # 0x5b1d1
leaq 0xfbee(%rip), %rsi      # 0x5b141
movl $0x48, %edx
leaq 0xfc35(%rip), %rcx      # 0x5b194
callq 0x31a0
jmp 0x4b7b5
movb $0x0, -0x9(%rbp)
movslq -0x4(%rbp), %rcx
leaq 0x7d0098(%rip), %rax    # 0x81b610
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rdi
callq 0xe060
movq %rax, -0x20(%rbp)
movq -0x18(%rbp), %rdi
callq 0xe090
movq %rax, -0x28(%rbp)
leaq -0x20(%rbp), %rdi
leaq -0x28(%rbp), %rsi
callq 0xe0c0
testb $0x1, %al
jne 0x4b5b0
jmp 0x4b5e2
leaq -0x20(%rbp), %rdi
callq 0xe100
movl (%rax), %eax
movl %eax, -0x2c(%rbp)
movslq -0x2c(%rbp), %rcx
leaq 0x649647(%rip), %rax    # 0x694c10
cmpl $0x0, (%rax,%rcx,4)
je 0x4b5d5
movb $0x1, -0x9(%rbp)
jmp 0x4b5e2
jmp 0x4b5d7
leaq -0x20(%rbp), %rdi
callq 0xe120
jmp 0x4b59d
testb $0x1, -0x9(%rbp)
jne 0x4b7a7
movl 0xba091e(%rip), %eax    # 0xbebf10
movl %eax, -0x30(%rbp)
movslq -0x4(%rbp), %rcx
leaq 0x7d0010(%rip), %rax    # 0x81b610
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
movq %rax, -0x38(%rbp)
movq -0x38(%rbp), %rdi
callq 0xe060
movq %rax, -0x40(%rbp)
movq -0x38(%rbp), %rdi
callq 0xe090
movq %rax, -0x48(%rbp)
leaq -0x40(%rbp), %rdi
leaq -0x48(%rbp), %rsi
callq 0xe0c0
testb $0x1, %al
jne 0x4b63b
jmp 0x4b762
leaq -0x40(%rbp), %rdi
callq 0xe100
movl (%rax), %eax
movl %eax, -0x4c(%rbp)
leaq 0x649580(%rip), %rdi    # 0x694bd0
callq 0x59a0
addl $0x1, %eax
cmpl 0xba08be(%rip), %eax    # 0xbebf1c
jle 0x4b665
jmp 0x4b762
leaq 0x649564(%rip), %rdi    # 0x694bd0
callq 0x59a0
addl $0x1, %eax
movl %eax, -0x54(%rbp)
leaq 0x64956a(%rip), %rdi    # 0x694be8
callq 0x59a0
movq %rax, %rcx
movl -0x54(%rbp), %eax
cmpl %ecx, %eax
jne 0x4b692
jmp 0x4b762
leaq 0x64954f(%rip), %rdi    # 0x694be8
callq 0x59a0
cmpq $0x0, %rax
je 0x4b6bd
leaq 0x64953d(%rip), %rdi    # 0x694be8
callq 0x59a0
cmpl 0xba0862(%rip), %eax    # 0xbebf18
jg 0x4b6bd
jmp 0x4b762
movslq -0x4c(%rbp), %rcx
leaq 0xb3edc8(%rip), %rax    # 0xb8a490
cmpl $0x0, (%rax,%rcx,4)
je 0x4b6d3
jmp 0x4b754
movslq -0x4c(%rbp), %rcx
leaq 0x649532(%rip), %rax    # 0x694c10
movl $0x1, (%rax,%rcx,4)
leaq 0x6494e4(%rip), %rdi    # 0x694bd0
leaq -0x4c(%rbp), %rsi
callq 0xdff0
movl -0x4(%rbp), %edi
addl $0x1, %edi
movl -0x8(%rbp), %esi
callq 0x4b450
movslq -0x4c(%rbp), %rcx
leaq 0x649502(%rip), %rax    # 0x694c10
movl $0x0, (%rax,%rcx,4)
leaq 0x6494b4(%rip), %rdi    # 0x694bd0
callq 0x178c0
movslq -0x4c(%rbp), %rcx
leaq 0xb3ed64(%rip), %rax    # 0xb8a490
movl $0x1, (%rax,%rcx,4)
movl -0x4c(%rbp), %edx
movl 0xba07d4(%rip), %eax    # 0xbebf10
movl %eax, %ecx
addl $0x1, %ecx
movl %ecx, 0xba07c9(%rip)    # 0xbebf10
movslq %eax, %rcx
leaq 0xb6fa7f(%rip), %rax    # 0xbbb1d0
movl %edx, (%rax,%rcx,4)
leaq -0x40(%rbp), %rdi
callq 0xe120
jmp 0x4b625
jmp 0x4b764
movl 0xba07a6(%rip), %eax    # 0xbebf10
cmpl -0x30(%rbp), %eax
jle 0x4b7a5
movl 0xba079b(%rip), %eax    # 0xbebf10
subl $0x1, %eax
movslq %eax, %rcx
leaq 0xb6fa4e(%rip), %rax    # 0xbbb1d0
movslq (%rax,%rcx,4), %rcx
leaq 0xb3ed03(%rip), %rax    # 0xb8a490
movl $0x0, (%rax,%rcx,4)
movl 0xba0776(%rip), %eax    # 0xbebf10
addl $-0x1, %eax
movl %eax, 0xba076d(%rip)    # 0xbebf10
jmp 0x4b764
jmp 0x4b7b5
movl -0x4(%rbp), %edi
addl $0x1, %edi
movl -0x8(%rbp), %esi
callq 0x4b450
addq $0x60, %rsp
popq %rbp
retq
nopl (%rax,%rax)