// File: /workspace/github_cpp_makefile_star2_O1/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 %r13
pushq %r12
pushq %rbx
subq $0x88, %rsp
movq %rdi, %rbx
movq 0x30(%rdi), %r14
movq 0x40(%rdi), %rax
leaq 0x78(%rsp), %r13
movq %r13, -0x10(%r13)
movq (%rax), %rsi
movq 0x8(%rax), %rdx
addq %rsi, %rdx
leaq 0x68(%rsp), %r15
movq %r15, %rdi
callq 0x1a300
movq %r14, %rdi
movq %r15, %rsi
callq 0x1fa36
movl %eax, %ebp
movq 0x68(%rsp), %rdi
cmpq %r13, %rdi
je 0x273e2
movq 0x78(%rsp), %rsi
incq %rsi
callq 0x5340
movq 0x28(%rbx), %rax
movq 0x48(%rbx), %rcx
movq (%rax), %r14
leaq 0x58(%rsp), %r13
movq %r13, -0x10(%r13)
movq (%rcx), %rsi
movq 0x8(%rcx), %rdx
addq %rsi, %rdx
leaq 0x48(%rsp), %r15
movq %r15, %rdi
callq 0x1a300
movq %r14, %rdi
movq %r15, %rsi
callq 0x1af64
movl %eax, %r14d
movq 0x48(%rsp), %rdi
cmpq %r13, %rdi
je 0x27432
movq 0x58(%rsp), %rsi
incq %rsi
callq 0x5340
movq 0x40(%rbx), %rdi
leaq 0x71e6(%rip), %r12      # 0x2e623
movq %r12, %rsi
callq 0x5110
movl %eax, %r15d
movq 0x48(%rbx), %rdi
movq %r12, %rsi
callq 0x5110
movl %eax, %r12d
testl %r15d, %r15d
je 0x274b3
testl %r12d, %r12d
jne 0x27516
movq 0x13b54(%rip), %rdi     # 0x3afc0
leaq 0x1b259(%rip), %rsi     # 0x426cc
callq 0x278e2
movq %rax, %r13
leaq 0x7be9(%rip), %rsi      # 0x2f06b
movl $0x8, %edx
movq %rax, %rdi
callq 0x53a0
movq 0x40(%rbx), %rax
movq (%rax), %rsi
movq 0x8(%rax), %rdx
movq %r13, %rdi
callq 0x53a0
movq %rax, %r13
leaq 0x7bc8(%rip), %rsi      # 0x2f074
movl $0xb, %edx
jmp 0x274d5
movq 0x13b06(%rip), %rdi     # 0x3afc0
leaq 0x1b20b(%rip), %rsi     # 0x426cc
callq 0x278e2
movq %rax, %r13
leaq 0x7b8e(%rip), %rsi      # 0x2f05e
movl $0xc, %edx
movq %rax, %rdi
callq 0x53a0
leaq 0x1b1dc(%rip), %rsi     # 0x426c0
movq %r13, %rdi
callq 0x278e2
movq %rax, %r13
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r13, %rdi
movl $0xa, %esi
callq 0x5300
movsbl %al, %esi
movq %r13, %rdi
callq 0x5050
movq %rax, %rdi
callq 0x5230
testl %r12d, %r12d
sete %al
testl %r15d, %r15d
sete %cl
orb %al, %cl
jne 0x277b5
testb %bpl, %bpl
je 0x276f1
testb %r14b, %r14b
je 0x2773f
movq 0x30(%rbx), %r14
movq 0x40(%rbx), %rax
leaq 0x38(%rsp), %r13
movq %r13, -0x10(%r13)
movq (%rax), %rsi
movq 0x8(%rax), %rdx
addq %rsi, %rdx
leaq 0x28(%rsp), %r15
movq %r15, %rdi
callq 0x1a300
movq %r14, %rdi
movq %r15, %rsi
callq 0x1fa9a
movq %rax, %r15
movq 0x28(%rsp), %rdi
cmpq %r13, %rdi
je 0x27589
movq 0x38(%rsp), %rsi
incq %rsi
callq 0x5340
movq 0x28(%rbx), %rax
movq 0x48(%rbx), %rcx
leaq 0x18(%rsp), %r13
movl $0xe8, %r14d
addq (%rax), %r14
movq %r13, -0x10(%r13)
movq (%rcx), %rsi
movq 0x8(%rcx), %rdx
addq %rsi, %rdx
leaq 0x8(%rsp), %r12
movq %r12, %rdi
callq 0x1a300
movq %r14, %rdi
movq %r12, %rsi
callq 0x1b97e
movq (%rax), %r14
movq 0x8(%rsp), %rdi
cmpq %r13, %rdi
je 0x275df
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x5340
testq %r15, %r15
je 0x27865
testq %r14, %r14
je 0x27884
leaq 0x7ad2(%rip), %r12      # 0x2f0ca
movq %r15, %rdi
movq %r12, %rsi
callq 0x24f54
movl %eax, %ebp
movq %r14, %rdi
movq %r12, %rsi
callq 0x24f54
cmpl %eax, %ebp
jne 0x277c7
movq 0x139a1(%rip), %r15     # 0x3afc0
leaq 0x1b0a2(%rip), %rsi     # 0x426c8
movq %r15, %rdi
callq 0x278e2
movq %rax, %r12
leaq 0x7a97(%rip), %rsi      # 0x2f0cf
movl $0xd, %edx
movq %rax, %rdi
callq 0x53a0
movq 0x40(%rbx), %rax
movq (%rax), %rsi
movq 0x8(%rax), %rdx
movq %r12, %rdi
callq 0x53a0
movq %rax, %r12
leaq 0x7a7b(%rip), %rsi      # 0x2f0dd
movl $0x7, %edx
movq %rax, %rdi
callq 0x53a0
movq 0x48(%rbx), %rax
movq (%rax), %rsi
movq 0x8(%rax), %rdx
movq %r12, %rdi
callq 0x53a0
leaq 0x7a5c(%rip), %rsi      # 0x2f0e5
movl $0x1e, %edx
movq %r15, %rdi
callq 0x53a0
leaq 0x1b023(%rip), %rsi     # 0x426c0
movq %r15, %rdi
callq 0x278e2
movq %rax, %r15
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x5300
movsbl %al, %esi
movq %r15, %rdi
callq 0x5050
movq %rax, %rdi
callq 0x5230
movq %r14, %rdi
callq 0x25014
testq %rax, %rax
je 0x277b5
movq 0x38(%rbx), %rdi
movq %rax, %rsi
callq 0x1cd08
jmp 0x277b5
movq 0x138c8(%rip), %rdi     # 0x3afc0
leaq 0x1afc5(%rip), %rsi     # 0x426c4
callq 0x278e2
movq %rax, %r14
leaq 0x7a22(%rip), %rsi      # 0x2f130
movl $0x12, %edx
movq %rax, %rdi
callq 0x53a0
movq 0x40(%rbx), %rax
movq (%rax), %rsi
movq 0x8(%rax), %rdx
movq %r14, %rdi
callq 0x53a0
movq %rax, %r14
leaq 0x79a5(%rip), %rsi      # 0x2f0dd
movl $0x7, %edx
jmp 0x27761
movq 0x1387a(%rip), %rdi     # 0x3afc0
leaq 0x1af77(%rip), %rsi     # 0x426c4
callq 0x278e2
movq %rax, %r14
leaq 0x79bc(%rip), %rsi      # 0x2f118
movl $0x17, %edx
movq %rax, %rdi
callq 0x53a0
movq 0x48(%rbx), %rax
movq (%rax), %rsi
movq 0x8(%rax), %rdx
movq %r14, %rdi
callq 0x53a0
leaq 0x1af3d(%rip), %rsi     # 0x426c0
movq %rax, %rdi
callq 0x278e2
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x5300
movsbl %al, %esi
movq %rbx, %rdi
callq 0x5050
movq %rax, %rdi
callq 0x5230
addq $0x88, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq 0x137f2(%rip), %r14     # 0x3afc0
leaq 0x1aef7(%rip), %r15     # 0x426cc
movq %r14, %rdi
movq %r15, %rsi
callq 0x278e2
movq %rax, %r12
leaq 0x78e5(%rip), %rsi      # 0x2f0cf
movl $0xd, %edx
movq %rax, %rdi
callq 0x53a0
movq 0x40(%rbx), %rax
movq (%rax), %rsi
movq 0x8(%rax), %rdx
movq %r12, %rdi
callq 0x53a0
movq %rax, %r12
leaq 0x78c9(%rip), %rsi      # 0x2f0dd
movl $0x7, %edx
movq %rax, %rdi
callq 0x53a0
movq 0x48(%rbx), %rax
movq (%rax), %rsi
movq 0x8(%rax), %rdx
movq %r12, %rdi
callq 0x53a0
movq %r14, %rdi
movq %r15, %rsi
callq 0x278e2
movq %rax, %rbx
leaq 0x78bb(%rip), %rsi      # 0x2f104
movl $0x13, %edx
movq %rax, %rdi
callq 0x53a0
leaq 0x1ae63(%rip), %rsi     # 0x426c0
movq %rbx, %rdi
jmp 0x27786
leaq 0x7814(%rip), %rdi      # 0x2f080
leaq 0x7818(%rip), %rsi      # 0x2f08b
leaq 0x7825(%rip), %rcx      # 0x2f09f
movl $0x12f, %edx            # imm = 0x12F
callq 0x5210
leaq 0x7834(%rip), %rdi      # 0x2f0bf
leaq 0x77f9(%rip), %rsi      # 0x2f08b
leaq 0x7806(%rip), %rcx      # 0x2f09f
movl $0x130, %edx            # imm = 0x130
callq 0x5210
movq %rax, %rbx
movq 0x8(%rsp), %rdi
jmp 0x278c9
movq %rax, %rbx
movq 0x28(%rsp), %rdi
jmp 0x278c9
movq %rax, %rbx
movq 0x48(%rsp), %rdi
jmp 0x278c9
movq %rax, %rbx
movq 0x68(%rsp), %rdi
cmpq %r13, %rdi
je 0x278da
movq (%r13), %rsi
incq %rsi
callq 0x5340
movq %rbx, %rdi
callq 0x55c0