// File: MichaelXanth[P]RPG_Game/Living/Heroes/Hero.cpp
// Function: Hero::DisplaySpells(Spell*&, unsigned int&, unsigned int&)
bool Hero::DisplaySpells(Spell*& chosenSpell , unsigned int& slotNum , unsigned int& type)
{
    int arrow = 0;
    int column;
    int lines;
    char selection;

    if(!iceSpellsArray.empty())
        column = 0;
    else if(!fireSpellsArray.empty())
        column = 1;
    else if(!lightingSpellsArray.empty())
        column = 2;

    if(iceSpellsArray.size() >= fireSpellsArray.size() && iceSpellsArray.size() >= lightingSpellsArray.size())
        lines = 5 * (iceSpellsArray.size() + 1) - 1;

    if(fireSpellsArray.size() >= iceSpellsArray.size() && fireSpellsArray.size() >= lightingSpellsArray.size())
        lines = 5 * (fireSpellsArray.size() + 1) - 1;

    if(lightingSpellsArray.size() >= iceSpellsArray.size() && lightingSpellsArray.size() >= fireSpellsArray.size())
        lines = 5 * (lightingSpellsArray.size() + 1) - 1;

    do{
        cout << "\033[1;33m+\033[0;34m==============================\033[1;33m+\033[0;34m==============================\033[1;33m+\033[0;34m==============================\033[1;33m+\033[0m" << endl;
        cout << "\033[34m|\033[0m          Ice Spells          \033[34m|\033[0m         Fire Spells          \033[34m|\033[0m       Lighting Spells        \033[34m|\033[0m" << endl;
        cout << "\033[1;33m+\033[0;34m------------------------------\033[1;33m+\033[0;34m------------------------------\033[1;33m+\033[0;34m------------------------------\033[1;33m+\033[0m";

        for(unsigned int i = 0; i < iceSpellsArray.size() || i < fireSpellsArray.size() || i < lightingSpellsArray.size(); i++)
        {
            if(!i)
                cout << endl;
            else
                cout << "\033[34m|                              |                              |                              |\033[0m" << endl;

            if(i < iceSpellsArray.size())
            {
                if(column == 0 && arrow == i)
                    cout << "\033[34m| \033[1;33m~> ";
                else
                    cout << "\033[34m|\033[0m    ";

                cout.width(26);
                cout << left << iceSpellsArray[i]->GetName() << "\033[0;34m|\033[0m" << endl;
                cout << "\033[34m|\033[0m    \u2022 Damage Range: ";
                cout.width(10);
                string str = to_string(iceSpellsArray[i]->GetMinDamage()) + "-" + to_string(iceSpellsArray[i]->GetMaxDamage());
                cout << left << str << "\033[34m|\033[0m" << endl;
                cout << "\033[34m|\033[0m    \u2022 Damage Reduction: ";
                cout.width(6);
                cout << left << iceSpellsArray[i]->GetDamageReduction() << "\033[34m|\033[0m" << endl;
                cout << "\033[34m|\033[0m    \u2022 Affected Rounds: ";
                cout.width(7);
                cout << left << iceSpellsArray[i]->GetRounds() << "\033[34m|\033[0m" << endl;
            }
            else
            {
                cout << "\033[34m|\033[30C|\033[0m" << endl;
                cout << "\033[34m|\033[30C|\033[0m" << endl;
                cout << "\033[34m|\033[30C|\033[0m" << endl;
                cout << "\033[34m|\033[30C|\033[0m" << endl;
            }

            cout << "\033[4A";

            if(i < fireSpellsArray.size())
            {
                if(column == 1 && arrow == i)
                    cout << "\033[32C \033[1;33m~> ";
                else
                    cout << "\033[32C    ";

                cout.width(26);
                cout << left << fireSpellsArray[i]->GetName() << "\033[0;34m|\033[0m" << endl;
                cout << "\033[32C    \u2022 Damage Range: ";
                cout.width(10);
                string str = to_string(fireSpellsArray[i]->GetMinDamage()) + "-" + to_string(fireSpellsArray[i]->GetMaxDamage());
                cout << left << str << "\033[34m|\033[0m" << endl;
                cout << "\033[32C    \u2022 Defence Reduction: ";
                cout.width(5);
                cout << left << fireSpellsArray[i]->GetDefenceReduction() << "\033[34m|\033[0m" << endl;
                cout << "\033[32C    \u2022 Affected Rounds: ";
                cout.width(7);
                cout << left << fireSpellsArray[i]->GetRounds() << "\033[34m|\033[0m" << endl;
            }
            else
            {
                cout << "\033[62C\033[34m|\033[0m" << endl;
                cout << "\033[62C\033[34m|\033[0m" << endl;
                cout << "\033[62C\033[34m|\033[0m" << endl;
                cout << "\033[62C\033[34m|\033[0m" << endl;
            }

            cout << "\033[4A";

            if(i < lightingSpellsArray.size())
            {
                if(column == 2 && arrow == i)
                    cout << "\033[63C \033[1;33m~> ";
                else
                    cout << "\033[63C    ";

                cout.width(26);
                cout << left << lightingSpellsArray[i]->GetName() << "\033[0;34m|\033[0m" << endl;
                cout << "\033[63C    \u2022 Damage Range: ";
                cout.width(10);
                string str = to_string(lightingSpellsArray[i]->GetMinDamage()) + "-" + to_string(lightingSpellsArray[i]->GetMaxDamage());
                cout << left << str << "\033[34m|\033[0m" << endl;
                cout << "\033[63C    \u2022 Avoidance Reduction: ";
                cout.width(3);
                cout << left << lightingSpellsArray[i]->GetAvoidanceReduction() << "\033[34m|\033[0m" << endl;
                cout << "\033[63C    \u2022 Affected Rounds: ";
                cout.width(7);
                cout << left << lightingSpellsArray[i]->GetRounds() << "\033[34m|\033[0m" << endl;
            }
            else
            {
                cout << "\033[93C\033[34m|\033[0m" << endl;
                cout << "\033[93C\033[34m|\033[0m" << endl;
                cout << "\033[93C\033[34m|\033[0m" << endl;
                cout << "\033[93C\033[34m|\033[0m" << endl;
            }
        }
        cout << "\033[1;33m+\033[0;34m==============================\033[1;33m+\033[0;34m==============================\033[1;33m+\033[0;34m==============================\033[1;33m+\033[0m" << endl;
        cout << "Press 'e' to cancel" << endl;

        selection = getch();

        if(selection == 'e')
        {
            cout << "\033[" << lines << "A";
            cout << "\033[J";

            //for(int i = 0; i < lines; i++)
            //    cout << "\033[1A\033[K";

            return false;
        }
        else if(selection == 'w' && arrow) //navigates the menu arrow
            arrow--;
        else if(selection == 'a' && column)
        {
            if(column == 2)
            {
                if(fireSpellsArray.size())
                {
                    column--;

                    if(arrow > fireSpellsArray.size() - 1)
                        arrow = fireSpellsArray.size() - 1;
                }
                else if(iceSpellsArray.size())
                {
                    column -= 2;

                    if(arrow > iceSpellsArray.size() - 1)
                        arrow = iceSpellsArray.size() - 1;
                }
            }
            else if(column == 1)
            {
                if(iceSpellsArray.size())
                {
                    column --;

                    if(arrow > iceSpellsArray.size() - 1)
                        arrow = iceSpellsArray.size() - 1;
                }
            }
        }
        else if(selection == 's')
        {
            if(column == 0 && arrow < iceSpellsArray.size() - 1) //navigates the menu arrow
                arrow++;
            else if(column == 1 && arrow < fireSpellsArray.size() - 1)
                arrow++;
            else if(column == 2 && arrow < lightingSpellsArray.size() - 1)
                arrow++;
        }
        else if(selection == 'd' && column < 2)
        {
            if(column == 0)
            {
                if(fireSpellsArray.size())
                {
                    column++;

                    if(arrow > fireSpellsArray.size() - 1)
                        arrow = fireSpellsArray.size() - 1;
                }
                else if(lightingSpellsArray.size())
                {
                    column += 2;

                    if(arrow > lightingSpellsArray.size() - 1)
                        arrow = lightingSpellsArray.size() - 1;
                }
            }
            else if(column == 1)
            {
                if(lightingSpellsArray.size())
                {
                    column ++;

                    if(arrow > lightingSpellsArray.size() - 1)
                        arrow = lightingSpellsArray.size() - 1;
                }
            }
        }

        if(selection != '\n')
            cout << "\033[" << lines << "A";

    }while(selection != '\n');

    switch(column)
    {
        case 0:
            chosenSpell = iceSpellsArray[arrow];
            type = 2;
            slotNum = arrow + 1;

            break;

        case 1:
            chosenSpell = fireSpellsArray[arrow];
            type = 3;
            slotNum = arrow + 1;

            break;

        case 2:
            chosenSpell = lightingSpellsArray[arrow];
            type = 1;
            slotNum = arrow + 1;

            break;
    }

    cout << "\033[" << lines + 10 << "A";
    cout << "\033[J";

    //for(int i = 0; i < lines + 10; i++)
    //    cout << "\033[1A\033[K";

    return true;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x4c0, %rsp            # imm = 0x4C0
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq %rdx, -0x20(%rbp)
movq %rcx, -0x28(%rbp)
movq -0x10(%rbp), %rdi
movq %rdi, -0x238(%rbp)
movl $0x0, -0x2c(%rbp)
addq $0x68, %rdi
callq 0x27b30
testb $0x1, %al
jne 0x23d03
movl $0x0, -0x30(%rbp)
jmp 0x23d3f
movq -0x238(%rbp), %rdi
addq $0x50, %rdi
callq 0x27b70
testb $0x1, %al
jne 0x23d20
movl $0x1, -0x30(%rbp)
jmp 0x23d3d
movq -0x238(%rbp), %rdi
addq $0x38, %rdi
callq 0x27bb0
testb $0x1, %al
jne 0x23d3b
movl $0x2, -0x30(%rbp)
jmp 0x23d3d
jmp 0x23d3f
movq -0x238(%rbp), %rdi
addq $0x68, %rdi
callq 0x26e60
movq -0x238(%rbp), %rdi
movq %rax, -0x240(%rbp)
addq $0x50, %rdi
callq 0x26e40
movq %rax, %rcx
movq -0x240(%rbp), %rax
cmpq %rcx, %rax
jb 0x23dca
movq -0x238(%rbp), %rdi
addq $0x68, %rdi
callq 0x26e60
movq -0x238(%rbp), %rdi
movq %rax, -0x248(%rbp)
addq $0x38, %rdi
callq 0x26e20
movq %rax, %rcx
movq -0x248(%rbp), %rax
cmpq %rcx, %rax
jb 0x23dca
movq -0x238(%rbp), %rdi
addq $0x68, %rdi
callq 0x26e60
addq $0x1, %rax
imulq $0x5, %rax, %rax
subq $0x1, %rax
movl %eax, -0x34(%rbp)
movq -0x238(%rbp), %rdi
addq $0x50, %rdi
callq 0x26e40
movq -0x238(%rbp), %rdi
movq %rax, -0x250(%rbp)
addq $0x68, %rdi
callq 0x26e60
movq %rax, %rcx
movq -0x250(%rbp), %rax
cmpq %rcx, %rax
jb 0x23e55
movq -0x238(%rbp), %rdi
addq $0x50, %rdi
callq 0x26e40
movq -0x238(%rbp), %rdi
movq %rax, -0x258(%rbp)
addq $0x38, %rdi
callq 0x26e20
movq %rax, %rcx
movq -0x258(%rbp), %rax
cmpq %rcx, %rax
jb 0x23e55
movq -0x238(%rbp), %rdi
addq $0x50, %rdi
callq 0x26e40
addq $0x1, %rax
imulq $0x5, %rax, %rax
subq $0x1, %rax
movl %eax, -0x34(%rbp)
movq -0x238(%rbp), %rdi
addq $0x38, %rdi
callq 0x26e20
movq -0x238(%rbp), %rdi
movq %rax, -0x260(%rbp)
addq $0x68, %rdi
callq 0x26e60
movq %rax, %rcx
movq -0x260(%rbp), %rax
cmpq %rcx, %rax
jb 0x23ee0
movq -0x238(%rbp), %rdi
addq $0x38, %rdi
callq 0x26e20
movq -0x238(%rbp), %rdi
movq %rax, -0x268(%rbp)
addq $0x50, %rdi
callq 0x26e40
movq %rax, %rcx
movq -0x268(%rbp), %rax
cmpq %rcx, %rax
jb 0x23ee0
movq -0x238(%rbp), %rdi
addq $0x38, %rdi
callq 0x26e20
addq $0x1, %rax
imulq $0x5, %rax, %rax
subq $0x1, %rax
movl %eax, -0x34(%rbp)
jmp 0x23ee2
movq 0x2a0df(%rip), %rdi     # 0x4dfc8
leaq 0x1ba19(%rip), %rsi     # 0x3f909
callq 0x4260
movq %rax, %rdi
movq 0x2a0b9(%rip), %rsi     # 0x4dfb8
callq 0x4290
movq 0x2a0bd(%rip), %rdi     # 0x4dfc8
leaq 0x1ba8b(%rip), %rsi     # 0x3f99d
callq 0x4260
movq %rax, %rdi
movq 0x2a097(%rip), %rsi     # 0x4dfb8
callq 0x4290
movq 0x2a09b(%rip), %rdi     # 0x4dfc8
leaq 0x1baec(%rip), %rsi     # 0x3fa20
callq 0x4260
movl $0x0, -0x3c(%rbp)
movq -0x238(%rbp), %rdi
movl -0x3c(%rbp), %eax
movq %rax, -0x278(%rbp)
addq $0x68, %rdi
callq 0x26e60
movq -0x278(%rbp), %rcx
movq %rax, %rdx
movb $0x1, %al
cmpq %rdx, %rcx
movb %al, -0x269(%rbp)
jb 0x23fd2
movq -0x238(%rbp), %rdi
movl -0x3c(%rbp), %eax
movq %rax, -0x280(%rbp)
addq $0x50, %rdi
callq 0x26e40
movq -0x280(%rbp), %rcx
movq %rax, %rdx
movb $0x1, %al
cmpq %rdx, %rcx
movb %al, -0x269(%rbp)
jb 0x23fd2
movq -0x238(%rbp), %rdi
movl -0x3c(%rbp), %eax
movq %rax, -0x288(%rbp)
addq $0x38, %rdi
callq 0x26e20
movq %rax, %rcx
movq -0x288(%rbp), %rax
cmpq %rcx, %rax
setb %al
movb %al, -0x269(%rbp)
movb -0x269(%rbp), %al
testb $0x1, %al
jne 0x23fe1
jmp 0x25005
cmpl $0x0, -0x3c(%rbp)
jne 0x23ffc
movq 0x29fda(%rip), %rdi     # 0x4dfc8
movq 0x29fc3(%rip), %rsi     # 0x4dfb8
callq 0x4290
jmp 0x2401e
movq 0x29fc5(%rip), %rdi     # 0x4dfc8
leaq 0x1baaa(%rip), %rsi     # 0x3fab4
callq 0x4260
movq %rax, %rdi
movq 0x29f9f(%rip), %rsi     # 0x4dfb8
callq 0x4290
movq -0x238(%rbp), %rdi
movl -0x3c(%rbp), %eax
movq %rax, -0x290(%rbp)
addq $0x68, %rdi
callq 0x26e60
movq %rax, %rcx
movq -0x290(%rbp), %rax
cmpq %rcx, %rax
jae 0x244cb
cmpl $0x0, -0x30(%rbp)
jne 0x2406e
movl -0x2c(%rbp), %eax
cmpl -0x3c(%rbp), %eax
jne 0x2406e
movq 0x29f68(%rip), %rdi     # 0x4dfc8
leaq 0x1bab5(%rip), %rsi     # 0x3fb1c
callq 0x4260
jmp 0x24081
movq 0x29f53(%rip), %rdi     # 0x4dfc8
leaq 0x1bab2(%rip), %rsi     # 0x3fb2e
callq 0x4260
movq 0x29f40(%rip), %rdi     # 0x4dfc8
movq %rdi, -0x2b0(%rbp)
movq (%rdi), %rax
movq -0x18(%rax), %rax
addq %rax, %rdi
movl $0x1a, %esi
callq 0x1b9e0
movq -0x2b0(%rbp), %rdi
leaq -0x86a1(%rip), %rsi     # 0x1ba10
callq 0x40d0
movq -0x238(%rbp), %rdi
movq %rax, -0x2a8(%rbp)
addq $0x68, %rdi
movl -0x3c(%rbp), %eax
movl %eax, %esi
callq 0x27180
movq (%rax), %rsi
movq (%rsi), %rax
movq 0x8(%rax), %rax
leaq -0x60(%rbp), %rdi
movq %rdi, -0x2a0(%rbp)
callq *%rax
movq -0x2a8(%rbp), %rdi
movq -0x2a0(%rbp), %rsi
callq 0x4210
movq %rax, -0x298(%rbp)
jmp 0x24105
movq -0x298(%rbp), %rdi
leaq 0x199ca(%rip), %rsi     # 0x3dadd
callq 0x4260
movq %rax, -0x2b8(%rbp)
jmp 0x24121
movq -0x2b8(%rbp), %rdi
movq 0x29e89(%rip), %rsi     # 0x4dfb8
callq 0x4290
jmp 0x24136
leaq -0x60(%rbp), %rdi
callq 0x4160
movq 0x29e82(%rip), %rdi     # 0x4dfc8
movq %rdi, -0x2c8(%rbp)
leaq 0x1b9e9(%rip), %rsi     # 0x3fb3d
callq 0x4260
movq -0x2c8(%rbp), %rdi
movq (%rdi), %rax
movq -0x18(%rax), %rax
addq %rax, %rdi
movl $0xa, %esi
callq 0x1b9e0
movq -0x238(%rbp), %rdi
addq $0x68, %rdi
movl -0x3c(%rbp), %eax
movl %eax, %esi
callq 0x27180
movq (%rax), %rdi
movq (%rdi), %rax
movq 0x20(%rax), %rax
callq *%rax
movl %eax, %esi
leaq -0xd0(%rbp), %rdi
movq %rdi, -0x2c0(%rbp)
callq 0x1bb60
movq -0x2c0(%rbp), %rsi
leaq 0x1c0f8(%rip), %rdx     # 0x402b0
leaq -0xb0(%rbp), %rdi
callq 0x1bb10
jmp 0x241c6
movq -0x238(%rbp), %rdi
addq $0x68, %rdi
movl -0x3c(%rbp), %eax
movl %eax, %esi
callq 0x27180
movq (%rax), %rdi
movq (%rdi), %rax
movq 0x28(%rax), %rax
callq *%rax
movl %eax, -0x2cc(%rbp)
jmp 0x241ef
movl -0x2cc(%rbp), %esi
leaq -0xf0(%rbp), %rdi
callq 0x1bb60
jmp 0x24203
leaq -0x90(%rbp), %rdi
leaq -0xb0(%rbp), %rsi
leaq -0xf0(%rbp), %rdx
callq 0x1ba40
jmp 0x2421f
leaq -0xf0(%rbp), %rdi
callq 0x4160
leaq -0xb0(%rbp), %rdi
callq 0x4160
leaq -0xd0(%rbp), %rdi
callq 0x4160
movq 0x29d7e(%rip), %rdi     # 0x4dfc8
leaq -0x8841(%rip), %rsi     # 0x1ba10
callq 0x40d0
movq %rax, -0x2d8(%rbp)
jmp 0x2425f
movq -0x2d8(%rbp), %rdi
leaq -0x90(%rbp), %rsi
callq 0x4210
movq %rax, -0x2e0(%rbp)
jmp 0x2427b
movq -0x2e0(%rbp), %rdi
leaq 0x1a39a(%rip), %rsi     # 0x3e623
callq 0x4260
movq %rax, -0x2e8(%rbp)
jmp 0x24297
movq -0x2e8(%rbp), %rdi
movq 0x29d13(%rip), %rsi     # 0x4dfb8
callq 0x4290
jmp 0x242ac
movq 0x29d15(%rip), %rdi     # 0x4dfc8
leaq 0x1b8a4(%rip), %rsi     # 0x3fb5e
callq 0x4260
jmp 0x242c1
movq 0x29d00(%rip), %rdi     # 0x4dfc8
movq (%rdi), %rax
movq -0x18(%rax), %rax
addq %rax, %rdi
movl $0x6, %esi
callq 0x1b9e0
jmp 0x242de
movq 0x29ce3(%rip), %rdi     # 0x4dfc8
leaq -0x88dc(%rip), %rsi     # 0x1ba10
callq 0x40d0
movq %rax, -0x2f0(%rbp)
jmp 0x242fa
movq -0x238(%rbp), %rdi
addq $0x68, %rdi
movl -0x3c(%rbp), %eax
movl %eax, %esi
callq 0x27180
movq (%rax), %rdi
movq (%rdi), %rax
movq 0x40(%rax), %rax
callq *%rax
movl %eax, -0x2f4(%rbp)
jmp 0x24323
movl -0x2f4(%rbp), %esi
movq -0x2f0(%rbp), %rdi
callq 0x4370
movq %rax, -0x300(%rbp)
jmp 0x2433e
movq -0x300(%rbp), %rdi
leaq 0x1a2d7(%rip), %rsi     # 0x3e623
callq 0x4260
movq %rax, -0x308(%rbp)
jmp 0x2435a
movq -0x308(%rbp), %rdi
movq 0x29c50(%rip), %rsi     # 0x4dfb8
callq 0x4290
jmp 0x2436f
movq 0x29c52(%rip), %rdi     # 0x4dfc8
leaq 0x1b806(%rip), %rsi     # 0x3fb83
callq 0x4260
jmp 0x24384
movq 0x29c3d(%rip), %rdi     # 0x4dfc8
movq (%rdi), %rax
movq -0x18(%rax), %rax
addq %rax, %rdi
movl $0x7, %esi
callq 0x1b9e0
jmp 0x243a1
movq 0x29c20(%rip), %rdi     # 0x4dfc8
leaq -0x899f(%rip), %rsi     # 0x1ba10
callq 0x40d0
movq %rax, -0x310(%rbp)
jmp 0x243bd
movq -0x238(%rbp), %rdi
addq $0x68, %rdi
movl -0x3c(%rbp), %eax
movl %eax, %esi
callq 0x27180
movq (%rax), %rdi
movq (%rdi), %rax
movq 0x18(%rax), %rax
callq *%rax
movl %eax, -0x314(%rbp)
jmp 0x243e6
movl -0x314(%rbp), %esi
movq -0x310(%rbp), %rdi
callq 0x4370
movq %rax, -0x320(%rbp)
jmp 0x24401
movq -0x320(%rbp), %rdi
leaq 0x1a214(%rip), %rsi     # 0x3e623
callq 0x4260
movq %rax, -0x328(%rbp)
jmp 0x2441d
movq -0x328(%rbp), %rdi
movq 0x29b8d(%rip), %rsi     # 0x4dfb8
callq 0x4290
jmp 0x24432
leaq -0x90(%rbp), %rdi
callq 0x4160
jmp 0x24553
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x60(%rbp), %rdi
callq 0x4160
jmp 0x255cb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x2449d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x24491
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0xf0(%rbp), %rdi
callq 0x4160
leaq -0xb0(%rbp), %rdi
callq 0x4160
leaq -0xd0(%rbp), %rdi
callq 0x4160
jmp 0x255cb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x90(%rbp), %rdi
callq 0x4160
jmp 0x255cb
movq 0x29af6(%rip), %rdi     # 0x4dfc8
leaq 0x1b6ce(%rip), %rsi     # 0x3fba7
callq 0x4260
movq %rax, %rdi
movq 0x29ad0(%rip), %rsi     # 0x4dfb8
callq 0x4290
movq 0x29ad4(%rip), %rdi     # 0x4dfc8
leaq 0x1b6ac(%rip), %rsi     # 0x3fba7
callq 0x4260
movq %rax, %rdi
movq 0x29aae(%rip), %rsi     # 0x4dfb8
callq 0x4290
movq 0x29ab2(%rip), %rdi     # 0x4dfc8
leaq 0x1b68a(%rip), %rsi     # 0x3fba7
callq 0x4260
movq %rax, %rdi
movq 0x29a8c(%rip), %rsi     # 0x4dfb8
callq 0x4290
movq 0x29a90(%rip), %rdi     # 0x4dfc8
leaq 0x1b668(%rip), %rsi     # 0x3fba7
callq 0x4260
movq %rax, %rdi
movq 0x29a6a(%rip), %rsi     # 0x4dfb8
callq 0x4290
movq 0x29a6e(%rip), %rdi     # 0x4dfc8
leaq 0x1b657(%rip), %rsi     # 0x3fbb8
callq 0x4260
movq -0x238(%rbp), %rdi
movl -0x3c(%rbp), %eax
movq %rax, -0x330(%rbp)
addq $0x50, %rdi
callq 0x26e40
movq %rax, %rcx
movq -0x330(%rbp), %rax
cmpq %rcx, %rax
jae 0x24a1c
cmpl $0x1, -0x30(%rbp)
jne 0x245b6
movl -0x2c(%rbp), %eax
cmpl -0x3c(%rbp), %eax
jne 0x245b6
movq 0x29a20(%rip), %rdi     # 0x4dfc8
leaq 0x1b60e(%rip), %rsi     # 0x3fbbd
callq 0x4260
jmp 0x245c9
movq 0x29a0b(%rip), %rdi     # 0x4dfc8
leaq 0x1b60a(%rip), %rsi     # 0x3fbce
callq 0x4260
movq 0x299f8(%rip), %rdi     # 0x4dfc8
movq %rdi, -0x350(%rbp)
movq (%rdi), %rax
movq -0x18(%rax), %rax
addq %rax, %rdi
movl $0x1a, %esi
callq 0x1b9e0
movq -0x350(%rbp), %rdi
leaq -0x8be9(%rip), %rsi     # 0x1ba10
callq 0x40d0
movq -0x238(%rbp), %rdi
movq %rax, -0x348(%rbp)
addq $0x50, %rdi
movl -0x3c(%rbp), %eax
movl %eax, %esi
callq 0x272c0
movq (%rax), %rsi
movq (%rsi), %rax
movq 0x8(%rax), %rax
leaq -0x110(%rbp), %rdi
movq %rdi, -0x340(%rbp)
callq *%rax
movq -0x348(%rbp), %rdi
movq -0x340(%rbp), %rsi
callq 0x4210
movq %rax, -0x338(%rbp)
jmp 0x24650
movq -0x338(%rbp), %rdi
leaq 0x1947f(%rip), %rsi     # 0x3dadd
callq 0x4260
movq %rax, -0x358(%rbp)
jmp 0x2466c
movq -0x358(%rbp), %rdi
movq 0x2993e(%rip), %rsi     # 0x4dfb8
callq 0x4290
jmp 0x24681
leaq -0x110(%rbp), %rdi
callq 0x4160
movq 0x29934(%rip), %rdi     # 0x4dfc8
movq %rdi, -0x368(%rbp)
leaq 0x1b536(%rip), %rsi     # 0x3fbd8
callq 0x4260
movq -0x368(%rbp), %rdi
movq (%rdi), %rax
movq -0x18(%rax), %rax
addq %rax, %rdi
movl $0xa, %esi
callq 0x1b9e0
movq -0x238(%rbp), %rdi
addq $0x50, %rdi
movl -0x3c(%rbp), %eax
movl %eax, %esi
callq 0x272c0
movq (%rax), %rdi
movq (%rdi), %rax
movq 0x20(%rax), %rax
callq *%rax
movl %eax, %esi
leaq -0x170(%rbp), %rdi
movq %rdi, -0x360(%rbp)
callq 0x1bb60
movq -0x360(%rbp), %rsi
leaq 0x1bbaa(%rip), %rdx     # 0x402b0
leaq -0x150(%rbp), %rdi
callq 0x1bb10
jmp 0x24714
movq -0x238(%rbp), %rdi
addq $0x50, %rdi
movl -0x3c(%rbp), %eax
movl %eax, %esi
callq 0x272c0
movq (%rax), %rdi
movq (%rdi), %rax
movq 0x28(%rax), %rax
callq *%rax
movl %eax, -0x36c(%rbp)
jmp 0x2473d
movl -0x36c(%rbp), %esi
leaq -0x190(%rbp), %rdi
callq 0x1bb60
jmp 0x24751
leaq -0x130(%rbp), %rdi
leaq -0x150(%rbp), %rsi
leaq -0x190(%rbp), %rdx
callq 0x1ba40
jmp 0x2476d
leaq -0x190(%rbp), %rdi
callq 0x4160
leaq -0x150(%rbp), %rdi
callq 0x4160
leaq -0x170(%rbp), %rdi
callq 0x4160
movq 0x29830(%rip), %rdi     # 0x4dfc8
leaq -0x8d8f(%rip), %rsi     # 0x1ba10
callq 0x40d0
movq %rax, -0x378(%rbp)
jmp 0x247ad
movq -0x378(%rbp), %rdi
leaq -0x130(%rbp), %rsi
callq 0x4210
movq %rax, -0x380(%rbp)
jmp 0x247c9
movq -0x380(%rbp), %rdi
leaq 0x19e4c(%rip), %rsi     # 0x3e623
callq 0x4260
movq %rax, -0x388(%rbp)
jmp 0x247e5
movq -0x388(%rbp), %rdi
movq 0x297c5(%rip), %rsi     # 0x4dfb8
callq 0x4290
jmp 0x247fa
movq 0x297c7(%rip), %rdi     # 0x4dfc8
leaq 0x1b3ec(%rip), %rsi     # 0x3fbf4
callq 0x4260
jmp 0x2480f
movq 0x297b2(%rip), %rdi     # 0x4dfc8
movq (%rdi), %rax
movq -0x18(%rax), %rax
addq %rax, %rdi
movl $0x5, %esi
callq 0x1b9e0
jmp 0x2482c
movq 0x29795(%rip), %rdi     # 0x4dfc8
leaq -0x8e2a(%rip), %rsi     # 0x1ba10
callq 0x40d0
movq %rax, -0x390(%rbp)
jmp 0x24848
movq -0x238(%rbp), %rdi
addq $0x50, %rdi
movl -0x3c(%rbp), %eax
movl %eax, %esi
callq 0x272c0
movq (%rax), %rdi
movq (%rdi), %rax
movq 0x48(%rax), %rax
callq *%rax
movl %eax, -0x394(%rbp)
jmp 0x24871
movl -0x394(%rbp), %esi
movq -0x390(%rbp), %rdi
callq 0x4370
movq %rax, -0x3a0(%rbp)
jmp 0x2488c
movq -0x3a0(%rbp), %rdi
leaq 0x19d89(%rip), %rsi     # 0x3e623
callq 0x4260
movq %rax, -0x3a8(%rbp)
jmp 0x248a8
movq -0x3a8(%rbp), %rdi
movq 0x29702(%rip), %rsi     # 0x4dfb8
callq 0x4290
jmp 0x248bd
movq 0x29704(%rip), %rdi     # 0x4dfc8
leaq 0x1b34a(%rip), %rsi     # 0x3fc15
callq 0x4260
jmp 0x248d2
movq 0x296ef(%rip), %rdi     # 0x4dfc8
movq (%rdi), %rax
movq -0x18(%rax), %rax
addq %rax, %rdi
movl $0x7, %esi
callq 0x1b9e0
jmp 0x248ef
movq 0x296d2(%rip), %rdi     # 0x4dfc8
leaq -0x8eed(%rip), %rsi     # 0x1ba10
callq 0x40d0
movq %rax, -0x3b0(%rbp)
jmp 0x2490b
movq -0x238(%rbp), %rdi
addq $0x50, %rdi
movl -0x3c(%rbp), %eax
movl %eax, %esi
callq 0x272c0
movq (%rax), %rdi
movq (%rdi), %rax
movq 0x18(%rax), %rax
callq *%rax
movl %eax, -0x3b4(%rbp)
jmp 0x24934
movl -0x3b4(%rbp), %esi
movq -0x3b0(%rbp), %rdi
callq 0x4370
movq %rax, -0x3c0(%rbp)
jmp 0x2494f
movq -0x3c0(%rbp), %rdi
leaq 0x19cc6(%rip), %rsi     # 0x3e623
callq 0x4260
movq %rax, -0x3c8(%rbp)
jmp 0x2496b
movq -0x3c8(%rbp), %rdi
movq 0x2963f(%rip), %rsi     # 0x4dfb8
callq 0x4290
jmp 0x24980
leaq -0x130(%rbp), %rdi
callq 0x4160
jmp 0x24aa4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x110(%rbp), %rdi
callq 0x4160
jmp 0x255cb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x249ee
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x249e2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x190(%rbp), %rdi
callq 0x4160
leaq -0x150(%rbp), %rdi
callq 0x4160
leaq -0x170(%rbp), %rdi
callq 0x4160
jmp 0x255cb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x130(%rbp), %rdi
callq 0x4160
jmp 0x255cb
movq 0x295a5(%rip), %rdi     # 0x4dfc8
leaq 0x1b20a(%rip), %rsi     # 0x3fc34
callq 0x4260
movq %rax, %rdi
movq 0x2957f(%rip), %rsi     # 0x4dfb8
callq 0x4290
movq 0x29583(%rip), %rdi     # 0x4dfc8
leaq 0x1b1e8(%rip), %rsi     # 0x3fc34
callq 0x4260
movq %rax, %rdi
movq 0x2955d(%rip), %rsi     # 0x4dfb8
callq 0x4290
movq 0x29561(%rip), %rdi     # 0x4dfc8
leaq 0x1b1c6(%rip), %rsi     # 0x3fc34
callq 0x4260
movq %rax, %rdi
movq 0x2953b(%rip), %rsi     # 0x4dfb8
callq 0x4290
movq 0x2953f(%rip), %rdi     # 0x4dfc8
leaq 0x1b1a4(%rip), %rsi     # 0x3fc34
callq 0x4260
movq %rax, %rdi
movq 0x29519(%rip), %rsi     # 0x4dfb8
callq 0x4290
movq 0x2951d(%rip), %rdi     # 0x4dfc8
leaq 0x1b106(%rip), %rsi     # 0x3fbb8
callq 0x4260
movq -0x238(%rbp), %rdi
movl -0x3c(%rbp), %eax
movq %rax, -0x3d0(%rbp)
addq $0x38, %rdi
callq 0x26e20
movq %rax, %rcx
movq -0x3d0(%rbp), %rax
cmpq %rcx, %rax
jae 0x24f6d
cmpl $0x2, -0x30(%rbp)
jne 0x24b07
movl -0x2c(%rbp), %eax
cmpl -0x3c(%rbp), %eax
jne 0x24b07
movq 0x294cf(%rip), %rdi     # 0x4dfc8
leaq 0x1b144(%rip), %rsi     # 0x3fc44
callq 0x4260
jmp 0x24b1a
movq 0x294ba(%rip), %rdi     # 0x4dfc8
leaq 0x1b140(%rip), %rsi     # 0x3fc55
callq 0x4260
movq 0x294a7(%rip), %rdi     # 0x4dfc8
movq %rdi, -0x3f0(%rbp)
movq (%rdi), %rax
movq -0x18(%rax), %rax
addq %rax, %rdi
movl $0x1a, %esi
callq 0x1b9e0
movq -0x3f0(%rbp), %rdi
leaq -0x913a(%rip), %rsi     # 0x1ba10
callq 0x40d0
movq -0x238(%rbp), %rdi
movq %rax, -0x3e8(%rbp)
addq $0x38, %rdi
movl -0x3c(%rbp), %eax
movl %eax, %esi
callq 0x27400
movq (%rax), %rsi
movq (%rsi), %rax
movq 0x8(%rax), %rax
leaq -0x1b0(%rbp), %rdi
movq %rdi, -0x3e0(%rbp)
callq *%rax
movq -0x3e8(%rbp), %rdi
movq -0x3e0(%rbp), %rsi
callq 0x4210
movq %rax, -0x3d8(%rbp)
jmp 0x24ba1
movq -0x3d8(%rbp), %rdi
leaq 0x18f2e(%rip), %rsi     # 0x3dadd
callq 0x4260
movq %rax, -0x3f8(%rbp)
jmp 0x24bbd
movq -0x3f8(%rbp), %rdi
movq 0x293ed(%rip), %rsi     # 0x4dfb8
callq 0x4290
jmp 0x24bd2
leaq -0x1b0(%rbp), %rdi
callq 0x4160
movq 0x293e3(%rip), %rdi     # 0x4dfc8
movq %rdi, -0x408(%rbp)
leaq 0x1b06c(%rip), %rsi     # 0x3fc5f
callq 0x4260
movq -0x408(%rbp), %rdi
movq (%rdi), %rax
movq -0x18(%rax), %rax
addq %rax, %rdi
movl $0xa, %esi
callq 0x1b9e0
movq -0x238(%rbp), %rdi
addq $0x38, %rdi
movl -0x3c(%rbp), %eax
movl %eax, %esi
callq 0x27400
movq (%rax), %rdi
movq (%rdi), %rax
movq 0x20(%rax), %rax
callq *%rax
movl %eax, %esi
leaq -0x210(%rbp), %rdi
movq %rdi, -0x400(%rbp)
callq 0x1bb60
movq -0x400(%rbp), %rsi
leaq 0x1b659(%rip), %rdx     # 0x402b0
leaq -0x1f0(%rbp), %rdi
callq 0x1bb10
jmp 0x24c65
movq -0x238(%rbp), %rdi
addq $0x38, %rdi
movl -0x3c(%rbp), %eax
movl %eax, %esi
callq 0x27400
movq (%rax), %rdi
movq (%rdi), %rax
movq 0x28(%rax), %rax
callq *%rax
movl %eax, -0x40c(%rbp)
jmp 0x24c8e
movl -0x40c(%rbp), %esi
leaq -0x230(%rbp), %rdi
callq 0x1bb60
jmp 0x24ca2
leaq -0x1d0(%rbp), %rdi
leaq -0x1f0(%rbp), %rsi
leaq -0x230(%rbp), %rdx
callq 0x1ba40
jmp 0x24cbe
leaq -0x230(%rbp), %rdi
callq 0x4160
leaq -0x1f0(%rbp), %rdi
callq 0x4160
leaq -0x210(%rbp), %rdi
callq 0x4160
movq 0x292df(%rip), %rdi     # 0x4dfc8
leaq -0x92e0(%rip), %rsi     # 0x1ba10
callq 0x40d0
movq %rax, -0x418(%rbp)
jmp 0x24cfe
movq -0x418(%rbp), %rdi
leaq -0x1d0(%rbp), %rsi
callq 0x4210
movq %rax, -0x420(%rbp)
jmp 0x24d1a
movq -0x420(%rbp), %rdi
leaq 0x198fb(%rip), %rsi     # 0x3e623
callq 0x4260
movq %rax, -0x428(%rbp)
jmp 0x24d36
movq -0x428(%rbp), %rdi
movq 0x29274(%rip), %rsi     # 0x4dfb8
callq 0x4290
jmp 0x24d4b
movq 0x29276(%rip), %rdi     # 0x4dfc8
leaq 0x1af22(%rip), %rsi     # 0x3fc7b
callq 0x4260
jmp 0x24d60
movq 0x29261(%rip), %rdi     # 0x4dfc8
movq (%rdi), %rax
movq -0x18(%rax), %rax
addq %rax, %rdi
movl $0x3, %esi
callq 0x1b9e0
jmp 0x24d7d
movq 0x29244(%rip), %rdi     # 0x4dfc8
leaq -0x937b(%rip), %rsi     # 0x1ba10
callq 0x40d0
movq %rax, -0x430(%rbp)
jmp 0x24d99
movq -0x238(%rbp), %rdi
addq $0x38, %rdi
movl -0x3c(%rbp), %eax
movl %eax, %esi
callq 0x27400
movq (%rax), %rdi
movq (%rdi), %rax
movq 0x50(%rax), %rax
callq *%rax
movl %eax, -0x434(%rbp)
jmp 0x24dc2
movl -0x434(%rbp), %esi
movq -0x430(%rbp), %rdi
callq 0x4370
movq %rax, -0x440(%rbp)
jmp 0x24ddd
movq -0x440(%rbp), %rdi
leaq 0x19838(%rip), %rsi     # 0x3e623
callq 0x4260
movq %rax, -0x448(%rbp)
jmp 0x24df9
movq -0x448(%rbp), %rdi
movq 0x291b1(%rip), %rsi     # 0x4dfb8
callq 0x4290
jmp 0x24e0e
movq 0x291b3(%rip), %rdi     # 0x4dfc8
leaq 0x1ae82(%rip), %rsi     # 0x3fc9e
callq 0x4260
jmp 0x24e23
movq 0x2919e(%rip), %rdi     # 0x4dfc8
movq (%rdi), %rax
movq -0x18(%rax), %rax
addq %rax, %rdi
movl $0x7, %esi
callq 0x1b9e0
jmp 0x24e40
movq 0x29181(%rip), %rdi     # 0x4dfc8
leaq -0x943e(%rip), %rsi     # 0x1ba10
callq 0x40d0
movq %rax, -0x450(%rbp)
jmp 0x24e5c
movq -0x238(%rbp), %rdi
addq $0x38, %rdi
movl -0x3c(%rbp), %eax
movl %eax, %esi
callq 0x27400
movq (%rax), %rdi
movq (%rdi), %rax
movq 0x18(%rax), %rax
callq *%rax
movl %eax, -0x454(%rbp)
jmp 0x24e85
movl -0x454(%rbp), %esi
movq -0x450(%rbp), %rdi
callq 0x4370
movq %rax, -0x460(%rbp)
jmp 0x24ea0
movq -0x460(%rbp), %rdi
leaq 0x19775(%rip), %rsi     # 0x3e623
callq 0x4260
movq %rax, -0x468(%rbp)
jmp 0x24ebc
movq -0x468(%rbp), %rdi
movq 0x290ee(%rip), %rsi     # 0x4dfb8
callq 0x4290
jmp 0x24ed1
leaq -0x1d0(%rbp), %rdi
callq 0x4160
jmp 0x24ff5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x1b0(%rbp), %rdi
callq 0x4160
jmp 0x255cb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x24f3f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x24f33
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x230(%rbp), %rdi
callq 0x4160
leaq -0x1f0(%rbp), %rdi
callq 0x4160
leaq -0x210(%rbp), %rdi
callq 0x4160
jmp 0x255cb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x1d0(%rbp), %rdi
callq 0x4160
jmp 0x255cb
movq 0x29054(%rip), %rdi     # 0x4dfc8
leaq 0x1ad42(%rip), %rsi     # 0x3fcbd
callq 0x4260
movq %rax, %rdi
movq 0x2902e(%rip), %rsi     # 0x4dfb8
callq 0x4290
movq 0x29032(%rip), %rdi     # 0x4dfc8
leaq 0x1ad20(%rip), %rsi     # 0x3fcbd
callq 0x4260
movq %rax, %rdi
movq 0x2900c(%rip), %rsi     # 0x4dfb8
callq 0x4290
movq 0x29010(%rip), %rdi     # 0x4dfc8
leaq 0x1acfe(%rip), %rsi     # 0x3fcbd
callq 0x4260
movq %rax, %rdi
movq 0x28fea(%rip), %rsi     # 0x4dfb8
callq 0x4290
movq 0x28fee(%rip), %rdi     # 0x4dfc8
leaq 0x1acdc(%rip), %rsi     # 0x3fcbd
callq 0x4260
movq %rax, %rdi
movq 0x28fc8(%rip), %rsi     # 0x4dfb8
callq 0x4290
jmp 0x24ff7
movl -0x3c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x3c(%rbp)
jmp 0x23f40
movq 0x28fbc(%rip), %rdi     # 0x4dfc8
leaq 0x1a8f6(%rip), %rsi     # 0x3f909
callq 0x4260
movq %rax, %rdi
movq 0x28f96(%rip), %rsi     # 0x4dfb8
callq 0x4290
movq 0x28f9a(%rip), %rdi     # 0x4dfc8
leaq 0x1ac98(%rip), %rsi     # 0x3fccd
callq 0x4260
movq %rax, %rdi
movq 0x28f74(%rip), %rsi     # 0x4dfb8
callq 0x4290
callq 0x1e820
movb %al, -0x35(%rbp)
movsbl -0x35(%rbp), %eax
cmpl $0x65, %eax
jne 0x250a3
movq 0x28f67(%rip), %rdi     # 0x4dfc8
leaq 0x18373(%rip), %rsi     # 0x3d3db
callq 0x4260
movq %rax, %rdi
movl -0x34(%rbp), %esi
callq 0x4430
movq %rax, %rdi
leaq 0x18c50(%rip), %rsi     # 0x3dcd2
callq 0x4260
movq 0x28f3a(%rip), %rdi     # 0x4dfc8
leaq 0x1a79e(%rip), %rsi     # 0x3f833
callq 0x4260
movb $0x0, -0x1(%rbp)
jmp 0x255bd
movsbl -0x35(%rbp), %eax
cmpl $0x77, %eax
jne 0x250c0
cmpl $0x0, -0x2c(%rbp)
je 0x250c0
movl -0x2c(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0x2c(%rbp)
jmp 0x25463
movsbl -0x35(%rbp), %eax
cmpl $0x61, %eax
jne 0x25226
cmpl $0x0, -0x30(%rbp)
je 0x25226
cmpl $0x2, -0x30(%rbp)
jne 0x251b1
movq -0x238(%rbp), %rdi
addq $0x50, %rdi
callq 0x26e40
cmpq $0x0, %rax
je 0x25147
movq -0x238(%rbp), %rdi
movl -0x30(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0x30(%rbp)
movslq -0x2c(%rbp), %rax
movq %rax, -0x470(%rbp)
addq $0x50, %rdi
callq 0x26e40
movq %rax, %rcx
movq -0x470(%rbp), %rax
subq $0x1, %rcx
cmpq %rcx, %rax
jbe 0x25145
movq -0x238(%rbp), %rdi
addq $0x50, %rdi
callq 0x26e40
subq $0x1, %rax
movl %eax, -0x2c(%rbp)
jmp 0x251af
movq -0x238(%rbp), %rdi
addq $0x68, %rdi
callq 0x26e60
cmpq $0x0, %rax
je 0x251ad
movq -0x238(%rbp), %rdi
movl -0x30(%rbp), %eax
subl $0x2, %eax
movl %eax, -0x30(%rbp)
movslq -0x2c(%rbp), %rax
movq %rax, -0x478(%rbp)
addq $0x68, %rdi
callq 0x26e60
movq %rax, %rcx
movq -0x478(%rbp), %rax
subq $0x1, %rcx
cmpq %rcx, %rax
jbe 0x251ab
movq -0x238(%rbp), %rdi
addq $0x68, %rdi
callq 0x26e60
subq $0x1, %rax
movl %eax, -0x2c(%rbp)
jmp 0x251ad
jmp 0x251af
jmp 0x25221
cmpl $0x1, -0x30(%rbp)
jne 0x2521f
movq -0x238(%rbp), %rdi
addq $0x68, %rdi
callq 0x26e60
cmpq $0x0, %rax
je 0x2521d
movq -0x238(%rbp), %rdi
movl -0x30(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0x30(%rbp)
movslq -0x2c(%rbp), %rax
movq %rax, -0x480(%rbp)
addq $0x68, %rdi
callq 0x26e60
movq %rax, %rcx
movq -0x480(%rbp), %rax
subq $0x1, %rcx
cmpq %rcx, %rax
jbe 0x2521b
movq -0x238(%rbp), %rdi
addq $0x68, %rdi
callq 0x26e60
subq $0x1, %rax
movl %eax, -0x2c(%rbp)
jmp 0x2521d
jmp 0x2521f
jmp 0x25221
jmp 0x25461
movsbl -0x35(%rbp), %eax
cmpl $0x73, %eax
jne 0x252fa
cmpl $0x0, -0x30(%rbp)
jne 0x25275
movq -0x238(%rbp), %rdi
movslq -0x2c(%rbp), %rax
movq %rax, -0x488(%rbp)
addq $0x68, %rdi
callq 0x26e60
movq %rax, %rcx
movq -0x488(%rbp), %rax
subq $0x1, %rcx
cmpq %rcx, %rax
jae 0x25275
movl -0x2c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x2c(%rbp)
jmp 0x252f5
cmpl $0x1, -0x30(%rbp)
jne 0x252b4
movq -0x238(%rbp), %rdi
movslq -0x2c(%rbp), %rax
movq %rax, -0x490(%rbp)
addq $0x50, %rdi
callq 0x26e40
movq %rax, %rcx
movq -0x490(%rbp), %rax
subq $0x1, %rcx
cmpq %rcx, %rax
jae 0x252b4
movl -0x2c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x2c(%rbp)
jmp 0x252f3
cmpl $0x2, -0x30(%rbp)
jne 0x252f1
movq -0x238(%rbp), %rdi
movslq -0x2c(%rbp), %rax
movq %rax, -0x498(%rbp)
addq $0x38, %rdi
callq 0x26e20
movq %rax, %rcx
movq -0x498(%rbp), %rax
subq $0x1, %rcx
cmpq %rcx, %rax
jae 0x252f1
movl -0x2c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x2c(%rbp)
jmp 0x252f3
jmp 0x252f5
jmp 0x2545f
movsbl -0x35(%rbp), %eax
cmpl $0x64, %eax
jne 0x2545d
cmpl $0x2, -0x30(%rbp)
jge 0x2545d
cmpl $0x0, -0x30(%rbp)
jne 0x253eb
movq -0x238(%rbp), %rdi
addq $0x50, %rdi
callq 0x26e40
cmpq $0x0, %rax
je 0x25381
movq -0x238(%rbp), %rdi
movl -0x30(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x30(%rbp)
movslq -0x2c(%rbp), %rax
movq %rax, -0x4a0(%rbp)
addq $0x50, %rdi
callq 0x26e40
movq %rax, %rcx
movq -0x4a0(%rbp), %rax
subq $0x1, %rcx
cmpq %rcx, %rax
jbe 0x2537f
movq -0x238(%rbp), %rdi
addq $0x50, %rdi
callq 0x26e40
subq $0x1, %rax
movl %eax, -0x2c(%rbp)
jmp 0x253e9
movq -0x238(%rbp), %rdi
addq $0x38, %rdi
callq 0x26e20
cmpq $0x0, %rax
je 0x253e7
movq -0x238(%rbp), %rdi
movl -0x30(%rbp), %eax
addl $0x2, %eax
movl %eax, -0x30(%rbp)
movslq -0x2c(%rbp), %rax
movq %rax, -0x4a8(%rbp)
addq $0x38, %rdi
callq 0x26e20
movq %rax, %rcx
movq -0x4a8(%rbp), %rax
subq $0x1, %rcx
cmpq %rcx, %rax
jbe 0x253e5
movq -0x238(%rbp), %rdi
addq $0x38, %rdi
callq 0x26e20
subq $0x1, %rax
movl %eax, -0x2c(%rbp)
jmp 0x253e7
jmp 0x253e9
jmp 0x2545b
cmpl $0x1, -0x30(%rbp)
jne 0x25459
movq -0x238(%rbp), %rdi
addq $0x38, %rdi
callq 0x26e20
cmpq $0x0, %rax
je 0x25457
movq -0x238(%rbp), %rdi
movl -0x30(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x30(%rbp)
movslq -0x2c(%rbp), %rax
movq %rax, -0x4b0(%rbp)
addq $0x38, %rdi
callq 0x26e20
movq %rax, %rcx
movq -0x4b0(%rbp), %rax
subq $0x1, %rcx
cmpq %rcx, %rax
jbe 0x25455
movq -0x238(%rbp), %rdi
addq $0x38, %rdi
callq 0x26e20
subq $0x1, %rax
movl %eax, -0x2c(%rbp)
jmp 0x25457
jmp 0x25459
jmp 0x2545b
jmp 0x2545d
jmp 0x2545f
jmp 0x25461
jmp 0x25463
jmp 0x25465
movsbl -0x35(%rbp), %eax
cmpl $0xa, %eax
je 0x2549b
movq 0x28b53(%rip), %rdi     # 0x4dfc8
leaq 0x17f5f(%rip), %rsi     # 0x3d3db
callq 0x4260
movq %rax, %rdi
movl -0x34(%rbp), %esi
callq 0x4430
movq %rax, %rdi
leaq 0x1883c(%rip), %rsi     # 0x3dcd2
callq 0x4260
jmp 0x2549d
movsbl -0x35(%rbp), %eax
cmpl $0xa, %eax
jne 0x23ee2
movl -0x30(%rbp), %eax
movl %eax, -0x4b4(%rbp)
testl %eax, %eax
je 0x254d6
jmp 0x254b9
movl -0x4b4(%rbp), %eax
subl $0x1, %eax
je 0x2550c
jmp 0x254c6
movl -0x4b4(%rbp), %eax
subl $0x2, %eax
je 0x25542
jmp 0x25576
movq -0x238(%rbp), %rdi
addq $0x68, %rdi
movslq -0x2c(%rbp), %rsi
callq 0x27180
movq (%rax), %rcx
movq -0x18(%rbp), %rax
movq %rcx, (%rax)
movq -0x28(%rbp), %rax
movl $0x2, (%rax)
movl -0x2c(%rbp), %ecx
addl $0x1, %ecx
movq -0x20(%rbp), %rax
movl %ecx, (%rax)
jmp 0x25576
movq -0x238(%rbp), %rdi
addq $0x50, %rdi
movslq -0x2c(%rbp), %rsi
callq 0x272c0
movq (%rax), %rcx
movq -0x18(%rbp), %rax
movq %rcx, (%rax)
movq -0x28(%rbp), %rax
movl $0x3, (%rax)
movl -0x2c(%rbp), %ecx
addl $0x1, %ecx
movq -0x20(%rbp), %rax
movl %ecx, (%rax)
jmp 0x25576
movq -0x238(%rbp), %rdi
addq $0x38, %rdi
movslq -0x2c(%rbp), %rsi
callq 0x27400
movq (%rax), %rcx
movq -0x18(%rbp), %rax
movq %rcx, (%rax)
movq -0x28(%rbp), %rax
movl $0x1, (%rax)
movl -0x2c(%rbp), %ecx
addl $0x1, %ecx
movq -0x20(%rbp), %rax
movl %ecx, (%rax)
movq 0x28a4b(%rip), %rdi     # 0x4dfc8
leaq 0x17e57(%rip), %rsi     # 0x3d3db
callq 0x4260
movq %rax, %rdi
movl -0x34(%rbp), %esi
addl $0xa, %esi
callq 0x4430
movq %rax, %rdi
leaq 0x18731(%rip), %rsi     # 0x3dcd2
callq 0x4260
movq 0x28a1b(%rip), %rdi     # 0x4dfc8
leaq 0x1a27f(%rip), %rsi     # 0x3f833
callq 0x4260
movb $0x1, -0x1(%rbp)
movb -0x1(%rbp), %al
andb $0x1, %al
addq $0x4c0, %rsp            # imm = 0x4C0
popq %rbp
retq
movq -0x68(%rbp), %rdi
callq 0x4440
nopw %cs:(%rax,%rax)