// File: /workspace/github_cpp_makefile_star2_O2/biotomas[P]ipasir/sat/minisat220/minisat-220/minisat/core/Solver.cc
// Function: Minisat::Solver::search(int)
lbool Solver::search(int nof_conflicts)
{
    assert(ok);
    int         backtrack_level;
    int         conflictC = 0;
    vec<Lit>    learnt_clause;
    starts++;

    for (;;){
        CRef confl = propagate();
        if (confl != CRef_Undef){
            // CONFLICT
            conflicts++; conflictC++;
            if (decisionLevel() == 0) return l_False;

            learnt_clause.clear();
            analyze(confl, learnt_clause, backtrack_level);
            cancelUntil(backtrack_level);
            

            if (learnCallback != 0 && learnt_clause.size() <= learnCallbackLimit) {
              for (int i = 0; i < learnt_clause.size(); i++) {
                Lit lit = learnt_clause[i];
                learnCallbackBuffer[i] = sign(lit) ? -(var(lit)+1) : (var(lit)+1);
              }
              learnCallbackBuffer[learnt_clause.size()] = 0;
              learnCallback(learnCallbackState, learnCallbackBuffer);
            }

            if (learnt_clause.size() == 1){
                uncheckedEnqueue(learnt_clause[0]);
            }else{
                CRef cr = ca.alloc(learnt_clause, true);
                learnts.push(cr);
                attachClause(cr);
                claBumpActivity(ca[cr]);
                uncheckedEnqueue(learnt_clause[0], cr);
            }

            varDecayActivity();
            claDecayActivity();

            if (--learntsize_adjust_cnt == 0){
                learntsize_adjust_confl *= learntsize_adjust_inc;
                learntsize_adjust_cnt    = (int)learntsize_adjust_confl;
                max_learnts             *= learntsize_inc;

                if (verbosity >= 1)
                    printf("c [minisat220] | %9d | %7d %8d %8d | %8d %8d %6.0f | %6.3f %% |\n", 
                           (int)conflicts, 
                           (int)dec_vars - (trail_lim.size() == 0 ? trail.size() : trail_lim[0]), nClauses(), (int)clauses_literals, 
                           (int)max_learnts, nLearnts(), (double)learnts_literals/nLearnts(), progressEstimate()*100);
            }

        }else{
            // NO CONFLICT
            if ((nof_conflicts >= 0 && conflictC >= nof_conflicts) || !withinBudget()){
                // Reached bound on number of conflicts:
                progress_estimate = progressEstimate();
                cancelUntil(0);
                return l_Undef; }

            // Simplify the set of problem clauses:
            if (decisionLevel() == 0 && !simplify())
                return l_False;

            if (learnts.size()-nAssigns() >= max_learnts)
                // Reduce the set of learnt clauses:
                reduceDB();

            Lit next = lit_Undef;
            while (decisionLevel() < assumptions.size()){
                // Perform user provided assumption:
                Lit p = assumptions[decisionLevel()];
                if (value(p) == l_True){
                    // Dummy decision level:
                    newDecisionLevel();
                }else if (value(p) == l_False){
                    analyzeFinal(~p, conflict);
                    return l_False;
                }else{
                    next = p;
                    break;
                }
            }

            if (next == lit_Undef){
                // New variable decision:
                decisions++;
                next = pickBranchLit();

                if (next == lit_Undef)
                    // Model found:
                    return l_True;
            }

            // Increase decision level and enqueue 'next'
            newDecisionLevel();
            uncheckedEnqueue(next);
        }
    }
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x88, %rsp
movq %rdi, %rbx
xorps %xmm0, %xmm0
leaq 0x10(%rsp), %rax
movaps %xmm0, (%rax)
incq 0xe8(%rdi)
leaq 0x170(%rdi), %rax
movq %rax, 0x48(%rsp)
leaq 0x2d8(%rdi), %rax
movq %rax, 0x58(%rsp)
leaq 0x158(%rdi), %rax
movq %rax, 0x50(%rsp)
xorl %r14d, %r14d
leaq 0x8ef3(%rip), %r15      # 0xe1e1
movapd 0x422a(%rip), %xmm0     # 0x9520
shufpd $0x1, %xmm0, %xmm0      # xmm0 = xmm0[1,0]
movapd %xmm0, 0x70(%rsp)
movl %esi, 0xc(%rsp)
testl %esi, %esi
sets %al
cmpl %esi, %r14d
setl %cl
orb %al, %cl
movb %cl, 0x30(%rsp)
movq %rbx, %rdi
callq 0x408c
cmpl $-0x1, %eax
jne 0x5448
cmpb $0x0, 0x30(%rsp)
je 0x5695
movq %rbx, %rdi
callq 0x6b9a
testb %al, %al
je 0x5695
cmpl $0x0, 0x180(%rbx)
jne 0x535b
movq %rbx, %rdi
callq 0x50ea
testb %al, %al
je 0x56d7
movl 0x160(%rbx), %eax
subl 0x170(%rbx), %eax
cvtsi2sd %eax, %xmm0
ucomisd 0x360(%rbx), %xmm0
jb 0x537d
movq %rbx, %rdi
callq 0x4e44
movslq 0x180(%rbx), %rax
cmpl 0x190(%rbx), %eax
jge 0x5412
movq %r15, %r13
movq 0x188(%rbx), %rcx
movl (%rcx,%rax,4), %r12d
movl %r12d, %eax
sarl %eax
movq 0x1b0(%rbx), %rcx
movslq %eax, %rbp
movl %r12d, %r15d
andb $0x1, %r15b
movb (%rcx,%rbp), %al
xorb %r15b, %al
movb %al, 0x8(%rsp)
movzbl 0x8e1b(%rip), %esi      # 0xe1e0
leaq 0x8(%rsp), %rdi
callq 0x3652
testb %al, %al
je 0x53e0
movq %rbx, %rdi
callq 0x6bf2
movq %r13, %r15
jmp 0x537d
movq 0x1b0(%rbx), %rax
xorb (%rax,%rbp), %r15b
movb %r15b, 0x8(%rsp)
movzbl 0x8dea(%rip), %esi      # 0xe1e1
leaq 0x8(%rsp), %rdi
callq 0x3652
testb %al, %al
jne 0x56c1
cmpl $-0x2, %r12d
movq %r13, %r15
jne 0x542d
incq 0xf0(%rbx)
movq %rbx, %rdi
callq 0x46d0
movl %eax, %r12d
cmpl $-0x2, %eax
je 0x56b8
movq %rbx, %rdi
callq 0x6bf2
movq %rbx, %rdi
movl %r12d, %esi
pushq $-0x1
popq %rdx
callq 0x4040
jmp 0x5316
incq 0x108(%rbx)
cmpl $0x0, 0x180(%rbx)
je 0x56d7
cmpq $0x0, 0x10(%rsp)
je 0x5469
andl $0x0, 0x18(%rsp)
movq %rbx, %rdi
movl %eax, %esi
leaq 0x10(%rsp), %rdx
leaq 0x2c(%rsp), %rcx
callq 0x4842
movl 0x2c(%rsp), %esi
movq %rbx, %rdi
callq 0x45f2
movq 0x30(%rbx), %rax
movl 0x18(%rsp), %esi
testq %rax, %rax
je 0x54e6
cmpl 0x28(%rbx), %esi
jg 0x54e6
movq 0x10(%rsp), %rcx
movq 0x20(%rbx), %rdx
xorl %edi, %edi
movslq %esi, %r8
cmpq %r8, %rdi
jge 0x54d3
movl (%rcx,%rdi,4), %esi
movl %esi, %r8d
sarl %r8d
leal 0x1(%r8), %r9d
testb $0x1, %sil
notl %r8d
cmovel %r9d, %r8d
movl %r8d, (%rdx,%rdi,4)
incq %rdi
movl 0x18(%rsp), %esi
jmp 0x54a6
movq 0x20(%rbx), %rsi
andl $0x0, (%rsi,%r8,4)
movq 0x18(%rbx), %rdi
callq *%rax
movl 0x18(%rsp), %esi
cmpl $0x1, %esi
jne 0x54fa
movq 0x10(%rsp), %rax
movl (%rax), %esi
movq %rbx, %rdi
pushq $-0x1
popq %rdx
jmp 0x5550
movq 0x58(%rsp), %rdi
leaq 0x10(%rsp), %rsi
pushq $0x1
popq %rdx
callq 0x66ac
movl %eax, 0x8(%rsp)
movq 0x50(%rsp), %rdi
leaq 0x8(%rsp), %rsi
callq 0x66f6
movl 0x8(%rsp), %esi
movq %rbx, %rdi
callq 0x435e
movl 0x8(%rsp), %esi
shlq $0x2, %rsi
addq 0x2d8(%rbx), %rsi
movq %rbx, %rdi
callq 0x68d6
movq 0x10(%rsp), %rax
movl (%rax), %esi
movl 0x8(%rsp), %edx
movq %rbx, %rdi
callq 0x4040
incl %r14d
movupd 0x78(%rbx), %xmm0
shufpd $0x1, %xmm0, %xmm0      # xmm0 = xmm0[1,0]
movapd 0x70(%rsp), %xmm1
divpd %xmm0, %xmm1
movupd 0x2a8(%rbx), %xmm0
mulpd %xmm1, %xmm0
movupd %xmm0, 0x2a8(%rbx)
decl 0x370(%rbx)
movl 0xc(%rsp), %esi
jne 0x5305
movupd 0xc8(%rbx), %xmm1
movupd 0x360(%rbx), %xmm0
movhpd 0xd8(%rbx), %xmm1       # xmm1 = xmm1[0],mem[0]
mulpd %xmm0, %xmm1
movapd %xmm1, %xmm0
unpckhpd %xmm1, %xmm0            # xmm0 = xmm0[1],xmm1[1]
cvttsd2si %xmm0, %eax
movl %eax, 0x370(%rbx)
movl 0xc(%rsp), %esi
movupd %xmm1, 0x360(%rbx)
cmpl $0x0, 0x70(%rbx)
jle 0x5305
movapd %xmm1, 0x30(%rsp)
cmpl $0x0, 0x180(%rbx)
movq 0x48(%rsp), %rax
je 0x55ef
movq 0x178(%rbx), %rax
movl 0x108(%rbx), %r13d
movl 0x110(%rbx), %r12d
movl 0x118(%rbx), %ecx
movl %ecx, 0x28(%rsp)
movl 0x128(%rbx), %ecx
movl %ecx, 0x24(%rsp)
movl 0x120(%rbx), %ebp
movsd 0x130(%rbx), %xmm0
unpcklps 0x3d0a(%rip), %xmm0     # xmm0 = xmm0[0],mem[0],xmm0[1],mem[1]
movapd %xmm0, 0x60(%rsp)
subl (%rax), %r12d
movq %rbx, %rdi
callq 0x571c
movapd %xmm0, %xmm1
movapd 0x60(%rsp), %xmm2
subpd 0x3cf7(%rip), %xmm2     # 0x9340
movapd %xmm2, %xmm0
unpckhpd %xmm2, %xmm0            # xmm0 = xmm0[1],xmm2[1]
addsd %xmm2, %xmm0
cvtsi2sd %ebp, %xmm2
divsd %xmm2, %xmm0
cvttsd2si 0x30(%rsp), %r9d
mulsd 0x3f04(%rip), %xmm1     # 0x9570
movl %ebp, (%rsp)
leaq 0x41b8(%rip), %rdi      # 0x982e
movl %r13d, %esi
movl %r12d, %edx
movl 0x28(%rsp), %ecx
movl 0x24(%rsp), %r8d
movb $0x2, %al
callq 0x2050
movl 0xc(%rsp), %esi
jmp 0x5305
movq %rbx, %rdi
callq 0x571c
movsd %xmm0, 0x2c8(%rbx)
movq %rbx, %rdi
xorl %esi, %esi
callq 0x45f2
leaq 0x8b2c(%rip), %r15      # 0xe1e2
jmp 0x56d7
leaq 0x8b21(%rip), %r15      # 0xe1e0
jmp 0x56d7
xorl $0x1, %r12d
leaq 0x48(%rbx), %rdx
movq %rbx, %rdi
movl %r12d, %esi
callq 0x4d24
movq %r13, %r15
movb (%r15), %bl
leaq 0x10(%rsp), %rdi
callq 0x358a
movl %ebx, %eax
addq $0x88, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x5706
jmp 0x5706
jmp 0x5706
jmp 0x5706
jmp 0x5706
jmp 0x5706
jmp 0x5706
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0x358a
movq %rbx, %rdi
callq 0x22d0
nop