// File: /workspace/github_cpp_makefile_star2_O3/jswaff[P]prophet3/test/movegen__test.cpp
// Function: test_gen_bishop_noncaptures()
void test_gen_bishop_noncaptures() {
    position pos;
    set_pos(&pos,"4k3/2p3P1/8/4B3/4B3/3p1P2/8/4K3 w - - 0 1");

    move moves[20];
    move *mp = gen_bishop_moves(moves,&pos,E5,false,true);
    mp = gen_bishop_moves(mp,&pos,E4,false,true);

    assert((mp - moves) == 16);
    assert(is_in_move_list(to_move(BISHOP,E5,F6),moves,mp));
    assert(is_in_move_list(to_move(BISHOP,E5,F4),moves,mp));
    assert(is_in_move_list(to_move(BISHOP,E5,G3),moves,mp));
    assert(is_in_move_list(to_move(BISHOP,E5,H2),moves,mp));
    assert(is_in_move_list(to_move(BISHOP,E5,D4),moves,mp));
    assert(is_in_move_list(to_move(BISHOP,E5,C3),moves,mp));
    assert(is_in_move_list(to_move(BISHOP,E5,B2),moves,mp));
    assert(is_in_move_list(to_move(BISHOP,E5,A1),moves,mp));
    assert(is_in_move_list(to_move(BISHOP,E5,D6),moves,mp));
    assert(is_in_move_list(to_move(BISHOP,E4,F5),moves,mp));
    assert(is_in_move_list(to_move(BISHOP,E4,G6),moves,mp));
    assert(is_in_move_list(to_move(BISHOP,E4,H7),moves,mp));
    assert(is_in_move_list(to_move(BISHOP,E4,D5),moves,mp));
    assert(is_in_move_list(to_move(BISHOP,E4,C6),moves,mp));
    assert(is_in_move_list(to_move(BISHOP,E4,B7),moves,mp));
    assert(is_in_move_list(to_move(BISHOP,E4,A8),moves,mp));
}

