// File: /workspace/github_cpp_makefile_star2_O1/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 $0x198, %rsp            # imm = 0x198
movq %rdx, %r15
movq %rsi, %r14
movq %rdi, %rbx
movq 0xb8(%rsi), %rax
movq %rax, 0x110(%rsp)
movq 0xc0(%rsi), %rax
movq %rax, 0x118(%rsp)
testq %rax, %rax
je 0xf912
movq 0x166bc(%rip), %rcx     # 0x25fc0
cmpb $0x0, (%rcx)
je 0xf90e
incl 0x8(%rax)
jmp 0xf912
lock
incl 0x8(%rax)
leaq 0x150(%rsp), %r12
movq %r12, -0x10(%r12)
movq (%r15), %rsi
movq 0x8(%r15), %rdx
addq %rsi, %rdx
leaq 0x140(%rsp), %rdi
callq 0x7954
leaq 0xe0(%rsp), %rdi
leaq 0x110(%rsp), %rdx
leaq 0x140(%rsp), %rcx
movq %r14, %rsi
callq 0xebb4
movq 0x140(%rsp), %rdi
cmpq %r12, %rdi
je 0xf973
movq 0x150(%rsp), %rsi
incq %rsi
callq 0x5200
movq 0x118(%rsp), %rdi
testq %rdi, %rdi
je 0xf985
callq 0x78e4
leaq 0xc8(%rsp), %r13
movq %r13, -0x10(%r13)
leaq 0xd4b7(%rip), %rdx      # 0x1ce4f
leaq 0xb8(%rsp), %rdi
movq %rdx, %rsi
callq 0x7a9c
movq 0xe0(%rsp), %r12
testq %r12, %r12
je 0xfa01
movq %r12, %rdi
callq 0x1af0e
testb %al, %al
je 0xfa23
movq 0x8(%r14), %rax
subq (%r14), %rax
shrq $0x3, %rax
imull $0xaaaaaaab, %eax, %eax # imm = 0xAAAAAAAB
cmpl %eax, 0x108(%r14)
jne 0xfa7c
leaq 0x10(%rbx), %rax
movq %rax, (%rbx)
leaq 0xc92c(%rip), %rsi      # 0x1c319
leaq 0xc93e(%rip), %rdx      # 0x1c332
movq %rbx, %rdi
callq 0x7a9c
jmp 0x10c3d
leaq 0x10(%rbx), %rax
movq %rax, (%rbx)
leaq 0xd299(%rip), %rsi      # 0x1cca8
leaq 0xd2a7(%rip), %rdx      # 0x1ccbd
movq %rbx, %rdi
callq 0x7a9c
jmp 0x10c3d
movq %rbx, 0xd8(%rsp)
movq %rsp, %rdi
movq %r12, %rsi
callq 0x1ae4e
movq (%rsp), %rbx
movq 0x8(%rsp), %rdi
testq %rdi, %rdi
je 0xfa49
callq 0x78e4
testq %rbx, %rbx
je 0xfaf5
movq 0xd8(%rsp), %rbx
leaq 0x10(%rbx), %rax
movq %rax, (%rbx)
leaq 0xd282(%rip), %rsi      # 0x1ccea
leaq 0xd29a(%rip), %rdx      # 0x1cd09
movq %rbx, %rdi
callq 0x7a9c
jmp 0x10c3d
movq %r14, %rdi
callq 0xf6bc
movq %rbx, %r12
movl 0x108(%r14), %ebx
decl %ebx
movl %ebx, %ebp
negl %ebp
cmovsl %ebx, %ebp
movl $0x1, %r14d
cmpl $0xa, %ebp
jb 0xfbb3
movl $0x4, %r14d
movl $0xd1b71759, %eax       # imm = 0xD1B71759
movl %ebp, %ecx
cmpl $0x63, %ecx
jbe 0xfbaa
cmpl $0x3e7, %ecx            # imm = 0x3E7
jbe 0xfbb0
cmpl $0x2710, %ecx           # imm = 0x2710
jb 0xfbb3
movl %ecx, %edx
imulq %rax, %rdx
shrq $0x2d, %rdx
addl $0x4, %r14d
cmpl $0x1869f, %ecx          # imm = 0x1869F
movl %edx, %ecx
ja 0xfab3
addl $-0x3, %r14d
jmp 0xfbb3
movq %rsp, %rdi
movq %r12, %rsi
callq 0x1ae8e
movq (%rsp), %rbx
movq 0x8(%rsp), %rdi
testq %rdi, %rdi
je 0xfb13
callq 0x78e4
testq %rbx, %rbx
je 0xfb42
movq 0xd8(%rsp), %rbx
leaq 0x10(%rbx), %rax
movq %rax, (%rbx)
leaq 0xd1dc(%rip), %rsi      # 0x1cd0a
leaq 0xd1f5(%rip), %rdx      # 0x1cd2a
movq %rbx, %rdi
callq 0x7a9c
jmp 0x10c3d
movq %rsp, %rdi
movq %r12, %rsi
callq 0x1aece
movq (%rsp), %rbx
movq 0x8(%rsp), %rdi
testq %rdi, %rdi
je 0xfb60
callq 0x78e4
testq %rbx, %rbx
je 0x102c5
leaq 0x80(%rsp), %rdi
movq %r12, %rsi
callq 0x1aece
movq 0x80(%rsp), %rdi
testq %rdi, %rdi
je 0xfccf
leaq 0x15daf(%rip), %rsi     # 0x25940
leaq 0x15918(%rip), %rdx     # 0x254b0
xorl %ecx, %ecx
callq 0x5240
testq %rax, %rax
sete %bl
jmp 0xfcd1
addl $-0x2, %r14d
jmp 0xfbb3
decl %r14d
shrl $0x1f, %ebx
leal (%r14,%rbx), %esi
leaq 0x30(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x20(%rsp), %rdi
movl $0x2d, %edx
callq 0x5270
movl %ebx, %edi
leaq 0x20(%rsp), %r15
addq (%r15), %rdi
movl %r14d, %esi
movl %ebp, %edx
callq 0x781b
leaq 0xd0d1(%rip), %rcx      # 0x1ccbe
movl $0x6, %r8d
movq %r15, %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x5230
leaq 0x10(%rsp), %r14
movq %r14, -0x10(%r14)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
movq %r12, %rbx
je 0xfc28
movq %rdx, (%rsp)
movq (%rcx), %rdx
movq %rdx, 0x10(%rsp)
jmp 0xfc2f
movups (%rcx), %xmm0
movups %xmm0, (%r14)
movq 0x8(%rax), %rdx
movq %rsp, %rdi
movq %rdx, 0x8(%rdi)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0xd075(%rip), %rsi      # 0x1ccc5
callq 0x53d0
leaq 0x10(%rbx), %rdx
movq %rdx, (%rbx)
movq (%rax), %rsi
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rsi
je 0xfc77
movq %rsi, (%rbx)
movq (%rcx), %rdx
movq %rdx, 0x10(%rbx)
jmp 0xfc7d
movups (%rcx), %xmm0
movups %xmm0, (%rdx)
movq 0x8(%rax), %rdx
movq %rdx, 0x8(%rbx)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq (%rsp), %rdi
cmpq %r14, %rdi
je 0xfcaa
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x5200
movq 0x20(%rsp), %rdi
leaq 0x30(%rsp), %rax
cmpq %rax, %rdi
je 0x10c3d
movq 0x30(%rsp), %rsi
incq %rsi
callq 0x5200
jmp 0x10c3d
movb $0x1, %bl
testb %bl, %bl
je 0xfcd9
xorl %edi, %edi
jmp 0xfcfb
movq 0x88(%rsp), %rdi
testq %rdi, %rdi
je 0xfcfb
movq 0x162d3(%rip), %rax     # 0x25fc0
cmpb $0x0, (%rax)
je 0xfcf7
incl 0x8(%rdi)
jmp 0xfcfb
lock
incl 0x8(%rdi)
testq %rdi, %rdi
je 0xfd05
callq 0x78e4
testb %bl, %bl
je 0xfe06
movq 0xb8(%r14), %rsi
leaq 0x20(%rsp), %rdi
callq 0x1ae4e
movq %rsp, %r12
leaq 0x20(%rsp), %rsi
movq %r12, %rdi
callq 0x1607a
movq (%r12), %r12
movq 0xb8(%r14), %rsi
leaq 0x60(%rsp), %rdi
callq 0x1ae4e
leaq 0x40(%rsp), %r13
leaq 0x60(%rsp), %rsi
movq %r13, %rdi
callq 0x1607a
movq (%r13), %rdi
callq 0x192c0
movl %eax, %ebp
movq 0x80(%rsp), %rdi
callq 0x1892c
addl %ebp, %eax
movq %r12, %rdi
movl %eax, %esi
callq 0x192c4
movq 0x48(%rsp), %rdi
testq %rdi, %rdi
je 0xfd88
callq 0x78e4
movq 0x68(%rsp), %rdi
testq %rdi, %rdi
je 0xfd97
callq 0x78e4
movq 0x8(%rsp), %rdi
testq %rdi, %rdi
je 0xfda6
callq 0x78e4
movq 0x28(%rsp), %rdi
testq %rdi, %rdi
je 0xfdb5
callq 0x78e4
movq 0x80(%rsp), %rsi
leaq 0x60(%rsp), %rdi
callq 0x18930
leaq 0xcf5d(%rip), %rsi      # 0x1cd2b
leaq 0x60(%rsp), %rdi
callq 0x53d0
leaq 0x50(%rsp), %r13
movq %r13, -0x10(%r13)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0xff52
movq %rdx, 0x40(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x50(%rsp)
jmp 0xff5a
leaq 0x20(%rsp), %r12
leaq 0x80(%rsp), %rsi
movq %r12, %rdi
callq 0x1600f
movq (%r12), %rsi
movq %rsp, %rdi
callq 0x187b2
movq (%rsp), %rdi
callq 0x16c80
movl %eax, %ebp
movq 0x8(%rsp), %rdi
testq %rdi, %rdi
je 0xfe41
callq 0x78e4
movq 0x28(%rsp), %rdi
testq %rdi, %rdi
je 0xfe50
callq 0x78e4
testb %bpl, %bpl
jne 0x102b3
movq 0xb8(%r14), %rsi
leaq 0x20(%rsp), %rdi
callq 0x1ae4e
movq %rsp, %r12
leaq 0x20(%rsp), %rsi
movq %r12, %rdi
callq 0x1607a
movq (%r12), %r12
movq 0xb8(%r14), %rsi
leaq 0x60(%rsp), %rdi
callq 0x1ae4e
leaq 0x40(%rsp), %r13
leaq 0x60(%rsp), %rsi
movq %r13, %rdi
callq 0x1607a
movq (%r13), %rdi
callq 0x192c0
movl %eax, %ebp
movq 0x80(%rsp), %rdi
callq 0x1892c
addl %ebp, %eax
movq %r12, %rdi
movl %eax, %esi
callq 0x192c4
movq 0x48(%rsp), %rdi
testq %rdi, %rdi
je 0xfed4
callq 0x78e4
movq 0x68(%rsp), %rdi
testq %rdi, %rdi
je 0xfee3
callq 0x78e4
movq 0x8(%rsp), %rdi
testq %rdi, %rdi
je 0xfef2
callq 0x78e4
movq 0x28(%rsp), %rdi
testq %rdi, %rdi
je 0xff01
callq 0x78e4
movq 0x80(%rsp), %rsi
leaq 0x60(%rsp), %rdi
callq 0x18930
leaq 0xce11(%rip), %rsi      # 0x1cd2b
leaq 0x60(%rsp), %rdi
callq 0x53d0
leaq 0x50(%rsp), %r13
movq %r13, -0x10(%r13)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x100b9
movq %rdx, 0x40(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x50(%rsp)
jmp 0x100c1
movups (%rcx), %xmm0
movups %xmm0, (%r13)
movq 0x8(%rax), %rdx
movq %rdx, 0x48(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq 0x80(%rsp), %rdi
callq 0x1892c
leaq 0x98(%rsp), %rdi
movl %eax, %esi
callq 0x15f6d
leaq 0x20(%rsp), %rdi
leaq 0x40(%rsp), %rsi
leaq 0x98(%rsp), %rdx
callq 0x160e5
leaq 0xcd88(%rip), %rsi      # 0x1cd34
leaq 0x20(%rsp), %rdi
callq 0x53d0
leaq 0x10(%rsp), %rbx
movq %rbx, -0x10(%rbx)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0xffdc
movq %rdx, (%rsp)
movq (%rcx), %rdx
movq %rdx, 0x10(%rsp)
jmp 0xffe2
movups (%rcx), %xmm0
movups %xmm0, (%rbx)
movq 0x8(%rax), %rdx
movq %rsp, %r12
movq %rdx, 0x8(%r12)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0xb8(%rsp), %rdi
movq %r12, %rsi
callq 0x5280
movq (%r12), %rdi
cmpq %rbx, %rdi
je 0x10023
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x5200
leaq 0x30(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x1003e
movq 0x30(%rsp), %rsi
incq %rsi
callq 0x5200
leaq 0xa8(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x1005f
movq 0xa8(%rsp), %rsi
incq %rsi
callq 0x5200
movq 0x40(%rsp), %rdi
cmpq %r13, %rdi
je 0x10076
movq 0x50(%rsp), %rsi
incq %rsi
callq 0x5200
leaq 0x70(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x10091
movq 0x70(%rsp), %rsi
incq %rsi
callq 0x5200
movq 0xe0(%rsp), %rdi
xorps %xmm0, %xmm0
leaq 0x160(%rsp), %rsi
movaps %xmm0, (%rsi)
callq 0x1aefa
movq 0x168(%rsp), %rdi
jmp 0x102a9
movups (%rcx), %xmm0
movups %xmm0, (%r13)
movq 0x8(%rax), %rdx
movq %rdx, 0x48(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq 0x80(%rsp), %rdi
callq 0x1892c
leaq 0x98(%rsp), %rdi
movl %eax, %esi
callq 0x15f6d
leaq 0x20(%rsp), %rdi
leaq 0x40(%rsp), %rsi
leaq 0x98(%rsp), %rdx
callq 0x160e5
leaq 0xcc21(%rip), %rsi      # 0x1cd34
leaq 0x20(%rsp), %rdi
callq 0x53d0
leaq 0x10(%rsp), %rbx
movq %rbx, -0x10(%rbx)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x10143
movq %rdx, (%rsp)
movq (%rcx), %rdx
movq %rdx, 0x10(%rsp)
jmp 0x10149
movups (%rcx), %xmm0
movups %xmm0, (%rbx)
movq 0x8(%rax), %rdx
movq %rsp, %r12
movq %rdx, 0x8(%r12)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0xb8(%rsp), %rdi
movq %r12, %rsi
callq 0x5280
movq (%r12), %rdi
cmpq %rbx, %rdi
je 0x1018a
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x5200
leaq 0x30(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x101a5
movq 0x30(%rsp), %rsi
incq %rsi
callq 0x5200
leaq 0xa8(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x101c6
movq 0xa8(%rsp), %rsi
incq %rsi
callq 0x5200
movq 0x40(%rsp), %rdi
cmpq %r13, %rdi
je 0x101dd
movq 0x50(%rsp), %rsi
incq %rsi
callq 0x5200
leaq 0x70(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x101f8
movq 0x70(%rsp), %rsi
incq %rsi
callq 0x5200
movslq 0x108(%r14), %rax
movq 0x70(%r14), %rcx
leaq (%rax,%rax,2), %rax
movq -0x18(%rcx,%rax,8), %rbx
cmpq -0x10(%rcx,%rax,8), %rbx
je 0x10286
movq %rbx, %r12
negq %r12
movq (%rbx), %rsi
movq %rsp, %rdi
callq 0x1aece
movq (%rsp), %rbp
movq 0x8(%rsp), %rdi
movq 0x80(%rsp), %r13
testq %rdi, %rdi
je 0x1023f
callq 0x78e4
cmpq %r13, %rbp
je 0x10264
addq $0x10, %rbx
movslq 0x108(%r14), %rax
movq 0x70(%r14), %rcx
leaq (%rax,%rax,2), %rax
addq $-0x10, %r12
cmpq -0x10(%rcx,%rax,8), %rbx
jne 0x10219
jmp 0x10286
movslq 0x108(%r14), %rax
movq 0x70(%r14), %rcx
leaq (%rax,%rax,2), %rax
leaq (%rcx,%rax,8), %rdi
addq $-0x18, %rdi
negq %r12
movq %r12, %rsi
callq 0x16706
movq 0xe0(%rsp), %rdi
xorps %xmm0, %xmm0
leaq 0x170(%rsp), %rsi
movaps %xmm0, (%rsi)
callq 0x1aefa
movq 0x178(%rsp), %rdi
testq %rdi, %rdi
je 0x102b3
callq 0x78e4
movq 0x88(%rsp), %rdi
testq %rdi, %rdi
je 0x102c5
callq 0x78e4
movq 0xb8(%r14), %rsi
movq 0xe0(%rsp), %rcx
movq 0xe8(%rsp), %rax
movq %rcx, 0x100(%rsp)
movq %rax, 0x108(%rsp)
testq %rax, %rax
je 0x10306
movq 0x15cc8(%rip), %rcx     # 0x25fc0
cmpb $0x0, (%rcx)
je 0x10302
incl 0x8(%rax)
jmp 0x10306
lock
incl 0x8(%rax)
movq %rsp, %rdi
leaq 0x100(%rsp), %rdx
callq 0x1af20
movaps (%rsp), %xmm0
xorps %xmm1, %xmm1
movaps %xmm1, (%rsp)
movq 0xc0(%r14), %rdi
movups %xmm0, 0xb8(%r14)
testq %rdi, %rdi
je 0x1033a
callq 0x78e4
movq 0x8(%rsp), %rdi
testq %rdi, %rdi
je 0x10349
callq 0x78e4
movq 0x108(%rsp), %rdi
testq %rdi, %rdi
je 0x1035b
callq 0x78e4
movq 0xf8(%r14), %rsi
movq (%rsi), %rax
leaq 0x98(%rsp), %rdi
callq *(%rax)
leaq 0xc9cc(%rip), %rsi      # 0x1cd42
leaq 0x98(%rsp), %rdi
callq 0x53d0
leaq 0x70(%rsp), %rsi
movq %rsi, -0x10(%rsi)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x103aa
movq %rdx, 0x60(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x70(%rsp)
jmp 0x103b0
movups (%rcx), %xmm0
movups %xmm0, (%rsi)
movq 0x8(%rax), %rdx
leaq 0x60(%rsp), %rdi
movq %rdx, 0x8(%rdi)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq (%r15), %rsi
movq 0x8(%r15), %rdx
callq 0x50b0
leaq 0x50(%rsp), %rsi
movq %rsi, -0x10(%rsi)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x103ff
movq %rdx, 0x40(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x50(%rsp)
jmp 0x10405
movups (%rcx), %xmm0
movups %xmm0, (%rsi)
movq 0x8(%rax), %rdx
leaq 0x40(%rsp), %rdi
movq %rdx, 0x8(%rdi)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0xca25(%rip), %rsi      # 0x1ce4d
callq 0x53d0
leaq 0x30(%rsp), %r13
movq %r13, -0x10(%r13)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x10454
movq %rdx, 0x20(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x30(%rsp)
jmp 0x1045c
movups (%rcx), %xmm0
movups %xmm0, (%r13)
movq 0x8(%rax), %rdx
leaq 0x20(%rsp), %rdi
movq %rdx, 0x8(%rdi)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq 0xb8(%rsp), %rsi
movq 0xc0(%rsp), %rdx
callq 0x50b0
leaq 0x10(%rsp), %r12
movq %r12, -0x10(%r12)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x104b4
movq %rdx, (%rsp)
movq (%rcx), %rdx
movq %rdx, 0x10(%rsp)
jmp 0x104bc
movups (%rcx), %xmm0
movups %xmm0, (%r12)
movq 0x8(%rax), %rdx
movq %rsp, %r15
movq %rdx, 0x8(%r15)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0xb8(%rsp), %rdi
movq %r15, %rsi
callq 0x5280
movq (%r15), %rdi
cmpq %r12, %rdi
je 0x104fb
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x5200
movq 0x20(%rsp), %rdi
cmpq %r13, %rdi
leaq 0x70(%rsp), %rbx
je 0x10517
movq 0x30(%rsp), %rsi
incq %rsi
callq 0x5200
movq 0x40(%rsp), %rdi
leaq 0x50(%rsp), %rax
cmpq %rax, %rdi
je 0x10533
movq 0x50(%rsp), %rsi
incq %rsi
callq 0x5200
movq 0x60(%rsp), %rdi
cmpq %rbx, %rdi
je 0x1054a
movq 0x70(%rsp), %rsi
incq %rsi
callq 0x5200
leaq 0xa8(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x1056b
movq 0xa8(%rsp), %rsi
incq %rsi
callq 0x5200
xorps %xmm0, %xmm0
movaps %xmm0, 0x80(%rsp)
movq $0x0, 0x90(%rsp)
movq %rsp, %rdi
movq %r12, (%rdi)
leaq 0xbd72(%rip), %rsi      # 0x1c301
leaq 0xbd6d(%rip), %rdx      # 0x1c303
callq 0x7a9c
leaq 0x80(%rsp), %rdi
movq %rsp, %rsi
callq 0x1618e
movq (%rsp), %rdi
cmpq %r12, %rdi
je 0x105c1
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x5200
movq %rsp, %rdi
movq %r12, (%rdi)
leaq 0xbd39(%rip), %rsi      # 0x1c307
leaq 0xbd34(%rip), %rdx      # 0x1c309
callq 0x7a9c
leaq 0x80(%rsp), %rdi
movq %rsp, %rsi
callq 0x1618e
movq (%rsp), %rdi
cmpq %r12, %rdi
je 0x10600
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x5200
movq %rsp, %rdi
movq %r12, (%rdi)
leaq 0xbcf7(%rip), %rsi      # 0x1c304
leaq 0xbcf2(%rip), %rdx      # 0x1c306
callq 0x7a9c
leaq 0x80(%rsp), %rdi
movq %rsp, %rsi
callq 0x1618e
movq (%rsp), %rdi
cmpq %r12, %rdi
je 0x1063f
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x5200
movq %rsp, %rdi
movq %r12, (%rdi)
leaq 0xbcbe(%rip), %rsi      # 0x1c30a
leaq 0xbcb9(%rip), %rdx      # 0x1c30c
callq 0x7a9c
leaq 0x80(%rsp), %rdi
movq %rsp, %rsi
callq 0x1618e
movq (%rsp), %rdi
cmpq %r12, %rdi
je 0x1067e
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x5200
movq %rsp, %rdi
movq %r12, (%rdi)
leaq 0xbc82(%rip), %rsi      # 0x1c30d
leaq 0xbc7d(%rip), %rdx      # 0x1c30f
callq 0x7a9c
leaq 0x80(%rsp), %rdi
movq %rsp, %rsi
callq 0x1618e
movq (%rsp), %rdi
cmpq %r12, %rdi
je 0x106bd
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x5200
movq %rsp, %rdi
movq %r12, (%rdi)
leaq 0xbc46(%rip), %rsi      # 0x1c310
leaq 0xbc41(%rip), %rdx      # 0x1c312
callq 0x7a9c
leaq 0x80(%rsp), %rdi
movq %rsp, %rsi
callq 0x1618e
movq (%rsp), %rdi
cmpq %r12, %rdi
je 0x106fc
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x5200
movq %rsp, %rdi
movq %r12, (%rdi)
leaq 0xbc0a(%rip), %rsi      # 0x1c313
leaq 0xbc05(%rip), %rdx      # 0x1c315
callq 0x7a9c
leaq 0x80(%rsp), %rdi
movq %rsp, %rsi
callq 0x1618e
movq (%rsp), %rdi
cmpq %r12, %rdi
je 0x1073b
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x5200
movq %rsp, %rdi
movq %r12, (%rdi)
leaq 0xbbce(%rip), %rsi      # 0x1c316
leaq 0xbbc9(%rip), %rdx      # 0x1c318
callq 0x7a9c
leaq 0x80(%rsp), %rdi
movq %rsp, %rsi
callq 0x1618e
movq (%rsp), %rdi
cmpq %r12, %rdi
je 0x1077a
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x5200
movq 0x88(%rsp), %rax
subq 0x80(%rsp), %rax
shrq $0x5, %rax
testl %eax, %eax
jle 0x10bbc
movl $0x8, %r13d
xorl %ebx, %ebx
xorl %r15d, %r15d
movq 0xb8(%r14), %rax
movq %rax, 0xf0(%rsp)
movq 0xc0(%r14), %rax
movq %rax, 0xf8(%rsp)
testq %rax, %rax
leaq 0x120(%rsp), %r12
je 0x107e1
movq 0x157ed(%rip), %rcx     # 0x25fc0
cmpb $0x0, (%rcx)
je 0x107dd
incl 0x8(%rax)
jmp 0x107e1
lock
incl 0x8(%rax)
movq 0x80(%rsp), %rax
leaq 0x130(%rsp), %rcx
movq %rcx, 0x120(%rsp)
movq -0x8(%rax,%r13), %rsi
movq (%rax,%r13), %rdx
addq %rsi, %rdx
movq %r12, %rdi
callq 0x7954
movq %rsp, %rdi
movq %r14, %rsi
leaq 0xf0(%rsp), %rdx
movq %r12, %rcx
callq 0xebb4
movq (%rsp), %r12
movq 0x8(%rsp), %rbp
xorps %xmm0, %xmm0
movaps %xmm0, (%rsp)
testq %r15, %r15
je 0x10840
movq %r15, %rdi
callq 0x78e4
movq 0x8(%rsp), %rdi
testq %rdi, %rdi
je 0x1084f
callq 0x78e4
movq 0x120(%rsp), %rdi
leaq 0x130(%rsp), %rax
cmpq %rax, %rdi
je 0x10874
movq 0x130(%rsp), %rsi
incq %rsi
callq 0x5200
movq 0xf8(%rsp), %rdi
testq %rdi, %rdi
je 0x10886
callq 0x78e4
testq %r12, %r12
je 0x108aa
leaq 0x188(%rsp), %rdi
movq %r12, %rsi
callq 0x1ae8e
cmpq $0x0, 0x188(%rsp)
setne %r15b
jmp 0x108ad
xorl %r15d, %r15d
testq %r12, %r12
je 0x108c4
movq 0x190(%rsp), %rdi
testq %rdi, %rdi
je 0x108c4
callq 0x78e4
testb %r15b, %r15b
je 0x10b91
leaq 0x20(%rsp), %rdi
movq %r12, %rsi
callq 0x1ae8e
movq 0x20(%rsp), %rsi
movq %rsp, %rdi
callq 0x1a2d8
movq 0x28(%rsp), %rdi
testq %rdi, %rdi
leaq 0x70(%rsp), %r15
je 0x108fb
callq 0x78e4
movq 0xc8(%r14), %rdi
movq 0xd0(%r14), %rsi
movq %rsp, %rdx
callq 0x1679d
cmpq 0xd0(%r14), %rax
je 0x10963
movq 0xf8(%r14), %rsi
movq (%rsi), %rax
leaq 0x98(%rsp), %r12
movq %r12, %rdi
callq *(%rax)
movq %r12, %rdi
leaq 0xc40f(%rip), %rsi      # 0x1cd4a
callq 0x53d0
movq %r15, 0x60(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x109b5
movq %rdx, 0x60(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x70(%rsp)
jmp 0x109bc
movq 0xf8(%r14), %rsi
movq (%rsi), %rax
leaq 0x40(%rsp), %r15
movq %r15, %rdi
callq *(%rax)
movq %r15, %rdi
leaq 0xc3d2(%rip), %rsi      # 0x1cd53
callq 0x53d0
leaq 0x30(%rsp), %rsi
movq %rsi, 0x20(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x10b09
movq %rdx, 0x20(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x30(%rsp)
jmp 0x10b0f
movups (%rcx), %xmm0
movups %xmm0, (%r15)
movq 0x8(%rax), %rdx
movq %rdx, 0x68(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq (%rsp), %rsi
movq 0x8(%rsp), %rdx
leaq 0x60(%rsp), %rdi
callq 0x50b0
leaq 0x50(%rsp), %rsi
movq %rsi, 0x40(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x10a0f
movq %rdx, 0x40(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x50(%rsp)
jmp 0x10a15
movups (%rcx), %xmm0
movups %xmm0, (%rsi)
movq 0x8(%rax), %rdx
movq %rdx, 0x48(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0x40(%rsp), %rdi
leaq 0xc32a(%rip), %rsi      # 0x1cd63
callq 0x53d0
leaq 0x30(%rsp), %rsi
movq %rsi, 0x20(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x10a66
movq %rdx, 0x20(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x30(%rsp)
jmp 0x10a6c
movups (%rcx), %xmm0
movups %xmm0, (%rsi)
movq 0x8(%rax), %rdx
movq %rdx, 0x28(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq 0x20(%rsp), %rsi
movq 0x28(%rsp), %rdx
leaq 0xb8(%rsp), %rdi
callq 0x50b0
movq 0x20(%rsp), %rdi
leaq 0x30(%rsp), %rax
cmpq %rax, %rdi
je 0x10ab7
movq 0x30(%rsp), %rsi
incq %rsi
callq 0x5200
movq 0x40(%rsp), %rdi
leaq 0x50(%rsp), %rax
cmpq %rax, %rdi
je 0x10ad3
movq 0x50(%rsp), %rsi
incq %rsi
callq 0x5200
movq 0x60(%rsp), %rdi
cmpq %r15, %rdi
je 0x10aea
movq 0x70(%rsp), %rsi
incq %rsi
callq 0x5200
movq 0x98(%rsp), %rdi
leaq 0xa8(%rsp), %rax
cmpq %rax, %rdi
je 0x10b76
movq 0xa8(%rsp), %rsi
jmp 0x10b6e
movups (%rcx), %xmm0
movups %xmm0, (%rsi)
movq 0x8(%rax), %rdx
movq %rdx, 0x28(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq 0x20(%rsp), %rsi
movq 0x28(%rsp), %rdx
leaq 0xb8(%rsp), %rdi
callq 0x50b0
movq 0x20(%rsp), %rdi
leaq 0x30(%rsp), %rax
cmpq %rax, %rdi
je 0x10b5a
movq 0x30(%rsp), %rsi
incq %rsi
callq 0x5200
movq 0x40(%rsp), %rdi
leaq 0x50(%rsp), %rax
cmpq %rax, %rdi
je 0x10b76
movq 0x50(%rsp), %rsi
incq %rsi
callq 0x5200
movq (%rsp), %rdi
leaq 0x10(%rsp), %rax
cmpq %rax, %rdi
je 0x10b91
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x5200
incq %rbx
movq 0x88(%rsp), %rax
subq 0x80(%rsp), %rax
shrq $0x5, %rax
cltq
addq $0x20, %r13
movq %rbp, %r15
cmpq %rax, %rbx
jl 0x107a1
jmp 0x10bbe
xorl %ebp, %ebp
movq 0xd8(%rsp), %rbx
leaq 0x10(%rbx), %rax
movq %rax, (%rbx)
movq 0xb8(%rsp), %rcx
leaq 0xc8(%rsp), %r13
cmpq %r13, %rcx
je 0x10bf3
movq %rcx, (%rbx)
movq 0xc8(%rsp), %rax
movq %rax, 0x10(%rbx)
jmp 0x10bfb
movups (%r13), %xmm0
movups %xmm0, (%rax)
movq 0xc0(%rsp), %rax
movq %rax, 0x8(%rbx)
movq %r13, 0xb8(%rsp)
movq $0x0, 0xc0(%rsp)
movb $0x0, 0xc8(%rsp)
leaq 0x80(%rsp), %rdi
callq 0x7888
testq %rbp, %rbp
je 0x10c3d
movq %rbp, %rdi
callq 0x78e4
movq 0xb8(%rsp), %rdi
cmpq %r13, %rdi
je 0x10c5a
movq 0xc8(%rsp), %rsi
incq %rsi
callq 0x5200
movq 0xe8(%rsp), %rdi
testq %rdi, %rdi
je 0x10c6c
callq 0x78e4
movq %rbx, %rax
addq $0x198, %rsp            # imm = 0x198
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x10e80
movq %rax, %rbx
movq 0x178(%rsp), %rdi
jmp 0x10d95
jmp 0x10cb8
jmp 0x10cda
jmp 0x10d00
jmp 0x10e80
jmp 0x10d0c
jmp 0x10e80
movq %rax, %rbx
movq 0x168(%rsp), %rdi
jmp 0x10d95
movq %rax, %rbx
leaq 0x30(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x10cdd
movq 0x30(%rsp), %rsi
incq %rsi
callq 0x5200
jmp 0x10cdd
jmp 0x10d1d
movq %rax, %rbx
leaq 0xa8(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x10d20
movq 0xa8(%rsp), %rsi
incq %rsi
callq 0x5200
jmp 0x10d20
movq %rax, %rbx
jmp 0x10d37
jmp 0x10e80
jmp 0x10d0c
movq %rax, %rbx
jmp 0x10d81
movq %rax, %rbx
jmp 0x10d90
jmp 0x10e80
jmp 0x10d60
movq %rax, %rbx
movq 0x40(%rsp), %rdi
cmpq %r13, %rdi
je 0x10d37
movq 0x50(%rsp), %rsi
incq %rsi
callq 0x5200
leaq 0x70(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x10e83
movq 0x70(%rsp), %rsi
incq %rsi
callq 0x5200
jmp 0x10e83
jmp 0x1100c
movq %rax, %rbx
movq 0x48(%rsp), %rdi
testq %rdi, %rdi
je 0x10d72
callq 0x78e4
movq 0x68(%rsp), %rdi
testq %rdi, %rdi
je 0x10d81
callq 0x78e4
movq 0x8(%rsp), %rdi
testq %rdi, %rdi
je 0x10d90
callq 0x78e4
movq 0x28(%rsp), %rdi
testq %rdi, %rdi
je 0x10e83
callq 0x78e4
jmp 0x10e83
jmp 0x10dc4
jmp 0x10ddf
jmp 0x10dc4
jmp 0x10ddf
jmp 0x10dc4
jmp 0x10ddf
jmp 0x10dc4
jmp 0x10ddf
jmp 0x10dc4
jmp 0x10ddf
jmp 0x10dc4
jmp 0x10ddf
jmp 0x10dc4
jmp 0x10ddf
movq %rax, %rbx
movq (%rsp), %rdi
cmpq %r12, %rdi
je 0x10de2
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x5200
jmp 0x10de2
movq %rax, %rbx
xorl %ebp, %ebp
jmp 0x11053
movq %rax, %rbx
movq 0x20(%rsp), %rdi
cmpq %r13, %rdi
je 0x10e08
movq 0x30(%rsp), %rsi
incq %rsi
callq 0x5200
jmp 0x10e08
movq %rax, %rbx
movq 0x40(%rsp), %rdi
leaq 0x50(%rsp), %rax
cmpq %rax, %rdi
je 0x10e29
movq 0x50(%rsp), %rsi
incq %rsi
callq 0x5200
jmp 0x10e29
movq %rax, %rbx
movq 0x60(%rsp), %rdi
leaq 0x70(%rsp), %rax
cmpq %rax, %rdi
je 0x10e4a
movq 0x70(%rsp), %rsi
incq %rsi
callq 0x5200
jmp 0x10e4a
movq %rax, %rbx
leaq 0xa8(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x1106d
movq 0xa8(%rsp), %rsi
jmp 0x10ed9
jmp 0x1100c
movq %rax, %rbx
movq 0x108(%rsp), %rdi
jmp 0x10e8b
jmp 0x1100c
movq %rax, %rbx
movq 0x88(%rsp), %rdi
testq %rdi, %rdi
jne 0x11068
jmp 0x1106d
jmp 0x1100c
jmp 0x1100c
movq %rax, %rbx
movq (%rsp), %rdi
cmpq %r14, %rdi
je 0x10ec1
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x5200
jmp 0x10ec1
movq %rax, %rbx
movq 0x20(%rsp), %rdi
leaq 0x30(%rsp), %rax
cmpq %rax, %rdi
je 0x1106d
movq 0x30(%rsp), %rsi
incq %rsi
callq 0x5200
jmp 0x1106d
jmp 0x1100c
jmp 0x1100c
movq %rax, %rbx
movq 0x20(%rsp), %rdi
leaq 0x30(%rsp), %rax
cmpq %rax, %rdi
je 0x10f14
movq 0x30(%rsp), %rsi
incq %rsi
callq 0x5200
jmp 0x10f14
movq %rax, %rbx
movq 0x40(%rsp), %rdi
leaq 0x50(%rsp), %rax
cmpq %rax, %rdi
je 0x10fea
movq 0x50(%rsp), %rsi
jmp 0x10fc3
jmp 0x10fe7
jmp 0x1100c
movq %rax, %rbx
jmp 0x10f6e
movq %rax, %rbx
jmp 0x10f8a
movq %rax, %rbx
jmp 0x10fa6
jmp 0x10fe7
movq %rax, %rbx
movq 0x20(%rsp), %rdi
leaq 0x30(%rsp), %rax
cmpq %rax, %rdi
je 0x10f6e
movq 0x30(%rsp), %rsi
incq %rsi
callq 0x5200
movq 0x40(%rsp), %rdi
leaq 0x50(%rsp), %rax
cmpq %rax, %rdi
je 0x10f8a
movq 0x50(%rsp), %rsi
incq %rsi
callq 0x5200
movq 0x60(%rsp), %rdi
leaq 0x70(%rsp), %rax
cmpq %rax, %rdi
je 0x10fa6
movq 0x70(%rsp), %rsi
incq %rsi
callq 0x5200
movq 0x98(%rsp), %rdi
leaq 0xa8(%rsp), %rax
cmpq %rax, %rdi
je 0x10fea
movq 0xa8(%rsp), %rsi
incq %rsi
callq 0x5200
jmp 0x10fea
jmp 0x1100c
jmp 0x1100c
movq %rax, %rbx
movq 0x28(%rsp), %rdi
testq %rdi, %rdi
je 0x11053
callq 0x78e4
jmp 0x11053
jmp 0x11007
movq %rax, %rbx
movq (%rsp), %rdi
leaq 0x10(%rsp), %rax
cmpq %rax, %rdi
je 0x11053
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x5200
jmp 0x11053
movq %rax, %rbx
jmp 0x11053
movq %rax, %rbx
jmp 0x1106d
movq %rax, %rbx
jmp 0x1103e
movq %rax, %rbx
movq 0x120(%rsp), %rdi
leaq 0x130(%rsp), %rax
cmpq %rax, %rdi
je 0x1103e
movq 0x130(%rsp), %rsi
incq %rsi
callq 0x5200
movq 0xf8(%rsp), %rdi
testq %rdi, %rdi
je 0x11050
callq 0x78e4
movq %r15, %rbp
leaq 0x80(%rsp), %rdi
callq 0x7888
testq %rbp, %rbp
je 0x1106d
movq %rbp, %rdi
callq 0x78e4
movq 0xb8(%rsp), %rdi
leaq 0xc8(%rsp), %rax
cmpq %rax, %rdi
je 0x11092
movq 0xc8(%rsp), %rsi
incq %rsi
callq 0x5200
movq 0xe8(%rsp), %rdi
testq %rdi, %rdi
je 0x110a4
callq 0x78e4
movq %rbx, %rdi
callq 0x5390
movq %rax, %rbx
jmp 0x11092
movq %rax, %rbx
movq 0x140(%rsp), %rdi
cmpq %r12, %rdi
je 0x110d6
movq 0x150(%rsp), %rsi
incq %rsi
callq 0x5200
jmp 0x110d6
movq %rax, %rbx
movq 0x118(%rsp), %rdi
jmp 0x1109a