// File: biotomas[P]ipasir/sat/picosat961/picosat-961/picosat.c
// Function: lpush
static void
lpush (PS * ps, Lit * lit, Cls * c)
{
  int pos = (c->lits[0] == lit);
  Ltk * s = LIT2IMPLS (lit);
  unsigned oldsize, newsize;

  assert (c->size == 2);

  if (!s->start)
    {
      assert (!s->count);
      assert (!s->ldsize);
      NEWN (s->start, 1);
    }
  else 
    {
      oldsize = (1 << (s->ldsize));
      assert (s->count <= oldsize);
      if (s->count == oldsize)
	{
	  newsize = 2 * oldsize;
	  RESIZEN (s->start, oldsize, newsize);
	  s->ldsize++;
	}
    }

  s->start[s->count++] = c->lits[pos];
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x40, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq -0x18(%rbp), %rax
movq 0x18(%rax), %rax
cmpq -0x10(%rbp), %rax
sete %al
andb $0x1, %al
movzbl %al, %eax
movl %eax, -0x1c(%rbp)
movq -0x8(%rbp), %rax
movq 0x68(%rax), %rax
movq -0x10(%rbp), %rcx
movq -0x8(%rbp), %rdx
movq 0x38(%rdx), %rdx
subq %rdx, %rcx
movl %ecx, %ecx
shlq $0x4, %rcx
addq %rcx, %rax
movq %rax, -0x28(%rbp)
movq -0x18(%rbp), %rax
cmpl $0x2, (%rax)
jne 0x1687a
jmp 0x16899
leaq 0x8382(%rip), %rdi      # 0x1ec03
leaq 0x6a1c(%rip), %rsi      # 0x1d2a4
movl $0x7e1, %edx            # imm = 0x7E1
leaq 0x837c(%rip), %rcx      # 0x1ec10
callq 0x10b0
movq -0x28(%rbp), %rax
cmpq $0x0, (%rax)
jne 0x16930
movq -0x28(%rbp), %rcx
movabsq $0xffffffff, %rax       # imm = 0xFFFFFFFF
andq 0x8(%rcx), %rax
cmpl $0x0, %eax
jne 0x168c0
jmp 0x168df
leaq 0x8368(%rip), %rdi      # 0x1ec2f
leaq 0x69d6(%rip), %rsi      # 0x1d2a4
movl $0x7e5, %edx            # imm = 0x7E5
leaq 0x8336(%rip), %rcx      # 0x1ec10
callq 0x10b0
movq -0x28(%rbp), %rax
movq 0x8(%rax), %rax
shrq $0x20, %rax
cmpl $0x0, %eax
jne 0x168f2
jmp 0x16911
leaq 0x8340(%rip), %rdi      # 0x1ec39
leaq 0x69a4(%rip), %rsi      # 0x1d2a4
movl $0x7e6, %edx            # imm = 0x7E6
leaq 0x8304(%rip), %rcx      # 0x1ec10
callq 0x10b0
jmp 0x16913
movq -0x8(%rbp), %rdi
movl $0x8, %esi
callq 0x9900
movq %rax, %rcx
movq -0x28(%rbp), %rax
movq %rcx, (%rax)
jmp 0x16a15
movq -0x28(%rbp), %rax
movq 0x8(%rax), %rax
shrq $0x20, %rax
movl %eax, %ecx
movl $0x1, %eax
shll %cl, %eax
movl %eax, -0x2c(%rbp)
movq -0x28(%rbp), %rcx
movabsq $0xffffffff, %rax       # imm = 0xFFFFFFFF
andq 0x8(%rcx), %rax
cmpl -0x2c(%rbp), %eax
ja 0x16961
jmp 0x16980
leaq 0x82dc(%rip), %rdi      # 0x1ec44
leaq 0x6935(%rip), %rsi      # 0x1d2a4
movl $0x7ec, %edx            # imm = 0x7EC
leaq 0x8295(%rip), %rcx      # 0x1ec10
callq 0x10b0
movq -0x28(%rbp), %rcx
movabsq $0xffffffff, %rax       # imm = 0xFFFFFFFF
andq 0x8(%rcx), %rax
cmpl -0x2c(%rbp), %eax
jne 0x16a13
movl -0x2c(%rbp), %eax
shll %eax
movl %eax, -0x30(%rbp)
movl -0x2c(%rbp), %eax
shlq $0x3, %rax
movq %rax, -0x38(%rbp)
movl -0x30(%rbp), %eax
shlq $0x3, %rax
movq %rax, -0x40(%rbp)
movq -0x8(%rbp), %rdi
movq -0x28(%rbp), %rax
movq (%rax), %rsi
movq -0x38(%rbp), %rdx
movq -0x40(%rbp), %rcx
callq 0x4f30
movq %rax, %rcx
movq -0x28(%rbp), %rax
movq %rcx, (%rax)
movq -0x28(%rbp), %rax
movq 0x8(%rax), %rcx
shrq $0x20, %rcx
addl $0x1, %ecx
movl %ecx, %ecx
movl %ecx, %edx
movq 0x8(%rax), %rcx
movabsq $0xffffffff, %rsi       # imm = 0xFFFFFFFF
andq %rsi, %rdx
shlq $0x20, %rdx
movabsq $0xffffffff, %rsi       # imm = 0xFFFFFFFF
andq %rsi, %rcx
orq %rdx, %rcx
movq %rcx, 0x8(%rax)
jmp 0x16a15
movq -0x18(%rbp), %rax
movslq -0x1c(%rbp), %rcx
movq 0x18(%rax,%rcx,8), %rdx
movq -0x28(%rbp), %rax
movq (%rax), %rax
movq -0x28(%rbp), %rsi
movabsq $0xffffffff, %rcx       # imm = 0xFFFFFFFF
andq 0x8(%rsi), %rcx
movl %ecx, %edi
addl $0x1, %edi
movl %edi, %edi
movl %edi, %r8d
movq 0x8(%rsi), %rdi
movabsq $0xffffffff, %r9        # imm = 0xFFFFFFFF
andq %r9, %r8
movabsq $-0x100000000, %r9      # imm = 0xFFFFFFFF00000000
andq %r9, %rdi
orq %r8, %rdi
movq %rdi, 0x8(%rsi)
movl %ecx, %ecx
movq %rdx, (%rax,%rcx,8)
addq $0x40, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)