// File: /workspace/github_cpp_makefile_star2_O3/arisKoutsou[P]oopproj/./src/inventory/Inventory.cpp
// Function: Inventory::printSpells()
void Inventory :: printSpells() {
  if (getCurrentSpells() == 0) {
    cout << endl << "No spells in the Inventory" << endl << endl;
    return;
  } else {
    list<Spell*> :: const_iterator it = spells.begin();
    vector<IceSpell*> iceSpells;
    vector<FireSpell*> fireSpells;
    vector<LightningSpell*> lightningSpells;
    for ( ; it != spells.end(); ++it) {
      string kind = (*it)->kindOf();
      if (kind == "IceSpell") {
	iceSpells.push_back(static_cast<IceSpell*>(*it));
      } else if (kind == "FireSpell") {
	fireSpells.push_back(static_cast<FireSpell*>(*it));        
      } else if (kind == "LightningSpell") {
	lightningSpells.push_back(static_cast<LightningSpell*>(*it));
      }
    }
    printIceSpells(iceSpells);
    printFireSpells(fireSpells);
    printLightningSpells(lightningSpells);
  }
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x88, %rsp
cmpl $0x0, 0x30(%rdi)
je 0xe951
movq %rdi, %rbx
movq 0x20(%rdi), %rbp
addq $0x20, %rbx
xorl %eax, %eax
movq %rax, 0x60(%rsp)
xorps %xmm0, %xmm0
movaps %xmm0, 0x50(%rsp)
movq %rax, 0x40(%rsp)
movaps %xmm0, 0x30(%rsp)
movq %rax, 0x20(%rsp)
movaps %xmm0, 0x10(%rsp)
cmpq %rbx, %rbp
je 0xe8dc
leaq 0x78(%rsp), %r12
leaq 0x68(%rsp), %r14
leaq 0xd417(%rip), %r15      # 0x1bc42
leaq 0x8(%rsp), %r13
movq 0x10(%rbp), %rsi
movq (%rsi), %rax
movq %r14, %rdi
callq *0x18(%rax)
movq %r14, %rdi
movq %r15, %rsi
callq 0x40d0
testl %eax, %eax
je 0xe88a
movq %r14, %rdi
leaq 0xd3f5(%rip), %rsi      # 0x1bc4b
callq 0x40d0
testl %eax, %eax
je 0xe8a2
movq %r14, %rdi
leaq 0xd3ec(%rip), %rsi      # 0x1bc55
callq 0x40d0
testl %eax, %eax
jne 0xe8b8
movq 0x10(%rbp), %rax
movq %rax, 0x8(%rsp)
leaq 0x10(%rsp), %rdi
movq %r13, %rsi
callq 0xfb7e
jmp 0xe8b8
movq 0x10(%rbp), %rax
movq %rax, 0x8(%rsp)
leaq 0x50(%rsp), %rdi
movq %r13, %rsi
callq 0xf896
jmp 0xe8b8
movq 0x10(%rbp), %rax
movq %rax, 0x8(%rsp)
leaq 0x30(%rsp), %rdi
movq %r13, %rsi
callq 0xfa0a
movq 0x68(%rsp), %rdi
cmpq %r12, %rdi
je 0xe8cf
movq 0x78(%rsp), %rsi
incq %rsi
callq 0x42a0
movq (%rbp), %rbp
cmpq %rbx, %rbp
jne 0xe830
leaq 0x50(%rsp), %rsi
callq 0xde44
leaq 0x30(%rsp), %rsi
callq 0xd982
leaq 0x10(%rsp), %rsi
callq 0xe306
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0xe911
movq 0x20(%rsp), %rsi
subq %rdi, %rsi
callq 0x42a0
movq 0x30(%rsp), %rdi
testq %rdi, %rdi
je 0xe928
movq 0x40(%rsp), %rsi
subq %rdi, %rsi
callq 0x42a0
movq 0x50(%rsp), %rdi
testq %rdi, %rdi
je 0xe93f
movq 0x60(%rsp), %rsi
subq %rdi, %rsi
callq 0x42a0
addq $0x88, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq 0x16668(%rip), %rbx     # 0x24fc0
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x4270
movsbl %al, %esi
movq %rbx, %rdi
callq 0x4040
movq %rax, %rdi
callq 0x41b0
movq %rax, %rbx
leaq 0xd29e(%rip), %rsi      # 0x1bc27
movl $0x1a, %edx
movq %rax, %rdi
callq 0x42f0
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x4270
movsbl %al, %esi
movq %rbx, %rdi
callq 0x4040
movq %rax, %rdi
callq 0x41b0
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x4270
movsbl %al, %esi
movq %rbx, %rdi
callq 0x4040
movq %rax, %rdi
addq $0x88, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x41b0
jmp 0xe9fe
jmp 0xea1a
jmp 0xe9fe
movq %rax, %rbx
movq 0x68(%rsp), %rdi
cmpq %r12, %rdi
je 0xea1d
movq 0x78(%rsp), %rsi
incq %rsi
callq 0x42a0
jmp 0xea1d
movq %rax, %rbx
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0xea34
movq 0x20(%rsp), %rsi
subq %rdi, %rsi
callq 0x42a0
movq 0x30(%rsp), %rdi
testq %rdi, %rdi
je 0xea4b
movq 0x40(%rsp), %rsi
subq %rdi, %rsi
callq 0x42a0
movq 0x50(%rsp), %rdi
testq %rdi, %rdi
je 0xea62
movq 0x60(%rsp), %rsi
subq %rdi, %rsi
callq 0x42a0
movq %rbx, %rdi
callq 0x4430