// File: /workspace/github_cpp_makefile_star2_O2/kaiming[P]Chamber-Crawler-3k/Board/board.cc
// Function: Board::moveEnemies[abi:cxx11]()
std::string Board::moveEnemies() {
    std::string message = "";
    
    // If enemies frozen, do nothing
    if (enemiesFrozen) {
        return "Enemies frozen. ";
    }

    // Iterate through enemies and dragons to execute their turn
    for (auto it = enemies[floorNum-1].begin(); it != enemies[floorNum-1].end(); ++it) {

        // Check if merchant
        if (std::dynamic_pointer_cast<Merchant>((*it)->getOccupant())) {
            
            // Check if merchants are hostile
            if (!merchantAgro) {
                // Not hostile, just move
                std::shared_ptr<WalkableTile> destination = 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");
                int i = 0;

                do {
                    // Exit case in event that no suitable location found
                    if (i > 80) {
                        destination = nullptr;
                        break;
                    } else {
                        i++;
                    }
                    
                    int rng = std::rand() % directions.size();

                    destination = validDest(*it, directions[rng]);

                } while (!destination || !isUnoccupied(destination)); 


                // Swap Merchant pointers
                if (destination != nullptr) {
                    (*it) = (*it)->move(destination);
                }

                // End Merchant turn
                continue;
            } // If agro, then check for attack
        }// Not a merchant

        // Check distance from player
        std::pair<int, int> p_coord = player->getCoord();
        std::pair<int, int> e_coord = (*it)->getCoord();

        double distance = std::floor(std::sqrt(std::pow((p_coord.first - e_coord.first), 2) + std::pow((p_coord.second - e_coord.second), 2)));

        // DLC EXTENSION HERE: add else if (distance < radius) -> move towards player

        if (distance == 1) {
            double ogHP = player->getOccupant()->getHP();

            // 1 tile away, attack player
            bool killed = std::dynamic_pointer_cast<Player>(player->getOccupant())->getAttacked(*(std::dynamic_pointer_cast<Enemy>((*it)->getOccupant())));
            std::stringstream dealt;
            dealt << std::fixed << std::setprecision(2) << ogHP - playerPtr->getHP();
            
            message += player->getOccupant()->getRace() + " attacked by " + std::dynamic_pointer_cast<Enemy>((*it)->getOccupant())->getRace() + " for " + dealt.str() + "HP. ";  
            
            if (killed) {
                // Player is dead, game is over
                return message += player->getOccupant()->getRace() + " was killed. Game Over!";
            }
        } else if (enemyTracking && distance <= radius) {
            // Player is within targeting distance

            // Determine direction to travel
            double x_direction = p_coord.first - e_coord.first;
            double y_direction = p_coord.second - e_coord.second;
            
            // Make the move
            std::shared_ptr<WalkableTile> destination = nullptr;
            std::vector<std::string> directions;

            if (x_direction > 0) {
                if (y_direction > 0) {
                    // pos x, pos y = se/ea/so
                    directions.push_back("se");
                    directions.push_back("ea");
                    directions.push_back("so");

                } else if (y_direction == 0) {
                    // pos x, zero y = ea/ne/se
                    directions.push_back("ea");
                    directions.push_back("ne");
                    directions.push_back("se");
                } else if (y_direction < 0) {
                    // pos x, neg y = ne/ea/ne
                    directions.push_back("ne");
                    directions.push_back("ea");
                    directions.push_back("ne");
                }

            } else if (x_direction == 0) {
                if (y_direction > 0) {
                    // zero x, pos y = so/se/sw
                    directions.push_back("so");
                    directions.push_back("se");
                    directions.push_back("sw");
                } else if (y_direction == 0) {
                    // zero x, zero y == enemy = player -> do nothing
                    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");
                } else if (y_direction < 0) {
                    // zero x, neg y = no/ne/nw
                    directions.push_back("no");
                    directions.push_back("ne");
                    directions.push_back("nw");
                }
            } else if (x_direction < 0) {
                if (y_direction > 0) {
                    // neg x, pos y = sw/we/so
                    directions.push_back("sw");
                    directions.push_back("we");
                    directions.push_back("so");
                } else if (y_direction == 0) {
                    // neg x, zero y = we/nw/sw
                    directions.push_back("we");
                    directions.push_back("nw");
                    directions.push_back("sw");
                } else if (y_direction < 0) {
                    // neg x, neg y = nw/we/no
                    directions.push_back("nw");
                    directions.push_back("we");
                    directions.push_back("no");
                }
            }

            int i = 0;

            do {
                // Exit case in event that no suitable location found
                if (i > 80) {
                    destination = nullptr;
                    break;
                } else {
                    i++;
                }

                int rng = std::rand() % directions.size();
                destination = validDest(*it, directions[rng]);
            } while (!destination || !isUnoccupied(destination) || destination->getRoom() > -1); 
            
            // Swap Enemy pointers
            if (destination != nullptr) {
                (*it) = (*it)->move(destination);
            }

        } else {
            // Too far away to attack, do a random move
            std::shared_ptr<WalkableTile> destination = 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");
            int i = 0;

            do {
                // Exit case in event that no suitable location found
                if (i > 80) {
                    break;
                } else {
                    i++;
                }
                
                int rng = std::rand() % directions.size();

                destination = validDest(*it, directions[rng]);

            } while (!destination || !isUnoccupied(destination)); 


            // Swap Enemy pointers
            if (destination != nullptr) {
                (*it) = (*it)->move(destination);
            }

        }

        // Print to Text Display here

    } // end of Enemies loop

    // Iterate through dragons to see if they attack the player
    for (auto it = dragonHoards[floorNum-1].begin(); it != dragonHoards[floorNum-1].end(); ++it) {

        // Check if associated dragon is still alive
        if (std::dynamic_pointer_cast<DragonHoard>((*it)->getGold())->getDragon()->getState() == false) {
            // Dragon is dead
            continue;
        }

        // Check dragon distance from player
        std::pair<int, int> pCoord = player->getCoord();
        std::pair<int, int> eCoord = std::dynamic_pointer_cast<DragonHoard>((*it)->getGold())->getDragonTile()->getCoord(); 

        double distance = std::floor(std::sqrt(std::pow((pCoord.first - eCoord.first), 2) + std::pow((pCoord.second - eCoord.second), 2))); 

        std::pair<int, int> hoardCoord = (*it)->getCoord();
        double hoardDistance = std::floor(std::sqrt(std::pow((pCoord.first - hoardCoord.first), 2) + std::pow((pCoord.second - hoardCoord.second), 2)));


        if (distance == 1 || hoardDistance == 1) {
            double ogHP = player->getOccupant()->getHP();
            std::stringstream dealt;
            dealt << std::fixed << std::setprecision(2) << ogHP - playerPtr->getHP();

            // 1 tile away from either the dragon or the dragon hoard, attack player
            bool killed = std::dynamic_pointer_cast<Player>(player->getOccupant())->getAttacked(*(std::dynamic_pointer_cast<Dragon>(std::static_pointer_cast<DragonHoard>((*it)->getGold())->getDragon())));
            message += player->getOccupant()->getRace() + " attacked by Dragon for "+ dealt.str() + "HP. "; 

            if (killed) {
                // Player is dead, game is over
                return message += player->getOccupant()->getRace() + " was killed. Game Over!";
            }
        }

        // DLC EXTENSION HERE: Make dragons roam around the hoard
        
        // Print to Text Display here
    } // end of Dragons loop

    // End of Enemies turn
    // Player is still alive
    return message;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x418, %rsp            # imm = 0x418
movq %rsi, %r15
movq %rdi, %rbx
leaq 0x8b37(%rip), %rsi      # 0x18e8f
leaq 0x80(%rsp), %rdi
leaq 0xd0(%rsp), %rdx
callq 0x67bc
cmpb $0x1, 0x10d(%r15)
movq %rbx, 0x78(%rsp)
jne 0x10398
leaq 0x8b22(%rip), %rsi      # 0x18ea5
leaq 0xd0(%rsp), %rdx
movq %rbx, %rdi
callq 0x67bc
jmp 0x119c7
movslq 0x108(%r15), %rax
movq 0x58(%r15), %rcx
imulq $0x18, %rax, %rdx
movq -0x18(%rcx,%rdx), %rbx
leaq 0x10(%rsp), %r14
leaq 0xd0(%rsp), %rbp
movq %r15, 0x70(%rsp)
movslq %eax, %rdx
imulq $0x18, %rdx, %rdx
cmpq -0x10(%rcx,%rdx), %rbx
je 0x11481
movq %rbx, 0x8(%rsp)
movq (%rbx), %rsi
movq %r14, %rdi
callq 0x17424
movq %rbp, %rdi
movq %r14, %rsi
callq 0x12574
movq 0xd0(%rsp), %rbx
leaq 0xd8(%rsp), %rdi
callq 0x6c00
leaq 0x18(%rsp), %rdi
callq 0x6c00
testq %rbx, %rbx
je 0x1041d
cmpb $0x0, 0x10c(%r15)
je 0x10755
movq 0xb8(%r15), %rdi
callq 0x173bc
movq %rax, %rbp
movq 0x8(%rsp), %rax
movq (%rax), %rdi
callq 0x173bc
movq %rax, %r12
movq %rbp, %r13
shrq $0x20, %rbp
movl %r12d, %r15d
shrq $0x20, %r12
movl %r13d, %ebx
subl %r15d, %ebx
cvtsi2sd %ebx, %xmm0
movl %ebp, %r14d
subl %r12d, %r14d
cvtsi2sd %r14d, %xmm1
mulsd %xmm0, %xmm0
mulsd %xmm1, %xmm1
addsd %xmm0, %xmm1
sqrtsd %xmm1, %xmm0
callq 0x5360
ucomisd 0x8084(%rip), %xmm0     # 0x18500
jne 0x10990
jp 0x10990
movq 0x70(%rsp), %r15
movq 0xb8(%r15), %rsi
leaq 0xd0(%rsp), %r12
movq %r12, %rdi
callq 0x17424
leaq 0x10(%rsp), %r14
movq 0xd0(%rsp), %rdi
callq 0x135da
movsd %xmm0, 0xa0(%rsp)
movq 0x8(%rsp), %rbx
leaq 0x50(%rsp), %rbp
leaq 0xd8(%rsp), %rdi
callq 0x6c00
movq 0xb8(%r15), %rsi
movq %r14, %rdi
callq 0x17424
movq %r12, %rdi
movq %r14, %rsi
callq 0x12494
movq 0xd0(%rsp), %r12
movq (%rbx), %rsi
movq %rbp, %rdi
callq 0x17424
leaq 0x30(%rsp), %rdi
movq %rbp, %rsi
callq 0x125c9
movq 0x30(%rsp), %rsi
movq (%r12), %rax
movq %r12, %rdi
callq *0x8(%rax)
movl %eax, %ebp
leaq 0x38(%rsp), %rdi
callq 0x6c00
leaq 0x58(%rsp), %rdi
callq 0x6c00
leaq 0xd8(%rsp), %rdi
callq 0x6c00
leaq 0x18(%rsp), %rdi
callq 0x6c00
leaq 0xd0(%rsp), %rdi
callq 0x5160
movq 0xe0(%rsp), %rax
movq -0x18(%rax), %rcx
movl 0xf8(%rsp,%rcx), %edx
movl $0xfffffefb, %esi       # imm = 0xFFFFFEFB
andl %esi, %edx
orl $0x4, %edx
movl %edx, 0xf8(%rsp,%rcx)
movq -0x18(%rax), %rax
movq $0x2, 0xe8(%rsp,%rax)
movq 0xf8(%r15), %rdi
callq 0x135da
movsd 0xa0(%rsp), %xmm1
subsd %xmm0, %xmm1
leaq 0xe0(%rsp), %rdi
movapd %xmm1, %xmm0
callq 0x5320
movq 0xb8(%r15), %rsi
leaq 0x2c0(%rsp), %rdi
callq 0x17424
movq 0x2c0(%rsp), %rsi
movq (%rsi), %rax
leaq 0x260(%rsp), %r12
movq %r12, %rdi
callq *(%rax)
leaq 0xb0(%rsp), %rdi
movq %r12, %rsi
leaq 0x88c1(%rip), %rdx      # 0x18eb6
callq 0x123fc
movq (%rbx), %rsi
leaq 0x320(%rsp), %r12
movq %r12, %rdi
callq 0x17424
leaq 0x2b0(%rsp), %rdi
movq %r12, %rsi
callq 0x125c9
movq 0x2b0(%rsp), %rsi
movq (%rsi), %rax
leaq 0x398(%rsp), %r12
movq %r12, %rdi
callq *(%rax)
leaq 0x280(%rsp), %r13
movq %r13, %rdi
leaq 0xb0(%rsp), %rsi
movq %r12, %rdx
callq 0x124e9
leaq 0x50(%rsp), %rdi
movq %r13, %rsi
leaq 0x8816(%rip), %rdx      # 0x18e75
callq 0x123fc
leaq 0x378(%rsp), %r13
movq %r13, %rdi
leaq 0xe8(%rsp), %rsi
callq 0x5300
leaq 0x30(%rsp), %r12
movq %r12, %rdi
leaq 0x50(%rsp), %rsi
movq %r13, %rdx
callq 0x124e9
movq %r14, %rdi
movq %r12, %rsi
leaq 0x8826(%rip), %rdx      # 0x18ec4
callq 0x123fc
leaq 0x80(%rsp), %rdi
movq %r14, %rsi
callq 0x53e0
movq %r14, %rdi
callq 0x5100
leaq 0x30(%rsp), %rdi
callq 0x5100
leaq 0x378(%rsp), %rdi
callq 0x5100
leaq 0x50(%rsp), %rdi
callq 0x5100
leaq 0x280(%rsp), %rdi
callq 0x5100
leaq 0x398(%rsp), %rdi
callq 0x5100
leaq 0x2b8(%rsp), %rdi
callq 0x6c00
leaq 0x328(%rsp), %rdi
callq 0x6c00
leaq 0xb0(%rsp), %rdi
callq 0x5100
leaq 0x260(%rsp), %rdi
callq 0x5100
leaq 0x2c8(%rsp), %rdi
callq 0x6c00
testb %bpl, %bpl
jne 0x118bb
leaq 0xd0(%rsp), %rbp
movq %rbp, %rdi
callq 0x5180
jmp 0x10d06
xorpd %xmm0, %xmm0
movapd %xmm0, 0x30(%rsp)
movapd %xmm0, 0x10(%rsp)
andq $0x0, 0x20(%rsp)
movq %rbp, %rdi
leaq 0x7b8c(%rip), %rsi      # 0x18301
leaq 0x50(%rsp), %rdx
callq 0x67bc
movq %r14, %rdi
movq %rbp, %rsi
callq 0x1269e
leaq 0x370(%rsp), %rbx
movq %rbp, %rdi
callq 0x5100
movq %rbp, %rdi
leaq 0x7b63(%rip), %rsi      # 0x18307
leaq 0x50(%rsp), %rdx
callq 0x67bc
movq %r14, %rdi
movq %rbp, %rsi
callq 0x1269e
movq %rbp, %rdi
callq 0x5100
movq %rbp, %rdi
leaq 0x7b39(%rip), %rsi      # 0x18304
leaq 0x50(%rsp), %rdx
callq 0x67bc
movq %r14, %rdi
movq %rbp, %rsi
callq 0x1269e
movq %rbp, %rdi
callq 0x5100
movq %rbp, %rdi
leaq 0x7b18(%rip), %rsi      # 0x1830a
leaq 0x50(%rsp), %rdx
callq 0x67bc
movq %r14, %rdi
movq %rbp, %rsi
callq 0x1269e
movq %rbp, %rdi
callq 0x5100
movq %rbp, %rdi
leaq 0x7af4(%rip), %rsi      # 0x1830d
leaq 0x50(%rsp), %rdx
callq 0x67bc
movq %r14, %rdi
movq %rbp, %rsi
callq 0x1269e
movq %rbp, %rdi
callq 0x5100
movq %rbp, %rdi
leaq 0x7ad0(%rip), %rsi      # 0x18310
leaq 0x50(%rsp), %rdx
callq 0x67bc
movq %r14, %rdi
movq %rbp, %rsi
callq 0x1269e
movq %rbp, %rdi
callq 0x5100
movq %rbp, %rdi
leaq 0x7aac(%rip), %rsi      # 0x18313
leaq 0x50(%rsp), %rdx
callq 0x67bc
movq %r14, %rdi
movq %rbp, %rsi
callq 0x1269e
movq %rbp, %rdi
callq 0x5100
movq %rbp, %rdi
leaq 0x7a88(%rip), %rsi      # 0x18316
leaq 0x50(%rsp), %rdx
callq 0x67bc
movq %r14, %rdi
movq %rbp, %rsi
callq 0x1269e
movq %rbp, %rdi
callq 0x5100
pushq $0x51
popq %r14
subl $0x1, %r14d
jb 0x10c6a
callq 0x5090
cltq
movq 0x18(%rsp), %rcx
subq 0x10(%rsp), %rcx
sarq $0x5, %rcx
xorl %edx, %edx
divq %rcx
movq %rdx, %r12
leaq 0x340(%rsp), %r13
movq %r13, %rdi
movq 0x8(%rsp), %rsi
callq 0x7500
movslq %r12d, %rsi
shlq $0x5, %rsi
addq 0x10(%rsp), %rsi
leaq 0x3f8(%rsp), %r12
movq %r12, %rdi
callq 0x52b0
movq %rbp, %rdi
movq %r15, %rsi
movq %r13, %rdx
movq %r12, %rcx
callq 0xdb38
leaq 0x30(%rsp), %rdi
movq %rbp, %rsi
callq 0x12f92
leaq 0xd8(%rsp), %rdi
callq 0x6c00
movq %r12, %rdi
callq 0x5100
leaq 0x348(%rsp), %rdi
callq 0x6c00
cmpq $0x0, 0x30(%rsp)
je 0x108af
leaq 0x368(%rsp), %r12
movq %r12, %rdi
leaq 0x30(%rsp), %rsi
callq 0x7500
movq %r12, %rsi
callq 0xe256
movl %eax, %ebp
movq %rbx, %rdi
callq 0x6c00
testb %bpl, %bpl
leaq 0xd0(%rsp), %rbp
je 0x108af
jmp 0x10c91
movq 0x70(%rsp), %rax
cmpb $0x1, 0xa8(%rax)
jne 0x109b5
movq 0x70(%rsp), %rax
cvtsi2sdl 0xac(%rax), %xmm1
ucomisd %xmm0, %xmm1
jae 0x10d1a
xorpd %xmm0, %xmm0
movapd %xmm0, 0x30(%rsp)
movapd %xmm0, 0x10(%rsp)
andq $0x0, 0x20(%rsp)
leaq 0xd0(%rsp), %rbp
movq %rbp, %rdi
leaq 0x7924(%rip), %rsi      # 0x18301
leaq 0x50(%rsp), %rdx
callq 0x67bc
leaq 0x10(%rsp), %r14
movq %r14, %rdi
movq %rbp, %rsi
callq 0x1269e
movq 0x70(%rsp), %r15
movq %rbp, %rdi
callq 0x5100
movq %rbp, %rdi
leaq 0x78f9(%rip), %rsi      # 0x18307
leaq 0x50(%rsp), %rdx
callq 0x67bc
movq %r14, %rdi
movq %rbp, %rsi
callq 0x1269e
movq %rbp, %rdi
callq 0x5100
movq %rbp, %rdi
leaq 0x78cf(%rip), %rsi      # 0x18304
leaq 0x50(%rsp), %rdx
callq 0x67bc
movq %r14, %rdi
movq %rbp, %rsi
callq 0x1269e
movq %rbp, %rdi
callq 0x5100
movq %rbp, %rdi
leaq 0x78ae(%rip), %rsi      # 0x1830a
leaq 0x50(%rsp), %rdx
callq 0x67bc
movq %r14, %rdi
movq %rbp, %rsi
callq 0x1269e
movq %rbp, %rdi
callq 0x5100
movq %rbp, %rdi
leaq 0x788a(%rip), %rsi      # 0x1830d
leaq 0x50(%rsp), %rdx
callq 0x67bc
movq %r14, %rdi
movq %rbp, %rsi
callq 0x1269e
movq %rbp, %rdi
callq 0x5100
movq %rbp, %rdi
leaq 0x7866(%rip), %rsi      # 0x18310
leaq 0x50(%rsp), %rdx
callq 0x67bc
movq %r14, %rdi
movq %rbp, %rsi
callq 0x1269e
movq %rbp, %rdi
callq 0x5100
movq %rbp, %rdi
leaq 0x7842(%rip), %rsi      # 0x18313
leaq 0x50(%rsp), %rdx
callq 0x67bc
movq %r14, %rdi
movq %rbp, %rsi
callq 0x1269e
movq %rbp, %rdi
callq 0x5100
movq %rbp, %rdi
leaq 0x781e(%rip), %rsi      # 0x18316
leaq 0x50(%rsp), %rdx
callq 0x67bc
movq %r14, %rdi
movq %rbp, %rsi
callq 0x1269e
movq %rbp, %rdi
callq 0x5100
xorl %r14d, %r14d
movq %r15, %rbx
callq 0x5090
cltq
movq 0x18(%rsp), %rcx
subq 0x10(%rsp), %rcx
sarq $0x5, %rcx
xorl %edx, %edx
divq %rcx
movq %rdx, %r12
leaq 0x2f0(%rsp), %r13
movq %r13, %rdi
movq 0x8(%rsp), %rsi
callq 0x7500
movslq %r12d, %rsi
shlq $0x5, %rsi
addq 0x10(%rsp), %rsi
leaq 0x3b8(%rsp), %r15
movq %r15, %rdi
callq 0x52b0
movq %rbp, %rdi
movq %rbx, %rsi
movq %r13, %rdx
movq %r15, %rcx
callq 0xdb38
leaq 0x30(%rsp), %r12
movq %r12, %rdi
movq %rbp, %rsi
callq 0x12f92
leaq 0xd8(%rsp), %rdi
callq 0x6c00
movq %r15, %rdi
callq 0x5100
leaq 0x2f8(%rsp), %rdi
callq 0x6c00
cmpq $0x0, 0x30(%rsp)
je 0x10be3
leaq 0x2e0(%rsp), %r15
movq %r15, %rdi
movq %r12, %rsi
callq 0x7500
movq %r15, %rsi
callq 0xe256
movl %eax, %ebp
movq %rbx, %r15
leaq 0x2e8(%rsp), %rdi
callq 0x6c00
jmp 0x10be8
xorl %ebp, %ebp
movq %rbx, %r15
testb %bpl, %bpl
leaq 0xd0(%rsp), %rbp
jne 0x10c06
leal 0x1(%r14), %eax
cmpl $0x50, %r14d
movl %eax, %r14d
jb 0x10b18
cmpq $0x0, 0x30(%rsp)
leaq 0x10(%rsp), %r14
movq 0x8(%rsp), %rbx
je 0x10cf4
movq (%rbx), %r12
movq %rbx, %r13
leaq 0x2d0(%rsp), %rbx
movq %rbx, %rdi
leaq 0x30(%rsp), %rsi
callq 0x7500
movq %rbp, %rdi
movq %r12, %rsi
movq %rbx, %rdx
callq 0x1748a
movq %r13, %rdi
movq %rbp, %rsi
callq 0x12f92
leaq 0xd8(%rsp), %rdi
callq 0x6c00
leaq 0x2d8(%rsp), %rdi
jmp 0x10cec
xorpd %xmm0, %xmm0
movapd %xmm0, 0xd0(%rsp)
leaq 0x30(%rsp), %rdi
movq %rbp, %rsi
callq 0x12f92
leaq 0xd8(%rsp), %rdi
callq 0x6c00
cmpq $0x0, 0x30(%rsp)
movq 0x8(%rsp), %rbx
leaq 0x10(%rsp), %r14
je 0x10cf4
movq (%rbx), %r12
movq %rbx, %r13
leaq 0x330(%rsp), %rbx
movq %rbx, %rdi
leaq 0x30(%rsp), %rsi
callq 0x7500
movq %rbp, %rdi
movq %r12, %rsi
movq %rbx, %rdx
callq 0x1748a
movq %r13, %rdi
movq %rbp, %rsi
callq 0x12f92
leaq 0xd8(%rsp), %rdi
callq 0x6c00
leaq 0x338(%rsp), %rdi
callq 0x6c00
movq %r13, %rbx
movq %r14, %rdi
callq 0x6bde
leaq 0x38(%rsp), %rdi
callq 0x6c00
addq $0x10, %rbx
movl 0x108(%r15), %eax
movq 0x58(%r15), %rcx
jmp 0x103be
xorpd %xmm0, %xmm0
movapd %xmm0, 0x30(%rsp)
movapd %xmm0, 0x10(%rsp)
andq $0x0, 0x20(%rsp)
testl %ebx, %ebx
jle 0x10dc9
testl %r14d, %r14d
jle 0x10e63
leaq 0xd0(%rsp), %r12
movq %r12, %rdi
leaq 0x75c0(%rip), %rsi      # 0x18313
leaq 0x50(%rsp), %rbp
movq %rbp, %rdx
callq 0x67bc
movq 0x70(%rsp), %r15
movq 0x8(%rsp), %rbx
leaq 0x10(%rsp), %r14
movq %r14, %rdi
movq %r12, %rsi
callq 0x1269e
movq %r12, %rdi
callq 0x5100
movq %r12, %rdi
leaq 0x757b(%rip), %rsi      # 0x18307
movq %rbp, %rdx
callq 0x67bc
movq %r14, %rdi
movq %r12, %rsi
callq 0x1269e
movq %r12, %rdi
callq 0x5100
movq %r12, %rdi
leaq 0x7553(%rip), %rsi      # 0x18304
movq %rbp, %rdx
callq 0x67bc
movq %r14, %rdi
movq %r12, %rsi
callq 0x1269e
jmp 0x112e5
cmpl %r15d, %r13d
jne 0x10ef4
testl %r14d, %r14d
movq 0x70(%rsp), %r15
jle 0x11014
leaq 0xd0(%rsp), %r12
movq %r12, %rdi
leaq 0x7512(%rip), %rsi      # 0x18304
leaq 0x50(%rsp), %rbp
movq %rbp, %rdx
callq 0x67bc
movq 0x8(%rsp), %rbx
leaq 0x10(%rsp), %r14
movq %r14, %rdi
movq %r12, %rsi
callq 0x1269e
movq %r12, %rdi
callq 0x5100
movq %r12, %rdi
leaq 0x74ed(%rip), %rsi      # 0x18313
movq %rbp, %rdx
callq 0x67bc
movq %r14, %rdi
movq %r12, %rsi
callq 0x1269e
movq %r12, %rdi
callq 0x5100
movq %r12, %rdi
leaq 0x74cb(%rip), %rsi      # 0x18316
movq %rbp, %rdx
callq 0x67bc
movq %r14, %rdi
movq %r12, %rsi
callq 0x1269e
jmp 0x112e5
cmpl %r12d, %ebp
movq 0x70(%rsp), %r15
movq 0x8(%rsp), %rbx
jne 0x10f8d
leaq 0xd0(%rsp), %r12
movq %r12, %rdi
leaq 0x747f(%rip), %rsi      # 0x18307
leaq 0x50(%rsp), %rbp
movq %rbp, %rdx
callq 0x67bc
leaq 0x10(%rsp), %r14
movq %r14, %rdi
movq %r12, %rsi
callq 0x1269e
movq %r12, %rdi
callq 0x5100
movq %r12, %rdi
leaq 0x7456(%rip), %rsi      # 0x1830d
movq %rbp, %rdx
callq 0x67bc
movq %r14, %rdi
movq %r12, %rsi
callq 0x1269e
movq %r12, %rdi
callq 0x5100
movq %r12, %rdi
leaq 0x7437(%rip), %rsi      # 0x18313
movq %rbp, %rdx
callq 0x67bc
movq %r14, %rdi
movq %r12, %rsi
callq 0x1269e
jmp 0x112e5
testl %ebx, %ebx
movq 0x70(%rsp), %r15
movq 0x8(%rsp), %rbx
jns 0x112ed
testl %r14d, %r14d
jle 0x111e0
leaq 0xd0(%rsp), %r12
movq %r12, %rdi
leaq 0x73f5(%rip), %rsi      # 0x18316
leaq 0x50(%rsp), %rbp
movq %rbp, %rdx
callq 0x67bc
leaq 0x10(%rsp), %r14
movq %r14, %rdi
movq %r12, %rsi
callq 0x1269e
movq %r12, %rdi
callq 0x5100
movq %r12, %rdi
leaq 0x73ba(%rip), %rsi      # 0x1830a
movq %rbp, %rdx
callq 0x67bc
movq %r14, %rdi
movq %r12, %rsi
callq 0x1269e
movq %r12, %rdi
callq 0x5100
movq %r12, %rdi
leaq 0x738f(%rip), %rsi      # 0x18304
movq %rbp, %rdx
callq 0x67bc
movq %r14, %rdi
movq %r12, %rsi
callq 0x1269e
jmp 0x112e5
testl %r14d, %r14d
jns 0x112ed
leaq 0xd0(%rsp), %r12
movq %r12, %rdi
leaq 0x7365(%rip), %rsi      # 0x1830d
leaq 0x50(%rsp), %rbp
movq %rbp, %rdx
callq 0x67bc
leaq 0x10(%rsp), %r14
movq %r14, %rdi
movq %r12, %rsi
callq 0x1269e
movq %r12, %rdi
callq 0x5100
movq %r12, %rdi
leaq 0x7330(%rip), %rsi      # 0x18307
movq %rbp, %rdx
callq 0x67bc
movq %r14, %rdi
movq %r12, %rsi
callq 0x1269e
movq %r12, %rdi
callq 0x5100
movq %r12, %rdi
leaq 0x7311(%rip), %rsi      # 0x1830d
movq %rbp, %rdx
callq 0x67bc
movq %r14, %rdi
movq %r12, %rsi
callq 0x1269e
jmp 0x112e5
cmpl %r12d, %ebp
movq 0x8(%rsp), %rbx
jne 0x11159
leaq 0xd0(%rsp), %r12
movq %r12, %rdi
leaq 0x72cd(%rip), %rsi      # 0x18301
leaq 0x50(%rsp), %rbp
movq %rbp, %rdx
callq 0x67bc
leaq 0x10(%rsp), %r14
movq %r14, %rdi
movq %r12, %rsi
callq 0x1269e
movq %r12, %rdi
callq 0x5100
movq %r12, %rdi
leaq 0x72a4(%rip), %rsi      # 0x18307
movq %rbp, %rdx
callq 0x67bc
movq %r14, %rdi
movq %r12, %rsi
callq 0x1269e
movq %r12, %rdi
callq 0x5100
movq %r12, %rdi
leaq 0x727c(%rip), %rsi      # 0x18304
movq %rbp, %rdx
callq 0x67bc
movq %r14, %rdi
movq %r12, %rsi
callq 0x1269e
movq %r12, %rdi
callq 0x5100
movq %r12, %rdi
leaq 0x725d(%rip), %rsi      # 0x1830a
movq %rbp, %rdx
callq 0x67bc
movq %r14, %rdi
movq %r12, %rsi
callq 0x1269e
movq %r12, %rdi
callq 0x5100
movq %r12, %rdi
leaq 0x723b(%rip), %rsi      # 0x1830d
movq %rbp, %rdx
callq 0x67bc
movq %r14, %rdi
movq %r12, %rsi
callq 0x1269e
movq %r12, %rdi
callq 0x5100
movq %r12, %rdi
leaq 0x7219(%rip), %rsi      # 0x18310
movq %rbp, %rdx
callq 0x67bc
movq %r14, %rdi
movq %r12, %rsi
callq 0x1269e
movq %r12, %rdi
callq 0x5100
movq %r12, %rdi
leaq 0x71f7(%rip), %rsi      # 0x18313
movq %rbp, %rdx
callq 0x67bc
movq %r14, %rdi
movq %r12, %rsi
callq 0x1269e
movq %r12, %rdi
callq 0x5100
movq %r12, %rdi
leaq 0x71d5(%rip), %rsi      # 0x18316
movq %rbp, %rdx
callq 0x67bc
movq %r14, %rdi
movq %r12, %rsi
callq 0x1269e
jmp 0x112e5
testl %r14d, %r14d
jns 0x112ed
leaq 0xd0(%rsp), %r12
movq %r12, %rdi
leaq 0x718d(%rip), %rsi      # 0x18301
leaq 0x50(%rsp), %rbp
movq %rbp, %rdx
callq 0x67bc
leaq 0x10(%rsp), %r14
movq %r14, %rdi
movq %r12, %rsi
callq 0x1269e
movq %r12, %rdi
callq 0x5100
movq %r12, %rdi
leaq 0x716a(%rip), %rsi      # 0x1830d
movq %rbp, %rdx
callq 0x67bc
movq %r14, %rdi
movq %r12, %rsi
callq 0x1269e
movq %r12, %rdi
callq 0x5100
movq %r12, %rdi
leaq 0x7148(%rip), %rsi      # 0x18310
movq %rbp, %rdx
callq 0x67bc
movq %r14, %rdi
movq %r12, %rsi
callq 0x1269e
jmp 0x112e5
cmpl %r12d, %ebp
jne 0x11263
leaq 0xd0(%rsp), %r12
movq %r12, %rdi
leaq 0x7113(%rip), %rsi      # 0x1830a
leaq 0x50(%rsp), %rbp
movq %rbp, %rdx
callq 0x67bc
leaq 0x10(%rsp), %r14
movq %r14, %rdi
movq %r12, %rsi
callq 0x1269e
movq %r12, %rdi
callq 0x5100
movq %r12, %rdi
leaq 0x70ea(%rip), %rsi      # 0x18310
movq %rbp, %rdx
callq 0x67bc
movq %r14, %rdi
movq %r12, %rsi
callq 0x1269e
movq %r12, %rdi
callq 0x5100
movq %r12, %rdi
leaq 0x70cb(%rip), %rsi      # 0x18316
movq %rbp, %rdx
callq 0x67bc
movq %r14, %rdi
movq %r12, %rsi
callq 0x1269e
jmp 0x112e5
testl %r14d, %r14d
jns 0x112ed
leaq 0xd0(%rsp), %r12
movq %r12, %rdi
leaq 0x7092(%rip), %rsi      # 0x18310
leaq 0x50(%rsp), %rbp
movq %rbp, %rdx
callq 0x67bc
leaq 0x10(%rsp), %r14
movq %r14, %rdi
movq %r12, %rsi
callq 0x1269e
movq %r12, %rdi
callq 0x5100
movq %r12, %rdi
leaq 0x705d(%rip), %rsi      # 0x1830a
movq %rbp, %rdx
callq 0x67bc
movq %r14, %rdi
movq %r12, %rsi
callq 0x1269e
movq %r12, %rdi
callq 0x5100
movq %r12, %rdi
leaq 0x702f(%rip), %rsi      # 0x18301
movq %rbp, %rdx
callq 0x67bc
movq %r14, %rdi
movq %r12, %rsi
callq 0x1269e
movq %r12, %rdi
callq 0x5100
pushq $0x51
popq %r14
leaq 0xd0(%rsp), %rbp
subl $0x1, %r14d
jb 0x113f9
callq 0x5090
cltq
movq 0x18(%rsp), %rcx
subq 0x10(%rsp), %rcx
sarq $0x5, %rcx
xorl %edx, %edx
divq %rcx
movq %rdx, %r12
leaq 0x310(%rsp), %r13
movq %r13, %rdi
movq %rbx, %rsi
callq 0x7500
movslq %r12d, %rsi
shlq $0x5, %rsi
addq 0x10(%rsp), %rsi
leaq 0x3d8(%rsp), %r12
movq %r12, %rdi
callq 0x52b0
movq %rbp, %rdi
movq %r15, %rsi
movq %r13, %rdx
movq %r12, %rcx
callq 0xdb38
leaq 0x30(%rsp), %rdi
movq %rbp, %rsi
callq 0x12f92
leaq 0xd8(%rsp), %rdi
callq 0x6c00
movq %r12, %rdi
callq 0x5100
leaq 0x318(%rsp), %rdi
callq 0x6c00
cmpq $0x0, 0x30(%rsp)
je 0x112f9
leaq 0x2a0(%rsp), %r12
movq %r12, %rdi
leaq 0x30(%rsp), %rsi
callq 0x7500
movq %r12, %rsi
callq 0xe256
testb %al, %al
je 0x113e7
movq 0x30(%rsp), %rdi
callq 0x17482
movl %eax, %ebp
leaq 0x2a8(%rsp), %rdi
callq 0x6c00
testl %ebp, %ebp
leaq 0xd0(%rsp), %rbp
jns 0x112f9
jmp 0x11420
leaq 0x2a8(%rsp), %rdi
callq 0x6c00
jmp 0x112f1
xorpd %xmm0, %xmm0
movapd %xmm0, 0xd0(%rsp)
leaq 0x30(%rsp), %rdi
movq %rbp, %rsi
callq 0x12f92
leaq 0xd8(%rsp), %rdi
callq 0x6c00
cmpq $0x0, 0x30(%rsp)
leaq 0x10(%rsp), %r14
je 0x10cf4
movq (%rbx), %r12
leaq 0x300(%rsp), %r13
movq %r13, %rdi
leaq 0x30(%rsp), %rsi
callq 0x7500
movq %rbp, %rdi
movq %r12, %rsi
movq %r13, %rdx
callq 0x1748a
movq %rbx, %rdi
movq %rbp, %rsi
callq 0x12f92
leaq 0xd8(%rsp), %rdi
callq 0x6c00
leaq 0x308(%rsp), %rdi
callq 0x6c00
jmp 0x10cf4
movq 0x70(%r15), %rcx
movq -0x18(%rcx,%rdx), %rbx
leaq 0x30(%rsp), %r14
leaq 0x10(%rsp), %rbp
leaq 0x260(%rsp), %r12
cltq
imulq $0x18, %rax, %rax
cmpq -0x10(%rcx,%rax), %rbx
je 0x1188d
movq (%rbx), %rsi
movq %r14, %rdi
callq 0x1745c
movq %rbx, 0x8(%rsp)
movq %rbp, %rdi
movq %r14, %rsi
callq 0x1243f
movq 0x10(%rsp), %rsi
leaq 0xd0(%rsp), %rdi
callq 0x151f8
movq 0xd0(%rsp), %rdi
callq 0x13640
movl %eax, %ebx
leaq 0xd8(%rsp), %rdi
callq 0x6c00
leaq 0x18(%rsp), %rdi
callq 0x6c00
leaq 0x38(%rsp), %rdi
callq 0x6c00
testb %bl, %bl
je 0x11874
movq 0xb8(%r15), %rdi
callq 0x173bc
movq %rax, %rbx
movq 0x8(%rsp), %rax
movq (%rax), %rsi
movq %r14, %rdi
callq 0x1745c
movq %rbp, %rdi
movq %r14, %rsi
callq 0x1243f
movq 0x10(%rsp), %rsi
leaq 0xd0(%rsp), %rdi
callq 0x1520a
movq 0xd0(%rsp), %rdi
callq 0x173bc
movq %rax, %rbp
leaq 0xd8(%rsp), %rdi
callq 0x6c00
leaq 0x18(%rsp), %rdi
callq 0x6c00
leaq 0x38(%rsp), %rdi
callq 0x6c00
movq 0x8(%rsp), %rax
movq (%rax), %rdi
callq 0x173bc
movq %rbx, %rcx
shrq $0x20, %rcx
movq %rbp, %xmm0
movq %rax, %xmm1
movdqa %xmm1, %xmm2
punpcklqdq %xmm0, %xmm2    # xmm2 = xmm2[0],xmm0[0]
punpckldq %xmm0, %xmm1    # xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1]
pshufd $0xed, %xmm2, %xmm0     # xmm0 = xmm2[1,3,2,3]
movd %ebx, %xmm2
pshufd $0x50, %xmm2, %xmm2     # xmm2 = xmm2[0,0,1,1]
psubd %xmm1, %xmm2
cvtdq2pd %xmm2, %xmm1
movd %ecx, %xmm2
pshufd $0x50, %xmm2, %xmm2     # xmm2 = xmm2[0,0,1,1]
psubd %xmm0, %xmm2
cvtdq2pd %xmm2, %xmm0
mulpd %xmm1, %xmm1
mulpd %xmm0, %xmm0
addpd %xmm1, %xmm0
sqrtpd %xmm0, %xmm0
movapd %xmm0, 0x350(%rsp)
callq 0x5360
movapd %xmm0, 0xa0(%rsp)
movapd 0x350(%rsp), %xmm0
unpckhpd %xmm0, %xmm0            # xmm0 = xmm0[1,1]
callq 0x5360
movapd 0xa0(%rsp), %xmm1
unpcklpd %xmm0, %xmm1            # xmm1 = xmm1[0],xmm0[0]
cmpeqpd 0x76a1(%rip), %xmm1     # 0x18cc0
movmskpd %xmm1, %eax
testl %eax, %eax
leaq 0x10(%rsp), %rbp
je 0x11874
movq 0xb8(%r15), %rsi
leaq 0xd0(%rsp), %rdi
callq 0x17424
movq 0xd0(%rsp), %rdi
callq 0x135da
movsd %xmm0, 0xa0(%rsp)
leaq 0xd8(%rsp), %rdi
callq 0x6c00
leaq 0xd0(%rsp), %rdi
callq 0x5160
movq 0xe0(%rsp), %rax
movq -0x18(%rax), %rcx
movl 0xf8(%rsp,%rcx), %edx
movl $0xfffffefb, %esi       # imm = 0xFFFFFEFB
andl %esi, %edx
orl $0x4, %edx
movl %edx, 0xf8(%rsp,%rcx)
movq -0x18(%rax), %rax
movq $0x2, 0xe8(%rsp,%rax)
movq 0xf8(%r15), %rdi
callq 0x135da
movsd 0xa0(%rsp), %xmm1
subsd %xmm0, %xmm1
leaq 0xe0(%rsp), %rdi
movapd %xmm1, %xmm0
callq 0x5320
movq 0xb8(%r15), %rsi
movq %r14, %rdi
callq 0x17424
movq %rbp, %rdi
movq %r14, %rbp
movq %r14, %rsi
callq 0x12494
movq 0x10(%rsp), %rbx
movq 0x8(%rsp), %rax
movq (%rax), %rsi
movq %r12, %r14
movq %r12, %rdi
callq 0x1745c
leaq 0xb0(%rsp), %rdi
movq %r14, %rsi
callq 0x12682
movq 0xb0(%rsp), %rsi
leaq 0x280(%rsp), %r14
movq %r14, %rdi
callq 0x151f8
leaq 0x50(%rsp), %rdi
movq %r14, %rsi
callq 0x12656
movq 0x50(%rsp), %rsi
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x8(%rax)
movl %eax, %ebx
movq %rbp, %r14
leaq 0x58(%rsp), %rdi
callq 0x6c00
leaq 0x288(%rsp), %rdi
callq 0x6c00
leaq 0xb8(%rsp), %rdi
callq 0x6c00
leaq 0x268(%rsp), %rdi
callq 0x6c00
leaq 0x18(%rsp), %rdi
callq 0x6c00
leaq 0x38(%rsp), %rdi
callq 0x6c00
movq 0xb8(%r15), %rsi
movq %r12, %rdi
callq 0x17424
leaq 0x10(%rsp), %rbp
movq 0x260(%rsp), %rsi
movq (%rsi), %rax
leaq 0x280(%rsp), %r13
movq %r13, %rdi
callq *(%rax)
leaq 0x50(%rsp), %rdi
movq %r13, %rsi
leaq 0x7712(%rip), %rdx      # 0x18ee1
callq 0x123fc
leaq 0xb0(%rsp), %r13
movq %r13, %rdi
leaq 0xe8(%rsp), %rsi
callq 0x5300
movq %r14, %rdi
leaq 0x50(%rsp), %rsi
movq %r13, %rdx
callq 0x124e9
movq %rbp, %rdi
movq %r14, %rsi
leaq 0x76bb(%rip), %rdx      # 0x18ec4
callq 0x123fc
leaq 0x80(%rsp), %rdi
movq %rbp, %rsi
callq 0x53e0
movq %rbp, %rdi
callq 0x5100
movq %r14, %rdi
callq 0x5100
leaq 0xb0(%rsp), %rdi
callq 0x5100
leaq 0x50(%rsp), %rdi
callq 0x5100
leaq 0x280(%rsp), %rdi
callq 0x5100
leaq 0x268(%rsp), %rdi
callq 0x6c00
testb %bl, %bl
jne 0x11947
leaq 0xd0(%rsp), %rdi
callq 0x5180
movq 0x8(%rsp), %rbx
addq $0x10, %rbx
movl 0x108(%r15), %eax
movq 0x70(%r15), %rcx
jmp 0x1149c
movq 0x78(%rsp), %rsi
leaq 0x10(%rsi), %rcx
movq %rcx, (%rsi)
leaq 0x90(%rsp), %rax
movq -0x10(%rax), %rdx
cmpq %rax, %rdx
je 0x11915
movq %rdx, (%rsi)
movq 0x90(%rsp), %rcx
movq %rcx, 0x10(%rsi)
jmp 0x1191d
movq 0xb8(%r15), %rsi
leaq 0x50(%rsp), %rdi
callq 0x17424
movq 0x50(%rsp), %rsi
movq (%rsi), %rax
leaq 0x30(%rsp), %rdi
callq *(%rax)
leaq 0x75e7(%rip), %rdx      # 0x18ec9
leaq 0x10(%rsp), %rdi
leaq 0x30(%rsp), %rsi
callq 0x123fc
leaq 0x80(%rsp), %rdi
leaq 0x10(%rsp), %rsi
callq 0x53e0
movq 0x78(%rsp), %rdi
movq %rax, %rsi
callq 0x52b0
jmp 0x1199c
movupd (%rax), %xmm0
movupd %xmm0, (%rcx)
movq 0x88(%rsp), %rcx
movq %rcx, 0x8(%rsi)
movq %rax, 0x80(%rsp)
andq $0x0, 0x88(%rsp)
movb $0x0, 0x90(%rsp)
jmp 0x119c7
movq 0xb8(%r15), %rsi
leaq 0x50(%rsp), %rdi
callq 0x17424
movq 0x50(%rsp), %rsi
movq (%rsi), %rax
leaq 0x30(%rsp), %rdi
callq *(%rax)
leaq 0x755b(%rip), %rdx      # 0x18ec9
leaq 0x10(%rsp), %rdi
leaq 0x30(%rsp), %rsi
callq 0x123fc
leaq 0x80(%rsp), %rdi
leaq 0x10(%rsp), %rsi
callq 0x53e0
movq 0x78(%rsp), %rdi
movq %rax, %rsi
callq 0x52b0
leaq 0x10(%rsp), %rdi
callq 0x5100
leaq 0x30(%rsp), %rdi
callq 0x5100
leaq 0x58(%rsp), %rdi
callq 0x6c00
leaq 0xd0(%rsp), %rdi
callq 0x5180
leaq 0x80(%rsp), %rdi
callq 0x5100
movq 0x78(%rsp), %rax
addq $0x418, %rsp            # imm = 0x418
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x11ccb
jmp 0x11cdb
jmp 0x11ccb
jmp 0x11cdb
jmp 0x11cdb
jmp 0x11ccb
jmp 0x11cdb
jmp 0x11cdb
jmp 0x11ccb
jmp 0x11ccb
jmp 0x11cdb
jmp 0x11ccb
jmp 0x11ccb
jmp 0x11cdb
jmp 0x11cdb
jmp 0x11cdb
jmp 0x11ccb
jmp 0x11ccb
jmp 0x11cdb
jmp 0x11ccb
jmp 0x11cdb
jmp 0x11ccb
jmp 0x11cdb
jmp 0x11cdb
jmp 0x11cdb
jmp 0x11ccb
jmp 0x11ccb
jmp 0x11ccb
jmp 0x11cdb
jmp 0x11ccb
jmp 0x11cdb
jmp 0x11ccb
jmp 0x11cdb
jmp 0x11ccb
jmp 0x11cdb
jmp 0x11cdb
jmp 0x11ccb
jmp 0x11cdb
jmp 0x11ccb
jmp 0x11ccb
jmp 0x11cdb
jmp 0x11ccb
jmp 0x11cdb
jmp 0x11cdb
jmp 0x11ccb
jmp 0x11ccb
jmp 0x11b18
jmp 0x11b1d
jmp 0x11e56
jmp 0x11cdb
jmp 0x11cdb
jmp 0x11cdb
jmp 0x11ccb
jmp 0x11ccb
jmp 0x11cdb
jmp 0x11cdb
jmp 0x11cdb
jmp 0x11ccb
jmp 0x11ccb
jmp 0x11ccb
jmp 0x11ccb
jmp 0x11b45
movq %rax, %r15
jmp 0x11b52
movq %rax, %r15
jmp 0x11b5c
jmp 0x11e56
jmp 0x11cdb
jmp 0x11ccb
jmp 0x11cdb
jmp 0x11ccb
jmp 0x11cdb
jmp 0x11ccb
movq %rax, %r15
leaq 0x10(%rsp), %rdi
callq 0x5100
leaq 0x30(%rsp), %rdi
callq 0x5100
leaq 0x58(%rsp), %rdi
jmp 0x11e1b
movq %rax, %r15
leaq 0x308(%rsp), %rdi
jmp 0x11ef0
jmp 0x11e6b
movq %rax, %r15
leaq 0x2d8(%rsp), %rdi
jmp 0x11ef0
jmp 0x11ccb
jmp 0x11ccb
jmp 0x11ccb
jmp 0x11ccb
jmp 0x11cdb
jmp 0x11cdb
jmp 0x11cdb
jmp 0x11ccb
jmp 0x11cdb
jmp 0x11ccb
jmp 0x11ccb
jmp 0x11cdb
jmp 0x11cdb
jmp 0x11cdb
jmp 0x11ccb
jmp 0x11cdb
movq %rax, %r15
leaq 0x338(%rsp), %rdi
jmp 0x11ef0
jmp 0x11e6b
movq %rax, %r15
leaq 0x10(%rsp), %rdi
callq 0x5100
jmp 0x11c07
jmp 0x11d30
movq %rax, %r15
leaq 0x30(%rsp), %rdi
callq 0x5100
jmp 0x11c1b
jmp 0x11e6b
movq %rax, %r15
leaq 0xb0(%rsp), %rdi
callq 0x5100
jmp 0x11c2d
movq %rax, %r15
leaq 0x50(%rsp), %rdi
callq 0x5100
jmp 0x11c3c
movq %rax, %r15
leaq 0x280(%rsp), %rdi
callq 0x5100
leaq 0x268(%rsp), %rdi
jmp 0x11e1b
movq %rax, %r15
jmp 0x11c49
jmp 0x11e56
movq %rax, %r15
leaq 0x58(%rsp), %rdi
callq 0x6c00
leaq 0x288(%rsp), %rdi
callq 0x6c00
jmp 0x11c7f
movq %rax, %r15
leaq 0xb8(%rsp), %rdi
callq 0x6c00
leaq 0x268(%rsp), %rdi
callq 0x6c00
jmp 0x11c9e
movq %rax, %r15
leaq 0x18(%rsp), %rdi
callq 0x6c00
leaq 0x38(%rsp), %rdi
jmp 0x11e1b
jmp 0x11e56
jmp 0x11ccb
jmp 0x11cdb
jmp 0x11cdb
jmp 0x11ccb
jmp 0x11ccb
jmp 0x11ccb
jmp 0x11ccb
jmp 0x11cdb
jmp 0x11ccb
jmp 0x11ccb
movq %rax, %r15
jmp 0x11ef5
jmp 0x11cdb
jmp 0x11cdb
jmp 0x11cdb
jmp 0x11cdb
movq %rax, %r15
leaq 0xd0(%rsp), %rdi
callq 0x5100
jmp 0x11ef5
jmp 0x11e6b
jmp 0x11e6b
jmp 0x11e6b
jmp 0x11e56
jmp 0x11e30
jmp 0x11e42
movq %rax, %r15
jmp 0x11dc5
movq %rax, %r15
jmp 0x11dbb
jmp 0x11e6b
movq %rax, %r15
jmp 0x11dae
jmp 0x11e6b
movq %rax, %r15
leaq 0xd8(%rsp), %rdi
jmp 0x11f04
jmp 0x11e6b
jmp 0x11e56
movq %rax, %r15
jmp 0x11df9
movq %rax, %r15
jmp 0x11dd2
movq %rax, %r15
jmp 0x11ddf
movq %rax, %r15
jmp 0x11da4
movq %rax, %r15
jmp 0x11d80
movq %rax, %r15
leaq 0x38(%rsp), %rdi
callq 0x6c00
leaq 0x58(%rsp), %rdi
callq 0x6c00
leaq 0xd8(%rsp), %rdi
callq 0x6c00
leaq 0x18(%rsp), %rdi
jmp 0x11f04
movq %rax, %r15
leaq 0x10(%rsp), %rdi
callq 0x5100
leaq 0x30(%rsp), %rdi
callq 0x5100
leaq 0x378(%rsp), %rdi
callq 0x5100
leaq 0x50(%rsp), %rdi
callq 0x5100
leaq 0x280(%rsp), %rdi
callq 0x5100
leaq 0x398(%rsp), %rdi
callq 0x5100
leaq 0x2b8(%rsp), %rdi
callq 0x6c00
leaq 0x328(%rsp), %rdi
callq 0x6c00
leaq 0xb0(%rsp), %rdi
callq 0x5100
leaq 0x260(%rsp), %rdi
callq 0x5100
leaq 0x2c8(%rsp), %rdi
callq 0x6c00
jmp 0x11e59
movq %rax, %r15
jmp 0x11e13
movq %rax, %r15
jmp 0x11e06
jmp 0x11e6b
jmp 0x11e6b
movq %rax, %r15
leaq 0xd8(%rsp), %rdi
callq 0x6c00
jmp 0x11e45
movq %rax, %r15
leaq 0x18(%rsp), %rdi
callq 0x6c00
jmp 0x11eff
jmp 0x11e6b
movq %rax, %r15
leaq 0xd0(%rsp), %rdi
callq 0x5180
jmp 0x11f09
movq %rax, %r15
jmp 0x11f09
movq %rax, %r15
leaq 0x2a8(%rsp), %rdi
jmp 0x11ef0
movq %rax, %r15
jmp 0x11e95
movq %rax, %r15
leaq 0x3d8(%rsp), %rdi
callq 0x5100
leaq 0x318(%rsp), %rdi
jmp 0x11ef0
movq %rax, %r15
movq %rbx, %rdi
jmp 0x11ef0
movq %rax, %r15
leaq 0x2e8(%rsp), %rdi
jmp 0x11ef0
movq %rax, %r15
jmp 0x11ec9
movq %rax, %r15
leaq 0x3f8(%rsp), %rdi
callq 0x5100
leaq 0x348(%rsp), %rdi
jmp 0x11ef0
movq %rax, %r15
jmp 0x11ee8
movq %rax, %r15
leaq 0x3b8(%rsp), %rdi
callq 0x5100
leaq 0x2f8(%rsp), %rdi
callq 0x6c00
leaq 0x10(%rsp), %rdi
callq 0x6bde
leaq 0x38(%rsp), %rdi
callq 0x6c00
leaq 0x80(%rsp), %rdi
callq 0x5100
movq %r15, %rdi
callq 0x5390