// File: /workspace/github_cpp_makefile_star2_O2/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 $0xd8, %rsp
xorl %edi, %edi
callq 0x21a0
movl %eax, %edi
callq 0x21c0
leaq 0xaa25(%rip), %rsi      # 0xe39d
leaq 0xb8(%rsp), %rdi
leaq 0x18(%rsp), %rdx
callq 0x2090
leaq 0xb8(%rsp), %rdi
callq 0x243c
leaq 0xb8(%rsp), %rdi
callq 0x20c0
leaq 0x18(%rsp), %rbx
movq %rbx, %rdi
callq 0x733e
movq %rbx, %rdi
callq 0x7364
leaq 0xa9e4(%rip), %rsi      # 0xe3a4
leaq 0x98(%rsp), %rdi
leaq 0x10(%rsp), %rdx
callq 0x2090
leaq 0x98(%rsp), %rdi
callq 0x257e
leaq 0x98(%rsp), %rdi
callq 0x20c0
pushq $0xa
popq %r15
pushq $0x64
popq %r12
movq 0x115dd(%rip), %rbx     # 0x14fd8
leaq 0x18(%rsp), %r13
leaq 0xc(%rsp), %rbp
leaq 0xa9c0(%rip), %r14      # 0xe3cc
subl $0x1, %r15d
jb 0x3abd
callq 0x2060
cltd
idivl %r12d
movl %edx, 0xc(%rsp)
movq %rbx, %rdi
leaq 0xa990(%rip), %rsi      # 0xe3bd
callq 0x21d0
movl 0xc(%rsp), %esi
movq %rax, %rdi
callq 0x22c0
movq %rax, %rdi
leaq 0xa980(%rip), %rsi      # 0xe3c8
callq 0x21d0
leaq 0x10(%rsp), %rdi
movq %r13, %rsi
movq %rbp, %rdx
callq 0x7450
movq 0x10(%rsp), %rcx
movq %rbx, %rax
movq %r14, %rsi
cmpq 0x20(%rsp), %rcx
je 0x3a95
movq %rbx, %rdi
leaq 0xa95e(%rip), %rsi      # 0xe3d7
callq 0x21d0
movq 0x10(%rsp), %rcx
movl 0x20(%rcx), %esi
movq %rax, %rdi
callq 0x22c0
leaq 0xa953(%rip), %rsi      # 0xe3e8
movq %rax, %rdi
callq 0x21d0
movq %rax, %rdi
callq 0x20d0
movq %r13, %rdi
movq %rbp, %rsi
callq 0x748a
movq %r13, %rdi
callq 0x7364
jmp 0x3a0c
leaq 0xa941(%rip), %rsi      # 0xe405
leaq 0x78(%rsp), %rdi
leaq 0x10(%rsp), %rdx
callq 0x2090
leaq 0x78(%rsp), %rdi
callq 0x257e
leaq 0x78(%rsp), %rdi
callq 0x20c0
movl $0x12c, %r13d           # imm = 0x12C
leaq 0x10(%rsp), %rbx
leaq 0x18(%rsp), %r14
leaq 0xc(%rsp), %r15
leaq 0x30(%rsp), %rbp
subl $0x1, %r13d
jb 0x3b74
callq 0x2060
cltd
idivl %r12d
movl %edx, 0xc(%rsp)
movq %rbx, %rdi
movq %r14, %rsi
movq %r15, %rdx
callq 0x7450
movq 0x10(%rsp), %rax
cmpq 0x20(%rsp), %rax
je 0x3b01
movq 0x114a3(%rip), %rdi     # 0x14fd8
leaq 0xa8d8(%rip), %rsi      # 0xe414
callq 0x21d0
movl 0xc(%rsp), %esi
movq %rax, %rdi
callq 0x22c0
movq %rax, %rdi
callq 0x20d0
movq 0x10(%rsp), %rax
movq %rax, 0x30(%rsp)
movq %r14, %rdi
movq %rbp, %rsi
callq 0x7576
movq %r14, %rdi
callq 0x7364
jmp 0x3b01
leaq 0xa8a6(%rip), %rsi      # 0xe421
leaq 0x58(%rsp), %rdi
leaq 0x10(%rsp), %rdx
callq 0x2090
leaq 0x58(%rsp), %rdi
callq 0x257e
leaq 0x58(%rsp), %rdi
callq 0x20c0
leaq 0x18(%rsp), %rdi
callq 0x7688
leaq 0x18(%rsp), %rdi
callq 0x7364
leaq 0xa7e4(%rip), %rsi      # 0xe39d
leaq 0x38(%rsp), %rdi
leaq 0x10(%rsp), %rdx
callq 0x2090
leaq 0x38(%rsp), %rdi
callq 0x2542
leaq 0x38(%rsp), %rdi
callq 0x20c0
callq 0x25a2
leaq 0x18(%rsp), %rdi
callq 0x76b6
addq $0xd8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %rbx
leaq 0x38(%rsp), %rdi
jmp 0x3c2c
jmp 0x3c52
movq %rax, %rbx
leaq 0x58(%rsp), %rdi
jmp 0x3c2c
jmp 0x3c52
movq %rax, %rbx
leaq 0x78(%rsp), %rdi
jmp 0x3c2c
jmp 0x3c52
movq %rax, %rbx
leaq 0x98(%rsp), %rdi
callq 0x20c0
jmp 0x3c55
jmp 0x3c52
movq %rax, %rbx
leaq 0xb8(%rsp), %rdi
callq 0x20c0
jmp 0x3c5f
movq %rax, %rbx
jmp 0x3c5f
jmp 0x3c52
jmp 0x3c52
jmp 0x3c52
movq %rax, %rbx
leaq 0x18(%rsp), %rdi
callq 0x76b6
movq %rbx, %rdi
callq 0x22d0
nop