// File: /workspace/github_cpp_makefile_star2_O3/jswaff[P]prophet3/test/movegen__test.cpp
// Function: test_gen_queen_moves()
void test_gen_queen_moves() {
    position pos;
    set_pos(&pos,"8/8/3bk3/8/8/2K3Q1/8/8 w - - 0 1");

    move moves[20];
    move *mp = gen_queen_moves(moves,&pos,G3,true,true);

    assert((mp - moves) == 18);
    assert(is_in_move_list(to_move(QUEEN,G3,G4),moves,mp));
    assert(is_in_move_list(to_move(QUEEN,G3,G5),moves,mp));
    assert(is_in_move_list(to_move(QUEEN,G3,G6),moves,mp));
    assert(is_in_move_list(to_move(QUEEN,G3,G7),moves,mp));
    assert(is_in_move_list(to_move(QUEEN,G3,G8),moves,mp));
    assert(is_in_move_list(to_move(QUEEN,G3,H4),moves,mp));
    assert(is_in_move_list(to_move(QUEEN,G3,H3),moves,mp));
    assert(is_in_move_list(to_move(QUEEN,G3,H2),moves,mp));
    assert(is_in_move_list(to_move(QUEEN,G3,G2),moves,mp));
    assert(is_in_move_list(to_move(QUEEN,G3,G1),moves,mp));
    assert(is_in_move_list(to_move(QUEEN,G3,F2),moves,mp));
    assert(is_in_move_list(to_move(QUEEN,G3,E1),moves,mp));
    assert(is_in_move_list(to_move(QUEEN,G3,F3),moves,mp));
    assert(is_in_move_list(to_move(QUEEN,G3,E3),moves,mp));
    assert(is_in_move_list(to_move(QUEEN,G3,D3),moves,mp));
    assert(is_in_move_list(to_move(QUEEN,G3,F4),moves,mp));
    assert(is_in_move_list(to_move(QUEEN,G3,E5),moves,mp));
    assert(is_in_move_list(to_capture(QUEEN,G3,D6,BISHOP),moves,mp));
}

