// File: /workspace/github_cpp_makefile_star2_O1/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 $0x3e8, %rsp            # imm = 0x3E8
movq %rsi, %r14
movq %rdi, %rbx
leaq 0x58(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0xa278(%rip), %rdx      # 0x1ce4f
leaq 0x48(%rsp), %rdi
movq %rdx, %rsi
callq 0x7a9c
cmpb $0x1, 0x10d(%r14)
movq %rbx, 0x88(%rsp)
jne 0x12c18
leaq 0x10(%rbx), %rax
movq %rax, (%rbx)
leaq 0xa261(%rip), %rsi      # 0x1ce65
leaq 0xa26a(%rip), %rdx      # 0x1ce75
movq %rbx, %rdi
callq 0x7a9c
jmp 0x1522f
movslq 0x108(%r14), %rax
movq 0x58(%r14), %rcx
leaq (%rax,%rax,2), %rax
movq -0x18(%rcx,%rax,8), %rbp
cmpq -0x10(%rcx,%rax,8), %rbp
je 0x14a00
leaq 0xc0(%rsp), %r13
movq 0x88(%rsp), %rax
addq $0x10, %rax
movq %rax, 0x3d0(%rsp)
leaq 0xb0(%rsp), %r15
movq (%rbp), %rsi
movq %r15, %rdi
callq 0x1ae4e
movq 0xb0(%rsp), %rdi
testq %rdi, %rdi
je 0x12c91
leaq 0x1284d(%rip), %rsi     # 0x254c8
leaq 0x12af6(%rip), %rdx     # 0x25778
xorl %ecx, %ecx
callq 0x5240
testq %rax, %rax
sete %bl
jmp 0x12c93
movb $0x1, %bl
testb %bl, %bl
je 0x12c9b
xorl %edi, %edi
jmp 0x12cbd
movq 0xb8(%rsp), %rdi
testq %rdi, %rdi
je 0x12cbd
movq 0x13311(%rip), %rax     # 0x25fc0
cmpb $0x0, (%rax)
je 0x12cb9
incl 0x8(%rdi)
jmp 0x12cbd
lock
incl 0x8(%rdi)
testq %rdi, %rdi
je 0x12cc7
callq 0x78e4
movq 0xb8(%rsp), %rdi
testq %rdi, %rdi
je 0x12cd9
callq 0x78e4
testb %bl, %bl
movq %rbp, 0x20(%rsp)
jne 0x12cf0
cmpb $0x0, 0x10c(%r14)
je 0x13246
movq 0xb8(%r14), %rdi
callq 0x1ad96
movq %rax, %rbx
movq %r13, %r12
movq (%rbp), %rdi
callq 0x1ad96
movq %rax, %r15
movq %rbx, %rax
shrq $0x20, %rbx
movl %r15d, %edx
shrq $0x20, %r15
movq %rax, 0x240(%rsp)
movl %eax, %r13d
movl %edx, 0x26c(%rsp)
subl %edx, %r13d
cvtsi2sd %r13d, %xmm1
mulsd %xmm1, %xmm1
movl %ebx, %ebp
subl %r15d, %ebp
cvtsi2sd %ebp, %xmm0
mulsd %xmm0, %xmm0
addsd %xmm1, %xmm0
ucomisd 0x97b5(%rip), %xmm0     # 0x1c508
jb 0x12d5b
sqrtsd %xmm0, %xmm0
jmp 0x12d60
callq 0x5190
callq 0x5360
ucomisd 0x9793(%rip), %xmm0     # 0x1c500
jne 0x12e00
jp 0x12e00
movq 0xb8(%r14), %rsi
leaq 0xb0(%rsp), %rbx
movq %rbx, %rdi
callq 0x1ae4e
movq 0xb0(%rsp), %rdi
callq 0x16c1a
movsd %xmm0, 0x240(%rsp)
leaq 0x258(%rsp), %rbp
movq %r12, %r13
movq 0xb8(%rsp), %rdi
testq %rdi, %rdi
je 0x12dc3
callq 0x78e4
movq 0xb8(%r14), %rsi
movq %rbx, %rdi
callq 0x1ae4e
movq 0xb0(%rsp), %rdi
testq %rdi, %rdi
je 0x1361b
leaq 0x126de(%rip), %rsi     # 0x254c8
leaq 0x12caf(%rip), %rdx     # 0x25aa0
xorl %ecx, %ecx
callq 0x5240
movq %rax, %r15
jmp 0x1361e
cmpb $0x1, 0xa8(%r14)
jne 0x12e20
xorps %xmm1, %xmm1
cvtsi2sdl 0xac(%r14), %xmm1
ucomisd %xmm0, %xmm1
jae 0x136b3
xorpd %xmm0, %xmm0
movapd %xmm0, (%rsp)
movq $0x0, 0x10(%rsp)
movq %r12, %r13
movq %r12, 0xb0(%rsp)
leaq 0xb0(%rsp), %rbx
movq %rbx, %rdi
leaq 0x94b2(%rip), %rsi      # 0x1c301
leaq 0x94ad(%rip), %rdx      # 0x1c303
callq 0x7a9c
movq %rsp, %r15
movq %r15, %rdi
movq %rbx, %rsi
callq 0x1618e
movq 0xb0(%rsp), %rdi
cmpq %r13, %rdi
je 0x12e86
movq 0xc0(%rsp), %rsi
incq %rsi
callq 0x5200
movq %r13, 0xb0(%rsp)
movq %rbx, %rdi
leaq 0x946f(%rip), %rsi      # 0x1c307
leaq 0x946a(%rip), %rdx      # 0x1c309
callq 0x7a9c
movq %r15, %rdi
movq %rbx, %rsi
callq 0x1618e
movq 0xb0(%rsp), %rdi
cmpq %r13, %rdi
je 0x12ecc
movq 0xc0(%rsp), %rsi
incq %rsi
callq 0x5200
movq %r13, 0xb0(%rsp)
movq %rbx, %rdi
leaq 0x9426(%rip), %rsi      # 0x1c304
leaq 0x9421(%rip), %rdx      # 0x1c306
callq 0x7a9c
movq %r15, %rdi
movq %rbx, %rsi
callq 0x1618e
movq 0xb0(%rsp), %rdi
cmpq %r13, %rdi
je 0x12f12
movq 0xc0(%rsp), %rsi
incq %rsi
callq 0x5200
movq %r13, 0xb0(%rsp)
movq %rbx, %rdi
leaq 0x93e6(%rip), %rsi      # 0x1c30a
leaq 0x93e1(%rip), %rdx      # 0x1c30c
callq 0x7a9c
movq %r15, %rdi
movq %rbx, %rsi
callq 0x1618e
movq 0xb0(%rsp), %rdi
cmpq %r13, %rdi
je 0x12f58
movq 0xc0(%rsp), %rsi
incq %rsi
callq 0x5200
movq %r13, 0xb0(%rsp)
movq %rbx, %rdi
leaq 0x93a3(%rip), %rsi      # 0x1c30d
leaq 0x939e(%rip), %rdx      # 0x1c30f
callq 0x7a9c
movq %r15, %rdi
movq %rbx, %rsi
callq 0x1618e
movq 0xb0(%rsp), %rdi
cmpq %r13, %rdi
je 0x12f9e
movq 0xc0(%rsp), %rsi
incq %rsi
callq 0x5200
movq %r13, 0xb0(%rsp)
movq %rbx, %rdi
leaq 0x9360(%rip), %rsi      # 0x1c310
leaq 0x935b(%rip), %rdx      # 0x1c312
callq 0x7a9c
movq %r15, %rdi
movq %rbx, %rsi
callq 0x1618e
movq 0xb0(%rsp), %rdi
cmpq %r13, %rdi
je 0x12fe4
movq 0xc0(%rsp), %rsi
incq %rsi
callq 0x5200
movq %r13, 0xb0(%rsp)
movq %rbx, %rdi
leaq 0x931d(%rip), %rsi      # 0x1c313
leaq 0x9318(%rip), %rdx      # 0x1c315
callq 0x7a9c
movq %r15, %rdi
movq %rbx, %rsi
callq 0x1618e
movq 0xb0(%rsp), %rdi
cmpq %r13, %rdi
je 0x1302a
movq 0xc0(%rsp), %rsi
incq %rsi
callq 0x5200
movq %r13, 0xb0(%rsp)
movq %rbx, %rdi
leaq 0x92da(%rip), %rsi      # 0x1c316
leaq 0x92d5(%rip), %rdx      # 0x1c318
callq 0x7a9c
movq %r15, %rdi
movq %rbx, %rsi
callq 0x1618e
movq 0xb0(%rsp), %rdi
cmpq %r13, %rdi
je 0x13070
movq 0xc0(%rsp), %rsi
incq %rsi
callq 0x5200
xorl %ebx, %ebx
xorl %ebp, %ebp
movq %rbx, %r15
callq 0x5080
cltq
movq 0x8(%rsp), %rcx
subq (%rsp), %rcx
sarq $0x5, %rcx
xorl %edx, %edx
divq %rcx
movq 0x20(%rsp), %rcx
movq (%rcx), %rax
movq %rax, 0x2f0(%rsp)
movq 0x8(%rcx), %rax
movq %rax, 0x2f8(%rsp)
testq %rax, %rax
leaq 0x370(%rsp), %rbx
je 0x130ce
movq 0x12f00(%rip), %rcx     # 0x25fc0
cmpb $0x0, (%rcx)
je 0x130ca
incl 0x8(%rax)
jmp 0x130ce
lock
incl 0x8(%rax)
movq (%rsp), %rax
movslq %edx, %rcx
shlq $0x5, %rcx
leaq 0x380(%rsp), %rdx
movq %rdx, 0x370(%rsp)
movq (%rax,%rcx), %rsi
movq 0x8(%rax,%rcx), %rdx
addq %rsi, %rdx
movq %rbx, %rdi
callq 0x7954
leaq 0xb0(%rsp), %rdi
movq %r14, %rsi
leaq 0x2f0(%rsp), %rdx
movq %rbx, %rcx
callq 0xebb4
movq 0xb0(%rsp), %r12
movq 0xb8(%rsp), %rbx
xorpd %xmm0, %xmm0
movapd %xmm0, 0xb0(%rsp)
testq %r15, %r15
je 0x13142
movq %r15, %rdi
callq 0x78e4
movq 0xb8(%rsp), %rdi
testq %rdi, %rdi
je 0x13154
callq 0x78e4
movq 0x370(%rsp), %rdi
leaq 0x380(%rsp), %rax
cmpq %rax, %rdi
je 0x13179
movq 0x380(%rsp), %rsi
incq %rsi
callq 0x5200
movq 0x2f8(%rsp), %rdi
testq %rdi, %rdi
je 0x1318b
callq 0x78e4
testq %r12, %r12
je 0x131b6
movq %r12, 0x2e0(%rsp)
movq %rbx, 0x2e8(%rsp)
testq %rbx, %rbx
je 0x131bf
movq 0x12e14(%rip), %rax     # 0x25fc0
cmpb $0x0, (%rax)
je 0x131bb
incl 0x8(%rbx)
jmp 0x131bf
xorl %r15d, %r15d
jmp 0x131cf
lock
incl 0x8(%rbx)
leaq 0x2e0(%rsp), %rsi
callq 0xf5ac
movl %eax, %r15d
testq %r12, %r12
je 0x131e6
movq 0x2e8(%rsp), %rdi
testq %rdi, %rdi
je 0x131e6
callq 0x78e4
cmpl $0x50, %ebp
setae %al
orb %al, %r15b
incl %ebp
cmpb $0x1, %r15b
jne 0x13074
testq %r12, %r12
movq 0x20(%rsp), %rbp
je 0x13f4e
movq (%rbp), %rsi
movq %r12, 0x2d0(%rsp)
movq %rbx, 0x2d8(%rsp)
testq %rbx, %rbx
leaq 0xb0(%rsp), %rdi
je 0x13ef4
movq 0x12d8b(%rip), %rax     # 0x25fc0
cmpb $0x0, (%rax)
je 0x13ef0
incl 0x8(%rbx)
jmp 0x13ef4
xorpd %xmm0, %xmm0
movapd %xmm0, (%rsp)
movq $0x0, 0x10(%rsp)
movq %r13, 0xb0(%rsp)
movq %r15, %rdi
leaq 0x9097(%rip), %rsi      # 0x1c301
leaq 0x9092(%rip), %rdx      # 0x1c303
callq 0x7a9c
movq %rsp, %rbx
movq %rbx, %rdi
movq %r15, %rsi
callq 0x1618e
movq 0xb0(%rsp), %rdi
cmpq %r13, %rdi
je 0x132a1
movq 0xc0(%rsp), %rsi
incq %rsi
callq 0x5200
movq %r13, 0xb0(%rsp)
movq %r15, %rdi
leaq 0x9054(%rip), %rsi      # 0x1c307
leaq 0x904f(%rip), %rdx      # 0x1c309
callq 0x7a9c
movq %rbx, %rdi
movq %r15, %rsi
callq 0x1618e
movq 0xb0(%rsp), %rdi
cmpq %r13, %rdi
je 0x132e7
movq 0xc0(%rsp), %rsi
incq %rsi
callq 0x5200
movq %r13, 0xb0(%rsp)
movq %r15, %rdi
leaq 0x900b(%rip), %rsi      # 0x1c304
leaq 0x9006(%rip), %rdx      # 0x1c306
callq 0x7a9c
movq %rbx, %rdi
movq %r15, %rsi
callq 0x1618e
movq 0xb0(%rsp), %rdi
cmpq %r13, %rdi
je 0x1332d
movq 0xc0(%rsp), %rsi
incq %rsi
callq 0x5200
movq %r13, 0xb0(%rsp)
movq %r15, %rdi
leaq 0x8fcb(%rip), %rsi      # 0x1c30a
leaq 0x8fc6(%rip), %rdx      # 0x1c30c
callq 0x7a9c
movq %rbx, %rdi
movq %r15, %rsi
callq 0x1618e
movq 0xb0(%rsp), %rdi
cmpq %r13, %rdi
je 0x13373
movq 0xc0(%rsp), %rsi
incq %rsi
callq 0x5200
movq %r13, 0xb0(%rsp)
movq %r15, %rdi
leaq 0x8f88(%rip), %rsi      # 0x1c30d
leaq 0x8f83(%rip), %rdx      # 0x1c30f
callq 0x7a9c
movq %rbx, %rdi
movq %r15, %rsi
callq 0x1618e
movq 0xb0(%rsp), %rdi
cmpq %r13, %rdi
je 0x133b9
movq 0xc0(%rsp), %rsi
incq %rsi
callq 0x5200
movq %r13, 0xb0(%rsp)
movq %r15, %rdi
leaq 0x8f45(%rip), %rsi      # 0x1c310
leaq 0x8f40(%rip), %rdx      # 0x1c312
callq 0x7a9c
movq %rbx, %rdi
movq %r15, %rsi
callq 0x1618e
movq 0xb0(%rsp), %rdi
cmpq %r13, %rdi
je 0x133ff
movq 0xc0(%rsp), %rsi
incq %rsi
callq 0x5200
movq %r13, 0xb0(%rsp)
movq %r15, %rdi
leaq 0x8f02(%rip), %rsi      # 0x1c313
leaq 0x8efd(%rip), %rdx      # 0x1c315
callq 0x7a9c
movq %rbx, %rdi
movq %r15, %rsi
callq 0x1618e
movq 0xb0(%rsp), %rdi
cmpq %r13, %rdi
je 0x13445
movq 0xc0(%rsp), %rsi
incq %rsi
callq 0x5200
movq %r13, 0xb0(%rsp)
movq %r15, %rdi
leaq 0x8ebf(%rip), %rsi      # 0x1c316
leaq 0x8eba(%rip), %rdx      # 0x1c318
callq 0x7a9c
movq %rbx, %rdi
movq %r15, %rsi
callq 0x1618e
movq 0xb0(%rsp), %rdi
cmpq %r13, %rdi
je 0x1348b
movq 0xc0(%rsp), %rsi
incq %rsi
callq 0x5200
movl $0x52, %ebp
xorl %ebx, %ebx
movq %rbx, %r15
decl %ebp
je 0x13656
callq 0x5080
cltq
movq 0x8(%rsp), %rcx
subq (%rsp), %rcx
sarq $0x5, %rcx
xorl %edx, %edx
divq %rcx
movq 0x20(%rsp), %rcx
movq (%rcx), %rax
movq %rax, 0x360(%rsp)
movq 0x8(%rcx), %rax
movq %rax, 0x368(%rsp)
testq %rax, %rax
leaq 0x3b0(%rsp), %rbx
je 0x134f4
movq 0x12ada(%rip), %rcx     # 0x25fc0
cmpb $0x0, (%rcx)
je 0x134f0
incl 0x8(%rax)
jmp 0x134f4
lock
incl 0x8(%rax)
movq (%rsp), %rax
movslq %edx, %rcx
shlq $0x5, %rcx
leaq 0x3c0(%rsp), %rdx
movq %rdx, 0x3b0(%rsp)
movq (%rax,%rcx), %rsi
movq 0x8(%rax,%rcx), %rdx
addq %rsi, %rdx
movq %rbx, %rdi
callq 0x7954
leaq 0xb0(%rsp), %rdi
movq %r14, %rsi
leaq 0x360(%rsp), %rdx
movq %rbx, %rcx
callq 0xebb4
movq 0xb0(%rsp), %r12
movq 0xb8(%rsp), %rbx
xorpd %xmm0, %xmm0
movapd %xmm0, 0xb0(%rsp)
testq %r15, %r15
je 0x13568
movq %r15, %rdi
callq 0x78e4
movq 0xb8(%rsp), %rdi
testq %rdi, %rdi
je 0x1357a
callq 0x78e4
movq 0x3b0(%rsp), %rdi
leaq 0x3c0(%rsp), %rax
cmpq %rax, %rdi
je 0x1359f
movq 0x3c0(%rsp), %rsi
incq %rsi
callq 0x5200
movq 0x368(%rsp), %rdi
testq %rdi, %rdi
je 0x135b1
callq 0x78e4
testq %r12, %r12
je 0x135dc
movq %r12, 0x350(%rsp)
movq %rbx, 0x358(%rsp)
testq %rbx, %rbx
je 0x135e5
movq 0x129ee(%rip), %rax     # 0x25fc0
cmpb $0x0, (%rax)
je 0x135e1
incl 0x8(%rbx)
jmp 0x135e5
movb $0x1, %r15b
jmp 0x135f9
lock
incl 0x8(%rbx)
leaq 0x350(%rsp), %rsi
callq 0xf5ac
movl %eax, %r15d
xorb $0x1, %r15b
testq %r12, %r12
je 0x13610
movq 0x358(%rsp), %rdi
testq %rdi, %rdi
je 0x13610
callq 0x78e4
testb %r15b, %r15b
jne 0x13492
jmp 0x13668
xorl %r15d, %r15d
testq %r15, %r15
je 0x1364c
movq 0xb8(%rsp), %rbx
testq %rbx, %rbx
je 0x137a2
movq 0x12985(%rip), %rax     # 0x25fc0
cmpb $0x0, (%rax)
je 0x1379e
incl 0x8(%rbx)
jmp 0x137a2
xorl %ebx, %ebx
xorl %r15d, %r15d
jmp 0x137a2
testq %r15, %r15
je 0x13663
movq %r15, %rdi
callq 0x78e4
xorl %ebx, %ebx
xorl %r12d, %r12d
testq %r12, %r12
movq 0x20(%rsp), %rbp
je 0x13f4e
movq (%rbp), %rsi
movq %r12, 0x340(%rsp)
movq %rbx, 0x348(%rsp)
testq %rbx, %rbx
leaq 0xb0(%rsp), %rdi
je 0x13e9e
movq 0x1291e(%rip), %rax     # 0x25fc0
cmpb $0x0, (%rax)
je 0x13e9a
incl 0x8(%rbx)
jmp 0x13e9e
xorpd %xmm0, %xmm0
movapd %xmm0, (%rsp)
movq $0x0, 0x10(%rsp)
testl %r13d, %r13d
jle 0x13f8e
testl %ebp, %ebp
jle 0x14072
movq %r12, %r13
movq %r12, 0xb0(%rsp)
leaq 0xb0(%rsp), %rbx
movq %rbx, %rdi
leaq 0x8c20(%rip), %rsi      # 0x1c313
leaq 0x8c1b(%rip), %rdx      # 0x1c315
callq 0x7a9c
movq %rsp, %r15
movq %r15, %rdi
movq %rbx, %rsi
callq 0x1618e
movq 0xb0(%rsp), %rdi
cmpq %r13, %rdi
je 0x1372a
movq 0xc0(%rsp), %rsi
incq %rsi
callq 0x5200
movq %r13, 0xb0(%rsp)
movq %rbx, %rdi
leaq 0x8bcb(%rip), %rsi      # 0x1c307
leaq 0x8bc6(%rip), %rdx      # 0x1c309
callq 0x7a9c
movq %r15, %rdi
movq %rbx, %rsi
callq 0x1618e
movq 0xb0(%rsp), %rdi
cmpq %r13, %rdi
je 0x13770
movq 0xc0(%rsp), %rsi
incq %rsi
callq 0x5200
movq %r13, 0xb0(%rsp)
movq %rbx, %rdi
leaq 0x8b82(%rip), %rsi      # 0x1c304
leaq 0x8b7d(%rip), %rdx      # 0x1c306
callq 0x7a9c
movq %r15, %rdi
movq %rbx, %rsi
callq 0x1618e
jmp 0x1477b
lock
incl 0x8(%rbx)
movq 0x20(%rsp), %rax
movq (%rax), %rsi
movq %rsp, %rdi
callq 0x1ae4e
movq (%rsp), %rdi
testq %rdi, %rdi
je 0x137d5
leaq 0x11d06(%rip), %rsi     # 0x254c8
leaq 0x11d0f(%rip), %rdx     # 0x254d8
xorl %ecx, %ecx
callq 0x5240
movq %rax, %rsi
jmp 0x137d7
xorl %esi, %esi
movq 0x8(%rsp), %r12
testq %r12, %r12
je 0x137fa
movq 0x127d8(%rip), %rax     # 0x25fc0
cmpb $0x0, (%rax)
je 0x137f4
incl 0x8(%r12)
jmp 0x137fa
lock
incl 0x8(%r12)
movq (%r15), %rax
movq %r15, %rdi
callq *0x8(%rax)
movl %eax, %r15d
testq %r12, %r12
je 0x13813
movq %r12, %rdi
callq 0x78e4
movq 0x8(%rsp), %rdi
testq %rdi, %rdi
je 0x13822
callq 0x78e4
testq %rbx, %rbx
leaq 0xa0(%rsp), %r12
je 0x13837
movq %rbx, %rdi
callq 0x78e4
movq 0xb8(%rsp), %rdi
testq %rdi, %rdi
je 0x13849
callq 0x78e4
leaq 0xb0(%rsp), %rdi
callq 0x5150
leaq 0x2b0(%rsp), %rbx
movq 0xc0(%rsp), %rax
movq -0x18(%rax), %rcx
movl 0xd8(%rsp,%rcx), %edx
movl $0xfffffefb, %esi       # imm = 0xFFFFFEFB
andl %esi, %edx
orl $0x4, %edx
movl %edx, 0xd8(%rsp,%rcx)
movq -0x18(%rax), %rax
movq $0x2, 0xc8(%rsp,%rax)
movq 0xf8(%r14), %rdi
callq 0x16c1a
movsd 0x240(%rsp), %xmm1
subsd %xmm0, %xmm1
leaq 0xc0(%rsp), %rdi
movapd %xmm1, %xmm0
callq 0x5320
movq 0xb8(%r14), %rsi
leaq 0x3d8(%rsp), %rdi
callq 0x1ae4e
movq 0x3d8(%rsp), %rsi
movq (%rsi), %rax
movq %rbx, %rdi
callq *(%rax)
movq %rbx, %rdi
leaq 0x958c(%rip), %rsi      # 0x1ce76
callq 0x53d0
movq %r12, 0x90(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x1391b
movq %rdx, 0x90(%rsp)
movq (%rcx), %rdx
movq %rdx, 0xa0(%rsp)
jmp 0x13925
movupd (%rcx), %xmm0
movupd %xmm0, (%r12)
movq 0x8(%rax), %rdx
movq %rdx, 0x98(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq 0x20(%rsp), %rax
movq (%rax), %rsi
leaq 0x330(%rsp), %rdi
callq 0x1ae4e
movq 0x330(%rsp), %rdi
testq %rdi, %rdi
je 0x1397c
leaq 0x11b5f(%rip), %rsi     # 0x254c8
leaq 0x11b68(%rip), %rdx     # 0x254d8
xorl %ecx, %ecx
callq 0x5240
movq %rax, %rsi
jmp 0x1397e
xorl %esi, %esi
movq 0x338(%rsp), %rbx
testq %rbx, %rbx
je 0x139a0
movq 0x1262e(%rip), %rax     # 0x25fc0
cmpb $0x0, (%rax)
je 0x1399c
incl 0x8(%rbx)
jmp 0x139a0
lock
incl 0x8(%rbx)
movq (%rsi), %rax
leaq 0x290(%rsp), %rdi
callq *(%rax)
movq 0x90(%rsp), %rcx
movl $0xf, %esi
cmpq %r12, %rcx
je 0x139c7
movq 0xa0(%rsp), %rsi
movq 0x98(%rsp), %r8
movq 0x298(%rsp), %rdx
leaq (%rdx,%r8), %rax
cmpq %rsi, %rax
jbe 0x13a04
movl $0xf, %esi
leaq 0x2a0(%rsp), %rdi
cmpq %rdi, 0x290(%rsp)
je 0x139ff
movq 0x2a0(%rsp), %rsi
cmpq %rsi, %rax
jbe 0x13a1b
movq 0x290(%rsp), %rsi
leaq 0x90(%rsp), %rdi
callq 0x50b0
jmp 0x13a2c
leaq 0x290(%rsp), %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x5230
movq %rbp, 0x248(%rsp)
movq (%rax), %rdx
leaq 0x10(%rax), %rcx
cmpq %rcx, %rdx
je 0x13a55
movq %rdx, 0x248(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x258(%rsp)
jmp 0x13a5e
movupd (%rcx), %xmm0
movupd %xmm0, (%rbp)
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 0x93a8(%rip), %rsi      # 0x1ce35
callq 0x53d0
leaq 0x78(%rsp), %rsi
movq %rsi, 0x68(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x13aba
movq %rdx, 0x68(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x78(%rsp)
jmp 0x13ac2
movupd (%rcx), %xmm0
movupd %xmm0, (%rsi)
movq 0x8(%rax), %rdx
movq %rdx, 0x70(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0x270(%rsp), %rdi
leaq 0xc8(%rsp), %rsi
callq 0x5310
movq 0x68(%rsp), %rcx
movl $0xf, %esi
leaq 0x78(%rsp), %rax
cmpq %rax, %rcx
je 0x13b08
movq 0x78(%rsp), %rsi
movq 0x70(%rsp), %r8
movq 0x278(%rsp), %rdx
leaq (%rdx,%r8), %rax
cmpq %rsi, %rax
jbe 0x13b42
movl $0xf, %esi
leaq 0x280(%rsp), %rdi
cmpq %rdi, 0x270(%rsp)
je 0x13b3d
movq 0x280(%rsp), %rsi
cmpq %rsi, %rax
jbe 0x13b56
movq 0x270(%rsp), %rsi
leaq 0x68(%rsp), %rdi
callq 0x50b0
jmp 0x13b67
leaq 0x270(%rsp), %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x5230
leaq 0x38(%rsp), %rsi
movq %rsi, 0x28(%rsp)
movq (%rax), %rdx
leaq 0x10(%rax), %rcx
cmpq %rcx, %rdx
je 0x13b8c
movq %rdx, 0x28(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x38(%rsp)
jmp 0x13b94
movupd (%rcx), %xmm0
movupd %xmm0, (%rsi)
movq %rax, %rdx
addq $0x8, %rdx
movq 0x8(%rax), %rsi
movq %rsi, 0x30(%rsp)
movq %rcx, (%rax)
movq $0x0, (%rdx)
movb $0x0, (%rcx)
leaq 0x28(%rsp), %rdi
leaq 0x92c7(%rip), %rsi      # 0x1ce84
callq 0x53d0
leaq 0x10(%rsp), %rsi
movq %rsi, (%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x13be8
movq %rdx, (%rsp)
movq (%rcx), %rdx
movq %rdx, 0x10(%rsp)
jmp 0x13bf0
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 0x48(%rsp), %rdi
callq 0x50b0
movq (%rsp), %rdi
leaq 0x10(%rsp), %rax
cmpq %rax, %rdi
je 0x13c36
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x5200
movq 0x28(%rsp), %rdi
leaq 0x38(%rsp), %rax
cmpq %rax, %rdi
je 0x13c52
movq 0x38(%rsp), %rsi
incq %rsi
callq 0x5200
movq 0x270(%rsp), %rdi
leaq 0x280(%rsp), %rax
cmpq %rax, %rdi
je 0x13c77
movq 0x280(%rsp), %rsi
incq %rsi
callq 0x5200
movq 0x68(%rsp), %rdi
leaq 0x78(%rsp), %rax
cmpq %rax, %rdi
je 0x13c93
movq 0x78(%rsp), %rsi
incq %rsi
callq 0x5200
movq 0x248(%rsp), %rdi
cmpq %rbp, %rdi
je 0x13cb0
movq 0x258(%rsp), %rsi
incq %rsi
callq 0x5200
movq 0x290(%rsp), %rdi
leaq 0x2a0(%rsp), %rax
cmpq %rax, %rdi
leaq 0x38(%rsp), %rbp
je 0x13cda
movq 0x2a0(%rsp), %rsi
incq %rsi
callq 0x5200
testq %rbx, %rbx
je 0x13ce7
movq %rbx, %rdi
callq 0x78e4
movq 0x338(%rsp), %rdi
testq %rdi, %rdi
je 0x13cf9
callq 0x78e4
movq 0x90(%rsp), %rdi
cmpq %r12, %rdi
je 0x13d16
movq 0xa0(%rsp), %rsi
incq %rsi
callq 0x5200
movq 0x2b0(%rsp), %rdi
leaq 0x2c0(%rsp), %rax
cmpq %rax, %rdi
leaq 0x10(%rsp), %rbx
leaq 0x28(%rsp), %r12
je 0x13d45
movq 0x2c0(%rsp), %rsi
incq %rsi
callq 0x5200
movq 0x3e0(%rsp), %rdi
testq %rdi, %rdi
je 0x13d57
callq 0x78e4
testb %r15b, %r15b
je 0x13daa
movq 0xb8(%r14), %rsi
leaq 0x68(%rsp), %rdi
callq 0x1ae4e
movq 0x68(%rsp), %rsi
movq (%rsi), %rax
movq %r12, %rdi
callq *(%rax)
movq %r12, %rdi
leaq 0x9105(%rip), %rsi      # 0x1ce89
callq 0x53d0
movq %rbx, (%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x13dd5
movq %rdx, (%rsp)
movq (%rcx), %rdx
movq %rdx, 0x10(%rsp)
jmp 0x13ddd
leaq 0xb0(%rsp), %rdi
movq 0x121e7(%rip), %rsi     # 0x25fa0
callq 0x5170
leaq 0x130(%rsp), %rdi
callq 0x50c0
movq 0x20(%rsp), %rbp
jmp 0x13f63
movupd (%rcx), %xmm0
movupd %xmm0, (%rbx)
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 0x48(%rsp), %rdi
callq 0x50b0
movq 0x88(%rsp), %rdi
movq 0x3d0(%rsp), %rcx
movq %rcx, (%rdi)
movq (%rax), %rsi
movq 0x8(%rax), %rdx
addq %rsi, %rdx
callq 0x7954
movq (%rsp), %rdi
cmpq %rbx, %rdi
je 0x13e40
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x5200
movq 0x28(%rsp), %rdi
cmpq %rbp, %rdi
je 0x13e57
movq 0x38(%rsp), %rsi
incq %rsi
callq 0x5200
movq 0x70(%rsp), %rdi
testq %rdi, %rdi
movq 0x20(%rsp), %rbp
je 0x13e6b
callq 0x78e4
leaq 0xb0(%rsp), %rdi
movq 0x12126(%rip), %rsi     # 0x25fa0
callq 0x5170
leaq 0x130(%rsp), %rdi
callq 0x50c0
testb %r15b, %r15b
je 0x13f63
jmp 0x1522f
lock
incl 0x8(%rbx)
leaq 0x340(%rsp), %rdx
callq 0x1af20
movapd 0xb0(%rsp), %xmm0
xorpd %xmm1, %xmm1
movapd %xmm1, 0xb0(%rsp)
movq 0x8(%rbp), %rdi
movupd %xmm0, (%rbp)
testq %rdi, %rdi
je 0x13ed4
callq 0x78e4
movq 0xb8(%rsp), %rdi
testq %rdi, %rdi
je 0x13ee6
callq 0x78e4
movq 0x348(%rsp), %rdi
jmp 0x13f44
lock
incl 0x8(%rbx)
leaq 0x2d0(%rsp), %rdx
callq 0x1af20
movapd 0xb0(%rsp), %xmm0
xorpd %xmm1, %xmm1
movapd %xmm1, 0xb0(%rsp)
movq 0x8(%rbp), %rdi
movupd %xmm0, (%rbp)
testq %rdi, %rdi
je 0x13f2a
callq 0x78e4
movq 0xb8(%rsp), %rdi
testq %rdi, %rdi
je 0x13f3c
callq 0x78e4
movq 0x2d8(%rsp), %rdi
testq %rdi, %rdi
je 0x13f4e
callq 0x78e4
movq %rsp, %rdi
callq 0x7888
testq %rbx, %rbx
je 0x13f63
movq %rbx, %rdi
callq 0x78e4
addq $0x10, %rbp
movslq 0x108(%r14), %rax
movq 0x58(%r14), %rcx
leaq (%rax,%rax,2), %rax
cmpq -0x10(%rcx,%rax,8), %rbp
leaq 0xb0(%rsp), %r15
jne 0x12c5b
jmp 0x14a00
movl 0x26c(%rsp), %eax
cmpl %eax, 0x240(%rsp)
jne 0x14143
testl %ebp, %ebp
jle 0x142e9
movq %r12, %r13
movq %r12, 0xb0(%rsp)
leaq 0xb0(%rsp), %rbx
movq %rbx, %rdi
leaq 0x833d(%rip), %rsi      # 0x1c304
leaq 0x8338(%rip), %rdx      # 0x1c306
callq 0x7a9c
movq %rsp, %r15
movq %r15, %rdi
movq %rbx, %rsi
callq 0x1618e
movq 0xb0(%rsp), %rdi
cmpq %r13, %rdi
je 0x13ffe
movq 0xc0(%rsp), %rsi
incq %rsi
callq 0x5200
movq %r13, 0xb0(%rsp)
movq %rbx, %rdi
leaq 0x8303(%rip), %rsi      # 0x1c313
leaq 0x82fe(%rip), %rdx      # 0x1c315
callq 0x7a9c
movq %r15, %rdi
movq %rbx, %rsi
callq 0x1618e
movq 0xb0(%rsp), %rdi
cmpq %r13, %rdi
je 0x14044
movq 0xc0(%rsp), %rsi
incq %rsi
callq 0x5200
movq %r13, 0xb0(%rsp)
movq %rbx, %rdi
leaq 0x82c0(%rip), %rsi      # 0x1c316
leaq 0x82bb(%rip), %rdx      # 0x1c318
callq 0x7a9c
movq %r15, %rdi
movq %rbx, %rsi
callq 0x1618e
jmp 0x1477b
cmpl %r15d, %ebx
movq %r12, %r13
jne 0x1421c
movq %r13, 0xb0(%rsp)
leaq 0xb0(%rsp), %rbx
movq %rbx, %rdi
leaq 0x826f(%rip), %rsi      # 0x1c307
leaq 0x826a(%rip), %rdx      # 0x1c309
callq 0x7a9c
movq %rsp, %r15
movq %r15, %rdi
movq %rbx, %rsi
callq 0x1618e
movq 0xb0(%rsp), %rdi
cmpq %r13, %rdi
je 0x140cf
movq 0xc0(%rsp), %rsi
incq %rsi
callq 0x5200
movq %r13, 0xb0(%rsp)
movq %rbx, %rdi
leaq 0x822c(%rip), %rsi      # 0x1c30d
leaq 0x8227(%rip), %rdx      # 0x1c30f
callq 0x7a9c
movq %r15, %rdi
movq %rbx, %rsi
callq 0x1618e
movq 0xb0(%rsp), %rdi
cmpq %r13, %rdi
je 0x14115
movq 0xc0(%rsp), %rsi
incq %rsi
callq 0x5200
movq %r13, 0xb0(%rsp)
movq %rbx, %rdi
leaq 0x81ec(%rip), %rsi      # 0x1c313
leaq 0x81e7(%rip), %rdx      # 0x1c315
callq 0x7a9c
movq %r15, %rdi
movq %rbx, %rsi
callq 0x1618e
jmp 0x1477b
testl %r13d, %r13d
movq %r12, %r13
jns 0x14798
testl %ebp, %ebp
jle 0x145e5
movq %r13, 0xb0(%rsp)
leaq 0xb0(%rsp), %rbx
movq %rbx, %rdi
leaq 0x81a5(%rip), %rsi      # 0x1c316
leaq 0x81a0(%rip), %rdx      # 0x1c318
callq 0x7a9c
movq %rsp, %r15
movq %r15, %rdi
movq %rbx, %rsi
callq 0x1618e
movq 0xb0(%rsp), %rdi
cmpq %r13, %rdi
je 0x141a8
movq 0xc0(%rsp), %rsi
incq %rsi
callq 0x5200
movq %r13, 0xb0(%rsp)
movq %rbx, %rdi
leaq 0x8150(%rip), %rsi      # 0x1c30a
leaq 0x814b(%rip), %rdx      # 0x1c30c
callq 0x7a9c
movq %r15, %rdi
movq %rbx, %rsi
callq 0x1618e
movq 0xb0(%rsp), %rdi
cmpq %r13, %rdi
je 0x141ee
movq 0xc0(%rsp), %rsi
incq %rsi
callq 0x5200
movq %r13, 0xb0(%rsp)
movq %rbx, %rdi
leaq 0x8104(%rip), %rsi      # 0x1c304
leaq 0x80ff(%rip), %rdx      # 0x1c306
callq 0x7a9c
movq %r15, %rdi
movq %rbx, %rsi
callq 0x1618e
jmp 0x1477b
testl %ebp, %ebp
jns 0x14798
movq %r13, 0xb0(%rsp)
leaq 0xb0(%rsp), %rbx
movq %rbx, %rdi
leaq 0x80cf(%rip), %rsi      # 0x1c30d
leaq 0x80ca(%rip), %rdx      # 0x1c30f
callq 0x7a9c
movq %rsp, %r15
movq %r15, %rdi
movq %rbx, %rsi
callq 0x1618e
movq 0xb0(%rsp), %rdi
cmpq %r13, %rdi
je 0x14275
movq 0xc0(%rsp), %rsi
incq %rsi
callq 0x5200
movq %r13, 0xb0(%rsp)
movq %rbx, %rdi
leaq 0x8080(%rip), %rsi      # 0x1c307
leaq 0x807b(%rip), %rdx      # 0x1c309
callq 0x7a9c
movq %r15, %rdi
movq %rbx, %rsi
callq 0x1618e
movq 0xb0(%rsp), %rdi
cmpq %r13, %rdi
je 0x142bb
movq 0xc0(%rsp), %rsi
incq %rsi
callq 0x5200
movq %r13, 0xb0(%rsp)
movq %rbx, %rdi
leaq 0x8040(%rip), %rsi      # 0x1c30d
leaq 0x803b(%rip), %rdx      # 0x1c30f
callq 0x7a9c
movq %r15, %rdi
movq %rbx, %rsi
callq 0x1618e
jmp 0x1477b
cmpl %r15d, %ebx
movq %r12, %r13
jne 0x14518
movq %r13, 0xb0(%rsp)
leaq 0xb0(%rsp), %rbx
movq %rbx, %rdi
leaq 0x7ff2(%rip), %rsi      # 0x1c301
leaq 0x7fed(%rip), %rdx      # 0x1c303
callq 0x7a9c
movq %rsp, %r15
movq %r15, %rdi
movq %rbx, %rsi
callq 0x1618e
movq 0xb0(%rsp), %rdi
cmpq %r13, %rdi
je 0x14346
movq 0xc0(%rsp), %rsi
incq %rsi
callq 0x5200
movq %r13, 0xb0(%rsp)
movq %rbx, %rdi
leaq 0x7faf(%rip), %rsi      # 0x1c307
leaq 0x7faa(%rip), %rdx      # 0x1c309
callq 0x7a9c
movq %r15, %rdi
movq %rbx, %rsi
callq 0x1618e
movq 0xb0(%rsp), %rdi
cmpq %r13, %rdi
je 0x1438c
movq 0xc0(%rsp), %rsi
incq %rsi
callq 0x5200
movq %r13, 0xb0(%rsp)
movq %rbx, %rdi
leaq 0x7f66(%rip), %rsi      # 0x1c304
leaq 0x7f61(%rip), %rdx      # 0x1c306
callq 0x7a9c
movq %r15, %rdi
movq %rbx, %rsi
callq 0x1618e
movq 0xb0(%rsp), %rdi
cmpq %r13, %rdi
je 0x143d2
movq 0xc0(%rsp), %rsi
incq %rsi
callq 0x5200
movq %r13, 0xb0(%rsp)
movq %rbx, %rdi
leaq 0x7f26(%rip), %rsi      # 0x1c30a
leaq 0x7f21(%rip), %rdx      # 0x1c30c
callq 0x7a9c
movq %r15, %rdi
movq %rbx, %rsi
callq 0x1618e
movq 0xb0(%rsp), %rdi
cmpq %r13, %rdi
je 0x14418
movq 0xc0(%rsp), %rsi
incq %rsi
callq 0x5200
movq %r13, 0xb0(%rsp)
movq %rbx, %rdi
leaq 0x7ee3(%rip), %rsi      # 0x1c30d
leaq 0x7ede(%rip), %rdx      # 0x1c30f
callq 0x7a9c
movq %r15, %rdi
movq %rbx, %rsi
callq 0x1618e
movq 0xb0(%rsp), %rdi
cmpq %r13, %rdi
je 0x1445e
movq 0xc0(%rsp), %rsi
incq %rsi
callq 0x5200
movq %r13, 0xb0(%rsp)
movq %rbx, %rdi
leaq 0x7ea0(%rip), %rsi      # 0x1c310
leaq 0x7e9b(%rip), %rdx      # 0x1c312
callq 0x7a9c
movq %r15, %rdi
movq %rbx, %rsi
callq 0x1618e
movq 0xb0(%rsp), %rdi
cmpq %r13, %rdi
je 0x144a4
movq 0xc0(%rsp), %rsi
incq %rsi
callq 0x5200
movq %r13, 0xb0(%rsp)
movq %rbx, %rdi
leaq 0x7e5d(%rip), %rsi      # 0x1c313
leaq 0x7e58(%rip), %rdx      # 0x1c315
callq 0x7a9c
movq %r15, %rdi
movq %rbx, %rsi
callq 0x1618e
movq 0xb0(%rsp), %rdi
cmpq %r13, %rdi
je 0x144ea
movq 0xc0(%rsp), %rsi
incq %rsi
callq 0x5200
movq %r13, 0xb0(%rsp)
movq %rbx, %rdi
leaq 0x7e1a(%rip), %rsi      # 0x1c316
leaq 0x7e15(%rip), %rdx      # 0x1c318
callq 0x7a9c
movq %r15, %rdi
movq %rbx, %rsi
callq 0x1618e
jmp 0x1477b
testl %ebp, %ebp
jns 0x14798
movq %r13, 0xb0(%rsp)
leaq 0xb0(%rsp), %rbx
movq %rbx, %rdi
leaq 0x7dc7(%rip), %rsi      # 0x1c301
leaq 0x7dc2(%rip), %rdx      # 0x1c303
callq 0x7a9c
movq %rsp, %r15
movq %r15, %rdi
movq %rbx, %rsi
callq 0x1618e
movq 0xb0(%rsp), %rdi
cmpq %r13, %rdi
je 0x14571
movq 0xc0(%rsp), %rsi
incq %rsi
callq 0x5200
movq %r13, 0xb0(%rsp)
movq %rbx, %rdi
leaq 0x7d8a(%rip), %rsi      # 0x1c30d
leaq 0x7d85(%rip), %rdx      # 0x1c30f
callq 0x7a9c
movq %r15, %rdi
movq %rbx, %rsi
callq 0x1618e
movq 0xb0(%rsp), %rdi
cmpq %r13, %rdi
je 0x145b7
movq 0xc0(%rsp), %rsi
incq %rsi
callq 0x5200
movq %r13, 0xb0(%rsp)
movq %rbx, %rdi
leaq 0x7d47(%rip), %rsi      # 0x1c310
leaq 0x7d42(%rip), %rdx      # 0x1c312
callq 0x7a9c
movq %r15, %rdi
movq %rbx, %rsi
callq 0x1618e
jmp 0x1477b
cmpl %r15d, %ebx
jne 0x146b3
movq %r13, 0xb0(%rsp)
leaq 0xb0(%rsp), %rbx
movq %rbx, %rdi
leaq 0x7d02(%rip), %rsi      # 0x1c30a
leaq 0x7cfd(%rip), %rdx      # 0x1c30c
callq 0x7a9c
movq %rsp, %r15
movq %r15, %rdi
movq %rbx, %rsi
callq 0x1618e
movq 0xb0(%rsp), %rdi
cmpq %r13, %rdi
je 0x1463f
movq 0xc0(%rsp), %rsi
incq %rsi
callq 0x5200
movq %r13, 0xb0(%rsp)
movq %rbx, %rdi
leaq 0x7cbf(%rip), %rsi      # 0x1c310
leaq 0x7cba(%rip), %rdx      # 0x1c312
callq 0x7a9c
movq %r15, %rdi
movq %rbx, %rsi
callq 0x1618e
movq 0xb0(%rsp), %rdi
cmpq %r13, %rdi
je 0x14685
movq 0xc0(%rsp), %rsi
incq %rsi
callq 0x5200
movq %r13, 0xb0(%rsp)
movq %rbx, %rdi
leaq 0x7c7f(%rip), %rsi      # 0x1c316
leaq 0x7c7a(%rip), %rdx      # 0x1c318
callq 0x7a9c
movq %r15, %rdi
movq %rbx, %rsi
callq 0x1618e
jmp 0x1477b
testl %ebp, %ebp
jns 0x14798
movq %r13, 0xb0(%rsp)
leaq 0xb0(%rsp), %rbx
movq %rbx, %rdi
leaq 0x7c3b(%rip), %rsi      # 0x1c310
leaq 0x7c36(%rip), %rdx      # 0x1c312
callq 0x7a9c
movq %rsp, %r15
movq %r15, %rdi
movq %rbx, %rsi
callq 0x1618e
movq 0xb0(%rsp), %rdi
cmpq %r13, %rdi
je 0x1470c
movq 0xc0(%rsp), %rsi
incq %rsi
callq 0x5200
movq %r13, 0xb0(%rsp)
movq %rbx, %rdi
leaq 0x7bec(%rip), %rsi      # 0x1c30a
leaq 0x7be7(%rip), %rdx      # 0x1c30c
callq 0x7a9c
movq %r15, %rdi
movq %rbx, %rsi
callq 0x1618e
movq 0xb0(%rsp), %rdi
cmpq %r13, %rdi
je 0x14752
movq 0xc0(%rsp), %rsi
incq %rsi
callq 0x5200
movq %r13, 0xb0(%rsp)
movq %rbx, %rdi
leaq 0x7b9d(%rip), %rsi      # 0x1c301
leaq 0x7b98(%rip), %rdx      # 0x1c303
callq 0x7a9c
movq %r15, %rdi
movq %rbx, %rsi
callq 0x1618e
movq 0xb0(%rsp), %rdi
cmpq %r13, %rdi
je 0x14798
movq 0xc0(%rsp), %rsi
incq %rsi
callq 0x5200
movl $0x52, %ebp
xorl %r15d, %r15d
movq %r15, %rbx
decl %ebp
je 0x14934
callq 0x5080
cltq
movq 0x8(%rsp), %rcx
subq (%rsp), %rcx
sarq $0x5, %rcx
xorl %edx, %edx
divq %rcx
movq 0x20(%rsp), %rcx
movq (%rcx), %rax
movq %rax, 0x320(%rsp)
movq 0x8(%rcx), %rax
movq %rax, 0x328(%rsp)
testq %rax, %rax
leaq 0xb0(%rsp), %r15
leaq 0x390(%rsp), %r12
je 0x1480a
movq 0x117c4(%rip), %rcx     # 0x25fc0
cmpb $0x0, (%rcx)
je 0x14806
incl 0x8(%rax)
jmp 0x1480a
lock
incl 0x8(%rax)
movq (%rsp), %rax
movslq %edx, %rcx
shlq $0x5, %rcx
leaq 0x3a0(%rsp), %rdx
movq %rdx, 0x390(%rsp)
movq (%rax,%rcx), %rsi
movq 0x8(%rax,%rcx), %rdx
addq %rsi, %rdx
movq %r12, %rdi
callq 0x7954
movq %r15, %rdi
movq %r14, %rsi
leaq 0x320(%rsp), %rdx
movq %r12, %rcx
callq 0xebb4
movq 0xb0(%rsp), %r12
movq 0xb8(%rsp), %r15
xorpd %xmm0, %xmm0
movapd %xmm0, 0xb0(%rsp)
testq %rbx, %rbx
je 0x14879
movq %rbx, %rdi
callq 0x78e4
movq 0xb8(%rsp), %rdi
testq %rdi, %rdi
je 0x1488b
callq 0x78e4
movq 0x390(%rsp), %rdi
leaq 0x3a0(%rsp), %rax
cmpq %rax, %rdi
je 0x148b0
movq 0x3a0(%rsp), %rsi
incq %rsi
callq 0x5200
movq 0x328(%rsp), %rdi
testq %rdi, %rdi
je 0x148c2
callq 0x78e4
movb $0x1, %bl
testq %r12, %r12
je 0x14913
movq %r12, 0x310(%rsp)
movq %r15, 0x318(%rsp)
testq %r15, %r15
je 0x148f5
movq 0x116db(%rip), %rax     # 0x25fc0
cmpb $0x0, (%rax)
je 0x148f0
incl 0x8(%r15)
jmp 0x148f5
lock
incl 0x8(%r15)
leaq 0x310(%rsp), %rsi
callq 0xf5ac
testb %al, %al
je 0x14913
movq %r12, %rdi
callq 0x1af18
testl %eax, %eax
setns %bl
testq %r12, %r12
je 0x1492a
movq 0x318(%rsp), %rdi
testq %rdi, %rdi
je 0x1492a
callq 0x78e4
testb %bl, %bl
jne 0x147a0
jmp 0x14947
testq %rbx, %rbx
je 0x14941
movq %rbx, %rdi
callq 0x78e4
xorl %r15d, %r15d
xorl %r12d, %r12d
testq %r12, %r12
movq 0x20(%rsp), %rbp
je 0x149e7
movq (%rbp), %rsi
movq %r12, 0x300(%rsp)
movq %r15, 0x308(%rsp)
testq %r15, %r15
je 0x14985
movq 0x1164b(%rip), %rax     # 0x25fc0
cmpb $0x0, (%rax)
je 0x14980
incl 0x8(%r15)
jmp 0x14985
lock
incl 0x8(%r15)
leaq 0xb0(%rsp), %rdi
leaq 0x300(%rsp), %rdx
callq 0x1af20
movapd 0xb0(%rsp), %xmm0
xorpd %xmm1, %xmm1
movapd %xmm1, 0xb0(%rsp)
movq 0x8(%rbp), %rdi
movupd %xmm0, (%rbp)
testq %rdi, %rdi
je 0x149c3
callq 0x78e4
movq 0xb8(%rsp), %rdi
testq %rdi, %rdi
je 0x149d5
callq 0x78e4
movq 0x308(%rsp), %rdi
testq %rdi, %rdi
je 0x149e7
callq 0x78e4
movq %rsp, %rdi
callq 0x7888
testq %r15, %r15
je 0x13f63
movq %r15, %rdi
jmp 0x13f5e
movslq 0x108(%r14), %rax
movq 0x70(%r14), %rcx
leaq (%rax,%rax,2), %rax
movq -0x18(%rcx,%rax,8), %rbp
cmpq -0x10(%rcx,%rax,8), %rbp
je 0x151df
movq 0x88(%rsp), %rax
addq $0x10, %rax
movq %rax, 0x240(%rsp)
movq %rsp, %r13
leaq 0xb0(%rsp), %r12
movq (%rbp), %rsi
movq %r13, %rdi
callq 0x1aece
movq (%rsp), %rdi
testq %rdi, %rdi
je 0x14a6d
leaq 0x10ee6(%rip), %rsi     # 0x25940
leaq 0x10a4f(%rip), %rdx     # 0x254b0
xorl %ecx, %ecx
callq 0x5240
movq %rax, %rsi
jmp 0x14a6f
xorl %esi, %esi
movq 0x8(%rsp), %rbx
testq %rbx, %rbx
je 0x14a8e
movq 0x11540(%rip), %rax     # 0x25fc0
cmpb $0x0, (%rax)
je 0x14a8a
incl 0x8(%rbx)
jmp 0x14a8e
lock
incl 0x8(%rbx)
movq %r12, %rdi
callq 0x187b2
movq 0xb0(%rsp), %rdi
callq 0x16c80
movl %eax, %r15d
movq 0xb8(%rsp), %rdi
testq %rdi, %rdi
je 0x14ab8
callq 0x78e4
testq %rbx, %rbx
je 0x14ac5
movq %rbx, %rdi
callq 0x78e4
movq 0x8(%rsp), %rdi
testq %rdi, %rdi
je 0x14ad4
callq 0x78e4
testb %r15b, %r15b
je 0x151c1
movq 0xb8(%r14), %rdi
callq 0x1ad96
movq %rax, %r15
movq (%rbp), %rsi
movq %r13, %rdi
callq 0x1aece
movq (%rsp), %rdi
testq %rdi, %rdi
je 0x14b1b
leaq 0x10e38(%rip), %rsi     # 0x25940
leaq 0x109a1(%rip), %rdx     # 0x254b0
xorl %ecx, %ecx
callq 0x5240
movq %rax, %rsi
jmp 0x14b1d
xorl %esi, %esi
movq 0x8(%rsp), %rbx
testq %rbx, %rbx
je 0x14b3c
movq 0x11492(%rip), %rax     # 0x25fc0
cmpb $0x0, (%rax)
je 0x14b38
incl 0x8(%rbx)
jmp 0x14b3c
lock
incl 0x8(%rbx)
movq %r12, %rdi
callq 0x187de
movq 0xb0(%rsp), %rdi
callq 0x1ad96
movq %rax, %r12
movq 0xb8(%rsp), %rdi
testq %rdi, %rdi
je 0x14b66
callq 0x78e4
testq %rbx, %rbx
je 0x14b73
movq %rbx, %rdi
callq 0x78e4
movq 0x8(%rsp), %rdi
testq %rdi, %rdi
je 0x14b82
callq 0x78e4
movq %r15, %r13
shrq $0x20, %r13
movq %r12, %rax
shrq $0x20, %rax
movl %r15d, %ecx
subl %r12d, %ecx
cvtsi2sd %ecx, %xmm1
mulsd %xmm1, %xmm1
movl %r13d, %ecx
subl %eax, %ecx
cvtsi2sd %ecx, %xmm0
mulsd %xmm0, %xmm0
addsd %xmm1, %xmm0
ucomisd 0x7951(%rip), %xmm0     # 0x1c508
jb 0x14bbf
sqrtsd %xmm0, %xmm0
jmp 0x14bc4
callq 0x5190
movsd %xmm0, 0x20(%rsp)
leaq 0xb0(%rsp), %r12
movq (%rbp), %rdi
callq 0x1ad96
movq %rax, %rbx
movsd 0x20(%rsp), %xmm0
callq 0x5360
movsd %xmm0, 0x20(%rsp)
movq %rbx, %rax
shrq $0x20, %rax
subl %ebx, %r15d
xorps %xmm1, %xmm1
cvtsi2sd %r15d, %xmm1
mulsd %xmm1, %xmm1
subl %eax, %r13d
xorps %xmm0, %xmm0
cvtsi2sd %r13d, %xmm0
mulsd %xmm0, %xmm0
addsd %xmm1, %xmm0
ucomisd 0x78e8(%rip), %xmm0     # 0x1c508
jb 0x14c28
sqrtsd %xmm0, %xmm0
jmp 0x14c2d
callq 0x5190
movq %rsp, %r13
callq 0x5360
movsd 0x20(%rsp), %xmm1
ucomisd 0x78bd(%rip), %xmm1     # 0x1c500
jne 0x14c47
jnp 0x14c5b
ucomisd 0x78b1(%rip), %xmm0     # 0x1c500
jne 0x151c1
jp 0x151c1
movq 0xb8(%r14), %rsi
movq %r12, %rdi
callq 0x1ae4e
movq 0xb0(%rsp), %rdi
callq 0x16c1a
movsd %xmm0, 0x20(%rsp)
movq 0xb8(%rsp), %rdi
testq %rdi, %rdi
je 0x14c8f
callq 0x78e4
movq %r12, %rdi
callq 0x5150
movq 0xc0(%rsp), %rax
movq -0x18(%rax), %rcx
movl 0xd8(%rsp,%rcx), %edx
movl $0xfffffefb, %esi       # imm = 0xFFFFFEFB
andl %esi, %edx
orl $0x4, %edx
movl %edx, 0xd8(%rsp,%rcx)
movq -0x18(%rax), %rax
movq $0x2, 0xc8(%rsp,%rax)
movq 0xf8(%r14), %rdi
callq 0x16c1a
movsd 0x20(%rsp), %xmm1
subsd %xmm0, %xmm1
leaq 0xc0(%rsp), %rdi
movapd %xmm1, %xmm0
callq 0x5320
movq 0xb8(%r14), %rsi
movq %r13, %rdi
callq 0x1ae4e
movq (%rsp), %rdi
testq %rdi, %rdi
je 0x14d24
leaq 0x107b7(%rip), %rsi     # 0x254c8
leaq 0x10d88(%rip), %rdx     # 0x25aa0
xorl %ecx, %ecx
callq 0x5240
movq %rax, %r15
jmp 0x14d27
xorl %r15d, %r15d
testq %r15, %r15
je 0x14d49
movq 0x8(%rsp), %r12
testq %r12, %r12
je 0x14d57
movq 0x11283(%rip), %rax     # 0x25fc0
cmpb $0x0, (%rax)
je 0x14d51
incl 0x8(%r12)
jmp 0x14d57
xorl %r15d, %r15d
xorl %r12d, %r12d
jmp 0x14d57
lock
incl 0x8(%r12)
movq (%rbp), %rsi
leaq 0x68(%rsp), %rdi
callq 0x1aece
movq 0x68(%rsp), %rsi
movq 0x70(%rsp), %rbx
testq %rbx, %rbx
leaq 0x28(%rsp), %rdi
je 0x14d8e
movq 0x11240(%rip), %rax     # 0x25fc0
cmpb $0x0, (%rax)
je 0x14d8a
incl 0x8(%rbx)
jmp 0x14d8e
lock
incl 0x8(%rbx)
callq 0x187b2
movq 0x28(%rsp), %rsi
movq 0x30(%rsp), %r13
testq %r13, %r13
je 0x14db9
movq 0x11217(%rip), %rax     # 0x25fc0
cmpb $0x0, (%rax)
je 0x14db4
incl 0x8(%r13)
jmp 0x14db9
lock
incl 0x8(%r13)
movq (%r15), %rax
movq %r15, %rdi
callq *0x8(%rax)
movb %al, 0x20(%rsp)
testq %r13, %r13
leaq 0x248(%rsp), %r15
je 0x14ddb
movq %r13, %rdi
callq 0x78e4
movq 0x30(%rsp), %rdi
testq %rdi, %rdi
je 0x14dea
callq 0x78e4
testq %rbx, %rbx
leaq 0x78(%rsp), %r13
je 0x14dfc
movq %rbx, %rdi
callq 0x78e4
movq 0x70(%rsp), %rdi
testq %rdi, %rdi
je 0x14e0b
callq 0x78e4
testq %r12, %r12
je 0x14e18
movq %r12, %rdi
callq 0x78e4
movq 0x8(%rsp), %rdi
testq %rdi, %rdi
je 0x14e27
callq 0x78e4
movq 0xb8(%r14), %rsi
leaq 0x2b0(%rsp), %rdi
callq 0x1ae4e
leaq 0x38(%rsp), %rbx
leaq 0x10(%rsp), %r12
movq 0x2b0(%rsp), %rsi
movq (%rsi), %rax
movq %r15, %rdi
callq *(%rax)
movq %r15, %rdi
leaq 0x8042(%rip), %rsi      # 0x1cea1
callq 0x53d0
movq %r13, 0x68(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x14e87
movq %rdx, 0x68(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x78(%rsp)
jmp 0x14e91
movupd (%rcx), %xmm0
movupd %xmm0, (%r13)
movq 0x8(%rax), %rdx
movq %rdx, 0x70(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0x90(%rsp), %rdi
leaq 0xc8(%rsp), %rsi
callq 0x5310
movq 0x68(%rsp), %rcx
movl $0xf, %esi
cmpq %r13, %rcx
je 0x14ed2
movq 0x78(%rsp), %rsi
movq 0x70(%rsp), %r8
movq 0x98(%rsp), %rdx
leaq (%rdx,%r8), %rax
cmpq %rsi, %rax
jbe 0x14f0c
movl $0xf, %esi
leaq 0xa0(%rsp), %rdi
cmpq %rdi, 0x90(%rsp)
je 0x14f07
movq 0xa0(%rsp), %rsi
cmpq %rsi, %rax
jbe 0x14f20
movq 0x90(%rsp), %rsi
leaq 0x68(%rsp), %rdi
callq 0x50b0
jmp 0x14f31
leaq 0x90(%rsp), %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x5230
movq %rbx, 0x28(%rsp)
movq (%rax), %rdx
leaq 0x10(%rax), %rcx
cmpq %rcx, %rdx
je 0x14f51
movq %rdx, 0x28(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x38(%rsp)
jmp 0x14f59
movupd (%rcx), %xmm0
movupd %xmm0, (%rbx)
movq %rax, %rdx
addq $0x8, %rdx
movq 0x8(%rax), %rsi
movq %rsi, 0x30(%rsp)
movq %rcx, (%rax)
movq $0x0, (%rdx)
movb $0x0, (%rcx)
leaq 0x28(%rsp), %rdi
leaq 0x7f02(%rip), %rsi      # 0x1ce84
callq 0x53d0
movq %r12, (%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x14fa8
movq %rdx, (%rsp)
movq (%rcx), %rdx
movq %rdx, 0x10(%rsp)
jmp 0x14fb2
movupd (%rcx), %xmm0
movupd %xmm0, (%r12)
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 0x48(%rsp), %rdi
callq 0x50b0
movq (%rsp), %rdi
cmpq %r12, %rdi
je 0x14ff3
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x5200
movq 0x28(%rsp), %rdi
cmpq %rbx, %rdi
je 0x1500a
movq 0x38(%rsp), %rsi
incq %rsi
callq 0x5200
movq 0x90(%rsp), %rdi
leaq 0xa0(%rsp), %rax
cmpq %rax, %rdi
je 0x1502f
movq 0xa0(%rsp), %rsi
incq %rsi
callq 0x5200
movq 0x68(%rsp), %rdi
cmpq %r13, %rdi
je 0x15046
movq 0x78(%rsp), %rsi
incq %rsi
callq 0x5200
movq 0x248(%rsp), %rdi
leaq 0x258(%rsp), %rax
cmpq %rax, %rdi
movq %rsp, %r13
je 0x1506e
movq 0x258(%rsp), %rsi
incq %rsi
callq 0x5200
movq 0x2b8(%rsp), %rdi
testq %rdi, %rdi
je 0x15080
callq 0x78e4
cmpb $0x0, 0x20(%rsp)
je 0x150da
movq 0xb8(%r14), %rsi
leaq 0x68(%rsp), %rdi
callq 0x1ae4e
movq 0x68(%rsp), %rsi
movq (%rsi), %rax
leaq 0x28(%rsp), %r15
movq %r15, %rdi
callq *(%rax)
movq %r15, %rdi
leaq 0x7dd5(%rip), %rsi      # 0x1ce89
callq 0x53d0
movq %r12, (%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x15103
movq %rdx, (%rsp)
movq (%rcx), %rdx
movq %rdx, 0x10(%rsp)
jmp 0x1510d
leaq 0xb0(%rsp), %r12
movq %r12, %rdi
movq 0x10eb4(%rip), %rsi     # 0x25fa0
callq 0x5170
leaq 0x130(%rsp), %rdi
callq 0x50c0
jmp 0x151c1
movupd (%rcx), %xmm0
movupd %xmm0, (%r12)
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 0x48(%rsp), %rdi
callq 0x50b0
movq 0x88(%rsp), %rdi
movq 0x240(%rsp), %rcx
movq %rcx, (%rdi)
movq (%rax), %rsi
movq 0x8(%rax), %rdx
addq %rsi, %rdx
callq 0x7954
movq (%rsp), %rdi
cmpq %r12, %rdi
je 0x15170
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x5200
movq 0x28(%rsp), %rdi
cmpq %rbx, %rdi
leaq 0xb0(%rsp), %r12
je 0x1518f
movq 0x38(%rsp), %rsi
incq %rsi
callq 0x5200
movq 0x70(%rsp), %rdi
testq %rdi, %rdi
je 0x1519e
callq 0x78e4
movq %r12, %rdi
movq 0x10df8(%rip), %rsi     # 0x25fa0
callq 0x5170
leaq 0x130(%rsp), %rdi
callq 0x50c0
cmpb $0x0, 0x20(%rsp)
jne 0x1522f
addq $0x10, %rbp
movslq 0x108(%r14), %rax
movq 0x70(%r14), %rcx
leaq (%rax,%rax,2), %rax
cmpq -0x10(%rcx,%rax,8), %rbp
jne 0x14a3e
movq 0x88(%rsp), %rsi
leaq 0x10(%rsi), %rax
movq %rax, (%rsi)
movq 0x48(%rsp), %rcx
leaq 0x58(%rsp), %rdx
cmpq %rdx, %rcx
je 0x1520b
movq %rcx, (%rsi)
movq 0x58(%rsp), %rax
movq %rax, 0x10(%rsi)
jmp 0x15213
movupd (%rdx), %xmm0
movupd %xmm0, (%rax)
movq 0x50(%rsp), %rax
movq %rax, 0x8(%rsi)
movq %rdx, 0x48(%rsp)
movq $0x0, 0x50(%rsp)
movb $0x0, 0x58(%rsp)
movq 0x48(%rsp), %rdi
leaq 0x58(%rsp), %rax
cmpq %rax, %rdi
je 0x1524b
movq 0x58(%rsp), %rsi
incq %rsi
callq 0x5200
movq 0x88(%rsp), %rax
addq $0x3e8, %rsp            # imm = 0x3E8
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x152e6
jmp 0x152e1
jmp 0x152e6
jmp 0x152e1
jmp 0x152e6
jmp 0x152e1
jmp 0x152e1
jmp 0x152e6
jmp 0x152e1
jmp 0x152e1
jmp 0x152e6
jmp 0x152e1
jmp 0x152e6
jmp 0x152e6
jmp 0x152e6
jmp 0x152e1
jmp 0x152e1
jmp 0x152e6
jmp 0x152e6
jmp 0x152e1
jmp 0x152e6
jmp 0x152e1
jmp 0x152e6
jmp 0x152e1
jmp 0x152e1
jmp 0x152e6
jmp 0x152e1
jmp 0x152e6
jmp 0x152e1
jmp 0x152e6
jmp 0x152e1
jmp 0x152e6
jmp 0x152e1
jmp 0x152e6
jmp 0x152e6
jmp 0x152e1
jmp 0x152e1
jmp 0x152e6
jmp 0x152e1
jmp 0x152e1
jmp 0x152e6
jmp 0x152e1
jmp 0x152e6
jmp 0x152e6
jmp 0x152e6
jmp 0x152e1
jmp 0x152e6
jmp 0x152e1
jmp 0x152e1
jmp 0x152e1
jmp 0x152e6
jmp 0x152e6
jmp 0x152e6
jmp 0x152e1
jmp 0x152e6
jmp 0x152e1
jmp 0x152e1
jmp 0x152e6
jmp 0x152e1
jmp 0x152e6
jmp 0x152e6
jmp 0x152e1
movq %rax, %r14
jmp 0x15306
movq %rax, %r14
movq 0xb0(%rsp), %rdi
cmpq %r13, %rdi
je 0x15306
movq 0xc0(%rsp), %rsi
incq %rsi
callq 0x5200
xorl %ebx, %ebx
jmp 0x1582e
movq %rax, %r14
movq 0x308(%rsp), %rdi
jmp 0x157e0
jmp 0x157cd
jmp 0x15394
jmp 0x153a1
jmp 0x15768
movq %rax, %r14
movq 0x2d8(%rsp), %rdi
jmp 0x158c0
movq %rax, %r14
movq 0x348(%rsp), %rdi
jmp 0x1584b
jmp 0x1536c
jmp 0x1536c
jmp 0x15365
jmp 0x15365
jmp 0x15365
jmp 0x15365
jmp 0x1536c
jmp 0x1536c
jmp 0x15365
jmp 0x15365
jmp 0x15365
jmp 0x1536c
jmp 0x1536c
movq %rax, %r14
jmp 0x1538c
jmp 0x1536c
movq %rax, %r14
movq 0xb0(%rsp), %rdi
cmpq %r13, %rdi
je 0x1538c
movq 0xc0(%rsp), %rsi
incq %rsi
callq 0x5200
xorl %r15d, %r15d
jmp 0x1590e
movq %rax, %r14
jmp 0x1559b
jmp 0x15768
movq %rax, %r14
jmp 0x155b7
movq %rax, %r14
testq %r13, %r13
je 0x153b9
movq %r13, %rdi
callq 0x78e4
movq 0x30(%rsp), %rdi
testq %rdi, %rdi
je 0x153e2
callq 0x78e4
jmp 0x153e2
movq %rax, %r14
movq (%rsp), %rdi
cmpq %r12, %rdi
jne 0x1558e
jmp 0x1559b
movq %rax, %r14
testq %rbx, %rbx
je 0x153ef
movq %rbx, %rdi
callq 0x78e4
movq 0x70(%rsp), %rdi
testq %rdi, %rdi
je 0x15403
callq 0x78e4
jmp 0x15403
movq %rax, %r14
testq %r12, %r12
je 0x15410
movq %r12, %rdi
callq 0x78e4
movq 0x8(%rsp), %rdi
jmp 0x1574a
jmp 0x15768
movq %rax, %r14
movq (%rsp), %rdi
cmpq %r12, %rdi
je 0x1543d
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x5200
jmp 0x1543d
movq %rax, %r14
movq 0x28(%rsp), %rdi
leaq 0x38(%rsp), %rax
cmpq %rax, %rdi
je 0x1545e
movq 0x38(%rsp), %rsi
incq %rsi
callq 0x5200
jmp 0x1545e
movq %rax, %r14
movq 0x90(%rsp), %rdi
leaq 0xa0(%rsp), %rax
cmpq %rax, %rdi
je 0x1548d
movq 0xa0(%rsp), %rsi
incq %rsi
callq 0x5200
jmp 0x1548d
jmp 0x157cd
movq %rax, %r14
movq 0x68(%rsp), %rdi
leaq 0x78(%rsp), %rax
cmpq %rax, %rdi
je 0x154b3
movq 0x78(%rsp), %rsi
incq %rsi
callq 0x5200
jmp 0x154b3
jmp 0x155c1
movq %rax, %r14
movq 0x248(%rsp), %rdi
leaq 0x258(%rsp), %rax
cmpq %rax, %rdi
je 0x154e2
movq 0x258(%rsp), %rsi
incq %rsi
callq 0x5200
jmp 0x154e2
jmp 0x157cd
movq %rax, %r14
movq 0x2b8(%rsp), %rdi
jmp 0x1574a
jmp 0x15768
jmp 0x15515
jmp 0x1550a
jmp 0x15515
jmp 0x1550a
jmp 0x1550a
jmp 0x1550a
jmp 0x15515
jmp 0x1550a
jmp 0x15515
jmp 0x1550a
jmp 0x1550a
movq %rax, %r14
jmp 0x15535
jmp 0x15515
jmp 0x15515
jmp 0x15515
movq %rax, %r14
movq 0xb0(%rsp), %rdi
cmpq %r13, %rdi
je 0x15535
movq 0xc0(%rsp), %rsi
incq %rsi
callq 0x5200
xorl %r15d, %r15d
jmp 0x15899
jmp 0x157cd
movq %rax, %r14
jmp 0x1563a
movq %rax, %r14
jmp 0x155f9
movq %rax, %r14
jmp 0x15656
movq %rax, %r14
testq %r12, %r12
je 0x1556a
movq %r12, %rdi
callq 0x78e4
movq 0x8(%rsp), %rdi
testq %rdi, %rdi
je 0x156b7
callq 0x78e4
jmp 0x156b7
movq %rax, %r14
movq (%rsp), %rdi
cmpq %rbx, %rdi
je 0x1559b
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x5200
movq 0x28(%rsp), %rdi
leaq 0x38(%rsp), %rax
cmpq %rax, %rdi
je 0x155b7
movq 0x38(%rsp), %rsi
incq %rsi
callq 0x5200
movq 0x70(%rsp), %rdi
jmp 0x1574a
movq %rax, %r14
jmp 0x156c4
jmp 0x157cd
movq %rax, %r14
jmp 0x1567b
movq %rax, %r14
jmp 0x15615
movq %rax, %r14
movq (%rsp), %rdi
leaq 0x10(%rsp), %rax
cmpq %rax, %rdi
je 0x155f9
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x5200
movq 0x28(%rsp), %rdi
leaq 0x38(%rsp), %rax
cmpq %rax, %rdi
je 0x15615
movq 0x38(%rsp), %rsi
incq %rsi
callq 0x5200
movq 0x270(%rsp), %rdi
leaq 0x280(%rsp), %rax
cmpq %rax, %rdi
je 0x1563a
movq 0x280(%rsp), %rsi
incq %rsi
callq 0x5200
movq 0x68(%rsp), %rdi
leaq 0x78(%rsp), %rax
cmpq %rax, %rdi
je 0x15656
movq 0x78(%rsp), %rsi
incq %rsi
callq 0x5200
movq 0x248(%rsp), %rdi
leaq 0x258(%rsp), %rax
cmpq %rax, %rdi
je 0x1567b
movq 0x258(%rsp), %rsi
incq %rsi
callq 0x5200
movq 0x290(%rsp), %rdi
leaq 0x2a0(%rsp), %rax
cmpq %rax, %rdi
je 0x156d9
movq 0x2a0(%rsp), %rsi
incq %rsi
callq 0x5200
jmp 0x156d9
movq %rax, %r14
jmp 0x15742
movq %rax, %r14
jmp 0x1571d
jmp 0x157cd
movq %rax, %r14
testq %rbx, %rbx
je 0x156c4
movq %rbx, %rdi
callq 0x78e4
movq 0xb8(%rsp), %rdi
jmp 0x157bd
movq %rax, %r14
jmp 0x156f8
movq %rax, %r14
testq %rbx, %rbx
je 0x156e6
movq %rbx, %rdi
callq 0x78e4
movq 0x338(%rsp), %rdi
testq %rdi, %rdi
je 0x156f8
callq 0x78e4
movq 0x90(%rsp), %rdi
leaq 0xa0(%rsp), %rax
cmpq %rax, %rdi
je 0x1571d
movq 0xa0(%rsp), %rsi
incq %rsi
callq 0x5200
movq 0x2b0(%rsp), %rdi
leaq 0x2c0(%rsp), %rax
cmpq %rax, %rdi
je 0x15742
movq 0x2c0(%rsp), %rsi
incq %rsi
callq 0x5200
movq 0x3e0(%rsp), %rdi
testq %rdi, %rdi
je 0x1576b
callq 0x78e4
jmp 0x1576b
jmp 0x15768
jmp 0x15796
jmp 0x157cd
jmp 0x15791
jmp 0x157cd
jmp 0x15768
jmp 0x157cd
jmp 0x157cd
jmp 0x157cd
movq %rax, %r14
movq 0x1082e(%rip), %rsi     # 0x25fa0
leaq 0xb0(%rsp), %rdi
callq 0x5170
leaq 0x130(%rsp), %rdi
callq 0x50c0
jmp 0x158ae
movq %rax, %r14
jmp 0x157ab
movq %rax, %r14
movq 0xb8(%rsp), %rdi
testq %rdi, %rdi
je 0x157ab
callq 0x78e4
testq %rbx, %rbx
je 0x157b8
movq %rbx, %rdi
callq 0x78e4
movq 0x8(%rsp), %rdi
testq %rdi, %rdi
jne 0x158a9
jmp 0x158ae
jmp 0x157cd
movq %rax, %r14
jmp 0x158ae
movq %rax, %r14
movq 0x318(%rsp), %rdi
testq %rdi, %rdi
je 0x157ea
callq 0x78e4
movq %r15, %rbx
jmp 0x1582e
movq %rax, %r14
jmp 0x1581c
movq %rax, %r14
movq 0x390(%rsp), %rdi
leaq 0x3a0(%rsp), %rax
cmpq %rax, %rdi
je 0x1581c
movq 0x3a0(%rsp), %rsi
incq %rsi
callq 0x5200
movq 0x328(%rsp), %rdi
testq %rdi, %rdi
je 0x1582e
callq 0x78e4
movq %rsp, %rdi
callq 0x7888
testq %rbx, %rbx
je 0x158ae
movq %rbx, %rdi
jmp 0x158a9
movq %rax, %r14
movq 0x358(%rsp), %rdi
testq %rdi, %rdi
je 0x15855
callq 0x78e4
movq %rbx, %r15
jmp 0x15899
movq %rax, %r14
movq 0x3b0(%rsp), %rdi
leaq 0x3c0(%rsp), %rax
cmpq %rax, %rdi
je 0x15887
movq 0x3c0(%rsp), %rsi
incq %rsi
callq 0x5200
jmp 0x15887
movq %rax, %r14
movq 0x368(%rsp), %rdi
testq %rdi, %rdi
je 0x15899
callq 0x78e4
movq %rsp, %rdi
callq 0x7888
testq %r15, %r15
je 0x158ae
movq %r15, %rdi
callq 0x78e4
leaq 0x58(%rsp), %rbx
jmp 0x15928
movq %rax, %r14
movq 0x2e8(%rsp), %rdi
testq %rdi, %rdi
je 0x158ca
callq 0x78e4
movq %rbx, %r15
jmp 0x1590e
movq %rax, %r14
movq 0x370(%rsp), %rdi
leaq 0x380(%rsp), %rax
cmpq %rax, %rdi
je 0x158fc
movq 0x380(%rsp), %rsi
incq %rsi
callq 0x5200
jmp 0x158fc
movq %rax, %r14
movq 0x2f8(%rsp), %rdi
testq %rdi, %rdi
je 0x1590e
callq 0x78e4
leaq 0x58(%rsp), %rbx
movq %rsp, %rdi
callq 0x7888
testq %r15, %r15
je 0x15928
movq %r15, %rdi
callq 0x78e4
movq 0x48(%rsp), %rdi
cmpq %rbx, %rdi
je 0x1593f
movq 0x58(%rsp), %rsi
incq %rsi
callq 0x5200
movq %r14, %rdi
callq 0x5390
nop