// File: rcolomina[P]the_charmed_house/src/operaciones.cpp
// Function: Alcanzar::execute()
void Alcanzar::execute()
{
    Logger::instance().log("Entering into Alcanzar::execute() method ", Logger::kLogLevelInfo);
	  
    // Si tienes algo para alcanza	
    if((*scene)->get_existe_objeto_escenario(parametro))
    {
        Objeto *objeto=(*scene)->get_objeto(parametro);
//		  if(objeto->get_value<bool>(""))
        //TODO: There is an error, this code should avoid that items "alcanzables" may be disappear
			 
        if(inventario.posee_alcanzador() )
        {
            Objeto *objAlcanzador=inventario.tomar_alcanzador();
					
            string alcanzador;
            if(objAlcanzador!=0)
            {
                alcanzador=objAlcanzador->Name();
                inventario.eliminar(alcanzador);
            }

            //Determinar genero del objeto alcanzador para poner "del" o "de la"
            cout<<Color::yellow<<"Has cogido "<<parametro<<" con ayuda del "<<alcanzador<<Color::def<<endl;			 

            inventario.insertar_objeto(objeto);
            (*scene)->eliminar(objeto);

        }
        else
            cout<<Color::red<<"No tienes nada con que alcanzar eso."<<Color::def<<endl;
    }
    else
    {
        if(parametro!="")
            cout<<Color::red<<""<<parametro<<" no se puede alcanzar."<<Color::def<<endl;
        else
            cout<<Color::magenta<<"Alcanzar que?"<<Color::def<<endl;
    }

    // y quieres coger algo no alcanzable
    // puedes cogerlo

}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x170, %rsp            # imm = 0x170
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x108(%rbp)
callq 0x3aa30
movq %rax, -0x100(%rbp)
leaq -0x29(%rbp), %rdi
movq %rdi, -0xf8(%rbp)
callq 0x56d0
movq -0xf8(%rbp), %rdx
leaq 0xb459(%rip), %rsi      # 0x50fed
leaq -0x28(%rbp), %rdi
callq 0x299c0
jmp 0x45b9f
movq -0x100(%rbp), %rdi
leaq 0x3081b(%rip), %rdx     # 0x763c8
leaq -0x28(%rbp), %rsi
callq 0x3ace0
jmp 0x45bb8
leaq -0x28(%rbp), %rdi
callq 0x5748
leaq -0x29(%rbp), %rdi
callq 0x5420
movq -0x108(%rbp), %rcx
movq 0x28(%rcx), %rax
movq 0x38(%rcx), %rsi
movq (%rax), %rax
movq %rax, -0x120(%rbp)
leaq -0x60(%rbp), %rdi
movq %rdi, -0x118(%rbp)
callq 0x5180
movq -0x120(%rbp), %rdi
movq -0x118(%rbp), %rsi
callq 0x2c800
movb %al, -0x109(%rbp)
jmp 0x45c0e
leaq -0x60(%rbp), %rdi
callq 0x5748
movb -0x109(%rbp), %al
testb $0x1, %al
jne 0x45c26
jmp 0x45f59
movq -0x108(%rbp), %rcx
movq 0x28(%rcx), %rax
movq 0x38(%rcx), %rsi
movq (%rax), %rax
movq %rax, -0x138(%rbp)
leaq -0x88(%rbp), %rdi
movq %rdi, -0x130(%rbp)
callq 0x5180
movq -0x138(%rbp), %rdi
movq -0x130(%rbp), %rsi
callq 0x466d0
movq %rax, -0x128(%rbp)
jmp 0x45c6e
leaq -0x88(%rbp), %rdi
callq 0x5748
movq -0x128(%rbp), %rcx
movq -0x108(%rbp), %rax
movq %rcx, -0x68(%rbp)
movq 0x30(%rax), %rdi
callq 0x38610
testb $0x1, %al
jne 0x45c9e
jmp 0x45f14
movq -0x108(%rbp), %rax
movq 0x30(%rax), %rdi
callq 0x386b0
movq %rax, -0x90(%rbp)
leaq -0xb0(%rbp), %rdi
callq 0x5540
cmpq $0x0, -0x90(%rbp)
je 0x45e05
movq -0x90(%rbp), %rsi
leaq -0xd0(%rbp), %rdi
callq 0x2d800
jmp 0x45ce4
leaq -0xb0(%rbp), %rdi
leaq -0xd0(%rbp), %rsi
callq 0x5060
jmp 0x45cf9
leaq -0xd0(%rbp), %rdi
callq 0x5748
movq -0x108(%rbp), %rax
movq 0x30(%rax), %rax
movq %rax, -0x140(%rbp)
leaq -0xf0(%rbp), %rdi
leaq -0xb0(%rbp), %rsi
callq 0x5180
jmp 0x45d2c
movq -0x140(%rbp), %rdi
leaq -0xf0(%rbp), %rsi
callq 0x38950
jmp 0x45d41
leaq -0xf0(%rbp), %rdi
callq 0x5748
jmp 0x45e05
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
jmp 0x45d75
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x28(%rbp), %rdi
callq 0x5748
leaq -0x29(%rbp), %rdi
callq 0x5420
jmp 0x46025
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x60(%rbp), %rdi
callq 0x5748
jmp 0x46025
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x88(%rbp), %rdi
callq 0x5748
jmp 0x46025
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
jmp 0x45f03
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0xd0(%rbp), %rdi
callq 0x5748
jmp 0x45f03
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0xf0(%rbp), %rdi
callq 0x5748
jmp 0x45f03
movq 0x2b1ac(%rip), %rdi     # 0x70fb8
leaq 0x3296d(%rip), %rsi     # 0x78780
callq 0x46680
movq %rax, -0x148(%rbp)
jmp 0x45e21
movq -0x148(%rbp), %rdi
leaq 0xb141(%rip), %rsi      # 0x50f70
callq 0x53a0
movq %rax, -0x150(%rbp)
jmp 0x45e3d
movq -0x150(%rbp), %rdi
movq -0x108(%rbp), %rax
movq 0x38(%rax), %rsi
callq 0x5350
movq %rax, -0x158(%rbp)
jmp 0x45e5d
movq -0x158(%rbp), %rdi
leaq 0xb1ac(%rip), %rsi      # 0x51017
callq 0x53a0
movq %rax, -0x160(%rbp)
jmp 0x45e79
movq -0x160(%rbp), %rdi
leaq -0xb0(%rbp), %rsi
callq 0x5350
movq %rax, -0x168(%rbp)
jmp 0x45e95
movq -0x168(%rbp), %rdi
leaq 0x328cd(%rip), %rsi     # 0x78770
callq 0x46680
movq %rax, -0x170(%rbp)
jmp 0x45eb1
movq -0x170(%rbp), %rdi
movq 0x2b0d1(%rip), %rsi     # 0x70f90
callq 0x5400
jmp 0x45ec6
movq -0x108(%rbp), %rax
movq 0x30(%rax), %rdi
movq -0x68(%rbp), %rsi
callq 0x388b0
jmp 0x45edc
movq -0x108(%rbp), %rax
movq 0x28(%rax), %rax
movq (%rax), %rdi
movq -0x68(%rbp), %rsi
callq 0x2caf0
jmp 0x45ef5
leaq -0xb0(%rbp), %rdi
callq 0x5748
jmp 0x45f54
leaq -0xb0(%rbp), %rdi
callq 0x5748
jmp 0x46025
movq 0x2b09d(%rip), %rdi     # 0x70fb8
leaq 0x32856(%rip), %rsi     # 0x78778
callq 0x46680
movq %rax, %rdi
leaq 0xb0f6(%rip), %rsi      # 0x51027
callq 0x53a0
movq %rax, %rdi
leaq 0x32830(%rip), %rsi     # 0x78770
callq 0x46680
movq %rax, %rdi
movq 0x2b041(%rip), %rsi     # 0x70f90
callq 0x5400
jmp 0x4601c
movq -0x108(%rbp), %rax
movq 0x38(%rax), %rdi
leaq 0xa6d0(%rip), %rsi      # 0x5063b
callq 0x2d830
testb $0x1, %al
jne 0x45f76
jmp 0x45fda
movq 0x2b03b(%rip), %rdi     # 0x70fb8
leaq 0x327f4(%rip), %rsi     # 0x78778
callq 0x46680
movq %rax, %rdi
leaq 0xa6a8(%rip), %rsi      # 0x5063b
callq 0x53a0
movq %rax, %rdi
movq -0x108(%rbp), %rax
movq 0x38(%rax), %rsi
callq 0x5350
movq %rax, %rdi
leaq 0xb097(%rip), %rsi      # 0x5104c
callq 0x53a0
movq %rax, %rdi
leaq 0x327ac(%rip), %rsi     # 0x78770
callq 0x46680
movq %rax, %rdi
movq 0x2afbd(%rip), %rsi     # 0x70f90
callq 0x5400
jmp 0x4601a
movq 0x2afd7(%rip), %rdi     # 0x70fb8
leaq 0x327a0(%rip), %rsi     # 0x78788
callq 0x46680
movq %rax, %rdi
leaq 0xb06c(%rip), %rsi      # 0x51063
callq 0x53a0
movq %rax, %rdi
leaq 0x3276a(%rip), %rsi     # 0x78770
callq 0x46680
movq %rax, %rdi
movq 0x2af7b(%rip), %rsi     # 0x70f90
callq 0x5400
jmp 0x4601c
addq $0x170, %rsp            # imm = 0x170
popq %rbp
retq
movq -0x38(%rbp), %rdi
callq 0x56c0
nop