// Assembly:
pushq %r14
pushq %rbx
subq $0x268, %rsp            # imm = 0x268
leaq 0x18235(%rip), %rsi     # 0x336ea
leaq 0xa0(%rsp), %rbx
movq %rbx, %rdi
callq 0xaa82
movq %rsp, %r14
movq %r14, %rdi
movq %rbx, %rsi
movl $0x2e, %edx
movl $0x1, %ecx
movl $0x1, %r8d
callq 0x8937
movq %rax, %rbx
subq %r14, %rax
cmpq $0x90, %rax
jne 0x1b7f9
movl $0x5, %edi
movl $0x2e, %esi
movl $0x26, %edx
callq 0x775c
movq %rsp, %rsi
movq %rax, %rdi
movq %rbx, %rdx
callq 0xe682
testb %al, %al
je 0x1b818
movl $0x5, %edi
movl $0x2e, %esi
movl $0x1e, %edx
callq 0x775c
movq %rsp, %rsi
movq %rax, %rdi
movq %rbx, %rdx
callq 0xe682
testb %al, %al
je 0x1b837
movl $0x5, %edi
movl $0x2e, %esi
movl $0x16, %edx
callq 0x775c
movq %rsp, %rsi
movq %rax, %rdi
movq %rbx, %rdx
callq 0xe682
testb %al, %al
je 0x1b856
movl $0x5, %edi
movl $0x2e, %esi
movl $0xe, %edx
callq 0x775c
movq %rsp, %rsi
movq %rax, %rdi
movq %rbx, %rdx
callq 0xe682
testb %al, %al
je 0x1b875
movl $0x5, %edi
movl $0x2e, %esi
movl $0x6, %edx
callq 0x775c
movq %rsp, %rsi
movq %rax, %rdi
movq %rbx, %rdx
callq 0xe682
testb %al, %al
je 0x1b894
movl $0x5, %edi
movl $0x2e, %esi
movl $0x27, %edx
callq 0x775c
movq %rsp, %rsi
movq %rax, %rdi
movq %rbx, %rdx
callq 0xe682
testb %al, %al
je 0x1b8b3
movl $0x5, %edi
movl $0x2e, %esi
movl $0x2f, %edx
callq 0x775c
movq %rsp, %rsi
movq %rax, %rdi
movq %rbx, %rdx
callq 0xe682
testb %al, %al
je 0x1b8d2
movl $0x5, %edi
movl $0x2e, %esi
movl $0x37, %edx
callq 0x775c
movq %rsp, %rsi
movq %rax, %rdi
movq %rbx, %rdx
callq 0xe682
testb %al, %al
je 0x1b8f1
movl $0x5, %edi
movl $0x2e, %esi
movl $0x36, %edx
callq 0x775c
movq %rsp, %rsi
movq %rax, %rdi
movq %rbx, %rdx
callq 0xe682
testb %al, %al
je 0x1b910
movl $0x5, %edi
movl $0x2e, %esi
movl $0x3e, %edx
callq 0x775c
movq %rsp, %rsi
movq %rax, %rdi
movq %rbx, %rdx
callq 0xe682
testb %al, %al
je 0x1b92f
movl $0x5, %edi
movl $0x2e, %esi
movl $0x35, %edx
callq 0x775c
movq %rsp, %rsi
movq %rax, %rdi
movq %rbx, %rdx
callq 0xe682
testb %al, %al
je 0x1b94e
movl $0x5, %edi
movl $0x2e, %esi
movl $0x3c, %edx
callq 0x775c
movq %rsp, %rsi
movq %rax, %rdi
movq %rbx, %rdx
callq 0xe682
testb %al, %al
je 0x1b96d
movl $0x5, %edi
movl $0x2e, %esi
movl $0x2d, %edx
callq 0x775c
movq %rsp, %rsi
movq %rax, %rdi
movq %rbx, %rdx
callq 0xe682
testb %al, %al
je 0x1b98c
movl $0x5, %edi
movl $0x2e, %esi
movl $0x2c, %edx
callq 0x775c
movq %rsp, %rsi
movq %rax, %rdi
movq %rbx, %rdx
callq 0xe682
testb %al, %al
je 0x1b9ab
movl $0x5, %edi
movl $0x2e, %esi
movl $0x2b, %edx
callq 0x775c
movq %rsp, %rsi
movq %rax, %rdi
movq %rbx, %rdx
callq 0xe682
testb %al, %al
je 0x1b9ca
movl $0x5, %edi
movl $0x2e, %esi
movl $0x25, %edx
callq 0x775c
movq %rsp, %rsi
movq %rax, %rdi
movq %rbx, %rdx
callq 0xe682
testb %al, %al
je 0x1b9e9
movl $0x5, %edi
movl $0x2e, %esi
movl $0x1c, %edx
callq 0x775c
movq %rsp, %rsi
movq %rax, %rdi
movq %rbx, %rdx
callq 0xe682
testb %al, %al
je 0x1ba08
movl $0x5, %edi
movl $0x2e, %esi
movl $0x13, %edx
movl $0x3, %ecx
callq 0x777b
movq %rsp, %rsi
movq %rax, %rdi
movq %rbx, %rdx
callq 0xe682
testb %al, %al
je 0x1ba27
addq $0x268, %rsp            # imm = 0x268
popq %rbx
popq %r14
retq
leaq 0x17847(%rip), %rdi     # 0x33047
leaq 0x17547(%rip), %rsi     # 0x32d4e
leaq 0x17efd(%rip), %rcx     # 0x3370b
movl $0xc4, %edx
callq 0x20d0
leaq 0x17f08(%rip), %rdi     # 0x33727
leaq 0x17528(%rip), %rsi     # 0x32d4e
leaq 0x17ede(%rip), %rcx     # 0x3370b
movl $0xc5, %edx
callq 0x20d0
leaq 0x17f18(%rip), %rdi     # 0x33756
leaq 0x17509(%rip), %rsi     # 0x32d4e
leaq 0x17ebf(%rip), %rcx     # 0x3370b
movl $0xc6, %edx
callq 0x20d0
leaq 0x17f28(%rip), %rdi     # 0x33785
leaq 0x174ea(%rip), %rsi     # 0x32d4e
leaq 0x17ea0(%rip), %rcx     # 0x3370b
movl $0xc7, %edx
callq 0x20d0
leaq 0x17f38(%rip), %rdi     # 0x337b4
leaq 0x174cb(%rip), %rsi     # 0x32d4e
leaq 0x17e81(%rip), %rcx     # 0x3370b
movl $0xc8, %edx
callq 0x20d0
leaq 0x17f48(%rip), %rdi     # 0x337e3
leaq 0x174ac(%rip), %rsi     # 0x32d4e
leaq 0x17e62(%rip), %rcx     # 0x3370b
movl $0xc9, %edx
callq 0x20d0
leaq 0x17f58(%rip), %rdi     # 0x33812
leaq 0x1748d(%rip), %rsi     # 0x32d4e
leaq 0x17e43(%rip), %rcx     # 0x3370b
movl $0xca, %edx
callq 0x20d0
leaq 0x17f68(%rip), %rdi     # 0x33841
leaq 0x1746e(%rip), %rsi     # 0x32d4e
leaq 0x17e24(%rip), %rcx     # 0x3370b
movl $0xcb, %edx
callq 0x20d0
leaq 0x17f78(%rip), %rdi     # 0x33870
leaq 0x1744f(%rip), %rsi     # 0x32d4e
leaq 0x17e05(%rip), %rcx     # 0x3370b
movl $0xcc, %edx
callq 0x20d0
leaq 0x17f88(%rip), %rdi     # 0x3389f
leaq 0x17430(%rip), %rsi     # 0x32d4e
leaq 0x17de6(%rip), %rcx     # 0x3370b
movl $0xcd, %edx
callq 0x20d0
leaq 0x17f98(%rip), %rdi     # 0x338ce
leaq 0x17411(%rip), %rsi     # 0x32d4e
leaq 0x17dc7(%rip), %rcx     # 0x3370b
movl $0xce, %edx
callq 0x20d0
leaq 0x17fa8(%rip), %rdi     # 0x338fd
leaq 0x173f2(%rip), %rsi     # 0x32d4e
leaq 0x17da8(%rip), %rcx     # 0x3370b
movl $0xcf, %edx
callq 0x20d0
leaq 0x17fb8(%rip), %rdi     # 0x3392c
leaq 0x173d3(%rip), %rsi     # 0x32d4e
leaq 0x17d89(%rip), %rcx     # 0x3370b
movl $0xd0, %edx
callq 0x20d0
leaq 0x17fc8(%rip), %rdi     # 0x3395b
leaq 0x173b4(%rip), %rsi     # 0x32d4e
leaq 0x17d6a(%rip), %rcx     # 0x3370b
movl $0xd1, %edx
callq 0x20d0
leaq 0x17fd8(%rip), %rdi     # 0x3398a
leaq 0x17395(%rip), %rsi     # 0x32d4e
leaq 0x17d4b(%rip), %rcx     # 0x3370b
movl $0xd2, %edx
callq 0x20d0
leaq 0x17fe8(%rip), %rdi     # 0x339b9
leaq 0x17376(%rip), %rsi     # 0x32d4e
leaq 0x17d2c(%rip), %rcx     # 0x3370b
movl $0xd3, %edx
callq 0x20d0
leaq 0x17ff8(%rip), %rdi     # 0x339e8
leaq 0x17357(%rip), %rsi     # 0x32d4e
leaq 0x17d0d(%rip), %rcx     # 0x3370b
movl $0xd4, %edx
callq 0x20d0
leaq 0x18008(%rip), %rdi     # 0x33a17
leaq 0x17338(%rip), %rsi     # 0x32d4e
leaq 0x17cee(%rip), %rcx     # 0x3370b
movl $0xd5, %edx
callq 0x20d0
leaq 0x18018(%rip), %rdi     # 0x33a46
leaq 0x17319(%rip), %rsi     # 0x32d4e
leaq 0x17ccf(%rip), %rcx     # 0x3370b
movl $0xd6, %edx
callq 0x20d0