// File: /workspace/github_cpp_makefile_star2_O1/Rubenmp[P]Rubik/src/defineRubik.cpp
// Function: Rubik::yellowCross(std::vector<char, std::allocator<char>>&)
void Rubik::yellowCross(vector<char>& solution){
	bool repeat;
   if ((edge[4].down == 'y') && (edge[5].down == 'y') &&
       (edge[6].down == 'y') && (edge[7].down == 'y')) 	// LDBdbl && frdRDF Yellow center
	   sequence("LDBdblfrdRDF", solution);
   else if ((edge[4].down == 'y') && (edge[5].down != 'y') &&
	    (edge[6].down == 'y') && (edge[7].down != 'y')) 	// frdRDF Horizontal line
	   sequence("frdRDF", solution);
   else if ((edge[4].down != 'y') && (edge[5].down == 'y') &&
	    (edge[6].down != 'y') && (edge[7].down == 'y')) 	// lfdFDL  Vertical line
	   sequence("lfdFDL", solution);

   else if ((edge[4].down != 'y') && (edge[5].down != 'y') &&
	    (edge[6].down == 'y') && (edge[7].down == 'y')) 	// LDBdbl 'L' case
      sequence("LDBdbl", solution);

   else if ((edge[4].down != 'y') && (edge[5].down == 'y') &&
	    (edge[6].down == 'y') && (edge[7].down != 'y')) 	// BDRdrb '_|' case
      sequence("BDRdrb", solution);
   else if ((edge[4].down == 'y') && (edge[5].down == 'y') &&
	    (edge[6].down != 'y') && (edge[7].down != 'y')) 	// RDFdfr '¬' case
      sequence("RDFdfr", solution);
   else if ((edge[4].down == 'y') && (edge[5].down != 'y') &&
	    (edge[6].down != 'y') && (edge[7].down == 'y')) 	// FDLdlf ' ¬' reverse case
      sequence("FDLdlf", solution);
   else{
      int yellows = 0;
      int whistleBlower1, whistleBlower2;
      for (int i=0; i < 4; ++i){
      	if (edge[i].up == 'y'){
      	  yellows++;
      	  whistleBlower2 = i;
      	}
      	else
      	  whistleBlower1 = i;
      }
      if (yellows == 3)
	      cout << "This Rubik's cube has no solution, you neew change the orientation of the edge (" << edge[whistleBlower1].up << "," << edge[whistleBlower1].down << ").\n";
      else if (yellows == 1)
	      cout << "This Rubik's cube has no solution, you neew change the orientation of the edge (" << edge[whistleBlower2].up << "," << edge[whistleBlower2].down << ").\n";
   }


	// Orientate final edgess:
	repeat = true;
	int contador = 0;
   while(repeat){
      if ((edge[4].down == 'r') && (edge[5].down == 'g') &&
          (edge[6].down == 'l') && (edge[7].down == 'o')){ // bdBdbD2Bd '¬'
   	   sequence("bdBdbDDBd", solution);
         repeat = false;
      }
      else if ((edge[4].down == 'o') && (edge[5].down == 'r') &&
   	    (edge[6].down == 'l') && (edge[7].down == 'g')){ 	// rdRdrD2Rd '¬' reverse
   	   sequence("rdRdrDDRd", solution);
   	   repeat = false;
      }
      else if ((edge[4].down == 'g') && (edge[5].down == 'r') &&
   	    (edge[6].down == 'o') && (edge[7].down == 'l')){ // fdFdfD2Fd 'L'
         sequence("fdFdfDDFd", solution);
   	   repeat = false;
      }
      else if ((edge[4].down == 'g') && (edge[5].down == 'l') &&
   	    (edge[6].down == 'r') && (edge[7].down == 'o')){ 	// ldLdlD2Ld '_|'
         sequence("ldLdlDDLd", solution);
   	   repeat = false;
      }
      else if ((edge[4].down == 'l') && (edge[5].down == 'r') &&
   	    (edge[6].down == 'g') && (edge[7].down == 'o')){ 	// rdRdrD2RD2 && bdBdbD2Bd '--'
         sequence("rdRdrDDRDDbdBdbDDBd", solution);
   	   repeat = false;
      }
      else if ((edge[4].down == 'g') && (edge[5].down == 'o') &&
   	    (edge[6].down == 'l') && (edge[7].down == 'r')){ 	// rdRdrD2R && fdFdfD2Fd '|'
   	   sequence("rdRdrDDRfdFdfDDFd", solution);
   	   repeat = false;
      }
      else if ((edge[4].down == 'y') && (edge[5].down == 'y') &&
   	    (edge[6].down == 'y') && (edge[7].down == 'y')){ 	//
         sequence("RldRldRldRldRldRldRldRld", solution);
   	   repeat = false;
      }
      else if ((edge[4].down == 'g') && (edge[5].down == 'r') &&
   	    (edge[6].down == 'l') && (edge[7].down == 'o')) 	//
   	   repeat = false;
      else {
      	D(solution);
      	++contador;
      	if(contador == 5){ // bdBdbD2Bd
      	   contador = 0;
            sequence("bdBdbDDBd", solution);
            return;
         }
      }
  } // endwhile
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x28, %rsp
movq %rsi, %rbx
movq %rdi, %r14
movb 0xf(%rdi), %dil
movb 0x11(%r14), %r8b
movl %edi, %eax
xorb $0x79, %al
movl %r8d, %ecx
xorb $0x79, %cl
orb %al, %cl
sete %cl
movb 0x13(%r14), %al
cmpb $0x79, %al
sete %sil
movb 0x15(%r14), %dl
cmpb $0x79, %dl
sete %r9b
andb %sil, %r9b
andb %cl, %r9b
cmpb $0x1, %r9b
jne 0x7fb4
leaq 0x10(%rsp), %r15
movq %r15, -0x10(%r15)
leaq 0x5a76(%rip), %rsi      # 0xda08
leaq 0x5a7b(%rip), %rdx      # 0xda14
movq %rsp, %rdi
callq 0x332e
movq %rsp, %rsi
movq %r14, %rdi
movq %rbx, %rdx
callq 0x3ba4
jmp 0x8068
cmpb $0x79, %dl
sete %r9b
cmpb $0x79, %al
setne %r10b
cmpb $0x79, %r8b
sete %r11b
cmpb $0x79, %dil
setne %sil
orb %r11b, %sil
orb %r9b, %r10b
orb %sil, %r10b
je 0x803b
cmpb $0x79, %dil
setne %r10b
cmpb $0x79, %dl
sete %r11b
cmpb $0x79, %al
setne %bpl
cmpb $0x79, %r8b
sete %r9b
andb %r10b, %r9b
andb %r11b, %bpl
andb %r9b, %bpl
cmpb $0x1, %bpl
jne 0x83ad
leaq 0x10(%rsp), %r15
movq %r15, -0x10(%r15)
leaq 0x59f9(%rip), %rsi      # 0xda15
leaq 0x59f8(%rip), %rdx      # 0xda1b
movq %rsp, %rdi
callq 0x332e
movq %rsp, %rsi
movq %r14, %rdi
movq %rbx, %rdx
callq 0x3ba4
jmp 0x8068
leaq 0x10(%rsp), %r15
movq %r15, -0x10(%r15)
leaq 0x59c3(%rip), %rsi      # 0xda0e
leaq 0x59c2(%rip), %rdx      # 0xda14
movq %rsp, %rdi
callq 0x332e
movq %rsp, %rsi
movq %r14, %rdi
movq %rbx, %rdx
callq 0x3ba4
movq (%rsp), %rdi
cmpq %r15, %rdi
je 0x807e
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x21a0
leaq 0x10(%rsp), %r12
movb $0x1, %r15b
movl $0x0, 0x24(%rsp)
leaq 0x5a12(%rip), %r13      # 0xdaa7
movq %rsp, %rbp
movb 0xf(%r14), %dl
movb 0x11(%r14), %cl
movl %edx, %eax
xorb $0x72, %al
movl %ecx, %edi
xorb $0x67, %dil
orb %al, %dil
movb 0x13(%r14), %al
movl %eax, %r8d
xorb $0x6c, %r8b
orb %r8b, %dil
movb 0x15(%r14), %sil
movl %esi, %r9d
xorb $0x6f, %r9b
orb %r9b, %dil
jne 0x80f1
movq %r12, (%rsp)
movq %rbp, %rdi
movq %r13, %rsi
leaq 0x59d4(%rip), %rdx      # 0xdab0
callq 0x332e
movq %r14, %rdi
movq %rbp, %rsi
movq %rbx, %rdx
callq 0x3ba4
jmp 0x8138
movl %edx, %edi
xorb $0x6f, %dil
movl %ecx, %r11d
xorb $0x72, %r11b
orb %r11b, %dil
orb %r8b, %dil
movl %esi, %r10d
xorb $0x67, %r10b
orb %dil, %r10b
jne 0x8160
movq %r12, (%rsp)
movq %rbp, %rdi
leaq 0x596b(%rip), %rsi      # 0xda89
leaq 0x596d(%rip), %rdx      # 0xda92
callq 0x332e
movq %r14, %rdi
movq %rbp, %rsi
movq %rbx, %rdx
callq 0x3ba4
movq (%rsp), %rdi
cmpq %r12, %rdi
je 0x814e
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x21a0
xorl %r15d, %r15d
testb $0x1, %r15b
jne 0x8098
jmp 0x839e
movq %r12, %r13
movq %rbx, %rbp
movl %edx, %r10d
xorb $0x67, %r10b
movl %r10d, %edi
orb %r11b, %dil
sete %dil
cmpb $0x6f, %al
sete %r12b
cmpb $0x6c, %sil
sete %bl
andb %r12b, %bl
andb %dil, %bl
cmpb $0x1, %bl
jne 0x81c9
movq %r13, %r12
movq %r13, (%rsp)
movq %rsp, %rbx
movq %rbx, %rdi
leaq 0x5916(%rip), %rsi      # 0xdab9
leaq 0x5918(%rip), %rdx      # 0xdac2
callq 0x332e
movq %r14, %rdi
movq %rbx, %rsi
movq %rbp, %rbx
movq %rbp, %rdx
callq 0x3ba4
leaq 0x58e0(%rip), %r13      # 0xdaa7
jmp 0x8218
movl %ecx, %ebx
xorb $0x6c, %bl
orb %r10b, %bl
movl %eax, %r12d
xorb $0x72, %r12b
orb %bl, %r12b
orb %r9b, %r12b
jne 0x8239
movq %r13, %r12
movq %r13, (%rsp)
movq %rsp, %rbx
movq %rbx, %rdi
leaq 0x589f(%rip), %rsi      # 0xda93
leaq 0x58a1(%rip), %rdx      # 0xda9c
callq 0x332e
movq %r14, %rdi
movq %rbx, %rsi
movq %rbp, %rbx
movq %rbp, %rdx
callq 0x3ba4
leaq 0x588f(%rip), %r13      # 0xdaa7
movq (%rsp), %rdi
cmpq %r12, %rdi
je 0x822e
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x21a0
xorl %r15d, %r15d
movq %rsp, %rbp
jmp 0x8151
movl %edx, %ebx
xorb $0x6c, %bl
orb %r11b, %bl
movl %eax, %r11d
xorb $0x67, %r11b
orb %bl, %r11b
orb %r9b, %r11b
movq %r13, %r12
jne 0x8290
movq %r12, (%rsp)
movq %rsp, %r15
movq %r15, %rdi
leaq 0x5839(%rip), %rsi      # 0xda9d
leaq 0x5845(%rip), %rdx      # 0xdab0
callq 0x332e
leaq 0x5830(%rip), %r13      # 0xdaa7
movq %rbp, %rbx
movq %r14, %rdi
movq %r15, %rsi
movq %rbp, %rdx
callq 0x3ba4
movq %r15, %rbp
jmp 0x8138
movl %ecx, %r9d
xorb $0x6f, %r9b
orb %r9b, %r10b
orb %r8b, %r10b
movl %esi, %r8d
xorb $0x72, %r8b
orb %r10b, %r8b
movq %rbp, %rbx
leaq 0x57f6(%rip), %r13      # 0xdaa7
jne 0x82e3
movq %r12, (%rsp)
movq %rsp, %rbp
movq %rbp, %rdi
leaq 0x57ed(%rip), %rsi      # 0xdab1
leaq 0x57f7(%rip), %rdx      # 0xdac2
callq 0x332e
movq %r14, %rdi
movq %rbp, %rsi
movq %rbx, %rdx
callq 0x3ba4
jmp 0x8138
xorb $0x79, %dl
xorb $0x79, %cl
orb %dl, %cl
movl %eax, %edx
xorb $0x79, %dl
orb %cl, %dl
movl %esi, %ecx
xorb $0x79, %cl
orb %dl, %cl
movq %rsp, %rbp
jne 0x832b
movq %r12, (%rsp)
movq %rbp, %rdi
leaq 0x57b7(%rip), %rsi      # 0xdac3
leaq 0x57c8(%rip), %rdx      # 0xdadb
callq 0x332e
movq %r14, %rdi
movq %rbp, %rsi
movq %rbx, %rdx
callq 0x3ba4
jmp 0x8138
cmpb $0x6f, %sil
sete %cl
cmpb $0x6c, %al
sete %al
andb %al, %dil
testb %cl, %dil
jne 0x814e
movq %r14, %rdi
movq %rbx, %rsi
callq 0x3f82
movl 0x24(%rsp), %eax
incl %eax
movl %eax, 0x24(%rsp)
cmpl $0x5, %eax
jne 0x8151
movq %rsp, %rdi
movq %r12, (%rdi)
leaq 0x5739(%rip), %rsi      # 0xdaa7
leaq 0x573b(%rip), %rdx      # 0xdab0
callq 0x332e
movq %rsp, %rsi
movq %r14, %rdi
movq %rbx, %rdx
callq 0x3ba4
movq (%rsp), %rdi
cmpq %r12, %rdi
je 0x839e
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x21a0
addq $0x28, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
cmpb $0x79, %dl
sete %r10b
cmpb $0x79, %al
sete %r11b
cmpb $0x79, %r8b
setne %r8b
cmpb $0x79, %dil
setne %dil
andb %r8b, %dil
andb %r10b, %r11b
andb %dil, %r11b
cmpb $0x1, %r11b
jne 0x840b
leaq 0x10(%rsp), %r15
movq %r15, -0x10(%r15)
leaq 0x5633(%rip), %rsi      # 0xda1c
leaq 0x5632(%rip), %rdx      # 0xda22
movq %rsp, %rdi
callq 0x332e
movq %rsp, %rsi
movq %r14, %rdi
movq %rbx, %rdx
callq 0x3ba4
jmp 0x8068
cmpb $0x79, %dl
sete %dil
cmpb $0x79, %al
setne %r8b
xorb $0x1, %r9b
orb %dil, %r8b
orb %r9b, %r8b
je 0x8488
cmpb $0x79, %dl
sete %dil
cmpb $0x79, %al
sete %r8b
xorb $0x1, %cl
orb %dil, %r8b
orb %cl, %r8b
je 0x84ba
cmpb $0x79, %dl
sete %cl
cmpb $0x79, %al
setne %al
notb %sil
andb %al, %sil
testb %cl, %sil
je 0x84ec
leaq 0x10(%rsp), %r15
movq %r15, -0x10(%r15)
leaq 0x55cb(%rip), %rsi      # 0xda31
leaq 0x55ca(%rip), %rdx      # 0xda37
movq %rsp, %rdi
callq 0x332e
movq %rsp, %rsi
movq %r14, %rdi
movq %rbx, %rdx
callq 0x3ba4
jmp 0x8068
leaq 0x10(%rsp), %r15
movq %r15, -0x10(%r15)
leaq 0x558b(%rip), %rsi      # 0xda23
leaq 0x558a(%rip), %rdx      # 0xda29
movq %rsp, %rdi
callq 0x332e
movq %rsp, %rsi
movq %r14, %rdi
movq %rbx, %rdx
callq 0x3ba4
jmp 0x8068
leaq 0x10(%rsp), %r15
movq %r15, -0x10(%r15)
leaq 0x5560(%rip), %rsi      # 0xda2a
leaq 0x555f(%rip), %rdx      # 0xda30
movq %rsp, %rdi
callq 0x332e
movq %rsp, %rsi
movq %r14, %rdi
movq %rbx, %rdx
callq 0x3ba4
jmp 0x8068
xorl %ecx, %ecx
xorl %eax, %eax
xorl %edx, %edx
cmpb $0x79, 0x6(%r14,%rcx,2)
cmovnel %ecx, %ebp
cmovel %ecx, %r12d
sete %dl
addl %edx, %eax
incq %rcx
cmpq $0x4, %rcx
jne 0x84f0
cmpl $0x1, %eax
je 0x853b
cmpl $0x3, %eax
jne 0x807e
movq 0x9aa6(%rip), %r15      # 0x11fc8
leaq 0x550f(%rip), %rsi      # 0xda38
movl $0x50, %edx
movq %r15, %rdi
callq 0x21d0
movslq %ebp, %r13
jmp 0x8559
movq 0x9a86(%rip), %r15      # 0x11fc8
leaq 0x54ef(%rip), %rsi      # 0xda38
movl $0x50, %edx
movq %r15, %rdi
callq 0x21d0
movslq %r12d, %r13
movb 0x6(%r14,%r13,2), %al
movq %rsp, %r12
movb %al, (%r12)
movl $0x1, %edx
movq %r15, %rdi
movq %r12, %rsi
callq 0x21d0
movq %rax, %r15
leaq 0x5180(%rip), %rsi      # 0xd6ff
movl $0x1, %edx
movq %rax, %rdi
callq 0x21d0
movb 0x7(%r14,%r13,2), %al
movb %al, (%r12)
movq %rsp, %rsi
movl $0x1, %edx
movq %r15, %rdi
callq 0x21d0
leaq 0x5155(%rip), %rsi      # 0xd701
movl $0x3, %edx
movq %rax, %rdi
callq 0x21d0
jmp 0x807e
jmp 0x8607
jmp 0x8602
jmp 0x85e2
jmp 0x8602
jmp 0x85e2
jmp 0x8602
jmp 0x85e2
jmp 0x8602
jmp 0x85e2
jmp 0x8602
jmp 0x85e2
jmp 0x8602
jmp 0x8607
jmp 0x8602
jmp 0x85e2
jmp 0x8602
jmp 0x8607
jmp 0x8602
movq %rax, %rbx
movq (%rsp), %rdi
cmpq %r15, %rdi
jne 0x8613
jmp 0x8620
jmp 0x8602
jmp 0x8607
jmp 0x8602
jmp 0x8607
jmp 0x8602
jmp 0x8607
jmp 0x8602
jmp 0x8607
jmp 0x8602
movq %rax, %rbx
jmp 0x8620
movq %rax, %rbx
movq (%rsp), %rdi
cmpq %r12, %rdi
je 0x8620
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x21a0
movq %rbx, %rdi
callq 0x2280