// File: /workspace/github_cpp_makefile_star2_O2/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 0x17c5f(%rip), %rsi     # 0x317ad
leaq 0xa0(%rsp), %rbx
movq %rbx, %rdi
callq 0xa1b8
movq %rsp, %r14
pushq $0x2e
popq %rdx
pushq $0x1
popq %rcx
movq %r14, %rdi
movq %rbx, %rsi
movl %ecx, %r8d
callq 0x8292
movq %rax, %rbx
subq %r14, %rax
cmpq $0x90, %rax
jne 0x19e1d
pushq $0x5
popq %rdi
pushq $0x2e
popq %rsi
pushq $0x26
popq %rdx
callq 0x7284
movq %rsp, %rsi
movq %rax, %rdi
movq %rbx, %rdx
callq 0xdacb
testb %al, %al
je 0x19e3c
pushq $0x5
popq %rdi
pushq $0x2e
popq %rsi
pushq $0x1e
popq %rdx
callq 0x7284
movq %rsp, %rsi
movq %rax, %rdi
movq %rbx, %rdx
callq 0xdacb
testb %al, %al
je 0x19e5b
pushq $0x5
popq %rdi
pushq $0x2e
popq %rsi
pushq $0x16
popq %rdx
callq 0x7284
movq %rsp, %rsi
movq %rax, %rdi
movq %rbx, %rdx
callq 0xdacb
testb %al, %al
je 0x19e7a
pushq $0x5
popq %rdi
pushq $0x2e
popq %rsi
pushq $0xe
popq %rdx
callq 0x7284
movq %rsp, %rsi
movq %rax, %rdi
movq %rbx, %rdx
callq 0xdacb
testb %al, %al
je 0x19e99
pushq $0x5
popq %rdi
pushq $0x2e
popq %rsi
pushq $0x6
popq %rdx
callq 0x7284
movq %rsp, %rsi
movq %rax, %rdi
movq %rbx, %rdx
callq 0xdacb
testb %al, %al
je 0x19eb8
pushq $0x5
popq %rdi
pushq $0x2e
popq %rsi
pushq $0x27
popq %rdx
callq 0x7284
movq %rsp, %rsi
movq %rax, %rdi
movq %rbx, %rdx
callq 0xdacb
testb %al, %al
je 0x19ed7
pushq $0x5
popq %rdi
pushq $0x2e
popq %rsi
pushq $0x2f
popq %rdx
callq 0x7284
movq %rsp, %rsi
movq %rax, %rdi
movq %rbx, %rdx
callq 0xdacb
testb %al, %al
je 0x19ef6
pushq $0x5
popq %rdi
pushq $0x2e
popq %rsi
pushq $0x37
popq %rdx
callq 0x7284
movq %rsp, %rsi
movq %rax, %rdi
movq %rbx, %rdx
callq 0xdacb
testb %al, %al
je 0x19f15
pushq $0x5
popq %rdi
pushq $0x2e
popq %rsi
pushq $0x36
popq %rdx
callq 0x7284
movq %rsp, %rsi
movq %rax, %rdi
movq %rbx, %rdx
callq 0xdacb
testb %al, %al
je 0x19f34
pushq $0x5
popq %rdi
pushq $0x2e
popq %rsi
pushq $0x3e
popq %rdx
callq 0x7284
movq %rsp, %rsi
movq %rax, %rdi
movq %rbx, %rdx
callq 0xdacb
testb %al, %al
je 0x19f53
pushq $0x5
popq %rdi
pushq $0x2e
popq %rsi
pushq $0x35
popq %rdx
callq 0x7284
movq %rsp, %rsi
movq %rax, %rdi
movq %rbx, %rdx
callq 0xdacb
testb %al, %al
je 0x19f72
pushq $0x5
popq %rdi
pushq $0x2e
popq %rsi
pushq $0x3c
popq %rdx
callq 0x7284
movq %rsp, %rsi
movq %rax, %rdi
movq %rbx, %rdx
callq 0xdacb
testb %al, %al
je 0x19f91
pushq $0x5
popq %rdi
pushq $0x2e
popq %rsi
pushq $0x2d
popq %rdx
callq 0x7284
movq %rsp, %rsi
movq %rax, %rdi
movq %rbx, %rdx
callq 0xdacb
testb %al, %al
je 0x19fb0
pushq $0x5
popq %rdi
pushq $0x2e
popq %rsi
pushq $0x2c
popq %rdx
callq 0x7284
movq %rsp, %rsi
movq %rax, %rdi
movq %rbx, %rdx
callq 0xdacb
testb %al, %al
je 0x19fcf
pushq $0x5
popq %rdi
pushq $0x2e
popq %rsi
pushq $0x2b
popq %rdx
callq 0x7284
movq %rsp, %rsi
movq %rax, %rdi
movq %rbx, %rdx
callq 0xdacb
testb %al, %al
je 0x19fee
pushq $0x5
popq %rdi
pushq $0x2e
popq %rsi
pushq $0x25
popq %rdx
callq 0x7284
movq %rsp, %rsi
movq %rax, %rdi
movq %rbx, %rdx
callq 0xdacb
testb %al, %al
je 0x1a00d
pushq $0x5
popq %rdi
pushq $0x2e
popq %rsi
pushq $0x1c
popq %rdx
callq 0x7284
movq %rsp, %rsi
movq %rax, %rdi
movq %rbx, %rdx
callq 0xdacb
testb %al, %al
je 0x1a02c
pushq $0x5
popq %rdi
pushq $0x2e
popq %rsi
pushq $0x13
popq %rdx
pushq $0x3
popq %rcx
callq 0x72a3
movq %rsp, %rsi
movq %rax, %rdi
movq %rbx, %rdx
callq 0xdacb
testb %al, %al
je 0x1a04b
addq $0x268, %rsp            # imm = 0x268
popq %rbx
popq %r14
retq
leaq 0x172e6(%rip), %rdi     # 0x3110a
leaq 0x16fe6(%rip), %rsi     # 0x30e11
leaq 0x1799c(%rip), %rcx     # 0x317ce
movl $0xc4, %edx
callq 0x20c0
leaq 0x179a7(%rip), %rdi     # 0x317ea
leaq 0x16fc7(%rip), %rsi     # 0x30e11
leaq 0x1797d(%rip), %rcx     # 0x317ce
movl $0xc5, %edx
callq 0x20c0
leaq 0x179b7(%rip), %rdi     # 0x31819
leaq 0x16fa8(%rip), %rsi     # 0x30e11
leaq 0x1795e(%rip), %rcx     # 0x317ce
movl $0xc6, %edx
callq 0x20c0
leaq 0x179c7(%rip), %rdi     # 0x31848
leaq 0x16f89(%rip), %rsi     # 0x30e11
leaq 0x1793f(%rip), %rcx     # 0x317ce
movl $0xc7, %edx
callq 0x20c0
leaq 0x179d7(%rip), %rdi     # 0x31877
leaq 0x16f6a(%rip), %rsi     # 0x30e11
leaq 0x17920(%rip), %rcx     # 0x317ce
movl $0xc8, %edx
callq 0x20c0
leaq 0x179e7(%rip), %rdi     # 0x318a6
leaq 0x16f4b(%rip), %rsi     # 0x30e11
leaq 0x17901(%rip), %rcx     # 0x317ce
movl $0xc9, %edx
callq 0x20c0
leaq 0x179f7(%rip), %rdi     # 0x318d5
leaq 0x16f2c(%rip), %rsi     # 0x30e11
leaq 0x178e2(%rip), %rcx     # 0x317ce
movl $0xca, %edx
callq 0x20c0
leaq 0x17a07(%rip), %rdi     # 0x31904
leaq 0x16f0d(%rip), %rsi     # 0x30e11
leaq 0x178c3(%rip), %rcx     # 0x317ce
movl $0xcb, %edx
callq 0x20c0
leaq 0x17a17(%rip), %rdi     # 0x31933
leaq 0x16eee(%rip), %rsi     # 0x30e11
leaq 0x178a4(%rip), %rcx     # 0x317ce
movl $0xcc, %edx
callq 0x20c0
leaq 0x17a27(%rip), %rdi     # 0x31962
leaq 0x16ecf(%rip), %rsi     # 0x30e11
leaq 0x17885(%rip), %rcx     # 0x317ce
movl $0xcd, %edx
callq 0x20c0
leaq 0x17a37(%rip), %rdi     # 0x31991
leaq 0x16eb0(%rip), %rsi     # 0x30e11
leaq 0x17866(%rip), %rcx     # 0x317ce
movl $0xce, %edx
callq 0x20c0
leaq 0x17a47(%rip), %rdi     # 0x319c0
leaq 0x16e91(%rip), %rsi     # 0x30e11
leaq 0x17847(%rip), %rcx     # 0x317ce
movl $0xcf, %edx
callq 0x20c0
leaq 0x17a57(%rip), %rdi     # 0x319ef
leaq 0x16e72(%rip), %rsi     # 0x30e11
leaq 0x17828(%rip), %rcx     # 0x317ce
movl $0xd0, %edx
callq 0x20c0
leaq 0x17a67(%rip), %rdi     # 0x31a1e
leaq 0x16e53(%rip), %rsi     # 0x30e11
leaq 0x17809(%rip), %rcx     # 0x317ce
movl $0xd1, %edx
callq 0x20c0
leaq 0x17a77(%rip), %rdi     # 0x31a4d
leaq 0x16e34(%rip), %rsi     # 0x30e11
leaq 0x177ea(%rip), %rcx     # 0x317ce
movl $0xd2, %edx
callq 0x20c0
leaq 0x17a87(%rip), %rdi     # 0x31a7c
leaq 0x16e15(%rip), %rsi     # 0x30e11
leaq 0x177cb(%rip), %rcx     # 0x317ce
movl $0xd3, %edx
callq 0x20c0
leaq 0x17a97(%rip), %rdi     # 0x31aab
leaq 0x16df6(%rip), %rsi     # 0x30e11
leaq 0x177ac(%rip), %rcx     # 0x317ce
movl $0xd4, %edx
callq 0x20c0
leaq 0x17aa7(%rip), %rdi     # 0x31ada
leaq 0x16dd7(%rip), %rsi     # 0x30e11
leaq 0x1778d(%rip), %rcx     # 0x317ce
movl $0xd5, %edx
callq 0x20c0
leaq 0x17ab7(%rip), %rdi     # 0x31b09
leaq 0x16db8(%rip), %rsi     # 0x30e11
leaq 0x1776e(%rip), %rcx     # 0x317ce
movl $0xd6, %edx
callq 0x20c0