// File: /workspace/github_cpp_makefile_star2_O2/andrakis[P]alisp/tests.cpp
// Function: test()
void test() {
	Cell one(IntCell(1)), two(IntCell(2));
	Cell three(one);
	three += two;

	std::cout << "One: " << one << std::endl;
	std::cout << "Two: " << two << std::endl;
	std::cout << "Three: " << three << std::endl;

	std::cout << "Nil: " << Nil << std::endl;
	std::cout << "True: " << True << std::endl;
	std::cout << "False: " << False << std::endl;

	ListType args;
	args.push_back(one);
	args.push_back(two);
	args.push_back(three);
	Stdlib::print(args);

	ListCell args2;
	args2.push(three);
	args2.push(two);
	args2.push(one);
	std::cout << " At 0: " << args2.index(0) << std::endl;
	std::cout << " At 1: " << args2.index(1) << std::endl;
	std::cout << " At 2: " << args2.index(2) << std::endl;
	std::cout << " At 3: " << args2.index(3) << std::endl;
	std::cout << "Args: " << args2 << std::endl;
	Stdlib::print(ListType(args2.cbegin(), args2.cend()));

	ProcCell print(Stdlib::print);
	print.proc()(ListType(args2.cbegin(), args2.cend()));

	test_eval();
}

