// File: jacky860226[P]JinkelaSat/src/include/JinkelaSat.hpp
// Function: MiniSat::JinkelaSat::search(int)
Status search(int nof_conflicts) {
    int conflictC = 0;
    for (;;) {
      auto confl = propagate();
      if (confl != nullptr) {
        ++conflictC;
        if (decisionLevel() == 0)
          return Status::False;
        std::vector<Literal> learnt_clause;
        int backtrack_level;
        analyze(confl, learnt_clause, backtrack_level);
        cancelUntil(backtrack_level);
        if (learnt_clause.size() == 1) {
          uncheckedEnqueue(learnt_clause[0]);
        } else {
          learnts.emplace_back(new Clause(std::move(learnt_clause), true));
          auto cr = learnts.back().get();
          attachClause(cr);
          claBumpActivity(*cr);
          uncheckedEnqueue((*cr)[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;
        }
      } else {
        if (nof_conflicts >= 0 && conflictC >= nof_conflicts) {
          cancelUntil(0);
          return Status::Undef;
        }
        if (decisionLevel() == 0 && !simplify())
          return Status::False;
        if (int(learnts.size()) - int(nAssigns()) >= max_learnts)
          reduceDB();
        Literal next = pickBranchLit();
        if (next.isUndef())
          return Status::True;
        newDecisionLevel();
        uncheckedEnqueue(next);
      }
    }
  }

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xa0, %rsp
movq %rdi, -0x10(%rbp)
movl %esi, -0x14(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x78(%rbp)
movl $0x0, -0x18(%rbp)
movq -0x78(%rbp), %rdi
callq 0x3c10
movq %rax, -0x20(%rbp)
cmpq $0x0, -0x20(%rbp)
je 0x13319
movq -0x78(%rbp), %rdi
movl -0x18(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x18(%rbp)
callq 0xbe90
cmpq $0x0, %rax
jne 0x1312a
movb $0x0, -0x1(%rbp)
jmp 0x133e9
leaq -0x38(%rbp), %rdi
movq %rdi, -0x80(%rbp)
callq 0x28a0
movq -0x78(%rbp), %rdi
movq -0x80(%rbp), %rdx
movq -0x20(%rbp), %rsi
leaq -0x3c(%rbp), %rcx
callq 0x13780
jmp 0x1314e
movq -0x78(%rbp), %rdi
movslq -0x3c(%rbp), %rsi
callq 0x13630
jmp 0x1315d
leaq -0x38(%rbp), %rdi
callq 0x3b30
cmpq $0x1, %rax
jne 0x131b0
xorl %eax, %eax
movl %eax, %esi
movq %rsi, -0x88(%rbp)
leaq -0x38(%rbp), %rdi
callq 0x3a20
movq -0x78(%rbp), %rdi
movq -0x88(%rbp), %rdx
movl (%rax), %eax
movl %eax, -0x50(%rbp)
movl -0x50(%rbp), %esi
callq 0x3b50
jmp 0x1319a
jmp 0x13285
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x1330b
movq -0x78(%rbp), %rax
addq $0x38, %rax
movq %rax, -0x98(%rbp)
movl $0x20, %edi
callq 0x21c0
movq %rax, -0x90(%rbp)
jmp 0x131d2
movq -0x90(%rbp), %rdi
leaq -0x38(%rbp), %rsi
movl $0x1, %edx
callq 0x4200
jmp 0x131e9
movq -0x98(%rbp), %rdi
movq -0x90(%rbp), %rax
movq %rax, -0x58(%rbp)
leaq -0x58(%rbp), %rsi
callq 0x4180
jmp 0x13206
movq -0x78(%rbp), %rdi
addq $0x38, %rdi
callq 0x43a0
movq %rax, %rdi
callq 0x43e0
movq -0x78(%rbp), %rdi
movq %rax, -0x60(%rbp)
movq -0x60(%rbp), %rsi
callq 0x4250
jmp 0x1322e
movq -0x78(%rbp), %rdi
movq -0x60(%rbp), %rsi
callq 0x13da0
jmp 0x1323d
movq -0x60(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x3a20
movq -0x78(%rbp), %rdi
movl (%rax), %eax
movl %eax, -0x64(%rbp)
movq -0x60(%rbp), %rdx
movl -0x64(%rbp), %esi
callq 0x3b50
jmp 0x13261
jmp 0x13285
movq -0x90(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
movl $0x20, %esi
callq 0x21d0
jmp 0x1330b
movq -0x78(%rbp), %rdi
callq 0x13ea0
jmp 0x13290
movq -0x78(%rbp), %rdi
callq 0x13ed0
jmp 0x1329b
movq -0x78(%rbp), %rcx
movq 0x1d0(%rcx), %rax
addq $-0x1, %rax
movq %rax, 0x1d0(%rcx)
cmpq $0x0, %rax
jne 0x132fd
movq -0x78(%rbp), %rax
movsd 0x190(%rax), %xmm0
mulsd 0x1c8(%rax), %xmm0
movsd %xmm0, 0x1c8(%rax)
cvttsd2si 0x1c8(%rax), %ecx
movslq %ecx, %rcx
movq %rcx, 0x1d0(%rax)
movsd 0x198(%rax), %xmm0
mulsd 0x1c0(%rax), %xmm0
movsd %xmm0, 0x1c0(%rax)
leaq -0x38(%rbp), %rdi
callq 0x2db0
jmp 0x133e4
leaq -0x38(%rbp), %rdi
callq 0x2db0
jmp 0x133f5
cmpl $0x0, -0x14(%rbp)
jl 0x1333d
movl -0x18(%rbp), %eax
cmpl -0x14(%rbp), %eax
jl 0x1333d
movq -0x78(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x13630
movb $0x2, -0x1(%rbp)
jmp 0x133e9
movq -0x78(%rbp), %rdi
callq 0xbe90
cmpq $0x0, %rax
jne 0x13362
movq -0x78(%rbp), %rdi
callq 0x13f00
testb $0x1, %al
jne 0x13362
movb $0x0, -0x1(%rbp)
jmp 0x133e9
movq -0x78(%rbp), %rdi
addq $0x38, %rdi
callq 0xeeb0
movq -0x78(%rbp), %rdi
movl %eax, -0x9c(%rbp)
callq 0x13fb0
movl -0x9c(%rbp), %ecx
movq %rax, %rdx
movq -0x78(%rbp), %rax
subl %edx, %ecx
cvtsi2sd %ecx, %xmm0
ucomisd 0x1c0(%rax), %xmm0
jb 0x133a4
movq -0x78(%rbp), %rdi
callq 0x13fd0
movq -0x78(%rbp), %rdi
callq 0x14190
movl %eax, -0x68(%rbp)
leaq -0x68(%rbp), %rdi
callq 0x142d0
testb $0x1, %al
jne 0x133bf
jmp 0x133c5
movb $0x1, -0x1(%rbp)
jmp 0x133e9
movq -0x78(%rbp), %rdi
callq 0x142f0
movq -0x78(%rbp), %rdi
movl -0x68(%rbp), %eax
movl %eax, -0x6c(%rbp)
movl -0x6c(%rbp), %esi
xorl %eax, %eax
movl %eax, %edx
callq 0x3b50
jmp 0x130f1
movb -0x1(%rbp), %al
addq $0xa0, %rsp
popq %rbp
retq
movq -0x48(%rbp), %rdi
callq 0x22f0
nop