// File: /workspace/github_cpp_makefile_star2_O3/cjc12[P]ezSTL/src/../include/test.h
// Function: ezSTL::test::test_rbtree()
void test::test_rbtree() {
		const int max_iteration = 10;
		srand((unsigned int)time(NULL));
		start_info("rbtree");
		rbtree<int> rbt;
		print_rbtree(rbt);
		test_info("rbtree   find and insert");
		for (int i = 0; i < max_iteration; ++i) {
			int number = rand() % 100;
			std::cout << "to insert " << number << " ; ";
			auto ite = rbt.find(number);
			if (ite == rbt.end()) std::cout << "not exists" << std::endl;
			else std::cout << "already exist : " << *ite << " (obtained by find iterator)" << std::endl;
			rbt.insert(number);
			print_rbtree(rbt);
		}
		test_info("rbtree   erase");
		for (int i = 0; i < max_iteration * 30; ++i) {
			int number = rand() % 100;
			auto ite = rbt.find(number);
			if (ite != rbt.end()) {
				std::cout << "to remove : " << number << std::endl;
				rbt.erase(ite);
				print_rbtree(rbt);
			}
		}
		test_info("rbtree   clear");
		rbt.clear();
		print_rbtree(rbt);
		finish_info("rbtree");
		continue_next_test();
	}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0xc8, %rsp
