// File: Matteo-Grellier[P]RPG/main.cpp
// Function: main
int main(int argc, char const *argv[])
{
    srand(time(NULL));

    try {

        Menu::start();

        //characters
        Mage mage("Mage");
        Barbarian barbarian("Barbarian");
        Priest priest("Priest");
        Monster monster1("monster1");
        Monster monster2("monster2");
        Monster monster3("monster3");

        Potion bigPotion(1, 300);
        Potion mediumPotion(3, 100);
        Potion littlePotion(6, 50);
        Character::potionsList.push_back(&bigPotion);
        Character::potionsList.push_back(&mediumPotion);
        Character::potionsList.push_back(&littlePotion);

        string characterName;
        string charactersType[3] = {"Mage", "Barbarian", "Priest"};

        //create characters and select names
        for (int i = 0; i < 3; i++) {
            Menu::devToScreen(
                "",
                "Select a name for your " + charactersType[i] + " character",
                ""
            );

            cout << Menu::endLine;
            cin >> characterName;

            if (i == 0) {
                mage.name = characterName;

            } else if (i == 1) {
                barbarian.name = characterName;

            } else {
                priest.name = characterName;
            }
        }

        
        //faire des tours tant que tt le monde n'est pas mort
        while(!Menu::isEndOfCombat()) {
            Menu::turn();
        }
    }
    catch(IllegalFury& illegalF){
        cout << "An illegal barbarian fury operation occured : " << illegalF.what() << endl;
    }
    catch(EmptyPotion& ep){
        cout << "An illegal drink operation occured : " << ep.what() << endl;
    }
    catch(std::exception& e){
        cout << "An exception occured : " << e.what() << endl;
    }

    Menu::devToScreen("","End of combat","");

    return 0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x5d0, %rsp            # imm = 0x5D0
movl $0x0, -0x4(%rbp)
movl %edi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
xorl %eax, %eax
movl %eax, %edi
callq 0x3210
movl %eax, %edi
callq 0x3220
callq 0x8da0
jmp 0x36f0
leaq -0x91(%rbp), %rdi
movq %rdi, -0x4c8(%rbp)
callq 0x33a0
movq -0x4c8(%rbp), %rdx
leaq 0xa8f3(%rip), %rsi      # 0xe004
leaq -0x90(%rbp), %rdi
callq 0x4500
jmp 0x371f
leaq -0x70(%rbp), %rdi
leaq -0x90(%rbp), %rsi
callq 0x45b0
jmp 0x3731
leaq -0x90(%rbp), %rdi
callq 0x3418
leaq -0x91(%rbp), %rdi
callq 0x3280
leaq -0x109(%rbp), %rdi
movq %rdi, -0x4d0(%rbp)
callq 0x33a0
movq -0x4d0(%rbp), %rdx
leaq 0xa89f(%rip), %rsi      # 0xe009
leaq -0x108(%rbp), %rdi
callq 0x4500
jmp 0x3778
leaq -0xe8(%rbp), %rdi
leaq -0x108(%rbp), %rsi
callq 0x7930
jmp 0x378d
leaq -0x108(%rbp), %rdi
callq 0x3418
leaq -0x109(%rbp), %rdi
callq 0x3280
leaq -0x181(%rbp), %rdi
movq %rdi, -0x4d8(%rbp)
callq 0x33a0
movq -0x4d8(%rbp), %rdx
leaq 0xa84d(%rip), %rsi      # 0xe013
leaq -0x180(%rbp), %rdi
callq 0x4500
jmp 0x37d4
leaq -0x160(%rbp), %rdi
leaq -0x180(%rbp), %rsi
callq 0x8550
jmp 0x37e9
leaq -0x180(%rbp), %rdi
callq 0x3418
leaq -0x181(%rbp), %rdi
callq 0x3280
leaq -0x1f1(%rbp), %rdi
movq %rdi, -0x4e0(%rbp)
callq 0x33a0
movq -0x4e0(%rbp), %rdx
leaq 0xa7f8(%rip), %rsi      # 0xe01a
leaq -0x1f0(%rbp), %rdi
callq 0x4500
jmp 0x3830
leaq -0x1d0(%rbp), %rdi
leaq -0x1f0(%rbp), %rsi
callq 0x4660
jmp 0x3845
leaq -0x1f0(%rbp), %rdi
callq 0x3418
leaq -0x1f1(%rbp), %rdi
callq 0x3280
leaq -0x261(%rbp), %rdi
movq %rdi, -0x4e8(%rbp)
callq 0x33a0
movq -0x4e8(%rbp), %rdx
leaq 0xa7a5(%rip), %rsi      # 0xe023
leaq -0x260(%rbp), %rdi
callq 0x4500
jmp 0x388c
leaq -0x240(%rbp), %rdi
leaq -0x260(%rbp), %rsi
callq 0x4660
jmp 0x38a1
leaq -0x260(%rbp), %rdi
callq 0x3418
leaq -0x261(%rbp), %rdi
callq 0x3280
leaq -0x2d1(%rbp), %rdi
movq %rdi, -0x4f0(%rbp)
callq 0x33a0
movq -0x4f0(%rbp), %rdx
leaq 0xa752(%rip), %rsi      # 0xe02c
leaq -0x2d0(%rbp), %rdi
callq 0x4500
jmp 0x38e8
leaq -0x2b0(%rbp), %rdi
leaq -0x2d0(%rbp), %rsi
callq 0x4660
jmp 0x38fd
leaq -0x2d0(%rbp), %rdi
callq 0x3418
leaq -0x2d1(%rbp), %rdi
callq 0x3280
leaq -0x2dc(%rbp), %rdi
movl $0x1, %esi
movl $0x12c, %edx            # imm = 0x12C
callq 0x4720
jmp 0x392d
leaq -0x2e4(%rbp), %rdi
movl $0x3, %esi
movl $0x64, %edx
callq 0x4720
jmp 0x3945
leaq -0x2ec(%rbp), %rdi
movl $0x6, %esi
movl $0x32, %edx
callq 0x4720
jmp 0x395d
leaq -0x2dc(%rbp), %rax
movq %rax, -0x2f8(%rbp)
leaq 0x108ee(%rip), %rdi     # 0x14260
leaq -0x2f8(%rbp), %rsi
callq 0x4740
jmp 0x3980
leaq -0x2e4(%rbp), %rax
movq %rax, -0x300(%rbp)
leaq 0x108cb(%rip), %rdi     # 0x14260
leaq -0x300(%rbp), %rsi
callq 0x4740
jmp 0x39a3
leaq -0x2ec(%rbp), %rax
movq %rax, -0x308(%rbp)
leaq 0x108a8(%rip), %rdi     # 0x14260
leaq -0x308(%rbp), %rsi
callq 0x4740
jmp 0x39c6
leaq -0x328(%rbp), %rdi
callq 0x32f0
movb $0x1, -0x39c(%rbp)
leaq -0x390(%rbp), %rax
movq %rax, -0x500(%rbp)
movq %rax, -0x398(%rbp)
leaq -0x399(%rbp), %rdi
movq %rdi, -0x4f8(%rbp)
callq 0x33a0
movq -0x500(%rbp), %rdi
movq -0x4f8(%rbp), %rdx
leaq 0xa5ee(%rip), %rsi      # 0xe004
callq 0x4500
jmp 0x3a1d
leaq -0x370(%rbp), %rax
movq %rax, -0x510(%rbp)
movq %rax, -0x398(%rbp)
leaq -0x39a(%rbp), %rdi
movq %rdi, -0x508(%rbp)
callq 0x33a0
movq -0x510(%rbp), %rdi
movq -0x508(%rbp), %rdx
leaq 0xa5af(%rip), %rsi      # 0xe009
callq 0x4500
jmp 0x3a61
leaq -0x350(%rbp), %rax
movq %rax, -0x520(%rbp)
movq %rax, -0x398(%rbp)
leaq -0x39b(%rbp), %rdi
movq %rdi, -0x518(%rbp)
callq 0x33a0
movq -0x520(%rbp), %rdi
movq -0x518(%rbp), %rdx
leaq 0xa575(%rip), %rsi      # 0xe013
callq 0x4500
jmp 0x3aa5
movb $0x0, -0x39c(%rbp)
leaq -0x39b(%rbp), %rdi
callq 0x3280
leaq -0x39a(%rbp), %rdi
callq 0x3280
leaq -0x399(%rbp), %rdi
callq 0x3280
movl $0x0, -0x3a0(%rbp)
cmpl $0x3, -0x3a0(%rbp)
jge 0x3f41
leaq -0x3c1(%rbp), %rdi
movq %rdi, -0x528(%rbp)
callq 0x33a0
movq -0x528(%rbp), %rdx
leaq 0xaa0a(%rip), %rsi      # 0xe512
leaq -0x3c0(%rbp), %rdi
callq 0x4500
jmp 0x3b16
movslq -0x3a0(%rbp), %rax
shlq $0x5, %rax
leaq -0x390(%rbp,%rax), %rdx
leaq 0xa505(%rip), %rsi      # 0xe035
leaq -0x408(%rbp), %rdi
callq 0x47c0
jmp 0x3b3e
leaq 0xa508(%rip), %rdx      # 0xe04d
leaq -0x3e8(%rbp), %rdi
leaq -0x408(%rbp), %rsi
callq 0x4770
jmp 0x3b5a
leaq -0x429(%rbp), %rdi
movq %rdi, -0x530(%rbp)
callq 0x33a0
movq -0x530(%rbp), %rdx
leaq 0xa997(%rip), %rsi      # 0xe512
leaq -0x428(%rbp), %rdi
callq 0x4500
jmp 0x3b89
leaq -0x3c0(%rbp), %rdi
leaq -0x3e8(%rbp), %rsi
leaq -0x428(%rbp), %rdx
callq 0x94f0
jmp 0x3ba5
leaq -0x428(%rbp), %rdi
callq 0x3418
leaq -0x429(%rbp), %rdi
callq 0x3280
leaq -0x3e8(%rbp), %rdi
callq 0x3418
leaq -0x408(%rbp), %rdi
callq 0x3418
leaq -0x3c0(%rbp), %rdi
callq 0x3418
leaq -0x3c1(%rbp), %rdi
callq 0x3280
movq 0x103dc(%rip), %rdi     # 0x13fd0
leaq 0x1068d(%rip), %rsi     # 0x14288
callq 0x3200
jmp 0x3c02
movq 0x103d7(%rip), %rdi     # 0x13fe0
leaq -0x328(%rbp), %rsi
callq 0x32d0
jmp 0x3c17
cmpl $0x0, -0x3a0(%rbp)
jne 0x3ef2
leaq -0x68(%rbp), %rdi
leaq -0x328(%rbp), %rsi
callq 0x3040
jmp 0x3c36
jmp 0x3f2b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
jmp 0x40a4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
jmp 0x3c72
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
leaq -0x90(%rbp), %rdi
callq 0x3418
leaq -0x91(%rbp), %rdi
callq 0x3280
jmp 0x40a4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
jmp 0x3ca9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
leaq -0x108(%rbp), %rdi
callq 0x3418
leaq -0x109(%rbp), %rdi
callq 0x3280
jmp 0x409b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
jmp 0x3ce0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
leaq -0x180(%rbp), %rdi
callq 0x3418
leaq -0x181(%rbp), %rdi
callq 0x3280
jmp 0x408f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
jmp 0x3d17
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
leaq -0x1f0(%rbp), %rdi
callq 0x3418
leaq -0x1f1(%rbp), %rdi
callq 0x3280
jmp 0x4083
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
jmp 0x3d4e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
leaq -0x260(%rbp), %rdi
callq 0x3418
leaq -0x261(%rbp), %rdi
callq 0x3280
jmp 0x4077
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
jmp 0x3d85
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
leaq -0x2d0(%rbp), %rdi
callq 0x3418
leaq -0x2d1(%rbp), %rdi
callq 0x3280
jmp 0x406b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
jmp 0x405f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
jmp 0x3de7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
jmp 0x3ddb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
leaq -0x39b(%rbp), %rdi
callq 0x3280
leaq -0x39a(%rbp), %rdi
callq 0x3280
leaq -0x399(%rbp), %rdi
callq 0x3280
testb $0x1, -0x39c(%rbp)
jne 0x3dfe
jmp 0x3e4b
movq -0x398(%rbp), %rax
leaq -0x390(%rbp), %rcx
cmpq %rax, %rcx
movq %rax, -0x538(%rbp)
je 0x3e49
movq -0x538(%rbp), %rdi
addq $-0x20, %rdi
movq %rdi, -0x540(%rbp)
callq 0x3418
movq -0x540(%rbp), %rax
leaq -0x390(%rbp), %rcx
cmpq %rcx, %rax
movq %rax, -0x538(%rbp)
jne 0x3e18
jmp 0x3e4b
jmp 0x4053
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
jmp 0x3ed0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
jmp 0x3ec4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
jmp 0x3eb8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
jmp 0x3ea0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
leaq -0x428(%rbp), %rdi
callq 0x3418
leaq -0x429(%rbp), %rdi
callq 0x3280
leaq -0x3e8(%rbp), %rdi
callq 0x3418
leaq -0x408(%rbp), %rdi
callq 0x3418
leaq -0x3c0(%rbp), %rdi
callq 0x3418
leaq -0x3c1(%rbp), %rdi
callq 0x3280
jmp 0x4007
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
jmp 0x4007
cmpl $0x1, -0x3a0(%rbp)
jne 0x3f12
leaq -0xe0(%rbp), %rdi
leaq -0x328(%rbp), %rsi
callq 0x3040
jmp 0x3f10
jmp 0x3f29
leaq -0x158(%rbp), %rdi
leaq -0x328(%rbp), %rsi
callq 0x3040
jmp 0x3f27
jmp 0x3f29
jmp 0x3f2b
jmp 0x3f2d
movl -0x3a0(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x3a0(%rbp)
jmp 0x3ada
jmp 0x3f43
callq 0x99d0
movb %al, -0x541(%rbp)
jmp 0x3f50
movb -0x541(%rbp), %al
xorb $-0x1, %al
testb $0x1, %al
jne 0x3f5e
jmp 0x3f67
callq 0x96c0
jmp 0x3f65
jmp 0x3f43
leaq -0x390(%rbp), %rax
movq %rax, -0x558(%rbp)
addq $0x60, %rax
movq %rax, -0x550(%rbp)
movq -0x550(%rbp), %rdi
addq $-0x20, %rdi
movq %rdi, -0x560(%rbp)
callq 0x3418
movq -0x558(%rbp), %rcx
movq -0x560(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x550(%rbp)
jne 0x3f80
leaq -0x328(%rbp), %rdi
callq 0x3418
leaq -0x2b0(%rbp), %rdi
callq 0x48d0
leaq -0x240(%rbp), %rdi
callq 0x48d0
leaq -0x1d0(%rbp), %rdi
callq 0x48d0
leaq -0x160(%rbp), %rdi
callq 0x48f0
leaq -0xe8(%rbp), %rdi
callq 0x4910
leaq -0x70(%rbp), %rdi
callq 0x4930
jmp 0x4128
leaq -0x390(%rbp), %rax
movq %rax, -0x570(%rbp)
addq $0x60, %rax
movq %rax, -0x568(%rbp)
movq -0x568(%rbp), %rdi
addq $-0x20, %rdi
movq %rdi, -0x578(%rbp)
callq 0x3418
movq -0x570(%rbp), %rcx
movq -0x578(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x568(%rbp)
jne 0x4020
jmp 0x4053
leaq -0x328(%rbp), %rdi
callq 0x3418
leaq -0x2b0(%rbp), %rdi
callq 0x48d0
leaq -0x240(%rbp), %rdi
callq 0x48d0
leaq -0x1d0(%rbp), %rdi
callq 0x48d0
leaq -0x160(%rbp), %rdi
callq 0x48f0
leaq -0xe8(%rbp), %rdi
callq 0x4910
leaq -0x70(%rbp), %rdi
callq 0x4930
movl -0x1c(%rbp), %eax
movl %eax, -0x57c(%rbp)
movl $0x3, %ecx
cmpl %ecx, %eax
jne 0x4224
movq -0x18(%rbp), %rdi
callq 0x30e0
movq %rax, -0x448(%rbp)
movq 0xfeff(%rip), %rdi      # 0x13fd0
leaq 0x9fbe(%rip), %rsi      # 0xe096
callq 0x3230
movq %rax, -0x588(%rbp)
jmp 0x40e6
movq -0x448(%rbp), %rdi
movq (%rdi), %rax
movq 0x10(%rax), %rax
callq *%rax
movq -0x588(%rbp), %rdi
movq %rax, %rsi
callq 0x3230
movq %rax, -0x590(%rbp)
jmp 0x410e
movq -0x590(%rbp), %rdi
movq 0xfe8c(%rip), %rsi      # 0x13fa8
callq 0x3260
jmp 0x4123
callq 0x3360
leaq -0x469(%rbp), %rdi
movq %rdi, -0x598(%rbp)
callq 0x33a0
movq -0x598(%rbp), %rdx
leaq 0xa3c9(%rip), %rsi      # 0xe512
leaq -0x468(%rbp), %rdi
callq 0x4500
jmp 0x4157
leaq -0x491(%rbp), %rdi
movq %rdi, -0x5a0(%rbp)
callq 0x33a0
movq -0x5a0(%rbp), %rdx
leaq 0x9f4d(%rip), %rsi      # 0xe0c5
leaq -0x490(%rbp), %rdi
callq 0x4500
jmp 0x4186
leaq -0x4b9(%rbp), %rdi
movq %rdi, -0x5a8(%rbp)
callq 0x33a0
movq -0x5a8(%rbp), %rdx
leaq 0xa36b(%rip), %rsi      # 0xe512
leaq -0x4b8(%rbp), %rdi
callq 0x4500
jmp 0x41b5
leaq -0x468(%rbp), %rdi
leaq -0x490(%rbp), %rsi
leaq -0x4b8(%rbp), %rdx
callq 0x94f0
jmp 0x41d1
leaq -0x4b8(%rbp), %rdi
callq 0x3418
leaq -0x4b9(%rbp), %rdi
callq 0x3280
leaq -0x490(%rbp), %rdi
callq 0x3418
leaq -0x491(%rbp), %rdi
callq 0x3280
leaq -0x468(%rbp), %rdi
callq 0x3418
leaq -0x469(%rbp), %rdi
callq 0x3280
xorl %eax, %eax
addq $0x5d0, %rsp            # imm = 0x5D0
popq %rbp
retq
movl -0x57c(%rbp), %eax
movl $0x2, %ecx
cmpl %ecx, %eax
jne 0x42a6
movq -0x18(%rbp), %rdi
callq 0x30e0
movq %rax, -0x440(%rbp)
movq 0xfd86(%rip), %rdi      # 0x13fd0
leaq 0x9e1f(%rip), %rsi      # 0xe070
callq 0x3230
movq %rax, -0x5b0(%rbp)
jmp 0x425f
movq -0x440(%rbp), %rdi
movq (%rdi), %rax
movq 0x10(%rax), %rax
callq *%rax
movq -0x5b0(%rbp), %rdi
movq %rax, %rsi
callq 0x3230
movq %rax, -0x5b8(%rbp)
jmp 0x4287
movq -0x5b8(%rbp), %rdi
movq 0xfd13(%rip), %rsi      # 0x13fa8
callq 0x3260
jmp 0x429c
callq 0x3360
jmp 0x4128
movl -0x57c(%rbp), %eax
movl $0x1, %ecx
cmpl %ecx, %eax
jne 0x43ef
movq -0x18(%rbp), %rdi
callq 0x30e0
movq %rax, -0x438(%rbp)
movq 0xfd00(%rip), %rdi      # 0x13fd0
leaq 0x9d81(%rip), %rsi      # 0xe058
callq 0x3230
movq %rax, -0x5c0(%rbp)
jmp 0x42e5
movq -0x438(%rbp), %rdi
movq (%rdi), %rax
movq 0x10(%rax), %rax
callq *%rax
movq -0x5c0(%rbp), %rdi
movq %rax, %rsi
callq 0x3230
movq %rax, -0x5c8(%rbp)
jmp 0x430d
movq -0x5c8(%rbp), %rdi
movq 0xfc8d(%rip), %rsi      # 0x13fa8
callq 0x3260
jmp 0x4322
callq 0x3360
jmp 0x4128
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
callq 0x3360
jmp 0x433f
jmp 0x43ef
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
callq 0x3360
jmp 0x4357
jmp 0x43ef
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
callq 0x3360
jmp 0x436f
jmp 0x43ef
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
jmp 0x43e3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
jmp 0x43cb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
jmp 0x43b3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
leaq -0x4b8(%rbp), %rdi
callq 0x3418
leaq -0x4b9(%rbp), %rdi
callq 0x3280
leaq -0x490(%rbp), %rdi
callq 0x3418
leaq -0x491(%rbp), %rdi
callq 0x3280
leaq -0x468(%rbp), %rdi
callq 0x3418
leaq -0x469(%rbp), %rdi
callq 0x3280
movq -0x18(%rbp), %rdi
callq 0x3390
movq %rax, %rdi
callq 0x4950