// File: /workspace/github_cpp_makefile_star2_O1/jswaff[P]prophet3/test/bitboards__test.cpp
// Function: test_knight_moves()
void test_knight_moves() {
    assert(get_num_bits(bb_knight_moves[E4])==8);

    uint64 mv_map = bb_knight_moves[E4];
    assert(get_lsb(mv_map)==D6);
    mv_map ^= bb_squares[D6];

    assert(get_lsb(mv_map)==F6);
    mv_map ^= bb_squares[F6];

    assert(get_lsb(mv_map)==C5);
    mv_map ^= bb_squares[C5];

    assert(get_lsb(mv_map)==G5);
    mv_map ^= bb_squares[G5];

    assert(get_lsb(mv_map)==C3);
    mv_map ^= bb_squares[C3];

    assert(get_lsb(mv_map)==G3);
    mv_map ^= bb_squares[G3];

    assert(get_lsb(mv_map)==D2);
    mv_map ^= bb_squares[D2];

    assert(get_lsb(mv_map)==F2);
    mv_map ^= bb_squares[F2];

    assert(mv_map==0);

    assert(get_num_bits(bb_knight_moves[A8])==2);
    mv_map = bb_knight_moves[A8];
    assert(get_lsb(mv_map)==C7);
    mv_map ^= bb_squares[C7];

    assert(get_lsb(mv_map)==B6);
    mv_map ^= bb_squares[B6];

    assert(mv_map==0);
}

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
leaq 0xe99de(%rip), %r14     # 0xfa6b0
movq 0x120(%r14), %rdi
callq 0x3b08
cmpl $0x8, %eax
jne 0x10e08
movq 0x120(%r14), %rbx
movq %rbx, %rdi
callq 0x3b5b
cmpl $0x13, %eax
jne 0x10e27
leaq 0xe97aa(%rip), %r15     # 0xfa4b0
xorq 0x98(%r15), %rbx
movq %rbx, %rdi
callq 0x3b5b
cmpl $0x15, %eax
jne 0x10e46
xorq 0xa8(%r15), %rbx
movq %rbx, %rdi
callq 0x3b5b
cmpl $0x1a, %eax
jne 0x10e65
xorq 0xd0(%r15), %rbx
movq %rbx, %rdi
callq 0x3b5b
cmpl $0x1e, %eax
jne 0x10e84
xorq 0xf0(%r15), %rbx
movq %rbx, %rdi
callq 0x3b5b
cmpl $0x2a, %eax
jne 0x10ea3
xorq 0x150(%r15), %rbx
movq %rbx, %rdi
callq 0x3b5b
cmpl $0x2e, %eax
jne 0x10ec2
xorq 0x170(%r15), %rbx
movq %rbx, %rdi
callq 0x3b5b
cmpl $0x33, %eax
jne 0x10ee1
xorq 0x198(%r15), %rbx
movq %rbx, %rdi
callq 0x3b5b
cmpl $0x35, %eax
jne 0x10f00
cmpq 0x1a8(%r15), %rbx
jne 0x10f1f
movq (%r14), %rdi
callq 0x3b08
cmpl $0x2, %eax
jne 0x10f3e
movq (%r14), %rbx
movq %rbx, %rdi
callq 0x3b5b
cmpl $0xa, %eax
jne 0x10f5d
xorq 0x50(%r15), %rbx
movq %rbx, %rdi
callq 0x3b5b
cmpl $0x11, %eax
jne 0x10f7c
cmpq 0x88(%r15), %rbx
jne 0x10f9b
popq %rbx
popq %r14
popq %r15
retq
leaq 0x1d909(%rip), %rdi     # 0x2e718
leaq 0x1d756(%rip), %rsi     # 0x2e56c
leaq 0x1d920(%rip), %rcx     # 0x2e73d
movl $0x26, %edx
callq 0x20d0
leaq 0x1d928(%rip), %rdi     # 0x2e756
leaq 0x1d737(%rip), %rsi     # 0x2e56c
leaq 0x1d901(%rip), %rcx     # 0x2e73d
movl $0x29, %edx
callq 0x20d0
leaq 0x1d91d(%rip), %rdi     # 0x2e76a
leaq 0x1d718(%rip), %rsi     # 0x2e56c
leaq 0x1d8e2(%rip), %rcx     # 0x2e73d
movl $0x2c, %edx
callq 0x20d0
leaq 0x1d912(%rip), %rdi     # 0x2e77e
leaq 0x1d6f9(%rip), %rsi     # 0x2e56c
leaq 0x1d8c3(%rip), %rcx     # 0x2e73d
movl $0x2f, %edx
callq 0x20d0
leaq 0x1d907(%rip), %rdi     # 0x2e792
leaq 0x1d6da(%rip), %rsi     # 0x2e56c
leaq 0x1d8a4(%rip), %rcx     # 0x2e73d
movl $0x32, %edx
callq 0x20d0
leaq 0x1d8fc(%rip), %rdi     # 0x2e7a6
leaq 0x1d6bb(%rip), %rsi     # 0x2e56c
leaq 0x1d885(%rip), %rcx     # 0x2e73d
movl $0x35, %edx
callq 0x20d0
leaq 0x1d8f1(%rip), %rdi     # 0x2e7ba
leaq 0x1d69c(%rip), %rsi     # 0x2e56c
leaq 0x1d866(%rip), %rcx     # 0x2e73d
movl $0x38, %edx
callq 0x20d0
leaq 0x1d8e6(%rip), %rdi     # 0x2e7ce
leaq 0x1d67d(%rip), %rsi     # 0x2e56c
leaq 0x1d847(%rip), %rcx     # 0x2e73d
movl $0x3b, %edx
callq 0x20d0
leaq 0x1d8db(%rip), %rdi     # 0x2e7e2
leaq 0x1d65e(%rip), %rsi     # 0x2e56c
leaq 0x1d828(%rip), %rcx     # 0x2e73d
movl $0x3e, %edx
callq 0x20d0
leaq 0x1d8d0(%rip), %rdi     # 0x2e7f6
leaq 0x1d63f(%rip), %rsi     # 0x2e56c
leaq 0x1d809(%rip), %rcx     # 0x2e73d
movl $0x41, %edx
callq 0x20d0
leaq 0x1d8bb(%rip), %rdi     # 0x2e800
leaq 0x1d620(%rip), %rsi     # 0x2e56c
leaq 0x1d7ea(%rip), %rcx     # 0x2e73d
movl $0x43, %edx
callq 0x20d0
leaq 0x1d8c1(%rip), %rdi     # 0x2e825
leaq 0x1d601(%rip), %rsi     # 0x2e56c
leaq 0x1d7cb(%rip), %rcx     # 0x2e73d
movl $0x45, %edx
callq 0x20d0
leaq 0x1d8b6(%rip), %rdi     # 0x2e839
leaq 0x1d5e2(%rip), %rsi     # 0x2e56c
leaq 0x1d7ac(%rip), %rcx     # 0x2e73d
movl $0x48, %edx
callq 0x20d0
leaq 0x1d854(%rip), %rdi     # 0x2e7f6
leaq 0x1d5c3(%rip), %rsi     # 0x2e56c
leaq 0x1d78d(%rip), %rcx     # 0x2e73d
movl $0x4b, %edx
callq 0x20d0