// File: Laakeri[P]maxpre/src/./LS.cpp
// Function: maxPreprocessor::Preprocessor::tryLSBCE(int, std::unordered_set<int, std::hash<int>, std::equal_to<int>, std::allocator<int>>&, std::unordered_set<int, std::hash<int>, std::equal_to<int>, std::allocator<int>>&, std::vector<std::pair<int, int>, std::allocator<std::pair<int, int>>>&)
void Preprocessor::tryLSBCE(int lit, unordered_set<int>& deletedClauses, unordered_set<int>& touchedList, vector<pair<int, int> >& blockedClauses) {
	for (int c1i : pi.litClauses[lit]) {
		if (deletedClauses.count(c1i)) continue;
		const vector<int>& c1 = pi.clauses[c1i].lit;
		bool f = false;
		for (int c2i : pi.litClauses[litNegation(lit)]) {
			if (deletedClauses.count(c2i)) continue;
			const vector<int>& c2 = pi.clauses[c2i].lit;
			bool ff = false;
			for (int c1l : c1) {
				for (int c2l : c2) {
					if (litNegation(c1l) == c2l && c1l != lit) {
						ff = true;
						break;
					}
				}
				if (ff) break;
			}
			if (!ff) {
				f = true;
				break;
			}
		}
		if (!f) {
			deletedClauses.insert(c1i);
			blockedClauses.push_back({c1i, lit});
			for (int l : c1) {
				touchedList.insert(litVariable(l));
			}
		}
	}
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x130, %rsp            # imm = 0x130
movq %rdi, -0x8(%rbp)
movl %esi, -0xc(%rbp)
movq %rdx, -0x18(%rbp)
movq %rcx, -0x20(%rbp)
movq %r8, -0x28(%rbp)
movq -0x8(%rbp), %rdi
movq %rdi, -0x118(%rbp)
addq $0x18, %rdi
movslq -0xc(%rbp), %rsi
callq 0xaab0
movq %rax, -0x30(%rbp)
movq -0x30(%rbp), %rdi
callq 0xa800
movq %rax, -0x38(%rbp)
movq -0x30(%rbp), %rdi
callq 0xa830
movq %rax, -0x40(%rbp)
leaq -0x38(%rbp), %rdi
leaq -0x40(%rbp), %rsi
callq 0xa860
testb $0x1, %al
jne 0x2cb7a
jmp 0x2ce9c
leaq -0x38(%rbp), %rdi
callq 0xa8a0
movl (%rax), %eax
movl %eax, -0x44(%rbp)
movq -0x18(%rbp), %rdi
leaq -0x44(%rbp), %rsi
callq 0x3f370
cmpq $0x0, %rax
je 0x2cba0
jmp 0x2ce8e
movq -0x118(%rbp), %rdi
movslq -0x44(%rbp), %rsi
callq 0x3c600
movq %rax, %rcx
movq -0x118(%rbp), %rax
movq %rcx, -0x50(%rbp)
movb $0x0, -0x51(%rbp)
addq $0x18, %rax
movq %rax, -0x120(%rbp)
movl -0xc(%rbp), %edi
callq 0x3c5a0
movq -0x120(%rbp), %rdi
movslq %eax, %rsi
callq 0xaab0
movq %rax, -0x60(%rbp)
movq -0x60(%rbp), %rdi
callq 0xa800
movq %rax, -0x68(%rbp)
movq -0x60(%rbp), %rdi
callq 0xa830
movq %rax, -0x70(%rbp)
leaq -0x68(%rbp), %rdi
leaq -0x70(%rbp), %rsi
callq 0xa860
testb $0x1, %al
jne 0x2cc18
jmp 0x2cd8c
leaq -0x68(%rbp), %rdi
callq 0xa8a0
movl (%rax), %eax
movl %eax, -0x74(%rbp)
movq -0x18(%rbp), %rdi
leaq -0x74(%rbp), %rsi
callq 0x3f370
cmpq $0x0, %rax
je 0x2cc3e
jmp 0x2cd7e
movq -0x118(%rbp), %rdi
movslq -0x74(%rbp), %rsi
callq 0x3c600
movq %rax, -0x80(%rbp)
movb $0x0, -0x81(%rbp)
movq -0x50(%rbp), %rax
movq %rax, -0x90(%rbp)
movq -0x90(%rbp), %rdi
callq 0x3d080
movq %rax, -0x98(%rbp)
movq -0x90(%rbp), %rdi
callq 0x3d0b0
movq %rax, -0xa0(%rbp)
leaq -0x98(%rbp), %rdi
leaq -0xa0(%rbp), %rsi
callq 0x3d0e0
testb $0x1, %al
jne 0x2cca6
jmp 0x2cd6d
leaq -0x98(%rbp), %rdi
callq 0x3d120
movl (%rax), %eax
movl %eax, -0xa4(%rbp)
movq -0x80(%rbp), %rax
movq %rax, -0xb0(%rbp)
movq -0xb0(%rbp), %rdi
callq 0x3d080
movq %rax, -0xb8(%rbp)
movq -0xb0(%rbp), %rdi
callq 0x3d0b0
movq %rax, -0xc0(%rbp)
leaq -0xb8(%rbp), %rdi
leaq -0xc0(%rbp), %rsi
callq 0x3d0e0
testb $0x1, %al
jne 0x2cd04
jmp 0x2cd4f
leaq -0xb8(%rbp), %rdi
callq 0x3d120
movl (%rax), %eax
movl %eax, -0xc4(%rbp)
movl -0xa4(%rbp), %edi
callq 0x3c5a0
cmpl -0xc4(%rbp), %eax
jne 0x2cd3f
movl -0xa4(%rbp), %eax
cmpl -0xc(%rbp), %eax
je 0x2cd3f
movb $0x1, -0x81(%rbp)
jmp 0x2cd4f
jmp 0x2cd41
leaq -0xb8(%rbp), %rdi
callq 0x3d160
jmp 0x2cceb
testb $0x1, -0x81(%rbp)
je 0x2cd5a
jmp 0x2cd6d
jmp 0x2cd5c
leaq -0x98(%rbp), %rdi
callq 0x3d160
jmp 0x2cc8a
testb $0x1, -0x81(%rbp)
jne 0x2cd7c
movb $0x1, -0x51(%rbp)
jmp 0x2cd8c
jmp 0x2cd7e
leaq -0x68(%rbp), %rdi
callq 0xa930
jmp 0x2cc02
testb $0x1, -0x51(%rbp)
jne 0x2ce8c
movq -0x18(%rbp), %rdi
leaq -0x44(%rbp), %rsi
callq 0x3f3a0
movq %rax, -0xd8(%rbp)
movb %dl, -0xd0(%rbp)
movq -0x28(%rbp), %rax
movq %rax, -0x128(%rbp)
leaq -0xe0(%rbp), %rdi
leaq -0x44(%rbp), %rsi
leaq -0xc(%rbp), %rdx
callq 0x3d7c0
movq -0x128(%rbp), %rdi
leaq -0xe0(%rbp), %rsi
callq 0x3eac0
movq -0x50(%rbp), %rax
movq %rax, -0xe8(%rbp)
movq -0xe8(%rbp), %rdi
callq 0x3d080
movq %rax, -0xf0(%rbp)
movq -0xe8(%rbp), %rdi
callq 0x3d0b0
movq %rax, -0xf8(%rbp)
leaq -0xf0(%rbp), %rdi
leaq -0xf8(%rbp), %rsi
callq 0x3d0e0
testb $0x1, %al
jne 0x2ce2c
jmp 0x2ce8a
leaq -0xf0(%rbp), %rdi
callq 0x3d120
movl (%rax), %eax
movl %eax, -0xfc(%rbp)
movq -0x20(%rbp), %rax
movq %rax, -0x130(%rbp)
movl -0xfc(%rbp), %edi
callq 0x3c880
movq -0x130(%rbp), %rdi
movl %eax, -0x100(%rbp)
leaq -0x100(%rbp), %rsi
callq 0x3f400
movq %rax, -0x110(%rbp)
movb %dl, -0x108(%rbp)
leaq -0xf0(%rbp), %rdi
callq 0x3d160
jmp 0x2ce13
jmp 0x2ce8c
jmp 0x2ce8e
leaq -0x38(%rbp), %rdi
callq 0xa930
jmp 0x2cb64
addq $0x130, %rsp            # imm = 0x130
popq %rbp
retq
nopw %cs:(%rax,%rax)