xorl %edi, %edi
callq 0x21b0
movl %eax, %edi
callq 0x21d0
leaq 0xb8(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0xc16f(%rip), %rsi      # 0x1039d
leaq 0xc16e(%rip), %rdx      # 0x103a3
leaq 0xa8(%rsp), %rbx
movq %rbx, %rdi
callq 0xa4e2
movq %rbx, %rdi
callq 0x246c
movq 0xa8(%rsp), %rdi
cmpq %r14, %rdi
je 0x425f
callq 0x21c0
leaq 0x8(%rsp), %rbx
movl $0x0, (%rbx)
movl $0x28, %edi
callq 0x21f0
movq %rax, 0x8(%rbx)
movb $0x0, (%rax)
movq $0x0, 0x8(%rax)
movq %rax, 0x10(%rax)
movq %rax, 0x18(%rax)
movq %rbx, %rdi
callq 0x8d52
leaq 0x98(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0xc0fe(%rip), %rsi      # 0x103a4
leaq 0xc10f(%rip), %rdx      # 0x103bc
leaq 0x88(%rsp), %rdi
callq 0xa4e2
leaq 0x88(%rsp), %rdi
callq 0x2706
movq 0x88(%rsp), %rdi
cmpq %r14, %rdi
je 0x42d9
callq 0x21c0
xorl %r14d, %r14d
movq 0x11cf5(%rip), %r12     # 0x15fd8
leaq 0xc0de(%rip), %r15      # 0x103c8
leaq 0x8(%rsp), %r13
leaq 0x4(%rsp), %rbp
callq 0x2060
cltq
imulq $0x51eb851f, %rax, %rcx # imm = 0x51EB851F
movq %rcx, %rdx
shrq $0x3f, %rdx
sarq $0x25, %rcx
addl %edx, %ecx
imull $0x64, %ecx, %ecx
subl %ecx, %eax
movl %eax, 0x4(%rsp)
movl $0xa, %edx
movq %r12, %rdi
leaq 0xc096(%rip), %rsi      # 0x103bd
callq 0x2220
movl 0x4(%rsp), %esi
movq %r12, %rdi
callq 0x22d0
movl $0x3, %edx
movq %rax, %rdi
movq %r15, %rsi
callq 0x2220
movq 0x10(%rsp), %rax
movq 0x8(%rax), %rbx
testq %rbx, %rbx
je 0x4376
movl 0x4(%rsp), %ecx
movl 0x20(%rbx), %esi
movl $0x10, %edx
cmpl %esi, %ecx
jl 0x436d
movl $0x18, %edx
jle 0x43d7
movq (%rbx,%rdx), %rbx
testq %rbx, %rbx
jne 0x435a
movl $0xa, %edx
movq %r12, %rdi
leaq 0xc047(%rip), %rsi      # 0x103cc
callq 0x2220
movq (%r12), %rax
movq -0x18(%rax), %rdi
addq %r12, %rdi
movl $0xa, %esi
callq 0x21e0
movq %r12, %rbx
movsbl %al, %esi
movq %rbx, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x2120
movq %r13, %rdi
movq %rbp, %rsi
callq 0x8eca
movq %r13, %rdi
callq 0x8d52
incl %r14d
cmpl $0xa, %r14d
jne 0x42f4
jmp 0x442b
cmpq %rax, %rbx
je 0x4376
movl $0x10, %edx
movq %r12, %rdi
leaq 0xbfec(%rip), %rsi      # 0x103d7
callq 0x2220
movl 0x20(%rbx), %esi
movq %r12, %rdi
callq 0x22d0
movq %rax, %rbx
movl $0x1c, %edx
movq %rax, %rdi
leaq 0xbfdb(%rip), %rsi      # 0x103e8
callq 0x2220
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x21e0
jmp 0x43a2
leaq 0x78(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0xbfca(%rip), %rsi      # 0x10405
leaq 0xbfd1(%rip), %rdx      # 0x10413
leaq 0x68(%rsp), %rdi
callq 0xa4e2
leaq 0x68(%rsp), %rdi
callq 0x2706
movq 0x68(%rsp), %rdi
cmpq %r14, %rdi
je 0x4465
callq 0x21c0
xorl %ebp, %ebp
movq 0x11b6a(%rip), %rbx     # 0x15fd8
leaq 0x8(%rsp), %r15
leaq 0x20(%rsp), %r12
callq 0x2060
movq 0x10(%rsp), %rcx
movq 0x8(%rcx), %r14
testq %r14, %r14
je 0x4532
movslq %eax, %r13
imulq $0x51eb851f, %r13, %rax # imm = 0x51EB851F
movq %rax, %rdx
shrq $0x3f, %rdx
sarq $0x25, %rax
addl %edx, %eax
imull $0x64, %eax, %eax
subl %eax, %r13d
movl 0x20(%r14), %edx
movl $0x10, %eax
cmpl %edx, %r13d
jl 0x44c1
movl $0x18, %eax
jle 0x44cc
movq (%r14,%rax), %r14
testq %r14, %r14
jne 0x44ac
jmp 0x4532
cmpq %rcx, %r14
je 0x4532
movl $0xc, %edx
movq %rbx, %rdi
leaq 0xbf34(%rip), %rsi      # 0x10414
callq 0x2220
movq %rbx, %rdi
movl %r13d, %esi
callq 0x22d0
movq %rax, %r13
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r13, %rdi
movl $0xa, %esi
callq 0x21e0
movsbl %al, %esi
movq %r13, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x2120
movq %r14, 0x20(%rsp)
movq %r15, %rdi
movq %r12, %rsi
callq 0x8fba
movq %r15, %rdi
callq 0x8d52
incl %ebp
cmpl $0x12c, %ebp            # imm = 0x12C
jne 0x4478
leaq 0x58(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0xbed1(%rip), %rsi      # 0x10421
leaq 0xbed8(%rip), %rdx      # 0x1042f
leaq 0x48(%rsp), %rdi
callq 0xa4e2
leaq 0x48(%rsp), %rdi
callq 0x2706
movq 0x48(%rsp), %rdi
cmpq %r14, %rdi
je 0x457a
callq 0x21c0
leaq 0x8(%rsp), %rdi
callq 0x90c4
leaq 0x8(%rsp), %rdi
callq 0x8d52
leaq 0x38(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0xbdff(%rip), %rsi      # 0x1039d
leaq 0xbdfe(%rip), %rdx      # 0x103a3
leaq 0x28(%rsp), %rdi
callq 0xa4e2
leaq 0x28(%rsp), %rdi
callq 0x2650
movq 0x28(%rsp), %rdi
cmpq %r14, %rdi
je 0x45c8
callq 0x21c0
callq 0x277c
leaq 0x8(%rsp), %rdi
callq 0x90c4
addq $0xc8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x465a
movq %rax, %rbx
movq 0x28(%rsp), %rdi
jmp 0x461a
jmp 0x4645
movq %rax, %rbx
movq 0x48(%rsp), %rdi
jmp 0x461a
jmp 0x4645
movq %rax, %rbx
movq 0x68(%rsp), %rdi
jmp 0x461a
jmp 0x4645
movq %rax, %rbx
movq 0x88(%rsp), %rdi
cmpq %r14, %rdi
je 0x4648
callq 0x21c0
jmp 0x4648
jmp 0x4645
movq %rax, %rbx
movq 0xa8(%rsp), %rdi
cmpq %r14, %rdi
je 0x4652
callq 0x21c0
jmp 0x4652
jmp 0x4645
jmp 0x4645
jmp 0x4645
movq %rax, %rbx
leaq 0x8(%rsp), %rdi
callq 0x90c4
movq %rbx, %rdi
callq 0x22e0
movq %rax, %rdi
callq 0xa290