// File: 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 %rbp
movq %rsp, %rbp
subq $0x280, %rsp            # imm = 0x280
leaq -0x1c8(%rbp), %rdi
leaq 0x1a5f3(%rip), %rsi     # 0x3ff8c
callq 0xf3e0
leaq -0x270(%rbp), %rdi
leaq -0x1c8(%rbp), %rsi
movl $0x2e, %edx
xorl %ecx, %ecx
movl $0x1, %r8d
callq 0xc350
movq %rax, -0x278(%rbp)
movq -0x278(%rbp), %rax
leaq -0x270(%rbp), %rcx
subq %rcx, %rax
sarq $0x3, %rax
cmpq $0x11, %rax
jne 0x259e2
jmp 0x25a01
leaq 0x1a957(%rip), %rdi     # 0x40340
leaq 0x19c00(%rip), %rsi     # 0x3f5f0
movl $0xeb, %edx
leaq 0x1a957(%rip), %rcx     # 0x40353
callq 0x20c0
movl $0x5, %edi
movl $0x2e, %esi
movl $0x26, %edx
callq 0xa830
movq %rax, %rdi
leaq -0x270(%rbp), %rsi
movq -0x278(%rbp), %rdx
callq 0x14c10
testb $0x1, %al
jne 0x25a31
jmp 0x25a33
jmp 0x25a52
leaq 0x1a58f(%rip), %rdi     # 0x3ffc9
leaq 0x19baf(%rip), %rsi     # 0x3f5f0
movl $0xec, %edx
leaq 0x1a906(%rip), %rcx     # 0x40353
callq 0x20c0
movl $0x5, %edi
movl $0x2e, %esi
movl $0x1e, %edx
callq 0xa830
movq %rax, %rdi
leaq -0x270(%rbp), %rsi
movq -0x278(%rbp), %rdx
callq 0x14c10
testb $0x1, %al
jne 0x25a82
jmp 0x25a84
jmp 0x25aa3
leaq 0x1a56d(%rip), %rdi     # 0x3fff8
leaq 0x19b5e(%rip), %rsi     # 0x3f5f0
movl $0xed, %edx
leaq 0x1a8b5(%rip), %rcx     # 0x40353
callq 0x20c0
movl $0x5, %edi
movl $0x2e, %esi
movl $0x16, %edx
callq 0xa830
movq %rax, %rdi
leaq -0x270(%rbp), %rsi
movq -0x278(%rbp), %rdx
callq 0x14c10
testb $0x1, %al
jne 0x25ad3
jmp 0x25ad5
jmp 0x25af4
leaq 0x1a54b(%rip), %rdi     # 0x40027
leaq 0x19b0d(%rip), %rsi     # 0x3f5f0
movl $0xee, %edx
leaq 0x1a864(%rip), %rcx     # 0x40353
callq 0x20c0
movl $0x5, %edi
movl $0x2e, %esi
movl $0xe, %edx
callq 0xa830
movq %rax, %rdi
leaq -0x270(%rbp), %rsi
movq -0x278(%rbp), %rdx
callq 0x14c10
testb $0x1, %al
jne 0x25b24
jmp 0x25b26
jmp 0x25b45
leaq 0x1a529(%rip), %rdi     # 0x40056
leaq 0x19abc(%rip), %rsi     # 0x3f5f0
movl $0xef, %edx
leaq 0x1a813(%rip), %rcx     # 0x40353
callq 0x20c0
movl $0x5, %edi
movl $0x2e, %esi
movl $0x6, %edx
callq 0xa830
movq %rax, %rdi
leaq -0x270(%rbp), %rsi
movq -0x278(%rbp), %rdx
callq 0x14c10
testb $0x1, %al
jne 0x25b75
jmp 0x25b77
jmp 0x25b96
leaq 0x1a507(%rip), %rdi     # 0x40085
leaq 0x19a6b(%rip), %rsi     # 0x3f5f0
movl $0xf0, %edx
leaq 0x1a7c2(%rip), %rcx     # 0x40353
callq 0x20c0
movl $0x5, %edi
movl $0x2e, %esi
movl $0x27, %edx
callq 0xa830
movq %rax, %rdi
leaq -0x270(%rbp), %rsi
movq -0x278(%rbp), %rdx
callq 0x14c10
testb $0x1, %al
jne 0x25bc6
jmp 0x25bc8
jmp 0x25be7
leaq 0x1a4e5(%rip), %rdi     # 0x400b4
leaq 0x19a1a(%rip), %rsi     # 0x3f5f0
movl $0xf1, %edx
leaq 0x1a771(%rip), %rcx     # 0x40353
callq 0x20c0
movl $0x5, %edi
movl $0x2e, %esi
movl $0x2f, %edx
callq 0xa830
movq %rax, %rdi
leaq -0x270(%rbp), %rsi
movq -0x278(%rbp), %rdx
callq 0x14c10
testb $0x1, %al
jne 0x25c17
jmp 0x25c19
jmp 0x25c38
leaq 0x1a4c3(%rip), %rdi     # 0x400e3
leaq 0x199c9(%rip), %rsi     # 0x3f5f0
movl $0xf2, %edx
leaq 0x1a720(%rip), %rcx     # 0x40353
callq 0x20c0
movl $0x5, %edi
movl $0x2e, %esi
movl $0x37, %edx
callq 0xa830
movq %rax, %rdi
leaq -0x270(%rbp), %rsi
movq -0x278(%rbp), %rdx
callq 0x14c10
testb $0x1, %al
jne 0x25c68
jmp 0x25c6a
jmp 0x25c89
leaq 0x1a4a1(%rip), %rdi     # 0x40112
leaq 0x19978(%rip), %rsi     # 0x3f5f0
movl $0xf3, %edx
leaq 0x1a6cf(%rip), %rcx     # 0x40353
callq 0x20c0
movl $0x5, %edi
movl $0x2e, %esi
movl $0x36, %edx
callq 0xa830
movq %rax, %rdi
leaq -0x270(%rbp), %rsi
movq -0x278(%rbp), %rdx
callq 0x14c10
testb $0x1, %al
jne 0x25cb9
jmp 0x25cbb
jmp 0x25cda
leaq 0x1a47f(%rip), %rdi     # 0x40141
leaq 0x19927(%rip), %rsi     # 0x3f5f0
movl $0xf4, %edx
leaq 0x1a67e(%rip), %rcx     # 0x40353
callq 0x20c0
movl $0x5, %edi
movl $0x2e, %esi
movl $0x3e, %edx
callq 0xa830
movq %rax, %rdi
leaq -0x270(%rbp), %rsi
movq -0x278(%rbp), %rdx
callq 0x14c10
testb $0x1, %al
jne 0x25d0a
jmp 0x25d0c
jmp 0x25d2b
leaq 0x1a45d(%rip), %rdi     # 0x40170
leaq 0x198d6(%rip), %rsi     # 0x3f5f0
movl $0xf5, %edx
leaq 0x1a62d(%rip), %rcx     # 0x40353
callq 0x20c0
movl $0x5, %edi
movl $0x2e, %esi
movl $0x35, %edx
callq 0xa830
movq %rax, %rdi
leaq -0x270(%rbp), %rsi
movq -0x278(%rbp), %rdx
callq 0x14c10
testb $0x1, %al
jne 0x25d5b
jmp 0x25d5d
jmp 0x25d7c
leaq 0x1a43b(%rip), %rdi     # 0x4019f
leaq 0x19885(%rip), %rsi     # 0x3f5f0
movl $0xf6, %edx
leaq 0x1a5dc(%rip), %rcx     # 0x40353
callq 0x20c0
movl $0x5, %edi
movl $0x2e, %esi
movl $0x3c, %edx
callq 0xa830
movq %rax, %rdi
leaq -0x270(%rbp), %rsi
movq -0x278(%rbp), %rdx
callq 0x14c10
testb $0x1, %al
jne 0x25dac
jmp 0x25dae
jmp 0x25dcd
leaq 0x1a419(%rip), %rdi     # 0x401ce
leaq 0x19834(%rip), %rsi     # 0x3f5f0
movl $0xf7, %edx
leaq 0x1a58b(%rip), %rcx     # 0x40353
callq 0x20c0
movl $0x5, %edi
movl $0x2e, %esi
movl $0x2d, %edx
callq 0xa830
movq %rax, %rdi
leaq -0x270(%rbp), %rsi
movq -0x278(%rbp), %rdx
callq 0x14c10
testb $0x1, %al
jne 0x25dfd
jmp 0x25dff
jmp 0x25e1e
leaq 0x1a3f7(%rip), %rdi     # 0x401fd
leaq 0x197e3(%rip), %rsi     # 0x3f5f0
movl $0xf8, %edx
leaq 0x1a53a(%rip), %rcx     # 0x40353
callq 0x20c0
movl $0x5, %edi
movl $0x2e, %esi
movl $0x2c, %edx
callq 0xa830
movq %rax, %rdi
leaq -0x270(%rbp), %rsi
movq -0x278(%rbp), %rdx
callq 0x14c10
testb $0x1, %al
jne 0x25e4e
jmp 0x25e50
jmp 0x25e6f
leaq 0x1a3d5(%rip), %rdi     # 0x4022c
leaq 0x19792(%rip), %rsi     # 0x3f5f0
movl $0xf9, %edx
leaq 0x1a4e9(%rip), %rcx     # 0x40353
callq 0x20c0
movl $0x5, %edi
movl $0x2e, %esi
movl $0x2b, %edx
callq 0xa830
movq %rax, %rdi
leaq -0x270(%rbp), %rsi
movq -0x278(%rbp), %rdx
callq 0x14c10
testb $0x1, %al
jne 0x25e9f
jmp 0x25ea1
jmp 0x25ec0
leaq 0x1a3b3(%rip), %rdi     # 0x4025b
leaq 0x19741(%rip), %rsi     # 0x3f5f0
movl $0xfa, %edx
leaq 0x1a498(%rip), %rcx     # 0x40353
callq 0x20c0
movl $0x5, %edi
movl $0x2e, %esi
movl $0x25, %edx
callq 0xa830
movq %rax, %rdi
leaq -0x270(%rbp), %rsi
movq -0x278(%rbp), %rdx
callq 0x14c10
testb $0x1, %al
jne 0x25ef0
jmp 0x25ef2
jmp 0x25f11
leaq 0x1a391(%rip), %rdi     # 0x4028a
leaq 0x196f0(%rip), %rsi     # 0x3f5f0
movl $0xfb, %edx
leaq 0x1a447(%rip), %rcx     # 0x40353
callq 0x20c0
movl $0x5, %edi
movl $0x2e, %esi
movl $0x1c, %edx
callq 0xa830
movq %rax, %rdi
leaq -0x270(%rbp), %rsi
movq -0x278(%rbp), %rdx
callq 0x14c10
testb $0x1, %al
jne 0x25f41
jmp 0x25f43
jmp 0x25f62
leaq 0x1a36f(%rip), %rdi     # 0x402b9
leaq 0x1969f(%rip), %rsi     # 0x3f5f0
movl $0xfc, %edx
leaq 0x1a3f6(%rip), %rcx     # 0x40353
callq 0x20c0
addq $0x280, %rsp            # imm = 0x280
popq %rbp
retq
nopl (%rax,%rax)