// File: /workspace/github_cpp_makefile_star2_O1/eschwabe[P]interview-practice/src/libds_list.cpp
// Function: main
int main()
{
  List l;
  l.AppendTail(10);
  l.AppendHead(1);
  l.AppendHead(2);
  l.AppendTail(12);
  l.AppendHead(3);
  l.AppendTail(11);
  l.AppendHead(4);
  l.AppendTail(13);
  std::cout << l.RemoveHead() << std::endl;
  std::cout << l.RemoveTail() << std::endl;
  std::cout << l.RemoveHead() << std::endl;
  std::cout << l.RemoveTail() << std::endl;
  std::cout << l.RemoveHead() << std::endl;
  std::cout << l.RemoveTail() << std::endl;
  std::cout << l.RemoveHead() << std::endl;
  std::cout << l.RemoveTail() << std::endl;
  std::cout << l.RemoveHead() << std::endl;
  std::cout << l.RemoveTail() << std::endl;
  return 0;
}

// Assembly:
pushq %r14
pushq %rbx
subq $0x18, %rsp
xorps %xmm0, %xmm0
movq %rsp, %rdi
movaps %xmm0, (%rdi)
leaq 0x14(%rsp), %rsi
movl $0xa, (%rsi)
callq 0x1276
leaq 0x14(%rsp), %rsi
movl $0x1, (%rsi)
movq %rsp, %rdi
callq 0x11fa
leaq 0x14(%rsp), %rsi
movl $0x2, (%rsi)
movq %rsp, %rdi
callq 0x11fa
leaq 0x14(%rsp), %rsi
movl $0xc, (%rsi)
movq %rsp, %rdi
callq 0x1276
leaq 0x14(%rsp), %rsi
movl $0x3, (%rsi)
movq %rsp, %rdi
callq 0x11fa
leaq 0x14(%rsp), %rsi
movl $0xb, (%rsi)
movq %rsp, %rdi
callq 0x1276
leaq 0x14(%rsp), %rsi
movl $0x4, (%rsi)
movq %rsp, %rdi
callq 0x11fa
leaq 0x14(%rsp), %rsi
movl $0xd, (%rsi)
movq %rsp, %rdi
callq 0x1276
movq (%rsp), %rax
testq %rax, %rax
je 0x1439
movl 0x8(%rax), %ebx
movq (%rax), %rcx
movq $0x0, (%rax)
movq (%rsp), %r14
movq %rcx, (%rsp)
testq %r14, %r14
je 0x143e
movq %r14, %rdi
callq 0x190c
movl $0x10, %esi
movq %r14, %rdi
callq 0x1080
jmp 0x143e
movl $0xffffffff, %ebx       # imm = 0xFFFFFFFF
movq 0x2b93(%rip), %rdi      # 0x3fd8
movl %ebx, %esi
callq 0x10a0
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x1060
movsbl %al, %esi
movq %rbx, %rdi
callq 0x1030
movq %rax, %rdi
callq 0x1040
movq 0x8(%rsp), %rcx
testq %rcx, %rcx
je 0x14a3
movq (%rsp), %rax
movl 0x8(%rcx), %esi
cmpq %rcx, %rax
je 0x14aa
testq %rax, %rax
je 0x14b3
xorl %edx, %edx
movq %rdx, %rcx
movq %rax, %rdx
movq (%rax), %rax
testq %rax, %rax
jne 0x1493
jmp 0x14b5
movl $0xffffffff, %esi       # imm = 0xFFFFFFFF
jmp 0x14c1
xorps %xmm0, %xmm0
movaps %xmm0, (%rsp)
jmp 0x14c1
xorl %ecx, %ecx
movq $0x0, (%rcx)
movq %rcx, 0x8(%rsp)
movq 0x2b10(%rip), %rdi      # 0x3fd8
callq 0x10a0
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x1060
movsbl %al, %esi
movq %rbx, %rdi
callq 0x1030
movq %rax, %rdi
callq 0x1040
movq (%rsp), %rax
testq %rax, %rax
je 0x1531
movl 0x8(%rax), %ebx
movq (%rax), %rcx
movq $0x0, (%rax)
movq (%rsp), %r14
movq %rcx, (%rsp)
testq %r14, %r14
je 0x1536
movq %r14, %rdi
callq 0x190c
movl $0x10, %esi
movq %r14, %rdi
callq 0x1080
jmp 0x1536
movl $0xffffffff, %ebx       # imm = 0xFFFFFFFF
movq 0x2a9b(%rip), %rdi      # 0x3fd8
movl %ebx, %esi
callq 0x10a0
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x1060
movsbl %al, %esi
movq %rbx, %rdi
callq 0x1030
movq %rax, %rdi
callq 0x1040
movq 0x8(%rsp), %rcx
testq %rcx, %rcx
je 0x159b
movq (%rsp), %rax
movl 0x8(%rcx), %esi
cmpq %rcx, %rax
je 0x15a2
testq %rax, %rax
je 0x15ab
xorl %edx, %edx
movq %rdx, %rcx
movq %rax, %rdx
movq (%rax), %rax
testq %rax, %rax
jne 0x158b
jmp 0x15ad
movl $0xffffffff, %esi       # imm = 0xFFFFFFFF
jmp 0x15b9
xorps %xmm0, %xmm0
movaps %xmm0, (%rsp)
jmp 0x15b9
xorl %ecx, %ecx
movq $0x0, (%rcx)
movq %rcx, 0x8(%rsp)
movq 0x2a18(%rip), %rdi      # 0x3fd8
callq 0x10a0
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x1060
movsbl %al, %esi
movq %rbx, %rdi
callq 0x1030
movq %rax, %rdi
callq 0x1040
movq (%rsp), %rax
testq %rax, %rax
je 0x1629
movl 0x8(%rax), %ebx
movq (%rax), %rcx
movq $0x0, (%rax)
movq (%rsp), %r14
movq %rcx, (%rsp)
testq %r14, %r14
je 0x162e
movq %r14, %rdi
callq 0x190c
movl $0x10, %esi
movq %r14, %rdi
callq 0x1080
jmp 0x162e
movl $0xffffffff, %ebx       # imm = 0xFFFFFFFF
movq 0x29a3(%rip), %rdi      # 0x3fd8
movl %ebx, %esi
callq 0x10a0
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x1060
movsbl %al, %esi
movq %rbx, %rdi
callq 0x1030
movq %rax, %rdi
callq 0x1040
movq 0x8(%rsp), %rcx
testq %rcx, %rcx
je 0x1693
movq (%rsp), %rax
movl 0x8(%rcx), %esi
cmpq %rcx, %rax
je 0x169a
testq %rax, %rax
je 0x16a3
xorl %edx, %edx
movq %rdx, %rcx
movq %rax, %rdx
movq (%rax), %rax
testq %rax, %rax
jne 0x1683
jmp 0x16a5
movl $0xffffffff, %esi       # imm = 0xFFFFFFFF
jmp 0x16b1
xorps %xmm0, %xmm0
movaps %xmm0, (%rsp)
jmp 0x16b1
xorl %ecx, %ecx
movq $0x0, (%rcx)
movq %rcx, 0x8(%rsp)
movq 0x2920(%rip), %rdi      # 0x3fd8
callq 0x10a0
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x1060
movsbl %al, %esi
movq %rbx, %rdi
callq 0x1030
movq %rax, %rdi
callq 0x1040
movq (%rsp), %rax
testq %rax, %rax
je 0x1721
movl 0x8(%rax), %ebx
movq (%rax), %rcx
movq $0x0, (%rax)
movq (%rsp), %r14
movq %rcx, (%rsp)
testq %r14, %r14
je 0x1726
movq %r14, %rdi
callq 0x190c
movl $0x10, %esi
movq %r14, %rdi
callq 0x1080
jmp 0x1726
movl $0xffffffff, %ebx       # imm = 0xFFFFFFFF
movq 0x28ab(%rip), %rdi      # 0x3fd8
movl %ebx, %esi
callq 0x10a0
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x1060
movsbl %al, %esi
movq %rbx, %rdi
callq 0x1030
movq %rax, %rdi
callq 0x1040
movq 0x8(%rsp), %rcx
testq %rcx, %rcx
je 0x178b
movq (%rsp), %rax
movl 0x8(%rcx), %esi
cmpq %rcx, %rax
je 0x1792
testq %rax, %rax
je 0x179b
xorl %edx, %edx
movq %rdx, %rcx
movq %rax, %rdx
movq (%rax), %rax
testq %rax, %rax
jne 0x177b
jmp 0x179d
movl $0xffffffff, %esi       # imm = 0xFFFFFFFF
jmp 0x17a9
xorps %xmm0, %xmm0
movaps %xmm0, (%rsp)
jmp 0x17a9
xorl %ecx, %ecx
movq $0x0, (%rcx)
movq %rcx, 0x8(%rsp)
movq 0x2828(%rip), %rdi      # 0x3fd8
callq 0x10a0
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x1060
movsbl %al, %esi
movq %rbx, %rdi
callq 0x1030
movq %rax, %rdi
callq 0x1040
movq (%rsp), %rax
testq %rax, %rax
je 0x1819
movl 0x8(%rax), %ebx
movq (%rax), %rcx
movq $0x0, (%rax)
movq (%rsp), %r14
movq %rcx, (%rsp)
testq %r14, %r14
je 0x181e
movq %r14, %rdi
callq 0x190c
movl $0x10, %esi
movq %r14, %rdi
callq 0x1080
jmp 0x181e
movl $0xffffffff, %ebx       # imm = 0xFFFFFFFF
movq 0x27b3(%rip), %rdi      # 0x3fd8
movl %ebx, %esi
callq 0x10a0
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x1060
movsbl %al, %esi
movq %rbx, %rdi
callq 0x1030
movq %rax, %rdi
callq 0x1040
movq 0x8(%rsp), %rcx
testq %rcx, %rcx
je 0x1883
movq (%rsp), %rax
movl 0x8(%rcx), %esi
cmpq %rcx, %rax
je 0x188a
testq %rax, %rax
je 0x1893
xorl %edx, %edx
movq %rdx, %rcx
movq %rax, %rdx
movq (%rax), %rax
testq %rax, %rax
jne 0x1873
jmp 0x1895
movl $0xffffffff, %esi       # imm = 0xFFFFFFFF
jmp 0x18a1
xorps %xmm0, %xmm0
movaps %xmm0, (%rsp)
jmp 0x18a1
xorl %ecx, %ecx
movq $0x0, (%rcx)
movq %rcx, 0x8(%rsp)
movq 0x2730(%rip), %rdi      # 0x3fd8
callq 0x10a0
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x1060
movsbl %al, %esi
movq %rbx, %rdi
callq 0x1030
movq %rax, %rdi
callq 0x1040
movq %rsp, %rdi
callq 0x190c
xorl %eax, %eax
addq $0x18, %rsp
popq %rbx
popq %r14
retq
jmp 0x18f9
jmp 0x18f9
jmp 0x18f9
jmp 0x18f9
jmp 0x18f9
jmp 0x18f9
jmp 0x18f9
jmp 0x18f9
movq %rax, %rbx
movq %rsp, %rdi
callq 0x190c
movq %rbx, %rdi
callq 0x10b0