// File: /workspace/github_cpp_makefile_star2_O2/planaria[P]cb_tree/tests/pointer_test.cpp
// Function: void test_pointer<void>()
void test_pointer()
{
	std::mt19937 generator;
	std::uniform_int_distribution<std::size_t> random_int(
		std::numeric_limits<std::size_t>::min(),
		std::numeric_limits<std::size_t>::max());

	cb_tree::cb_set<T*> cb_set;
	std::set<T*> set;

	for (std::size_t i = 0; i < 10000; ++i)
	{
		T* value = reinterpret_cast<T*>(random_int(generator));
		cb_set.insert(value);
		set.insert(value);
	}

	REQUIRE(cb_set.size() == set.size());
	CHECK(std::equal(cb_set.begin(), cb_set.end(), set.begin()));
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x16c8, %rsp           # imm = 0x16C8
leaq 0x340(%rsp), %rbx
movq %rbx, %rdi
callq 0x14f6c
leaq 0x90(%rsp), %r14
andq $0x0, (%r14)
orq $-0x1, 0x8(%r14)
leaq 0x38(%rsp), %rax
movb $0x1, 0x8(%rax)
movq %rax, -0x8(%rax)
andq $0x0, (%rax)
andq $0x0, 0x10(%rax)
leaq 0x68(%rsp), %rax
andl $0x0, (%rax)
andq $0x0, 0x8(%rax)
movq %rax, 0x10(%rax)
movq %rax, 0x18(%rax)
andq $0x0, 0x20(%rax)
movl $0x2710, %ebp           # imm = 0x2710
leaq 0x30(%rsp), %r15
leaq 0xa0(%rsp), %r12
leaq 0x60(%rsp), %r13
subq $0x1, %rbp
jb 0x20180
movq %r14, %rdi
movq %rbx, %rsi
callq 0x19c86
movq %rax, 0xa0(%rsp)
movq %r15, %rdi
movq %r12, %rsi
callq 0x20c68
movq %r13, %rdi
movq %r12, %rsi
callq 0x212f2
jmp 0x2014f
leaq 0x2e1d9(%rip), %rsi     # 0x4e360
leaq 0x8(%rsp), %rdi
pushq $0x17
popq %rdx
callq 0x25acc
leaq 0x217ea(%rip), %rsi     # 0x41985
leaq 0x251b7(%rip), %rcx     # 0x45359
leaq 0x3335f(%rip), %r9      # 0x53508
leaq 0xa0(%rsp), %rbx
leaq 0x8(%rsp), %rdx
pushq $0x1
popq %r8
movq %rbx, %rdi
callq 0x26712
leaq 0x8(%rsp), %r14
movq %r14, %rdi
callq 0xa798
movq 0x48(%rsp), %rax
leaq 0x58(%rsp), %rcx
movq %rax, (%rcx)
movq %rbx, (%r14)
movq %rcx, 0x8(%r14)
movq 0x88(%rsp), %rax
leaq 0x50(%rsp), %rsi
movq %rax, (%rsi)
leaq 0x8(%rsp), %rdi
callq 0x15b26
movq %rax, %rdi
callq 0x268e4
leaq 0xa0(%rsp), %rdi
callq 0x26c18
leaq 0xa0(%rsp), %rdi
callq 0x26bf4
leaq 0xa0(%rsp), %rdi
callq 0xb736
leaq 0x2e12d(%rip), %rsi     # 0x4e360
leaq 0x8(%rsp), %rdi
pushq $0x18
popq %rdx
callq 0x25acc
leaq 0x1fdfa(%rip), %rsi     # 0x40041
leaq 0x25127(%rip), %rcx     # 0x45375
leaq 0x332b3(%rip), %r9      # 0x53508
leaq 0xa0(%rsp), %rbx
leaq 0x8(%rsp), %rdx
pushq $0x2
popq %r8
movq %rbx, %rdi
callq 0x26712
leaq 0x8(%rsp), %rdi
callq 0xa798
leaq 0x30(%rsp), %rdi
callq 0x20c1a
movq %rax, %r14
leaq 0x30(%rsp), %rdi
callq 0x20c38
movq 0x78(%rsp), %rdx
movq %r14, %rdi
movq %rax, %rsi
callq 0x2144c
leaq 0x8(%rsp), %rdi
movq %rbx, (%rdi)
movb %al, 0x8(%rdi)
callq 0xcab2
leaq 0xa0(%rsp), %rdi
callq 0x26c18
leaq 0xa0(%rsp), %rdi
callq 0x26bf4
leaq 0xa0(%rsp), %rdi
callq 0xb736
leaq 0x60(%rsp), %rdi
callq 0x21504
leaq 0x30(%rsp), %rdi
callq 0x20c58
addq $0x16c8, %rsp           # imm = 0x16C8
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x20303
jmp 0x20388
movq %rax, %rbx
leaq 0x8(%rsp), %rdi
callq 0xa798
jmp 0x2038b
jmp 0x20388
movq %rax, %rdi
callq 0xa180
leaq 0xa0(%rsp), %rdi
pushq $0x1
popq %rsi
callq 0x26944
callq 0xa630
jmp 0x20205
movq %rax, %rbx
callq 0xa630
jmp 0x20379
jmp 0x20376
movq %rax, %rdi
callq 0xa180
leaq 0xa0(%rsp), %rdi
pushq $0x1
popq %rsi
callq 0x26944
callq 0xa630
jmp 0x202af
movq %rax, %rbx
callq 0xa630
jmp 0x20379
movq %rax, %rdi
callq 0xb6ee
movq %rax, %rbx
leaq 0xa0(%rsp), %rdi
callq 0xb736
jmp 0x2038b
movq %rax, %rbx
leaq 0x60(%rsp), %rdi
callq 0x21504
leaq 0x30(%rsp), %rdi
callq 0x20c58
movq %rbx, %rdi
callq 0xa6b0