// File: /workspace/github_cpp_makefile_star2_O3/jswaff[P]prophet3/test/movegen__test.cpp
// Function: test_gen_queen_noncaptures()
void test_gen_queen_noncaptures() {
    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,false,true);

    assert((mp - moves) == 17);
    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));
}

// Assembly:
pushq %r14
pushq %rbx
subq $0x268, %rsp            # imm = 0x268
leaq 0x17bd7(%rip), %rsi     # 0x336ea
leaq 0xa0(%rsp), %rbx
movq %rbx, %rdi
callq 0xaa82
movq %rsp, %r14
movq %r14, %rdi
movq %rbx, %rsi
movl $0x2e, %edx
xorl %ecx, %ecx
movl $0x1, %r8d
callq 0x8937
movq %rax, %rbx
subq %r14, %rax
cmpq $0x88, %rax
jne 0x1be25
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 0x1be44
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 0x1be63
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 0x1be82
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 0x1bea1
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 0x1bec0
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 0x1bedf
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 0x1befe
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 0x1bf1d
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 0x1bf3c
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 0x1bf5b
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 0x1bf7a
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 0x1bf99
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 0x1bfb8
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 0x1bfd7
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 0x1bff6
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 0x1c015
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 0x1c034
addq $0x268, %rsp            # imm = 0x268
popq %rbx
popq %r14
retq
leaq 0x17c72(%rip), %rdi     # 0x33a9e
leaq 0x16f1b(%rip), %rsi     # 0x32d4e
leaq 0x17c77(%rip), %rcx     # 0x33ab1
movl $0xeb, %edx
callq 0x20d0
leaq 0x178dc(%rip), %rdi     # 0x33727
leaq 0x16efc(%rip), %rsi     # 0x32d4e
leaq 0x17c58(%rip), %rcx     # 0x33ab1
movl $0xec, %edx
callq 0x20d0
leaq 0x178ec(%rip), %rdi     # 0x33756
leaq 0x16edd(%rip), %rsi     # 0x32d4e
leaq 0x17c39(%rip), %rcx     # 0x33ab1
movl $0xed, %edx
callq 0x20d0
leaq 0x178fc(%rip), %rdi     # 0x33785
leaq 0x16ebe(%rip), %rsi     # 0x32d4e
leaq 0x17c1a(%rip), %rcx     # 0x33ab1
movl $0xee, %edx
callq 0x20d0
leaq 0x1790c(%rip), %rdi     # 0x337b4
leaq 0x16e9f(%rip), %rsi     # 0x32d4e
leaq 0x17bfb(%rip), %rcx     # 0x33ab1
movl $0xef, %edx
callq 0x20d0
leaq 0x1791c(%rip), %rdi     # 0x337e3
leaq 0x16e80(%rip), %rsi     # 0x32d4e
leaq 0x17bdc(%rip), %rcx     # 0x33ab1
movl $0xf0, %edx
callq 0x20d0
leaq 0x1792c(%rip), %rdi     # 0x33812
leaq 0x16e61(%rip), %rsi     # 0x32d4e
leaq 0x17bbd(%rip), %rcx     # 0x33ab1
movl $0xf1, %edx
callq 0x20d0
leaq 0x1793c(%rip), %rdi     # 0x33841
leaq 0x16e42(%rip), %rsi     # 0x32d4e
leaq 0x17b9e(%rip), %rcx     # 0x33ab1
movl $0xf2, %edx
callq 0x20d0
leaq 0x1794c(%rip), %rdi     # 0x33870
leaq 0x16e23(%rip), %rsi     # 0x32d4e
leaq 0x17b7f(%rip), %rcx     # 0x33ab1
movl $0xf3, %edx
callq 0x20d0
leaq 0x1795c(%rip), %rdi     # 0x3389f
leaq 0x16e04(%rip), %rsi     # 0x32d4e
leaq 0x17b60(%rip), %rcx     # 0x33ab1
movl $0xf4, %edx
callq 0x20d0
leaq 0x1796c(%rip), %rdi     # 0x338ce
leaq 0x16de5(%rip), %rsi     # 0x32d4e
leaq 0x17b41(%rip), %rcx     # 0x33ab1
movl $0xf5, %edx
callq 0x20d0
leaq 0x1797c(%rip), %rdi     # 0x338fd
leaq 0x16dc6(%rip), %rsi     # 0x32d4e
leaq 0x17b22(%rip), %rcx     # 0x33ab1
movl $0xf6, %edx
callq 0x20d0
leaq 0x1798c(%rip), %rdi     # 0x3392c
leaq 0x16da7(%rip), %rsi     # 0x32d4e
leaq 0x17b03(%rip), %rcx     # 0x33ab1
movl $0xf7, %edx
callq 0x20d0
leaq 0x1799c(%rip), %rdi     # 0x3395b
leaq 0x16d88(%rip), %rsi     # 0x32d4e
leaq 0x17ae4(%rip), %rcx     # 0x33ab1
movl $0xf8, %edx
callq 0x20d0
leaq 0x179ac(%rip), %rdi     # 0x3398a
leaq 0x16d69(%rip), %rsi     # 0x32d4e
leaq 0x17ac5(%rip), %rcx     # 0x33ab1
movl $0xf9, %edx
callq 0x20d0
leaq 0x179bc(%rip), %rdi     # 0x339b9
leaq 0x16d4a(%rip), %rsi     # 0x32d4e
leaq 0x17aa6(%rip), %rcx     # 0x33ab1
movl $0xfa, %edx
callq 0x20d0
leaq 0x179cc(%rip), %rdi     # 0x339e8
leaq 0x16d2b(%rip), %rsi     # 0x32d4e
leaq 0x17a87(%rip), %rcx     # 0x33ab1
movl $0xfb, %edx
callq 0x20d0
leaq 0x179dc(%rip), %rdi     # 0x33a17
leaq 0x16d0c(%rip), %rsi     # 0x32d4e
leaq 0x17a68(%rip), %rcx     # 0x33ab1
movl $0xfc, %edx
callq 0x20d0