// File: /workspace/github_cpp_makefile_star2_O2/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, %r13
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 0x731d
leaq 0x4733(%rip), %rsi      # 0xba2c
leaq 0x8(%rsp), %rdi
leaq 0x7(%rsp), %rdx
callq 0x2f4a
leaq 0x8(%rsp), %rsi
movq %r14, %rdi
movq %r13, %rdx
callq 0x3906
jmp 0x73bd
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 0x7397
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 0x763c
leaq 0x46c3(%rip), %rsi      # 0xba39
leaq 0x8(%rsp), %rdi
leaq 0x7(%rsp), %rdx
callq 0x2f4a
leaq 0x8(%rsp), %rsi
movq %r14, %rdi
movq %r13, %rdx
callq 0x3906
jmp 0x73bd
leaq 0x4694(%rip), %rsi      # 0xba32
leaq 0x8(%rsp), %rdi
leaq 0x7(%rsp), %rdx
callq 0x2f4a
leaq 0x8(%rsp), %rsi
movq %r14, %rdi
movq %r13, %rdx
callq 0x3906
leaq 0x8(%rsp), %rdi
callq 0x20e0
xorl %ebx, %ebx
movb $0x1, %al
leaq 0x8(%rsp), %r12
testb $0x1, %al
je 0x762d
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 0x7432
movq %r12, %rdi
leaq 0x46b6(%rip), %rsi      # 0xbacb
leaq 0x7(%rsp), %rdx
callq 0x2f4a
movq %r14, %rdi
movq %r12, %rsi
movq %r13, %rdx
callq 0x3906
jmp 0x75bc
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 0x7478
movq %r12, %rdi
leaq 0x4652(%rip), %rsi      # 0xbaad
leaq 0x7(%rsp), %rdx
callq 0x2f4a
movq %r14, %rdi
movq %r12, %rsi
movq %r13, %rdx
callq 0x3906
jmp 0x75bc
movl %edx, %r10d
xorb $0x67, %r10b
movl %r10d, %edi
orb %r11b, %dil
sete %dil
cmpb $0x6f, %al
sete %bpl
cmpb $0x6c, %sil
sete %r15b
andb %bpl, %r15b
andb %dil, %r15b
cmpb $0x1, %r15b
jne 0x74ca
movq %r12, %rdi
leaq 0x4630(%rip), %rsi      # 0xbadd
leaq 0x7(%rsp), %rdx
callq 0x2f4a
movq %r14, %rdi
movq %r12, %rsi
movq %r13, %rdx
callq 0x3906
jmp 0x75bc
movl %ecx, %ebp
xorb $0x6c, %bpl
orb %r10b, %bpl
movl %eax, %r15d
xorb $0x72, %r15b
orb %bpl, %r15b
orb %r9b, %r15b
jne 0x7509
movq %r12, %rdi
leaq 0x45cb(%rip), %rsi      # 0xbab7
leaq 0x7(%rsp), %rdx
callq 0x2f4a
movq %r14, %rdi
movq %r12, %rsi
movq %r13, %rdx
callq 0x3906
jmp 0x75bc
movl %edx, %ebp
xorb $0x6c, %bpl
orb %r11b, %bpl
movl %eax, %r11d
xorb $0x67, %r11b
orb %bpl, %r11b
orb %r9b, %r11b
jne 0x7545
movq %r12, %rdi
leaq 0x4596(%rip), %rsi      # 0xbac1
leaq 0x7(%rsp), %rdx
callq 0x2f4a
movq %r14, %rdi
movq %r12, %rsi
movq %r13, %rdx
callq 0x3906
jmp 0x75bc
movl %ecx, %r9d
xorb $0x6f, %r9b
orb %r9b, %r10b
orb %r8b, %r10b
movl %esi, %r8d
xorb $0x72, %r8b
orb %r10b, %r8b
jne 0x7582
movq %r12, %rdi
leaq 0x456d(%rip), %rsi      # 0xbad5
leaq 0x7(%rsp), %rdx
callq 0x2f4a
movq %r14, %rdi
movq %r12, %rsi
movq %r13, %rdx
callq 0x3906
jmp 0x75bc
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
jne 0x75cb
movq %r12, %rdi
leaq 0x4543(%rip), %rsi      # 0xbae7
leaq 0x7(%rsp), %rdx
callq 0x2f4a
movq %r14, %rdi
movq %r12, %rsi
movq %r13, %rdx
callq 0x3906
movq %r12, %rdi
callq 0x20e0
xorl %eax, %eax
jmp 0x73d0
cmpb $0x6f, %sil
sete %cl
cmpb $0x6c, %al
sete %al
andb %al, %dil
xorl %eax, %eax
testb %cl, %dil
jne 0x73d0
movq %r14, %rdi
movq %r13, %rsi
callq 0x3cae
incl %ebx
movb $0x1, %al
cmpl $0x5, %ebx
jne 0x73d0
leaq 0x44c7(%rip), %rsi      # 0xbacb
leaq 0x8(%rsp), %rdi
leaq 0x7(%rsp), %rdx
callq 0x2f4a
leaq 0x8(%rsp), %rsi
movq %r14, %rdi
movq %r13, %rdx
callq 0x3906
leaq 0x8(%rsp), %rdi
callq 0x20e0
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 0x7693
leaq 0x43d1(%rip), %rsi      # 0xba40
leaq 0x8(%rsp), %rdi
leaq 0x7(%rsp), %rdx
callq 0x2f4a
leaq 0x8(%rsp), %rsi
movq %r14, %rdi
movq %r13, %rdx
callq 0x3906
jmp 0x73bd
cmpb $0x79, %dl
sete %dil
cmpb $0x79, %al
setne %r8b
xorb $0x1, %r9b
orb %dil, %r8b
orb %r9b, %r8b
je 0x7709
cmpb $0x79, %dl
sete %dil
cmpb $0x79, %al
sete %r8b
xorb $0x1, %cl
orb %dil, %r8b
orb %cl, %r8b
je 0x7734
cmpb $0x79, %dl
sete %cl
cmpb $0x79, %al
setne %al
notb %sil
andb %al, %sil
testb %cl, %sil
je 0x775f
leaq 0x4370(%rip), %rsi      # 0xba55
leaq 0x8(%rsp), %rdi
leaq 0x7(%rsp), %rdx
callq 0x2f4a
leaq 0x8(%rsp), %rsi
movq %r14, %rdi
movq %r13, %rdx
callq 0x3906
jmp 0x73bd
leaq 0x4337(%rip), %rsi      # 0xba47
leaq 0x8(%rsp), %rdi
leaq 0x7(%rsp), %rdx
callq 0x2f4a
leaq 0x8(%rsp), %rsi
movq %r14, %rdi
movq %r13, %rdx
callq 0x3906
jmp 0x73bd
leaq 0x4313(%rip), %rsi      # 0xba4e
leaq 0x8(%rsp), %rdi
leaq 0x7(%rsp), %rdx
callq 0x2f4a
leaq 0x8(%rsp), %rsi
movq %r14, %rdi
movq %r13, %rdx
callq 0x3906
jmp 0x73bd
movq %r13, %rbx
xorl %ecx, %ecx
xorl %eax, %eax
cmpq $0x4, %rcx
je 0x7785
xorl %edx, %edx
cmpb $0x79, 0x6(%r14,%rcx,2)
sete %dl
cmovnel %ecx, %ebp
cmovel %ecx, %r15d
addl %edx, %eax
incq %rcx
jmp 0x7766
cmpl $0x1, %eax
je 0x77ee
cmpl $0x3, %eax
movq %rbx, %r13
jne 0x73c7
movq 0x882b(%rip), %rdi      # 0xffc8
leaq 0x42b8(%rip), %rsi      # 0xba5c
callq 0x21b0
movslq %ebp, %r15
movsbl 0x6(%r14,%r15,2), %esi
movq %rax, %rdi
callq 0x2200
leaq 0x3f62(%rip), %rsi      # 0xb723
movq %rax, %rdi
callq 0x21b0
movsbl 0x7(%r14,%r15,2), %esi
movq %rbx, %r13
movq %rax, %rdi
callq 0x2200
leaq 0x3f44(%rip), %rsi      # 0xb725
movq %rax, %rdi
callq 0x21b0
jmp 0x73c7
movq 0x87d3(%rip), %rdi      # 0xffc8
leaq 0x4260(%rip), %rsi      # 0xba5c
callq 0x21b0
movslq %r15d, %r15
movsbl 0x6(%r14,%r15,2), %esi
movq %rax, %rdi
callq 0x2200
leaq 0x3f0a(%rip), %rsi      # 0xb723
movq %rax, %rdi
callq 0x21b0
movsbl 0x7(%r14,%r15,2), %esi
movq %rax, %rdi
callq 0x2200
leaq 0x3eef(%rip), %rsi      # 0xb725
movq %rax, %rdi
callq 0x21b0
movq %rbx, %r13
jmp 0x73c7
jmp 0x787e
jmp 0x788d
jmp 0x787e
jmp 0x788d
jmp 0x787e
jmp 0x788d
jmp 0x787e
jmp 0x788d
jmp 0x787e
jmp 0x788d
jmp 0x787e
jmp 0x788d
jmp 0x788d
jmp 0x787e
jmp 0x787e
jmp 0x788d
jmp 0x787e
jmp 0x788d
jmp 0x787e
jmp 0x788d
jmp 0x788d
jmp 0x787e
jmp 0x787e
jmp 0x788d
jmp 0x788d
jmp 0x787e
jmp 0x788d
jmp 0x787e
movq %rax, %rbx
leaq 0x8(%rsp), %rdi
callq 0x20e0
jmp 0x7890
movq %rax, %rbx
movq %rbx, %rdi
callq 0x2290