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

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

    // Check if destination is occupied by an enemy
    if (target->getOccupant() != nullptr) {
        std::string merchantStatus = "";

        // Check if target is merchant, if merchants are not hostile
        if (!merchantAgro && std::dynamic_pointer_cast<Merchant>(target->getOccupant())) {
            // Merchants are now hostile
            merchantAgro = true;
            merchantStatus = "Merchants are now hostile. ";
        }

        // Begin attack sequence and store resulting enemy state
        double enemyOgHP = target->getOccupant()->getHP();
        bool EnemyKilled = std::dynamic_pointer_cast<Enemy>(target->getOccupant())->getAttacked(*(std::dynamic_pointer_cast<Player>(player->getOccupant())));
    
        if (EnemyKilled) {
            // Enemy killed, determine Enemy type to generate gold dropped

            // Check if target is dragon
            if (target->getOccupant()->getRace() == "Dragon") {
                // Dragon Type, drop nothing
                
                // Remove this dragon from dragons
                for (auto it = dragonHoards[floorNum-1].begin(); it != dragonHoards[floorNum-1].end(); ++it) {
                    if (std::dynamic_pointer_cast<DragonHoard>((*it)->getGold())->getDragon() == target->getOccupant()) {
                        std::dynamic_pointer_cast<DragonHoard>((*it)->getGold())->getDragon()->setState(false);
                    }
                }
                
                message = "Dragon killed. " + merchantStatus;

                // Remove enemy + move player to old spot
                target->setOccupant(nullptr);
                player = player->move(target);

            } else {
                
                std::string eRace = target->getOccupant()->getRace();
                message = eRace + " killed. ";

                // Check if target is human or merchant
                if (target->getOccupant()->getRace() == "Human") {
                    // Human type, drop 2 Normal Piles
                    playerPtr->setGold(playerPtr->getGold() + 2);
                    message += "Normal hoard picked up. ";

                    // RNG a second pile nearby
                    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(target, directions[rng]);

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

                    destination->setGold(std::make_shared<Gold>("Normal Hoard", 2));

                } else if (target->getOccupant()->getRace() == "Merchant") {
                    // Merchant Type, drop Merchant Hoard
                    playerPtr->setGold(playerPtr->getGold() + 4);
                    message += "Merchant Hoard picked up. ";

                } else {
                    // Other type, RNG gold
                    if (std::rand() % 2 == 0) {
                        // Small pile
                        playerPtr->setGold(playerPtr->getGold() + 1);
                        message += "Small Hoard picked up. ";
                    } else {
                        // Normal pile
                        playerPtr->setGold(playerPtr->getGold() + 2);
                        message += "Normal Hoard picked up. ";
                    }
                }

                message += merchantStatus;

                // Remove this enemy from enemies
                for (auto it = enemies[floorNum-1].begin(); it != enemies[floorNum-1].end(); ++it) {
                    if ((*it)->getOccupant() == target->getOccupant()) {
                        enemies[floorNum-1].erase(it); 
                    }
                }

                // Remove enemy + move player to old spot
                target->setOccupant(nullptr);
                player = player->move(target);
                
            }

        } else {
            std::stringstream dealt, left;
            dealt << std::fixed << std::setprecision(2) << enemyOgHP - target->getOccupant()->getHP();
            left << std::fixed << std::setprecision(2) << target->getOccupant()->getHP();

            message = target->getOccupant()->getRace() + " attacked for " + dealt.str() + "HP (" + left.str() + "HP remaining). "  + merchantStatus;
        }
    } else {
        message = "No Enemy to Attack. ";
    }

    return message;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x578, %rsp            # imm = 0x578
