// File: Laakeri[P]maxpre/src/preprocessorinterface.cpp
// Function: maxPreprocessor::PreprocessorInterface::addClause(std::vector<int, std::allocator<int>>)
bool PreprocessorInterface::addClause(std::vector<int> clause) {
		if (!inProcessMode) return false;
		for (int& lit : clause) {
			assert(lit != 0);
			int tlit = litToPP(lit);
			if (tlit == 0) {
				int nvar = addVar(abs(lit));
				assert(nvar == abs(lit));
				tlit = litToPP(lit);
				assert(lit == litToSolver(tlit));
			}
			tlit = litFromDimacs(tlit);
			lit = tlit;
		}
		sort(clause.begin(), clause.end());
		clause.erase(unique(clause.begin(), clause.end()), clause.end());
		for (int i = 1; i < (int)clause.size(); i++) {
			if (clause[i] == litNegation(clause[i-1])) return true;
		}
		preprocessor.pi.addClause(clause);
		return true;
	}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xb0, %rsp
movq %rsi, -0xa0(%rbp)
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x98(%rbp)
testb $0x1, 0x1850(%rax)
jne 0x787f7
movb $0x0, -0x1(%rbp)
jmp 0x78ab3
movq -0xa0(%rbp), %rax
movq %rax, -0x20(%rbp)
movq -0x20(%rbp), %rdi
callq 0xa800
movq %rax, -0x28(%rbp)
movq -0x20(%rbp), %rdi
callq 0xa830
movq %rax, -0x30(%rbp)
leaq -0x28(%rbp), %rdi
leaq -0x30(%rbp), %rsi
callq 0xa860
testb $0x1, %al
jne 0x78832
jmp 0x7895a
leaq -0x28(%rbp), %rdi
callq 0xa8a0
movq %rax, -0x38(%rbp)
movq -0x38(%rbp), %rax
cmpl $0x0, (%rax)
je 0x7884a
jmp 0x78869
leaq 0xf3ca(%rip), %rdi      # 0x87c1b
leaq 0xf3cc(%rip), %rsi      # 0x87c24
movl $0xae, %edx
leaq 0xf5d8(%rip), %rcx      # 0x87e3c
callq 0x4260
movq -0x98(%rbp), %rdi
movq -0x38(%rbp), %rax
movl (%rax), %esi
callq 0x77fd0
movl %eax, -0x3c(%rbp)
cmpl $0x0, -0x3c(%rbp)
jne 0x78938
movq -0x98(%rbp), %rdi
movq -0x38(%rbp), %rax
movl (%rax), %esi
movl %esi, %eax
negl %eax
cmovnsl %eax, %esi
callq 0x781a0
movl %eax, -0x40(%rbp)
movl -0x40(%rbp), %eax
movq -0x38(%rbp), %rcx
movl (%rcx), %ecx
movl %ecx, %edx
negl %edx
cmovnsl %edx, %ecx
cmpl %ecx, %eax
jne 0x788ba
jmp 0x788d9
leaq 0xf5c4(%rip), %rdi      # 0x87e85
leaq 0xf35c(%rip), %rsi      # 0x87c24
movl $0xb2, %edx
leaq 0xf568(%rip), %rcx      # 0x87e3c
callq 0x4260
movq -0x98(%rbp), %rdi
movq -0x38(%rbp), %rax
movl (%rax), %esi
callq 0x77fd0
movq -0x98(%rbp), %rdi
movl %eax, -0x3c(%rbp)
movq -0x38(%rbp), %rax
movl (%rax), %eax
movl %eax, -0xa4(%rbp)
movl -0x3c(%rbp), %esi
callq 0x77d50
movl %eax, %ecx
movl -0xa4(%rbp), %eax
cmpl %ecx, %eax
jne 0x78917
jmp 0x78936
leaq 0xf578(%rip), %rdi      # 0x87e96
leaq 0xf2ff(%rip), %rsi      # 0x87c24
movl $0xb4, %edx
leaq 0xf50b(%rip), %rcx      # 0x87e3c
callq 0x4260
jmp 0x78938
movl -0x3c(%rbp), %edi
callq 0x5eae0
movl %eax, -0x3c(%rbp)
movl -0x3c(%rbp), %ecx
movq -0x38(%rbp), %rax
movl %ecx, (%rax)
leaq -0x28(%rbp), %rdi
callq 0xa930
jmp 0x7881c
movq -0xa0(%rbp), %rdi
callq 0xa800
movq -0xa0(%rbp), %rdi
movq %rax, -0x48(%rbp)
callq 0xa830
movq %rax, -0x50(%rbp)
movq -0x48(%rbp), %rdi
movq -0x50(%rbp), %rsi
callq 0x3e130
movq -0xa0(%rbp), %rdi
callq 0xa800
movq -0xa0(%rbp), %rdi
movq %rax, -0x68(%rbp)
callq 0xa830
movq %rax, -0x70(%rbp)
movq -0x68(%rbp), %rdi
movq -0x70(%rbp), %rsi
callq 0x3e5a0
movq %rax, -0x60(%rbp)
leaq -0x58(%rbp), %rdi
leaq -0x60(%rbp), %rsi
callq 0x3e5e0
movq -0xa0(%rbp), %rdi
callq 0xa830
movq %rax, -0x80(%rbp)
leaq -0x78(%rbp), %rdi
leaq -0x80(%rbp), %rsi
callq 0x3e5e0
movq -0xa0(%rbp), %rdi
movq -0x58(%rbp), %rsi
movq -0x78(%rbp), %rdx
callq 0x3e510
movq %rax, -0x88(%rbp)
movl $0x1, -0x8c(%rbp)
movq -0xa0(%rbp), %rdi
movl -0x8c(%rbp), %eax
movl %eax, -0xa8(%rbp)
callq 0xf940
movq %rax, %rcx
movl -0xa8(%rbp), %eax
cmpl %ecx, %eax
jge 0x78a8e
movq -0xa0(%rbp), %rdi
movslq -0x8c(%rbp), %rsi
callq 0xa7c0
movq -0xa0(%rbp), %rdi
movl (%rax), %eax
movl %eax, -0xac(%rbp)
movl -0x8c(%rbp), %eax
subl $0x1, %eax
movslq %eax, %rsi
callq 0xa7c0
movl (%rax), %edi
callq 0x3c5a0
movl %eax, %ecx
movl -0xac(%rbp), %eax
cmpl %ecx, %eax
jne 0x78a78
movb $0x1, -0x1(%rbp)
jmp 0x78ab3
jmp 0x78a7a
movl -0x8c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x8c(%rbp)
jmp 0x78a07
movq -0xa0(%rbp), %rsi
movq -0x98(%rbp), %rdi
addq $0x8, %rdi
movabsq $-0x8000000000000000, %rdx # imm = 0x8000000000000000
callq 0x5f880
movb $0x1, -0x1(%rbp)
movb -0x1(%rbp), %al
andb $0x1, %al
addq $0xb0, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)