// File: brashi[P]PetFera/src/./banco_dados.cpp
// Function: BancoDados::salvarAnimais()
void BancoDados::salvarAnimais() {
    /*if(petshop->getAnimais().size() == 0) {
        throw "Nenhum animal registrado. Geração de arquivo cancelada.";;
    }*/
    ofstream arqDados(animalArq);
    if(arqDados.bad() || arqDados.fail()) {
        throw "Algo deu errado na criação do arquivo de animais.";
    }

    string classe, classificao;

    for(auto& animal : petshop->getAnimais()) {
        classe = Animal::getClasse(animal, true);
        classificao = Animal::getClassificacao(animal, true);
        arqDados << classe << ';' << classificao << ';'
                 << animal->getNome() << ';' << animal->getEspecie() << ';'
                 << animal->getAmeacadoPor() << ';' << animal->getVeterinario()->getNome() << ';'
                 << animal->getTratador()->getNome() << ';'
                 << animal->getPerigoso() << ';';


        switch(strFiltro[classificao]) {
            case 'D':
                arqDados << dynamic_pointer_cast<Domestico>(animal)->getAdestrado() << ';';                
                break;
            case 'E':
                arqDados << dynamic_pointer_cast<Exotico>(animal)->getLocal() << ';';
                break;
            case 'N':
                arqDados << dynamic_pointer_cast<Nativo>(animal)->getRegiao() << ';'
                         << dynamic_pointer_cast<Nativo>(animal)->getLicenca() << ';';
                break;
        }

        switch(strFiltro[classe]) {
            case 'A':
                arqDados << dynamic_pointer_cast<Ave>(animal)->getVoa() << endl;
                break;
            case 'F':
                arqDados << dynamic_pointer_cast<Anfibio>(animal)->getCauda() << ';'
                         << dynamic_pointer_cast<Anfibio>(animal)->getPata() << endl;
                break;
            case 'R':
                arqDados << dynamic_pointer_cast<Reptil>(animal)->getPele() << endl;
                break;
            case 'M':
                arqDados << dynamic_pointer_cast<Mamifero>(animal)->getGestacao() << endl;
                break;
        }


    }

    arqDados.close();
    if(fs::is_empty(animalArq)) {
        fs::remove(animalArq);
        return;
    }
    cout << "Arquivo de animais salvo com sucesso." << endl;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x6a0, %rsp            # imm = 0x6A0
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rsi
movq %rsi, -0x500(%rbp)
addq $0x30, %rsi
leaq -0x208(%rbp), %rdi
movl $0x10, %edx
callq 0x6630
movq -0x208(%rbp), %rax
movq -0x18(%rax), %rax
leaq -0x208(%rbp,%rax), %rdi
callq 0x65d0
movb %al, -0x4f5(%rbp)
jmp 0x7c5f
movb -0x4f5(%rbp), %al
testb $0x1, %al
jne 0x7c97
jmp 0x7c6b
movq -0x208(%rbp), %rax
movq -0x18(%rax), %rax
leaq -0x208(%rbp,%rax), %rdi
callq 0x6030
movb %al, -0x501(%rbp)
jmp 0x7c8b
movb -0x501(%rbp), %al
testb $0x1, %al
jne 0x7c97
jmp 0x7cda
movl $0x8, %edi
callq 0x61e0
movq %rax, %rdi
leaq 0x384a7(%rip), %rax     # 0x40152
movq %rax, (%rdi)
movq 0x5b2f3(%rip), %rsi     # 0x62fa8
xorl %eax, %eax
movl %eax, %edx
callq 0x6570
jmp 0x8aea
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x210(%rbp)
movl %eax, -0x214(%rbp)
jmp 0x8ad2
leaq -0x238(%rbp), %rdi
callq 0x6480
leaq -0x258(%rbp), %rdi
callq 0x6480
movq -0x500(%rbp), %rdi
callq 0xb090
movq %rax, %rsi
leaq -0x278(%rbp), %rdi
callq 0x21800
jmp 0x7d0f
leaq -0x278(%rbp), %rax
movq %rax, -0x260(%rbp)
movq -0x260(%rbp), %rdi
callq 0xb370
movq %rax, -0x280(%rbp)
movq -0x260(%rbp), %rdi
callq 0xb3a0
movq %rax, -0x288(%rbp)
leaq -0x280(%rbp), %rdi
leaq -0x288(%rbp), %rsi
callq 0xb3d0
testb $0x1, %al
jne 0x7d82
leaq -0x278(%rbp), %rdi
callq 0xbae0
jmp 0x8970
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x210(%rbp)
movl %eax, -0x214(%rbp)
jmp 0x8aba
leaq -0x280(%rbp), %rdi
callq 0xb410
movq %rax, -0x290(%rbp)
movq -0x290(%rbp), %rsi
leaq -0x2c0(%rbp), %rdi
movq %rdi, -0x510(%rbp)
callq 0xb430
movq -0x510(%rbp), %rsi
leaq -0x2b0(%rbp), %rdi
movl $0x1, %edx
callq 0x2a420
jmp 0x7dc9
leaq -0x238(%rbp), %rdi
leaq -0x2b0(%rbp), %rsi
movq %rsi, -0x520(%rbp)
callq 0x6400
movq -0x520(%rbp), %rdi
callq 0x6678
leaq -0x2c0(%rbp), %rdi
callq 0xb460
movq -0x290(%rbp), %rsi
leaq -0x2f0(%rbp), %rdi
movq %rdi, -0x518(%rbp)
callq 0xb430
movq -0x518(%rbp), %rsi
leaq -0x2e0(%rbp), %rdi
movl $0x1, %edx
callq 0x29e90
jmp 0x7e2f
leaq -0x258(%rbp), %rdi
leaq -0x2e0(%rbp), %rsi
movq %rsi, -0x530(%rbp)
callq 0x6400
movq -0x530(%rbp), %rdi
callq 0x6678
leaq -0x2f0(%rbp), %rdi
callq 0xb460
leaq -0x208(%rbp), %rdi
leaq -0x238(%rbp), %rsi
callq 0x6300
movq %rax, -0x528(%rbp)
jmp 0x7e7d
movq -0x528(%rbp), %rdi
movl $0x3b, %esi
callq 0x63f0
movq %rax, -0x538(%rbp)
jmp 0x7e97
movq -0x538(%rbp), %rdi
leaq -0x258(%rbp), %rsi
callq 0x6300
movq %rax, -0x540(%rbp)
jmp 0x7eb3
movq -0x540(%rbp), %rdi
movl $0x3b, %esi
callq 0x63f0
movq %rax, -0x548(%rbp)
jmp 0x7ecd
movq -0x290(%rbp), %rdi
callq 0xb480
movq %rax, %rsi
leaq -0x310(%rbp), %rdi
callq 0x297c0
jmp 0x7eea
movq -0x548(%rbp), %rdi
leaq -0x310(%rbp), %rsi
callq 0x6300
movq %rax, -0x550(%rbp)
jmp 0x7f06
movq -0x550(%rbp), %rdi
movl $0x3b, %esi
callq 0x63f0
movq %rax, -0x558(%rbp)
jmp 0x7f20
movq -0x290(%rbp), %rdi
callq 0xb480
movq %rax, %rsi
leaq -0x330(%rbp), %rdi
callq 0x29950
jmp 0x7f3d
movq -0x558(%rbp), %rdi
leaq -0x330(%rbp), %rsi
callq 0x6300
movq %rax, -0x560(%rbp)
jmp 0x7f59
movq -0x560(%rbp), %rdi
movl $0x3b, %esi
callq 0x63f0
movq %rax, -0x568(%rbp)
jmp 0x7f73
movq -0x290(%rbp), %rdi
callq 0xb480
movq %rax, %rsi
leaq -0x350(%rbp), %rdi
callq 0x29ae0
jmp 0x7f90
movq -0x568(%rbp), %rdi
leaq -0x350(%rbp), %rsi
callq 0x6300
movq %rax, -0x570(%rbp)
jmp 0x7fac
movq -0x570(%rbp), %rdi
movl $0x3b, %esi
callq 0x63f0
movq %rax, -0x578(%rbp)
jmp 0x7fc6
movq -0x290(%rbp), %rdi
callq 0xb480
movq %rax, %rsi
leaq -0x380(%rbp), %rdi
callq 0x29c70
jmp 0x7fe3
leaq -0x380(%rbp), %rdi
callq 0xb170
movq %rax, %rsi
leaq -0x370(%rbp), %rdi
callq 0x27920
jmp 0x8000
movq -0x578(%rbp), %rdi
leaq -0x370(%rbp), %rsi
callq 0x6300
movq %rax, -0x580(%rbp)
jmp 0x801c
movq -0x580(%rbp), %rdi
movl $0x3b, %esi
callq 0x63f0
movq %rax, -0x588(%rbp)
jmp 0x8036
movq -0x290(%rbp), %rdi
callq 0xb480
movq %rax, %rsi
leaq -0x3b0(%rbp), %rdi
callq 0x29cd0
jmp 0x8053
leaq -0x3b0(%rbp), %rdi
callq 0xb2d0
movq %rax, %rsi
leaq -0x3a0(%rbp), %rdi
callq 0x27920
jmp 0x8070
movq -0x588(%rbp), %rdi
leaq -0x3a0(%rbp), %rsi
callq 0x6300
movq %rax, -0x590(%rbp)
jmp 0x808c
movq -0x590(%rbp), %rdi
movl $0x3b, %esi
callq 0x63f0
movq %rax, -0x598(%rbp)
jmp 0x80a6
movq -0x290(%rbp), %rdi
callq 0xb480
movq %rax, %rdi
callq 0x29d30
movb %al, -0x599(%rbp)
jmp 0x80c2
movq -0x598(%rbp), %rdi
movb -0x599(%rbp), %al
movzbl %al, %esi
andl $0x1, %esi
callq 0x65b0
movq %rax, -0x5a8(%rbp)
jmp 0x80e3
movq -0x5a8(%rbp), %rdi
movl $0x3b, %esi
callq 0x63f0
jmp 0x80f6
leaq -0x3a0(%rbp), %rdi
callq 0x6678
leaq -0x3b0(%rbp), %rdi
callq 0xb4a0
leaq -0x370(%rbp), %rdi
callq 0x6678
leaq -0x380(%rbp), %rdi
callq 0xb4c0
leaq -0x350(%rbp), %rdi
callq 0x6678
leaq -0x330(%rbp), %rdi
callq 0x6678
leaq -0x310(%rbp), %rdi
callq 0x6678
movq -0x500(%rbp), %rdi
addq $0xa0, %rdi
leaq -0x258(%rbp), %rsi
callq 0xb4e0
movq %rax, -0x5b0(%rbp)
jmp 0x816d
movq -0x5b0(%rbp), %rax
movsbl (%rax), %eax
movl %eax, -0x5b4(%rbp)
subl $0x44, %eax
je 0x82f3
jmp 0x8188
movl -0x5b4(%rbp), %eax
subl $0x45, %eax
je 0x8391
jmp 0x8199
movl -0x5b4(%rbp), %eax
subl $0x4e, %eax
je 0x8457
jmp 0x85e2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x210(%rbp)
movl %eax, -0x214(%rbp)
leaq -0x2c0(%rbp), %rdi
callq 0xb460
jmp 0x895f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x210(%rbp)
movl %eax, -0x214(%rbp)
leaq -0x2f0(%rbp), %rdi
callq 0xb460
jmp 0x895f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x210(%rbp)
movl %eax, -0x214(%rbp)
jmp 0x895f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x210(%rbp)
movl %eax, -0x214(%rbp)
jmp 0x82e2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x210(%rbp)
movl %eax, -0x214(%rbp)
jmp 0x82d6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x210(%rbp)
movl %eax, -0x214(%rbp)
jmp 0x82ca
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x210(%rbp)
movl %eax, -0x214(%rbp)
jmp 0x82be
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x210(%rbp)
movl %eax, -0x214(%rbp)
jmp 0x82b2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x210(%rbp)
movl %eax, -0x214(%rbp)
jmp 0x82a6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x210(%rbp)
movl %eax, -0x214(%rbp)
leaq -0x3a0(%rbp), %rdi
callq 0x6678
leaq -0x3b0(%rbp), %rdi
callq 0xb4a0
leaq -0x370(%rbp), %rdi
callq 0x6678
leaq -0x380(%rbp), %rdi
callq 0xb4c0
leaq -0x350(%rbp), %rdi
callq 0x6678
leaq -0x330(%rbp), %rdi
callq 0x6678
leaq -0x310(%rbp), %rdi
callq 0x6678
jmp 0x895f
movq -0x290(%rbp), %rsi
leaq -0x3c0(%rbp), %rdi
movq %rdi, -0x5c0(%rbp)
callq 0xb510
movq -0x5c0(%rbp), %rdi
callq 0xb5a0
movq %rax, %rdi
callq 0x2c170
movb %al, -0x5b5(%rbp)
jmp 0x8329
movb -0x5b5(%rbp), %al
movzbl %al, %esi
andl $0x1, %esi
leaq -0x208(%rbp), %rdi
callq 0x65b0
movq %rax, -0x5c8(%rbp)
jmp 0x834a
movq -0x5c8(%rbp), %rdi
movl $0x3b, %esi
callq 0x63f0
jmp 0x835d
leaq -0x3c0(%rbp), %rdi
callq 0xb5c0
jmp 0x85e2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x210(%rbp)
movl %eax, -0x214(%rbp)
leaq -0x3c0(%rbp), %rdi
callq 0xb5c0
jmp 0x895f
movq -0x290(%rbp), %rsi
leaq -0x3f0(%rbp), %rdi
movq %rdi, -0x5d0(%rbp)
callq 0xb5e0
movq -0x5d0(%rbp), %rdi
callq 0xb670
movq %rax, %rsi
leaq -0x3e0(%rbp), %rdi
callq 0x2c350
jmp 0x83c8
leaq -0x208(%rbp), %rdi
leaq -0x3e0(%rbp), %rsi
callq 0x6300
movq %rax, -0x5d8(%rbp)
jmp 0x83e4
movq -0x5d8(%rbp), %rdi
movl $0x3b, %esi
callq 0x63f0
jmp 0x83f7
leaq -0x3e0(%rbp), %rdi
callq 0x6678
leaq -0x3f0(%rbp), %rdi
callq 0xb690
jmp 0x85e2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x210(%rbp)
movl %eax, -0x214(%rbp)
jmp 0x8446
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x210(%rbp)
movl %eax, -0x214(%rbp)
leaq -0x3e0(%rbp), %rdi
callq 0x6678
leaq -0x3f0(%rbp), %rdi
callq 0xb690
jmp 0x895f
movq -0x290(%rbp), %rsi
leaq -0x420(%rbp), %rdi
movq %rdi, -0x5e0(%rbp)
callq 0xb6b0
movq -0x5e0(%rbp), %rdi
callq 0xb740
movq %rax, %rsi
leaq -0x410(%rbp), %rdi
callq 0x3bbf0
jmp 0x848e
leaq -0x208(%rbp), %rdi
leaq -0x410(%rbp), %rsi
callq 0x6300
movq %rax, -0x5e8(%rbp)
jmp 0x84aa
movq -0x5e8(%rbp), %rdi
movl $0x3b, %esi
callq 0x63f0
movq %rax, -0x5f0(%rbp)
jmp 0x84c4
movq -0x290(%rbp), %rsi
leaq -0x450(%rbp), %rdi
movq %rdi, -0x5f8(%rbp)
callq 0xb6b0
movq -0x5f8(%rbp), %rdi
callq 0xb740
movq %rax, %rsi
leaq -0x440(%rbp), %rdi
callq 0x3ba60
jmp 0x84fb
movq -0x5f0(%rbp), %rdi
leaq -0x440(%rbp), %rsi
callq 0x6300
movq %rax, -0x600(%rbp)
jmp 0x8517
movq -0x600(%rbp), %rdi
movl $0x3b, %esi
callq 0x63f0
jmp 0x852a
leaq -0x440(%rbp), %rdi
callq 0x6678
leaq -0x450(%rbp), %rdi
callq 0xb760
leaq -0x410(%rbp), %rdi
callq 0x6678
leaq -0x420(%rbp), %rdi
callq 0xb760
jmp 0x85e2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x210(%rbp)
movl %eax, -0x214(%rbp)
jmp 0x85d1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x210(%rbp)
movl %eax, -0x214(%rbp)
jmp 0x85c5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x210(%rbp)
movl %eax, -0x214(%rbp)
jmp 0x85b9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x210(%rbp)
movl %eax, -0x214(%rbp)
leaq -0x440(%rbp), %rdi
callq 0x6678
leaq -0x450(%rbp), %rdi
callq 0xb760
leaq -0x410(%rbp), %rdi
callq 0x6678
leaq -0x420(%rbp), %rdi
callq 0xb760
jmp 0x895f
movq -0x500(%rbp), %rdi
addq $0xa0, %rdi
leaq -0x238(%rbp), %rsi
callq 0xb4e0
movq %rax, -0x608(%rbp)
jmp 0x8605
movq -0x608(%rbp), %rax
movsbl (%rax), %eax
addl $-0x41, %eax
movl %eax, %ecx
movq %rcx, -0x610(%rbp)
subl $0x11, %eax
ja 0x894c
movq -0x610(%rbp), %rax
leaq 0x379d2(%rip), %rcx     # 0x40004
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq -0x290(%rbp), %rsi
leaq -0x460(%rbp), %rdi
movq %rdi, -0x620(%rbp)
callq 0xb780
movq -0x620(%rbp), %rdi
callq 0xb810
movq %rax, %rdi
callq 0x3bf90
movb %al, -0x611(%rbp)
jmp 0x8671
movb -0x611(%rbp), %al
movzbl %al, %esi
andl $0x1, %esi
leaq -0x208(%rbp), %rdi
callq 0x65b0
movq %rax, -0x628(%rbp)
jmp 0x8692
movq -0x628(%rbp), %rdi
movq 0x5a900(%rip), %rsi     # 0x62fa0
callq 0x6360
jmp 0x86a7
leaq -0x460(%rbp), %rdi
callq 0xb830
jmp 0x894c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x210(%rbp)
movl %eax, -0x214(%rbp)
leaq -0x460(%rbp), %rdi
callq 0xb830
jmp 0x895f
movq -0x290(%rbp), %rsi
leaq -0x470(%rbp), %rdi
movq %rdi, -0x638(%rbp)
callq 0xb850
movq -0x638(%rbp), %rdi
callq 0xb8e0
movq %rax, %rdi
callq 0x3e670
movb %al, -0x629(%rbp)
jmp 0x8711
movb -0x629(%rbp), %al
movzbl %al, %esi
andl $0x1, %esi
leaq -0x208(%rbp), %rdi
callq 0x65b0
movq %rax, -0x640(%rbp)
jmp 0x8732
movq -0x640(%rbp), %rdi
movl $0x3b, %esi
callq 0x63f0
movq %rax, -0x648(%rbp)
jmp 0x874c
movq -0x290(%rbp), %rsi
leaq -0x480(%rbp), %rdi
movq %rdi, -0x658(%rbp)
callq 0xb850
movq -0x658(%rbp), %rdi
callq 0xb8e0
movq %rax, %rdi
callq 0x3e7e0
movb %al, -0x649(%rbp)
jmp 0x8782
movq -0x648(%rbp), %rdi
movb -0x649(%rbp), %al
movzbl %al, %esi
andl $0x1, %esi
callq 0x65b0
movq %rax, -0x660(%rbp)
jmp 0x87a3
movq -0x660(%rbp), %rdi
movq 0x5a7ef(%rip), %rsi     # 0x62fa0
callq 0x6360
jmp 0x87b8
leaq -0x480(%rbp), %rdi
callq 0xb900
leaq -0x470(%rbp), %rdi
callq 0xb900
jmp 0x894c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x210(%rbp)
movl %eax, -0x214(%rbp)
jmp 0x8807
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x210(%rbp)
movl %eax, -0x214(%rbp)
leaq -0x480(%rbp), %rdi
callq 0xb900
leaq -0x470(%rbp), %rdi
callq 0xb900
jmp 0x895f
movq -0x290(%rbp), %rsi
leaq -0x490(%rbp), %rdi
movq %rdi, -0x670(%rbp)
callq 0xb920
movq -0x670(%rbp), %rdi
callq 0xb9b0
movq %rax, %rdi
callq 0x3d930
movl %eax, -0x664(%rbp)
jmp 0x884e
movl -0x664(%rbp), %esi
leaq -0x208(%rbp), %rdi
callq 0x6580
movq %rax, -0x678(%rbp)
jmp 0x8869
movq -0x678(%rbp), %rdi
movq 0x5a729(%rip), %rsi     # 0x62fa0
callq 0x6360
jmp 0x887e
leaq -0x490(%rbp), %rdi
callq 0xb9d0
jmp 0x894c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x210(%rbp)
movl %eax, -0x214(%rbp)
leaq -0x490(%rbp), %rdi
callq 0xb9d0
jmp 0x895f
movq -0x290(%rbp), %rsi
leaq -0x4a0(%rbp), %rdi
movq %rdi, -0x688(%rbp)
callq 0xb9f0
movq -0x688(%rbp), %rdi
callq 0xba80
movq %rax, %rdi
callq 0x3cc70
movb %al, -0x679(%rbp)
jmp 0x88e8
movb -0x679(%rbp), %al
movzbl %al, %esi
andl $0x1, %esi
leaq -0x208(%rbp), %rdi
callq 0x65b0
movq %rax, -0x690(%rbp)
jmp 0x8909
movq -0x690(%rbp), %rdi
movq 0x5a689(%rip), %rsi     # 0x62fa0
callq 0x6360
jmp 0x891e
leaq -0x4a0(%rbp), %rdi
callq 0xbaa0
jmp 0x894c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x210(%rbp)
movl %eax, -0x214(%rbp)
leaq -0x4a0(%rbp), %rdi
callq 0xbaa0
jmp 0x895f
jmp 0x894e
leaq -0x280(%rbp), %rdi
callq 0xbac0
jmp 0x7d43
leaq -0x278(%rbp), %rdi
callq 0xbae0
jmp 0x8aba
leaq -0x208(%rbp), %rdi
callq 0x64a0
jmp 0x897e
movq -0x500(%rbp), %rsi
addq $0x30, %rsi
leaq -0x4c8(%rbp), %rdi
movl $0x2, %edx
callq 0xaea0
jmp 0x899c
leaq -0x4c8(%rbp), %rdi
callq 0x6610
movb %al, -0x691(%rbp)
jmp 0x89b0
leaq -0x4c8(%rbp), %rdi
callq 0xaf80
movb -0x691(%rbp), %al
testb $0x1, %al
jne 0x89cb
jmp 0x8a52
movq -0x500(%rbp), %rsi
addq $0x30, %rsi
leaq -0x4f0(%rbp), %rdi
movl $0x2, %edx
callq 0xaea0
jmp 0x89e9
leaq -0x4f0(%rbp), %rdi
callq 0x62c0
jmp 0x89f7
leaq -0x4f0(%rbp), %rdi
callq 0xaf80
movl $0x1, -0x4f4(%rbp)
jmp 0x8a8d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x210(%rbp)
movl %eax, -0x214(%rbp)
leaq -0x4c8(%rbp), %rdi
callq 0xaf80
jmp 0x8aba
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x210(%rbp)
movl %eax, -0x214(%rbp)
leaq -0x4f0(%rbp), %rdi
callq 0xaf80
jmp 0x8aba
movq 0x5a56f(%rip), %rdi     # 0x62fc8
leaq 0x37726(%rip), %rsi     # 0x40186
callq 0x6310
movq %rax, -0x6a0(%rbp)
jmp 0x8a6e
movq -0x6a0(%rbp), %rdi
movq 0x5a524(%rip), %rsi     # 0x62fa0
callq 0x6360
jmp 0x8a83
movl $0x0, -0x4f4(%rbp)
leaq -0x258(%rbp), %rdi
callq 0x6678
leaq -0x238(%rbp), %rdi
callq 0x6678
leaq -0x208(%rbp), %rdi
callq 0x64e0
addq $0x6a0, %rsp            # imm = 0x6A0
popq %rbp
retq
leaq -0x258(%rbp), %rdi
callq 0x6678
leaq -0x238(%rbp), %rdi
callq 0x6678
leaq -0x208(%rbp), %rdi
callq 0x64e0
movq -0x210(%rbp), %rdi
callq 0x6590
nopw (%rax,%rax)