// File: /workspace/github_cpp_makefile_star2_O1/niekh1234[P]nnchesslib/board.cpp
// Function: nnchesslib::ChessBoard::print()
void ChessBoard::print()
{
    std::string output;
    std::string finalOutput;

    BitBoard occupied = boardinfo.whitePieces.board | boardinfo.blackPieces.board;
    for(int i = 0; i <= 63; i++)
    {
        if(occupied.get(i))
        {
            if(BitBoard(boardinfo.pawns.board & boardinfo.whitePieces.board).get(i)) output+=" P ";
            if(BitBoard(boardinfo.knights.board & boardinfo.whitePieces.board).get(i)) output+=" N ";
            if(BitBoard(boardinfo.bishops.board & boardinfo.whitePieces.board).get(i)) output+=" B ";
            if(BitBoard(boardinfo.rooks.board & boardinfo.whitePieces.board).get(i)) output+=" R ";
            if(BitBoard(boardinfo.queens.board & boardinfo.whitePieces.board).get(i)) output+=" Q ";
            if(BitBoard(boardinfo.kings.board & boardinfo.whitePieces.board).get(i)) output+=" K ";
            if(BitBoard(boardinfo.pawns.board & boardinfo.blackPieces.board).get(i)) output+=" p ";
            if(BitBoard(boardinfo.knights.board & boardinfo.blackPieces.board).get(i)) output+=" n ";
            if(BitBoard(boardinfo.bishops.board & boardinfo.blackPieces.board).get(i)) output+=" b ";
            if(BitBoard(boardinfo.rooks.board & boardinfo.blackPieces.board).get(i)) output+=" r ";
            if(BitBoard(boardinfo.queens.board & boardinfo.blackPieces.board).get(i)) output+=" q ";
            if(BitBoard(boardinfo.kings.board & boardinfo.blackPieces.board).get(i)) output+=" k ";
        } 
        else
        {
            output+=" . ";
        }
        if((i + 1) % 8 == 0){
            finalOutput.insert(0, output + "\n");
            output = "";
        }
    }

    finalOutput.insert(0, " -  -  -  -  -  -  -  - \n");
    finalOutput+=" -  -  -  -  -  -  -  - ";
    std::cout<<finalOutput<<std::endl;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x68, %rsp
movq %rdi, %rbx
leaq -0x78(%rbp), %rax
movq %rax, -0x10(%rax)
xorl %r14d, %r14d
movq %r14, -0x8(%rax)
movb %r14b, (%rax)
leaq -0x58(%rbp), %rax
movq %rax, -0x10(%rax)
movq %r14, -0x8(%rax)
movb %r14b, (%rax)
movq 0x8(%rdi), %rsi
orq (%rdi), %rsi
leaq -0x90(%rbp), %rdi
callq 0x334a
leaq 0x4dbd(%rip), %r15      # 0x9752
leaq -0x88(%rbp), %r12
leaq -0x48(%rbp), %r13
leaq -0x90(%rbp), %rdi
movl %r14d, %esi
callq 0x33bc
movq %r15, %rsi
testl %eax, %eax
je 0x4bd4
movq (%rbx), %rsi
andq 0x10(%rbx), %rsi
movq %r13, %rdi
callq 0x334a
movq %r13, %rdi
movl %r14d, %esi
callq 0x33bc
testl %eax, %eax
je 0x49e7
movq %r12, %rdi
leaq 0x4d40(%rip), %rsi      # 0x9722
callq 0x22a0
movq (%rbx), %rsi
andq 0x18(%rbx), %rsi
movq %r13, %rdi
callq 0x334a
movq %r13, %rdi
movl %r14d, %esi
callq 0x33bc
testl %eax, %eax
je 0x4a14
movq %r12, %rdi
leaq 0x4d17(%rip), %rsi      # 0x9726
callq 0x22a0
movq (%rbx), %rsi
andq 0x20(%rbx), %rsi
movq %r13, %rdi
callq 0x334a
movq %r13, %rdi
movl %r14d, %esi
callq 0x33bc
testl %eax, %eax
je 0x4a41
movq %r12, %rdi
leaq 0x4cee(%rip), %rsi      # 0x972a
callq 0x22a0
movq (%rbx), %rsi
andq 0x28(%rbx), %rsi
movq %r13, %rdi
callq 0x334a
movq %r13, %rdi
movl %r14d, %esi
callq 0x33bc
testl %eax, %eax
je 0x4a6e
movq %r12, %rdi
leaq 0x4cc5(%rip), %rsi      # 0x972e
callq 0x22a0
movq (%rbx), %rsi
andq 0x30(%rbx), %rsi
movq %r13, %rdi
callq 0x334a
movq %r13, %rdi
movl %r14d, %esi
callq 0x33bc
testl %eax, %eax
je 0x4a9b
movq %r12, %rdi
leaq 0x4c9c(%rip), %rsi      # 0x9732
callq 0x22a0
movq (%rbx), %rsi
andq 0x38(%rbx), %rsi
movq %r13, %rdi
callq 0x334a
movq %r13, %rdi
movl %r14d, %esi
callq 0x33bc
testl %eax, %eax
je 0x4ac8
movq %r12, %rdi
leaq 0x4c73(%rip), %rsi      # 0x9736
callq 0x22a0
movq 0x8(%rbx), %rsi
andq 0x10(%rbx), %rsi
movq %r13, %rdi
callq 0x334a
movq %r13, %rdi
movl %r14d, %esi
callq 0x33bc
testl %eax, %eax
je 0x4af6
movq %r12, %rdi
leaq 0x4c49(%rip), %rsi      # 0x973a
callq 0x22a0
movq 0x8(%rbx), %rsi
andq 0x18(%rbx), %rsi
movq %r13, %rdi
callq 0x334a
movq %r13, %rdi
movl %r14d, %esi
callq 0x33bc
testl %eax, %eax
je 0x4b24
movq %r12, %rdi
leaq 0x4c1f(%rip), %rsi      # 0x973e
callq 0x22a0
movq 0x8(%rbx), %rsi
andq 0x20(%rbx), %rsi
movq %r13, %rdi
callq 0x334a
movq %r13, %rdi
movl %r14d, %esi
callq 0x33bc
testl %eax, %eax
je 0x4b52
movq %r12, %rdi
leaq 0x4bf5(%rip), %rsi      # 0x9742
callq 0x22a0
movq 0x8(%rbx), %rsi
andq 0x28(%rbx), %rsi
movq %r13, %rdi
callq 0x334a
movq %r13, %rdi
movl %r14d, %esi
callq 0x33bc
testl %eax, %eax
je 0x4b80
movq %r12, %rdi
leaq 0x4bcb(%rip), %rsi      # 0x9746
callq 0x22a0
movq 0x8(%rbx), %rsi
andq 0x30(%rbx), %rsi
movq %r13, %rdi
callq 0x334a
movq %r13, %rdi
movl %r14d, %esi
callq 0x33bc
testl %eax, %eax
je 0x4bae
movq %r12, %rdi
leaq 0x4ba1(%rip), %rsi      # 0x974a
callq 0x22a0
movq 0x8(%rbx), %rsi
andq 0x38(%rbx), %rsi
movq %r13, %rdi
callq 0x334a
movq %r13, %rdi
movl %r14d, %esi
callq 0x33bc
leaq 0x4b7e(%rip), %rsi      # 0x974e
testl %eax, %eax
je 0x4bdc
movq %r12, %rdi
callq 0x22a0
incl %r14d
testb $0x7, %r14b
jne 0x4c58
leaq -0x38(%rbp), %rax
movq %rax, -0x48(%rbp)
movq -0x88(%rbp), %rsi
movq -0x80(%rbp), %rdx
addq %rsi, %rdx
movq %r13, %rdi
callq 0x6722
movq %r13, %rdi
leaq 0x4b61(%rip), %rsi      # 0x976e
callq 0x22a0
movq -0x48(%rbp), %rcx
movq -0x40(%rbp), %r8
leaq -0x68(%rbp), %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x2170
movq -0x48(%rbp), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0x4c40
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x2150
movq -0x80(%rbp), %rdx
movq %r12, %rdi
xorl %esi, %esi
leaq 0x4b1f(%rip), %rcx      # 0x976f
xorl %r8d, %r8d
callq 0x2210
cmpl $0x40, %r14d
jne 0x49a0
leaq 0x4aed(%rip), %rcx      # 0x9756
leaq -0x68(%rbp), %rdi
movl $0x19, %r8d
xorl %esi, %esi
xorl %edx, %edx
callq 0x2170
leaq 0x4aed(%rip), %rsi      # 0x9770
leaq -0x68(%rbp), %rdi
callq 0x22a0
movq -0x68(%rbp), %rsi
movq -0x60(%rbp), %rdx
movq 0x833d(%rip), %rdi      # 0xcfd8
callq 0x2180
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x2130
movsbl %al, %esi
movq %rbx, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x20e0
movq -0x68(%rbp), %rdi
leaq -0x58(%rbp), %rax
cmpq %rax, %rdi
je 0x4ce3
movq -0x58(%rbp), %rsi
incq %rsi
callq 0x2150
movq -0x88(%rbp), %rdi
leaq -0x78(%rbp), %rax
cmpq %rax, %rdi
je 0x4cff
movq -0x78(%rbp), %rsi
incq %rsi
callq 0x2150
addq $0x68, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x4d4a
jmp 0x4d12
movq %rax, %rbx
movq -0x48(%rbp), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0x4d4d
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x2150
jmp 0x4d4d
jmp 0x4d4a
jmp 0x4d4a
jmp 0x4d4a
jmp 0x4d4a
jmp 0x4d4a
jmp 0x4d4a
jmp 0x4d4a
jmp 0x4d4a
jmp 0x4d4a
jmp 0x4d4a
jmp 0x4d4a
jmp 0x4d4a
jmp 0x4d4a
movq %rax, %rbx
movq -0x68(%rbp), %rdi
leaq -0x58(%rbp), %rax
cmpq %rax, %rdi
je 0x4d66
movq -0x58(%rbp), %rsi
incq %rsi
callq 0x2150
movq -0x88(%rbp), %rdi
leaq -0x78(%rbp), %rax
cmpq %rax, %rdi
je 0x4d82
movq -0x78(%rbp), %rsi
incq %rsi
callq 0x2150
movq %rbx, %rdi
callq 0x2270