// File: /workspace/github_cpp_makefile_star2_O1/iZhangHui[P]CppPrimer/CH11_AssociativeContainers/exercises/ex11_07.cc
// Function: main
int main(int argc, char const *argv[])
{
	map<string, vector<string>> families;

	for (string last_name; cout << "Input family's last name:" << endl, cin >> last_name;) {
		for (string child_name; cout << "Input children's name:" << endl, cin >> child_name;) {
			families[last_name].push_back(child_name);
		}
		cin.clear();
	}
	cout << "===========================" << endl;

	for (const auto& family : families) {
		cout << family.first << ":" << endl;
		for (const auto& child : family.second)
			cout << child << " ";
		cout << endl;
	}
	return 0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x78, %rsp
leaq -0x90(%rbp), %rcx
movl $0x0, (%rcx)
xorl %eax, %eax
movq %rax, 0x8(%rcx)
movq %rcx, 0x10(%rcx)
movq %rcx, 0x18(%rcx)
movq %rax, 0x20(%rcx)
leaq -0x58(%rbp), %rcx
movq %rcx, -0x10(%rcx)
movq %rax, -0x8(%rcx)
movb $0x0, (%rcx)
movq 0x2c7e(%rip), %rbx      # 0x4fd0
movq 0x2c87(%rip), %r15      # 0x4fe0
leaq -0x68(%rbp), %r12
leaq 0xcba(%rip), %r13       # 0x301e
leaq -0x48(%rbp), %r14
movl $0x19, %edx
movq %rbx, %rdi
leaq 0xc8d(%rip), %rsi       # 0x3004
callq 0x2140
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x2100
movsbl %al, %esi
movq %rbx, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x20a0
movq %r15, %rdi
movq %r12, %rsi
callq 0x2150
movq (%rax), %rcx
movq -0x18(%rcx), %rcx
testb $0x5, 0x20(%rax,%rcx)
jne 0x246f
leaq -0x38(%rbp), %rax
movq %rax, -0x48(%rbp)
movq $0x0, -0x40(%rbp)
movb $0x0, -0x38(%rbp)
movl $0x16, %edx
movq %rbx, %rdi
movq %r13, %rsi
callq 0x2140
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x2100
movsbl %al, %esi
movq %rbx, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x20a0
movq %r15, %rdi
movq %r14, %rsi
callq 0x2150
movq (%rax), %rcx
movq -0x18(%rcx), %rcx
testb $0x5, 0x20(%rax,%rcx)
jne 0x2440
leaq -0x98(%rbp), %rdi
movq %r12, %rsi
callq 0x2624
movq %rax, %rdi
movq %r14, %rsi
callq 0x26a4
jmp 0x23d4
movq -0x48(%rbp), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0x2459
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x2120
movq (%r15), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
xorl %esi, %esi
callq 0x2190
jmp 0x2368
movq -0x68(%rbp), %rdi
leaq -0x58(%rbp), %rax
cmpq %rax, %rdi
je 0x2488
movq -0x58(%rbp), %rsi
incq %rsi
callq 0x2120
movq 0x2b41(%rip), %rbx      # 0x4fd0
leaq 0xb9f(%rip), %rsi       # 0x3035
movl $0x1b, %edx
movq %rbx, %rdi
callq 0x2140
movq (%rbx), %rax
addq -0x18(%rax), %rbx
movq %rbx, %rdi
movl $0xa, %esi
callq 0x2100
movsbl %al, %esi
movq 0x2b0f(%rip), %rbx      # 0x4fd0
movq %rbx, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x20a0
movq -0x80(%rbp), %r14
leaq -0x90(%rbp), %rax
cmpq %rax, %r14
je 0x25b0
leaq 0xb65(%rip), %r12       # 0x3051
movq 0x20(%r14), %rsi
movq 0x28(%r14), %rdx
movq %rbx, %rdi
callq 0x2140
movq %rax, %r13
movl $0x1, %edx
movq %rax, %rdi
leaq 0xb25(%rip), %rsi       # 0x3033
callq 0x2140
movq (%r13), %rax
movq -0x18(%rax), %rdi
addq %r13, %rdi
movl $0xa, %esi
callq 0x2100
movsbl %al, %esi
movq %r13, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x20a0
movq 0x40(%r14), %r13
movq 0x48(%r14), %r15
cmpq %r15, %r13
je 0x256e
movq (%r13), %rsi
movq 0x8(%r13), %rdx
movq %rbx, %rdi
callq 0x2140
movl $0x1, %edx
movq %rax, %rdi
movq %r12, %rsi
callq 0x2140
addq $0x20, %r13
jmp 0x2543
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x2100
movsbl %al, %esi
movq %rbx, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x20a0
movq %r14, %rdi
callq 0x20b0
movq %rax, %r14
leaq -0x90(%rbp), %rax
cmpq %rax, %r14
jne 0x24ec
leaq -0x98(%rbp), %rdi
callq 0x26fe
xorl %eax, %eax
addq $0x78, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x25d6
jmp 0x25d6
movq %rax, %rbx
jmp 0x25f7
movq %rax, %rbx
jmp 0x2610
movq %rax, %rbx
movq -0x48(%rbp), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0x25f7
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x2120
movq -0x68(%rbp), %rdi
leaq -0x58(%rbp), %rax
cmpq %rax, %rdi
je 0x2610
movq -0x58(%rbp), %rsi
incq %rsi
callq 0x2120
leaq -0x98(%rbp), %rdi
callq 0x26fe
movq %rbx, %rdi
callq 0x21a0