movq %rsi, %r14
movq %rdi, %r13
movq 0xb8(%rsi), %rax
movq %rax, 0x190(%rsp)
movq 0xc0(%rsi), %rax
movq %rax, 0x198(%rsp)
testq %rax, %rax
je 0x1112f
movq 0x14e9f(%rip), %rcx     # 0x25fc0
cmpb $0x0, (%rcx)
je 0x1112b
incl 0x8(%rax)
jmp 0x1112f
lock
incl 0x8(%rax)
leaq 0x3a0(%rsp), %r15
movq %r15, -0x10(%r15)
movq (%rdx), %rsi
movq 0x8(%rdx), %rdx
addq %rsi, %rdx
leaq 0x390(%rsp), %rdi
callq 0x7954
leaq 0x20(%rsp), %rdi
leaq 0x190(%rsp), %rdx
leaq 0x390(%rsp), %rcx
movq %r14, %rsi
callq 0xebb4
movq 0x390(%rsp), %rdi
cmpq %r15, %rdi
je 0x1118c
movq 0x3a0(%rsp), %rsi
incq %rsi
callq 0x5200
movq 0x198(%rsp), %rdi
testq %rdi, %rdi
je 0x1119e
callq 0x78e4
leaq 0x40(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0xbca1(%rip), %rdx      # 0x1ce4f
leaq 0x30(%rsp), %rdi
movq %rdx, %rsi
callq 0x7a9c
movq 0x20(%rsp), %rbx
testq %rbx, %rbx
je 0x11234
movq %r14, 0xb8(%rsp)
leaq 0x3f0(%rsp), %rdi
movq %rbx, %rsi
callq 0x1ae4e
movq 0x3f0(%rsp), %r14
movq 0x3f8(%rsp), %rdi
testq %rdi, %rdi
je 0x111f7
callq 0x78e4
testq %r14, %r14
je 0x1125c
leaq 0x68(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0xbc43(%rip), %rdx      # 0x1ce4f
leaq 0x58(%rsp), %rdi
movq %rdx, %rsi
callq 0x7a9c
movq 0xb8(%rsp), %r14
movb 0x10c(%r14), %bpl
testb %bpl, %bpl
je 0x1127e
xorl %ebx, %ebx
jmp 0x112e2
leaq 0x10(%r13), %rax
movq %rax, (%r13)
leaq 0xbb2a(%rip), %rsi      # 0x1cd6d
leaq 0xbb3a(%rip), %rdx      # 0x1cd84
movq %r13, %rdi
leaq 0x40(%rsp), %rbx
callq 0x7a9c
jmp 0x126cb
leaq 0x30(%rsp), %rdi
movq 0x8(%rdi), %rdx
leaq 0xbbe4(%rip), %rcx      # 0x1ce50
movl $0x14, %r8d
xorl %esi, %esi
callq 0x52f0
jmp 0x1267e
leaq 0x380(%rsp), %rdi
movq %rbx, %rsi
callq 0x1ae4e
movq 0x380(%rsp), %rdi
testq %rdi, %rdi
je 0x112b8
leaq 0x14226(%rip), %rsi     # 0x254c8
leaq 0x144cf(%rip), %rdx     # 0x25778
xorl %ecx, %ecx
callq 0x5240
testq %rax, %rax
setne %bl
jmp 0x112ba
xorl %ebx, %ebx
testb %bl, %bl
je 0x112e0
movq 0x388(%rsp), %rdi
testq %rdi, %rdi
je 0x112e2
movq 0x14cee(%rip), %rax     # 0x25fc0
cmpb $0x0, (%rax)
je 0x125ec
incl 0x8(%rdi)
jmp 0x112e2
xorl %edi, %edi
testb %bpl, %bpl
jne 0x11303
testq %rdi, %rdi
je 0x112f1
callq 0x78e4
movq 0x388(%rsp), %rdi
testq %rdi, %rdi
je 0x11303
callq 0x78e4
testb %bl, %bl
je 0x1132c
movb $0x1, 0x10c(%r14)
leaq 0x58(%rsp), %rdi
movq 0x8(%rdi), %rdx
leaq 0xba66(%rip), %rcx      # 0x1cd85
movl $0x1b, %r8d
xorl %esi, %esi
callq 0x52f0
movq 0x20(%rsp), %rbx
leaq 0x3f0(%rsp), %rdi
movq %rbx, %rsi
callq 0x1ae4e
movq 0x3f0(%rsp), %rdi
callq 0x16c1a
movsd %xmm0, 0x368(%rsp)
movq 0x3f8(%rsp), %rdi
testq %rdi, %rdi
je 0x11369
callq 0x78e4
leaq 0x3f0(%rsp), %rdi
movq %rbx, %rsi
callq 0x1ae4e
movq 0x3f0(%rsp), %rdi
testq %rdi, %rdi
je 0x113a0
leaq 0x1413b(%rip), %rsi     # 0x254c8
leaq 0x14144(%rip), %rdx     # 0x254d8
xorl %ecx, %ecx
callq 0x5240
movq %rax, %rbx
jmp 0x113a2
xorl %ebx, %ebx
testq %rbx, %rbx
je 0x113c6
movq 0x3f8(%rsp), %r15
testq %r15, %r15
je 0x113d2
movq 0x14c05(%rip), %rax     # 0x25fc0
cmpb $0x0, (%rax)
je 0x113cd
incl 0x8(%r15)
jmp 0x113d2
xorl %r15d, %r15d
xorl %ebx, %ebx
jmp 0x113d2
lock
incl 0x8(%r15)
movq 0xb8(%r14), %rsi
leaq 0x1e0(%rsp), %rdi
callq 0x1ae4e
movq 0x1e0(%rsp), %rdi
testq %rdi, %rdi
je 0x1140d
leaq 0x140ce(%rip), %rsi     # 0x254c8
leaq 0x1469f(%rip), %rdx     # 0x25aa0
xorl %ecx, %ecx
callq 0x5240
movq %rax, %rsi
jmp 0x1140f
xorl %esi, %esi
movq 0x1e8(%rsp), %r12
testq %r12, %r12
je 0x11435
movq 0x14b9d(%rip), %rax     # 0x25fc0
cmpb $0x0, (%rax)
je 0x1142f
incl 0x8(%r12)
jmp 0x11435
lock
incl 0x8(%r12)
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x8(%rax)
movl %eax, %ebx
testq %r12, %r12
je 0x1144d
movq %r12, %rdi
callq 0x78e4
movq 0x1e8(%rsp), %rdi
testq %rdi, %rdi
je 0x1145f
callq 0x78e4
testq %r15, %r15
je 0x1146c
movq %r15, %rdi
callq 0x78e4
movq 0x3f8(%rsp), %rdi
testq %rdi, %rdi
je 0x1147e
callq 0x78e4
testb %bl, %bl
movq %r13, 0x50(%rsp)
je 0x116a9
movq 0x20(%rsp), %rbx
leaq 0x1e0(%rsp), %rdi
movq %rbx, %rsi
callq 0x1ae4e
movq 0x1e0(%rsp), %rsi
movq (%rsi), %rax
leaq 0x3f0(%rsp), %rdi
callq *(%rax)
leaq 0xb8e5(%rip), %rsi      # 0x1cda1
leaq 0x3f0(%rsp), %r15
movq %r15, %rdi
callq 0x50a0
movl %eax, %ebp
movq (%r15), %rdi
leaq 0x400(%rsp), %rax
cmpq %rax, %rdi
je 0x114ee
movq 0x400(%rsp), %rsi
incq %rsi
callq 0x5200
movq 0x1e8(%rsp), %rdi
testq %rdi, %rdi
je 0x11500
callq 0x78e4
testl %ebp, %ebp
je 0x11810
leaq 0x1e0(%rsp), %rdi
movq %rbx, %rsi
callq 0x1ae4e
movq 0x1e0(%rsp), %rsi
movq (%rsi), %rax
leaq 0x3f0(%rsp), %rdi
callq *(%rax)
movq 0x1e8(%rsp), %rdi
testq %rdi, %rdi
je 0x1153f
callq 0x78e4
leaq 0x1f0(%rsp), %r12
movq %r12, -0x10(%r12)
movq 0x3f0(%rsp), %rsi
movq 0x3f8(%rsp), %rdx
addq %rsi, %rdx
leaq 0x1e0(%rsp), %rdi
callq 0x7954
leaq 0xb83b(%rip), %rsi      # 0x1cdae
leaq 0x1e0(%rsp), %rdi
callq 0x53d0
leaq 0x30(%rsp), %rdi
leaq 0x1e0(%rsp), %r15
movq %r15, %rsi
callq 0x5280
movq (%r15), %rdi
cmpq %r12, %rdi
je 0x115ad
movq 0x1f0(%rsp), %rsi
incq %rsi
callq 0x5200
movq %rsp, %rdi
movq %rbx, %rsi
callq 0x1ae4e
movq (%rsp), %rsi
movq (%rsi), %rax
leaq 0x1e0(%rsp), %rdi
callq *(%rax)
leaq 0xb7e8(%rip), %rsi      # 0x1cdb8
leaq 0x1e0(%rsp), %r15
movq %r15, %rdi
callq 0x50a0
movl %eax, %ebp
movq (%r15), %rdi
cmpq %r12, %rdi
je 0x115fa
movq 0x1f0(%rsp), %rsi
incq %rsi
callq 0x5200
movq 0x8(%rsp), %rdi
testq %rdi, %rdi
je 0x11609
callq 0x78e4
testl %ebp, %ebp
je 0x11f19
movq %rsp, %rdi
movq %rbx, %rsi
callq 0x1ae4e
movq (%rsp), %rsi
movq (%rsi), %rax
leaq 0x1e0(%rsp), %rdi
callq *(%rax)
leaq 0xb7a3(%rip), %rsi      # 0x1cdd7
leaq 0x1e0(%rsp), %r15
movq %r15, %rdi
callq 0x50a0
movl %eax, %ebx
movq (%r15), %rdi
cmpq %r12, %rdi
je 0x1165e
movq 0x1f0(%rsp), %rsi
incq %rsi
callq 0x5200
movq 0x8(%rsp), %rdi
testq %rdi, %rdi
je 0x1166d
callq 0x78e4
testl %ebx, %ebx
je 0x12345
callq 0x5080
movq 0xf8(%r14), %rbx
testb $0x1, %al
jne 0x1236a
movq %rbx, %rdi
callq 0x192c0
incl %eax
movq %rbx, %rdi
movl %eax, %esi
callq 0x192c4
leaq 0xb757(%rip), %rsi      # 0x1cdfb
jmp 0x12386
leaq 0x3f0(%rsp), %r15
movq %r15, %rdi
callq 0x5150
leaq 0x1e0(%rsp), %rdi
callq 0x5150
movq 0x400(%rsp), %rax
movq -0x18(%rax), %rcx
movl $0xfffffefb, %edx       # imm = 0xFFFFFEFB
andl 0x418(%rsp,%rcx), %edx
orl $0x4, %edx
movl %edx, 0x418(%rsp,%rcx)
movq -0x18(%rax), %rax
movq $0x2, 0x408(%rsp,%rax)
movq 0x20(%rsp), %rbx
movq %rsp, %rdi
movq %rbx, %rsi
callq 0x1ae4e
movq (%rsp), %rdi
callq 0x16c1a
leaq 0x400(%rsp), %rdi
movsd 0x368(%rsp), %xmm1
subsd %xmm0, %xmm1
movapd %xmm1, %xmm0
callq 0x5320
movq 0x8(%rsp), %rdi
testq %rdi, %rdi
je 0x1173e
callq 0x78e4
movq 0x1f0(%rsp), %rax
movq -0x18(%rax), %rcx
movl $0xfffffefb, %edx       # imm = 0xFFFFFEFB
andl 0x208(%rsp,%rcx), %edx
orl $0x4, %edx
movl %edx, 0x208(%rsp,%rcx)
movq -0x18(%rax), %rax
movq $0x2, 0x1f8(%rsp,%rax)
movq %rsp, %rdi
movq %rbx, %rsi
callq 0x1ae4e
movq (%rsp), %rdi
callq 0x16c1a
leaq 0x1f0(%rsp), %rdi
callq 0x5320
movq 0x8(%rsp), %rdi
testq %rdi, %rdi
je 0x117a0
callq 0x78e4
leaq 0x370(%rsp), %rdi
movq %rbx, %rsi
callq 0x1ae4e
movq 0x370(%rsp), %rsi
movq (%rsi), %rax
leaq 0x3d0(%rsp), %rdi
callq *(%rax)
leaq 0xb660(%rip), %rsi      # 0x1ce2c
leaq 0x3d0(%rsp), %rdi
callq 0x53d0
leaq 0xd0(%rsp), %r13
movq %r13, -0x10(%r13)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x11a7c
movq %rdx, 0xc0(%rsp)
movq (%rcx), %rdx
movq %rdx, 0xd0(%rsp)
jmp 0x11a86
movslq 0x108(%r14), %rax
movq 0x70(%r14), %rcx
leaq (%rax,%rax,2), %rax
movq -0x18(%rcx,%rax,8), %rbx
cmpq -0x10(%rcx,%rax,8), %rbx
je 0x119c2
leaq 0x3f0(%rsp), %r12
movq (%rbx), %rsi
leaq 0x1e0(%rsp), %rdi
callq 0x1aece
movq 0x1e0(%rsp), %rdi
testq %rdi, %rdi
je 0x1186e
leaq 0x140e5(%rip), %rsi     # 0x25940
leaq 0x13c4e(%rip), %rdx     # 0x254b0
xorl %ecx, %ecx
callq 0x5240
movq %rax, %rsi
jmp 0x11870
xorl %esi, %esi
movq 0x1e8(%rsp), %rbp
testq %rbp, %rbp
je 0x11892
movq 0x1473c(%rip), %rax     # 0x25fc0
cmpb $0x0, (%rax)
je 0x1188e
incl 0x8(%rbp)
jmp 0x11892
lock
incl 0x8(%rbp)
movq %r12, %rdi
callq 0x187b2
movq 0x20(%rsp), %rsi
movq %rsp, %rdi
callq 0x1ae4e
movq 0x3f0(%rsp), %r13
movq (%rsp), %r15
movq 0x8(%rsp), %rdi
testq %rdi, %rdi
je 0x118c2
callq 0x78e4
movq 0x3f8(%rsp), %rdi
testq %rdi, %rdi
je 0x118d4
callq 0x78e4
testq %rbp, %rbp
je 0x118e1
movq %rbp, %rdi
callq 0x78e4
movq 0x1e8(%rsp), %rdi
testq %rdi, %rdi
je 0x118f3
callq 0x78e4
cmpq %r15, %r13
movq 0x50(%rsp), %r13
jne 0x119a4
movq (%rbx), %rsi
leaq 0x1e0(%rsp), %rdi
callq 0x1aece
movq 0x1e0(%rsp), %rdi
testq %rdi, %rdi
je 0x11938
leaq 0x1401b(%rip), %rsi     # 0x25940
leaq 0x13b84(%rip), %rdx     # 0x254b0
xorl %ecx, %ecx
callq 0x5240
movq %rax, %rsi
jmp 0x1193a
xorl %esi, %esi
movq 0x1e8(%rsp), %rbp
testq %rbp, %rbp
je 0x1195c
movq 0x14672(%rip), %rax     # 0x25fc0
cmpb $0x0, (%rax)
je 0x11958
incl 0x8(%rbp)
jmp 0x1195c
lock
incl 0x8(%rbp)
movq %r12, %rdi
callq 0x187b2
movq 0x3f0(%rsp), %rdi
xorl %esi, %esi
callq 0x16c84
movq 0x3f8(%rsp), %rdi
testq %rdi, %rdi
je 0x11985
callq 0x78e4
testq %rbp, %rbp
je 0x11992
movq %rbp, %rdi
callq 0x78e4
movq 0x1e8(%rsp), %rdi
testq %rdi, %rdi
je 0x119a4
callq 0x78e4
addq $0x10, %rbx
movslq 0x108(%r14), %rax
movq 0x70(%r14), %rcx
leaq (%rax,%rax,2), %rax
cmpq -0x10(%rcx,%rax,8), %rbx
jne 0x11837
leaq 0xb3df(%rip), %rsi      # 0x1cda8
leaq 0x3f0(%rsp), %rdi
leaq 0x58(%rsp), %rdx
callq 0x73d1
leaq 0x30(%rsp), %rdi
leaq 0x3f0(%rsp), %rbx
movq %rbx, %rsi
callq 0x5280
movq (%rbx), %rdi
leaq 0x400(%rsp), %rax
cmpq %rax, %rdi
je 0x11a10
movq 0x400(%rsp), %rsi
incq %rsi
callq 0x5200
movq 0x20(%rsp), %rbx
xorpd %xmm0, %xmm0
leaq 0x3c0(%rsp), %rsi
movapd %xmm0, (%rsi)
movq %rbx, %rdi
callq 0x1ae7a
movq 0x3c8(%rsp), %rdi
testq %rdi, %rdi
je 0x11a3f
callq 0x78e4
movq 0xb8(%r14), %rsi
movq %rbx, 0x180(%rsp)
movq 0x28(%rsp), %rax
movq %rax, 0x188(%rsp)
testq %rax, %rax
je 0x125f9
movq 0x14555(%rip), %rcx     # 0x25fc0
cmpb $0x0, (%rcx)
je 0x125f5
incl 0x8(%rax)
jmp 0x125f9
movupd (%rcx), %xmm0
movupd %xmm0, (%r13)
movq 0x8(%rax), %rdx
movq %rdx, 0xc8(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0x408(%rsp), %rsi
leaq 0x120(%rsp), %rdi
callq 0x5310
movq 0xc0(%rsp), %rcx
movq 0xc8(%rsp), %r8
movq 0x128(%rsp), %rdx
leaq (%rdx,%r8), %rax
movl $0xf, %esi
cmpq %r13, %rcx
je 0x11ae4
movq 0xd0(%rsp), %rsi
cmpq %rsi, %rax
jbe 0x11b09
leaq 0x130(%rsp), %rdi
movl $0xf, %esi
cmpq %rdi, -0x10(%rdi)
je 0x11b04
movq 0x130(%rsp), %rsi
cmpq %rsi, %rax
jbe 0x11b20
movq 0x120(%rsp), %rsi
leaq 0xc0(%rsp), %rdi
callq 0x50b0
jmp 0x11b31
leaq 0x120(%rsp), %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x5230
leaq 0x88(%rsp), %rdx
movq %rdx, -0x10(%rdx)
movq (%rax), %rsi
leaq 0x10(%rax), %rcx
cmpq %rcx, %rsi
je 0x11b5b
movq %rsi, 0x78(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x88(%rsp)
jmp 0x11b63
movupd (%rcx), %xmm0
movupd %xmm0, (%rdx)
movq %rax, %rdx
addq $0x8, %rdx
movq 0x8(%rax), %rsi
movq %rsi, 0x80(%rsp)
movq %rcx, (%rax)
movq $0x0, (%rdx)
movb $0x0, (%rcx)
leaq 0xb2b1(%rip), %rsi      # 0x1ce3b
leaq 0x78(%rsp), %rdi
callq 0x53d0
leaq 0xf0(%rsp), %r12
movq %r12, -0x10(%r12)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x11bc5
movq %rdx, 0xe0(%rsp)
movq (%rcx), %rdx
movq %rdx, 0xf0(%rsp)
jmp 0x11bcf
movupd (%rcx), %xmm0
movupd %xmm0, (%r12)
movq 0x8(%rax), %rdx
movq %rdx, 0xe8(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0x1f8(%rsp), %rsi
leaq 0x100(%rsp), %rdi
callq 0x5310
movq 0xe0(%rsp), %rcx
movq 0xe8(%rsp), %r8
movq 0x108(%rsp), %rdx
leaq (%rdx,%r8), %rax
movl $0xf, %esi
cmpq %r12, %rcx
je 0x11c2d
movq 0xf0(%rsp), %rsi
cmpq %rsi, %rax
jbe 0x11c52
leaq 0x110(%rsp), %rdi
movl $0xf, %esi
cmpq %rdi, -0x10(%rdi)
je 0x11c4d
movq 0x110(%rsp), %rsi
cmpq %rsi, %rax
jbe 0x11c69
movq 0x100(%rsp), %rsi
leaq 0xe0(%rsp), %rdi
callq 0x50b0
jmp 0x11c7a
leaq 0x100(%rsp), %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x5230
leaq 0xa8(%rsp), %rdx
movq %rdx, -0x10(%rdx)
movq (%rax), %rsi
leaq 0x10(%rax), %rcx
cmpq %rcx, %rsi
je 0x11ca7
movq %rsi, 0x98(%rsp)
movq (%rcx), %rdx
movq %rdx, 0xa8(%rsp)
jmp 0x11caf
movupd (%rcx), %xmm0
movupd %xmm0, (%rdx)
movq %rax, %rdx
addq $0x8, %rdx
movq 0x8(%rax), %rsi
movq %rsi, 0xa0(%rsp)
movq %rcx, (%rax)
movq $0x0, (%rdx)
movb $0x0, (%rcx)
leaq 0xb16a(%rip), %rsi      # 0x1ce40
leaq 0x98(%rsp), %rdi
callq 0x53d0
leaq 0x1b0(%rsp), %rbp
movq %rbp, -0x10(%rbp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x11d13
movq %rdx, 0x1a0(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x1b0(%rsp)
jmp 0x11d1c
movupd (%rcx), %xmm0
movupd %xmm0, (%rbp)
movq %r12, %r14
movq 0x8(%rax), %rdx
leaq 0x1a0(%rsp), %rdi
movq %rdx, 0x8(%rdi)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq 0x58(%rsp), %rsi
movq 0x60(%rsp), %rdx
callq 0x50b0
leaq 0x10(%rsp), %r12
movq %r12, -0x10(%r12)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x11d74
movq %rdx, (%rsp)
movq (%rcx), %rdx
movq %rdx, 0x10(%rsp)
jmp 0x11d7e
movupd (%rcx), %xmm0
movupd %xmm0, (%r12)
movq 0x8(%rax), %rdx
movq %rsp, %rbx
movq %rdx, 0x8(%rbx)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0x30(%rsp), %rdi
movq %rbx, %rsi
callq 0x5280
movq (%rbx), %rdi
cmpq %r12, %rdi
je 0x11dba
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x5200
movq 0x1a0(%rsp), %rdi
cmpq %rbp, %rdi
movq %r13, %rbx
je 0x11dda
movq 0x1b0(%rsp), %rsi
incq %rsi
callq 0x5200
leaq 0xa8(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x11dfb
movq 0xa8(%rsp), %rsi
incq %rsi
callq 0x5200
leaq 0x110(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x11e1c
movq 0x110(%rsp), %rsi
incq %rsi
callq 0x5200
movq 0xe0(%rsp), %rdi
cmpq %r14, %rdi
je 0x11e39
movq 0xf0(%rsp), %rsi
incq %rsi
callq 0x5200
leaq 0x88(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
movq 0x50(%rsp), %r13
movq %r15, %r14
je 0x11e62
movq 0x88(%rsp), %rsi
incq %rsi
callq 0x5200
leaq 0x130(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x11e83
movq 0x130(%rsp), %rsi
incq %rsi
callq 0x5200
movq 0xc0(%rsp), %rdi
cmpq %rbx, %rdi
je 0x11ea0
movq 0xd0(%rsp), %rsi
incq %rsi
callq 0x5200
leaq 0x3e0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x11ec1
movq 0x3e0(%rsp), %rsi
incq %rsi
callq 0x5200
movq 0x378(%rsp), %rdi
testq %rdi, %rdi
je 0x11ed3
callq 0x78e4
movq 0x140c6(%rip), %rbx     # 0x25fa0
leaq 0x1e0(%rsp), %r15
movq %r15, %rdi
movq %rbx, %rsi
callq 0x5170
movl $0x80, %r12d
addq %r12, %r15
movq %r15, %rdi
callq 0x50c0
movq %r14, %rdi
movq %rbx, %rsi
callq 0x5170
addq %r12, %r14
movq %r14, %rdi
callq 0x50c0
jmp 0x12662
movq 0xf8(%r14), %rbx
movq %rbx, %rdi
callq 0x192c0
addl $0x2, %eax
movq %rbx, %rdi
movl %eax, %esi
callq 0x192c4
leaq 0xae82(%rip), %rsi      # 0x1cdbe
leaq 0x30(%rsp), %rdi
callq 0x53d0
xorpd %xmm0, %xmm0
movapd %xmm0, (%rsp)
movq $0x0, 0x10(%rsp)
leaq 0x1e0(%rsp), %rdi
movq %r12, (%rdi)
leaq 0xa397(%rip), %rsi      # 0x1c301
leaq 0xa392(%rip), %rdx      # 0x1c303
callq 0x7a9c
movq %rsp, %rdi
leaq 0x1e0(%rsp), %rsi
callq 0x1618e
movq 0x1e0(%rsp), %rdi
cmpq %r12, %rdi
je 0x11fa3
movq 0x1f0(%rsp), %rsi
incq %rsi
callq 0x5200
leaq 0x1e0(%rsp), %rdi
movq %r12, (%rdi)
leaq 0xa352(%rip), %rsi      # 0x1c307
leaq 0xa34d(%rip), %rdx      # 0x1c309
callq 0x7a9c
movq %rsp, %rdi
leaq 0x1e0(%rsp), %rsi
callq 0x1618e
movq 0x1e0(%rsp), %rdi
cmpq %r12, %rdi
je 0x11fee
movq 0x1f0(%rsp), %rsi
incq %rsi
callq 0x5200
leaq 0x1e0(%rsp), %rdi
movq %r12, (%rdi)
leaq 0xa304(%rip), %rsi      # 0x1c304
leaq 0xa2ff(%rip), %rdx      # 0x1c306
callq 0x7a9c
movq %rsp, %rdi
leaq 0x1e0(%rsp), %rsi
callq 0x1618e
movq 0x1e0(%rsp), %rdi
cmpq %r12, %rdi
je 0x12039
movq 0x1f0(%rsp), %rsi
incq %rsi
callq 0x5200
leaq 0x1e0(%rsp), %rdi
movq %r12, (%rdi)
leaq 0xa2bf(%rip), %rsi      # 0x1c30a
leaq 0xa2ba(%rip), %rdx      # 0x1c30c
callq 0x7a9c
movq %rsp, %rdi
leaq 0x1e0(%rsp), %rsi
callq 0x1618e
movq 0x1e0(%rsp), %rdi
cmpq %r12, %rdi
je 0x12084
movq 0x1f0(%rsp), %rsi
incq %rsi
callq 0x5200
leaq 0x1e0(%rsp), %rdi
movq %r12, (%rdi)
leaq 0xa277(%rip), %rsi      # 0x1c30d
leaq 0xa272(%rip), %rdx      # 0x1c30f
callq 0x7a9c
movq %rsp, %rdi
leaq 0x1e0(%rsp), %rsi
callq 0x1618e
movq 0x1e0(%rsp), %rdi
cmpq %r12, %rdi
je 0x120cf
movq 0x1f0(%rsp), %rsi
incq %rsi
callq 0x5200
leaq 0x1e0(%rsp), %rdi
movq %r12, (%rdi)
leaq 0xa22f(%rip), %rsi      # 0x1c310
leaq 0xa22a(%rip), %rdx      # 0x1c312
callq 0x7a9c
movq %rsp, %rdi
leaq 0x1e0(%rsp), %rsi
callq 0x1618e
movq 0x1e0(%rsp), %rdi
cmpq %r12, %rdi
je 0x1211a
movq 0x1f0(%rsp), %rsi
incq %rsi
callq 0x5200
leaq 0x1e0(%rsp), %rdi
movq %r12, (%rdi)
leaq 0xa1e7(%rip), %rsi      # 0x1c313
leaq 0xa1e2(%rip), %rdx      # 0x1c315
callq 0x7a9c
movq %rsp, %rdi
leaq 0x1e0(%rsp), %rsi
callq 0x1618e
movq 0x1e0(%rsp), %rdi
cmpq %r12, %rdi
je 0x12165
movq 0x1f0(%rsp), %rsi
incq %rsi
callq 0x5200
leaq 0x1e0(%rsp), %rdi
movq %r12, (%rdi)
leaq 0xa19f(%rip), %rsi      # 0x1c316
leaq 0xa19a(%rip), %rdx      # 0x1c318
callq 0x7a9c
movq %rsp, %rdi
leaq 0x1e0(%rsp), %rsi
callq 0x1618e
movq 0x1e0(%rsp), %rdi
cmpq %r12, %rdi
je 0x121b0
movq 0x1f0(%rsp), %rsi
incq %rsi
callq 0x5200
movl $0x52, %r13d
xorl %r12d, %r12d
leaq 0x1c0(%rsp), %rbx
movq %r12, %r15
decl %r13d
je 0x12395
callq 0x5080
cltq
movq 0x8(%rsp), %rcx
subq (%rsp), %rcx
sarq $0x5, %rcx
xorl %edx, %edx
divq %rcx
movq 0x20(%rsp), %rcx
movq 0x28(%rsp), %rax
movq %rcx, 0x170(%rsp)
movq %rax, 0x178(%rsp)
testq %rax, %rax
je 0x1221a
movq 0x13db4(%rip), %rcx     # 0x25fc0
cmpb $0x0, (%rcx)
je 0x12216
incl 0x8(%rax)
jmp 0x1221a
lock
incl 0x8(%rax)
movq (%rsp), %rax
movslq %edx, %rcx
shlq $0x5, %rcx
leaq 0x1d0(%rsp), %rdx
movq %rdx, 0x1c0(%rsp)
movq (%rax,%rcx), %rsi
movq 0x8(%rax,%rcx), %rdx
addq %rsi, %rdx
movq %rbx, %rdi
callq 0x7954
leaq 0x1e0(%rsp), %rdi
movq %r14, %rsi
leaq 0x170(%rsp), %rdx
movq %rbx, %rcx
callq 0xebb4
movq 0x1e0(%rsp), %rbp
movq 0x1e8(%rsp), %r12
xorpd %xmm0, %xmm0
movapd %xmm0, 0x1e0(%rsp)
testq %r15, %r15
je 0x1228e
movq %r15, %rdi
callq 0x78e4
movq 0x1e8(%rsp), %rdi
testq %rdi, %rdi
je 0x122a0
callq 0x78e4
movq 0x1c0(%rsp), %rdi
leaq 0x1d0(%rsp), %rax
cmpq %rax, %rdi
je 0x122c5
movq 0x1d0(%rsp), %rsi
incq %rsi
callq 0x5200
movq 0x178(%rsp), %rdi
testq %rdi, %rdi
je 0x122d7
callq 0x78e4
testq %rbp, %rbp
je 0x12304
movq %rbp, 0x160(%rsp)
movq %r12, 0x168(%rsp)
testq %r12, %r12
je 0x1230f
movq 0x13cc8(%rip), %rax     # 0x25fc0
cmpb $0x0, (%rax)
je 0x12309
incl 0x8(%r12)
jmp 0x1230f
movb $0x1, %r15b
jmp 0x12323
lock
incl 0x8(%r12)
leaq 0x160(%rsp), %rsi
callq 0xf5ac
movl %eax, %r15d
xorb $0x1, %r15b
testq %rbp, %rbp
je 0x1233a
movq 0x168(%rsp), %rdi
testq %rdi, %rdi
je 0x1233a
callq 0x78e4
testb %r15b, %r15b
jne 0x121c1
jmp 0x123a7
movq 0xf8(%r14), %rbx
movq %rbx, %rdi
callq 0x192c0
addl $0x4, %eax
movq %rbx, %rdi
movl %eax, %esi
callq 0x192c4
leaq 0xaa78(%rip), %rsi      # 0x1cde0
jmp 0x12386
movq %rbx, %rdi
callq 0x192c0
addl $0x2, %eax
movq %rbx, %rdi
movl %eax, %esi
callq 0x192c4
leaq 0xaa8d(%rip), %rsi      # 0x1ce13
leaq 0x30(%rsp), %rdi
callq 0x53d0
jmp 0x12419
testq %r15, %r15
je 0x123a2
movq %r15, %rdi
callq 0x78e4
xorl %ebp, %ebp
xorl %r12d, %r12d
leaq 0x1e0(%rsp), %r8
movl $0x2, (%r8)
leaq 0x158(%rsp), %rdi
movq $0x0, -0x8(%rdi)
leaq 0xa21d(%rip), %rcx      # 0x1c5ea
leaq 0x150(%rsp), %rsi
leaq 0x1a0(%rsp), %rdx
callq 0xc3c4
leaq 0x150(%rsp), %rsi
movq %rbp, %rdi
callq 0x1aefa
movq 0x158(%rsp), %rdi
testq %rdi, %rdi
je 0x12404
callq 0x78e4
movq %rsp, %rdi
callq 0x7888
testq %r12, %r12
je 0x12419
movq %r12, %rdi
callq 0x78e4
movq 0x58(%rsp), %rsi
movq 0x60(%rsp), %rdx
leaq 0x30(%rsp), %rdi
callq 0x50b0
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 0x124ee
movq 0x20(%rsp), %rbx
movq %rsp, %r12
movq %rbp, %r13
movq (%rbp), %rsi
leaq 0x1e0(%rsp), %rdi
callq 0x1ae4e
movq %r12, %rdi
movq %rbx, %rsi
callq 0x1ae4e
movq 0x1e0(%rsp), %r14
movq (%rsp), %r15
movq 0x8(%rsp), %rdi
testq %rdi, %rdi
je 0x1248e
callq 0x78e4
movq 0x1e8(%rsp), %rdi
testq %rdi, %rdi
je 0x124a0
callq 0x78e4
cmpq %r15, %r14
movq 0xb8(%rsp), %r14
jne 0x124cc
movslq 0x108(%r14), %rax
movq 0x58(%r14), %rcx
leaq (%rax,%rax,2), %rax
leaq (%rcx,%rax,8), %rdi
addq $-0x18, %rdi
movq %r13, %rsi
callq 0x16706
addq $0x10, %rbp
movslq 0x108(%r14), %rax
movq 0x58(%r14), %rcx
leaq (%rax,%rax,2), %rax
addq $0x10, %r13
cmpq -0x10(%rcx,%rax,8), %rbp
jne 0x12457
movq 0x20(%rsp), %rbx
xorpd %xmm0, %xmm0
leaq 0x3b0(%rsp), %rsi
movapd %xmm0, (%rsi)
movq %rbx, %rdi
callq 0x1ae7a
movq 0x3b8(%rsp), %rdi
testq %rdi, %rdi
movq 0x50(%rsp), %r13
je 0x12522
callq 0x78e4
movq 0xb8(%r14), %rsi
movq %rbx, 0x140(%rsp)
movq 0x28(%rsp), %rax
movq %rax, 0x148(%rsp)
testq %rax, %rax
je 0x12558
movq 0x13a76(%rip), %rcx     # 0x25fc0
cmpb $0x0, (%rcx)
je 0x12554
incl 0x8(%rax)
jmp 0x12558
lock
incl 0x8(%rax)
leaq 0x1e0(%rsp), %rdi
leaq 0x140(%rsp), %rdx
callq 0x1af20
movapd 0x1e0(%rsp), %xmm0
xorpd %xmm1, %xmm1
movapd %xmm1, 0x1e0(%rsp)
movq 0xc0(%r14), %rdi
movupd %xmm0, 0xb8(%r14)
testq %rdi, %rdi
je 0x1259d
callq 0x78e4
movq 0x1e8(%rsp), %rdi
testq %rdi, %rdi
je 0x125af
callq 0x78e4
movq 0x148(%rsp), %rdi
testq %rdi, %rdi
je 0x125c1
callq 0x78e4
movq 0x3f0(%rsp), %rdi
leaq 0x400(%rsp), %rax
cmpq %rax, %rdi
je 0x12662
movq 0x400(%rsp), %rsi
incq %rsi
callq 0x5200
jmp 0x12662
lock
incl 0x8(%rdi)
jmp 0x112e2
lock
incl 0x8(%rax)
leaq 0x3f0(%rsp), %rdi
leaq 0x180(%rsp), %rdx
callq 0x1af20
movapd 0x3f0(%rsp), %xmm0
xorpd %xmm1, %xmm1
movapd %xmm1, 0x3f0(%rsp)
movq 0xc0(%r14), %rdi
movupd %xmm0, 0xb8(%r14)
testq %rdi, %rdi
je 0x1263e
callq 0x78e4
movq 0x3f8(%rsp), %rdi
testq %rdi, %rdi
je 0x12650
callq 0x78e4
movq 0x188(%rsp), %rdi
testq %rdi, %rdi
je 0x12662
callq 0x78e4
movq 0x58(%rsp), %rdi
leaq 0x68(%rsp), %rax
cmpq %rax, %rdi
je 0x1267e
movq 0x68(%rsp), %rsi
incq %rsi
callq 0x5200
leaq 0x10(%r13), %rax
movq %rax, (%r13)
movq 0x30(%rsp), %rcx
leaq 0x40(%rsp), %rdx
cmpq %rdx, %rcx
je 0x126a4
movq %rcx, (%r13)
movq 0x40(%rsp), %rax
movq %rax, 0x10(%r13)
jmp 0x126ac
movupd (%rdx), %xmm0
movupd %xmm0, (%rax)
movq 0x38(%rsp), %rax
movq %rax, 0x8(%r13)
movq %rdx, 0x30(%rsp)
movq $0x0, 0x38(%rsp)
movb $0x0, 0x40(%rsp)
movq %rdx, %rbx
movq 0x30(%rsp), %rdi
cmpq %rbx, %rdi
je 0x126e2
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x5200
movq 0x28(%rsp), %rdi
testq %rdi, %rdi
je 0x126f1
callq 0x78e4
movq %r13, %rax
addq $0x578, %rsp            # imm = 0x578
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %rbx
movq 0x158(%rsp), %rdi
jmp 0x12a23
movq %rax, %rbx
jmp 0x12a8d
jmp 0x1273a
jmp 0x1275c
jmp 0x1273a
jmp 0x1275c
jmp 0x1273a
jmp 0x1275c
jmp 0x1273a
jmp 0x1275c
jmp 0x1273a
jmp 0x1275c
jmp 0x1273a
jmp 0x1275c
jmp 0x1273a
jmp 0x1275c
movq %rax, %rbx
movq 0x1e0(%rsp), %rdi
cmpq %r12, %rdi
je 0x1275f
movq 0x1f0(%rsp), %rsi
incq %rsi
callq 0x5200
jmp 0x1275f
movq %rax, %rbx
xorl %r12d, %r12d
jmp 0x12a8d
movq %rax, %rbx
movq 0x188(%rsp), %rdi
jmp 0x12b16
movq %rax, %rbx
movq 0x3c8(%rsp), %rdi
jmp 0x12b16
jmp 0x12ae2
jmp 0x127b3
jmp 0x12b22
movq %rax, %rbx
movq 0x148(%rsp), %rdi
jmp 0x12b32
movq %rax, %rbx
movq 0x3b8(%rsp), %rdi
jmp 0x12b32
movq %rax, %rbx
movq 0x8(%rsp), %rdi
jmp 0x12b32
jmp 0x12b22
movq %rax, %rbx
movq 0x1e0(%rsp), %rdi
cmpq %r12, %rdi
je 0x12b3c
movq 0x1f0(%rsp), %rsi
incq %rsi
callq 0x5200
jmp 0x12b3c
jmp 0x12b22
jmp 0x12945
jmp 0x12ae2
movq %rax, %rbx
movq 0x1a0(%rsp), %rdi
cmpq %rbp, %rdi
je 0x12825
movq 0x1b0(%rsp), %rsi
incq %rsi
callq 0x5200
jmp 0x12825
movq %r12, %r14
movq %rax, %rbx
leaq 0xa8(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x1284e
movq 0xa8(%rsp), %rsi
incq %rsi
callq 0x5200
jmp 0x1284e
movq %r12, %r14
movq %rax, %rbx
leaq 0x110(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x12877
movq 0x110(%rsp), %rsi
incq %rsi
callq 0x5200
jmp 0x12877
movq %r12, %r14
movq %rax, %rbx
movq 0xe0(%rsp), %rdi
cmpq %r14, %rdi
je 0x12899
movq 0xf0(%rsp), %rsi
incq %rsi
callq 0x5200
jmp 0x12899
movq %rax, %rbx
leaq 0x88(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x128bf
movq 0x88(%rsp), %rsi
incq %rsi
callq 0x5200
jmp 0x128bf
movq %rax, %rbx
leaq 0x130(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x128e5
movq 0x130(%rsp), %rsi
incq %rsi
callq 0x5200
jmp 0x128e5
movq %rax, %rbx
movq 0xc0(%rsp), %rdi
cmpq %r13, %rdi
je 0x12907
movq 0xd0(%rsp), %rsi
incq %rsi
callq 0x5200
jmp 0x12907
movq %rax, %rbx
leaq 0x3e0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x1292d
movq 0x3e0(%rsp), %rsi
incq %rsi
callq 0x5200
jmp 0x1292d
movq %rax, %rbx
movq 0x378(%rsp), %rdi
jmp 0x12975
jmp 0x1293b
jmp 0x1293b
movq %rax, %rbx
jmp 0x1297f
movq %rax, %rbx
jmp 0x129a0
movq %rax, %rbx
jmp 0x12b0e
jmp 0x12ae2
jmp 0x12ae2
jmp 0x12ae2
jmp 0x12ae2
jmp 0x12a43
jmp 0x12a43
jmp 0x1296d
movq %rax, %rbx
movq 0x8(%rsp), %rdi
testq %rdi, %rdi
je 0x1297f
callq 0x78e4
movq 0x1361a(%rip), %rsi     # 0x25fa0
leaq 0x1e0(%rsp), %rdi
callq 0x5170
leaq 0x260(%rsp), %rdi
callq 0x50c0
movq 0x135f9(%rip), %rsi     # 0x25fa0
leaq 0x3f0(%rsp), %rdi
callq 0x5170
leaq 0x470(%rsp), %rdi
callq 0x50c0
jmp 0x12b61
movq %rax, %rbx
testq %r12, %r12
je 0x129d6
movq %r12, %rdi
callq 0x78e4
movq 0x1e8(%rsp), %rdi
testq %rdi, %rdi
je 0x129ed
callq 0x78e4
jmp 0x129ed
movq %rax, %rbx
testq %r15, %r15
je 0x12a04
movq %r15, %rdi
callq 0x78e4
jmp 0x12a04
jmp 0x12ae2
movq %rax, %rbx
movq 0x3f8(%rsp), %rdi
jmp 0x12b16
jmp 0x12ae2
jmp 0x12a43
movq %rax, %rbx
movq 0x168(%rsp), %rdi
testq %rdi, %rdi
je 0x12a8d
callq 0x78e4
jmp 0x12a8d
jmp 0x12b22
jmp 0x12ae2
jmp 0x12aec
jmp 0x12ae7
movq %rax, %rbx
jmp 0x12b7d
movq %rax, %rbx
movq 0x1c0(%rsp), %rdi
leaq 0x1d0(%rsp), %rax
cmpq %rax, %rdi
je 0x12a78
movq 0x1d0(%rsp), %rsi
incq %rsi
callq 0x5200
jmp 0x12a78
movq %rax, %rbx
movq 0x178(%rsp), %rdi
testq %rdi, %rdi
je 0x12a8a
callq 0x78e4
movq %r15, %r12
movq %rsp, %rdi
callq 0x7888
testq %r12, %r12
je 0x12b3c
movq %r12, %rdi
jmp 0x12b37
jmp 0x12b22
movq %rax, %rbx
jmp 0x12b99
movq %rax, %rbx
movq 0x390(%rsp), %rdi
cmpq %r15, %rdi
je 0x12ad5
movq 0x3a0(%rsp), %rsi
incq %rsi
callq 0x5200
jmp 0x12ad5
movq %rax, %rbx
movq 0x198(%rsp), %rdi
jmp 0x12b9e
movq %rax, %rbx
jmp 0x12b61
movq %rax, %rbx
jmp 0x12b01
movq %rax, %rbx
movq 0x3f8(%rsp), %rdi
testq %rdi, %rdi
je 0x12b01
callq 0x78e4
testq %rbp, %rbp
je 0x12b0e
movq %rbp, %rdi
callq 0x78e4
movq 0x1e8(%rsp), %rdi
testq %rdi, %rdi
je 0x12b61
callq 0x78e4
jmp 0x12b61
movq %rax, %rbx
jmp 0x12b3c
movq %rax, %rbx
movq 0x1e8(%rsp), %rdi
testq %rdi, %rdi
je 0x12b3c
callq 0x78e4
movq 0x3f0(%rsp), %rdi
leaq 0x400(%rsp), %rax
cmpq %rax, %rdi
je 0x12b61
movq 0x400(%rsp), %rsi
incq %rsi
callq 0x5200
movq 0x58(%rsp), %rdi
leaq 0x68(%rsp), %rax
cmpq %rax, %rdi
je 0x12b7d
movq 0x68(%rsp), %rsi
incq %rsi
callq 0x5200
movq 0x30(%rsp), %rdi
leaq 0x40(%rsp), %rax
cmpq %rax, %rdi
je 0x12b99
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x5200
movq 0x28(%rsp), %rdi
testq %rdi, %rdi
je 0x12ba8
callq 0x78e4
movq %rbx, %rdi
callq 0x5390