// File: /workspace/github_cpp_makefile_star2_O2/biotomas[P]ipasir/sat/picosat961/picosat-961/picosat.c
// Function: assign_forced
static void
assign_forced (PS * ps, Lit * lit, Cls * reason)
{
  Var *v;

  assert (reason);
  assert (lit->val == UNDEF);

#ifdef STATS
  ps->FORCED++;
#endif
  assign (ps, lit, reason);

#ifdef NO_BINARY_CLAUSES
  assert (reason != &ps->impl);
  if (ISLITREASON (reason)) 
    {
      reason = setimpl (ps, lit, NOTLIT (REASON2LIT (reason)));
      assert (reason);
    }
#endif
  LOG ( fprintf (ps->out,
                "%sassign %d at level %d by ",
                ps->prefix, LIT2INT (lit), ps->LEVEL);
       dumpclsnl (ps, reason));

  v = LIT2VAR (lit);
  if (!ps->LEVEL)
    use_var (ps, v);

  if (!ps->LEVEL && reason->size > 1)
    {
      reason = resolve_top_level_unit (ps, lit, reason);
      assert (reason);
    }

#ifdef NO_BINARY_CLAUSES
  if (ISLITREASON (reason) || reason == &ps->impl)
    {
      /* DO NOTHING */
    }
  else
#endif
    {
      assert (!reason->locked);
      reason->locked = 1;
      if (reason->learned && reason->size > 2)
	ps->llocked++;
    }

#ifdef NO_BINARY_CLAUSES
  if (reason == &ps->impl)
    resetimpl (ps);
#endif

  if (!ps->LEVEL)
    fixvar (ps, v);
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x18, %rsp
testq %rdx, %rdx
je 0xd46f
movq %rsi, %r13
cmpb $0x0, (%rsi)
jne 0xd48e
movq %rdx, %r15
movq %rdi, %rbx
movq %r13, %rsi
callq 0xcb2b
leaq 0x70(%rbx), %r12
cmpq %r15, %r12
je 0xd4ad
testb $0x1, %r15b
je 0xd273
shrq %r15
xorq $0x1, %r15
addq 0x38(%rbx), %r15
movq %rbx, %rdi
movq %r13, %rsi
movq %r15, %rdx
callq 0xd613
movq %rax, %r15
movl 0x38(%rbx), %eax
movl %r13d, %r14d
subl %eax, %r14d
shrl %r14d
shlq $0x4, %r14
addq 0x40(%rbx), %r14
cmpl $0x0, 0x28(%rbx)
jne 0xd3c5
movq %rbx, %rdi
movq %r14, %rsi
callq 0xd69a
cmpl $0x0, 0x28(%rbx)
jne 0xd3c5
cmpl $0x2, (%r15)
jb 0xd3c5
movq 0x2a8(%rbx), %rax
cmpq 0x2a0(%rbx), %rax
jne 0xd529
movq %r12, (%rsp)
movq 0x260(%rbx), %rax
cmpq 0x258(%rbx), %rax
jne 0xd548
movq %rbx, %rdi
movq %r13, %rsi
callq 0x6ac0
movq %rbx, %rdi
movq %r15, %rsi
callq 0xd6e4
movl 0x38(%rbx), %eax
movq %r13, 0x10(%rsp)
subl %eax, %r13d
shrl %r13d
shlq $0x4, %r13
addq 0x40(%rbx), %r13
movq %r13, 0x8(%rsp)
leaq 0x18(%r15), %rbp
movl (%r15), %eax
leaq (%r15,%rax,8), %r13
addq $0x18, %r13
pushq $0x1
popq %r12
cmpq %r13, %rbp
jae 0xd351
movl (%rbp), %eax
subl 0x38(%rbx), %eax
shrl %eax
shlq $0x4, %rax
addq 0x40(%rbx), %rax
cmpq 0x8(%rsp), %rax
je 0xd34b
movq 0x8(%rax), %rsi
movq %rbx, %rdi
callq 0xd6e4
incl %r12d
addq $0x8, %rbp
jmp 0xd320
cmpl $0x2, %r12d
jb 0xd3a5
movq (%rsp), %r12
cmpq %r15, %r12
jne 0xd367
andl $0x0, 0xc0(%rbx)
pushq $0x1
popq %rsi
movq %rbx, %rdi
callq 0xd801
movq %rax, %r15
cmpl $0x2, (%rax)
movq 0x10(%rsp), %rsi
jne 0xd393
cmpq %r12, %r15
jne 0xd567
movq %rbx, %rdi
callq 0xe91d
movq %rax, %r15
movq %rbx, %rdi
movq 0x8(%rsp), %rsi
movq %r15, %rdx
callq 0xcd51
jmp 0xd3c5
movq 0x258(%rbx), %rax
movq 0x2a0(%rbx), %rcx
movq %rax, 0x260(%rbx)
movq %rcx, 0x2a8(%rbx)
movq (%rsp), %r12
cmpq %r12, %r15
sete %al
orb %r15b, %al
testb $0x1, %al
jne 0xd3f7
movl 0x4(%r15), %eax
testb $0x4, %al
jne 0xd4cc
movl %eax, %ecx
orl $0x4, %ecx
movl %ecx, 0x4(%r15)
testb $0x2, %al
je 0xd3f7
cmpl $0x3, (%r15)
jb 0xd3f7
incl 0x3b8(%rbx)
cmpq %r12, %r15
jne 0xd403
andl $0x0, 0xc0(%rbx)
cmpl $0x0, 0x28(%rbx)
jne 0xd43e
cmpq $0x0, 0x38(%rbx)
je 0xd4eb
cmpl $0x0, 0x4(%r14)
jne 0xd50a
incl 0x3e8(%rbx)
movq 0x48(%rbx), %rsi
subq 0x40(%rbx), %r14
sarq %r14
orl $-0x1, (%rsi,%r14)
cmpl $0x0, 0x408(%rbx)
je 0xd44d
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
addq %r14, %rsi
testl $0x3fffffff, 0x4(%rsi)  # imm = 0x3FFFFFFF
je 0xd43e
movq %rbx, %rdi
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0xada3
leaq 0x5862(%rip), %rdi      # 0x12cd8
leaq 0x3df7(%rip), %rsi      # 0x11274
leaq 0x5217(%rip), %rcx      # 0x1269b
movl $0x7a2, %edx            # imm = 0x7A2
callq 0x10b0
leaq 0x581b(%rip), %rdi      # 0x12cb0
leaq 0x3dd8(%rip), %rsi      # 0x11274
leaq 0x51f8(%rip), %rcx      # 0x1269b
movl $0x7a3, %edx            # imm = 0x7A3
callq 0x10b0
leaq 0x4cce(%rip), %rdi      # 0x12182
leaq 0x3db9(%rip), %rsi      # 0x11274
leaq 0x51d9(%rip), %rcx      # 0x1269b
movl $0x7ab, %edx            # imm = 0x7AB
callq 0x10b0
leaq 0x51ef(%rip), %rdi      # 0x126c2
leaq 0x3d9a(%rip), %rsi      # 0x11274
leaq 0x51ba(%rip), %rcx      # 0x1269b
movl $0x7c9, %edx            # imm = 0x7C9
callq 0x10b0
leaq 0x56cc(%rip), %rdi      # 0x12bbe
leaq 0x3d7b(%rip), %rsi      # 0x11274
leaq 0x56d3(%rip), %rcx      # 0x12bd3
movl $0x780, %edx            # imm = 0x780
callq 0x10b0
leaq 0x56db(%rip), %rdi      # 0x12bec
leaq 0x3d5c(%rip), %rsi      # 0x11274
leaq 0x56b4(%rip), %rcx      # 0x12bd3
movl $0x781, %edx            # imm = 0x781
callq 0x10b0
leaq 0x5205(%rip), %rdi      # 0x12735
leaq 0x3d3d(%rip), %rsi      # 0x11274
leaq 0x5211(%rip), %rcx      # 0x1274f
movl $0x74b, %edx            # imm = 0x74B
callq 0x10b0
leaq 0x5230(%rip), %rdi      # 0x1277f
leaq 0x3d1e(%rip), %rsi      # 0x11274
leaq 0x51f2(%rip), %rcx      # 0x1274f
movl $0x74c, %edx            # imm = 0x74C
callq 0x10b0
leaq 0x5228(%rip), %rdi      # 0x12796
leaq 0x3cff(%rip), %rsi      # 0x11274
leaq 0x51d3(%rip), %rcx      # 0x1274f
movl $0x76c, %edx            # imm = 0x76C
callq 0x10b0