// File: /workspace/github_c_makefile_star2_O0/mtnygard[P]complisp/lisp.c
// Function: compile_nested_cons
TEST compile_nested_cons(Buffer *buf, uword *heap) {
  ASTNode *node = Reader_read("(cons (cons 1 2) (cons 3 4))");
  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(Object_is_pair(Object_pair_car(result)));
  ASSERT_EQ_FMT(Object_encode_integer(1),
                Object_pair_car(Object_pair_car(result)), "0x%lx");
  ASSERT_EQ_FMT(Object_encode_integer(2),
                Object_pair_cdr(Object_pair_car(result)), "0x%lx");
  ASSERT(Object_is_pair(Object_pair_cdr(result)));
  ASSERT_EQ_FMT(Object_encode_integer(3),
                Object_pair_car(Object_pair_cdr(result)), "0x%lx");
  ASSERT_EQ_FMT(Object_encode_integer(4),
                Object_pair_cdr(Object_pair_cdr(result)), "0x%lx");
  AST_heap_free(node);
  PASS();
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x90, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
leaq 0x72a8(%rip), %rdi      # 0x165e2
callq 0x4e40
movq %rax, -0x20(%rbp)
movq -0x10(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x4690
movl %eax, -0x24(%rbp)
movl 0xbdeb(%rip), %eax      # 0x1b144
addl $0x1, %eax
movl %eax, 0xbde2(%rip)      # 0x1b144
cmpl $0x0, -0x24(%rbp)
je 0xf3b0
jmp 0xf36a
leaq 0x5332(%rip), %rax      # 0x146a3
movq %rax, 0xbdd8(%rip)      # 0x1b150
movl $0x8da, 0xbdc6(%rip)    # imm = 0x8DA
leaq 0x6cfc(%rip), %rax      # 0x16085
movq %rax, 0xbdc8(%rip)      # 0x1b158
movzbl 0xbd69(%rip), %eax      # 0x1b100
andl $0x4, %eax
cmpl $0x0, %eax
je 0xf3a4
callq 0x1040
movl $0xffffffff, -0x4(%rbp) # imm = 0xFFFFFFFF
jmp 0xf9fa
jmp 0xf3b2
movq -0x10(%rbp), %rdi
callq 0x1c50
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0x4e70
movq %rax, -0x30(%rbp)
movl 0xbd72(%rip), %eax      # 0x1b144
addl $0x1, %eax
movl %eax, 0xbd69(%rip)      # 0x1b144
movq -0x30(%rbp), %rdi
callq 0x1460
testb $0x1, %al
jne 0xf430
jmp 0xf3ea
leaq 0x52b2(%rip), %rax      # 0x146a3
movq %rax, 0xbd58(%rip)      # 0x1b150
movl $0x8dd, 0xbd46(%rip)    # imm = 0x8DD
leaq 0x70b5(%rip), %rax      # 0x164be
movq %rax, 0xbd48(%rip)      # 0x1b158
movzbl 0xbce9(%rip), %eax      # 0x1b100
andl $0x4, %eax
cmpl $0x0, %eax
je 0xf424
callq 0x1040
movl $0xffffffff, -0x4(%rbp) # imm = 0xFFFFFFFF
jmp 0xf9fa
jmp 0xf432
jmp 0xf434
movl 0xbd0a(%rip), %eax      # 0x1b144
addl $0x1, %eax
movl %eax, 0xbd01(%rip)      # 0x1b144
movq -0x30(%rbp), %rdi
callq 0x1480
movq %rax, %rdi
callq 0x1460
testb $0x1, %al
jne 0xf4a0
jmp 0xf45a
leaq 0x5242(%rip), %rax      # 0x146a3
movq %rax, 0xbce8(%rip)      # 0x1b150
movl $0x8de, 0xbcd6(%rip)    # imm = 0x8DE
leaq 0x7186(%rip), %rax      # 0x165ff
movq %rax, 0xbcd8(%rip)      # 0x1b158
movzbl 0xbc79(%rip), %eax      # 0x1b100
andl $0x4, %eax
cmpl $0x0, %eax
je 0xf494
callq 0x1040
movl $0xffffffff, -0x4(%rbp) # imm = 0xFFFFFFFF
jmp 0xf9fa
jmp 0xf4a2
jmp 0xf4a4
movl 0xbc9a(%rip), %eax      # 0x1b144
addl $0x1, %eax
movl %eax, 0xbc91(%rip)      # 0x1b144
movl $0x1, %edi
callq 0x1290
movq %rax, -0x38(%rbp)
movq -0x30(%rbp), %rdi
callq 0x1480
movq %rax, %rdi
callq 0x1480
movq %rax, %rcx
movq -0x38(%rbp), %rax
cmpq %rcx, %rax
je 0xf5d1
movq 0xbae7(%rip), %rax      # 0x1afd0
movq (%rax), %rdi
leaq 0x623b(%rip), %rsi      # 0x1572e
movb $0x0, %al
callq 0x1100
movq 0xbacf(%rip), %rax      # 0x1afd0
movq (%rax), %rax
movq %rax, -0x48(%rbp)
movl $0x1, %edi
callq 0x1290
movq -0x48(%rbp), %rdi
movq %rax, %rdx
leaq 0x6da8(%rip), %rsi      # 0x162c8
movb $0x0, %al
callq 0x1100
movq 0xbaa2(%rip), %rax      # 0x1afd0
movq (%rax), %rdi
leaq 0x6202(%rip), %rsi      # 0x1573a
movb $0x0, %al
callq 0x1100
movq 0xba8a(%rip), %rax      # 0x1afd0
movq (%rax), %rax
movq %rax, -0x40(%rbp)
movq -0x30(%rbp), %rdi
callq 0x1480
movq %rax, %rdi
callq 0x1480
movq -0x40(%rbp), %rdi
movq %rax, %rdx
leaq 0x6d5c(%rip), %rsi      # 0x162c8
movb $0x0, %al
callq 0x1100
movq 0xba56(%rip), %rax      # 0x1afd0
movq (%rax), %rdi
leaq 0x7438(%rip), %rsi      # 0x169bc
movb $0x0, %al
callq 0x1100
leaq 0x5111(%rip), %rax      # 0x146a3
movq %rax, 0xbbb7(%rip)      # 0x1b150
movl $0x8e0, 0xbba5(%rip)    # imm = 0x8E0
leaq 0x707d(%rip), %rax      # 0x16627
movq %rax, 0xbba7(%rip)      # 0x1b158
movzbl 0xbb48(%rip), %eax      # 0x1b100
andl $0x4, %eax
cmpl $0x0, %eax
je 0xf5c5
callq 0x1040
movl $0xffffffff, -0x4(%rbp) # imm = 0xFFFFFFFF
jmp 0xf9fa
jmp 0xf5d3
jmp 0xf5d5
movl 0xbb69(%rip), %eax      # 0x1b144
addl $0x1, %eax
movl %eax, 0xbb60(%rip)      # 0x1b144
movl $0x2, %edi
callq 0x1290
movq %rax, -0x50(%rbp)
movq -0x30(%rbp), %rdi
callq 0x1480
movq %rax, %rdi
callq 0x14d0
movq %rax, %rcx
movq -0x50(%rbp), %rax
cmpq %rcx, %rax
je 0xf702
movq 0xb9b6(%rip), %rax      # 0x1afd0
movq (%rax), %rdi
leaq 0x610a(%rip), %rsi      # 0x1572e
movb $0x0, %al
callq 0x1100
movq 0xb99e(%rip), %rax      # 0x1afd0
movq (%rax), %rax
movq %rax, -0x60(%rbp)
movl $0x2, %edi
callq 0x1290
movq -0x60(%rbp), %rdi
movq %rax, %rdx
leaq 0x6c77(%rip), %rsi      # 0x162c8
movb $0x0, %al
callq 0x1100
movq 0xb971(%rip), %rax      # 0x1afd0
movq (%rax), %rdi
leaq 0x60d1(%rip), %rsi      # 0x1573a
movb $0x0, %al
callq 0x1100
movq 0xb959(%rip), %rax      # 0x1afd0
movq (%rax), %rax
movq %rax, -0x58(%rbp)
movq -0x30(%rbp), %rdi
callq 0x1480
movq %rax, %rdi
callq 0x14d0
movq -0x58(%rbp), %rdi
movq %rax, %rdx
leaq 0x6c2b(%rip), %rsi      # 0x162c8
movb $0x0, %al
callq 0x1100
movq 0xb925(%rip), %rax      # 0x1afd0
movq (%rax), %rdi
leaq 0x7307(%rip), %rsi      # 0x169bc
movb $0x0, %al
callq 0x1100
leaq 0x4fe0(%rip), %rax      # 0x146a3
movq %rax, 0xba86(%rip)      # 0x1b150
movl $0x8e2, 0xba74(%rip)    # imm = 0x8E2
leaq 0x6f91(%rip), %rax      # 0x1666c
movq %rax, 0xba76(%rip)      # 0x1b158
movzbl 0xba17(%rip), %eax      # 0x1b100
andl $0x4, %eax
cmpl $0x0, %eax
je 0xf6f6
callq 0x1040
movl $0xffffffff, -0x4(%rbp) # imm = 0xFFFFFFFF
jmp 0xf9fa
jmp 0xf704
jmp 0xf706
movl 0xba38(%rip), %eax      # 0x1b144
addl $0x1, %eax
movl %eax, 0xba2f(%rip)      # 0x1b144
movq -0x30(%rbp), %rdi
callq 0x14d0
movq %rax, %rdi
callq 0x1460
testb $0x1, %al
jne 0xf772
jmp 0xf72c
leaq 0x4f70(%rip), %rax      # 0x146a3
movq %rax, 0xba16(%rip)      # 0x1b150
movl $0x8e3, 0xba04(%rip)    # imm = 0x8E3
leaq 0x6f66(%rip), %rax      # 0x166b1
movq %rax, 0xba06(%rip)      # 0x1b158
movzbl 0xb9a7(%rip), %eax      # 0x1b100
andl $0x4, %eax
cmpl $0x0, %eax
je 0xf766
callq 0x1040
movl $0xffffffff, -0x4(%rbp) # imm = 0xFFFFFFFF
jmp 0xf9fa
jmp 0xf774
jmp 0xf776
movl 0xb9c8(%rip), %eax      # 0x1b144
addl $0x1, %eax
movl %eax, 0xb9bf(%rip)      # 0x1b144
movl $0x3, %edi
callq 0x1290
movq %rax, -0x68(%rbp)
movq -0x30(%rbp), %rdi
callq 0x14d0
movq %rax, %rdi
callq 0x1480
movq %rax, %rcx
movq -0x68(%rbp), %rax
cmpq %rcx, %rax
je 0xf8a3
movq 0xb815(%rip), %rax      # 0x1afd0
movq (%rax), %rdi
leaq 0x5f69(%rip), %rsi      # 0x1572e
movb $0x0, %al
callq 0x1100
movq 0xb7fd(%rip), %rax      # 0x1afd0
movq (%rax), %rax
movq %rax, -0x78(%rbp)
movl $0x3, %edi
callq 0x1290
movq -0x78(%rbp), %rdi
movq %rax, %rdx
leaq 0x6ad6(%rip), %rsi      # 0x162c8
movb $0x0, %al
callq 0x1100
movq 0xb7d0(%rip), %rax      # 0x1afd0
movq (%rax), %rdi
leaq 0x5f30(%rip), %rsi      # 0x1573a
movb $0x0, %al
callq 0x1100
movq 0xb7b8(%rip), %rax      # 0x1afd0
movq (%rax), %rax
movq %rax, -0x70(%rbp)
movq -0x30(%rbp), %rdi
callq 0x14d0
movq %rax, %rdi
callq 0x1480
movq -0x70(%rbp), %rdi
movq %rax, %rdx
leaq 0x6a8a(%rip), %rsi      # 0x162c8
movb $0x0, %al
callq 0x1100
movq 0xb784(%rip), %rax      # 0x1afd0
movq (%rax), %rdi
leaq 0x7166(%rip), %rsi      # 0x169bc
movb $0x0, %al
callq 0x1100
leaq 0x4e3f(%rip), %rax      # 0x146a3
movq %rax, 0xb8e5(%rip)      # 0x1b150
movl $0x8e5, 0xb8d3(%rip)    # imm = 0x8E5
leaq 0x6e5d(%rip), %rax      # 0x166d9
movq %rax, 0xb8d5(%rip)      # 0x1b158
movzbl 0xb876(%rip), %eax      # 0x1b100
andl $0x4, %eax
cmpl $0x0, %eax
je 0xf897
callq 0x1040
movl $0xffffffff, -0x4(%rbp) # imm = 0xFFFFFFFF
jmp 0xf9fa
jmp 0xf8a5
jmp 0xf8a7
movl 0xb897(%rip), %eax      # 0x1b144
addl $0x1, %eax
movl %eax, 0xb88e(%rip)      # 0x1b144
movl $0x4, %edi
callq 0x1290
movq %rax, -0x80(%rbp)
movq -0x30(%rbp), %rdi
callq 0x14d0
movq %rax, %rdi
callq 0x14d0
movq %rax, %rcx
movq -0x80(%rbp), %rax
cmpq %rcx, %rax
je 0xf9dd
movq 0xb6e4(%rip), %rax      # 0x1afd0
movq (%rax), %rdi
leaq 0x5e38(%rip), %rsi      # 0x1572e
movb $0x0, %al
callq 0x1100
movq 0xb6cc(%rip), %rax      # 0x1afd0
movq (%rax), %rax
movq %rax, -0x90(%rbp)
movl $0x4, %edi
callq 0x1290
movq -0x90(%rbp), %rdi
movq %rax, %rdx
leaq 0x699f(%rip), %rsi      # 0x162c8
movb $0x0, %al
callq 0x1100
movq 0xb699(%rip), %rax      # 0x1afd0
movq (%rax), %rdi
leaq 0x5df9(%rip), %rsi      # 0x1573a
movb $0x0, %al
callq 0x1100
movq 0xb681(%rip), %rax      # 0x1afd0
movq (%rax), %rax
movq %rax, -0x88(%rbp)
movq -0x30(%rbp), %rdi
callq 0x14d0
movq %rax, %rdi
callq 0x14d0
movq -0x88(%rbp), %rdi
movq %rax, %rdx
leaq 0x694d(%rip), %rsi      # 0x162c8
movb $0x0, %al
callq 0x1100
movq 0xb647(%rip), %rax      # 0x1afd0
movq (%rax), %rdi
leaq 0x7029(%rip), %rsi      # 0x169bc
movb $0x0, %al
callq 0x1100
leaq 0x4d02(%rip), %rax      # 0x146a3
movq %rax, 0xb7a8(%rip)      # 0x1b150
movl $0x8e7, 0xb796(%rip)    # imm = 0x8E7
leaq 0x6d65(%rip), %rax      # 0x1671e
movq %rax, 0xb798(%rip)      # 0x1b158
movzbl 0xb739(%rip), %eax      # 0x1b100
andl $0x4, %eax
cmpl $0x0, %eax
je 0xf9d4
callq 0x1040
movl $0xffffffff, -0x4(%rbp) # imm = 0xFFFFFFFF
jmp 0xf9fa
jmp 0xf9df
movq -0x20(%rbp), %rdi
callq 0x1800
movq $0x0, 0xb765(%rip) # 0x1b158
movl $0x0, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0x90, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)