// File: /workspace/github_cpp_makefile_star2_O1/Agusyc[P]CTRPG/src/battle.cpp
// Function: Battle::attack()
int Battle::attack() {
    unsigned int choice;
    if (playerTurn) {
        // The player attacks.
        bool exitLoop = false;
        Attack attack;

        while (!exitLoop) {
            cout << "Attacks: " << endl;

            for (unsigned int i = 0; i < player.attacks.size(); i++) {
                cout << i+1 << ". " << player.attacks.at(i).name << endl;
            }

            cout << player.attacks.size() + 1 << ". Go back" << endl;

            cout << "Your choice: ";

            cin >> choice;

            cout << endl;

            if (choice == player.attacks.size() + 1) {
                return 1;
            }

            if (choice > player.attacks.size() || choice < 1) {
                printMessage("That's not a valid choice...");
                cout << endl;
                continue;
            }

            attack = player.attacks.at(choice - 1);

            if (player.mana < attack.mana) {
                printMessage(string("You don't have enough ") + YELLOW + string("mana ") + WHITE + string("to use that attack!"));
                continue;
            }

            if (player.stamina < attack.stamina) {
                printMessage(string("You don't have enough ") + YELLOW + string("stamina ") + WHITE + string("to use that attack!"));
                continue;
            }

            exitLoop = true;
        }

        // Decrease the user mana and stamina
        player.mana -= attack.mana;
        player.stamina -= attack.stamina;

        // Calculate how much damage is dealt to the enemy
        int damage = (attack.damage + attack.magicDamage + player.attack) - enemy.defense;

        if (damage <= 0) {
            // The attack doesn't do anything
            printMessage("Man... That attack is so lame that it doesn't do anything.");
        } else {
            // The attack is powerful enough to do something
            bool critical = false;
            // 5 % chance of a critical hit
            if (rand() % 100 < 5) {
                critical = true;
                damage *= 2;
            }

            stringstream ss;
            if (critical)
                ss << "With a " << BOLD << "critical hit, ";
            ss << "You deal " << GREEN << damage << WHITE << " to " << RED << enemy.name << WHITE << " with " << YELLOW << attack.name << WHITE  << "!" << endl << "It now has " << GREEN << enemy.hp - damage << WHITE << " HP." << endl;

            printMessage(ss.str());

            enemy.hp -= damage;
        }
    } else {
        // The enemy attacks
        stringstream ss;
        ss << RED << enemy.name << WHITE << " has to attack!";

        printMessage(ss.str());

        bool enemyAttacks = rand() % 2;
        if (enemyAttacks) {
            Attack attack;
            bool exitLoop = false;

            // This loop ensures that the enemy doesn't choose an attack that it can't use because of mana or stamina.
            while (!exitLoop) {
                attack = enemy.attacks.at(rand() % enemy.attacks.size());

                if (enemy.mana >= attack.mana && enemy.stamina >= attack.stamina) {
                    exitLoop = true;
                }
            }

            // Decrease enemy's mana and stamina
            enemy.mana -= attack.mana;
            enemy.stamina -= attack.stamina;

            // Calculate how much damage is dealt to the player
            int damage = (attack.damage + attack.magicDamage + enemy.attack) - player.defense;

            if (defending)
                damage -= player.shieldDefense;

            if (damage <= 0) {
                // The attack doesn't do anything
                ss << RED << enemy.name << WHITE << " tries to hurt you with " << YELLOW << attack.name << WHITE <<  "... But it can't!";
                printMessage(ss.str());
            } else {
                // The attack is powerful enough...
                bool critical = false;
                // 5 % chance of a critical hit
                if (rand() % 100 < 5) {
                    critical = true;
                    damage *= 2;
                }

                // Reset the stringstream
                ss.str("");
                ss.clear();

                if (critical)
                    ss << "With a critical hit, ";
                ss << RED << enemy.name << WHITE << " deals you " << GREEN << damage << WHITE << " with " << YELLOW << attack.name << WHITE << "!"  << endl << "You now have " << GREEN << player.hp - damage << WHITE << " HP." << endl;

                printMessage(ss.str());

                player.hp -= damage;
            }
        } else {
            // The enemy decides not to attack
            printMessage("But it is resting...\n");
        }
    }

    // When the player wins
    if (enemy.hp <= 0) {
        printMessage("You win!");
        over = true;
        if (player.xp + enemy.xp < player.goal) {
            player.xp += enemy.xp;
        } else if (player.xp + enemy.xp >= player.goal) {
            stringstream ss;

            ss << "You leveled up! You are on level " << YELLOW << player.level + 1 << WHITE << " now!";

            player.xp = player.goal - player.xp;

            printMessage(ss.str());

            player.level++;
            player.goal *= 2;

            // To let the user choose what stats to improve
            showLevelUpMenu(parsePlayer());
        }
        // Give the player a random Item:
        Item item;

        bool exitLoop = false;
        while (!exitLoop) {
            item = parseItem(rand() % getItemsNumber());
            if (player.level < item.minLevel || player.level > item.maxLevel) {
                continue;
            }

            exitLoop = true;
        }

        player.items.push_back(item);

        printMessage(string("You found ") + YELLOW + item.name + WHITE + string("!"));

        writeItems();
    }

    // When the enemy wins
    if (player.hp <= 0) {
        printMessage("You lose!");
        over = true;
        exit(0);
    }
    return 0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x638, %rsp            # imm = 0x638
movq %rdi, %rbx
cmpb $0x1, 0xd9(%rdi)
jne 0x5151
leaq -0xd8(%rbp), %rax
movq %rax, -0x10(%rax)
movq $0x0, -0x8(%rax)
movb $0x0, (%rax)
movq 0xa813(%rip), %r14      # 0xefd0
movl $0x9, %edx
movq %r14, %rdi
leaq 0x7971(%rip), %rsi      # 0xc13d
callq 0x32f0
movq (%r14), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x3280
movsbl %al, %esi
movq %r14, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x31a0
movl $0x1, %r12d
leal -0x1(%r12), %r15d
movq 0x50(%rbx), %rsi
subq 0x48(%rbx), %rsi
sarq $0x6, %rsi
cmpq %r15, %rsi
jbe 0x4899
movl %r12d, %esi
movq %r14, %rdi
callq 0x3190
movq %rax, %r13
movl $0x2, %edx
movq %rax, %rdi
leaq 0x7912(%rip), %rsi      # 0xc147
callq 0x32f0
movq 0x48(%rbx), %rax
movq 0x50(%rbx), %rdx
subq %rax, %rdx
sarq $0x6, %rdx
cmpq %r15, %rdx
jbe 0x61c0
shlq $0x6, %r15
movq (%rax,%r15), %rsi
movq 0x8(%rax,%r15), %rdx
movq %r13, %rdi
callq 0x32f0
movq %rax, %r15
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x3280
movsbl %al, %esi
movq %r15, %rdi
callq 0x3030
incl %r12d
movq %rax, %rdi
callq 0x31a0
jmp 0x47fe
incq %rsi
movq %r14, %rdi
callq 0x3190
leaq -0x78(%rbp), %r12
movq %rax, %r15
movl $0x9, %edx
movq %rax, %rdi
leaq 0x7890(%rip), %rsi      # 0xc14a
callq 0x32f0
movq (%r15), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x3280
movsbl %al, %esi
movq %r15, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x31a0
movl $0xd, %edx
movq %r14, %rdi
leaq 0x783a(%rip), %rsi      # 0xc12f
callq 0x32f0
movq 0xa6df(%rip), %rdi      # 0xefe0
leaq -0x10c(%rbp), %rsi
callq 0x34c0
movq (%r14), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x3280
movsbl %al, %esi
movq %r14, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x31a0
movl -0x10c(%rbp), %r13d
movq 0x48(%rbx), %r15
movq 0x50(%rbx), %rdx
subq %r15, %rdx
sarq $0x6, %rdx
leaq 0x1(%rdx), %rax
movq %rax, -0x178(%rbp)
cmpq %r13, %rax
je 0x5ba1
testq %r13, %r13
je 0x4a22
cmpq %r13, %rdx
jb 0x4a22
leal -0x1(%r13), %esi
cmpq %rsi, %rdx
jbe 0x61d1
shlq $0x6, %rsi
addq %rsi, %r15
leaq -0xe8(%rbp), %rdi
movq %r15, %rsi
callq 0x3160
movups 0x20(%r15), %xmm0
movups 0x30(%r15), %xmm1
leaq -0xd8(%rbp), %rax
movups %xmm1, 0x20(%rax)
movups %xmm0, 0x10(%rax)
movl 0x2c(%rbx), %eax
cmpl -0xc0(%rbp), %eax
jge 0x4af0
leaq -0xf8(%rbp), %rax
movq %rax, -0x108(%rbp)
leaq -0x108(%rbp), %r15
movq %r15, %rdi
leaq 0x7797(%rip), %rsi      # 0xc171
leaq 0x77a6(%rip), %rdx      # 0xc187
callq 0x894a
movq %r15, %rdi
leaq 0x7650(%rip), %rsi      # 0xc040
callq 0x3520
movq %r12, -0x88(%rbp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x4b66
movq %rdx, -0x88(%rbp)
movq (%rcx), %rdx
movq %rdx, -0x78(%rbp)
jmp 0x4b6e
leaq -0x188(%rbp), %rax
movq %rax, -0x198(%rbp)
leaq -0x198(%rbp), %rdi
leaq 0x7716(%rip), %rsi      # 0xc154
leaq 0x772b(%rip), %rdx      # 0xc170
callq 0x894a
leaq -0x1e8(%rbp), %rax
movq %rax, -0x1f8(%rbp)
leaq -0x1f8(%rbp), %r15
movq %r15, %rdi
leaq 0x75e3(%rip), %rsi      # 0xc04c
leaq 0x75e1(%rip), %rdx      # 0xc051
callq 0x894a
leaq -0x198(%rbp), %rdi
movq %r15, %rsi
movl $0x23, %edx
movl $0x12c, %ecx            # imm = 0x12C
movl $0x1, %r8d
callq 0xb52c
movq -0x1f8(%rbp), %rdi
leaq -0x1e8(%rbp), %rax
cmpq %rax, %rdi
je 0x4aac
callq 0x3260
movq -0x198(%rbp), %rdi
leaq -0x188(%rbp), %rax
cmpq %rax, %rdi
je 0x4ac4
callq 0x3260
movq (%r14), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x3280
movsbl %al, %esi
movq %r14, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x31a0
jmp 0x47bd
movl 0x30(%rbx), %eax
cmpl -0xbc(%rbp), %eax
jge 0x56ac
leaq -0xf8(%rbp), %rax
movq %rax, -0x108(%rbp)
leaq -0x108(%rbp), %r15
movq %r15, %rdi
leaq 0x7653(%rip), %rsi      # 0xc171
leaq 0x7662(%rip), %rdx      # 0xc187
callq 0x894a
movq %r15, %rdi
leaq 0x750c(%rip), %rsi      # 0xc040
callq 0x3520
movq %r12, -0x88(%rbp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x4bfb
movq %rdx, -0x88(%rbp)
movq (%rcx), %rdx
movq %rdx, -0x78(%rbp)
jmp 0x4c03
movups (%rcx), %xmm0
movups %xmm0, (%r12)
movq 0x8(%rax), %rdx
movq %rdx, -0x80(%rbp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq -0x58(%rbp), %rax
movq %rax, -0x68(%rbp)
leaq -0x68(%rbp), %rdi
leaq 0x75f0(%rip), %rsi      # 0xc188
leaq 0x75ee(%rip), %rdx      # 0xc18d
callq 0x894a
movq -0x88(%rbp), %rcx
movl $0xf, %esi
cmpq %r12, %rcx
je 0x4bb9
movq -0x78(%rbp), %rsi
movq -0x80(%rbp), %r8
movq -0x60(%rbp), %rdx
leaq (%rdx,%r8), %rax
cmpq %rsi, %rax
jbe 0x4be6
movl $0xf, %esi
leaq -0x58(%rbp), %rdi
cmpq %rdi, -0x68(%rbp)
je 0x4bdd
movq -0x58(%rbp), %rsi
cmpq %rsi, %rax
jbe 0x4c90
movq -0x68(%rbp), %rsi
leaq -0x88(%rbp), %rdi
callq 0x30b0
jmp 0x4c9d
movups (%rcx), %xmm0
movups %xmm0, (%r12)
movq 0x8(%rax), %rdx
movq %rdx, -0x80(%rbp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq -0x58(%rbp), %rax
movq %rax, -0x68(%rbp)
leaq -0x68(%rbp), %rdi
leaq 0x7575(%rip), %rsi      # 0xc1a2
leaq 0x7576(%rip), %rdx      # 0xc1aa
callq 0x894a
movq -0x88(%rbp), %rcx
movl $0xf, %esi
cmpq %r12, %rcx
je 0x4c4e
movq -0x78(%rbp), %rsi
movq -0x80(%rbp), %r8
movq -0x60(%rbp), %rdx
leaq (%rdx,%r8), %rax
cmpq %rsi, %rax
jbe 0x4c7b
movl $0xf, %esi
leaq -0x58(%rbp), %rdi
cmpq %rdi, -0x68(%rbp)
je 0x4c72
movq -0x58(%rbp), %rsi
cmpq %rsi, %rax
jbe 0x4eab
movq -0x68(%rbp), %rsi
leaq -0x88(%rbp), %rdi
callq 0x30b0
jmp 0x4eb8
leaq -0x68(%rbp), %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x32e0
leaq -0x38(%rbp), %rsi
movq %rsi, -0x48(%rbp)
movq (%rax), %rdx
leaq 0x10(%rax), %rcx
cmpq %rcx, %rdx
je 0x4cbe
movq %rdx, -0x48(%rbp)
movq (%rcx), %rdx
movq %rdx, -0x38(%rbp)
jmp 0x4cc4
movups (%rcx), %xmm0
movups %xmm0, (%rsi)
movq %rax, %rdx
addq $0x8, %rdx
movq 0x8(%rax), %rsi
movq %rsi, -0x40(%rbp)
movq %rcx, (%rax)
movq $0x0, (%rdx)
movb $0x0, (%rcx)
leaq -0x48(%rbp), %rdi
leaq 0x7361(%rip), %rsi      # 0xc04c
callq 0x3520
leaq -0x370(%rbp), %rsi
movq %rsi, -0x380(%rbp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x4d20
movq %rdx, -0x380(%rbp)
movq (%rcx), %rdx
movq %rdx, -0x370(%rbp)
jmp 0x4d26
movups (%rcx), %xmm0
movups %xmm0, (%rsi)
movq 0x8(%rax), %rdx
movq %rdx, -0x378(%rbp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq -0x98(%rbp), %rax
movq %rax, -0xa8(%rbp)
leaq -0xa8(%rbp), %rdi
leaq 0x7432(%rip), %rsi      # 0xc18e
leaq 0x743e(%rip), %rdx      # 0xc1a1
callq 0x894a
movq -0x380(%rbp), %rcx
movl $0xf, %esi
leaq -0x370(%rbp), %rax
cmpq %rax, %rcx
je 0x4d87
movq -0x370(%rbp), %rsi
movq -0x378(%rbp), %r8
movq -0xa0(%rbp), %rdx
leaq (%rdx,%r8), %rax
cmpq %rsi, %rax
jbe 0x4dbf
movl $0xf, %esi
leaq -0x98(%rbp), %rdi
cmpq %rdi, -0xa8(%rbp)
je 0x4dba
movq -0x98(%rbp), %rsi
cmpq %rsi, %rax
jbe 0x4dd4
movq -0xa8(%rbp), %rsi
leaq -0x380(%rbp), %rdi
callq 0x30b0
jmp 0x4de4
leaq -0xa8(%rbp), %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x32e0
leaq -0x140(%rbp), %rsi
movq %rsi, -0x150(%rbp)
movq (%rax), %rdx
leaq 0x10(%rax), %rcx
cmpq %rcx, %rdx
je 0x4e11
movq %rdx, -0x150(%rbp)
movq (%rcx), %rdx
movq %rdx, -0x140(%rbp)
jmp 0x4e17
movups (%rcx), %xmm0
movups %xmm0, (%rsi)
movq %rax, %rdx
addq $0x8, %rdx
movq 0x8(%rax), %rsi
movq %rsi, -0x148(%rbp)
movq %rcx, (%rax)
movq $0x0, (%rdx)
movb $0x0, (%rcx)
leaq -0x1c8(%rbp), %rax
movq %rax, -0x1d8(%rbp)
leaq -0x1d8(%rbp), %r15
movq %r15, %rdi
leaq 0x71f7(%rip), %rsi      # 0xc04c
leaq 0x71f5(%rip), %rdx      # 0xc051
callq 0x894a
leaq -0x150(%rbp), %rdi
movq %r15, %rsi
movl $0x23, %edx
movl $0x12c, %ecx            # imm = 0x12C
movl $0x1, %r8d
callq 0xb52c
movq -0x1d8(%rbp), %rdi
leaq -0x1c8(%rbp), %rax
cmpq %rax, %rdi
je 0x4e98
callq 0x3260
movq -0x150(%rbp), %rdi
leaq -0x140(%rbp), %rax
jmp 0x50c1
leaq -0x68(%rbp), %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x32e0
leaq -0x38(%rbp), %rsi
movq %rsi, -0x48(%rbp)
movq (%rax), %rdx
leaq 0x10(%rax), %rcx
cmpq %rcx, %rdx
je 0x4ed9
movq %rdx, -0x48(%rbp)
movq (%rcx), %rdx
movq %rdx, -0x38(%rbp)
jmp 0x4edf
movups (%rcx), %xmm0
movups %xmm0, (%rsi)
movq %rax, %rdx
addq $0x8, %rdx
movq 0x8(%rax), %rsi
movq %rsi, -0x40(%rbp)
movq %rcx, (%rax)
movq $0x0, (%rdx)
movb $0x0, (%rcx)
leaq -0x48(%rbp), %rdi
leaq 0x7146(%rip), %rsi      # 0xc04c
callq 0x3520
leaq -0x370(%rbp), %rsi
movq %rsi, -0x380(%rbp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x4f3b
movq %rdx, -0x380(%rbp)
movq (%rcx), %rdx
movq %rdx, -0x370(%rbp)
jmp 0x4f41
movups (%rcx), %xmm0
movups %xmm0, (%rsi)
movq 0x8(%rax), %rdx
movq %rdx, -0x378(%rbp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq -0x98(%rbp), %rax
movq %rax, -0xa8(%rbp)
leaq -0xa8(%rbp), %rdi
leaq 0x7217(%rip), %rsi      # 0xc18e
leaq 0x7223(%rip), %rdx      # 0xc1a1
callq 0x894a
movq -0x380(%rbp), %rcx
movl $0xf, %esi
leaq -0x370(%rbp), %rax
cmpq %rax, %rcx
je 0x4fa2
movq -0x370(%rbp), %rsi
movq -0x378(%rbp), %r8
movq -0xa0(%rbp), %rdx
leaq (%rdx,%r8), %rax
cmpq %rsi, %rax
jbe 0x4fda
movl $0xf, %esi
leaq -0x98(%rbp), %rdi
cmpq %rdi, -0xa8(%rbp)
je 0x4fd5
movq -0x98(%rbp), %rsi
cmpq %rsi, %rax
jbe 0x4fef
movq -0xa8(%rbp), %rsi
leaq -0x380(%rbp), %rdi
callq 0x30b0
jmp 0x4fff
leaq -0xa8(%rbp), %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x32e0
leaq -0x120(%rbp), %rsi
movq %rsi, -0x130(%rbp)
movq (%rax), %rdx
leaq 0x10(%rax), %rcx
cmpq %rcx, %rdx
je 0x502c
movq %rdx, -0x130(%rbp)
movq (%rcx), %rdx
movq %rdx, -0x120(%rbp)
jmp 0x5032
movups (%rcx), %xmm0
movups %xmm0, (%rsi)
movq %rax, %rdx
addq $0x8, %rdx
movq 0x8(%rax), %rsi
movq %rsi, -0x128(%rbp)
movq %rcx, (%rax)
movq $0x0, (%rdx)
movb $0x0, (%rcx)
leaq -0x1a8(%rbp), %rax
movq %rax, -0x1b8(%rbp)
leaq -0x1b8(%rbp), %r15
movq %r15, %rdi
leaq 0x6fdc(%rip), %rsi      # 0xc04c
leaq 0x6fda(%rip), %rdx      # 0xc051
callq 0x894a
leaq -0x130(%rbp), %rdi
movq %r15, %rsi
movl $0x23, %edx
movl $0x12c, %ecx            # imm = 0x12C
movl $0x1, %r8d
callq 0xb52c
movq -0x1b8(%rbp), %rdi
leaq -0x1a8(%rbp), %rax
cmpq %rax, %rdi
je 0x50b3
callq 0x3260
movq -0x130(%rbp), %rdi
leaq -0x120(%rbp), %rax
cmpq %rax, %rdi
je 0x50cb
callq 0x3260
movq -0xa8(%rbp), %rdi
leaq -0x98(%rbp), %rax
cmpq %rax, %rdi
je 0x50e3
callq 0x3260
movq -0x380(%rbp), %rdi
leaq -0x370(%rbp), %rax
cmpq %rax, %rdi
je 0x50fb
callq 0x3260
movq -0x48(%rbp), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0x510d
callq 0x3260
movq -0x68(%rbp), %rdi
leaq -0x58(%rbp), %rax
cmpq %rax, %rdi
je 0x511f
callq 0x3260
movq -0x88(%rbp), %rdi
cmpq %r12, %rdi
je 0x5130
callq 0x3260
movq -0x108(%rbp), %rdi
leaq -0xf8(%rbp), %rax
cmpq %rax, %rdi
je 0x47bd
callq 0x3260
jmp 0x47bd
leaq -0x380(%rbp), %rdi
callq 0x31b0
leaq -0x370(%rbp), %r14
leaq 0x6edb(%rip), %rsi      # 0xc046
movl $0x5, %edx
movq %r14, %rdi
callq 0x32f0
movq 0x78(%rbx), %rsi
movq 0x80(%rbx), %rdx
movq %r14, %rdi
callq 0x32f0
movq %rax, %r14
leaq 0x6eb7(%rip), %rsi      # 0xc04c
movl $0x5, %edx
movq %rax, %rdi
callq 0x32f0
leaq 0x706b(%rip), %rsi      # 0xc214
movl $0xf, %edx
movq %r14, %rdi
callq 0x32f0
leaq -0x368(%rbp), %rsi
leaq -0x5c0(%rbp), %rdi
callq 0x3440
leaq -0x4d0(%rbp), %r14
movq %r14, -0x10(%r14)
leaq 0x6e71(%rip), %rsi      # 0xc04c
leaq 0x6e6f(%rip), %rdx      # 0xc051
leaq -0x4e0(%rbp), %rdi
callq 0x894a
leaq -0x5c0(%rbp), %rdi
leaq -0x4e0(%rbp), %rsi
movl $0x23, %edx
movl $0x12c, %ecx            # imm = 0x12C
movl $0x1, %r8d
callq 0xb52c
movq -0x4e0(%rbp), %rdi
cmpq %r14, %rdi
je 0x5222
callq 0x3260
leaq -0x5b0(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x5237
callq 0x3260
callq 0x3090
testb $0x1, %al
jne 0x52f7
leaq -0x470(%rbp), %r14
movq %r14, -0x10(%r14)
leaq 0x7029(%rip), %rsi      # 0xc27f
leaq 0x7037(%rip), %rdx      # 0xc294
leaq -0x480(%rbp), %rdi
callq 0x894a
leaq -0x450(%rbp), %r15
movq %r15, -0x10(%r15)
leaq 0x6dd1(%rip), %rsi      # 0xc04c
leaq 0x6dcf(%rip), %rdx      # 0xc051
leaq -0x460(%rbp), %rdi
callq 0x894a
leaq -0x480(%rbp), %rdi
leaq -0x460(%rbp), %rsi
movl $0x23, %edx
movl $0x12c, %ecx            # imm = 0x12C
movl $0x1, %r8d
callq 0xb52c
movq -0x460(%rbp), %rdi
cmpq %r15, %rdi
je 0x52c2
callq 0x3260
movq -0x480(%rbp), %rdi
cmpq %r14, %rdi
je 0x52d3
callq 0x3260
movq 0x9cd6(%rip), %rsi      # 0xefb0
leaq -0x380(%rbp), %rdi
callq 0x31d0
leaq -0x300(%rbp), %rdi
callq 0x30c0
jmp 0x5bcb
leaq -0xd8(%rbp), %r13
movq %r13, -0x10(%r13)
movq $0x0, -0x8(%r13)
movb $0x0, (%r13)
xorl %r12d, %r12d
leaq -0xe8(%rbp), %r15
callq 0x3090
cltq
movq 0xc0(%rbx), %rcx
movq 0xc8(%rbx), %rsi
subq %rcx, %rsi
sarq $0x6, %rsi
xorl %edx, %edx
divq %rsi
movq %rdx, %r14
shlq $0x6, %r14
addq %rcx, %r14
movq %r15, %rdi
movq %r14, %rsi
callq 0x3160
movups 0x20(%r14), %xmm0
movups 0x30(%r14), %xmm1
movups %xmm1, 0x20(%r13)
movups %xmm0, 0x10(%r13)
movl 0xa4(%rbx), %eax
movl -0xbc(%rbp), %ecx
cmpl %ecx, 0xa8(%rbx)
movzbl %r12b, %ecx
movl $0x1, %r12d
cmovll %ecx, %r12d
cmpl -0xc0(%rbp), %eax
cmovll %ecx, %r12d
testb $0x1, %r12b
je 0x5319
movl -0xc0(%rbp), %eax
subl %eax, 0xa4(%rbx)
movl -0xbc(%rbp), %eax
subl %eax, 0xa8(%rbx)
movl -0xc4(%rbp), %r15d
xorl %eax, %eax
cmpb $0x0, 0xda(%rbx)
je 0x53c0
movl 0x28(%rbx), %eax
addl -0xc8(%rbp), %r15d
addl 0x98(%rbx), %r15d
addl 0x24(%rbx), %eax
subl %eax, %r15d
testl %r15d, %r15d
jle 0x59ce
callq 0x3090
movslq %eax, %r14
imulq $0x51eb851f, %r14, %rax # imm = 0x51EB851F
movq %rax, %rcx
shrq $0x3f, %rcx
sarq $0x25, %rax
addl %ecx, %eax
imull $0x64, %eax, %eax
subl %eax, %r14d
cmpl $0x5, %r14d
setl %cl
shll %cl, %r15d
leaq -0x38(%rbp), %r12
movq %r12, -0x10(%r12)
leaq 0x6e7b(%rip), %rdx      # 0xc294
leaq -0x48(%rbp), %rdi
movq %rdx, %rsi
callq 0x894a
leaq -0x48(%rbp), %rsi
leaq -0x368(%rbp), %rdi
callq 0x33e0
movq -0x48(%rbp), %rdi
cmpq %r12, %rdi
je 0x5443
callq 0x3260
movq -0x380(%rbp), %rax
leaq -0x380(%rbp), %rdi
addq -0x18(%rax), %rdi
xorl %esi, %esi
callq 0x34a0
leaq -0x370(%rbp), %r12
cmpl $0x4, %r14d
jg 0x547d
leaq 0x6ddf(%rip), %rsi      # 0xc24f
movl $0x15, %edx
movq %r12, %rdi
callq 0x32f0
leaq 0x6bc2(%rip), %rsi      # 0xc046
movl $0x5, %edx
movq %r12, %rdi
callq 0x32f0
movq 0x78(%rbx), %rsi
movq 0x80(%rbx), %rdx
movq %r12, %rdi
callq 0x32f0
movq %rax, %r12
leaq 0x6b9e(%rip), %rsi      # 0xc04c
movl $0x5, %edx
movq %rax, %rdi
callq 0x32f0
leaq 0x6da3(%rip), %rsi      # 0xc265
movl $0xb, %edx
movq %r12, %rdi
callq 0x32f0
leaq 0x6c49(%rip), %rsi      # 0xc11f
movl $0x5, %edx
movq %r12, %rdi
callq 0x32f0
movq %r12, %rdi
movl %r15d, %esi
callq 0x34b0
movq %rax, %r12
leaq 0x6b54(%rip), %rsi      # 0xc04c
movl $0x5, %edx
movq %rax, %rdi
callq 0x32f0
leaq 0x6d2a(%rip), %rsi      # 0xc236
movl $0x6, %edx
movq %r12, %rdi
callq 0x32f0
leaq 0x6b20(%rip), %rsi      # 0xc040
movl $0x5, %edx
movq %r12, %rdi
callq 0x32f0
movq -0xe8(%rbp), %rsi
movq -0xe0(%rbp), %rdx
movq %r12, %rdi
callq 0x32f0
movq %rax, %r12
leaq 0x6aff(%rip), %rsi      # 0xc04c
movl $0x5, %edx
movq %rax, %rdi
callq 0x32f0
leaq 0x6d78(%rip), %rsi      # 0xc2d9
movl $0x1, %edx
movq %r12, %rdi
callq 0x32f0
movq (%r12), %rax
movq -0x18(%rax), %rdi
addq %r12, %rdi
movl $0xa, %esi
callq 0x3280
movsbl %al, %esi
movq %r12, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x31a0
movq %rax, %r12
leaq 0x6cd1(%rip), %rsi      # 0xc271
movl $0xd, %edx
movq %rax, %rdi
callq 0x32f0
leaq 0x6b6b(%rip), %rsi      # 0xc11f
movl $0x5, %edx
movq %r12, %rdi
callq 0x32f0
movl 0x34(%rbx), %esi
subl %r15d, %esi
movq %r12, %rdi
callq 0x34b0
movq %rax, %r12
leaq 0x6a73(%rip), %rsi      # 0xc04c
movl $0x5, %edx
movq %rax, %rdi
callq 0x32f0
leaq 0x6c22(%rip), %rsi      # 0xc20f
movl $0x4, %edx
movq %r12, %rdi
callq 0x32f0
movq (%r12), %rax
movq -0x18(%rax), %rdi
addq %r12, %rdi
movl $0xa, %esi
callq 0x3280
movsbl %al, %esi
movq %r12, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x31a0
leaq -0x580(%rbp), %rdi
leaq -0x368(%rbp), %rsi
callq 0x3440
leaq -0x490(%rbp), %r14
movq %r14, -0x10(%r14)
leaq 0x6a05(%rip), %rsi      # 0xc04c
leaq 0x6a03(%rip), %rdx      # 0xc051
leaq -0x4a0(%rbp), %rdi
callq 0x894a
leaq -0x580(%rbp), %rdi
leaq -0x4a0(%rbp), %rsi
movl $0x23, %edx
movl $0x12c, %ecx            # imm = 0x12C
movl $0x1, %r8d
callq 0xb52c
movq -0x4a0(%rbp), %rdi
cmpq %r14, %rdi
je 0x568e
callq 0x3260
leaq -0x570(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x56a3
callq 0x3260
subl %r15d, 0x34(%rbx)
jmp 0x5afd
movl -0xc0(%rbp), %eax
subl %eax, 0x2c(%rbx)
movl -0xbc(%rbp), %eax
subl %eax, 0x30(%rbx)
movl -0xc4(%rbp), %r14d
addl -0xc8(%rbp), %r14d
addl 0x20(%rbx), %r14d
subl 0x9c(%rbx), %r14d
testl %r14d, %r14d
jle 0x5b12
callq 0x3090
movslq %eax, %r15
imulq $0x51eb851f, %r15, %rax # imm = 0x51EB851F
movq %rax, %rcx
shrq $0x3f, %rcx
sarq $0x25, %rax
addl %ecx, %eax
imull $0x64, %eax, %eax
subl %eax, %r15d
cmpl $0x5, %r15d
setl %cl
shll %cl, %r14d
leaq -0x380(%rbp), %rdi
callq 0x31b0
cmpl $0x4, %r15d
jg 0x5761
leaq -0x370(%rbp), %r15
leaq 0x6aba(%rip), %rsi      # 0xc1e6
movl $0x7, %edx
movq %r15, %rdi
callq 0x32f0
leaq 0x6aae(%rip), %rsi      # 0xc1ee
movl $0x5, %edx
movq %r15, %rdi
callq 0x32f0
leaq 0x6b02(%rip), %rsi      # 0xc256
movl $0xe, %edx
movq %r15, %rdi
callq 0x32f0
leaq -0x370(%rbp), %r15
leaq 0x6a85(%rip), %rsi      # 0xc1f4
movl $0x9, %edx
movq %r15, %rdi
callq 0x32f0
leaq 0x699c(%rip), %rsi      # 0xc11f
movl $0x5, %edx
movq %r15, %rdi
callq 0x32f0
movq %r15, %rdi
movl %r14d, %esi
callq 0x34b0
movq %rax, %r15
leaq 0x68a7(%rip), %rsi      # 0xc04c
movl $0x5, %edx
movq %rax, %rdi
callq 0x32f0
leaq 0x6a45(%rip), %rsi      # 0xc1fe
movl $0x4, %edx
movq %r15, %rdi
callq 0x32f0
leaq 0x6879(%rip), %rsi      # 0xc046
movl $0x5, %edx
movq %r15, %rdi
callq 0x32f0
movq 0x78(%rbx), %rsi
movq 0x80(%rbx), %rdx
movq %r15, %rdi
callq 0x32f0
movq %rax, %r15
leaq 0x6855(%rip), %rsi      # 0xc04c
movl $0x5, %edx
movq %rax, %rdi
callq 0x32f0
leaq 0x6a2b(%rip), %rsi      # 0xc236
movl $0x6, %edx
movq %r15, %rdi
callq 0x32f0
leaq 0x6821(%rip), %rsi      # 0xc040
movl $0x5, %edx
movq %r15, %rdi
callq 0x32f0
movq -0xe8(%rbp), %rsi
movq -0xe0(%rbp), %rdx
movq %r15, %rdi
callq 0x32f0
movq %rax, %r15
leaq 0x6800(%rip), %rsi      # 0xc04c
movl $0x5, %edx
movq %rax, %rdi
callq 0x32f0
leaq 0x6a79(%rip), %rsi      # 0xc2d9
movl $0x1, %edx
movq %r15, %rdi
callq 0x32f0
movq (%r15), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x3280
movsbl %al, %esi
movq %r15, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x31a0
movq %rax, %r15
leaq 0x6965(%rip), %rsi      # 0xc203
movl $0xb, %edx
movq %rax, %rdi
callq 0x32f0
leaq 0x686d(%rip), %rsi      # 0xc11f
movl $0x5, %edx
movq %r15, %rdi
callq 0x32f0
movl 0xac(%rbx), %esi
subl %r14d, %esi
movq %r15, %rdi
callq 0x34b0
movq %rax, %r15
leaq 0x6772(%rip), %rsi      # 0xc04c
movl $0x5, %edx
movq %rax, %rdi
callq 0x32f0
leaq 0x6921(%rip), %rsi      # 0xc20f
movl $0x4, %edx
movq %r15, %rdi
callq 0x32f0
movq (%r15), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x3280
movsbl %al, %esi
movq %r15, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x31a0
leaq -0x368(%rbp), %rsi
leaq -0x5e0(%rbp), %rdi
callq 0x3440
leaq -0x4f0(%rbp), %r15
movq %r15, -0x10(%r15)
leaq 0x6705(%rip), %rsi      # 0xc04c
leaq 0x6703(%rip), %rdx      # 0xc051
leaq -0x500(%rbp), %rdi
callq 0x894a
leaq -0x5e0(%rbp), %rdi
leaq -0x500(%rbp), %rsi
movl $0x23, %edx
movl $0x12c, %ecx            # imm = 0x12C
movl $0x1, %r8d
callq 0xb52c
movq -0x500(%rbp), %rdi
cmpq %r15, %rdi
je 0x598e
callq 0x3260
leaq -0x5d0(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x59a3
callq 0x3260
subl %r14d, 0xac(%rbx)
movq 0x95ff(%rip), %rsi      # 0xefb0
leaq -0x380(%rbp), %rdi
callq 0x31d0
leaq -0x300(%rbp), %rdi
callq 0x30c0
jmp 0x5ba1
leaq 0x6671(%rip), %rsi      # 0xc046
movl $0x5, %edx
leaq -0x370(%rbp), %r14
movq %r14, %rdi
callq 0x32f0
movq 0x78(%rbx), %rsi
movq 0x80(%rbx), %rdx
movq %r14, %rdi
callq 0x32f0
movq %rax, %r15
leaq 0x6646(%rip), %rsi      # 0xc04c
movl $0x5, %edx
movq %rax, %rdi
callq 0x32f0
leaq 0x680a(%rip), %rsi      # 0xc224
movl $0x18, %edx
movq %r15, %rdi
callq 0x32f0
leaq 0x6612(%rip), %rsi      # 0xc040
movl $0x5, %edx
movq %r15, %rdi
callq 0x32f0
movq -0xe8(%rbp), %rsi
movq -0xe0(%rbp), %rdx
movq %r15, %rdi
callq 0x32f0
movq %rax, %r15
leaq 0x65f1(%rip), %rsi      # 0xc04c
movl $0x5, %edx
movq %rax, %rdi
callq 0x32f0
leaq 0x67ce(%rip), %rsi      # 0xc23d
movl $0x11, %edx
movq %r15, %rdi
callq 0x32f0
leaq -0x5a0(%rbp), %rdi
leaq -0x368(%rbp), %rsi
callq 0x3440
leaq -0x4b0(%rbp), %r14
movq %r14, -0x10(%r14)
leaq 0x65ab(%rip), %rsi      # 0xc04c
leaq 0x65a9(%rip), %rdx      # 0xc051
leaq -0x4c0(%rbp), %rdi
callq 0x894a
leaq -0x5a0(%rbp), %rdi
leaq -0x4c0(%rbp), %rsi
movl $0x23, %edx
movl $0x12c, %ecx            # imm = 0x12C
movl $0x1, %r8d
callq 0xb52c
movq -0x4c0(%rbp), %rdi
cmpq %r14, %rdi
je 0x5ae8
callq 0x3260
leaq -0x590(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x5afd
callq 0x3260
movq -0xe8(%rbp), %rdi
cmpq %r13, %rdi
jne 0x52ce
jmp 0x52d3
leaq -0x530(%rbp), %r14
movq %r14, -0x10(%r14)
leaq 0x6687(%rip), %rsi      # 0xc1ab
leaq 0x66ba(%rip), %rdx      # 0xc1e5
leaq -0x540(%rbp), %rdi
callq 0x894a
leaq -0x510(%rbp), %r15
movq %r15, -0x10(%r15)
leaq 0x6503(%rip), %rsi      # 0xc04c
leaq 0x6501(%rip), %rdx      # 0xc051
leaq -0x520(%rbp), %rdi
callq 0x894a
leaq -0x540(%rbp), %rdi
leaq -0x520(%rbp), %rsi
movl $0x23, %edx
movl $0x12c, %ecx            # imm = 0x12C
movl $0x1, %r8d
callq 0xb52c
movq -0x520(%rbp), %rdi
cmpq %r15, %rdi
je 0x5b90
callq 0x3260
movq -0x540(%rbp), %rdi
cmpq %r14, %rdi
je 0x5ba1
callq 0x3260
movq -0xe8(%rbp), %rdi
leaq -0xd8(%rbp), %rax
cmpq %rax, %rdi
je 0x5bb9
callq 0x3260
movl $0x1, %eax
cmpq %r13, -0x178(%rbp)
je 0x61ae
cmpl $0x0, 0xac(%rbx)
jg 0x61a6
leaq -0x430(%rbp), %r14
movq %r14, -0x10(%r14)
leaq 0x66ab(%rip), %rsi      # 0xc295
leaq 0x66ac(%rip), %rdx      # 0xc29d
leaq -0x440(%rbp), %rdi
callq 0x894a
leaq -0x410(%rbp), %r15
movq %r15, -0x10(%r15)
leaq 0x643d(%rip), %rsi      # 0xc04c
leaq 0x643b(%rip), %rdx      # 0xc051
leaq -0x420(%rbp), %rdi
callq 0x894a
leaq -0x440(%rbp), %rdi
leaq -0x420(%rbp), %rsi
movl $0x23, %edx
movl $0x12c, %ecx            # imm = 0x12C
movl $0x1, %r8d
callq 0xb52c
movq -0x420(%rbp), %rdi
cmpq %r15, %rdi
je 0x5c56
callq 0x3260
movq -0x440(%rbp), %rdi
cmpq %r14, %rdi
je 0x5c67
callq 0x3260
movb $0x1, 0xd8(%rbx)
movl 0xb0(%rbx), %eax
addl 0x3c(%rbx), %eax
cmpl 0x40(%rbx), %eax
jge 0x5c84
movl %eax, 0x3c(%rbx)
jmp 0x5df1
leaq -0x380(%rbp), %rdi
callq 0x31b0
leaq -0x370(%rbp), %r14
leaq 0x6600(%rip), %rsi      # 0xc29e
movl $0x21, %edx
movq %r14, %rdi
callq 0x32f0
leaq 0x638e(%rip), %rsi      # 0xc040
movl $0x5, %edx
movq %r14, %rdi
callq 0x32f0
movl 0x38(%rbx), %esi
incl %esi
movq %r14, %rdi
callq 0x34b0
movq %rax, %r14
leaq 0x6376(%rip), %rsi      # 0xc04c
movl $0x5, %edx
movq %rax, %rdi
callq 0x32f0
leaq 0x65d6(%rip), %rsi      # 0xc2c0
movl $0x5, %edx
movq %r14, %rdi
callq 0x32f0
movl 0x40(%rbx), %eax
subl 0x3c(%rbx), %eax
movl %eax, 0x3c(%rbx)
leaq -0x368(%rbp), %rsi
leaq -0x560(%rbp), %rdi
callq 0x3440
leaq -0x3f0(%rbp), %r14
movq %r14, -0x10(%r14)
leaq 0x6327(%rip), %rsi      # 0xc04c
leaq 0x6325(%rip), %rdx      # 0xc051
leaq -0x400(%rbp), %rdi
callq 0x894a
leaq -0x560(%rbp), %rdi
leaq -0x400(%rbp), %rsi
movl $0x23, %edx
movl $0x12c, %ecx            # imm = 0x12C
movl $0x1, %r8d
callq 0xb52c
movq -0x400(%rbp), %rdi
cmpq %r14, %rdi
je 0x5d6c
callq 0x3260
leaq -0x550(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x5d81
callq 0x3260
incl 0x38(%rbx)
shll 0x40(%rbx)
leaq -0x658(%rbp), %rdi
callq 0x9e63
leaq -0x658(%rbp), %rsi
movq %rbx, %rdi
callq 0x70ae
leaq -0x5f8(%rbp), %rdi
callq 0x86f8
leaq -0x610(%rbp), %r14
movq %r14, %rdi
callq 0x86aa
movq -0x48(%r14), %rdi
leaq -0x648(%rbp), %rax
cmpq %rax, %rdi
je 0x5dd2
callq 0x3260
movq 0x91d7(%rip), %rsi      # 0xefb0
leaq -0x380(%rbp), %rdi
callq 0x31d0
leaq -0x300(%rbp), %rdi
callq 0x30c0
leaq -0x370(%rbp), %rax
movq %rax, -0x10(%rax)
movq $0x0, -0x8(%rax)
movb $0x0, (%rax)
leaq -0xc8(%rbp), %r13
xorl %r15d, %r15d
leaq -0xe8(%rbp), %r14
callq 0x3090
movl %eax, %r12d
callq 0x90f3
movl %eax, %ecx
movl %r12d, %eax
cltd
idivl %ecx
movq %r14, %rdi
movl %edx, %esi
callq 0x944f
leaq -0x380(%rbp), %rdi
movq %r14, %rsi
callq 0x3330
movups (%r13), %xmm0
movups 0x10(%r13), %xmm1
leaq -0x370(%rbp), %rax
movups %xmm1, 0x20(%rax)
movups %xmm0, 0x10(%rax)
movq -0xe8(%rbp), %rdi
leaq -0xd8(%rbp), %rax
cmpq %rax, %rdi
je 0x5e77
callq 0x3260
movl 0x38(%rbx), %eax
cmpl -0x348(%rbp), %eax
movzbl %r15b, %ecx
movl $0x1, %r15d
cmovgl %ecx, %r15d
cmpl -0x34c(%rbp), %eax
cmovll %ecx, %r15d
testb $0x1, %r15b
je 0x5e18
leaq 0x60(%rbx), %rdi
leaq -0x380(%rbp), %rsi
callq 0x7e86
leaq -0xf8(%rbp), %r15
movq %r15, -0x10(%r15)
leaq 0x6402(%rip), %rsi      # 0xc2c6
leaq 0x6405(%rip), %rdx      # 0xc2d0
leaq -0x108(%rbp), %rdi
callq 0x894a
leaq -0xd8(%rbp), %r13
leaq 0x615b(%rip), %rsi      # 0xc040
leaq -0x108(%rbp), %rdi
callq 0x3520
leaq -0x78(%rbp), %rsi
movq %rsi, -0x10(%rsi)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x5f18
movq %rdx, -0x88(%rbp)
movq (%rcx), %rdx
movq %rdx, -0x78(%rbp)
jmp 0x5f1e
movups (%rcx), %xmm0
movups %xmm0, (%rsi)
movq 0x8(%rax), %rdx
leaq -0x88(%rbp), %rdi
movq %rdx, 0x8(%rdi)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq -0x380(%rbp), %rsi
movq -0x378(%rbp), %rdx
callq 0x30b0
leaq -0x38(%rbp), %rsi
movq %rsi, -0x10(%rsi)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x5f76
movq %rsi, %r12
movq %rdx, -0x48(%rbp)
movq (%rcx), %rdx
movq %rdx, -0x38(%rbp)
jmp 0x5f7f
movups (%rcx), %xmm0
movq %rsi, %r12
movups %xmm0, (%rsi)
movq 0x8(%rax), %rdx
leaq -0x48(%rbp), %rdi
movq %rdx, 0x8(%rdi)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0x60ab(%rip), %rsi      # 0xc04c
callq 0x3520
movq %r13, -0xe8(%rbp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x5fcf
movq %rdx, -0xe8(%rbp)
movq (%rcx), %rdx
movq %rdx, -0xd8(%rbp)
jmp 0x5fd7
movups (%rcx), %xmm0
movups %xmm0, (%r13)
movq 0x8(%rax), %rdx
movq %rdx, -0xe0(%rbp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq -0x58(%rbp), %r14
movq %r14, -0x10(%r14)
leaq 0x62d9(%rip), %rsi      # 0xc2d9
leaq 0x62d3(%rip), %rdx      # 0xc2da
leaq -0x68(%rbp), %rdi
callq 0x894a
movq -0xe8(%rbp), %rcx
movq -0xe0(%rbp), %r8
movq -0x60(%rbp), %rdx
leaq (%rdx,%r8), %rax
movl $0xf, %esi
cmpq %r13, %rcx
je 0x6037
movq -0xd8(%rbp), %rsi
cmpq %rsi, %rax
jbe 0x6050
movl $0xf, %esi
cmpq %r14, -0x68(%rbp)
je 0x604b
movq -0x58(%rbp), %rsi
cmpq %rsi, %rax
jbe 0x6062
movq -0x68(%rbp), %rsi
leaq -0xe8(%rbp), %rdi
callq 0x30b0
jmp 0x606f
leaq -0x68(%rbp), %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x32e0
leaq -0x160(%rbp), %rdx
movq %rdx, -0x10(%rdx)
movq (%rax), %rsi
leaq 0x10(%rax), %rcx
cmpq %rcx, %rsi
je 0x6099
movq %rsi, -0x170(%rbp)
movq (%rcx), %rdx
movq %rdx, -0x160(%rbp)
jmp 0x609f
movups (%rcx), %xmm0
movups %xmm0, (%rdx)
movq %rax, %rdx
addq $0x8, %rdx
movq 0x8(%rax), %rsi
movq %rsi, -0x168(%rbp)
movq %rcx, (%rax)
movq $0x0, (%rdx)
movb $0x0, (%rcx)
leaq -0x3d0(%rbp), %r13
movq %r13, -0x10(%r13)
leaq 0x5f7c(%rip), %rsi      # 0xc04c
leaq 0x5f7a(%rip), %rdx      # 0xc051
leaq -0x3e0(%rbp), %rdi
callq 0x894a
leaq -0x170(%rbp), %rdi
leaq -0x3e0(%rbp), %rsi
movl $0x23, %edx
movl $0x12c, %ecx            # imm = 0x12C
movl $0x1, %r8d
callq 0xb52c
movq -0x3e0(%rbp), %rdi
cmpq %r13, %rdi
je 0x6117
callq 0x3260
leaq -0x160(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
leaq -0xd8(%rbp), %r13
je 0x6133
callq 0x3260
movq -0x68(%rbp), %rdi
cmpq %r14, %rdi
je 0x6141
callq 0x3260
movq -0xe8(%rbp), %rdi
cmpq %r13, %rdi
je 0x6152
callq 0x3260
movq -0x48(%rbp), %rdi
cmpq %r12, %rdi
je 0x6160
callq 0x3260
movq -0x88(%rbp), %rdi
leaq -0x78(%rbp), %rax
cmpq %rax, %rdi
je 0x6175
callq 0x3260
movq -0x108(%rbp), %rdi
cmpq %r15, %rdi
je 0x6186
callq 0x3260
movq %rbx, %rdi
callq 0x6e80
movq -0x380(%rbp), %rdi
leaq -0x370(%rbp), %rax
cmpq %rax, %rdi
je 0x61a6
callq 0x3260
xorl %eax, %eax
cmpl $0x0, 0x34(%rbx)
jle 0x61df
addq $0x638, %rsp            # imm = 0x638
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x626b(%rip), %rdi      # 0xc432
movq %r15, %rsi
xorl %eax, %eax
callq 0x3400
leaq 0x625a(%rip), %rdi      # 0xc432
xorl %eax, %eax
callq 0x3400
leaq -0x3b0(%rbp), %r14
movq %r14, -0x10(%r14)
leaq 0x60e0(%rip), %rsi      # 0xc2d1
leaq 0x60e2(%rip), %rdx      # 0xc2da
leaq -0x3c0(%rbp), %rdi
callq 0x894a
leaq -0x390(%rbp), %r15
movq %r15, -0x10(%r15)
leaq 0x5e36(%rip), %rsi      # 0xc04c
leaq 0x5e34(%rip), %rdx      # 0xc051
leaq -0x3a0(%rbp), %rdi
callq 0x894a
leaq -0x3c0(%rbp), %rdi
leaq -0x3a0(%rbp), %rsi
movl $0x23, %edx
movl $0x12c, %ecx            # imm = 0x12C
movl $0x1, %r8d
callq 0xb52c
leaq -0x3a0(%rbp), %rdi
callq 0x3120
leaq -0x3c0(%rbp), %rdi
callq 0x3120
movb $0x1, 0xd8(%rbx)
xorl %edi, %edi
callq 0x3320
movq %rax, %rbx
movq -0x520(%rbp), %rdi
cmpq %r15, %rdi
je 0x628b
callq 0x3260
jmp 0x628b
movq %rax, %rbx
movq -0x540(%rbp), %rdi
cmpq %r14, %rdi
jne 0x6685
jmp 0x66df
jmp 0x66dc
movq %rax, %rbx
movq -0x500(%rbp), %rdi
cmpq %r15, %rdi
je 0x62be
callq 0x3260
jmp 0x62be
movq %rax, %rbx
leaq -0x5d0(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x6503
callq 0x3260
jmp 0x6503
jmp 0x66dc
movq %rax, %rbx
movq -0x4c0(%rbp), %rdi
cmpq %r14, %rdi
je 0x62fa
callq 0x3260
jmp 0x62fa
movq %rax, %rbx
leaq -0x590(%rbp), %rax
jmp 0x635c
movq %rax, %rbx
leaq -0x658(%rbp), %rdi
callq 0x7dc6
jmp 0x66a4
movq %rax, %rbx
movq -0x400(%rbp), %rdi
cmpq %r14, %rdi
je 0x6330
callq 0x3260
jmp 0x6330
movq %rax, %rbx
leaq -0x550(%rbp), %rax
jmp 0x64e2
movq %rax, %rbx
movq -0x4a0(%rbp), %rdi
cmpq %r14, %rdi
je 0x6355
callq 0x3260
jmp 0x6355
movq %rax, %rbx
leaq -0x570(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
jne 0x637a
jmp 0x6693
movq %rax, %rbx
movq -0x48(%rbp), %rdi
cmpq %r12, %rdi
je 0x6693
callq 0x3260
jmp 0x6693
jmp 0x6690
movq %rax, %rbx
movq -0x3a0(%rbp), %rdi
cmpq %r15, %rdi
je 0x64ad
callq 0x3260
jmp 0x64ad
movq %rax, %rbx
movq -0x460(%rbp), %rdi
cmpq %r15, %rdi
je 0x63bf
callq 0x3260
jmp 0x63bf
movq %rax, %rbx
movq -0x480(%rbp), %rdi
cmpq %r14, %rdi
jne 0x669f
jmp 0x66a4
jmp 0x6527
movq %rax, %rbx
movq -0x3e0(%rbp), %rdi
cmpq %r13, %rdi
je 0x63f2
callq 0x3260
jmp 0x63f2
movq %rax, %rbx
leaq -0x160(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x640c
callq 0x3260
jmp 0x640c
movq %rax, %rbx
movq -0x68(%rbp), %rdi
cmpq %r14, %rdi
je 0x641f
callq 0x3260
jmp 0x641f
movq %rax, %rbx
movq -0xe8(%rbp), %rdi
leaq -0xd8(%rbp), %rax
cmpq %rax, %rdi
je 0x643c
callq 0x3260
jmp 0x643c
movq %rax, %rbx
movq -0x48(%rbp), %rdi
cmpq %r12, %rdi
je 0x644f
callq 0x3260
jmp 0x644f
movq %rax, %rbx
movq -0x88(%rbp), %rdi
leaq -0x78(%rbp), %rax
cmpq %rax, %rdi
je 0x6469
callq 0x3260
jmp 0x6469
movq %rax, %rbx
movq -0x108(%rbp), %rdi
cmpq %r15, %rdi
je 0x66c8
callq 0x3260
jmp 0x66c8
jmp 0x66c5
movq %rax, %rbx
movq -0x420(%rbp), %rdi
cmpq %r15, %rdi
je 0x64a1
callq 0x3260
jmp 0x64a1
movq %rax, %rbx
movq -0x440(%rbp), %rdi
jmp 0x64b4
movq %rax, %rbx
movq -0x3c0(%rbp), %rdi
cmpq %r14, %rdi
jne 0x66f2
jmp 0x66f7
movq %rax, %rbx
movq -0x4e0(%rbp), %rdi
cmpq %r14, %rdi
je 0x64db
callq 0x3260
jmp 0x64db
movq %rax, %rbx
leaq -0x5b0(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
jne 0x669f
jmp 0x66a4
jmp 0x66c5
jmp 0x6690
jmp 0x6527
movq %rax, %rbx
movq 0x8aa6(%rip), %rsi      # 0xefb0
leaq -0x380(%rbp), %rdi
callq 0x31d0
leaq -0x300(%rbp), %rdi
callq 0x30c0
jmp 0x66df
movq %rax, %rbx
jmp 0x66a4
jmp 0x658a
jmp 0x6592
jmp 0x66dc
movq %rax, %rbx
movq -0x1b8(%rbp), %rdi
leaq -0x1a8(%rbp), %rax
cmpq %rax, %rdi
je 0x6558
callq 0x3260
jmp 0x6558
movq %rax, %rbx
movq -0x130(%rbp), %rdi
leaq -0x120(%rbp), %rax
jmp 0x65cd
jmp 0x6570
jmp 0x6575
jmp 0x657a
jmp 0x6582
movq %rax, %rbx
jmp 0x65d7
movq %rax, %rbx
jmp 0x65ef
movq %rax, %rbx
jmp 0x6607
movq %rax, %rbx
jmp 0x6619
movq %rax, %rbx
jmp 0x662b
movq %rax, %rbx
jmp 0x6640
jmp 0x66dc
movq %rax, %rbx
movq -0x1d8(%rbp), %rdi
leaq -0x1c8(%rbp), %rax
cmpq %rax, %rdi
je 0x65bf
callq 0x3260
jmp 0x65bf
movq %rax, %rbx
movq -0x150(%rbp), %rdi
leaq -0x140(%rbp), %rax
cmpq %rax, %rdi
je 0x65d7
callq 0x3260
movq -0xa8(%rbp), %rdi
leaq -0x98(%rbp), %rax
cmpq %rax, %rdi
je 0x65ef
callq 0x3260
movq -0x380(%rbp), %rdi
leaq -0x370(%rbp), %rax
cmpq %rax, %rdi
je 0x6607
callq 0x3260
movq -0x48(%rbp), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0x6619
callq 0x3260
movq -0x68(%rbp), %rdi
leaq -0x58(%rbp), %rax
cmpq %rax, %rdi
je 0x662b
callq 0x3260
movq -0x88(%rbp), %rdi
leaq -0x78(%rbp), %rax
cmpq %rax, %rdi
je 0x6640
callq 0x3260
movq -0x108(%rbp), %rdi
leaq -0xf8(%rbp), %rax
jmp 0x6680
jmp 0x6690
movq %rax, %rbx
movq -0x1f8(%rbp), %rdi
leaq -0x1e8(%rbp), %rax
cmpq %rax, %rdi
je 0x6672
callq 0x3260
jmp 0x6672
movq %rax, %rbx
movq -0x198(%rbp), %rdi
leaq -0x188(%rbp), %rax
cmpq %rax, %rdi
je 0x66df
callq 0x3260
jmp 0x66df
jmp 0x66dc
jmp 0x66dc
movq %rax, %rbx
movq -0xe8(%rbp), %rdi
cmpq %r13, %rdi
je 0x66a4
callq 0x3260
movq 0x8905(%rip), %rsi      # 0xefb0
leaq -0x380(%rbp), %rdi
callq 0x31d0
leaq -0x300(%rbp), %rdi
callq 0x30c0
jmp 0x66f7
movq %rax, %rbx
movq -0x380(%rbp), %rdi
leaq -0x370(%rbp), %rax
jmp 0x66ed
jmp 0x66dc
jmp 0x66dc
movq %rax, %rbx
movq -0xe8(%rbp), %rdi
leaq -0xd8(%rbp), %rax
cmpq %rax, %rdi
je 0x66f7
callq 0x3260
movq %rbx, %rdi
callq 0x34d0
nop