// File: /workspace/github_cpp_makefile_star2_O3/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 $0x38, %rsp
testq %rdx, %rdx
je 0xe8c2
movq %rsi, %r13
cmpb $0x0, (%rsi)
jne 0xe8e1
movq %rdx, %r14
movq %rdi, %rbx
movq %r13, %rsi
callq 0xddad
leaq 0x70(%rbx), %rbp
cmpq %r14, %rbp
je 0xe900
testb $0x1, %r14b
je 0xe517
shrq %r14
xorq $0x1, %r14
addq 0x38(%rbx), %r14
movq %rbx, %rdi
movq %r13, %rsi
movq %r14, %rdx
callq 0xeac3
movq %rax, %r14
movl 0x38(%rbx), %eax
movl %r13d, %r15d
subl %eax, %r15d
shrl %r15d
shlq $0x4, %r15
addq 0x40(%rbx), %r15
cmpl $0x0, 0x28(%rbx)
je 0xe5c7
cmpq %rbp, %r14
sete %al
orb %r14b, %al
testb $0x1, %al
jne 0xe567
movl 0x4(%r14), %eax
testb $0x4, %al
jne 0xe93e
movl %eax, %ecx
orl $0x4, %ecx
movl %ecx, 0x4(%r14)
testb $0x2, %al
je 0xe567
cmpl $0x3, (%r14)
jb 0xe567
incl 0x3b8(%rbx)
cmpq %rbp, %r14
jne 0xe576
movl $0x0, 0xc0(%rbx)
cmpl $0x0, 0x28(%rbx)
jne 0xe5b8
cmpq $0x0, 0x38(%rbx)
je 0xe95d
cmpl $0x0, 0x4(%r15)
jne 0xe97c
incl 0x3e8(%rbx)
movq 0x48(%rbx), %rsi
subq 0x40(%rbx), %r15
sarq %r15
movl $0xffffffff, (%rsi,%r15) # imm = 0xFFFFFFFF
cmpl $0x0, 0x408(%rbx)
je 0xe857
addq $0x38, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movzwl (%r15), %eax
testb $0x10, %al
jne 0xe5e6
orl $0x10, %eax
movw %ax, (%r15)
incl 0x44c(%rbx)
cmpl $0x0, 0x28(%rbx)
jne 0xe535
cmpl $0x2, (%r14)
jb 0xe535
movq 0x2a8(%rbx), %rax
cmpq 0x2a0(%rbx), %rax
jne 0xe9ba
movq 0x260(%rbx), %rax
cmpq 0x258(%rbx), %rax
jne 0xe9d9
movq %r15, 0x10(%rsp)
movq %rbx, %rdi
movq %r13, %rsi
callq 0x7585
cmpq %r14, %rbp
sete %al
orb %r14b, %al
testb $0x1, %al
jne 0xe6c8
movq 0x2a8(%rbx), %rax
movq 0x2b0(%rbx), %rcx
cmpq %rcx, %rax
jne 0xe6b1
movq 0x2a0(%rbx), %rsi
cmpq %rax, %rsi
ja 0xe99b
subq %rsi, %rax
movq %rax, %rcx
shrq $0x2, %rcx
movl %ecx, %ecx
movabsq $0x7fffffff8, %r12      # imm = 0x7FFFFFFF8
andq %rax, %r12
movl $0x1, %r15d
cmovneq %rcx, %r15
leaq (,%r15,8), %rcx
movq %rbx, %rdi
movq %r12, %rdx
callq 0x473a
movq %rax, 0x2a0(%rbx)
addq %rax, %r12
movq %r12, 0x2a8(%rbx)
leaq (%rax,%r15,8), %rcx
movq %rcx, 0x2b0(%rbx)
movq %r12, %rax
cmpq %rcx, %rax
jae 0xe91f
leaq 0x8(%rax), %rcx
movq %rcx, 0x2a8(%rbx)
movq %r14, (%rax)
movl (%r14), %eax
testq %rax, %rax
je 0xe87d
movl 0x38(%rbx), %ecx
movq %r13, 0x20(%rsp)
movl %r13d, %edx
subl %ecx, %edx
shrl %edx
shlq $0x4, %rdx
addq 0x40(%rbx), %rdx
leaq (%r14,%rax,8), %rcx
addq $0x18, %rcx
leaq 0x18(%r14), %r13
movl $0x1, %esi
movq %rdx, 0x18(%rsp)
movq %rbp, 0x30(%rsp)
movq %rcx, 0x28(%rsp)
movl (%r13), %eax
subl 0x38(%rbx), %eax
shrl %eax
shlq $0x4, %rax
addq 0x40(%rbx), %rax
cmpq %rdx, %rax
je 0xe7e9
movq 0x8(%rax), %r15
testq %r15, %r15
je 0xe8a3
cmpq %r15, %rbp
sete %al
orb %r15b, %al
testb $0x1, %al
jne 0xe7e7
movq 0x2a8(%rbx), %r12
movq 0x2b0(%rbx), %rax
cmpq %rax, %r12
jne 0xe7ce
movl %esi, 0xc(%rsp)
movq 0x2a0(%rbx), %rsi
cmpq %r12, %rsi
ja 0xe99b
subq %rsi, %r12
movq %r12, %rax
shrq $0x2, %rax
movabsq $0x7fffffff8, %rcx      # imm = 0x7FFFFFFF8
andq %rcx, %r12
movl %eax, %ebp
movl $0x1, %eax
cmoveq %rax, %rbp
leaq (,%rbp,8), %rcx
movq %rbx, %rdi
movq %r12, %rdx
callq 0x473a
movq %rax, 0x2a0(%rbx)
addq %rax, %r12
movq %r12, 0x2a8(%rbx)
leaq (%rax,%rbp,8), %rax
movq %rax, 0x2b0(%rbx)
movq 0x30(%rsp), %rbp
movq 0x18(%rsp), %rdx
movq 0x28(%rsp), %rcx
movl 0xc(%rsp), %esi
cmpq %rax, %r12
jae 0xe91f
leaq 0x8(%r12), %rax
movq %rax, 0x2a8(%rbx)
movq %r15, (%r12)
incl %esi
addq $0x8, %r13
cmpq %rcx, %r13
jb 0xe70b
cmpl $0x2, %esi
movq 0x20(%rsp), %r12
jb 0xe87d
cmpq %r14, %rbp
jne 0xe80f
movl $0x0, 0xc0(%rbx)
movq %rbx, %rdi
movl $0x1, %esi
callq 0xeb80
movq %rax, %r14
cmpl $0x2, (%rax)
movq 0x10(%rsp), %r15
jne 0xe840
cmpq %rbp, %r14
jne 0xea17
movq %rbx, %rdi
movq %r12, %rsi
callq 0x102eb
movq %rax, %r14
cmpq %r14, %rbp
je 0xe9f8
movq 0x18(%rsp), %rax
movq %r14, 0x8(%rax)
jmp 0xe535
addq %r15, %rsi
testl $0x3fffffff, 0x4(%rsi)  # imm = 0x3FFFFFFF
je 0xe5b8
movq %rbx, %rdi
addq $0x38, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0xbc36
movq 0x258(%rbx), %rax
movq 0x2a0(%rbx), %rcx
movq %rax, 0x260(%rbx)
movq %rcx, 0x2a8(%rbx)
movq 0x10(%rsp), %r15
jmp 0xe535
leaq 0x43c9(%rip), %rdi      # 0x12c73
leaq 0x49cb(%rip), %rsi      # 0x1327c
leaq 0x5efa(%rip), %rcx      # 0x147b2
movl $0x6f8, %edx            # imm = 0x6F8
callq 0x10b0
leaq 0x6417(%rip), %rdi      # 0x14ce0
leaq 0x49ac(%rip), %rsi      # 0x1327c
leaq 0x5dcc(%rip), %rcx      # 0x146a3
movl $0x7a2, %edx            # imm = 0x7A2
callq 0x10b0
leaq 0x63d0(%rip), %rdi      # 0x14cb8
leaq 0x498d(%rip), %rsi      # 0x1327c
leaq 0x5dad(%rip), %rcx      # 0x146a3
movl $0x7a3, %edx            # imm = 0x7A3
callq 0x10b0
leaq 0x5883(%rip), %rdi      # 0x1418a
leaq 0x496e(%rip), %rsi      # 0x1327c
leaq 0x5d8e(%rip), %rcx      # 0x146a3
movl $0x7ab, %edx            # imm = 0x7AB
callq 0x10b0
leaq 0x5ec9(%rip), %rdi      # 0x147ef
leaq 0x494f(%rip), %rsi      # 0x1327c
leaq 0x5e7e(%rip), %rcx      # 0x147b2
movl $0x706, %edx            # imm = 0x706
callq 0x10b0
leaq 0x5d85(%rip), %rdi      # 0x146ca
leaq 0x4930(%rip), %rsi      # 0x1327c
leaq 0x5d50(%rip), %rcx      # 0x146a3
movl $0x7c9, %edx            # imm = 0x7C9
callq 0x10b0
leaq 0x6262(%rip), %rdi      # 0x14bc6
leaq 0x4911(%rip), %rsi      # 0x1327c
leaq 0x6269(%rip), %rcx      # 0x14bdb
movl $0x780, %edx            # imm = 0x780
callq 0x10b0
leaq 0x6271(%rip), %rdi      # 0x14bf4
leaq 0x48f2(%rip), %rsi      # 0x1327c
leaq 0x624a(%rip), %rcx      # 0x14bdb
movl $0x781, %edx            # imm = 0x781
callq 0x10b0
leaq 0x5e31(%rip), %rdi      # 0x147d3
leaq 0x48d3(%rip), %rsi      # 0x1327c
leaq 0x5e02(%rip), %rcx      # 0x147b2
movl $0x704, %edx            # imm = 0x704
callq 0x10b0
leaq 0x5d7c(%rip), %rdi      # 0x1473d
leaq 0x48b4(%rip), %rsi      # 0x1327c
leaq 0x5d88(%rip), %rcx      # 0x14757
movl $0x74b, %edx            # imm = 0x74B
callq 0x10b0
leaq 0x5da7(%rip), %rdi      # 0x14787
leaq 0x4895(%rip), %rsi      # 0x1327c
leaq 0x5d69(%rip), %rcx      # 0x14757
movl $0x74c, %edx            # imm = 0x74C
callq 0x10b0
leaq 0x578b(%rip), %rdi      # 0x1418a
leaq 0x4876(%rip), %rsi      # 0x1327c
leaq 0x5b9b(%rip), %rcx      # 0x145a8
movl $0x60c, %edx            # imm = 0x60C
callq 0x10b0
leaq 0x5d80(%rip), %rdi      # 0x1479e
leaq 0x4857(%rip), %rsi      # 0x1327c
leaq 0x5d2b(%rip), %rcx      # 0x14757
movl $0x76c, %edx            # imm = 0x76C
callq 0x10b0