// File: cjc12[P]ezSTL/src/../include/test.h
// Function: ezSTL::test::test_map()
void test::test_map() {
		const int max_iteration = 10;
		srand((unsigned int)time(NULL));
		start_info("map");
		map<int, int> m;
		print_map(m);
		test_info("map   find and insert");
		for (int i = 0; i < max_iteration; ++i) {
			int number1 = rand() % 100;
			int number2 = rand() % 100;
			pair<int, int> p = make_pair(number1, number2);
			std::cout << "to insert " << p.first << ":" << p.second << " ; ";
			auto ite = m.find(p.first);
			if (ite == m.end()) std::cout << "not exists" << std::endl;
			std::cout << "already exist : " << p.first << ":" << p.second << " (obtained by find iterator)" << std::endl;
			m.insert(p);
			print_map(m);
		}
		test_info("map   erase");
		for (int i = 0; i < max_iteration; ++i) {
			int number = rand() % 100;
			auto ite = m.find(number);
			if (ite != m.end()) {
				std::cout << "to remove key: " << number << std::endl;
				m.erase(ite);
				print_map(m);
			}
		}

		test_info("map   clear");
		m.clear();
		print_map(m);
		finish_info("map");
		continue_next_test();
	}

// Assembly:
subq $0x1d8, %rsp            # imm = 0x1D8
movl $0xa, 0x1d4(%rsp)
xorl %eax, %eax
movl %eax, %edi
callq 0x21f0
movl %eax, %edi
callq 0x2210
leaq 0x1af(%rsp), %rdi
movq %rdi, 0x98(%rsp)
callq 0x2330
movq 0x98(%rsp), %rdx
leaq 0x209c9(%rip), %rsi     # 0x2668f
leaq 0x1b0(%rsp), %rdi
callq 0x2290
jmp 0x5cd5
leaq 0x1b0(%rsp), %rdi
callq 0x24e0
jmp 0x5ce4
leaq 0x1b0(%rsp), %rdi
callq 0x2130
leaq 0x1af(%rsp), %rdi
callq 0x2260
leaq 0x180(%rsp), %rdi
movq %rdi, 0x90(%rsp)
callq 0xdae0
movq 0x90(%rsp), %rdi
callq 0xdaf0
jmp 0x5d22
leaq 0x15f(%rsp), %rdi
movq %rdi, 0x88(%rsp)
callq 0x2330
movq 0x88(%rsp), %rdx
leaq 0x20700(%rip), %rsi     # 0x26446
leaq 0x160(%rsp), %rdi
callq 0x2290
jmp 0x5d55
leaq 0x160(%rsp), %rdi
callq 0x2730
jmp 0x5d64
leaq 0x160(%rsp), %rdi
callq 0x2130
leaq 0x15f(%rsp), %rdi
callq 0x2260
movl $0x0, 0x158(%rsp)
cmpl $0xa, 0x158(%rsp)
jge 0x6087
callq 0x2060
movslq %eax, %rcx
imulq $0x51eb851f, %rcx, %rcx # imm = 0x51EB851F
movq %rcx, %rdx
shrq $0x3f, %rdx
sarq $0x25, %rcx
addl %edx, %ecx
imull $0x64, %ecx, %ecx
subl %ecx, %eax
movl %eax, 0x154(%rsp)
callq 0x2060
movslq %eax, %rcx
imulq $0x51eb851f, %rcx, %rcx # imm = 0x51EB851F
movq %rcx, %rdx
shrq $0x3f, %rdx
sarq $0x25, %rcx
addl %edx, %ecx
imull $0x64, %ecx, %ecx
subl %ecx, %eax
movl %eax, 0x150(%rsp)
leaq 0x148(%rsp), %rdi
leaq 0x154(%rsp), %rsi
leaq 0x150(%rsp), %rdx
callq 0xdc30
jmp 0x5e06
movq 0x2b1cb(%rip), %rdi     # 0x30fd8
leaq 0x20591(%rip), %rsi     # 0x263a5
callq 0x2220
movq %rax, 0x80(%rsp)
jmp 0x5e23
movq 0x80(%rsp), %rdi
movl 0x148(%rsp), %esi
callq 0x2310
movq %rax, 0x78(%rsp)
jmp 0x5e3e
movq 0x78(%rsp), %rdi
leaq 0x20247(%rip), %rsi     # 0x26091
callq 0x2220
movq %rax, 0x70(%rsp)
jmp 0x5e56
movq 0x70(%rsp), %rdi
movl 0x14c(%rsp), %esi
callq 0x2310
movq %rax, 0x68(%rsp)
jmp 0x5e6e
movq 0x68(%rsp), %rdi
leaq 0x20536(%rip), %rsi     # 0x263b0
callq 0x2220
jmp 0x5e81
leaq 0x140(%rsp), %rdi
leaq 0x180(%rsp), %rsi
leaq 0x148(%rsp), %rdx
callq 0xdc70
jmp 0x5ea0
leaq 0x138(%rsp), %rdi
leaq 0x180(%rsp), %rsi
callq 0xdd00
jmp 0x5eb7
leaq 0x140(%rsp), %rdi
leaq 0x138(%rsp), %rsi
callq 0xdce0
movb %al, 0x67(%rsp)
jmp 0x5ed2
movb 0x67(%rsp), %al
testb $0x1, %al
jne 0x5edf
jmp 0x5fbc
movq 0x2b0f2(%rip), %rdi     # 0x30fd8
leaq 0x204c7(%rip), %rsi     # 0x263b4
callq 0x2220
movq %rax, 0x58(%rsp)
jmp 0x5ef9
movq 0x58(%rsp), %rdi
movq 0x2b0c3(%rip), %rsi     # 0x30fc8
callq 0x2250
jmp 0x5f0c
jmp 0x5fbc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1a0(%rsp)
movl %eax, 0x19c(%rsp)
jmp 0x5f48
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1a0(%rsp)
movl %eax, 0x19c(%rsp)
leaq 0x1b0(%rsp), %rdi
callq 0x2130
leaq 0x1af(%rsp), %rdi
callq 0x2260
jmp 0x63dc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1a0(%rsp)
movl %eax, 0x19c(%rsp)
jmp 0x63cf
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1a0(%rsp)
movl %eax, 0x19c(%rsp)
jmp 0x5faa
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1a0(%rsp)
movl %eax, 0x19c(%rsp)
leaq 0x160(%rsp), %rdi
callq 0x2130
leaq 0x15f(%rsp), %rdi
callq 0x2260
jmp 0x63cf
movq 0x2b015(%rip), %rdi     # 0x30fd8
leaq 0x203f5(%rip), %rsi     # 0x263bf
callq 0x2220
movq %rax, 0x50(%rsp)
jmp 0x5fd6
movq 0x50(%rsp), %rdi
movl 0x148(%rsp), %esi
callq 0x2310
movq %rax, 0x48(%rsp)
jmp 0x5fee
movq 0x48(%rsp), %rdi
leaq 0x20097(%rip), %rsi     # 0x26091
callq 0x2220
movq %rax, 0x40(%rsp)
jmp 0x6006
movq 0x40(%rsp), %rdi
movl 0x14c(%rsp), %esi
callq 0x2310
movq %rax, 0x38(%rsp)
jmp 0x601e
movq 0x38(%rsp), %rdi
leaq 0x203a6(%rip), %rsi     # 0x263d0
callq 0x2220
movq %rax, 0x30(%rsp)
jmp 0x6036
movq 0x30(%rsp), %rdi
movq 0x2af86(%rip), %rsi     # 0x30fc8
callq 0x2250
jmp 0x6049
leaq 0x180(%rsp), %rdi
leaq 0x148(%rsp), %rsi
callq 0xdd30
jmp 0x6060
leaq 0x180(%rsp), %rdi
callq 0xdaf0
jmp 0x606f
jmp 0x6071
movl 0x158(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x158(%rsp)
jmp 0x5d89
leaq 0x117(%rsp), %rdi
movq %rdi, 0x28(%rsp)
callq 0x2330
movq 0x28(%rsp), %rdx
leaq 0x2040f(%rip), %rsi     # 0x264b4
leaq 0x118(%rsp), %rdi
callq 0x2290
jmp 0x60b4
leaq 0x118(%rsp), %rdi
callq 0x2730
jmp 0x60c3
leaq 0x118(%rsp), %rdi
callq 0x2130
leaq 0x117(%rsp), %rdi
callq 0x2260
movl $0x0, 0x110(%rsp)
cmpl $0xa, 0x110(%rsp)
jge 0x6261
callq 0x2060
movslq %eax, %rcx
imulq $0x51eb851f, %rcx, %rcx # imm = 0x51EB851F
movq %rcx, %rdx
shrq $0x3f, %rdx
sarq $0x25, %rcx
addl %edx, %ecx
imull $0x64, %ecx, %ecx
subl %ecx, %eax
movl %eax, 0x10c(%rsp)
leaq 0x100(%rsp), %rdi
leaq 0x180(%rsp), %rsi
leaq 0x10c(%rsp), %rdx
callq 0xdc70
jmp 0x613d
leaq 0xf8(%rsp), %rdi
leaq 0x180(%rsp), %rsi
callq 0xdd00
jmp 0x6154
leaq 0x100(%rsp), %rdi
leaq 0xf8(%rsp), %rsi
callq 0xdd60
movb %al, 0x27(%rsp)
jmp 0x616f
movb 0x27(%rsp), %al
testb $0x1, %al
jne 0x617c
jmp 0x6249
movq 0x2ae55(%rip), %rdi     # 0x30fd8
leaq 0x202d2(%rip), %rsi     # 0x2645c
callq 0x2220
movq %rax, 0x18(%rsp)
jmp 0x6196
movq 0x18(%rsp), %rdi
movl 0x10c(%rsp), %esi
callq 0x2310
movq %rax, 0x10(%rsp)
jmp 0x61ae
movq 0x10(%rsp), %rdi
movq 0x2ae0e(%rip), %rsi     # 0x30fc8
callq 0x2250
jmp 0x61c1
leaq 0xf0(%rsp), %rdi
leaq 0x100(%rsp), %rsi
callq 0xddc0
jmp 0x61d8
leaq 0x180(%rsp), %rdi
leaq 0xf0(%rsp), %rsi
callq 0xdd80
jmp 0x61ef
leaq 0x180(%rsp), %rdi
callq 0xdaf0
jmp 0x61fe
jmp 0x6249
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1a0(%rsp)
movl %eax, 0x19c(%rsp)
jmp 0x6237
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1a0(%rsp)
movl %eax, 0x19c(%rsp)
leaq 0x118(%rsp), %rdi
callq 0x2130
leaq 0x117(%rsp), %rdi
callq 0x2260
jmp 0x63cf
jmp 0x624b
movl 0x110(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x110(%rsp)
jmp 0x60e8
leaq 0xcf(%rsp), %rdi
movq %rdi, 0x8(%rsp)
callq 0x2330
movq 0x8(%rsp), %rdx
leaq 0x202ed(%rip), %rsi     # 0x2656c
leaq 0xd0(%rsp), %rdi
callq 0x2290
jmp 0x628e
leaq 0xd0(%rsp), %rdi
callq 0x2730
jmp 0x629d
leaq 0xd0(%rsp), %rdi
callq 0x2130
leaq 0xcf(%rsp), %rdi
callq 0x2260
leaq 0x180(%rsp), %rdi
callq 0xdde0
jmp 0x62c6
leaq 0x180(%rsp), %rdi
callq 0xdaf0
jmp 0x62d5
leaq 0xa7(%rsp), %rdi
movq %rdi, (%rsp)
callq 0x2330
movq (%rsp), %rdx
leaq 0x2039e(%rip), %rsi     # 0x2668f
leaq 0xa8(%rsp), %rdi
callq 0x2290
jmp 0x6300
leaq 0xa8(%rsp), %rdi
callq 0x26d0
jmp 0x630f
leaq 0xa8(%rsp), %rdi
callq 0x2130
leaq 0xa7(%rsp), %rdi
callq 0x2260
callq 0x2780
jmp 0x6330
leaq 0x180(%rsp), %rdi
callq 0xddf0
addq $0x1d8, %rsp            # imm = 0x1D8
retq
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1a0(%rsp)
movl %eax, 0x19c(%rsp)
jmp 0x637c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1a0(%rsp)
movl %eax, 0x19c(%rsp)
leaq 0xd0(%rsp), %rdi
callq 0x2130
leaq 0xcf(%rsp), %rdi
callq 0x2260
jmp 0x63cf
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1a0(%rsp)
movl %eax, 0x19c(%rsp)
jmp 0x63c2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1a0(%rsp)
movl %eax, 0x19c(%rsp)
leaq 0xa8(%rsp), %rdi
callq 0x2130
leaq 0xa7(%rsp), %rdi
callq 0x2260
leaq 0x180(%rsp), %rdi
callq 0xddf0
movq 0x1a0(%rsp), %rdi
callq 0x2320
nopl (%rax)