// File: kelwinfc[P]ci4721-Fernandez-Gyomrey/src/AST/check.cpp
// Function: AST_map::fill_and_check(symbol_table*)
void AST_map::fill_and_check(symbol_table* st){
    
    src->fill_and_check(st);
    dst->fill_and_check(st);
    
    if ( src->type != INVALID && dst->type != INVALID )
    {
        if ( typeid(*types.types[src->type]) != typeid(array_descriptor) ){
            logger->buf << "Expresion debe evaluar tipo arreglo.";
            logger->error(src->line, src->column);
            return;
        } else if (typeid(*types.types[dst->type]) != typeid(array_descriptor)){
            logger->buf << "Expresion debe evaluar tipo arreglo.";
            logger->error(dst->line, dst->column);
            return;
        } else if ( types.types[src->type] != types.types[dst->type] ){
            logger->buf << "Ambos arreglos deben ser del mismo tipo.";
            logger->error(line, column);
            return;
        }
    }
    
    sym = st->lookup(function);
    
    if ( sym ){
        
        if ( !sym->is_function ){
            logger->buf << "Esperada identificador de funcion.";
            logger->error(line, column);
            sym = 0;
        } else {
            symbol_function* s = (symbol_function*)sym;
            
            array_descriptor* ad=(array_descriptor*)types.types[src->type];
            TYPE base = ad->base;
            
            if ( s->params.size() == 0 || s->params.size() > 2 ){
                logger->buf << "Funcion con firma invalida.";
                logger->error(line, column);
                
            } else if ( s->params.size() == 1 ){
                if ( s->getType() != base ){
                    logger->buf << "Se espera funcion con retorno de tipo '"
                                << types.types[base]->name
                                << "', recibida funcion con retorno '"
                                << types.types[s->getType()]->name << "'.";
                    logger->error(line, column);
                    
                } else if ( s->params[0] != base ){
                    logger->buf << "Se espera funcion con primer argumento de tipo '"
                                << types.types[base]->name
                                << "', recibido '"
                                << types.types[s->params[0]]->name << "'.";
                    logger->error(line, column);
                    
                }
            } else if ( s->params.size() == 2 ){
                if ( s->getType() != NONE ){
                    logger->buf << "Se espera funcion con retorno vacio.";
                    logger->error(line, column);
                    
                } else if ( s->params[0] != base ){
                    logger->buf << "Se espera funcion con primer argumento de tipo '"
                                << types.types[base]->name
                                << "', recibido '"
                                << types.types[s->params[0]]->name << "'.";
                    logger->error(line, column);
                    
                } else {
                    if ( types.is_base(base) ){
                        if ( typeid(*(types.types[s->params[1]]))
                             == typeid(pointer_descriptor) )
                        {
                            pointer_descriptor* pd =
                               (pointer_descriptor*)(types.types[s->params[1]]);
                            
                            if ( pd->base != base ){
                                logger->buf << "Se espera referencia a '"
                                            << types.types[base]->name
                                            << "', recibida referencia a '"
                                            << types.types[pd->base]->name << "'.";
                                logger->error(line, column);
                            }
                        } else {
                            logger->buf << "Se espera referencia a '"
                                        << types.types[base]->name << "'.";
                            logger->error(line, column);
                        }
                    } else {
                        if ( base != s->params[1] ){
                            if ( typeid(*(types.types[s->params[1]]))
                                 == typeid(pointer_descriptor) )
                            {
                                pointer_descriptor* pd =
                                 (pointer_descriptor*)types.types[s->params[1]];
                                
                                if ( pd->base != base ){
                                    logger->buf << "Se espera referencia a '"
                                                << types.types[base]->name
                                                << "', recibida referencia a '"
                                                << types.types[pd->base]->name << "'.";
                                    logger->error(line, column);
                                }
                            } else {
                                logger->buf << "Se espera referencia a '"
                                            << types.types[base]->name << "'.";
                                logger->error(line, column);
                            }
                        }
                    }
                }
            }
        }
    } else {
        logger->buf << "Identificador '" << function << "' no definido previamente.";
        logger->error(line, column);
    }
}

