// File: /workspace/github_cpp_makefile_star2_O3/ATOMIC-LICHESS[P]ATOMKRAFT/debug.cpp
// Function: print_debuginfo(Position const&)
void print_debuginfo(const Position& pos) {
	char names[7][50] = {
			"PIECES", "PAWNS", "KNIGHTS", "BISHOPS",
			"ROOKS", "QUEENS", "KINGS"	
	};
	
	cout << endl;
	cout << "--- START DEBUG INFORMATION ---" << endl;
	cout << endl;
	
	cout << "CASTLING RIGHTS" << endl;
	print_castleRights(pos);
	cout << endl;
	
	
	for (int pt = 0; pt < 7; ++pt) {
		cout << "PIECELIST WHITE " << names[pt] << endl;
		for (int i = 0; i < pos.piece_count(WHITE, (PieceType)pt); ++i) {
			cout << pos.piece_list(WHITE, (PieceType)pt, i) << " ";
		}
		cout << endl << endl;
	}
	
	for (int pt = 0; pt < 7; ++pt) {
		cout << "PIECELIST BLACK " << names[pt] << endl;
		for (int i = 0; i < pos.piece_count(BLACK, (PieceType)pt); ++i) {
			cout << pos.piece_list(BLACK, (PieceType)pt, i) << " ";
		}
		cout << endl << endl;
	}
	
	cout << "BOARD" << endl;
	print_pos(pos);
	cout << endl;
	
	for (int pt = 0; pt < 7; ++pt) {
		cout << "WHITE " << names[pt] << endl;
		print_bb(pos.pieces((PieceType)pt, WHITE));
		cout << endl;
	}
	
	for (int pt = 0; pt < 7; ++pt) {
		cout << "BLACK " << names[pt] << endl;
		print_bb(pos.pieces((PieceType)pt, BLACK));
		cout << endl;
	}
	
	cout << endl;
	cout << "--- END DEBUG INFORMATION ---" << endl;
	cout << endl;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x168, %rsp            # imm = 0x168
movq %rdi, %r14
leaq 0x2615c(%rip), %rsi     # 0x319c0
movq %rsp, %rdi
movl $0x15e, %edx            # imm = 0x15E
callq 0x5320
movq 0x31728(%rip), %rbx     # 0x3cfa0
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x53c0
movsbl %al, %esi
movq %rbx, %rdi
callq 0x5050
movq %rax, %rdi
callq 0x5270
leaq 0x25f81(%rip), %rsi     # 0x31827
movl $0x1f, %edx
movq %rbx, %rdi
callq 0x5460
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x53c0
movsbl %al, %esi
movq %rbx, %rdi
callq 0x5050
movq %rax, %rdi
callq 0x5270
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x53c0
movsbl %al, %esi
movq %rbx, %rdi
callq 0x5050
movq %rax, %rdi
callq 0x5270
leaq 0x25f3f(%rip), %rsi     # 0x31847
movl $0xf, %edx
movq %rbx, %rdi
callq 0x5460
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x53c0
movsbl %al, %esi
movq %rbx, %rdi
callq 0x5050
movq %rax, %rdi
callq 0x5270
movq %r14, %rdi
callq 0xb7b1
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x53c0
movsbl %al, %esi
movq %rbx, %rdi
callq 0x5050
movq %rax, %rdi
callq 0x5270
leaq 0x190(%r14), %r15
xorl %r12d, %r12d
leaq 0x25d44(%rip), %r13     # 0x316c0
movl $0x10, %edx
movq %rbx, %rdi
leaq 0x25ecc(%rip), %rsi     # 0x31857
callq 0x5460
imulq $0x32, %r12, %rax
leaq (%rsp,%rax), %rbp
movq %rbp, %rdi
callq 0x5190
movq %rbx, %rdi
movq %rbp, %rsi
movq %rax, %rdx
callq 0x5460
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x53c0
movsbl %al, %esi
movq %rbx, %rdi
callq 0x5050
movq %rax, %rdi
callq 0x5270
cmpl $0x0, 0x150(%r14,%r12,4)
jle 0xba0e
xorl %ebp, %ebp
movl (%r15,%rbp,4), %esi
movq %rbx, %rdi
callq 0x5760
movl $0x1, %edx
movq %rax, %rdi
movq %r13, %rsi
callq 0x5460
incq %rbp
movslq 0x150(%r14,%r12,4), %rax
cmpq %rax, %rbp
jl 0xb9e2
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x53c0
movsbl %al, %esi
movq %rbx, %rdi
callq 0x5050
movq %rax, %rdi
callq 0x5270
movq %rax, %rbp
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbp, %rdi
movl $0xa, %esi
callq 0x53c0
movsbl %al, %esi
movq %rbp, %rdi
callq 0x5050
movq %rax, %rdi
callq 0x5270
incq %r12
addq $0x40, %r15
cmpq $0x7, %r12
jne 0xb97c
leaq 0x390(%r14), %r12
xorl %r15d, %r15d
leaq 0x25c3f(%rip), %r13     # 0x316c0
movl $0x10, %edx
movq %rbx, %rdi
leaq 0x25dd8(%rip), %rsi     # 0x31868
callq 0x5460
imulq $0x32, %r15, %rax
leaq (%rsp,%rax), %rbp
movq %rbp, %rdi
callq 0x5190
movq %rbx, %rdi
movq %rbp, %rsi
movq %rax, %rdx
callq 0x5460
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x53c0
movsbl %al, %esi
movq %rbx, %rdi
callq 0x5050
movq %rax, %rdi
callq 0x5270
cmpl $0x0, 0x170(%r14,%r15,4)
jle 0xbb13
xorl %ebp, %ebp
movl (%r12,%rbp,4), %esi
movq %rbx, %rdi
callq 0x5760
movl $0x1, %edx
movq %rax, %rdi
movq %r13, %rsi
callq 0x5460
incq %rbp
movslq 0x170(%r14,%r15,4), %rax
cmpq %rax, %rbp
jl 0xbae7
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x53c0
movsbl %al, %esi
movq %rbx, %rdi
callq 0x5050
movq %rax, %rdi
callq 0x5270
movq %rax, %rbp
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbp, %rdi
movl $0xa, %esi
callq 0x53c0
movsbl %al, %esi
movq %rbp, %rdi
callq 0x5050
movq %rax, %rdi
callq 0x5270
incq %r15
addq $0x40, %r12
cmpq $0x7, %r15
jne 0xba81
leaq 0x25cfd(%rip), %rsi     # 0x31879
movl $0x5, %edx
movq %rbx, %rdi
callq 0x5460
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x53c0
movsbl %al, %esi
movq %rbx, %rdi
callq 0x5050
movq %rax, %rdi
callq 0x5270
movq %r14, %rdi
callq 0xb320
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x53c0
movsbl %al, %esi
movq %rbx, %rdi
callq 0x5050
movq %rax, %rdi
callq 0x5270
xorl %r15d, %r15d
leaq 0x25c78(%rip), %r12     # 0x31861
movq %rsp, %r13
movl $0x6, %edx
movq %rbx, %rdi
movq %r12, %rsi
callq 0x5460
movq %r13, %rdi
callq 0x5190
movq %rbx, %rdi
movq %r13, %rsi
movq %rax, %rdx
callq 0x5460
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x53c0
movsbl %al, %esi
movq %rbx, %rdi
callq 0x5050
movq %rax, %rdi
callq 0x5270
movq 0x140(%r14), %rdi
andq 0x100(%r14,%r15,8), %rdi
callq 0xb547
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x53c0
movsbl %al, %esi
movq %rbx, %rdi
callq 0x5050
movq %rax, %rdi
callq 0x5270
incq %r15
addq $0x32, %r13
cmpq $0x7, %r15
jne 0xbbec
movq %rsp, %r15
xorl %r13d, %r13d
leaq 0x25be0(%rip), %r12     # 0x31872
movl $0x6, %edx
movq %rbx, %rdi
movq %r12, %rsi
callq 0x5460
movq %r15, %rdi
callq 0x5190
movq %rbx, %rdi
movq %r15, %rsi
movq %rax, %rdx
callq 0x5460
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x53c0
movsbl %al, %esi
movq %rbx, %rdi
callq 0x5050
movq %rax, %rdi
callq 0x5270
movq 0x148(%r14), %rdi
andq 0x100(%r14,%r13,8), %rdi
callq 0xb547
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x53c0
movsbl %al, %esi
movq %rbx, %rdi
callq 0x5050
movq %rax, %rdi
callq 0x5270
incq %r13
addq $0x32, %r15
cmpq $0x7, %r13
jne 0xbc92
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x53c0
movsbl %al, %esi
movq %rbx, %rdi
callq 0x5050
movq %rax, %rdi
callq 0x5270
leaq 0x25b26(%rip), %rsi     # 0x3187f
movl $0x1d, %edx
movq %rbx, %rdi
callq 0x5460
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x53c0
movsbl %al, %esi
movq %rbx, %rdi
callq 0x5050
movq %rax, %rdi
callq 0x5270
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x53c0
movsbl %al, %esi
movq %rbx, %rdi
callq 0x5050
movq %rax, %rdi
callq 0x5270
addq $0x168, %rsp            # imm = 0x168
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
nop