// File: /workspace/github_cpp_makefile_star2_O3/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 0x5132
leaq -0xd8(%rbp), %rax
movq %rax, -0x10(%rax)
movq $0x0, -0x8(%rax)
movb $0x0, (%rax)
movq 0xa81f(%rip), %r14      # 0xefd0
movl $0x9, %edx
movq %r14, %rdi
leaq 0x797d(%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 0x488d
movl %r12d, %esi
movq %r14, %rdi
callq 0x3190
movq %rax, %r13
movl $0x2, %edx
movq %rax, %rdi
leaq 0x791e(%rip), %rsi      # 0xc147
callq 0x32f0
movq 0x48(%rbx), %rax
movq 0x50(%rbx), %rdx
subq %rax, %rdx
sarq $0x6, %rdx
cmpq %r15, %rdx
jbe 0x616a
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 0x47f2
incq %rsi
movq %r14, %rdi
callq 0x3190
leaq -0x78(%rbp), %r12
movq %rax, %r15
movl $0x9, %edx
movq %rax, %rdi
leaq 0x789c(%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 0x7846(%rip), %rsi      # 0xc12f
callq 0x32f0
movq 0xa6eb(%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), %rax
subq %r15, %rax
sarq $0x6, %rax
leaq 0x1(%rax), %rcx
movq %rcx, -0x178(%rbp)
cmpq %r13, %rcx
je 0x5b62
testq %r13, %r13
je 0x4a0d
cmpq %r13, %rax
jb 0x4a0d
leal -0x1(%r13), %eax
shlq $0x6, %rax
addq %rax, %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
subl -0xc0(%rbp), %eax
jge 0x4adb
leaq -0xf8(%rbp), %rax
movq %rax, -0x108(%rbp)
leaq -0x108(%rbp), %r15
movq %r15, %rdi
leaq 0x77ac(%rip), %rsi      # 0xc171
leaq 0x77bb(%rip), %rdx      # 0xc187
callq 0x890c
movq %r15, %rdi
leaq 0x7665(%rip), %rsi      # 0xc040
callq 0x3520
movq %r12, -0x88(%rbp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x4b51
movq %rdx, -0x88(%rbp)
movq (%rcx), %rdx
movq %rdx, -0x78(%rbp)
jmp 0x4b59
leaq -0x188(%rbp), %rax
movq %rax, -0x198(%rbp)
leaq -0x198(%rbp), %rdi
leaq 0x772b(%rip), %rsi      # 0xc154
leaq 0x7740(%rip), %rdx      # 0xc170
callq 0x890c
leaq -0x1e8(%rbp), %rax
movq %rax, -0x1f8(%rbp)
leaq -0x1f8(%rbp), %r15
movq %r15, %rdi
leaq 0x75f8(%rip), %rsi      # 0xc04c
leaq 0x75f6(%rip), %rdx      # 0xc051
callq 0x890c
leaq -0x198(%rbp), %rdi
movq %r15, %rsi
movl $0x23, %edx
movl $0x12c, %ecx            # imm = 0x12C
movl $0x1, %r8d
callq 0xb4c8
movq -0x1f8(%rbp), %rdi
leaq -0x1e8(%rbp), %rax
cmpq %rax, %rdi
je 0x4a97
callq 0x3260
movq -0x198(%rbp), %rdi
leaq -0x188(%rbp), %rax
cmpq %rax, %rdi
je 0x4aaf
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 0x47b1
movl 0x30(%rbx), %ecx
subl -0xbc(%rbp), %ecx
jge 0x5679
leaq -0xf8(%rbp), %rax
movq %rax, -0x108(%rbp)
leaq -0x108(%rbp), %r15
movq %r15, %rdi
leaq 0x7668(%rip), %rsi      # 0xc171
leaq 0x7677(%rip), %rdx      # 0xc187
callq 0x890c
movq %r15, %rdi
leaq 0x7521(%rip), %rsi      # 0xc040
callq 0x3520
movq %r12, -0x88(%rbp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x4be5
movq %rdx, -0x88(%rbp)
movq (%rcx), %rdx
movq %rdx, -0x78(%rbp)
jmp 0x4bed
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 0x7605(%rip), %rsi      # 0xc188
leaq 0x7603(%rip), %rdx      # 0xc18d
callq 0x890c
movq -0x88(%rbp), %rcx
movl $0xf, %edi
cmpq %r12, %rcx
je 0x4ba4
movq -0x78(%rbp), %rdi
movq -0x80(%rbp), %r8
movq -0x68(%rbp), %rsi
movq -0x60(%rbp), %rdx
leaq (%rdx,%r8), %rax
cmpq %rdi, %rax
jbe 0x4bd4
movl $0xf, %edi
leaq -0x58(%rbp), %r9
cmpq %r9, %rsi
je 0x4bcb
movq -0x58(%rbp), %rdi
cmpq %rdi, %rax
jbe 0x4c79
leaq -0x88(%rbp), %rdi
callq 0x30b0
jmp 0x4c86
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 0x758b(%rip), %rsi      # 0xc1a2
leaq 0x758c(%rip), %rdx      # 0xc1aa
callq 0x890c
movq -0x88(%rbp), %rcx
movl $0xf, %edi
cmpq %r12, %rcx
je 0x4c38
movq -0x78(%rbp), %rdi
movq -0x80(%rbp), %r8
movq -0x68(%rbp), %rsi
movq -0x60(%rbp), %rdx
leaq (%rdx,%r8), %rax
cmpq %rdi, %rax
jbe 0x4c68
movl $0xf, %edi
leaq -0x58(%rbp), %r9
cmpq %r9, %rsi
je 0x4c5f
movq -0x58(%rbp), %rdi
cmpq %rdi, %rax
jbe 0x4e90
leaq -0x88(%rbp), %rdi
callq 0x30b0
jmp 0x4e9d
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 0x4ca7
movq %rdx, -0x48(%rbp)
movq (%rcx), %rdx
movq %rdx, -0x38(%rbp)
jmp 0x4cad
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 0x7378(%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 0x4d09
movq %rdx, -0x380(%rbp)
movq (%rcx), %rdx
movq %rdx, -0x370(%rbp)
jmp 0x4d0f
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 0x7449(%rip), %rsi      # 0xc18e
leaq 0x7455(%rip), %rdx      # 0xc1a1
callq 0x890c
movq -0x380(%rbp), %rcx
movl $0xf, %edi
leaq -0x370(%rbp), %rax
cmpq %rax, %rcx
je 0x4d70
movq -0x370(%rbp), %rdi
movq -0x378(%rbp), %r8
movq -0xa8(%rbp), %rsi
movq -0xa0(%rbp), %rdx
leaq (%rdx,%r8), %rax
cmpq %rdi, %rax
jbe 0x4dab
movl $0xf, %edi
leaq -0x98(%rbp), %r9
cmpq %r9, %rsi
je 0x4da6
movq -0x98(%rbp), %rdi
cmpq %rdi, %rax
jbe 0x4db9
leaq -0x380(%rbp), %rdi
callq 0x30b0
jmp 0x4dc9
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 0x4df6
movq %rdx, -0x150(%rbp)
movq (%rcx), %rdx
movq %rdx, -0x140(%rbp)
jmp 0x4dfc
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 0x7212(%rip), %rsi      # 0xc04c
leaq 0x7210(%rip), %rdx      # 0xc051
callq 0x890c
leaq -0x150(%rbp), %rdi
movq %r15, %rsi
movl $0x23, %edx
movl $0x12c, %ecx            # imm = 0x12C
movl $0x1, %r8d
callq 0xb4c8
movq -0x1d8(%rbp), %rdi
leaq -0x1c8(%rbp), %rax
cmpq %rax, %rdi
je 0x4e7d
callq 0x3260
movq -0x150(%rbp), %rdi
leaq -0x140(%rbp), %rax
jmp 0x50a2
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 0x4ebe
movq %rdx, -0x48(%rbp)
movq (%rcx), %rdx
movq %rdx, -0x38(%rbp)
jmp 0x4ec4
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 0x7161(%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 0x4f20
movq %rdx, -0x380(%rbp)
movq (%rcx), %rdx
movq %rdx, -0x370(%rbp)
jmp 0x4f26
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 0x7232(%rip), %rsi      # 0xc18e
leaq 0x723e(%rip), %rdx      # 0xc1a1
callq 0x890c
movq -0x380(%rbp), %rcx
movl $0xf, %edi
leaq -0x370(%rbp), %rax
cmpq %rax, %rcx
je 0x4f87
movq -0x370(%rbp), %rdi
movq -0x378(%rbp), %r8
movq -0xa8(%rbp), %rsi
movq -0xa0(%rbp), %rdx
leaq (%rdx,%r8), %rax
cmpq %rdi, %rax
jbe 0x4fc2
movl $0xf, %edi
leaq -0x98(%rbp), %r9
cmpq %r9, %rsi
je 0x4fbd
movq -0x98(%rbp), %rdi
cmpq %rdi, %rax
jbe 0x4fd0
leaq -0x380(%rbp), %rdi
callq 0x30b0
jmp 0x4fe0
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 0x500d
movq %rdx, -0x130(%rbp)
movq (%rcx), %rdx
movq %rdx, -0x120(%rbp)
jmp 0x5013
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 0x6ffb(%rip), %rsi      # 0xc04c
leaq 0x6ff9(%rip), %rdx      # 0xc051
callq 0x890c
leaq -0x130(%rbp), %rdi
movq %r15, %rsi
movl $0x23, %edx
movl $0x12c, %ecx            # imm = 0x12C
movl $0x1, %r8d
callq 0xb4c8
movq -0x1b8(%rbp), %rdi
leaq -0x1a8(%rbp), %rax
cmpq %rax, %rdi
je 0x5094
callq 0x3260
movq -0x130(%rbp), %rdi
leaq -0x120(%rbp), %rax
cmpq %rax, %rdi
je 0x50ac
callq 0x3260
movq -0xa8(%rbp), %rdi
leaq -0x98(%rbp), %rax
cmpq %rax, %rdi
je 0x50c4
callq 0x3260
movq -0x380(%rbp), %rdi
leaq -0x370(%rbp), %rax
cmpq %rax, %rdi
je 0x50dc
callq 0x3260
movq -0x48(%rbp), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0x50ee
callq 0x3260
movq -0x68(%rbp), %rdi
leaq -0x58(%rbp), %rax
cmpq %rax, %rdi
je 0x5100
callq 0x3260
movq -0x88(%rbp), %rdi
cmpq %r12, %rdi
je 0x5111
callq 0x3260
movq -0x108(%rbp), %rdi
leaq -0xf8(%rbp), %rax
cmpq %rax, %rdi
je 0x47b1
callq 0x3260
jmp 0x47b1
leaq -0x380(%rbp), %r12
movq %r12, %rdi
callq 0x31b0
leaq -0x370(%rbp), %r14
leaq 0x6ef7(%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 0x6ed3(%rip), %rsi      # 0xc04c
movl $0x5, %edx
movq %rax, %rdi
callq 0x32f0
leaq 0x7087(%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 0x6e8d(%rip), %rsi      # 0xc04c
leaq 0x6e8b(%rip), %rdx      # 0xc051
leaq -0x4e0(%rbp), %rdi
callq 0x890c
leaq -0x5c0(%rbp), %rdi
leaq -0x4e0(%rbp), %rsi
movl $0x23, %edx
movl $0x12c, %ecx            # imm = 0x12C
movl $0x1, %r8d
callq 0xb4c8
movq -0x4e0(%rbp), %rdi
cmpq %r14, %rdi
je 0x5206
callq 0x3260
leaq -0x5b0(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x521b
callq 0x3260
callq 0x3090
testb $0x1, %al
jne 0x52db
leaq -0x470(%rbp), %r14
movq %r14, -0x10(%r14)
leaq 0x7045(%rip), %rsi      # 0xc27f
leaq 0x7053(%rip), %rdx      # 0xc294
leaq -0x480(%rbp), %rdi
callq 0x890c
leaq -0x450(%rbp), %r15
movq %r15, -0x10(%r15)
leaq 0x6ded(%rip), %rsi      # 0xc04c
leaq 0x6deb(%rip), %rdx      # 0xc051
leaq -0x460(%rbp), %rdi
callq 0x890c
leaq -0x480(%rbp), %rdi
leaq -0x460(%rbp), %rsi
movl $0x23, %edx
movl $0x12c, %ecx            # imm = 0x12C
movl $0x1, %r8d
callq 0xb4c8
movq -0x460(%rbp), %rdi
cmpq %r15, %rdi
je 0x52a6
callq 0x3260
movq -0x480(%rbp), %rdi
cmpq %r14, %rdi
je 0x52b7
callq 0x3260
movq 0x9cf2(%rip), %rsi      # 0xefb0
leaq -0x380(%rbp), %rdi
callq 0x31d0
leaq -0x300(%rbp), %rdi
callq 0x30c0
jmp 0x5b8c
leaq -0xd8(%rbp), %r13
movq %r13, -0x10(%r13)
movq $0x0, -0x8(%r13)
movb $0x0, (%r13)
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 0xa8(%rbx), %ecx
subl -0xc0(%rbp), %eax
setge %dl
subl -0xbc(%rbp), %ecx
setge %sil
testb %sil, %dl
je 0x52fa
movl %eax, 0xa4(%rbx)
movl %ecx, 0xa8(%rbx)
movl -0xc4(%rbp), %r15d
xorl %eax, %eax
cmpb $0x0, 0xda(%rbx)
je 0x5389
movl 0x28(%rbx), %eax
addl -0xc8(%rbp), %r15d
addl 0x98(%rbx), %r15d
addl 0x24(%rbx), %eax
subl %eax, %r15d
testl %r15d, %r15d
jle 0x598f
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), %rax
movq %rax, -0x10(%rax)
leaq 0x6eb3(%rip), %rdx      # 0xc294
leaq -0x48(%rbp), %rdi
movq %rdx, %rsi
callq 0x890c
leaq -0x48(%rbp), %rsi
leaq -0x368(%rbp), %rdi
callq 0x33e0
movq -0x48(%rbp), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0x540f
callq 0x3260
movq -0x380(%rbp), %rax
addq -0x18(%rax), %r12
movq %r12, %rdi
xorl %esi, %esi
callq 0x34a0
cmpl $0x4, %r14d
jg 0x5442
leaq 0x6e1e(%rip), %rsi      # 0xc24f
movl $0x15, %edx
leaq -0x370(%rbp), %rdi
callq 0x32f0
leaq 0x6bfd(%rip), %rsi      # 0xc046
movl $0x5, %edx
leaq -0x370(%rbp), %rdi
callq 0x32f0
movq 0x78(%rbx), %rsi
movq 0x80(%rbx), %rdx
leaq -0x370(%rbp), %rdi
callq 0x32f0
movq %rax, %r12
leaq 0x6bd1(%rip), %rsi      # 0xc04c
movl $0x5, %edx
movq %rax, %rdi
callq 0x32f0
leaq 0x6dd6(%rip), %rsi      # 0xc265
movl $0xb, %edx
movq %r12, %rdi
callq 0x32f0
leaq 0x6c7c(%rip), %rsi      # 0xc11f
movl $0x5, %edx
movq %r12, %rdi
callq 0x32f0
movq %r12, %rdi
movl %r15d, %esi
callq 0x34b0
movq %rax, %r12
leaq 0x6b87(%rip), %rsi      # 0xc04c
movl $0x5, %edx
movq %rax, %rdi
callq 0x32f0
leaq 0x6d5d(%rip), %rsi      # 0xc236
movl $0x6, %edx
movq %r12, %rdi
callq 0x32f0
leaq 0x6b53(%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 0x6b32(%rip), %rsi      # 0xc04c
movl $0x5, %edx
movq %rax, %rdi
callq 0x32f0
leaq 0x6dab(%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 0x6d04(%rip), %rsi      # 0xc271
movl $0xd, %edx
movq %rax, %rdi
callq 0x32f0
leaq 0x6b9e(%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 0x6aa6(%rip), %rsi      # 0xc04c
movl $0x5, %edx
movq %rax, %rdi
callq 0x32f0
leaq 0x6c55(%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 0x6a38(%rip), %rsi      # 0xc04c
leaq 0x6a36(%rip), %rdx      # 0xc051
leaq -0x4a0(%rbp), %rdi
callq 0x890c
leaq -0x580(%rbp), %rdi
leaq -0x4a0(%rbp), %rsi
movl $0x23, %edx
movl $0x12c, %ecx            # imm = 0x12C
movl $0x1, %r8d
callq 0xb4c8
movq -0x4a0(%rbp), %rdi
cmpq %r14, %rdi
je 0x565b
callq 0x3260
leaq -0x570(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x5670
callq 0x3260
subl %r15d, 0x34(%rbx)
jmp 0x5abe
movl %eax, 0x2c(%rbx)
movl %ecx, 0x30(%rbx)
movl -0xc4(%rbp), %r14d
addl -0xc8(%rbp), %r14d
addl 0x20(%rbx), %r14d
subl 0x9c(%rbx), %r14d
testl %r14d, %r14d
jle 0x5ad3
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 0x5722
leaq -0x370(%rbp), %r15
leaq 0x6af9(%rip), %rsi      # 0xc1e6
movl $0x7, %edx
movq %r15, %rdi
callq 0x32f0
leaq 0x6aed(%rip), %rsi      # 0xc1ee
movl $0x5, %edx
movq %r15, %rdi
callq 0x32f0
leaq 0x6b41(%rip), %rsi      # 0xc256
movl $0xe, %edx
movq %r15, %rdi
callq 0x32f0
leaq -0x370(%rbp), %r15
leaq 0x6ac4(%rip), %rsi      # 0xc1f4
movl $0x9, %edx
movq %r15, %rdi
callq 0x32f0
leaq 0x69db(%rip), %rsi      # 0xc11f
movl $0x5, %edx
movq %r15, %rdi
callq 0x32f0
movq %r15, %rdi
movl %r14d, %esi
callq 0x34b0
movq %rax, %r15
leaq 0x68e6(%rip), %rsi      # 0xc04c
movl $0x5, %edx
movq %rax, %rdi
callq 0x32f0
leaq 0x6a84(%rip), %rsi      # 0xc1fe
movl $0x4, %edx
movq %r15, %rdi
callq 0x32f0
leaq 0x68b8(%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 0x6894(%rip), %rsi      # 0xc04c
movl $0x5, %edx
movq %rax, %rdi
callq 0x32f0
leaq 0x6a6a(%rip), %rsi      # 0xc236
movl $0x6, %edx
movq %r15, %rdi
callq 0x32f0
leaq 0x6860(%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 0x683f(%rip), %rsi      # 0xc04c
movl $0x5, %edx
movq %rax, %rdi
callq 0x32f0
leaq 0x6ab8(%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 0x69a4(%rip), %rsi      # 0xc203
movl $0xb, %edx
movq %rax, %rdi
callq 0x32f0
leaq 0x68ac(%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 0x67b1(%rip), %rsi      # 0xc04c
movl $0x5, %edx
movq %rax, %rdi
callq 0x32f0
leaq 0x6960(%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 0x6744(%rip), %rsi      # 0xc04c
leaq 0x6742(%rip), %rdx      # 0xc051
leaq -0x500(%rbp), %rdi
callq 0x890c
leaq -0x5e0(%rbp), %rdi
leaq -0x500(%rbp), %rsi
movl $0x23, %edx
movl $0x12c, %ecx            # imm = 0x12C
movl $0x1, %r8d
callq 0xb4c8
movq -0x500(%rbp), %rdi
cmpq %r15, %rdi
je 0x594f
callq 0x3260
leaq -0x5d0(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x5964
callq 0x3260
subl %r14d, 0xac(%rbx)
movq 0x963e(%rip), %rsi      # 0xefb0
leaq -0x380(%rbp), %rdi
callq 0x31d0
leaq -0x300(%rbp), %rdi
callq 0x30c0
jmp 0x5b62
leaq 0x66b0(%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 0x6685(%rip), %rsi      # 0xc04c
movl $0x5, %edx
movq %rax, %rdi
callq 0x32f0
leaq 0x6849(%rip), %rsi      # 0xc224
movl $0x18, %edx
movq %r15, %rdi
callq 0x32f0
leaq 0x6651(%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 0x6630(%rip), %rsi      # 0xc04c
movl $0x5, %edx
movq %rax, %rdi
callq 0x32f0
leaq 0x680d(%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 0x65ea(%rip), %rsi      # 0xc04c
leaq 0x65e8(%rip), %rdx      # 0xc051
leaq -0x4c0(%rbp), %rdi
callq 0x890c
leaq -0x5a0(%rbp), %rdi
leaq -0x4c0(%rbp), %rsi
movl $0x23, %edx
movl $0x12c, %ecx            # imm = 0x12C
movl $0x1, %r8d
callq 0xb4c8
movq -0x4c0(%rbp), %rdi
cmpq %r14, %rdi
je 0x5aa9
callq 0x3260
leaq -0x590(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x5abe
callq 0x3260
movq -0xe8(%rbp), %rdi
cmpq %r13, %rdi
jne 0x52b2
jmp 0x52b7
leaq -0x530(%rbp), %r14
movq %r14, -0x10(%r14)
leaq 0x66c6(%rip), %rsi      # 0xc1ab
leaq 0x66f9(%rip), %rdx      # 0xc1e5
leaq -0x540(%rbp), %rdi
callq 0x890c
leaq -0x510(%rbp), %r15
movq %r15, -0x10(%r15)
leaq 0x6542(%rip), %rsi      # 0xc04c
leaq 0x6540(%rip), %rdx      # 0xc051
leaq -0x520(%rbp), %rdi
callq 0x890c
leaq -0x540(%rbp), %rdi
leaq -0x520(%rbp), %rsi
movl $0x23, %edx
movl $0x12c, %ecx            # imm = 0x12C
movl $0x1, %r8d
callq 0xb4c8
movq -0x520(%rbp), %rdi
cmpq %r15, %rdi
je 0x5b51
callq 0x3260
movq -0x540(%rbp), %rdi
cmpq %r14, %rdi
je 0x5b62
callq 0x3260
movq -0xe8(%rbp), %rdi
leaq -0xd8(%rbp), %rax
cmpq %rax, %rdi
je 0x5b7a
callq 0x3260
movl $0x1, %eax
cmpq %r13, -0x178(%rbp)
je 0x6158
cmpl $0x0, 0xac(%rbx)
jg 0x6150
leaq -0x430(%rbp), %r14
movq %r14, -0x10(%r14)
leaq 0x66ea(%rip), %rsi      # 0xc295
leaq 0x66eb(%rip), %rdx      # 0xc29d
leaq -0x440(%rbp), %rdi
callq 0x890c
leaq -0x410(%rbp), %r15
movq %r15, -0x10(%r15)
leaq 0x647c(%rip), %rsi      # 0xc04c
leaq 0x647a(%rip), %rdx      # 0xc051
leaq -0x420(%rbp), %rdi
callq 0x890c
leaq -0x440(%rbp), %rdi
leaq -0x420(%rbp), %rsi
movl $0x23, %edx
movl $0x12c, %ecx            # imm = 0x12C
movl $0x1, %r8d
callq 0xb4c8
movq -0x420(%rbp), %rdi
cmpq %r15, %rdi
je 0x5c17
callq 0x3260
movq -0x440(%rbp), %rdi
cmpq %r14, %rdi
je 0x5c28
callq 0x3260
movb $0x1, 0xd8(%rbx)
movl 0xb0(%rbx), %eax
addl 0x3c(%rbx), %eax
cmpl 0x40(%rbx), %eax
jge 0x5c45
movl %eax, 0x3c(%rbx)
jmp 0x5db2
leaq -0x380(%rbp), %rdi
callq 0x31b0
leaq -0x370(%rbp), %r14
leaq 0x663f(%rip), %rsi      # 0xc29e
movl $0x21, %edx
movq %r14, %rdi
callq 0x32f0
leaq 0x63cd(%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 0x63b5(%rip), %rsi      # 0xc04c
movl $0x5, %edx
movq %rax, %rdi
callq 0x32f0
leaq 0x6615(%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 0x6366(%rip), %rsi      # 0xc04c
leaq 0x6364(%rip), %rdx      # 0xc051
leaq -0x400(%rbp), %rdi
callq 0x890c
leaq -0x560(%rbp), %rdi
leaq -0x400(%rbp), %rsi
movl $0x23, %edx
movl $0x12c, %ecx            # imm = 0x12C
movl $0x1, %r8d
callq 0xb4c8
movq -0x400(%rbp), %rdi
cmpq %r14, %rdi
je 0x5d2d
callq 0x3260
leaq -0x550(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x5d42
callq 0x3260
incl 0x38(%rbx)
shll 0x40(%rbx)
leaq -0x658(%rbp), %rdi
callq 0x9e13
leaq -0x658(%rbp), %rsi
movq %rbx, %rdi
callq 0x7026
leaq -0x5f8(%rbp), %rdi
callq 0x86a2
leaq -0x610(%rbp), %r14
movq %r14, %rdi
callq 0x864a
movq -0x48(%r14), %rdi
leaq -0x648(%rbp), %rax
cmpq %rax, %rdi
je 0x5d93
callq 0x3260
movq 0x9216(%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
leaq -0xe8(%rbp), %r14
leaq -0x380(%rbp), %r15
callq 0x3090
movl %eax, %r12d
callq 0x90a3
movl %eax, %ecx
movl %r12d, %eax
cltd
idivl %ecx
movq %r14, %rdi
movl %edx, %esi
callq 0x93ff
movq %r15, %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 0x5e38
callq 0x3260
movl 0x38(%rbx), %eax
cmpl -0x34c(%rbp), %eax
jl 0x5ddd
cmpl -0x348(%rbp), %eax
jg 0x5ddd
leaq 0x60(%rbx), %rdi
leaq -0x380(%rbp), %rsi
callq 0x7dfa
leaq -0xf8(%rbp), %r15
movq %r15, -0x10(%r15)
leaq 0x6459(%rip), %rsi      # 0xc2c6
leaq 0x645c(%rip), %rdx      # 0xc2d0
leaq -0x108(%rbp), %rdi
callq 0x890c
leaq 0x61b9(%rip), %rsi      # 0xc040
leaq -0x108(%rbp), %rdi
callq 0x3520
leaq -0x78(%rbp), %r12
movq %r12, -0x10(%r12)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x5ebb
movq %rdx, -0x88(%rbp)
movq (%rcx), %rdx
movq %rdx, -0x78(%rbp)
jmp 0x5ec3
movups (%rcx), %xmm0
movups %xmm0, (%r12)
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 0x5f18
movq %rdx, -0x48(%rbp)
movq (%rcx), %rdx
movq %rdx, -0x38(%rbp)
jmp 0x5f1e
movups (%rcx), %xmm0
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 0x610c(%rip), %rsi      # 0xc04c
callq 0x3520
leaq -0xd8(%rbp), %rsi
movq %rsi, -0xe8(%rbp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x5f75
movq %rdx, -0xe8(%rbp)
movq (%rcx), %rdx
movq %rdx, -0xd8(%rbp)
jmp 0x5f7b
movups (%rcx), %xmm0
movups %xmm0, (%rsi)
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 0x6335(%rip), %rsi      # 0xc2d9
leaq 0x632f(%rip), %rdx      # 0xc2da
leaq -0x68(%rbp), %rdi
callq 0x890c
movq -0xe8(%rbp), %rcx
movq -0xe0(%rbp), %r8
movq -0x60(%rbp), %rdx
leaq (%rdx,%r8), %rax
movl $0xf, %edi
leaq -0xd8(%rbp), %rsi
cmpq %rsi, %rcx
je 0x5fe2
movq -0xd8(%rbp), %rdi
movq -0x68(%rbp), %rsi
cmpq %rdi, %rax
jbe 0x5ffe
movl $0xf, %edi
cmpq %r14, %rsi
je 0x5ff9
movq -0x58(%rbp), %rdi
cmpq %rdi, %rax
jbe 0x600c
leaq -0xe8(%rbp), %rdi
callq 0x30b0
jmp 0x6019
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 0x6043
movq %rsi, -0x170(%rbp)
movq (%rcx), %rdx
movq %rdx, -0x160(%rbp)
jmp 0x6049
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 0x5fd2(%rip), %rsi      # 0xc04c
leaq 0x5fd0(%rip), %rdx      # 0xc051
leaq -0x3e0(%rbp), %rdi
callq 0x890c
leaq -0x170(%rbp), %rdi
leaq -0x3e0(%rbp), %rsi
movl $0x23, %edx
movl $0x12c, %ecx            # imm = 0x12C
movl $0x1, %r8d
callq 0xb4c8
movq -0x3e0(%rbp), %rdi
cmpq %r13, %rdi
je 0x60c1
callq 0x3260
leaq -0x160(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x60d6
callq 0x3260
movq -0x68(%rbp), %rdi
cmpq %r14, %rdi
je 0x60e4
callq 0x3260
movq -0xe8(%rbp), %rdi
leaq -0xd8(%rbp), %rax
cmpq %rax, %rdi
leaq -0x38(%rbp), %r14
je 0x6100
callq 0x3260
movq -0x48(%rbp), %rdi
cmpq %r14, %rdi
je 0x610e
callq 0x3260
movq -0x88(%rbp), %rdi
cmpq %r12, %rdi
je 0x611f
callq 0x3260
movq -0x108(%rbp), %rdi
cmpq %r15, %rdi
je 0x6130
callq 0x3260
movq %rbx, %rdi
callq 0x6df8
movq -0x380(%rbp), %rdi
leaq -0x370(%rbp), %rax
cmpq %rax, %rdi
je 0x6150
callq 0x3260
xorl %eax, %eax
cmpl $0x0, 0x34(%rbx)
jle 0x617b
addq $0x638, %rsp            # imm = 0x638
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x62c1(%rip), %rdi      # 0xc432
movq %r15, %rsi
xorl %eax, %eax
callq 0x3400
leaq -0x3b0(%rbp), %r14
movq %r14, -0x10(%r14)
leaq 0x6144(%rip), %rsi      # 0xc2d1
leaq 0x6146(%rip), %rdx      # 0xc2da
leaq -0x3c0(%rbp), %rdi
callq 0x890c
leaq -0x390(%rbp), %r15
movq %r15, -0x10(%r15)
leaq 0x5e9a(%rip), %rsi      # 0xc04c
leaq 0x5e98(%rip), %rdx      # 0xc051
leaq -0x3a0(%rbp), %rdi
callq 0x890c
leaq -0x3c0(%rbp), %rdi
leaq -0x3a0(%rbp), %rsi
movl $0x23, %edx
movl $0x12c, %ecx            # imm = 0x12C
movl $0x1, %r8d
callq 0xb4c8
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 0x6227
callq 0x3260
jmp 0x6227
movq %rax, %rbx
movq -0x540(%rbp), %rdi
cmpq %r14, %rdi
jne 0x661d
jmp 0x6675
jmp 0x6672
movq %rax, %rbx
movq -0x500(%rbp), %rdi
cmpq %r15, %rdi
je 0x625a
callq 0x3260
jmp 0x625a
movq %rax, %rbx
leaq -0x5d0(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x649b
callq 0x3260
jmp 0x649b
jmp 0x6672
movq %rax, %rbx
movq -0x4c0(%rbp), %rdi
cmpq %r14, %rdi
je 0x6296
callq 0x3260
jmp 0x6296
movq %rax, %rbx
leaq -0x590(%rbp), %rax
jmp 0x62f8
movq %rax, %rbx
leaq -0x658(%rbp), %rdi
callq 0x7d3a
jmp 0x663a
movq %rax, %rbx
movq -0x400(%rbp), %rdi
cmpq %r14, %rdi
je 0x62cc
callq 0x3260
jmp 0x62cc
movq %rax, %rbx
leaq -0x550(%rbp), %rax
jmp 0x647a
movq %rax, %rbx
movq -0x4a0(%rbp), %rdi
cmpq %r14, %rdi
je 0x62f1
callq 0x3260
jmp 0x62f1
movq %rax, %rbx
leaq -0x570(%rbp), %rax
movq -0x10(%rax), %rdi
jmp 0x6309
movq %rax, %rbx
movq -0x48(%rbp), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0x6629
callq 0x3260
jmp 0x6629
jmp 0x6626
movq %rax, %rbx
movq -0x3a0(%rbp), %rdi
cmpq %r15, %rdi
je 0x6445
callq 0x3260
jmp 0x6445
movq %rax, %rbx
movq -0x460(%rbp), %rdi
cmpq %r15, %rdi
je 0x6357
callq 0x3260
jmp 0x6357
movq %rax, %rbx
movq -0x480(%rbp), %rdi
cmpq %r14, %rdi
jne 0x6635
jmp 0x663a
jmp 0x64bf
movq %rax, %rbx
movq -0x3e0(%rbp), %rdi
cmpq %r13, %rdi
je 0x638a
callq 0x3260
jmp 0x638a
movq %rax, %rbx
leaq -0x160(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x63a4
callq 0x3260
jmp 0x63a4
movq %rax, %rbx
movq -0x68(%rbp), %rdi
cmpq %r14, %rdi
je 0x63b7
callq 0x3260
jmp 0x63b7
movq %rax, %rbx
movq -0xe8(%rbp), %rdi
leaq -0xd8(%rbp), %rax
cmpq %rax, %rdi
je 0x63d4
callq 0x3260
jmp 0x63d4
movq %rax, %rbx
movq -0x48(%rbp), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0x63eb
callq 0x3260
jmp 0x63eb
movq %rax, %rbx
movq -0x88(%rbp), %rdi
cmpq %r12, %rdi
je 0x6401
callq 0x3260
jmp 0x6401
movq %rax, %rbx
movq -0x108(%rbp), %rdi
cmpq %r15, %rdi
je 0x665e
callq 0x3260
jmp 0x665e
jmp 0x665b
movq %rax, %rbx
movq -0x420(%rbp), %rdi
cmpq %r15, %rdi
je 0x6439
callq 0x3260
jmp 0x6439
movq %rax, %rbx
movq -0x440(%rbp), %rdi
jmp 0x644c
movq %rax, %rbx
movq -0x3c0(%rbp), %rdi
cmpq %r14, %rdi
jne 0x6688
jmp 0x668d
movq %rax, %rbx
movq -0x4e0(%rbp), %rdi
cmpq %r14, %rdi
je 0x6473
callq 0x3260
jmp 0x6473
movq %rax, %rbx
leaq -0x5b0(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
jne 0x6635
jmp 0x663a
jmp 0x665b
jmp 0x6626
jmp 0x64bf
movq %rax, %rbx
movq 0x8b0e(%rip), %rsi      # 0xefb0
leaq -0x380(%rbp), %rdi
callq 0x31d0
leaq -0x300(%rbp), %rdi
callq 0x30c0
jmp 0x6675
movq %rax, %rbx
jmp 0x663a
jmp 0x6522
jmp 0x652a
jmp 0x6672
movq %rax, %rbx
movq -0x1b8(%rbp), %rdi
leaq -0x1a8(%rbp), %rax
cmpq %rax, %rdi
je 0x64f0
callq 0x3260
jmp 0x64f0
movq %rax, %rbx
movq -0x130(%rbp), %rdi
leaq -0x120(%rbp), %rax
jmp 0x6565
jmp 0x6508
jmp 0x650d
jmp 0x6512
jmp 0x651a
movq %rax, %rbx
jmp 0x656f
movq %rax, %rbx
jmp 0x6587
movq %rax, %rbx
jmp 0x659f
movq %rax, %rbx
jmp 0x65b1
movq %rax, %rbx
jmp 0x65c3
movq %rax, %rbx
jmp 0x65d8
jmp 0x6672
movq %rax, %rbx
movq -0x1d8(%rbp), %rdi
leaq -0x1c8(%rbp), %rax
cmpq %rax, %rdi
je 0x6557
callq 0x3260
jmp 0x6557
movq %rax, %rbx
movq -0x150(%rbp), %rdi
leaq -0x140(%rbp), %rax
cmpq %rax, %rdi
je 0x656f
callq 0x3260
movq -0xa8(%rbp), %rdi
leaq -0x98(%rbp), %rax
cmpq %rax, %rdi
je 0x6587
callq 0x3260
movq -0x380(%rbp), %rdi
leaq -0x370(%rbp), %rax
cmpq %rax, %rdi
je 0x659f
callq 0x3260
movq -0x48(%rbp), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0x65b1
callq 0x3260
movq -0x68(%rbp), %rdi
leaq -0x58(%rbp), %rax
cmpq %rax, %rdi
je 0x65c3
callq 0x3260
movq -0x88(%rbp), %rdi
leaq -0x78(%rbp), %rax
cmpq %rax, %rdi
je 0x65d8
callq 0x3260
movq -0x108(%rbp), %rdi
leaq -0xf8(%rbp), %rax
jmp 0x6618
jmp 0x6626
movq %rax, %rbx
movq -0x1f8(%rbp), %rdi
leaq -0x1e8(%rbp), %rax
cmpq %rax, %rdi
je 0x660a
callq 0x3260
jmp 0x660a
movq %rax, %rbx
movq -0x198(%rbp), %rdi
leaq -0x188(%rbp), %rax
cmpq %rax, %rdi
je 0x6675
callq 0x3260
jmp 0x6675
jmp 0x6672
movq %rax, %rbx
movq -0xe8(%rbp), %rdi
cmpq %r13, %rdi
je 0x663a
callq 0x3260
movq 0x896f(%rip), %rsi      # 0xefb0
leaq -0x380(%rbp), %rdi
callq 0x31d0
leaq -0x300(%rbp), %rdi
callq 0x30c0
jmp 0x668d
movq %rax, %rbx
movq -0x380(%rbp), %rdi
leaq -0x370(%rbp), %rax
jmp 0x6683
jmp 0x6672
jmp 0x6672
movq %rax, %rbx
movq -0xe8(%rbp), %rdi
leaq -0xd8(%rbp), %rax
cmpq %rax, %rdi
je 0x668d
callq 0x3260
movq %rbx, %rdi
callq 0x34d0
nop