// Assembly:
pushq %r14
pushq %rbx
subq $0x88, %rsp
leaq 0x50(%rsp), %rbx
pushq $0x1
popq %rsi
movq %rbx, %rdi
callq 0x154b6
movq (%rbx), %r14
movq %r14, 0x40(%rsp)
leaq 0x50(%rsp), %rdi
pushq $0x2
popq %rsi
callq 0x154b6
movq 0x50(%rsp), %rax
movq %rax, 0x38(%rsp)
leaq 0x30(%rsp), %rdi
leaq 0x40(%rsp), %rsi
callq 0x90a4
leaq 0x30(%rsp), %rdi
leaq 0x38(%rsp), %rsi
callq 0x1a246
movq 0xff56(%rip), %rdi      # 0x2afc8
leaq 0x2c80(%rip), %rsi      # 0x1dcf9
callq 0x72d0
leaq 0x40(%rsp), %rsi
movq %rax, %rdi
callq 0xd7dc
movq %rax, %rdi
callq 0x71a0
movq 0xff2e(%rip), %rdi      # 0x2afc8
leaq 0x2c5e(%rip), %rsi      # 0x1dcff
callq 0x72d0
leaq 0x38(%rsp), %rsi
movq %rax, %rdi
callq 0xd7dc
movq %rax, %rdi
callq 0x71a0
movq 0xff06(%rip), %rdi      # 0x2afc8
leaq 0x2c3c(%rip), %rsi      # 0x1dd05
callq 0x72d0
leaq 0x30(%rsp), %rsi
movq %rax, %rdi
callq 0xd7dc
movq %rax, %rdi
callq 0x71a0
movq 0xfede(%rip), %rdi      # 0x2afc8
leaq 0x2c1c(%rip), %rsi      # 0x1dd0d
callq 0x72d0
leaq 0x1092b(%rip), %rsi     # 0x2ba28
movq %rax, %rdi
callq 0xd7dc
movq %rax, %rdi
callq 0x71a0
movq 0xfeb4(%rip), %rdi      # 0x2afc8
leaq 0x2bf8(%rip), %rsi      # 0x1dd13
callq 0x72d0
leaq 0x10909(%rip), %rsi     # 0x2ba30
movq %rax, %rdi
callq 0xd7dc
movq %rax, %rdi
callq 0x71a0
movq 0xfe8a(%rip), %rdi      # 0x2afc8
leaq 0x2bd5(%rip), %rsi      # 0x1dd1a
callq 0x72d0
leaq 0x108e7(%rip), %rsi     # 0x2ba38
movq %rax, %rdi
callq 0xd7dc
movq %rax, %rdi
callq 0x71a0
xorps %xmm0, %xmm0
leaq 0x50(%rsp), %rdi
movaps %xmm0, (%rdi)
andq $0x0, 0x10(%rdi)
leaq 0x40(%rsp), %rsi
callq 0xbae0
leaq 0x50(%rsp), %rdi
leaq 0x38(%rsp), %rsi
callq 0xbae0
leaq 0x50(%rsp), %rdi
leaq 0x30(%rsp), %rsi
callq 0xbae0
leaq 0x80(%rsp), %rdi
leaq 0x50(%rsp), %rsi
callq 0x186d8
movq 0x80(%rsp), %rdi
testq %rdi, %rdi
je 0x1b1be
movq (%rdi), %rax
callq *0x10(%rax)
andq $0x0, 0x80(%rsp)
leaq 0x8(%rsp), %rdi
callq 0xb658
leaq 0x8(%rsp), %rdi
leaq 0x30(%rsp), %rsi
callq 0xb678
leaq 0x8(%rsp), %rdi
leaq 0x38(%rsp), %rsi
callq 0xb678
leaq 0x8(%rsp), %rdi
leaq 0x40(%rsp), %rsi
callq 0xb678
movq 0xfdc3(%rip), %rdi      # 0x2afc8
leaq 0x2b16(%rip), %rsi      # 0x1dd22
callq 0x72d0
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
leaq 0x8(%rsp), %rsi
xorl %edx, %edx
callq 0xd6b0
leaq 0x10(%rsp), %rsi
movq %rbx, %rdi
callq 0xd7dc
movq %rax, %rdi
callq 0x71a0
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0x1b24a
movq (%rdi), %rax
callq *0x10(%rax)
movq 0xfd77(%rip), %rdi      # 0x2afc8
leaq 0x2ad2(%rip), %rsi      # 0x1dd2a
callq 0x72d0
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
leaq 0x8(%rsp), %rsi
pushq $0x1
popq %rdx
callq 0xd6b0
leaq 0x10(%rsp), %rsi
movq %rbx, %rdi
callq 0xd7dc
movq %rax, %rdi
callq 0x71a0
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0x1b297
movq (%rdi), %rax
callq *0x10(%rax)
movq 0xfd2a(%rip), %rdi      # 0x2afc8
leaq 0x2a8d(%rip), %rsi      # 0x1dd32
callq 0x72d0
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
leaq 0x8(%rsp), %rsi
pushq $0x2
popq %rdx
callq 0xd6b0
leaq 0x10(%rsp), %rsi
movq %rbx, %rdi
callq 0xd7dc
movq %rax, %rdi
callq 0x71a0
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0x1b2e4
movq (%rdi), %rax
callq *0x10(%rax)
movq 0xfcdd(%rip), %rdi      # 0x2afc8
leaq 0x2a48(%rip), %rsi      # 0x1dd3a
callq 0x72d0
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
leaq 0x8(%rsp), %rsi
pushq $0x3
popq %rdx
callq 0xd6b0
leaq 0x10(%rsp), %rsi
movq %rbx, %rdi
callq 0xd7dc
movq %rax, %rdi
callq 0x71a0
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0x1b331
movq (%rdi), %rax
callq *0x10(%rax)
movq 0xfc90(%rip), %rdi      # 0x2afc8
leaq 0x2a03(%rip), %rsi      # 0x1dd42
callq 0x72d0
leaq 0x8(%rsp), %rsi
movq %rax, %rdi
callq 0xd7dc
movq %rax, %rdi
callq 0x71a0
leaq 0x8(%rsp), %rdi
callq 0xb6b4
movq %rax, %rbx
leaq 0x8(%rsp), %rdi
callq 0xb762
leaq 0x10(%rsp), %rdi
leaq 0x48(%rsp), %rcx
movq %rbx, %rsi
movq %rax, %rdx
callq 0xb3c4
leaq 0x78(%rsp), %rdi
leaq 0x10(%rsp), %rsi
callq 0x186d8
movq 0x78(%rsp), %rdi
testq %rdi, %rdi
je 0x1b3a4
movq (%rdi), %rax
callq *0x10(%rax)
andq $0x0, 0x78(%rsp)
leaq 0x10(%rsp), %rdi
callq 0x944e
leaq -0x2ce3(%rip), %rsi     # 0x186d8
leaq 0x48(%rsp), %rdi
callq 0x1836c
leaq 0x48(%rsp), %rdi
callq 0x13b04
movq %rax, %rbx
leaq 0x8(%rsp), %rdi
callq 0xb6b4
movq %rax, %r14
leaq 0x8(%rsp), %rdi
callq 0xb762
leaq 0x10(%rsp), %rdi
leaq 0x2f(%rsp), %rcx
movq %r14, %rsi
movq %rax, %rdx
callq 0xb3c4
leaq 0x70(%rsp), %rdi
leaq 0x10(%rsp), %rsi
callq *%rbx
movq 0x70(%rsp), %rdi
testq %rdi, %rdi
je 0x1b41a
movq (%rdi), %rax
callq *0x10(%rax)
andq $0x0, 0x70(%rsp)
leaq 0x10(%rsp), %rdi
callq 0x944e
callq 0x1abbc
movq 0x48(%rsp), %rdi
testq %rdi, %rdi
je 0x1b43f
movq (%rdi), %rax
callq *0x10(%rax)
movq 0x8(%rsp), %rdi
testq %rdi, %rdi
je 0x1b44f
movq (%rdi), %rax
callq *0x10(%rax)
leaq 0x50(%rsp), %rdi
callq 0x944e
movq 0x30(%rsp), %rdi
testq %rdi, %rdi
je 0x1b469
movq (%rdi), %rax
callq *0x10(%rax)
movq 0x38(%rsp), %rdi
testq %rdi, %rdi
je 0x1b479
movq (%rdi), %rax
callq *0x10(%rax)
movq 0x40(%rsp), %rdi
testq %rdi, %rdi
je 0x1b489
movq (%rdi), %rax
callq *0x10(%rax)
addq $0x88, %rsp
popq %rbx
popq %r14
retq
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0x944e
jmp 0x1b4d1
jmp 0x1b4ce
jmp 0x1b4fa
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0x944e
jmp 0x1b4fd
jmp 0x1b4fa
jmp 0x1b4fa
jmp 0x1b4fa
jmp 0x1b4fa
jmp 0x1b4fa
jmp 0x1b4f5
movq %rax, %rbx
jmp 0x1b52c
movq %rax, %rbx
jmp 0x1b541
jmp 0x1b4ce
movq %rax, %rbx
movq 0x48(%rsp), %rdi
jmp 0x1b4e8
jmp 0x1b4fa
jmp 0x1b4e0
jmp 0x1b4e0
jmp 0x1b4e0
movq %rax, %rbx
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0x1b4fd
movq (%rdi), %rax
callq *0x10(%rax)
jmp 0x1b4fd
movq %rax, %rbx
jmp 0x1b50d
movq %rax, %rbx
movq 0x8(%rsp), %rdi
testq %rdi, %rdi
je 0x1b50d
movq (%rdi), %rax
callq *0x10(%rax)
leaq 0x50(%rsp), %rdi
callq 0x944e
jmp 0x1b51c
movq %rax, %rbx
movq 0x30(%rsp), %rdi
testq %rdi, %rdi
je 0x1b52c
movq (%rdi), %rax
callq *0x10(%rax)
movq 0x38(%rsp), %rdi
testq %rdi, %rdi
je 0x1b53c
movq (%rdi), %rax
callq *0x10(%rax)
movq 0x40(%rsp), %r14
testq %r14, %r14
je 0x1b54f
movq (%r14), %rax
movq %r14, %rdi
callq *0x10(%rax)
movq %rbx, %rdi
callq 0x7600
nop