// File: /workspace/github_cpp_makefile_star2_O2/Rubenmp[P]Rubik/src/defineRubik.cpp
// Function: Rubik::readRubik(std::istream&)
void Rubik::readRubik(std::istream& is){
   bool success = true;
   if (is.fail())
      success = false;

   if (success){
      readSticker(corner[3].up, is);
      readSticker(edge[2].up, is);
      readSticker(corner[2].up, is);
      readSticker(edge[3].up, is);
      readSticker(center[0].center, is);
      readSticker(edge[1].up, is);
      readSticker(corner[0].up, is);
      readSticker(edge[0].up, is);
      readSticker(corner[1].up, is);

      readSticker(corner[3].right, is);
      readSticker(edge[3].down, is);
      readSticker(corner[0].left, is);
      readSticker(edge[10].down, is);
      readSticker(center[4].center, is);
      readSticker(edge[11].down, is);
      readSticker(corner[7].right, is);
      readSticker(edge[7].down, is);
      readSticker(corner[4].left, is);

      readSticker(corner[0].right, is);
      readSticker(edge[0].down, is);
      readSticker(corner[1].left, is);
      readSticker(edge[11].up, is);
      readSticker(center[1].center, is);
      readSticker(edge[8].up, is);
      readSticker(corner[4].right, is);
      readSticker(edge[4].down, is);
      readSticker(corner[5].left, is);

      readSticker(corner[1].right, is);
      readSticker(edge[1].down, is);
      readSticker(corner[2].left, is);
      readSticker(edge[8].down, is);
      readSticker(center[2].center, is);
      readSticker(edge[9].down, is);
      readSticker(corner[5].right, is);
      readSticker(edge[5].down, is);
      readSticker(corner[6].left, is);

      readSticker(corner[2].right, is);
      readSticker(edge[2].down, is);
      readSticker(corner[3].left, is);
      readSticker(edge[9].up, is);
      readSticker(center[3].center, is);
      readSticker(edge[10].up, is);
      readSticker(corner[6].right, is);
      readSticker(edge[6].down, is);
      readSticker(corner[7].left, is);

      readSticker(corner[4].up, is);
      readSticker(edge[4].up, is);
      readSticker(corner[5].up, is);
      readSticker(edge[7].up, is);
      readSticker(center[5].center, is);
      readSticker(edge[5].up, is);
      readSticker(corner[7].up, is);
      readSticker(edge[6].up, is);
      readSticker(corner[6].up, is);
   }
   else
      cout << "I can't read it.\n";

   int error = logicErrors();
   if (error == -1){
      success = false;
      cout << "There are mistakes with centers.\n";
   }
   else if (error == -2){
      success = false;
      cout << "There are mistakes with edges.\n";
   }
   else if (error == -3){
      success = false;
      cout << "There are mistakes with corners.\n";
   }
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x28, %rsp
movq %rdi, %rbx
movq (%rsi), %rax
movq -0x18(%rax), %rax
testb $0x5, 0x20(%rsi,%rax)
je 0xa5cd
movq 0x5a0c(%rip), %rdi      # 0xffc8
leaq 0x21e6(%rip), %rsi      # 0xc7a9
callq 0x21b0
jmp 0xa89f
movq %rsi, %r14
leaq 0x1e(%rbx), %r15
leaq 0x27(%rbx), %rsi
movq %r14, %rdx
callq 0x92b6
leaq 0x6(%rbx), %r12
leaq 0xa(%rbx), %rsi
movq %r14, %rdx
callq 0x92b6
leaq 0x24(%rbx), %rsi
movq %r14, %rdx
callq 0x92b6
leaq 0xc(%rbx), %rsi
movq %r14, %rdx
callq 0x92b6
movq %rbx, %rsi
movq %r14, %rdx
callq 0x92b6
leaq 0x8(%rbx), %rsi
movq %r14, %rdx
callq 0x92b6
movq %r15, %rsi
movq %r14, %rdx
callq 0x92b6
movq %r12, %rsi
movq %r14, %rdx
callq 0x92b6
leaq 0x21(%rbx), %rsi
movq %r14, %rdx
callq 0x92b6
leaq 0x29(%rbx), %rsi
movq %r14, %rdx
callq 0x92b6
leaq 0xd(%rbx), %rsi
movq %r14, %rdx
callq 0x92b6
leaq 0x1f(%rbx), %rsi
movq %r14, %rdx
callq 0x92b6
leaq 0x1a(%rbx), %rax
movq %rax, 0x10(%rsp)
leaq 0x1b(%rbx), %rsi
movq %r14, %rdx
callq 0x92b6
leaq 0x4(%rbx), %rsi
movq %r14, %rdx
callq 0x92b6
leaq 0x1c(%rbx), %r15
leaq 0x1d(%rbx), %rsi
movq %r14, %rdx
callq 0x92b6
leaq 0x33(%rbx), %rax
movq %rax, 0x20(%rsp)
leaq 0x35(%rbx), %rsi
movq %r14, %rdx
callq 0x92b6
leaq 0x14(%rbx), %rax
movq %rax, 0x18(%rsp)
leaq 0x15(%rbx), %rsi
movq %r14, %rdx
callq 0x92b6
leaq 0x2a(%rbx), %rax
movq %rax, 0x8(%rsp)
leaq 0x2b(%rbx), %rsi
movq %r14, %rdx
callq 0x92b6
leaq 0x20(%rbx), %rsi
movq %r14, %rdx
callq 0x92b6
leaq 0x7(%rbx), %rsi
movq %r14, %rdx
callq 0x92b6
leaq 0x22(%rbx), %rsi
movq %r14, %rdx
callq 0x92b6
movq %r15, %rsi
movq %r14, %rdx
callq 0x92b6
leaq 0x1(%rbx), %rsi
movq %r14, %rdx
callq 0x92b6
leaq 0x16(%rbx), %rsi
movq %r14, %rdx
callq 0x92b6
leaq 0x2c(%rbx), %rsi
movq %r14, %rdx
callq 0x92b6
leaq 0xe(%rbx), %rax
movq %rax, (%rsp)
leaq 0xf(%rbx), %rsi
movq %r14, %rdx
callq 0x92b6
leaq 0x2d(%rbx), %r12
leaq 0x2e(%rbx), %rsi
movq %r14, %rdx
callq 0x92b6
leaq 0x23(%rbx), %rsi
movq %r14, %rdx
callq 0x92b6
leaq 0x9(%rbx), %rsi
movq %r14, %rdx
callq 0x92b6
leaq 0x25(%rbx), %rsi
movq %r14, %rdx
callq 0x92b6
leaq 0x17(%rbx), %rsi
movq %r14, %rdx
callq 0x92b6
leaq 0x2(%rbx), %rsi
movq %r14, %rdx
callq 0x92b6
leaq 0x18(%rbx), %r15
leaq 0x19(%rbx), %rsi
movq %r14, %rdx
callq 0x92b6
leaq 0x2f(%rbx), %rsi
movq %r14, %rdx
callq 0x92b6
leaq 0x10(%rbx), %rbp
leaq 0x11(%rbx), %rsi
movq %r14, %rdx
callq 0x92b6
leaq 0x30(%rbx), %r13
leaq 0x31(%rbx), %rsi
movq %r14, %rdx
callq 0x92b6
leaq 0x26(%rbx), %rsi
movq %r14, %rdx
callq 0x92b6
leaq 0xb(%rbx), %rsi
movq %r14, %rdx
callq 0x92b6
leaq 0x28(%rbx), %rsi
movq %r14, %rdx
callq 0x92b6
movq %r15, %rsi
movq %r14, %rdx
callq 0x92b6
leaq 0x3(%rbx), %rsi
movq %r14, %rdx
callq 0x92b6
movq 0x10(%rsp), %rsi
movq %r14, %rdx
callq 0x92b6
leaq 0x32(%rbx), %rsi
movq %r14, %rdx
callq 0x92b6
leaq 0x12(%rbx), %r15
leaq 0x13(%rbx), %rsi
movq %r14, %rdx
callq 0x92b6
leaq 0x34(%rbx), %rsi
movq %r14, %rdx
callq 0x92b6
movq 0x8(%rsp), %rsi
movq %r14, %rdx
callq 0x92b6
movq (%rsp), %rsi
movq %r14, %rdx
callq 0x92b6
movq %r12, %rsi
movq %r14, %rdx
callq 0x92b6
movq 0x18(%rsp), %rsi
movq %r14, %rdx
callq 0x92b6
leaq 0x5(%rbx), %rsi
movq %r14, %rdx
callq 0x92b6
movq %rbp, %rsi
movq %r14, %rdx
callq 0x92b6
movq 0x20(%rsp), %rsi
movq %r14, %rdx
callq 0x92b6
movq %r15, %rsi
movq %r14, %rdx
callq 0x92b6
movq %r13, %rsi
movq %r14, %rdx
callq 0x92b6
movq %rbx, %rdi
callq 0x8884
cmpl $-0x3, %eax
jb 0xa8d7
cltq
leaq 0xc8f(%rip), %rcx       # 0xb544
movslq 0xc(%rcx,%rax,4), %rsi
addq %rcx, %rsi
movq 0x5704(%rip), %rdi      # 0xffc8
addq $0x28, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x21b0
addq $0x28, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq