// File: malcolmyeh[P]CC3K/buff.cc
// Function: Buff::dealDamage[abi:cxx11](Character*)
std::string Buff::dealDamage(Character *opponent)
{
    double amount;
    double lifesteal;
    std::string combatMsg;
    std::string defender = opponent->getRace();
    int attack = this->getAtk();
    int defense = opponent->getDef();

    amount = ceil((100.0 / (100.0 + defense)) * attack);

    if (this->getRace() == "Elf")
    {
        if (this->getHP() < 35)
        {
            if (rand() % 2 == 0)
            {
                this->getPlayer()->heal(15);
                combatMsg += "Elven magic restored 15 HP (HP: " + std::to_string(this->getHP()) + "). ";
            }
        }
        amount = ceil((100.0 / (100.0 + defense)) * attack);

        if (rand() % 10 == 0)
        {
            opponent->getStunned();
            opponent->takeDamage((int)amount);
            combatMsg += "You cast Shockwave dealing " + std::to_string((int)amount) + " damage to " + defender + " (HP: " + std::to_string(opponent->getHP()) + ") and stunning them. ";
        }
        else
        {
            opponent->takeDamage((int)amount);
            combatMsg += "You deal " + std::to_string((int)amount) + " damage to " + defender + " (HP: " + std::to_string(opponent->getHP()) + "). ";
        }
    }
    else if (this->getRace() == "Orc")
    {
        int chance = rand() % 8;
        if (chance == 0)
        {
            //BESERK
            amount *= 1.5;
            lifesteal = amount * 0.25;
            this->getPlayer()->heal((int)lifesteal);
            opponent->takeDamage((int)amount);
            combatMsg = "BESERK! You deal " + std::to_string((int)amount) + " damage to " + defender + " (HP: " + std::to_string(opponent->getHP()) + "). You lifesteal for " + std::to_string((int)lifesteal) + " HP (HP: " + std::to_string(this->getHP()) + "). ";
        }
        else if (chance == 1 || chance == 2)
        {
            //lifesteal
            lifesteal = amount * 0.25;
            this->getPlayer()->heal((int)lifesteal);
            opponent->takeDamage((int)amount);
            combatMsg = "You deal " + std::to_string((int)amount) + " damage to " + defender + " (HP: " + std::to_string(opponent->getHP()) + "). You lifesteal for " + std::to_string((int)lifesteal) + " HP (HP: " + std::to_string(this->getHP()) + "). ";
        }
        else if (chance == 3 || chance == 4)
        {
            //critical hit
            amount *= 1.5;
            opponent->takeDamage((int)amount);
            combatMsg = "You deal " + std::to_string((int)amount) + " damage to " + defender + " (HP: " + std::to_string(opponent->getHP()) + "). ";
        }
        else
        {
            opponent->takeDamage((int)amount);
            combatMsg = "You deal " + std::to_string((int)amount) + " damage to " + defender + " (HP: " + std::to_string(opponent->getHP()) + "). ";
        }
    }
    else if (this->getRace() == "Dwarf")
    {
        int chance = rand() % 40;

        if (chance == 0 || chance == 1)
        {
            //longsword
            this->getPlayer()->increaseAtk(1);
            combatMsg += "You forged a Longsword. Atk increased by 1 (Atk: " + std::to_string(this->getAtk()) + "). ";
        }
        else if (chance == 2)
        {
            //broadsword
            this->getPlayer()->increaseAtk(2);
            combatMsg += "You forged a Broadsword. Atk increased by 2 (Atk: " + std::to_string(this->getAtk()) + "). ";
        }
        else if (chance == 3 || chance == 4)
        {
            //light shield
            this->getPlayer()->increaseDef(1);
            combatMsg += "You forged a Light Shield. Def increased by 1 (Def: " + std::to_string(this->getDef()) + "). ";
        }
        else if (chance == 5)
        {
            //heavy shield
            this->getPlayer()->increaseDef(2);
            combatMsg += "You forged a Heavy Shield. Def increased by 2 (Def: " + std::to_string(this->getDef()) + "). ";
        }
        amount = ceil((100.0 / (100.0 + defense)) * attack);
        opponent->takeDamage((int)amount);
        combatMsg += "You deal " + std::to_string((int)amount) + " damage to " + defender + " (HP: " + std::to_string(opponent->getHP()) + "). ";
    }
    else
    {
        opponent->takeDamage((int)amount);
        combatMsg = "You deal " + std::to_string((int)amount) + " damage to " + defender + " (HP: " + std::to_string(opponent->getHP()) + "). ";
    }
    if (opponent->getHP() == 0)
    {
        combatMsg += defender + " has been slain. You have earned " + std::to_string(opponent->getGold()) + " gold. ";
        this->getPlayer()->updateGold(opponent->getGold());
    }
    return combatMsg;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xd90, %rsp            # imm = 0xD90
movq %rdi, -0xcd0(%rbp)
movq %rdi, %rax
movq %rax, -0xcc8(%rbp)
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0xcc0(%rbp)
movb $0x0, -0x29(%rbp)
callq 0x4280
movq -0x18(%rbp), %rsi
movq (%rsi), %rax
movq 0x28(%rax), %rax
leaq -0x50(%rbp), %rdi
callq *%rax
jmp 0x1b25f
movq -0xcc0(%rbp), %rdi
movq (%rdi), %rax
movq 0x8(%rax), %rax
callq *%rax
movl %eax, -0xcd4(%rbp)
jmp 0x1b277
movl -0xcd4(%rbp), %eax
movl %eax, -0x60(%rbp)
movq -0x18(%rbp), %rdi
movq (%rdi), %rax
movq 0x10(%rax), %rax
callq *%rax
movl %eax, -0xcd8(%rbp)
jmp 0x1b295
movl -0xcd8(%rbp), %eax
movl %eax, -0x64(%rbp)
cvtsi2sdl -0x64(%rbp), %xmm1
movsd 0x35bd(%rip), %xmm0     # 0x1e868
addsd %xmm0, %xmm1
divsd %xmm1, %xmm0
cvtsi2sdl -0x60(%rbp), %xmm1
mulsd %xmm1, %xmm0
callq 0x4050
movq -0xcc0(%rbp), %rsi
movsd %xmm0, -0x20(%rbp)
movq (%rsi), %rax
movq 0x28(%rax), %rax
leaq -0x88(%rbp), %rdi
callq *%rax
jmp 0x1b2df
leaq 0x32d4(%rip), %rsi      # 0x1e5ba
leaq -0x88(%rbp), %rdi
callq 0x5210
movb %al, -0xcd9(%rbp)
jmp 0x1b2fa
leaq -0x88(%rbp), %rdi
callq 0x4130
movb -0xcd9(%rbp), %al
testb $0x1, %al
jne 0x1b315
jmp 0x1b99e
movq -0xcc0(%rbp), %rdi
movq (%rdi), %rax
movq 0x18(%rax), %rax
callq *%rax
movl %eax, -0xce0(%rbp)
jmp 0x1b32d
movl -0xce0(%rbp), %eax
cmpl $0x23, %eax
jge 0x1b4b2
callq 0x4090
movl $0x2, %ecx
cltd
idivl %ecx
cmpl $0x0, %edx
jne 0x1b4b0
movq -0xcc0(%rbp), %rdi
movq (%rdi), %rax
movq 0x68(%rax), %rax
callq *%rax
movq %rax, -0xce8(%rbp)
jmp 0x1b36b
movq -0xce8(%rbp), %rdi
movl $0xf, %esi
callq 0x11c80
jmp 0x1b37e
movq -0xcc0(%rbp), %rdi
movq (%rdi), %rax
movq 0x18(%rax), %rax
callq *%rax
movl %eax, -0xcec(%rbp)
jmp 0x1b396
movl -0xcec(%rbp), %esi
leaq -0xe8(%rbp), %rdi
callq 0xdbe0
jmp 0x1b3aa
leaq 0x39b1(%rip), %rsi      # 0x1ed62
leaq -0xc8(%rbp), %rdi
leaq -0xe8(%rbp), %rdx
callq 0xdb90
jmp 0x1b3c6
leaq 0x3740(%rip), %rdx      # 0x1eb0d
leaq -0xa8(%rbp), %rdi
leaq -0xc8(%rbp), %rsi
callq 0xdb40
jmp 0x1b3e2
movq -0xcd0(%rbp), %rdi
leaq -0xa8(%rbp), %rsi
callq 0x4240
jmp 0x1b3f7
leaq -0xa8(%rbp), %rdi
callq 0x4130
leaq -0xc8(%rbp), %rdi
callq 0x4130
leaq -0xe8(%rbp), %rdi
callq 0x4130
jmp 0x1b4b0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x1d2be
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x1d297
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
leaq -0x88(%rbp), %rdi
callq 0x4130
jmp 0x1d297
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x1b49f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x1b493
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
leaq -0xa8(%rbp), %rdi
callq 0x4130
leaq -0xc8(%rbp), %rdi
callq 0x4130
leaq -0xe8(%rbp), %rdi
callq 0x4130
jmp 0x1d297
jmp 0x1b4b2
cvtsi2sdl -0x64(%rbp), %xmm0
movsd 0x33a9(%rip), %xmm1     # 0x1e868
addsd %xmm0, %xmm1
movsd 0x339d(%rip), %xmm0     # 0x1e868
divsd %xmm1, %xmm0
cvtsi2sdl -0x60(%rbp), %xmm1
mulsd %xmm1, %xmm0
callq 0x4050
movsd %xmm0, -0x20(%rbp)
callq 0x4090
movl $0xa, %ecx
cltd
idivl %ecx
cmpl $0x0, %edx
jne 0x1b74e
movq -0x18(%rbp), %rdi
callq 0x11690
jmp 0x1b503
movq -0x18(%rbp), %rdi
cvttsd2si -0x20(%rbp), %esi
movq (%rdi), %rax
movq 0x48(%rax), %rax
callq *%rax
jmp 0x1b517
cvttsd2si -0x20(%rbp), %esi
leaq -0x1c8(%rbp), %rdi
callq 0xdbe0
jmp 0x1b52a
leaq 0x3445(%rip), %rsi      # 0x1e976
leaq -0x1a8(%rbp), %rdi
leaq -0x1c8(%rbp), %rdx
callq 0xdb90
jmp 0x1b546
leaq 0x3323(%rip), %rdx      # 0x1e870
leaq -0x188(%rbp), %rdi
leaq -0x1a8(%rbp), %rsi
callq 0xdb40
jmp 0x1b562
leaq -0x168(%rbp), %rdi
leaq -0x188(%rbp), %rsi
leaq -0x50(%rbp), %rdx
callq 0x11e00
jmp 0x1b57b
leaq 0x3610(%rip), %rdx      # 0x1eb92
leaq -0x148(%rbp), %rdi
leaq -0x168(%rbp), %rsi
callq 0xdb40
jmp 0x1b597
movq -0x18(%rbp), %rdi
movq (%rdi), %rax
movq 0x18(%rax), %rax
callq *%rax
movl %eax, -0xcf0(%rbp)
jmp 0x1b5ac
movl -0xcf0(%rbp), %esi
leaq -0x1e8(%rbp), %rdi
callq 0xdbe0
jmp 0x1b5c0
leaq -0x128(%rbp), %rdi
leaq -0x148(%rbp), %rsi
leaq -0x1e8(%rbp), %rdx
callq 0x11d30
jmp 0x1b5dc
leaq 0x33af(%rip), %rdx      # 0x1e992
leaq -0x108(%rbp), %rdi
leaq -0x128(%rbp), %rsi
callq 0xdb40
jmp 0x1b5f8
movq -0xcd0(%rbp), %rdi
leaq -0x108(%rbp), %rsi
callq 0x4240
jmp 0x1b60d
leaq -0x108(%rbp), %rdi
callq 0x4130
leaq -0x128(%rbp), %rdi
callq 0x4130
leaq -0x1e8(%rbp), %rdi
callq 0x4130
leaq -0x148(%rbp), %rdi
callq 0x4130
leaq -0x168(%rbp), %rdi
callq 0x4130
leaq -0x188(%rbp), %rdi
callq 0x4130
leaq -0x1a8(%rbp), %rdi
callq 0x4130
leaq -0x1c8(%rbp), %rdi
callq 0x4130
jmp 0x1b999
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x1b73d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x1b731
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x1b725
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x1b719
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x1b70d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x1b701
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x1b6f5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
leaq -0x108(%rbp), %rdi
callq 0x4130
leaq -0x128(%rbp), %rdi
callq 0x4130
leaq -0x1e8(%rbp), %rdi
callq 0x4130
leaq -0x148(%rbp), %rdi
callq 0x4130
leaq -0x168(%rbp), %rdi
callq 0x4130
leaq -0x188(%rbp), %rdi
callq 0x4130
leaq -0x1a8(%rbp), %rdi
callq 0x4130
leaq -0x1c8(%rbp), %rdi
callq 0x4130
jmp 0x1d297
movq -0x18(%rbp), %rdi
cvttsd2si -0x20(%rbp), %esi
movq (%rdi), %rax
movq 0x48(%rax), %rax
callq *%rax
jmp 0x1b762
cvttsd2si -0x20(%rbp), %esi
leaq -0x2c8(%rbp), %rdi
callq 0xdbe0
jmp 0x1b775
leaq 0x31b0(%rip), %rsi      # 0x1e92c
leaq -0x2a8(%rbp), %rdi
leaq -0x2c8(%rbp), %rdx
callq 0xdb90
jmp 0x1b791
leaq 0x30d8(%rip), %rdx      # 0x1e870
leaq -0x288(%rbp), %rdi
leaq -0x2a8(%rbp), %rsi
callq 0xdb40
jmp 0x1b7ad
leaq -0x268(%rbp), %rdi
leaq -0x288(%rbp), %rsi
leaq -0x50(%rbp), %rdx
callq 0x11e00
jmp 0x1b7c6
leaq 0x33c5(%rip), %rdx      # 0x1eb92
leaq -0x248(%rbp), %rdi
leaq -0x268(%rbp), %rsi
callq 0xdb40
jmp 0x1b7e2
movq -0x18(%rbp), %rdi
movq (%rdi), %rax
movq 0x18(%rax), %rax
callq *%rax
movl %eax, -0xcf4(%rbp)
jmp 0x1b7f7
movl -0xcf4(%rbp), %esi
leaq -0x2e8(%rbp), %rdi
callq 0xdbe0
jmp 0x1b80b
leaq -0x228(%rbp), %rdi
leaq -0x248(%rbp), %rsi
leaq -0x2e8(%rbp), %rdx
callq 0x11d30
jmp 0x1b827
leaq 0x32df(%rip), %rdx      # 0x1eb0d
leaq -0x208(%rbp), %rdi
leaq -0x228(%rbp), %rsi
callq 0xdb40
jmp 0x1b843
movq -0xcd0(%rbp), %rdi
leaq -0x208(%rbp), %rsi
callq 0x4240
jmp 0x1b858
leaq -0x208(%rbp), %rdi
callq 0x4130
leaq -0x228(%rbp), %rdi
callq 0x4130
leaq -0x2e8(%rbp), %rdi
callq 0x4130
leaq -0x248(%rbp), %rdi
callq 0x4130
leaq -0x268(%rbp), %rdi
callq 0x4130
leaq -0x288(%rbp), %rdi
callq 0x4130
leaq -0x2a8(%rbp), %rdi
callq 0x4130
leaq -0x2c8(%rbp), %rdi
callq 0x4130
jmp 0x1b999
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x1b988
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x1b97c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x1b970
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x1b964
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x1b958
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x1b94c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x1b940
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
leaq -0x208(%rbp), %rdi
callq 0x4130
leaq -0x228(%rbp), %rdi
callq 0x4130
leaq -0x2e8(%rbp), %rdi
callq 0x4130
leaq -0x248(%rbp), %rdi
callq 0x4130
leaq -0x268(%rbp), %rdi
callq 0x4130
leaq -0x288(%rbp), %rdi
callq 0x4130
leaq -0x2a8(%rbp), %rdi
callq 0x4130
leaq -0x2c8(%rbp), %rdi
callq 0x4130
jmp 0x1d297
jmp 0x1d0f0
movq -0xcc0(%rbp), %rsi
movq (%rsi), %rax
movq 0x28(%rax), %rax
leaq -0x308(%rbp), %rdi
callq *%rax
jmp 0x1b9b7
leaq 0x2f62(%rip), %rsi      # 0x1e920
leaq -0x308(%rbp), %rdi
callq 0x5210
movb %al, -0xcf5(%rbp)
jmp 0x1b9d2
leaq -0x308(%rbp), %rdi
callq 0x4130
movb -0xcf5(%rbp), %al
testb $0x1, %al
jne 0x1b9ed
jmp 0x1c709
callq 0x4090
movl $0x8, %ecx
cltd
idivl %ecx
movl %edx, -0x30c(%rbp)
cmpl $0x0, -0x30c(%rbp)
jne 0x1be53
movq -0xcc0(%rbp), %rdi
movsd -0x20(%rbp), %xmm0
movsd 0x2eef(%rip), %xmm1     # 0x1e910
mulsd %xmm1, %xmm0
movsd %xmm0, -0x20(%rbp)
movsd -0x20(%rbp), %xmm0
movsd 0x2ee1(%rip), %xmm1     # 0x1e918
mulsd %xmm1, %xmm0
movsd %xmm0, -0x28(%rbp)
movq (%rdi), %rax
movq 0x68(%rax), %rax
callq *%rax
movq %rax, -0xd00(%rbp)
jmp 0x1ba52
movq -0xd00(%rbp), %rdi
cvttsd2si -0x28(%rbp), %esi
callq 0x11c80
jmp 0x1ba65
movq -0x18(%rbp), %rdi
cvttsd2si -0x20(%rbp), %esi
movq (%rdi), %rax
movq 0x48(%rax), %rax
callq *%rax
jmp 0x1ba79
cvttsd2si -0x20(%rbp), %esi
leaq -0x470(%rbp), %rdi
callq 0xdbe0
jmp 0x1ba8c
leaq 0x2e91(%rip), %rsi      # 0x1e924
leaq -0x450(%rbp), %rdi
leaq -0x470(%rbp), %rdx
callq 0xdb90
jmp 0x1baa8
leaq 0x2dc1(%rip), %rdx      # 0x1e870
leaq -0x430(%rbp), %rdi
leaq -0x450(%rbp), %rsi
callq 0xdb40
jmp 0x1bac4
leaq -0x410(%rbp), %rdi
leaq -0x430(%rbp), %rsi
leaq -0x50(%rbp), %rdx
callq 0x11e00
jmp 0x1badd
leaq 0x30ae(%rip), %rdx      # 0x1eb92
leaq -0x3f0(%rbp), %rdi
leaq -0x410(%rbp), %rsi
callq 0xdb40
jmp 0x1baf9
movq -0x18(%rbp), %rdi
movq (%rdi), %rax
movq 0x18(%rax), %rax
callq *%rax
movl %eax, -0xd04(%rbp)
jmp 0x1bb0e
movl -0xd04(%rbp), %esi
leaq -0x490(%rbp), %rdi
callq 0xdbe0
jmp 0x1bb22
leaq -0x3d0(%rbp), %rdi
leaq -0x3f0(%rbp), %rsi
leaq -0x490(%rbp), %rdx
callq 0x11d30
jmp 0x1bb3e
leaq 0x2df1(%rip), %rdx      # 0x1e936
leaq -0x3b0(%rbp), %rdi
leaq -0x3d0(%rbp), %rsi
callq 0xdb40
jmp 0x1bb5a
cvttsd2si -0x28(%rbp), %esi
leaq -0x4b0(%rbp), %rdi
callq 0xdbe0
jmp 0x1bb6d
leaq -0x390(%rbp), %rdi
leaq -0x3b0(%rbp), %rsi
leaq -0x4b0(%rbp), %rdx
callq 0x11d30
jmp 0x1bb89
leaq 0x29c8(%rip), %rdx      # 0x1e558
leaq -0x370(%rbp), %rdi
leaq -0x390(%rbp), %rsi
callq 0xdb40
jmp 0x1bba5
movq -0xcc0(%rbp), %rdi
movq (%rdi), %rax
movq 0x18(%rax), %rax
callq *%rax
movl %eax, -0xd08(%rbp)
jmp 0x1bbbd
movl -0xd08(%rbp), %esi
leaq -0x4d0(%rbp), %rdi
callq 0xdbe0
jmp 0x1bbd1
leaq -0x350(%rbp), %rdi
leaq -0x370(%rbp), %rsi
leaq -0x4d0(%rbp), %rdx
callq 0x11d30
jmp 0x1bbed
leaq 0x2f19(%rip), %rdx      # 0x1eb0d
leaq -0x330(%rbp), %rdi
leaq -0x350(%rbp), %rsi
callq 0xdb40
jmp 0x1bc09
movq -0xcd0(%rbp), %rdi
leaq -0x330(%rbp), %rsi
callq 0x4220
leaq -0x330(%rbp), %rdi
callq 0x4130
leaq -0x350(%rbp), %rdi
callq 0x4130
leaq -0x4d0(%rbp), %rdi
callq 0x4130
leaq -0x370(%rbp), %rdi
callq 0x4130
leaq -0x390(%rbp), %rdi
callq 0x4130
leaq -0x4b0(%rbp), %rdi
callq 0x4130
leaq -0x3b0(%rbp), %rdi
callq 0x4130
leaq -0x3d0(%rbp), %rdi
callq 0x4130
leaq -0x490(%rbp), %rdi
callq 0x4130
leaq -0x3f0(%rbp), %rdi
callq 0x4130
leaq -0x410(%rbp), %rdi
callq 0x4130
leaq -0x430(%rbp), %rdi
callq 0x4130
leaq -0x450(%rbp), %rdi
callq 0x4130
leaq -0x470(%rbp), %rdi
callq 0x4130
jmp 0x1c704
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
leaq -0x308(%rbp), %rdi
callq 0x4130
jmp 0x1d297
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x1be42
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x1be36
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x1be2a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x1be1e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x1be12
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x1be06
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x1bdfa
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x1bdee
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x1bde2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x1bdd6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x1bdca
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x1bdbe
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
leaq -0x350(%rbp), %rdi
callq 0x4130
leaq -0x4d0(%rbp), %rdi
callq 0x4130
leaq -0x370(%rbp), %rdi
callq 0x4130
leaq -0x390(%rbp), %rdi
callq 0x4130
leaq -0x4b0(%rbp), %rdi
callq 0x4130
leaq -0x3b0(%rbp), %rdi
callq 0x4130
leaq -0x3d0(%rbp), %rdi
callq 0x4130
leaq -0x490(%rbp), %rdi
callq 0x4130
leaq -0x3f0(%rbp), %rdi
callq 0x4130
leaq -0x410(%rbp), %rdi
callq 0x4130
leaq -0x430(%rbp), %rdi
callq 0x4130
leaq -0x450(%rbp), %rdi
callq 0x4130
leaq -0x470(%rbp), %rdi
callq 0x4130
jmp 0x1d297
cmpl $0x1, -0x30c(%rbp)
je 0x1be69
cmpl $0x2, -0x30c(%rbp)
jne 0x1c27c
movq -0xcc0(%rbp), %rdi
movsd -0x20(%rbp), %xmm0
movsd 0x2a9b(%rip), %xmm1     # 0x1e918
mulsd %xmm1, %xmm0
movsd %xmm0, -0x28(%rbp)
movq (%rdi), %rax
movq 0x68(%rax), %rax
callq *%rax
movq %rax, -0xd10(%rbp)
jmp 0x1be98
movq -0xd10(%rbp), %rdi
cvttsd2si -0x28(%rbp), %esi
callq 0x11c80
jmp 0x1beab
movq -0x18(%rbp), %rdi
cvttsd2si -0x20(%rbp), %esi
movq (%rdi), %rax
movq 0x48(%rax), %rax
callq *%rax
jmp 0x1bebf
cvttsd2si -0x20(%rbp), %esi
leaq -0x630(%rbp), %rdi
callq 0xdbe0
jmp 0x1bed2
leaq 0x2a53(%rip), %rsi      # 0x1e92c
leaq -0x610(%rbp), %rdi
leaq -0x630(%rbp), %rdx
callq 0xdb90
jmp 0x1beee
leaq 0x297b(%rip), %rdx      # 0x1e870
leaq -0x5f0(%rbp), %rdi
leaq -0x610(%rbp), %rsi
callq 0xdb40
jmp 0x1bf0a
leaq -0x5d0(%rbp), %rdi
leaq -0x5f0(%rbp), %rsi
leaq -0x50(%rbp), %rdx
callq 0x11e00
jmp 0x1bf23
leaq 0x2c68(%rip), %rdx      # 0x1eb92
leaq -0x5b0(%rbp), %rdi
leaq -0x5d0(%rbp), %rsi
callq 0xdb40
jmp 0x1bf3f
movq -0x18(%rbp), %rdi
movq (%rdi), %rax
movq 0x18(%rax), %rax
callq *%rax
movl %eax, -0xd14(%rbp)
jmp 0x1bf54
movl -0xd14(%rbp), %esi
leaq -0x650(%rbp), %rdi
callq 0xdbe0
jmp 0x1bf68
leaq -0x590(%rbp), %rdi
leaq -0x5b0(%rbp), %rsi
leaq -0x650(%rbp), %rdx
callq 0x11d30
jmp 0x1bf84
leaq 0x29ab(%rip), %rdx      # 0x1e936
leaq -0x570(%rbp), %rdi
leaq -0x590(%rbp), %rsi
callq 0xdb40
jmp 0x1bfa0
cvttsd2si -0x28(%rbp), %esi
leaq -0x670(%rbp), %rdi
callq 0xdbe0
jmp 0x1bfb3
leaq -0x550(%rbp), %rdi
leaq -0x570(%rbp), %rsi
leaq -0x670(%rbp), %rdx
callq 0x11d30
jmp 0x1bfcf
leaq 0x2582(%rip), %rdx      # 0x1e558
leaq -0x530(%rbp), %rdi
leaq -0x550(%rbp), %rsi
callq 0xdb40
jmp 0x1bfeb
movq -0xcc0(%rbp), %rdi
movq (%rdi), %rax
movq 0x18(%rax), %rax
callq *%rax
movl %eax, -0xd18(%rbp)
jmp 0x1c003
movl -0xd18(%rbp), %esi
leaq -0x690(%rbp), %rdi
callq 0xdbe0
jmp 0x1c017
leaq -0x510(%rbp), %rdi
leaq -0x530(%rbp), %rsi
leaq -0x690(%rbp), %rdx
callq 0x11d30
jmp 0x1c033
leaq 0x2ad3(%rip), %rdx      # 0x1eb0d
leaq -0x4f0(%rbp), %rdi
leaq -0x510(%rbp), %rsi
callq 0xdb40
jmp 0x1c04f
movq -0xcd0(%rbp), %rdi
leaq -0x4f0(%rbp), %rsi
callq 0x4220
leaq -0x4f0(%rbp), %rdi
callq 0x4130
leaq -0x510(%rbp), %rdi
callq 0x4130
leaq -0x690(%rbp), %rdi
callq 0x4130
leaq -0x530(%rbp), %rdi
callq 0x4130
leaq -0x550(%rbp), %rdi
callq 0x4130
leaq -0x670(%rbp), %rdi
callq 0x4130
leaq -0x570(%rbp), %rdi
callq 0x4130
leaq -0x590(%rbp), %rdi
callq 0x4130
leaq -0x650(%rbp), %rdi
callq 0x4130
leaq -0x5b0(%rbp), %rdi
callq 0x4130
leaq -0x5d0(%rbp), %rdi
callq 0x4130
leaq -0x5f0(%rbp), %rdi
callq 0x4130
leaq -0x610(%rbp), %rdi
callq 0x4130
leaq -0x630(%rbp), %rdi
callq 0x4130
jmp 0x1c702
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x1c26b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x1c25f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x1c253
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x1c247
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x1c23b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x1c22f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x1c223
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x1c217
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x1c20b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x1c1ff
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x1c1f3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x1c1e7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
leaq -0x510(%rbp), %rdi
callq 0x4130
leaq -0x690(%rbp), %rdi
callq 0x4130
leaq -0x530(%rbp), %rdi
callq 0x4130
leaq -0x550(%rbp), %rdi
callq 0x4130
leaq -0x670(%rbp), %rdi
callq 0x4130
leaq -0x570(%rbp), %rdi
callq 0x4130
leaq -0x590(%rbp), %rdi
callq 0x4130
leaq -0x650(%rbp), %rdi
callq 0x4130
leaq -0x5b0(%rbp), %rdi
callq 0x4130
leaq -0x5d0(%rbp), %rdi
callq 0x4130
leaq -0x5f0(%rbp), %rdi
callq 0x4130
leaq -0x610(%rbp), %rdi
callq 0x4130
leaq -0x630(%rbp), %rdi
callq 0x4130
jmp 0x1d297
cmpl $0x3, -0x30c(%rbp)
je 0x1c292
cmpl $0x4, -0x30c(%rbp)
jne 0x1c4d4
movsd -0x20(%rbp), %xmm0
movsd 0x2671(%rip), %xmm1     # 0x1e910
mulsd %xmm1, %xmm0
movsd %xmm0, -0x20(%rbp)
movq -0x18(%rbp), %rdi
cvttsd2si -0x20(%rbp), %esi
movq (%rdi), %rax
movq 0x48(%rax), %rax
callq *%rax
jmp 0x1c2bc
cvttsd2si -0x20(%rbp), %esi
leaq -0x770(%rbp), %rdi
callq 0xdbe0
jmp 0x1c2cf
leaq 0x2656(%rip), %rsi      # 0x1e92c
leaq -0x750(%rbp), %rdi
leaq -0x770(%rbp), %rdx
callq 0xdb90
jmp 0x1c2eb
leaq 0x257e(%rip), %rdx      # 0x1e870
leaq -0x730(%rbp), %rdi
leaq -0x750(%rbp), %rsi
callq 0xdb40
jmp 0x1c307
leaq -0x710(%rbp), %rdi
leaq -0x730(%rbp), %rsi
leaq -0x50(%rbp), %rdx
callq 0x11e00
jmp 0x1c320
leaq 0x286b(%rip), %rdx      # 0x1eb92
leaq -0x6f0(%rbp), %rdi
leaq -0x710(%rbp), %rsi
callq 0xdb40
jmp 0x1c33c
movq -0x18(%rbp), %rdi
movq (%rdi), %rax
movq 0x18(%rax), %rax
callq *%rax
movl %eax, -0xd1c(%rbp)
jmp 0x1c351
movl -0xd1c(%rbp), %esi
leaq -0x790(%rbp), %rdi
callq 0xdbe0
jmp 0x1c365
leaq -0x6d0(%rbp), %rdi
leaq -0x6f0(%rbp), %rsi
leaq -0x790(%rbp), %rdx
callq 0x11d30
jmp 0x1c381
leaq 0x2785(%rip), %rdx      # 0x1eb0d
leaq -0x6b0(%rbp), %rdi
leaq -0x6d0(%rbp), %rsi
callq 0xdb40
jmp 0x1c39d
movq -0xcd0(%rbp), %rdi
leaq -0x6b0(%rbp), %rsi
callq 0x4220
leaq -0x6b0(%rbp), %rdi
callq 0x4130
leaq -0x6d0(%rbp), %rdi
callq 0x4130
leaq -0x790(%rbp), %rdi
callq 0x4130
leaq -0x6f0(%rbp), %rdi
callq 0x4130
leaq -0x710(%rbp), %rdi
callq 0x4130
leaq -0x730(%rbp), %rdi
callq 0x4130
leaq -0x750(%rbp), %rdi
callq 0x4130
leaq -0x770(%rbp), %rdi
callq 0x4130
jmp 0x1c700
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x1c4c3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x1c4b7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x1c4ab
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x1c49f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x1c493
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x1c487
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
leaq -0x6d0(%rbp), %rdi
callq 0x4130
leaq -0x790(%rbp), %rdi
callq 0x4130
leaq -0x6f0(%rbp), %rdi
callq 0x4130
leaq -0x710(%rbp), %rdi
callq 0x4130
leaq -0x730(%rbp), %rdi
callq 0x4130
leaq -0x750(%rbp), %rdi
callq 0x4130
leaq -0x770(%rbp), %rdi
callq 0x4130
jmp 0x1d297
movq -0x18(%rbp), %rdi
cvttsd2si -0x20(%rbp), %esi
movq (%rdi), %rax
movq 0x48(%rax), %rax
callq *%rax
jmp 0x1c4e8
cvttsd2si -0x20(%rbp), %esi
leaq -0x870(%rbp), %rdi
callq 0xdbe0
jmp 0x1c4fb
leaq 0x242a(%rip), %rsi      # 0x1e92c
leaq -0x850(%rbp), %rdi
leaq -0x870(%rbp), %rdx
callq 0xdb90
jmp 0x1c517
leaq 0x2352(%rip), %rdx      # 0x1e870
leaq -0x830(%rbp), %rdi
leaq -0x850(%rbp), %rsi
callq 0xdb40
jmp 0x1c533
leaq -0x810(%rbp), %rdi
leaq -0x830(%rbp), %rsi
leaq -0x50(%rbp), %rdx
callq 0x11e00
jmp 0x1c54c
leaq 0x263f(%rip), %rdx      # 0x1eb92
leaq -0x7f0(%rbp), %rdi
leaq -0x810(%rbp), %rsi
callq 0xdb40
jmp 0x1c568
movq -0x18(%rbp), %rdi
movq (%rdi), %rax
movq 0x18(%rax), %rax
callq *%rax
movl %eax, -0xd20(%rbp)
jmp 0x1c57d
movl -0xd20(%rbp), %esi
leaq -0x890(%rbp), %rdi
callq 0xdbe0
jmp 0x1c591
leaq -0x7d0(%rbp), %rdi
leaq -0x7f0(%rbp), %rsi
leaq -0x890(%rbp), %rdx
callq 0x11d30
jmp 0x1c5ad
leaq 0x2559(%rip), %rdx      # 0x1eb0d
leaq -0x7b0(%rbp), %rdi
leaq -0x7d0(%rbp), %rsi
callq 0xdb40
jmp 0x1c5c9
movq -0xcd0(%rbp), %rdi
leaq -0x7b0(%rbp), %rsi
callq 0x4220
leaq -0x7b0(%rbp), %rdi
callq 0x4130
leaq -0x7d0(%rbp), %rdi
callq 0x4130
leaq -0x890(%rbp), %rdi
callq 0x4130
leaq -0x7f0(%rbp), %rdi
callq 0x4130
leaq -0x810(%rbp), %rdi
callq 0x4130
leaq -0x830(%rbp), %rdi
callq 0x4130
leaq -0x850(%rbp), %rdi
callq 0x4130
leaq -0x870(%rbp), %rdi
callq 0x4130
jmp 0x1c700
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x1c6ef
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x1c6e3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x1c6d7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x1c6cb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x1c6bf
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x1c6b3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
leaq -0x7d0(%rbp), %rdi
callq 0x4130
leaq -0x890(%rbp), %rdi
callq 0x4130
leaq -0x7f0(%rbp), %rdi
callq 0x4130
leaq -0x810(%rbp), %rdi
callq 0x4130
leaq -0x830(%rbp), %rdi
callq 0x4130
leaq -0x850(%rbp), %rdi
callq 0x4130
leaq -0x870(%rbp), %rdi
callq 0x4130
jmp 0x1d297
jmp 0x1c702
jmp 0x1c704
jmp 0x1d0ee
movq -0xcc0(%rbp), %rsi
movq (%rsi), %rax
movq 0x28(%rax), %rax
leaq -0x8b0(%rbp), %rdi
callq *%rax
jmp 0x1c722
leaq 0x2284(%rip), %rsi      # 0x1e9ad
leaq -0x8b0(%rbp), %rdi
callq 0x5210
movb %al, -0xd21(%rbp)
jmp 0x1c73d
leaq -0x8b0(%rbp), %rdi
callq 0x4130
movb -0xd21(%rbp), %al
testb $0x1, %al
jne 0x1c758
jmp 0x1cec0
callq 0x4090
movl $0x28, %ecx
cltd
idivl %ecx
movl %edx, -0x8b4(%rbp)
cmpl $0x0, -0x8b4(%rbp)
je 0x1c781
cmpl $0x1, -0x8b4(%rbp)
jne 0x1c8bd
movq -0xcc0(%rbp), %rdi
movq (%rdi), %rax
movq 0x68(%rax), %rax
callq *%rax
movq %rax, -0xd30(%rbp)
jmp 0x1c79a
movq -0xd30(%rbp), %rdi
movl $0x1, %esi
callq 0x11cd0
jmp 0x1c7ad
movq -0xcc0(%rbp), %rdi
movq (%rdi), %rax
movq 0x8(%rax), %rax
callq *%rax
movl %eax, -0xd34(%rbp)
jmp 0x1c7c5
movl -0xd34(%rbp), %esi
leaq -0x918(%rbp), %rdi
callq 0xdbe0
jmp 0x1c7d9
leaq 0x21d3(%rip), %rsi      # 0x1e9b3
leaq -0x8f8(%rbp), %rdi
leaq -0x918(%rbp), %rdx
callq 0xdb90
jmp 0x1c7f5
leaq 0x2311(%rip), %rdx      # 0x1eb0d
leaq -0x8d8(%rbp), %rdi
leaq -0x8f8(%rbp), %rsi
callq 0xdb40
jmp 0x1c811
movq -0xcd0(%rbp), %rdi
leaq -0x8d8(%rbp), %rsi
callq 0x4240
jmp 0x1c826
leaq -0x8d8(%rbp), %rdi
callq 0x4130
leaq -0x8f8(%rbp), %rdi
callq 0x4130
leaq -0x918(%rbp), %rdi
callq 0x4130
jmp 0x1cc4d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
leaq -0x8b0(%rbp), %rdi
callq 0x4130
jmp 0x1d297
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x1c8ac
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x1c8a0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
leaq -0x8d8(%rbp), %rdi
callq 0x4130
leaq -0x8f8(%rbp), %rdi
callq 0x4130
leaq -0x918(%rbp), %rdi
callq 0x4130
jmp 0x1d297
cmpl $0x2, -0x8b4(%rbp)
jne 0x1c9e9
movq -0xcc0(%rbp), %rdi
movq (%rdi), %rax
movq 0x68(%rax), %rax
callq *%rax
movq %rax, -0xd40(%rbp)
jmp 0x1c8e3
movq -0xd40(%rbp), %rdi
movl $0x2, %esi
callq 0x11cd0
jmp 0x1c8f6
movq -0xcc0(%rbp), %rdi
movq (%rdi), %rax
movq 0x8(%rax), %rax
callq *%rax
movl %eax, -0xd44(%rbp)
jmp 0x1c90e
movl -0xd44(%rbp), %esi
leaq -0x978(%rbp), %rdi
callq 0xdbe0
jmp 0x1c922
leaq 0x20bc(%rip), %rsi      # 0x1e9e5
leaq -0x958(%rbp), %rdi
leaq -0x978(%rbp), %rdx
callq 0xdb90
jmp 0x1c93e
leaq 0x21c8(%rip), %rdx      # 0x1eb0d
leaq -0x938(%rbp), %rdi
leaq -0x958(%rbp), %rsi
callq 0xdb40
jmp 0x1c95a
movq -0xcd0(%rbp), %rdi
leaq -0x938(%rbp), %rsi
callq 0x4240
jmp 0x1c96f
leaq -0x938(%rbp), %rdi
callq 0x4130
leaq -0x958(%rbp), %rdi
callq 0x4130
leaq -0x978(%rbp), %rdi
callq 0x4130
jmp 0x1cc4b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x1c9d8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x1c9cc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
leaq -0x938(%rbp), %rdi
callq 0x4130
leaq -0x958(%rbp), %rdi
callq 0x4130
leaq -0x978(%rbp), %rdi
callq 0x4130
jmp 0x1d297
cmpl $0x3, -0x8b4(%rbp)
je 0x1c9ff
cmpl $0x4, -0x8b4(%rbp)
jne 0x1cb1e
movq -0xcc0(%rbp), %rdi
movq (%rdi), %rax
movq 0x68(%rax), %rax
callq *%rax
movq %rax, -0xd50(%rbp)
jmp 0x1ca18
movq -0xd50(%rbp), %rdi
movl $0x1, %esi
callq 0x11cf0
jmp 0x1ca2b
movq -0xcc0(%rbp), %rdi
movq (%rdi), %rax
movq 0x10(%rax), %rax
callq *%rax
movl %eax, -0xd54(%rbp)
jmp 0x1ca43
movl -0xd54(%rbp), %esi
leaq -0x9d8(%rbp), %rdi
callq 0xdbe0
jmp 0x1ca57
leaq 0x1fba(%rip), %rsi      # 0x1ea18
leaq -0x9b8(%rbp), %rdi
leaq -0x9d8(%rbp), %rdx
callq 0xdb90
jmp 0x1ca73
leaq 0x2093(%rip), %rdx      # 0x1eb0d
leaq -0x998(%rbp), %rdi
leaq -0x9b8(%rbp), %rsi
callq 0xdb40
jmp 0x1ca8f
movq -0xcd0(%rbp), %rdi
leaq -0x998(%rbp), %rsi
callq 0x4240
jmp 0x1caa4
leaq -0x998(%rbp), %rdi
callq 0x4130
leaq -0x9b8(%rbp), %rdi
callq 0x4130
leaq -0x9d8(%rbp), %rdi
callq 0x4130
jmp 0x1cc49
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x1cb0d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x1cb01
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
leaq -0x998(%rbp), %rdi
callq 0x4130
leaq -0x9b8(%rbp), %rdi
callq 0x4130
leaq -0x9d8(%rbp), %rdi
callq 0x4130
jmp 0x1d297
cmpl $0x5, -0x8b4(%rbp)
jne 0x1cc47
movq -0xcc0(%rbp), %rdi
movq (%rdi), %rax
movq 0x68(%rax), %rax
callq *%rax
movq %rax, -0xd60(%rbp)
jmp 0x1cb44
movq -0xd60(%rbp), %rdi
movl $0x2, %esi
callq 0x11cf0
jmp 0x1cb57
movq -0xcc0(%rbp), %rdi
movq (%rdi), %rax
movq 0x10(%rax), %rax
callq *%rax
movl %eax, -0xd64(%rbp)
jmp 0x1cb6f
movl -0xd64(%rbp), %esi
leaq -0xa38(%rbp), %rdi
callq 0xdbe0
jmp 0x1cb83
leaq 0x1ec3(%rip), %rsi      # 0x1ea4d
leaq -0xa18(%rbp), %rdi
leaq -0xa38(%rbp), %rdx
callq 0xdb90
jmp 0x1cb9f
leaq 0x1f67(%rip), %rdx      # 0x1eb0d
leaq -0x9f8(%rbp), %rdi
leaq -0xa18(%rbp), %rsi
callq 0xdb40
jmp 0x1cbbb
movq -0xcd0(%rbp), %rdi
leaq -0x9f8(%rbp), %rsi
callq 0x4240
jmp 0x1cbd0
leaq -0x9f8(%rbp), %rdi
callq 0x4130
leaq -0xa18(%rbp), %rdi
callq 0x4130
leaq -0xa38(%rbp), %rdi
callq 0x4130
jmp 0x1cc47
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x1cc36
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x1cc2a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
leaq -0x9f8(%rbp), %rdi
callq 0x4130
leaq -0xa18(%rbp), %rdi
callq 0x4130
leaq -0xa38(%rbp), %rdi
callq 0x4130
jmp 0x1d297
jmp 0x1cc49
jmp 0x1cc4b
jmp 0x1cc4d
cvtsi2sdl -0x64(%rbp), %xmm1
movsd 0x1c0e(%rip), %xmm0     # 0x1e868
addsd %xmm0, %xmm1
divsd %xmm1, %xmm0
cvtsi2sdl -0x60(%rbp), %xmm1
mulsd %xmm1, %xmm0
callq 0x4050
movsd %xmm0, -0x20(%rbp)
movq -0x18(%rbp), %rdi
cvttsd2si -0x20(%rbp), %esi
movq (%rdi), %rax
movq 0x48(%rax), %rax
callq *%rax
jmp 0x1cc89
cvttsd2si -0x20(%rbp), %esi
leaq -0xb18(%rbp), %rdi
callq 0xdbe0
jmp 0x1cc9c
leaq 0x1c89(%rip), %rsi      # 0x1e92c
leaq -0xaf8(%rbp), %rdi
leaq -0xb18(%rbp), %rdx
callq 0xdb90
jmp 0x1ccb8
leaq 0x1bb1(%rip), %rdx      # 0x1e870
leaq -0xad8(%rbp), %rdi
leaq -0xaf8(%rbp), %rsi
callq 0xdb40
jmp 0x1ccd4
leaq -0xab8(%rbp), %rdi
leaq -0xad8(%rbp), %rsi
leaq -0x50(%rbp), %rdx
callq 0x11e00
jmp 0x1cced
leaq 0x1e9e(%rip), %rdx      # 0x1eb92
leaq -0xa98(%rbp), %rdi
leaq -0xab8(%rbp), %rsi
callq 0xdb40
jmp 0x1cd09
movq -0x18(%rbp), %rdi
movq (%rdi), %rax
movq 0x18(%rax), %rax
callq *%rax
movl %eax, -0xd68(%rbp)
jmp 0x1cd1e
movl -0xd68(%rbp), %esi
leaq -0xb38(%rbp), %rdi
callq 0xdbe0
jmp 0x1cd32
leaq -0xa78(%rbp), %rdi
leaq -0xa98(%rbp), %rsi
leaq -0xb38(%rbp), %rdx
callq 0x11d30
jmp 0x1cd4e
leaq 0x1db8(%rip), %rdx      # 0x1eb0d
leaq -0xa58(%rbp), %rdi
leaq -0xa78(%rbp), %rsi
callq 0xdb40
jmp 0x1cd6a
movq -0xcd0(%rbp), %rdi
leaq -0xa58(%rbp), %rsi
callq 0x4240
jmp 0x1cd7f
leaq -0xa58(%rbp), %rdi
callq 0x4130
leaq -0xa78(%rbp), %rdi
callq 0x4130
leaq -0xb38(%rbp), %rdi
callq 0x4130
leaq -0xa98(%rbp), %rdi
callq 0x4130
leaq -0xab8(%rbp), %rdi
callq 0x4130
leaq -0xad8(%rbp), %rdi
callq 0x4130
leaq -0xaf8(%rbp), %rdi
callq 0x4130
leaq -0xb18(%rbp), %rdi
callq 0x4130
jmp 0x1d0ec
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x1ceaf
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x1cea3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x1ce97
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x1ce8b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x1ce7f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x1ce73
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x1ce67
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
leaq -0xa58(%rbp), %rdi
callq 0x4130
leaq -0xa78(%rbp), %rdi
callq 0x4130
leaq -0xb38(%rbp), %rdi
callq 0x4130
leaq -0xa98(%rbp), %rdi
callq 0x4130
leaq -0xab8(%rbp), %rdi
callq 0x4130
leaq -0xad8(%rbp), %rdi
callq 0x4130
leaq -0xaf8(%rbp), %rdi
callq 0x4130
leaq -0xb18(%rbp), %rdi
callq 0x4130
jmp 0x1d297
movq -0x18(%rbp), %rdi
cvttsd2si -0x20(%rbp), %esi
movq (%rdi), %rax
movq 0x48(%rax), %rax
callq *%rax
jmp 0x1ced4
cvttsd2si -0x20(%rbp), %esi
leaq -0xc18(%rbp), %rdi
callq 0xdbe0
jmp 0x1cee7
leaq 0x1a3e(%rip), %rsi      # 0x1e92c
leaq -0xbf8(%rbp), %rdi
leaq -0xc18(%rbp), %rdx
callq 0xdb90
jmp 0x1cf03
leaq 0x1966(%rip), %rdx      # 0x1e870
leaq -0xbd8(%rbp), %rdi
leaq -0xbf8(%rbp), %rsi
callq 0xdb40
jmp 0x1cf1f
leaq -0xbb8(%rbp), %rdi
leaq -0xbd8(%rbp), %rsi
leaq -0x50(%rbp), %rdx
callq 0x11e00
jmp 0x1cf38
leaq 0x1c53(%rip), %rdx      # 0x1eb92
leaq -0xb98(%rbp), %rdi
leaq -0xbb8(%rbp), %rsi
callq 0xdb40
jmp 0x1cf54
movq -0x18(%rbp), %rdi
movq (%rdi), %rax
movq 0x18(%rax), %rax
callq *%rax
movl %eax, -0xd6c(%rbp)
jmp 0x1cf69
movl -0xd6c(%rbp), %esi
leaq -0xc38(%rbp), %rdi
callq 0xdbe0
jmp 0x1cf7d
leaq -0xb78(%rbp), %rdi
leaq -0xb98(%rbp), %rsi
leaq -0xc38(%rbp), %rdx
callq 0x11d30
jmp 0x1cf99
leaq 0x1b6d(%rip), %rdx      # 0x1eb0d
leaq -0xb58(%rbp), %rdi
leaq -0xb78(%rbp), %rsi
callq 0xdb40
jmp 0x1cfb5
movq -0xcd0(%rbp), %rdi
leaq -0xb58(%rbp), %rsi
callq 0x4220
leaq -0xb58(%rbp), %rdi
callq 0x4130
leaq -0xb78(%rbp), %rdi
callq 0x4130
leaq -0xc38(%rbp), %rdi
callq 0x4130
leaq -0xb98(%rbp), %rdi
callq 0x4130
leaq -0xbb8(%rbp), %rdi
callq 0x4130
leaq -0xbd8(%rbp), %rdi
callq 0x4130
leaq -0xbf8(%rbp), %rdi
callq 0x4130
leaq -0xc18(%rbp), %rdi
callq 0x4130
jmp 0x1d0ec
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x1d0db
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x1d0cf
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x1d0c3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x1d0b7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x1d0ab
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x1d09f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
leaq -0xb78(%rbp), %rdi
callq 0x4130
leaq -0xc38(%rbp), %rdi
callq 0x4130
leaq -0xb98(%rbp), %rdi
callq 0x4130
leaq -0xbb8(%rbp), %rdi
callq 0x4130
leaq -0xbd8(%rbp), %rdi
callq 0x4130
leaq -0xbf8(%rbp), %rdi
callq 0x4130
leaq -0xc18(%rbp), %rdi
callq 0x4130
jmp 0x1d297
jmp 0x1d0ee
jmp 0x1d0f0
movq -0x18(%rbp), %rdi
movq (%rdi), %rax
movq 0x18(%rax), %rax
callq *%rax
movl %eax, -0xd70(%rbp)
jmp 0x1d105
movl -0xd70(%rbp), %eax
cmpl $0x0, %eax
jne 0x1d282
leaq 0x1761(%rip), %rdx      # 0x1e87c
leaq -0xc98(%rbp), %rdi
leaq -0x50(%rbp), %rsi
callq 0xdac0
jmp 0x1d12d
movq -0x18(%rbp), %rdi
movq (%rdi), %rax
movq 0x20(%rax), %rax
callq *%rax
movl %eax, -0xd74(%rbp)
jmp 0x1d142
movl -0xd74(%rbp), %esi
leaq -0xcb8(%rbp), %rdi
callq 0xdbe0
jmp 0x1d156
leaq -0xc78(%rbp), %rdi
leaq -0xc98(%rbp), %rsi
leaq -0xcb8(%rbp), %rdx
callq 0x11d30
jmp 0x1d172
leaq 0x113d(%rip), %rdx      # 0x1e2b6
leaq -0xc58(%rbp), %rdi
leaq -0xc78(%rbp), %rsi
callq 0xdb40
jmp 0x1d18e
movq -0xcd0(%rbp), %rdi
leaq -0xc58(%rbp), %rsi
callq 0x4240
jmp 0x1d1a3
leaq -0xc58(%rbp), %rdi
callq 0x4130
leaq -0xc78(%rbp), %rdi
callq 0x4130
leaq -0xcb8(%rbp), %rdi
callq 0x4130
leaq -0xc98(%rbp), %rdi
callq 0x4130
movq -0xcc0(%rbp), %rdi
movq (%rdi), %rax
movq 0x68(%rax), %rax
callq *%rax
movq %rax, -0xd80(%rbp)
jmp 0x1d1ec
movq -0x18(%rbp), %rdi
movq (%rdi), %rax
movq 0x20(%rax), %rax
callq *%rax
movl %eax, -0xd84(%rbp)
jmp 0x1d201
movl -0xd84(%rbp), %esi
movq -0xd80(%rbp), %rdi
movq (%rdi), %rax
movq (%rax), %rax
callq *%rax
jmp 0x1d218
jmp 0x1d282
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x1d274
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x1d268
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x1d25c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
leaq -0xc58(%rbp), %rdi
callq 0x4130
leaq -0xc78(%rbp), %rdi
callq 0x4130
leaq -0xcb8(%rbp), %rdi
callq 0x4130
leaq -0xc98(%rbp), %rdi
callq 0x4130
jmp 0x1d297
movb $0x1, -0x29(%rbp)
leaq -0x50(%rbp), %rdi
callq 0x4130
testb $0x1, -0x29(%rbp)
jne 0x1d2ae
jmp 0x1d2a2
leaq -0x50(%rbp), %rdi
callq 0x4130
jmp 0x1d2be
movq -0xcd0(%rbp), %rdi
callq 0x4130
movq -0xcc8(%rbp), %rax
addq $0xd90, %rsp            # imm = 0xD90
popq %rbp
retq
movq -0xcd0(%rbp), %rdi
callq 0x4130
movq -0x58(%rbp), %rdi
callq 0x42f0
nopw %cs:(%rax,%rax)