// File: /workspace/github_cpp_makefile_star2_O1/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 0xc109(%rip), %rsi      # 0x1039d
leaq 0xc108(%rip), %rdx      # 0x103a3
leaq 0xa8(%rsp), %rbx
movq %rbx, %rdi
callq 0xa568
movq %rbx, %rdi
callq 0x246c
movq 0xa8(%rsp), %rdi
cmpq %r14, %rdi
je 0x42c5
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 0x8e14
leaq 0x98(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0xc098(%rip), %rsi      # 0x103a4
leaq 0xc0a9(%rip), %rdx      # 0x103bc
leaq 0x88(%rsp), %rdi
callq 0xa568
leaq 0x88(%rsp), %rdi
callq 0x270c
movq 0x88(%rsp), %rdi
cmpq %r14, %rdi
je 0x433f
callq 0x21c0
xorl %r14d, %r14d
movq 0x11c8f(%rip), %r12     # 0x15fd8
leaq 0xc078(%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 0xc030(%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), %rcx
movq %rax, %rbx
testq %rcx, %rcx
je 0x43e7
movl 0x4(%rsp), %edx
movl 0x20(%rcx), %edi
movl $0x10, %esi
cmpl %edi, %edx
jl 0x43d6
movl $0x18, %esi
jle 0x43e4
movq (%rcx,%rsi), %rcx
testq %rcx, %rcx
jne 0x43c3
movq %rax, %rbx
jmp 0x43e7
movq %rcx, %rbx
cmpq %rax, %rbx
je 0x4438
movl $0x10, %edx
movq %r12, %rdi
leaq 0xbfdc(%rip), %rsi      # 0x103d7
callq 0x2220
movl 0x20(%rbx), %esi
movq %r12, %rdi
callq 0x22d0
movq %rax, %rbx
movl $0x1c, %edx
movq %rax, %rdi
leaq 0xbfcb(%rip), %rsi      # 0x103e8
callq 0x2220
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x21e0
jmp 0x4464
movl $0xa, %edx
movq %r12, %rdi
leaq 0xbf85(%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 0x8f8c
movq %r13, %rdi
callq 0x8e14
incl %r14d
cmpl $0xa, %r14d
jne 0x435a
leaq 0x78(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0xbf5e(%rip), %rsi      # 0x10405
leaq 0xbf65(%rip), %rdx      # 0x10413
leaq 0x68(%rsp), %rdi
callq 0xa568
leaq 0x68(%rsp), %rdi
callq 0x270c
movq 0x68(%rsp), %rdi
cmpq %r14, %rdi
je 0x44d1
callq 0x21c0
xorl %ebp, %ebp
movq 0x11afe(%rip), %rbx     # 0x15fd8
leaq 0x8(%rsp), %r15
leaq 0x20(%rsp), %r12
callq 0x2060
movslq %eax, %r13
imulq $0x51eb851f, %r13, %rax # imm = 0x51EB851F
movq %rax, %rcx
shrq $0x3f, %rcx
sarq $0x25, %rax
addl %ecx, %eax
imull $0x64, %eax, %eax
subl %eax, %r13d
movq 0x10(%rsp), %rax
movq 0x8(%rax), %rcx
movq %rax, %r14
testq %rcx, %rcx
je 0x453c
movl 0x20(%rcx), %esi
movl $0x10, %edx
cmpl %esi, %r13d
jl 0x452b
movl $0x18, %edx
jle 0x4539
movq (%rcx,%rdx), %rcx
testq %rcx, %rcx
jne 0x4517
movq %rax, %r14
jmp 0x453c
movq %rcx, %r14
cmpq %rax, %r14
je 0x45a2
movl $0xc, %edx
movq %rbx, %rdi
leaq 0xbec4(%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 0x9096
movq %r15, %rdi
callq 0x8e14
incl %ebp
cmpl $0x12c, %ebp            # imm = 0x12C
jne 0x44e4
leaq 0x58(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0xbe61(%rip), %rsi      # 0x10421
leaq 0xbe68(%rip), %rdx      # 0x1042f
leaq 0x48(%rsp), %rdi
callq 0xa568
leaq 0x48(%rsp), %rdi
callq 0x270c
movq 0x48(%rsp), %rdi
cmpq %r14, %rdi
je 0x45ea
callq 0x21c0
leaq 0x8(%rsp), %rdi
callq 0x919a
leaq 0x8(%rsp), %rdi
callq 0x8e14
leaq 0x38(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0xbd8f(%rip), %rsi      # 0x1039d
leaq 0xbd8e(%rip), %rdx      # 0x103a3
leaq 0x28(%rsp), %rdi
callq 0xa568
leaq 0x28(%rsp), %rdi
callq 0x2656
movq 0x28(%rsp), %rdi
cmpq %r14, %rdi
je 0x4638
callq 0x21c0
callq 0x2782
leaq 0x8(%rsp), %rdi
callq 0x919a
addq $0xc8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x46ca
movq %rax, %rbx
movq 0x28(%rsp), %rdi
jmp 0x468a
jmp 0x46b5
movq %rax, %rbx
movq 0x48(%rsp), %rdi
jmp 0x468a
jmp 0x46b5
movq %rax, %rbx
movq 0x68(%rsp), %rdi
jmp 0x468a
jmp 0x46b5
movq %rax, %rbx
movq 0x88(%rsp), %rdi
cmpq %r14, %rdi
je 0x46b8
callq 0x21c0
jmp 0x46b8
jmp 0x46b5
movq %rax, %rbx
movq 0xa8(%rsp), %rdi
cmpq %r14, %rdi
je 0x46c2
callq 0x21c0
jmp 0x46c2
jmp 0x46b5
jmp 0x46b5
jmp 0x46b5
movq %rax, %rbx
leaq 0x8(%rsp), %rdi
callq 0x919a
movq %rbx, %rdi
callq 0x22e0
movq %rax, %rdi
callq 0xa31c