// File: /workspace/github_cpp_makefile_star2_O3/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 $0x3f8, %rsp            # imm = 0x3F8
movq %rsi, %rbp
movq %rdi, %rbx
leaq 0x80(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x972d(%rip), %rdx      # 0x1be8f
leaq 0x70(%rsp), %rdi
movq %rdx, %rsi
callq 0x79f2
cmpb $0x1, 0x10d(%rbp)
movq %rbx, 0x268(%rsp)
jne 0x127aa
leaq 0x10(%rbx), %rax
movq %rax, (%rbx)
leaq 0x9717(%rip), %rsi      # 0x1bea5
leaq 0x9720(%rip), %rdx      # 0x1beb5
movq %rbx, %rdi
leaq 0x80(%rsp), %rbx
callq 0x79f2
jmp 0x14d2f
movslq 0x108(%rbp), %rax
movq 0x58(%rbp), %rcx
leaq (%rax,%rax,2), %rdx
movq -0x18(%rcx,%rdx,8), %rbx
cmpq -0x10(%rcx,%rdx,8), %rbx
movq %rbp, 0x28(%rsp)
je 0x1449b
leaq 0xd0(%rsp), %r14
leaq 0xc0(%rsp), %r15
movq (%rbx), %rsi
movq %r15, %rdi
callq 0x1a98e
movq 0xc0(%rsp), %rdi
testq %rdi, %rdi
movq %rbx, 0x90(%rsp)
je 0x12836
leaq 0x11cc3(%rip), %rsi     # 0x244c8
leaq 0x11f6c(%rip), %rdx     # 0x24778
xorl %ecx, %ecx
callq 0x5230
testq %rax, %rax
je 0x12836
movq 0xc8(%rsp), %rdi
testq %rdi, %rdi
je 0x12865
movq 0x12794(%rip), %rax     # 0x24fc0
cmpb $0x0, (%rax)
je 0x1284a
incl 0x8(%rdi)
jmp 0x1284e
movq 0xc8(%rsp), %rdi
testq %rdi, %rdi
je 0x12872
callq 0x7828
jmp 0x12872
lock
incl 0x8(%rdi)
callq 0x7828
movq 0xc8(%rsp), %rdi
testq %rdi, %rdi
je 0x12865
callq 0x7828
cmpb $0x0, 0x10c(%rbp)
je 0x12daf
movq 0xb8(%rbp), %rdi
callq 0x1a8d6
movq %rax, %r15
movq (%rbx), %rdi
callq 0x1a8d6
movq %rax, %r12
movq %r15, %r14
shrq $0x20, %r15
movl %r12d, %r13d
shrq $0x20, %r12
movl %r14d, %ebp
subl %r13d, %ebp
xorps %xmm0, %xmm0
cvtsi2sd %ebp, %xmm0
movl %r15d, %ebx
subl %r12d, %ebx
xorps %xmm1, %xmm1
cvtsi2sd %ebx, %xmm1
mulsd %xmm0, %xmm0
mulsd %xmm1, %xmm1
addsd %xmm0, %xmm1
xorps %xmm0, %xmm0
sqrtsd %xmm1, %xmm0
callq 0x5350
ucomisd 0x8c2c(%rip), %xmm0     # 0x1b500
jne 0x129a1
jp 0x129a1
movq 0x28(%rsp), %rbp
movq 0xb8(%rbp), %rsi
leaq 0xc0(%rsp), %rbx
movq %rbx, %rdi
callq 0x1a98e
movq 0xc0(%rsp), %rdi
callq 0x167e2
movsd %xmm0, 0x3d0(%rsp)
leaq 0xd0(%rsp), %r14
movq 0xc8(%rsp), %rdi
testq %rdi, %rdi
je 0x1292c
callq 0x7828
movq 0xb8(%rbp), %rsi
movq %rbx, %rdi
callq 0x1a98e
movq 0xc0(%rsp), %rdi
testq %rdi, %rdi
je 0x13173
leaq 0x11b75(%rip), %rsi     # 0x244c8
leaq 0x12146(%rip), %rdx     # 0x24aa0
xorl %ecx, %ecx
callq 0x5230
movl $0x0, %r12d
movl $0x0, %r15d
testq %rax, %rax
je 0x13312
movq 0xc8(%rsp), %r12
testq %r12, %r12
je 0x13304
movq 0x12632(%rip), %rcx     # 0x24fc0
cmpb $0x0, (%rcx)
je 0x13309
incl 0x8(%r12)
jmp 0x1330f
movq 0x28(%rsp), %rax
cmpb $0x1, 0xa8(%rax)
jne 0x129c9
movq 0x28(%rsp), %rax
xorps %xmm1, %xmm1
cvtsi2sdl 0xac(%rax), %xmm1
ucomisd %xmm0, %xmm1
jae 0x13202
xorpd %xmm0, %xmm0
movapd %xmm0, (%rsp)
movq $0x0, 0x10(%rsp)
leaq 0xd0(%rsp), %rbx
movq %rbx, 0xc0(%rsp)
leaq 0xc0(%rsp), %r12
movq %r12, %rdi
leaq 0x8904(%rip), %rsi      # 0x1b301
leaq 0x88ff(%rip), %rdx      # 0x1b303
callq 0x79f2
movq %rsp, %rdi
movq %r12, %rsi
callq 0x15d80
movq 0x28(%rsp), %rbp
movq 0x90(%rsp), %r15
movq 0xc0(%rsp), %rdi
cmpq %rbx, %rdi
je 0x12a3e
movq 0xd0(%rsp), %rsi
incq %rsi
callq 0x51f0
movq %rbx, 0xc0(%rsp)
movq %r12, %rdi
leaq 0x88b7(%rip), %rsi      # 0x1b307
leaq 0x88b2(%rip), %rdx      # 0x1b309
callq 0x79f2
movq %rsp, %rdi
movq %r12, %rsi
callq 0x15d80
movq 0xc0(%rsp), %rdi
cmpq %rbx, %rdi
je 0x12a84
movq 0xd0(%rsp), %rsi
incq %rsi
callq 0x51f0
movq %rbx, 0xc0(%rsp)
movq %r12, %rdi
leaq 0x886e(%rip), %rsi      # 0x1b304
leaq 0x8869(%rip), %rdx      # 0x1b306
callq 0x79f2
movq %rsp, %rdi
movq %r12, %rsi
callq 0x15d80
movq 0xc0(%rsp), %rdi
cmpq %rbx, %rdi
je 0x12aca
movq 0xd0(%rsp), %rsi
incq %rsi
callq 0x51f0
movq %rbx, 0xc0(%rsp)
movq %r12, %rdi
leaq 0x882e(%rip), %rsi      # 0x1b30a
leaq 0x8829(%rip), %rdx      # 0x1b30c
callq 0x79f2
movq %rsp, %rdi
movq %r12, %rsi
callq 0x15d80
movq 0xc0(%rsp), %rdi
cmpq %rbx, %rdi
je 0x12b10
movq 0xd0(%rsp), %rsi
incq %rsi
callq 0x51f0
movq %rbx, 0xc0(%rsp)
movq %r12, %rdi
leaq 0x87eb(%rip), %rsi      # 0x1b30d
leaq 0x87e6(%rip), %rdx      # 0x1b30f
callq 0x79f2
movq %rsp, %rdi
movq %r12, %rsi
callq 0x15d80
movq 0xc0(%rsp), %rdi
cmpq %rbx, %rdi
je 0x12b56
movq 0xd0(%rsp), %rsi
incq %rsi
callq 0x51f0
movq %rbx, 0xc0(%rsp)
movq %r12, %rdi
leaq 0x87a8(%rip), %rsi      # 0x1b310
leaq 0x87a3(%rip), %rdx      # 0x1b312
callq 0x79f2
movq %rsp, %rdi
movq %r12, %rsi
callq 0x15d80
movq 0xc0(%rsp), %rdi
cmpq %rbx, %rdi
je 0x12b9c
movq 0xd0(%rsp), %rsi
incq %rsi
callq 0x51f0
movq %rbx, 0xc0(%rsp)
movq %r12, %rdi
leaq 0x8765(%rip), %rsi      # 0x1b313
leaq 0x8760(%rip), %rdx      # 0x1b315
callq 0x79f2
movq %rsp, %rdi
movq %r12, %rsi
callq 0x15d80
movq 0xc0(%rsp), %rdi
cmpq %rbx, %rdi
je 0x12be2
movq 0xd0(%rsp), %rsi
incq %rsi
callq 0x51f0
movq %rbx, 0xc0(%rsp)
movq %r12, %rdi
leaq 0x8722(%rip), %rsi      # 0x1b316
leaq 0x871d(%rip), %rdx      # 0x1b318
callq 0x79f2
movq %rsp, %rdi
movq %r12, %rsi
callq 0x15d80
movq 0xc0(%rsp), %rdi
cmpq %rbx, %rdi
je 0x12c28
movq 0xd0(%rsp), %rsi
incq %rsi
callq 0x51f0
xorl %r13d, %r13d
xorl %r14d, %r14d
callq 0x5080
cltq
movq (%rsp), %rcx
movq 0x8(%rsp), %rsi
subq %rcx, %rsi
sarq $0x5, %rsi
xorl %edx, %edx
divq %rsi
movq (%r15), %rax
movq %rax, 0x320(%rsp)
movq 0x8(%r15), %rax
movq %rax, 0x328(%rsp)
testq %rax, %rax
je 0x12c7f
movq 0x12353(%rip), %rsi     # 0x24fc0
cmpb $0x0, (%rsi)
leaq 0x300(%rsp), %rbx
je 0x12c89
incl 0x8(%rax)
jmp 0x12c91
leaq 0x300(%rsp), %rbx
jmp 0x12c91
lock
incl 0x8(%rax)
movq (%rsp), %rcx
movslq %edx, %rax
shlq $0x5, %rax
leaq 0x310(%rsp), %rdx
movq %rdx, 0x300(%rsp)
movq (%rcx,%rax), %rsi
movq 0x8(%rcx,%rax), %rdx
addq %rsi, %rdx
movq %rbx, %rdi
callq 0x7898
movq %r12, %rdi
movq %rbp, %rsi
leaq 0x320(%rsp), %rdx
movq %rbx, %rcx
callq 0xe860
movq 0xc0(%rsp), %r15
movq 0xc8(%rsp), %r12
testq %r13, %r13
je 0x12cef
movq %r13, %rdi
callq 0x7828
movq 0x300(%rsp), %rdi
leaq 0x310(%rsp), %rax
cmpq %rax, %rdi
je 0x12d14
movq 0x310(%rsp), %rsi
incq %rsi
callq 0x51f0
movq 0x328(%rsp), %rdi
testq %rdi, %rdi
je 0x12d26
callq 0x7828
testq %r15, %r15
je 0x12d53
movq %r15, 0x2f0(%rsp)
movq %r12, 0x2f8(%rsp)
testq %r12, %r12
je 0x12d64
movq 0x12279(%rip), %rax     # 0x24fc0
cmpb $0x0, (%rax)
je 0x12d5e
incl 0x8(%r12)
jmp 0x12d64
cmpl $0x4f, %r14d
jbe 0x12d94
jmp 0x13960
lock
incl 0x8(%r12)
leaq 0x2f0(%rsp), %rsi
callq 0xf13a
movl %eax, %ebx
movq 0x2f8(%rsp), %rdi
testq %rdi, %rdi
je 0x12d85
callq 0x7828
cmpl $0x50, %r14d
setae %al
orb %al, %bl
jne 0x1317e
incl %r14d
movq %r12, %r13
movq 0x90(%rsp), %r15
leaq 0xc0(%rsp), %r12
jmp 0x12c2e
xorpd %xmm0, %xmm0
movapd %xmm0, (%rsp)
movq $0x0, 0x10(%rsp)
movq %r14, 0xc0(%rsp)
movq %r15, %rdi
leaq 0x852e(%rip), %rsi      # 0x1b301
leaq 0x8529(%rip), %rdx      # 0x1b303
callq 0x79f2
movq %rsp, %rdi
movq %r15, %rsi
callq 0x15d80
movq 0xc0(%rsp), %rdi
cmpq %r14, %rdi
je 0x12e07
movq 0xd0(%rsp), %rsi
incq %rsi
callq 0x51f0
movq %r14, 0xc0(%rsp)
movq %r15, %rdi
leaq 0x84ee(%rip), %rsi      # 0x1b307
leaq 0x84e9(%rip), %rdx      # 0x1b309
callq 0x79f2
movq %rsp, %rdi
movq %r15, %rsi
callq 0x15d80
movq 0xc0(%rsp), %rdi
cmpq %r14, %rdi
je 0x12e4d
movq 0xd0(%rsp), %rsi
incq %rsi
callq 0x51f0
movq %r14, 0xc0(%rsp)
movq %r15, %rdi
leaq 0x84a5(%rip), %rsi      # 0x1b304
leaq 0x84a0(%rip), %rdx      # 0x1b306
callq 0x79f2
movq %rsp, %rdi
movq %r15, %rsi
callq 0x15d80
movq 0xc0(%rsp), %rdi
cmpq %r14, %rdi
je 0x12e93
movq 0xd0(%rsp), %rsi
incq %rsi
callq 0x51f0
movq %r14, 0xc0(%rsp)
movq %r15, %rdi
leaq 0x8465(%rip), %rsi      # 0x1b30a
leaq 0x8460(%rip), %rdx      # 0x1b30c
callq 0x79f2
movq %rsp, %rdi
movq %r15, %rsi
callq 0x15d80
movq 0xc0(%rsp), %rdi
cmpq %r14, %rdi
je 0x12ed9
movq 0xd0(%rsp), %rsi
incq %rsi
callq 0x51f0
movq %r14, 0xc0(%rsp)
movq %r15, %rdi
leaq 0x8422(%rip), %rsi      # 0x1b30d
leaq 0x841d(%rip), %rdx      # 0x1b30f
callq 0x79f2
movq %rsp, %rdi
movq %r15, %rsi
callq 0x15d80
movq 0xc0(%rsp), %rdi
cmpq %r14, %rdi
je 0x12f1f
movq 0xd0(%rsp), %rsi
incq %rsi
callq 0x51f0
movq %r14, 0xc0(%rsp)
movq %r15, %rdi
leaq 0x83df(%rip), %rsi      # 0x1b310
leaq 0x83da(%rip), %rdx      # 0x1b312
callq 0x79f2
movq %rsp, %rdi
movq %r15, %rsi
callq 0x15d80
movq 0xc0(%rsp), %rdi
cmpq %r14, %rdi
je 0x12f65
movq 0xd0(%rsp), %rsi
incq %rsi
callq 0x51f0
movq %r14, 0xc0(%rsp)
movq %r15, %rdi
leaq 0x839c(%rip), %rsi      # 0x1b313
leaq 0x8397(%rip), %rdx      # 0x1b315
callq 0x79f2
movq %rsp, %rdi
movq %r15, %rsi
callq 0x15d80
movq 0xc0(%rsp), %rdi
cmpq %r14, %rdi
je 0x12fab
movq 0xd0(%rsp), %rsi
incq %rsi
callq 0x51f0
movq %r14, 0xc0(%rsp)
movq %r15, %rdi
leaq 0x8359(%rip), %rsi      # 0x1b316
leaq 0x8354(%rip), %rdx      # 0x1b318
callq 0x79f2
movq %rsp, %rdi
movq %r15, %rsi
callq 0x15d80
movq 0xc0(%rsp), %rdi
cmpq %r14, %rdi
je 0x12ff1
movq 0xd0(%rsp), %rsi
incq %rsi
callq 0x51f0
movl $0x51, %r14d
xorl %r12d, %r12d
movq %r12, %r13
callq 0x5080
cltq
movq (%rsp), %rcx
movq 0x8(%rsp), %rsi
subq %rcx, %rsi
sarq $0x5, %rsi
xorl %edx, %edx
divq %rsi
movq 0x90(%rsp), %rsi
movq (%rsi), %rax
movq %rax, 0x3a0(%rsp)
movq 0x8(%rsi), %rax
movq %rax, 0x3a8(%rsp)
testq %rax, %rax
je 0x1305e
movq 0x11f7c(%rip), %rsi     # 0x24fc0
cmpb $0x0, (%rsi)
leaq 0xc0(%rsp), %rbx
leaq 0x380(%rsp), %r15
je 0x13070
incl 0x8(%rax)
jmp 0x13078
leaq 0xc0(%rsp), %rbx
leaq 0x380(%rsp), %r15
jmp 0x13078
lock
incl 0x8(%rax)
movq (%rsp), %rcx
movslq %edx, %rax
shlq $0x5, %rax
leaq 0x390(%rsp), %rdx
movq %rdx, 0x380(%rsp)
movq (%rcx,%rax), %rsi
movq 0x8(%rcx,%rax), %rdx
addq %rsi, %rdx
movq %r15, %rdi
callq 0x7898
movq %rbx, %rdi
movq %rbp, %rsi
leaq 0x3a0(%rsp), %rdx
movq %r15, %rcx
callq 0xe860
movq 0xc0(%rsp), %r15
movq 0xc8(%rsp), %r12
testq %r13, %r13
je 0x130d6
movq %r13, %rdi
callq 0x7828
movq 0x380(%rsp), %rdi
leaq 0x390(%rsp), %rax
cmpq %rax, %rdi
je 0x130fb
movq 0x390(%rsp), %rsi
incq %rsi
callq 0x51f0
movq 0x3a8(%rsp), %rdi
testq %rdi, %rdi
je 0x1310d
callq 0x7828
testq %r15, %r15
je 0x13165
movq %r15, 0x370(%rsp)
movq %r12, 0x378(%rsp)
testq %r12, %r12
je 0x13140
movq 0x11e92(%rip), %rax     # 0x24fc0
cmpb $0x0, (%rax)
je 0x1313a
incl 0x8(%r12)
jmp 0x13140
lock
incl 0x8(%r12)
leaq 0x370(%rsp), %rsi
callq 0xf13a
movl %eax, %ebx
movq 0x378(%rsp), %rdi
testq %rdi, %rdi
je 0x13161
callq 0x7828
testb %bl, %bl
jne 0x131bc
decl %r14d
jne 0x12ffa
jmp 0x143a6
xorl %r12d, %r12d
xorl %r15d, %r15d
jmp 0x13312
movq 0x90(%rsp), %rax
movq (%rax), %rsi
movq %r15, 0x2e0(%rsp)
movq %r12, 0x2e8(%rsp)
testq %r12, %r12
je 0x138f7
movq 0x11e17(%rip), %rax     # 0x24fc0
cmpb $0x0, (%rax)
je 0x138f1
incl 0x8(%r12)
jmp 0x138f7
movq 0x90(%rsp), %rax
movq (%rax), %rsi
movq %r15, 0x360(%rsp)
movq %r12, 0x368(%rsp)
testq %r12, %r12
leaq 0xd0(%rsp), %r14
je 0x13a64
movq 0x11dd1(%rip), %rax     # 0x24fc0
cmpb $0x0, (%rax)
je 0x13a5e
incl 0x8(%r12)
jmp 0x13a64
xorpd %xmm0, %xmm0
movapd %xmm0, (%rsp)
movq $0x0, 0x10(%rsp)
testl %ebp, %ebp
jle 0x1397e
testl %ebx, %ebx
jle 0x13aeb
leaq 0xd0(%rsp), %rbx
movq %rbx, 0xc0(%rsp)
leaq 0xc0(%rsp), %r14
movq %r14, %rdi
leaq 0x80cd(%rip), %rsi      # 0x1b313
leaq 0x80c8(%rip), %rdx      # 0x1b315
callq 0x79f2
movq 0x28(%rsp), %rbp
movq %rsp, %rdi
movq %r14, %rsi
callq 0x15d80
movq 0xc0(%rsp), %rdi
cmpq %rbx, %rdi
je 0x1327f
movq 0xd0(%rsp), %rsi
incq %rsi
callq 0x51f0
movq %rbx, 0xc0(%rsp)
movq %r14, %rdi
leaq 0x8076(%rip), %rsi      # 0x1b307
leaq 0x8071(%rip), %rdx      # 0x1b309
callq 0x79f2
movq %rsp, %rdi
movq %r14, %rsi
callq 0x15d80
movq 0xc0(%rsp), %rdi
cmpq %rbx, %rdi
je 0x132c5
movq 0xd0(%rsp), %rsi
incq %rsi
callq 0x51f0
movq %rbx, 0xc0(%rsp)
movq %r14, %rdi
leaq 0x802d(%rip), %rsi      # 0x1b304
leaq 0x8028(%rip), %rdx      # 0x1b306
callq 0x79f2
movq %rsp, %rdi
movq %r14, %rsi
callq 0x15d80
movq 0xc0(%rsp), %rdi
cmpq %rbx, %rdi
jne 0x14201
jmp 0x14211
xorl %r12d, %r12d
jmp 0x1330f
lock
incl 0x8(%r12)
movq %rax, %r15
movq 0x90(%rsp), %rax
movq (%rax), %rsi
movq %rsp, %rdi
callq 0x1a98e
movq (%rsp), %rdi
leaq 0x11198(%rip), %rsi     # 0x244c8
leaq 0x111a1(%rip), %rdx     # 0x244d8
xorl %ecx, %ecx
callq 0x5230
movq 0x8(%rsp), %rbx
testq %rbx, %rbx
je 0x1335d
movq 0x11c71(%rip), %rcx     # 0x24fc0
cmpb $0x0, (%rcx)
je 0x13359
incl 0x8(%rbx)
jmp 0x1335d
lock
incl 0x8(%rbx)
movq (%r15), %rcx
movq %r15, %rdi
movq %rax, %rsi
callq *0x8(%rcx)
movl %eax, %r13d
testq %rbx, %rbx
je 0x13379
movq %rbx, %rdi
callq 0x7828
movq 0x8(%rsp), %rdi
testq %rdi, %rdi
je 0x13388
callq 0x7828
testq %r12, %r12
je 0x13395
movq %r12, %rdi
callq 0x7828
movq 0xc8(%rsp), %rdi
testq %rdi, %rdi
je 0x133a7
callq 0x7828
leaq 0xc0(%rsp), %rdi
callq 0x5150
leaq 0xb0(%rsp), %rbx
movq 0x90(%rsp), %r15
leaq 0x2c0(%rsp), %r12
movq 0xd0(%rsp), %rax
movq -0x18(%rax), %rcx
movl 0xe8(%rsp,%rcx), %edx
movl $0xfffffefb, %esi       # imm = 0xFFFFFEFB
andl %esi, %edx
orl $0x4, %edx
movl %edx, 0xe8(%rsp,%rcx)
movq -0x18(%rax), %rax
movq $0x2, 0xd8(%rsp,%rax)
movq 0xf8(%rbp), %rdi
callq 0x167e2
movsd 0x3d0(%rsp), %xmm1
subsd %xmm0, %xmm1
leaq 0xd0(%rsp), %rdi
movapd %xmm1, %xmm0
callq 0x5310
movq 0xb8(%rbp), %rsi
leaq 0x3e8(%rsp), %rdi
callq 0x1a98e
movq 0x3e8(%rsp), %rsi
movq (%rsi), %rax
movq %r12, %rdi
callq *(%rax)
movq %r12, %rdi
leaq 0x8a5e(%rip), %rsi      # 0x1beb6
callq 0x53c0
movq %rbx, 0xa0(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x13489
movq %rdx, 0xa0(%rsp)
movq (%rcx), %rdx
movq %rdx, 0xb0(%rsp)
jmp 0x13491
movupd (%rcx), %xmm0
movupd %xmm0, (%rbx)
movq 0x8(%rax), %rdx
movq %rdx, 0xa8(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq (%r15), %rsi
leaq 0x350(%rsp), %rdi
callq 0x1a98e
movq 0x350(%rsp), %rdi
leaq 0x10ffd(%rip), %rsi     # 0x244c8
leaq 0x11006(%rip), %rdx     # 0x244d8
xorl %ecx, %ecx
callq 0x5230
movq 0x358(%rsp), %r12
testq %r12, %r12
je 0x134ff
movq 0x11ad3(%rip), %rcx     # 0x24fc0
cmpb $0x0, (%rcx)
je 0x134f9
incl 0x8(%r12)
jmp 0x134ff
lock
incl 0x8(%r12)
movq (%rax), %rcx
leaq 0x2a0(%rsp), %rdi
movq %rax, %rsi
callq *(%rcx)
movq 0xa0(%rsp), %rcx
movl $0xf, %edi
leaq 0xb0(%rsp), %rax
cmpq %rax, %rcx
je 0x13531
movq 0xb0(%rsp), %rdi
movq 0xa8(%rsp), %r8
movq 0x2a0(%rsp), %rsi
movq 0x2a8(%rsp), %rdx
leaq (%rdx,%r8), %rax
cmpq %rdi, %rax
jbe 0x13571
movl $0xf, %edi
leaq 0x2b0(%rsp), %r9
cmpq %r9, %rsi
je 0x1356c
movq 0x2b0(%rsp), %rdi
cmpq %rdi, %rax
jbe 0x13580
leaq 0xa0(%rsp), %rdi
callq 0x50b0
jmp 0x13591
leaq 0x2a0(%rsp), %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x5220
leaq 0x258(%rsp), %rsi
movq %rsi, 0x248(%rsp)
movq (%rax), %rdx
leaq 0x10(%rax), %rcx
cmpq %rcx, %rdx
je 0x135c2
movq %rdx, 0x248(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x258(%rsp)
jmp 0x135ca
movupd (%rcx), %xmm0
movupd %xmm0, (%rsi)
movq %rax, %rdx
addq $0x8, %rdx
movq 0x8(%rax), %rsi
movq %rsi, 0x250(%rsp)
movq %rcx, (%rax)
movq $0x0, (%rdx)
movb $0x0, (%rcx)
leaq 0x248(%rsp), %rdi
leaq 0x887c(%rip), %rsi      # 0x1be75
callq 0x53c0
leaq 0x60(%rsp), %rsi
movq %rsi, 0x50(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x13626
movq %rdx, 0x50(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x60(%rsp)
jmp 0x1362e
movupd (%rcx), %xmm0
movupd %xmm0, (%rsi)
movq 0x8(%rax), %rdx
movq %rdx, 0x58(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0x280(%rsp), %rdi
leaq 0xd8(%rsp), %rsi
callq 0x5300
movq 0x50(%rsp), %rcx
movl $0xf, %edi
leaq 0x60(%rsp), %rax
cmpq %rax, %rcx
je 0x13674
movq 0x60(%rsp), %rdi
movq 0x58(%rsp), %r8
movq 0x280(%rsp), %rsi
movq 0x288(%rsp), %rdx
leaq (%rdx,%r8), %rax
cmpq %rdi, %rax
jbe 0x136b1
movl $0xf, %edi
leaq 0x290(%rsp), %r9
cmpq %r9, %rsi
je 0x136ac
movq 0x290(%rsp), %rdi
cmpq %rdi, %rax
jbe 0x136bd
leaq 0x50(%rsp), %rdi
callq 0x50b0
jmp 0x136ce
leaq 0x280(%rsp), %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x5220
leaq 0x40(%rsp), %rsi
movq %rsi, 0x30(%rsp)
movq (%rax), %rdx
leaq 0x10(%rax), %rcx
cmpq %rcx, %rdx
je 0x136f3
movq %rdx, 0x30(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x40(%rsp)
jmp 0x136fb
movupd (%rcx), %xmm0
movupd %xmm0, (%rsi)
movq %rax, %rdx
addq $0x8, %rdx
movq 0x8(%rax), %rsi
movq %rsi, 0x38(%rsp)
movq %rcx, (%rax)
movq $0x0, (%rdx)
movb $0x0, (%rcx)
leaq 0x30(%rsp), %rdi
leaq 0x87a0(%rip), %rsi      # 0x1bec4
callq 0x53c0
leaq 0x10(%rsp), %rsi
movq %rsi, (%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x1374f
movq %rdx, (%rsp)
movq (%rcx), %rdx
movq %rdx, 0x10(%rsp)
jmp 0x13757
movupd (%rcx), %xmm0
movupd %xmm0, (%rsi)
movq 0x8(%rax), %rdx
movq %rdx, 0x8(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq (%rsp), %rsi
movq 0x8(%rsp), %rdx
leaq 0x70(%rsp), %rdi
callq 0x50b0
movq (%rsp), %rdi
leaq 0x10(%rsp), %rax
cmpq %rax, %rdi
je 0x1379d
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x51f0
movq 0x30(%rsp), %rdi
leaq 0x40(%rsp), %rax
cmpq %rax, %rdi
je 0x137b9
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x51f0
movq 0x280(%rsp), %rdi
leaq 0x290(%rsp), %rax
cmpq %rax, %rdi
je 0x137de
movq 0x290(%rsp), %rsi
incq %rsi
callq 0x51f0
movq 0x50(%rsp), %rdi
leaq 0x60(%rsp), %rax
cmpq %rax, %rdi
je 0x137fa
movq 0x60(%rsp), %rsi
incq %rsi
callq 0x51f0
movq 0x248(%rsp), %rdi
leaq 0x258(%rsp), %rax
cmpq %rax, %rdi
je 0x1381f
movq 0x258(%rsp), %rsi
incq %rsi
callq 0x51f0
movq 0x2a0(%rsp), %rdi
leaq 0x2b0(%rsp), %rax
cmpq %rax, %rdi
je 0x13844
movq 0x2b0(%rsp), %rsi
incq %rsi
callq 0x51f0
testq %r12, %r12
je 0x13851
movq %r12, %rdi
callq 0x7828
movq 0x358(%rsp), %rdi
testq %rdi, %rdi
je 0x13863
callq 0x7828
movq 0xa0(%rsp), %rdi
leaq 0xb0(%rsp), %rax
cmpq %rax, %rdi
leaq 0xc0(%rsp), %rbx
je 0x13890
movq 0xb0(%rsp), %rsi
incq %rsi
callq 0x51f0
movq 0x2c0(%rsp), %rdi
leaq 0x2d0(%rsp), %rax
cmpq %rax, %rdi
je 0x138b5
movq 0x2d0(%rsp), %rsi
incq %rsi
callq 0x51f0
movq 0x3f0(%rsp), %rdi
testq %rdi, %rdi
je 0x138c7
callq 0x7828
testb %r13b, %r13b
jne 0x14bc4
movq %rbx, %rdi
movq 0x116c6(%rip), %rsi     # 0x24fa0
callq 0x5170
leaq 0x140(%rsp), %rdi
callq 0x50c0
jmp 0x143c3
lock
incl 0x8(%r12)
leaq 0xc0(%rsp), %rdi
leaq 0x2e0(%rsp), %rdx
callq 0x1aa60
movapd 0xc0(%rsp), %xmm0
xorpd %xmm1, %xmm1
movapd %xmm1, 0xc0(%rsp)
movq 0x90(%rsp), %rax
movq 0x8(%rax), %rdi
movupd %xmm0, (%rax)
testq %rdi, %rdi
je 0x1393c
callq 0x7828
movq 0xc8(%rsp), %rdi
testq %rdi, %rdi
je 0x1394e
callq 0x7828
movq 0x2e8(%rsp), %rdi
testq %rdi, %rdi
je 0x13960
callq 0x7828
movq %rsp, %rdi
callq 0x77ca
testq %r12, %r12
leaq 0xd0(%rsp), %r14
jne 0x13ade
jmp 0x143c3
cmpl %r13d, %r14d
jne 0x13bc3
testl %ebx, %ebx
leaq 0xd0(%rsp), %r14
jle 0x13d6c
movq %r14, 0xc0(%rsp)
leaq 0xc0(%rsp), %rbx
movq %rbx, %rdi
leaq 0x7953(%rip), %rsi      # 0x1b304
leaq 0x794e(%rip), %rdx      # 0x1b306
callq 0x79f2
movq 0x28(%rsp), %rbp
movq %rsp, %rdi
movq %rbx, %rsi
callq 0x15d80
movq 0xc0(%rsp), %rdi
cmpq %r14, %rdi
je 0x139ea
movq 0xd0(%rsp), %rsi
incq %rsi
callq 0x51f0
movq %r14, 0xc0(%rsp)
movq %rbx, %rdi
leaq 0x7917(%rip), %rsi      # 0x1b313
leaq 0x7912(%rip), %rdx      # 0x1b315
callq 0x79f2
movq %rsp, %rdi
movq %rbx, %rsi
callq 0x15d80
movq 0xc0(%rsp), %rdi
cmpq %r14, %rdi
je 0x13a30
movq 0xd0(%rsp), %rsi
incq %rsi
callq 0x51f0
movq %r14, 0xc0(%rsp)
movq %rbx, %rdi
leaq 0x78d4(%rip), %rsi      # 0x1b316
leaq 0x78cf(%rip), %rdx      # 0x1b318
callq 0x79f2
movq %rsp, %rdi
movq %rbx, %rsi
callq 0x15d80
jmp 0x141f4
lock
incl 0x8(%r12)
leaq 0xc0(%rsp), %rdi
leaq 0x360(%rsp), %rdx
callq 0x1aa60
movapd 0xc0(%rsp), %xmm0
xorpd %xmm1, %xmm1
movapd %xmm1, 0xc0(%rsp)
movq 0x90(%rsp), %rax
movq 0x8(%rax), %rdi
movupd %xmm0, (%rax)
testq %rdi, %rdi
je 0x13aa9
callq 0x7828
movq 0xc8(%rsp), %rdi
testq %rdi, %rdi
je 0x13abb
callq 0x7828
movq 0x368(%rsp), %rdi
testq %rdi, %rdi
je 0x13acd
callq 0x7828
movq %rsp, %rdi
callq 0x77ca
testq %r12, %r12
je 0x143c3
movq %r12, %rdi
callq 0x7828
jmp 0x143c3
cmpl %r12d, %r15d
movq 0x28(%rsp), %rbp
leaq 0xd0(%rsp), %r14
jne 0x13ca2
movq %r14, 0xc0(%rsp)
leaq 0xc0(%rsp), %rbx
movq %rbx, %rdi
leaq 0x77ec(%rip), %rsi      # 0x1b307
leaq 0x77e7(%rip), %rdx      # 0x1b309
callq 0x79f2
movq %rsp, %rdi
movq %rbx, %rsi
callq 0x15d80
movq 0xc0(%rsp), %rdi
cmpq %r14, %rdi
je 0x13b4f
movq 0xd0(%rsp), %rsi
incq %rsi
callq 0x51f0
movq %r14, 0xc0(%rsp)
movq %rbx, %rdi
leaq 0x77ac(%rip), %rsi      # 0x1b30d
leaq 0x77a7(%rip), %rdx      # 0x1b30f
callq 0x79f2
movq %rsp, %rdi
movq %rbx, %rsi
callq 0x15d80
movq 0xc0(%rsp), %rdi
cmpq %r14, %rdi
je 0x13b95
movq 0xd0(%rsp), %rsi
incq %rsi
callq 0x51f0
movq %r14, 0xc0(%rsp)
movq %rbx, %rdi
leaq 0x776c(%rip), %rsi      # 0x1b313
leaq 0x7767(%rip), %rdx      # 0x1b315
callq 0x79f2
movq %rsp, %rdi
movq %rbx, %rsi
callq 0x15d80
jmp 0x141f4
testl %ebp, %ebp
movq 0x28(%rsp), %rbp
leaq 0xd0(%rsp), %r14
jns 0x14211
testl %ebx, %ebx
jle 0x14064
movq %r14, 0xc0(%rsp)
leaq 0xc0(%rsp), %rbx
movq %rbx, %rdi
leaq 0x771c(%rip), %rsi      # 0x1b316
leaq 0x7717(%rip), %rdx      # 0x1b318
callq 0x79f2
movq %rsp, %rdi
movq %rbx, %rsi
callq 0x15d80
movq 0xc0(%rsp), %rdi
cmpq %r14, %rdi
je 0x13c2e
movq 0xd0(%rsp), %rsi
incq %rsi
callq 0x51f0
movq %r14, 0xc0(%rsp)
movq %rbx, %rdi
leaq 0x76ca(%rip), %rsi      # 0x1b30a
leaq 0x76c5(%rip), %rdx      # 0x1b30c
callq 0x79f2
movq %rsp, %rdi
movq %rbx, %rsi
callq 0x15d80
movq 0xc0(%rsp), %rdi
cmpq %r14, %rdi
je 0x13c74
movq 0xd0(%rsp), %rsi
incq %rsi
callq 0x51f0
movq %r14, 0xc0(%rsp)
movq %rbx, %rdi
leaq 0x767e(%rip), %rsi      # 0x1b304
leaq 0x7679(%rip), %rdx      # 0x1b306
callq 0x79f2
movq %rsp, %rdi
movq %rbx, %rsi
callq 0x15d80
jmp 0x141f4
testl %ebx, %ebx
jns 0x14211
movq %r14, 0xc0(%rsp)
leaq 0xc0(%rsp), %rbx
movq %rbx, %rdi
leaq 0x7649(%rip), %rsi      # 0x1b30d
leaq 0x7644(%rip), %rdx      # 0x1b30f
callq 0x79f2
movq %rsp, %rdi
movq %rbx, %rsi
callq 0x15d80
movq 0xc0(%rsp), %rdi
cmpq %r14, %rdi
je 0x13cf8
movq 0xd0(%rsp), %rsi
incq %rsi
callq 0x51f0
movq %r14, 0xc0(%rsp)
movq %rbx, %rdi
leaq 0x75fd(%rip), %rsi      # 0x1b307
leaq 0x75f8(%rip), %rdx      # 0x1b309
callq 0x79f2
movq %rsp, %rdi
movq %rbx, %rsi
callq 0x15d80
movq 0xc0(%rsp), %rdi
cmpq %r14, %rdi
je 0x13d3e
movq 0xd0(%rsp), %rsi
incq %rsi
callq 0x51f0
movq %r14, 0xc0(%rsp)
movq %rbx, %rdi
leaq 0x75bd(%rip), %rsi      # 0x1b30d
leaq 0x75b8(%rip), %rdx      # 0x1b30f
callq 0x79f2
movq %rsp, %rdi
movq %rbx, %rsi
callq 0x15d80
jmp 0x141f4
cmpl %r12d, %r15d
movq 0x28(%rsp), %rbp
jne 0x13f9a
movq %r14, 0xc0(%rsp)
leaq 0xc0(%rsp), %rbx
movq %rbx, %rdi
leaq 0x756d(%rip), %rsi      # 0x1b301
leaq 0x7568(%rip), %rdx      # 0x1b303
callq 0x79f2
movq %rsp, %rdi
movq %rbx, %rsi
callq 0x15d80
movq 0xc0(%rsp), %rdi
cmpq %r14, %rdi
je 0x13dc8
movq 0xd0(%rsp), %rsi
incq %rsi
callq 0x51f0
movq %r14, 0xc0(%rsp)
movq %rbx, %rdi
leaq 0x752d(%rip), %rsi      # 0x1b307
leaq 0x7528(%rip), %rdx      # 0x1b309
callq 0x79f2
movq %rsp, %rdi
movq %rbx, %rsi
callq 0x15d80
movq 0xc0(%rsp), %rdi
cmpq %r14, %rdi
je 0x13e0e
movq 0xd0(%rsp), %rsi
incq %rsi
callq 0x51f0
movq %r14, 0xc0(%rsp)
movq %rbx, %rdi
leaq 0x74e4(%rip), %rsi      # 0x1b304
leaq 0x74df(%rip), %rdx      # 0x1b306
callq 0x79f2
movq %rsp, %rdi
movq %rbx, %rsi
callq 0x15d80
movq 0xc0(%rsp), %rdi
cmpq %r14, %rdi
je 0x13e54
movq 0xd0(%rsp), %rsi
incq %rsi
callq 0x51f0
movq %r14, 0xc0(%rsp)
movq %rbx, %rdi
leaq 0x74a4(%rip), %rsi      # 0x1b30a
leaq 0x749f(%rip), %rdx      # 0x1b30c
callq 0x79f2
movq %rsp, %rdi
movq %rbx, %rsi
callq 0x15d80
movq 0xc0(%rsp), %rdi
cmpq %r14, %rdi
je 0x13e9a
movq 0xd0(%rsp), %rsi
incq %rsi
callq 0x51f0
movq %r14, 0xc0(%rsp)
movq %rbx, %rdi
leaq 0x7461(%rip), %rsi      # 0x1b30d
leaq 0x745c(%rip), %rdx      # 0x1b30f
callq 0x79f2
movq %rsp, %rdi
movq %rbx, %rsi
callq 0x15d80
movq 0xc0(%rsp), %rdi
cmpq %r14, %rdi
je 0x13ee0
movq 0xd0(%rsp), %rsi
incq %rsi
callq 0x51f0
movq %r14, 0xc0(%rsp)
movq %rbx, %rdi
leaq 0x741e(%rip), %rsi      # 0x1b310
leaq 0x7419(%rip), %rdx      # 0x1b312
callq 0x79f2
movq %rsp, %rdi
movq %rbx, %rsi
callq 0x15d80
movq 0xc0(%rsp), %rdi
cmpq %r14, %rdi
je 0x13f26
movq 0xd0(%rsp), %rsi
incq %rsi
callq 0x51f0
movq %r14, 0xc0(%rsp)
movq %rbx, %rdi
leaq 0x73db(%rip), %rsi      # 0x1b313
leaq 0x73d6(%rip), %rdx      # 0x1b315
callq 0x79f2
movq %rsp, %rdi
movq %rbx, %rsi
callq 0x15d80
movq 0xc0(%rsp), %rdi
cmpq %r14, %rdi
je 0x13f6c
movq 0xd0(%rsp), %rsi
incq %rsi
callq 0x51f0
movq %r14, 0xc0(%rsp)
movq %rbx, %rdi
leaq 0x7398(%rip), %rsi      # 0x1b316
leaq 0x7393(%rip), %rdx      # 0x1b318
callq 0x79f2
movq %rsp, %rdi
movq %rbx, %rsi
callq 0x15d80
jmp 0x141f4
testl %ebx, %ebx
jns 0x14211
movq %r14, 0xc0(%rsp)
leaq 0xc0(%rsp), %rbx
movq %rbx, %rdi
leaq 0x7345(%rip), %rsi      # 0x1b301
leaq 0x7340(%rip), %rdx      # 0x1b303
callq 0x79f2
movq %rsp, %rdi
movq %rbx, %rsi
callq 0x15d80
movq 0xc0(%rsp), %rdi
cmpq %r14, %rdi
je 0x13ff0
movq 0xd0(%rsp), %rsi
incq %rsi
callq 0x51f0
movq %r14, 0xc0(%rsp)
movq %rbx, %rdi
leaq 0x730b(%rip), %rsi      # 0x1b30d
leaq 0x7306(%rip), %rdx      # 0x1b30f
callq 0x79f2
movq %rsp, %rdi
movq %rbx, %rsi
callq 0x15d80
movq 0xc0(%rsp), %rdi
cmpq %r14, %rdi
je 0x14036
movq 0xd0(%rsp), %rsi
incq %rsi
callq 0x51f0
movq %r14, 0xc0(%rsp)
movq %rbx, %rdi
leaq 0x72c8(%rip), %rsi      # 0x1b310
leaq 0x72c3(%rip), %rdx      # 0x1b312
callq 0x79f2
movq %rsp, %rdi
movq %rbx, %rsi
callq 0x15d80
jmp 0x141f4
cmpl %r12d, %r15d
jne 0x1412f
movq %r14, 0xc0(%rsp)
leaq 0xc0(%rsp), %rbx
movq %rbx, %rdi
leaq 0x7283(%rip), %rsi      # 0x1b30a
leaq 0x727e(%rip), %rdx      # 0x1b30c
callq 0x79f2
movq %rsp, %rdi
movq %rbx, %rsi
callq 0x15d80
movq 0xc0(%rsp), %rdi
cmpq %r14, %rdi
je 0x140bb
movq 0xd0(%rsp), %rsi
incq %rsi
callq 0x51f0
movq %r14, 0xc0(%rsp)
movq %rbx, %rdi
leaq 0x7243(%rip), %rsi      # 0x1b310
leaq 0x723e(%rip), %rdx      # 0x1b312
callq 0x79f2
movq %rsp, %rdi
movq %rbx, %rsi
callq 0x15d80
movq 0xc0(%rsp), %rdi
cmpq %r14, %rdi
je 0x14101
movq 0xd0(%rsp), %rsi
incq %rsi
callq 0x51f0
movq %r14, 0xc0(%rsp)
movq %rbx, %rdi
leaq 0x7203(%rip), %rsi      # 0x1b316
leaq 0x71fe(%rip), %rdx      # 0x1b318
callq 0x79f2
movq %rsp, %rdi
movq %rbx, %rsi
callq 0x15d80
jmp 0x141f4
testl %ebx, %ebx
jns 0x14211
movq %r14, 0xc0(%rsp)
leaq 0xc0(%rsp), %rbx
movq %rbx, %rdi
leaq 0x71bf(%rip), %rsi      # 0x1b310
leaq 0x71ba(%rip), %rdx      # 0x1b312
callq 0x79f2
movq %rsp, %rdi
movq %rbx, %rsi
callq 0x15d80
movq 0xc0(%rsp), %rdi
cmpq %r14, %rdi
je 0x14185
movq 0xd0(%rsp), %rsi
incq %rsi
callq 0x51f0
movq %r14, 0xc0(%rsp)
movq %rbx, %rdi
leaq 0x7173(%rip), %rsi      # 0x1b30a
leaq 0x716e(%rip), %rdx      # 0x1b30c
callq 0x79f2
movq %rsp, %rdi
movq %rbx, %rsi
callq 0x15d80
movq 0xc0(%rsp), %rdi
cmpq %r14, %rdi
je 0x141cb
movq 0xd0(%rsp), %rsi
incq %rsi
callq 0x51f0
movq %r14, 0xc0(%rsp)
movq %rbx, %rdi
leaq 0x7124(%rip), %rsi      # 0x1b301
leaq 0x711f(%rip), %rdx      # 0x1b303
callq 0x79f2
movq %rsp, %rdi
movq %rbx, %rsi
callq 0x15d80
movq 0xc0(%rsp), %rdi
cmpq %r14, %rdi
je 0x14211
movq 0xd0(%rsp), %rsi
incq %rsi
callq 0x51f0
movl $0x51, %r14d
xorl %r12d, %r12d
movq %r12, %r13
callq 0x5080
cltq
movq (%rsp), %rcx
movq 0x8(%rsp), %rsi
subq %rcx, %rsi
sarq $0x5, %rsi
xorl %edx, %edx
divq %rsi
movq 0x90(%rsp), %rsi
movq (%rsi), %rax
movq %rax, 0x340(%rsp)
movq 0x8(%rsi), %rax
movq %rax, 0x348(%rsp)
testq %rax, %rax
leaq 0x3b0(%rsp), %r15
je 0x1427e
movq 0x10d54(%rip), %rsi     # 0x24fc0
cmpb $0x0, (%rsi)
leaq 0xc0(%rsp), %rbx
je 0x14288
incl 0x8(%rax)
jmp 0x14290
leaq 0xc0(%rsp), %rbx
jmp 0x14290
lock
incl 0x8(%rax)
movq (%rsp), %rcx
movslq %edx, %rax
shlq $0x5, %rax
leaq 0x3c0(%rsp), %rdx
movq %rdx, 0x3b0(%rsp)
movq (%rcx,%rax), %rsi
movq 0x8(%rcx,%rax), %rdx
addq %rsi, %rdx
movq %r15, %rdi
callq 0x7898
movq %rbx, %rdi
movq %rbp, %rsi
leaq 0x340(%rsp), %rdx
movq %r15, %rcx
callq 0xe860
movq 0xc0(%rsp), %r15
movq 0xc8(%rsp), %r12
testq %r13, %r13
je 0x142ee
movq %r13, %rdi
callq 0x7828
movq 0x3b0(%rsp), %rdi
leaq 0x3c0(%rsp), %rax
cmpq %rax, %rdi
je 0x14313
movq 0x3c0(%rsp), %rsi
incq %rsi
callq 0x51f0
movq 0x348(%rsp), %rdi
testq %rdi, %rdi
je 0x14325
callq 0x7828
testq %r15, %r15
je 0x1439d
movq %r15, 0x270(%rsp)
movq %r12, 0x278(%rsp)
testq %r12, %r12
je 0x14358
movq 0x10c7a(%rip), %rax     # 0x24fc0
cmpb $0x0, (%rax)
je 0x14352
incl 0x8(%r12)
jmp 0x14358
lock
incl 0x8(%r12)
leaq 0x270(%rsp), %rsi
callq 0xf13a
testb %al, %al
je 0x1438b
movq %r15, %rdi
callq 0x1aa58
movl %eax, %ebx
movq 0x278(%rsp), %rdi
testq %rdi, %rdi
je 0x14385
callq 0x7828
testl %ebx, %ebx
jns 0x1439d
jmp 0x143f6
movq 0x278(%rsp), %rdi
testq %rdi, %rdi
je 0x1439d
callq 0x7828
decl %r14d
jne 0x1421a
testq %r12, %r12
je 0x143b3
movq %r12, %rdi
callq 0x7828
movq %rsp, %rdi
callq 0x77ca
leaq 0xd0(%rsp), %r14
movq 0x90(%rsp), %rbx
addq $0x10, %rbx
movslq 0x108(%rbp), %rax
movq 0x58(%rbp), %rcx
leaq (%rax,%rax,2), %rdx
cmpq -0x10(%rcx,%rdx,8), %rbx
leaq 0xc0(%rsp), %r15
jne 0x127de
jmp 0x1449b
movq 0x90(%rsp), %rax
movq (%rax), %rsi
movq %r15, 0x330(%rsp)
movq %r12, 0x338(%rsp)
testq %r12, %r12
leaq 0xd0(%rsp), %r14
je 0x14437
movq 0x10b9b(%rip), %rax     # 0x24fc0
cmpb $0x0, (%rax)
je 0x14431
incl 0x8(%r12)
jmp 0x14437
lock
incl 0x8(%r12)
leaq 0xc0(%rsp), %rdi
leaq 0x330(%rsp), %rdx
callq 0x1aa60
movapd 0xc0(%rsp), %xmm0
xorpd %xmm1, %xmm1
movapd %xmm1, 0xc0(%rsp)
movq 0x90(%rsp), %rax
movq 0x8(%rax), %rdi
movupd %xmm0, (%rax)
testq %rdi, %rdi
je 0x1447c
callq 0x7828
movq 0xc8(%rsp), %rdi
testq %rdi, %rdi
je 0x1448e
callq 0x7828
movq 0x338(%rsp), %rdi
jmp 0x13ac3
movq 0x70(%rbp), %rcx
leaq (%rax,%rax,2), %rax
movq -0x18(%rcx,%rax,8), %rbx
cmpq -0x10(%rcx,%rax,8), %rbx
je 0x14b63
movq %rsp, %r13
leaq 0x10483(%rip), %r12     # 0x24940
movq (%rbx), %rsi
movq %r13, %rdi
callq 0x1aa0e
movq (%rsp), %rdi
movq %r12, %rsi
leaq 0xffda(%rip), %rdx      # 0x244b0
xorl %ecx, %ecx
callq 0x5230
movq 0x8(%rsp), %r15
testq %r15, %r15
je 0x144fe
movq 0x10ad2(%rip), %rcx     # 0x24fc0
cmpb $0x0, (%rcx)
je 0x144f9
incl 0x8(%r15)
jmp 0x144fe
lock
incl 0x8(%r15)
leaq 0xc0(%rsp), %rdi
movq %rax, %rsi
callq 0x182ee
movq 0xc0(%rsp), %rdi
callq 0x16848
movl %eax, %ebp
movq 0xc8(%rsp), %rdi
testq %rdi, %rdi
je 0x1452f
callq 0x7828
testq %r15, %r15
je 0x1453c
movq %r15, %rdi
callq 0x7828
movq 0x8(%rsp), %rdi
testq %rdi, %rdi
je 0x1454b
callq 0x7828
testb %bpl, %bpl
movq 0x28(%rsp), %r14
je 0x14b39
movq 0xb8(%r14), %rdi
callq 0x1a8d6
movq %rax, %r15
movq (%rbx), %rsi
movq %r13, %rdi
callq 0x1aa0e
movq (%rsp), %rdi
movq %r12, %rsi
leaq 0xff2f(%rip), %rdx      # 0x244b0
xorl %ecx, %ecx
callq 0x5230
movq 0x8(%rsp), %r12
testq %r12, %r12
je 0x145ab
movq 0x10a27(%rip), %rcx     # 0x24fc0
cmpb $0x0, (%rcx)
je 0x145a5
incl 0x8(%r12)
jmp 0x145ab
lock
incl 0x8(%r12)
leaq 0xc0(%rsp), %rdi
movq %rax, %rsi
callq 0x1831a
movq 0xc0(%rsp), %rdi
callq 0x1a8d6
movq %rax, %rbp
movq 0xc8(%rsp), %rdi
testq %rdi, %rdi
je 0x145dd
callq 0x7828
testq %r12, %r12
je 0x145ea
movq %r12, %rdi
callq 0x7828
movq 0x8(%rsp), %rdi
testq %rdi, %rdi
je 0x145f9
callq 0x7828
movq (%rbx), %rdi
callq 0x1a8d6
leaq 0x10338(%rip), %r12     # 0x24940
movq %r15, %rcx
shrq $0x20, %rcx
movq %rbp, %rdx
shrq $0x20, %rdx
movq %rax, %rsi
shrq $0x20, %rsi
movd %r15d, %xmm0
pshufd $0x50, %xmm0, %xmm0     # xmm0 = xmm0[0,0,1,1]
movd %ebp, %xmm1
movd %eax, %xmm2
punpckldq %xmm1, %xmm2    # xmm2 = xmm2[0],xmm1[0],xmm2[1],xmm1[1]
psubd %xmm2, %xmm0
cvtdq2pd %xmm0, %xmm0
movd %ecx, %xmm1
pshufd $0x50, %xmm1, %xmm1     # xmm1 = xmm1[0,0,1,1]
movd %edx, %xmm2
movd %esi, %xmm3
punpckldq %xmm2, %xmm3    # xmm3 = xmm3[0],xmm2[0],xmm3[1],xmm2[1]
psubd %xmm3, %xmm1
cvtdq2pd %xmm1, %xmm1
mulpd %xmm0, %xmm0
mulpd %xmm1, %xmm1
addpd %xmm0, %xmm1
sqrtpd %xmm1, %xmm0
movapd %xmm0, 0x3d0(%rsp)
callq 0x5350
movapd %xmm0, 0x90(%rsp)
movapd 0x3d0(%rsp), %xmm0
unpckhpd %xmm0, %xmm0            # xmm0 = xmm0[1,1]
callq 0x5350
movapd 0x90(%rsp), %xmm1
unpcklpd %xmm0, %xmm1            # xmm1 = xmm1[0],xmm0[0]
cmpeqpd 0x7619(%rip), %xmm1     # 0x1bcc0
movmskpd %xmm1, %eax
testl %eax, %eax
movq 0x28(%rsp), %r14
je 0x14b39
movq 0xb8(%r14), %rsi
leaq 0xc0(%rsp), %rdi
callq 0x1a98e
movq 0xc0(%rsp), %rdi
callq 0x167e2
movsd %xmm0, 0x90(%rsp)
movq 0xc8(%rsp), %rdi
testq %rdi, %rdi
je 0x146f4
callq 0x7828
leaq 0xc0(%rsp), %rdi
callq 0x5150
movq 0xd0(%rsp), %rax
movq -0x18(%rax), %rcx
movl 0xe8(%rsp,%rcx), %edx
movl $0xfffffefb, %esi       # imm = 0xFFFFFEFB
andl %esi, %edx
orl $0x4, %edx
movl %edx, 0xe8(%rsp,%rcx)
movq -0x18(%rax), %rax
movq $0x2, 0xd8(%rsp,%rax)
movq 0xf8(%r14), %rdi
callq 0x167e2
movsd 0x90(%rsp), %xmm1
subsd %xmm0, %xmm1
leaq 0xd0(%rsp), %rdi
movapd %xmm1, %xmm0
callq 0x5310
movq 0xb8(%r14), %rsi
movq %r13, %rdi
callq 0x1a98e
movq (%rsp), %rdi
testq %rdi, %rdi
je 0x147b7
leaq 0xfd4a(%rip), %rsi      # 0x244c8
leaq 0x1031b(%rip), %rdx     # 0x24aa0
xorl %ecx, %ecx
callq 0x5230
movl $0x0, %r12d
movl $0x0, %ebp
testq %rax, %rax
je 0x147ca
movq 0x8(%rsp), %rbp
testq %rbp, %rbp
je 0x147bc
movq 0x10813(%rip), %rcx     # 0x24fc0
cmpb $0x0, (%rcx)
je 0x147c3
incl 0x8(%rbp)
jmp 0x147c7
xorl %r12d, %r12d
jmp 0x147bf
movq %rax, %r12
xorl %ebp, %ebp
jmp 0x147ca
lock
incl 0x8(%rbp)
movq %rax, %r12
movq (%rbx), %rsi
leaq 0x50(%rsp), %rdi
callq 0x1aa0e
movq 0x50(%rsp), %rsi
movq 0x58(%rsp), %r15
testq %r15, %r15
je 0x147fd
movq 0x107d3(%rip), %rax     # 0x24fc0
cmpb $0x0, (%rax)
je 0x147f8
incl 0x8(%r15)
jmp 0x147fd
lock
incl 0x8(%r15)
leaq 0x30(%rsp), %rdi
callq 0x182ee
movq 0x30(%rsp), %rsi
testq %rsi, %rsi
je 0x14831
movq 0x38(%rsp), %r13
testq %r13, %r13
je 0x14831
movq 0x1079e(%rip), %rax     # 0x24fc0
cmpb $0x0, (%rax)
je 0x14b59
incl 0x8(%r13)
jmp 0x14834
xorl %r13d, %r13d
movq (%r12), %rax
movq %r12, %rdi
callq *0x8(%rax)
movl %eax, %r12d
testq %r13, %r13
je 0x1484e
movq %r13, %rdi
callq 0x7828
movq 0x38(%rsp), %rdi
testq %rdi, %rdi
je 0x1485d
callq 0x7828
testq %r15, %r15
leaq 0x40(%rsp), %r13
je 0x1486f
movq %r15, %rdi
callq 0x7828
movq 0x58(%rsp), %rdi
testq %rdi, %rdi
je 0x1487e
callq 0x7828
testq %rbp, %rbp
je 0x1488b
movq %rbp, %rdi
callq 0x7828
movq 0x8(%rsp), %rdi
testq %rdi, %rdi
je 0x1489a
callq 0x7828
movq 0x28(%rsp), %r14
movq 0xb8(%r14), %rsi
leaq 0x2c0(%rsp), %rdi
callq 0x1a98e
movq 0x2c0(%rsp), %rsi
movq (%rsi), %rax
leaq 0x248(%rsp), %r15
movq %r15, %rdi
callq *(%rax)
movq %r15, %rdi
leaq 0x760c(%rip), %rsi      # 0x1bee1
callq 0x53c0
leaq 0x60(%rsp), %rsi
movq %rsi, 0x50(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x14902
movq %rdx, 0x50(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x60(%rsp)
jmp 0x1490a
movupd (%rcx), %xmm0
movupd %xmm0, (%rsi)
movq 0x8(%rax), %rdx
movq %rdx, 0x58(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0xa0(%rsp), %rdi
leaq 0xd8(%rsp), %rsi
callq 0x5300
movq 0x50(%rsp), %rcx
movl $0xf, %edi
leaq 0x60(%rsp), %rax
cmpq %rax, %rcx
je 0x14950
movq 0x60(%rsp), %rdi
movq 0x58(%rsp), %r8
movq 0xa0(%rsp), %rsi
movq 0xa8(%rsp), %rdx
leaq (%rdx,%r8), %rax
cmpq %rdi, %rax
jbe 0x1498d
movl $0xf, %edi
leaq 0xb0(%rsp), %r9
cmpq %r9, %rsi
je 0x14988
movq 0xb0(%rsp), %rdi
cmpq %rdi, %rax
jbe 0x14999
leaq 0x50(%rsp), %rdi
callq 0x50b0
jmp 0x149aa
leaq 0xa0(%rsp), %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x5220
movq %r13, 0x30(%rsp)
movq (%rax), %rdx
leaq 0x10(%rax), %rcx
cmpq %rcx, %rdx
je 0x149ca
movq %rdx, 0x30(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x40(%rsp)
jmp 0x149d4
movupd (%rcx), %xmm0
movupd %xmm0, (%r13)
movq %rax, %rdx
addq $0x8, %rdx
movq 0x8(%rax), %rsi
movq %rsi, 0x38(%rsp)
movq %rcx, (%rax)
movq $0x0, (%rdx)
movb $0x0, (%rcx)
leaq 0x30(%rsp), %rdi
leaq 0x74c7(%rip), %rsi      # 0x1bec4
callq 0x53c0
leaq 0x10(%rsp), %rsi
movq %rsi, (%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x14a28
movq %rdx, (%rsp)
movq (%rcx), %rdx
movq %rdx, 0x10(%rsp)
jmp 0x14a30
movupd (%rcx), %xmm0
movupd %xmm0, (%rsi)
movq 0x8(%rax), %rdx
movq %rdx, 0x8(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq (%rsp), %rsi
movq 0x8(%rsp), %rdx
leaq 0x70(%rsp), %rdi
callq 0x50b0
movq (%rsp), %rdi
leaq 0x10(%rsp), %rax
cmpq %rax, %rdi
je 0x14a76
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x51f0
movq 0x30(%rsp), %rdi
cmpq %r13, %rdi
je 0x14a8d
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x51f0
movq 0xa0(%rsp), %rdi
leaq 0xb0(%rsp), %rax
cmpq %rax, %rdi
je 0x14ab2
movq 0xb0(%rsp), %rsi
incq %rsi
callq 0x51f0
movq 0x50(%rsp), %rdi
leaq 0x60(%rsp), %rax
cmpq %rax, %rdi
je 0x14ace
movq 0x60(%rsp), %rsi
incq %rsi
callq 0x51f0
movq 0x248(%rsp), %rdi
leaq 0x258(%rsp), %rax
cmpq %rax, %rdi
je 0x14af3
movq 0x258(%rsp), %rsi
incq %rsi
callq 0x51f0
movq 0x2c8(%rsp), %rdi
testq %rdi, %rdi
je 0x14b05
callq 0x7828
testb %r12b, %r12b
jne 0x14c20
leaq 0xc0(%rsp), %rdi
movq 0x10483(%rip), %rsi     # 0x24fa0
callq 0x5170
leaq 0x140(%rsp), %rdi
callq 0x50c0
movq %rsp, %r13
leaq 0xfe07(%rip), %r12      # 0x24940
addq $0x10, %rbx
movslq 0x108(%r14), %rax
movq 0x70(%r14), %rcx
leaq (%rax,%rax,2), %rax
cmpq -0x10(%rcx,%rax,8), %rbx
jne 0x144bd
jmp 0x14b63
lock
incl 0x8(%r13)
jmp 0x14834
movq 0x268(%rsp), %rsi
leaq 0x10(%rsi), %rax
movq %rax, (%rsi)
movq 0x70(%rsp), %rcx
leaq 0x80(%rsp), %rdx
cmpq %rdx, %rcx
je 0x14b95
movq %rcx, (%rsi)
movq 0x80(%rsp), %rax
movq %rax, 0x10(%rsi)
jmp 0x14b9d
movupd (%rdx), %xmm0
movupd %xmm0, (%rax)
movq 0x78(%rsp), %rax
movq %rax, 0x8(%rsi)
movq %rdx, 0x70(%rsp)
movq $0x0, 0x78(%rsp)
movb $0x0, 0x80(%rsp)
movq %rdx, %rbx
jmp 0x14d2f
movq 0xb8(%rbp), %rsi
leaq 0x50(%rsp), %rdi
callq 0x1a98e
movq 0x50(%rsp), %rsi
movq (%rsi), %rax
leaq 0x30(%rsp), %rdi
callq *(%rax)
leaq 0x40(%rsp), %rbx
leaq 0x10(%rsp), %r15
leaq 0x72d4(%rip), %rsi      # 0x1bec9
leaq 0x30(%rsp), %rdi
callq 0x53c0
movq %r15, (%rsp)
movq (%rax), %rsi
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rsi
je 0x14c7e
movq %rsi, (%rsp)
movq (%rcx), %rdx
movq %rdx, 0x10(%rsp)
jmp 0x14c8a
movq 0xb8(%r14), %rsi
leaq 0x50(%rsp), %rdi
callq 0x1a98e
movq 0x50(%rsp), %rsi
movq (%rsi), %rax
leaq 0x30(%rsp), %rdi
callq *(%rax)
leaq 0x10(%rsp), %rbx
leaq 0x727d(%rip), %rsi      # 0x1bec9
leaq 0x30(%rsp), %rdi
callq 0x53c0
movq %rbx, (%rsp)
movq (%rax), %rsi
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rsi
je 0x14d63
movq %rsi, (%rsp)
movq (%rcx), %rdx
movq %rdx, 0x10(%rsp)
jmp 0x14d6e
movupd (%rcx), %xmm0
movupd %xmm0, (%r15)
movq %r15, %rsi
movq 0x8(%rax), %rdx
movq %rdx, 0x8(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0x70(%rsp), %rdi
callq 0x50b0
movq 0x268(%rsp), %rdi
leaq 0x10(%rdi), %rcx
movq %rcx, (%rdi)
movq (%rax), %rsi
movq 0x8(%rax), %rdx
addq %rsi, %rdx
callq 0x7898
movq (%rsp), %rdi
cmpq %r15, %rdi
je 0x14ce0
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x51f0
movq 0x30(%rsp), %rdi
cmpq %rbx, %rdi
je 0x14cf7
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x51f0
movq 0x58(%rsp), %rdi
testq %rdi, %rdi
je 0x14d06
callq 0x7828
movq 0x10293(%rip), %rsi     # 0x24fa0
leaq 0xc0(%rsp), %rdi
callq 0x5170
leaq 0x140(%rsp), %rdi
callq 0x50c0
leaq 0x80(%rsp), %rbx
movq 0x70(%rsp), %rdi
cmpq %rbx, %rdi
je 0x14d49
movq 0x80(%rsp), %rsi
incq %rsi
callq 0x51f0
movq 0x268(%rsp), %rax
addq $0x3f8, %rsp            # imm = 0x3F8
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movupd (%rcx), %xmm0
movupd %xmm0, (%rbx)
movq %rbx, %rsi
movq 0x8(%rax), %rdx
movq %rdx, 0x8(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0x70(%rsp), %rdi
callq 0x50b0
movq 0x268(%rsp), %rdi
leaq 0x10(%rdi), %rcx
movq %rcx, (%rdi)
movq (%rax), %rsi
movq 0x8(%rax), %rdx
addq %rsi, %rdx
callq 0x7898
movq (%rsp), %rdi
cmpq %rbx, %rdi
je 0x14dc4
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x51f0
movq 0x30(%rsp), %rdi
cmpq %r13, %rdi
jne 0x14cea
jmp 0x14cf7
jmp 0x15004
jmp 0x14fd5
jmp 0x14fd5
jmp 0x15004
jmp 0x14fd5
jmp 0x15004
jmp 0x15004
jmp 0x15004
jmp 0x15004
jmp 0x14fd5
jmp 0x14fd5
jmp 0x15004
jmp 0x14fd5
jmp 0x14fd5
jmp 0x15004
jmp 0x15004
jmp 0x14fd5
jmp 0x14fd5
jmp 0x15004
jmp 0x14fd5
jmp 0x15004
jmp 0x14fd5
jmp 0x15004
jmp 0x14fd5
jmp 0x14fd5
jmp 0x15004
jmp 0x15004
jmp 0x14fd5
jmp 0x15004
jmp 0x14fd5
jmp 0x15004
jmp 0x14fd5
jmp 0x15004
jmp 0x14fd5
jmp 0x14fd5
jmp 0x15004
jmp 0x14fd5
jmp 0x15004
jmp 0x15004
jmp 0x14fd5
jmp 0x15004
jmp 0x14fd5
jmp 0x15004
jmp 0x14fd5
jmp 0x15004
jmp 0x14fd5
jmp 0x14f10
jmp 0x14f15
jmp 0x153df
jmp 0x14fd5
jmp 0x15004
jmp 0x15004
jmp 0x14fd5
jmp 0x15004
jmp 0x14fd5
jmp 0x14fd5
jmp 0x15004
jmp 0x14fd5
jmp 0x15004
jmp 0x14fd5
jmp 0x15004
movq %rax, %r14
movq (%rsp), %rdi
cmpq %rbx, %rdi
jne 0x14f59
jmp 0x14f66
movq %rax, %r14
jmp 0x14f66
movq %rax, %r14
jmp 0x14f82
jmp 0x153df
movq %rax, %r14
movq 0x338(%rsp), %rdi
jmp 0x154a1
jmp 0x15004
jmp 0x1500b
jmp 0x15004
jmp 0x1500b
jmp 0x1500b
jmp 0x15004
movq %rax, %r14
movq (%rsp), %rdi
cmpq %r15, %rdi
je 0x14f66
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x51f0
movq 0x30(%rsp), %rdi
leaq 0x40(%rsp), %rax
cmpq %rax, %rdi
je 0x14f82
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x51f0
movq 0x58(%rsp), %rdi
jmp 0x1538b
movq %rax, %r14
movq %rbx, %rax
jmp 0x1550c
movq %rax, %r14
movq 0x368(%rsp), %rdi
jmp 0x154a1
movq %rax, %r14
movq 0x2e8(%rsp), %rdi
jmp 0x154a1
jmp 0x14fd5
jmp 0x15004
jmp 0x14fd5
jmp 0x15004
jmp 0x14fd5
jmp 0x14fd5
jmp 0x15004
jmp 0x14fd5
jmp 0x14fd5
jmp 0x15004
jmp 0x15004
jmp 0x15004
jmp 0x14fd5
jmp 0x15004
jmp 0x15004
movq %r14, %rcx
movq %rax, %r14
movq 0xc0(%rsp), %rdi
cmpq %rcx, %rdi
jne 0x1501b
jmp 0x1502b
jmp 0x15004
jmp 0x1500b
jmp 0x1500b
jmp 0x15004
jmp 0x1500b
jmp 0x15004
jmp 0x1500b
jmp 0x1500b
jmp 0x1500b
jmp 0x15004
jmp 0x15004
jmp 0x15004
jmp 0x15004
movq %rax, %r14
jmp 0x1502b
jmp 0x1500b
movq %rax, %r14
movq 0xc0(%rsp), %rdi
cmpq %rbx, %rdi
je 0x1502b
movq 0xd0(%rsp), %rsi
incq %rsi
callq 0x51f0
movq %rsp, %rdi
callq 0x77ca
jmp 0x15504
jmp 0x153d7
movq %rax, %r14
jmp 0x1512e
movq %rax, %r14
jmp 0x1514a
movq %rax, %r14
jmp 0x1516f
jmp 0x153df
movq %rax, %r14
testq %r13, %r13
je 0x1506a
movq %r13, %rdi
callq 0x7828
movq 0x38(%rsp), %rdi
testq %rdi, %rdi
je 0x1507e
callq 0x7828
jmp 0x1507e
movq %rax, %r14
testq %r15, %r15
je 0x1508b
movq %r15, %rdi
callq 0x7828
movq 0x58(%rsp), %rdi
testq %rdi, %rdi
je 0x1509f
callq 0x7828
jmp 0x1509f
movq %rax, %r14
testq %rbp, %rbp
je 0x150ac
movq %rbp, %rdi
callq 0x7828
movq 0x8(%rsp), %rdi
jmp 0x1538b
jmp 0x153df
movq %rax, %r14
movq (%rsp), %rdi
leaq 0x10(%rsp), %rax
cmpq %rax, %rdi
je 0x150e3
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x51f0
jmp 0x150e3
jmp 0x153d7
movq %rax, %r14
movq 0x30(%rsp), %rdi
leaq 0x40(%rsp), %rax
cmpq %rax, %rdi
je 0x15109
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x51f0
jmp 0x15109
jmp 0x152b8
movq %rax, %r14
movq 0xa0(%rsp), %rdi
leaq 0xb0(%rsp), %rax
cmpq %rax, %rdi
je 0x1512e
movq 0xb0(%rsp), %rsi
incq %rsi
callq 0x51f0
movq 0x50(%rsp), %rdi
leaq 0x60(%rsp), %rax
cmpq %rax, %rdi
je 0x1514a
movq 0x60(%rsp), %rsi
incq %rsi
callq 0x51f0
movq 0x248(%rsp), %rdi
leaq 0x258(%rsp), %rax
cmpq %rax, %rdi
je 0x1516f
movq 0x258(%rsp), %rsi
incq %rsi
callq 0x51f0
movq 0x2c8(%rsp), %rdi
jmp 0x1538b
jmp 0x153df
jmp 0x153d7
movq %rax, %r14
movq 0xc8(%rsp), %rdi
testq %rdi, %rdi
je 0x151a0
callq 0x7828
jmp 0x151a0
movq %rax, %r14
testq %r12, %r12
je 0x153c2
movq %r12, %rdi
jmp 0x153bd
jmp 0x153d7
jmp 0x153d7
movq %rax, %r14
jmp 0x15383
jmp 0x153d7
movq %rax, %r14
jmp 0x15268
movq %rax, %r14
jmp 0x15339
movq %rax, %r14
testq %rbx, %rbx
je 0x151e8
movq %rbx, %rdi
callq 0x7828
movq 0x8(%rsp), %rdi
testq %rdi, %rdi
je 0x151fc
callq 0x7828
jmp 0x151fc
movq %rax, %r14
testq %r12, %r12
je 0x152bb
movq %r12, %rdi
callq 0x7828
jmp 0x152bb
jmp 0x153d7
movq %rax, %r14
jmp 0x152f5
movq %rax, %r14
movq (%rsp), %rdi
leaq 0x10(%rsp), %rax
cmpq %rax, %rdi
je 0x1524c
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x51f0
jmp 0x1524c
jmp 0x153df
jmp 0x153d7
movq %rax, %r14
movq 0x30(%rsp), %rdi
leaq 0x40(%rsp), %rax
cmpq %rax, %rdi
je 0x15268
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x51f0
movq 0x280(%rsp), %rdi
leaq 0x290(%rsp), %rax
cmpq %rax, %rdi
je 0x15292
movq 0x290(%rsp), %rsi
incq %rsi
callq 0x51f0
jmp 0x15292
movq %rax, %r14
movq 0x50(%rsp), %rdi
leaq 0x60(%rsp), %rax
cmpq %rax, %rdi
je 0x152d0
movq 0x60(%rsp), %rsi
incq %rsi
callq 0x51f0
jmp 0x152d0
movq %rax, %r14
jmp 0x1535e
movq %rax, %r14
movq 0xc8(%rsp), %rdi
jmp 0x153c7
movq %rax, %r14
jmp 0x1531a
movq %rax, %r14
movq 0x248(%rsp), %rdi
leaq 0x258(%rsp), %rax
cmpq %rax, %rdi
je 0x152f5
movq 0x258(%rsp), %rsi
incq %rsi
callq 0x51f0
movq 0x2a0(%rsp), %rdi
leaq 0x2b0(%rsp), %rax
cmpq %rax, %rdi
je 0x1531a
movq 0x2b0(%rsp), %rsi
incq %rsi
callq 0x51f0
testq %r12, %r12
je 0x15327
movq %r12, %rdi
callq 0x7828
movq 0x358(%rsp), %rdi
testq %rdi, %rdi
je 0x15339
callq 0x7828
movq 0xa0(%rsp), %rdi
leaq 0xb0(%rsp), %rax
cmpq %rax, %rdi
je 0x1535e
movq 0xb0(%rsp), %rsi
incq %rsi
callq 0x51f0
movq 0x2c0(%rsp), %rdi
leaq 0x2d0(%rsp), %rax
cmpq %rax, %rdi
je 0x15383
movq 0x2d0(%rsp), %rsi
incq %rsi
callq 0x51f0
movq 0x3f0(%rsp), %rdi
testq %rdi, %rdi
je 0x153e2
callq 0x7828
jmp 0x153e2
jmp 0x153d7
jmp 0x153d7
movq %rax, %r14
movq 0xc8(%rsp), %rdi
testq %rdi, %rdi
je 0x153b5
callq 0x7828
jmp 0x153b5
movq %rax, %r14
testq %r15, %r15
je 0x153c2
movq %r15, %rdi
callq 0x7828
movq 0x8(%rsp), %rdi
testq %rdi, %rdi
jne 0x154ff
jmp 0x15504
jmp 0x153d7
movq %rax, %r14
jmp 0x15504
movq %rax, %r14
movq 0xfbb7(%rip), %rsi      # 0x24fa0
leaq 0xc0(%rsp), %rdi
callq 0x5170
leaq 0x140(%rsp), %rdi
callq 0x50c0
jmp 0x15504
movq %rax, %r14
movq 0x278(%rsp), %rdi
jmp 0x154a1
movq %rax, %r14
jmp 0x15445
movq %rax, %r14
movq 0x3b0(%rsp), %rdi
leaq 0x3c0(%rsp), %rax
cmpq %rax, %rdi
je 0x15445
movq 0x3c0(%rsp), %rsi
incq %rsi
callq 0x51f0
movq 0x348(%rsp), %rdi
jmp 0x154e5
movq %rax, %r14
movq 0x378(%rsp), %rdi
jmp 0x154a1
movq %rax, %r14
movq 0x380(%rsp), %rdi
leaq 0x390(%rsp), %rax
cmpq %rax, %rdi
je 0x1548c
movq 0x390(%rsp), %rsi
incq %rsi
callq 0x51f0
jmp 0x1548c
movq %rax, %r14
movq 0x3a8(%rsp), %rdi
jmp 0x154e5
movq %rax, %r14
movq 0x2f8(%rsp), %rdi
testq %rdi, %rdi
je 0x154ab
callq 0x7828
movq %r12, %r13
jmp 0x154ef
movq %rax, %r14
jmp 0x154dd
movq %rax, %r14
movq 0x300(%rsp), %rdi
leaq 0x310(%rsp), %rax
cmpq %rax, %rdi
je 0x154dd
movq 0x310(%rsp), %rsi
incq %rsi
callq 0x51f0
movq 0x328(%rsp), %rdi
testq %rdi, %rdi
je 0x154ef
callq 0x7828
movq %rsp, %rdi
callq 0x77ca
testq %r13, %r13
je 0x15504
movq %r13, %rdi
callq 0x7828
leaq 0x80(%rsp), %rax
movq 0x70(%rsp), %rdi
cmpq %rax, %rdi
je 0x15526
movq 0x80(%rsp), %rsi
incq %rsi
callq 0x51f0
movq %r14, %rdi
callq 0x5380