// File: /workspace/github_cpp_makefile_star2_O2/MichaelXanth[P]RPG_Game/Market/Market.cpp
// Function: Market::Sale(Hero&, int const&)
void Market::Sale(Hero& hero, const int& sellState)
{
    int  column, row;
    char confirmation;
    bool errFlag = false;
    string testSelections[2];

    cout << endl;
    cout << "-------------------------------" << endl << endl;
    cout << "(Type 0 to cancel)" << endl;

    if (sellState == 0) {
        cout << "Choose a Spell by selecting its position in the table(e.g.: \033[1;34m<\033[1;33mcolumn\033[1;34m> <\033[1;33mrow\033[1;34m>\033[0m): ";

        cout << "\n\n\n\n\n\n\n\n";
        cout << "\033[8A\033[77C";
    
    } else if (sellState == 1) {
        cout << "Choose an Item by selecting its position in the table(e.g.: \033[1;34m<\033[1;33mcolumn\033[1;34m> <\033[1;33mrow\033[1;34m>\033[0m): ";

        cout << "\n\n\n\n\n\n\n\n";
        cout << "\033[8A\033[77C";
    
    } else {
        cout << "Choose an Item or a Spell by selecting its position in the table(e.g.: \033[1;34m<\033[1;33mcolumn\033[1;34m> <\033[1;33mrow\033[1;34m>\033[0m): ";

        cout << "\n\n\n\n\n\n\n\n";
        cout << "\033[8A\033[88C";
    }

    cout << "\033[s";

    do {
        if (errFlag)
            usleep(1800000);

        cout << "\033[u";
        cout << "\033[J";
        cout << "\033[s";

        errFlag = true;

        cin >> testSelections[0];

        if (testSelections[0] == "0") {
            column = 0;
            break;
        }

        cin >> testSelections[1];
    } while(!hero.isValidForSale(testSelections,column,row,sellState));

    if (column == 0) {
        cout << endl << "\033[1;32mInfo:\033[0m The sale operation was canceled." << endl << endl;
        return;
    }

    switch(column)
    {
        case 1:
            if (sellState == 1) {
                cout << endl << "Are you sure you want to sell \"\033[1m\033[38;5;166m" << hero.GetWeaponFromSlot(row - 1)->GetName() << "\033[0m\" Weapon? [y/n]: ";

                do {
                    cin >> confirmation;
                } while(confirmation != 'y' && confirmation != 'Y' && confirmation != 'n' && confirmation != 'N');

                if (confirmation == 'n' || confirmation == 'N')
                    break;

                hero.RemoveWeapon(row - 1);
            
            } else {
                cout << endl << "Are you sure you want to sell \"\033[1m\033[38;5;32m" << hero.GetSpellFromSlot(row - 1, 2)->GetName() << "\033[0m\" Ice Spell? [y/n]: ";

                do {
                    cin >> confirmation;
                } while(confirmation != 'y' && confirmation != 'Y' && confirmation != 'n' && confirmation != 'N');

                if (confirmation == 'n' || confirmation == 'N')
                    break;

                hero.RemoveIceSpell(row - 1);
            }

            break;

        case 2:
            if (sellState == 1) {
                cout << endl << "Are you sure you want to sell \"\033[1m\033[38;5;28m" << hero.GetArmorFromSlot(row - 1)->GetName() << "\033[0m\" Armor? [y/n]: ";

                do {
                    cin >> confirmation;
                } while(confirmation != 'y' && confirmation != 'Y' && confirmation != 'n' && confirmation != 'N');

                if (confirmation == 'n' || confirmation == 'N')
                    break;

                hero.RemoveArmor(row - 1);
            
            } else {
                cout << endl << "Are you sure you want to sell \"\033[1m\033[1;31m" << hero.GetSpellFromSlot(row - 1, 3)->GetName() << "\033[0m\" Fire Spell? [y/n]: ";

                do {
                    cin >> confirmation;
                } while(confirmation != 'y' && confirmation != 'Y' && confirmation != 'n' && confirmation != 'N');

                if (confirmation == 'n' || confirmation == 'N')
                    break;

                hero.RemoveFireSpell(row - 1);
            }

            break;

        case 3:
            if (sellState == 1) {
                cout << endl << "Are you sure you want to sell \"\033[1m\033[38;5;90m" << hero.GetPotionFromSlot(row - 1)->GetName() << "\033[0m\" Potion? [y/n]: ";

                do {
                    cin >> confirmation;
                } while(confirmation != 'y' && confirmation != 'Y' && confirmation != 'n' && confirmation != 'N');

                if (confirmation == 'n' || confirmation == 'N')
                    break;

                hero.RemovePotion(row - 1);
            
            } else {
                cout << endl << "Are you sure you want to sell \"\033[1m\033[38;5;15m" << hero.GetSpellFromSlot(row - 1, 1)->GetName() << "\033[0m\" Lighting Spell? [y/n]: ";

                do {
                    cin >> confirmation;
                } while(confirmation != 'y' && confirmation != 'Y' && confirmation != 'n' && confirmation != 'N');

                if (confirmation == 'n' || confirmation == 'N')
                    break;

                hero.RemoveLightingSpell(row - 1);
            }

            break;

        case 4:
            cout << endl << "Are you sure you want to sell \"\033[1m\033[38;5;166m" << hero.GetWeaponFromSlot(row - 1)->GetName() << "\033[0m\" Weapon? [y/n]: ";

            do {
                cin >> confirmation;
            } while(confirmation != 'y' && confirmation != 'Y' && confirmation != 'n' && confirmation != 'N');

            if (confirmation == 'n' || confirmation == 'N')
                break;

            hero.RemoveWeapon(row - 1);

            break;

        case 5:
            cout << endl << "Are you sure you want to sell \"\033[1m\033[38;5;28m" << hero.GetArmorFromSlot(row - 1)->GetName() << "\033[0m\" Armor? [y/n]: ";

            do {
                cin >> confirmation;
            } while(confirmation != 'y' && confirmation != 'Y' && confirmation != 'n' && confirmation != 'N');

            if (confirmation == 'n' || confirmation == 'N')
                break;

            hero.RemoveArmor(row - 1);

            break;

        case 6:
            cout << endl << "Are you sure you want to sell \"\033[1m\033[38;5;90m" << hero.GetPotionFromSlot(row - 1)->GetName() << "\033[0m\" Potion? [y/n]: ";

            do {
                cin >> confirmation;
            } while(confirmation != 'y' && confirmation != 'Y' && confirmation != 'n' && confirmation != 'N');

            if (confirmation == 'n' || confirmation == 'N')
                break;

            hero.RemovePotion(row - 1);

            break;
    }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x88, %rsp
movq %rdx, -0x60(%rbp)
movq %rsi, -0x38(%rbp)
pushq $0x10
popq %rax
leaq (%rax,%rbp), %rcx
addq $-0xb0, %rcx
movq %rcx, -0x10(%rcx)
andq $0x0, -0x8(%rcx)
movb $0x0, (%rcx)
addq $0x20, %rax
cmpq $0x50, %rax
jne 0x182db
movq 0xecc5(%rip), %rdi      # 0x26fc8
callq 0x30d0
movq 0xecb9(%rip), %rdi      # 0x26fc8
leaq 0x5f3c(%rip), %rsi      # 0x1e252
callq 0x31d0
movq %rax, %rdi
callq 0x30d0
movq %rax, %rdi
callq 0x30d0
movq 0xec96(%rip), %rdi      # 0x26fc8
leaq 0x6064(%rip), %rsi      # 0x1e39d
callq 0x31d0
movq %rax, %rdi
callq 0x30d0
movq -0x60(%rbp), %rax
movl (%rax), %eax
cmpl $0x1, %eax
je 0x1835e
testl %eax, %eax
jne 0x1838d
leaq 0x6054(%rip), %rsi      # 0x1e3b0
jmp 0x18365
leaq 0x60d3(%rip), %rsi      # 0x1e438
movq 0xec5c(%rip), %rdi      # 0x26fc8
callq 0x31d0
movq 0xec50(%rip), %rdi      # 0x26fc8
leaq 0x60a6(%rip), %rsi      # 0x1e425
callq 0x31d0
leaq 0x60a3(%rip), %rsi      # 0x1e42e
jmp 0x183ba
movq 0xec34(%rip), %rdi      # 0x26fc8
leaq 0x6112(%rip), %rsi      # 0x1e4ad
callq 0x31d0
movq 0xec21(%rip), %rdi      # 0x26fc8
leaq 0x6077(%rip), %rsi      # 0x1e425
callq 0x31d0
leaq 0x6173(%rip), %rsi      # 0x1e52d
movq 0xec07(%rip), %rdi      # 0x26fc8
callq 0x31d0
movq 0xebfb(%rip), %rdi      # 0x26fc8
leaq 0x34aa(%rip), %rsi      # 0x1b87e
callq 0x31d0
movq 0xebe8(%rip), %r12      # 0x26fc8
movq 0xebf1(%rip), %r15      # 0x26fd8
leaq -0xb0(%rbp), %r13
leaq 0x6142(%rip), %rbx      # 0x1e537
leaq -0x30(%rbp), %r14
movq %r12, %rdi
leaq 0x34a5(%rip), %rsi      # 0x1b8a8
callq 0x31d0
movq %r12, %rdi
leaq 0x5391(%rip), %rsi      # 0x1d7a3
callq 0x31d0
movq %r12, %rdi
leaq 0x345d(%rip), %rsi      # 0x1b87e
callq 0x31d0
movq %r15, %rdi
movq %r13, %rsi
callq 0x3250
movq %r13, %rdi
movq %rbx, %rsi
callq 0x19330
testb %al, %al
jne 0x18476
movq %r15, %rdi
leaq -0x90(%rbp), %rsi
callq 0x3250
movq -0x38(%rbp), %rdi
movq %r13, %rsi
leaq -0x64(%rbp), %rdx
movq %r14, %rcx
movq -0x60(%rbp), %r8
callq 0xd69e
testb %al, %al
jne 0x184d4
movl $0x1b7740, %edi         # imm = 0x1B7740
callq 0x32a0
jmp 0x183f9
andl $0x0, -0x64(%rbp)
movq 0xeb47(%rip), %rdi      # 0x26fc8
callq 0x30d0
leaq 0x63d3(%rip), %rsi      # 0x1e860
movq %rax, %rdi
callq 0x31d0
movq %rax, %rdi
callq 0x30d0
movq %rax, %rdi
callq 0x30d0
pushq $0x20
popq %rbx
leaq (%rbx,%rbp), %rdi
addq $-0xb0, %rdi
callq 0x30c0
addq $-0x20, %rbx
cmpq $-0x20, %rbx
jne 0x184a8
addq $0x88, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movl -0x64(%rbp), %eax
cmpq $0x6, %rax
ja 0x184a5
leaq 0x5c00(%rip), %rcx      # 0x1e0e4
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq -0x60(%rbp), %rax
cmpl $0x1, (%rax)
jne 0x18aa4
movq 0xeac7(%rip), %rdi      # 0x26fc8
callq 0x30d0
leaq 0x6385(%rip), %rsi      # 0x1e892
movq %rax, %rdi
callq 0x31d0
movq %rax, %rbx
movl -0x30(%rbp), %esi
decl %esi
movq -0x38(%rbp), %rdi
callq 0xd9d2
movq (%rax), %rcx
leaq -0x58(%rbp), %rdi
movq %rax, %rsi
callq *(%rcx)
leaq -0x58(%rbp), %rsi
movq %rbx, %rdi
callq 0x3190
leaq 0x6123(%rip), %rsi      # 0x1e668
movq %rax, %rdi
callq 0x31d0
leaq -0x58(%rbp), %rdi
callq 0x30c0
movq 0xea7b(%rip), %rbx      # 0x26fd8
leaq -0x29(%rbp), %r14
movabsq $0x80100000801, %r15    # imm = 0x80100000801
movq %rbx, %rdi
movq %r14, %rsi
callq 0x3280
movzbl -0x29(%rbp), %eax
leal -0x4e(%rax), %ecx
cmpl $0x2b, %ecx
ja 0x1856b
btq %rcx, %r15
jae 0x1856b
andb $0x5f, %al
cmpb $0x4e, %al
je 0x184a5
movl -0x30(%rbp), %eax
decl %eax
leaq -0x58(%rbp), %rsi
movl %eax, (%rsi)
movq -0x38(%rbp), %rdi
callq 0xd462
jmp 0x184a5
movq 0xea16(%rip), %rdi      # 0x26fc8
callq 0x30d0
leaq 0x62d4(%rip), %rsi      # 0x1e892
movq %rax, %rdi
callq 0x31d0
movq %rax, %rbx
movl -0x30(%rbp), %esi
decl %esi
movq -0x38(%rbp), %rdi
callq 0xd9d2
movq (%rax), %rcx
leaq -0x58(%rbp), %rdi
movq %rax, %rsi
callq *(%rcx)
leaq -0x58(%rbp), %rsi
movq %rbx, %rdi
callq 0x3190
leaq 0x6072(%rip), %rsi      # 0x1e668
movq %rax, %rdi
callq 0x31d0
leaq -0x58(%rbp), %rdi
callq 0x30c0
movq 0xe9ca(%rip), %rbx      # 0x26fd8
leaq -0x29(%rbp), %r14
movabsq $0x80100000801, %r15    # imm = 0x80100000801
movq %rbx, %rdi
movq %r14, %rsi
callq 0x3280
movzbl -0x29(%rbp), %eax
leal -0x4e(%rax), %ecx
cmpl $0x2b, %ecx
ja 0x1861c
btq %rcx, %r15
jae 0x1861c
andb $0x5f, %al
cmpb $0x4e, %al
je 0x184a5
movl -0x30(%rbp), %eax
decl %eax
leaq -0x58(%rbp), %rsi
movl %eax, (%rsi)
movq -0x38(%rbp), %rdi
callq 0xd462
jmp 0x184a5
movq -0x60(%rbp), %rax
cmpl $0x1, (%rax)
jne 0x1893a
movq 0xe958(%rip), %rdi      # 0x26fc8
callq 0x30d0
leaq 0x6273(%rip), %rsi      # 0x1e8ef
movq %rax, %rdi
callq 0x31d0
movq %rax, %rbx
movl -0x30(%rbp), %esi
decl %esi
movq -0x38(%rbp), %rdi
callq 0xd99e
movq (%rax), %rcx
leaq -0x58(%rbp), %rdi
movq %rax, %rsi
callq *(%rcx)
leaq -0x58(%rbp), %rsi
movq %rbx, %rdi
callq 0x3190
leaq 0x5ff7(%rip), %rsi      # 0x1e6ab
movq %rax, %rdi
callq 0x31d0
leaq -0x58(%rbp), %rdi
callq 0x30c0
movq 0xe90c(%rip), %rbx      # 0x26fd8
leaq -0x29(%rbp), %r14
movabsq $0x80100000801, %r15    # imm = 0x80100000801
movq %rbx, %rdi
movq %r14, %rsi
callq 0x3280
movzbl -0x29(%rbp), %eax
leal -0x4e(%rax), %ecx
cmpl $0x2b, %ecx
ja 0x186da
btq %rcx, %r15
jae 0x186da
andb $0x5f, %al
cmpb $0x4e, %al
je 0x184a5
movl -0x30(%rbp), %eax
decl %eax
leaq -0x58(%rbp), %rsi
movl %eax, (%rsi)
movq -0x38(%rbp), %rdi
callq 0xd4ce
jmp 0x184a5
movq -0x60(%rbp), %rax
cmpl $0x1, (%rax)
jne 0x189ef
movq 0xe89a(%rip), %rdi      # 0x26fc8
callq 0x30d0
leaq 0x620e(%rip), %rsi      # 0x1e948
movq %rax, %rdi
callq 0x31d0
movq %rax, %rbx
movl -0x30(%rbp), %esi
decl %esi
movq -0x38(%rbp), %rdi
callq 0xd900
movq (%rax), %rcx
leaq -0x58(%rbp), %rdi
movq %rax, %rsi
callq *(%rcx)
leaq -0x58(%rbp), %rsi
movq %rbx, %rdi
callq 0x3190
leaq 0x5f7b(%rip), %rsi      # 0x1e6ed
movq %rax, %rdi
callq 0x31d0
leaq -0x58(%rbp), %rdi
callq 0x30c0
movq 0xe84e(%rip), %rbx      # 0x26fd8
leaq -0x29(%rbp), %r14
movabsq $0x80100000801, %r15    # imm = 0x80100000801
movq %rbx, %rdi
movq %r14, %rsi
callq 0x3280
movzbl -0x29(%rbp), %eax
leal -0x4e(%rax), %ecx
cmpl $0x2b, %ecx
ja 0x18798
btq %rcx, %r15
jae 0x18798
andb $0x5f, %al
cmpb $0x4e, %al
je 0x184a5
movl -0x30(%rbp), %eax
decl %eax
leaq -0x58(%rbp), %rsi
movl %eax, (%rsi)
movq -0x38(%rbp), %rdi
callq 0xd53a
jmp 0x184a5
movq 0xe7e9(%rip), %rdi      # 0x26fc8
callq 0x30d0
leaq 0x6104(%rip), %rsi      # 0x1e8ef
movq %rax, %rdi
callq 0x31d0
movq %rax, %rbx
movl -0x30(%rbp), %esi
decl %esi
movq -0x38(%rbp), %rdi
callq 0xd99e
movq (%rax), %rcx
leaq -0x58(%rbp), %rdi
movq %rax, %rsi
callq *(%rcx)
leaq -0x58(%rbp), %rsi
movq %rbx, %rdi
callq 0x3190
leaq 0x5e88(%rip), %rsi      # 0x1e6ab
movq %rax, %rdi
callq 0x31d0
leaq -0x58(%rbp), %rdi
callq 0x30c0
movq 0xe79d(%rip), %rbx      # 0x26fd8
leaq -0x29(%rbp), %r14
movabsq $0x80100000801, %r15    # imm = 0x80100000801
movq %rbx, %rdi
movq %r14, %rsi
callq 0x3280
movzbl -0x29(%rbp), %eax
leal -0x4e(%rax), %ecx
cmpl $0x2b, %ecx
ja 0x18849
btq %rcx, %r15
jae 0x18849
andb $0x5f, %al
cmpb $0x4e, %al
je 0x184a5
movl -0x30(%rbp), %eax
decl %eax
leaq -0x58(%rbp), %rsi
movl %eax, (%rsi)
movq -0x38(%rbp), %rdi
callq 0xd4ce
jmp 0x184a5
movq 0xe738(%rip), %rdi      # 0x26fc8
callq 0x30d0
leaq 0x60ac(%rip), %rsi      # 0x1e948
movq %rax, %rdi
callq 0x31d0
movq %rax, %rbx
movl -0x30(%rbp), %esi
decl %esi
movq -0x38(%rbp), %rdi
callq 0xd900
movq (%rax), %rcx
leaq -0x58(%rbp), %rdi
movq %rax, %rsi
callq *(%rcx)
leaq -0x58(%rbp), %rsi
movq %rbx, %rdi
callq 0x3190
leaq 0x5e19(%rip), %rsi      # 0x1e6ed
movq %rax, %rdi
callq 0x31d0
leaq -0x58(%rbp), %rdi
callq 0x30c0
movq 0xe6ec(%rip), %rbx      # 0x26fd8
leaq -0x29(%rbp), %r14
movabsq $0x80100000801, %r15    # imm = 0x80100000801
movq %rbx, %rdi
movq %r14, %rsi
callq 0x3280
movzbl -0x29(%rbp), %eax
leal -0x4e(%rax), %ecx
cmpl $0x2b, %ecx
ja 0x188fa
btq %rcx, %r15
jae 0x188fa
andb $0x5f, %al
cmpb $0x4e, %al
je 0x184a5
movl -0x30(%rbp), %eax
decl %eax
leaq -0x58(%rbp), %rsi
movl %eax, (%rsi)
movq -0x38(%rbp), %rdi
callq 0xd53a
jmp 0x184a5
movq 0xe687(%rip), %rdi      # 0x26fc8
callq 0x30d0
leaq 0x5fd0(%rip), %rsi      # 0x1e91d
movq %rax, %rdi
callq 0x31d0
movq %rax, %rbx
movl -0x30(%rbp), %esi
decl %esi
pushq $0x3
popq %rdx
movq -0x38(%rbp), %rdi
callq 0xd67c
movq (%rax), %rcx
leaq -0x58(%rbp), %rdi
movq %rax, %rsi
callq *0x8(%rcx)
leaq -0x58(%rbp), %rsi
movq %rbx, %rdi
callq 0x3190
leaq 0x5c4c(%rip), %rsi      # 0x1e5d5
movq %rax, %rdi
callq 0x31d0
leaq -0x58(%rbp), %rdi
callq 0x30c0
movq 0xe637(%rip), %rbx      # 0x26fd8
leaq -0x29(%rbp), %r14
movabsq $0x80100000801, %r15    # imm = 0x80100000801
movq %rbx, %rdi
movq %r14, %rsi
callq 0x3280
movzbl -0x29(%rbp), %eax
leal -0x4e(%rax), %ecx
cmpl $0x2b, %ecx
ja 0x189af
btq %rcx, %r15
jae 0x189af
andb $0x5f, %al
cmpb $0x4e, %al
je 0x184a5
movl -0x30(%rbp), %eax
decl %eax
leaq -0x58(%rbp), %rsi
movl %eax, (%rsi)
movq -0x38(%rbp), %rdi
callq 0xd39e
jmp 0x184a5
movq 0xe5d2(%rip), %rdi      # 0x26fc8
callq 0x30d0
leaq 0x5f74(%rip), %rsi      # 0x1e976
movq %rax, %rdi
callq 0x31d0
movq %rax, %rbx
movl -0x30(%rbp), %esi
decl %esi
pushq $0x1
popq %rdx
movq -0x38(%rbp), %rdi
callq 0xd67c
movq (%rax), %rcx
leaq -0x58(%rbp), %rdi
movq %rax, %rsi
callq *0x8(%rcx)
leaq -0x58(%rbp), %rsi
movq %rbx, %rdi
callq 0x3190
leaq 0x5bde(%rip), %rsi      # 0x1e61c
movq %rax, %rdi
callq 0x31d0
leaq -0x58(%rbp), %rdi
callq 0x30c0
movq 0xe582(%rip), %rbx      # 0x26fd8
leaq -0x29(%rbp), %r14
movabsq $0x80100000801, %r15    # imm = 0x80100000801
movq %rbx, %rdi
movq %r14, %rsi
callq 0x3280
movzbl -0x29(%rbp), %eax
leal -0x4e(%rax), %ecx
cmpl $0x2b, %ecx
ja 0x18a64
btq %rcx, %r15
jae 0x18a64
andb $0x5f, %al
cmpb $0x4e, %al
je 0x184a5
movl -0x30(%rbp), %eax
decl %eax
leaq -0x58(%rbp), %rsi
movl %eax, (%rsi)
movq -0x38(%rbp), %rdi
callq 0xd400
jmp 0x184a5
movq 0xe51d(%rip), %rdi      # 0x26fc8
callq 0x30d0
leaq 0x5e0a(%rip), %rsi      # 0x1e8c1
movq %rax, %rdi
callq 0x31d0
movq %rax, %rbx
movl -0x30(%rbp), %esi
decl %esi
pushq $0x2
popq %rdx
movq -0x38(%rbp), %rdi
callq 0xd67c
movq (%rax), %rcx
leaq -0x58(%rbp), %rdi
movq %rax, %rsi
callq *0x8(%rcx)
leaq -0x58(%rbp), %rsi
movq %rbx, %rdi
callq 0x3190
leaq 0x5a9f(%rip), %rsi      # 0x1e592
movq %rax, %rdi
callq 0x31d0
leaq -0x58(%rbp), %rdi
callq 0x30c0
movq 0xe4cd(%rip), %rbx      # 0x26fd8
leaq -0x29(%rbp), %r14
movabsq $0x80100000801, %r15    # imm = 0x80100000801
movq %rbx, %rdi
movq %r14, %rsi
callq 0x3280
movzbl -0x29(%rbp), %eax
leal -0x4e(%rax), %ecx
cmpl $0x2b, %ecx
ja 0x18b19
btq %rcx, %r15
jae 0x18b19
andb $0x5f, %al
cmpb $0x4e, %al
je 0x184a5
movl -0x30(%rbp), %eax
decl %eax
leaq -0x58(%rbp), %rsi
movl %eax, (%rsi)
movq -0x38(%rbp), %rdi
callq 0xd33c
jmp 0x184a5
jmp 0x18baf
jmp 0x18baf
jmp 0x18baf
jmp 0x18baf
jmp 0x18baf
jmp 0x18baf
jmp 0x18baf
jmp 0x18baf
jmp 0x18baf
jmp 0x18b87
jmp 0x18b87
jmp 0x18b87
jmp 0x18b87
jmp 0x18b87
jmp 0x18b87
jmp 0x18baf
jmp 0x18baf
jmp 0x18baf
jmp 0x18baf
jmp 0x18baf
jmp 0x18baf
jmp 0x18b87
jmp 0x18b87
movq %rax, %rbx
leaq -0x58(%rbp), %rdi
callq 0x30c0
jmp 0x18bb2
jmp 0x18baf
jmp 0x18baf
jmp 0x18baf
jmp 0x18baf
jmp 0x18baf
jmp 0x18baf
jmp 0x18baf
jmp 0x18baf
jmp 0x18baf
jmp 0x18baf
jmp 0x18baf
jmp 0x18baf
jmp 0x18baf
movq %rax, %rbx
pushq $0x20
popq %r14
leaq (%r14,%rbp), %rdi
addq $-0xb0, %rdi
callq 0x30c0
addq $-0x20, %r14
cmpq $-0x20, %r14
jne 0x18bb6
movq %rbx, %rdi
callq 0x3330