// File: /workspace/github_c_makefile_star2_O1/reactive-systems[P]aiger-ltl-model-checker/aiger.c
// Function: aiger_add_latch
void
aiger_add_latch (aiger * public,
		 unsigned lit, unsigned next, const char *name)
{
  IMPORT_private_FROM (public);
  aiger_symbol symbol;
  aiger_type *type;

  assert (!aiger_error (public));

  assert (lit);
  assert (!aiger_sign (lit));

  type = aiger_import_literal (private, lit);

  assert (!type->input);
  assert (!type->latch);
  assert (!type->and);

  /* Warning: importing 'next' makes 'type' invalid.
   */
  type->latch = 1;
  type->idx = public->num_latches;

  aiger_import_literal (private, next);

  CLR (symbol);
  symbol.lit = lit;
  symbol.next = next;
  symbol.name = aiger_copy_str (private, name);

  PUSH (public->latches, public->num_latches, private->size_latches, symbol);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x18, %rsp
cmpq $0x0, 0xd0(%rdi)
jne 0x25cb
movl %esi, %r14d
testl %esi, %esi
je 0x25ea
testb $0x1, %r14b
jne 0x2609
movq %rcx, %r12
movl %edx, %ebx
movq %rdi, %r15
movl %r14d, %esi
callq 0x233c
movb (%rax), %cl
testb $0x1, %cl
jne 0x2628
testb $0x2, %cl
jne 0x2647
testb $0x4, %cl
jne 0x2666
orb $0x2, %cl
movb %cl, (%rax)
movl 0x8(%r15), %ecx
movl %ecx, 0x4(%rax)
movq %r15, %rdi
movl %ebx, %esi
callq 0x233c
movq %r15, %rdi
movq %r12, %rsi
callq 0x2404
movl 0x90(%r15), %r13d
cmpl %r13d, 0x8(%r15)
jne 0x2594
movq %rax, -0x40(%rbp)
movl %ebx, -0x2c(%rbp)
leaq (,%r13,2), %rax
testq %r13, %r13
movl $0x1, %ebx
cmovneq %rax, %rbx
shlq $0x5, %r13
movq %rbx, -0x38(%rbp)
shlq $0x5, %rbx
cmpq %rbx, %r13
movq %rbx, %r12
cmovbq %r13, %r12
movq 0xb8(%r15), %rdi
movq %rbx, %rsi
callq *0xc0(%r15)
movq 0x30(%r15), %rsi
movq %rax, %rdi
movq %r12, %rdx
movq %rax, %r12
callq 0x1140
subq %r13, %rbx
jbe 0x2569
movq %r12, %rdi
addq %r13, %rdi
xorl %esi, %esi
movq %rbx, %rdx
callq 0x1100
movq 0x30(%r15), %rsi
movq 0xb8(%r15), %rdi
movq %r13, %rdx
callq *0xc8(%r15)
movq %r12, 0x30(%r15)
movq -0x38(%rbp), %rax
movl %eax, 0x90(%r15)
movl -0x2c(%rbp), %ebx
movq -0x40(%rbp), %rax
movq 0x30(%r15), %rsi
movl 0x8(%r15), %ecx
leal 0x1(%rcx), %edx
movl %edx, 0x8(%r15)
shlq $0x5, %rcx
movl %r14d, (%rsi,%rcx)
movl %ebx, 0x4(%rsi,%rcx)
xorps %xmm0, %xmm0
movups %xmm0, 0x8(%rsi,%rcx)
movq %rax, 0x18(%rsi,%rcx)
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x5d6f(%rip), %rdi      # 0x8341
leaq 0x5d1a(%rip), %rsi      # 0x82f3
leaq 0x5de8(%rip), %rcx      # 0x83c8
movl $0x185, %edx            # imm = 0x185
callq 0x10f0
leaq 0x5e36(%rip), %rdi      # 0x8427
leaq 0x5cfb(%rip), %rsi      # 0x82f3
leaq 0x5dc9(%rip), %rcx      # 0x83c8
movl $0x187, %edx            # imm = 0x187
callq 0x10f0
leaq 0x5d81(%rip), %rdi      # 0x8391
leaq 0x5cdc(%rip), %rsi      # 0x82f3
leaq 0x5daa(%rip), %rcx      # 0x83c8
movl $0x188, %edx            # imm = 0x188
callq 0x10f0
leaq 0x5d74(%rip), %rdi      # 0x83a3
leaq 0x5cbd(%rip), %rsi      # 0x82f3
leaq 0x5d8b(%rip), %rcx      # 0x83c8
movl $0x18c, %edx            # imm = 0x18C
callq 0x10f0
leaq 0x5d62(%rip), %rdi      # 0x83b0
leaq 0x5c9e(%rip), %rsi      # 0x82f3
leaq 0x5d6c(%rip), %rcx      # 0x83c8
movl $0x18d, %edx            # imm = 0x18D
callq 0x10f0
leaq 0x5d50(%rip), %rdi      # 0x83bd
leaq 0x5c7f(%rip), %rsi      # 0x82f3
leaq 0x5d4d(%rip), %rcx      # 0x83c8
movl $0x18e, %edx            # imm = 0x18E
callq 0x10f0