// File: /workspace/github_cpp_makefile_star2_O1/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 0xe709
movq %rsi, %rbp
cmpb $0x0, (%rsi)
jne 0xe728
movq %rdx, %r14
movq %rdi, %rbx
movq %rbp, %rsi
callq 0xdc1f
leaq 0x70(%rbx), %r12
cmpq %r14, %r12
je 0xe747
testb $0x1, %r14b
je 0xe441
shrq %r14
xorq $0x1, %r14
addq 0x38(%rbx), %r14
movq %rbx, %rdi
movq %rbp, %rsi
movq %r14, %rdx
callq 0xe90a
movq %rax, %r14
movl 0x38(%rbx), %eax
movl %ebp, %r13d
subl %eax, %r13d
shrl %r13d
shlq $0x4, %r13
addq 0x40(%rbx), %r13
cmpl $0x0, 0x28(%rbx)
jne 0xe472
movzwl (%r13), %eax
testb $0x10, %al
jne 0xe472
orl $0x10, %eax
movw %ax, (%r13)
incl 0x44c(%rbx)
cmpl $0x0, 0x28(%rbx)
jne 0xe659
cmpl $0x2, (%r14)
jb 0xe659
movq 0x2a8(%rbx), %rax
cmpq 0x2a0(%rbx), %rax
jne 0xe7c3
movq 0x260(%rbx), %rax
cmpq 0x258(%rbx), %rax
jne 0xe7e2
movq %rbx, %rdi
movq %rbp, %rsi
callq 0x7574
cmpq %r14, %r12
sete %al
orb %r14b, %al
testb $0x1, %al
jne 0xe576
movq 0x2a8(%rbx), %r15
movq 0x2b0(%rbx), %rdx
cmpq %rdx, %r15
jne 0xe554
movq %r13, (%rsp)
movq %r12, 0x8(%rsp)
movq 0x2a0(%rbx), %rsi
cmpq %rdx, %rsi
ja 0xe83f
subq %rsi, %r15
subq %rsi, %rdx
movq %rdx, %rax
shrq $0x2, %rax
movabsq $0x7fffffff8, %r12      # imm = 0x7FFFFFFF8
andq %r12, %rdx
movl %eax, %eax
movl $0x1, %r13d
cmovneq %rax, %r13
leaq (,%r13,8), %rcx
movq %rbx, %rdi
callq 0x4593
movq %rax, 0x2a0(%rbx)
andq %r12, %r15
addq %rax, %r15
movq %r15, 0x2a8(%rbx)
leaq (%rax,%r13,8), %rax
movq %rax, 0x2b0(%rbx)
movq 0x8(%rsp), %r12
movq (%rsp), %r13
movq 0x2a8(%rbx), %rax
cmpq 0x2b0(%rbx), %rax
jae 0xe801
leaq 0x8(%rax), %rcx
movq %rcx, 0x2a8(%rbx)
movq %r14, (%rax)
movl (%r14), %eax
testq %rax, %rax
je 0xe63d
movq %r13, (%rsp)
movq %r12, 0x8(%rsp)
movl 0x38(%rbx), %ecx
movq %rbp, 0x10(%rsp)
subl %ecx, %ebp
shrl %ebp
shlq $0x4, %rbp
addq 0x40(%rbx), %rbp
leaq (%r14,%rax,8), %r12
addq $0x18, %r12
leaq 0x18(%r14), %r13
movl $0x1, %r15d
movl (%r13), %eax
subl 0x38(%rbx), %eax
shrl %eax
shlq $0x4, %rax
addq 0x40(%rbx), %rax
cmpq %rbp, %rax
je 0xe5d6
movq 0x8(%rax), %rsi
movq %rbx, %rdi
callq 0xe9c7
incl %r15d
addq $0x8, %r13
cmpq %r12, %r13
jb 0xe5b1
cmpl $0x2, %r15d
movq 0x8(%rsp), %r12
movq (%rsp), %r13
movq 0x10(%rsp), %r15
jb 0xe63d
cmpq %r14, %r12
jne 0xe602
movl $0x0, 0xc0(%rbx)
movq %rbx, %rdi
movl $0x1, %esi
callq 0xeaf0
movq %rax, %r14
cmpl $0x2, (%rax)
jne 0xe62e
cmpq %r12, %r14
jne 0xe85e
movq %rbx, %rdi
movq %r15, %rsi
callq 0x1021e
movq %rax, %r14
cmpq %r14, %r12
je 0xe820
movq %r14, 0x8(%rbp)
jmp 0xe659
movq 0x258(%rbx), %rax
movq 0x2a0(%rbx), %rcx
movq %rax, 0x260(%rbx)
movq %rcx, 0x2a8(%rbx)
cmpq %r12, %r14
sete %al
orb %r14b, %al
testb $0x1, %al
jne 0xe68b
movl 0x4(%r14), %eax
testb $0x4, %al
jne 0xe766
movl %eax, %ecx
orl $0x4, %ecx
movl %ecx, 0x4(%r14)
testb $0x2, %al
je 0xe68b
cmpl $0x3, (%r14)
jb 0xe68b
incl 0x3b8(%rbx)
cmpq %r12, %r14
jne 0xe69a
movl $0x0, 0xc0(%rbx)
cmpl $0x0, 0x28(%rbx)
jne 0xe6d8
cmpq $0x0, 0x38(%rbx)
je 0xe785
cmpl $0x0, 0x4(%r13)
jne 0xe7a4
incl 0x3e8(%rbx)
movq 0x48(%rbx), %rsi
subq 0x40(%rbx), %r13
sarq %r13
movl $0xffffffff, (%rsi,%r13) # imm = 0xFFFFFFFF
cmpl $0x0, 0x408(%rbx)
je 0xe6e7
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
addq %r13, %rsi
testl $0x3fffffff, 0x4(%rsi)  # imm = 0x3FFFFFFF
je 0xe6d8
movq %rbx, %rdi
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0xbb76
leaq 0x5634(%rip), %rdi      # 0x13d44
leaq 0x3b95(%rip), %rsi      # 0x122ac
leaq 0x4fc3(%rip), %rcx      # 0x136e1
movl $0x7a2, %edx            # imm = 0x7A2
callq 0x10b0
leaq 0x55ed(%rip), %rdi      # 0x13d1c
leaq 0x3b76(%rip), %rsi      # 0x122ac
leaq 0x4fa4(%rip), %rcx      # 0x136e1
movl $0x7a3, %edx            # imm = 0x7A3
callq 0x10b0
leaq 0x4a7a(%rip), %rdi      # 0x131c8
leaq 0x3b57(%rip), %rsi      # 0x122ac
leaq 0x4f85(%rip), %rcx      # 0x136e1
movl $0x7ab, %edx            # imm = 0x7AB
callq 0x10b0
leaq 0x4f9b(%rip), %rdi      # 0x13708
leaq 0x3b38(%rip), %rsi      # 0x122ac
leaq 0x4f66(%rip), %rcx      # 0x136e1
movl $0x7c9, %edx            # imm = 0x7C9
callq 0x10b0
leaq 0x5478(%rip), %rdi      # 0x13c04
leaq 0x3b19(%rip), %rsi      # 0x122ac
leaq 0x547f(%rip), %rcx      # 0x13c19
movl $0x780, %edx            # imm = 0x780
callq 0x10b0
leaq 0x5487(%rip), %rdi      # 0x13c32
leaq 0x3afa(%rip), %rsi      # 0x122ac
leaq 0x5460(%rip), %rcx      # 0x13c19
movl $0x781, %edx            # imm = 0x781
callq 0x10b0
leaq 0x4fb1(%rip), %rdi      # 0x1377b
leaq 0x3adb(%rip), %rsi      # 0x122ac
leaq 0x4fbd(%rip), %rcx      # 0x13795
movl $0x74b, %edx            # imm = 0x74B
callq 0x10b0
leaq 0x4fdc(%rip), %rdi      # 0x137c5
leaq 0x3abc(%rip), %rsi      # 0x122ac
leaq 0x4f9e(%rip), %rcx      # 0x13795
movl $0x74c, %edx            # imm = 0x74C
callq 0x10b0
leaq 0x5025(%rip), %rdi      # 0x1382d
leaq 0x3a9d(%rip), %rsi      # 0x122ac
leaq 0x4fda(%rip), %rcx      # 0x137f0
movl $0x706, %edx            # imm = 0x706
callq 0x10b0
leaq 0x49a1(%rip), %rdi      # 0x131c8
leaq 0x3a7e(%rip), %rsi      # 0x122ac
leaq 0x4db1(%rip), %rcx      # 0x135e6
movl $0x60c, %edx            # imm = 0x60C
callq 0x10b0
leaq 0x4fcb(%rip), %rdi      # 0x13811
leaq 0x3a5f(%rip), %rsi      # 0x122ac
leaq 0x4f9c(%rip), %rcx      # 0x137f0
movl $0x704, %edx            # imm = 0x704
callq 0x10b0
leaq 0x4f77(%rip), %rdi      # 0x137dc
leaq 0x3a40(%rip), %rsi      # 0x122ac
leaq 0x4f22(%rip), %rcx      # 0x13795
movl $0x76c, %edx            # imm = 0x76C
callq 0x10b0