// Assembly:
pushq %r14
pushq %rbx
subq $0x268, %rsp            # imm = 0x268
leaq 0x1888f(%rip), %rsi     # 0x3301d
leaq 0xa0(%rsp), %rbx
movq %rbx, %rdi
callq 0xaa82
movq %rsp, %r14
movq %r14, %rdi
movq %rbx, %rsi
movl $0x1c, %edx
xorl %ecx, %ecx
movl $0x1, %r8d
callq 0x86f1
movq %rax, %rdi
movq %rbx, %rsi
movl $0x24, %edx
xorl %ecx, %ecx
movl $0x1, %r8d
callq 0x86f1
movq %rax, %rbx
subq %r14, %rax
cmpq $0x80, %rax
jne 0x1aa8b
movl $0x3, %edi
movl $0x1c, %esi
movl $0x15, %edx
callq 0x775c
movq %rsp, %rsi
movq %rax, %rdi
movq %rbx, %rdx
callq 0xe682
testb %al, %al
je 0x1aaaa
movl $0x3, %edi
movl $0x1c, %esi
movl $0x25, %edx
callq 0x775c
movq %rsp, %rsi
movq %rax, %rdi
movq %rbx, %rdx
callq 0xe682
testb %al, %al
je 0x1aac9
movl $0x3, %edi
movl $0x1c, %esi
movl $0x2e, %edx
callq 0x775c
movq %rsp, %rsi
movq %rax, %rdi
movq %rbx, %rdx
callq 0xe682
testb %al, %al
je 0x1aae8
movl $0x3, %edi
movl $0x1c, %esi
movl $0x37, %edx
callq 0x775c
movq %rsp, %rsi
movq %rax, %rdi
movq %rbx, %rdx
callq 0xe682
testb %al, %al
je 0x1ab07
movl $0x3, %edi
movl $0x1c, %esi
movl $0x23, %edx
callq 0x775c
movq %rsp, %rsi
movq %rax, %rdi
movq %rbx, %rdx
callq 0xe682
testb %al, %al
je 0x1ab26
movl $0x3, %edi
movl $0x1c, %esi
movl $0x2a, %edx
callq 0x775c
movq %rsp, %rsi
movq %rax, %rdi
movq %rbx, %rdx
callq 0xe682
testb %al, %al
je 0x1ab45
movl $0x3, %edi
movl $0x1c, %esi
movl $0x31, %edx
callq 0x775c
movq %rsp, %rsi
movq %rax, %rdi
movq %rbx, %rdx
callq 0xe682
testb %al, %al
je 0x1ab64
movl $0x3, %edi
movl $0x1c, %esi
movl $0x38, %edx
callq 0x775c
movq %rsp, %rsi
movq %rax, %rdi
movq %rbx, %rdx
callq 0xe682
testb %al, %al
je 0x1ab83
movl $0x3, %edi
movl $0x1c, %esi
movl $0x13, %edx
callq 0x775c
movq %rsp, %rsi
movq %rax, %rdi
movq %rbx, %rdx
callq 0xe682
testb %al, %al
je 0x1aba2
movl $0x3, %edi
movl $0x24, %esi
movl $0x1d, %edx
callq 0x775c
movq %rsp, %rsi
movq %rax, %rdi
movq %rbx, %rdx
callq 0xe682
testb %al, %al
je 0x1abc1
movl $0x3, %edi
movl $0x24, %esi
movl $0x16, %edx
callq 0x775c
movq %rsp, %rsi
movq %rax, %rdi
movq %rbx, %rdx
callq 0xe682
testb %al, %al
je 0x1abe0
movl $0x3, %edi
movl $0x24, %esi
movl $0xf, %edx
callq 0x775c
movq %rsp, %rsi
movq %rax, %rdi
movq %rbx, %rdx
callq 0xe682
testb %al, %al
je 0x1abff
movl $0x3, %edi
movl $0x24, %esi
movl $0x1b, %edx
callq 0x775c
movq %rsp, %rsi
movq %rax, %rdi
movq %rbx, %rdx
callq 0xe682
testb %al, %al
je 0x1ac1e
movl $0x3, %edi
movl $0x24, %esi
movl $0x12, %edx
callq 0x775c
movq %rsp, %rsi
movq %rax, %rdi
movq %rbx, %rdx
callq 0xe682
testb %al, %al
je 0x1ac3d
movl $0x3, %edi
movl $0x24, %esi
movl $0x9, %edx
callq 0x775c
movq %rsp, %rsi
movq %rax, %rdi
movq %rbx, %rdx
callq 0xe682
testb %al, %al
je 0x1ac5c
movl $0x3, %edi
movl $0x24, %esi
xorl %edx, %edx
callq 0x775c
movq %rsp, %rsi
movq %rax, %rdi
movq %rbx, %rdx
callq 0xe682
testb %al, %al
je 0x1ac7b
addq $0x268, %rsp            # imm = 0x268
popq %rbx
popq %r14
retq
leaq 0x18987(%rip), %rdi     # 0x33419
leaq 0x182b5(%rip), %rsi     # 0x32d4e
leaq 0x1898c(%rip), %rcx     # 0x3342c
movl $0x69, %edx
callq 0x20d0
leaq 0x185c6(%rip), %rdi     # 0x33077
leaq 0x18296(%rip), %rsi     # 0x32d4e
leaq 0x1896d(%rip), %rcx     # 0x3342c
movl $0x6a, %edx
callq 0x20d0
leaq 0x185d7(%rip), %rdi     # 0x330a7
leaq 0x18277(%rip), %rsi     # 0x32d4e
leaq 0x1894e(%rip), %rcx     # 0x3342c
movl $0x6b, %edx
callq 0x20d0
leaq 0x185e8(%rip), %rdi     # 0x330d7
leaq 0x18258(%rip), %rsi     # 0x32d4e
leaq 0x1892f(%rip), %rcx     # 0x3342c
movl $0x6c, %edx
callq 0x20d0
leaq 0x185f9(%rip), %rdi     # 0x33107
leaq 0x18239(%rip), %rsi     # 0x32d4e
leaq 0x18910(%rip), %rcx     # 0x3342c
movl $0x6d, %edx
callq 0x20d0
leaq 0x1860a(%rip), %rdi     # 0x33137
leaq 0x1821a(%rip), %rsi     # 0x32d4e
leaq 0x188f1(%rip), %rcx     # 0x3342c
movl $0x6e, %edx
callq 0x20d0
leaq 0x1861b(%rip), %rdi     # 0x33167
leaq 0x181fb(%rip), %rsi     # 0x32d4e
leaq 0x188d2(%rip), %rcx     # 0x3342c
movl $0x6f, %edx
callq 0x20d0
leaq 0x1862c(%rip), %rdi     # 0x33197
leaq 0x181dc(%rip), %rsi     # 0x32d4e
leaq 0x188b3(%rip), %rcx     # 0x3342c
movl $0x70, %edx
callq 0x20d0
leaq 0x1863d(%rip), %rdi     # 0x331c7
leaq 0x181bd(%rip), %rsi     # 0x32d4e
leaq 0x18894(%rip), %rcx     # 0x3342c
movl $0x71, %edx
callq 0x20d0
leaq 0x1864e(%rip), %rdi     # 0x331f7
leaq 0x1819e(%rip), %rsi     # 0x32d4e
leaq 0x18875(%rip), %rcx     # 0x3342c
movl $0x72, %edx
callq 0x20d0
leaq 0x18697(%rip), %rdi     # 0x3325f
leaq 0x1817f(%rip), %rsi     # 0x32d4e
leaq 0x18856(%rip), %rcx     # 0x3342c
movl $0x73, %edx
callq 0x20d0
leaq 0x186a8(%rip), %rdi     # 0x3328f
leaq 0x18160(%rip), %rsi     # 0x32d4e
leaq 0x18837(%rip), %rcx     # 0x3342c
movl $0x74, %edx
callq 0x20d0
leaq 0x186b9(%rip), %rdi     # 0x332bf
leaq 0x18141(%rip), %rsi     # 0x32d4e
leaq 0x18818(%rip), %rcx     # 0x3342c
movl $0x75, %edx
callq 0x20d0
leaq 0x18702(%rip), %rdi     # 0x33327
leaq 0x18122(%rip), %rsi     # 0x32d4e
leaq 0x187f9(%rip), %rcx     # 0x3342c
movl $0x76, %edx
callq 0x20d0
leaq 0x18713(%rip), %rdi     # 0x33357
leaq 0x18103(%rip), %rsi     # 0x32d4e
leaq 0x187da(%rip), %rcx     # 0x3342c
movl $0x77, %edx
callq 0x20d0
leaq 0x18724(%rip), %rdi     # 0x33387
leaq 0x180e4(%rip), %rsi     # 0x32d4e
leaq 0x187bb(%rip), %rcx     # 0x3342c
movl $0x78, %edx
callq 0x20d0
leaq 0x18735(%rip), %rdi     # 0x333b7
leaq 0x180c5(%rip), %rsi     # 0x32d4e
leaq 0x1879c(%rip), %rcx     # 0x3342c
movl $0x79, %edx
callq 0x20d0