// File: arisKoutsou[P]oopproj/./src/livings/Hero.cpp
// Function: Hero::checkInventory()
void Hero :: checkInventory() {
  inventory.getMenu().clearMenu();
  inventory.getMenu().displayMenu();
  int selection;
  string equipPrompt = "Please enter the name of the item/spell you want to equip";
  string discardPrompt = "Please enter the name of the item/spell you want to discard";
  string usePotionPrompt = "Please enter the name of the potion you want to use";

  while ((selection = this->inventory.getMenu().getSelection())) {
    inventory.getMenu().clearMenu();
    switch (selection) {
    case 1: {
      if (!getInventory().hasItems() && !getInventory().hasSpells()) {
	cout << endl << "You have no Items or Spells in your Inventory." << endl;
      } else {
	inventory.printInfo();
      }      
      break;
    }
    case 2: {      
      if (!getInventory().hasItems() && !getInventory().hasSpells()) {
	cout << endl << "You have no Items or Spells in your Inventory." << endl;
      } else {
	inventory.printInfo();
	string input = getUserInput(equipPrompt);
	equip(input);
      }
      break;
    }
    case 3: {
      if (!getInventory().hasItems() && !getInventory().hasSpells()) {
	cout << endl << "There are no Items or Spells to discard." << endl;
      } else {
	inventory.printInfo();
	string input = getUserInput(discardPrompt);
	discard(input);
      }
      break;      
    }
    case 4: {
      if (!getInventory().hasPotions()) {
	cout << endl << "You have no Potions in your Inventory." << endl;
      } else {
        inventory.printPotions();
	string input = getUserInput(usePotionPrompt);
	use(input);
      }
      break;
    } 
    case 5: {
      inventory.getMenu().clearMenu();
      return;
    }
    case 6: {
      handleQuitCase();
      inventory.getMenu().clearMenu();
      if (quitGame) return;      
      break;
    }
    }    
    inventory.getMenu().displayMenu();
  }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x1c0, %rsp            # imm = 0x1C0
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rdi
movq %rdi, -0x118(%rbp)
addq $0xc0, %rdi
movq %rdi, -0x110(%rbp)
callq 0x172d0
movq %rax, %rdi
callq 0x61a0
movq -0x110(%rbp), %rdi
callq 0x172d0
movq %rax, %rdi
movq (%rdi), %rax
movq (%rax), %rax
callq *%rax
leaq -0x31(%rbp), %rdi
movq %rdi, -0x108(%rbp)
callq 0x5560
movq -0x108(%rbp), %rdx
leaq 0xa74c(%rip), %rsi      # 0x2ef06
leaq -0x30(%rbp), %rdi
callq 0x7d20
jmp 0x247c5
leaq -0x31(%rbp), %rdi
callq 0x5350
leaq -0x69(%rbp), %rdi
movq %rdi, -0x120(%rbp)
callq 0x5560
movq -0x120(%rbp), %rdx
leaq 0xa754(%rip), %rsi      # 0x2ef40
leaq -0x68(%rbp), %rdi
callq 0x7d20
jmp 0x247f7
leaq -0x69(%rbp), %rdi
callq 0x5350
leaq -0x91(%rbp), %rdi
movq %rdi, -0x128(%rbp)
callq 0x5560
movq -0x128(%rbp), %rdx
leaq 0xa75b(%rip), %rsi      # 0x2ef7c
leaq -0x90(%rbp), %rdi
callq 0x7d20
jmp 0x2482f
leaq -0x91(%rbp), %rdi
callq 0x5350
movq -0x118(%rbp), %rdi
addq $0xc0, %rdi
callq 0x172d0
movq %rax, -0x130(%rbp)
jmp 0x24857
movq -0x130(%rbp), %rdi
callq 0x6240
movl %eax, -0x134(%rbp)
jmp 0x2486b
movl -0x134(%rbp), %eax
movl %eax, -0xc(%rbp)
cmpl $0x0, %eax
je 0x24db9
movq -0x118(%rbp), %rdi
addq $0xc0, %rdi
callq 0x172d0
movq %rax, -0x140(%rbp)
jmp 0x24899
movq -0x140(%rbp), %rdi
callq 0x61a0
jmp 0x248a7
movl -0xc(%rbp), %eax
decl %eax
movl %eax, %ecx
movq %rcx, -0x148(%rbp)
subl $0x5, %eax
ja 0x24d87
movq -0x148(%rbp), %rax
leaq 0xa46c(%rip), %rcx      # 0x2ed38
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x31(%rbp), %rdi
callq 0x5350
jmp 0x24e08
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x69(%rbp), %rdi
callq 0x5350
jmp 0x24dff
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x91(%rbp), %rdi
callq 0x5350
jmp 0x24df6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x24dea
movq -0x118(%rbp), %rdi
callq 0x23370
movq %rax, %rdi
callq 0x14c70
movb %al, -0x149(%rbp)
jmp 0x24953
movb -0x149(%rbp), %al
testb $0x1, %al
jne 0x249d6
jmp 0x2495f
movq -0x118(%rbp), %rdi
callq 0x23370
movq %rax, %rdi
callq 0x14ca0
movb %al, -0x14a(%rbp)
jmp 0x2497b
movb -0x14a(%rbp), %al
testb $0x1, %al
jne 0x249d6
jmp 0x24987
movq 0x1b632(%rip), %rdi     # 0x3ffc0
movq 0x1b60b(%rip), %rsi     # 0x3ffa0
callq 0x5330
movq %rax, -0x158(%rbp)
jmp 0x249a3
movq -0x158(%rbp), %rdi
leaq 0xa5ff(%rip), %rsi      # 0x2efb0
callq 0x52f0
movq %rax, -0x160(%rbp)
jmp 0x249bf
movq -0x160(%rbp), %rdi
movq 0x1b5d3(%rip), %rsi     # 0x3ffa0
callq 0x5330
jmp 0x249d4
jmp 0x249ed
movq -0x118(%rbp), %rdi
addq $0xc0, %rdi
callq 0x17020
jmp 0x249eb
jmp 0x249ed
jmp 0x24d87
movq -0x118(%rbp), %rdi
callq 0x23370
movq %rax, %rdi
callq 0x14c70
movb %al, -0x161(%rbp)
jmp 0x24a0e
movb -0x161(%rbp), %al
testb $0x1, %al
jne 0x24a91
jmp 0x24a1a
movq -0x118(%rbp), %rdi
callq 0x23370
movq %rax, %rdi
callq 0x14ca0
movb %al, -0x162(%rbp)
jmp 0x24a36
movb -0x162(%rbp), %al
testb $0x1, %al
jne 0x24a91
jmp 0x24a42
movq 0x1b577(%rip), %rdi     # 0x3ffc0
movq 0x1b550(%rip), %rsi     # 0x3ffa0
callq 0x5330
movq %rax, -0x170(%rbp)
jmp 0x24a5e
movq -0x170(%rbp), %rdi
leaq 0xa544(%rip), %rsi      # 0x2efb0
callq 0x52f0
movq %rax, -0x178(%rbp)
jmp 0x24a7a
movq -0x178(%rbp), %rdi
movq 0x1b518(%rip), %rsi     # 0x3ffa0
callq 0x5330
jmp 0x24a8f
jmp 0x24aff
movq -0x118(%rbp), %rdi
addq $0xc0, %rdi
callq 0x17020
jmp 0x24aa6
movq -0x118(%rbp), %rsi
leaq -0xb8(%rbp), %rdi
leaq -0x30(%rbp), %rdx
callq 0x23ec0
jmp 0x24abf
movq -0x118(%rbp), %rdi
leaq -0xb8(%rbp), %rsi
callq 0x23f80
jmp 0x24ad4
leaq -0xb8(%rbp), %rdi
callq 0x55d0
jmp 0x24aff
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0xb8(%rbp), %rdi
callq 0x55d0
jmp 0x24dea
jmp 0x24d87
movq -0x118(%rbp), %rdi
callq 0x23370
movq %rax, %rdi
callq 0x14c70
movb %al, -0x179(%rbp)
jmp 0x24b20
movb -0x179(%rbp), %al
testb $0x1, %al
jne 0x24ba3
jmp 0x24b2c
movq -0x118(%rbp), %rdi
callq 0x23370
movq %rax, %rdi
callq 0x14ca0
movb %al, -0x17a(%rbp)
jmp 0x24b48
movb -0x17a(%rbp), %al
testb $0x1, %al
jne 0x24ba3
jmp 0x24b54
movq 0x1b465(%rip), %rdi     # 0x3ffc0
movq 0x1b43e(%rip), %rsi     # 0x3ffa0
callq 0x5330
movq %rax, -0x188(%rbp)
jmp 0x24b70
movq -0x188(%rbp), %rdi
leaq 0xa461(%rip), %rsi      # 0x2efdf
callq 0x52f0
movq %rax, -0x190(%rbp)
jmp 0x24b8c
movq -0x190(%rbp), %rdi
movq 0x1b406(%rip), %rsi     # 0x3ffa0
callq 0x5330
jmp 0x24ba1
jmp 0x24c11
movq -0x118(%rbp), %rdi
addq $0xc0, %rdi
callq 0x17020
jmp 0x24bb8
movq -0x118(%rbp), %rsi
leaq -0xd8(%rbp), %rdi
leaq -0x68(%rbp), %rdx
callq 0x23ec0
jmp 0x24bd1
movq -0x118(%rbp), %rdi
leaq -0xd8(%rbp), %rsi
callq 0x244b0
jmp 0x24be6
leaq -0xd8(%rbp), %rdi
callq 0x55d0
jmp 0x24c11
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0xd8(%rbp), %rdi
callq 0x55d0
jmp 0x24dea
jmp 0x24d87
movq -0x118(%rbp), %rdi
callq 0x23370
movq %rax, %rdi
callq 0x14cd0
movb %al, -0x191(%rbp)
jmp 0x24c32
movb -0x191(%rbp), %al
testb $0x1, %al
jne 0x24c8d
jmp 0x24c3e
movq 0x1b37b(%rip), %rdi     # 0x3ffc0
movq 0x1b354(%rip), %rsi     # 0x3ffa0
callq 0x5330
movq %rax, -0x1a0(%rbp)
jmp 0x24c5a
movq -0x1a0(%rbp), %rdi
leaq 0xa3a0(%rip), %rsi      # 0x2f008
callq 0x52f0
movq %rax, -0x1a8(%rbp)
jmp 0x24c76
movq -0x1a8(%rbp), %rdi
movq 0x1b31c(%rip), %rsi     # 0x3ffa0
callq 0x5330
jmp 0x24c8b
jmp 0x24cfe
movq -0x118(%rbp), %rdi
addq $0xc0, %rdi
callq 0x17460
jmp 0x24ca2
movq -0x118(%rbp), %rsi
leaq -0xf8(%rbp), %rdi
leaq -0x90(%rbp), %rdx
callq 0x23ec0
jmp 0x24cbe
movq -0x118(%rbp), %rdi
leaq -0xf8(%rbp), %rsi
callq 0x24580
jmp 0x24cd3
leaq -0xf8(%rbp), %rdi
callq 0x55d0
jmp 0x24cfe
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0xf8(%rbp), %rdi
callq 0x55d0
jmp 0x24dea
jmp 0x24d87
movq -0x118(%rbp), %rdi
addq $0xc0, %rdi
callq 0x172d0
movq %rax, -0x1b0(%rbp)
jmp 0x24d1f
movq -0x1b0(%rbp), %rdi
callq 0x61a0
jmp 0x24d2d
movl $0x1, -0xfc(%rbp)
jmp 0x24dc3
callq 0xe390
jmp 0x24d43
movq -0x118(%rbp), %rdi
addq $0xc0, %rdi
callq 0x172d0
movq %rax, -0x1b8(%rbp)
jmp 0x24d5f
movq -0x1b8(%rbp), %rdi
callq 0x61a0
jmp 0x24d6d
leaq 0x1b595(%rip), %rax     # 0x40309
testb $0x1, (%rax)
je 0x24d85
movl $0x1, -0xfc(%rbp)
jmp 0x24dc3
jmp 0x24d87
movq -0x118(%rbp), %rdi
addq $0xc0, %rdi
callq 0x172d0
movq %rax, -0x1c0(%rbp)
jmp 0x24da3
movq -0x1c0(%rbp), %rdi
movq (%rdi), %rax
movq (%rax), %rax
callq *%rax
jmp 0x24db4
jmp 0x2483b
movl $0x0, -0xfc(%rbp)
leaq -0x90(%rbp), %rdi
callq 0x55d0
leaq -0x68(%rbp), %rdi
callq 0x55d0
leaq -0x30(%rbp), %rdi
callq 0x55d0
addq $0x1c0, %rsp            # imm = 0x1C0
popq %rbp
retq
leaq -0x90(%rbp), %rdi
callq 0x55d0
leaq -0x68(%rbp), %rdi
callq 0x55d0
leaq -0x30(%rbp), %rdi
callq 0x55d0
movq -0x40(%rbp), %rdi
callq 0x5550
nopw %cs:(%rax,%rax)