// File: nmmmnu[P]HM3/hm3/test/test_list.cc
// Function: list_test(char const*, hm3::BlackHoleList&)
void list_test(const char *module, hm3::BlackHoleList &list){
	Pair p = nullptr;

	list_populate(list);

	PRINTF_TEST("print it",		true					);
	list.print();

	PRINTF_TEST("count",		list.getCount() == 0			);
	PRINTF_TEST("count estim",	list.getCount(true) == 0		);
	PRINTF_TEST("empty",		list.isEmpty()				);
	PRINTF_TEST("sizeof",		list.getBytes() == 0			);

	PRINTF_TEST("put",		list.put( { "key", "val" } )		);
	PRINTF_TEST("get",		! list.get("key")			);
	PRINTF_TEST("remove",		list.remove("key")			);
}

// Assembly:
subq $0xd8, %rsp
movq %rdi, 0xd0(%rsp)
movq %rsi, 0xc8(%rsp)
xorl %eax, %eax
movl %eax, %esi
leaq 0xc0(%rsp), %rdi
callq 0x14b60
movq 0xc8(%rsp), %rdi
callq 0x2760
jmp 0x23d7
movq 0xd0(%rsp), %rsi
leaq 0x14c1e(%rip), %rdi     # 0x17004
leaq 0x14c31(%rip), %rdx     # 0x1701e
leaq 0x14c33(%rip), %rcx     # 0x17027
xorl %eax, %eax
callq 0x2030
jmp 0x23fd
movq 0xc8(%rsp), %rdi
movl $0xa, %esi
callq 0x97b0
jmp 0x2411
movq 0xd0(%rsp), %rax
movq %rax, 0x60(%rsp)
movq 0xc8(%rsp), %rdi
movl $0x1, %esi
callq 0x9840
movq 0x60(%rsp), %rsi
testq %rax, %rax
leaq 0x14be8(%rip), %rax     # 0x17027
leaq 0x14be4(%rip), %rcx     # 0x1702a
cmoveq %rax, %rcx
leaq 0x14bb3(%rip), %rdi     # 0x17004
leaq 0x14cdb(%rip), %rdx     # 0x17133
xorl %eax, %eax
callq 0x2030
jmp 0x2461
movq 0xd0(%rsp), %rax
movq %rax, 0x58(%rsp)
movq 0xc8(%rsp), %rdi
movl $0x1, %esi
callq 0x9840
movq 0x58(%rsp), %rsi
testq %rax, %rax
leaq 0x14b98(%rip), %rax     # 0x17027
leaq 0x14b94(%rip), %rcx     # 0x1702a
cmoveq %rax, %rcx
leaq 0x14b63(%rip), %rdi     # 0x17004
leaq 0x14b87(%rip), %rdx     # 0x1702f
xorl %eax, %eax
callq 0x2030
jmp 0x24b1
movq 0xd0(%rsp), %rax
movq %rax, 0x48(%rsp)
movq 0xc8(%rsp), %rdi
callq 0x9860
movb %al, 0x57(%rsp)
jmp 0x24d1
movq 0x48(%rsp), %rsi
movb 0x57(%rsp), %dl
leaq 0x14b46(%rip), %rax     # 0x17027
leaq 0x14b42(%rip), %rcx     # 0x1702a
testb $0x1, %dl
cmovneq %rax, %rcx
leaq 0x14b0e(%rip), %rdi     # 0x17004
leaq 0x14c54(%rip), %rdx     # 0x17151
xorl %eax, %eax
callq 0x2030
jmp 0x2506
movq 0xd0(%rsp), %rax
movq %rax, 0x40(%rsp)
movq 0xc8(%rsp), %rdi
callq 0x9880
movq 0x40(%rsp), %rsi
testq %rax, %rax
leaq 0x14af8(%rip), %rax     # 0x17027
leaq 0x14af4(%rip), %rcx     # 0x1702a
cmoveq %rax, %rcx
leaq 0x14ac3(%rip), %rdi     # 0x17004
leaq 0x14bfb(%rip), %rdx     # 0x17143
xorl %eax, %eax
callq 0x2030
jmp 0x2551
movq 0xd0(%rsp), %rax
movq %rax, 0x30(%rsp)
movq 0xc8(%rsp), %rax
movq %rax, 0x38(%rsp)
leaq 0x14acd(%rip), %rsi     # 0x1703f
leaq 0x98(%rsp), %rdi
callq 0x98c0
jmp 0x2581
leaq 0x14b63(%rip), %rsi     # 0x170eb
leaq 0x88(%rsp), %rdi
callq 0x98c0
jmp 0x2597
leaq 0xa8(%rsp), %rdi
leaq 0x98(%rsp), %rsi
leaq 0x88(%rsp), %rdx
xorl %r8d, %r8d
movl %r8d, %ecx
callq 0x14ad0
jmp 0x25bc
movq 0x38(%rsp), %rdi
leaq 0xa8(%rsp), %rsi
callq 0x9890
movb %al, 0x2f(%rsp)
jmp 0x25d4
movq 0x30(%rsp), %rsi
movb 0x2f(%rsp), %dl
leaq 0x14a43(%rip), %rax     # 0x17027
leaq 0x14a3f(%rip), %rcx     # 0x1702a
testb $0x1, %dl
cmovneq %rax, %rcx
leaq 0x14a0b(%rip), %rdi     # 0x17004
leaq 0x14a3b(%rip), %rdx     # 0x1703b
xorl %eax, %eax
callq 0x2030
jmp 0x2609
leaq 0xa8(%rsp), %rdi
callq 0x14a60
movq 0xd0(%rsp), %rax
movq %rax, 0x18(%rsp)
movq 0xc8(%rsp), %rax
movq %rax, 0x20(%rsp)
leaq 0x14a08(%rip), %rsi     # 0x1703f
leaq 0x78(%rsp), %rdi
callq 0x98c0
jmp 0x2643
movq 0x20(%rsp), %rdi
leaq 0x78(%rsp), %rsi
callq 0x9910
movq %rax, %rdi
callq 0x9940
movq 0x18(%rsp), %rsi
movb %al, %dl
leaq 0x149c2(%rip), %rax     # 0x1702a
leaq 0x149b8(%rip), %rcx     # 0x17027
testb %dl, %dl
cmovneq %rax, %rcx
leaq 0x14988(%rip), %rdi     # 0x17004
leaq 0x149c0(%rip), %rdx     # 0x17043
xorl %eax, %eax
callq 0x2030
jmp 0x268c
movq 0xd0(%rsp), %rax
movq %rax, 0x8(%rsp)
movq 0xc8(%rsp), %rax
movq %rax, 0x10(%rsp)
leaq 0x14992(%rip), %rsi     # 0x1703f
leaq 0x68(%rsp), %rdi
callq 0x98c0
jmp 0x26b9
movq 0x10(%rsp), %rdi
leaq 0x68(%rsp), %rsi
callq 0x9960
movq 0x8(%rsp), %rsi
movb %al, %dl
leaq 0x14951(%rip), %rax     # 0x17027
leaq 0x1494d(%rip), %rcx     # 0x1702a
testb %dl, %dl
cmovneq %rax, %rcx
leaq 0x1491a(%rip), %rdi     # 0x17004
leaq 0x14956(%rip), %rdx     # 0x17047
xorl %eax, %eax
callq 0x2030
jmp 0x26fa
leaq 0xc0(%rsp), %rdi
callq 0x14a60
addq $0xd8, %rsp
retq
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xb8(%rsp)
movl %eax, 0xb4(%rsp)
jmp 0x2746
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xb8(%rsp)
movl %eax, 0xb4(%rsp)
leaq 0xa8(%rsp), %rdi
callq 0x14a60
leaq 0xc0(%rsp), %rdi
callq 0x14a60
movq 0xb8(%rsp), %rdi
callq 0x2220