// File: cjc12[P]ezSTL/src/../include/test.h
// Function: ezSTL::test::test_unordered_map()
void test::test_unordered_map() {
		const int max_iteration = 10;
		srand((unsigned int)time(NULL));
		start_info("unordered_map");
		unordered_map<int, int> um;
		print_unordered_map(um);
		test_info("unordered_map   insert");
		for(int i = 0; i < max_iteration; ++i){
			pair<int, int> p(rand() % max_iteration, rand() % max_iteration);
			um.insert(p);
			std::cout << "insert key-value pair   " << p.first << ":" << p.second << std::endl;
			print_unordered_map(um);
		}
		test_info("unordered_map   erase");
		for (int i = 0; i < max_iteration; ++i) {
			int key = rand() % max_iteration;
			auto ite = um.find(key);
			if (ite != um.end()) um.erase(ite);
			std::cout << "deleting key   " << key << std::endl;
			print_unordered_map(um);
		}
		test_info("unordered_map   copy consructor");
		unordered_map<int, int> um1(um);
		print_unordered_map(um1);
		test_info("unordered_map   move consructor");
		unordered_map<int, int> um2(ezSTL::move(um1));
		print_unordered_map(um2);
		test_info("unordered_map   copy assignment operator");
		unordered_map<int, int> um3;
		um3 = um;
		print_unordered_map(um);
		print_unordered_map(um3);
		test_info("unordered_map   move assignment operator");
		unordered_map<int, int> um4;
		um4 = ezSTL::move(um2);
		print_unordered_map(um4);
		test_info("unordered_map   clear");
		um.clear();
		print_unordered_map(um);
		finish_info("unordered_map");
		continue_next_test();
	}

