// File: arisKoutsou[P]oopproj/./src/game_utils.cpp
// Function: handleMoveCase(Hero*)
void handleMoveCase(Hero* currentHero) {
  bool moved = false;
  while (!moved) {
    cout << endl
	 << "Please enter the direction you want to move "
	 << "(possible directions are up, down, left, right)"
	 << endl << endl << "> ";
    string answer;
    getline(cin, answer);
    Hero :: directions direction;
    if (answer == "up") direction = Hero :: UP;
    else if (answer == "down") direction = Hero :: DOWN;
    else if (answer == "left") direction = Hero :: LEFT;
    else if (answer == "right") direction = Hero :: RIGHT;
    else direction = Hero :: UNKNOWN;
    try {
      currentHero->move(direction);
      moved = true;
    }
    catch (HeroMoveException& e) {
      cout << endl << e.what() << endl;
      moved = false;
    }
  }

  if (currentHero->getTile().hasMarket()) {
    string answer;
    do {
      cout << endl << "It seems that you found a market... Do you want to enter?(Y|n)"
	   << endl << endl << "> ";
      getline(cin, answer);
      transform(answer.begin(), answer.end(), answer.begin(), :: tolower);
    } while (answer != "y" && answer != "n");
    if (answer == "y") {
      clearScreen();
      currentHero->enterMarket(currentHero->getTile().getMarket());
    }
  }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x100, %rsp            # imm = 0x100
movq %rdi, -0x8(%rbp)
movb $0x0, -0x9(%rbp)
movb -0x9(%rbp), %al
xorb $-0x1, %al
testb $0x1, %al
jne 0xdf31
jmp 0xe164
movq 0x32088(%rip), %rdi     # 0x3ffc0
movq 0x32061(%rip), %rsi     # 0x3ffa0
movq %rsi, -0x98(%rbp)
callq 0x5330
movq %rax, %rdi
leaq 0x207f6(%rip), %rsi     # 0x2e74b
callq 0x52f0
movq %rax, %rdi
leaq 0x20814(%rip), %rsi     # 0x2e778
callq 0x52f0
movq -0x98(%rbp), %rsi
movq %rax, %rdi
callq 0x5330
movq -0x98(%rbp), %rsi
movq %rax, %rdi
callq 0x5330
movq %rax, %rdi
leaq 0x200ab(%rip), %rsi     # 0x2e03c
callq 0x52f0
leaq -0x30(%rbp), %rdi
movq %rdi, -0x90(%rbp)
callq 0x5460
movq -0x90(%rbp), %rsi
movq 0x32024(%rip), %rdi     # 0x3ffd8
callq 0x5070
jmp 0xdfbb
leaq 0x207e6(%rip), %rsi     # 0x2e7a8
leaq -0x30(%rbp), %rdi
callq 0x8e10
movb %al, -0x99(%rbp)
jmp 0xdfd3
movb -0x99(%rbp), %al
testb $0x1, %al
jne 0xdfdf
jmp 0xdffc
movl $0x0, -0x40(%rbp)
jmp 0xe090
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
jmp 0xe156
leaq 0x207a8(%rip), %rsi     # 0x2e7ab
leaq -0x30(%rbp), %rdi
callq 0x8e10
movb %al, -0x9a(%rbp)
jmp 0xe014
movb -0x9a(%rbp), %al
testb $0x1, %al
jne 0xe020
jmp 0xe029
movl $0x1, -0x40(%rbp)
jmp 0xe08e
leaq 0x20780(%rip), %rsi     # 0x2e7b0
leaq -0x30(%rbp), %rdi
callq 0x8e10
movb %al, -0x9b(%rbp)
jmp 0xe041
movb -0x9b(%rbp), %al
testb $0x1, %al
jne 0xe04d
jmp 0xe056
movl $0x2, -0x40(%rbp)
jmp 0xe08c
leaq 0x20758(%rip), %rsi     # 0x2e7b5
leaq -0x30(%rbp), %rdi
callq 0x8e10
movb %al, -0x9c(%rbp)
jmp 0xe06e
movb -0x9c(%rbp), %al
testb $0x1, %al
jne 0xe07a
jmp 0xe083
movl $0x3, -0x40(%rbp)
jmp 0xe08a
movl $0x4, -0x40(%rbp)
jmp 0xe08c
jmp 0xe08e
jmp 0xe090
movq -0x8(%rbp), %rdi
movl -0x40(%rbp), %esi
callq 0x23da0
jmp 0xe09e
movb $0x1, -0x9(%rbp)
jmp 0xe133
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
movl -0x3c(%rbp), %eax
movl $0x1, %ecx
cmpl %ecx, %eax
jne 0xe156
movq -0x38(%rbp), %rdi
callq 0x5100
movq %rax, -0x48(%rbp)
movq 0x31ee9(%rip), %rdi     # 0x3ffc0
movq 0x31ec2(%rip), %rsi     # 0x3ffa0
callq 0x5330
movq %rax, -0xa8(%rbp)
jmp 0xe0ec
movq -0x48(%rbp), %rdi
movq (%rdi), %rax
movq 0x10(%rax), %rax
callq *%rax
movq -0xa8(%rbp), %rdi
movq %rax, %rsi
callq 0x52f0
movq %rax, -0xb0(%rbp)
jmp 0xe111
movq -0xb0(%rbp), %rdi
movq 0x31e81(%rip), %rsi     # 0x3ffa0
callq 0x5330
jmp 0xe126
movb $0x0, -0x9(%rbp)
callq 0x5520
jmp 0xe131
jmp 0xe133
leaq -0x30(%rbp), %rdi
callq 0x55d0
jmp 0xdf23
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
callq 0x5520
jmp 0xe154
jmp 0xe156
leaq -0x30(%rbp), %rdi
callq 0x55d0
jmp 0xe37b
movq -0x8(%rbp), %rdi
callq 0x22050
movq %rax, %rdi
callq 0x8f80
testb $0x1, %al
jne 0xe17e
jmp 0xe372
leaq -0x68(%rbp), %rdi
callq 0x5460
movq 0x31e32(%rip), %rdi     # 0x3ffc0
movq 0x31e0b(%rip), %rsi     # 0x3ffa0
callq 0x5330
movq %rax, -0xb8(%rbp)
jmp 0xe1a3
movq -0xb8(%rbp), %rdi
leaq 0x2060a(%rip), %rsi     # 0x2e7bb
callq 0x52f0
movq %rax, -0xc0(%rbp)
jmp 0xe1bf
movq -0xc0(%rbp), %rdi
movq 0x31dd3(%rip), %rsi     # 0x3ffa0
callq 0x5330
movq %rax, -0xc8(%rbp)
jmp 0xe1db
movq -0xc8(%rbp), %rdi
movq 0x31db7(%rip), %rsi     # 0x3ffa0
callq 0x5330
movq %rax, -0xd0(%rbp)
jmp 0xe1f7
movq -0xd0(%rbp), %rdi
leaq 0x1fe37(%rip), %rsi     # 0x2e03c
callq 0x52f0
jmp 0xe20c
movq 0x31dc5(%rip), %rdi     # 0x3ffd8
leaq -0x68(%rbp), %rsi
callq 0x5070
jmp 0xe21e
leaq -0x68(%rbp), %rdi
movq %rdi, -0xe0(%rbp)
callq 0x5280
movq -0xe0(%rbp), %rdi
movq %rax, -0x70(%rbp)
callq 0x5190
movq -0xe0(%rbp), %rdi
movq %rax, -0x78(%rbp)
callq 0x5280
movq %rax, -0x80(%rbp)
movq -0x70(%rbp), %rdi
movq -0x78(%rbp), %rsi
movq -0x80(%rbp), %rdx
movq 0x31d63(%rip), %rcx     # 0x3ffc8
callq 0x7e00
movq %rax, -0xd8(%rbp)
jmp 0xe273
movq -0xd8(%rbp), %rax
movq %rax, -0x88(%rbp)
leaq 0x1fea3(%rip), %rsi     # 0x2e12b
leaq -0x68(%rbp), %rdi
callq 0x7f10
movb %al, -0xe1(%rbp)
jmp 0xe299
movb -0xe1(%rbp), %cl
xorl %eax, %eax
testb $0x1, %cl
movb %al, -0xe2(%rbp)
jne 0xe2ae
jmp 0xe2d4
leaq 0x2061c(%rip), %rsi     # 0x2e8d1
leaq -0x68(%rbp), %rdi
callq 0x7f10
movb %al, -0xe3(%rbp)
jmp 0xe2c6
movb -0xe3(%rbp), %al
movb %al, -0xe2(%rbp)
jmp 0xe2d4
movb -0xe2(%rbp), %al
testb $0x1, %al
jne 0xe187
leaq 0x1fe42(%rip), %rsi     # 0x2e12b
leaq -0x68(%rbp), %rdi
callq 0x8e10
movb %al, -0xe4(%rbp)
jmp 0xe2fa
movb -0xe4(%rbp), %al
testb $0x1, %al
jne 0xe306
jmp 0xe369
callq 0xe550
jmp 0xe30d
movq -0x8(%rbp), %rdi
movq %rdi, -0xf8(%rbp)
callq 0x22050
movq %rax, -0xf0(%rbp)
jmp 0xe326
movq -0xf0(%rbp), %rdi
callq 0x9030
movq %rax, -0x100(%rbp)
jmp 0xe33b
movq -0x100(%rbp), %rsi
movq -0xf8(%rbp), %rdi
callq 0x258b0
jmp 0xe350
jmp 0xe369
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x68(%rbp), %rdi
callq 0x55d0
jmp 0xe37b
leaq -0x68(%rbp), %rdi
callq 0x55d0
addq $0x100, %rsp            # imm = 0x100
popq %rbp
retq
movq -0x38(%rbp), %rdi
callq 0x5550
movq %rax, %rdi
callq 0x7fe0
nopl (%rax)