// File: /workspace/github_cpp_makefile_star2_O1/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 0x2561d(%rip), %rsi     # 0x30940
movq %rsp, %rdi
movl $0x15e, %edx            # imm = 0x15E
callq 0x5320
movq 0x30c69(%rip), %rbx     # 0x3bfa0
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 0x25442(%rip), %rsi     # 0x307a7
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 0x25400(%rip), %rsi     # 0x307c7
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 0xb270
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), %r12
xorl %r15d, %r15d
leaq 0x25205(%rip), %r13     # 0x30640
movl $0x10, %edx
movq %rbx, %rdi
leaq 0x2538d(%rip), %rsi     # 0x307d7
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, 0x150(%r14,%r15,4)
jle 0xb4cd
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 0x150(%r14,%r15,4), %rax
cmpq %rax, %rbp
jl 0xb4a1
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 0xb43b
leaq 0x390(%r14), %r12
xorl %r15d, %r15d
leaq 0x25100(%rip), %r13     # 0x30640
movl $0x10, %edx
movq %rbx, %rdi
leaq 0x25299(%rip), %rsi     # 0x307e8
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 0xb5d2
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 0xb5a6
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 0xb540
leaq 0x251be(%rip), %rsi     # 0x307f9
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 0xaddc
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 0x25139(%rip), %r12     # 0x307e1
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 0xb003
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 0xb6ab
movq %rsp, %r15
xorl %r13d, %r13d
leaq 0x250a1(%rip), %r12     # 0x307f2
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 0xb003
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 0xb751
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 0x24fe7(%rip), %rsi     # 0x307ff
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
nopl (%rax)