// File: /workspace/github_cpp_makefile_star2_O3/MechaDragonX[P]CPPCollections/student.cpp
// Function: Student::toString[abi:cxx11](bool)
std::string Student::toString(bool full = false) {
    if(full) {
        std::string output = surname_ + ", " + givenName_ + "\n";
        output += "{ ";
        for(int i = 0; i < coursesTaken_.size(); i++) {
            if(i != coursesTaken_.size() - 1)
                output += coursesTaken_[i] + ", ";
            else
                output += coursesTaken_[i];
        }
        return output + " }";
    }

    return "[" + surname_ + ", " + givenName_ + "]";
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x68, %rsp
movq %rsi, %r14
movq %rdi, %r13
testl %edx, %edx
je 0xbba5
leaq -0x78(%rbp), %r12
movq %r12, -0x10(%r12)
movq 0x20(%r14), %rsi
movq 0x28(%r14), %rdx
addq %rsi, %rdx
leaq -0x88(%rbp), %r15
movq %r15, %rdi
callq 0x594c
leaq 0x48ea(%rip), %rsi      # 0x10449
movq %r15, %rdi
callq 0x3200
movq (%r14), %rsi
movq 0x8(%r14), %rdx
leaq -0x88(%rbp), %rdi
callq 0x3070
leaq -0x38(%rbp), %rbx
movq %rbx, -0x10(%rbx)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0xbc43
movq %rdx, -0x48(%rbp)
movq (%rcx), %rdx
movq %rdx, -0x38(%rbp)
jmp 0xbc49
leaq 0x20(%r14), %rdx
leaq 0x48a2(%rip), %rsi      # 0x10452
leaq -0x88(%rbp), %r15
movq %r15, %rdi
callq 0xc19c
leaq 0x4883(%rip), %rsi      # 0x10449
movq %r15, %rdi
callq 0x3200
leaq -0x38(%rbp), %rbx
movq %rbx, -0x10(%rbx)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0xbbf2
movq %rdx, -0x48(%rbp)
movq (%rcx), %rdx
movq %rdx, -0x38(%rbp)
jmp 0xbbf8
movups (%rcx), %xmm0
movups %xmm0, (%rbx)
movq 0x8(%rax), %rdx
leaq -0x48(%rbp), %rdi
movq %rdx, 0x8(%rdi)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq (%r14), %rsi
movq 0x8(%r14), %rdx
callq 0x3070
leaq -0x58(%rbp), %r15
movq %r15, -0x10(%r15)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0xbc94
movq %rdx, -0x68(%rbp)
movq (%rcx), %rdx
movq %rdx, -0x58(%rbp)
jmp 0xbc9b
movups (%rcx), %xmm0
movups %xmm0, (%rbx)
movq 0x8(%rax), %rdx
leaq -0x48(%rbp), %rdi
movq %rdx, 0x8(%rdi)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0x4752(%rip), %rsi      # 0x103bd
callq 0x3200
leaq -0x58(%rbp), %rsi
movq %rsi, -0x10(%rsi)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0xbced
movq %rdx, -0x68(%rbp)
movq (%rcx), %rdx
movq %rdx, -0x58(%rbp)
jmp 0xbcf3
movups (%rcx), %xmm0
movups %xmm0, (%r15)
movq 0x8(%rax), %rdx
leaq -0x68(%rbp), %rdi
movq %rdx, 0x8(%rdi)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0x4797(%rip), %rsi      # 0x10454
callq 0x3200
leaq 0x10(%r13), %rdx
movq %rdx, (%r13)
movq (%rax), %rsi
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rsi
je 0xbe45
movq %rsi, (%r13)
movq (%rcx), %rdx
movq %rdx, 0x10(%r13)
jmp 0xbe4b
movups (%rcx), %xmm0
movups %xmm0, (%rsi)
movq 0x8(%rax), %rdx
movq %rdx, -0x60(%rbp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq -0x48(%rbp), %rdi
cmpq %rbx, %rdi
je 0xbd1f
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x3140
movq -0x88(%rbp), %rdi
cmpq %r12, %rdi
je 0xbd37
movq -0x78(%rbp), %rsi
incq %rsi
callq 0x3140
leaq 0x470e(%rip), %rsi      # 0x1044c
leaq -0x68(%rbp), %rdi
callq 0x3200
movq %r13, -0x90(%rbp)
movq 0x40(%r14), %rax
movq 0x48(%r14), %rcx
subq %rax, %rcx
je 0xbe01
sarq $0x5, %rcx
movl $0x8, %r13d
xorl %ebx, %ebx
leaq -0x68(%rbp), %r15
leaq -0x48(%rbp), %r12
decq %rcx
cmpq %rcx, %rbx
jne 0xbd8e
movq -0x8(%rax,%r13), %rsi
movq (%rax,%r13), %rdx
movq %r15, %rdi
callq 0x3070
jmp 0xbde2
leaq -0x38(%rbp), %rcx
movq %rcx, -0x48(%rbp)
movq -0x8(%rax,%r13), %rsi
movq (%rax,%r13), %rdx
addq %rsi, %rdx
movq %r12, %rdi
callq 0x594c
movq %r12, %rdi
leaq 0x4695(%rip), %rsi      # 0x10449
callq 0x3200
movq -0x48(%rbp), %rsi
movq -0x40(%rbp), %rdx
movq %r15, %rdi
callq 0x3070
movq -0x48(%rbp), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0xbde2
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x3140
incq %rbx
movq 0x40(%r14), %rax
movq 0x48(%r14), %rcx
subq %rax, %rcx
sarq $0x5, %rcx
addq $0x20, %r13
cmpq %rbx, %rcx
ja 0xbd73
movq -0x90(%rbp), %r13
leaq 0x10(%r13), %rbx
movq %rbx, (%r13)
movq -0x68(%rbp), %rsi
movq -0x60(%rbp), %rdx
addq %rsi, %rdx
movq %r13, %rdi
callq 0x594c
leaq 0x4625(%rip), %rsi      # 0x1044f
movq %r13, %rdi
callq 0x3200
movq -0x68(%rbp), %rdi
leaq -0x58(%rbp), %rax
cmpq %rax, %rdi
je 0xbea5
movq -0x58(%rbp), %rsi
jmp 0xbe9d
movups (%rcx), %xmm0
movups %xmm0, (%rdx)
movq 0x8(%rax), %rdx
movq %rdx, 0x8(%r13)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq -0x68(%rbp), %rdi
cmpq %r15, %rdi
je 0xbe77
movq -0x58(%rbp), %rsi
incq %rsi
callq 0x3140
movq -0x48(%rbp), %rdi
cmpq %rbx, %rdi
je 0xbe8c
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x3140
leaq -0x78(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xbea5
movq -0x78(%rbp), %rsi
incq %rsi
callq 0x3140
movq %r13, %rax
addq $0x68, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %r14
movq (%r13), %rdi
cmpq %rbx, %rdi
je 0xbf6d
movq (%rbx), %rsi
jmp 0xbf60
movq %rax, %r14
movq -0x68(%rbp), %rdi
cmpq %r15, %rdi
je 0xbf06
movq -0x58(%rbp), %rsi
incq %rsi
callq 0x3140
jmp 0xbf06
movq %rax, %r14
movq -0x48(%rbp), %rdi
cmpq %rbx, %rdi
je 0xbf34
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x3140
jmp 0xbf34
movq %rax, %r14
movq -0x48(%rbp), %rdi
cmpq %rbx, %rdi
je 0xbf22
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x3140
jmp 0xbf22
jmp 0xbf31
movq %rax, %r14
leaq -0x78(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
jne 0xbf40
jmp 0xbf86
movq %rax, %r14
movq -0x88(%rbp), %rdi
cmpq %r12, %rdi
je 0xbf86
movq -0x78(%rbp), %rsi
jmp 0xbf7e
jmp 0xbf6a
jmp 0xbf6a
jmp 0xbf4c
movq %rax, %r14
movq -0x48(%rbp), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0xbf6d
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x3140
jmp 0xbf6d
movq %rax, %r14
movq -0x68(%rbp), %rdi
leaq -0x58(%rbp), %rax
cmpq %rax, %rdi
je 0xbf86
movq -0x58(%rbp), %rsi
incq %rsi
callq 0x3140
movq %r14, %rdi
callq 0x31e0