// File: /workspace/github_cpp_makefile_star2_O2/biotomas[P]ipasir/sat/minisat220/minisat-220/minisat/core/Solver.cc
// Function: Minisat::Solver::solve_()
lbool Solver::solve_()
{
    model.clear();
    conflict.clear();
    if (!ok) return l_False;

    solves++;

    max_learnts = nClauses() * learntsize_factor;
    if (max_learnts < min_learnts_lim)
        max_learnts = min_learnts_lim;

    learntsize_adjust_confl   = learntsize_adjust_start_confl;
    learntsize_adjust_cnt     = (int)learntsize_adjust_confl;
    lbool   status            = l_Undef;

    if (verbosity >= 1){
        printf("c [minisat220] ============================[ Search Statistics ]==============================\n");
        printf("c [minisat220] | Conflicts |          ORIGINAL         |          LEARNT          | Progress |\n");
        printf("c [minisat220] |           |    Vars  Clauses Literals |    Limit  Clauses Lit/Cl |          |\n");
        printf("c [minisat220] ===============================================================================\n");
    }

    // Search:
    int curr_restarts = 0;
    while (status == l_Undef){
        double rest_base = luby_restart ? luby(restart_inc, curr_restarts) : pow(restart_inc, curr_restarts);
        status = search(rest_base * restart_first);
        if (!withinBudget()) break;
        curr_restarts++;
    }

    if (verbosity >= 1)
        printf("c [minisat220] ===============================================================================\n");


    if (status == l_True){
        // Extend & copy model:
        model.growTo(nVars());
        for (int i = 0; i < nVars(); i++) model[i] = value(i);
    }else if (status == l_False && conflict.size() == 0)
        ok = false;

    cancelUntil(0);
    return status;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0x10, %rsp
movq %rdi, %rbx
cmpq $0x0, 0x38(%rdi)
je 0x57ea
andl $0x0, 0x40(%rbx)
leaq 0x48(%rbx), %rdi
xorl %esi, %esi
callq 0x69d6
cmpb $0x1, 0x2a0(%rbx)
jne 0x5982
incq 0xe0(%rbx)
cvtsi2sdl 0x118(%rbx), %xmm1
mulsd 0xc0(%rbx), %xmm1
movsd %xmm1, 0x360(%rbx)
cvtsi2sdl 0xb0(%rbx), %xmm0
ucomisd %xmm1, %xmm0
jbe 0x5837
movsd %xmm0, 0x360(%rbx)
movl 0xd0(%rbx), %eax
cvtsi2sd %eax, %xmm0
movsd %xmm0, 0x368(%rbx)
movl %eax, 0x370(%rbx)
movb 0x898d(%rip), %al       # 0xe1e2
movb %al, 0xf(%rsp)
cmpl $0x0, 0x70(%rbx)
jle 0x588f
leaq 0x4319(%rip), %rdi      # 0x9b7f
callq 0x2270
leaq 0x436c(%rip), %rdi      # 0x9bde
callq 0x2270
leaq 0x43bf(%rip), %rdi      # 0x9c3d
callq 0x2270
leaq 0x4412(%rip), %rdi      # 0x9c9c
callq 0x2270
leaq 0x38(%rbx), %r14
xorl %ebp, %ebp
leaq 0xf(%rsp), %r15
pushq $0x1
popq %r12
movzbl 0x893d(%rip), %esi      # 0xe1e2
movq %r15, %rdi
callq 0x3652
testb %al, %al
je 0x5926
movsd 0xb8(%rbx), %xmm0
cmpb $0x1, 0x98(%rbx)
jne 0x58d6
xorl %ecx, %ecx
movl %r12d, %esi
cmpl %ebp, %esi
jg 0x58dc
incl %ecx
leal 0x1(,%rsi,2), %esi
jmp 0x58c7
cvtsi2sd %ebp, %xmm1
jmp 0x58f3
movl %ebp, %eax
decl %esi
cmpl %eax, %esi
je 0x58ef
sarl %esi
decl %ecx
cltd
idivl %esi
movl %edx, %eax
jmp 0x58de
cvtsi2sd %ecx, %xmm1
callq 0x22c0
cvtsi2sdl 0xb4(%rbx), %xmm1
mulsd %xmm0, %xmm1
cvttsd2si %xmm1, %esi
movq %rbx, %rdi
callq 0x529a
movb %al, 0xf(%rsp)
movq %rbx, %rdi
callq 0x6b9a
incl %ebp
testb %al, %al
jne 0x589e
cmpl $0x0, 0x70(%rbx)
jle 0x5938
leaq 0x4369(%rip), %rdi      # 0x9c9c
callq 0x2270
movzbl 0x88a1(%rip), %esi      # 0xe1e0
leaq 0xf(%rsp), %r15
movq %r15, %rdi
callq 0x3652
testb %al, %al
je 0x598b
movl 0x2d4(%rbx), %esi
movq %r14, %rdi
callq 0x6c32
xorl %eax, %eax
movslq 0x2d4(%rbx), %rcx
cmpq %rcx, %rax
jge 0x59ad
movq 0x38(%rbx), %rcx
movq 0x1b0(%rbx), %rdx
movb (%rdx,%rax), %dl
movb %dl, (%rcx,%rax)
incq %rax
jmp 0x5960
leaq 0x8858(%rip), %r15      # 0xe1e1
jmp 0x59b7
movzbl 0x884f(%rip), %esi      # 0xe1e1
leaq 0xf(%rsp), %rdi
callq 0x3652
testb %al, %al
je 0x59ad
cmpl $0x0, 0x68(%rbx)
jne 0x59ad
movb $0x0, 0x2a0(%rbx)
movq %rbx, %rdi
xorl %esi, %esi
callq 0x45f2
movb (%r15), %al
addq $0x10, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
nop