LLM4Binary/decompile-bench-makefile huggingface dataset:
// File: /workspace/github_cpp_makefile_star2_O2/arisKoutsou[P]oopproj/./src/grid/Grid.cpp
// Function: Grid::addLiving(int, int, Living*)
void Grid :: addLiving(int row, int col, Living* living) {
  list<Living*> :: const_iterator it = tiles[row][col].livings.begin();
  for ( ; it != tiles[row][col].livings.end(); ++it) {
    if ((*it) == living) {
      return;
    }
  }  
  if (tiles[row][col].isNonAccessible()) {
    cerr << "A Hero can't be on a nonAccessible Tile." << endl;
    return;
  }
  tiles[row][col].livings.push_back(living);
}

// Assembly:
pushq %rax
movq %rcx, (%rsp)
movslq %esi, %rax
movq 0x8(%rdi), %rsi
imulq $0x18, %rax, %rax
movslq %edx, %rdx
movq (%rsi,%rax), %rsi
imulq $0x28, %rdx, %rdx
leaq (%rsi,%rdx), %rax
leaq (%rsi,%rdx), %rdi
addq $0x8, %rdi
movq %rdi, %rdx
movq (%rdx), %rdx
cmpq %rdi, %rdx
je 0x5daa
cmpq %rcx, 0x10(%rdx)
jne 0x5d9a
jmp 0x5dd3
cmpb $0x1, (%rax)
jne 0x5dcb
movq 0x1b232(%rip), %rdi     # 0x20fe8
leaq 0xf601(%rip), %rsi      # 0x153be
callq 0x4250
movq %rax, %rdi
popq %rax
jmp 0x4120
movq %rsp, %rsi
callq 0x6026
popq %rax
retq
nop
// File: /workspace/github_cpp_makefile_star2_O2/arisKoutsou[P]oopproj/./src/grid/Grid.cpp
// Function: Grid::displayMap() const
void Grid :: displayMap() const {

  int columns = tiles[0].size();	// Get the size of the vector of tiles.
  int rows = tiles.size();		// Get the size of lines of the vector.

  cout << endl;
  // Draw the first line which is a wall...
  for (int i = 0; i < columns; i++) {
    cout << "+---";
  }
  cout << "+" << endl;

  for (int i = rows - 1; i >= 0 ; i--) {
    // Draw | H |   | ....
    for (int j = 0; j < columns; j++) {
      cout << "|";

      if (tiles[i][j].hasLiving()) {
	cout << " H ";
      } else if (tiles[i][j].hasMarket()) {
	cout << " M ";
      } else if (tiles[i][j].isNonAccessible()) {
	cout << "###";
      } else if (tiles[i][j].isCommon()) {
	cout << " C ";
      } else {
	cout << "   ";
      }

    }
    cout << "|" << endl;

    // Draw wall...
    for (int i = 0; i < columns; i++) {
      cout << "+---";
    }
    cout << "+" << endl;
  }

}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x18, %rsp
movq %rdi, %rbx
movq 0x8(%rdi), %rsi
movq 0x8(%rsi), %rax
subq (%rsi), %rax
movq 0x10(%rdi), %rcx
pushq $0x28
popq %rdi
cqto
idivq %rdi
movq %rax, %r15
subq %rsi, %rcx
pushq $0x18
popq %rsi
movq %rcx, %rax
cqto
idivq %rsi
movq %rax, %r12
movq 0x1b177(%rip), %r14     # 0x20fc0
movq %r14, %rdi
callq 0x4120
xorl %ebp, %ebp
testl %r15d, %r15d
cmovgl %r15d, %ebp
leaq 0xf586(%rip), %r15      # 0x153e7
movl %ebp, 0xc(%rsp)
subl $0x1, %ebp
jb 0x5e77
movq %r14, %rdi
movq %r15, %rsi
callq 0x4250
jmp 0x5e65
movq 0x1b142(%rip), %r14     # 0x20fc0
leaq 0xf3e4(%rip), %rsi      # 0x15269
movq %r14, %rdi
callq 0x4250
movq %rax, %rdi
callq 0x4120
movl %r12d, %ecx
movl 0xc(%rsp), %eax
imulq $0x28, %rax, %rbp
leaq 0xf328(%rip), %r12      # 0x151cf
testl %ecx, %ecx
jle 0x5f72
decq %rcx
movq %rcx, 0x10(%rsp)
imulq $0x18, %rcx, %r13
xorl %r15d, %r15d
movq %r14, %rdi
movq %r12, %rsi
callq 0x4250
cmpq %r15, %rbp
je 0x5f2d
movq 0x8(%rbx), %rax
movq (%rax,%r13), %rax
leaq (%rax,%r15), %rcx
addq $0x8, %rcx
leaq 0xf507(%rip), %rsi      # 0x153ec
cmpq (%rcx), %rcx
jne 0x5f1f
cmpq $0x0, 0x20(%rax,%r15)
leaq 0xf4f9(%rip), %rsi      # 0x153f0
jne 0x5f1f
leaq (%rax,%r15), %rcx
cmpb $0x0, (%rcx)
leaq 0xf4ed(%rip), %rsi      # 0x153f4
jne 0x5f1f
cmpb $0x0, 0x1(%rax,%r15)
leaq 0xf4e2(%rip), %rsi      # 0x153f8
jne 0x5f1f
leaq 0xf4dd(%rip), %rsi      # 0x153fc
movq %r14, %rdi
callq 0x4250
addq $0x28, %r15
jmp 0x5ebe
movq %rax, %rdi
callq 0x4120
movl 0xc(%rsp), %r15d
leaq 0xf4a6(%rip), %r13      # 0x153e7
movq %r14, %rdi
subl $0x1, %r15d
jb 0x5f54
movq %r13, %rsi
callq 0x4250
jmp 0x5f41
leaq 0xf30e(%rip), %rsi      # 0x15269
callq 0x4250
movq %rax, %rdi
callq 0x4120
movq 0x10(%rsp), %rcx
jmp 0x5ea7
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
nop
// File: /workspace/github_cpp_makefile_star2_O2/arisKoutsou[P]oopproj/./src/game_utils.cpp
// Function: skipCommentsAndWhitespace(std::basic_ifstream<char, std::char_traits<char>>&)
void skipCommentsAndWhitespace(ifstream& stream) {
  while (stream.eof() == false) {
    getline(stream, buffer);
    if (isCommentOrWhitespace(buffer)) continue;
    break;
  }
}

