// File: /workspace/github_cpp_makefile_star2_O3/chuckwolber[P]Cube/test/test_cube.cpp
// Function: getExpected(CubieColor, unsigned int)
std::vector<CubieColor> getExpected(CubieColor referenceColor,
                                    unsigned int cubeSize) {
   if (cubeSize < 2)
      cubeSize = 2;

   std::vector<CubieColor> colorList;
   std::vector<CubieColor> tmp;
   for (unsigned int i = 0; i < cubeSize*4*cubeSize*3; i++)
      tmp.push_back(CubieColor::NOCOLOR);

   switch (referenceColor) {
      case CubieColor::BLUE:
         colorList.push_back(CubieColor::WHITE);
         colorList.push_back(CubieColor::RED);
         colorList.push_back(CubieColor::BLUE);
         colorList.push_back(CubieColor::ORANGE);
         colorList.push_back(CubieColor::GREEN);
         colorList.push_back(CubieColor::YELLOW);
         break;
      case CubieColor::GREEN:
         colorList.push_back(CubieColor::WHITE);
         colorList.push_back(CubieColor::ORANGE);
         colorList.push_back(CubieColor::GREEN);
         colorList.push_back(CubieColor::RED);
         colorList.push_back(CubieColor::BLUE);
         colorList.push_back(CubieColor::YELLOW);
         break;
      case CubieColor::ORANGE:
         colorList.push_back(CubieColor::WHITE);
         colorList.push_back(CubieColor::BLUE);
         colorList.push_back(CubieColor::ORANGE);
         colorList.push_back(CubieColor::GREEN);
         colorList.push_back(CubieColor::RED);
         colorList.push_back(CubieColor::YELLOW);
         break;
      case CubieColor::RED:
         colorList.push_back(CubieColor::WHITE);
         colorList.push_back(CubieColor::GREEN);
         colorList.push_back(CubieColor::RED);
         colorList.push_back(CubieColor::BLUE);
         colorList.push_back(CubieColor::ORANGE);
         colorList.push_back(CubieColor::YELLOW);
         break;
      case CubieColor::WHITE:
         colorList.push_back(CubieColor::GREEN);
         colorList.push_back(CubieColor::RED);
         colorList.push_back(CubieColor::WHITE);
         colorList.push_back(CubieColor::ORANGE);
         colorList.push_back(CubieColor::YELLOW);
         colorList.push_back(CubieColor::BLUE);
         break;
      case CubieColor::YELLOW:
         colorList.push_back(CubieColor::GREEN);
         colorList.push_back(CubieColor::ORANGE);
         colorList.push_back(CubieColor::YELLOW);
         colorList.push_back(CubieColor::RED);
         colorList.push_back(CubieColor::WHITE);
         colorList.push_back(CubieColor::BLUE);
         break;
      default:
         break;
   }
   setColors(tmp, colorList, cubeSize);

   return tmp;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0x40, %rsp
movl %esi, %r14d
cmpl $0x3, %edx
movl $0x2, %ebp
cmovael %edx, %ebp
movq %rdi, %rbx
xorl %eax, %eax
movq %rax, 0x20(%rsp)
xorps %xmm0, %xmm0
movaps %xmm0, 0x10(%rsp)
movq %rax, 0x10(%rdi)
movups %xmm0, (%rdi)
movl %ebp, %eax
imull %eax, %eax
shll $0x2, %eax
leal (%rax,%rax,2), %r12d
testl %r12d, %r12d
je 0x65a5
leaq 0xf(%rsp), %r15
movb $0x20, 0xf(%rsp)
movq 0x8(%rbx), %rsi
cmpq 0x10(%rbx), %rsi
je 0x6595
movb $0x20, (%rsi)
incq %rsi
movq %rsi, 0x8(%rbx)
jmp 0x65a0
movq %rbx, %rdi
movq %r15, %rdx
callq 0x83e4
decl %r12d
jne 0x657a
movsbl %r14b, %eax
cmpl $0x71, %eax
jg 0x65ed
cmpl $0x62, %eax
je 0x662c
cmpl $0x67, %eax
je 0x667c
cmpl $0x6f, %eax
jne 0x6d33
movb $0x77, 0xf(%rsp)
movq 0x18(%rsp), %rsi
movq 0x20(%rsp), %rax
cmpq %rax, %rsi
je 0x673a
movb $0x77, (%rsi)
incq %rsi
movq %rsi, 0x18(%rsp)
jmp 0x6753
cmpl $0x72, %eax
je 0x6654
cmpl $0x77, %eax
je 0x66a4
cmpl $0x79, %eax
jne 0x6d33
movb $0x67, 0xf(%rsp)
movq 0x18(%rsp), %rsi
movq 0x20(%rsp), %rax
cmpq %rax, %rsi
je 0x6771
movb $0x67, (%rsi)
incq %rsi
movq %rsi, 0x18(%rsp)
jmp 0x678a
movb $0x77, 0xf(%rsp)
movq 0x18(%rsp), %rsi
movq 0x20(%rsp), %rax
cmpq %rax, %rsi
je 0x66cc
movb $0x77, (%rsi)
incq %rsi
movq %rsi, 0x18(%rsp)
jmp 0x66e5
movb $0x77, 0xf(%rsp)
movq 0x18(%rsp), %rsi
movq 0x20(%rsp), %rax
cmpq %rax, %rsi
je 0x6703
movb $0x77, (%rsi)
incq %rsi
movq %rsi, 0x18(%rsp)
jmp 0x671c
movb $0x77, 0xf(%rsp)
movq 0x18(%rsp), %rsi
movq 0x20(%rsp), %rax
cmpq %rax, %rsi
je 0x67a8
movb $0x77, (%rsi)
incq %rsi
movq %rsi, 0x18(%rsp)
jmp 0x67c1
movb $0x67, 0xf(%rsp)
movq 0x18(%rsp), %rsi
movq 0x20(%rsp), %rax
cmpq %rax, %rsi
je 0x67df
movb $0x67, (%rsi)
incq %rsi
movq %rsi, 0x18(%rsp)
jmp 0x67f8
leaq 0x10(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x83e4
movq 0x18(%rsp), %rsi
movq 0x20(%rsp), %rax
movb $0x72, 0xf(%rsp)
cmpq %rax, %rsi
je 0x6816
movb $0x72, (%rsi)
incq %rsi
movq %rsi, 0x18(%rsp)
jmp 0x682f
leaq 0x10(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x83e4
movq 0x18(%rsp), %rsi
movq 0x20(%rsp), %rax
movb $0x67, 0xf(%rsp)
cmpq %rax, %rsi
je 0x684d
movb $0x67, (%rsi)
incq %rsi
movq %rsi, 0x18(%rsp)
jmp 0x6866
leaq 0x10(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x83e4
movq 0x18(%rsp), %rsi
movq 0x20(%rsp), %rax
movb $0x62, 0xf(%rsp)
cmpq %rax, %rsi
je 0x6884
movb $0x62, (%rsi)
incq %rsi
movq %rsi, 0x18(%rsp)
jmp 0x689d
leaq 0x10(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x83e4
movq 0x18(%rsp), %rsi
movq 0x20(%rsp), %rax
movb $0x6f, 0xf(%rsp)
cmpq %rax, %rsi
je 0x68bb
movb $0x6f, (%rsi)
incq %rsi
movq %rsi, 0x18(%rsp)
jmp 0x68d4
leaq 0x10(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x83e4
movq 0x18(%rsp), %rsi
movq 0x20(%rsp), %rax
movb $0x6f, 0xf(%rsp)
cmpq %rax, %rsi
je 0x68f2
movb $0x6f, (%rsi)
incq %rsi
movq %rsi, 0x18(%rsp)
jmp 0x690b
leaq 0x10(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x83e4
movq 0x18(%rsp), %rsi
movq 0x20(%rsp), %rax
movb $0x72, 0xf(%rsp)
cmpq %rax, %rsi
je 0x6929
movb $0x72, (%rsi)
incq %rsi
movq %rsi, 0x18(%rsp)
jmp 0x6942
leaq 0x10(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x83e4
movq 0x18(%rsp), %rsi
movq 0x20(%rsp), %rax
movb $0x62, 0xf(%rsp)
cmpq %rax, %rsi
je 0x6960
movb $0x62, (%rsi)
incq %rsi
movq %rsi, 0x18(%rsp)
jmp 0x6979
leaq 0x10(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x83e4
movq 0x18(%rsp), %rsi
movq 0x20(%rsp), %rax
movb $0x72, 0xf(%rsp)
cmpq %rax, %rsi
je 0x6997
movb $0x72, (%rsi)
incq %rsi
movq %rsi, 0x18(%rsp)
jmp 0x69b0
leaq 0x10(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x83e4
movq 0x18(%rsp), %rsi
movq 0x20(%rsp), %rax
movb $0x6f, 0xf(%rsp)
cmpq %rax, %rsi
je 0x69ce
movb $0x6f, (%rsi)
incq %rsi
movq %rsi, 0x18(%rsp)
jmp 0x69e7
leaq 0x10(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x83e4
movq 0x18(%rsp), %rsi
movq 0x20(%rsp), %rax
movb $0x79, 0xf(%rsp)
cmpq %rax, %rsi
je 0x6a05
movb $0x79, (%rsi)
incq %rsi
movq %rsi, 0x18(%rsp)
jmp 0x6a1e
leaq 0x10(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x83e4
movq 0x18(%rsp), %rsi
movq 0x20(%rsp), %rax
movb $0x67, 0xf(%rsp)
cmpq %rax, %rsi
je 0x6a3c
movb $0x67, (%rsi)
incq %rsi
movq %rsi, 0x18(%rsp)
jmp 0x6a55
leaq 0x10(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x83e4
movq 0x18(%rsp), %rsi
movq 0x20(%rsp), %rax
movb $0x77, 0xf(%rsp)
cmpq %rax, %rsi
je 0x6a73
movb $0x77, (%rsi)
incq %rsi
movq %rsi, 0x18(%rsp)
jmp 0x6a8c
leaq 0x10(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x83e4
movq 0x18(%rsp), %rsi
movq 0x20(%rsp), %rax
movb $0x6f, 0xf(%rsp)
cmpq %rax, %rsi
je 0x6aaa
movb $0x6f, (%rsi)
incq %rsi
movq %rsi, 0x18(%rsp)
jmp 0x6ac3
leaq 0x10(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x83e4
movq 0x18(%rsp), %rsi
movq 0x20(%rsp), %rax
movb $0x62, 0xf(%rsp)
cmpq %rax, %rsi
je 0x6ae1
movb $0x62, (%rsi)
incq %rsi
movq %rsi, 0x18(%rsp)
jmp 0x6afa
leaq 0x10(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x83e4
movq 0x18(%rsp), %rsi
movq 0x20(%rsp), %rax
movb $0x67, 0xf(%rsp)
cmpq %rax, %rsi
je 0x6b18
movb $0x67, (%rsi)
incq %rsi
movq %rsi, 0x18(%rsp)
jmp 0x6b31
leaq 0x10(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x83e4
movq 0x18(%rsp), %rsi
movq 0x20(%rsp), %rax
movb $0x72, 0xf(%rsp)
cmpq %rax, %rsi
je 0x6b4f
movb $0x72, (%rsi)
incq %rsi
movq %rsi, 0x18(%rsp)
jmp 0x6b68
leaq 0x10(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x83e4
movq 0x18(%rsp), %rsi
movq 0x20(%rsp), %rax
movb $0x72, 0xf(%rsp)
cmpq %rax, %rsi
je 0x6b86
movb $0x72, (%rsi)
incq %rsi
movq %rsi, 0x18(%rsp)
jmp 0x6b9f
leaq 0x10(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x83e4
movq 0x18(%rsp), %rsi
movq 0x20(%rsp), %rax
movb $0x6f, 0xf(%rsp)
cmpq %rax, %rsi
je 0x6bbd
movb $0x6f, (%rsi)
incq %rsi
movq %rsi, 0x18(%rsp)
jmp 0x6bd6
leaq 0x10(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x83e4
movq 0x18(%rsp), %rsi
movq 0x20(%rsp), %rax
movb $0x67, 0xf(%rsp)
cmpq %rax, %rsi
je 0x6bf4
movb $0x67, (%rsi)
incq %rsi
movq %rsi, 0x18(%rsp)
jmp 0x6c0d
leaq 0x10(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x83e4
movq 0x18(%rsp), %rsi
movq 0x20(%rsp), %rax
movb $0x6f, 0xf(%rsp)
cmpq %rax, %rsi
je 0x6c2f
movb $0x6f, (%rsi)
incq %rsi
movq %rsi, 0x18(%rsp)
jmp 0x6c48
leaq 0x10(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x83e4
movq 0x18(%rsp), %rsi
movq 0x20(%rsp), %rax
movb $0x72, 0xf(%rsp)
cmpq %rax, %rsi
je 0x6c6a
movb $0x72, (%rsi)
incq %rsi
movq %rsi, 0x18(%rsp)
jmp 0x6c83
leaq 0x10(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x83e4
movq 0x18(%rsp), %rsi
movq 0x20(%rsp), %rax
movb $0x77, 0xf(%rsp)
cmpq %rax, %rsi
je 0x6ca1
movb $0x77, (%rsi)
incq %rsi
movq %rsi, 0x18(%rsp)
jmp 0x6cba
leaq 0x10(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x83e4
movq 0x18(%rsp), %rsi
movq 0x20(%rsp), %rax
movb $0x62, 0xf(%rsp)
cmpq %rax, %rsi
je 0x6cd5
movb $0x62, (%rsi)
incq %rsi
movq %rsi, 0x18(%rsp)
jmp 0x6cee
leaq 0x10(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x83e4
movq 0x18(%rsp), %rsi
movq 0x20(%rsp), %rax
movb $0x79, 0xf(%rsp)
cmpq %rax, %rsi
je 0x6d01
movb $0x79, (%rsi)
incq %rsi
movq %rsi, 0x18(%rsp)
jmp 0x6d1a
leaq 0x10(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x83e4
movq 0x18(%rsp), %rsi
movq 0x20(%rsp), %rax
movb $0x79, 0xf(%rsp)
cmpq %rax, %rsi
jne 0x6cfc
leaq 0x10(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x83e4
jmp 0x6d33
leaq 0x10(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x83e4
movq 0x18(%rsp), %rsi
movq 0x20(%rsp), %rax
movb $0x79, 0xf(%rsp)
cmpq %rax, %rsi
jne 0x6cfc
leaq 0x10(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x83e4
jmp 0x6d33
leaq 0x10(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x83e4
movq 0x18(%rsp), %rsi
movq 0x20(%rsp), %rax
movb $0x79, 0xf(%rsp)
cmpq %rax, %rsi
jne 0x6cfc
leaq 0x10(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x83e4
jmp 0x6d33
leaq 0x10(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x83e4
movq 0x18(%rsp), %rsi
movq 0x20(%rsp), %rax
movb $0x62, 0xf(%rsp)
cmpq %rax, %rsi
jne 0x6d28
leaq 0x10(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x83e4
jmp 0x6d33
leaq 0x10(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x83e4
movq 0x18(%rsp), %rsi
movq 0x20(%rsp), %rax
movb $0x79, 0xf(%rsp)
cmpq %rax, %rsi
je 0x6dd9
movb $0x79, (%rsi)
jmp 0x6d2b
leaq 0x10(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x83e4
movq 0x18(%rsp), %rsi
movq 0x20(%rsp), %rax
movb $0x62, 0xf(%rsp)
cmpq %rax, %rsi
je 0x6ded
movb $0x62, (%rsi)
incq %rsi
movq %rsi, 0x18(%rsp)
movq 0x10(%rsp), %rsi
movq 0x18(%rsp), %rax
movq %rax, %r15
subq %rsi, %r15
je 0x6d68
js 0x6e01
movq %r15, %rdi
callq 0x1110
movq %rax, %r12
movq 0x10(%rsp), %rsi
movq 0x18(%rsp), %rax
movq %rax, %r14
subq %rsi, %r14
jmp 0x6d6e
xorl %r12d, %r12d
movq %r15, %r14
movq %r12, 0x28(%rsp)
leaq (%r12,%r15), %rcx
movq %rcx, 0x38(%rsp)
cmpq %rsi, %rax
je 0x6d8c
movq %r12, %rdi
movq %r14, %rdx
callq 0x1180
addq %r12, %r14
leaq 0x28(%rsp), %rsi
movq %r14, 0x8(%rsi)
movq %rbx, %rdi
movl %ebp, %edx
callq 0x81b0
testq %r12, %r12
je 0x6db2
movq %r12, %rdi
movq %r15, %rsi
callq 0x1120
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0x6dc9
movq 0x20(%rsp), %rsi
subq %rdi, %rsi
callq 0x1120
movq %rbx, %rax
addq $0x40, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
leaq 0x10(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x83e4
jmp 0x6d33
leaq 0x10(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x83e4
jmp 0x6d33
callq 0x1050
jmp 0x6e65
jmp 0x6e65
jmp 0x6e65
jmp 0x6e65
jmp 0x6e65
jmp 0x6e65
jmp 0x6e65
jmp 0x6e65
jmp 0x6e65
jmp 0x6e65
jmp 0x6e65
jmp 0x6e65
jmp 0x6e65
jmp 0x6e65
jmp 0x6e65
jmp 0x6e65
jmp 0x6e65
jmp 0x6e65
jmp 0x6e65
jmp 0x6e65
jmp 0x6e65
jmp 0x6e65
jmp 0x6e65
jmp 0x6e65
jmp 0x6e65
jmp 0x6e65
jmp 0x6e65
jmp 0x6e65
jmp 0x6e65
jmp 0x6e65
jmp 0x6e65
jmp 0x6e65
jmp 0x6e65
jmp 0x6e65
jmp 0x6e65
jmp 0x6e65
movq %rax, %r14
testq %r12, %r12
je 0x6e68
movq %r12, %rdi
movq %r15, %rsi
callq 0x1120
jmp 0x6e68
jmp 0x6e65
movq %rax, %r14
movq (%rbx), %rdi
testq %rdi, %rdi
je 0x6e7c
movq 0x10(%rbx), %rsi
subq %rdi, %rsi
callq 0x1120
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0x6e93
movq 0x20(%rsp), %rsi
subq %rdi, %rsi
callq 0x1120
movq %r14, %rdi
callq 0x1190