// File: 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
movq %rsp, %rbp
subq $0xd0, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rdi
movq %rdi, -0xc0(%rbp)
callq 0x14c50
cmpl $0x0, %eax
jne 0x16db9
movq 0x29245(%rip), %rdi     # 0x3ffc0
movq 0x2921e(%rip), %rsi     # 0x3ffa0
callq 0x5330
movq %rax, %rdi
leaq 0x17e76(%rip), %rsi     # 0x2ec07
callq 0x52f0
movq %rax, %rdi
movq 0x29200(%rip), %rsi     # 0x3ffa0
callq 0x5330
movq %rax, %rdi
movq 0x291f1(%rip), %rsi     # 0x3ffa0
callq 0x5330
jmp 0x16fff
movq -0xc0(%rbp), %rdi
addq $0x20, %rdi
callq 0x18110
movq %rax, -0x18(%rbp)
leaq -0x10(%rbp), %rdi
leaq -0x18(%rbp), %rsi
callq 0x18140
leaq -0x30(%rbp), %rdi
callq 0x18160
leaq -0x48(%rbp), %rdi
callq 0x18180
leaq -0x60(%rbp), %rdi
callq 0x181a0
movq -0xc0(%rbp), %rdi
addq $0x20, %rdi
callq 0x181f0
movq %rax, -0x70(%rbp)
leaq -0x68(%rbp), %rdi
leaq -0x70(%rbp), %rsi
callq 0x18140
leaq -0x10(%rbp), %rdi
leaq -0x68(%rbp), %rsi
callq 0x181c0
testb $0x1, %al
jne 0x16e2c
jmp 0x16f8f
leaq -0x10(%rbp), %rdi
callq 0x18220
movq (%rax), %rsi
movq (%rsi), %rax
movq 0x18(%rax), %rax
leaq -0x90(%rbp), %rdi
callq *%rax
jmp 0x16e4a
leaq 0x17dd1(%rip), %rsi     # 0x2ec22
leaq -0x90(%rbp), %rdi
callq 0x8e10
movb %al, -0xc1(%rbp)
jmp 0x16e65
movb -0xc1(%rbp), %al
testb $0x1, %al
jne 0x16e71
jmp 0x16ed5
leaq -0x10(%rbp), %rdi
callq 0x18220
movq (%rax), %rax
movq %rax, -0xa8(%rbp)
leaq -0x30(%rbp), %rdi
leaq -0xa8(%rbp), %rsi
callq 0x18250
jmp 0x16e96
jmp 0x16f75
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x98(%rbp)
movl %eax, -0x9c(%rbp)
jmp 0x16fe2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x98(%rbp)
movl %eax, -0x9c(%rbp)
leaq -0x90(%rbp), %rdi
callq 0x55d0
jmp 0x16fe2
leaq 0x17d4f(%rip), %rsi     # 0x2ec2b
leaq -0x90(%rbp), %rdi
callq 0x8e10
movb %al, -0xc2(%rbp)
jmp 0x16ef0
movb -0xc2(%rbp), %al
testb $0x1, %al
jne 0x16efc
jmp 0x16f23
leaq -0x10(%rbp), %rdi
callq 0x18220
movq (%rax), %rax
movq %rax, -0xb0(%rbp)
leaq -0x48(%rbp), %rdi
leaq -0xb0(%rbp), %rsi
callq 0x18280
jmp 0x16f21
jmp 0x16f73
leaq 0x17d0b(%rip), %rsi     # 0x2ec35
leaq -0x90(%rbp), %rdi
callq 0x8e10
movb %al, -0xc3(%rbp)
jmp 0x16f3e
movb -0xc3(%rbp), %al
testb $0x1, %al
jne 0x16f4a
jmp 0x16f71
leaq -0x10(%rbp), %rdi
callq 0x18220
movq (%rax), %rax
movq %rax, -0xb8(%rbp)
leaq -0x60(%rbp), %rdi
leaq -0xb8(%rbp), %rsi
callq 0x182b0
jmp 0x16f6f
jmp 0x16f71
jmp 0x16f73
jmp 0x16f75
leaq -0x90(%rbp), %rdi
callq 0x55d0
leaq -0x10(%rbp), %rdi
callq 0x182e0
jmp 0x16df5
movq -0xc0(%rbp), %rdi
leaq -0x30(%rbp), %rsi
callq 0x16290
jmp 0x16fa1
movq -0xc0(%rbp), %rdi
leaq -0x48(%rbp), %rsi
callq 0x15d30
jmp 0x16fb3
movq -0xc0(%rbp), %rdi
leaq -0x60(%rbp), %rsi
callq 0x167f0
jmp 0x16fc5
leaq -0x60(%rbp), %rdi
callq 0x18300
leaq -0x48(%rbp), %rdi
callq 0x18360
leaq -0x30(%rbp), %rdi
callq 0x183c0
jmp 0x16fff
leaq -0x60(%rbp), %rdi
callq 0x18300
leaq -0x48(%rbp), %rdi
callq 0x18360
leaq -0x30(%rbp), %rdi
callq 0x183c0
jmp 0x17008
addq $0xd0, %rsp
popq %rbp
retq
movq -0x98(%rbp), %rdi
callq 0x5550
nopw %cs:(%rax,%rax)