// File: /workspace/github_cpp_makefile_star2_O2/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
leaq -0x60(%rbp), %rax
movq %rax, -0x10(%rax)
andq $0x0, -0x8(%rax)
movq %rdi, %rbx
xorl %r14d, %r14d
movb %r14b, (%rax)
leaq -0x40(%rbp), %rax
movq %rax, -0x10(%rax)
andq $0x0, -0x8(%rax)
movb %r14b, (%rax)
movq 0x8(%rdi), %rsi
orq (%rdi), %rsi
leaq -0x30(%rbp), %rdi
callq 0x3036
leaq 0x4726(%rip), %r15      # 0x8772
leaq -0x70(%rbp), %r12
leaq -0x90(%rbp), %r13
cmpl $0x40, %r14d
je 0x42e3
leaq -0x30(%rbp), %rdi
movl %r14d, %esi
callq 0x30a4
movq %r15, %rsi
testl %eax, %eax
je 0x4292
movq (%rbx), %rsi
andq 0x10(%rbx), %rsi
movq %r13, %rdi
callq 0x3036
movq %r13, %rdi
movl %r14d, %esi
callq 0x30a4
testl %eax, %eax
je 0x40a5
movq %r12, %rdi
leaq 0x46a2(%rip), %rsi      # 0x8742
callq 0x22b0
movq (%rbx), %rsi
andq 0x18(%rbx), %rsi
movq %r13, %rdi
callq 0x3036
movq %r13, %rdi
movl %r14d, %esi
callq 0x30a4
testl %eax, %eax
je 0x40d2
movq %r12, %rdi
leaq 0x4679(%rip), %rsi      # 0x8746
callq 0x22b0
movq (%rbx), %rsi
andq 0x20(%rbx), %rsi
movq %r13, %rdi
callq 0x3036
movq %r13, %rdi
movl %r14d, %esi
callq 0x30a4
testl %eax, %eax
je 0x40ff
movq %r12, %rdi
leaq 0x4650(%rip), %rsi      # 0x874a
callq 0x22b0
movq (%rbx), %rsi
andq 0x28(%rbx), %rsi
movq %r13, %rdi
callq 0x3036
movq %r13, %rdi
movl %r14d, %esi
callq 0x30a4
testl %eax, %eax
je 0x412c
movq %r12, %rdi
leaq 0x4627(%rip), %rsi      # 0x874e
callq 0x22b0
movq (%rbx), %rsi
andq 0x30(%rbx), %rsi
movq %r13, %rdi
callq 0x3036
movq %r13, %rdi
movl %r14d, %esi
callq 0x30a4
testl %eax, %eax
je 0x4159
movq %r12, %rdi
leaq 0x45fe(%rip), %rsi      # 0x8752
callq 0x22b0
movq (%rbx), %rsi
andq 0x38(%rbx), %rsi
movq %r13, %rdi
callq 0x3036
movq %r13, %rdi
movl %r14d, %esi
callq 0x30a4
testl %eax, %eax
je 0x4186
movq %r12, %rdi
leaq 0x45d5(%rip), %rsi      # 0x8756
callq 0x22b0
movq 0x8(%rbx), %rsi
andq 0x10(%rbx), %rsi
movq %r13, %rdi
callq 0x3036
movq %r13, %rdi
movl %r14d, %esi
callq 0x30a4
testl %eax, %eax
je 0x41b4
movq %r12, %rdi
leaq 0x45ab(%rip), %rsi      # 0x875a
callq 0x22b0
movq 0x8(%rbx), %rsi
andq 0x18(%rbx), %rsi
movq %r13, %rdi
callq 0x3036
movq %r13, %rdi
movl %r14d, %esi
callq 0x30a4
testl %eax, %eax
je 0x41e2
movq %r12, %rdi
leaq 0x4581(%rip), %rsi      # 0x875e
callq 0x22b0
movq 0x8(%rbx), %rsi
andq 0x20(%rbx), %rsi
movq %r13, %rdi
callq 0x3036
movq %r13, %rdi
movl %r14d, %esi
callq 0x30a4
testl %eax, %eax
je 0x4210
movq %r12, %rdi
leaq 0x4557(%rip), %rsi      # 0x8762
callq 0x22b0
movq 0x8(%rbx), %rsi
andq 0x28(%rbx), %rsi
movq %r13, %rdi
callq 0x3036
movq %r13, %rdi
movl %r14d, %esi
callq 0x30a4
testl %eax, %eax
je 0x423e
movq %r12, %rdi
leaq 0x452d(%rip), %rsi      # 0x8766
callq 0x22b0
movq 0x8(%rbx), %rsi
andq 0x30(%rbx), %rsi
movq %r13, %rdi
callq 0x3036
movq %r13, %rdi
movl %r14d, %esi
callq 0x30a4
testl %eax, %eax
je 0x426c
movq %r12, %rdi
leaq 0x4503(%rip), %rsi      # 0x876a
callq 0x22b0
movq 0x8(%rbx), %rsi
andq 0x38(%rbx), %rsi
movq %r13, %rdi
callq 0x3036
movq %r13, %rdi
movl %r14d, %esi
callq 0x30a4
leaq 0x44e0(%rip), %rsi      # 0x876e
testl %eax, %eax
je 0x429a
movq %r12, %rdi
callq 0x22b0
incl %r14d
testb $0x7, %r14b
jne 0x4057
movq %r13, %rdi
movq %r12, %rsi
leaq 0x44da(%rip), %rdx      # 0x878e
callq 0x573d
leaq -0x50(%rbp), %rdi
xorl %esi, %esi
movq %r13, %rdx
callq 0x2230
movq %r13, %rdi
callq 0x2308
movq %r12, %rdi
leaq 0x44b6(%rip), %rsi      # 0x878f
callq 0x22c0
jmp 0x4057
leaq 0x448c(%rip), %rdx      # 0x8776
leaq -0x50(%rbp), %rdi
xorl %esi, %esi
callq 0x2050
leaq 0x4494(%rip), %rsi      # 0x8790
leaq -0x50(%rbp), %rdi
callq 0x22b0
movq 0x7cc4(%rip), %rdi      # 0xbfd0
leaq -0x50(%rbp), %rsi
callq 0x2170
movq %rax, %rdi
callq 0x20c0
leaq -0x50(%rbp), %rdi
callq 0x2308
leaq -0x70(%rbp), %rdi
callq 0x2308
addq $0x68, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x436b
movq %rax, %rbx
leaq -0x90(%rbp), %rdi
callq 0x2308
jmp 0x436e
jmp 0x436b
jmp 0x436b
jmp 0x436b
jmp 0x436b
jmp 0x436b
jmp 0x436b
jmp 0x436b
jmp 0x436b
jmp 0x436b
jmp 0x436b
jmp 0x436b
jmp 0x436b
jmp 0x436b
movq %rax, %rbx
leaq -0x50(%rbp), %rdi
callq 0x2308
leaq -0x70(%rbp), %rdi
callq 0x2308
movq %rbx, %rdi
callq 0x2290