// File: /workspace/github_cpp_makefile_star2_O1/brashi[P]PetFera/src/./banco_dados.cpp
// Function: BancoDados::lerAnimais()
void BancoDados::lerAnimais() {
    if(!fs::exists(animalArq)) {
        cout << "Arquivo de animais ainda não criado." << endl;
        cout << "Leitura cancelada..." << endl;
        
        return;
    }
    if(fs::is_empty(animalArq)) {
        cout << "Arquivo de animais vazio." << endl;
        cout << "Leitura cancelada..." << endl;
        return;
    }

    ifstream arqDados(animalArq);
    if(arqDados.bad() || arqDados.fail()){
        throw "Arquivo de animais inexistente ou corrompido.";
    }
    int count = 0;
    int prox;

    string temp;
    string linha;
    string palavra;
    string classe, classificacao;
    vector<string> tokens;
    shared_ptr<Animal> animal;

    while(!arqDados.eof()) {
        tokens.clear();

        getline(arqDados, linha);
        stringstream s(linha);
        while(getline(s, palavra, ';')) {
            tokens.push_back(palavra);
        }

        if(tokens.size()) {
            classe = tokens.at(0);
            classificacao = tokens.at(1);

            animal = mapa.aMap[classe + classificacao]();
            animal->setNome(tokens.at(2));
            animal->setEspecie(tokens.at(3));
            animal->setAmeacadoPor(tokens.at(4));
            animal->setVeterinario(petshop->findVeterinario(tokens.at(5)));
            animal->setTratador(petshop->findTratador(tokens.at(6)));
            animal->setPerigoso(stoi(tokens.at(7)));

            switch(strFiltro[classificacao]) {
                case 'D':
                    dynamic_pointer_cast<Domestico>(animal)->setAdestrado(stoi(tokens.at(8)));
                    prox = 9;
                    break;
                case 'E':
                    dynamic_pointer_cast<Exotico>(animal)->setLocal(tokens.at(8));
                    prox = 9;
                    break;
                case 'N':
                    dynamic_pointer_cast<Nativo>(animal)->setRegiao(tokens.at(8));
                    dynamic_pointer_cast<Nativo>(animal)->setLicenca(tokens.at(9));
                    prox = 10;
                    break;
            }
            
            switch(strFiltro[classe]) {
                case 'A':
                    dynamic_pointer_cast<Ave>(animal)->setVoa(stoi(tokens.at(prox)));
                    break;
                case 'F':
                    dynamic_pointer_cast<Anfibio>(animal)->setCauda(stoi(tokens.at(prox)));
                    dynamic_pointer_cast<Anfibio>(animal)->setPata(stoi(tokens.at(prox + 1)));
                    break;
                case 'R':
                    dynamic_pointer_cast<Reptil>(animal)->setPele(static_cast<Pele>(stoi(tokens.at(prox))));
                    break;
                case 'M':
                    dynamic_pointer_cast<Mamifero>(animal)->setGestacao(stoi(tokens.at(prox)));
            }

            petshop->adicionarAnimal(animal);
            count++;
        }


    }
    arqDados.close();
    cout << "Arquivo de animais carregado com sucesso." << endl;
    cout << "Foram carregados " << count << " animais." << endl;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x5f8, %rsp            # imm = 0x5F8
movq %rdi, 0x70(%rsp)
leaq 0x30(%rdi), %rbx
leaq 0x268(%rsp), %r14
movq %r14, %rdi
movq %rbx, %rsi
movl $0x2, %edx
callq 0xaacc
movq %r14, %rdi
callq 0x6120
movq %rax, %r14
leaq 0x268(%rsp), %rdi
callq 0xab4c
cmpb $-0x1, %r14b
je 0x8d6c
movzbl %r14b, %eax
testl %eax, %eax
jne 0x8dfb
movq 0x2525d(%rip), %rbx     # 0x2dfd0
leaq 0x184ec(%rip), %rsi     # 0x21266
movl $0x25, %edx
movq %rbx, %rdi
callq 0x6310
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x6280
movsbl %al, %esi
movq %rbx, %rdi
callq 0x6030
movq %rax, %rdi
callq 0x61c0
leaq 0x18400(%rip), %rsi     # 0x211b5
movl $0x14, %edx
movq %rbx, %rdi
callq 0x6310
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x6280
movsbl %al, %esi
movq %rbx, %rdi
callq 0x6030
movq %rax, %rdi
callq 0x61c0
addq $0x5f8, %rsp            # imm = 0x5F8
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x268(%rsp), %r14
movq %r14, %rdi
movq %rbx, %rsi
movl $0x2, %edx
callq 0xaacc
movq %r14, %rdi
callq 0x64a0
movl %eax, %ebp
leaq 0x268(%rsp), %rdi
callq 0xab4c
testb %bpl, %bpl
je 0x8e47
movq 0x2519a(%rip), %rbx     # 0x2dfd0
leaq 0x1844f(%rip), %rsi     # 0x2128c
movl $0x19, %edx
jmp 0x8d7f
leaq 0x268(%rsp), %r14
movq %r14, %rdi
movq %rbx, %rsi
movl $0x8, %edx
callq 0x6410
movq (%r14), %rax
movq -0x18(%rax), %rax
testb $0x5, 0x288(%rsp,%rax)
jne 0xa161
leaq 0x238(%rsp), %rax
movq %rax, -0x10(%rax)
xorl %r15d, %r15d
movq %r15, -0x8(%rax)
movb %r15b, (%rax)
leaq 0x1f0(%rsp), %rax
movq %rax, -0x10(%rax)
movq %r15, -0x8(%rax)
movb %r15b, (%rax)
leaq 0x218(%rsp), %rax
movq %rax, -0x10(%rax)
movq %r15, -0x8(%rax)
movb %r15b, (%rax)
leaq 0x1d0(%rsp), %rax
movq %rax, -0x10(%rax)
movq %r15, -0x8(%rax)
movb %r15b, (%rax)
leaq 0x1b0(%rsp), %rax
movq %rax, -0x10(%rax)
movq %r15, -0x8(%rax)
movb %r15b, (%rax)
movq %r15, 0x30(%rsp)
xorps %xmm0, %xmm0
movaps %xmm0, 0x20(%rsp)
movq 0x268(%rsp), %rax
movq -0x18(%rax), %rax
testb $0x2, 0x288(%rsp,%rax)
movl $0x0, %eax
movq %rax, 0x68(%rsp)
jne 0x9e38
movq %r14, %rcx
movq 0x70(%rsp), %rax
leaq 0x70(%rax), %rdx
movq %rdx, 0x200(%rsp)
addq $0xa0, %rax
movq %rax, 0x78(%rsp)
movq $0x0, 0x68(%rsp)
leaq 0x1e0(%rsp), %rdx
leaq 0x470(%rsp), %r13
leaq 0x208(%rsp), %r12
movq %rax, 0x40(%rsp)
xorl %ebp, %ebp
movq 0x20(%rsp), %rbx
movq 0x28(%rsp), %r15
cmpq %rbx, %r15
je 0x8f9a
leaq 0x10(%rbx), %r14
movq -0x10(%r14), %rdi
cmpq %rdi, %r14
je 0x8f85
movq (%r14), %rsi
incq %rsi
callq 0x62b0
leaq 0x1e0(%rsp), %rdx
leaq 0x268(%rsp), %rcx
leaq 0x20(%r14), %rax
addq $0x10, %r14
cmpq %r15, %r14
movq %rax, %r14
jne 0x8f61
movq %rbx, 0x28(%rsp)
movq 0x268(%rsp), %rax
movq -0x18(%rax), %rdi
addq %rcx, %rdi
movl $0xa, %esi
movq %rcx, %rbx
movq %rdx, %r14
callq 0x6280
movsbl %al, %edx
movq %rbx, %rdi
movq %r14, %rsi
callq 0x6480
movq %r13, %rdi
movq %r14, %rsi
movl $0x18, %edx
movq %rbp, %r15
callq 0x6400
movq %r13, %rdi
movq %r12, %rsi
movl $0x3b, %edx
callq 0x6480
movq (%rax), %rcx
movq -0x18(%rcx), %rcx
testb $0x5, 0x20(%rax,%rcx)
jne 0x9007
leaq 0x20(%rsp), %rdi
movq %r12, %rsi
callq 0xac5c
jmp 0x8fda
movq 0x20(%rsp), %rsi
cmpq %rsi, 0x28(%rsp)
je 0x9df2
leaq 0x1c0(%rsp), %rdi
callq 0x6190
movq 0x20(%rsp), %rsi
movq 0x28(%rsp), %rdx
subq %rsi, %rdx
sarq $0x5, %rdx
cmpq $0x1, %rdx
jbe 0x9fe0
addq $0x20, %rsi
movq %rbp, %r15
leaq 0x1a0(%rsp), %rdi
callq 0x6190
leaq 0x48(%rsp), %rbx
movq %rbx, %rdi
leaq 0x1c0(%rsp), %rsi
leaq 0x1a0(%rsp), %rdx
callq 0xad72
movq 0x200(%rsp), %rdi
movq %rbx, %rsi
callq 0xacf6
cmpq $0x0, 0x10(%rax)
je 0x9fdb
leaq 0x80(%rsp), %rdi
movq %rax, %rsi
callq *0x18(%rax)
movq 0x80(%rsp), %rax
movq %rax, 0x18(%rsp)
movq 0x88(%rsp), %r15
xorps %xmm0, %xmm0
movaps %xmm0, 0x80(%rsp)
testq %rbp, %rbp
je 0x90c6
movq %rbp, %rdi
callq 0xafa0
movq 0x88(%rsp), %rdi
testq %rdi, %rdi
je 0x90d8
callq 0xafa0
movq 0x48(%rsp), %rdi
leaq 0x58(%rsp), %rax
cmpq %rax, %rdi
je 0x90f4
movq 0x58(%rsp), %rsi
incq %rsi
callq 0x62b0
movq 0x20(%rsp), %rax
movq 0x28(%rsp), %rdx
subq %rax, %rdx
sarq $0x5, %rdx
cmpq $0x3, %rdx
movq %r15, 0x8(%rsp)
jb 0x9ff8
leaq 0x190(%rsp), %rcx
movq %rcx, 0x180(%rsp)
movq 0x40(%rax), %rsi
movq 0x48(%rax), %rdx
addq %rsi, %rdx
leaq 0x180(%rsp), %rdi
callq 0xb010
movq 0x18(%rsp), %rdi
leaq 0x180(%rsp), %rsi
callq 0x17a4e
movq 0x180(%rsp), %rdi
leaq 0x190(%rsp), %rax
cmpq %rax, %rdi
je 0x9173
movq 0x190(%rsp), %rsi
incq %rsi
callq 0x62b0
movq 0x20(%rsp), %rax
movq 0x28(%rsp), %rdx
subq %rax, %rdx
sarq $0x5, %rdx
cmpq $0x4, %rdx
jb 0x9fd4
leaq 0x170(%rsp), %rcx
movq %rcx, 0x160(%rsp)
movq 0x60(%rax), %rsi
movq 0x68(%rax), %rdx
addq %rsi, %rdx
leaq 0x160(%rsp), %rdi
callq 0xb010
movq 0x18(%rsp), %rdi
leaq 0x160(%rsp), %rsi
callq 0x17d20
movq 0x160(%rsp), %rdi
leaq 0x170(%rsp), %rax
cmpq %rax, %rdi
je 0x91ed
movq 0x170(%rsp), %rsi
incq %rsi
callq 0x62b0
movq 0x20(%rsp), %rax
movq 0x28(%rsp), %rdx
subq %rax, %rdx
sarq $0x5, %rdx
cmpq $0x5, %rdx
jb 0xa02c
leaq 0x150(%rsp), %rcx
movq %rcx, 0x140(%rsp)
movq 0x80(%rax), %rsi
movq 0x88(%rax), %rdx
addq %rsi, %rdx
leaq 0x140(%rsp), %rdi
callq 0xb010
movq 0x18(%rsp), %rdi
leaq 0x140(%rsp), %rsi
callq 0x17ea0
movq 0x140(%rsp), %rdi
leaq 0x150(%rsp), %rax
cmpq %rax, %rdi
je 0x926d
movq 0x150(%rsp), %rsi
incq %rsi
callq 0x62b0
movq 0x20(%rsp), %rax
movq 0x28(%rsp), %rdx
subq %rax, %rdx
sarq $0x5, %rdx
cmpq $0x6, %rdx
jb 0xa012
movq 0x70(%rsp), %rcx
movq (%rcx), %rbx
leaq 0x130(%rsp), %rcx
movq %rcx, 0x120(%rsp)
movq 0xa0(%rax), %rsi
movq 0xa8(%rax), %rdx
addq %rsi, %rdx
leaq 0x120(%rsp), %rdi
callq 0xb010
leaq 0x258(%rsp), %r14
movq %r14, %rdi
movq %rbx, %rsi
leaq 0x120(%rsp), %rdx
callq 0xe2e0
movq 0x18(%rsp), %rdi
movq %r14, %rsi
callq 0x17ed6
movq 0x260(%rsp), %rdi
testq %rdi, %rdi
je 0x92f8
callq 0xafa0
movq 0x120(%rsp), %rdi
leaq 0x130(%rsp), %rax
cmpq %rax, %rdi
je 0x931d
movq 0x130(%rsp), %rsi
incq %rsi
callq 0x62b0
movq 0x20(%rsp), %rax
movq 0x28(%rsp), %rdx
subq %rax, %rdx
sarq $0x5, %rdx
cmpq $0x7, %rdx
jb 0xa019
movq 0x70(%rsp), %rcx
movq (%rcx), %rbx
leaq 0x110(%rsp), %rcx
movq %rcx, 0x100(%rsp)
movq 0xc0(%rax), %rsi
movq 0xc8(%rax), %rdx
addq %rsi, %rdx
leaq 0x100(%rsp), %rdi
callq 0xb010
leaq 0x248(%rsp), %r14
movq %r14, %rdi
movq %rbx, %rsi
leaq 0x100(%rsp), %rdx
callq 0xe696
movq 0x18(%rsp), %rdi
movq %r14, %rsi
callq 0x17f1a
movq 0x250(%rsp), %rdi
testq %rdi, %rdi
je 0x93a8
callq 0xafa0
movq 0x100(%rsp), %rdi
leaq 0x110(%rsp), %rax
cmpq %rax, %rdi
je 0x93cd
movq 0x110(%rsp), %rsi
incq %rsi
callq 0x62b0
movq 0x20(%rsp), %rax
movq 0x28(%rsp), %rdx
subq %rax, %rdx
sarq $0x5, %rdx
cmpq $0x7, %rdx
jbe 0xa00b
movq 0xe0(%rax), %rbx
callq 0x6050
movl (%rax), %r15d
movq %rax, 0x10(%rsp)
movl $0x0, (%rax)
movq %rbx, %rdi
leaq 0x48(%rsp), %rsi
movl $0xa, %edx
callq 0x6380
cmpq %rbx, 0x48(%rsp)
je 0xa020
leaq -0x80000000(%rax), %rcx
movabsq $-0x100000000, %rdx     # imm = 0xFFFFFFFF00000000
cmpq %rdx, %rcx
jb 0x9fff
movq 0x10(%rsp), %rcx
movl (%rcx), %ecx
cmpl $0x22, %ecx
je 0x9fff
testl %ecx, %ecx
jne 0x9455
movq 0x10(%rsp), %rcx
movl %r15d, (%rcx)
xorl %esi, %esi
testl %eax, %eax
setne %sil
movq 0x18(%rsp), %rdi
movq 0x8(%rsp), %r15
callq 0x1802e
movq 0x78(%rsp), %rdi
leaq 0x1a0(%rsp), %rsi
callq 0xb5c6
movzbl (%rax), %eax
cmpl $0x44, %eax
je 0x9537
cmpl $0x45, %eax
je 0x94ed
cmpl $0x4e, %eax
jne 0x9857
movq 0x18(%rsp), %rdi
leaq 0x239ac(%rip), %rsi     # 0x2ce50
leaq 0x239d5(%rip), %rdx     # 0x2ce80
movq $-0x2, %rcx
callq 0x6300
testq %rax, %rax
je 0x9598
movq %rax, %rbx
testq %r15, %r15
leaq 0xc0(%rsp), %r14
je 0x96e0
movq 0x24aed(%rip), %rax     # 0x2dfc8
cmpb $0x0, (%rax)
je 0x96db
incl 0x8(%r15)
jmp 0x96e0
movq 0x18(%rsp), %rdi
leaq 0x23957(%rip), %rsi     # 0x2ce50
leaq 0x23970(%rip), %rdx     # 0x2ce70
movq $-0x2, %rcx
callq 0x6300
testq %rax, %rax
je 0x9580
movq %rax, %rbx
testq %r15, %r15
leaq 0xe0(%rsp), %r14
je 0x95ae
movq 0x24a9c(%rip), %rax     # 0x2dfc8
cmpb $0x0, (%rax)
je 0x95a9
incl 0x8(%r15)
jmp 0x95ae
movq 0x18(%rsp), %rdi
leaq 0x2390d(%rip), %rsi     # 0x2ce50
leaq 0x23916(%rip), %rdx     # 0x2ce60
movq $-0x2, %rcx
callq 0x6300
testq %rax, %rax
je 0x958e
movq %rax, %r14
testq %r15, %r15
je 0x9633
movq 0x24a5a(%rip), %rax     # 0x2dfc8
cmpb $0x0, (%rax)
je 0x962e
incl 0x8(%r15)
jmp 0x9633
xorl %ebx, %ebx
xorl %ebp, %ebp
leaq 0xe0(%rsp), %r14
jmp 0x95b1
xorl %r14d, %r14d
xorl %ebp, %ebp
jmp 0x9636
xorl %ebx, %ebx
xorl %ebp, %ebp
leaq 0xc0(%rsp), %r14
jmp 0x96e3
lock
incl 0x8(%r15)
movq %r15, %rbp
movq 0x20(%rsp), %rax
movq 0x28(%rsp), %rdx
subq %rax, %rdx
sarq $0x5, %rdx
cmpq $0x8, %rdx
jbe 0xa090
leaq 0xf0(%rsp), %rcx
movq %rcx, 0xe0(%rsp)
movq 0x100(%rax), %rsi
movq 0x108(%rax), %rdx
addq %rsi, %rdx
movq %r14, %rdi
callq 0xb010
movq %rbx, %rdi
movq %r14, %rsi
callq 0x1a38a
movq 0xe0(%rsp), %rdi
leaq 0xf0(%rsp), %rax
cmpq %rax, %rdi
je 0x96cc
movq 0xf0(%rsp), %rsi
incq %rsi
callq 0x62b0
jmp 0x96cc
lock
incl 0x8(%r15)
movq %r15, %rbp
movq 0x20(%rsp), %rax
movq 0x28(%rsp), %rdx
subq %rax, %rdx
sarq $0x5, %rdx
cmpq $0x8, %rdx
jbe 0xa03f
movq 0x100(%rax), %r15
movq 0x10(%rsp), %rax
movl (%rax), %ebx
movl $0x0, (%rax)
movq %r15, %rdi
leaq 0x48(%rsp), %rsi
movl $0xa, %edx
callq 0x6380
cmpq %r15, 0x48(%rsp)
je 0xa05e
leaq -0x80000000(%rax), %rcx
movabsq $-0x100000000, %rdx     # imm = 0xFFFFFFFF00000000
cmpq %rdx, %rcx
jb 0xa052
movq 0x10(%rsp), %rcx
movl (%rcx), %ecx
cmpl $0x22, %ecx
je 0xa052
testl %ecx, %ecx
movq 0x8(%rsp), %r15
jne 0x96bc
movq 0x10(%rsp), %rcx
movl %ebx, (%rcx)
xorl %esi, %esi
testl %eax, %eax
setne %sil
movq %r14, %rdi
callq 0x1a1ba
movl $0x9, %ebx
movl $0x9, %eax
jmp 0x983e
lock
incl 0x8(%r15)
movq %r15, %rbp
movq 0x20(%rsp), %rax
movq 0x28(%rsp), %rdx
subq %rax, %rdx
sarq $0x5, %rdx
cmpq $0x8, %rdx
jbe 0xa06a
leaq 0xd0(%rsp), %rcx
movq %rcx, 0xc0(%rsp)
movq 0x100(%rax), %rsi
movq 0x108(%rax), %rdx
addq %rsi, %rdx
movq %r14, %rdi
callq 0xb010
movq %rbx, %rdi
movq %r14, %rsi
callq 0x1cb04
movq 0xc0(%rsp), %rdi
leaq 0xd0(%rsp), %rax
cmpq %rax, %rdi
je 0x9757
movq 0xd0(%rsp), %rsi
incq %rsi
callq 0x62b0
testq %rbp, %rbp
je 0x9764
movq %rbp, %rdi
callq 0xafa0
movq 0x18(%rsp), %rdi
leaq 0x236e0(%rip), %rsi     # 0x2ce50
leaq 0x23709(%rip), %rdx     # 0x2ce80
movq $-0x2, %rcx
callq 0x6300
testq %rax, %rax
je 0x97aa
movq %rax, %rbx
testq %r15, %r15
leaq 0xa0(%rsp), %r14
je 0x97bd
movq 0x24829(%rip), %rax     # 0x2dfc8
cmpb $0x0, (%rax)
je 0x97b8
incl 0x8(%r15)
jmp 0x97bd
xorl %ebx, %ebx
xorl %ebp, %ebp
leaq 0xa0(%rsp), %r14
jmp 0x97c0
lock
incl 0x8(%r15)
movq %r15, %rbp
movq 0x20(%rsp), %rax
movq 0x28(%rsp), %rdx
subq %rax, %rdx
sarq $0x5, %rdx
cmpq $0x9, %rdx
jbe 0xa07d
leaq 0xb0(%rsp), %rcx
movq %rcx, 0xa0(%rsp)
movq 0x120(%rax), %rsi
movq 0x128(%rax), %rdx
addq %rsi, %rdx
movq %r14, %rdi
callq 0xb010
movq %rbx, %rdi
movq %r14, %rsi
callq 0x1c984
movq 0xa0(%rsp), %rdi
leaq 0xb0(%rsp), %rax
cmpq %rax, %rdi
je 0x9834
movq 0xb0(%rsp), %rsi
incq %rsi
callq 0x62b0
movl $0xa, %ebx
movl $0xa, %eax
movq %rax, 0x40(%rsp)
testq %rbp, %rbp
je 0x9857
movq %rbp, %rdi
callq 0xafa0
movl %ebx, %eax
movq %rax, 0x40(%rsp)
movq 0x78(%rsp), %rdi
leaq 0x1c0(%rsp), %rsi
callq 0xb5c6
movzbl (%rax), %eax
cmpl $0x4c, %eax
jg 0x98d3
cmpl $0x41, %eax
je 0x9935
cmpl $0x46, %eax
jne 0x9d8b
movq 0x18(%rsp), %rdi
leaq 0x235c1(%rip), %rsi     # 0x2ce50
leaq 0x23612(%rip), %rdx     # 0x2cea8
xorl %ecx, %ecx
callq 0x6300
movl $0x0, %ebp
movl $0x0, %r14d
testq %rax, %rax
je 0x99e0
testq %r15, %r15
je 0x99da
movq 0x24707(%rip), %rcx     # 0x2dfc8
cmpb $0x0, (%rcx)
je 0x99d5
incl 0x8(%r15)
jmp 0x99da
cmpl $0x4d, %eax
je 0x9985
cmpl $0x52, %eax
jne 0x9d8b
movq 0x18(%rsp), %rdi
leaq 0x2355f(%rip), %rsi     # 0x2ce50
leaq 0x235c8(%rip), %rdx     # 0x2cec0
xorl %ecx, %ecx
callq 0x6300
movl $0x0, %ebp
movl $0x0, %r14d
testq %rax, %rax
je 0x9ae3
testq %r15, %r15
je 0x9add
movq 0x246a5(%rip), %rcx     # 0x2dfc8
cmpb $0x0, (%rcx)
je 0x9ad8
incl 0x8(%r15)
jmp 0x9add
movq 0x18(%rsp), %rdi
leaq 0x2350f(%rip), %rsi     # 0x2ce50
leaq 0x23548(%rip), %rdx     # 0x2ce90
xorl %ecx, %ecx
callq 0x6300
movl $0x0, %ebp
movl $0x0, %r14d
testq %rax, %rax
je 0x9b88
testq %r15, %r15
je 0x9b82
movq 0x24655(%rip), %rcx     # 0x2dfc8
cmpb $0x0, (%rcx)
je 0x9b7d
incl 0x8(%r15)
jmp 0x9b82
movq 0x18(%rsp), %rdi
leaq 0x234bf(%rip), %rsi     # 0x2ce50
leaq 0x23540(%rip), %rdx     # 0x2ced8
xorl %ecx, %ecx
callq 0x6300
movl $0x0, %ebp
movl $0x0, %r14d
testq %rax, %rax
je 0x9c33
testq %r15, %r15
je 0x9c2d
movq 0x24605(%rip), %rcx     # 0x2dfc8
cmpb $0x0, (%rcx)
je 0x9c28
incl 0x8(%r15)
jmp 0x9c2d
lock
incl 0x8(%r15)
movq %rax, %rbp
movq %r15, %r14
movslq 0x40(%rsp), %rsi
movq 0x20(%rsp), %rax
movq 0x28(%rsp), %rdx
subq %rax, %rdx
sarq $0x5, %rdx
cmpq %rsi, %rdx
jbe 0xa0ef
shlq $0x5, %rsi
movq (%rax,%rsi), %r15
movq 0x10(%rsp), %rax
movl (%rax), %ebx
movl $0x0, (%rax)
movq %r15, %rdi
leaq 0x48(%rsp), %rsi
movl $0xa, %edx
callq 0x6380
cmpq %r15, 0x48(%rsp)
je 0xa12f
leaq -0x80000000(%rax), %rcx
movabsq $-0x100000000, %rdx     # imm = 0xFFFFFFFF00000000
cmpq %rdx, %rcx
jb 0xa123
movq 0x10(%rsp), %rcx
movl (%rcx), %ecx
cmpl $0x22, %ecx
je 0xa123
testl %ecx, %ecx
movq 0x8(%rsp), %r15
jne 0x9a6b
movq 0x10(%rsp), %rcx
movl %ebx, (%rcx)
xorl %esi, %esi
testl %eax, %eax
setne %sil
movq %rbp, %rdi
callq 0x1f616
testq %r14, %r14
je 0x9a88
movq %r14, %rdi
callq 0xafa0
movq 0x18(%rsp), %rdi
leaq 0x233bc(%rip), %rsi     # 0x2ce50
leaq 0x2340d(%rip), %rdx     # 0x2cea8
xorl %ecx, %ecx
callq 0x6300
movl $0x0, %ebp
movl $0x0, %r14d
testq %rax, %rax
je 0x9cde
testq %r15, %r15
je 0x9cd8
movq 0x24502(%rip), %rcx     # 0x2dfc8
cmpb $0x0, (%rcx)
je 0x9cd3
incl 0x8(%r15)
jmp 0x9cd8
lock
incl 0x8(%r15)
movq %rax, %rbp
movq %r15, %r14
movslq 0x40(%rsp), %rsi
movq 0x20(%rsp), %rax
movq 0x28(%rsp), %rdx
subq %rax, %rdx
sarq $0x5, %rdx
cmpq %rsi, %rdx
jbe 0xa0a3
shlq $0x5, %rsi
movq (%rax,%rsi), %r15
movq 0x10(%rsp), %rax
movl (%rax), %ebx
movl $0x0, (%rax)
movq %r15, %rdi
leaq 0x48(%rsp), %rsi
movl $0xa, %edx
callq 0x6380
cmpq %r15, 0x48(%rsp)
je 0xa0bd
leaq -0x80000000(%rax), %rcx
movabsq $-0x100000000, %rdx     # imm = 0xFFFFFFFF00000000
cmpq %rdx, %rcx
jb 0xa0b1
movq 0x10(%rsp), %rcx
movl (%rcx), %ecx
cmpl $0x22, %ecx
je 0xa0b1
testl %ecx, %ecx
movq 0x8(%rsp), %r15
jne 0x9b6e
movq 0x10(%rsp), %rcx
movl %ebx, (%rcx)
movq %rbp, %rdi
movl %eax, %esi
callq 0x1e98c
jmp 0x9d7e
lock
incl 0x8(%r15)
movq %rax, %rbp
movq %r15, %r14
movslq 0x40(%rsp), %rsi
movq 0x20(%rsp), %rax
movq 0x28(%rsp), %rdx
subq %rax, %rdx
sarq $0x5, %rdx
cmpq %rsi, %rdx
jbe 0xa13b
shlq $0x5, %rsi
movq (%rax,%rsi), %r15
movq 0x10(%rsp), %rax
movl (%rax), %ebx
movl $0x0, (%rax)
movq %r15, %rdi
leaq 0x48(%rsp), %rsi
movl $0xa, %edx
callq 0x6380
cmpq %r15, 0x48(%rsp)
je 0xa155
leaq -0x80000000(%rax), %rcx
movabsq $-0x100000000, %rdx     # imm = 0xFFFFFFFF00000000
cmpq %rdx, %rcx
jb 0xa149
movq 0x10(%rsp), %rcx
movl (%rcx), %ecx
cmpl $0x22, %ecx
je 0xa149
testl %ecx, %ecx
movq 0x8(%rsp), %r15
jne 0x9c13
movq 0x10(%rsp), %rcx
movl %ebx, (%rcx)
xorl %esi, %esi
testl %eax, %eax
setne %sil
movq %rbp, %rdi
callq 0x1cfa4
jmp 0x9d7e
lock
incl 0x8(%r15)
movq %rax, %rbp
movq %r15, %r14
movslq 0x40(%rsp), %rsi
movq 0x20(%rsp), %rax
movq 0x28(%rsp), %rdx
subq %rax, %rdx
sarq $0x5, %rdx
cmpq %rsi, %rdx
jbe 0xa0c9
shlq $0x5, %rsi
movq (%rax,%rsi), %r15
movq 0x10(%rsp), %rax
movl (%rax), %ebx
movl $0x0, (%rax)
movq %r15, %rdi
leaq 0x48(%rsp), %rsi
movl $0xa, %edx
callq 0x6380
cmpq %r15, 0x48(%rsp)
je 0xa0e3
leaq -0x80000000(%rax), %rcx
movabsq $-0x100000000, %rdx     # imm = 0xFFFFFFFF00000000
cmpq %rdx, %rcx
jb 0xa0d7
movq 0x10(%rsp), %rcx
movl (%rcx), %ecx
cmpl $0x22, %ecx
je 0xa0d7
testl %ecx, %ecx
movq 0x8(%rsp), %r15
jne 0x9cbe
movq 0x10(%rsp), %rcx
movl %ebx, (%rcx)
xorl %esi, %esi
testl %eax, %eax
setne %sil
movq %rbp, %rdi
callq 0x1dc28
jmp 0x9d7e
lock
incl 0x8(%r15)
movq %rax, %rbp
movq %r15, %r14
movq 0x40(%rsp), %rax
incl %eax
movslq %eax, %rsi
movq 0x20(%rsp), %rax
movq 0x28(%rsp), %rdx
subq %rax, %rdx
sarq $0x5, %rdx
cmpq %rsi, %rdx
jbe 0xa0fd
shlq $0x5, %rsi
movq (%rax,%rsi), %r15
movq 0x10(%rsp), %rax
movl (%rax), %ebx
movl $0x0, (%rax)
movq %r15, %rdi
leaq 0x48(%rsp), %rsi
movl $0xa, %edx
callq 0x6380
cmpq %r15, 0x48(%rsp)
je 0xa117
leaq -0x80000000(%rax), %rcx
movabsq $-0x100000000, %rdx     # imm = 0xFFFFFFFF00000000
cmpq %rdx, %rcx
jb 0xa10b
movq 0x10(%rsp), %rcx
movl (%rcx), %ecx
cmpl $0x22, %ecx
je 0xa10b
testl %ecx, %ecx
movq 0x8(%rsp), %r15
jne 0x9d6e
movq 0x10(%rsp), %rcx
movl %ebx, (%rcx)
xorl %esi, %esi
testl %eax, %eax
setne %sil
movq %rbp, %rdi
callq 0x1f748
testq %r14, %r14
je 0x9d8b
movq %r14, %rdi
callq 0xafa0
movq 0x70(%rsp), %rax
movq (%rax), %rdi
movq 0x18(%rsp), %rax
movq %rax, 0x90(%rsp)
movq %r15, 0x98(%rsp)
testq %r15, %r15
je 0x9dc4
movq 0x24214(%rip), %rax     # 0x2dfc8
cmpb $0x0, (%rax)
je 0x9dbf
incl 0x8(%r15)
jmp 0x9dc4
lock
incl 0x8(%r15)
leaq 0x90(%rsp), %rsi
callq 0xe034
movq 0x98(%rsp), %rdi
testq %rdi, %rdi
je 0x9de3
callq 0xafa0
movq 0x68(%rsp), %rax
incl %eax
movq %rax, 0x68(%rsp)
movq %r15, %rbp
movq %r13, %rdi
movq 0x2419c(%rip), %rsi     # 0x2df98
callq 0x6200
leaq 0x4f0(%rsp), %rdi
callq 0x60f0
movq 0x268(%rsp), %rax
movq -0x18(%rax), %rax
testb $0x2, 0x288(%rsp,%rax)
leaq 0x268(%rsp), %rcx
leaq 0x1e0(%rsp), %rdx
je 0x8f4e
leaq 0x268(%rsp), %rdi
callq 0x6080
movq 0x24184(%rip), %rbx     # 0x2dfd0
leaq 0x17481(%rip), %rsi     # 0x212d4
movl $0x29, %edx
movq %rbx, %rdi
callq 0x6310
movq (%rbx), %rax
addq -0x18(%rax), %rbx
movq %rbx, %rdi
movl $0xa, %esi
callq 0x6280
movsbl %al, %esi
movq 0x24152(%rip), %rdi     # 0x2dfd0
callq 0x6030
movq %rax, %rdi
callq 0x61c0
movq 0x2413e(%rip), %rdi     # 0x2dfd0
leaq 0x173bb(%rip), %rsi     # 0x21254
movl $0x11, %edx
callq 0x6310
movq 0x24126(%rip), %rdi     # 0x2dfd0
movq 0x68(%rsp), %rsi
callq 0x6450
movq %rax, %rbx
leaq 0x174ee(%rip), %rsi     # 0x213ac
movl $0x9, %edx
movq %rax, %rdi
callq 0x6310
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x6280
movsbl %al, %esi
movq %rbx, %rdi
callq 0x6030
movq %rax, %rdi
callq 0x61c0
testq %r15, %r15
je 0x9eff
movq %r15, %rdi
callq 0xafa0
leaq 0x20(%rsp), %rdi
callq 0xac9a
movq 0x1a0(%rsp), %rdi
leaq 0x1b0(%rsp), %rax
cmpq %rax, %rdi
je 0x9f2e
movq 0x1b0(%rsp), %rsi
incq %rsi
callq 0x62b0
movq 0x1c0(%rsp), %rdi
leaq 0x1d0(%rsp), %rax
cmpq %rax, %rdi
je 0x9f53
movq 0x1d0(%rsp), %rsi
incq %rsi
callq 0x62b0
movq 0x208(%rsp), %rdi
leaq 0x218(%rsp), %rax
cmpq %rax, %rdi
je 0x9f78
movq 0x218(%rsp), %rsi
incq %rsi
callq 0x62b0
movq 0x1e0(%rsp), %rdi
leaq 0x1f0(%rsp), %rax
cmpq %rax, %rdi
je 0x9f9d
movq 0x1f0(%rsp), %rsi
incq %rsi
callq 0x62b0
movq 0x228(%rsp), %rdi
leaq 0x238(%rsp), %rax
cmpq %rax, %rdi
je 0x9fc2
movq 0x238(%rsp), %rsi
incq %rsi
callq 0x62b0
leaq 0x268(%rsp), %rdi
callq 0x6090
jmp 0x8de9
movl $0x3, %esi
jmp 0xa031
callq 0x6110
leaq 0x17418(%rip), %rdi     # 0x213ff
movl $0x1, %esi
movq %rbp, 0x8(%rsp)
xorl %eax, %eax
callq 0x63d0
movl $0x2, %esi
jmp 0xa031
leaq 0x173da(%rip), %rdi     # 0x213e0
callq 0x63a0
movl $0x7, %esi
jmp 0xa031
movl $0x5, %esi
jmp 0xa031
movl $0x6, %esi
jmp 0xa031
leaq 0x173b9(%rip), %rdi     # 0x213e0
callq 0x61b0
movl $0x4, %esi
leaq 0x173c7(%rip), %rdi     # 0x213ff
xorl %eax, %eax
callq 0x63d0
leaq 0x173b9(%rip), %rdi     # 0x213ff
movl $0x8, %esi
xorl %eax, %eax
callq 0x63d0
leaq 0x17387(%rip), %rdi     # 0x213e0
callq 0x63a0
leaq 0x1737b(%rip), %rdi     # 0x213e0
callq 0x61b0
leaq 0x1738e(%rip), %rdi     # 0x213ff
movl $0x8, %esi
xorl %eax, %eax
callq 0x63d0
leaq 0x1737b(%rip), %rdi     # 0x213ff
movl $0x9, %esi
xorl %eax, %eax
callq 0x63d0
leaq 0x17368(%rip), %rdi     # 0x213ff
movl $0x8, %esi
xorl %eax, %eax
callq 0x63d0
leaq 0x17355(%rip), %rdi     # 0x213ff
xorl %eax, %eax
callq 0x63d0
leaq 0x17328(%rip), %rdi     # 0x213e0
callq 0x63a0
leaq 0x1731c(%rip), %rdi     # 0x213e0
callq 0x61b0
leaq 0x1732f(%rip), %rdi     # 0x213ff
xorl %eax, %eax
callq 0x63d0
leaq 0x17302(%rip), %rdi     # 0x213e0
callq 0x63a0
leaq 0x172f6(%rip), %rdi     # 0x213e0
callq 0x61b0
leaq 0x17309(%rip), %rdi     # 0x213ff
xorl %eax, %eax
callq 0x63d0
leaq 0x172fb(%rip), %rdi     # 0x213ff
xorl %eax, %eax
callq 0x63d0
leaq 0x172ce(%rip), %rdi     # 0x213e0
callq 0x63a0
leaq 0x172c2(%rip), %rdi     # 0x213e0
callq 0x61b0
leaq 0x172b6(%rip), %rdi     # 0x213e0
callq 0x63a0
leaq 0x172aa(%rip), %rdi     # 0x213e0
callq 0x61b0
leaq 0x172bd(%rip), %rdi     # 0x213ff
xorl %eax, %eax
callq 0x63d0
leaq 0x17290(%rip), %rdi     # 0x213e0
callq 0x63a0
leaq 0x17284(%rip), %rdi     # 0x213e0
callq 0x61b0
movl $0x8, %edi
callq 0x6170
leaq 0x17134(%rip), %rcx     # 0x212a6
movq %rcx, (%rax)
movq 0x23e34(%rip), %rsi     # 0x2dfb0
movq %rax, %rdi
xorl %edx, %edx
callq 0x6440
movq %rax, %r12
jmp 0xa4fb
jmp 0xa1a0
jmp 0xa1a0
jmp 0xa1a0
jmp 0xa1a0
jmp 0xa1a0
jmp 0xa1a0
jmp 0xa1a0
jmp 0xa1a0
jmp 0xa1a0
movq %rax, %r12
jmp 0xa256
jmp 0xa282
movq %rax, %r12
movq 0xe0(%rsp), %rdi
leaq 0xf0(%rsp), %rax
cmpq %rax, %rdi
je 0xa22c
movq 0xf0(%rsp), %rsi
jmp 0xa219
jmp 0xa229
jmp 0xa229
movq %rax, %r12
movq 0xa0(%rsp), %rdi
leaq 0xb0(%rsp), %rax
cmpq %rax, %rdi
je 0xa22c
movq 0xb0(%rsp), %rsi
jmp 0xa219
jmp 0xa229
jmp 0xa229
movq %rax, %r12
movq 0xc0(%rsp), %rdi
leaq 0xd0(%rsp), %rax
cmpq %rax, %rdi
je 0xa22c
movq 0xd0(%rsp), %rsi
incq %rsi
callq 0x62b0
jmp 0xa22c
jmp 0xa229
jmp 0xa229
jmp 0xa229
movq %rax, %r12
testq %rbp, %rbp
je 0xa3fe
movq %rbp, %rdi
jmp 0xa262
jmp 0xa242
jmp 0xa242
jmp 0xa242
jmp 0xa242
movq %rax, %r12
movq 0x10(%rsp), %rax
cmpl $0x0, (%rax)
jne 0xa256
movq 0x10(%rsp), %rax
movl %ebx, (%rax)
testq %r14, %r14
je 0xa3fe
movq %r14, %rdi
callq 0xafa0
jmp 0xa3fe
movq %rax, %r12
movq 0x10(%rsp), %rax
cmpl $0x0, (%rax)
jne 0xa22c
movq 0x10(%rsp), %rax
movl %ebx, (%rax)
jmp 0xa22c
movq %rax, %r12
leaq 0x268(%rsp), %rdi
callq 0xab4c
jmp 0xa508
movq %rax, %r12
movq 0x260(%rsp), %rdi
testq %rdi, %rdi
je 0xa337
callq 0xafa0
jmp 0xa337
movq %rax, %r12
movq 0x140(%rsp), %rdi
leaq 0x150(%rsp), %rax
cmpq %rax, %rdi
je 0xa3fe
movq 0x150(%rsp), %rsi
jmp 0xa3a2
movq %rax, %r12
movq 0x98(%rsp), %rdi
testq %rdi, %rdi
jne 0xa262
jmp 0xa3fe
movq %rax, %r12
jmp 0xa311
movq %rax, %r12
movq 0x250(%rsp), %rdi
testq %rdi, %rdi
je 0xa311
callq 0xafa0
movq 0x100(%rsp), %rdi
leaq 0x110(%rsp), %rax
cmpq %rax, %rdi
je 0xa3fe
movq 0x110(%rsp), %rsi
jmp 0xa3a2
movq %rax, %r12
movq 0x120(%rsp), %rdi
leaq 0x130(%rsp), %rax
cmpq %rax, %rdi
je 0xa3fe
movq 0x130(%rsp), %rsi
jmp 0xa3a2
movq %rax, %r12
movq 0x160(%rsp), %rdi
leaq 0x170(%rsp), %rax
cmpq %rax, %rdi
je 0xa3fe
movq 0x170(%rsp), %rsi
jmp 0xa3a2
jmp 0xa3cf
movq %rax, %r12
movq 0x180(%rsp), %rdi
leaq 0x190(%rsp), %rax
cmpq %rax, %rdi
je 0xa3fe
movq 0x190(%rsp), %rsi
incq %rsi
callq 0x62b0
jmp 0xa3fe
movq %rax, %r12
jmp 0xa3ee
jmp 0xa3b3
movq %rax, %r12
jmp 0xa42b
movq %rax, %r12
movq 0x10(%rsp), %rax
cmpl $0x0, (%rax)
jne 0xa3fe
movq 0x10(%rsp), %rax
movl %r15d, (%rax)
jmp 0xa3fe
movq %rax, %r12
movq 0x48(%rsp), %rdi
leaq 0x58(%rsp), %rax
cmpq %rax, %rdi
je 0xa3ee
movq 0x58(%rsp), %rsi
incq %rsi
callq 0x62b0
movq %rbp, %r15
jmp 0xa40a
movq %rax, %r12
movq %rbp, %r15
jmp 0xa42b
movq %rax, %r12
movq 0x8(%rsp), %r15
jmp 0xa40a
jmp 0xa407
movq %rax, %r12
movq 0x23b87(%rip), %rsi     # 0x2df98
leaq 0x470(%rsp), %rdi
callq 0x6200
leaq 0x4f0(%rsp), %rdi
callq 0x60f0
testq %r15, %r15
je 0xa438
movq %r15, %rdi
callq 0xafa0
leaq 0x20(%rsp), %rdi
callq 0xac9a
movq 0x1a0(%rsp), %rdi
leaq 0x1b0(%rsp), %rax
cmpq %rax, %rdi
je 0xa467
movq 0x1b0(%rsp), %rsi
incq %rsi
callq 0x62b0
movq 0x1c0(%rsp), %rdi
leaq 0x1d0(%rsp), %rax
cmpq %rax, %rdi
je 0xa48c
movq 0x1d0(%rsp), %rsi
incq %rsi
callq 0x62b0
movq 0x208(%rsp), %rdi
leaq 0x218(%rsp), %rax
cmpq %rax, %rdi
je 0xa4b1
movq 0x218(%rsp), %rsi
incq %rsi
callq 0x62b0
movq 0x1e0(%rsp), %rdi
leaq 0x1f0(%rsp), %rax
cmpq %rax, %rdi
je 0xa4d6
movq 0x1f0(%rsp), %rsi
incq %rsi
callq 0x62b0
movq 0x228(%rsp), %rdi
leaq 0x238(%rsp), %rax
cmpq %rax, %rdi
je 0xa4fb
movq 0x238(%rsp), %rsi
incq %rsi
callq 0x62b0
leaq 0x268(%rsp), %rdi
callq 0x6090
movq %r12, %rdi
callq 0x6460