// File: /workspace/github_cpp_makefile_star2_O3/Laakeri[P]maxpre/src/preprocessorinterface.cpp
// Function: maxPreprocessor::PreprocessorInterface::PreprocessorInterface(std::vector<std::vector<int, std::allocator<int>>, std::allocator<std::vector<int, std::allocator<int>>>> const&, std::vector<unsigned long, std::allocator<unsigned long>> const&, unsigned long, bool)
PreprocessorInterface::PreprocessorInterface(const vector<vector<int> >& clauses, const vector<uint64_t>& weights, uint64_t topWeight_, bool inProcessMode_) 
	: preprocessor(clauses, weights, topWeight_), topWeight(topWeight_), inProcessMode(inProcessMode_) {
		variables = 0;
		originalVariables = 0;
		for (auto& clause : clauses) {
			for (int lit : clause) {
				assert(lit != 0);
				variables = max(variables, abs(lit));
			}
		}
		originalVariables = variables;
		preprocessed = false;
		useBVEGateExtraction = false;
		useLabelMatching = false;
		skipTechnique = 0;
    BVEsortMaxFirst = false;
    BVElocalGrow = 0;
    BVEglobalGrow = 0;

		if (inProcessMode) {
			PPVarToSolverVar.resize(variables);
			solverVarToPPVar.resize(variables);
			for (auto& clause : clauses) {
				for (int lit : clause) {
					PPVarToSolverVar[abs(lit)-1] = abs(lit);
					solverVarToPPVar[abs(lit)-1] = abs(lit);
				}
			}
		}
	}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
movl %r8d, %ebp
movq %rcx, %r12
movq %rsi, %r15
movq %rdi, %r14
leaq 0x8(%rdi), %rbx
movq %rbx, %rdi
callq 0x9d24
xorl %eax, %eax
movq %rax, 0x1840(%r14)
xorps %xmm0, %xmm0
movups %xmm0, 0x1830(%r14)
movups %xmm0, 0x1820(%r14)
movups %xmm0, 0x1810(%r14)
movups %xmm0, 0x1800(%r14)
movq %r12, 0x1848(%r14)
movb %bpl, 0x1850(%r14)
movq %rax, (%r14)
movups %xmm0, 0x1868(%r14)
movups %xmm0, 0x1878(%r14)
movups %xmm0, 0x1888(%r14)
movq (%r15), %rcx
movq 0x8(%r15), %rdx
cmpq %rdx, %rcx
je 0x30cf5
xorl %eax, %eax
movq (%rcx), %rsi
movq 0x8(%rcx), %rdi
cmpq %rdi, %rsi
je 0x30cec
movl (%rsi), %r8d
testl %r8d, %r8d
je 0x30d90
movl %r8d, %r9d
negl %r9d
cmovsl %r8d, %r9d
cmpl %r9d, %eax
cmovlel %r9d, %eax
movl %eax, (%r14)
addq $0x4, %rsi
jmp 0x30cc1
addq $0x18, %rcx
cmpq %rdx, %rcx
jne 0x30cba
movl %eax, 0x4(%r14)
xorl %ecx, %ecx
movq %rcx, 0x185c(%r14)
movq %rcx, 0x1851(%r14)
testb %bpl, %bpl
je 0x30d81
leaq 0x1800(%r14), %r13
leaq 0x1868(%r14), %r12
leaq 0x1880(%r14), %rbp
movl %eax, %esi
movq %rbp, %rdi
callq 0x8cac
movslq (%r14), %rsi
movq %r12, %rdi
callq 0x8cac
movq (%r15), %rax
movq 0x8(%r15), %rcx
cmpq %rcx, %rax
je 0x30d81
movq (%rbp), %rdx
movq (%r12), %rsi
movq (%rax), %rdi
movq 0x8(%rax), %r8
cmpq %r8, %rdi
je 0x30d78
movl (%rdi), %r9d
movl %r9d, %r10d
negl %r10d
cmovsl %r9d, %r10d
movslq %r10d, %r9
movl %r9d, -0x4(%rdx,%r9,4)
movl %r9d, -0x4(%rsi,%r9,4)
addq $0x4, %rdi
jmp 0x30d53
addq $0x18, %rax
cmpq %rcx, %rax
jne 0x30d4c
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x8fc3(%rip), %rdi      # 0x39d5a
leaq 0x8fc5(%rip), %rsi      # 0x39d63
leaq 0x8fd8(%rip), %rcx      # 0x39d7d
movl $0x17, %edx
callq 0x31b0
movq %rax, %r15
movq (%rbp), %rdi
testq %rdi, %rdi
je 0x30dca
movq 0x1890(%r14), %rsi
subq %rdi, %rsi
callq 0x32b0
movq %r12, %rdi
movq %r14, %rsi
callq 0x3808
movq %r13, %rdi
callq 0x1f540
movq %rbx, %rdi
callq 0x8fb2
movq %r15, %rdi
callq 0x34a0
nop