// File: /workspace/github_cpp_makefile_star2_O3/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 $0x568, %rsp            # imm = 0x568
movq %rsi, %r14
movq %rdi, %r12
movq 0xb8(%rsi), %rax
movq %rax, 0x190(%rsp)
movq 0xc0(%rsi), %rax
movq %rax, 0x198(%rsp)
testq %rax, %rax
je 0x10d17
movq 0x142b7(%rip), %rcx     # 0x24fc0
cmpb $0x0, (%rcx)
je 0x10d13
incl 0x8(%rax)
jmp 0x10d17
lock
incl 0x8(%rax)
leaq 0x390(%rsp), %rbx
movq %rbx, -0x10(%rbx)
movq (%rdx), %rsi
movq 0x8(%rdx), %rdx
addq %rsi, %rdx
leaq 0x380(%rsp), %rdi
callq 0x7898
leaq 0x20(%rsp), %rdi
leaq 0x190(%rsp), %rdx
leaq 0x380(%rsp), %rcx
movq %r14, %rsi
callq 0xe860
movq 0x380(%rsp), %rdi
cmpq %rbx, %rdi
je 0x10d74
movq 0x390(%rsp), %rsi
incq %rsi
callq 0x51f0
movq 0x198(%rsp), %rdi
testq %rdi, %rdi
je 0x10d86
callq 0x7828
leaq 0x48(%rsp), %rbp
movq %rbp, -0x10(%rbp)
leaq 0xb0f9(%rip), %rdx      # 0x1be8f
leaq 0x38(%rsp), %rdi
movq %rdx, %rsi
callq 0x79f2
movq 0x20(%rsp), %rbx
testq %rbx, %rbx
je 0x10e80
movq %r14, 0xb8(%rsp)
leaq 0x3e0(%rsp), %rdi
movq %rbx, %rsi
callq 0x1a98e
movq 0x3e0(%rsp), %r14
movq 0x3e8(%rsp), %rdi
testq %rdi, %rdi
je 0x10de3
callq 0x7828
testq %r14, %r14
je 0x10ebf
leaq 0x68(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0xb093(%rip), %rdx      # 0x1be8f
leaq 0x58(%rsp), %rdi
movq %rdx, %rsi
callq 0x79f2
movq 0xb8(%rsp), %r14
cmpb $0x0, 0x10c(%r14)
jne 0x10f29
leaq 0x3e0(%rsp), %rdi
movq %rbx, %rsi
callq 0x1a98e
movq 0x3e0(%rsp), %rdi
testq %rdi, %rdi
je 0x10ee1
leaq 0x13681(%rip), %rsi     # 0x244c8
leaq 0x1392a(%rip), %rdx     # 0x24778
xorl %ebx, %ebx
xorl %ecx, %ecx
callq 0x5230
testq %rax, %rax
je 0x10eee
movq 0x3e8(%rsp), %rdi
movb $0x1, %bl
testq %rdi, %rdi
je 0x10eee
movq 0x1414a(%rip), %rax     # 0x24fc0
cmpb $0x0, (%rax)
je 0x10ee5
incl 0x8(%rdi)
jmp 0x10ee9
leaq 0x10(%r12), %rax
movq %rax, (%r12)
leaq 0xaf1d(%rip), %rsi      # 0x1bdad
leaq 0xaf2d(%rip), %rdx      # 0x1bdc4
movq %r12, %rdi
callq 0x79f2
movq 0x38(%rsp), %rdi
cmpq %rbp, %rdi
je 0x1226d
movq 0x48(%rsp), %rsi
incq %rsi
callq 0x51f0
jmp 0x1226d
leaq 0x38(%rsp), %rdi
movq 0x8(%rdi), %rdx
leaq 0xafc1(%rip), %rcx      # 0x1be90
movl $0x14, %r8d
xorl %esi, %esi
callq 0x52e0
jmp 0x12237
xorl %ebx, %ebx
jmp 0x10eee
lock
incl 0x8(%rdi)
callq 0x7828
movq 0x3e8(%rsp), %rdi
testq %rdi, %rdi
je 0x10f00
callq 0x7828
testb %bl, %bl
je 0x10f29
movb $0x1, 0x10c(%r14)
leaq 0x58(%rsp), %rdi
movq 0x8(%rdi), %rdx
leaq 0xaea9(%rip), %rcx      # 0x1bdc5
movl $0x1b, %r8d
xorl %esi, %esi
callq 0x52e0
movq 0x20(%rsp), %rbx
leaq 0x3e0(%rsp), %rdi
movq %rbx, %rsi
callq 0x1a98e
movq 0x3e0(%rsp), %rdi
callq 0x167e2
movsd %xmm0, 0x368(%rsp)
movq 0x3e8(%rsp), %rdi
testq %rdi, %rdi
je 0x10f66
callq 0x7828
leaq 0x3e0(%rsp), %rdi
movq %rbx, %rsi
callq 0x1a98e
movq 0x3e0(%rsp), %rdi
testq %rdi, %rdi
je 0x10fc4
leaq 0x1353e(%rip), %rsi     # 0x244c8
leaq 0x13547(%rip), %rdx     # 0x244d8
xorl %r15d, %r15d
xorl %ecx, %ecx
callq 0x5230
movl $0x0, %ebx
testq %rax, %rax
je 0x10fd8
movq 0x3e8(%rsp), %r15
testq %r15, %r15
je 0x10fcb
movq 0x14007(%rip), %rcx     # 0x24fc0
cmpb $0x0, (%rcx)
je 0x10fd0
incl 0x8(%r15)
jmp 0x10fd5
xorl %r15d, %r15d
xorl %ebx, %ebx
jmp 0x10fd8
xorl %r15d, %r15d
jmp 0x10fd5
lock
incl 0x8(%r15)
movq %rax, %rbx
movq %r12, 0x30(%rsp)
movq 0xb8(%r14), %rsi
leaq 0x1e0(%rsp), %rdi
callq 0x1a98e
movq 0x1e0(%rsp), %rdi
leaq 0x134c8(%rip), %rsi     # 0x244c8
leaq 0x13a99(%rip), %rdx     # 0x24aa0
xorl %ecx, %ecx
callq 0x5230
movq 0x1e8(%rsp), %r12
testq %r12, %r12
je 0x11034
movq 0x13f9e(%rip), %rcx     # 0x24fc0
cmpb $0x0, (%rcx)
je 0x1102e
incl 0x8(%r12)
jmp 0x11034
lock
incl 0x8(%r12)
movq (%rbx), %rcx
movq %rbx, %rdi
movq %rax, %rsi
callq *0x8(%rcx)
movl %eax, %ebx
testq %r12, %r12
je 0x1104f
movq %r12, %rdi
callq 0x7828
movq 0x1e8(%rsp), %rdi
testq %rdi, %rdi
je 0x11061
callq 0x7828
testq %r15, %r15
je 0x1106e
movq %r15, %rdi
callq 0x7828
movq 0x3e8(%rsp), %rdi
testq %rdi, %rdi
je 0x11080
callq 0x7828
testb %bl, %bl
je 0x112ac
movq 0x20(%rsp), %r15
leaq 0x1e0(%rsp), %rdi
movq %r15, %rsi
callq 0x1a98e
movq 0x1e0(%rsp), %rsi
movq (%rsi), %rax
leaq 0x3e0(%rsp), %rdi
callq *(%rax)
leaq 0xad28(%rip), %rsi      # 0x1bde1
leaq 0x3e0(%rsp), %r12
movq %r12, %rdi
callq 0x50a0
movl %eax, %ebx
movq (%r12), %rdi
leaq 0x3f0(%rsp), %rax
cmpq %rax, %rdi
je 0x110ec
movq 0x3f0(%rsp), %rsi
incq %rsi
callq 0x51f0
movq 0x1e8(%rsp), %rdi
testq %rdi, %rdi
movq 0x30(%rsp), %r12
je 0x11103
callq 0x7828
testl %ebx, %ebx
je 0x11413
leaq 0x1e0(%rsp), %rdi
movq %r15, %rsi
callq 0x1a98e
movq 0x1e0(%rsp), %rsi
movq (%rsi), %rax
leaq 0x3e0(%rsp), %rdi
callq *(%rax)
movq 0x1e8(%rsp), %rdi
testq %rdi, %rdi
je 0x11142
callq 0x7828
leaq 0x1f0(%rsp), %r13
movq %r13, -0x10(%r13)
movq 0x3e0(%rsp), %rsi
movq 0x3e8(%rsp), %rdx
addq %rsi, %rdx
leaq 0x1e0(%rsp), %rdi
callq 0x7898
leaq 0xac79(%rip), %rsi      # 0x1bdee
leaq 0x1e0(%rsp), %rdi
callq 0x53c0
leaq 0x38(%rsp), %rdi
leaq 0x1e0(%rsp), %rbx
movq %rbx, %rsi
callq 0x5270
movq (%rbx), %rdi
cmpq %r13, %rdi
je 0x111af
movq 0x1f0(%rsp), %rsi
incq %rsi
callq 0x51f0
movq %rsp, %rdi
movq %r15, %rsi
callq 0x1a98e
movq (%rsp), %rsi
movq (%rsi), %rax
leaq 0x1e0(%rsp), %rdi
callq *(%rax)
leaq 0xac26(%rip), %rsi      # 0x1bdf8
leaq 0x1e0(%rsp), %r12
movq %r12, %rdi
callq 0x50a0
movl %eax, %ebx
movq (%r12), %rdi
cmpq %r13, %rdi
je 0x111fd
movq 0x1f0(%rsp), %rsi
incq %rsi
callq 0x51f0
movq 0x8(%rsp), %rdi
testq %rdi, %rdi
je 0x1120c
callq 0x7828
testl %ebx, %ebx
je 0x11b0f
movq %rsp, %rdi
movq %r15, %rsi
callq 0x1a98e
movq (%rsp), %rsi
movq (%rsi), %rax
leaq 0x1e0(%rsp), %rdi
callq *(%rax)
leaq 0xabe0(%rip), %rsi      # 0x1be17
leaq 0x1e0(%rsp), %r15
movq %r15, %rdi
callq 0x50a0
movl %eax, %ebx
movq (%r15), %rdi
cmpq %r13, %rdi
je 0x11261
movq 0x1f0(%rsp), %rsi
incq %rsi
callq 0x51f0
movq 0x8(%rsp), %rdi
testq %rdi, %rdi
je 0x11270
callq 0x7828
testl %ebx, %ebx
je 0x11f1d
callq 0x5080
movq 0xf8(%r14), %rbx
testb $0x1, %al
jne 0x11f42
movq %rbx, %rdi
callq 0x18df8
incl %eax
movq %rbx, %rdi
movl %eax, %esi
callq 0x18dfc
leaq 0xab94(%rip), %rsi      # 0x1be3b
jmp 0x11f5e
leaq 0x3e0(%rsp), %r15
movq %r15, %rdi
callq 0x5150
leaq 0x1e0(%rsp), %rdi
callq 0x5150
movq 0x3f0(%rsp), %rax
movq -0x18(%rax), %rcx
movl $0xfffffefb, %edx       # imm = 0xFFFFFEFB
andl 0x408(%rsp,%rcx), %edx
orl $0x4, %edx
movl %edx, 0x408(%rsp,%rcx)
movq -0x18(%rax), %rax
movq $0x2, 0x3f8(%rsp,%rax)
movq 0x20(%rsp), %rbx
movq %rsp, %rdi
movq %rbx, %rsi
callq 0x1a98e
movq (%rsp), %rdi
callq 0x167e2
leaq 0x3f0(%rsp), %rdi
movsd 0x368(%rsp), %xmm1
subsd %xmm0, %xmm1
movapd %xmm1, %xmm0
callq 0x5310
movq 0x8(%rsp), %rdi
testq %rdi, %rdi
je 0x11341
callq 0x7828
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 0x1a98e
movq (%rsp), %rdi
callq 0x167e2
leaq 0x1f0(%rsp), %rdi
callq 0x5310
movq 0x8(%rsp), %rdi
testq %rdi, %rdi
je 0x113a3
callq 0x7828
leaq 0x370(%rsp), %rdi
movq %rbx, %rsi
callq 0x1a98e
movq 0x370(%rsp), %rsi
movq (%rsi), %rax
leaq 0x3c0(%rsp), %rdi
callq *(%rax)
leaq 0xaa9d(%rip), %rsi      # 0x1be6c
leaq 0x3c0(%rsp), %rdi
callq 0x53c0
leaq 0xd0(%rsp), %r13
movq %r13, -0x10(%r13)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x11672
movq %rdx, 0xc0(%rsp)
movq (%rcx), %rdx
movq %rdx, 0xd0(%rsp)
jmp 0x1167c
movslq 0x108(%r14), %rax
movq 0x70(%r14), %rcx
leaq (%rax,%rax,2), %rax
movq -0x18(%rcx,%rax,8), %r15
cmpq -0x10(%rcx,%rax,8), %r15
je 0x115b3
leaq 0x3e0(%rsp), %rbp
movq (%r15), %rsi
leaq 0x1e0(%rsp), %rdi
callq 0x1aa0e
movq 0x1e0(%rsp), %rdi
leaq 0x134e7(%rip), %rsi     # 0x24940
leaq 0x13050(%rip), %rdx     # 0x244b0
xorl %ecx, %ecx
callq 0x5230
movq 0x1e8(%rsp), %rbx
testq %rbx, %rbx
je 0x11489
movq 0x13b45(%rip), %rcx     # 0x24fc0
cmpb $0x0, (%rcx)
je 0x11485
incl 0x8(%rbx)
jmp 0x11489
lock
incl 0x8(%rbx)
movq %rbp, %rdi
movq %rax, %rsi
callq 0x182ee
movq 0x20(%rsp), %rsi
movq %rsp, %rdi
callq 0x1a98e
movq 0x3e0(%rsp), %r12
movq (%rsp), %r13
movq 0x8(%rsp), %rdi
testq %rdi, %rdi
je 0x114bc
callq 0x7828
movq 0x3e8(%rsp), %rdi
testq %rdi, %rdi
je 0x114ce
callq 0x7828
testq %rbx, %rbx
je 0x114db
movq %rbx, %rdi
callq 0x7828
movq 0x1e8(%rsp), %rdi
testq %rdi, %rdi
je 0x114ed
callq 0x7828
cmpq %r13, %r12
movq 0x30(%rsp), %r12
jne 0x11595
movq (%r15), %rsi
leaq 0x1e0(%rsp), %rdi
callq 0x1aa0e
movq 0x1e0(%rsp), %rdi
leaq 0x13426(%rip), %rsi     # 0x24940
leaq 0x12f8f(%rip), %rdx     # 0x244b0
xorl %ecx, %ecx
callq 0x5230
movq 0x1e8(%rsp), %rbx
testq %rbx, %rbx
je 0x1154a
movq 0x13a84(%rip), %rcx     # 0x24fc0
cmpb $0x0, (%rcx)
je 0x11546
incl 0x8(%rbx)
jmp 0x1154a
lock
incl 0x8(%rbx)
movq %rbp, %rdi
movq %rax, %rsi
callq 0x182ee
movq 0x3e0(%rsp), %rdi
xorl %esi, %esi
callq 0x1684c
movq 0x3e8(%rsp), %rdi
testq %rdi, %rdi
je 0x11576
callq 0x7828
testq %rbx, %rbx
je 0x11583
movq %rbx, %rdi
callq 0x7828
movq 0x1e8(%rsp), %rdi
testq %rdi, %rdi
je 0x11595
callq 0x7828
addq $0x10, %r15
movslq 0x108(%r14), %rax
movq 0x70(%r14), %rcx
leaq (%rax,%rax,2), %rax
cmpq -0x10(%rcx,%rax,8), %r15
jne 0x1143a
leaq 0xa82e(%rip), %rsi      # 0x1bde8
leaq 0x3e0(%rsp), %rdi
leaq 0x58(%rsp), %rdx
callq 0x7301
leaq 0x38(%rsp), %rdi
leaq 0x3e0(%rsp), %rbx
movq %rbx, %rsi
callq 0x5270
movq (%rbx), %rdi
leaq 0x3f0(%rsp), %rax
cmpq %rax, %rdi
leaq 0x48(%rsp), %rbp
je 0x11606
movq 0x3f0(%rsp), %rsi
incq %rsi
callq 0x51f0
movq 0x20(%rsp), %rbx
xorpd %xmm0, %xmm0
leaq 0x3b0(%rsp), %rsi
movapd %xmm0, (%rsi)
movq %rbx, %rdi
callq 0x1a9ba
movq 0x3b8(%rsp), %rdi
testq %rdi, %rdi
je 0x11635
callq 0x7828
movq 0xb8(%r14), %rsi
movq %rbx, 0x180(%rsp)
movq 0x28(%rsp), %rax
movq %rax, 0x188(%rsp)
testq %rax, %rax
je 0x121b2
movq 0x1395f(%rip), %rcx     # 0x24fc0
cmpb $0x0, (%rcx)
je 0x121ae
incl 0x8(%rax)
jmp 0x121b2
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 0x3f8(%rsp), %rsi
leaq 0x120(%rsp), %rdi
callq 0x5300
movq 0xc0(%rsp), %rcx
movq 0xc8(%rsp), %r8
movq 0x128(%rsp), %rdx
leaq (%rdx,%r8), %rax
movl $0xf, %edi
cmpq %r13, %rcx
je 0x116da
movq 0xd0(%rsp), %rdi
movq 0x120(%rsp), %rsi
cmpq %rdi, %rax
jbe 0x11706
leaq 0x130(%rsp), %r9
movl $0xf, %edi
cmpq %r9, %rsi
je 0x11701
movq 0x130(%rsp), %rdi
cmpq %rdi, %rax
jbe 0x11715
leaq 0xc0(%rsp), %rdi
callq 0x50b0
jmp 0x11726
leaq 0x120(%rsp), %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x5220
leaq 0x88(%rsp), %rdx
movq %rdx, -0x10(%rdx)
movq (%rax), %rsi
leaq 0x10(%rax), %rcx
cmpq %rcx, %rsi
je 0x11750
movq %rsi, 0x78(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x88(%rsp)
jmp 0x11758
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 0xa6fc(%rip), %rsi      # 0x1be7b
leaq 0x78(%rsp), %rdi
callq 0x53c0
leaq 0xf0(%rsp), %r12
movq %r12, -0x10(%r12)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x117ba
movq %rdx, 0xe0(%rsp)
movq (%rcx), %rdx
movq %rdx, 0xf0(%rsp)
jmp 0x117c4
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 0x5300
movq 0xe0(%rsp), %rcx
movq 0xe8(%rsp), %r8
movq 0x108(%rsp), %rdx
leaq (%rdx,%r8), %rax
movl $0xf, %edi
cmpq %r12, %rcx
je 0x11822
movq 0xf0(%rsp), %rdi
movq 0x100(%rsp), %rsi
cmpq %rdi, %rax
jbe 0x1184e
leaq 0x110(%rsp), %r9
movl $0xf, %edi
cmpq %r9, %rsi
je 0x11849
movq 0x110(%rsp), %rdi
cmpq %rdi, %rax
jbe 0x1185d
leaq 0xe0(%rsp), %rdi
callq 0x50b0
jmp 0x1186e
leaq 0x100(%rsp), %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x5220
leaq 0xa8(%rsp), %rdx
movq %rdx, -0x10(%rdx)
movq (%rax), %rsi
leaq 0x10(%rax), %rcx
cmpq %rcx, %rsi
je 0x1189b
movq %rsi, 0x98(%rsp)
movq (%rcx), %rdx
movq %rdx, 0xa8(%rsp)
jmp 0x118a3
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 0xa5b6(%rip), %rsi      # 0x1be80
leaq 0x98(%rsp), %rdi
callq 0x53c0
leaq 0x1b0(%rsp), %rbp
movq %rbp, -0x10(%rbp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x11907
movq %rdx, 0x1a0(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x1b0(%rsp)
jmp 0x11910
movupd (%rcx), %xmm0
movupd %xmm0, (%rbp)
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
movq %r12, %r14
leaq 0x10(%rsp), %r12
movq %r12, -0x10(%r12)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x11968
movq %rdx, (%rsp)
movq (%rcx), %rdx
movq %rdx, 0x10(%rsp)
jmp 0x11972
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 0x38(%rsp), %rdi
movq %rbx, %rsi
callq 0x5270
movq (%rbx), %rdi
cmpq %r12, %rdi
je 0x119ae
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x51f0
movq 0x1a0(%rsp), %rdi
cmpq %rbp, %rdi
movq %r13, %rbx
je 0x119ce
movq 0x1b0(%rsp), %rsi
incq %rsi
callq 0x51f0
leaq 0xa8(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
leaq 0x48(%rsp), %rbp
je 0x119f4
movq 0xa8(%rsp), %rsi
incq %rsi
callq 0x51f0
leaq 0x110(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x11a15
movq 0x110(%rsp), %rsi
incq %rsi
callq 0x51f0
movq 0xe0(%rsp), %rdi
cmpq %r14, %rdi
je 0x11a32
movq 0xf0(%rsp), %rsi
incq %rsi
callq 0x51f0
leaq 0x88(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x11a53
movq 0x88(%rsp), %rsi
incq %rsi
callq 0x51f0
leaq 0x130(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x11a74
movq 0x130(%rsp), %rsi
incq %rsi
callq 0x51f0
movq 0xc0(%rsp), %rdi
cmpq %rbx, %rdi
je 0x11a91
movq 0xd0(%rsp), %rsi
incq %rsi
callq 0x51f0
leaq 0x3d0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x11ab2
movq 0x3d0(%rsp), %rsi
incq %rsi
callq 0x51f0
movq 0x378(%rsp), %rdi
testq %rdi, %rdi
je 0x11ac4
callq 0x7828
movq 0x134d5(%rip), %rbx     # 0x24fa0
leaq 0x1e0(%rsp), %r14
movq %r14, %rdi
movq %rbx, %rsi
callq 0x5170
movl $0x80, %r12d
addq %r12, %r14
movq %r14, %rdi
callq 0x50c0
movq %r15, %rdi
movq %rbx, %rsi
callq 0x5170
addq %r12, %r15
movq %r15, %rdi
callq 0x50c0
movq 0x30(%rsp), %r12
jmp 0x1221b
movq 0xf8(%r14), %rbx
movq %rbx, %rdi
callq 0x18df8
addl $0x2, %eax
movq %rbx, %rdi
movl %eax, %esi
callq 0x18dfc
leaq 0xa2cc(%rip), %rsi      # 0x1bdfe
leaq 0x38(%rsp), %rdi
callq 0x53c0
xorpd %xmm0, %xmm0
movapd %xmm0, (%rsp)
movq $0x0, 0x10(%rsp)
leaq 0x1e0(%rsp), %rdi
movq %r13, (%rdi)
leaq 0x97a1(%rip), %rsi      # 0x1b301
leaq 0x979c(%rip), %rdx      # 0x1b303
callq 0x79f2
movq %rsp, %rdi
leaq 0x1e0(%rsp), %rsi
callq 0x15d80
movq 0x1e0(%rsp), %rdi
cmpq %r13, %rdi
je 0x11b99
movq 0x1f0(%rsp), %rsi
incq %rsi
callq 0x51f0
leaq 0x1e0(%rsp), %rdi
movq %r13, (%rdi)
leaq 0x975c(%rip), %rsi      # 0x1b307
leaq 0x9757(%rip), %rdx      # 0x1b309
callq 0x79f2
movq %rsp, %rdi
leaq 0x1e0(%rsp), %rsi
callq 0x15d80
movq 0x1e0(%rsp), %rdi
cmpq %r13, %rdi
je 0x11be4
movq 0x1f0(%rsp), %rsi
incq %rsi
callq 0x51f0
leaq 0x1e0(%rsp), %rdi
movq %r13, (%rdi)
leaq 0x970e(%rip), %rsi      # 0x1b304
leaq 0x9709(%rip), %rdx      # 0x1b306
callq 0x79f2
movq %rsp, %rdi
leaq 0x1e0(%rsp), %rsi
callq 0x15d80
movq 0x1e0(%rsp), %rdi
cmpq %r13, %rdi
je 0x11c2f
movq 0x1f0(%rsp), %rsi
incq %rsi
callq 0x51f0
leaq 0x1e0(%rsp), %rdi
movq %r13, (%rdi)
leaq 0x96c9(%rip), %rsi      # 0x1b30a
leaq 0x96c4(%rip), %rdx      # 0x1b30c
callq 0x79f2
movq %rsp, %rdi
leaq 0x1e0(%rsp), %rsi
callq 0x15d80
movq 0x1e0(%rsp), %rdi
cmpq %r13, %rdi
je 0x11c7a
movq 0x1f0(%rsp), %rsi
incq %rsi
callq 0x51f0
leaq 0x1e0(%rsp), %rdi
movq %r13, (%rdi)
leaq 0x9681(%rip), %rsi      # 0x1b30d
leaq 0x967c(%rip), %rdx      # 0x1b30f
callq 0x79f2
movq %rsp, %rdi
leaq 0x1e0(%rsp), %rsi
callq 0x15d80
movq 0x1e0(%rsp), %rdi
cmpq %r13, %rdi
je 0x11cc5
movq 0x1f0(%rsp), %rsi
incq %rsi
callq 0x51f0
leaq 0x1e0(%rsp), %rdi
movq %r13, (%rdi)
leaq 0x9639(%rip), %rsi      # 0x1b310
leaq 0x9634(%rip), %rdx      # 0x1b312
callq 0x79f2
movq %rsp, %rdi
leaq 0x1e0(%rsp), %rsi
callq 0x15d80
movq 0x1e0(%rsp), %rdi
cmpq %r13, %rdi
je 0x11d10
movq 0x1f0(%rsp), %rsi
incq %rsi
callq 0x51f0
leaq 0x1e0(%rsp), %rdi
movq %r13, (%rdi)
leaq 0x95f1(%rip), %rsi      # 0x1b313
leaq 0x95ec(%rip), %rdx      # 0x1b315
callq 0x79f2
movq %rsp, %rdi
leaq 0x1e0(%rsp), %rsi
callq 0x15d80
movq 0x1e0(%rsp), %rdi
cmpq %r13, %rdi
je 0x11d5b
movq 0x1f0(%rsp), %rsi
incq %rsi
callq 0x51f0
leaq 0x1e0(%rsp), %rdi
movq %r13, (%rdi)
leaq 0x95a9(%rip), %rsi      # 0x1b316
leaq 0x95a4(%rip), %rdx      # 0x1b318
callq 0x79f2
movq %rsp, %rdi
leaq 0x1e0(%rsp), %rsi
callq 0x15d80
movq 0x1e0(%rsp), %rdi
cmpq %r13, %rdi
je 0x11da6
movq 0x1f0(%rsp), %rsi
incq %rsi
callq 0x51f0
movl $0x51, %r13d
xorl %r15d, %r15d
leaq 0x1c0(%rsp), %rbx
movq %r15, %r12
callq 0x5080
cltq
movq (%rsp), %rcx
movq 0x8(%rsp), %rsi
subq %rcx, %rsi
sarq $0x5, %rsi
xorl %edx, %edx
divq %rsi
movq 0x20(%rsp), %rsi
movq 0x28(%rsp), %rax
movq %rsi, 0x170(%rsp)
movq %rax, 0x178(%rsp)
testq %rax, %rax
je 0x11e0e
movq 0x131c4(%rip), %rsi     # 0x24fc0
cmpb $0x0, (%rsi)
je 0x11e06
incl 0x8(%rax)
jmp 0x11e0e
lock
incl 0x8(%rax)
movq (%rsp), %rcx
movslq %edx, %rax
shlq $0x5, %rax
leaq 0x1d0(%rsp), %rdx
movq %rdx, 0x1c0(%rsp)
movq (%rcx,%rax), %rsi
movq 0x8(%rcx,%rax), %rdx
addq %rsi, %rdx
movq %rbx, %rdi
callq 0x7898
leaq 0x1e0(%rsp), %rdi
movq %r14, %rsi
leaq 0x170(%rsp), %rdx
movq %rbx, %rcx
callq 0xe860
movq 0x1e0(%rsp), %rbp
movq 0x1e8(%rsp), %r15
testq %r12, %r12
je 0x11e71
movq %r12, %rdi
callq 0x7828
movq 0x1c0(%rsp), %rdi
leaq 0x1d0(%rsp), %rax
cmpq %rax, %rdi
je 0x11e96
movq 0x1d0(%rsp), %rsi
incq %rsi
callq 0x51f0
movq 0x178(%rsp), %rdi
testq %rdi, %rdi
je 0x11ea8
callq 0x7828
testq %rbp, %rbp
je 0x11f00
movq %rbp, 0x160(%rsp)
movq %r15, 0x168(%rsp)
testq %r15, %r15
je 0x11ed9
movq 0x130f7(%rip), %rax     # 0x24fc0
cmpb $0x0, (%rax)
je 0x11ed4
incl 0x8(%r15)
jmp 0x11ed9
lock
incl 0x8(%r15)
leaq 0x160(%rsp), %rsi
callq 0xf13a
movl %eax, %r12d
movq 0x168(%rsp), %rdi
testq %rdi, %rdi
je 0x11efb
callq 0x7828
testb %r12b, %r12b
jne 0x11f6a
decl %r13d
jne 0x11db7
testq %r15, %r15
je 0x11f16
movq %r15, %rdi
callq 0x7828
xorl %ebp, %ebp
xorl %r12d, %r12d
jmp 0x11f6d
movq 0xf8(%r14), %rbx
movq %rbx, %rdi
callq 0x18df8
addl $0x4, %eax
movq %rbx, %rdi
movl %eax, %esi
callq 0x18dfc
leaq 0x9ee0(%rip), %rsi      # 0x1be20
jmp 0x11f5e
movq %rbx, %rdi
callq 0x18df8
addl $0x2, %eax
movq %rbx, %rdi
movl %eax, %esi
callq 0x18dfc
leaq 0x9ef5(%rip), %rsi      # 0x1be53
leaq 0x38(%rsp), %rdi
callq 0x53c0
jmp 0x11fdf
movq %r15, %r12
leaq 0x1e0(%rsp), %r8
movl $0x2, (%r8)
leaq 0x158(%rsp), %rdi
movq $0x0, -0x8(%rdi)
leaq 0x9657(%rip), %rcx      # 0x1b5ea
leaq 0x150(%rsp), %rsi
leaq 0x1a0(%rsp), %rdx
callq 0xc288
leaq 0x150(%rsp), %rsi
movq %rbp, %rdi
callq 0x1aa3a
movq 0x158(%rsp), %rdi
testq %rdi, %rdi
je 0x11fca
callq 0x7828
movq %rsp, %rdi
callq 0x77ca
testq %r12, %r12
je 0x11fdf
movq %r12, %rdi
callq 0x7828
movq 0x58(%rsp), %rsi
movq 0x60(%rsp), %rdx
leaq 0x38(%rsp), %rdi
callq 0x50b0
movslq 0x108(%r14), %rax
movq 0x58(%r14), %rcx
leaq (%rax,%rax,2), %rax
movq -0x18(%rcx,%rax,8), %rbp
movq 0x20(%rsp), %rbx
cmpq -0x10(%rcx,%rax,8), %rbp
je 0x120b4
movq %rsp, %r12
movq %rbp, %r13
movq (%rbp), %rsi
leaq 0x1e0(%rsp), %rdi
callq 0x1a98e
movq %r12, %rdi
movq %rbx, %rsi
callq 0x1a98e
movq 0x1e0(%rsp), %r14
movq (%rsp), %r15
movq 0x8(%rsp), %rdi
testq %rdi, %rdi
je 0x12054
callq 0x7828
movq 0x1e8(%rsp), %rdi
testq %rdi, %rdi
je 0x12066
callq 0x7828
cmpq %r15, %r14
movq 0xb8(%rsp), %r14
jne 0x12092
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 0x162e2
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 0x1201d
xorpd %xmm0, %xmm0
leaq 0x3a0(%rsp), %rsi
movapd %xmm0, (%rsi)
movq %rbx, %rdi
callq 0x1a9ba
movq 0x3a8(%rsp), %rdi
testq %rdi, %rdi
leaq 0x48(%rsp), %rbp
movq 0x30(%rsp), %r12
je 0x120e8
callq 0x7828
movq 0xb8(%r14), %rsi
movq %rbx, 0x140(%rsp)
movq 0x28(%rsp), %rax
movq %rax, 0x148(%rsp)
testq %rax, %rax
je 0x1211e
movq 0x12eb0(%rip), %rcx     # 0x24fc0
cmpb $0x0, (%rcx)
je 0x1211a
incl 0x8(%rax)
jmp 0x1211e
lock
incl 0x8(%rax)
leaq 0x1e0(%rsp), %rdi
leaq 0x140(%rsp), %rdx
callq 0x1aa60
movapd 0x1e0(%rsp), %xmm0
xorpd %xmm1, %xmm1
movapd %xmm1, 0x1e0(%rsp)
movq 0xc0(%r14), %rdi
movupd %xmm0, 0xb8(%r14)
testq %rdi, %rdi
je 0x12175
callq 0x7828
movq 0x1e8(%rsp), %rdi
testq %rdi, %rdi
je 0x12175
callq 0x7828
movq 0x148(%rsp), %rdi
testq %rdi, %rdi
je 0x12187
callq 0x7828
movq 0x3e0(%rsp), %rdi
leaq 0x3f0(%rsp), %rax
cmpq %rax, %rdi
je 0x1221b
movq 0x3f0(%rsp), %rsi
incq %rsi
callq 0x51f0
jmp 0x1221b
lock
incl 0x8(%rax)
leaq 0x3e0(%rsp), %rdi
leaq 0x180(%rsp), %rdx
callq 0x1aa60
movapd 0x3e0(%rsp), %xmm0
xorpd %xmm1, %xmm1
movapd %xmm1, 0x3e0(%rsp)
movq 0xc0(%r14), %rdi
movupd %xmm0, 0xb8(%r14)
testq %rdi, %rdi
je 0x12209
callq 0x7828
movq 0x3e8(%rsp), %rdi
testq %rdi, %rdi
je 0x12209
callq 0x7828
movq 0x188(%rsp), %rdi
testq %rdi, %rdi
je 0x1221b
callq 0x7828
movq 0x58(%rsp), %rdi
leaq 0x68(%rsp), %rax
cmpq %rax, %rdi
je 0x12237
movq 0x68(%rsp), %rsi
incq %rsi
callq 0x51f0
leaq 0x10(%r12), %rax
movq %rax, (%r12)
movq 0x38(%rsp), %rcx
cmpq %rbp, %rcx
je 0x1225a
movq %rcx, (%r12)
movq 0x48(%rsp), %rax
movq %rax, 0x10(%r12)
jmp 0x12263
movupd (%rbp), %xmm0
movupd %xmm0, (%rax)
movq 0x40(%rsp), %rax
movq %rax, 0x8(%r12)
movq 0x28(%rsp), %rdi
testq %rdi, %rdi
je 0x1227c
callq 0x7828
movq %r12, %rax
addq $0x568, %rsp            # imm = 0x568
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %r14
movq 0x158(%rsp), %rdi
jmp 0x1260a
movq %rax, %r14
jmp 0x12614
jmp 0x122c5
jmp 0x122e7
jmp 0x122c5
jmp 0x122e7
jmp 0x122c5
jmp 0x122e7
jmp 0x122c5
jmp 0x122e7
jmp 0x122c5
jmp 0x122e7
jmp 0x122c5
jmp 0x122e7
jmp 0x122c5
jmp 0x122e7
movq %rax, %r14
movq 0x1e0(%rsp), %rdi
cmpq %r13, %rdi
je 0x122ea
movq 0x1f0(%rsp), %rsi
incq %rsi
callq 0x51f0
jmp 0x122ea
movq %rax, %r14
movq %rsp, %rdi
callq 0x77ca
jmp 0x126c3
movq %rax, %r14
movq 0x188(%rsp), %rdi
jmp 0x1269d
movq %rax, %r14
movq 0x3b8(%rsp), %rdi
jmp 0x1269d
jmp 0x12669
jmp 0x12348
jmp 0x126a9
jmp 0x12669
movq %rax, %r14
movq 0x148(%rsp), %rdi
jmp 0x126b9
movq %rax, %r14
movq 0x3a8(%rsp), %rdi
jmp 0x126b9
movq %rax, %r14
movq 0x8(%rsp), %rdi
jmp 0x126b9
jmp 0x126a9
movq %rax, %r14
movq 0x1e0(%rsp), %rdi
cmpq %r13, %rdi
je 0x126c3
movq 0x1f0(%rsp), %rsi
incq %rsi
callq 0x51f0
jmp 0x126c3
jmp 0x126a9
jmp 0x124d1
jmp 0x12669
movq %rax, %r14
movq 0x1a0(%rsp), %rdi
cmpq %rbp, %rdi
je 0x123b7
movq 0x1b0(%rsp), %rsi
incq %rsi
callq 0x51f0
jmp 0x123b7
movq %rax, %r14
leaq 0xa8(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x123dd
movq 0xa8(%rsp), %rsi
incq %rsi
callq 0x51f0
jmp 0x123dd
movq %rax, %r14
leaq 0x110(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x12403
movq 0x110(%rsp), %rsi
incq %rsi
callq 0x51f0
jmp 0x12403
movq %rax, %r14
movq 0xe0(%rsp), %rdi
cmpq %r12, %rdi
je 0x12425
movq 0xf0(%rsp), %rsi
incq %rsi
callq 0x51f0
jmp 0x12425
movq %rax, %r14
leaq 0x88(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x1244b
movq 0x88(%rsp), %rsi
incq %rsi
callq 0x51f0
jmp 0x1244b
movq %rax, %r14
leaq 0x130(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x12471
movq 0x130(%rsp), %rsi
incq %rsi
callq 0x51f0
jmp 0x12471
movq %rax, %r14
movq 0xc0(%rsp), %rdi
cmpq %r13, %rdi
je 0x12493
movq 0xd0(%rsp), %rsi
incq %rsi
callq 0x51f0
jmp 0x12493
movq %rax, %r14
leaq 0x3d0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x124b9
movq 0x3d0(%rsp), %rsi
incq %rsi
callq 0x51f0
jmp 0x124b9
movq %rax, %r14
movq 0x378(%rsp), %rdi
jmp 0x124fc
jmp 0x124c7
jmp 0x124c7
movq %rax, %r14
jmp 0x12506
movq %rax, %r14
jmp 0x12527
movq %rax, %r14
jmp 0x12695
jmp 0x12669
jmp 0x12669
jmp 0x12669
jmp 0x125cd
jmp 0x125cd
jmp 0x124f4
movq %rax, %r14
movq 0x8(%rsp), %rdi
testq %rdi, %rdi
je 0x12506
callq 0x7828
movq 0x12a93(%rip), %rsi     # 0x24fa0
leaq 0x1e0(%rsp), %rdi
callq 0x5170
leaq 0x260(%rsp), %rdi
callq 0x50c0
movq 0x12a72(%rip), %rsi     # 0x24fa0
leaq 0x3e0(%rsp), %rdi
callq 0x5170
leaq 0x460(%rsp), %rdi
callq 0x50c0
jmp 0x126e8
movq %rax, %r14
testq %r12, %r12
je 0x1255d
movq %r12, %rdi
callq 0x7828
movq 0x1e8(%rsp), %rdi
testq %rdi, %rdi
je 0x12574
callq 0x7828
jmp 0x12574
movq %rax, %r14
testq %r15, %r15
je 0x1258b
movq %r15, %rdi
callq 0x7828
jmp 0x1258b
jmp 0x12669
movq %rax, %r14
movq 0x3e8(%rsp), %rdi
jmp 0x1269d
jmp 0x12669
jmp 0x125cd
jmp 0x126a9
jmp 0x12669
jmp 0x12673
jmp 0x1266e
movq %rax, %r14
movq 0x168(%rsp), %rdi
testq %rdi, %rdi
je 0x125c8
callq 0x7828
movq %r15, %r12
jmp 0x12614
movq %rax, %r14
jmp 0x12704
movq %rax, %r14
movq 0x1c0(%rsp), %rdi
leaq 0x1d0(%rsp), %rax
cmpq %rax, %rdi
je 0x12602
movq 0x1d0(%rsp), %rsi
incq %rsi
callq 0x51f0
jmp 0x12602
movq %rax, %r14
movq 0x178(%rsp), %rdi
testq %rdi, %rdi
je 0x12614
callq 0x7828
movq %rsp, %rdi
callq 0x77ca
testq %r12, %r12
je 0x126c3
movq %r12, %rdi
jmp 0x126be
jmp 0x126a9
movq %rax, %r14
jmp 0x12720
movq %rax, %r14
movq 0x380(%rsp), %rdi
cmpq %rbx, %rdi
je 0x1265c
movq 0x390(%rsp), %rsi
incq %rsi
callq 0x51f0
jmp 0x1265c
movq %rax, %r14
movq 0x198(%rsp), %rdi
jmp 0x12725
movq %rax, %r14
jmp 0x126e8
movq %rax, %r14
jmp 0x12688
movq %rax, %r14
movq 0x3e8(%rsp), %rdi
testq %rdi, %rdi
je 0x12688
callq 0x7828
testq %rbx, %rbx
je 0x12695
movq %rbx, %rdi
callq 0x7828
movq 0x1e8(%rsp), %rdi
testq %rdi, %rdi
je 0x126e8
callq 0x7828
jmp 0x126e8
movq %rax, %r14
jmp 0x126c3
movq %rax, %r14
movq 0x1e8(%rsp), %rdi
testq %rdi, %rdi
je 0x126c3
callq 0x7828
movq 0x3e0(%rsp), %rdi
leaq 0x3f0(%rsp), %rax
cmpq %rax, %rdi
je 0x126e8
movq 0x3f0(%rsp), %rsi
incq %rsi
callq 0x51f0
movq 0x58(%rsp), %rdi
leaq 0x68(%rsp), %rax
cmpq %rax, %rdi
je 0x12704
movq 0x68(%rsp), %rsi
incq %rsi
callq 0x51f0
movq 0x38(%rsp), %rdi
leaq 0x48(%rsp), %rax
cmpq %rax, %rdi
je 0x12720
movq 0x48(%rsp), %rsi
incq %rsi
callq 0x51f0
movq 0x28(%rsp), %rdi
testq %rdi, %rdi
je 0x1272f
callq 0x7828
movq %r14, %rdi
callq 0x5380
nop