// Assembly:
pushq %r14
pushq %rbx
pushq %rax
movq %rdi, %rbx
leaq 0x1a360(%rip), %r14     # 0x21260
movq (%rbx), %rax
movq -0x18(%rax), %rax
testb $0x2, 0x20(%rbx,%rax)
jne 0x6f25
movq %rbx, %rdi
movq %r14, %rsi
callq 0x4060
movq %r14, %rdi
callq 0x7482
testb %al, %al
jne 0x6f00
addq $0x8, %rsp
popq %rbx
popq %r14
retq
// File: /workspace/github_cpp_makefile_star2_O2/arisKoutsou[P]oopproj/./src/game_utils.cpp
// Function: tokenize(std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>>&)
void tokenize(vector<string>& tokens) {
  string token;
  size_t pos = 0U;
  // Finding the position of the delimiter (',')
  // string :: npos is just the greatest value of size_t
  while ((pos = buffer.find(',')) != string :: npos) {
    token = buffer.substr(0, pos);
    tokens.push_back(token);
    buffer.erase(0, pos + 1);    
  }  
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x48, %rsp
movq %rdi, %rbx
leaq 0x18(%rsp), %rax
movq %rax, -0x10(%rax)
andq $0x0, -0x8(%rax)
movb $0x0, (%rax)
leaq 0x1a30a(%rip), %r14     # 0x21260
pushq $0x2c
popq %rbp
leaq 0x28(%rsp), %r15
leaq 0x8(%rsp), %r12
movq %r14, %rdi
movl %ebp, %esi
xorl %edx, %edx
callq 0x4320
cmpq $-0x1, %rax
je 0x6fb8
movq %rax, %r13
movq %r15, %rdi
movq %r14, %rsi
xorl %edx, %edx
movq %rax, %rcx
callq 0x4280
movq %r12, %rdi
movq %r15, %rsi
callq 0x42e0
movq %r15, %rdi
callq 0x4470
movq %rbx, %rdi
movq %r12, %rsi
callq 0x9e96
incq %r13
movq %r14, %rdi
xorl %esi, %esi
movq %r13, %rdx
callq 0x4090
jmp 0x6f63
leaq 0x8(%rsp), %rdi
callq 0x4470
addq $0x48, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x6fd3
movq %rax, %rbx
leaq 0x8(%rsp), %rdi
callq 0x4470
movq %rbx, %rdi
callq 0x4410
// File: /workspace/github_cpp_makefile_star2_O2/arisKoutsou[P]oopproj/./src/game_utils.cpp
// Function: fillMarketSpells(Market*, int)
void fillMarketSpells(Market* market, int size) {
  for (int i = 0; i != size; ++i) {
    int kind = rng.fromMintoMax(0, 2);
    string name = spells[rng.fromMintoMax(0, spells.size() - 1)];
    switch (kind) {
    case 0: {
      FireSpell* newFireSpell = new FireSpell(name);
      market->addSpell(newFireSpell);
      break;
    }
    case 1: {
      IceSpell* newIceSpell = new IceSpell(name);
      market->addSpell(newIceSpell);
      break;
    }
    case 2: {
      LightningSpell* newLightningSpell = new LightningSpell(name);
      market->addSpell(newLightningSpell);
      break;
    }
    }
  }
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x88, %rsp
movl %esi, %ebx
movq %rdi, (%rsp)
leaq 0x28(%rsp), %rbp
leaq 0x48(%rsp), %r14
leaq 0x68(%rsp), %r15
subl $0x1, %ebx
jb 0x7418
xorl %edi, %edi
pushq $0x2
popq %rsi
callq 0x4b2c
movl %eax, %r12d
movq 0x1a045(%rip), %rsi     # 0x21300
subq 0x1a036(%rip), %rsi     # 0x212f8
shrq $0x5, %rsi
decl %esi
xorl %edi, %edi
callq 0x4b2c
movslq %eax, %rsi
shlq $0x5, %rsi
addq 0x1a01b(%rip), %rsi     # 0x212f8
leaq 0x8(%rsp), %rdi
callq 0x4330
cmpl $0x2, %r12d
je 0x73b3
cmpl $0x1, %r12d
je 0x735b
testl %r12d, %r12d
jne 0x7409
pushq $0x58
popq %rdi
callq 0x4260
movq %rax, %r12
movq %r15, %r13
movq %r15, %rdi
leaq 0x8(%rsp), %rsi
callq 0x4330
movq %r12, %rdi
movq %r13, %rsi
pushq $0x14
popq %rdx
pushq $0x1
popq %rcx
pushq $0xa
popq %r8
pushq $0x50
popq %r9
movsd 0xe0c9(%rip), %xmm0     # 0x15400
pushq $0x3
pushq $0x64
callq 0xe850
popq %rax
popq %rcx
movq %r13, %rdi
callq 0x4470
movq (%rsp), %rdi
movq %r12, %rsi
callq 0xde56
jmp 0x7409
pushq $0x58
popq %rdi
callq 0x4260
movq %rax, %r12
movq %r14, %r13
movq %r14, %rdi
leaq 0x8(%rsp), %rsi
callq 0x4330
movq %r12, %rdi
movq %r13, %rsi
pushq $0x14
popq %rdx
pushq $0x1
popq %rcx
pushq $0xa
popq %r8
pushq $0x50
popq %r9
movsd 0xe086(%rip), %xmm0     # 0x15418
pushq $0x2
pushq $0x64
callq 0xdf48
popq %rax
popq %rcx
movq %r13, %rdi
callq 0x4470
movq (%rsp), %rdi
movq %r12, %rsi
callq 0xde56
jmp 0x7409
pushq $0x58
popq %rdi
callq 0x4260
movq %rax, %r12
movq %rbp, %r13
movq %rbp, %rdi
leaq 0x8(%rsp), %rsi
callq 0x4330
movq %r12, %rdi
movq %r13, %rsi
pushq $0x14
popq %rdx
pushq $0x1
popq %rcx
pushq $0xa
popq %r8
pushq $0x50
popq %r9
movsd 0xe026(%rip), %xmm0     # 0x15410
pushq $0x1
pushq $0x64
callq 0xe3cc
popq %rax
popq %rcx
movq %r13, %rdi
callq 0x4470
movq (%rsp), %rdi
movq %r12, %rsi
callq 0xde56
leaq 0x8(%rsp), %rdi
callq 0x4470
jmp 0x729e
addq $0x88, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %rbx
leaq 0x48(%rsp), %rdi
jmp 0x744d
jmp 0x7459
movq %rax, %rbx
leaq 0x68(%rsp), %rdi
callq 0x4470
jmp 0x7457
movq %rax, %rbx
leaq 0x28(%rsp), %rdi
callq 0x4470
jmp 0x745c
movq %rax, %rbx
jmp 0x745c
movq %rax, %rbx
pushq $0x58
popq %rsi
movq %r12, %rdi
callq 0x4270
jmp 0x7470
jmp 0x746d
jmp 0x746d
movq %rax, %rbx
leaq 0x8(%rsp), %rdi
callq 0x4470
movq %rbx, %rdi
callq 0x4410
// File: /workspace/github_cpp_makefile_star2_O2/arisKoutsou[P]oopproj/./src/game_utils.cpp
// Function: handleBasicCase(Hero*)
void handleBasicCase(Hero* currentHero) {
  int selection;
  currentHero->getGameMenu().clearMenu();
  currentHero->getGameMenu().displayMenu();
  while ((selection = currentHero->getGameMenu().getSelection())) {
    currentHero->getGameMenu().clearMenu();
    switch (selection) {    
    case 1: {      
      currentHero->printStats();
      break;
    }
    case 2: {      
      currentHero->checkInventory();
      return;
    }
    case 3: {
      currentHero->displayMap();
      handleMoveCase(currentHero);
      return; 
    }
    case 4: {      
      handleQuitCase();
      currentHero->getGameMenu().clearMenu();
      if (quitGame) return;
      break;
    }            
    default: break;
    }
    currentHero->getGameMenu().displayMenu();
  }
}

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
movq %rdi, %rbx
callq 0xf076
movq %rax, %rdi
callq 0x4bf4
leaq 0xdf59(%rip), %r15      # 0x15438
movq %rbx, %rdi
callq 0xf076
movq (%rax), %rcx
movq %rax, %rdi
callq *(%rcx)
movq %rbx, %rdi
callq 0xf076
movq %rax, %rdi
callq 0x4c44
testl %eax, %eax
je 0x7551
movl %eax, %r14d
movq %rbx, %rdi
callq 0xf076
movq %rax, %rdi
callq 0x4bf4
decl %r14d
cmpl $0x3, %r14d
ja 0x74df
movslq (%r15,%r14,4), %rax
addq %r15, %rax
jmpq *%rax
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x20(%rax)
jmp 0x74df
callq 0x7833
movq %rbx, %rdi
callq 0xf076
movq %rax, %rdi
callq 0x4bf4
cmpb $0x1, 0x19d0a(%rip)     # 0x21259
jne 0x74df
popq %rbx
popq %r14
popq %r15
retq
movq %rbx, %rdi
callq 0x114be
movq %rbx, %rdi
popq %rbx
popq %r14
popq %r15
jmp 0x7579
movq %rbx, %rdi
popq %rbx
popq %r14
popq %r15
jmp 0x10560
// File: /workspace/github_cpp_makefile_star2_O2/arisKoutsou[P]oopproj/./src/game_utils.cpp
// Function: heroesAlive()
int heroesAlive(void) {
  int alive = 0;
  for (size_t i = 0U; i != heroes.size(); ++i) {
    if (heroes[i]->getHealthPower() != 0) ++alive;
  }
  return alive;
}

// Assembly:
pushq %r14
pushq %rbx
pushq %rax
xorl %ebx, %ebx
xorl %r14d, %r14d
movq 0x19364(%rip), %rcx     # 0x21288
movq 0x19355(%rip), %rax     # 0x21280
subq %rax, %rcx
sarq $0x3, %rcx
cmpq %rcx, %r14
je 0x7f4b
movq (%rax,%r14,8), %rdi
callq 0x12a58
cmpl $0x1, %eax
sbbl $-0x1, %ebx
incq %r14
jmp 0x7f1d
movl %ebx, %eax
addq $0x8, %rsp
popq %rbx
popq %r14
retq
// File: /workspace/github_cpp_makefile_star2_O2/arisKoutsou[P]oopproj/./src/game_utils.cpp
// Function: claimRewards()
void claimRewards(void) {
  for (size_t i = 0U; i != heroes.size(); ++i) {
    int monstersKilled = heroes[i]->getMonstersKilled();
    if (monstersKilled != 0) {      
      int experienceToClaim = heroes[i]->getLevel()*0.2*monstersKilled + 50*monstersKilled;

      heroes[i]->setExperience(heroes[i]->getExperience() + experienceToClaim);

      if (heroes[i]->getExperience() > heroes[i]->getExperienceMilestone()) {
	// Hero exceeded the milestone. He needs to level up.
	heroes[i]->levelUp();		// Level up the Hero. Deserves it.
	heroes[i]->nextMilestone();	// Set a new milestone.
      }

      int moneyToClaim = heroes[i]->getLevel()*0.1*monstersKilled + 100*monstersKilled;
      heroes[i]->setMoney(heroes[i]->getMoney() + moneyToClaim);

    }
  }
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %rbx
pushq %rax
xorl %r15d, %r15d
movq 0x19316(%rip), %rcx     # 0x21288
movq 0x19307(%rip), %rax     # 0x21280
subq %rax, %rcx
sarq $0x3, %rcx
cmpq %rcx, %r15
je 0x8091
movq (%rax,%r15,8), %rdi
callq 0xf0d8
testl %eax, %eax
je 0x8089
movl %eax, %ebx
movq 0x192dd(%rip), %rax     # 0x21280
movq (%rax,%r15,8), %rdi
callq 0x12a60
cvtsi2sd %eax, %xmm0
mulsd 0xd460(%rip), %xmm0     # 0x15418
cvtsi2sd %ebx, %xmm2
imull $0x32, %ebx, %eax
cvtsi2sd %eax, %xmm1
movsd %xmm2, (%rsp)
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
cvttsd2si %xmm0, %ebp
movq 0x192a5(%rip), %rax     # 0x21280
movq (%rax,%r15,8), %r14
movq %r14, %rdi
callq 0xf02a
addl %eax, %ebp
movq %r14, %rdi
movl %ebp, %esi
callq 0xf0c0
movq 0x19286(%rip), %rax     # 0x21280
movq (%rax,%r15,8), %rdi
callq 0xf02a
movl %eax, %ebp
movq 0x19274(%rip), %rax     # 0x21280
movq (%rax,%r15,8), %rdi
callq 0xf0e0
cmpl %eax, %ebp
jle 0x803a
movq 0x19260(%rip), %rax     # 0x21280
movq (%rax,%r15,8), %rdi
movq (%rdi), %rax
callq *0x38(%rax)
movq 0x1924f(%rip), %rax     # 0x21280
movq (%rax,%r15,8), %rdi
callq 0xf0e8
movq 0x1923f(%rip), %rax     # 0x21280
movq (%rax,%r15,8), %rdi
callq 0x12a60
cvtsi2sd %eax, %xmm0
mulsd 0xd3aa(%rip), %xmm0     # 0x15400
imull $0x64, %ebx, %eax
cvtsi2sd %eax, %xmm1
mulsd (%rsp), %xmm0
addsd %xmm1, %xmm0
cvttsd2si %xmm0, %ebx
movq 0x1920f(%rip), %rax     # 0x21280
movq (%rax,%r15,8), %r14
movq %r14, %rdi
callq 0xf03a
addl %eax, %ebx
movq %r14, %rdi
movl %ebx, %esi
callq 0xf0b8
incq %r15
jmp 0x7f6b
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
// File: /workspace/github_cpp_makefile_star2_O2/arisKoutsou[P]oopproj/./src/game_utils.cpp
// Function: monstersWon()
bool monstersWon(void) {
  size_t dead = 0U;
  for (size_t i = 0U; i != heroes.size(); ++i) {
    if (heroes[i]->getHealthPower() == 0) ++dead;
  }
  return (dead == heroes.size()) ? true : false;
}

// Assembly:
pushq %r14
pushq %rbx
pushq %rax
xorl %ebx, %ebx
xorl %r14d, %r14d
movq 0x191dc(%rip), %rcx     # 0x21288
movq 0x191cd(%rip), %rax     # 0x21280
subq %rax, %rcx
sarq $0x3, %rcx
cmpq %rcx, %r14
je 0x80d4
movq (%rax,%r14,8), %rdi
callq 0x12a58
cmpl $0x1, %eax
adcq $0x0, %rbx
incq %r14
jmp 0x80a5
cmpq %rbx, %r14
sete %al
addq $0x8, %rsp
popq %rbx
popq %r14
retq
// File: /workspace/github_cpp_makefile_star2_O2/arisKoutsou[P]oopproj/./src/game_utils.cpp
// Function: updatePotionsAndNerfs()
void updatePotionsAndNerfs(void) {
  for (size_t i = 0U; i != heroes.size(); ++i) {
    heroes[i]->updatePotions();   
  }
  list<Monster*> :: iterator it = monsters.begin();
  for ( ; it != monsters.end(); ++it) {
    (*it)->updateNerfs();
  }
}

// Assembly:
pushq %r14
pushq %rbx
pushq %rax
xorl %ebx, %ebx
movq 0x18f8d(%rip), %rcx     # 0x21288
movq 0x18f7e(%rip), %rax     # 0x21280
subq %rax, %rcx
sarq $0x3, %rcx
cmpq %rcx, %rbx
je 0x831c
movq (%rax,%rbx,8), %rdi
callq 0xf7be
incq %rbx
jmp 0x82f4
leaq 0x18fed(%rip), %rbx     # 0x21310
movq %rbx, %r14
movq (%r14), %r14
cmpq %rbx, %r14
je 0x8339
movq 0x10(%r14), %rdi
callq 0x13060
jmp 0x8326
addq $0x8, %rsp
popq %rbx
popq %r14
retq
// File: /workspace/github_cpp_makefile_star2_O2/arisKoutsou[P]oopproj/./src/game_utils.cpp
// Function: restoreHeroes()
void restoreHeroes(void) {
  for (size_t i = 0U; i != heroes.size(); ++i) {
    heroes[i]->resetBattleStats();
    if (heroes[i]->getHealthPower() == 0) {
      heroes[i]->respawn();
    }
  }  
}

// Assembly:
pushq %rbx
xorl %ebx, %ebx
movq 0x18f3d(%rip), %rcx     # 0x21288
movq 0x18f2e(%rip), %rax     # 0x21280
subq %rax, %rcx
sarq $0x3, %rcx
cmpq %rcx, %rbx
je 0x8390
movq (%rax,%rbx,8), %rdi
callq 0xf0d0
movq 0x18f12(%rip), %rax     # 0x21280
movq (%rax,%rbx,8), %rdi
callq 0x12a58
testl %eax, %eax
jne 0x838b
movq 0x18efe(%rip), %rax     # 0x21280
movq (%rax,%rbx,8), %rdi
callq 0xf0f0
incq %rbx
jmp 0x8344
popq %rbx
retq
// File: /workspace/github_cpp_makefile_star2_O2/arisKoutsou[P]oopproj/./src/game_utils.cpp
// Function: readData()
void readData(void) {
  ifstream inputStream;
  vector<string>* dataVectors[5] = {
    &names, &weapons, &armors,
    &potions, &spells
  };
  string inputNames[5] = {
    "input/names.txt",
    "input/weapons.txt",
    "input/armors.txt",
    "input/potions.txt",
    "input/spells.txt"
  };
  for (size_t i = 0U; i != 5U; ++i) {
    inputStream.open(inputNames[i].c_str());
    if (inputStream.is_open() == false) {
      cerr << "There was an error while opening "
	   << inputNames[i] << " file. Exiting game..."
	   << endl;
      exit(EXIT_FAILURE);
      
    }
    readSpecificData(inputStream, *dataVectors[i]);
    inputStream.close();
  }
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x2b8, %rsp            # imm = 0x2B8
leaq 0xb0(%rsp), %rdi
callq 0x42a0
leaq 0xd0a3(%rip), %rsi      # 0x159e1
leaq 0x10(%rsp), %rbx
leaq 0xf(%rsp), %rdx
movq %rbx, %rdi
callq 0x578c
leaq 0x30(%rsp), %r14
leaq 0xd095(%rip), %rsi      # 0x159f1
leaq 0xe(%rsp), %rdx
movq %r14, %rdi
callq 0x578c
leaq 0x50(%rsp), %r14
leaq 0xd08e(%rip), %rsi      # 0x15a03
leaq 0xd(%rsp), %rdx
movq %r14, %rdi
callq 0x578c
leaq 0x70(%rsp), %r14
leaq 0xd086(%rip), %rsi      # 0x15a14
leaq 0xc(%rsp), %rdx
movq %r14, %rdi
callq 0x578c
leaq 0x90(%rsp), %r14
leaq 0xd07c(%rip), %rsi      # 0x15a26
leaq 0xb(%rsp), %rdx
movq %r14, %rdi
callq 0x578c
leaq 0x128(%rsp), %r14
xorl %r12d, %r12d
leaq 0xb0(%rsp), %r15
pushq $0x8
popq %rbp
leaq 0x17dac(%rip), %r13     # 0x20780
cmpq $0x28, %r12
je 0x8a11
movq (%rbx), %rsi
movq %r15, %rdi
movl %ebp, %edx
callq 0x4170
movq %r14, %rdi
callq 0x40a0
testb %al, %al
je 0x8a4c
movq (%r12,%r13), %rsi
movq %r15, %rdi
callq 0x8ae0
movq %r15, %rdi
callq 0x4070
addq $0x20, %rbx
addq $0x8, %r12
jmp 0x89d4
movl $0x80, %ebx
leaq (%rsp,%rbx), %rdi
addq $0x10, %rdi
callq 0x4470
addq $-0x20, %rbx
cmpq $-0x20, %rbx
jne 0x8a16
leaq 0xb0(%rsp), %rdi
callq 0x4460
addq $0x2b8, %rsp            # imm = 0x2B8
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq 0x18595(%rip), %rdi     # 0x20fe8
leaq 0xcfdd(%rip), %rsi      # 0x15a37
callq 0x4250
movq %rax, %rdi
movq %rbx, %rsi
callq 0x4220
leaq 0xcfe8(%rip), %rsi      # 0x15a59
movq %rax, %rdi
callq 0x4250
movq %rax, %rdi
callq 0x4120
pushq $0x1
popq %rdi
callq 0x42d0
jmp 0x8a8f
jmp 0x8a8f
jmp 0x8a8f
movq %rax, %r15
addq $-0x20, %r14
movq %r14, %rdi
callq 0x4470
cmpq %rbx, %r14
jne 0x8a92
jmp 0x8acb
movq %rax, %r15
jmp 0x8acb
jmp 0x8aac
movq %rax, %r15
movl $0x80, %ebx
leaq (%rsp,%rbx), %rdi
addq $0x10, %rdi
callq 0x4470
addq $-0x20, %rbx
cmpq $-0x20, %rbx
jne 0x8ab4
leaq 0xb0(%rsp), %rdi
callq 0x4460
movq %r15, %rdi
callq 0x4410
// File: /workspace/github_cpp_makefile_star2_O2/arisKoutsou[P]oopproj/./src/game_utils.cpp
// Function: setMap()
void setMap(void) {
  map.open("input/map.txt");
  if (!map.is_open()) {
    cerr << "There was a problem opening the map file.\nExiting game..."
	 << endl;
    exit(EXIT_FAILURE);
  }
}

// Assembly:
pushq %rax
leaq 0x18801(%rip), %rdi     # 0x21328
leaq 0xca8f(%rip), %rsi      # 0x155bd
pushq $0x8
popq %rdx
callq 0x4170
leaq 0x18863(%rip), %rdi     # 0x213a0
callq 0x40a0
testb %al, %al
je 0x8b48
popq %rax
retq
movq 0x18499(%rip), %rdi     # 0x20fe8
leaq 0xcf1a(%rip), %rsi      # 0x15a70
callq 0x4250
movq %rax, %rdi
callq 0x4120
pushq $0x1
popq %rdi
callq 0x42d0
// File: /workspace/github_cpp_makefile_star2_O2/arisKoutsou[P]oopproj/./src/game_utils.cpp
// Function: getNumberOfHeroes()
int getNumberOfHeroes(void) {
  int numberOfHeroes = -1;
  while (numberOfHeroes < 1 || numberOfHeroes > 3) {
    cout << endl
	 << "Please enter the number of heroes you want to have "
	 << "(min: 1, max: 3)" << endl << endl << "> ";
    cin >> numberOfHeroes;
    cout << endl;
    cin.ignore(numeric_limits<streamsize> :: max(), '\n');
  }
  return numberOfHeroes;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
leaq 0x4(%rsp), %rax
orl $-0x1, (%rax)
pushq $-0x1
popq %rax
movq 0x18438(%rip), %r14     # 0x20fc0
leaq 0xcf4f(%rip), %r12      # 0x15ade
leaq 0xc4a6(%rip), %r13      # 0x1503c
movq 0x18433(%rip), %rbp     # 0x20fd0
movabsq $0x7fffffffffffffff, %rbx # imm = 0x7FFFFFFFFFFFFFFF
pushq $0xa
popq %r15
leal -0x4(%rax), %ecx
cmpl $-0x4, %ecx
ja 0x8c19
movq %r14, %rdi
callq 0x4120
movq %rax, %rdi
leaq 0xcee5(%rip), %rsi      # 0x15aaa
callq 0x4250
movq %rax, %rdi
movq %r12, %rsi
callq 0x4250
movq %rax, %rdi
callq 0x4120
movq %rax, %rdi
callq 0x4120
movq %rax, %rdi
movq %r13, %rsi
callq 0x4250
movq %rbp, %rdi
leaq 0x4(%rsp), %rsi
callq 0x4160
movq %r14, %rdi
callq 0x4120
movq %rbp, %rdi
movq %rbx, %rsi
movl %r15d, %edx
callq 0x4180
movl 0x4(%rsp), %eax
jmp 0x8bab
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
// File: /workspace/github_cpp_makefile_star2_O2/arisKoutsou[P]oopproj/./src/game_utils.cpp
// Function: cleanupResources()
void cleanupResources(void) {  
  delete gameGrid;
  heroes.clear();
  names.clear();
  weapons.clear();
  armors.clear();
  potions.clear();
  spells.clear();
  map.close();
  quitGame = false;
}

// Assembly:
pushq %rbx
movq 0x18900(%rip), %rbx     # 0x21530
testq %rbx, %rbx
je 0x8c3d
movq %rbx, %rdi
callq 0x5cec
pushq $0x20
popq %rsi
movq %rbx, %rdi
callq 0x4270
movq 0x18631(%rip), %rax     # 0x21280
cmpq %rax, 0x18632(%rip)     # 0x21288
je 0x8c5f
movq %rax, 0x18629(%rip)     # 0x21288
leaq 0x18632(%rip), %rdi     # 0x21298
callq 0x9e8e
leaq 0x1863e(%rip), %rdi     # 0x212b0
callq 0x9e8e
leaq 0x1864a(%rip), %rdi     # 0x212c8
callq 0x9e8e
leaq 0x18656(%rip), %rdi     # 0x212e0
callq 0x9e8e
leaq 0x18662(%rip), %rdi     # 0x212f8
callq 0x9e8e
leaq 0x18686(%rip), %rdi     # 0x21328
callq 0x4070
movb $0x0, 0x185ab(%rip)     # 0x21259
popq %rbx
retq
// File: /workspace/github_cpp_makefile_star2_O2/arisKoutsou[P]oopproj/./src/game_utils.cpp
// Function: play()
void play(void) {
  setMap();
  readData();
  int numberOfHeroes = getNumberOfHeroes();
  initGrid();
  createHeroes(numberOfHeroes);
  int heroTurn = 0;
  bool battled = false;
  while (quitGame == false) {
    Hero* currentHero = heroes[heroTurn];
    heroTurn = (heroTurn + 1) % numberOfHeroes;
    if (!battled && currentHero->getTile().isQualifiedForBattle(numberOfHeroes)) {
      if (rng.boolean(battleProbability)) {
    	handleBattleCase();
	currentHero->updatePotions();
	battled = true;
	continue;
      }      
    }
    handleBasicCase(currentHero);
    battled = false;
  }
  cleanupResources();
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %rbx
pushq %rax
callq 0x8b1f
callq 0x8919
callq 0x8b6b
movl %eax, %ebx
callq 0x6c97
movl %ebx, %edi
callq 0x83c1
xorl %ebp, %ebp
xorl %eax, %eax
xorl %r15d, %r15d
cmpb $0x0, 0x18577(%rip)     # 0x21259
jne 0x8d44
movl %r15d, %ecx
movq 0x18592(%rip), %rdx     # 0x21280
movq (%rdx,%rcx,8), %r14
incl %r15d
cmpl %ebx, %r15d
cmovel %ebp, %r15d
testb $0x1, %al
jne 0x8d38
movq %r14, %rdi
callq 0xf07e
movq %rax, %rdi
movl %ebx, %esi
callq 0x5ba0
testb %al, %al
je 0x8d38
movsd 0xc712(%rip), %xmm0     # 0x15430
callq 0x4b00
testb %al, %al
je 0x8d38
callq 0x79a0
movq %r14, %rdi
callq 0xf7be
movb $0x1, %al
jmp 0x8cdb
movq %r14, %rdi
callq 0x74c3
xorl %eax, %eax
jmp 0x8cdb
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
jmp 0x8c28
// File: /workspace/github_cpp_makefile_star2_O2/arisKoutsou[P]oopproj/./src/game_utils.cpp
// Function: run()
void run(void) {  
  clearScreen();

  MainMenu mainMenu;
  string userInput;
  bool firstWelcome = true;

  do {
    if (firstWelcome) {
      mainMenu.welcome();
      firstWelcome = false;
    } else {
      mainMenu.displayMenu();
    }

    userInput = mainMenu.prompt();
    transform(userInput.begin(), userInput.end(),	      
	      userInput.begin(), :: tolower);

    if (userInput == "generatemap") {
      clearScreen();
      generateMap();
    } else if (userInput == "play") {
      play();
    } else if (userInput == "help") {
      clearScreen();
      mainMenu.help();
    } 
    clearScreen();	// When exiting from any case. Print ClearScreen.
  } while (userInput != "quit");
  cout << endl << "Exiting game..." << endl;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x68, %rsp
callq 0x7951
leaq 0x28(%rsp), %rbx
movq %rbx, %rdi
callq 0x5228
leaq 0x18(%rsp), %rax
movq %rax, -0x10(%rax)
andq $0x0, -0x8(%rax)
movb $0x0, (%rax)
movq %rbx, %rdi
callq 0x5330
leaq 0x48(%rsp), %rbx
leaq 0x28(%rsp), %r14
leaq 0x8(%rsp), %r15
movq %rbx, %rdi
movq %r14, %rsi
callq 0x538c
movq %r15, %rdi
movq %rbx, %rsi
callq 0x42e0
movq %rbx, %rdi
callq 0x4470
movq 0x8(%rsp), %rbp
movq 0x10(%rsp), %r12
xorl %r13d, %r13d
cmpq %r13, %r12
je 0x8de0
movsbl (%rbp,%r13), %edi
callq 0x4350
movb %al, (%rbp,%r13)
incq %r13
jmp 0x8dc6
movq %r15, %rdi
leaq 0xcd05(%rip), %rsi      # 0x15aef
callq 0x5b02
testb %al, %al
je 0x8dff
callq 0x7951
callq 0x6860
jmp 0x8e39
movq %r15, %rdi
leaq 0xccf2(%rip), %rsi      # 0x15afb
callq 0x5b02
testb %al, %al
je 0x8e19
callq 0x8cb0
jmp 0x8e39
movq %r15, %rdi
leaq 0xccdd(%rip), %rsi      # 0x15b00
callq 0x5b02
testb %al, %al
je 0x8e39
callq 0x7951
movq %r14, %rdi
callq 0x564a
callq 0x7951
movq %r15, %rdi
leaq 0xccbd(%rip), %rsi      # 0x15b05
callq 0x5808
testb %al, %al
je 0x8e5e
movq %r14, %rdi
callq 0x5528
jmp 0x8d9b
movq 0x1815b(%rip), %rdi     # 0x20fc0
callq 0x4120
leaq 0xcc29(%rip), %rsi      # 0x15a9a
movq %rax, %rdi
callq 0x4250
movq %rax, %rdi
callq 0x4120
leaq 0x8(%rsp), %rdi
callq 0x4470
leaq 0x28(%rsp), %rdi
callq 0x57c8
addq $0x68, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x8eaa
jmp 0x8eaa
jmp 0x8eaa
movq %rax, %rbx
leaq 0x8(%rsp), %rdi
callq 0x4470
leaq 0x28(%rsp), %rdi
callq 0x57c8
movq %rbx, %rdi
callq 0x4410
// File: /workspace/github_cpp_makefile_star2_O2/arisKoutsou[P]oopproj/./src/game_utils.cpp
// Function: getDigits(int)
int getDigits(int n) {
  if (n == 0) return 1;
  int digits = 0;
  while (n) {
    ++digits;
    n /= 10;
  }
  return digits;
}

// Assembly:
testl %edi, %edi
je 0x8edf
movl %edi, %eax
xorl %ecx, %ecx
pushq $0xa
popq %rsi
testl %eax, %eax
je 0x8ee2
incl %ecx
cltd
idivl %esi
jmp 0x8ed4
pushq $0x1
popq %rcx
movl %ecx, %eax
retq
// File: /workspace/github_cpp_makefile_star2_O2/arisKoutsou[P]oopproj/./src/game_utils.cpp
// Function: printMonsterFrame()
void printMonsterFrame(void) {
  cout << '+' << string(24, '-');
  cout << '+' << string(9, '-'); 
  cout << '+' << string(8, '-'); 
  cout << '+' << string(12, '-');
  cout << '+' << string(12, '-');
  cout << '+' << string(9, '-'); 
  cout << '+' << string(9, '-'); 
  cout << '+' << endl;
}

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
subq $0x20, %rsp
movq 0x17e28(%rip), %rdi     # 0x20fc0
pushq $0x2b
popq %rsi
callq 0x42c0
movq %rax, %rbx
leaq 0x10(%rsp), %r15
movq %r15, -0x10(%r15)
movq %rsp, %rdi
pushq $0x18
popq %rsi
pushq $0x2d
popq %rdx
callq 0x42b0
movq %rsp, %rsi
movq %rbx, %rdi
callq 0x4220
movq %rsp, %r14
movq %r14, %rdi
callq 0x4470
movq 0x17de9(%rip), %rdi     # 0x20fc0
pushq $0x2b
popq %rsi
callq 0x42c0
movq %rax, %rbx
movq %r15, (%r14)
movq %rsp, %rdi
pushq $0x9
popq %rsi
pushq $0x2d
popq %rdx
callq 0x42b0
movq %rsp, %rsi
movq %rbx, %rdi
callq 0x4220
movq %rsp, %r14
movq %r14, %rdi
callq 0x4470
movq 0x17db0(%rip), %rdi     # 0x20fc0
pushq $0x2b
popq %rsi
callq 0x42c0
movq %rax, %rbx
movq %r15, (%r14)
movq %rsp, %rdi
pushq $0x8
popq %rsi
pushq $0x2d
popq %rdx
callq 0x42b0
movq %rsp, %rsi
movq %rbx, %rdi
callq 0x4220
movq %rsp, %r14
movq %r14, %rdi
callq 0x4470
movq 0x17d77(%rip), %rdi     # 0x20fc0
pushq $0x2b
popq %rsi
callq 0x42c0
movq %rax, %rbx
movq %r15, (%r14)
movq %rsp, %rdi
pushq $0xc
popq %rsi
pushq $0x2d
popq %rdx
callq 0x42b0
movq %rsp, %rsi
movq %rbx, %rdi
callq 0x4220
movq %rsp, %r14
movq %r14, %rdi
callq 0x4470
movq 0x17d3e(%rip), %rdi     # 0x20fc0
pushq $0x2b
popq %rsi
callq 0x42c0
movq %rax, %rbx
movq %r15, (%r14)
movq %rsp, %rdi
pushq $0xc
popq %rsi
pushq $0x2d
popq %rdx
callq 0x42b0
movq %rsp, %rsi
movq %rbx, %rdi
callq 0x4220
movq %rsp, %r14
movq %r14, %rdi
callq 0x4470
movq 0x17d05(%rip), %rdi     # 0x20fc0
pushq $0x2b
popq %rsi
callq 0x42c0
movq %rax, %rbx
movq %r15, (%r14)
movq %rsp, %rdi
pushq $0x9
popq %rsi
pushq $0x2d
popq %rdx
callq 0x42b0
movq %rsp, %rsi
movq %rbx, %rdi
callq 0x4220
movq %rsp, %r14
movq %r14, %rdi
callq 0x4470
movq 0x17ccc(%rip), %rdi     # 0x20fc0
pushq $0x2b
popq %rsi
callq 0x42c0
movq %rax, %rbx
movq %r15, (%r14)
movq %rsp, %rdi
pushq $0x9
popq %rsi
pushq $0x2d
popq %rdx
callq 0x42b0
movq %rsp, %rsi
movq %rbx, %rdi
callq 0x4220
movq %rsp, %rdi
callq 0x4470
movq 0x17c96(%rip), %rdi     # 0x20fc0
pushq $0x2b
popq %rsi
callq 0x42c0
movq %rax, %rdi
callq 0x4120
addq $0x20, %rsp
popq %rbx
popq %r14
popq %r15
retq
jmp 0x935c
jmp 0x9369
jmp 0x935c
jmp 0x9369
jmp 0x935c
jmp 0x9369
jmp 0x935c
jmp 0x9369
jmp 0x935c
jmp 0x9369
jmp 0x935c
jmp 0x9369
movq %rax, %rbx
movq %rsp, %rdi
callq 0x4470
jmp 0x936c
movq %rax, %rbx
movq %rbx, %rdi
callq 0x4410
// File: /workspace/github_cpp_makefile_star2_O2/arisKoutsou[P]oopproj/./src/game_utils.cpp
// Function: printArmorFrame()
void printArmorFrame(void) {
  cout << '+' << string(24, '-'); 
  cout << '+' << string(7, '-');  
  cout << '+' << string(11, '-'); 
  cout << '+' << string(18, '-');
  cout << '+' << endl;
}

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
subq $0x20, %rsp
movq 0x17c3c(%rip), %rdi     # 0x20fc0
pushq $0x2b
popq %rsi
callq 0x42c0
movq %rax, %rbx
leaq 0x10(%rsp), %r15
movq %r15, -0x10(%r15)
movq %rsp, %rdi
pushq $0x18
popq %rsi
pushq $0x2d
popq %rdx
callq 0x42b0
movq %rsp, %rsi
movq %rbx, %rdi
callq 0x4220
movq %rsp, %r14
movq %r14, %rdi
callq 0x4470
movq 0x17bfd(%rip), %rdi     # 0x20fc0
pushq $0x2b
popq %rsi
callq 0x42c0
movq %rax, %rbx
movq %r15, (%r14)
movq %rsp, %rdi
pushq $0x7
popq %rsi
pushq $0x2d
popq %rdx
callq 0x42b0
movq %rsp, %rsi
movq %rbx, %rdi
callq 0x4220
movq %rsp, %r14
movq %r14, %rdi
callq 0x4470
movq 0x17bc4(%rip), %rdi     # 0x20fc0
pushq $0x2b
popq %rsi
callq 0x42c0
movq %rax, %rbx
movq %r15, (%r14)
movq %rsp, %rdi
pushq $0xb
popq %rsi
pushq $0x2d
popq %rdx
callq 0x42b0
movq %rsp, %rsi
movq %rbx, %rdi
callq 0x4220
movq %rsp, %r14
movq %r14, %rdi
callq 0x4470
movq 0x17b8b(%rip), %rdi     # 0x20fc0
pushq $0x2b
popq %rsi
callq 0x42c0
movq %rax, %rbx
movq %r15, (%r14)
movq %rsp, %rdi
pushq $0x12
popq %rsi
pushq $0x2d
popq %rdx
callq 0x42b0
movq %rsp, %rsi
movq %rbx, %rdi
callq 0x4220
movq %rsp, %rdi
callq 0x4470
movq 0x17b55(%rip), %rdi     # 0x20fc0
pushq $0x2b
popq %rsi
callq 0x42c0
movq %rax, %rdi
callq 0x4120
addq $0x20, %rsp
popq %rbx
popq %r14
popq %r15
retq
jmp 0x9491
jmp 0x949e
jmp 0x9491
jmp 0x949e
jmp 0x9491
jmp 0x949e
movq %rax, %rbx
movq %rsp, %rdi
callq 0x4470
jmp 0x94a1
movq %rax, %rbx
movq %rbx, %rdi
callq 0x4410
// File: /workspace/github_cpp_makefile_star2_O2/arisKoutsou[P]oopproj/./src/game_utils.cpp
// Function: printWeaponFrame()
void printWeaponFrame(void) {
  cout << '+' << string(24, '-'); 
  cout << '+' << string(7, '-');  
  cout << '+' << string(11, '-'); 
  cout << '+' << string(8, '-');  
  cout << '+' << string(12, '-');
  cout << '+' << endl;
}

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
subq $0x20, %rsp
movq 0x17b07(%rip), %rdi     # 0x20fc0
pushq $0x2b
popq %rsi
callq 0x42c0
movq %rax, %rbx
leaq 0x10(%rsp), %r15
movq %r15, -0x10(%r15)
movq %rsp, %rdi
pushq $0x18
popq %rsi
pushq $0x2d
popq %rdx
callq 0x42b0
movq %rsp, %rsi
movq %rbx, %rdi
callq 0x4220
movq %rsp, %r14
movq %r14, %rdi
callq 0x4470
movq 0x17ac8(%rip), %rdi     # 0x20fc0
pushq $0x2b
popq %rsi
callq 0x42c0
movq %rax, %rbx
movq %r15, (%r14)
movq %rsp, %rdi
pushq $0x7
popq %rsi
pushq $0x2d
popq %rdx
callq 0x42b0
movq %rsp, %rsi
movq %rbx, %rdi
callq 0x4220
movq %rsp, %r14
movq %r14, %rdi
callq 0x4470
movq 0x17a8f(%rip), %rdi     # 0x20fc0
pushq $0x2b
popq %rsi
callq 0x42c0
movq %rax, %rbx
movq %r15, (%r14)
movq %rsp, %rdi
pushq $0xb
popq %rsi
pushq $0x2d
popq %rdx
callq 0x42b0
movq %rsp, %rsi
movq %rbx, %rdi
callq 0x4220
movq %rsp, %r14
movq %r14, %rdi
callq 0x4470
movq 0x17a56(%rip), %rdi     # 0x20fc0
pushq $0x2b
popq %rsi
callq 0x42c0
movq %rax, %rbx
movq %r15, (%r14)
movq %rsp, %rdi
pushq $0x8
popq %rsi
pushq $0x2d
popq %rdx
callq 0x42b0
movq %rsp, %rsi
movq %rbx, %rdi
callq 0x4220
movq %rsp, %r14
movq %r14, %rdi
callq 0x4470
movq 0x17a1d(%rip), %rdi     # 0x20fc0
pushq $0x2b
popq %rsi
callq 0x42c0
movq %rax, %rbx
movq %r15, (%r14)
movq %rsp, %rdi
pushq $0xc
popq %rsi
pushq $0x2d
popq %rdx
callq 0x42b0
movq %rsp, %rsi
movq %rbx, %rdi
callq 0x4220
movq %rsp, %rdi
callq 0x4470
movq 0x179e7(%rip), %rdi     # 0x20fc0
pushq $0x2b
popq %rsi
callq 0x42c0
movq %rax, %rdi
callq 0x4120
addq $0x20, %rsp
popq %rbx
popq %r14
popq %r15
retq
jmp 0x9603
jmp 0x9610
jmp 0x9603
jmp 0x9610
jmp 0x9603
jmp 0x9610
jmp 0x9603
jmp 0x9610
movq %rax, %rbx
movq %rsp, %rdi
callq 0x4470
jmp 0x9613
movq %rax, %rbx
movq %rbx, %rdi
callq 0x4410
// File: /workspace/github_cpp_makefile_star2_O2/arisKoutsou[P]oopproj/./src/game_utils.cpp
// Function: printPotionFrame()
void printPotionFrame(void) {
  cout << '+' << string(24, '-'); 
  cout << '+' << string(7, '-');  
  cout << '+' << string(11, '-'); 
  cout << '+' << string(16, '-');
  cout << '+' << string(17, '-');
  cout << '+' << string(15, '-');
  cout << '+' << string(10, '-'); 
  cout << '+' << endl;
}

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
subq $0x20, %rsp
movq 0x17995(%rip), %rdi     # 0x20fc0
pushq $0x2b
popq %rsi
callq 0x42c0
movq %rax, %rbx
leaq 0x10(%rsp), %r15
movq %r15, -0x10(%r15)
movq %rsp, %rdi
pushq $0x18
popq %rsi
pushq $0x2d
popq %rdx
callq 0x42b0
movq %rsp, %rsi
movq %rbx, %rdi
callq 0x4220
movq %rsp, %r14
movq %r14, %rdi
callq 0x4470
movq 0x17956(%rip), %rdi     # 0x20fc0
pushq $0x2b
popq %rsi
callq 0x42c0
movq %rax, %rbx
movq %r15, (%r14)
movq %rsp, %rdi
pushq $0x7
popq %rsi
pushq $0x2d
popq %rdx
callq 0x42b0
movq %rsp, %rsi
movq %rbx, %rdi
callq 0x4220
movq %rsp, %r14
movq %r14, %rdi
callq 0x4470
movq 0x1791d(%rip), %rdi     # 0x20fc0
pushq $0x2b
popq %rsi
callq 0x42c0
movq %rax, %rbx
movq %r15, (%r14)
movq %rsp, %rdi
pushq $0xb
popq %rsi
pushq $0x2d
popq %rdx
callq 0x42b0
movq %rsp, %rsi
movq %rbx, %rdi
callq 0x4220
movq %rsp, %r14
movq %r14, %rdi
callq 0x4470
movq 0x178e4(%rip), %rdi     # 0x20fc0
pushq $0x2b
popq %rsi
callq 0x42c0
movq %rax, %rbx
movq %r15, (%r14)
movq %rsp, %rdi
pushq $0x10
popq %rsi
pushq $0x2d
popq %rdx
callq 0x42b0
movq %rsp, %rsi
movq %rbx, %rdi
callq 0x4220
movq %rsp, %r14
movq %r14, %rdi
callq 0x4470
movq 0x178ab(%rip), %rdi     # 0x20fc0
pushq $0x2b
popq %rsi
callq 0x42c0
movq %rax, %rbx
movq %r15, (%r14)
movq %rsp, %rdi
pushq $0x11
popq %rsi
pushq $0x2d
popq %rdx
callq 0x42b0
movq %rsp, %rsi
movq %rbx, %rdi
callq 0x4220
movq %rsp, %r14
movq %r14, %rdi
callq 0x4470
movq 0x17872(%rip), %rdi     # 0x20fc0
pushq $0x2b
popq %rsi
callq 0x42c0
movq %rax, %rbx
movq %r15, (%r14)
movq %rsp, %rdi
pushq $0xf
popq %rsi
pushq $0x2d
popq %rdx
callq 0x42b0
movq %rsp, %rsi
movq %rbx, %rdi
callq 0x4220
movq %rsp, %r14
movq %r14, %rdi
callq 0x4470
movq 0x17839(%rip), %rdi     # 0x20fc0
pushq $0x2b
popq %rsi
callq 0x42c0
movq %rax, %rbx
movq %r15, (%r14)
movq %rsp, %rdi
pushq $0xa
popq %rsi
pushq $0x2d
popq %rdx
callq 0x42b0
movq %rsp, %rsi
movq %rbx, %rdi
callq 0x4220
movq %rsp, %rdi
callq 0x4470
movq 0x17803(%rip), %rdi     # 0x20fc0
pushq $0x2b
popq %rsi
callq 0x42c0
movq %rax, %rdi
callq 0x4120
addq $0x20, %rsp
popq %rbx
popq %r14
popq %r15
retq
jmp 0x97ef
jmp 0x97fc
jmp 0x97ef
jmp 0x97fc
jmp 0x97ef
jmp 0x97fc
jmp 0x97ef
jmp 0x97fc
jmp 0x97ef
jmp 0x97fc
jmp 0x97ef
jmp 0x97fc
movq %rax, %rbx
movq %rsp, %rdi
callq 0x4470
jmp 0x97ff
movq %rax, %rbx
movq %rbx, %rdi
callq 0x4410
// File: /workspace/github_cpp_makefile_star2_O2/arisKoutsou[P]oopproj/./src/game_utils.cpp
// Function: printIceSpellFrame()
void printIceSpellFrame(void) {
  cout << '+' << string(24, '-'); 
  cout << '+' << string(7, '-');  
  cout << '+' << string(11, '-'); 
  cout << '+' << string(11, '-'); 
  cout << '+' << string(12, '-');
  cout << '+' << string(12, '-');
  cout << '+' << string(18, '-');
  cout << '+' << string(10, '-'); 
  cout << '+' << endl;
}

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
subq $0x20, %rsp
movq 0x177a9(%rip), %rdi     # 0x20fc0
pushq $0x2b
popq %rsi
callq 0x42c0
movq %rax, %rbx
leaq 0x10(%rsp), %r15
movq %r15, -0x10(%r15)
movq %rsp, %rdi
pushq $0x18
popq %rsi
pushq $0x2d
popq %rdx
callq 0x42b0
movq %rsp, %rsi
movq %rbx, %rdi
callq 0x4220
movq %rsp, %r14
movq %r14, %rdi
callq 0x4470
movq 0x1776a(%rip), %rdi     # 0x20fc0
pushq $0x2b
popq %rsi
callq 0x42c0
movq %rax, %rbx
movq %r15, (%r14)
movq %rsp, %rdi
pushq $0x7
popq %rsi
pushq $0x2d
popq %rdx
callq 0x42b0
movq %rsp, %rsi
movq %rbx, %rdi
callq 0x4220
movq %rsp, %r14
movq %r14, %rdi
callq 0x4470
movq 0x17731(%rip), %rdi     # 0x20fc0
pushq $0x2b
popq %rsi
callq 0x42c0
movq %rax, %rbx
movq %r15, (%r14)
movq %rsp, %rdi
pushq $0xb
popq %rsi
pushq $0x2d
popq %rdx
callq 0x42b0
movq %rsp, %rsi
movq %rbx, %rdi
callq 0x4220
movq %rsp, %r14
movq %r14, %rdi
callq 0x4470
movq 0x176f8(%rip), %rdi     # 0x20fc0
pushq $0x2b
popq %rsi
callq 0x42c0
movq %rax, %rbx
movq %r15, (%r14)
movq %rsp, %rdi
pushq $0xb
popq %rsi
pushq $0x2d
popq %rdx
callq 0x42b0
movq %rsp, %rsi
movq %rbx, %rdi
callq 0x4220
movq %rsp, %r14
movq %r14, %rdi
callq 0x4470
movq 0x176bf(%rip), %rdi     # 0x20fc0
pushq $0x2b
popq %rsi
callq 0x42c0
movq %rax, %rbx
movq %r15, (%r14)
movq %rsp, %rdi
pushq $0xc
popq %rsi
pushq $0x2d
popq %rdx
callq 0x42b0
movq %rsp, %rsi
movq %rbx, %rdi
callq 0x4220
movq %rsp, %r14
movq %r14, %rdi
callq 0x4470
movq 0x17686(%rip), %rdi     # 0x20fc0
pushq $0x2b
popq %rsi
callq 0x42c0
movq %rax, %rbx
movq %r15, (%r14)
movq %rsp, %rdi
pushq $0xc
popq %rsi
pushq $0x2d
popq %rdx
callq 0x42b0
movq %rsp, %rsi
movq %rbx, %rdi
callq 0x4220
movq %rsp, %r14
movq %r14, %rdi
callq 0x4470
movq 0x1764d(%rip), %rdi     # 0x20fc0
pushq $0x2b
popq %rsi
callq 0x42c0
movq %rax, %rbx
movq %r15, (%r14)
movq %rsp, %rdi
pushq $0x12
popq %rsi
pushq $0x2d
popq %rdx
callq 0x42b0
movq %rsp, %rsi
movq %rbx, %rdi
callq 0x4220
movq %rsp, %r14
movq %r14, %rdi
callq 0x4470
movq 0x17614(%rip), %rdi     # 0x20fc0
pushq $0x2b
popq %rsi
callq 0x42c0
movq %rax, %rbx
movq %r15, (%r14)
movq %rsp, %rdi
pushq $0xa
popq %rsi
pushq $0x2d
popq %rdx
callq 0x42b0
movq %rsp, %rsi
movq %rbx, %rdi
callq 0x4220
movq %rsp, %rdi
callq 0x4470
movq 0x175de(%rip), %rdi     # 0x20fc0
pushq $0x2b
popq %rsi
callq 0x42c0
movq %rax, %rdi
callq 0x4120
addq $0x20, %rsp
popq %rbx
popq %r14
popq %r15
retq
jmp 0x9a18
jmp 0x9a25
jmp 0x9a18
jmp 0x9a25
jmp 0x9a18
jmp 0x9a25
jmp 0x9a18
jmp 0x9a25
jmp 0x9a18
jmp 0x9a25
jmp 0x9a18
jmp 0x9a25
jmp 0x9a18
jmp 0x9a25
movq %rax, %rbx
movq %rsp, %rdi
callq 0x4470
jmp 0x9a28
movq %rax, %rbx
movq %rbx, %rdi
callq 0x4410
// File: /workspace/github_cpp_makefile_star2_O2/arisKoutsou[P]oopproj/./src/game_utils.cpp
// Function: printFireSpellFrame()
void printFireSpellFrame(void) {
  cout << '+' << string(24, '-'); 
  cout << '+' << string(7, '-');  
  cout << '+' << string(11, '-'); 
  cout << '+' << string(11, '-'); 
  cout << '+' << string(12, '-');
  cout << '+' << string(12, '-');
  cout << '+' << string(17, '-');
  cout << '+' << string(10, '-'); 
  cout << '+' << endl;
}

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
subq $0x20, %rsp
movq 0x17580(%rip), %rdi     # 0x20fc0
pushq $0x2b
popq %rsi
callq 0x42c0
movq %rax, %rbx
leaq 0x10(%rsp), %r15
movq %r15, -0x10(%r15)
movq %rsp, %rdi
pushq $0x18
popq %rsi
pushq $0x2d
popq %rdx
callq 0x42b0
movq %rsp, %rsi
movq %rbx, %rdi
callq 0x4220
movq %rsp, %r14
movq %r14, %rdi
callq 0x4470
movq 0x17541(%rip), %rdi     # 0x20fc0
pushq $0x2b
popq %rsi
callq 0x42c0
movq %rax, %rbx
movq %r15, (%r14)
movq %rsp, %rdi
pushq $0x7
popq %rsi
pushq $0x2d
popq %rdx
callq 0x42b0
movq %rsp, %rsi
movq %rbx, %rdi
callq 0x4220
movq %rsp, %r14
movq %r14, %rdi
callq 0x4470
movq 0x17508(%rip), %rdi     # 0x20fc0
pushq $0x2b
popq %rsi
callq 0x42c0
movq %rax, %rbx
movq %r15, (%r14)
movq %rsp, %rdi
pushq $0xb
popq %rsi
pushq $0x2d
popq %rdx
callq 0x42b0
movq %rsp, %rsi
movq %rbx, %rdi
callq 0x4220
movq %rsp, %r14
movq %r14, %rdi
callq 0x4470
movq 0x174cf(%rip), %rdi     # 0x20fc0
pushq $0x2b
popq %rsi
callq 0x42c0
movq %rax, %rbx
movq %r15, (%r14)
movq %rsp, %rdi
pushq $0xb
popq %rsi
pushq $0x2d
popq %rdx
callq 0x42b0
movq %rsp, %rsi
movq %rbx, %rdi
callq 0x4220
movq %rsp, %r14
movq %r14, %rdi
callq 0x4470
movq 0x17496(%rip), %rdi     # 0x20fc0
pushq $0x2b
popq %rsi
callq 0x42c0
movq %rax, %rbx
movq %r15, (%r14)
movq %rsp, %rdi
pushq $0xc
popq %rsi
pushq $0x2d
popq %rdx
callq 0x42b0
movq %rsp, %rsi
movq %rbx, %rdi
callq 0x4220
movq %rsp, %r14
movq %r14, %rdi
callq 0x4470
movq 0x1745d(%rip), %rdi     # 0x20fc0
pushq $0x2b
popq %rsi
callq 0x42c0
movq %rax, %rbx
movq %r15, (%r14)
movq %rsp, %rdi
pushq $0xc
popq %rsi
pushq $0x2d
popq %rdx
callq 0x42b0
movq %rsp, %rsi
movq %rbx, %rdi
callq 0x4220
movq %rsp, %r14
movq %r14, %rdi
callq 0x4470
movq 0x17424(%rip), %rdi     # 0x20fc0
pushq $0x2b
popq %rsi
callq 0x42c0
movq %rax, %rbx
movq %r15, (%r14)
movq %rsp, %rdi
pushq $0x11
popq %rsi
pushq $0x2d
popq %rdx
callq 0x42b0
movq %rsp, %rsi
movq %rbx, %rdi
callq 0x4220
movq %rsp, %r14
movq %r14, %rdi
callq 0x4470
movq 0x173eb(%rip), %rdi     # 0x20fc0
pushq $0x2b
popq %rsi
callq 0x42c0
movq %rax, %rbx
movq %r15, (%r14)
movq %rsp, %rdi
pushq $0xa
popq %rsi
pushq $0x2d
popq %rdx
callq 0x42b0
movq %rsp, %rsi
movq %rbx, %rdi
callq 0x4220
movq %rsp, %rdi
callq 0x4470
movq 0x173b5(%rip), %rdi     # 0x20fc0
pushq $0x2b
popq %rsi
callq 0x42c0
movq %rax, %rdi
callq 0x4120
addq $0x20, %rsp
popq %rbx
popq %r14
popq %r15
retq
jmp 0x9c41
jmp 0x9c4e
jmp 0x9c41
jmp 0x9c4e
jmp 0x9c41
jmp 0x9c4e
jmp 0x9c41
jmp 0x9c4e
jmp 0x9c41
jmp 0x9c4e
jmp 0x9c41
jmp 0x9c4e
jmp 0x9c41
jmp 0x9c4e
movq %rax, %rbx
movq %rsp, %rdi
callq 0x4470
jmp 0x9c51
movq %rax, %rbx
movq %rbx, %rdi
callq 0x4410
// File: /workspace/github_cpp_makefile_star2_O2/arisKoutsou[P]oopproj/./src/inventory/Inventory.cpp
// Function: Inventory::~Inventory()
Inventory :: ~Inventory() {
  while(items.empty() == false) {
    delete items.front();
    items.pop_front();
  }

  while (spells.empty() == false) {
    delete spells.front();
    spells.pop_front();
  }
}

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
movq %rdi, %r14
leaq 0x8(%rdi), %rbx
movq (%rbx), %rax
cmpq %rbx, %rax
je 0xa329
movq 0x10(%rax), %rdi
testq %rdi, %rdi
je 0xa31f
movq (%rdi), %rax
callq *0x8(%rax)
movq %rbx, %rdi
callq 0xbc74
jmp 0xa308
leaq 0x20(%r14), %r15
movq (%r15), %rax
cmpq %r15, %rax
je 0xa34e
movq 0x10(%rax), %rdi
testq %rdi, %rdi
je 0xa344
movq (%rdi), %rax
callq *0x8(%rax)
movq %r15, %rdi
callq 0xbc7c
jmp 0xa32d
addq $0x38, %r14
movq %r14, %rdi
callq 0x57c8
movq %r15, %rdi
callq 0xbd58
movq %rbx, %rdi
popq %rbx
popq %r14
popq %r15
jmp 0xbd82
nop
// File: /workspace/github_cpp_makefile_star2_O2/arisKoutsou[P]oopproj/./src/inventory/Inventory.cpp
// Function: Inventory::hasPotions() const
bool Inventory::hasPotions() const {
  list<Item*> :: const_iterator itemIterator = items.begin();

  for ( ; itemIterator != items.end() ; itemIterator++) {
    if ((*itemIterator)->kindOf() == "Potion") {
      return true;
    }
  }

  return false;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0x20, %rsp
movq %rdi, %rbx
addq $0x8, %rbx
movq %rsp, %r14
leaq 0xbb6e(%rip), %r15      # 0x15f27
movq %rbx, %r12
movq (%r12), %r12
cmpq %rbx, %r12
je 0xa3ed
movq 0x10(%r12), %rsi
movq (%rsi), %rax
movq %r14, %rdi
callq *0x18(%rax)
movq %r14, %rdi
movq %r15, %rsi
callq 0x5b02
movl %eax, %ebp
movq %r14, %rdi
callq 0x4470
testb %bpl, %bpl
je 0xa3bc
cmpq %rbx, %r12
setne %al
addq $0x20, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
// File: /workspace/github_cpp_makefile_star2_O2/arisKoutsou[P]oopproj/./src/inventory/Inventory.cpp
// Function: Inventory::printItems()
void Inventory :: printItems() {
  if (this->getCurrentItems() == 0) {
    cout << endl << "No items in the inventory" << endl << endl;
    return;
  } else {
    list<Item*> :: const_iterator it = items.begin();
    vector<Weapon*> weapons;
    vector<Armor*> armors;
    vector<Potion*> potions;
    for ( ; it != items.end(); ++it) {
      string kind = (*it)->kindOf();
      if (kind == "Weapon") {
	weapons.push_back(static_cast<Weapon*>(*it));
      } else if (kind == "Armor") {
	armors.push_back(static_cast<Armor*>(*it));
      } else if (kind == "Potion") {
	potions.push_back(static_cast<Potion*>(*it));
      }
    }
    printWeapons(weapons);
    printArmors(armors);
    printPotions(potions);
  }
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x88, %rsp
cmpl $0x0, 0x18(%rdi)
je 0xac5f
movq %rdi, %rbx
movq 0x8(%rdi), %r15
addq $0x8, %rbx
xorps %xmm0, %xmm0
leaq 0x50(%rsp), %r14
andq $0x0, 0x10(%r14)
leaq 0x30(%rsp), %rax
andq $0x0, 0x10(%rax)
movaps %xmm0, (%r14)
movaps %xmm0, (%rax)
leaq 0x10(%rsp), %rax
movaps %xmm0, (%rax)
andq $0x0, 0x10(%rax)
leaq 0x68(%rsp), %r13
leaq 0xb035(%rip), %rbp      # 0x15ba2
leaq 0x8(%rsp), %r12
cmpq %rbx, %r15
je 0xac11
movq 0x10(%r15), %rsi
movq (%rsi), %rax
movq %r13, %rdi
callq *0x18(%rax)
movq %r13, %rdi
movq %rbp, %rsi
callq 0x5b02
testb %al, %al
je 0xabad
movq 0x10(%r15), %rax
movq %rax, 0x8(%rsp)
movq %r14, %rdi
movq %r12, %rsi
callq 0xbe80
jmp 0xac01
movq %r13, %rdi
leaq 0xaff2(%rip), %rsi      # 0x15ba9
callq 0x5b02
testb %al, %al
je 0xabd8
movq 0x10(%r15), %rax
movq %rax, 0x8(%rsp)
leaq 0x30(%rsp), %rdi
movq %r12, %rsi
callq 0xbffc
jmp 0xac01
movq %r13, %rdi
leaq 0xb345(%rip), %rsi      # 0x15f27
callq 0x5b02
testb %al, %al
je 0xac01
movq 0x10(%r15), %rax
movq %rax, 0x8(%rsp)
leaq 0x10(%rsp), %rdi
movq %r12, %rsi
callq 0xc178
movq %r13, %rdi
callq 0x4470
movq (%r15), %r15
jmp 0xab72
leaq 0x50(%rsp), %rsi
callq 0xa400
leaq 0x30(%rsp), %rsi
callq 0xa648
leaq 0x10(%rsp), %rsi
callq 0xa85e
leaq 0x10(%rsp), %rdi
callq 0xbe4c
leaq 0x30(%rsp), %rdi
callq 0xbe18
leaq 0x50(%rsp), %rdi
callq 0xbde4
addq $0x88, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq 0x1635a(%rip), %rdi     # 0x20fc0
callq 0x4120
leaq 0xaf16(%rip), %rsi      # 0x15b88
movq %rax, %rdi
callq 0x4250
movq %rax, %rdi
callq 0x4120
movq %rax, %rdi
addq $0x88, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x4120
jmp 0xacb0
jmp 0xaca1
jmp 0xaca1
movq %rax, %rbx
leaq 0x68(%rsp), %rdi
callq 0x4470
jmp 0xacb3
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0xbe4c
leaq 0x30(%rsp), %rdi
callq 0xbe18
leaq 0x50(%rsp), %rdi
callq 0xbde4
movq %rbx, %rdi
callq 0x4410
nop