// File: /workspace/github_cpp_makefile_star2_O3/iZhangHui[P]CppPrimer/CH08_TheIOLibrary/examples/sstream.cc
// Function: getData(std::istream&)
vector<PersonInfo>
getData(istream &is)
{
	// will hold a line and word from input, respectively
	string line, word;

	// will hold all the records from the input
	vector<PersonInfo> people;

	// read the input a line at a time until end-of-file (or other error)
	while (getline(is, line)) {       
		PersonInfo info;            // object to hold this record's data
	    istringstream record(line); // bind record to the line we just read
		record >> info.name;        // read the name
	    while (record >> word)      // read the phone numbers 
			info.phones.push_back(word);  // and store them
		people.push_back(info); // append this record to people
	}
	
	return people;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x208, %rsp            # imm = 0x208
movq %rsi, %r15
leaq -0x40(%rbp), %rax
movq %rax, -0x10(%rax)
xorl %ecx, %ecx
movq %rcx, -0x8(%rax)
movb %cl, (%rax)
leaq -0x60(%rbp), %rax
movq %rax, -0x10(%rax)
movq %rcx, -0x8(%rax)
movb %cl, (%rax)
movq %rcx, 0x10(%rdi)
xorps %xmm0, %xmm0
movq %rdi, -0x30(%rbp)
movups %xmm0, (%rdi)
leaq -0x88(%rbp), %r12
leaq -0x228(%rbp), %r14
leaq -0xa8(%rbp), %rbx
leaq -0x70(%rbp), %r13
movq (%r15), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x20f0
movsbl %al, %edx
movq %r15, %rdi
leaq -0x50(%rbp), %rsi
callq 0x21d0
movq (%rax), %rcx
movq -0x18(%rcx), %rcx
testb $0x5, 0x20(%rax,%rcx)
jne 0x24d8
leaq -0x98(%rbp), %rax
movq %rax, -0xa8(%rbp)
xorl %eax, %eax
movq %rax, -0xa0(%rbp)
movb $0x0, -0x98(%rbp)
movq %rax, 0x10(%r12)
xorps %xmm0, %xmm0
movups %xmm0, (%r12)
movq %r14, %rdi
leaq -0x50(%rbp), %rsi
movl $0x8, %edx
callq 0x21a0
movq %r14, %rdi
movq %rbx, %rsi
callq 0x2130
movq %r14, %rdi
movq %r13, %rsi
callq 0x2130
movq (%rax), %rcx
movq -0x18(%rcx), %rcx
testb $0x5, 0x20(%rax,%rcx)
jne 0x247e
movq %r12, %rdi
movq %r13, %rsi
callq 0x28c8
jmp 0x2458
movq -0x30(%rbp), %rdi
movq %rbx, %rsi
callq 0x2914
movq %r14, %rdi
movq 0x3b24(%rip), %rsi      # 0x5fb8
callq 0x2150
leaq -0x1b0(%rbp), %rdi
callq 0x2050
movq %r12, %rdi
callq 0x29c0
movq -0xa8(%rbp), %rdi
leaq -0x98(%rbp), %rax
cmpq %rax, %rdi
je 0x23dc
movq -0x98(%rbp), %rsi
incq %rsi
callq 0x2110
jmp 0x23dc
movq -0x70(%rbp), %rdi
leaq -0x60(%rbp), %rax
cmpq %rax, %rdi
je 0x24f1
movq -0x60(%rbp), %rsi
incq %rsi
callq 0x2110
movq -0x50(%rbp), %rdi
leaq -0x40(%rbp), %rax
cmpq %rax, %rdi
je 0x250a
movq -0x40(%rbp), %rsi
incq %rsi
callq 0x2110
movq -0x30(%rbp), %rax
addq $0x208, %rsp            # imm = 0x208
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %rbx
jmp 0x254e
jmp 0x252c
movq %rax, %rbx
jmp 0x255a
movq %rax, %rbx
movq 0x3a82(%rip), %rsi      # 0x5fb8
leaq -0x228(%rbp), %rdi
callq 0x2150
leaq -0x1b0(%rbp), %rdi
callq 0x2050
leaq -0xa8(%rbp), %rdi
callq 0x294c
movq -0x30(%rbp), %rdi
callq 0x2982
movq -0x70(%rbp), %rdi
leaq -0x60(%rbp), %rax
cmpq %rax, %rdi
je 0x257c
movq -0x60(%rbp), %rsi
incq %rsi
callq 0x2110
movq -0x50(%rbp), %rdi
leaq -0x40(%rbp), %rax
cmpq %rax, %rdi
je 0x2595
movq -0x40(%rbp), %rsi
incq %rsi
callq 0x2110
movq %rbx, %rdi
callq 0x21b0