// File: /workspace/github_cpp_makefile_star2_O1/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 $0x50, %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 0x682e
leaq 0xf(%rsp), %r15
movb $0x20, 0xf(%rsp)
movq 0x8(%rbx), %rsi
cmpq 0x10(%rbx), %rsi
je 0x681e
movb $0x20, (%rsi)
incq %rsi
movq %rsi, 0x8(%rbx)
jmp 0x6829
movq %rbx, %rdi
movq %r15, %rdx
callq 0x85d0
decl %r12d
jne 0x6803
movsbl %r14b, %eax
cmpl $0x71, %eax
jg 0x6873
cmpl $0x62, %eax
je 0x68af
cmpl $0x67, %eax
je 0x68f2
cmpl $0x6f, %eax
jne 0x6f49
movb $0x77, 0xf(%rsp)
movq 0x18(%rsp), %rsi
cmpq 0x20(%rsp), %rsi
je 0x69a4
movb $0x77, (%rsi)
incq %rsi
movq %rsi, 0x18(%rsp)
jmp 0x69b3
cmpl $0x72, %eax
je 0x68cd
cmpl $0x77, %eax
je 0x6917
cmpl $0x79, %eax
jne 0x6f49
movb $0x67, 0xf(%rsp)
movq 0x18(%rsp), %rsi
cmpq 0x20(%rsp), %rsi
je 0x69d8
movb $0x67, (%rsi)
incq %rsi
movq %rsi, 0x18(%rsp)
jmp 0x69e7
movb $0x77, 0xf(%rsp)
movq 0x18(%rsp), %rsi
cmpq 0x20(%rsp), %rsi
je 0x693c
movb $0x77, (%rsi)
incq %rsi
movq %rsi, 0x18(%rsp)
jmp 0x694b
movb $0x77, 0xf(%rsp)
movq 0x18(%rsp), %rsi
cmpq 0x20(%rsp), %rsi
je 0x6970
movb $0x77, (%rsi)
incq %rsi
movq %rsi, 0x18(%rsp)
jmp 0x697f
movb $0x77, 0xf(%rsp)
movq 0x18(%rsp), %rsi
cmpq 0x20(%rsp), %rsi
je 0x6a0c
movb $0x77, (%rsi)
incq %rsi
movq %rsi, 0x18(%rsp)
jmp 0x6a1b
movb $0x67, 0xf(%rsp)
movq 0x18(%rsp), %rsi
cmpq 0x20(%rsp), %rsi
je 0x6a40
movb $0x67, (%rsi)
incq %rsi
movq %rsi, 0x18(%rsp)
jmp 0x6a4f
leaq 0x10(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x85d0
movb $0x72, 0xf(%rsp)
movq 0x18(%rsp), %rsi
cmpq 0x20(%rsp), %rsi
je 0x6a74
movb $0x72, (%rsi)
incq %rsi
movq %rsi, 0x18(%rsp)
jmp 0x6a83
leaq 0x10(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x85d0
movb $0x67, 0xf(%rsp)
movq 0x18(%rsp), %rsi
cmpq 0x20(%rsp), %rsi
je 0x6aa8
movb $0x67, (%rsi)
incq %rsi
movq %rsi, 0x18(%rsp)
jmp 0x6ab7
leaq 0x10(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x85d0
movb $0x62, 0xf(%rsp)
movq 0x18(%rsp), %rsi
cmpq 0x20(%rsp), %rsi
je 0x6adc
movb $0x62, (%rsi)
incq %rsi
movq %rsi, 0x18(%rsp)
jmp 0x6aeb
leaq 0x10(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x85d0
movb $0x6f, 0xf(%rsp)
movq 0x18(%rsp), %rsi
cmpq 0x20(%rsp), %rsi
je 0x6b10
movb $0x6f, (%rsi)
incq %rsi
movq %rsi, 0x18(%rsp)
jmp 0x6b1f
leaq 0x10(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x85d0
movb $0x6f, 0xf(%rsp)
movq 0x18(%rsp), %rsi
cmpq 0x20(%rsp), %rsi
je 0x6b44
movb $0x6f, (%rsi)
incq %rsi
movq %rsi, 0x18(%rsp)
jmp 0x6b53
leaq 0x10(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x85d0
movb $0x72, 0xf(%rsp)
movq 0x18(%rsp), %rsi
cmpq 0x20(%rsp), %rsi
je 0x6b78
movb $0x72, (%rsi)
incq %rsi
movq %rsi, 0x18(%rsp)
jmp 0x6b87
leaq 0x10(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x85d0
movb $0x62, 0xf(%rsp)
movq 0x18(%rsp), %rsi
cmpq 0x20(%rsp), %rsi
je 0x6bac
movb $0x62, (%rsi)
incq %rsi
movq %rsi, 0x18(%rsp)
jmp 0x6bbb
leaq 0x10(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x85d0
movb $0x72, 0xf(%rsp)
movq 0x18(%rsp), %rsi
cmpq 0x20(%rsp), %rsi
je 0x6be0
movb $0x72, (%rsi)
incq %rsi
movq %rsi, 0x18(%rsp)
jmp 0x6bef
leaq 0x10(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x85d0
movb $0x6f, 0xf(%rsp)
movq 0x18(%rsp), %rsi
cmpq 0x20(%rsp), %rsi
je 0x6c14
movb $0x6f, (%rsi)
incq %rsi
movq %rsi, 0x18(%rsp)
jmp 0x6c23
leaq 0x10(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x85d0
movb $0x79, 0xf(%rsp)
movq 0x18(%rsp), %rsi
cmpq 0x20(%rsp), %rsi
je 0x6c48
movb $0x79, (%rsi)
incq %rsi
movq %rsi, 0x18(%rsp)
jmp 0x6c57
leaq 0x10(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x85d0
movb $0x67, 0xf(%rsp)
movq 0x18(%rsp), %rsi
cmpq 0x20(%rsp), %rsi
je 0x6c7c
movb $0x67, (%rsi)
incq %rsi
movq %rsi, 0x18(%rsp)
jmp 0x6c8b
leaq 0x10(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x85d0
movb $0x77, 0xf(%rsp)
movq 0x18(%rsp), %rsi
cmpq 0x20(%rsp), %rsi
je 0x6cb0
movb $0x77, (%rsi)
incq %rsi
movq %rsi, 0x18(%rsp)
jmp 0x6cbf
leaq 0x10(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x85d0
movb $0x6f, 0xf(%rsp)
movq 0x18(%rsp), %rsi
cmpq 0x20(%rsp), %rsi
je 0x6ce4
movb $0x6f, (%rsi)
incq %rsi
movq %rsi, 0x18(%rsp)
jmp 0x6cf3
leaq 0x10(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x85d0
movb $0x62, 0xf(%rsp)
movq 0x18(%rsp), %rsi
cmpq 0x20(%rsp), %rsi
je 0x6d18
movb $0x62, (%rsi)
incq %rsi
movq %rsi, 0x18(%rsp)
jmp 0x6d27
leaq 0x10(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x85d0
movb $0x67, 0xf(%rsp)
movq 0x18(%rsp), %rsi
cmpq 0x20(%rsp), %rsi
je 0x6d4c
movb $0x67, (%rsi)
incq %rsi
movq %rsi, 0x18(%rsp)
jmp 0x6d5b
leaq 0x10(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x85d0
movb $0x72, 0xf(%rsp)
movq 0x18(%rsp), %rsi
cmpq 0x20(%rsp), %rsi
je 0x6d80
movb $0x72, (%rsi)
incq %rsi
movq %rsi, 0x18(%rsp)
jmp 0x6d8f
leaq 0x10(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x85d0
movb $0x72, 0xf(%rsp)
movq 0x18(%rsp), %rsi
cmpq 0x20(%rsp), %rsi
je 0x6db4
movb $0x72, (%rsi)
incq %rsi
movq %rsi, 0x18(%rsp)
jmp 0x6dc3
leaq 0x10(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x85d0
movb $0x6f, 0xf(%rsp)
movq 0x18(%rsp), %rsi
cmpq 0x20(%rsp), %rsi
je 0x6de8
movb $0x6f, (%rsi)
incq %rsi
movq %rsi, 0x18(%rsp)
jmp 0x6df7
leaq 0x10(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x85d0
movb $0x67, 0xf(%rsp)
movq 0x18(%rsp), %rsi
cmpq 0x20(%rsp), %rsi
je 0x6e1c
movb $0x67, (%rsi)
incq %rsi
movq %rsi, 0x18(%rsp)
jmp 0x6e2b
leaq 0x10(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x85d0
movb $0x6f, 0xf(%rsp)
movq 0x18(%rsp), %rsi
cmpq 0x20(%rsp), %rsi
je 0x6e54
movb $0x6f, (%rsi)
incq %rsi
movq %rsi, 0x18(%rsp)
jmp 0x6e63
leaq 0x10(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x85d0
movb $0x72, 0xf(%rsp)
movq 0x18(%rsp), %rsi
cmpq 0x20(%rsp), %rsi
je 0x6e8c
movb $0x72, (%rsi)
incq %rsi
movq %rsi, 0x18(%rsp)
jmp 0x6e9b
leaq 0x10(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x85d0
movb $0x77, 0xf(%rsp)
movq 0x18(%rsp), %rsi
cmpq 0x20(%rsp), %rsi
je 0x6ec0
movb $0x77, (%rsi)
incq %rsi
movq %rsi, 0x18(%rsp)
jmp 0x6ecf
leaq 0x10(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x85d0
movb $0x62, 0xf(%rsp)
movq 0x18(%rsp), %rsi
cmpq 0x20(%rsp), %rsi
je 0x6ef1
movb $0x62, (%rsi)
incq %rsi
movq %rsi, 0x18(%rsp)
jmp 0x6f00
leaq 0x10(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x85d0
movb $0x79, 0xf(%rsp)
movq 0x18(%rsp), %rsi
cmpq 0x20(%rsp), %rsi
je 0x6f1a
movb $0x79, (%rsi)
incq %rsi
movq %rsi, 0x18(%rsp)
jmp 0x6f29
leaq 0x10(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x85d0
movb $0x79, 0xf(%rsp)
movq 0x18(%rsp), %rsi
cmpq 0x20(%rsp), %rsi
jne 0x6f15
leaq 0x10(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x85d0
jmp 0x6f49
leaq 0x10(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x85d0
movb $0x79, 0xf(%rsp)
movq 0x18(%rsp), %rsi
cmpq 0x20(%rsp), %rsi
jne 0x6f15
leaq 0x10(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x85d0
jmp 0x6f49
leaq 0x10(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x85d0
movb $0x79, 0xf(%rsp)
movq 0x18(%rsp), %rsi
cmpq 0x20(%rsp), %rsi
jne 0x6f15
leaq 0x10(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x85d0
jmp 0x6f49
leaq 0x10(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x85d0
movb $0x62, 0xf(%rsp)
movq 0x18(%rsp), %rsi
cmpq 0x20(%rsp), %rsi
jne 0x6f3e
leaq 0x10(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x85d0
jmp 0x6f49
leaq 0x10(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x85d0
movb $0x79, 0xf(%rsp)
movq 0x18(%rsp), %rsi
cmpq 0x20(%rsp), %rsi
je 0x6ff6
movb $0x79, (%rsi)
jmp 0x6f41
leaq 0x10(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x85d0
movb $0x62, 0xf(%rsp)
movq 0x18(%rsp), %rsi
cmpq 0x20(%rsp), %rsi
je 0x700a
movb $0x62, (%rsi)
incq %rsi
movq %rsi, 0x18(%rsp)
movq 0x18(%rsp), %r15
xorps %xmm0, %xmm0
movaps %xmm0, 0x30(%rsp)
movq $0x0, 0x40(%rsp)
subq 0x10(%rsp), %r15
je 0x6f79
js 0x701e
movq %r15, %rdi
callq 0x1110
movq %rax, %r12
jmp 0x6f7c
xorl %r12d, %r12d
movq %r12, 0x30(%rsp)
movq %r12, 0x38(%rsp)
leaq (%r12,%r15), %rax
movq %rax, 0x40(%rsp)
movq 0x10(%rsp), %rsi
movq 0x18(%rsp), %r14
subq %rsi, %r14
je 0x6fa9
movq %r12, %rdi
movq %r14, %rdx
callq 0x1180
addq %r12, %r14
leaq 0x30(%rsp), %rsi
movq %r14, 0x8(%rsi)
movq %rbx, %rdi
movl %ebp, %edx
callq 0x8377
testq %r12, %r12
je 0x6fcf
movq %r12, %rdi
movq %r15, %rsi
callq 0x1120
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0x6fe6
movq 0x20(%rsp), %rsi
subq %rdi, %rsi
callq 0x1120
movq %rbx, %rax
addq $0x50, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
leaq 0x10(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x85d0
jmp 0x6f49
leaq 0x10(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x85d0
jmp 0x6f49
callq 0x1050
jmp 0x7082
jmp 0x7082
jmp 0x7082
jmp 0x7082
jmp 0x7082
jmp 0x7082
jmp 0x7082
jmp 0x7082
jmp 0x7082
jmp 0x7082
jmp 0x7082
jmp 0x7082
jmp 0x7082
jmp 0x7082
jmp 0x7082
jmp 0x7082
jmp 0x7082
jmp 0x7082
jmp 0x7082
jmp 0x7082
jmp 0x7082
jmp 0x7082
jmp 0x7082
jmp 0x7082
jmp 0x7082
jmp 0x7082
jmp 0x7082
jmp 0x7082
jmp 0x7082
jmp 0x7082
jmp 0x7082
jmp 0x7082
jmp 0x7082
jmp 0x7082
jmp 0x7082
jmp 0x7082
movq %rax, %r14
testq %r12, %r12
je 0x7085
movq %r12, %rdi
movq %r15, %rsi
callq 0x1120
jmp 0x7085
jmp 0x7082
movq %rax, %r14
movq (%rbx), %rdi
testq %rdi, %rdi
je 0x7099
movq 0x10(%rbx), %rsi
subq %rdi, %rsi
callq 0x1120
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0x70b0
movq 0x20(%rsp), %rsi
subq %rdi, %rsi
callq 0x1120
movq %r14, %rdi
callq 0x1190