// File: /workspace/github_cpp_makefile_star2_O3/vgteam[P]stream/src/main.cpp
// Function: main
int main(int argc, char** argv) {
    Person person1;
    person1.set_name("Ralph");
    person1.set_id(42);
    person1.set_email("post please");
    Person person2;
    person2.set_name("Sal");
    person2.set_id(99929999);
    person2.set_email("morse code");
    ofstream out;
    out.open("test.stream");
    vector<Person> people = { person1, person2 };
    stream::write_buffered(out, people, 0);
    out.close();
    ifstream in;
    in.open("test.stream");
    function<void(Person&)> lambda = [](Person& p) {
        cout << p.name() << endl;
        cout << p.id() << endl;
    };
    stream::for_each(in, lambda);
    in.close();
    return 0;
}

// Assembly:
pushq %r14
pushq %rbx
subq $0x4a8, %rsp            # imm = 0x4A8
leaq 0x30(%rsp), %rbx
movq %rbx, %rdi
xorl %esi, %esi
callq 0x46d8
orb $0x1, 0x10(%rbx)
leaq 0xb0(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x19a5(%rip), %rsi      # 0x72bd
leaq 0x19a3(%rip), %rdx      # 0x72c2
leaq 0xa0(%rsp), %rdi
callq 0x607e
movq 0x38(%rsp), %rsi
testb $0x1, %sil
jne 0x5cb0
movq 0x48(%rsp), %rdi
cmpq 0x4661(%rip), %rdi      # 0x9fa8
je 0x5958
leaq 0xa0(%rsp), %rsi
callq 0x4180
jmp 0x596a
leaq 0x48(%rsp), %rdi
leaq 0xa0(%rsp), %rdx
callq 0x550c
movq 0xa0(%rsp), %rdi
cmpq %r14, %rdi
je 0x5987
movq 0xb0(%rsp), %rsi
incq %rsi
callq 0x42d0
movl $0x2a, 0x58(%rsp)
orb $0x6, 0x40(%rsp)
leaq 0xa0(%rsp), %rdi
movq %r14, (%rdi)
leaq 0x191d(%rip), %rsi      # 0x72c3
leaq 0x1921(%rip), %rdx      # 0x72ce
callq 0x607e
movq 0x38(%rsp), %rsi
testb $0x1, %sil
jne 0x5cbc
movq 0x50(%rsp), %rdi
cmpq 0x45db(%rip), %rdi      # 0x9fa8
je 0x59de
leaq 0xa0(%rsp), %rsi
callq 0x4180
jmp 0x59f0
leaq 0x50(%rsp), %rdi
leaq 0xa0(%rsp), %rdx
callq 0x550c
movq 0xa0(%rsp), %rdi
cmpq %r14, %rdi
je 0x5a0d
movq 0xb0(%rsp), %rsi
incq %rsi
callq 0x42d0
movq %rsp, %rdi
xorl %esi, %esi
callq 0x46d8
orb $0x1, 0x10(%rsp)
leaq 0xa0(%rsp), %rdi
movq %r14, (%rdi)
leaq 0x18a1(%rip), %rsi      # 0x72cf
leaq 0x189d(%rip), %rdx      # 0x72d2
callq 0x607e
movq 0x8(%rsp), %rsi
testb $0x1, %sil
jne 0x5cc8
movq 0x18(%rsp), %rdi
cmpq 0x4553(%rip), %rdi      # 0x9fa8
je 0x5a66
leaq 0xa0(%rsp), %rsi
callq 0x4180
jmp 0x5a78
leaq 0x18(%rsp), %rdi
leaq 0xa0(%rsp), %rdx
callq 0x550c
movq 0xa0(%rsp), %rdi
cmpq %r14, %rdi
je 0x5a95
movq 0xb0(%rsp), %rsi
incq %rsi
callq 0x42d0
movl $0x5f4cf8f, 0x28(%rsp)  # imm = 0x5F4CF8F
orb $0x6, 0x10(%rsp)
leaq 0xa0(%rsp), %rdi
movq %r14, (%rdi)
leaq 0x181f(%rip), %rsi      # 0x72d3
leaq 0x1822(%rip), %rdx      # 0x72dd
callq 0x607e
movq 0x8(%rsp), %rsi
testb $0x1, %sil
jne 0x5cd4
movq 0x20(%rsp), %rdi
cmpq 0x44cd(%rip), %rdi      # 0x9fa8
je 0x5aec
leaq 0xa0(%rsp), %rsi
callq 0x4180
jmp 0x5afe
leaq 0x20(%rsp), %rdi
leaq 0xa0(%rsp), %rdx
callq 0x550c
movq 0xa0(%rsp), %rdi
cmpq %r14, %rdi
je 0x5b1b
movq 0xb0(%rsp), %rsi
incq %rsi
callq 0x42d0
leaq 0x2a8(%rsp), %rdi
callq 0x4440
leaq 0x17af(%rip), %rsi      # 0x72de
leaq 0x2a8(%rsp), %rdi
movl $0x10, %edx
callq 0x4050
leaq 0xa0(%rsp), %rdi
leaq 0x30(%rsp), %rsi
callq 0x4722
leaq 0xd0(%rsp), %rdi
movq %rsp, %rsi
callq 0x4722
leaq 0x88(%rsp), %rdi
leaq 0xa0(%rsp), %rsi
leaq 0x60(%rsp), %rcx
movl $0x2, %edx
callq 0x5ea2
movl $0x30, %ebx
leaq (%rsp,%rbx), %rdi
addq $0xa0, %rdi
callq 0x47de
addq $-0x30, %rbx
cmpq $-0x30, %rbx
jne 0x5b87
leaq 0x2a8(%rsp), %rdi
leaq 0x88(%rsp), %rsi
xorl %edx, %edx
callq 0x5eee
leaq 0x2a8(%rsp), %rdi
callq 0x4350
leaq 0xa0(%rsp), %rdi
callq 0x42e0
leaq 0x1705(%rip), %rsi      # 0x72de
leaq 0xa0(%rsp), %rdi
movl $0x8, %edx
callq 0x41c0
xorps %xmm0, %xmm0
leaq 0x60(%rsp), %rsi
movaps %xmm0, (%rsi)
leaq 0x207(%rip), %rax       # 0x5e04
movq %rax, 0x18(%rsi)
leaq 0x282(%rip), %rax       # 0x5e8a
movq %rax, 0x10(%rsi)
leaq 0xa0(%rsp), %rdi
callq 0x5fc0
leaq 0xa0(%rsp), %rdi
callq 0x40a0
movq 0x70(%rsp), %rax
testq %rax, %rax
je 0x5c3f
leaq 0x60(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
leaq 0xa0(%rsp), %rdi
callq 0x40d0
leaq 0x88(%rsp), %rdi
callq 0x6036
movq 0x4368(%rip), %rax      # 0x9fc8
movq (%rax), %rcx
movq 0x18(%rax), %rax
leaq 0x2b0(%rsp), %rdi
movq %rcx, -0x8(%rdi)
movq -0x18(%rcx), %rcx
movq %rax, 0x2a8(%rsp,%rcx)
callq 0x4250
leaq 0x3a0(%rsp), %rdi
callq 0x4110
movq %rsp, %rdi
callq 0x47de
leaq 0x30(%rsp), %rdi
callq 0x47de
xorl %eax, %eax
addq $0x4a8, %rsp            # imm = 0x4A8
popq %rbx
popq %r14
retq
andq $-0x2, %rsi
movq (%rsi), %rsi
jmp 0x593b
andq $-0x2, %rsi
movq (%rsi), %rsi
jmp 0x59c1
andq $-0x2, %rsi
movq (%rsi), %rsi
jmp 0x5a49
andq $-0x2, %rsi
movq (%rsi), %rsi
jmp 0x5acf
jmp 0x5dc5
movq %rax, %rbx
jmp 0x5db6
jmp 0x5dcd
movq %rax, %rbx
movl $0x30, %r14d
leaq (%rsp,%r14), %rdi
addq $0xa0, %rdi
callq 0x47de
addq $-0x30, %r14
cmpq $-0x30, %r14
jne 0x5cfb
jmp 0x5ddd
movq %rax, %rbx
leaq 0xa0(%rsp), %rdi
callq 0x47de
jmp 0x5ddd
jmp 0x5d31
movq %rax, %rbx
jmp 0x5ddd
jmp 0x5d68
jmp 0x5d3f
jmp 0x5d68
movq %rax, %rbx
movq 0xa0(%rsp), %rdi
cmpq %r14, %rdi
je 0x5dea
movq 0xb0(%rsp), %rsi
incq %rsi
callq 0x42d0
jmp 0x5dea
movq %rax, %rbx
jmp 0x5dea
jmp 0x5d95
jmp 0x5d73
jmp 0x5d95
movq %rax, %rbx
movq 0xa0(%rsp), %rdi
cmpq %r14, %rdi
je 0x5df2
movq 0xb0(%rsp), %rsi
incq %rsi
callq 0x42d0
jmp 0x5df2
movq %rax, %rbx
jmp 0x5df2
movq %rax, %rbx
movq 0x70(%rsp), %rax
testq %rax, %rax
je 0x5db6
leaq 0x60(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
leaq 0xa0(%rsp), %rdi
callq 0x40d0
jmp 0x5dd0
movq %rax, %rdi
callq 0x538a
movq %rax, %rbx
leaq 0x88(%rsp), %rdi
callq 0x6036
leaq 0x2a8(%rsp), %rdi
callq 0x43b0
movq %rsp, %rdi
callq 0x47de
leaq 0x30(%rsp), %rdi
callq 0x47de
movq %rbx, %rdi
callq 0x4480