// File: /workspace/github_cpp_makefile_star2_O1/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 0x18041(%rip), %rsi     # 0x3366a
leaq 0xa0(%rsp), %rbx
movq %rbx, %rdi
callq 0xaa74
movq %rsp, %r14
movq %r14, %rdi
movq %rbx, %rsi
movl $0x2e, %edx
movl $0x1, %ecx
movl $0x1, %r8d
callq 0x88a3
movq %rax, %rbx
subq %r14, %rax
cmpq $0x90, %rax
jne 0x1b96d
movl $0x5, %edi
movl $0x2e, %esi
movl $0x26, %edx
callq 0x76b8
movq %rsp, %rsi
movq %rax, %rdi
movq %rbx, %rdx
callq 0xe727
testb %al, %al
je 0x1b98c
movl $0x5, %edi
movl $0x2e, %esi
movl $0x1e, %edx
callq 0x76b8
movq %rsp, %rsi
movq %rax, %rdi
movq %rbx, %rdx
callq 0xe727
testb %al, %al
je 0x1b9ab
movl $0x5, %edi
movl $0x2e, %esi
movl $0x16, %edx
callq 0x76b8
movq %rsp, %rsi
movq %rax, %rdi
movq %rbx, %rdx
callq 0xe727
testb %al, %al
je 0x1b9ca
movl $0x5, %edi
movl $0x2e, %esi
movl $0xe, %edx
callq 0x76b8
movq %rsp, %rsi
movq %rax, %rdi
movq %rbx, %rdx
callq 0xe727
testb %al, %al
je 0x1b9e9
movl $0x5, %edi
movl $0x2e, %esi
movl $0x6, %edx
callq 0x76b8
movq %rsp, %rsi
movq %rax, %rdi
movq %rbx, %rdx
callq 0xe727
testb %al, %al
je 0x1ba08
movl $0x5, %edi
movl $0x2e, %esi
movl $0x27, %edx
callq 0x76b8
movq %rsp, %rsi
movq %rax, %rdi
movq %rbx, %rdx
callq 0xe727
testb %al, %al
je 0x1ba27
movl $0x5, %edi
movl $0x2e, %esi
movl $0x2f, %edx
callq 0x76b8
movq %rsp, %rsi
movq %rax, %rdi
movq %rbx, %rdx
callq 0xe727
testb %al, %al
je 0x1ba46
movl $0x5, %edi
movl $0x2e, %esi
movl $0x37, %edx
callq 0x76b8
movq %rsp, %rsi
movq %rax, %rdi
movq %rbx, %rdx
callq 0xe727
testb %al, %al
je 0x1ba65
movl $0x5, %edi
movl $0x2e, %esi
movl $0x36, %edx
callq 0x76b8
movq %rsp, %rsi
movq %rax, %rdi
movq %rbx, %rdx
callq 0xe727
testb %al, %al
je 0x1ba84
movl $0x5, %edi
movl $0x2e, %esi
movl $0x3e, %edx
callq 0x76b8
movq %rsp, %rsi
movq %rax, %rdi
movq %rbx, %rdx
callq 0xe727
testb %al, %al
je 0x1baa3
movl $0x5, %edi
movl $0x2e, %esi
movl $0x35, %edx
callq 0x76b8
movq %rsp, %rsi
movq %rax, %rdi
movq %rbx, %rdx
callq 0xe727
testb %al, %al
je 0x1bac2
movl $0x5, %edi
movl $0x2e, %esi
movl $0x3c, %edx
callq 0x76b8
movq %rsp, %rsi
movq %rax, %rdi
movq %rbx, %rdx
callq 0xe727
testb %al, %al
je 0x1bae1
movl $0x5, %edi
movl $0x2e, %esi
movl $0x2d, %edx
callq 0x76b8
movq %rsp, %rsi
movq %rax, %rdi
movq %rbx, %rdx
callq 0xe727
testb %al, %al
je 0x1bb00
movl $0x5, %edi
movl $0x2e, %esi
movl $0x2c, %edx
callq 0x76b8
movq %rsp, %rsi
movq %rax, %rdi
movq %rbx, %rdx
callq 0xe727
testb %al, %al
je 0x1bb1f
movl $0x5, %edi
movl $0x2e, %esi
movl $0x2b, %edx
callq 0x76b8
movq %rsp, %rsi
movq %rax, %rdi
movq %rbx, %rdx
callq 0xe727
testb %al, %al
je 0x1bb3e
movl $0x5, %edi
movl $0x2e, %esi
movl $0x25, %edx
callq 0x76b8
movq %rsp, %rsi
movq %rax, %rdi
movq %rbx, %rdx
callq 0xe727
testb %al, %al
je 0x1bb5d
movl $0x5, %edi
movl $0x2e, %esi
movl $0x1c, %edx
callq 0x76b8
movq %rsp, %rsi
movq %rax, %rdi
movq %rbx, %rdx
callq 0xe727
testb %al, %al
je 0x1bb7c
movl $0x5, %edi
movl $0x2e, %esi
movl $0x13, %edx
movl $0x3, %ecx
callq 0x76d7
movq %rsp, %rsi
movq %rax, %rdi
movq %rbx, %rdx
callq 0xe727
testb %al, %al
je 0x1bb9b
addq $0x268, %rsp            # imm = 0x268
popq %rbx
popq %r14
retq
leaq 0x17653(%rip), %rdi     # 0x32fc7
leaq 0x17353(%rip), %rsi     # 0x32cce
leaq 0x17d09(%rip), %rcx     # 0x3368b
movl $0xc4, %edx
callq 0x20d0
leaq 0x17d14(%rip), %rdi     # 0x336a7
leaq 0x17334(%rip), %rsi     # 0x32cce
leaq 0x17cea(%rip), %rcx     # 0x3368b
movl $0xc5, %edx
callq 0x20d0
leaq 0x17d24(%rip), %rdi     # 0x336d6
leaq 0x17315(%rip), %rsi     # 0x32cce
leaq 0x17ccb(%rip), %rcx     # 0x3368b
movl $0xc6, %edx
callq 0x20d0
leaq 0x17d34(%rip), %rdi     # 0x33705
leaq 0x172f6(%rip), %rsi     # 0x32cce
leaq 0x17cac(%rip), %rcx     # 0x3368b
movl $0xc7, %edx
callq 0x20d0
leaq 0x17d44(%rip), %rdi     # 0x33734
leaq 0x172d7(%rip), %rsi     # 0x32cce
leaq 0x17c8d(%rip), %rcx     # 0x3368b
movl $0xc8, %edx
callq 0x20d0
leaq 0x17d54(%rip), %rdi     # 0x33763
leaq 0x172b8(%rip), %rsi     # 0x32cce
leaq 0x17c6e(%rip), %rcx     # 0x3368b
movl $0xc9, %edx
callq 0x20d0
leaq 0x17d64(%rip), %rdi     # 0x33792
leaq 0x17299(%rip), %rsi     # 0x32cce
leaq 0x17c4f(%rip), %rcx     # 0x3368b
movl $0xca, %edx
callq 0x20d0
leaq 0x17d74(%rip), %rdi     # 0x337c1
leaq 0x1727a(%rip), %rsi     # 0x32cce
leaq 0x17c30(%rip), %rcx     # 0x3368b
movl $0xcb, %edx
callq 0x20d0
leaq 0x17d84(%rip), %rdi     # 0x337f0
leaq 0x1725b(%rip), %rsi     # 0x32cce
leaq 0x17c11(%rip), %rcx     # 0x3368b
movl $0xcc, %edx
callq 0x20d0
leaq 0x17d94(%rip), %rdi     # 0x3381f
leaq 0x1723c(%rip), %rsi     # 0x32cce
leaq 0x17bf2(%rip), %rcx     # 0x3368b
movl $0xcd, %edx
callq 0x20d0
leaq 0x17da4(%rip), %rdi     # 0x3384e
leaq 0x1721d(%rip), %rsi     # 0x32cce
leaq 0x17bd3(%rip), %rcx     # 0x3368b
movl $0xce, %edx
callq 0x20d0
leaq 0x17db4(%rip), %rdi     # 0x3387d
leaq 0x171fe(%rip), %rsi     # 0x32cce
leaq 0x17bb4(%rip), %rcx     # 0x3368b
movl $0xcf, %edx
callq 0x20d0
leaq 0x17dc4(%rip), %rdi     # 0x338ac
leaq 0x171df(%rip), %rsi     # 0x32cce
leaq 0x17b95(%rip), %rcx     # 0x3368b
movl $0xd0, %edx
callq 0x20d0
leaq 0x17dd4(%rip), %rdi     # 0x338db
leaq 0x171c0(%rip), %rsi     # 0x32cce
leaq 0x17b76(%rip), %rcx     # 0x3368b
movl $0xd1, %edx
callq 0x20d0
leaq 0x17de4(%rip), %rdi     # 0x3390a
leaq 0x171a1(%rip), %rsi     # 0x32cce
leaq 0x17b57(%rip), %rcx     # 0x3368b
movl $0xd2, %edx
callq 0x20d0
leaq 0x17df4(%rip), %rdi     # 0x33939
leaq 0x17182(%rip), %rsi     # 0x32cce
leaq 0x17b38(%rip), %rcx     # 0x3368b
movl $0xd3, %edx
callq 0x20d0
leaq 0x17e04(%rip), %rdi     # 0x33968
leaq 0x17163(%rip), %rsi     # 0x32cce
leaq 0x17b19(%rip), %rcx     # 0x3368b
movl $0xd4, %edx
callq 0x20d0
leaq 0x17e14(%rip), %rdi     # 0x33997
leaq 0x17144(%rip), %rsi     # 0x32cce
leaq 0x17afa(%rip), %rcx     # 0x3368b
movl $0xd5, %edx
callq 0x20d0
leaq 0x17e24(%rip), %rdi     # 0x339c6
leaq 0x17125(%rip), %rsi     # 0x32cce
leaq 0x17adb(%rip), %rcx     # 0x3368b
movl $0xd6, %edx
callq 0x20d0