// File: MechaDragonX[P]CPPCollections/main.cpp
// Function: doubleLinkedListStuff(Student, Student, Student, Student, Student)
DoubleLinkedList<Student> doubleLinkedListStuff(Student rags, Student syke1, Student syke2, Student surnameLacking, Student knob) {
    DoubleLinkedList<Student> list = DoubleLinkedList<Student>(rags);
    list.add(syke1);
    list.add(syke2);
    list.add(surnameLacking);
    list.add(knob);
    std::cout << list.toString() << std::endl;
    list.remove();
    std::cout << list.toString() << std::endl;
    list.remove(syke2);
    std::cout << list.toString() << std::endl;
    list.remove(rags);
    std::cout << list.toString() << std::endl;
    return list;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x3e0, %rsp            # imm = 0x3E0
movq %r9, -0x368(%rbp)
movq %r8, -0x360(%rbp)
movq %rcx, -0x358(%rbp)
movq %rdx, -0x350(%rbp)
movq %rsi, -0x348(%rbp)
movq %rdi, -0x338(%rbp)
movq %rdi, %rax
movq %rax, -0x340(%rbp)
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq %rcx, -0x20(%rbp)
movq %r8, -0x28(%rbp)
movq %r9, -0x30(%rbp)
leaq -0x88(%rbp), %rdi
movq %rdi, -0x330(%rbp)
callq 0x73b0
movq -0x338(%rbp), %rdi
movq -0x330(%rbp), %rsi
callq 0x7300
jmp 0x1254f
leaq -0x88(%rbp), %rdi
callq 0x8830
movq -0x350(%rbp), %rsi
leaq -0xf0(%rbp), %rdi
movq %rdi, -0x370(%rbp)
callq 0x73b0
movq -0x338(%rbp), %rdi
movq -0x370(%rbp), %rsi
callq 0x7510
jmp 0x1258a
leaq -0xf0(%rbp), %rdi
callq 0x8830
movq -0x358(%rbp), %rsi
leaq -0x148(%rbp), %rdi
movq %rdi, -0x378(%rbp)
callq 0x73b0
movq -0x338(%rbp), %rdi
movq -0x378(%rbp), %rsi
callq 0x7510
jmp 0x125c5
leaq -0x148(%rbp), %rdi
callq 0x8830
movq -0x360(%rbp), %rsi
leaq -0x1a0(%rbp), %rdi
movq %rdi, -0x380(%rbp)
callq 0x73b0
movq -0x338(%rbp), %rdi
movq -0x380(%rbp), %rsi
callq 0x7510
jmp 0x12600
leaq -0x1a0(%rbp), %rdi
callq 0x8830
movq -0x368(%rbp), %rsi
leaq -0x1f8(%rbp), %rdi
movq %rdi, -0x388(%rbp)
callq 0x73b0
movq -0x338(%rbp), %rdi
movq -0x388(%rbp), %rsi
callq 0x7510
jmp 0x1263b
leaq -0x1f8(%rbp), %rdi
callq 0x8830
movq -0x338(%rbp), %rsi
leaq -0x218(%rbp), %rdi
movq %rdi, -0x398(%rbp)
callq 0x7850
movq -0x398(%rbp), %rsi
movq 0xa969(%rip), %rdi      # 0x1cfd8
callq 0x41a0
movq %rax, -0x390(%rbp)
jmp 0x1267d
movq -0x390(%rbp), %rdi
movq 0xa935(%rip), %rsi      # 0x1cfc0
callq 0x41f0
jmp 0x12692
leaq -0x218(%rbp), %rdi
callq 0x4120
movq -0x338(%rbp), %rdi
callq 0x76a0
movq -0x338(%rbp), %rsi
leaq -0x238(%rbp), %rdi
movq %rdi, -0x3a8(%rbp)
callq 0x7850
movq -0x3a8(%rbp), %rsi
movq 0xa906(%rip), %rdi      # 0x1cfd8
callq 0x41a0
movq %rax, -0x3a0(%rbp)
jmp 0x126e0
movq -0x3a0(%rbp), %rdi
movq 0xa8d2(%rip), %rsi      # 0x1cfc0
callq 0x41f0
jmp 0x126f5
leaq -0x238(%rbp), %rdi
callq 0x4120
movq -0x358(%rbp), %rsi
leaq -0x290(%rbp), %rdi
movq %rdi, -0x3b0(%rbp)
callq 0x73b0
movq -0x338(%rbp), %rdi
movq -0x3b0(%rbp), %rsi
callq 0x7730
jmp 0x12730
leaq -0x290(%rbp), %rdi
callq 0x8830
movq -0x338(%rbp), %rsi
leaq -0x2b0(%rbp), %rdi
movq %rdi, -0x3c0(%rbp)
callq 0x7850
movq -0x3c0(%rbp), %rsi
movq 0xa874(%rip), %rdi      # 0x1cfd8
callq 0x41a0
movq %rax, -0x3b8(%rbp)
jmp 0x12772
movq -0x3b8(%rbp), %rdi
movq 0xa840(%rip), %rsi      # 0x1cfc0
callq 0x41f0
jmp 0x12787
leaq -0x2b0(%rbp), %rdi
callq 0x4120
movq -0x348(%rbp), %rsi
leaq -0x308(%rbp), %rdi
movq %rdi, -0x3c8(%rbp)
callq 0x73b0
movq -0x338(%rbp), %rdi
movq -0x3c8(%rbp), %rsi
callq 0x7730
jmp 0x127c2
leaq -0x308(%rbp), %rdi
callq 0x8830
movq -0x338(%rbp), %rsi
leaq -0x328(%rbp), %rdi
movq %rdi, -0x3d8(%rbp)
callq 0x7850
movq -0x3d8(%rbp), %rsi
movq 0xa7e2(%rip), %rdi      # 0x1cfd8
callq 0x41a0
movq %rax, -0x3d0(%rbp)
jmp 0x12804
movq -0x3d0(%rbp), %rdi
movq 0xa7ae(%rip), %rsi      # 0x1cfc0
callq 0x41f0
jmp 0x12819
leaq -0x328(%rbp), %rdi
callq 0x4120
movq -0x340(%rbp), %rax
addq $0x3e0, %rsp            # imm = 0x3E0
popq %rbp
retq
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
leaq -0x88(%rbp), %rdi
callq 0x8830
jmp 0x129a5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
leaq -0xf0(%rbp), %rdi
callq 0x8830
jmp 0x129a5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
leaq -0x148(%rbp), %rdi
callq 0x8830
jmp 0x129a5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
leaq -0x1a0(%rbp), %rdi
callq 0x8830
jmp 0x129a5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
leaq -0x1f8(%rbp), %rdi
callq 0x8830
jmp 0x129a5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
leaq -0x218(%rbp), %rdi
callq 0x4120
jmp 0x129a5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
leaq -0x238(%rbp), %rdi
callq 0x4120
jmp 0x129a5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
leaq -0x290(%rbp), %rdi
callq 0x8830
jmp 0x129a5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
leaq -0x2b0(%rbp), %rdi
callq 0x4120
jmp 0x129a5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
leaq -0x308(%rbp), %rdi
callq 0x8830
jmp 0x129a5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
leaq -0x328(%rbp), %rdi
callq 0x4120
movq -0x90(%rbp), %rdi
callq 0x4300
nopw %cs:(%rax,%rax)