// File: /workspace/github_cpp_makefile_star2_O3/tbonelaforge[P]gradebook/Gradebook.cpp
// Function: Gradebook::serialize(std::ostream&)
void Gradebook::serialize(ostream& out) {
    out << numPrograms << " ";
    out << numTests << " ";
    out << numFinals << endl;
    out << programsWeight << " ";
    out << testsWeight << " ";
    out << finalExamWeight << endl;
    out << numStudents << endl;
    Student * current = head;
    while (current != NULL) {
        current->serialize(out);
        out << endl;
        current = current->next;
    }
    for (int i = 0; i < numPrograms; i++) {
        out << programRecorded[i] << " ";
    }
    out << endl;
    for (int i = 0; i < numTests; i++) {
        out << testRecorded[i] << " ";
    }
    out << endl;
    out << finalExamRecorded << endl;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
movq %rsi, %rbx
movq %rdi, %r14
movl (%rdi), %esi
movq %rbx, %rdi
callq 0x2300
leaq 0x3a51(%rip), %r15      # 0x9327
movl $0x1, %edx
movq %rax, %rdi
movq %r15, %rsi
callq 0x2210
movl 0x10(%r14), %esi
movq %rbx, %rdi
callq 0x2300
movl $0x1, %edx
movq %rax, %rdi
movq %r15, %rsi
callq 0x2210
movl 0x20(%r14), %esi
movq %rbx, %rdi
callq 0x2300
movq %rax, %r12
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r12, %rdi
movl $0xa, %esi
callq 0x21b0
movsbl %al, %esi
movq %r12, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x2130
movl 0x28(%r14), %esi
movq %rbx, %rdi
callq 0x2300
movl $0x1, %edx
movq %rax, %rdi
movq %r15, %rsi
callq 0x2210
movl 0x2c(%r14), %esi
movq %rbx, %rdi
callq 0x2300
movl $0x1, %edx
movq %rax, %rdi
movq %r15, %rsi
callq 0x2210
movl 0x30(%r14), %esi
movq %rbx, %rdi
callq 0x2300
movq %rax, %r15
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x21b0
movsbl %al, %esi
movq %r15, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x2130
movl 0x48(%r14), %esi
movq %rbx, %rdi
callq 0x2300
movq %rax, %r15
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x21b0
movsbl %al, %esi
movq %r15, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x2130
movq 0x38(%r14), %r15
testq %r15, %r15
je 0x5a1c
movq %r15, %rdi
movq %rbx, %rsi
callq 0x63a6
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x21b0
movsbl %al, %esi
movq %rbx, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x2130
movq (%r15), %r15
jmp 0x59e0
cmpl $0x0, (%r14)
jle 0x5a58
xorl %r12d, %r12d
leaq 0x38fb(%rip), %r15      # 0x9327
movq 0x8(%r14), %rax
movzbl (%rax,%r12), %esi
movq %rbx, %rdi
callq 0x22d0
movl $0x1, %edx
movq %rax, %rdi
movq %r15, %rsi
callq 0x2210
incq %r12
movslq (%r14), %rax
cmpq %rax, %r12
jl 0x5a2c
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x21b0
movsbl %al, %esi
movq %rbx, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x2130
cmpl $0x0, 0x10(%r14)
jle 0x5abd
xorl %r12d, %r12d
leaq 0x3897(%rip), %r15      # 0x9327
movq 0x18(%r14), %rax
movzbl (%rax,%r12), %esi
movq %rbx, %rdi
callq 0x22d0
movl $0x1, %edx
movq %rax, %rdi
movq %r15, %rsi
callq 0x2210
incq %r12
movslq 0x10(%r14), %rax
cmpq %rax, %r12
jl 0x5a90
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x21b0
movsbl %al, %esi
movq %rbx, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x2130
movzbl 0x24(%r14), %esi
movq %rbx, %rdi
callq 0x22d0
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x21b0
movsbl %al, %esi
movq %rbx, %rdi
callq 0x2040
movq %rax, %rdi
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
jmp 0x2130
nop