// File: /workspace/github_cpp_makefile_star2_O2/kaiming[P]Chamber-Crawler-3k/Board/board.cc
// Function: Board::movePlayer(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>)
std::string Board::movePlayer(std::string direction) {
    std::shared_ptr<WalkableTile> destination = validDest(player, direction);
    std::string message = "";

    // Check if valid destination
    if (destination == nullptr) {
        return "Invalid Move Target. ";
    }

    // Check if destination is exit
    if (destination->isExit()) {
        if (floorNum == static_cast<int>(floors.size())) {
            // Game completed
            return "Dungeon cleared. You win!";
        } else {
            // Proceed to next floor
            changeFloor();
            return "Floor " + std::to_string(floorNum - 1) + " cleared. Proceeding to next floor. ";
        }
        
    }

    // Check if destination is occupied by an enemy
    if (destination->getOccupant() != nullptr) {
        return "Target Tile occupied by Enemy. ";
    }

    // Check if destination is occupied by a potion
    if (destination->getPotion() != nullptr) {
        // DLC EXTENSION LOCATION: Change this behaviour if we want to make potions walk-over to use
        return "Target Tile occupied by Potion. ";
    }

    // Check if destination is occupied by gold
    if (destination->getGold() != nullptr) {
        
        // Get gold pointer
        std::shared_ptr<Gold> gold = destination->getGold();
        
        // Check if Dragon Hoard
        if (std::dynamic_pointer_cast<DragonHoard>(gold)) {
            // Check if dragon is dead
            if (std::dynamic_pointer_cast<DragonHoard>(gold)->getDragon()->getState() == false) {
                // Dragon is dead
                // Player picks up gold
                std::dynamic_pointer_cast<Player>(player->getOccupant())->setGold(std::dynamic_pointer_cast<Player>(player->getOccupant())->getGold() + gold->getSize());
                // Gold is consumed
                message = gold->getType() + ", value " + std::to_string(gold->getSize()) + ", picked up. ";

                // Remove from dragonHoards
                for (auto it = dragonHoards[floorNum-1].begin(); it != dragonHoards[floorNum-1].end(); it++) {
                    if ((*it)->getGold() == gold) {
                        dragonHoards[floorNum-1].erase(it);
                        break;
                    }
                }

                destination->setGold(nullptr); 
            }

            // Dragon is still alive; Else do nothing

        } else {
            // Player picks up gold
            std::dynamic_pointer_cast<Player>(player->getOccupant())->setGold(std::dynamic_pointer_cast<Player>(player->getOccupant())->getGold() + gold->getSize());
            // Gold is consumed
            message = gold->getType() + ", value " + std::to_string(gold->getSize()) + ", picked up. ";
            destination->setGold(nullptr); 
        }
    

    }

    // Move the Player
    player = player->move(destination);
    message = playerPtr->getRace() + " moved " + direction + ". " + message;

    // Potion detection
    // Check surrounding tiles for potions
    std::shared_ptr<WalkableTile> target = nullptr;
    std::vector<std::string> directions;
    directions.push_back("no");
    directions.push_back("ea");
    directions.push_back("so");
    directions.push_back("we");
    directions.push_back("ne");
    directions.push_back("nw");
    directions.push_back("se");
    directions.push_back("sw");

    for (int i = 0; i < static_cast<int>(directions.size()); i++) {
        // Check if the direction is a WalkableTile and has a potion
        target = validDest(player, directions[i]);
        if (target && target->getPotion()) {
            // Potion found 
            std::string type = target->getPotion()->getType();

            // Search to see if type is in potionsUsed
            if (std::find(potionsUsed.begin(), potionsUsed.end(), type) != potionsUsed.end()) {
                // Potion found
                message += playerPtr->getRace() + " sees a " + type + " potion. ";
            } else {
                // Potion not found
                message += playerPtr->getRace() + " sees an unknown potion. ";
            }
        }
    }

    // Exit not reached
    return message;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x1b8, %rsp            # imm = 0x1B8
movq %rdx, %r12
movq %rsi, %r14
movq %rdi, %r13
leaq 0xb8(%rsi), %rbx
leaq 0x120(%rsp), %rdi
movq %rbx, %rsi
callq 0x7500
leaq 0x128(%rsp), %r15
leaq 0x178(%rsp), %rdi
movq %r12, %rsi
callq 0x52b0
leaq 0xb0(%rsp), %rdi
leaq 0x120(%rsp), %rdx
leaq 0x178(%rsp), %rcx
movq %r14, %rsi
callq 0xdb38
leaq 0x178(%rsp), %rdi
callq 0x5100
leaq 0x128(%rsp), %rdi
callq 0x6c00
leaq 0xa9b1(%rip), %rsi      # 0x18e8f
leaq 0xe0(%rsp), %rdi
movq %rsp, %rdx
callq 0x67bc
movq 0xb0(%rsp), %rdi
testq %rdi, %rdi
je 0xe535
callq 0x17478
testb %al, %al
je 0xe54c
movl 0x108(%r14), %ecx
movq 0x8(%r14), %rax
subq (%r14), %rax
pushq $0x18
popq %rsi
cqto
idivq %rsi
cmpl %eax, %ecx
jne 0xe58b
leaq 0x9df4(%rip), %rsi      # 0x18319
movq %rsp, %rdx
movq %r13, %rdi
callq 0x67bc
jmp 0xef75
leaq 0xa7ac(%rip), %rsi      # 0x18ce8
movq %rsp, %rdx
movq %r13, %rdi
callq 0x67bc
jmp 0xef75
movq %rbx, 0x60(%rsp)
movq 0xb0(%rsp), %rsi
movq %rsp, %rdi
callq 0x17424
leaq 0x8(%rsp), %rdi
movq -0x8(%rdi), %rbx
callq 0x6c00
testq %rbx, %rbx
je 0xe5e3
leaq 0xa7af(%rip), %rsi      # 0x18d2a
movq %rsp, %rdx
movq %r13, %rdi
callq 0x67bc
jmp 0xef75
movq %r14, %rdi
callq 0xe324
movl 0x108(%r14), %esi
decl %esi
leaq 0x20(%rsp), %rdi
callq 0x680e
leaq 0xa751(%rip), %rsi      # 0x18cfe
movq %rsp, %rdi
leaq 0x20(%rsp), %rdx
callq 0x1241b
leaq 0xa744(%rip), %rdx      # 0x18d05
movq %rsp, %rsi
movq %r13, %rdi
callq 0x123fc
movq %rsp, %rdi
callq 0x5100
leaq 0x20(%rsp), %rdi
callq 0x5100
jmp 0xef75
movq 0xb0(%rsp), %rsi
movq %rsp, %rdi
callq 0x17440
leaq 0x8(%rsp), %rdi
movq -0x8(%rdi), %rbx
callq 0x6c00
testq %rbx, %rbx
je 0xe61d
leaq 0xa73d(%rip), %rsi      # 0x18d4a
movq %rsp, %rdx
movq %r13, %rdi
callq 0x67bc
jmp 0xef75
movq 0xb0(%rsp), %rsi
movq %rsp, %rdi
callq 0x1745c
leaq 0x8(%rsp), %rdi
movq -0x8(%rdi), %rbx
callq 0x6c00
testq %rbx, %rbx
movq 0x60(%rsp), %rbx
movq %r14, 0x68(%rsp)
movq %r13, 0x118(%rsp)
je 0xea6b
movq 0xb0(%rsp), %rsi
leaq 0x40(%rsp), %rdi
callq 0x1745c
movq %rsp, %rbx
leaq 0x40(%rsp), %rsi
movq %rbx, %rdi
callq 0x1243f
movq (%rbx), %rbx
leaq 0x8(%rsp), %rdi
callq 0x6c00
testq %rbx, %rbx
je 0xe899
leaq 0x20(%rsp), %rbx
leaq 0x40(%rsp), %rsi
movq %rbx, %rdi
callq 0x1243f
movq (%rbx), %rsi
movq %rsp, %rdi
callq 0x151f8
movq (%rsp), %rdi
callq 0x13640
movl %eax, %ebx
leaq 0x8(%rsp), %rdi
callq 0x6c00
leaq 0x28(%rsp), %rdi
callq 0x6c00
testb %bl, %bl
movq 0x60(%rsp), %rbx
jne 0xea61
movq (%rbx), %rsi
leaq 0x20(%rsp), %rdi
callq 0x17424
movq %rbx, %r15
movq %rsp, %rbx
leaq 0x20(%rsp), %rsi
movq %rbx, %rdi
callq 0x12494
movq (%rbx), %rbx
movq (%r15), %rsi
leaq 0x90(%rsp), %rdi
callq 0x17424
leaq 0x70(%rsp), %r15
leaq 0x90(%rsp), %rsi
movq %r15, %rdi
callq 0x12494
movq (%r15), %rdi
callq 0x15c44
movl %eax, %ebp
movq 0x40(%rsp), %rdi
callq 0x152ce
addl %ebp, %eax
movq %rbx, %rdi
movl %eax, %esi
callq 0x15c48
leaq 0x78(%rsp), %rdi
callq 0x6c00
leaq 0x98(%rsp), %rdi
callq 0x6c00
leaq 0x8(%rsp), %rdi
callq 0x6c00
leaq 0x28(%rsp), %rdi
callq 0x6c00
movq 0x40(%rsp), %rsi
leaq 0x90(%rsp), %rdi
callq 0x152d2
leaq 0xa5e8(%rip), %rdx      # 0x18d6b
leaq 0x70(%rsp), %rdi
leaq 0x90(%rsp), %rsi
callq 0x123fc
movq 0x60(%rsp), %rbx
movq 0x68(%rsp), %rbp
movq 0x40(%rsp), %rdi
callq 0x152ce
leaq 0xc0(%rsp), %rdi
movl %eax, %esi
callq 0x680e
leaq 0x20(%rsp), %rdi
leaq 0x70(%rsp), %rsi
leaq 0xc0(%rsp), %rdx
callq 0x124e9
leaq 0xa59e(%rip), %rdx      # 0x18d74
movq %rsp, %rdi
leaq 0x20(%rsp), %rsi
callq 0x123fc
leaq 0xe0(%rsp), %rdi
movq %rsp, %r15
movq %r15, %rsi
callq 0x5270
movq %r15, %r14
movq %r15, %rdi
callq 0x5100
leaq 0x20(%rsp), %rdi
callq 0x5100
leaq 0xc0(%rsp), %rdi
callq 0x5100
leaq 0x70(%rsp), %rdi
callq 0x5100
leaq 0x90(%rsp), %rdi
callq 0x5100
movslq 0x108(%rbp), %rax
movq 0x70(%rbp), %rcx
imulq $0x18, %rax, %rdx
movq -0x18(%rcx,%rdx), %r13
leaq 0x8(%rsp), %rbp
cltq
imulq $0x18, %rax, %rax
cmpq -0x10(%rcx,%rax), %r13
je 0xea39
movq (%r13), %rsi
movq %r14, %rdi
callq 0x1745c
movq (%rsp), %rbx
movq 0x40(%rsp), %r15
movq %rbp, %rdi
callq 0x6c00
cmpq %r15, %rbx
je 0xea10
addq $0x10, %r13
movq 0x68(%rsp), %rcx
movl 0x108(%rcx), %eax
movq 0x70(%rcx), %rcx
movq 0x60(%rsp), %rbx
jmp 0xe848
movq 0x60(%rsp), %r15
movq (%r15), %rsi
leaq 0x20(%rsp), %rdi
callq 0x17424
movq %rsp, %rbx
leaq 0x20(%rsp), %rsi
movq %rbx, %rdi
callq 0x12494
movq (%rbx), %rbx
movq (%r15), %rsi
leaq 0x90(%rsp), %rdi
callq 0x17424
leaq 0x70(%rsp), %r15
leaq 0x90(%rsp), %rsi
movq %r15, %rdi
callq 0x12494
movq (%r15), %rdi
callq 0x15c44
movl %eax, %ebp
movq 0x40(%rsp), %rdi
callq 0x152ce
addl %ebp, %eax
movq %rbx, %rdi
movl %eax, %esi
callq 0x15c48
leaq 0x78(%rsp), %rdi
callq 0x6c00
leaq 0x98(%rsp), %rdi
callq 0x6c00
leaq 0x8(%rsp), %rdi
callq 0x6c00
leaq 0x28(%rsp), %rdi
callq 0x6c00
movq 0x40(%rsp), %rsi
leaq 0x90(%rsp), %rdi
callq 0x152d2
leaq 0xa424(%rip), %rdx      # 0x18d6b
leaq 0x70(%rsp), %rdi
leaq 0x90(%rsp), %rsi
callq 0x123fc
movq 0x40(%rsp), %rdi
callq 0x152ce
leaq 0xc0(%rsp), %rdi
movl %eax, %esi
callq 0x680e
leaq 0x20(%rsp), %rdi
leaq 0x70(%rsp), %rsi
leaq 0xc0(%rsp), %rdx
callq 0x124e9
leaq 0xa3e4(%rip), %rdx      # 0x18d74
movq %rsp, %rdi
leaq 0x20(%rsp), %rsi
callq 0x123fc
leaq 0xe0(%rsp), %rdi
movq %rsp, %rbx
movq %rbx, %rsi
callq 0x5270
movq %rbx, %rdi
callq 0x5100
leaq 0x20(%rsp), %rdi
callq 0x5100
leaq 0xc0(%rsp), %rdi
callq 0x5100
leaq 0x70(%rsp), %rdi
callq 0x5100
leaq 0x90(%rsp), %rdi
callq 0x5100
movq 0xb0(%rsp), %rdi
xorps %xmm0, %xmm0
leaq 0x130(%rsp), %rsi
movaps %xmm0, (%rsi)
callq 0x1746e
leaq 0x138(%rsp), %rdi
movq 0x60(%rsp), %rbx
jmp 0xea5c
movq 0x68(%rsp), %rcx
movslq 0x108(%rcx), %rax
movq 0x70(%rcx), %rcx
imulq $0x18, %rax, %rax
leaq (%rcx,%rax), %rdi
addq $-0x18, %rdi
movq %r13, %rsi
callq 0x12550
movq 0x60(%rsp), %rbx
movq 0xb0(%rsp), %rdi
xorps %xmm0, %xmm0
leaq 0x140(%rsp), %rsi
movaps %xmm0, (%rsi)
callq 0x1746e
leaq 0x148(%rsp), %rdi
callq 0x6c00
leaq 0x48(%rsp), %rdi
callq 0x6c00
movq %rbx, %rbp
movq (%rbx), %rbx
leaq 0x168(%rsp), %r15
leaq 0xb0(%rsp), %rsi
movq %r15, %rdi
callq 0x7500
movq %rsp, %rdi
movq %rbx, %rsi
movq %r15, %rdx
callq 0x1748a
movq %rsp, %rsi
movq %rbp, %rdi
callq 0x12f92
leaq 0x8(%rsp), %rdi
callq 0x6c00
leaq 0x170(%rsp), %rdi
callq 0x6c00
movq 0x68(%rsp), %rax
movq 0xf8(%rax), %rsi
movq (%rsi), %rax
leaq 0xc0(%rsp), %rdi
callq *(%rax)
leaq 0xa2a9(%rip), %rdx      # 0x18d82
leaq 0x90(%rsp), %rdi
leaq 0xc0(%rsp), %rsi
callq 0x123fc
leaq 0x70(%rsp), %rdi
leaq 0x90(%rsp), %rsi
movq %r12, %rdx
callq 0x12555
leaq 0xa383(%rip), %rdx      # 0x18e8d
leaq 0x20(%rsp), %rdi
leaq 0x70(%rsp), %rsi
callq 0x123fc
movq %rsp, %rdi
leaq 0x20(%rsp), %rsi
leaq 0xe0(%rsp), %rdx
callq 0x12555
leaq 0xe0(%rsp), %rdi
movq %rsp, %rbx
movq %rbx, %rsi
callq 0x5270
movq %rbx, %rdi
callq 0x5100
leaq 0x20(%rsp), %rdi
callq 0x5100
leaq 0x70(%rsp), %rdi
callq 0x5100
leaq 0x90(%rsp), %rdi
callq 0x5100
leaq 0xc0(%rsp), %rdi
callq 0x5100
xorps %xmm0, %xmm0
movaps %xmm0, 0x100(%rsp)
movaps %xmm0, 0x40(%rsp)
andq $0x0, 0x50(%rsp)
leaq 0x976d(%rip), %rsi      # 0x18301
movq %rsp, %rdi
leaq 0x20(%rsp), %rdx
callq 0x67bc
leaq 0x40(%rsp), %rdi
movq %rsp, %rsi
callq 0x1269e
movq %rsp, %rdi
callq 0x5100
leaq 0x974a(%rip), %rsi      # 0x18307
movq %rsp, %rdi
leaq 0x20(%rsp), %rdx
callq 0x67bc
leaq 0x40(%rsp), %rdi
movq %rsp, %rsi
callq 0x1269e
movq %rsp, %rdi
callq 0x5100
leaq 0x971e(%rip), %rsi      # 0x18304
movq %rsp, %rdi
leaq 0x20(%rsp), %rdx
callq 0x67bc
leaq 0x40(%rsp), %rdi
movq %rsp, %rsi
callq 0x1269e
movq %rsp, %rdi
callq 0x5100
leaq 0x96fb(%rip), %rsi      # 0x1830a
movq %rsp, %rdi
leaq 0x20(%rsp), %rdx
callq 0x67bc
leaq 0x40(%rsp), %rdi
movq %rsp, %rsi
callq 0x1269e
movq %rsp, %rdi
callq 0x5100
leaq 0x96d5(%rip), %rsi      # 0x1830d
movq %rsp, %rdi
leaq 0x20(%rsp), %rdx
callq 0x67bc
leaq 0x40(%rsp), %rdi
movq %rsp, %rsi
callq 0x1269e
movq %rsp, %rdi
callq 0x5100
leaq 0x96af(%rip), %rsi      # 0x18310
movq %rsp, %rdi
leaq 0x20(%rsp), %rdx
callq 0x67bc
leaq 0x40(%rsp), %rdi
movq %rsp, %rsi
callq 0x1269e
movq %rsp, %rdi
callq 0x5100
leaq 0x9689(%rip), %rsi      # 0x18313
movq %rsp, %rdi
leaq 0x20(%rsp), %rdx
callq 0x67bc
leaq 0x40(%rsp), %rdi
movq %rsp, %rsi
callq 0x1269e
movq %rsp, %rdi
callq 0x5100
leaq 0x9663(%rip), %rsi      # 0x18316
movq %rsp, %rdi
leaq 0x20(%rsp), %rdx
callq 0x67bc
leaq 0x40(%rsp), %rdi
movq %rsp, %rsi
callq 0x1269e
movq %rsp, %r12
movq %r12, %rdi
callq 0x5100
movq $0x0, 0x110(%rsp)
leaq 0x198(%rsp), %r14
xorl %ebp, %ebp
movq 0x48(%rsp), %rax
subq 0x40(%rsp), %rax
shrq $0x5, %rax
cltq
cmpq %rax, %rbp
jge 0xef00
leaq 0x158(%rsp), %rbx
movq %rbx, %rdi
movq 0x60(%rsp), %rsi
callq 0x7500
movq 0x40(%rsp), %rsi
addq 0x110(%rsp), %rsi
movq %r14, %rdi
callq 0x52b0
movq %r12, %rdi
movq 0x68(%rsp), %rsi
movq %rbx, %rdx
movq %r14, %rcx
callq 0xdb38
leaq 0x100(%rsp), %rdi
movq %r12, %r15
movq %r12, %rsi
callq 0x12f92
leaq 0x8(%rsp), %rdi
callq 0x6c00
movq %r14, %rdi
callq 0x5100
leaq 0x160(%rsp), %rdi
callq 0x6c00
movq 0x100(%rsp), %rsi
testq %rsi, %rsi
je 0xeeec
movq %r14, %r13
movq %r15, %rdi
callq 0x17440
movq (%rsp), %rbx
leaq 0x8(%rsp), %rdi
callq 0x6c00
testq %rbx, %rbx
movq %r13, %r14
je 0xeeec
movq 0x100(%rsp), %rsi
leaq 0x20(%rsp), %rdi
callq 0x17440
movq 0x20(%rsp), %rsi
movq %r15, %r14
movq %r15, %rdi
callq 0x16bc0
leaq 0x28(%rsp), %rdi
callq 0x6c00
movq 0x68(%rsp), %rbx
movq 0xc8(%rbx), %rdi
movq 0xd0(%rbx), %rsi
movq %r14, %rdx
callq 0x12fc0
cmpq 0xd0(%rbx), %rax
je 0xee94
movq 0xf8(%rbx), %rsi
movq (%rsi), %rax
leaq 0xc0(%rsp), %rbx
movq %rbx, %rdi
callq *(%rax)
leaq 0x90(%rsp), %r12
movq %r12, %rdi
movq %rbx, %rsi
leaq 0x9f5e(%rip), %rdx      # 0x18d8a
callq 0x123fc
leaq 0x70(%rsp), %r14
movq %r14, %rdi
movq %r12, %rsi
movq %r15, %rdx
callq 0x12555
leaq 0x20(%rsp), %rbx
movq %rbx, %rdi
movq %r14, %rsi
leaq 0x9f4d(%rip), %rdx      # 0x18da3
callq 0x123fc
leaq 0xe0(%rsp), %rdi
movq %rbx, %rsi
callq 0x53e0
movq %rbx, %rdi
callq 0x5100
leaq 0x70(%rsp), %rdi
callq 0x5100
leaq 0x90(%rsp), %rdi
callq 0x5100
leaq 0xc0(%rsp), %rdi
jmp 0xeedc
movq 0xf8(%rbx), %rsi
movq (%rsi), %rax
leaq 0x70(%rsp), %r14
movq %r14, %rdi
callq *(%rax)
leaq 0x20(%rsp), %rbx
movq %rbx, %rdi
movq %r14, %rsi
leaq 0x9ed9(%rip), %rdx      # 0x18d93
callq 0x123fc
leaq 0xe0(%rsp), %rdi
movq %rbx, %rsi
callq 0x53e0
movq %rbx, %rdi
callq 0x5100
leaq 0x70(%rsp), %rdi
callq 0x5100
movq %r15, %rdi
callq 0x5100
movq %r13, %r14
incq %rbp
addq $0x20, 0x110(%rsp)
movq %r15, %r12
jmp 0xecee
movq 0x118(%rsp), %r13
leaq 0x10(%r13), %rcx
movq %rcx, (%r13)
leaq 0xf0(%rsp), %rax
movq -0x10(%rax), %rdx
cmpq %rax, %rdx
je 0xef33
movq %rdx, (%r13)
movq 0xf0(%rsp), %rcx
movq %rcx, 0x10(%r13)
jmp 0xef39
movups (%rax), %xmm0
movups %xmm0, (%rcx)
movq 0xe8(%rsp), %rcx
movq %rcx, 0x8(%r13)
movq %rax, 0xe0(%rsp)
andq $0x0, 0xe8(%rsp)
movb $0x0, 0xf0(%rsp)
leaq 0x40(%rsp), %rdi
callq 0x6bde
leaq 0x108(%rsp), %rdi
callq 0x6c00
leaq 0xe0(%rsp), %rdi
callq 0x5100
leaq 0xb8(%rsp), %rdi
callq 0x6c00
movq %r13, %rax
addq $0x1b8, %rsp            # imm = 0x1B8
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0xf123
movq %rax, %rbx
leaq 0x148(%rsp), %rdi
jmp 0xf068
jmp 0xefdb
jmp 0xefea
jmp 0xeffc
jmp 0xf123
jmp 0xf00f
jmp 0xf123
movq %rax, %rbx
leaq 0x138(%rsp), %rdi
jmp 0xf068
movq %rax, %rbx
leaq 0x20(%rsp), %rdi
callq 0x5100
jmp 0xefed
movq %rax, %rbx
leaq 0xc0(%rsp), %rdi
callq 0x5100
jmp 0xf01c
movq %rax, %rbx
jmp 0xf026
jmp 0xf123
jmp 0xf00f
jmp 0xf123
jmp 0xf019
movq %rax, %rbx
jmp 0xf059
movq %rax, %rbx
jmp 0xf063
movq %rax, %rbx
leaq 0x70(%rsp), %rdi
callq 0x5100
leaq 0x90(%rsp), %rdi
callq 0x5100
jmp 0xf126
jmp 0xf03f
jmp 0xf1d4
movq %rax, %rbx
leaq 0x78(%rsp), %rdi
callq 0x6c00
leaq 0x98(%rsp), %rdi
callq 0x6c00
leaq 0x8(%rsp), %rdi
callq 0x6c00
leaq 0x28(%rsp), %rdi
callq 0x6c00
jmp 0xf126
jmp 0xf1bb
jmp 0xf1d9
jmp 0xf1bb
jmp 0xf1d9
jmp 0xf1bb
jmp 0xf1d9
jmp 0xf1bb
jmp 0xf1d9
jmp 0xf1bb
jmp 0xf1d9
jmp 0xf1bb
jmp 0xf1d9
jmp 0xf1bb
jmp 0xf1d9
jmp 0xf1bb
jmp 0xf1d9
movq %rax, %rbx
leaq 0x20(%rsp), %rdi
callq 0x5100
jmp 0xf0d4
movq %rax, %rbx
leaq 0x70(%rsp), %rdi
callq 0x5100
jmp 0xf0e3
movq %rax, %rbx
leaq 0x90(%rsp), %rdi
callq 0x5100
jmp 0xf0f5
movq %rax, %rbx
leaq 0xc0(%rsp), %rdi
jmp 0xf145
jmp 0xf1d4
movq %rax, %rbx
leaq 0x170(%rsp), %rdi
jmp 0xf22e
jmp 0xf1d4
jmp 0xf1d4
jmp 0xf1d4
movq %rax, %rbx
leaq 0x48(%rsp), %rdi
jmp 0xf22e
movq %rax, %rbx
movq %rsp, %rdi
callq 0x5100
jmp 0xf140
movq %rax, %rbx
leaq 0x20(%rsp), %rdi
callq 0x5100
jmp 0xf233
jmp 0xf1d4
jmp 0xf1d4
jmp 0xf1d4
movq %rax, %rbx
leaq 0x20(%rsp), %rdi
callq 0x5100
jmp 0xf16a
movq %rax, %rbx
leaq 0x70(%rsp), %rdi
jmp 0xf1b2
jmp 0xf1bb
jmp 0xf1d4
movq %rax, %rbx
jmp 0xf1aa
movq %rax, %rbx
leaq 0x20(%rsp), %rdi
callq 0x5100
jmp 0xf18c
movq %rax, %rbx
leaq 0x70(%rsp), %rdi
callq 0x5100
jmp 0xf19d
jmp 0xf1bb
movq %rax, %rbx
leaq 0x90(%rsp), %rdi
callq 0x5100
leaq 0xc0(%rsp), %rdi
callq 0x5100
jmp 0xf1be
jmp 0xf1d4
movq %rax, %rbx
movq %rsp, %rdi
callq 0x5100
jmp 0xf21c
jmp 0xf1d9
movq %rax, %rbx
leaq 0x28(%rsp), %rdi
jmp 0xf217
movq %rax, %rbx
jmp 0xf233
movq %rax, %rbx
jmp 0xf21c
movq %rax, %rbx
jmp 0xf240
movq %rax, %rbx
leaq 0x178(%rsp), %rdi
callq 0x5100
jmp 0xf248
movq %rax, %rbx
jmp 0xf248
movq %rax, %rbx
jmp 0xf20f
movq %rax, %rbx
leaq 0x198(%rsp), %rdi
callq 0x5100
leaq 0x160(%rsp), %rdi
callq 0x6c00
leaq 0x40(%rsp), %rdi
callq 0x6bde
leaq 0x108(%rsp), %rdi
callq 0x6c00
leaq 0xe0(%rsp), %rdi
callq 0x5100
leaq 0xb8(%rsp), %r15
movq %r15, %rdi
callq 0x6c00
movq %rbx, %rdi
callq 0x5390