// File: /workspace/github_cpp_makefile_star2_O1/eschwabe[P]interview-practice/src/towers.cpp
// Function: PrintStacks(Adapter<std::stack<int, std::deque<int, std::allocator<int>>>>&, Adapter<std::stack<int, std::deque<int, std::allocator<int>>>>&, Adapter<std::stack<int, std::deque<int, std::allocator<int>>>>&)
void PrintStacks(MyStack& source, MyStack& dest, MyStack& temp) {

    cout << "SRC: ";
    for(auto i : source.get_container()) {
        cout << i << " ";
    }
    cout << endl;

    cout << "DEST: ";
    for(auto i : dest.get_container()) {
        cout << i << " ";
    }
    cout << endl;

    cout << "TEMP: ";
    for(auto i : temp.get_container()) {
        cout << i << " ";
    }
    cout << endl;
    cout << endl;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x18, %rsp
movq %rdx, 0x10(%rsp)
movq %rsi, 0x8(%rsp)
movq %rdi, %r12
movq 0x2c4a(%rip), %rdi      # 0x3fd8
leaq 0xc6f(%rip), %rsi       # 0x2004
movl $0x5, %edx
callq 0x10e0
movq 0x10(%r12), %r14
movq 0x30(%r12), %rbp
cmpq %rbp, %r14
je 0x13fe
movq 0x20(%r12), %r15
movq 0x28(%r12), %rbx
movq 0x2c19(%rip), %r12      # 0x3fd8
leaq 0xc42(%rip), %r13       # 0x2008
movl (%r14), %esi
movq %r12, %rdi
callq 0x1130
movl $0x1, %edx
movq %rax, %rdi
movq %r13, %rsi
callq 0x10e0
addq $0x4, %r14
cmpq %r15, %r14
jne 0x13f9
movq 0x8(%rbx), %r14
addq $0x8, %rbx
leaq 0x200(%r14), %r15
cmpq %rbp, %r14
jne 0x13c6
movq 0x2bd3(%rip), %rbx      # 0x3fd8
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x10b0
movsbl %al, %esi
movq %rbx, %rdi
callq 0x1030
movq %rax, %rdi
callq 0x1080
leaq 0xbd7(%rip), %rsi       # 0x200a
movl $0x6, %edx
movq %rbx, %rdi
callq 0x10e0
movq 0x8(%rsp), %rax
movq 0x10(%rax), %r14
movq 0x30(%rax), %r13
cmpq %r13, %r14
je 0x14a0
movq 0x20(%rax), %rbp
movq 0x28(%rax), %rbx
movq 0x2b77(%rip), %r15      # 0x3fd8
leaq 0xba0(%rip), %r12       # 0x2008
movl (%r14), %esi
movq %r15, %rdi
callq 0x1130
movl $0x1, %edx
movq %rax, %rdi
movq %r12, %rsi
callq 0x10e0
addq $0x4, %r14
cmpq %rbp, %r14
jne 0x149b
movq 0x8(%rbx), %r14
addq $0x8, %rbx
leaq 0x200(%r14), %rbp
cmpq %r13, %r14
jne 0x1468
movq 0x2b31(%rip), %rbx      # 0x3fd8
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x10b0
movsbl %al, %esi
movq %rbx, %rdi
callq 0x1030
movq %rax, %rdi
callq 0x1080
leaq 0xb3c(%rip), %rsi       # 0x2011
movl $0x6, %edx
movq %rbx, %rdi
callq 0x10e0
movq 0x10(%rsp), %rax
movq 0x10(%rax), %r13
movq 0x30(%rax), %r12
cmpq %r12, %r13
je 0x1543
movq 0x20(%rax), %rbp
movq 0x28(%rax), %rbx
movq 0x2ad5(%rip), %r14      # 0x3fd8
leaq 0xafe(%rip), %r15       # 0x2008
movl (%r13), %esi
movq %r14, %rdi
callq 0x1130
movl $0x1, %edx
movq %rax, %rdi
movq %r15, %rsi
callq 0x10e0
addq $0x4, %r13
cmpq %rbp, %r13
jne 0x153e
movq 0x8(%rbx), %r13
addq $0x8, %rbx
leaq 0x200(%r13), %rbp
cmpq %r12, %r13
jne 0x150a
movq 0x2a8e(%rip), %rbx      # 0x3fd8
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x10b0
movsbl %al, %esi
movq %rbx, %rdi
callq 0x1030
movq %rax, %rdi
callq 0x1080
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x10b0
movsbl %al, %esi
movq %rbx, %rdi
callq 0x1030
movq %rax, %rdi
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x1080