// Assembly:
subq $0x3d8, %rsp            # imm = 0x3D8
movl $0xa, 0x3d4(%rsp)
xorl %eax, %eax
movl %eax, %edi
callq 0x21f0
movl %eax, %edi
callq 0x2210
leaq 0x3af(%rsp), %rdi
movq %rdi, 0x98(%rsp)
callq 0x2330
movq 0x98(%rsp), %rdx
leaq 0x20036(%rip), %rsi     # 0x2646c
leaq 0x3b0(%rsp), %rdi
callq 0x2290
jmp 0x6445
leaq 0x3b0(%rsp), %rdi
callq 0x24e0
jmp 0x6454
leaq 0x3b0(%rsp), %rdi
callq 0x2130
leaq 0x3af(%rsp), %rdi
callq 0x2260
leaq 0x358(%rsp), %rdi
movq %rdi, 0x90(%rsp)
callq 0xde00
movq 0x90(%rsp), %rdi
callq 0xdeb0
jmp 0x6492
leaq 0x337(%rsp), %rdi
movq %rdi, 0x88(%rsp)
callq 0x2330
movq 0x88(%rsp), %rdx
leaq 0x1ffc4(%rip), %rsi     # 0x2647a
leaq 0x338(%rsp), %rdi
callq 0x2290
jmp 0x64c5
leaq 0x338(%rsp), %rdi
callq 0x2730
jmp 0x64d4
leaq 0x338(%rsp), %rdi
callq 0x2130
leaq 0x337(%rsp), %rdi
callq 0x2260
movl $0x0, 0x330(%rsp)
cmpl $0xa, 0x330(%rsp)
jge 0x66e2
callq 0x2060
movslq %eax, %rcx
imulq $0x66666667, %rcx, %rdx # imm = 0x66666667
movq %rdx, %rcx
shrq $0x3f, %rcx
sarq $0x22, %rdx
addl %ecx, %edx
addl %edx, %edx
movl %edx, %ecx
leal (%rcx,%rcx,4), %ecx
subl %ecx, %eax
movl %eax, 0x324(%rsp)
callq 0x2060
movslq %eax, %rcx
imulq $0x66666667, %rcx, %rdx # imm = 0x66666667
movq %rdx, %rcx
shrq $0x3f, %rcx
sarq $0x22, %rdx
addl %ecx, %edx
addl %edx, %edx
movl %edx, %ecx
leal (%rcx,%rcx,4), %ecx
subl %ecx, %eax
movl %eax, 0x320(%rsp)
leaq 0x328(%rsp), %rdi
leaq 0x324(%rsp), %rsi
leaq 0x320(%rsp), %rdx
callq 0xe010
jmp 0x657e
leaq 0x358(%rsp), %rdi
leaq 0x328(%rsp), %rsi
callq 0xe040
jmp 0x6595
movq 0x2aa3c(%rip), %rdi     # 0x30fd8
leaq 0x1feee(%rip), %rsi     # 0x26491
callq 0x2220
movq %rax, 0x80(%rsp)
jmp 0x65b2
movq 0x80(%rsp), %rdi
movl 0x328(%rsp), %esi
callq 0x2310
movq %rax, 0x78(%rsp)
jmp 0x65cd
movq 0x78(%rsp), %rdi
leaq 0x1fab8(%rip), %rsi     # 0x26091
callq 0x2220
movq %rax, 0x70(%rsp)
jmp 0x65e5
movq 0x70(%rsp), %rdi
movl 0x32c(%rsp), %esi
callq 0x2310
movq %rax, 0x68(%rsp)
jmp 0x65fd
movq 0x68(%rsp), %rdi
movq 0x2a9bf(%rip), %rsi     # 0x30fc8
callq 0x2250
jmp 0x6610
leaq 0x358(%rsp), %rdi
callq 0xdeb0
jmp 0x661f
jmp 0x6621
movl 0x330(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x330(%rsp)
jmp 0x64f9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x3a0(%rsp)
movl %eax, 0x39c(%rsp)
jmp 0x666e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x3a0(%rsp)
movl %eax, 0x39c(%rsp)
leaq 0x3b0(%rsp), %rdi
callq 0x2130
leaq 0x3af(%rsp), %rdi
callq 0x2260
jmp 0x6e57
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x3a0(%rsp)
movl %eax, 0x39c(%rsp)
jmp 0x6e4a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x3a0(%rsp)
movl %eax, 0x39c(%rsp)
jmp 0x66d0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x3a0(%rsp)
movl %eax, 0x39c(%rsp)
leaq 0x338(%rsp), %rdi
callq 0x2130
leaq 0x337(%rsp), %rdi
callq 0x2260
jmp 0x6e4a
leaq 0x2ff(%rsp), %rdi
movq %rdi, 0x60(%rsp)
callq 0x2330
movq 0x60(%rsp), %rdx
leaq 0x1fdaa(%rip), %rsi     # 0x264aa
leaq 0x300(%rsp), %rdi
callq 0x2290
jmp 0x670f
leaq 0x300(%rsp), %rdi
callq 0x2730
jmp 0x671e
leaq 0x300(%rsp), %rdi
callq 0x2130
leaq 0x2ff(%rsp), %rdi
callq 0x2260
movl $0x0, 0x2f8(%rsp)
cmpl $0xa, 0x2f8(%rsp)
jge 0x68bd
callq 0x2060
movslq %eax, %rcx
imulq $0x66666667, %rcx, %rdx # imm = 0x66666667
movq %rdx, %rcx
shrq $0x3f, %rcx
sarq $0x22, %rdx
addl %ecx, %edx
addl %edx, %edx
movl %edx, %ecx
leal (%rcx,%rcx,4), %ecx
subl %ecx, %eax
movl %eax, 0x2f4(%rsp)
leaq 0x2d0(%rsp), %rdi
leaq 0x358(%rsp), %rsi
leaq 0x2f4(%rsp), %rdx
callq 0xe350
jmp 0x679c
leaq 0x2b0(%rsp), %rdi
leaq 0x358(%rsp), %rsi
callq 0xe4d0
jmp 0x67b3
leaq 0x2d0(%rsp), %rdi
leaq 0x2b0(%rsp), %rsi
callq 0xe4a0
movb %al, 0x5f(%rsp)
jmp 0x67ce
movb 0x5f(%rsp), %al
testb $0x1, %al
jne 0x67d8
jmp 0x6851
leaq 0x290(%rsp), %rdi
leaq 0x2d0(%rsp), %rsi
callq 0xe5c0
jmp 0x67ef
leaq 0x358(%rsp), %rdi
leaq 0x290(%rsp), %rsi
callq 0xe500
jmp 0x6806
jmp 0x6851
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x3a0(%rsp)
movl %eax, 0x39c(%rsp)
jmp 0x683f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x3a0(%rsp)
movl %eax, 0x39c(%rsp)
leaq 0x300(%rsp), %rdi
callq 0x2130
leaq 0x2ff(%rsp), %rdi
callq 0x2260
jmp 0x6e4a
movq 0x2a780(%rip), %rdi     # 0x30fd8
leaq 0x1fc61(%rip), %rsi     # 0x264c0
callq 0x2220
movq %rax, 0x50(%rsp)
jmp 0x686b
movq 0x50(%rsp), %rdi
movl 0x2f4(%rsp), %esi
callq 0x2310
movq %rax, 0x48(%rsp)
jmp 0x6883
movq 0x48(%rsp), %rdi
movq 0x2a739(%rip), %rsi     # 0x30fc8
callq 0x2250
jmp 0x6896
leaq 0x358(%rsp), %rdi
callq 0xdeb0
jmp 0x68a5
jmp 0x68a7
movl 0x2f8(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x2f8(%rsp)
jmp 0x6743
leaq 0x26f(%rsp), %rdi
movq %rdi, 0x40(%rsp)
callq 0x2330
movq 0x40(%rsp), %rdx
leaq 0x1fbf5(%rip), %rsi     # 0x264d0
leaq 0x270(%rsp), %rdi
callq 0x2290
jmp 0x68ea
leaq 0x270(%rsp), %rdi
callq 0x2730
jmp 0x68f9
leaq 0x270(%rsp), %rdi
callq 0x2130
leaq 0x26f(%rsp), %rdi
callq 0x2260
leaq 0x228(%rsp), %rdi
leaq 0x358(%rsp), %rsi
callq 0xe610
jmp 0x692a
leaq 0x228(%rsp), %rdi
callq 0xdeb0
jmp 0x6939
leaq 0x207(%rsp), %rdi
movq %rdi, 0x38(%rsp)
callq 0x2330
movq 0x38(%rsp), %rdx
leaq 0x1fb99(%rip), %rsi     # 0x264f0
leaq 0x208(%rsp), %rdi
callq 0x2290
jmp 0x6966
leaq 0x208(%rsp), %rdi
callq 0x2730
jmp 0x6975
leaq 0x208(%rsp), %rdi
callq 0x2130
leaq 0x207(%rsp), %rdi
callq 0x2260
leaq 0x228(%rsp), %rdi
callq 0xe790
movq %rax, %rsi
leaq 0x1c0(%rsp), %rdi
movq %rdi, 0x30(%rsp)
callq 0xe7a0
movq 0x30(%rsp), %rdi
callq 0xdeb0
jmp 0x69bd
leaq 0x19f(%rsp), %rdi
movq %rdi, 0x28(%rsp)
callq 0x2330
movq 0x28(%rsp), %rdx
leaq 0x1fb35(%rip), %rsi     # 0x26510
leaq 0x1a0(%rsp), %rdi
callq 0x2290
jmp 0x69ea
leaq 0x1a0(%rsp), %rdi
callq 0x2730
jmp 0x69f9
leaq 0x1a0(%rsp), %rdi
callq 0x2130
leaq 0x19f(%rsp), %rdi
callq 0x2260
leaq 0x158(%rsp), %rdi
callq 0xde00
jmp 0x6a22
leaq 0x158(%rsp), %rdi
leaq 0x358(%rsp), %rsi
callq 0xe820
jmp 0x6a39
leaq 0x358(%rsp), %rdi
callq 0xdeb0
jmp 0x6a48
leaq 0x158(%rsp), %rdi
callq 0xdeb0
jmp 0x6a57
leaq 0x137(%rsp), %rdi
movq %rdi, 0x20(%rsp)
callq 0x2330
movq 0x20(%rsp), %rdx
leaq 0x1fac4(%rip), %rsi     # 0x26539
leaq 0x138(%rsp), %rdi
callq 0x2290
jmp 0x6a84
leaq 0x138(%rsp), %rdi
callq 0x2730
jmp 0x6a93
leaq 0x138(%rsp), %rdi
callq 0x2130
leaq 0x137(%rsp), %rdi
callq 0x2260
leaq 0xf0(%rsp), %rdi
callq 0xde00
jmp 0x6abc
leaq 0x1c0(%rsp), %rdi
callq 0xe790
movq %rax, %rsi
leaq 0xf0(%rsp), %rdi
movq %rdi, 0x18(%rsp)
callq 0xe950
movq 0x18(%rsp), %rdi
callq 0xdeb0
jmp 0x6aea
leaq 0xcf(%rsp), %rdi
movq %rdi, 0x10(%rsp)
callq 0x2330
movq 0x10(%rsp), %rdx
leaq 0x1fa5a(%rip), %rsi     # 0x26562
leaq 0xd0(%rsp), %rdi
callq 0x2290
jmp 0x6b17
leaq 0xd0(%rsp), %rdi
callq 0x2730
jmp 0x6b26
leaq 0xd0(%rsp), %rdi
callq 0x2130
leaq 0xcf(%rsp), %rdi
callq 0x2260
leaq 0x358(%rsp), %rdi
callq 0xe9b0
jmp 0x6b4f
leaq 0x358(%rsp), %rdi
callq 0xdeb0
jmp 0x6b5e
leaq 0xa7(%rsp), %rdi
movq %rdi, 0x8(%rsp)
callq 0x2330
movq 0x8(%rsp), %rdx
leaq 0x1f8f0(%rip), %rsi     # 0x2646c
leaq 0xa8(%rsp), %rdi
callq 0x2290
jmp 0x6b8b
leaq 0xa8(%rsp), %rdi
callq 0x26d0
jmp 0x6b9a
leaq 0xa8(%rsp), %rdi
callq 0x2130
leaq 0xa7(%rsp), %rdi
callq 0x2260
callq 0x2780
jmp 0x6bbb
leaq 0xf0(%rsp), %rdi
callq 0xea60
leaq 0x158(%rsp), %rdi
callq 0xea60
leaq 0x1c0(%rsp), %rdi
callq 0xea60
leaq 0x228(%rsp), %rdi
callq 0xea60
leaq 0x358(%rsp), %rdi
callq 0xea60
addq $0x3d8, %rsp            # imm = 0x3D8
retq
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x3a0(%rsp)
movl %eax, 0x39c(%rsp)
jmp 0x6c3b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x3a0(%rsp)
movl %eax, 0x39c(%rsp)
leaq 0x270(%rsp), %rdi
callq 0x2130
leaq 0x26f(%rsp), %rdi
callq 0x2260
jmp 0x6e4a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x3a0(%rsp)
movl %eax, 0x39c(%rsp)
jmp 0x6e3d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x3a0(%rsp)
movl %eax, 0x39c(%rsp)
jmp 0x6c9d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x3a0(%rsp)
movl %eax, 0x39c(%rsp)
leaq 0x208(%rsp), %rdi
callq 0x2130
leaq 0x207(%rsp), %rdi
callq 0x2260
jmp 0x6e3d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x3a0(%rsp)
movl %eax, 0x39c(%rsp)
jmp 0x6e30
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x3a0(%rsp)
movl %eax, 0x39c(%rsp)
jmp 0x6cff
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x3a0(%rsp)
movl %eax, 0x39c(%rsp)
leaq 0x1a0(%rsp), %rdi
callq 0x2130
leaq 0x19f(%rsp), %rdi
callq 0x2260
jmp 0x6e30
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x3a0(%rsp)
movl %eax, 0x39c(%rsp)
jmp 0x6e23
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x3a0(%rsp)
movl %eax, 0x39c(%rsp)
jmp 0x6d61
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x3a0(%rsp)
movl %eax, 0x39c(%rsp)
leaq 0x138(%rsp), %rdi
callq 0x2130
leaq 0x137(%rsp), %rdi
callq 0x2260
jmp 0x6e23
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x3a0(%rsp)
movl %eax, 0x39c(%rsp)
jmp 0x6e16
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x3a0(%rsp)
movl %eax, 0x39c(%rsp)
jmp 0x6dc3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x3a0(%rsp)
movl %eax, 0x39c(%rsp)
leaq 0xd0(%rsp), %rdi
callq 0x2130
leaq 0xcf(%rsp), %rdi
callq 0x2260
jmp 0x6e16
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x3a0(%rsp)
movl %eax, 0x39c(%rsp)
jmp 0x6e09
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x3a0(%rsp)
movl %eax, 0x39c(%rsp)
leaq 0xa8(%rsp), %rdi
callq 0x2130
leaq 0xa7(%rsp), %rdi
callq 0x2260
leaq 0xf0(%rsp), %rdi
callq 0xea60
leaq 0x158(%rsp), %rdi
callq 0xea60
leaq 0x1c0(%rsp), %rdi
callq 0xea60
leaq 0x228(%rsp), %rdi
callq 0xea60
leaq 0x358(%rsp), %rdi
callq 0xea60
movq 0x3a0(%rsp), %rdi
callq 0x2320
nopw %cs:(%rax,%rax)