// File: /workspace/github_c_makefile_star2_O0/mtnygard[P]complisp/lisp.c
// Function: compile_two_cons
TEST compile_two_cons(Buffer *buf, uword *heap) {
  ASTNode *node = Reader_read(
      "(let ((a (cons 1 2)) (b (cons 3 4))) (cons (cdr a) (cdr b)))");
  int compile_result = Compile_entry(buf, node);
  ASSERT_EQ(compile_result, 0);
  Buffer_make_executable(buf);
  uword result = Testing_execute_entry(buf, heap);
  ASSERT(Object_is_pair(result));
  ASSERT_EQ_FMT(Object_encode_integer(2), Object_pair_car(result), "0x%lx");
  ASSERT_EQ_FMT(Object_encode_integer(4), Object_pair_cdr(result), "0x%lx");
  AST_heap_free(node);
  PASS();
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x60, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
leaq 0x7586(%rip), %rdi      # 0x1653d
callq 0x4e40
movq %rax, -0x20(%rbp)
movq -0x10(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x4690
movl %eax, -0x24(%rbp)
movl 0xc16e(%rip), %eax      # 0x1b144
addl $0x1, %eax
movl %eax, 0xc165(%rip)      # 0x1b144
cmpl $0x0, -0x24(%rbp)
je 0xf02d
jmp 0xefe7
leaq 0x56b5(%rip), %rax      # 0x146a3
movq %rax, 0xc15b(%rip)      # 0x1b150
movl $0x8cd, 0xc149(%rip)    # imm = 0x8CD
leaq 0x707f(%rip), %rax      # 0x16085
movq %rax, 0xc14b(%rip)      # 0x1b158
movzbl 0xc0ec(%rip), %eax      # 0x1b100
andl $0x4, %eax
cmpl $0x0, %eax
je 0xf021
callq 0x1040
movl $0xffffffff, -0x4(%rbp) # imm = 0xFFFFFFFF
jmp 0xf309
jmp 0xf02f
movq -0x10(%rbp), %rdi
callq 0x1c50
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0x4e70
movq %rax, -0x30(%rbp)
movl 0xc0f5(%rip), %eax      # 0x1b144
addl $0x1, %eax
movl %eax, 0xc0ec(%rip)      # 0x1b144
movq -0x30(%rbp), %rdi
callq 0x1460
testb $0x1, %al
jne 0xf0ad
jmp 0xf067
leaq 0x5635(%rip), %rax      # 0x146a3
movq %rax, 0xc0db(%rip)      # 0x1b150
movl $0x8d0, 0xc0c9(%rip)    # imm = 0x8D0
leaq 0x7438(%rip), %rax      # 0x164be
movq %rax, 0xc0cb(%rip)      # 0x1b158
movzbl 0xc06c(%rip), %eax      # 0x1b100
andl $0x4, %eax
cmpl $0x0, %eax
je 0xf0a1
callq 0x1040
movl $0xffffffff, -0x4(%rbp) # imm = 0xFFFFFFFF
jmp 0xf309
jmp 0xf0af
jmp 0xf0b1
movl 0xc08d(%rip), %eax      # 0x1b144
addl $0x1, %eax
movl %eax, 0xc084(%rip)      # 0x1b144
movl $0x2, %edi
callq 0x1290
movq %rax, -0x38(%rbp)
movq -0x30(%rbp), %rdi
callq 0x1480
movq %rax, %rcx
movq -0x38(%rbp), %rax
cmpq %rcx, %rax
je 0xf1ce
movq 0xbee2(%rip), %rax      # 0x1afd0
movq (%rax), %rdi
leaq 0x6636(%rip), %rsi      # 0x1572e
movb $0x0, %al
callq 0x1100
movq 0xbeca(%rip), %rax      # 0x1afd0
movq (%rax), %rax
movq %rax, -0x48(%rbp)
movl $0x2, %edi
callq 0x1290
movq -0x48(%rbp), %rdi
movq %rax, %rdx
leaq 0x71a3(%rip), %rsi      # 0x162c8
movb $0x0, %al
callq 0x1100
movq 0xbe9d(%rip), %rax      # 0x1afd0
movq (%rax), %rdi
leaq 0x65fd(%rip), %rsi      # 0x1573a
movb $0x0, %al
callq 0x1100
movq 0xbe85(%rip), %rax      # 0x1afd0
movq (%rax), %rax
movq %rax, -0x40(%rbp)
movq -0x30(%rbp), %rdi
callq 0x1480
movq -0x40(%rbp), %rdi
movq %rax, %rdx
leaq 0x715f(%rip), %rsi      # 0x162c8
movb $0x0, %al
callq 0x1100
movq 0xbe59(%rip), %rax      # 0x1afd0
movq (%rax), %rdi
leaq 0x783b(%rip), %rsi      # 0x169bc
movb $0x0, %al
callq 0x1100
leaq 0x5514(%rip), %rax      # 0x146a3
movq %rax, 0xbfba(%rip)      # 0x1b150
movl $0x8d1, 0xbfa8(%rip)    # imm = 0x8D1
leaq 0x73d3(%rip), %rax      # 0x1657a
movq %rax, 0xbfaa(%rip)      # 0x1b158
movzbl 0xbf4b(%rip), %eax      # 0x1b100
andl $0x4, %eax
cmpl $0x0, %eax
je 0xf1c2
callq 0x1040
movl $0xffffffff, -0x4(%rbp) # imm = 0xFFFFFFFF
jmp 0xf309
jmp 0xf1d0
jmp 0xf1d2
movl 0xbf6c(%rip), %eax      # 0x1b144
addl $0x1, %eax
movl %eax, 0xbf63(%rip)      # 0x1b144
movl $0x4, %edi
callq 0x1290
movq %rax, -0x50(%rbp)
movq -0x30(%rbp), %rdi
callq 0x14d0
movq %rax, %rcx
movq -0x50(%rbp), %rax
cmpq %rcx, %rax
je 0xf2ec
movq 0xbdc1(%rip), %rax      # 0x1afd0
movq (%rax), %rdi
leaq 0x6515(%rip), %rsi      # 0x1572e
movb $0x0, %al
callq 0x1100
movq 0xbda9(%rip), %rax      # 0x1afd0
movq (%rax), %rax
movq %rax, -0x60(%rbp)
movl $0x4, %edi
callq 0x1290
movq -0x60(%rbp), %rdi
movq %rax, %rdx
leaq 0x7082(%rip), %rsi      # 0x162c8
movb $0x0, %al
callq 0x1100
movq 0xbd7c(%rip), %rax      # 0x1afd0
movq (%rax), %rdi
leaq 0x64dc(%rip), %rsi      # 0x1573a
movb $0x0, %al
callq 0x1100
movq 0xbd64(%rip), %rax      # 0x1afd0
movq (%rax), %rax
movq %rax, -0x58(%rbp)
movq -0x30(%rbp), %rdi
callq 0x14d0
movq -0x58(%rbp), %rdi
movq %rax, %rdx
leaq 0x703e(%rip), %rsi      # 0x162c8
movb $0x0, %al
callq 0x1100
movq 0xbd38(%rip), %rax      # 0x1afd0
movq (%rax), %rdi
leaq 0x771a(%rip), %rsi      # 0x169bc
movb $0x0, %al
callq 0x1100
leaq 0x53f3(%rip), %rax      # 0x146a3
movq %rax, 0xbe99(%rip)      # 0x1b150
movl $0x8d2, 0xbe87(%rip)    # imm = 0x8D2
leaq 0x72e6(%rip), %rax      # 0x165ae
movq %rax, 0xbe89(%rip)      # 0x1b158
movzbl 0xbe2a(%rip), %eax      # 0x1b100
andl $0x4, %eax
cmpl $0x0, %eax
je 0xf2e3
callq 0x1040
movl $0xffffffff, -0x4(%rbp) # imm = 0xFFFFFFFF
jmp 0xf309
jmp 0xf2ee
movq -0x20(%rbp), %rdi
callq 0x1800
movq $0x0, 0xbe56(%rip) # 0x1b158
movl $0x0, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0x60, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)