// File: srajangarg[P]raytracer/src/core/mathexpr.cpp
// Function: operator*(ROperation const&, ROperation const&)
ROperation operator*(const ROperation& op1,const ROperation& op2)
{
if(op1.op==Num&&op2.op==Num)return op1.ValC*op2.ValC;
if(op1==0.||op2==0.)return 0.;
if(op1==1.)return op2;if(op2==1.)return op1;
if(op1.op==Opp)return -(*(op1.mmb2)*op2);if(op2.op==Opp)return -(op1**(op2.mmb2));
ROperation resultat;
resultat.op=Mult;resultat.mmb1=new ROperation(op1);
resultat.mmb2=new ROperation(op2);
return resultat;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x110, %rsp            # imm = 0x110
movq %rdi, -0xf0(%rbp)
movq %rdi, %rax
movq %rax, -0xe8(%rbp)
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq -0x10(%rbp), %rax
cmpl $0x2, 0x24(%rax)
jne 0x1dedf
movq -0x18(%rbp), %rax
cmpl $0x2, 0x24(%rax)
jne 0x1dedf
movq -0xf0(%rbp), %rdi
movq -0x10(%rbp), %rax
movsd 0x38(%rax), %xmm0
movq -0x18(%rbp), %rax
mulsd 0x38(%rax), %xmm0
callq 0x1d200
jmp 0x1e143
movq -0x10(%rbp), %rdi
xorps %xmm0, %xmm0
callq 0x1d3f0
cmpl $0x0, %eax
jne 0x1df01
movq -0x18(%rbp), %rdi
xorps %xmm0, %xmm0
callq 0x1d3f0
cmpl $0x0, %eax
je 0x1df15
movq -0xf0(%rbp), %rdi
xorps %xmm0, %xmm0
callq 0x1d200
jmp 0x1e143
movq -0x10(%rbp), %rdi
movsd 0x29217(%rip), %xmm0    # 0x47138
callq 0x1d3f0
cmpl $0x0, %eax
je 0x1df40
movq -0xf0(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0x1d0a0
jmp 0x1e143
movq -0x18(%rbp), %rdi
movsd 0x291ec(%rip), %xmm0    # 0x47138
callq 0x1d3f0
cmpl $0x0, %eax
je 0x1df6b
movq -0xf0(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x1d0a0
jmp 0x1e143
movq -0x10(%rbp), %rax
cmpl $0x6, 0x24(%rax)
jne 0x1dfce
movq -0x10(%rbp), %rax
movq 0x30(%rax), %rsi
movq -0x18(%rbp), %rdx
leaq -0x70(%rbp), %rdi
movq %rdi, -0xf8(%rbp)
callq 0x1de80
movq -0xf0(%rbp), %rdi
movq -0xf8(%rbp), %rsi
callq 0x1d840
jmp 0x1dfa6
leaq -0x70(%rbp), %rdi
callq 0x1ce40
jmp 0x1e143
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
leaq -0x70(%rbp), %rdi
callq 0x1ce40
jmp 0x1e153
movq -0x18(%rbp), %rax
cmpl $0x6, 0x24(%rax)
jne 0x1e03a
movq -0x10(%rbp), %rsi
movq -0x18(%rbp), %rax
movq 0x30(%rax), %rdx
leaq -0xd8(%rbp), %rdi
movq %rdi, -0x100(%rbp)
callq 0x1de80
movq -0xf0(%rbp), %rdi
movq -0x100(%rbp), %rsi
callq 0x1d840
jmp 0x1e00c
leaq -0xd8(%rbp), %rdi
callq 0x1ce40
jmp 0x1e143
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
leaq -0xd8(%rbp), %rdi
callq 0x1ce40
jmp 0x1e153
movq -0xf0(%rbp), %rdi
movb $0x0, -0xd9(%rbp)
callq 0x1c150
movq -0xf0(%rbp), %rax
movl $0x7, 0x24(%rax)
movl $0x58, %edi
callq 0x5400
movq %rax, -0x108(%rbp)
jmp 0x1e06e
movq -0x108(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x1d0a0
jmp 0x1e080
movq -0xf0(%rbp), %rax
movq -0x108(%rbp), %rcx
movq %rcx, 0x28(%rax)
movl $0x58, %edi
callq 0x5400
movq %rax, -0x110(%rbp)
jmp 0x1e0a5
movq -0x110(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0x1d0a0
jmp 0x1e0b7
movq -0xf0(%rbp), %rax
movq -0x110(%rbp), %rcx
movq %rcx, 0x30(%rax)
movb $0x1, -0xd9(%rbp)
testb $0x1, -0xd9(%rbp)
jne 0x1e133
jmp 0x1e127
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
jmp 0x1e135
movq -0x108(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
movl $0x58, %esi
callq 0x5410
jmp 0x1e135
movq -0x110(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
movl $0x58, %esi
callq 0x5410
jmp 0x1e135
movq -0xf0(%rbp), %rdi
callq 0x1ce40
jmp 0x1e143
movq -0xf0(%rbp), %rdi
callq 0x1ce40
jmp 0x1e153
movq -0xe8(%rbp), %rax
addq $0x110, %rsp            # imm = 0x110
popq %rbp
retq
movq -0x78(%rbp), %rdi
callq 0x5720
nopl (%rax)