// File: /workspace/github_cpp_makefile_star2_O3/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 0x3386
leaq 0x4da9(%rip), %r15      # 0x9752
leaq -0x88(%rbp), %r12
leaq -0x48(%rbp), %r13
leaq -0x90(%rbp), %rdi
movl %r14d, %esi
callq 0x33f8
movq %r15, %rsi
testl %eax, %eax
je 0x4be8
movq (%rbx), %rsi
andq 0x10(%rbx), %rsi
movq %r13, %rdi
callq 0x3386
movq %r13, %rdi
movl %r14d, %esi
callq 0x33f8
testl %eax, %eax
je 0x49fb
movq %r12, %rdi
leaq 0x4d2c(%rip), %rsi      # 0x9722
callq 0x22a0
movq (%rbx), %rsi
andq 0x18(%rbx), %rsi
movq %r13, %rdi
callq 0x3386
movq %r13, %rdi
movl %r14d, %esi
callq 0x33f8
testl %eax, %eax
je 0x4a28
movq %r12, %rdi
leaq 0x4d03(%rip), %rsi      # 0x9726
callq 0x22a0
movq (%rbx), %rsi
andq 0x20(%rbx), %rsi
movq %r13, %rdi
callq 0x3386
movq %r13, %rdi
movl %r14d, %esi
callq 0x33f8
testl %eax, %eax
je 0x4a55
movq %r12, %rdi
leaq 0x4cda(%rip), %rsi      # 0x972a
callq 0x22a0
movq (%rbx), %rsi
andq 0x28(%rbx), %rsi
movq %r13, %rdi
callq 0x3386
movq %r13, %rdi
movl %r14d, %esi
callq 0x33f8
testl %eax, %eax
je 0x4a82
movq %r12, %rdi
leaq 0x4cb1(%rip), %rsi      # 0x972e
callq 0x22a0
movq (%rbx), %rsi
andq 0x30(%rbx), %rsi
movq %r13, %rdi
callq 0x3386
movq %r13, %rdi
movl %r14d, %esi
callq 0x33f8
testl %eax, %eax
je 0x4aaf
movq %r12, %rdi
leaq 0x4c88(%rip), %rsi      # 0x9732
callq 0x22a0
movq (%rbx), %rsi
andq 0x38(%rbx), %rsi
movq %r13, %rdi
callq 0x3386
movq %r13, %rdi
movl %r14d, %esi
callq 0x33f8
testl %eax, %eax
je 0x4adc
movq %r12, %rdi
leaq 0x4c5f(%rip), %rsi      # 0x9736
callq 0x22a0
movq 0x8(%rbx), %rsi
andq 0x10(%rbx), %rsi
movq %r13, %rdi
callq 0x3386
movq %r13, %rdi
movl %r14d, %esi
callq 0x33f8
testl %eax, %eax
je 0x4b0a
movq %r12, %rdi
leaq 0x4c35(%rip), %rsi      # 0x973a
callq 0x22a0
movq 0x8(%rbx), %rsi
andq 0x18(%rbx), %rsi
movq %r13, %rdi
callq 0x3386
movq %r13, %rdi
movl %r14d, %esi
callq 0x33f8
testl %eax, %eax
je 0x4b38
movq %r12, %rdi
leaq 0x4c0b(%rip), %rsi      # 0x973e
callq 0x22a0
movq 0x8(%rbx), %rsi
andq 0x20(%rbx), %rsi
movq %r13, %rdi
callq 0x3386
movq %r13, %rdi
movl %r14d, %esi
callq 0x33f8
testl %eax, %eax
je 0x4b66
movq %r12, %rdi
leaq 0x4be1(%rip), %rsi      # 0x9742
callq 0x22a0
movq 0x8(%rbx), %rsi
andq 0x28(%rbx), %rsi
movq %r13, %rdi
callq 0x3386
movq %r13, %rdi
movl %r14d, %esi
callq 0x33f8
testl %eax, %eax
je 0x4b94
movq %r12, %rdi
leaq 0x4bb7(%rip), %rsi      # 0x9746
callq 0x22a0
movq 0x8(%rbx), %rsi
andq 0x30(%rbx), %rsi
movq %r13, %rdi
callq 0x3386
movq %r13, %rdi
movl %r14d, %esi
callq 0x33f8
testl %eax, %eax
je 0x4bc2
movq %r12, %rdi
leaq 0x4b8d(%rip), %rsi      # 0x974a
callq 0x22a0
movq 0x8(%rbx), %rsi
andq 0x38(%rbx), %rsi
movq %r13, %rdi
callq 0x3386
movq %r13, %rdi
movl %r14d, %esi
callq 0x33f8
leaq 0x4b6a(%rip), %rsi      # 0x974e
testl %eax, %eax
je 0x4bf0
movq %r12, %rdi
callq 0x22a0
incl %r14d
testb $0x7, %r14b
jne 0x4c6c
leaq -0x38(%rbp), %rax
movq %rax, -0x48(%rbp)
movq -0x88(%rbp), %rsi
movq -0x80(%rbp), %rdx
addq %rsi, %rdx
movq %r13, %rdi
callq 0x671c
movq %r13, %rdi
leaq 0x4b4d(%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 0x4c54
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x2150
movq -0x80(%rbp), %rdx
movq %r12, %rdi
xorl %esi, %esi
leaq 0x4b0b(%rip), %rcx      # 0x976f
xorl %r8d, %r8d
callq 0x2210
cmpl $0x40, %r14d
jne 0x49b4
leaq 0x4ad9(%rip), %rcx      # 0x9756
leaq -0x68(%rbp), %rdi
movl $0x19, %r8d
xorl %esi, %esi
xorl %edx, %edx
callq 0x2170
leaq 0x4ad9(%rip), %rsi      # 0x9770
leaq -0x68(%rbp), %rdi
callq 0x22a0
movq -0x68(%rbp), %rsi
movq -0x60(%rbp), %rdx
movq 0x8329(%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 0x4cf7
movq -0x58(%rbp), %rsi
incq %rsi
callq 0x2150
movq -0x88(%rbp), %rdi
leaq -0x78(%rbp), %rax
cmpq %rax, %rdi
je 0x4d13
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 0x4d5e
jmp 0x4d26
movq %rax, %rbx
movq -0x48(%rbp), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0x4d61
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x2150
jmp 0x4d61
jmp 0x4d5e
jmp 0x4d5e
jmp 0x4d5e
jmp 0x4d5e
jmp 0x4d5e
jmp 0x4d5e
jmp 0x4d5e
jmp 0x4d5e
jmp 0x4d5e
jmp 0x4d5e
jmp 0x4d5e
jmp 0x4d5e
jmp 0x4d5e
movq %rax, %rbx
movq -0x68(%rbp), %rdi
leaq -0x58(%rbp), %rax
cmpq %rax, %rdi
je 0x4d7a
movq -0x58(%rbp), %rsi
incq %rsi
callq 0x2150
movq -0x88(%rbp), %rdi
leaq -0x78(%rbp), %rax
cmpq %rax, %rdi
je 0x4d96
movq -0x78(%rbp), %rsi
incq %rsi
callq 0x2150
movq %rbx, %rdi
callq 0x2270