// File: /workspace/github_cpp_makefile_star2_O1/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 0x1869b(%rip), %rsi     # 0x32f9d
leaq 0xa0(%rsp), %rbx
movq %rbx, %rdi
callq 0xaa74
movq %rsp, %r14
movq %r14, %rdi
movq %rbx, %rsi
movl $0x1c, %edx
xorl %ecx, %ecx
movl $0x1, %r8d
callq 0x865d
movq %rax, %rdi
movq %rbx, %rsi
movl $0x24, %edx
xorl %ecx, %ecx
movl $0x1, %r8d
callq 0x865d
movq %rax, %rbx
subq %r14, %rax
cmpq $0x80, %rax
jne 0x1abff
movl $0x3, %edi
movl $0x1c, %esi
movl $0x15, %edx
callq 0x76b8
movq %rsp, %rsi
movq %rax, %rdi
movq %rbx, %rdx
callq 0xe727
testb %al, %al
je 0x1ac1e
movl $0x3, %edi
movl $0x1c, %esi
movl $0x25, %edx
callq 0x76b8
movq %rsp, %rsi
movq %rax, %rdi
movq %rbx, %rdx
callq 0xe727
testb %al, %al
je 0x1ac3d
movl $0x3, %edi
movl $0x1c, %esi
movl $0x2e, %edx
callq 0x76b8
movq %rsp, %rsi
movq %rax, %rdi
movq %rbx, %rdx
callq 0xe727
testb %al, %al
je 0x1ac5c
movl $0x3, %edi
movl $0x1c, %esi
movl $0x37, %edx
callq 0x76b8
movq %rsp, %rsi
movq %rax, %rdi
movq %rbx, %rdx
callq 0xe727
testb %al, %al
je 0x1ac7b
movl $0x3, %edi
movl $0x1c, %esi
movl $0x23, %edx
callq 0x76b8
movq %rsp, %rsi
movq %rax, %rdi
movq %rbx, %rdx
callq 0xe727
testb %al, %al
je 0x1ac9a
movl $0x3, %edi
movl $0x1c, %esi
movl $0x2a, %edx
callq 0x76b8
movq %rsp, %rsi
movq %rax, %rdi
movq %rbx, %rdx
callq 0xe727
testb %al, %al
je 0x1acb9
movl $0x3, %edi
movl $0x1c, %esi
movl $0x31, %edx
callq 0x76b8
movq %rsp, %rsi
movq %rax, %rdi
movq %rbx, %rdx
callq 0xe727
testb %al, %al
je 0x1acd8
movl $0x3, %edi
movl $0x1c, %esi
movl $0x38, %edx
callq 0x76b8
movq %rsp, %rsi
movq %rax, %rdi
movq %rbx, %rdx
callq 0xe727
testb %al, %al
je 0x1acf7
movl $0x3, %edi
movl $0x1c, %esi
movl $0x13, %edx
callq 0x76b8
movq %rsp, %rsi
movq %rax, %rdi
movq %rbx, %rdx
callq 0xe727
testb %al, %al
je 0x1ad16
movl $0x3, %edi
movl $0x24, %esi
movl $0x1d, %edx
callq 0x76b8
movq %rsp, %rsi
movq %rax, %rdi
movq %rbx, %rdx
callq 0xe727
testb %al, %al
je 0x1ad35
movl $0x3, %edi
movl $0x24, %esi
movl $0x16, %edx
callq 0x76b8
movq %rsp, %rsi
movq %rax, %rdi
movq %rbx, %rdx
callq 0xe727
testb %al, %al
je 0x1ad54
movl $0x3, %edi
movl $0x24, %esi
movl $0xf, %edx
callq 0x76b8
movq %rsp, %rsi
movq %rax, %rdi
movq %rbx, %rdx
callq 0xe727
testb %al, %al
je 0x1ad73
movl $0x3, %edi
movl $0x24, %esi
movl $0x1b, %edx
callq 0x76b8
movq %rsp, %rsi
movq %rax, %rdi
movq %rbx, %rdx
callq 0xe727
testb %al, %al
je 0x1ad92
movl $0x3, %edi
movl $0x24, %esi
movl $0x12, %edx
callq 0x76b8
movq %rsp, %rsi
movq %rax, %rdi
movq %rbx, %rdx
callq 0xe727
testb %al, %al
je 0x1adb1
movl $0x3, %edi
movl $0x24, %esi
movl $0x9, %edx
callq 0x76b8
movq %rsp, %rsi
movq %rax, %rdi
movq %rbx, %rdx
callq 0xe727
testb %al, %al
je 0x1add0
movl $0x3, %edi
movl $0x24, %esi
xorl %edx, %edx
callq 0x76b8
movq %rsp, %rsi
movq %rax, %rdi
movq %rbx, %rdx
callq 0xe727
testb %al, %al
je 0x1adef
addq $0x268, %rsp            # imm = 0x268
popq %rbx
popq %r14
retq
leaq 0x18793(%rip), %rdi     # 0x33399
leaq 0x180c1(%rip), %rsi     # 0x32cce
leaq 0x18798(%rip), %rcx     # 0x333ac
movl $0x69, %edx
callq 0x20d0
leaq 0x183d2(%rip), %rdi     # 0x32ff7
leaq 0x180a2(%rip), %rsi     # 0x32cce
leaq 0x18779(%rip), %rcx     # 0x333ac
movl $0x6a, %edx
callq 0x20d0
leaq 0x183e3(%rip), %rdi     # 0x33027
leaq 0x18083(%rip), %rsi     # 0x32cce
leaq 0x1875a(%rip), %rcx     # 0x333ac
movl $0x6b, %edx
callq 0x20d0
leaq 0x183f4(%rip), %rdi     # 0x33057
leaq 0x18064(%rip), %rsi     # 0x32cce
leaq 0x1873b(%rip), %rcx     # 0x333ac
movl $0x6c, %edx
callq 0x20d0
leaq 0x18405(%rip), %rdi     # 0x33087
leaq 0x18045(%rip), %rsi     # 0x32cce
leaq 0x1871c(%rip), %rcx     # 0x333ac
movl $0x6d, %edx
callq 0x20d0
leaq 0x18416(%rip), %rdi     # 0x330b7
leaq 0x18026(%rip), %rsi     # 0x32cce
leaq 0x186fd(%rip), %rcx     # 0x333ac
movl $0x6e, %edx
callq 0x20d0
leaq 0x18427(%rip), %rdi     # 0x330e7
leaq 0x18007(%rip), %rsi     # 0x32cce
leaq 0x186de(%rip), %rcx     # 0x333ac
movl $0x6f, %edx
callq 0x20d0
leaq 0x18438(%rip), %rdi     # 0x33117
leaq 0x17fe8(%rip), %rsi     # 0x32cce
leaq 0x186bf(%rip), %rcx     # 0x333ac
movl $0x70, %edx
callq 0x20d0
leaq 0x18449(%rip), %rdi     # 0x33147
leaq 0x17fc9(%rip), %rsi     # 0x32cce
leaq 0x186a0(%rip), %rcx     # 0x333ac
movl $0x71, %edx
callq 0x20d0
leaq 0x1845a(%rip), %rdi     # 0x33177
leaq 0x17faa(%rip), %rsi     # 0x32cce
leaq 0x18681(%rip), %rcx     # 0x333ac
movl $0x72, %edx
callq 0x20d0
leaq 0x184a3(%rip), %rdi     # 0x331df
leaq 0x17f8b(%rip), %rsi     # 0x32cce
leaq 0x18662(%rip), %rcx     # 0x333ac
movl $0x73, %edx
callq 0x20d0
leaq 0x184b4(%rip), %rdi     # 0x3320f
leaq 0x17f6c(%rip), %rsi     # 0x32cce
leaq 0x18643(%rip), %rcx     # 0x333ac
movl $0x74, %edx
callq 0x20d0
leaq 0x184c5(%rip), %rdi     # 0x3323f
leaq 0x17f4d(%rip), %rsi     # 0x32cce
leaq 0x18624(%rip), %rcx     # 0x333ac
movl $0x75, %edx
callq 0x20d0
leaq 0x1850e(%rip), %rdi     # 0x332a7
leaq 0x17f2e(%rip), %rsi     # 0x32cce
leaq 0x18605(%rip), %rcx     # 0x333ac
movl $0x76, %edx
callq 0x20d0
leaq 0x1851f(%rip), %rdi     # 0x332d7
leaq 0x17f0f(%rip), %rsi     # 0x32cce
leaq 0x185e6(%rip), %rcx     # 0x333ac
movl $0x77, %edx
callq 0x20d0
leaq 0x18530(%rip), %rdi     # 0x33307
leaq 0x17ef0(%rip), %rsi     # 0x32cce
leaq 0x185c7(%rip), %rcx     # 0x333ac
movl $0x78, %edx
callq 0x20d0
leaq 0x18541(%rip), %rdi     # 0x33337
leaq 0x17ed1(%rip), %rsi     # 0x32cce
leaq 0x185a8(%rip), %rcx     # 0x333ac
movl $0x79, %edx
callq 0x20d0