// File: /workspace/github_cpp_makefile_star2_O2/rcolomina[P]the_charmed_house/src/operaciones.cpp
// Function: Colocar::execute()
void Colocar::execute(){

    bool existOrigin  = inventory.get_existe_objeto(parametro);	 
    bool existDestiny = (*scene)->get_existe_objeto_escenario(parametro2);
    bool p1void = (parametro=="");
    bool p2void = (parametro2=="");

    if(p1void)
    {
        // TODO: Parametrise this phrase
        cout<<Color::magenta<<"Colocar que?"<<Color::def<<endl;
    }

    if(not p1void and p2void)
    {
        // TODO: Parametrise this phrase
        cout<<Color::magenta<<"Colocar "<<parametro<<" sobre que?"<<Color::def<<endl;
    }

    if(not p1void and not p2void)
    {
        if(existOrigin)
        {			 
            if(existDestiny)
            {
                Objeto *obj1=inventory.get_objeto(parametro);
                Objeto *obj2=(*scene)->get_objeto(parametro2);

                assert(obj1!=NULL);
                assert(obj2!=NULL);								 
						  
                bool isKey  =  true;//obj1->get_value<bool>("key");
                bool isLock =  true;//obj2->get_value<bool>("lock");
                if(isKey and isLock)
                {								
                    int code1 = obj1->get_value<int>("code");
                    int code2 = obj2->get_value<int>("code");
                    if(code1==code2)
                    {
                        // TODO: Parametrise this phrase										
                        cout<<Color::yellow<<"Has colocado "<<parametro<<" sobre "<<parametro2;
                        cout<<". Un mecanismo se ha activado."<<Color::def<<endl;			
                        IEvent* event=obj2->activate_event();	
                        if(event!=NULL)
                            eventsQueue.push(event);
                    }
                    else
                    {
                        // TODO: Parametrise this phrase
                        cout<<Color::magenta<<"Has colocado "<<parametro<<" sobre "<<parametro2;
                        cout<<Color::magenta<<", pero nada sucede."<<Color::def<<endl;
                    }
										
                }						  
                else
                {
                    // TODO: Parametrise this phrase							      
                    cout<<Color::red<<"No puedes hacer eso."<<Color::def<<endl;
                }								 
						  
            }
            else
            {

                // TODO: Parametrise this phrase								 
                cout<<Color::red<<"No hay nada parecido a "<<parametro2<<Color::def<<endl;
            }
        }
        else
        {
            // TODO: Parametrise this phrase								 
            cout<<Color::red<<"No puedes colocar "<<parametro<<" sobre "<<parametro2<<Color::def<<endl;
        }
    }
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0x80, %rsp
movq %rdi, %rbx
movq 0x30(%rdi), %r14
movq 0x40(%rdi), %rsi
leaq 0x60(%rsp), %r15
movq %r15, %rdi
callq 0x5430
movq %r14, %rdi
movq %r15, %rsi
callq 0x16ba4
movl %eax, %ebp
leaq 0x60(%rsp), %rdi
callq 0x5638
movq 0x28(%rbx), %rax
movq 0x48(%rbx), %rsi
movq (%rax), %r14
leaq 0x40(%rsp), %r15
movq %r15, %rdi
callq 0x5430
movq %r14, %rdi
movq %r15, %rsi
callq 0x12f60
movl %eax, %r14d
leaq 0x40(%rsp), %rdi
callq 0x5638
movq 0x40(%rbx), %rdi
leaq 0x4fc2(%rip), %r15      # 0x2163b
movq %r15, %rsi
callq 0x136e0
movl %eax, %r12d
movq 0x48(%rbx), %rdi
movq %r15, %rsi
callq 0x136e0
testb %r12b, %r12b
je 0x1c6b1
movq 0x1291c(%rip), %rdi     # 0x2efb8
leaq 0x1a029(%rip), %rsi     # 0x366cc
callq 0x1c978
leaq 0x59e3(%rip), %rsi      # 0x22092
jmp 0x1c6ea
testb %al, %al
je 0x1c719
movq 0x128fc(%rip), %rdi     # 0x2efb8
leaq 0x1a009(%rip), %rsi     # 0x366cc
callq 0x1c978
leaq 0x59d0(%rip), %rsi      # 0x2209f
movq %rax, %rdi
callq 0x5310
movq 0x40(%rbx), %rsi
movq %rax, %rdi
callq 0x52d0
leaq 0x59be(%rip), %rsi      # 0x220a8
movq %rax, %rdi
callq 0x5310
leaq 0x19fc7(%rip), %rsi     # 0x366c0
movq %rax, %rdi
callq 0x1c978
movq %rax, %rdi
callq 0x51a0
addq $0x80, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
testb %bpl, %bpl
je 0x1c851
testb %r14b, %r14b
je 0x1c888
movq 0x30(%rbx), %r14
movq 0x40(%rbx), %rsi
leaq 0x20(%rsp), %r15
movq %r15, %rdi
callq 0x5430
movq %r14, %rdi
movq %r15, %rsi
callq 0x16be6
movq %rax, %r12
leaq 0x20(%rsp), %rdi
callq 0x5638
movq 0x28(%rbx), %rax
movq 0x48(%rbx), %rsi
movq (%rax), %r14
movq %rsp, %r15
movq %r15, %rdi
callq 0x5430
movq %r14, %rdi
movq %r15, %rsi
callq 0x1c9a2
movq %rax, %r14
movq %rsp, %rdi
callq 0x5638
testq %r12, %r12
je 0x1c921
testq %r14, %r14
je 0x1c940
leaq 0x5961(%rip), %r15      # 0x220fe
movq %r12, %rdi
movq %r15, %rsi
callq 0x1a95c
movl %eax, %ebp
movq %r14, %rdi
movq %r15, %rsi
callq 0x1a95c
cmpl %eax, %ebp
jne 0x1c8bb
movq 0x127f4(%rip), %r15     # 0x2efb8
leaq 0x19efd(%rip), %rsi     # 0x366c8
movq %r15, %rdi
callq 0x1c978
leaq 0x5929(%rip), %rsi      # 0x22103
movq %rax, %rdi
callq 0x5310
movq 0x40(%rbx), %rsi
movq %rax, %rdi
callq 0x52d0
leaq 0x591c(%rip), %rsi      # 0x22111
movq %rax, %rdi
callq 0x5310
movq 0x48(%rbx), %rsi
movq %rax, %rdi
callq 0x52d0
leaq 0x5909(%rip), %rsi      # 0x22119
movq %r15, %rdi
callq 0x5310
leaq 0x19ea1(%rip), %rsi     # 0x366c0
movq %rax, %rdi
callq 0x1c978
movq %rax, %rdi
callq 0x51a0
movq %r14, %rdi
callq 0x1a9d8
testq %rax, %rax
je 0x1c709
movq 0x38(%rbx), %rdi
movq %rax, %rsi
callq 0x14b60
jmp 0x1c709
movq 0x12760(%rip), %rdi     # 0x2efb8
leaq 0x19e65(%rip), %rsi     # 0x366c4
callq 0x1c978
leaq 0x58f9(%rip), %rsi      # 0x22164
movq %rax, %rdi
callq 0x5310
movq 0x40(%rbx), %rsi
movq %rax, %rdi
callq 0x52d0
leaq 0x588b(%rip), %rsi      # 0x22111
jmp 0x1c8a2
movq 0x12729(%rip), %rdi     # 0x2efb8
leaq 0x19e2e(%rip), %rsi     # 0x366c4
callq 0x1c978
leaq 0x58aa(%rip), %rsi      # 0x2214c
movq %rax, %rdi
callq 0x5310
movq 0x48(%rbx), %rsi
movq %rax, %rdi
callq 0x52d0
jmp 0x1c6f2
movq 0x126f6(%rip), %r14     # 0x2efb8
leaq 0x19e03(%rip), %r15     # 0x366cc
movq %r14, %rdi
movq %r15, %rsi
callq 0x1c978
leaq 0x5828(%rip), %rsi      # 0x22103
movq %rax, %rdi
callq 0x5310
movq 0x40(%rbx), %rsi
movq %rax, %rdi
callq 0x52d0
leaq 0x581b(%rip), %rsi      # 0x22111
movq %rax, %rdi
callq 0x5310
movq 0x48(%rbx), %rsi
movq %rax, %rdi
callq 0x52d0
movq %r14, %rdi
movq %r15, %rsi
callq 0x1c978
leaq 0x581c(%rip), %rsi      # 0x22138
jmp 0x1c6ea
leaq 0x578c(%rip), %rdi      # 0x220b4
leaq 0x5790(%rip), %rsi      # 0x220bf
leaq 0x579d(%rip), %rcx      # 0x220d3
movl $0x12f, %edx            # imm = 0x12F
callq 0x5210
leaq 0x57ac(%rip), %rdi      # 0x220f3
leaq 0x5771(%rip), %rsi      # 0x220bf
leaq 0x577e(%rip), %rcx      # 0x220d3
movl $0x130, %edx            # imm = 0x130
callq 0x5210
jmp 0x1c965
jmp 0x1c965
jmp 0x1c965
movq %rax, %rbx
movq %r15, %rdi
callq 0x5638
movq %rbx, %rdi
callq 0x55a0