// File: brashi[P]PetFera/src/./petshop.cpp
// Function: Petshop::atualizarAnimal()
void Petshop::atualizarAnimal() {
    string nome, pessoa;
    bool trocarHerancas = false, trocarClasse = false, trocarCategoria = false;
    long unsigned int idPessoa;

    shared_ptr<Animal> animal;
    long unsigned int num;

    // Configuração do texto acima dos campos de alteração
    string updateText = "Alterar: (para não alterar mantenha em branco)";

    cout << endl << "Animais registrados: " << endl;
    this->listarAnimais(true);
    cout << endl << "Digite o ID do animal a ser alterado: ";
    getline(cin, nome);
    num = stoi(nome);
    if(num >= 0 && num < this->animais.size())
        animal = this->animais[num];
    else
        throw "Animal não existe!";

    // "Sub-classes" anteriores
    string classeAnterior = Animal::getClasse(animal, true);
    string categoriaAnterior = Animal::getClassificacao(animal, true);

    cout << endl << updateText;
    string classe = animal->setClasse();
    if(!classe.empty() && classe != classeAnterior)
        trocarClasse = true;
    else
        classe = classeAnterior;

    cout << endl << updateText;
    string categoria = animal->setClassificacao();
    if(!categoria.empty() && categoria != categoriaAnterior)
        trocarCategoria = true;
    else
        categoria = categoriaAnterior;

    if(trocarClasse || trocarCategoria)
        trocarHerancas = true;

    // Animal que será atualizado *de facto*
    shared_ptr<Animal> atualizar;

    if(trocarHerancas)
        atualizar = mapa.aMap[classe + categoria]();
    else
        atualizar = animal;

    cout << endl << updateText;
    if(!atualizar->setNome() && trocarHerancas)
        atualizar->setNome(animal->getNome());

    cout << endl << updateText;
    if(!atualizar->setEspecie() && trocarHerancas)
        atualizar->setEspecie(animal->getEspecie());

    cout << endl << updateText;
    if(!atualizar->setAmeacadoPor() && trocarHerancas)
        atualizar->setAmeacadoPor(animal->getAmeacadoPor());

    // Veterinário
    this->listarVeterinarios();
    cout << endl << updateText;
    cout << endl << "Digite o ID do veterinário responsável: " << endl;
    getline(cin, pessoa);
    if(pessoa.size() == 0 && trocarHerancas)
        atualizar->setVeterinario(animal->getVeterinario());
    else if(pessoa.size() != 0) {
        idPessoa = stoi(pessoa);

        // Pela lista de vet. ser em petshop o tratamento se dá aqui, não no setter
        if(idPessoa >= 0 && idPessoa < this->veterinarios.size())
            atualizar->setVeterinario(this->veterinarios[idPessoa]);
        else if(trocarHerancas)
            atualizar->setVeterinario(animal->getVeterinario());
    }

    cout << endl << updateText;
    if(!atualizar->setPerigoso() && trocarHerancas)
        atualizar->setPerigoso(animal->getPerigoso());

    // Classe
    if(classe == "ave") { // Ave
        shared_ptr<Ave> classe = dynamic_pointer_cast< Ave >(atualizar);

        cout << endl << updateText;
        if(!classe->setVoa())
            if(trocarClasse)
                throw "Para troca de classes é necessário informar tal informação. Operação cancelada";

    } else if(classe == "mam") { // Mamífero
        shared_ptr<Mamifero> classe = dynamic_pointer_cast< Mamifero >(atualizar);
    
        cout << endl << updateText;
        if(!classe->setGestacao())
            if(trocarClasse)
                throw "Para troca de classes é necessário informar tal informação. Operação cancelada";

    } else if(classe == "rep") { // Réptil
        shared_ptr<Reptil> classe = dynamic_pointer_cast< Reptil >(atualizar);

        cout << endl << updateText;
        if(!classe->setPele())
            if(trocarClasse)
                throw "Para troca de classes é necessário informar tal informação. Operação cancelada";

    } else if(classe == "anf") { // Anfíbio
        shared_ptr<Anfibio> classe = dynamic_pointer_cast< Anfibio >(atualizar);

        cout << endl << updateText;
        if(!classe->setCauda())
            if(trocarClasse)
                throw "Para troca de classes é necessário informar tal informação. Operação cancelada";

        cout << endl << updateText;
        if(!classe->setPata())
            if(trocarClasse)
                throw "Para troca de classes é necessário informar tal informação. Operação cancelada";
    }

    // Tratador
    this->listarTratadores();
    cout << endl << updateText;
    cout << endl << "Digite o ID do tratador responsável: " << endl;
    getline(cin, pessoa);
    if(pessoa.size() == 0 && trocarHerancas)
        atualizar->setTratador(animal->getTratador());
    else if(pessoa.size() != 0) {
        idPessoa = stoi(pessoa);

        // Pela lista de trt. ser em petshop o tratamento se dá aqui, não no setter
        if(idPessoa >= 0 && idPessoa < this->tratadores.size())
            atualizar->setTratador(this->tratadores[idPessoa]);
        else if(trocarHerancas)
            atualizar->setTratador(animal->getTratador());
    }

    // Classificação
    if(categoria == "N") { // Silvestre Nativo
        shared_ptr<Nativo> categoria = dynamic_pointer_cast< Nativo >(atualizar);

        cout << endl << updateText;
        if(!categoria->setLicenca())
            if(trocarCategoria)
                throw "Para troca de categorias é necessário informar tal informação. Operação cancelada";
        
        cout << endl << updateText;
        if(!categoria->setRegiao())
            if(trocarCategoria)
                throw "Para troca de categorias é necessário informar tal informação. Operação cancelada";

    } else if(categoria == "E") { // Silvestre Exótico
        shared_ptr<Exotico> categoria = dynamic_pointer_cast< Exotico >(atualizar);
    
        cout << endl << updateText;
        if(!categoria->setLocal())
            if(trocarCategoria)
                throw "Para troca de categorias é necessário informar tal informação. Operação cancelada";

    } else if(categoria == "D") { // Doméstico
        shared_ptr<Domestico> categoria = dynamic_pointer_cast< Domestico >(atualizar);

        cout << endl << updateText;
        if(!categoria->setAdestrado())
            if(trocarCategoria)
                throw "Para troca de categorias é necessário informar tal informação. Operação cancelada";

    }

    // Tratamento de permissão
    Uniforme un = atualizar->getTratador()->getUniforme();
    if(atualizar->getPerigoso() && un != Vermelho) {
        throw "Erro de permissão, o tratador informado não possui permissão para manejar esse animal, cadastre ou altere um tratador e tente novamente.";
    } else if((classe == "rep" || classe == "mam") && (un == Verde)) {
        throw "Erro de permissão, o tratador informado não possui permissão para manejar esse animal, cadastre ou altere um tratador e tente novamente.";
    }

    if(trocarHerancas) {
        this->excluirAnimal(animal);
        //delete animal;

        if(this->adicionarAnimal(atualizar))
            cout << "Animal atualizado com sucesso" << endl;
        else
            cout << "Houve um erro na operação" << endl << "Cancelando..." << endl;
    } else
        cout << "Animal atualizado com sucesso" << endl;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x540, %rsp            # imm = 0x540
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x310(%rbp)
leaq -0x28(%rbp), %rdi
callq 0x6480
leaq -0x48(%rbp), %rdi
callq 0x6480
movb $0x0, -0x49(%rbp)
movb $0x0, -0x4a(%rbp)
movb $0x0, -0x4b(%rbp)
leaq -0x68(%rbp), %rdi
callq 0xbe60
leaq -0x91(%rbp), %rdi
movq %rdi, -0x308(%rbp)
callq 0x65a0
movq -0x308(%rbp), %rdx
leaq 0x23cd6(%rip), %rsi     # 0x416b8
leaq -0x90(%rbp), %rdi
callq 0xc1d0
jmp 0x1d9f0
leaq -0x91(%rbp), %rdi
callq 0x6380
movq 0x455c5(%rip), %rdi     # 0x62fc8
movq 0x45596(%rip), %rsi     # 0x62fa0
callq 0x6360
movq %rax, -0x318(%rbp)
jmp 0x1da18
movq -0x318(%rbp), %rdi
leaq 0x23e20(%rip), %rsi     # 0x41846
callq 0x6310
movq %rax, -0x320(%rbp)
jmp 0x1da34
movq -0x320(%rbp), %rdi
movq 0x4555e(%rip), %rsi     # 0x62fa0
callq 0x6360
jmp 0x1da49
movq -0x310(%rbp), %rdi
movl $0x1, %esi
callq 0x1f300
jmp 0x1da5c
movq 0x45565(%rip), %rdi     # 0x62fc8
movq 0x45536(%rip), %rsi     # 0x62fa0
callq 0x6360
movq %rax, -0x328(%rbp)
jmp 0x1da78
movq -0x328(%rbp), %rdi
leaq 0x23dd6(%rip), %rsi     # 0x4185c
callq 0x6310
jmp 0x1da8d
movq 0x4554c(%rip), %rdi     # 0x62fe0
leaq -0x28(%rbp), %rsi
callq 0x6090
jmp 0x1da9f
xorl %eax, %eax
movl %eax, %esi
leaq -0x28(%rbp), %rdi
movl $0xa, %edx
callq 0xbdc0
movl %eax, -0x32c(%rbp)
jmp 0x1dab9
movl -0x32c(%rbp), %eax
cltq
movq %rax, -0x70(%rbp)
cmpq $0x0, -0x70(%rbp)
jb 0x1db56
movq -0x310(%rbp), %rdi
movq -0x70(%rbp), %rax
movq %rax, -0x338(%rbp)
addq $0x30, %rdi
callq 0x21d80
movq %rax, %rcx
movq -0x338(%rbp), %rax
cmpq %rcx, %rax
jae 0x1db56
movq -0x310(%rbp), %rdi
addq $0x30, %rdi
movq -0x70(%rbp), %rsi
callq 0x21da0
movq %rax, %rsi
leaq -0x68(%rbp), %rdi
callq 0x21dc0
jmp 0x1db82
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
leaq -0x91(%rbp), %rdi
callq 0x6380
jmp 0x1f2d1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
jmp 0x1f2c5
movl $0x8, %edi
callq 0x61e0
movq %rax, %rdi
leaq 0x23d19(%rip), %rax     # 0x41883
movq %rax, (%rdi)
movq 0x45434(%rip), %rsi     # 0x62fa8
xorl %eax, %eax
movl %eax, %edx
callq 0x6570
jmp 0x1f2f8
leaq -0xd8(%rbp), %rdi
movq %rdi, -0x340(%rbp)
leaq -0x68(%rbp), %rsi
callq 0xb430
movq -0x340(%rbp), %rsi
leaq -0xc8(%rbp), %rdi
movl $0x1, %edx
callq 0x2a420
jmp 0x1dbb3
leaq -0xd8(%rbp), %rdi
callq 0xb460
leaq -0x108(%rbp), %rdi
movq %rdi, -0x348(%rbp)
leaq -0x68(%rbp), %rsi
callq 0xb430
movq -0x348(%rbp), %rsi
leaq -0xf8(%rbp), %rdi
movl $0x1, %edx
callq 0x29e90
jmp 0x1dbf0
leaq -0x108(%rbp), %rdi
callq 0xb460
movq 0x453c5(%rip), %rdi     # 0x62fc8
movq 0x45396(%rip), %rsi     # 0x62fa0
callq 0x6360
movq %rax, -0x350(%rbp)
jmp 0x1dc18
movq -0x350(%rbp), %rdi
leaq -0x90(%rbp), %rsi
callq 0x6300
jmp 0x1dc2d
leaq -0x68(%rbp), %rdi
callq 0xb480
movq %rax, %rsi
leaq -0x128(%rbp), %rdi
callq 0x2a810
jmp 0x1dc47
leaq -0x128(%rbp), %rdi
callq 0x6560
testb $0x1, %al
jne 0x1dcd6
leaq -0x128(%rbp), %rdi
leaq -0xc8(%rbp), %rsi
callq 0x21df0
testb $0x1, %al
jne 0x1dc70
jmp 0x1dcd6
movb $0x1, -0x4a(%rbp)
jmp 0x1dd04
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
leaq -0xd8(%rbp), %rdi
callq 0xb460
jmp 0x1f2c5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
leaq -0x108(%rbp), %rdi
callq 0xb460
jmp 0x1f2b9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
jmp 0x1f2ad
leaq -0x128(%rbp), %rdi
leaq -0xc8(%rbp), %rsi
callq 0x6050
jmp 0x1dceb
jmp 0x1dd04
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
jmp 0x1f2a1
movq 0x452bd(%rip), %rdi     # 0x62fc8
movq 0x4528e(%rip), %rsi     # 0x62fa0
callq 0x6360
movq %rax, -0x358(%rbp)
jmp 0x1dd20
movq -0x358(%rbp), %rdi
leaq -0x90(%rbp), %rsi
callq 0x6300
jmp 0x1dd35
leaq -0x68(%rbp), %rdi
callq 0xb480
movq %rax, %rsi
leaq -0x148(%rbp), %rdi
callq 0x2a160
jmp 0x1dd4f
leaq -0x148(%rbp), %rdi
callq 0x6560
testb $0x1, %al
jne 0x1dd7e
leaq -0x148(%rbp), %rdi
leaq -0xf8(%rbp), %rsi
callq 0x21df0
testb $0x1, %al
jne 0x1dd78
jmp 0x1dd7e
movb $0x1, -0x4b(%rbp)
jmp 0x1ddac
leaq -0x148(%rbp), %rdi
leaq -0xf8(%rbp), %rsi
callq 0x6050
jmp 0x1dd93
jmp 0x1ddac
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
jmp 0x1f295
testb $0x1, -0x4a(%rbp)
jne 0x1ddb8
testb $0x1, -0x4b(%rbp)
je 0x1ddbc
movb $0x1, -0x49(%rbp)
leaq -0x158(%rbp), %rdi
callq 0xbe60
testb $0x1, -0x49(%rbp)
je 0x1de98
movq -0x310(%rbp), %rax
addq $0x48, %rax
movq %rax, -0x360(%rbp)
leaq -0x188(%rbp), %rdi
leaq -0x128(%rbp), %rsi
leaq -0x148(%rbp), %rdx
callq 0xbf60
jmp 0x1de00
movq -0x360(%rbp), %rdi
leaq -0x188(%rbp), %rsi
callq 0xbe80
movq %rax, -0x368(%rbp)
jmp 0x1de1c
movq -0x368(%rbp), %rsi
leaq -0x168(%rbp), %rdi
callq 0xbfe0
jmp 0x1de31
leaq -0x158(%rbp), %rdi
leaq -0x168(%rbp), %rsi
callq 0xc030
leaq -0x168(%rbp), %rdi
callq 0xb460
leaq -0x188(%rbp), %rdi
callq 0x6678
jmp 0x1dea8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
jmp 0x1f289
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
leaq -0x188(%rbp), %rdi
callq 0x6678
jmp 0x1f289
leaq -0x158(%rbp), %rdi
leaq -0x68(%rbp), %rsi
callq 0x21dc0
movq 0x45119(%rip), %rdi     # 0x62fc8
movq 0x450ea(%rip), %rsi     # 0x62fa0
callq 0x6360
movq %rax, -0x370(%rbp)
jmp 0x1dec4
movq -0x370(%rbp), %rdi
leaq -0x90(%rbp), %rsi
callq 0x6300
jmp 0x1ded9
leaq -0x158(%rbp), %rdi
callq 0xb480
movq %rax, %rdi
callq 0x29820
movb %al, -0x371(%rbp)
jmp 0x1def5
movb -0x371(%rbp), %al
testb $0x1, %al
jne 0x1df7a
jmp 0x1df01
testb $0x1, -0x49(%rbp)
je 0x1df7a
leaq -0x158(%rbp), %rdi
callq 0xb480
movq %rax, -0x380(%rbp)
leaq -0x68(%rbp), %rdi
callq 0xb480
movq %rax, %rsi
leaq -0x1a8(%rbp), %rdi
callq 0x297c0
jmp 0x1df34
movq -0x380(%rbp), %rdi
leaq -0x1a8(%rbp), %rsi
callq 0x297f0
jmp 0x1df49
leaq -0x1a8(%rbp), %rdi
callq 0x6678
jmp 0x1df7a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
leaq -0x1a8(%rbp), %rdi
callq 0x6678
jmp 0x1f289
movq 0x45047(%rip), %rdi     # 0x62fc8
movq 0x45018(%rip), %rsi     # 0x62fa0
callq 0x6360
movq %rax, -0x388(%rbp)
jmp 0x1df96
movq -0x388(%rbp), %rdi
leaq -0x90(%rbp), %rsi
callq 0x6300
jmp 0x1dfab
leaq -0x158(%rbp), %rdi
callq 0xb480
movq %rax, %rdi
callq 0x29980
movb %al, -0x389(%rbp)
jmp 0x1dfc7
movb -0x389(%rbp), %al
testb $0x1, %al
jne 0x1e04c
jmp 0x1dfd3
testb $0x1, -0x49(%rbp)
je 0x1e04c
leaq -0x158(%rbp), %rdi
callq 0xb480
movq %rax, -0x398(%rbp)
leaq -0x68(%rbp), %rdi
callq 0xb480
movq %rax, %rsi
leaq -0x1c8(%rbp), %rdi
callq 0x29950
jmp 0x1e006
movq -0x398(%rbp), %rdi
leaq -0x1c8(%rbp), %rsi
callq 0x29ab0
jmp 0x1e01b
leaq -0x1c8(%rbp), %rdi
callq 0x6678
jmp 0x1e04c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
leaq -0x1c8(%rbp), %rdi
callq 0x6678
jmp 0x1f289
movq 0x44f75(%rip), %rdi     # 0x62fc8
movq 0x44f46(%rip), %rsi     # 0x62fa0
callq 0x6360
movq %rax, -0x3a0(%rbp)
jmp 0x1e068
movq -0x3a0(%rbp), %rdi
leaq -0x90(%rbp), %rsi
callq 0x6300
jmp 0x1e07d
leaq -0x158(%rbp), %rdi
callq 0xb480
movq %rax, %rdi
callq 0x29b10
movb %al, -0x3a1(%rbp)
jmp 0x1e099
movb -0x3a1(%rbp), %al
testb $0x1, %al
jne 0x1e11e
jmp 0x1e0a5
testb $0x1, -0x49(%rbp)
je 0x1e11e
leaq -0x158(%rbp), %rdi
callq 0xb480
movq %rax, -0x3b0(%rbp)
leaq -0x68(%rbp), %rdi
callq 0xb480
movq %rax, %rsi
leaq -0x1e8(%rbp), %rdi
callq 0x29ae0
jmp 0x1e0d8
movq -0x3b0(%rbp), %rdi
leaq -0x1e8(%rbp), %rsi
callq 0x29c40
jmp 0x1e0ed
leaq -0x1e8(%rbp), %rdi
callq 0x6678
jmp 0x1e11e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
leaq -0x1e8(%rbp), %rdi
callq 0x6678
jmp 0x1f289
movq -0x310(%rbp), %rdi
callq 0x1c820
jmp 0x1e12c
movq 0x44e95(%rip), %rdi     # 0x62fc8
movq 0x44e66(%rip), %rsi     # 0x62fa0
callq 0x6360
movq %rax, -0x3b8(%rbp)
jmp 0x1e148
movq -0x3b8(%rbp), %rdi
leaq -0x90(%rbp), %rsi
callq 0x6300
jmp 0x1e15d
movq 0x44e64(%rip), %rdi     # 0x62fc8
movq 0x44e35(%rip), %rsi     # 0x62fa0
callq 0x6360
movq %rax, -0x3c0(%rbp)
jmp 0x1e179
movq -0x3c0(%rbp), %rdi
leaq 0x23176(%rip), %rsi     # 0x412fd
callq 0x6310
movq %rax, -0x3c8(%rbp)
jmp 0x1e195
movq -0x3c8(%rbp), %rdi
movq 0x44dfd(%rip), %rsi     # 0x62fa0
callq 0x6360
jmp 0x1e1aa
movq 0x44e2f(%rip), %rdi     # 0x62fe0
leaq -0x48(%rbp), %rsi
callq 0x6090
jmp 0x1e1bc
leaq -0x48(%rbp), %rdi
callq 0x6250
cmpq $0x0, %rax
jne 0x1e247
testb $0x1, -0x49(%rbp)
je 0x1e247
leaq -0x158(%rbp), %rdi
callq 0xb480
movq %rax, -0x3d0(%rbp)
leaq -0x68(%rbp), %rdi
callq 0xb480
movq %rax, %rsi
leaq -0x1f8(%rbp), %rdi
callq 0x29c70
jmp 0x1e1fe
movq -0x3d0(%rbp), %rdi
leaq -0x1f8(%rbp), %rsi
callq 0x29ca0
jmp 0x1e213
leaq -0x1f8(%rbp), %rdi
callq 0xb4c0
jmp 0x1e3b6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
leaq -0x1f8(%rbp), %rdi
callq 0xb4c0
jmp 0x1f289
leaq -0x48(%rbp), %rdi
callq 0x6250
cmpq $0x0, %rax
je 0x1e3b4
xorl %eax, %eax
movl %eax, %esi
leaq -0x48(%rbp), %rdi
movl $0xa, %edx
callq 0xbdc0
movl %eax, -0x3d4(%rbp)
jmp 0x1e274
movl -0x3d4(%rbp), %eax
cltq
movq %rax, -0x58(%rbp)
cmpq $0x0, -0x58(%rbp)
jb 0x1e337
movq -0x310(%rbp), %rdi
movq -0x58(%rbp), %rax
movq %rax, -0x3e0(%rbp)
callq 0x21b40
movq %rax, %rcx
movq -0x3e0(%rbp), %rax
cmpq %rcx, %rax
jae 0x1e337
leaq -0x158(%rbp), %rdi
callq 0xb480
movq -0x310(%rbp), %rdi
movq %rax, -0x3f0(%rbp)
movq -0x58(%rbp), %rsi
callq 0x21bb0
movq %rax, %rsi
leaq -0x208(%rbp), %rdi
movq %rdi, -0x3e8(%rbp)
callq 0xc060
movq -0x3f0(%rbp), %rdi
movq -0x3e8(%rbp), %rsi
callq 0x29ca0
jmp 0x1e303
leaq -0x208(%rbp), %rdi
callq 0xb4c0
jmp 0x1e3b2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
leaq -0x208(%rbp), %rdi
callq 0xb4c0
jmp 0x1f289
testb $0x1, -0x49(%rbp)
je 0x1e3b0
leaq -0x158(%rbp), %rdi
callq 0xb480
movq %rax, -0x3f8(%rbp)
leaq -0x68(%rbp), %rdi
callq 0xb480
movq %rax, %rsi
leaq -0x218(%rbp), %rdi
callq 0x29c70
jmp 0x1e36a
movq -0x3f8(%rbp), %rdi
leaq -0x218(%rbp), %rsi
callq 0x29ca0
jmp 0x1e37f
leaq -0x218(%rbp), %rdi
callq 0xb4c0
jmp 0x1e3b0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
leaq -0x218(%rbp), %rdi
callq 0xb4c0
jmp 0x1f289
jmp 0x1e3b2
jmp 0x1e3b4
jmp 0x1e3b6
movq 0x44c0b(%rip), %rdi     # 0x62fc8
movq 0x44bdc(%rip), %rsi     # 0x62fa0
callq 0x6360
movq %rax, -0x400(%rbp)
jmp 0x1e3d2
movq -0x400(%rbp), %rdi
leaq -0x90(%rbp), %rsi
callq 0x6300
jmp 0x1e3e7
leaq -0x158(%rbp), %rdi
callq 0xb480
movq %rax, %rdi
callq 0x29d50
movb %al, -0x401(%rbp)
jmp 0x1e403
movb -0x401(%rbp), %al
testb $0x1, %al
jne 0x1e45d
jmp 0x1e40f
testb $0x1, -0x49(%rbp)
je 0x1e45d
leaq -0x158(%rbp), %rdi
callq 0xb480
movq %rax, -0x410(%rbp)
leaq -0x68(%rbp), %rdi
callq 0xb480
movq %rax, %rdi
callq 0x29d30
movb %al, -0x402(%rbp)
jmp 0x1e441
movq -0x410(%rbp), %rdi
movb -0x402(%rbp), %al
movzbl %al, %esi
andl $0x1, %esi
callq 0x29e60
jmp 0x1e45b
jmp 0x1e45d
leaq 0x23d12(%rip), %rsi     # 0x42176
leaq -0x128(%rbp), %rdi
callq 0xbc30
movb %al, -0x411(%rbp)
jmp 0x1e478
movb -0x411(%rbp), %al
testb $0x1, %al
jne 0x1e487
jmp 0x1e55b
leaq -0x228(%rbp), %rdi
leaq -0x158(%rbp), %rsi
callq 0xb780
movq 0x44b27(%rip), %rdi     # 0x62fc8
movq 0x44af8(%rip), %rsi     # 0x62fa0
callq 0x6360
movq %rax, -0x420(%rbp)
jmp 0x1e4b6
movq -0x420(%rbp), %rdi
leaq -0x90(%rbp), %rsi
callq 0x6300
jmp 0x1e4cb
leaq -0x228(%rbp), %rdi
callq 0xb810
movq %rax, %rdi
callq 0x3bfb0
movb %al, -0x421(%rbp)
jmp 0x1e4e7
movb -0x421(%rbp), %al
testb $0x1, %al
jne 0x1e54a
jmp 0x1e4f3
testb $0x1, -0x4a(%rbp)
je 0x1e548
movl $0x8, %edi
callq 0x61e0
movq %rax, %rdi
leaq 0x2338a(%rip), %rax     # 0x41897
movq %rax, (%rdi)
movq 0x44a91(%rip), %rsi     # 0x62fa8
xorl %eax, %eax
movl %eax, %edx
callq 0x6570
jmp 0x1f2f8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
leaq -0x228(%rbp), %rdi
callq 0xb830
jmp 0x1f289
jmp 0x1e54a
leaq -0x228(%rbp), %rdi
callq 0xb830
jmp 0x1e8e3
leaq 0x21b3a(%rip), %rsi     # 0x4009c
leaq -0x128(%rbp), %rdi
callq 0xbc30
movb %al, -0x422(%rbp)
jmp 0x1e576
movb -0x422(%rbp), %al
testb $0x1, %al
jne 0x1e585
jmp 0x1e659
leaq -0x238(%rbp), %rdi
leaq -0x158(%rbp), %rsi
callq 0xb9f0
movq 0x44a29(%rip), %rdi     # 0x62fc8
movq 0x449fa(%rip), %rsi     # 0x62fa0
callq 0x6360
movq %rax, -0x430(%rbp)
jmp 0x1e5b4
movq -0x430(%rbp), %rdi
leaq -0x90(%rbp), %rsi
callq 0x6300
jmp 0x1e5c9
leaq -0x238(%rbp), %rdi
callq 0xba80
movq %rax, %rdi
callq 0x3cc90
movb %al, -0x431(%rbp)
jmp 0x1e5e5
movb -0x431(%rbp), %al
testb $0x1, %al
jne 0x1e648
jmp 0x1e5f1
testb $0x1, -0x4a(%rbp)
je 0x1e646
movl $0x8, %edi
callq 0x61e0
movq %rax, %rdi
leaq 0x2328c(%rip), %rax     # 0x41897
movq %rax, (%rdi)
movq 0x44993(%rip), %rsi     # 0x62fa8
xorl %eax, %eax
movl %eax, %edx
callq 0x6570
jmp 0x1f2f8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
leaq -0x238(%rbp), %rdi
callq 0xbaa0
jmp 0x1f289
jmp 0x1e648
leaq -0x238(%rbp), %rdi
callq 0xbaa0
jmp 0x1e8e1
leaq 0x21a40(%rip), %rsi     # 0x400a0
leaq -0x128(%rbp), %rdi
callq 0xbc30
movb %al, -0x432(%rbp)
jmp 0x1e674
movb -0x432(%rbp), %al
testb $0x1, %al
jne 0x1e683
jmp 0x1e757
leaq -0x248(%rbp), %rdi
leaq -0x158(%rbp), %rsi
callq 0xb920
movq 0x4492b(%rip), %rdi     # 0x62fc8
movq 0x448fc(%rip), %rsi     # 0x62fa0
callq 0x6360
movq %rax, -0x440(%rbp)
jmp 0x1e6b2
movq -0x440(%rbp), %rdi
leaq -0x90(%rbp), %rsi
callq 0x6300
jmp 0x1e6c7
leaq -0x248(%rbp), %rdi
callq 0xb9b0
movq %rax, %rdi
callq 0x3d950
movb %al, -0x441(%rbp)
jmp 0x1e6e3
movb -0x441(%rbp), %al
testb $0x1, %al
jne 0x1e746
jmp 0x1e6ef
testb $0x1, -0x4a(%rbp)
je 0x1e744
movl $0x8, %edi
callq 0x61e0
movq %rax, %rdi
leaq 0x2318e(%rip), %rax     # 0x41897
movq %rax, (%rdi)
movq 0x44895(%rip), %rsi     # 0x62fa8
xorl %eax, %eax
movl %eax, %edx
callq 0x6570
jmp 0x1f2f8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
leaq -0x248(%rbp), %rdi
callq 0xb9d0
jmp 0x1f289
jmp 0x1e746
leaq -0x248(%rbp), %rdi
callq 0xb9d0
jmp 0x1e8df
leaq 0x2193a(%rip), %rsi     # 0x40098
leaq -0x128(%rbp), %rdi
callq 0xbc30
movb %al, -0x442(%rbp)
jmp 0x1e772
movb -0x442(%rbp), %al
testb $0x1, %al
jne 0x1e781
jmp 0x1e8dd
leaq -0x258(%rbp), %rdi
leaq -0x158(%rbp), %rsi
callq 0xb850
movq 0x4482d(%rip), %rdi     # 0x62fc8
movq 0x447fe(%rip), %rsi     # 0x62fa0
callq 0x6360
movq %rax, -0x450(%rbp)
jmp 0x1e7b0
movq -0x450(%rbp), %rdi
leaq -0x90(%rbp), %rsi
callq 0x6300
jmp 0x1e7c5
leaq -0x258(%rbp), %rdi
callq 0xb8e0
movq %rax, %rdi
callq 0x3e690
movb %al, -0x451(%rbp)
jmp 0x1e7e1
movb -0x451(%rbp), %al
testb $0x1, %al
jne 0x1e844
jmp 0x1e7ed
testb $0x1, -0x4a(%rbp)
je 0x1e842
movl $0x8, %edi
callq 0x61e0
movq %rax, %rdi
leaq 0x23090(%rip), %rax     # 0x41897
movq %rax, (%rdi)
movq 0x44797(%rip), %rsi     # 0x62fa8
xorl %eax, %eax
movl %eax, %edx
callq 0x6570
jmp 0x1f2f8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
leaq -0x258(%rbp), %rdi
callq 0xb900
jmp 0x1f289
jmp 0x1e844
movq 0x4477d(%rip), %rdi     # 0x62fc8
movq 0x4474e(%rip), %rsi     # 0x62fa0
callq 0x6360
movq %rax, -0x460(%rbp)
jmp 0x1e860
movq -0x460(%rbp), %rdi
leaq -0x90(%rbp), %rsi
callq 0x6300
jmp 0x1e875
leaq -0x258(%rbp), %rdi
callq 0xb8e0
movq %rax, %rdi
callq 0x3e800
movb %al, -0x461(%rbp)
jmp 0x1e891
movb -0x461(%rbp), %al
testb $0x1, %al
jne 0x1e8d1
jmp 0x1e89d
testb $0x1, -0x4a(%rbp)
je 0x1e8cf
movl $0x8, %edi
callq 0x61e0
movq %rax, %rdi
leaq 0x22fe0(%rip), %rax     # 0x41897
movq %rax, (%rdi)
movq 0x446e7(%rip), %rsi     # 0x62fa8
xorl %eax, %eax
movl %eax, %edx
callq 0x6570
jmp 0x1f2f8
jmp 0x1e8d1
leaq -0x258(%rbp), %rdi
callq 0xb900
jmp 0x1e8df
jmp 0x1e8e1
jmp 0x1e8e3
movq -0x310(%rbp), %rdi
callq 0x1cb60
jmp 0x1e8f1
movq 0x446d0(%rip), %rdi     # 0x62fc8
movq 0x446a1(%rip), %rsi     # 0x62fa0
callq 0x6360
movq %rax, -0x470(%rbp)
jmp 0x1e90d
movq -0x470(%rbp), %rdi
leaq -0x90(%rbp), %rsi
callq 0x6300
jmp 0x1e922
movq 0x4469f(%rip), %rdi     # 0x62fc8
movq 0x44670(%rip), %rsi     # 0x62fa0
callq 0x6360
movq %rax, -0x478(%rbp)
jmp 0x1e93e
movq -0x478(%rbp), %rdi
leaq 0x22b57(%rip), %rsi     # 0x414a3
callq 0x6310
movq %rax, -0x480(%rbp)
jmp 0x1e95a
movq -0x480(%rbp), %rdi
movq 0x44638(%rip), %rsi     # 0x62fa0
callq 0x6360
jmp 0x1e96f
movq 0x4466a(%rip), %rdi     # 0x62fe0
leaq -0x48(%rbp), %rsi
callq 0x6090
jmp 0x1e981
leaq -0x48(%rbp), %rdi
callq 0x6250
cmpq $0x0, %rax
jne 0x1ea0c
testb $0x1, -0x49(%rbp)
je 0x1ea0c
leaq -0x158(%rbp), %rdi
callq 0xb480
movq %rax, -0x488(%rbp)
leaq -0x68(%rbp), %rdi
callq 0xb480
movq %rax, %rsi
leaq -0x268(%rbp), %rdi
callq 0x29cd0
jmp 0x1e9c3
movq -0x488(%rbp), %rdi
leaq -0x268(%rbp), %rsi
callq 0x29d00
jmp 0x1e9d8
leaq -0x268(%rbp), %rdi
callq 0xb4a0
jmp 0x1eb83
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
leaq -0x268(%rbp), %rdi
callq 0xb4a0
jmp 0x1f289
leaq -0x48(%rbp), %rdi
callq 0x6250
cmpq $0x0, %rax
je 0x1eb81
xorl %eax, %eax
movl %eax, %esi
leaq -0x48(%rbp), %rdi
movl $0xa, %edx
callq 0xbdc0
movl %eax, -0x48c(%rbp)
jmp 0x1ea39
movl -0x48c(%rbp), %eax
cltq
movq %rax, -0x58(%rbp)
cmpq $0x0, -0x58(%rbp)
jb 0x1eb04
movq -0x310(%rbp), %rdi
movq -0x58(%rbp), %rax
movq %rax, -0x498(%rbp)
addq $0x18, %rdi
callq 0x21b60
movq %rax, %rcx
movq -0x498(%rbp), %rax
cmpq %rcx, %rax
jae 0x1eb04
leaq -0x158(%rbp), %rdi
callq 0xb480
movq -0x310(%rbp), %rdi
movq %rax, -0x4a8(%rbp)
addq $0x18, %rdi
movq -0x58(%rbp), %rsi
callq 0x21bd0
movq %rax, %rsi
leaq -0x278(%rbp), %rdi
movq %rdi, -0x4a0(%rbp)
callq 0xc090
movq -0x4a8(%rbp), %rdi
movq -0x4a0(%rbp), %rsi
callq 0x29d00
jmp 0x1ead0
leaq -0x278(%rbp), %rdi
callq 0xb4a0
jmp 0x1eb7f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
leaq -0x278(%rbp), %rdi
callq 0xb4a0
jmp 0x1f289
testb $0x1, -0x49(%rbp)
je 0x1eb7d
leaq -0x158(%rbp), %rdi
callq 0xb480
movq %rax, -0x4b0(%rbp)
leaq -0x68(%rbp), %rdi
callq 0xb480
movq %rax, %rsi
leaq -0x288(%rbp), %rdi
callq 0x29cd0
jmp 0x1eb37
movq -0x4b0(%rbp), %rdi
leaq -0x288(%rbp), %rsi
callq 0x29d00
jmp 0x1eb4c
leaq -0x288(%rbp), %rdi
callq 0xb4a0
jmp 0x1eb7d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
leaq -0x288(%rbp), %rdi
callq 0xb4a0
jmp 0x1f289
jmp 0x1eb7f
jmp 0x1eb81
jmp 0x1eb83
leaq 0x23b34(%rip), %rsi     # 0x426be
leaq -0x148(%rbp), %rdi
callq 0xbc30
movb %al, -0x4b1(%rbp)
jmp 0x1eb9e
movb -0x4b1(%rbp), %al
testb $0x1, %al
jne 0x1ebad
jmp 0x1ed0e
leaq -0x298(%rbp), %rdi
leaq -0x158(%rbp), %rsi
callq 0xb6b0
movq 0x44401(%rip), %rdi     # 0x62fc8
movq 0x443d2(%rip), %rsi     # 0x62fa0
callq 0x6360
movq %rax, -0x4c0(%rbp)
jmp 0x1ebdc
movq -0x4c0(%rbp), %rdi
leaq -0x90(%rbp), %rsi
callq 0x6300
jmp 0x1ebf1
leaq -0x298(%rbp), %rdi
callq 0xb740
movq %rax, %rdi
callq 0x3bac0
movb %al, -0x4c1(%rbp)
jmp 0x1ec0d
movb -0x4c1(%rbp), %al
testb $0x1, %al
jne 0x1ec70
jmp 0x1ec19
testb $0x1, -0x4b(%rbp)
je 0x1ec6e
movl $0x8, %edi
callq 0x61e0
movq %rax, %rdi
leaq 0x22cb9(%rip), %rax     # 0x418ec
movq %rax, (%rdi)
movq 0x4436b(%rip), %rsi     # 0x62fa8
xorl %eax, %eax
movl %eax, %edx
callq 0x6570
jmp 0x1f2f8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
leaq -0x298(%rbp), %rdi
callq 0xb760
jmp 0x1f289
jmp 0x1ec70
movq 0x44351(%rip), %rdi     # 0x62fc8
movq 0x44322(%rip), %rsi     # 0x62fa0
callq 0x6360
movq %rax, -0x4d0(%rbp)
jmp 0x1ec8c
movq -0x4d0(%rbp), %rdi
leaq -0x90(%rbp), %rsi
callq 0x6300
jmp 0x1eca1
leaq -0x298(%rbp), %rdi
callq 0xb740
movq %rax, %rdi
callq 0x3bc50
movb %al, -0x4d1(%rbp)
jmp 0x1ecbd
movb -0x4d1(%rbp), %al
testb $0x1, %al
jne 0x1ecfd
jmp 0x1ecc9
testb $0x1, -0x4b(%rbp)
je 0x1ecfb
movl $0x8, %edi
callq 0x61e0
movq %rax, %rdi
leaq 0x22c09(%rip), %rax     # 0x418ec
movq %rax, (%rdi)
movq 0x442bb(%rip), %rsi     # 0x62fa8
xorl %eax, %eax
movl %eax, %edx
callq 0x6570
jmp 0x1f2f8
jmp 0x1ecfd
leaq -0x298(%rbp), %rdi
callq 0xb760
jmp 0x1ef09
leaq 0x239ae(%rip), %rsi     # 0x426c3
leaq -0x148(%rbp), %rdi
callq 0xbc30
movb %al, -0x4d2(%rbp)
jmp 0x1ed29
movb -0x4d2(%rbp), %al
testb $0x1, %al
jne 0x1ed38
jmp 0x1ee0c
leaq -0x2a8(%rbp), %rdi
leaq -0x158(%rbp), %rsi
callq 0xb5e0
movq 0x44276(%rip), %rdi     # 0x62fc8
movq 0x44247(%rip), %rsi     # 0x62fa0
callq 0x6360
movq %rax, -0x4e0(%rbp)
jmp 0x1ed67
movq -0x4e0(%rbp), %rdi
leaq -0x90(%rbp), %rsi
callq 0x6300
jmp 0x1ed7c
leaq -0x2a8(%rbp), %rdi
callq 0xb670
movq %rax, %rdi
callq 0x2c380
movb %al, -0x4e1(%rbp)
jmp 0x1ed98
movb -0x4e1(%rbp), %al
testb $0x1, %al
jne 0x1edfb
jmp 0x1eda4
testb $0x1, -0x4b(%rbp)
je 0x1edf9
movl $0x8, %edi
callq 0x61e0
movq %rax, %rdi
leaq 0x22b2e(%rip), %rax     # 0x418ec
movq %rax, (%rdi)
movq 0x441e0(%rip), %rsi     # 0x62fa8
xorl %eax, %eax
movl %eax, %edx
callq 0x6570
jmp 0x1f2f8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
leaq -0x2a8(%rbp), %rdi
callq 0xb690
jmp 0x1f289
jmp 0x1edfb
leaq -0x2a8(%rbp), %rdi
callq 0xb690
jmp 0x1ef07
leaq 0x22e14(%rip), %rsi     # 0x41c27
leaq -0x148(%rbp), %rdi
callq 0xbc30
movb %al, -0x4e2(%rbp)
jmp 0x1ee27
movb -0x4e2(%rbp), %al
testb $0x1, %al
jne 0x1ee36
jmp 0x1ef05
leaq -0x2b8(%rbp), %rdi
leaq -0x158(%rbp), %rsi
callq 0xb510
movq 0x44178(%rip), %rdi     # 0x62fc8
movq 0x44149(%rip), %rsi     # 0x62fa0
callq 0x6360
movq %rax, -0x4f0(%rbp)
jmp 0x1ee65
movq -0x4f0(%rbp), %rdi
leaq -0x90(%rbp), %rsi
callq 0x6300
jmp 0x1ee7a
leaq -0x2b8(%rbp), %rdi
callq 0xb5a0
movq %rax, %rdi
callq 0x2c190
movb %al, -0x4f1(%rbp)
jmp 0x1ee96
movb -0x4f1(%rbp), %al
testb $0x1, %al
jne 0x1eef9
jmp 0x1eea2
testb $0x1, -0x4b(%rbp)
je 0x1eef7
movl $0x8, %edi
callq 0x61e0
movq %rax, %rdi
leaq 0x22a30(%rip), %rax     # 0x418ec
movq %rax, (%rdi)
movq 0x440e2(%rip), %rsi     # 0x62fa8
xorl %eax, %eax
movl %eax, %edx
callq 0x6570
jmp 0x1f2f8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
leaq -0x2b8(%rbp), %rdi
callq 0xb5c0
jmp 0x1f289
jmp 0x1eef9
leaq -0x2b8(%rbp), %rdi
callq 0xb5c0
jmp 0x1ef07
jmp 0x1ef09
leaq -0x158(%rbp), %rdi
callq 0xb480
movq %rax, %rsi
leaq -0x2d0(%rbp), %rdi
callq 0x29cd0
jmp 0x1ef26
leaq -0x2d0(%rbp), %rdi
callq 0xb2d0
movq %rax, %rdi
callq 0x280c0
movl %eax, -0x4f8(%rbp)
jmp 0x1ef42
leaq -0x2d0(%rbp), %rdi
callq 0xb4a0
movl -0x4f8(%rbp), %eax
movl %eax, -0x2bc(%rbp)
leaq -0x158(%rbp), %rdi
callq 0xb480
movq %rax, %rdi
callq 0x29d30
movb %al, -0x4f9(%rbp)
jmp 0x1ef76
movb -0x4f9(%rbp), %al
testb $0x1, %al
jne 0x1ef82
jmp 0x1efda
cmpl $0x2, -0x2bc(%rbp)
je 0x1efda
movl $0x8, %edi
callq 0x61e0
movq %rax, %rdi
leaq 0x229a5(%rip), %rax     # 0x41944
movq %rax, (%rdi)
movq 0x43fff(%rip), %rsi     # 0x62fa8
xorl %eax, %eax
movl %eax, %edx
callq 0x6570
jmp 0x1f2f8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
leaq -0x2d0(%rbp), %rdi
callq 0xb4a0
jmp 0x1f289
leaq 0x210bf(%rip), %rsi     # 0x400a0
leaq -0x128(%rbp), %rdi
callq 0xbc30
movb %al, -0x4fa(%rbp)
jmp 0x1eff5
movb -0x4fa(%rbp), %al
testb $0x1, %al
jne 0x1f028
jmp 0x1f001
leaq 0x21094(%rip), %rsi     # 0x4009c
leaq -0x128(%rbp), %rdi
callq 0xbc30
movb %al, -0x4fb(%rbp)
jmp 0x1f01c
movb -0x4fb(%rbp), %al
testb $0x1, %al
jne 0x1f028
jmp 0x1f05d
cmpl $0x0, -0x2bc(%rbp)
jne 0x1f05d
movl $0x8, %edi
callq 0x61e0
movq %rax, %rdi
leaq 0x228ff(%rip), %rax     # 0x41944
movq %rax, (%rdi)
movq 0x43f59(%rip), %rsi     # 0x62fa8
xorl %eax, %eax
movl %eax, %edx
callq 0x6570
jmp 0x1f2f8
jmp 0x1f05f
testb $0x1, -0x49(%rbp)
je 0x1f1ea
leaq -0x2f0(%rbp), %rdi
movq %rdi, -0x508(%rbp)
leaq -0x68(%rbp), %rsi
callq 0xb430
movq -0x310(%rbp), %rsi
movq -0x508(%rbp), %rdx
leaq -0x2e0(%rbp), %rdi
callq 0x20460
jmp 0x1f09c
leaq -0x2e0(%rbp), %rdi
callq 0xb460
leaq -0x2f0(%rbp), %rdi
callq 0xb460
leaq -0x300(%rbp), %rdi
movq %rdi, -0x518(%rbp)
leaq -0x158(%rbp), %rsi
callq 0xb430
movq -0x310(%rbp), %rdi
movq -0x518(%rbp), %rsi
callq 0x1ab00
movb %al, -0x509(%rbp)
jmp 0x1f0e9
leaq -0x300(%rbp), %rdi
callq 0xb460
movb -0x509(%rbp), %al
testb $0x1, %al
jne 0x1f101
jmp 0x1f17d
movq 0x43ec0(%rip), %rdi     # 0x62fc8
leaq 0x228c1(%rip), %rsi     # 0x419d0
callq 0x6310
movq %rax, -0x520(%rbp)
jmp 0x1f11d
movq -0x520(%rbp), %rdi
movq 0x43e75(%rip), %rsi     # 0x62fa0
callq 0x6360
jmp 0x1f132
jmp 0x1f1e8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
leaq -0x2f0(%rbp), %rdi
callq 0xb460
jmp 0x1f289
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
leaq -0x300(%rbp), %rdi
callq 0xb460
jmp 0x1f289
movq 0x43e44(%rip), %rdi     # 0x62fc8
leaq 0x21f70(%rip), %rsi     # 0x410fb
callq 0x6310
movq %rax, -0x528(%rbp)
jmp 0x1f199
movq -0x528(%rbp), %rdi
movq 0x43df9(%rip), %rsi     # 0x62fa0
callq 0x6360
movq %rax, -0x530(%rbp)
jmp 0x1f1b5
movq -0x530(%rbp), %rdi
leaq 0x21f54(%rip), %rsi     # 0x41117
callq 0x6310
movq %rax, -0x538(%rbp)
jmp 0x1f1d1
movq -0x538(%rbp), %rdi
movq 0x43dc1(%rip), %rsi     # 0x62fa0
callq 0x6360
jmp 0x1f1e6
jmp 0x1f1e8
jmp 0x1f21d
movq 0x43dd7(%rip), %rdi     # 0x62fc8
leaq 0x227d8(%rip), %rsi     # 0x419d0
callq 0x6310
movq %rax, -0x540(%rbp)
jmp 0x1f206
movq -0x540(%rbp), %rdi
movq 0x43d8c(%rip), %rsi     # 0x62fa0
callq 0x6360
jmp 0x1f21b
jmp 0x1f21d
leaq -0x158(%rbp), %rdi
callq 0xb460
leaq -0x148(%rbp), %rdi
callq 0x6678
leaq -0x128(%rbp), %rdi
callq 0x6678
leaq -0xf8(%rbp), %rdi
callq 0x6678
leaq -0xc8(%rbp), %rdi
callq 0x6678
leaq -0x90(%rbp), %rdi
callq 0x6678
leaq -0x68(%rbp), %rdi
callq 0xb460
leaq -0x48(%rbp), %rdi
callq 0x6678
leaq -0x28(%rbp), %rdi
callq 0x6678
addq $0x540, %rsp            # imm = 0x540
popq %rbp
retq
leaq -0x158(%rbp), %rdi
callq 0xb460
leaq -0x148(%rbp), %rdi
callq 0x6678
leaq -0x128(%rbp), %rdi
callq 0x6678
leaq -0xf8(%rbp), %rdi
callq 0x6678
leaq -0xc8(%rbp), %rdi
callq 0x6678
leaq -0x90(%rbp), %rdi
callq 0x6678
leaq -0x68(%rbp), %rdi
callq 0xb460
leaq -0x48(%rbp), %rdi
callq 0x6678
leaq -0x28(%rbp), %rdi
callq 0x6678
movq -0xa0(%rbp), %rdi
callq 0x6590
nopl (%rax,%rax)