// File: kc885[P]SAT-Solver-with-CDCL/cdcl.cpp
// Function: ck_cdcl_solver::Solver::solve()
void solve(){
            
            int decision_level = 1;
            
            std::unordered_set<int> implied;
            if(!unitPropagate(implied, decision_level)){
                unsat = 1;
                return;
            }
                
            int i = 0;
            while(i < variableNumber && val_decisionLevel[sor[i]] != 0)
                i++;
            if(i == variableNumber)
                return;
            
            
            decisionVar[2] = sor[i];
            val_decisionLevel[sor[i]] = -2;
            if(recursion(i+1,2))
                return ;
            
            decisionVar[2] = -sor[i];
            val_decisionLevel[sor[i]] = 2;
            if(recursion(i+1,2))
                return ;
            unsat = 1;
            return;
            
            
        }

// Assembly:
subq $0xb8, %rsp
movq %rdi, 0xb0(%rsp)
movq 0xb0(%rsp), %rax
movq %rax, 0x48(%rsp)
movl $0x1, 0xac(%rsp)
leaq 0x70(%rsp), %rdi
movq %rdi, 0x50(%rsp)
callq 0x38f0
movq 0x48(%rsp), %rdi
movq 0x50(%rsp), %rsi
movl 0xac(%rsp), %edx
callq 0xb060
movb %al, 0x5b(%rsp)
jmp 0x2f02
movb 0x5b(%rsp), %al
testb $0x1, %al
jne 0x2f45
jmp 0x2f0c
movq 0x48(%rsp), %rax
movl $0x1, 0x9c(%rax)
movl $0x1, 0x60(%rsp)
jmp 0x3120
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x68(%rsp)
movl %eax, 0x64(%rsp)
leaq 0x70(%rsp), %rdi
callq 0x3b60
jmp 0x3132
movl $0x0, 0x5c(%rsp)
movq 0x48(%rsp), %rdx
movl 0x5c(%rsp), %ecx
xorl %eax, %eax
cmpl 0x98(%rdx), %ecx
movb %al, 0x47(%rsp)
jge 0x2f9d
movq 0x48(%rsp), %rdi
movq %rdi, %rax
addq $0x50, %rax
movq %rax, 0x38(%rsp)
addq $0x80, %rdi
movslq 0x5c(%rsp), %rsi
callq 0xb970
movq 0x38(%rsp), %rdi
movslq (%rax), %rsi
callq 0xb970
cmpl $0x0, (%rax)
setne %al
movb %al, 0x47(%rsp)
movb 0x47(%rsp), %al
testb $0x1, %al
jne 0x2fa7
jmp 0x2fb4
movl 0x5c(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x5c(%rsp)
jmp 0x2f4d
movq 0x48(%rsp), %rcx
movl 0x5c(%rsp), %eax
cmpl 0x98(%rcx), %eax
jne 0x2fd2
movl $0x1, 0x60(%rsp)
jmp 0x3120
movq 0x48(%rsp), %rdi
subq $-0x80, %rdi
movq %rdi, 0x20(%rsp)
movslq 0x5c(%rsp), %rsi
callq 0xb970
movq 0x48(%rsp), %rdi
movl (%rax), %eax
movl %eax, 0x1c(%rsp)
addq $0x68, %rdi
movl $0x2, %esi
callq 0xb970
movl 0x1c(%rsp), %edx
movq 0x20(%rsp), %rdi
movq %rax, %rcx
movq 0x48(%rsp), %rax
movl %edx, (%rcx)
addq $0x50, %rax
movq %rax, 0x28(%rsp)
movslq 0x5c(%rsp), %rsi
callq 0xb970
movq 0x28(%rsp), %rdi
movslq (%rax), %rsi
callq 0xb970
movq 0x48(%rsp), %rdi
movl $0xfffffffe, (%rax)     # imm = 0xFFFFFFFE
movl 0x5c(%rsp), %esi
incl %esi
movl $0x2, %edx
callq 0xb990
movb %al, 0x37(%rsp)
jmp 0x3057
movb 0x37(%rsp), %al
testb $0x1, %al
jne 0x3061
jmp 0x306e
movl $0x1, 0x60(%rsp)
jmp 0x3120
movq 0x48(%rsp), %rdi
subq $-0x80, %rdi
movq %rdi, 0x8(%rsp)
movslq 0x5c(%rsp), %rsi
callq 0xb970
movq 0x48(%rsp), %rdi
movl (%rax), %eax
negl %eax
movl %eax, 0x4(%rsp)
addq $0x68, %rdi
movl $0x2, %esi
callq 0xb970
movl 0x4(%rsp), %edx
movq 0x8(%rsp), %rdi
movq %rax, %rcx
movq 0x48(%rsp), %rax
movl %edx, (%rcx)
addq $0x50, %rax
movq %rax, 0x10(%rsp)
movslq 0x5c(%rsp), %rsi
callq 0xb970
movq 0x10(%rsp), %rdi
movslq (%rax), %rsi
callq 0xb970
movq 0x48(%rsp), %rdi
movl $0x2, (%rax)
movl 0x5c(%rsp), %esi
incl %esi
movl $0x2, %edx
callq 0xb990
movb %al, 0x1b(%rsp)
jmp 0x30f5
movb 0x1b(%rsp), %al
testb $0x1, %al
jne 0x30ff
jmp 0x3109
movl $0x1, 0x60(%rsp)
jmp 0x3120
movq 0x48(%rsp), %rax
movl $0x1, 0x9c(%rax)
movl $0x1, 0x60(%rsp)
leaq 0x70(%rsp), %rdi
callq 0x3b60
addq $0xb8, %rsp
retq
movq 0x68(%rsp), %rdi
callq 0x22d0
nopl (%rax)