// Assembly:
subq $0x118, %rsp            # imm = 0x118
movq %rdi, 0x110(%rsp)
movq %rsi, 0x108(%rsp)
movq 0x110(%rsp), %rax
movq %rax, 0xa8(%rsp)
movq 0x78(%rax), %rdi
movq 0x108(%rsp), %rsi
movq (%rdi), %rax
callq *0x8(%rax)
movq 0xa8(%rsp), %rax
movq 0x80(%rax), %rdi
movq 0x108(%rsp), %rsi
movq (%rdi), %rax
callq *0x8(%rax)
movq 0xa8(%rsp), %rax
movq 0x78(%rax), %rax
cmpl $0x1, 0x10(%rax)
je 0x10603
movq 0xa8(%rsp), %rax
movq 0x80(%rax), %rax
cmpl $0x1, 0x10(%rax)
je 0x10603
movq 0xa8(%rsp), %rax
movq 0x78(%rax), %rax
movslq 0x10(%rax), %rsi
leaq 0x5e0a4(%rip), %rdi     # 0x6e4e0
callq 0x1fc90
movq (%rax), %rax
movq %rax, 0xa0(%rsp)
cmpq $0x0, %rax
jne 0x10457
callq 0x6420
movq 0xa0(%rsp), %rax
movq (%rax), %rax
movq -0x8(%rax), %rdi
leaq 0x5ca53(%rip), %rsi     # 0x6cec0
callq 0x201f0
testb $0x1, %al
jne 0x10478
jmp 0x104c0
leaq 0x5e059(%rip), %rax     # 0x6e4d8
movq (%rax), %rdi
addq $0x38, %rdi
addq $0x10, %rdi
leaq 0x4287c(%rip), %rsi     # 0x52d0d
callq 0x6370
movq 0xa8(%rsp), %rax
leaq 0x5e033(%rip), %rcx     # 0x6e4d8
movq (%rcx), %rdi
movq 0x78(%rax), %rcx
movl 0x8(%rcx), %esi
movq 0x78(%rax), %rax
movl 0xc(%rax), %edx
callq 0x2f440
jmp 0x10f4e
movq 0xa8(%rsp), %rax
movq 0x80(%rax), %rax
movslq 0x10(%rax), %rsi
leaq 0x5e006(%rip), %rdi     # 0x6e4e0
callq 0x1fc90
movq (%rax), %rax
movq %rax, 0x98(%rsp)
cmpq $0x0, %rax
jne 0x104f5
callq 0x6420
movq 0x98(%rsp), %rax
movq (%rax), %rax
movq -0x8(%rax), %rdi
leaq 0x5c9b5(%rip), %rsi     # 0x6cec0
callq 0x201f0
testb $0x1, %al
jne 0x10516
jmp 0x10564
leaq 0x5dfbb(%rip), %rax     # 0x6e4d8
movq (%rax), %rdi
addq $0x38, %rdi
addq $0x10, %rdi
leaq 0x427de(%rip), %rsi     # 0x52d0d
callq 0x6370
movq 0xa8(%rsp), %rax
leaq 0x5df95(%rip), %rcx     # 0x6e4d8
movq (%rcx), %rdi
movq 0x80(%rax), %rcx
movl 0x8(%rcx), %esi
movq 0x80(%rax), %rax
movl 0xc(%rax), %edx
callq 0x2f440
jmp 0x10f4e
movq 0xa8(%rsp), %rax
movq 0x78(%rax), %rax
movslq 0x10(%rax), %rsi
leaq 0x5df65(%rip), %rdi     # 0x6e4e0
callq 0x1fc90
movq %rax, %rcx
movq 0xa8(%rsp), %rax
movq (%rcx), %rcx
movq %rcx, 0x90(%rsp)
movq 0x80(%rax), %rax
movslq 0x10(%rax), %rsi
leaq 0x5df38(%rip), %rdi     # 0x6e4e0
callq 0x1fc90
movq %rax, %rcx
movq 0x90(%rsp), %rax
cmpq (%rcx), %rax
je 0x105fd
leaq 0x5df14(%rip), %rax     # 0x6e4d8
movq (%rax), %rdi
addq $0x38, %rdi
addq $0x10, %rdi
leaq 0x4288b(%rip), %rsi     # 0x52e61
callq 0x6370
movq 0xa8(%rsp), %rax
leaq 0x5deee(%rip), %rcx     # 0x6e4d8
movq (%rcx), %rdi
movl 0x8(%rax), %esi
movl 0xc(%rax), %edx
callq 0x2f440
jmp 0x10f4e
jmp 0x105ff
jmp 0x10601
jmp 0x10603
movq 0xa8(%rsp), %rsi
movq 0x108(%rsp), %rax
movq %rax, 0x78(%rsp)
addq $0x88, %rsi
leaq 0xe8(%rsp), %rdi
movq %rdi, 0x80(%rsp)
callq 0x6170
movq 0x78(%rsp), %rdi
movq 0x80(%rsp), %rsi
xorl %eax, %eax
movl %eax, %edx
callq 0x2a040
movq %rax, 0x88(%rsp)
jmp 0x10654
movq 0xa8(%rsp), %rax
movq 0x88(%rsp), %rcx
movq %rcx, 0xa8(%rax)
leaq 0xe8(%rsp), %rdi
callq 0x6778
movq 0xa8(%rsp), %rax
cmpq $0x0, 0xa8(%rax)
je 0x10eed
movq 0xa8(%rsp), %rax
movq 0xa8(%rax), %rax
testb $0x1, 0x31(%rax)
jne 0x1071c
leaq 0x5de2e(%rip), %rax     # 0x6e4d8
movq (%rax), %rdi
addq $0x38, %rdi
addq $0x10, %rdi
leaq 0x427ce(%rip), %rsi     # 0x52e8a
callq 0x6370
movq 0xa8(%rsp), %rax
leaq 0x5de08(%rip), %rcx     # 0x6e4d8
movq (%rcx), %rdi
movl 0x8(%rax), %esi
movl 0xc(%rax), %edx
callq 0x2f440
movq 0xa8(%rsp), %rax
movq $0x0, 0xa8(%rax)
jmp 0x10eeb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xe0(%rsp)
movl %eax, 0xdc(%rsp)
leaq 0xe8(%rsp), %rdi
callq 0x6778
jmp 0x10f56
movq 0xa8(%rsp), %rax
movq 0xa8(%rax), %rcx
movq %rcx, 0xd0(%rsp)
movq 0x78(%rax), %rax
movslq 0x10(%rax), %rsi
leaq 0x5dd9e(%rip), %rdi     # 0x6e4e0
callq 0x1fc90
movq (%rax), %rax
movq %rax, 0xc8(%rsp)
movq 0xc8(%rsp), %rax
movl 0x3c(%rax), %eax
movl %eax, 0xc4(%rsp)
movq 0xd0(%rsp), %rdi
addq $0x78, %rdi
callq 0x20540
cmpq $0x0, %rax
je 0x10792
movq 0xd0(%rsp), %rdi
addq $0x78, %rdi
callq 0x20540
cmpq $0x2, %rax
jbe 0x107d2
leaq 0x5dd3f(%rip), %rax     # 0x6e4d8
movq (%rax), %rdi
addq $0x38, %rdi
addq $0x10, %rdi
leaq 0x425ab(%rip), %rsi     # 0x52d56
callq 0x6370
movq 0xa8(%rsp), %rax
leaq 0x5dd19(%rip), %rcx     # 0x6e4d8
movq (%rcx), %rdi
movl 0x8(%rax), %esi
movl 0xc(%rax), %edx
callq 0x2f440
jmp 0x10ee9
movq 0xd0(%rsp), %rdi
addq $0x78, %rdi
callq 0x20540
cmpq $0x1, %rax
jne 0x109a9
movq 0xd0(%rsp), %rdi
callq 0x295f0
cmpl 0xc4(%rsp), %eax
je 0x108c1
leaq 0x5dcca(%rip), %rax     # 0x6e4d8
movq (%rax), %rdi
addq $0x38, %rdi
addq $0x10, %rdi
leaq 0x42590(%rip), %rsi     # 0x52db0
callq 0x6370
movq %rax, 0x68(%rsp)
movslq 0xc4(%rsp), %rsi
leaq 0x5dca7(%rip), %rdi     # 0x6e4e0
callq 0x1fc90
movq 0x68(%rsp), %rdi
movq (%rax), %rsi
addq $0x8, %rsi
callq 0x6340
movq %rax, %rdi
leaq 0x4257f(%rip), %rsi     # 0x52dd8
callq 0x6370
movq %rax, 0x70(%rsp)
movq 0xd0(%rsp), %rdi
callq 0x295f0
movslq %eax, %rsi
leaq 0x5dc66(%rip), %rdi     # 0x6e4e0
callq 0x1fc90
movq 0x70(%rsp), %rdi
movq (%rax), %rsi
addq $0x8, %rsi
callq 0x6340
movq %rax, %rdi
leaq 0x46e1d(%rip), %rsi     # 0x576b7
callq 0x6370
movq 0xa8(%rsp), %rax
leaq 0x5dc2a(%rip), %rcx     # 0x6e4d8
movq (%rcx), %rdi
movl 0x8(%rax), %esi
movl 0xc(%rax), %edx
callq 0x2f440
jmp 0x109a4
movq 0xd0(%rsp), %rdi
addq $0x78, %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x20560
movl (%rax), %eax
cmpl 0xc4(%rsp), %eax
je 0x109a2
leaq 0x5dbec(%rip), %rax     # 0x6e4d8
movq (%rax), %rdi
addq $0x38, %rdi
addq $0x10, %rdi
leaq 0x425af(%rip), %rsi     # 0x52ead
callq 0x6370
movq %rax, 0x58(%rsp)
movslq 0xc4(%rsp), %rsi
leaq 0x5dbc9(%rip), %rdi     # 0x6e4e0
callq 0x1fc90
movq 0x58(%rsp), %rdi
movq (%rax), %rsi
addq $0x8, %rsi
callq 0x6340
movq %rax, %rdi
leaq 0x425a7(%rip), %rsi     # 0x52ede
callq 0x6370
movq %rax, 0x60(%rsp)
movq 0xd0(%rsp), %rdi
addq $0x78, %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x20560
movslq (%rax), %rsi
leaq 0x5db80(%rip), %rdi     # 0x6e4e0
callq 0x1fc90
movq 0x60(%rsp), %rdi
movq (%rax), %rsi
addq $0x8, %rsi
callq 0x6340
movq %rax, %rdi
leaq 0x46d37(%rip), %rsi     # 0x576b7
callq 0x6370
movq 0xa8(%rsp), %rax
leaq 0x5db44(%rip), %rcx     # 0x6e4d8
movq (%rcx), %rdi
movl 0x8(%rax), %esi
movl 0xc(%rax), %edx
callq 0x2f440
jmp 0x109a4
jmp 0x10ee7
movq 0xd0(%rsp), %rdi
addq $0x78, %rdi
callq 0x20540
cmpq $0x2, %rax
jne 0x10ee5
movq 0xd0(%rsp), %rdi
callq 0x295f0
cmpl $0x2, %eax
je 0x10a16
leaq 0x5dafb(%rip), %rax     # 0x6e4d8
movq (%rax), %rdi
addq $0x38, %rdi
addq $0x10, %rdi
leaq 0x424fd(%rip), %rsi     # 0x52eec
callq 0x6370
movq 0xa8(%rsp), %rax
leaq 0x5dad5(%rip), %rcx     # 0x6e4d8
movq (%rcx), %rdi
movl 0x8(%rax), %esi
movl 0xc(%rax), %edx
callq 0x2f440
jmp 0x10ee3
movq 0xd0(%rsp), %rdi
addq $0x78, %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x20560
movl (%rax), %eax
cmpl 0xc4(%rsp), %eax
je 0x10afc
leaq 0x5da97(%rip), %rax     # 0x6e4d8
movq (%rax), %rdi
addq $0x38, %rdi
addq $0x10, %rdi
leaq 0x4245a(%rip), %rsi     # 0x52ead
callq 0x6370
movq %rax, 0x48(%rsp)
movslq 0xc4(%rsp), %rsi
leaq 0x5da74(%rip), %rdi     # 0x6e4e0
callq 0x1fc90
movq 0x48(%rsp), %rdi
movq (%rax), %rsi
addq $0x8, %rsi
callq 0x6340
movq %rax, %rdi
leaq 0x42452(%rip), %rsi     # 0x52ede
callq 0x6370
movq %rax, 0x50(%rsp)
movq 0xd0(%rsp), %rdi
addq $0x78, %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x20560
movslq (%rax), %rsi
leaq 0x5da2b(%rip), %rdi     # 0x6e4e0
callq 0x1fc90
movq 0x50(%rsp), %rdi
movq (%rax), %rsi
addq $0x8, %rsi
callq 0x6340
movq %rax, %rdi
leaq 0x46be2(%rip), %rsi     # 0x576b7
callq 0x6370
movq 0xa8(%rsp), %rax
leaq 0x5d9ef(%rip), %rcx     # 0x6e4d8
movq (%rcx), %rdi
movl 0x8(%rax), %esi
movl 0xc(%rax), %edx
callq 0x2f440
jmp 0x10ee1
movl 0xc4(%rsp), %esi
leaq 0x5d9d6(%rip), %rdi     # 0x6e4e0
callq 0x2d9f0
testb $0x1, %al
jne 0x10b18
jmp 0x10ce5
movq 0xd0(%rsp), %rdi
addq $0x78, %rdi
movl $0x1, %esi
callq 0x20560
movslq (%rax), %rsi
leaq 0x5d9a8(%rip), %rdi     # 0x6e4e0
callq 0x1fc90
movq (%rax), %rax
movq %rax, 0x40(%rsp)
cmpq $0x0, %rax
jne 0x10b50
callq 0x6420
movq 0x40(%rsp), %rax
movq (%rax), %rax
movq -0x8(%rax), %rdi
leaq 0x5c375(%rip), %rsi     # 0x6ced8
callq 0x20340
testb $0x1, %al
jne 0x10b71
jmp 0x10c6c
movq 0xd0(%rsp), %rdi
addq $0x78, %rdi
movl $0x1, %esi
callq 0x20560
movslq (%rax), %rsi
leaq 0x5d94f(%rip), %rdi     # 0x6e4e0
callq 0x1fc90
movq (%rax), %rax
movq %rax, 0xb8(%rsp)
movq 0xb8(%rsp), %rax
movl 0x30(%rax), %eax
cmpl 0xc4(%rsp), %eax
je 0x10c6a
leaq 0x5d918(%rip), %rax     # 0x6e4d8
movq (%rax), %rdi
addq $0x38, %rdi
addq $0x10, %rdi
leaq 0x4233f(%rip), %rsi     # 0x52f11
callq 0x6370
movq %rax, 0x30(%rsp)
movslq 0xc4(%rsp), %rsi
leaq 0x5d8f5(%rip), %rdi     # 0x6e4e0
callq 0x1fc90
movq 0x30(%rsp), %rdi
movq (%rax), %rsi
addq $0x8, %rsi
callq 0x6340
movq %rax, %rdi
leaq 0x4231f(%rip), %rsi     # 0x52f2a
callq 0x6370
movq %rax, 0x38(%rsp)
movq 0xb8(%rsp), %rax
movslq 0x30(%rax), %rsi
leaq 0x5d8b8(%rip), %rdi     # 0x6e4e0
callq 0x1fc90
movq 0x38(%rsp), %rdi
movq (%rax), %rsi
addq $0x8, %rsi
callq 0x6340
movq %rax, %rdi
leaq 0x46a6f(%rip), %rsi     # 0x576b7
callq 0x6370
movq 0xa8(%rsp), %rax
leaq 0x5d87c(%rip), %rcx     # 0x6e4d8
movq (%rcx), %rdi
movl 0x8(%rax), %esi
movl 0xc(%rax), %edx
callq 0x2f440
jmp 0x10ce0
leaq 0x5d865(%rip), %rax     # 0x6e4d8
movq (%rax), %rdi
addq $0x38, %rdi
addq $0x10, %rdi
leaq 0x4228c(%rip), %rsi     # 0x52f11
callq 0x6370
movq %rax, 0x28(%rsp)
movslq 0xc4(%rsp), %rsi
leaq 0x5d842(%rip), %rdi     # 0x6e4e0
callq 0x1fc90
movq 0x28(%rsp), %rdi
movq (%rax), %rsi
addq $0x8, %rsi
callq 0x6340
movq %rax, %rdi
leaq 0x469f9(%rip), %rsi     # 0x576b7
callq 0x6370
movq 0xa8(%rsp), %rax
leaq 0x5d806(%rip), %rcx     # 0x6e4d8
movq (%rcx), %rdi
movl 0x8(%rax), %esi
movl 0xc(%rax), %edx
callq 0x2f440
jmp 0x10edf
movl 0xc4(%rsp), %eax
movl %eax, 0x24(%rsp)
movq 0xd0(%rsp), %rdi
addq $0x78, %rdi
movl $0x1, %esi
callq 0x20560
movq %rax, %rcx
movl 0x24(%rsp), %eax
cmpl (%rcx), %eax
je 0x10edd
movq 0xd0(%rsp), %rdi
addq $0x78, %rdi
movl $0x1, %esi
callq 0x20560
movslq (%rax), %rsi
leaq 0x5d7ab(%rip), %rdi     # 0x6e4e0
callq 0x1fc90
movq (%rax), %rax
movq %rax, 0x18(%rsp)
cmpq $0x0, %rax
jne 0x10d4d
callq 0x6420
movq 0x18(%rsp), %rax
movq (%rax), %rax
movq -0x8(%rax), %rdi
leaq 0x5c178(%rip), %rsi     # 0x6ced8
callq 0x20340
testb $0x1, %al
jne 0x10d6e
jmp 0x10e69
movq 0xd0(%rsp), %rdi
addq $0x78, %rdi
movl $0x1, %esi
callq 0x20560
movslq (%rax), %rsi
leaq 0x5d752(%rip), %rdi     # 0x6e4e0
callq 0x1fc90
movq (%rax), %rax
movq %rax, 0xb0(%rsp)
movq 0xb0(%rsp), %rax
movl 0x30(%rax), %eax
cmpl 0xc4(%rsp), %eax
je 0x10e67
leaq 0x5d71b(%rip), %rax     # 0x6e4d8
movq (%rax), %rdi
addq $0x38, %rdi
addq $0x10, %rdi
leaq 0x42142(%rip), %rsi     # 0x52f11
callq 0x6370
movq %rax, 0x8(%rsp)
movslq 0xc4(%rsp), %rsi
leaq 0x5d6f8(%rip), %rdi     # 0x6e4e0
callq 0x1fc90
movq 0x8(%rsp), %rdi
movq (%rax), %rsi
addq $0x8, %rsi
callq 0x6340
movq %rax, %rdi
leaq 0x42122(%rip), %rsi     # 0x52f2a
callq 0x6370
movq %rax, 0x10(%rsp)
movq 0xb0(%rsp), %rax
movslq 0x30(%rax), %rsi
leaq 0x5d6bb(%rip), %rdi     # 0x6e4e0
callq 0x1fc90
movq 0x10(%rsp), %rdi
movq (%rax), %rsi
addq $0x8, %rsi
callq 0x6340
movq %rax, %rdi
leaq 0x46872(%rip), %rsi     # 0x576b7
callq 0x6370
movq 0xa8(%rsp), %rax
leaq 0x5d67f(%rip), %rcx     # 0x6e4d8
movq (%rcx), %rdi
movl 0x8(%rax), %esi
movl 0xc(%rax), %edx
callq 0x2f440
jmp 0x10edb
leaq 0x5d668(%rip), %rax     # 0x6e4d8
movq (%rax), %rdi
addq $0x38, %rdi
addq $0x10, %rdi
leaq 0x4208f(%rip), %rsi     # 0x52f11
callq 0x6370
movq %rax, (%rsp)
movslq 0xc4(%rsp), %rsi
leaq 0x5d646(%rip), %rdi     # 0x6e4e0
callq 0x1fc90
movq (%rsp), %rdi
movq (%rax), %rsi
addq $0x8, %rsi
callq 0x6340
movq %rax, %rdi
leaq 0x467fe(%rip), %rsi     # 0x576b7
callq 0x6370
movq 0xa8(%rsp), %rax
leaq 0x5d60b(%rip), %rcx     # 0x6e4d8
movq (%rcx), %rdi
movl 0x8(%rax), %esi
movl 0xc(%rax), %edx
callq 0x2f440
jmp 0x10edd
jmp 0x10edf
jmp 0x10ee1
jmp 0x10ee3
jmp 0x10ee5
jmp 0x10ee7
jmp 0x10ee9
jmp 0x10eeb
jmp 0x10f4e
leaq 0x5d5e4(%rip), %rax     # 0x6e4d8
movq (%rax), %rdi
addq $0x38, %rdi
addq $0x10, %rdi
leaq 0x41972(%rip), %rsi     # 0x52878
callq 0x6370
movq 0xa8(%rsp), %rsi
movq %rax, %rdi
addq $0x88, %rsi
callq 0x6340
movq %rax, %rdi
leaq 0x419c1(%rip), %rsi     # 0x528ed
callq 0x6370
movq 0xa8(%rsp), %rax
leaq 0x5d598(%rip), %rcx     # 0x6e4d8
movq (%rcx), %rdi
movl 0x8(%rax), %esi
movl 0xc(%rax), %edx
callq 0x2f440
addq $0x118, %rsp            # imm = 0x118
retq
movq 0xe0(%rsp), %rdi
callq 0x66b0
nopw %cs:(%rax,%rax)