// File: /workspace/github_c_makefile_star2_O2/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 0x2267
movl %esi, %r14d
testl %esi, %esi
je 0x2286
testb $0x1, %r14b
jne 0x22a5
movq %rcx, %r12
movl %edx, %ebx
movq %rdi, %r15
movl %r14d, %esi
callq 0x1fd2
movb (%rax), %cl
testb $0x1, %cl
jne 0x22c4
testb $0x2, %cl
jne 0x22e3
testb $0x4, %cl
jne 0x2302
orb $0x2, %cl
movb %cl, (%rax)
movl 0x8(%r15), %ecx
movl %ecx, 0x4(%rax)
movq %r15, %rdi
movl %ebx, %esi
callq 0x1fd2
movq %r15, %rdi
movq %r12, %rsi
callq 0x2092
movl 0x8(%r15), %r13d
cmpl 0x90(%r15), %r13d
jne 0x222e
movq %rax, -0x40(%rbp)
movl %r14d, -0x2c(%rbp)
movl %ebx, -0x30(%rbp)
leaq (,%r13,2), %rax
testl %r13d, %r13d
pushq $0x1
popq %rbx
cmovneq %rax, %rbx
shlq $0x5, %r13
movq %rbx, -0x38(%rbp)
shlq $0x5, %rbx
cmpq %rbx, %r13
movq %rbx, %r14
cmovbq %r13, %r14
movq 0xb8(%r15), %rdi
movq %rbx, %rsi
callq *0xc0(%r15)
movq %rax, %r12
movq 0x30(%r15), %rsi
movq %rax, %rdi
movq %r14, %rdx
callq 0x1140
subq %r13, %rbx
jbe 0x21f9
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 0x8(%r15), %r13d
movl -0x30(%rbp), %ebx
movl -0x2c(%rbp), %r14d
movq -0x40(%rbp), %rax
jmp 0x2232
movq 0x30(%r15), %r12
leal 0x1(%r13), %ecx
movl %ecx, 0x8(%r15)
movl %r13d, %ecx
shlq $0x5, %rcx
movl %r14d, (%r12,%rcx)
movl %ebx, 0x4(%r12,%rcx)
xorps %xmm0, %xmm0
movups %xmm0, 0x8(%r12,%rcx)
movq %rax, 0x18(%r12,%rcx)
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x60d3(%rip), %rdi      # 0x8341
leaq 0x607e(%rip), %rsi      # 0x82f3
leaq 0x614c(%rip), %rcx      # 0x83c8
movl $0x185, %edx            # imm = 0x185
callq 0x10f0
leaq 0x619a(%rip), %rdi      # 0x8427
leaq 0x605f(%rip), %rsi      # 0x82f3
leaq 0x612d(%rip), %rcx      # 0x83c8
movl $0x187, %edx            # imm = 0x187
callq 0x10f0
leaq 0x60e5(%rip), %rdi      # 0x8391
leaq 0x6040(%rip), %rsi      # 0x82f3
leaq 0x610e(%rip), %rcx      # 0x83c8
movl $0x188, %edx            # imm = 0x188
callq 0x10f0
leaq 0x60d8(%rip), %rdi      # 0x83a3
leaq 0x6021(%rip), %rsi      # 0x82f3
leaq 0x60ef(%rip), %rcx      # 0x83c8
movl $0x18c, %edx            # imm = 0x18C
callq 0x10f0
leaq 0x60c6(%rip), %rdi      # 0x83b0
leaq 0x6002(%rip), %rsi      # 0x82f3
leaq 0x60d0(%rip), %rcx      # 0x83c8
movl $0x18d, %edx            # imm = 0x18D
callq 0x10f0
leaq 0x60b4(%rip), %rdi      # 0x83bd
leaq 0x5fe3(%rip), %rsi      # 0x82f3
leaq 0x60b1(%rip), %rcx      # 0x83c8
movl $0x18e, %edx            # imm = 0x18E
callq 0x10f0