// File: /workspace/github_cpp_makefile_star2_O2/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 %rbp
pushq %r14
pushq %rbx
subq $0x270, %rsp            # imm = 0x270
leaq 0x18178(%rip), %rsi     # 0x310e0
leaq 0xa8(%rsp), %rbx
movq %rbx, %rdi
callq 0xa1b8
movq %rsp, %r14
pushq $0x1c
popq %rdx
pushq $0x1
popq %rbp
movq %r14, %rdi
movq %rbx, %rsi
xorl %ecx, %ecx
movl %ebp, %r8d
callq 0x80ac
pushq $0x24
popq %rdx
movq %rax, %rdi
movq %rbx, %rsi
xorl %ecx, %ecx
movl %ebp, %r8d
callq 0x80ac
movq %rax, %rbx
subq %r14, %rax
cmpq $0x80, %rax
jne 0x19201
pushq $0x3
popq %rdi
pushq $0x1c
popq %rsi
pushq $0x15
popq %rdx
callq 0x7284
movq %rsp, %rsi
movq %rax, %rdi
movq %rbx, %rdx
callq 0xdacb
testb %al, %al
je 0x1921d
pushq $0x3
popq %rdi
pushq $0x1c
popq %rsi
pushq $0x25
popq %rdx
callq 0x7284
movq %rsp, %rsi
movq %rax, %rdi
movq %rbx, %rdx
callq 0xdacb
testb %al, %al
je 0x19239
pushq $0x3
popq %rdi
pushq $0x1c
popq %rsi
pushq $0x2e
popq %rdx
callq 0x7284
movq %rsp, %rsi
movq %rax, %rdi
movq %rbx, %rdx
callq 0xdacb
testb %al, %al
je 0x19255
pushq $0x3
popq %rdi
pushq $0x1c
popq %rsi
pushq $0x37
popq %rdx
callq 0x7284
movq %rsp, %rsi
movq %rax, %rdi
movq %rbx, %rdx
callq 0xdacb
testb %al, %al
je 0x19271
pushq $0x3
popq %rdi
pushq $0x1c
popq %rsi
pushq $0x23
popq %rdx
callq 0x7284
movq %rsp, %rsi
movq %rax, %rdi
movq %rbx, %rdx
callq 0xdacb
testb %al, %al
je 0x1928d
pushq $0x3
popq %rdi
pushq $0x1c
popq %rsi
pushq $0x2a
popq %rdx
callq 0x7284
movq %rsp, %rsi
movq %rax, %rdi
movq %rbx, %rdx
callq 0xdacb
testb %al, %al
je 0x192a9
pushq $0x3
popq %rdi
pushq $0x1c
popq %rsi
pushq $0x31
popq %rdx
callq 0x7284
movq %rsp, %rsi
movq %rax, %rdi
movq %rbx, %rdx
callq 0xdacb
testb %al, %al
je 0x192c5
pushq $0x3
popq %rdi
pushq $0x1c
popq %rsi
pushq $0x38
popq %rdx
callq 0x7284
movq %rsp, %rsi
movq %rax, %rdi
movq %rbx, %rdx
callq 0xdacb
testb %al, %al
je 0x192e1
pushq $0x3
popq %rdi
pushq $0x1c
popq %rsi
pushq $0x13
popq %rdx
callq 0x7284
movq %rsp, %rsi
movq %rax, %rdi
movq %rbx, %rdx
callq 0xdacb
testb %al, %al
je 0x192fd
pushq $0x3
popq %rdi
pushq $0x24
popq %rsi
pushq $0x1d
popq %rdx
callq 0x7284
movq %rsp, %rsi
movq %rax, %rdi
movq %rbx, %rdx
callq 0xdacb
testb %al, %al
je 0x19319
pushq $0x3
popq %rdi
pushq $0x24
popq %rsi
pushq $0x16
popq %rdx
callq 0x7284
movq %rsp, %rsi
movq %rax, %rdi
movq %rbx, %rdx
callq 0xdacb
testb %al, %al
je 0x19335
pushq $0x3
popq %rdi
pushq $0x24
popq %rsi
pushq $0xf
popq %rdx
callq 0x7284
movq %rsp, %rsi
movq %rax, %rdi
movq %rbx, %rdx
callq 0xdacb
testb %al, %al
je 0x1934e
pushq $0x3
popq %rdi
pushq $0x24
popq %rsi
pushq $0x1b
popq %rdx
callq 0x7284
movq %rsp, %rsi
movq %rax, %rdi
movq %rbx, %rdx
callq 0xdacb
testb %al, %al
je 0x19367
pushq $0x3
popq %rdi
pushq $0x24
popq %rsi
pushq $0x12
popq %rdx
callq 0x7284
movq %rsp, %rsi
movq %rax, %rdi
movq %rbx, %rdx
callq 0xdacb
testb %al, %al
je 0x19380
pushq $0x3
popq %rdi
pushq $0x24
popq %rsi
pushq $0x9
popq %rdx
callq 0x7284
movq %rsp, %rsi
movq %rax, %rdi
movq %rbx, %rdx
callq 0xdacb
testb %al, %al
je 0x19399
pushq $0x3
popq %rdi
pushq $0x24
popq %rsi
xorl %edx, %edx
callq 0x7284
movq %rsp, %rsi
movq %rax, %rdi
movq %rbx, %rdx
callq 0xdacb
testb %al, %al
je 0x193b2
addq $0x270, %rsp            # imm = 0x270
popq %rbx
popq %r14
popq %rbp
retq
leaq 0x182d4(%rip), %rdi     # 0x314dc
leaq 0x17c02(%rip), %rsi     # 0x30e11
leaq 0x182d9(%rip), %rcx     # 0x314ef
pushq $0x69
jmp 0x193c9
leaq 0x17f16(%rip), %rdi     # 0x3113a
leaq 0x17be6(%rip), %rsi     # 0x30e11
leaq 0x182bd(%rip), %rcx     # 0x314ef
pushq $0x6a
jmp 0x193c9
leaq 0x17f2a(%rip), %rdi     # 0x3116a
leaq 0x17bca(%rip), %rsi     # 0x30e11
leaq 0x182a1(%rip), %rcx     # 0x314ef
pushq $0x6b
jmp 0x193c9
leaq 0x17f3e(%rip), %rdi     # 0x3119a
leaq 0x17bae(%rip), %rsi     # 0x30e11
leaq 0x18285(%rip), %rcx     # 0x314ef
pushq $0x6c
jmp 0x193c9
leaq 0x17f52(%rip), %rdi     # 0x311ca
leaq 0x17b92(%rip), %rsi     # 0x30e11
leaq 0x18269(%rip), %rcx     # 0x314ef
pushq $0x6d
jmp 0x193c9
leaq 0x17f66(%rip), %rdi     # 0x311fa
leaq 0x17b76(%rip), %rsi     # 0x30e11
leaq 0x1824d(%rip), %rcx     # 0x314ef
pushq $0x6e
jmp 0x193c9
leaq 0x17f7a(%rip), %rdi     # 0x3122a
leaq 0x17b5a(%rip), %rsi     # 0x30e11
leaq 0x18231(%rip), %rcx     # 0x314ef
pushq $0x6f
jmp 0x193c9
leaq 0x17f8e(%rip), %rdi     # 0x3125a
leaq 0x17b3e(%rip), %rsi     # 0x30e11
leaq 0x18215(%rip), %rcx     # 0x314ef
pushq $0x70
jmp 0x193c9
leaq 0x17fa2(%rip), %rdi     # 0x3128a
leaq 0x17b22(%rip), %rsi     # 0x30e11
leaq 0x181f9(%rip), %rcx     # 0x314ef
pushq $0x71
jmp 0x193c9
leaq 0x17fb6(%rip), %rdi     # 0x312ba
leaq 0x17b06(%rip), %rsi     # 0x30e11
leaq 0x181dd(%rip), %rcx     # 0x314ef
pushq $0x72
jmp 0x193c9
leaq 0x18002(%rip), %rdi     # 0x31322
leaq 0x17aea(%rip), %rsi     # 0x30e11
leaq 0x181c1(%rip), %rcx     # 0x314ef
pushq $0x73
jmp 0x193c9
leaq 0x18016(%rip), %rdi     # 0x31352
leaq 0x17ace(%rip), %rsi     # 0x30e11
leaq 0x181a5(%rip), %rcx     # 0x314ef
pushq $0x74
jmp 0x193c9
leaq 0x1802d(%rip), %rdi     # 0x31382
leaq 0x17ab5(%rip), %rsi     # 0x30e11
leaq 0x1818c(%rip), %rcx     # 0x314ef
pushq $0x75
jmp 0x193c9
leaq 0x1807c(%rip), %rdi     # 0x313ea
leaq 0x17a9c(%rip), %rsi     # 0x30e11
leaq 0x18173(%rip), %rcx     # 0x314ef
pushq $0x76
jmp 0x193c9
leaq 0x18093(%rip), %rdi     # 0x3141a
leaq 0x17a83(%rip), %rsi     # 0x30e11
leaq 0x1815a(%rip), %rcx     # 0x314ef
pushq $0x77
jmp 0x193c9
leaq 0x180aa(%rip), %rdi     # 0x3144a
leaq 0x17a6a(%rip), %rsi     # 0x30e11
leaq 0x18141(%rip), %rcx     # 0x314ef
pushq $0x78
jmp 0x193c9
leaq 0x180c1(%rip), %rdi     # 0x3147a
leaq 0x17a51(%rip), %rsi     # 0x30e11
leaq 0x18128(%rip), %rcx     # 0x314ef
pushq $0x79
popq %rdx
callq 0x20c0