// File: /workspace/github_c_makefile_star2_O0/reactive-systems[P]aiger-ltl-model-checker/aiger.c
// Function: aiger_add_and
void
aiger_add_and (aiger * public, unsigned lhs, unsigned rhs0, unsigned rhs1)
{
  IMPORT_private_FROM (public);
  aiger_type *type;
  aiger_and *and;

  assert (!aiger_error (public));

  assert (lhs > 1);
  assert (!aiger_sign (lhs));

  type = aiger_import_literal (private, lhs);

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

  type->and = 1;
  type->idx = public->num_ands;

  aiger_import_literal (private, rhs0);
  aiger_import_literal (private, rhs1);

  if (public->num_ands == private->size_ands)
    ENLARGE (public->ands, private->size_ands);

  and = public->ands + public->num_ands;

  and->lhs = lhs;
  and->rhs0 = rhs0;
  and->rhs1 = rhs1;

  public->num_ands++;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x70, %rsp
movq %rdi, -0x8(%rbp)
movl %esi, -0xc(%rbp)
movl %edx, -0x10(%rbp)
movl %ecx, -0x14(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x20(%rbp)
movq -0x8(%rbp), %rdi
callq 0x2a70
cmpq $0x0, %rax
jne 0x3a9e
jmp 0x3abd
leaq 0x8852(%rip), %rdi      # 0xc2f7
leaq 0x87fd(%rip), %rsi      # 0xc2a9
movl $0x1fd, %edx            # imm = 0x1FD
leaq 0x8983(%rip), %rcx      # 0xc43b
callq 0x10f0
cmpl $0x1, -0xc(%rbp)
jbe 0x3ac5
jmp 0x3ae4
leaq 0x89b5(%rip), %rdi      # 0xc481
leaq 0x87d6(%rip), %rsi      # 0xc2a9
movl $0x1ff, %edx            # imm = 0x1FF
leaq 0x895c(%rip), %rcx      # 0xc43b
callq 0x10f0
movl -0xc(%rbp), %eax
andl $0x1, %eax
cmpl $0x0, %eax
jne 0x3af1
jmp 0x3b10
leaq 0x8991(%rip), %rdi      # 0xc489
leaq 0x87aa(%rip), %rsi      # 0xc2a9
movl $0x200, %edx            # imm = 0x200
leaq 0x8930(%rip), %rcx      # 0xc43b
callq 0x10f0
movq -0x20(%rbp), %rdi
movl -0xc(%rbp), %esi
callq 0x2a90
movq %rax, -0x28(%rbp)
movq -0x28(%rbp), %rax
movb (%rax), %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x0, %eax
jne 0x3b32
jmp 0x3b51
leaq 0x8820(%rip), %rdi      # 0xc359
leaq 0x8769(%rip), %rsi      # 0xc2a9
movl $0x204, %edx            # imm = 0x204
leaq 0x88ef(%rip), %rcx      # 0xc43b
callq 0x10f0
movq -0x28(%rbp), %rax
movb (%rax), %al
shrb %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x0, %eax
jne 0x3b65
jmp 0x3b84
leaq 0x87fa(%rip), %rdi      # 0xc366
leaq 0x8736(%rip), %rsi      # 0xc2a9
movl $0x205, %edx            # imm = 0x205
leaq 0x88bc(%rip), %rcx      # 0xc43b
callq 0x10f0
movq -0x28(%rbp), %rax
movb (%rax), %al
shrb $0x2, %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x0, %eax
jne 0x3b99
jmp 0x3bb8
leaq 0x87d3(%rip), %rdi      # 0xc373
leaq 0x8702(%rip), %rsi      # 0xc2a9
movl $0x206, %edx            # imm = 0x206
leaq 0x8888(%rip), %rcx      # 0xc43b
callq 0x10f0
movq -0x28(%rbp), %rax
movb (%rax), %cl
andb $-0x5, %cl
orb $0x4, %cl
movb %cl, (%rax)
movq -0x8(%rbp), %rax
movl 0x10(%rax), %ecx
movq -0x28(%rbp), %rax
movl %ecx, 0x4(%rax)
movq -0x20(%rbp), %rdi
movl -0x10(%rbp), %esi
callq 0x2a90
movq -0x20(%rbp), %rdi
movl -0x14(%rbp), %esi
callq 0x2a90
movq -0x8(%rbp), %rax
movl 0x10(%rax), %eax
movq -0x20(%rbp), %rcx
cmpl 0x98(%rcx), %eax
jne 0x3d08
jmp 0x3c05
movq -0x20(%rbp), %rax
movl 0x98(%rax), %eax
movq %rax, -0x38(%rbp)
cmpq $0x0, -0x38(%rbp)
je 0x3c27
movq -0x38(%rbp), %rax
shlq %rax
movq %rax, -0x68(%rbp)
jmp 0x3c32
movl $0x1, %eax
movq %rax, -0x68(%rbp)
jmp 0x3c32
movq -0x68(%rbp), %rax
movq %rax, -0x40(%rbp)
imulq $0xc, -0x38(%rbp), %rax
movq %rax, -0x48(%rbp)
imulq $0xc, -0x40(%rbp), %rax
movq %rax, -0x50(%rbp)
movq -0x48(%rbp), %rax
cmpq -0x50(%rbp), %rax
jae 0x3c60
movq -0x48(%rbp), %rax
movq %rax, -0x70(%rbp)
jmp 0x3c68
movq -0x50(%rbp), %rax
movq %rax, -0x70(%rbp)
movq -0x70(%rbp), %rax
movq %rax, -0x58(%rbp)
movq -0x20(%rbp), %rax
movq 0xc0(%rax), %rax
movq -0x20(%rbp), %rcx
movq 0xb8(%rcx), %rdi
movq -0x50(%rbp), %rsi
callq *%rax
movq %rax, -0x60(%rbp)
movq -0x60(%rbp), %rdi
movq -0x8(%rbp), %rax
movq 0x60(%rax), %rsi
movq -0x58(%rbp), %rdx
callq 0x1140
movq -0x50(%rbp), %rax
cmpq -0x48(%rbp), %rax
jbe 0x3cc6
movq -0x60(%rbp), %rdi
addq -0x48(%rbp), %rdi
movq -0x50(%rbp), %rdx
subq -0x48(%rbp), %rdx
xorl %esi, %esi
callq 0x1100
movq -0x20(%rbp), %rax
movq 0xc8(%rax), %rax
movq -0x20(%rbp), %rcx
movq 0xb8(%rcx), %rdi
movq -0x8(%rbp), %rcx
movq 0x60(%rcx), %rsi
movq -0x48(%rbp), %rdx
callq *%rax
movq -0x60(%rbp), %rcx
movq -0x8(%rbp), %rax
movq %rcx, 0x60(%rax)
movq -0x40(%rbp), %rax
movl %eax, %ecx
movq -0x20(%rbp), %rax
movl %ecx, 0x98(%rax)
jmp 0x3d08
movq -0x8(%rbp), %rax
movq 0x60(%rax), %rax
movq -0x8(%rbp), %rcx
movl 0x10(%rcx), %ecx
imulq $0xc, %rcx, %rcx
addq %rcx, %rax
movq %rax, -0x30(%rbp)
movl -0xc(%rbp), %ecx
movq -0x30(%rbp), %rax
movl %ecx, (%rax)
movl -0x10(%rbp), %ecx
movq -0x30(%rbp), %rax
movl %ecx, 0x4(%rax)
movl -0x14(%rbp), %ecx
movq -0x30(%rbp), %rax
movl %ecx, 0x8(%rax)
movq -0x8(%rbp), %rax
movl 0x10(%rax), %ecx
addl $0x1, %ecx
movl %ecx, 0x10(%rax)
addq $0x70, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)