// File: Rubenmp[P]Rubik/src/defineRubik.cpp
// Function: Rubik::operator==(Rubik const&)
bool Rubik::operator == (const Rubik& rubik){
   bool equal = true;
   int i;
   if (this != &rubik){
      for (i=0; i<6; ++i){
         if (center[i].center != rubik.getCenter(i).center)
            equal = false;
      }

      for (i=0; i<12 && !equal; ++i){
         if (edge[i].up != rubik.getEdge(i).up ||
             edge[i].down != rubik.getEdge(i).down)
            equal = false;
      }

      for (i=0; i<8 && !equal; ++i){
         if (corner[i].up != rubik.getCorner(i).up     ||
             corner[i].left != rubik.getCorner(i).left ||
             corner[i].right != rubik.getCorner(i).right)
            equal = false;
      }
   }

   return equal;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x50, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x30(%rbp)
movb $0x1, -0x11(%rbp)
cmpq -0x10(%rbp), %rax
je 0x15c37
movl $0x0, -0x18(%rbp)
cmpl $0x6, -0x18(%rbp)
jge 0x15a90
movq -0x30(%rbp), %rax
movslq -0x18(%rbp), %rcx
movsbl (%rax,%rcx), %eax
movl %eax, -0x34(%rbp)
movq -0x10(%rbp), %rdi
leaq -0x18(%rbp), %rsi
callq 0x158e0
movb %al, %cl
movl -0x34(%rbp), %eax
movb %cl, -0x19(%rbp)
movsbl -0x19(%rbp), %ecx
cmpl %ecx, %eax
je 0x15a83
movb $0x0, -0x11(%rbp)
jmp 0x15a85
movl -0x18(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x18(%rbp)
jmp 0x15a4d
movl $0x0, -0x18(%rbp)
xorl %eax, %eax
cmpl $0xc, -0x18(%rbp)
movb %al, -0x35(%rbp)
jge 0x15aaa
movb -0x11(%rbp), %al
xorb $-0x1, %al
movb %al, -0x35(%rbp)
movb -0x35(%rbp), %al
testb $0x1, %al
jne 0x15ab6
jmp 0x15b37
movq -0x30(%rbp), %rax
movslq -0x18(%rbp), %rcx
movsbl 0x6(%rax,%rcx,2), %eax
movl %eax, -0x3c(%rbp)
movq -0x10(%rbp), %rdi
leaq -0x18(%rbp), %rsi
callq 0x15920
movl -0x3c(%rbp), %ecx
movw %ax, -0x1b(%rbp)
movsbl -0x1b(%rbp), %edx
movb $0x1, %al
cmpl %edx, %ecx
movb %al, -0x36(%rbp)
jne 0x15b1a
movq -0x30(%rbp), %rax
movslq -0x18(%rbp), %rcx
movsbl 0x7(%rax,%rcx,2), %eax
movl %eax, -0x40(%rbp)
movq -0x10(%rbp), %rdi
leaq -0x18(%rbp), %rsi
callq 0x15920
movw %ax, %cx
movl -0x40(%rbp), %eax
movw %cx, -0x1d(%rbp)
movsbl -0x1c(%rbp), %ecx
cmpl %ecx, %eax
setne %al
movb %al, -0x36(%rbp)
movb -0x36(%rbp), %al
testb $0x1, %al
jne 0x15b23
jmp 0x15b27
movb $0x0, -0x11(%rbp)
jmp 0x15b29
movl -0x18(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x18(%rbp)
jmp 0x15a97
movl $0x0, -0x18(%rbp)
xorl %eax, %eax
cmpl $0x8, -0x18(%rbp)
movb %al, -0x41(%rbp)
jge 0x15b51
movb -0x11(%rbp), %al
xorb $-0x1, %al
movb %al, -0x41(%rbp)
movb -0x41(%rbp), %al
testb $0x1, %al
jne 0x15b5d
jmp 0x15c35
movq -0x30(%rbp), %rax
movslq -0x18(%rbp), %rcx
leaq (%rcx,%rcx,2), %rcx
movsbl 0x1e(%rax,%rcx), %eax
movl %eax, -0x48(%rbp)
movq -0x10(%rbp), %rdi
leaq -0x18(%rbp), %rsi
callq 0x15980
movl -0x48(%rbp), %ecx
movw %ax, %dx
movw %dx, -0x20(%rbp)
shrl $0x10, %eax
movb %al, -0x1e(%rbp)
movsbl -0x20(%rbp), %edx
movb $0x1, %al
cmpl %edx, %ecx
movb %al, -0x42(%rbp)
jne 0x15c18
movq -0x30(%rbp), %rax
movslq -0x18(%rbp), %rcx
leaq (%rcx,%rcx,2), %rcx
movsbl 0x1f(%rax,%rcx), %eax
movl %eax, -0x4c(%rbp)
movq -0x10(%rbp), %rdi
leaq -0x18(%rbp), %rsi
callq 0x15980
movl -0x4c(%rbp), %ecx
movw %ax, %dx
movw %dx, -0x23(%rbp)
shrl $0x10, %eax
movb %al, -0x21(%rbp)
movsbl -0x22(%rbp), %edx
movb $0x1, %al
cmpl %edx, %ecx
movb %al, -0x42(%rbp)
jne 0x15c18
movq -0x30(%rbp), %rax
movslq -0x18(%rbp), %rcx
leaq (%rcx,%rcx,2), %rcx
movsbl 0x20(%rax,%rcx), %eax
movl %eax, -0x50(%rbp)
movq -0x10(%rbp), %rdi
leaq -0x18(%rbp), %rsi
callq 0x15980
movl %eax, %ecx
movl -0x50(%rbp), %eax
movw %cx, %dx
movw %dx, -0x26(%rbp)
shrl $0x10, %ecx
movb %cl, -0x24(%rbp)
movsbl -0x24(%rbp), %ecx
cmpl %ecx, %eax
setne %al
movb %al, -0x42(%rbp)
movb -0x42(%rbp), %al
testb $0x1, %al
jne 0x15c21
jmp 0x15c25
movb $0x0, -0x11(%rbp)
jmp 0x15c27
movl -0x18(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x18(%rbp)
jmp 0x15b3e
jmp 0x15c37
movb -0x11(%rbp), %al
andb $0x1, %al
addq $0x50, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)