// File: /workspace/github_cpp_makefile_star2_O1/brashi[P]PetFera/src/./petshop.cpp
// Function: Petshop::listarAnimais(bool)
void Petshop::listarAnimais(bool autoList) {
    shared_ptr<Veterinario> vet;
    shared_ptr<Tratador> trt;
    string filtro = {}, idPessoa = {}, animalID = {};

    if(autoList)
        goto listBypass;

    if(this->animais.size() == 0)
        throw "Não há animais para visualizar no sistema!";

    cout << "Escolha seu filtro: " << endl << endl;
    cout << "Enter - Todos (sem filtro)" << endl;
    cout << "A - Apenas aves" << endl;
    cout << "F - Apenas anfíbios" << endl;
    cout << "R - Apenas répteis" << endl;
    cout << "M - Apenas mamíferos" << endl;
    cout << "D - Apenas animais domésticos" << endl;
    cout << "E - Apenas silvestres exóticos" << endl;
    cout << "N - Apenas silvestres nativos" << endl;
    cout << "T - Filtrar por tratador" << endl;
    cout << "V - Filtrar por veterinário" << endl;

    getline(cin, filtro);
    long unsigned int num;

listBypass:
    if(filtro.empty())
        filtro = "X";

    if(filtro == "T" || filtro == "t") {
        if(this->tratadores.size() == 0)
            throw "Não há tratadores no sistema!";

        cout << "Digite o ID do tratador responsável: " << endl;
        this->listarTratadores();
        getline(cin, idPessoa);
        num = stoi(idPessoa);
        if(num >= 0 && num < this->tratadores.size())
            trt = this->tratadores[num];
        else
            throw "Tratador não existe!";
    } else if(filtro == "V" || filtro == "v") {
        if(this->veterinarios.size() == 0)
            throw "Não há veterinários no sistema!";

        cout << "Digite o ID do veterinário responsável: " << endl;
        this->listarVeterinarios();
        getline(cin, idPessoa);
        num = stoi(idPessoa);
        if(num >= 0 && num < this->veterinarios.size())
            vet = this->veterinarios[num];
        else
            throw "Veterinário não existe!";
    }

    // Imprime cabeçalho:
    cout << endl << "=-=-=-=-=- Lista de animais -=-=-=-=-=-" << endl;
    cout << right << setfill(' ') << setw(6) << "ID"
         << setfill(' ') << setw(23) << "Nome"
         << setfill(' ') << setw(23) << "Espécie"
         << setfill(' ') << setw(23) << "Ameaçado por"
         << setfill(' ') << setw(23) << "Perigoso" << endl;

    int index = 0;
    char selecao = toupper(filtro[0]);
    for(auto& animal : this->animais) {
        if(selecao == 'V') {
            if(animal->getVeterinario() == vet)
                cout << setfill(' ') << setw(6) << index << animal;
        } else if(selecao == 'T') {
            if(animal->getTratador() == trt)
                cout << setfill(' ') << setw(6) << index << animal;
        } else {
            if(casts.filtro[selecao](animal))
                cout << setfill(' ') << setw(6) << index << animal;
        }
        index++;
    }
    cout << endl << "-=-=-=-=-=-=-=-=- Fim -=-=-=-=-=-=-=-=-" << endl << endl;

    if(!autoList) {
        cout << endl << "Digite o ID de um animal a ser visualizado: " << endl;
        cout << "(Mantenha em branco para cancelar a operação)" << endl;
        getline(cin, animalID);
        if(animalID.size() != 0) {
            num = stoi(animalID);
            if(num >= 0 && num < this->animais.size())
                Animal::printOutDetails(this->animais[num]);
            else
                throw "Animal não existe!";
        } else
            cout << "Operação cancelada..." << endl;
    }
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x108, %rsp            # imm = 0x108
movq %rdi, %r15
xorps %xmm0, %xmm0
movaps %xmm0, 0x80(%rsp)
movaps %xmm0, 0x70(%rsp)
leaq 0x38(%rsp), %rcx
movq %rcx, -0x10(%rcx)
xorl %eax, %eax
movq %rax, -0x8(%rcx)
movb %al, (%rcx)
leaq 0x60(%rsp), %rcx
movq %rcx, -0x10(%rcx)
movq %rax, -0x8(%rcx)
movb %al, (%rcx)
leaq 0xf0(%rsp), %r12
movq %r12, -0x10(%r12)
movq %rax, -0x8(%r12)
movb %al, (%r12)
movl %esi, 0x24(%rsp)
testl %esi, %esi
jne 0x128a0
movq 0x38(%r15), %rax
cmpq 0x30(%r15), %rax
je 0x1349a
movq 0x1ba81(%rip), %rbx     # 0x2dfd0
leaq 0x10614(%rip), %rsi     # 0x22b6a
movl $0x14, %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 0x1ba4f(%rip), %rdi     # 0x2dfd0
callq 0x6030
movq %rax, %rdi
callq 0x61c0
movq %rax, %rbx
movq (%rax), %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
movq 0x1ba11(%rip), %rbx     # 0x2dfd0
leaq 0x105b9(%rip), %rsi     # 0x22b7f
movl $0x1a, %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 0x1b9df(%rip), %rdi     # 0x2dfd0
callq 0x6030
movq %rax, %rdi
callq 0x61c0
movq 0x1b9cb(%rip), %rbx     # 0x2dfd0
leaq 0x1058e(%rip), %rsi     # 0x22b9a
movl $0xf, %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 0x1b999(%rip), %rdi     # 0x2dfd0
callq 0x6030
movq %rax, %rdi
callq 0x61c0
movq 0x1b985(%rip), %rbx     # 0x2dfd0
leaq 0x10558(%rip), %rsi     # 0x22baa
movl $0x14, %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 0x1b953(%rip), %rdi     # 0x2dfd0
callq 0x6030
movq %rax, %rdi
callq 0x61c0
movq 0x1b93f(%rip), %rbx     # 0x2dfd0
leaq 0x10527(%rip), %rsi     # 0x22bbf
movl $0x13, %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 0x1b90d(%rip), %rdi     # 0x2dfd0
callq 0x6030
movq %rax, %rdi
callq 0x61c0
movq 0x1b8f9(%rip), %rbx     # 0x2dfd0
leaq 0x104f5(%rip), %rsi     # 0x22bd3
movl $0x15, %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 0x1b8c7(%rip), %rdi     # 0x2dfd0
callq 0x6030
movq %rax, %rdi
callq 0x61c0
movq 0x1b8b3(%rip), %rbx     # 0x2dfd0
leaq 0x104c5(%rip), %rsi     # 0x22be9
movl $0x1e, %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 0x1b881(%rip), %rdi     # 0x2dfd0
callq 0x6030
movq %rax, %rdi
callq 0x61c0
movq 0x1b86d(%rip), %rbx     # 0x2dfd0
leaq 0x1049e(%rip), %rsi     # 0x22c08
movl $0x1f, %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 0x1b83b(%rip), %rdi     # 0x2dfd0
callq 0x6030
movq %rax, %rdi
callq 0x61c0
movq 0x1b827(%rip), %rbx     # 0x2dfd0
leaq 0x10478(%rip), %rsi     # 0x22c28
movl $0x1d, %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 0x1b7f5(%rip), %rdi     # 0x2dfd0
callq 0x6030
movq %rax, %rdi
callq 0x61c0
movq 0x1b7e1(%rip), %rbx     # 0x2dfd0
leaq 0x10450(%rip), %rsi     # 0x22c46
movl $0x18, %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 0x1b7af(%rip), %rdi     # 0x2dfd0
callq 0x6030
movq %rax, %rdi
callq 0x61c0
movq 0x1b79b(%rip), %rbx     # 0x2dfd0
leaq 0x10423(%rip), %rsi     # 0x22c5f
movl $0x1c, %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 0x1b769(%rip), %rdi     # 0x2dfd0
callq 0x6030
movq %rax, %rdi
callq 0x61c0
movq 0x1b765(%rip), %rdi     # 0x2dfe0
movq (%rdi), %rax
addq -0x18(%rax), %rdi
movl $0xa, %esi
callq 0x6280
movsbl %al, %edx
movq 0x1b74a(%rip), %rdi     # 0x2dfe0
leaq 0x28(%rsp), %rsi
callq 0x6480
movq 0x30(%rsp), %rdx
testq %rdx, %rdx
jne 0x128c3
leaq 0x103cb(%rip), %rcx     # 0x22c7c
leaq 0x28(%rsp), %rdi
movl $0x1, %r8d
xorl %esi, %esi
callq 0x63f0
leaq 0x103b4(%rip), %rsi     # 0x22c7e
leaq 0x28(%rsp), %rdi
callq 0x60d0
testl %eax, %eax
je 0x12a36
leaq 0xe93b(%rip), %rsi      # 0x2121e
leaq 0x28(%rsp), %rdi
callq 0x60d0
testl %eax, %eax
je 0x12a36
leaq 0xf67f(%rip), %rsi      # 0x21f7b
leaq 0x28(%rsp), %rdi
callq 0x60d0
testl %eax, %eax
je 0x12923
leaq 0xe750(%rip), %rsi      # 0x21061
leaq 0x28(%rsp), %rdi
callq 0x60d0
testl %eax, %eax
jne 0x12b5c
movq 0x8(%r15), %rax
cmpq (%r15), %rax
je 0x134e0
movq 0x1b699(%rip), %rbx     # 0x2dfd0
leaq 0xf83c(%rip), %rsi      # 0x2217a
movl $0x2a, %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 0x1b667(%rip), %rdi     # 0x2dfd0
callq 0x6030
movq %rax, %rdi
callq 0x61c0
movq %r15, %rdi
callq 0xf93e
movq 0x1b65b(%rip), %rdi     # 0x2dfe0
movq (%rdi), %rax
addq -0x18(%rax), %rdi
movl $0xa, %esi
callq 0x6280
movsbl %al, %edx
movq 0x1b640(%rip), %rdi     # 0x2dfe0
leaq 0x50(%rsp), %rsi
callq 0x6480
movq %r15, %r13
movq 0x50(%rsp), %rbx
callq 0x6050
movq %rax, %r14
movl (%rax), %ebp
movl $0x0, (%rax)
leaq 0x10(%rsp), %r15
movq %rbx, %rdi
movq %r15, %rsi
movl $0xa, %edx
callq 0x6380
cmpq %rbx, (%r15)
je 0x134e9
leaq -0x80000000(%rax), %rcx
movabsq $-0x100000000, %rdx     # imm = 0xFFFFFFFF00000000
cmpq %rdx, %rcx
jb 0x134f5
movl (%r14), %ecx
cmpl $0x22, %ecx
je 0x134f5
testl %ecx, %ecx
movq %r13, %r15
jne 0x12a10
movl %ebp, (%r14)
cltq
movq (%r15), %rcx
movq 0x8(%r15), %rdx
subq %rcx, %rdx
sarq $0x4, %rdx
cmpq %rax, %rdx
jbe 0x13501
leaq 0x88(%rsp), %rdi
jmp 0x12b43
movq 0x20(%r15), %rax
cmpq 0x18(%r15), %rax
je 0x1346d
movq 0x1b585(%rip), %rbx     # 0x2dfd0
leaq 0xf8ce(%rip), %rsi      # 0x22320
movl $0x26, %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 0x1b553(%rip), %rdi     # 0x2dfd0
callq 0x6030
movq %rax, %rdi
callq 0x61c0
movq %r15, %rdi
callq 0xfcce
movq 0x1b547(%rip), %rdi     # 0x2dfe0
movq (%rdi), %rax
addq -0x18(%rax), %rdi
movl $0xa, %esi
callq 0x6280
movsbl %al, %edx
movq 0x1b52c(%rip), %rdi     # 0x2dfe0
leaq 0x50(%rsp), %rsi
callq 0x6480
movq %r15, %r13
movq 0x50(%rsp), %rbx
callq 0x6050
movq %rax, %r14
movl (%rax), %ebp
movl $0x0, (%rax)
leaq 0x10(%rsp), %r15
movq %rbx, %rdi
movq %r15, %rsi
movl $0xa, %edx
callq 0x6380
cmpq %rbx, (%r15)
je 0x13479
leaq -0x80000000(%rax), %rcx
movabsq $-0x100000000, %rdx     # imm = 0xFFFFFFFF00000000
cmpq %rdx, %rcx
jb 0x13485
movl (%r14), %ecx
cmpl $0x22, %ecx
je 0x13485
testl %ecx, %ecx
movq %r13, %r15
jne 0x12b24
movl %ebp, (%r14)
cltq
movq 0x18(%r15), %rcx
movq 0x20(%r15), %rdx
subq %rcx, %rdx
sarq $0x4, %rdx
cmpq %rax, %rdx
jbe 0x13491
leaq 0x78(%rsp), %rdi
shlq $0x4, %rax
leaq (%rcx,%rax), %rsi
movq (%rcx,%rax), %rax
movq %rax, -0x8(%rdi)
addq $0x8, %rsi
callq 0x14ee8
movq 0x1b46d(%rip), %rdi     # 0x2dfd0
movq (%rdi), %rax
addq -0x18(%rax), %rdi
movl $0xa, %esi
callq 0x6280
movsbl %al, %esi
movq 0x1b452(%rip), %rbx     # 0x2dfd0
movq %rbx, %rdi
callq 0x6030
movq %rax, %rdi
callq 0x61c0
movq %rax, %r14
leaq 0x100e8(%rip), %rsi     # 0x22c80
movl $0x27, %edx
movq %rax, %rdi
callq 0x6310
movq (%r14), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x6280
movsbl %al, %esi
movq %r14, %rdi
callq 0x6030
movq %rax, %rdi
callq 0x61c0
movq (%rbx), %rax
movq -0x18(%rax), %rcx
movl $0xffffff4f, %edx       # imm = 0xFFFFFF4F
andl 0x18(%rbx,%rcx), %edx
orl $0x80, %edx
movl %edx, 0x18(%rbx,%rcx)
movq -0x18(%rax), %rax
leaq (%rbx,%rax), %r14
cmpb $0x0, 0xe1(%rbx,%rax)
jne 0x12c14
movq %r14, %rdi
movl $0x20, %esi
callq 0x6280
movb %al, 0xe0(%r14)
movb $0x1, 0xe1(%r14)
movb $0x20, 0xe0(%r14)
movq (%rbx), %rax
movq -0x18(%rax), %rax
movq $0x6, 0x10(%rbx,%rax)
leaq 0xfe70(%rip), %rsi      # 0x22aa3
movl $0x2, %edx
movq %rbx, %rdi
callq 0x6310
movq (%rbx), %rax
movq -0x18(%rax), %rax
leaq (%rbx,%rax), %r14
cmpb $0x0, 0xe1(%rbx,%rax)
jne 0x12c71
movq %r14, %rdi
movl $0x20, %esi
callq 0x6280
movb %al, 0xe0(%r14)
movb $0x1, 0xe1(%r14)
movb $0x20, 0xe0(%r14)
movq (%rbx), %rax
movq -0x18(%rax), %rax
movq $0x17, 0x10(%rbx,%rax)
leaq 0xfe16(%rip), %rsi      # 0x22aa6
movl $0x4, %edx
movq %rbx, %rdi
callq 0x6310
movq (%rbx), %rax
movq -0x18(%rax), %rax
leaq (%rbx,%rax), %r14
cmpb $0x0, 0xe1(%rbx,%rax)
jne 0x12cce
movq %r14, %rdi
movl $0x20, %esi
callq 0x6280
movb %al, 0xe0(%r14)
movb $0x1, 0xe1(%r14)
movb $0x20, 0xe0(%r14)
movq (%rbx), %rax
movq -0x18(%rax), %rax
movq $0x17, 0x10(%rbx,%rax)
leaq 0xffbb(%rip), %rsi      # 0x22ca8
movl $0x8, %edx
movq %rbx, %rdi
callq 0x6310
movq (%rbx), %rax
movq -0x18(%rax), %rax
leaq (%rbx,%rax), %r14
cmpb $0x0, 0xe1(%rbx,%rax)
jne 0x12d2b
movq %r14, %rdi
movl $0x20, %esi
callq 0x6280
movb %al, 0xe0(%r14)
movb $0x1, 0xe1(%r14)
movb $0x20, 0xe0(%r14)
movq (%rbx), %rax
movq -0x18(%rax), %rax
movq $0x17, 0x10(%rbx,%rax)
leaq 0xff67(%rip), %rsi      # 0x22cb1
movl $0xd, %edx
movq %rbx, %rdi
callq 0x6310
movq (%rbx), %rax
movq -0x18(%rax), %rax
leaq (%rbx,%rax), %r14
cmpb $0x0, 0xe1(%rbx,%rax)
jne 0x12d88
movq %r14, %rdi
movl $0x20, %esi
callq 0x6280
movb %al, 0xe0(%r14)
movb $0x1, 0xe1(%r14)
movb $0x20, 0xe0(%r14)
movq (%rbx), %rax
movq -0x18(%rax), %rax
movq $0x17, 0x10(%rbx,%rax)
leaq 0xff18(%rip), %rsi      # 0x22cbf
movl $0x8, %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 0x1b1fe(%rip), %r14     # 0x2dfd0
movq %r14, %rdi
callq 0x6030
movq %rax, %rdi
callq 0x61c0
movq 0x28(%rsp), %rax
movsbl (%rax), %edi
callq 0x6490
movb %al, 0xf(%rsp)
movq 0x30(%r15), %rbx
movq %r15, 0x48(%rsp)
movq 0x38(%r15), %r15
cmpq %r15, %rbx
je 0x1312a
movq 0x48(%rsp), %rax
addq $0x78, %rax
movq %rax, 0x100(%rsp)
xorl %r12d, %r12d
movzbl 0xf(%rsp), %eax
cmpl $0x54, %eax
je 0x12ef0
cmpl $0x56, %eax
jne 0x12fa9
movq (%rbx), %rsi
leaq 0x10(%rsp), %rdi
callq 0x17eaa
movq 0x10(%rsp), %rbp
movq 0x18(%rsp), %rdi
movq 0x80(%rsp), %r13
testq %rdi, %rdi
je 0x12e5d
callq 0xafa0
cmpq %r13, %rbp
jne 0x1311a
movq (%r14), %rax
movq -0x18(%rax), %rax
leaq (%r14,%rax), %rbp
cmpb $0x0, 0xe1(%r14,%rax)
jne 0x12e96
movq %rbp, %rdi
movl $0x20, %esi
callq 0x6280
movb %al, 0xe0(%rbp)
movb $0x1, 0xe1(%rbp)
movb $0x20, 0xe0(%rbp)
movq (%r14), %rax
movq -0x18(%rax), %rax
movq $0x6, 0x10(%r14,%rax)
movq %r14, %rdi
movl %r12d, %esi
callq 0x6450
movq (%rbx), %rcx
movq %rcx, 0xd0(%rsp)
movq 0x8(%rbx), %rcx
movq %rcx, 0xd8(%rsp)
testq %rcx, %rcx
je 0x130da
movq 0x1b0e9(%rip), %rdx     # 0x2dfc8
cmpb $0x0, (%rdx)
je 0x130d6
incl 0x8(%rcx)
jmp 0x130da
movq (%rbx), %rsi
leaq 0x10(%rsp), %rdi
callq 0x17eea
movq 0x10(%rsp), %rbp
movq 0x18(%rsp), %rdi
movq 0x70(%rsp), %r13
testq %rdi, %rdi
je 0x12f16
callq 0xafa0
cmpq %r13, %rbp
jne 0x1311a
movq (%r14), %rax
movq -0x18(%rax), %rax
leaq (%r14,%rax), %rbp
cmpb $0x0, 0xe1(%r14,%rax)
jne 0x12f4f
movq %rbp, %rdi
movl $0x20, %esi
callq 0x6280
movb %al, 0xe0(%rbp)
movb $0x1, 0xe1(%rbp)
movb $0x20, 0xe0(%rbp)
movq (%r14), %rax
movq -0x18(%rax), %rax
movq $0x6, 0x10(%r14,%rax)
movq %r14, %rdi
movl %r12d, %esi
callq 0x6450
movq (%rbx), %rcx
movq %rcx, 0xc0(%rsp)
movq 0x8(%rbx), %rcx
movq %rcx, 0xc8(%rsp)
testq %rcx, %rcx
je 0x130f8
movq 0x1b030(%rip), %rdx     # 0x2dfc8
cmpb $0x0, (%rdx)
je 0x130f4
incl 0x8(%rcx)
jmp 0x130f8
movq 0x100(%rsp), %rdi
leaq 0xf(%rsp), %rsi
callq 0x14c2a
movq (%rbx), %rcx
movq %rcx, 0xb0(%rsp)
movq 0x8(%rbx), %rcx
movq %rcx, 0xb8(%rsp)
testq %rcx, %rcx
je 0x12fec
movq 0x1afea(%rip), %rdx     # 0x2dfc8
cmpb $0x0, (%rdx)
je 0x12fe8
incl 0x8(%rcx)
jmp 0x12fec
lock
incl 0x8(%rcx)
cmpq $0x0, 0x10(%rax)
je 0x13468
leaq 0x10(%rsp), %rdi
movq %rax, %rsi
leaq 0xb0(%rsp), %rdx
callq *0x18(%rax)
movq 0x10(%rsp), %rbp
movq 0x18(%rsp), %rdi
testq %rdi, %rdi
je 0x1301e
callq 0xafa0
movq 0xb8(%rsp), %rdi
testq %rdi, %rdi
je 0x13030
callq 0xafa0
testq %rbp, %rbp
je 0x1311a
movq (%r14), %rax
movq -0x18(%rax), %rax
leaq (%r14,%rax), %rbp
cmpb $0x0, 0xe1(%r14,%rax)
jne 0x13069
movq %rbp, %rdi
movl $0x20, %esi
callq 0x6280
movb %al, 0xe0(%rbp)
movb $0x1, 0xe1(%rbp)
movb $0x20, 0xe0(%rbp)
movq (%r14), %rax
movq -0x18(%rax), %rax
movq $0x6, 0x10(%r14,%rax)
movq %r14, %rdi
movl %r12d, %esi
callq 0x6450
movq (%rbx), %rcx
movq %rcx, 0xa0(%rsp)
movq 0x8(%rbx), %rcx
movq %rcx, 0xa8(%rsp)
testq %rcx, %rcx
je 0x130bc
movq 0x1af1a(%rip), %rdx     # 0x2dfc8
cmpb $0x0, (%rdx)
je 0x130b8
incl 0x8(%rcx)
jmp 0x130bc
lock
incl 0x8(%rcx)
movq %rax, %rdi
leaq 0xa0(%rsp), %rsi
callq 0x1a021
movq 0xa8(%rsp), %rdi
jmp 0x13110
lock
incl 0x8(%rcx)
movq %rax, %rdi
leaq 0xd0(%rsp), %rsi
callq 0x1a021
movq 0xd8(%rsp), %rdi
jmp 0x13110
lock
incl 0x8(%rcx)
movq %rax, %rdi
leaq 0xc0(%rsp), %rsi
callq 0x1a021
movq 0xc8(%rsp), %rdi
testq %rdi, %rdi
je 0x1311a
callq 0xafa0
incl %r12d
addq $0x10, %rbx
cmpq %r15, %rbx
jne 0x12e1d
movq (%r14), %rax
addq -0x18(%rax), %r14
movq %r14, %rdi
movl $0xa, %esi
leaq 0xf0(%rsp), %r12
callq 0x6280
movsbl %al, %esi
movq 0x1ae80(%rip), %rbx     # 0x2dfd0
movq %rbx, %rdi
callq 0x6030
movq %rax, %rdi
callq 0x61c0
movq %rax, %r14
leaq 0xf95f(%rip), %rsi      # 0x22ac9
movl $0x27, %edx
movq %rax, %rdi
callq 0x6310
movq (%r14), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x6280
movsbl %al, %esi
movq %r14, %rdi
callq 0x6030
movq %rax, %rdi
callq 0x61c0
movq %rax, %r14
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x6280
movsbl %al, %esi
movq %r14, %rdi
callq 0x6030
movq %rax, %rdi
callq 0x61c0
cmpb $0x0, 0x24(%rsp)
jne 0x133e0
movq (%rbx), %rax
addq -0x18(%rax), %rbx
movq %rbx, %rdi
movl $0xa, %esi
callq 0x6280
movsbl %al, %esi
movq 0x1addf(%rip), %rdi     # 0x2dfd0
callq 0x6030
movq %rax, %rdi
callq 0x61c0
movq %rax, %rbx
leaq 0xfac0(%rip), %rsi      # 0x22cc8
movl $0x2c, %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
movq 0x1ad8d(%rip), %rbx     # 0x2dfd0
leaq 0xfaab(%rip), %rsi      # 0x22cf5
movl $0x2f, %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 0x1ad5b(%rip), %rdi     # 0x2dfd0
callq 0x6030
movq %rax, %rdi
callq 0x61c0
movq 0x1ad57(%rip), %rdi     # 0x2dfe0
movq (%rdi), %rax
addq -0x18(%rax), %rdi
movl $0xa, %esi
callq 0x6280
movsbl %al, %edx
movq 0x1ad3c(%rip), %rdi     # 0x2dfe0
leaq 0xe0(%rsp), %rsi
callq 0x6480
cmpq $0x0, 0xe8(%rsp)
je 0x13375
movq 0xe0(%rsp), %rbx
callq 0x6050
movq %rax, %r14
movl (%rax), %ebp
movl $0x0, (%rax)
leaq 0x10(%rsp), %r15
movq %rbx, %rdi
movq %r15, %rsi
movl $0xa, %edx
callq 0x6380
cmpq %rbx, (%r15)
je 0x134a3
leaq -0x80000000(%rax), %rcx
movabsq $-0x100000000, %rdx     # imm = 0xFFFFFFFF00000000
cmpq %rdx, %rcx
movq 0x48(%rsp), %rdx
jb 0x134af
movl (%r14), %ecx
cmpl $0x22, %ecx
je 0x134af
testl %ecx, %ecx
jne 0x13328
movl %ebp, (%r14)
cltq
movq 0x30(%rdx), %rcx
movq 0x38(%rdx), %rdx
subq %rcx, %rdx
sarq $0x4, %rdx
cmpq %rax, %rdx
jbe 0x134bb
shlq $0x4, %rax
movq (%rcx,%rax), %rdx
movq %rdx, 0x90(%rsp)
movq 0x8(%rcx,%rax), %rax
movq %rax, 0x98(%rsp)
testq %rax, %rax
je 0x133c1
movq 0x1ac5d(%rip), %rcx     # 0x2dfc8
cmpb $0x0, (%rcx)
je 0x133bd
incl 0x8(%rax)
jmp 0x133c1
movq 0x1ac54(%rip), %rbx     # 0x2dfd0
leaq 0xe835(%rip), %rsi      # 0x21bb8
movl $0x17, %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 0x1ac22(%rip), %rdi     # 0x2dfd0
callq 0x6030
movq %rax, %rdi
callq 0x61c0
jmp 0x133e0
lock
incl 0x8(%rax)
leaq 0x90(%rsp), %rdi
callq 0x1898c
movq 0x98(%rsp), %rdi
testq %rdi, %rdi
je 0x133e0
callq 0xafa0
movq 0xe0(%rsp), %rdi
cmpq %r12, %rdi
je 0x133fd
movq 0xf0(%rsp), %rsi
incq %rsi
callq 0x62b0
movq 0x50(%rsp), %rdi
leaq 0x60(%rsp), %rax
cmpq %rax, %rdi
je 0x13419
movq 0x60(%rsp), %rsi
incq %rsi
callq 0x62b0
movq 0x28(%rsp), %rdi
leaq 0x38(%rsp), %rax
cmpq %rax, %rdi
je 0x13435
movq 0x38(%rsp), %rsi
incq %rsi
callq 0x62b0
movq 0x78(%rsp), %rdi
testq %rdi, %rdi
je 0x13444
callq 0xafa0
movq 0x88(%rsp), %rdi
testq %rdi, %rdi
je 0x13456
callq 0xafa0
addq $0x108, %rsp            # imm = 0x108
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
callq 0x6110
leaq 0xec11(%rip), %rbx      # 0x22085
jmp 0x13508
leaq 0xdf60(%rip), %rdi      # 0x213e0
callq 0x61b0
leaq 0xdf54(%rip), %rdi      # 0x213e0
callq 0x63a0
leaq 0xeeaf(%rip), %rbx      # 0x22347
jmp 0x13508
leaq 0xf69c(%rip), %rbx      # 0x22b3d
jmp 0x13508
leaq 0xdf36(%rip), %rdi      # 0x213e0
callq 0x61b0
leaq 0xdf2a(%rip), %rdi      # 0x213e0
callq 0x63a0
movl $0x8, %edi
callq 0x6170
leaq 0xf234(%rip), %rcx      # 0x22700
movq %rcx, (%rax)
movq 0x1aada(%rip), %rsi     # 0x2dfb0
movq %rax, %rdi
xorl %edx, %edx
callq 0x6440
leaq 0xeb7b(%rip), %rbx      # 0x22062
jmp 0x13508
leaq 0xdef0(%rip), %rdi      # 0x213e0
callq 0x61b0
leaq 0xdee4(%rip), %rdi      # 0x213e0
callq 0x63a0
leaq 0xec9d(%rip), %rbx      # 0x221a5
movl $0x8, %edi
callq 0x6170
movq %rbx, (%rax)
movq 0x1aa94(%rip), %rsi     # 0x2dfb0
movq %rax, %rdi
xorl %edx, %edx
callq 0x6440
movq %rax, %rbx
movq 0x98(%rsp), %rdi
jmp 0x1358b
jmp 0x13543
movq %rax, %rbx
cmpl $0x0, (%r14)
jne 0x1359c
movl %ebp, (%r14)
jmp 0x1359c
movq %rax, %rbx
cmpl $0x0, (%r14)
jne 0x135a9
movl %ebp, (%r14)
jmp 0x135a9
movq %rax, %rbx
movq 0xc8(%rsp), %rdi
jmp 0x1358b
movq %rax, %rbx
movq 0xd8(%rsp), %rdi
jmp 0x1358b
movq %rax, %rbx
movq 0xa8(%rsp), %rdi
jmp 0x1358b
jmp 0x13580
jmp 0x13599
jmp 0x13599
jmp 0x13599
movq %rax, %rbx
movq 0xb8(%rsp), %rdi
testq %rdi, %rdi
je 0x1359c
callq 0xafa0
jmp 0x1359c
jmp 0x13599
movq %rax, %rbx
leaq 0xf0(%rsp), %r12
jmp 0x135a9
movq %rax, %rbx
movq 0xe0(%rsp), %rdi
cmpq %r12, %rdi
je 0x135c6
movq 0xf0(%rsp), %rsi
incq %rsi
callq 0x62b0
movq 0x50(%rsp), %rdi
leaq 0x60(%rsp), %rax
cmpq %rax, %rdi
je 0x135e2
movq 0x60(%rsp), %rsi
incq %rsi
callq 0x62b0
movq 0x28(%rsp), %rdi
leaq 0x38(%rsp), %rax
cmpq %rax, %rdi
je 0x135fe
movq 0x38(%rsp), %rsi
incq %rsi
callq 0x62b0
movq 0x78(%rsp), %rdi
testq %rdi, %rdi
je 0x1360d
callq 0xafa0
movq 0x88(%rsp), %rdi
testq %rdi, %rdi
je 0x1361f
callq 0xafa0
movq %rbx, %rdi
callq 0x6460
nop