// File: /workspace/github_cpp_makefile_star2_O3/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 0x8106
leaq 0x18(%rsp), %r15
movq %r15, -0x10(%r15)
leaq 0x594c(%rip), %rsi      # 0xda2c
leaq 0x5951(%rip), %rdx      # 0xda38
leaq 0x8(%rsp), %rdi
callq 0x3310
leaq 0x8(%rsp), %rsi
movq %r14, %rdi
movq %rbx, %rdx
callq 0x3d0a
jmp 0x81bc
cmpb $0x79, %dl
sete %r9b
cmpb $0x79, %al
setne %r10b
cmpb $0x79, %r8b
sete %r11b
cmpb $0x79, %dil
setne %sil
orb %r11b, %sil
orb %r10b, %r9b
orb %sil, %r9b
je 0x818b
cmpb $0x79, %dil
setne %r11b
cmpb $0x79, %dl
sete %bpl
cmpb $0x79, %r8b
sete %r9b
andb %r11b, %r9b
andb %bpl, %r10b
andb %r9b, %r10b
cmpb $0x1, %r10b
jne 0x8364
leaq 0x18(%rsp), %r15
movq %r15, -0x10(%r15)
leaq 0x58d1(%rip), %rsi      # 0xda39
leaq 0x58d0(%rip), %rdx      # 0xda3f
leaq 0x8(%rsp), %rdi
callq 0x3310
leaq 0x8(%rsp), %rsi
movq %r14, %rdi
movq %rbx, %rdx
callq 0x3d0a
jmp 0x81bc
leaq 0x18(%rsp), %r15
movq %r15, -0x10(%r15)
leaq 0x5897(%rip), %rsi      # 0xda32
leaq 0x5896(%rip), %rdx      # 0xda38
leaq 0x8(%rsp), %rdi
callq 0x3310
leaq 0x8(%rsp), %rsi
movq %r14, %rdi
movq %rbx, %rdx
callq 0x3d0a
movq 0x8(%rsp), %rdi
cmpq %r15, %rdi
je 0x81d3
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x21a0
leaq 0x18(%rsp), %r15
movl $0x5, %ebp
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
je 0x8334
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
je 0x83ca
movl %edx, %r10d
xorb $0x67, %r10b
movl %r10d, %edi
orb %r11b, %dil
sete %dil
cmpb $0x6f, %al
sete %r12b
cmpb $0x6c, %sil
sete %r13b
andb %r12b, %r13b
andb %dil, %r13b
cmpb $0x1, %r13b
je 0x83fa
movl %ecx, %r12d
xorb $0x6c, %r12b
orb %r10b, %r12b
movl %eax, %r13d
xorb $0x72, %r13b
orb %r12b, %r13b
orb %r9b, %r13b
je 0x842a
movl %edx, %r12d
xorb $0x6c, %r12b
orb %r11b, %r12b
movl %eax, %r11d
xorb $0x67, %r11b
orb %r12b, %r11b
orb %r9b, %r11b
je 0x845a
movl %ecx, %r9d
xorb $0x6f, %r9b
orb %r9b, %r10b
orb %r8b, %r10b
movl %esi, %r8d
xorb $0x72, %r8b
orb %r10b, %r8b
je 0x8487
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
je 0x84b4
cmpb $0x6f, %sil
sete %cl
cmpb $0x6c, %al
sete %al
andb %al, %dil
testb %cl, %dil
jne 0x84f6
movq %r14, %rdi
movq %rbx, %rsi
callq 0x40e8
decl %ebp
jne 0x81dd
leaq 0x8(%rsp), %rdi
movq %r15, (%rdi)
leaq 0x57b8(%rip), %rsi      # 0xdacb
leaq 0x57ba(%rip), %rdx      # 0xdad4
callq 0x3310
leaq 0x8(%rsp), %rsi
movq %r14, %rdi
movq %rbx, %rdx
callq 0x3d0a
jmp 0x84df
leaq 0x8(%rsp), %rdi
movq %r15, (%rdi)
leaq 0x5788(%rip), %rsi      # 0xdacb
leaq 0x578a(%rip), %rdx      # 0xdad4
callq 0x3310
leaq 0x8(%rsp), %rsi
movq %r14, %rdi
movq %rbx, %rdx
callq 0x3d0a
jmp 0x84df
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 0x8505
leaq 0x18(%rsp), %r15
movq %r15, -0x10(%r15)
leaq 0x569c(%rip), %rsi      # 0xda40
leaq 0x569b(%rip), %rdx      # 0xda46
leaq 0x8(%rsp), %rdi
callq 0x3310
leaq 0x8(%rsp), %rsi
movq %r14, %rdi
movq %rbx, %rdx
callq 0x3d0a
jmp 0x81bc
leaq 0x8(%rsp), %rdi
movq %r15, (%rdi)
leaq 0x56d4(%rip), %rsi      # 0xdaad
leaq 0x56d6(%rip), %rdx      # 0xdab6
callq 0x3310
leaq 0x8(%rsp), %rsi
movq %r14, %rdi
movq %rbx, %rdx
callq 0x3d0a
jmp 0x84df
leaq 0x8(%rsp), %rdi
movq %r15, (%rdi)
leaq 0x56d4(%rip), %rsi      # 0xdadd
leaq 0x56d6(%rip), %rdx      # 0xdae6
callq 0x3310
leaq 0x8(%rsp), %rsi
movq %r14, %rdi
movq %rbx, %rdx
callq 0x3d0a
jmp 0x84df
leaq 0x8(%rsp), %rdi
movq %r15, (%rdi)
leaq 0x567e(%rip), %rsi      # 0xdab7
leaq 0x5680(%rip), %rdx      # 0xdac0
callq 0x3310
leaq 0x8(%rsp), %rsi
movq %r14, %rdi
movq %rbx, %rdx
callq 0x3d0a
jmp 0x84df
leaq 0x8(%rsp), %rdi
movq %r15, (%rdi)
leaq 0x5658(%rip), %rsi      # 0xdac1
leaq 0x5664(%rip), %rdx      # 0xdad4
callq 0x3310
leaq 0x8(%rsp), %rsi
movq %r14, %rdi
movq %rbx, %rdx
callq 0x3d0a
jmp 0x84df
leaq 0x8(%rsp), %rdi
movq %r15, (%rdi)
leaq 0x563f(%rip), %rsi      # 0xdad5
leaq 0x5649(%rip), %rdx      # 0xdae6
callq 0x3310
leaq 0x8(%rsp), %rsi
movq %r14, %rdi
movq %rbx, %rdx
callq 0x3d0a
jmp 0x84df
leaq 0x8(%rsp), %rdi
movq %r15, (%rdi)
leaq 0x5624(%rip), %rsi      # 0xdae7
leaq 0x5635(%rip), %rdx      # 0xdaff
callq 0x3310
leaq 0x8(%rsp), %rsi
movq %r14, %rdi
movq %rbx, %rdx
callq 0x3d0a
movq 0x8(%rsp), %rdi
cmpq %r15, %rdi
je 0x84f6
movq 0x18(%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 %dil
cmpb $0x79, %al
setne %r8b
xorb $0x1, %r9b
orb %dil, %r8b
orb %r9b, %r8b
je 0x858a
cmpb $0x79, %dl
sete %dil
cmpb $0x79, %al
sete %r8b
xorb $0x1, %cl
orb %dil, %r8b
orb %cl, %r8b
je 0x85c0
cmpb $0x79, %dl
sete %cl
cmpb $0x79, %al
setne %al
notb %sil
andb %al, %sil
testb %cl, %sil
je 0x85f6
leaq 0x18(%rsp), %r15
movq %r15, -0x10(%r15)
leaq 0x54f1(%rip), %rsi      # 0xda55
leaq 0x54f0(%rip), %rdx      # 0xda5b
leaq 0x8(%rsp), %rdi
callq 0x3310
leaq 0x8(%rsp), %rsi
movq %r14, %rdi
movq %rbx, %rdx
callq 0x3d0a
jmp 0x81bc
leaq 0x18(%rsp), %r15
movq %r15, -0x10(%r15)
leaq 0x54ad(%rip), %rsi      # 0xda47
leaq 0x54ac(%rip), %rdx      # 0xda4d
leaq 0x8(%rsp), %rdi
callq 0x3310
leaq 0x8(%rsp), %rsi
movq %r14, %rdi
movq %rbx, %rdx
callq 0x3d0a
jmp 0x81bc
leaq 0x18(%rsp), %r15
movq %r15, -0x10(%r15)
leaq 0x547e(%rip), %rsi      # 0xda4e
leaq 0x547d(%rip), %rdx      # 0xda54
leaq 0x8(%rsp), %rdi
callq 0x3310
leaq 0x8(%rsp), %rsi
movq %r14, %rdi
movq %rbx, %rdx
callq 0x3d0a
jmp 0x81bc
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 0x85fa
cmpl $0x1, %eax
je 0x8645
cmpl $0x3, %eax
jne 0x81d3
movq 0x999c(%rip), %r15      # 0x11fc8
leaq 0x5429(%rip), %rsi      # 0xda5c
movl $0x50, %edx
movq %r15, %rdi
callq 0x21d0
movslq %ebp, %r13
jmp 0x8663
movq 0x997c(%rip), %r15      # 0x11fc8
leaq 0x5409(%rip), %rsi      # 0xda5c
movl $0x50, %edx
movq %r15, %rdi
callq 0x21d0
movslq %r12d, %r13
movb 0x6(%r14,%r13,2), %al
leaq 0x8(%rsp), %r12
movb %al, (%r12)
movl $0x1, %edx
movq %r15, %rdi
movq %r12, %rsi
callq 0x21d0
movq %rax, %r15
leaq 0x5098(%rip), %rsi      # 0xd723
movl $0x1, %edx
movq %rax, %rdi
callq 0x21d0
movb 0x7(%r14,%r13,2), %al
movb %al, (%r12)
leaq 0x8(%rsp), %rsi
movl $0x1, %edx
movq %r15, %rdi
callq 0x21d0
leaq 0x506b(%rip), %rsi      # 0xd725
movl $0x3, %edx
movq %rax, %rdi
callq 0x21d0
jmp 0x81d3
jmp 0x8704
jmp 0x8720
jmp 0x8704
jmp 0x8720
jmp 0x8704
jmp 0x8720
jmp 0x8704
jmp 0x8720
jmp 0x8704
jmp 0x8720
jmp 0x8704
jmp 0x8720
jmp 0x8704
jmp 0x8720
jmp 0x8704
jmp 0x8720
jmp 0x8704
jmp 0x8720
jmp 0x8704
jmp 0x8720
jmp 0x8704
jmp 0x8720
jmp 0x8704
jmp 0x8720
jmp 0x8704
jmp 0x8720
jmp 0x8704
jmp 0x8720
movq %rax, %rbx
movq 0x8(%rsp), %rdi
cmpq %r15, %rdi
je 0x8723
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x21a0
jmp 0x8723
movq %rax, %rbx
movq %rbx, %rdi
callq 0x2280
nop