// File: /workspace/github_cpp_makefile_star2_O3/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 0x1a0b6
movq %r14, %rdi
movq %r15, %rsi
callq 0x1f7f2
movl %eax, %ebp
movq 0x68(%rsp), %rdi
cmpq %r13, %rdi
je 0x27208
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 0x1a0b6
movq %r14, %rdi
movq %r15, %rsi
callq 0x1ad20
movl %eax, %r14d
movq 0x48(%rsp), %rdi
cmpq %r13, %rdi
je 0x27258
movq 0x58(%rsp), %rsi
incq %rsi
callq 0x5340
movq 0x40(%rbx), %rdi
leaq 0x63c0(%rip), %r15      # 0x2d623
movq %r15, %rsi
callq 0x5110
movl %eax, %r12d
movq 0x48(%rbx), %rdi
movq %r15, %rsi
callq 0x5110
testl %r12d, %r12d
je 0x27452
testl %eax, %eax
je 0x27476
testb %bpl, %bpl
je 0x274d9
testb %r14b, %r14b
je 0x27527
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 0x1a0b6
movq %r14, %rdi
movq %r15, %rsi
callq 0x1f850
movq %rax, %r15
movq 0x28(%rsp), %rdi
cmpq %r13, %rdi
je 0x272ea
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 0x1a0b6
movq %r14, %rdi
movq %r12, %rsi
callq 0x1b72c
movq (%rax), %r14
movq 0x8(%rsp), %rdi
cmpq %r13, %rdi
je 0x27340
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x5340
testq %r15, %r15
je 0x2763b
testq %r14, %r14
je 0x2765a
leaq 0x6d79(%rip), %r12      # 0x2e0d2
movq %r15, %rdi
movq %r12, %rsi
callq 0x24d76
movl %eax, %ebp
movq %r14, %rdi
movq %r12, %rsi
callq 0x24d76
cmpl %eax, %ebp
jne 0x275af
movq 0x12c40(%rip), %r15     # 0x39fc0
leaq 0x1a341(%rip), %rsi     # 0x416c8
movq %r15, %rdi
callq 0x276b8
movq %rax, %r12
leaq 0x6d3e(%rip), %rsi      # 0x2e0d7
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 0x6d22(%rip), %rsi      # 0x2e0e5
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 0x6d03(%rip), %rsi      # 0x2e0ed
movl $0x1e, %edx
movq %r15, %rdi
callq 0x53a0
leaq 0x1a2c2(%rip), %rsi     # 0x416c0
movq %r15, %rdi
callq 0x276b8
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 0x24e36
testq %rax, %rax
je 0x2759d
movq 0x38(%rbx), %rdi
movq %rax, %rsi
callq 0x1cac0
jmp 0x2759d
movq 0x12b67(%rip), %rdi     # 0x39fc0
leaq 0x1a26c(%rip), %rsi     # 0x416cc
callq 0x276b8
movq %rax, %rbx
leaq 0x6bf7(%rip), %rsi      # 0x2e066
movl $0xc, %edx
jmp 0x274c2
movq 0x12b43(%rip), %rdi     # 0x39fc0
leaq 0x1a248(%rip), %rsi     # 0x416cc
callq 0x276b8
movq %rax, %r14
leaq 0x6be0(%rip), %rsi      # 0x2e073
movl $0x8, %edx
movq %rax, %rdi
callq 0x53a0
movq 0x40(%rbx), %rax
movq (%rax), %rsi
movq 0x8(%rax), %rdx
movq %r14, %rdi
callq 0x53a0
movq %rax, %rbx
leaq 0x6bbf(%rip), %rsi      # 0x2e07c
movl $0xb, %edx
movq %rax, %rdi
callq 0x53a0
leaq 0x1a1ef(%rip), %rsi     # 0x416c0
movq %rbx, %rdi
jmp 0x2756e
movq 0x12ae0(%rip), %rdi     # 0x39fc0
leaq 0x1a1dd(%rip), %rsi     # 0x416c4
callq 0x276b8
movq %rax, %r14
leaq 0x6c42(%rip), %rsi      # 0x2e138
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 0x6bc5(%rip), %rsi      # 0x2e0e5
movl $0x7, %edx
jmp 0x27549
movq 0x12a92(%rip), %rdi     # 0x39fc0
leaq 0x1a18f(%rip), %rsi     # 0x416c4
callq 0x276b8
movq %rax, %r14
leaq 0x6bdc(%rip), %rsi      # 0x2e120
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 0x1a155(%rip), %rsi     # 0x416c0
movq %rax, %rdi
callq 0x276b8
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 0x12a0a(%rip), %r14     # 0x39fc0
leaq 0x1a10f(%rip), %r15     # 0x416cc
movq %r14, %rdi
movq %r15, %rsi
callq 0x276b8
movq %rax, %r12
leaq 0x6b05(%rip), %rsi      # 0x2e0d7
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 0x6ae9(%rip), %rsi      # 0x2e0e5
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 0x276b8
movq %rax, %rbx
leaq 0x6adb(%rip), %rsi      # 0x2e10c
movl $0x13, %edx
jmp 0x274c2
leaq 0x6a46(%rip), %rdi      # 0x2e088
leaq 0x6a4a(%rip), %rsi      # 0x2e093
leaq 0x6a57(%rip), %rcx      # 0x2e0a7
movl $0x12f, %edx            # imm = 0x12F
callq 0x5210
leaq 0x6a66(%rip), %rdi      # 0x2e0c7
leaq 0x6a2b(%rip), %rsi      # 0x2e093
leaq 0x6a38(%rip), %rcx      # 0x2e0a7
movl $0x130, %edx            # imm = 0x130
callq 0x5210
movq %rax, %rbx
movq 0x8(%rsp), %rdi
jmp 0x2769f
movq %rax, %rbx
movq 0x28(%rsp), %rdi
jmp 0x2769f
movq %rax, %rbx
movq 0x48(%rsp), %rdi
jmp 0x2769f
movq %rax, %rbx
movq 0x68(%rsp), %rdi
cmpq %r13, %rdi
je 0x276b0
movq (%r13), %rsi
incq %rsi
callq 0x5340
movq %rbx, %rdi
callq 0x55c0